Innowacyjne technologie czyli co piszczy w internecie 2010-07-29T19:19:16Z WordPress http://tomwys.info/feed/atom/ Tomasz Wysocki <![CDATA[Jaki jest koszmar każdego programisty?]]> http://tomwys.info/?p=505 2010-07-29T19:19:16Z 2010-07-29T13:31:18Z Ostatnio na Stack Overflow padło pytanie ,,Co przeraża Cię najbardziej jako programistę?”. W temacie zostało zaproponowanych prawie 100 odpowiedzi. Okazuje się, że programiści najbardziej boją się, że:

  1. Błąd w ich programie zrobi fizyczną krzywdę komuś lub czemuś.
  2. Ich program znajdzie się na TheDailyWTF (serwis wyśmiewający błędy programistów).
  3. Zostaną skłonieni do nauczenia się Javy.
  4. Rynek zdominują zamknięte platformy takie jak Apple’s iOS (dłuższe wyjaśnienie – ang.).
  5. Pójdą do pracy w firmie, w której trzeba nosić krawat.
  6. Będą mieli przełożonego, który nie zna się na rzeczy, jednak wszystko musi być tak jak on zdecyduje.
  7. Znudzą się programowaniem lub przeciąży ich prędkość rozwoju informatyki.
  8. Zostania zwolnionym za używanie Stack Overflow w pracy.
  9. Stracą ważne dane.
  10. Pająków internetowych.

Jest to oczywiście skrót. Dokładniejsze opisy można znaleźć na stronie.

Ja osobiście najbardziej chyba się boje urazów, które są wywoływane przez ciągłe przesiadywanie przy komputerze, takich jak pogorszenie wzroku czy RSI.

Napisz w komentarzu, czego Ty najbardziej boisz się jako programista!

]]>
3
Tomasz Wysocki <![CDATA[Pythonowe sztuczki – property]]> http://tomwys.info/?p=499 2010-07-03T10:40:25Z 2010-07-03T10:39:53Z

]]>
2
Tomasz Wysocki <![CDATA[Pythonowe sztuczki – Generatory]]> http://tomwys.info/?p=434 2010-07-01T10:46:15Z 2010-07-01T15:00:59Z Python ma to do siebie, że udostępnia ułatwienia dla programistów, które występują w niewielu innych językach. Sceptyk mógłby powiedzieć, że nie wnoszą one niczego nowego. To prawda, wszystkie rzeczy, które można za ich pomocą osiągnąć, można również uzyskać innymi sposobami w dowolnym języku.
Gdyby jednak chodziło tylko o osiągany efekt, moglibyśmy pisać wszystko w asemblerze. Tak naprawdę w cenie jest również zwięzłość zapisu i elegancja.

W tym wpisie przedstawiam jedną z moich ulubionych wyjątkowych cech Pythona – generatory.

Generatory
Podstawowe dwa cele, które osiąga się za pomocą generatorów to:

  • czytelniejszy kod
  • oszczędność pamięci

Istnieją również inne ich zastosowania, jednak tutaj skupię się na tym podstawowym.

Rozważmy przykład:

def foo(bar):
    result = []
    for x in bar:
 
        # praca praca praca
 
        result.append(y)
    return result
baz = list(foo([1,2,3,4]))

i funkcja, która robi dokładnie to samo z użyciem yield:

def foo(bar):
    for x in bar:
 
        # praca praca praca
 
        yield y
baz = list(foo([1,2,3,4]))

Efekt działania obu przykładów jest taki sam. Realizują go one jednak w inny sposób. Pierwsza funkcja zwraca listę, druga zaś tworzy generator, który za pomocą funkcji list jest konwertowany na listę.

Zyskaliśmy zatem większą czytelność zapisu.

W czym jednak kryje się wyjątkowość generatora?
Aby to zobaczyć, należy prześledzić poniższy kod:

def foo1(bar):
    result = []
    for x in bar:
        y = x * 3
	print "foo1: %d" % y
        result.append(y)
    return result
 
def foo2(bar):
    for x in bar:
        y = x * 3
	print "foo2: %d" % y
        yield y
 
def mysum(l):
    result = 0
    for x in l:
	print "mysum: %d" % x
        result += x
    return result
 
mysum(foo1([1,2,3,4,5]))
mysum(foo2([1,2,3,4,5]))

i wynik jego działania:

foo1: 3
foo1: 6
foo1: 9
foo1: 12
foo1: 15
mysum: 3
mysum: 6
mysum: 9
mysum: 12
mysum: 15
foo2: 3
mysum: 3
foo2: 6
mysum: 6
foo2: 9
mysum: 9
foo2: 12
mysum: 12
foo2: 15
mysum: 15

Jak widać, generator jest wyliczany ,,leniwie”. Oznacza to ni mniej, ni więcej, że dana wartość jest liczona dopiero wtedy, gdy zażąda jej for, by wykonać kolejny obrót pętli.

