My Profile Photo

kubuszok.pl


Na codzień po prostu deweloper bez żadnego X z przodu.

Lubię uczyć się nowych rzeczy, zwłaszcza bardziej abstrakcyjnych jak matematyka czy algorytmika.

Obecnie pracuję w Scali, gdyż dla mnie programowanie funkcyjne jest bliższe matematyki, bardziej estetyczne i czyste. Mam również doświadczenie komercyne w pracy z językami imperatywnymi jak Java i C++, jak również kilka projektów w innych językach.


Narzędzia programisty: Google

Myślę, że warto byłoby opisać kilka narzędzi jakich programiści używają na co dzień. Zacznę od Google, bo w teorii jest to coś co znają wszyscy, ale mało kto potrafi z niego wycisnąć więcej.

Google jaki jest każdy widzi. Wpisujesz frazę w pasek i wyskakuje wynik. To wszystko co musimy wiedzieć, prawda?

No nie całkiem. Po pierwsze: Google personalizuje wyniki. Jeśli jesteś zalogowan[y/a], to cała historia wyszukiwania jest zapisywania i analizowana pod kątem dawania ci lepiej pasujących wyników. W efekcie stare, dobre wygooglaj sobie może już nie działać, kiedy twoje wyniki są inne, niż wyniki rozmówcy. W tej chwili wpisałem frazę wzorce w 2 okna przeglądarek: w jednej jestem zalogowany na swoim koncie Google, drugie to okno anonimowe. Pierwsze 3 wyniki są takie same, ale już 2 następne są zamienione miejscami. Na 7 miejscu w oknie gdzie jestem zalogowany pojawiły się Wzorce SOA, których nie ma w ogóle na pierwszej stronie wyników w drugim oknie. Google zasugerowało się widać faktem, że moje wyszukiwania mają często związek z tematami IT. Jednocześnie w oknie anonimowym znalazłem Wzorce umów, których nie ma w pierwszym oknie.

google

Tym razem różnica była stosunkowo mała, ale warto sobie zdawać sprawę z tego mechanizmu. Jeśli zdarzy nam się szukać czegoś co do nas nie pasuje, może się okazać, że ktoś inny od razu uzyska wynik, który u nas pojawi się dopiero na drugiej czy trzeciej stronie. W takim wypadku pomoże zawężenie kryteriów wyszukiwania, aby mechanizm ułatwiania nam życia, miał mniejsze możliwości, aby nam je utrudnić.

Jak zawężać? Cóż, teoretycznie Google inwestuje sporo, aby ich algorytm uczył się, był inteligentny i rozumiał czego chcemy, nawet jeśli sami nie umiemy tego wyrazić. To do czego jest zdolny to m.in.: zamiana liter miejscami oraz ogólnie poprawa literówek, zastąpienie wyszukiwanego słowa jego synonimem, zastąpienie słowa jego formą w innym przypadku gramatycznym, próba pominięcia któregoś słowa, jeśli cała kombinacja nie zwraca żadnego wyniku - nie zawsze tak było, choć dla wielu wydaje się to dzisiaj oczywiste. Jednak podstawową metodą działania wyszukiwarki jest sprawdzanie, czy wpisane przez użytkownika słowa pojawiają się w tekście. Są tam oczywiście usprawnienia pozwalające po wpisaniu jak działa słuchawka w telefonie trafić na stronę z odpowiedzią na to pytanie, ale znacznie ułatwimy algorytmowi robotę wpisując coś czego spodziewamy się na stronie z wynikiem znaleźć, np. zasada działania słuchawka telefoniczna. Słowa te nie muszą występować na stronie obok siebie więc pary zasada działania oraz słuchawka telefoniczna występujące na stronie bardzo ją wywindują w naszych wynikach. Zwłaszcza jeśli algorytm dopuści ich inne formy gramatyczne i synonimy.

Co jeśli jednak chcemy wymusić, aby słowa znajdowały się obok siebie? Frazy słuchawki w odtwarzaczu oraz budka telefoniczna występujące na jednej stronie też załapałyby się na słuchawka telefoniczna. Co prawda algorytm będzie starał się promować wyniki, gdzie słowa są bliżej siebie, ale…

Rozwiązaniem jest cudzysłów. "słuchawka telefoniczna" to wyraźna sugestia, że interesują nas tylko wyniki, gdzie na pierwszym miejscu wystąpi słowo słuchawka, a zaraz po nim telefoniczna.

Co z kolei z sytuacją, kiedy pamiętamy z grubsza jaką frazę wyszukać, ale nie jesteśmy pewni jednego ze słów? Mamy kilka możliwości, ale nie jesteśmy pewni, która to, np. śmieszny pies, ale nie wiemy czy w samochodzie, czy na motorówce. Możemy wtedy spróbować użyć magicznego słowa OR (obowiązkowo wielkimi literami): śmieszny pies samochód OR motorówka. Dawniej Google wspierało również słowo AND, ale już tego nie robi, bo z założenia zazwyczaj chcemy mieć wszystko słowa jednocześnie w wyniku.

Kolejnym przydatnym elementem jest - (dawniej NOT). Jeżeli chcemy dowiedzieć się czegoś o koncercie One night in Paris, a jednocześnie nie oglądać linków do filmu z udziałem pewnej celebrytki wpisujemy: one night in paris -hilton.

Do ograniczenia wyników do jednej domeny możemy użyć site:. Przykładowo site:kwejk.pl koty pokaże nam wyniki z kotami wyłącznie z Kwejka. Jeśli zaś potrzebujemy czegoś w konkretnym formacie możemy użyć filetype:. filetype:pdf functional programming zwróci nam sporo prac naukowych na temat programowania funkcyjnego.

Oczywiście, wszystkie powyższe sztuczki można całkiem sensownie ze sobą łączyć do np. szukania konkretnych prac naukowych w formacie PDF wyłącznie na serwerach określonej uczelni. Najwięcej daje jednak pierwsza porada: jeśli zrozumiemy jak działa Google (z grubsza, konkrety rozumie parę osób na świecie), wówczas możemy zgadywać jak zdefiniować wpisywaną frazę, aby algorytm mógł jak najłatwiej ją dopasować do wyniku którego szukamy. I to jest tak naprawdę różnica, która sprawia, że niektórzy przez cały dzień niczego nie są w stanie znaleźć, a inni wpadają na poszukiwaną stronę od razu.