Zagadka w języku Java

posted on Maj 18th, 2009 ·

Dzisiaj na mojej uczelni odbywały się coroczne Trójmiejskie Targi Pracy. Jedna z firm przedstawiających swoje oferty, Sygnity, zorganizowała mały konkurs z nagrodami. Konkurs miał 10 pytań o tematyce programistycznej (Java, JEE, SQL, build-scripts). Z testu uzyskałem wynik 9/10. Potknąłem się na rzeczy, której byłem po prostu pewien – na analizie krótkiego kodu w języku Java.

Należy dodać, że nie był to typowy konkurs, w którym pytają o imię głównego bohatera serialu Świat wg Kiepskich, dając do wyboru Zbigniewa, Ferdynanda i Jerzego. Test zgrabnie stwierdzał, czy jesteś oczytany w tematach związanych z programowaniem. Jeden z wykładowców, pan Kaczmarek, mawiał na wykładach o Linuksach, że wiedza jest banalna, jeśli się pozna pelecenie i niemożliwa do wymyślenia, jeśli tego polecenia na oczy nie widzieliśmy.

Poniżej umieszczam zadanie testowe, które mnie wkopało. Kurczę, podium było tak blisko :>

class A {
    public String a = "3";

    public String getA() {
        return this.a;
    }
}

class B extends A {
    public String a = "5";

    public String getA() {
        return this.a;
    }
}

public class C {
    public static void main(String[] args) {
        A a = new B();
        System.out.println(a.a + ", " + a.getA());
    }
}

Jaki będzie wynik działania tego programu?

  • 3, 3
  • 3, 5
  • 5, 3
  • 5, 5

Proponuję najpierw udzielić odpowiedź, a dopiero potem sprawdzić sobie rezultat na żywo. Ja po prostu nie wiedziałem, że tak to działa. Może dlatego, że zgodnie z zasadą enkapsulacji nie pozostawiałem nigdy żadnych publicznych pól? Ale teraz już wiem :-)

P.S. W losowaniu jedną z nagród zgarnął oczywiście Zal, masowy wygrywacz wszystkich konkursów :D Ale dzięki temu miałem przyjemność poznać go osobiście.

→ 5 CommentsTags: Programowanie

Cała prawda o pseudointeligentnym budynku wydziału PG ETI

posted on Maj 13th, 2009 ·

Dzisiaj przypadkowo trafiłem na stronę, na której wychwalano budynek mojego wydziału. Osoba, która nie studiuje na ETI mogłaby naprawdę uwierzyć, że ten budynek jest wręcz perfekcyjny. Niestety, tak nie jest. Ten wpis będzie stanowił uzupełnienie artykułu na MuratorPlus.pl o negatywne strony budynku nowego ETI.

Zacznijmy od audytoriów. Fajnie by było, gdyby na audytoriach siedziało się wygodnie. Z zewnątrz audytorium wygląda bardzo ładnie, jednak wystarczy posiedzieć 20 minut, by przekonać się, że na tych siedzeniach nie idzie po prostu usiedzieć. Stare, komunistyczne audytorium w gmachu wydziału Oceanotechniki, choć ciasne i obskurne, jest wygodniejsze niż to nowe. Bardzo dużo osób zgadza się ze mną, że na audytoriach nie idzie usiedzieć. W dodatku odległość siedzenia od blatu jest zbyt duża – nie idzie pisać w zeszycie, będąc opartym. Można pisać na kolanie, ale chyba nie o to chodzi.

Warto by też zadbać o mazaki. Mazaki na audytoriach i w salach lekcyjnych są prawie zawsze zużyte i tylko pierwsze rzędy mogą cokolwiek przeczytać. Jednak mazaki to drobnostka w porównaniu z nagłośnieniem. Nagłośnienie audytoriów jest po prostu słabe. Jeden wielki głośnik z przodu nie nagłośni wystarczająco całego audytorium. Cicho mówiących wykładowców praktycznie nie słychać w tylnych częściach audytorium. Porównując nagłośnienie do Uniwersytetu Gdańskiego, gdzie miałem przyjemność pisać egzamin FCE, Politechnika wypada bardzo mizernie. Na Uniwerku głośniki znajdowały się w suficie (mnóstwo ich) i w każdym miejscu audytorium głos był jednakowo słyszalny. Pisanie egzaminu w części Listening było przyjemnością. Na ETI nie byłoby to niczym przyjemnym.