Z punktu widzenia procedury wygląda to tak, że jej praca jest wstrzymywana, gdy wywoływany jest yield i wznawiana, gdy ktoś z zewnątrz zażąda następnej wartości.

Największą zaletą wykorzystania generatora jest to, że w procedurze nie jest tworzona tymczasowa tablica, dzięki czemu oszczędza się dużo pamięci. Wadą rozwiązania jest to, że jakiekolwiek zmiany w obiektach z których korzysta generator, w trakcie gdy generator jest wstrzymany, mogą doprowadzić do rezultatów, których się nie spodziewaliśmy, pisząc tę procedurę.

Podsumowując, generatory pozwalają na prowadzenie obliczeń w sposób kaskadowy, bez tworzenia tymczasowych tablic, które w niektórych przypadkach mogą kosztować bardzo dużo pamięci.

]]>
2
Tomasz Wysocki <![CDATA[Jak działa sieć komputerowa?]]> http://tomwys.info/?p=426 2010-05-14T07:25:45Z 2010-05-14T07:24:27Z Wyjątkowo obrazowy film demonstrujący jak działa sieć komputerowa. Polecam zarówno laikom jak i studentom informatyki, którzy uczą się tego typu rzeczy na zajęciach.


]]>
0
Tomasz Wysocki <![CDATA[Najnowszy, podatny na ataki serwis Google]]> http://tomwys.info/?p=414 2010-05-06T06:33:17Z 2010-05-06T06:32:34Z Najnowsza zabawka Google Jarlsberg to mikroblog z dziurami. Celem aplikacji jest umożliwienie programistom atakowania na stronę i przez to nauczenie ich kwestii związanych z bezpieczeństwem aplikacji www.

Jarlsberg został napisany w Pythonie. Na stronie można zażądać własnej instancji systemu i dzięki temu swobodnie bawić się w włamywacza, nie interferując z innymi użytkownikami. Dodatkowo na stronie zostały umieszczone materiały edukacyjne na temat bezpieczeństwa, oraz szereg misji, które należy wykonać. Można by rzec, że jest to takie Mafia Wars dla programistów (-:

]]>
0
Tomasz Wysocki <![CDATA[RSS Top 10]]> http://tomwys.info/?p=392 2010-05-05T08:10:46Z 2010-05-05T07:11:11Z Prezentuję kanały RSS z mojego czytnika z których przeczytałem najwięcej wiadomości w ciągu ostatniego miesiąca. Warto zwrócić uwagę na to, że ilość nie równa się jakość, dlatego niektóre wartościowe blogi nie znalazły się na liście, bo ich autorzy za mało piszą.

  1. Slashdot (134) – serwis newsowy poświęcony nowoczesnym technologiom.
  2. Interaktywnie.com (82) – zdaje się, że najbardziej popularny polski serwis z newsami na temat biznesu w internecie.
  3. AntyWeb (64) – komentarze i recenzje dotyczące pojawiających się serwisów i innych wydarzeń dotyczących internetu.
  4. Delicious/network/tomwys (43, kanał prywatny) – linki osób obserwowanych przeze mnie na Delicious.
  5. TechCrunch (41) – social media, nowoczesne technologie, Apple itp..
  6. CollegeHumor: Recent CH Originals (37) – humorystyczne filmiki przygotowane profesjonalnie przez CollageHumor.
  7. Lege Artis (24) – komentarze do prawa obowiązującego w Polsce oraz wyroki, na które warto zwrócić uwagę.
  8. Geek And Poke (21) – komiks z nawiązaniami informatycznymi i korporacyjnymi.
  9. Roflcopter.pl (17) – humorystyczne cytaty dotyczące informatyki.
  10. samorzad.mimuw.edu.pl (10) – blog samorządu Wydziału Matematyki, Mechaniki i Informatyki UW.
]]>
1
Tomasz Wysocki <![CDATA[Ubuntu 10.04]]> http://tomwys.info/?p=375 2010-04-30T09:04:40Z 2010-04-29T20:26:13Z logoUbuntu 10.04 wydane. Zachęcam wszystkich do instalacji/aktualizacji. Wśród programów, które są nowe w tej wersji polecam Gource – wizualizator repozytorium gita.

http://code.google.com/p/gource/
]]>
5
Tomasz Wysocki <![CDATA[Nowe Django w maju.]]> http://tomwys.info/?p=363 2010-04-29T10:18:45Z 2010-04-29T09:18:41Z django-logoNa blogu Django pojawiła się wiadomość potwierdzająca, że ostatni tydzień prac nad nową wersją Django odbył się zgodnie z harmonogramem. Oznacza to, że nowej wersji Django możemy spodziewać się w pierwszej połowie Maja. Jest to bardzo dobra wiadomość, ze względu na to, że nowa wersja dodaje wiele przydatnych funkcjonalności.

Dla wszystkich niewtajemniczonych warto powiedzieć, że Django to jeden z najbardziej popularnych frameworków webowych dla Pythona.

Nowe funkcjonalności godne uwagi to między innymi:

