Wednesday, October 28, 2009

Scala - znak równości a wartość zwracana przez funkcję

Przeczytałem dziś o ciekawej własności, może raczej pewnym niuansie, związanym z typem zwracanym przez funkcje w Scali. Deklarując funkcję podajemy zwykle na końcu zwracany przez nią typ.
def pokaz(a: Int): Unit = {
println(a)
}


To co mnie zdziwiło to typ Unit. Używamy go gdy zadaniem funkcji, którą tworzymy nie jest zwrócenie nowej wartości, ale jej efekt uboczny. Efekt uboczny rozumiany jako "funkcja powinna zwrócić wartość, ale jeżeli tego nie robi to znaczy, że wszystko co robi jest jej efekt ubocznym". W tym przypadku efektem ubocznym funkcji (która z natury powinna coś zwrócić) jest wyświetlenie parametru na ekranie.

Tak więc gdy gdy typem zwracanym przez funkcję jest Unit wiemy, że celem funkcji nie jest zwrócenie nam jakiejś wartości, ale wykonanie innych zadań. To co mnie zaciekawiło to fakt iż pominięcie znaku równości przy deklarowaniu funkcji oznacza domyślnie "zwracam Unit. Powstaję tylko dla moich efektów ubocznych" zaś jego podanie oznacza "zwracam jakąś wartość".Co łatwo zobaczyć :)

scala> def funkcja() = { "String" }
funkcja: ()java.lang.String

scala> def funkcja() { "String" }
funkcja: ()Unit


Podoba mi się takie rozróżnienie :)

Thursday, October 22, 2009

OpenSolaris - zmiana powłoki użytkownika

Niestety w OpenSolaris nie zaznamy polecenia chsh. Możemy jednak pomóc sobie:
usermod -s /ścieżka/do/powłoki nazwa_użytkownika

OpenSolaris - rozpakowywanie tar.gz

Od niedawna mam styczność z systemem OpenSolaris. Od czasu do czasu będę publikował jak coś w nim zrobić.
Dzisiaj zastanawiałem się jak rozpakować w nim plik tar.gz Oto metoda dla ciekawskich.

gunzip < plik.tar.gz | tar xvf -

Monday, October 19, 2009

Trendy polskie a praca na świeci

Nie wiem co mnie dziś tknęło ale postanowiłem sprawdzić pewną rzecz.
Przeczesując zasoby polskiej sieci, w poszukiwaniu informacji na temat tworzenia witryn internetowych, trafiamy głównie na kursy Ruby On Rails albo Django. Dzisiaj postanowiłem zobaczyć jak sprawa się ma jeżeli chodzi o "jobtrends" na świecie. Wyniki z serwisu Indeed.com/jobtrends poniżej.


O ile popularność Railsów mnie nie zszokowała (może co najwyżej jej skala) o tyle fakt iż Drupal stoi znacznie wyżej niż dziesiątki razy opisywany w polskiej sieci Django - mocno mnie zdziwiło. Czyżby Django przegrywało w świecie biznesu z Drupalem? Może to jakaś wskazówka? Szczególnie, jeżeli planujemy naszą przyszłość w perspektywie pracy programisty. I jak sytuacja ta ma się do polskich warunków pracy? Pytania pozostawiam bez odpowiedzi.

Thursday, October 8, 2009

Trywialny błąd we wtyczce Chrome Frame

Właśnie przygotowuję wykłady na Politechnikę i chciałem dzisiaj pokazać Chrome Frame. Zawiodłem się gdy wtyczka zamiast pokazać ramkę z propozycją instalacji dodatku zawiesiła na moment Internet Explorer a po chwili wyrzuciła błąd. Ostatecznie problem okazał się banalny:

W skrypcie CFInstall.js linia 173 wyglądała:

var installUrl = '//www.google.com/chromeframe';

zamiast

var installUrl = 'http://www.google.com/chromeframe';

Po zmianie tego odnośnika :) zaczęło działać :) Mam nadzieję, że komuś się przyda.