Ostatecznie, gdy rozładują się baterie w mikrofonie, w biurku wykładowcy na audytorium nie znajdują się zapasowe baterie. Wykładowca musi iść na dół na portiernię i poprosić o nowe baterie… oczywiście tego nie zrobi, bo zabierze to 5 cennych minut. Dalsza część wykładu odbywa się więc bez mikrofonu. A wysztarczyło umieścić w biurku zapasowe baterie.

Nie tylko audytoria są niewygodne. Krzesła w salach lekcyjnych są również niewygodne – mają tak małe oparcia, że tylko dzieci przedszkolne siedziałyby na nich wygodnie. W dodatku większe osoby nie mieszczą się w ławkach – krzesła są zbyt wysokie, a ławki mają zbyt nisko blat. Efektem jest zgnieciona górna część nóg. I znowu stare, 20-letnie krzesła i ławki okazują się wygodniejsze, niż te nowe.

W budynku działa sieć bezprzewodowa WETI_PG. Szkoda tylko, że moc sygnału jest tak słaba, że korzystanie z Internetu w audytoriach jest utrudnione, a czasem niemożliwe. W tak nowoczesnym budynku zapomniano też o tym, by laptopy wykładowców miały dostęp do Internetu (te laptopy, które stoją na stałe w audytoriach). W bibliotece znajduje się ok. 30 stanowisk komputerowych. Dobrze by było, ażeby był na niej dostęp do Internetu. W ostatnim tygodniu na moje trzy wizyty, dwa razy sieć nie działała.

Gdyby budynek nosił miano inteligentnego, musi w nim panować normalna temperatura. W laboratoriach komputerowych często jest albo zbyt gorąco albo zbyt zimno. Sporadycznie zdarza się wąchać smród z klimatyzacji. Ewenementem jest biblioteka, w której zawsze jest tak gorąco, że chciałoby się po prostu siedzieć na gołej klacie.

I jeszcze mały szczegół, w sumie mało ważny, ale zawsze – drzwi frontowe, jak i boczne otwierają się bardzo wolno.

Myślę, że projektując ten superinteligentny budynek zapomniano o rzeczach podstawowych – budynek ETI powinien być przede wszystkim wygodny, a dopiero potem funkcjonalny i zbajerowany.

→ 11 CommentsTags: Ogólne

Skróty klawiszowe w Eclipse – szybka nauka

posted on Kwiecień 28th, 2009 ·

Zawsze miałem problem z nauką skrótów klawiszowych w dużych środowiskach programistycznych typu Eclipse, czy NetBeans. Gdy skrótów jest zbyt wiele, ciężko jest zapamiętać więcej niż kilka z listy. Z pomocą przychodzi jednak plugin MouseFeed – jeśli użyjesz skorzystasz z jakiejś funkcji myszką, program podpowie Ci, w jaki sposób można wykonać dokładnie to samo z klawiatury. Podpowiedzi udzieli w sposób dość dyskretny – nie przeszkadza, jeśli wykonanie czegoś myszką było rzeczywiście zamierzone. Największym plusem takiego rozwiązania jest to, że nie uczysz się skrótów, których nigdy nie użyjesz, lecz tych, których często używasz. Szkoda tylko, że plugin nie wszystko wyłapuje (warto czekać na aktualizacje), jednak i tak ogromny plus dla autora za pomysł i jego realizację.

MouseFeed Eclipse plugin - skróty klawiszowe (shortcuts) w Eclipse

MouseFeed Eclipse plugin - łatwa nauka skrótów klawiszowych (shortcuts)

→ 2 CommentsTags: Programowanie

Eclipse i Java Micro Edition (JME), czyli zabawy z komórkami – krok po proku

posted on Kwiecień 27th, 2009 ·

Napisanie pierwszego programu na komórkę w JME (kiedyś J2ME) może być proste, pod warunkiem, że mamy dobre środowisko. Nie da się bowiem pisać programu, nie mając chociażby emulatora komórki pod ręką – najlepiej zintegrowanego z środowiskiem programistycznym (IDE). Wpis ten stanowi krótki poradnik dla osób, które chciałyby napisać swój pierwszy program w Javie ME na komórkę przy użyciu Eclipse.

Najpierw należy zainstalować pakiet WTK – Sun Wireless Toolkit. Zawiera on między innymi emulatory. Można go pobrać tutaj, klikając przycisk, który znajduje się pod koniec strony.

Teraz uruchom swojego Eclipse’a (jeśli go nie masz – pobierz Eclipse dla JSE i JDK). Przejdź do Help -> Software updates -> Available software -> Add site i podaj adres: http://download.eclipse.org/dsdp/mtj/updates/0.9/stable. Na liście pojawi się Mobile Tools for Java (MTJ) – zainstaluj wszystkie pakiety.

