Sep 19

Microsoft най-сетне решиха да отвърнат на удара на Mac vs Pc ads, които Apple правят от години, с това:

Не знам, нещо не ми харесва. Дали защото съм фен на Apple. А и само като се сетя за Windows мизериите, ми се иска да си сипя едни “успокояващ чай”, и явно не само аз искам това:

A и гледам, че има нови 2-3 епизода от серията “Mac vs PC” - https://www.apple.com/getamac/ads/.

п.п. Чесно казано най-добрата реклама, която Apple имат се вижда тук (само забележете колко хора са MacBookPro и колко са с нещо друго). А и самата конференция е била доста интересна, и тия дни смятам да я прегледам.

Sep 07

Онзи ден трябваше да кача файлове на ftp сървър, нищо интересно. Проблема е че са ми много досадни повечетo FTP клиенти за Windows, просто една свястна FTP програма няма.

Днес имах малко свободно време и реших да направя нещо, което от доста време си мисля. А то е просто скиптче което само да го стартирам и то да си качи каквото трябва на избрано от мен място на ftp сървър (после мисля да го направя да прави и други работи, но за друг път)

Избрах си да го напиша на Ruby или по-точно JRuby, защото така и така го имах инсталирано и все се чудех за какво да го ползвам. Оказа че Ruby има наистина богат набор от стандартни класове. Поне за сега възползвах от Logger и Net::FTP.

Много харесвам Ruby като език, особено block-овете :) Но е малко по различен от това с което съм работи до сега, например с PHP да направя нещо да обикаля директория и нейните под-директори е просто нещо такова:


function read_dir($directory){
	foreach(new DirectoryIterator($directory) as $file){
		if ($file == '.' || $file == '..') continue;

		if ($file->isDir()){
			read_dir($file->getRealPath());
			// do something with directory
		} else{
			// do something with file
		}
	}
}

read_dir('my_dir');

или ползвам RecursiveDirectoryIterator, за който все забравям че съществува.

Пробвах да напиша нещо на същия принцип с ruby, но не стана много добре, даже никак добре не стана. Работеше, но бях се по оплел със функции, Proc :( Порових малко в net-a и с малко работа  написах това:


def read_dir (path, &block)
	paths = [path]
	while file = paths.shift
		yield file.dup
		next unless File.directory? file
		for f in  Dir.open( file )
			next if f == '.' or f == '..'
			paths.unshift File.join(file,  f)
		end
	end
end

read_dir('my_dir') do |file|
	# do something with file
end

Винаги съм мислил, че за да се обиколи директория и нейните под-директории трябва някаква рекурсия или нещо такова. А се по този начин просто се пазят всичките директории в масив(или опашка) и просто се обикаля докато се свърши масива.

Обаче се оказа че в Ruby вече има такова нещо - Find:


require 'find'
Find.find('my_dir') do |file|
	# do something with file
end

Е малко това Find.find() не ми харесва как изглежда, но само със едно “alias :find :from”, може да имаме Find.from() което да е същото :) А ако сте фенове на Monkey patch може да се вложи Find.find във File класа и да се направят още доста “магии”.

Sep 05

Днес видях, че голяма част от Rails Conf 29.05-01.06 Portland Oregon я има качена в интернет:

http://railsconf.blip.tv/

Колко жалко, че няма голяма вероятност в близките 2-3 години да присъствам на Rails Conf, но какво да се прави такъв е живота. Поне мога да я гледам ! :)

Поне от сесиите, които можах да видя, за сега, най-много ми харесаха тези:

  1. David Heinemeier Hansson - Keynote ( #1170044 )
  2. Joel Spolsky - Fog Creek Software ( #1170255 )
  3. Hansson, Kemper, Koziarski, Olson - Rails Core Panel ( #1170296 )

Но все още ми остават 3,4,5 части, така че може и още 1-2 линкчета да сложа в този списък.

Jul 20

Тук http://shootout.alioth.debian.org/ има интересни сравнения на това как се държат различните програмни езици, кои е по-бърз и кои използва по-малко памет и други такива.

Jul 14

Ruby e страшно красив и мощен език. Но основаната виртуална машина на която ползва Ruby1.8 се води малко бавничка. Но тъй като езика има голям потенция вече се появяват различни имплементации на езика под различни виртуални машини и интерпретатори. Вече има има дузина такива:

JRuby (Java) , за него вече писах тук а и още доста ще го споменавам, защото е една от най-добрите (според мен) имплементации.
IronRuby (C#), мисля че във Silverlight го поддържат но не съм сигурен.
CRuby (C), това си е стандартната имплементация
HotRuby (JavaScript),  Работещ в Браузър и може би под Rhino.
Rubinius ( Ruby) - малко странно, че Ruby подкарва Ruby но наскоро те даже подкараха и Rails.
Ruby1.9 (C) - това се води като новата версия Ruby.

Поне за момента това са най-развитите и работещи. Въпреки че очаквам да имам доста такива имплементации, като следните ми идват наум:

FRuby (Flash/Flex Ruby
LRuby (Lisp)
SmaryRuby (PHP Smarty)
PRuby (PHP or Python)
GRuby (Groovy)
ObjectRuby (Objective-C)

Наскоро ще има стандартизация на езика за Ruby1.9 защо е явно, че независимо под коя Ruby имплементация се ползва, основните Ruby скиптове трябва да работят така както се очаква от тях(особенно Rails).