E-mail backend – sposób wysyłania maili będzie ujednolicony. Do tej pory aby wysłać maila trzeba było skorzystać z jakiejś biblioteki dostępnej dla Pythona. Teraz Django będzie posiadało własny interfejs do wysyłania maili, a wybór biblioteki będzie się dokonywało na poziomie konfiguracji (warto zauważyć, że Symfony również wprowadziło podobną funkcjonalność w swojej ostatniej wersji, wydanej w listopadzie 2009).

Wsparcie dla wielu baz danych - do tej pory można było korzystać z kilku baz danych “żaglując” konfiguracją. Teraz dodano oficjalne wsparcie, gdzie dla konkretnych obiektów będzie można wybierać bazę danych, do której będą się serializować.

Walidacja modeli – z mojego punktu widzenia najważniejsza zmiana wykonana w tej wersji. Walidacja modeli pozwala na sprawdzenie czy dane są poprawne tuż przed zapisaniem ich do bazy danych. Do tej pory było to możliwe, jednak niewygodne. Wprowadzenie walidacji do oficjalnie wspieranych funkcjonalności powinno uprościć ten proces. Warto zauważyć, że walidacja modeli jest bardzo ważnym elementem pisania dobrej aplikacji. Dzięki temu, że modele są walidaowane, programista czuje się znacznie pewniej z aplikacją, którą pisze, ponieważ wie, że nawet jeśli popełni błąd w innej części programu, walidacja modeli wykryje niepoprawne dane.

Podsumowując, wersja 1.2 Django to krok milowy w rozwoju tego frameworka. Polecam przesiadanie się na nową wersję już teraz, mimo że nie została jeszcze oficjalnie wydana (zostały do naprawienia tylko 2 bugi).

]]>
5
Tomasz Wysocki <![CDATA[IE6 nadal żyje!]]> http://tomwys.info/?p=352 2010-04-27T15:53:35Z 2010-04-27T15:51:04Z internet-explorer-6-logoInternet Explorer 6 jest żyjącym dinozaurem i niemal owianą legendami zmorą webmasterów. Jednak Ci, którzy myślą, że IE6 umarł śmiercią naturalną, niestety się mylą.

IE6 nadal żyje i ma się całkiem dobrze np. w Stanach Zjednoczonych. Kilka dni temu sieć reklamowa Chitaka opublikowała raport z którego wynika, że w trakcie godzin pracy firm aż 13% internautów korzysta z IE6. Co ciekawe poza godzinami pracy liczba ta spada do jedynie 6%. Sytuacja ta świadczy o tym, że internauci sami dbają bardziej o swoje bezpieczeństwo niż działy IT w firmach, w których pracują.

Warto przypomnieć, że IE6 jest przeglądarką już nie aktualizowaną, posiadającą dziury bezpieczeństwa. PayPal – najbardziej znana na świecie firma zajmująca się przesyłaniem pieniędzy przez internet, zablokowała dostęp z IE6 do swojego serwisu już w 2008 roku.

Dla porównania w Polsce odsetek użytkowników używających IE6 to poniżej 6%. Pokazuje to, że polscy internauci częściej wybierają nowoczesne przeglądarki, a co za tym idzie bardziej dbają o swoje bezpieczeństwo.

]]>
2
Tomasz Wysocki <![CDATA[Facebook próbuje zintegrować sieć]]> http://tomwys.info/?p=321 2010-04-30T09:04:25Z 2010-04-24T10:17:52Z f8-logoKilka dni temu odbyła się konferencja F8 zorganizowana przez Facebooka. Na konferencji zostały zaprezentowane narzędzia dla developerów, które są od teraz dostępne. Facebook zmienił między innymi architekturę swojego API, jednak nie to jest najważniejszym aspektem konferencji. Najważniejsze zmiany jakie zostały wprowadzone, mają na celu większe zintegrowanie innych stron internetowych z Facebookiem.

W tym celu Facebook ułatwia developerom dostęp do informacji o użytkownikach i dodaje kilka gadgetów, które pozwalają poczuć obecność Facebooka na stronie. Najważniejszym gadżetem jest uniwersalny przycisk “Like”. Przycisk można dodać do praktycznie każdego “rzeczywistego” obiektu na stronie (np. filmu, miejsca, osoby itp.), a także do obiektów wirtualnych (wpis na blogu, strona www). Po kliknięciu przycisku informacja o tym, że użytkownik lubi daną rzecz, nie tylko pojawi się na jego wallu, ale jeśli obiekt jest odpowiednio otagowany, może się pojawić także w jego zainteresowaniach (np. w kategorii “filmy, które lubię”.).

Podsumowując, Facebook robi pozytywne kroki, żeby zwiększyć swoją obecność na innych stronach. Wszystko wskazuje na to, że mu się to uda.

Polecam obejrzenie nagrań z konferencji. Szczególnie polecam: “Keynote”, “Open Graph and Social Plugins”, “Graph API”.

]]>
8