Musimy teraz wskazać ścieżkę do emulatorów oraz innych narzędzi. W tym celu, po restarcie Eclipse’a przełącz się na perspektywę Java ME (View -> Open perspective -> Other -> Java ME) oraz przejdź do ustawień Windows -> Preferences -> Java ME -> Device Management -> Import -> Browse i wskaż ścieżkę, gdzie zainstałowałeś WTK. Po przeszukaniu katalogu, na liście powinny się pojawić cztery emulatory – zaznaczamy wszystkie i klikamy Finish -> OK.

Teraz możesz już stworzyć swój pierwszy projekt w Java Micro Edition – File -> New -> MIDlet project. Gdy utworzysz nową klasę midletu – pamiętaj, ażeby w Application Descriptor -> MIDlets dodać ją na listę. W innym przypadku program nie uruchomi się na komórce. Ja tego nie wiedziałem i spędziłem dwie godziny na szukaniu przyczyny. :-)

→ 2 CommentsTags: Java · Programowanie

EasyCall.pl to lamerzy

posted on Luty 13th, 2009 ·

Kilka dni temu musiałem wykonać dość długi telefon do Niemczech. Był to więc dobry moment na założenie sobie VoIP-a. Znajomy polecił mi EasyCall.pl, gdyż jest ich klientem od roku i nie narzeka.

Jako, że jestem posiadaczem telefonu Nokia E51 z obsługą telefonii internetowej SIP, chciałem z tego zrobić użytek. Nie chcąc kupować usługi w ciemno, najpierw przeszukałem Internet w poszukiwaniu słów kluczowych EasyCall oraz Nokia E51. Znalazłem kilka instrukcji, jak skonfigurować telefon i podziękowania innych użytkowników, że konfiguracja działa. Uznałem więc, że mogę kupić usługę od EasyCall.

Niestety, okazało się, że żadne z ustawień dostępnych w Internecie nie działało. Na stronie internetowej EasyCall zaś nic nie ma na temat konfiguracji telefonów z obsługą SIP. Skontaktowałem się więc telefonicznie z Biurem Obsługi Klienta. Pan zasugerował, abym wysłał SMS-a Premium (2,44 zł), a otrzymam dane do konfiguracji. Jak to, za dane do konfiguracji muszę jeszcze dodatkowo płacić? Odpowiedziałem więc, że nie mam zamiaru wysyłać płatnych SMS-ów. Pan odesłał mnie do formularza kontaktowego na stronie mówiąc, że w odpowiedzi otrzymam dane do konfiguracji.

Zgodnie z obietnicą otrzymałem dane do konfiguracji, jednak kilka pól było dla mnie niejasne:

Publiczna nazwa użytkownika: sip:nazwa@sip.easycall.pl
Nazwa użytkownika: nazwa sześciocyfrowa
Hasło: hasło szesciocyfrowe

Co to jest nazwa? I czym są nazwa sześciocyfrowa i hasło sześciocyfrowe? W moim profilu na stronie nie ma takich informacji. Wysłałem więc kolejne zapytanie, czym są te dane, a Pan udzielił mi informacji, że poznam te dane, dopiero gdy doładuję swoje konto.

Konto doładowałem kwotą 15 zł. W zakładce “Moje konto” znalazłem nazwę użytkownika oraz hasło – obydwa sześciocyfrowe. Uzupełniłem konfigurację SIP, za nazwę wpisując swój login (nowaker) zaś za nazwę sześciocyfrową i hasło sześciocyfrowe nowo poznane dane.

Próba połączenia się z testowym numerem 904 wypadła pozytywnie. Dzwonię więc na telefon domowy rodziców, ale wita mnie błąd o treści Adres nie w użyciu. Idzie więc kolejny do BOK-u z pytaniem, aby upewnić się, że nazwa oznacza nazwę użytkownika (nowaker). Odpowiedź brzmi, że nazwa to nazwa sześciocyfrowa. No ludzie! Dlaczego jedna rzecz nazywana jest różnie? Poprawiłem…

Nadal nie działa. Tym razem wita mnie komunikat Błąd połączenia. Zgodnie z tradycją, wysyłam kolejne zgłoszenie do BOK-u. Otrzymuję odpowiedź, iż wysyłanie ID musi być włączone. Niestety, cały czas było. No to kolejny e-mail. Odpowiedź brzmi, iż mam wysłać SMS Premium.

Konkluzja całej sprawy brzmi EasyCall to lamerzy.

  • brak jakichkolwiek danych nt. konfiguracji telefonów na ich stronie internetowej
  • wymuszanie ponoszenia dodatkowych kosztów
  • niejednoznaczne instrukcje przesyłane e-mailem
  • poroniony system ticketów – za każdym razem trzeba tworzyć nowy
  • strona internetowa, po której nawigacja to koszmar

