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.

Monday, September 28, 2009

Jakość a czas pisania artykułów

Poczyniłem dzisiaj refleksję dotyczącą jakości a czasu pisania artykułów.
Miło mi, kiedy gro osób jest zniecierpliwionych i oczekuje kolejnej części kursu, serii artykułów. Jednak równocześnie presja skłania ku pośpiechowi. A na tym cierpi jakość. Być może są ludzie zdolni, którzy piszą artykuł od razu w formie w jakiej chcą go zobaczyć. W moim przypadku mam wizję, ale aby ją osiągnąć muszę najpierw napisać to co chcę zawrzeć. Później trwa przeredagowywanie. I ten właśnie proces jest długotrwały. Pozmieniam szyk zdań, część informacji wyjmę z tekstu i ujmę w formie tabelki, wzmiankę o innych pominę. Następnie potrzebuję tygodnia, w którym myślę jak poprawić ten tekst dalej, co jeszcze jest w nim zbyt skomplikowane ...
Po tygodniu siadam i wprowadzam kolejne poprawki itd... Czasami dobry tekst powstaje dwa miesiące. Oczywiście - napisany jest w 2 dni, ale gotowy dopiero po 60-70.
Takie życie:) Staram się jak mogę. Jak widać wrodzonego talentu nie mam. Chociaż zdarza mi się, że jakiś temat jest "na fali". W takim sensie, że mnie obecnie pasjonuje i pochłania. Wtedy artykuły, prawie w finalnej formie, wychodzą jak z rękawa. Ale wtedy jest kilka dni nie odchodzenia od komputera i czasochłonnego spisywania myśli - na co często nie mogę sobie już pozwolić (studia, praca). No i tyle :]
Pozdrawiam!

Friday, September 4, 2009

I(IS)nwazja (aktualizacja)

Dzisiaj grzecznie od rana chcę siąść do kolejne częściu kursu developerów Drupala. Odpalam sobie Chrome i wchodzę na witrynę http://localhost/drupal7/admin/structure/modules a tu nagle


Szybkie spojrzenie na localhost


I wszystko jasne. Mój Apache został brutalnie skazany przez upgrady Windows na banicję. Szkoda tylko, że nikt mnie o tym nie poinformował. To jeden z tych przypadków "przecież wczoraj działało" i z jakiś przyczyn nagle moja Vista stwierdziła, że w sumie to nie ważne, że postawiłem sobie na porcie 80tym serwer Apache bo przecież ona wie lepiej co jest dla mnie lepsze i po cichu w upgradach uszczęśliwi mnie IIS7.
To jest tylko serwerek domowy, developerski. Nie ma więc o co płakać, ale jeżeli ktoś miałby taki am myk w środowisku produkcyjnym - to byłaby to masakra. Zaraz spróbuję wyłączyć dziada i wrócić do pracy, ale MS nie zapłaci mi za stracony czas.

Problem powodowały upgrady "Apple Software Update" (które przyszły wraz z Bonjour) nie mechanizmy Microsoftu.