Nie polecam.

→ 14 CommentsTags: Ogólne

Słów kilka o linkach bezpośrednich i SEO

posted on Luty 10th, 2009 ·

Bycie developerem to nie tylko tworzenie stron, ale także promocja. Przez promocję rozumiem pozycjonowanie serwisów tak, żeby osoby szukające informacji przez wyszukiwarkę trafiały do mnie. Niestety, w sieci jest na tyle dużo spamu, że samo budowanie dobrych, merytorycznych i przydatnych serwisów to połowa sukcesu.

Pozycjonowanie stron jest koniecznością. Próbowałem różnych technik. Umieszczałem linki w katalogach, zamieszczałem słowa kluczowe w artykułach, dodawałem komentarze na forum i blogi z linkiem do siebie, optymalizowałem META. Najlepsze rezultaty dawały linki bezpośrednie.

Stąd też wpadłem na pomysł stworzenia LinkBazar. Jest to platforma, na której zachęcam do handlu linkami bezpośrednimi. Współpracujemy w ramach programu partnerskiego z serwisem LinkLift. Oczywiście, złośliwi mogą powiedzieć, że nasza strona to fake – przykrywka programu partnerskiego. Nic bardziej mylnego. A oto moje argumenty.

  1. Zarejestrowałem wszystkie swoje serwisy w LinkLift i występuję zarówno jako reklamodawca, jak i reklamobiorca. I stąd są niezłe pieniądze.
  2. Na LinkBazar wprawdzie zamieściłem linki referencyjne i za poleconych użytkowników dostaję pieniądze, ale ważniejsze są dla mnie efekty pośrednie.
  3. Efekt pośredni jest taki, że przybywa nowych serwisów zarejestrowanych na platformie. Dzięki temu powiększa się baza oferentów miejsca reklamowego i potencjalnych klientów. Serwisy te są zazwyczaj pokrewne tematyczne (wszak osoby rejestrowały się z mojego polecenia i były na mojej stronie o takiej, a nie innej tematyce). Dzięki temu mam gdzie się reklamować i mam komu sprzedawać linki.
  4. Największym działem w serwisie jest baza artykułów SEO. Przez 5 lat nabrałem doświadczenia w pozycjonowaniu stron i dzielę się nim z innymi.

Czwarty argument jest dla mnie bardzo istotny. Być może wiedza, którą przekazuję w artykułach, nie jest rewolucyjna dla profesjonalistów. Ale początkujący z pewnością zyskają. A nawet profesjonaliści czasem znajdą ciekawe rzeczy, które wynikły w trakcie mojej pracy przy pozycjonowaniu stron w postaci case studies.

Skoro już jestem przy artykułach SEO, to ostatnio pojawiły się dwa nowe. W artykule Linki tekstowe – jak stworzyć dobry i skuteczny link piszę o linkach od podstaw – jak wygląda link od strony technicznej i jakie funkcje pełni na stronie. Najważniejszy jest oczywiście marketing oraz pozycjonowanie. Zastosowanie się do wskazówek zawartych w tekście może pomóc osiągnąć wysokie wskaźniki CTR i poprawić pozycję strony w wyszukiwarce. W drugim artykule PageRank, algorytm opracowany przez twórców Google jest podstawą wywodów na temat zasadności stosowania algorytmu wartościujących strony. Przedstawiam alternatywne algorytmy – Trust Rank, Alexa Rank, HITS. Piszę o wadach i zaletach.

Kończąc ten wpis, zachęcam do przeczytania moich artykułów na ten pozycjonowania.

→ No CommentsTags: Internet

Walentynki z komputerem

posted on Luty 2nd, 2009 ·

Współstudenci z mojego wydziału wpadli na pomysł, aby wziąć udział w konkursie I Love Milka. Konkurs polega na tym, że internauci oddają głosy na poszczególne walentynki na stronie I Love Milka. Walentynka zwycięzcy zostanie umieszczona w miejscu na reklamy na przystanku autobusowym niedaleko Politechniki. Walentynka brzmi następująco:

Kocham mój komputer,
tylko on mnie
nigdy nie zawiódł ;)
- Majckel z ETI :*

Aktualizacja: Milka skasowała tę walentynkę, uznając ją za niezgodną z tematyką ;) Musieliśmy stworzyć nową i zacząć wszystko od początku. Treść obecnej:

Kocham Cię Myszko.
Tylko Ty jesteś dla mnie
wystarczająco czuła :*
- niETIkalni

Przyłącznie się i zagłosujcie. ;-]

→ No CommentsTags: Ogólne

Narzędzia dla developera choć nie tylko

posted on Styczeń 31st, 2009 ·

Niedawno uruchomiłem stronkę o enigmatycznej nazwie “Narzędzia developera” ;-) Ma to być zbiór różnorodnych narzędzi typu generator md5/sha1, enkoder/dekoder base64, licznik timestampów itp. Zdaję sobie sprawę, że takich stron jest w sieci pełno, jednak ja chciałbym zebrać wszystkie narzędia w jedno miejsce – takie jest właśnie założenie strony devtoolkit.net.

Teraz dostępne są cztery narzędzia:

Jakie narzędzia jeszcze umieścić? Bardzo chętnie wysłucham propozycji.

→ 6 CommentsTags: Ogólne

Zapisz położenie ikon na pulpicie

posted on Styczeń 23rd, 2009 ·

Denerwuje Cię, że Windows czasami resetuje Ci położenie wszystkich ikon pulpitu?

  • pobierz ten plik
  • skopiuj layout.dll do katalogu windows/system32
  • uruchom layout.reg, który doda kilka wpisów do rejestru

Teraz klikając PPM na ikonie systemowej (np. Mój komputer) dostępne będą dwie opcje, które niejednokrotnie uratują nam tyłek :)

Zapisanie położenia ikon na pulpicie

Źródło:

  • http://www.msni.it/faqreg/saveicon.html

→ 2 CommentsTags: Systemy operacyjne

Przychody za reklamę w Internecie – liczby

posted on Styczeń 20th, 2009 ·

Niedawno Tomek zamieścił na blogu Polish Words krótkie podsumowanie zysków z reklam na jego blogu. Krótkie podsumowanie, przeliczone:

  • zagraniczna reklama kontekstowa – 125 zł / 100 000 odsłon
  • polska reklama kontekstowa – 33,30 zł / 100 000 odsłon
  • reklamy partnerskie (bannery?) – 4,54 zł / 100 000 odsłon
  • programy partnerskie – 100 zł / 100 000 odsłon

Trochę się zdziwiłem relatywnie wysokimi wynikami z reklam kontekstowych, a niskimi z programów partnerskich. U mnie zagraniczna reklama kontekstowa przynosiła zyski na poziomie 63 zł / 100 000 odsłon, zaś polska – 13,40 zł. Chciałbym tylko dodać, iż moje zyski nie biorą się z blogów, tylko z „normalnych” stron internetowych.

Przypatrzmy się programom partnerskim, które najbardziej cenię. Tutaj niestety nie potrafię określić zysku za każde 100 000 wyświetleń. Według mnie zysk wcale nie zależy tutaj od odwiedzalności.

Linki tekstowe

W programie sprzedaży płatnych linków tekstowych uczestniczy dziewięć moich różnych stron. Uczestniczę również w programie partnerskim, pozyskując nowych uczestników do tego programu poprzez LinkBazar.pl. Działalność ta przynosi dość spore zyski. Listopad zakończył się wynikiem 174,20 zł, zaś grudzień 204,20 zł. W aktualnościach LinkBazar na bieżąco informuję o osiąganych zyskach, aby zachęcić innych do uczestnictwa.

Otrzymywane wynagrodzenie nie zależy tutaj od ilości odsłon danej strony, lecz (w ogólności) od jego PageRanku. Wbrew pozorom PageRank strony nie jest zależny liniowo od ilości odsłon danej strony. W swoim zapleczu posiadam strony o relatywnie wysokich PR (3/10) i bardzo małej odwiedzalności (np. 20 wizyt dziennie), jak i całkowicie odwrotnie.

Program partnerski mBank

Konta bankowe w mBanku reklamuję raz na kilka miesięcy w malingach do użytkowników portalu geograficznego GeoZone. Przyniosło to średni zysk 400 złotych na około 100 000 wysłanych reklam.

Reklamy wysyłałem różne – zarówno konto bankowych, jak i sieci komórkowej mBanku. Zdecydowanie najlepsze wyniki przynoszą konta bankowe; telefonią zaś nikt się nie interesuje.

Podsumowanie

Widać jak na dłoni, że najważniejsze przychody generują mądre programy partnerskie. Wiadomo, iż nie każdy program partnerski sprawdzi się na konkretnej stronie. Cytując Tomka, aby zarabiać, najpierw trzeba się dużo napracować. Nie każdy program partnerski się nada, jednak jeśli nie spróbujesz – nie dowiesz się, czy jest dochodowy.

→ No CommentsTags: Ogólne