Masz pomysł na startup? Wsadź go sobię w d… !!!

19 sierpnia 2010

Czytam sobie dzisiaj newsa na jednym z portali o sieci, startupach itd. News dotyczy bardzo fajnej inicjatywy Agory o nazwie „Startup Fest”. Zerkam na komentarze i… znowu to samo! :/ Można byłoby je streścić jednym zdaniem: „Ja mam genialny pomysł a oni tylko czyhają aby mi go ukraść albo zabiorą mi większość udziałów!”.

Uważasz, że Twój pomysł jest cokolwiek warty? Otóż nie jest! Jaki fajny i odkrywczy by nie był, nie ma żadnej wartości… Powiesz zaraz „Jak to? Przecież wszystkie dobre biznesy wzięły swój początek od pomysłu!”. Masz rację. I nic nie rozumiesz…

Pomysł nabiera wartości na etapie jego realizacji a nie na etapie… pomysłu! Uważasz, że ludzie, którzy liczą się w branży nie mają pomysłów? Otóż mają. Tylko nie ma im ich kto realizować i tu dochodzimy do głównego problemu. To nie pomysłów brakuje a zaufanych, pracowitych, doświadczonych ludzi, którzy mogliby te pomysły realizować. Pomysł sam w sobie jest niczym. Musi za nim stać ktoś kto daje gwarancję jego realizacji i dalszego rozwoju co po jakimś czasie może przekuć się w sukces.

Myślisz, że im chodzi o pomysły… ? Nie, im chodzi o Ciebie. O kogoś młodego, odważnego, komu się jeszcze chce. Masz fajny pomysł? Super, chętnie posłuchają. Przecież żadna rozmowa kwalifikacyjna nie powie o Tobie tyle co prezentacja Twojej pomysłowości, Twojego zaangażowania itp. Jak trzeba będzie to większość Twoich wstępnych założeń co do projektu się zmieni. To nie jest istotne. Ważne jest, że już Cię znaleźli. Nie idziesz na konkurs startupów. Wybierasz się na casting pracowników.

„Chcą połowę biznesu! Złodzieje!”
Nie podoba się? Tam są drzwi… Nikt Ci przecież nie każe współpracować z kimkolwiek. Znowu błędnie zakładasz, że Twój pomysł jest coś wart. Nie jest. I nikt za darmo nie będzie Ci pomagał w jego realizacji. To oczywiste, że musisz być twardy w negocjacjach ale nie spodziewaj się, że ktoś rozpłynie się nad zajebistością Twojego projektu i przeznaczy na niego kilkadziesiąt tysięcy za Twoje „dzięki”.

Oni muszą na tym coś zyskać. Czasami udziały, czasami gotówkę, czasami prestiż a najczęściej Ciebie.

Przestań wreszcie narzekać i weź się do roboty. Masz czas, umiejętności, gotówkę i odwagę żeby rozkręcić interes samemu? Droga wolna. Ale jeżeli potrzebujesz pomocy to wykaż, że na nią zasługujesz i daj coś od siebie. Oni nie są źli, nie są złodziejami, nie czyhają na Twoją niewinność. Oni chcą zarobić. Jeżeli jesteś wystarczająco dobry to może uda Ci się z nimi ubić interes. To jest biznes!


Nowa osada.pl

12 sierpnia 2010

Nareszcie dobre wiadomości na temat „mojego” portalu ;) Padło na tym blogu wiele gorzkich słów o osada.pl ale trudno szukać pozytywów gdy stroną nikt się nie opiekował i pomału zdążała ku nicości…

Dzisiaj mogę zmienić ton swoich wypowiedzi! Osada dorobiła się nowego wyglądu! Nie ma już tych czerni i szarości, którym od początku się sprzeciwiałem ale zostałem przegłosowany… Teraz jest jasno i przyjemnie, kolorystyka stonowana i miła dla oka. Pewnie można się przyczepić do tego czy owego ale tak mnie cieszy ta zmiana, że nawet nie zamierzam szukać niedoróbek ;)

Oczywiście, z punktu widzenia wielu, zmiana drobna i mocno opóźniona… Przed osada.pl jeszcze długa droga chociażby do odrobienia popularności sprzed pięciu lat. Ale od czegoś trzeba zacząć :) Doświadczenie podpowiada mi aby jeszcze nie skakać z radości ale teraz łatwiej będzie mi przechodziło przez gardło, że to ja stworzyłem osada.pl.

PS
Przy okazji poszerzono całą stronę, przygotowano pod monitory o rozdzielczości minimum 1024 pikseli szerokości. Pisałem o problemie rozdzielczości 800×600 dwa i pół roku temu. Mogę tylko napisać, że cieszę się z takiej zmiany na osada.pl :)

PS 2
Teraz czekam na przebudowę funkcjonalności strony. „Silnik” ma już wiele lat, standardy kodowania już dawno się zmieniły. Kod był mocno rozgrzebany. Czeka ich wiele pracy…

Osada.pl na początku

Osada.pl do niedawna

Osada.pl dzisiaj

Trzymam kciuki i życzę powodzenia z portalem. Niech Wam się rozrasta ;)


Flash z obcej domeny

09 sierpnia 2010

Gdy próbujemy osadzić na naszej stronie plik flash pochodzący z innej domeny możemy spotkać się z problemem braku interakcji. Nagle przestają działać np. odnośniki.

Jest na to rozwiązanie. Podczas osadzania pliku SWF należy umieścić dodatkowy parametr: AllowScriptAccess. Może on przyjmować trzy ustawienia:

  • always – komunikacja między plikiem Flash a stroną www na której plik został umieszczony odbywa się zawsze, nawet gdy plik jest umieszczony pod innym adresem niż sama strona.
  • sameDomain – komunikacja następuje tylko gdy strona i plik znajdują się w tej samej domenie.
  • never – niezalecane i wycofywane ustawienie. Komunikacja nie następuje nigdy. Dokumentacja proponuje, że jeżeli masz pliki SWF, którym nie ufasz i nie chcesz aby mogły się komunikować to utwórz dla nich osobną subdomenę i stamtąd je linkuj ustawiając AllowScriptAccess na „sameDomain”.

Domyślne ustawienie parametru AllowScriptAccess to sameDomain. Pamiętaj o tym! Przy takim ustawieniu napotkasz problemy wstawiając SWF z innej domeny.

PS
Problem może dotyczyć nawet sytuacji gdy wejdziemy na stronę poprzez adres z www a pliki flash wstawione są jako adresy bez www. Najłatwiejszym rozwiązaniem problemu jest użyć przekierowanie 301. Tylko pamiętajcie, że jeżeli macie przekierowanie to mimo to starajcie się podawać prawidłowe adresy. Po co męczyć serwer dodatkowymi przekierowaniami…

PS 2
Wpis inspirowany moimi wczorajszymi problemami :)


Jak zostałem dziwakiem

20 lipca 2010

Straszny ze mnie dziwak. To zaczęło się już dawno i z każdym rokiem jest coraz gorzej.

Dziwak jestem bo nie piję alkoholu. I cham przy okazji! Bo kto odmawia na sławetne „ze mną się nie napijesz?!” ? Zupełny brak kultury z mojej strony. Mało tego. Ja nawet piwa nie piję. Raz na jakiś czas lubię jedynie napić się dobrego likieru czy wina. Dziwak. Albo baba!

Wstyd się w towarzystwie przyznać ale nie mam konta na Facebook. Ani na tysiącu innych portali społecznościowych. Przed linczem chroni mnie jedynie moje konto na nk.pl. Założone dawno, chyba ma się ku końcowi bo nie zaakceptowałem nowego regulaminu i złowieszczy komunikat straszy mnie konsekwencjami. Licznik znajomych skromny, większość patrzy na niego z politowaniem. Dodatkowo ostatnio mocno uszczuplony gdy zrobiłem czystki i usunąłem z listy konta ludzi z którymi już dawno nie utrzymuję kontaktu. Niektórzy się obrazili. Nie za to, że są mi co najmniej obojętni. Bardziej są wzburzeni tym, że tak pielęgnowana liczba znajomych na ich profilu przeze mnie się skurczyła.

Ostatnio jednak przeszedłem sam siebie. W ramach testu postanowiłem przez tydzień nie włączać telewizora. Ten krok spotkał się już z zupełnym niezrozumieniem rodziny i otoczenia. Napisałem „niezrozumieniem”? Nie… To był szok. Ludzie się patrzyli na mnie jak na wariata, nie wierzyli mi, byli przekonani, że robię sobie z nich żarty. Zupełnie jakbym im zakomunikował, że od dzisiaj przestaję oddychać. Reakcje były często tak ekstremalne, że od razu na myśl przychodziły mi najgorsze uzależnienia, alkohol, narkotyki. Niektórym autentycznie świat by się zawalił gdybym wyniósł im telewizor z domu…

Tydzień testu przebiegł bez problemu co tylko utwierdziło mnie w przekonaniu, że telewizja (której i tak do tej pory oglądałem bardzo mało) nie jest mi do szczęścia potrzebna. Cały czas rozważam całkowite zrezygnowanie z abonamentu i zupełne wyłączenie tego pudła. Powstrzymują mnie jeszcze jedynie te 2 czy 3 godziny tygodniowo gdzie faktycznie można obejrzeć coś wartościowego i o normalnej porze.

Nie, nie jestem fanatycznym przeciwnikiem telewizji a moja rezygnacja z niej nie jest jakimś protestem. Potraktowałbym to bardziej jako praca nad samym sobą. Poziom nadawanych programów, wypowiadane „mondrości” przez osoby zapraszane do studia a także zmasowany atak debilnych reklam powoduje u mnie reakcje wymiotne i obawiam się, że dłużej tego wszystkiego nie zniosę. Telewizja publiczna wyciąga w moją stronę swoje łapy (abonament RTV) tłumacząc się realizowaniem misji programowej. Nikt mi jednak nie umie odpowiedzieć jaką misję spełnia nadawanie seriali, które swoim poziomem sięgają rynsztoku czy różnego rodzaju programów rozrywkowych gdzie karmi się ludzi wykreowanymi, między innymi właśnie przez telewizję, ćwierćinteligentami, skandalistami i pajacami. Te ciekawe, uczące programy oczywiście też są. Zaczynają się przeważnie po północy. W dzień nie ma dla nich miejsca, trzeba przecież ogłupić ludzi kolejnym odcinkiem „Mody na Sukces”.

To Wasza wina. Są Was miliony. Cieszyliście się gdy Frykowska pieprzyła się na ekranach Waszych telewizorów. Podskakujecie z radości gdy prostaki dzielą się z Wami swoimi najbardziej skrytymi i ohydnymi grzeszkami, dla sławy, pieniędzy, dla zysku. I będziecie wiwatować za każdym razem gdy klauny będą robić dla Was „szoł”. Podoba się Wam to i imponuje.

Nie macie autorytetów lub są nimi osoby wypromowane przez marketingowców. Wiedzę o ludziach, którzy coś sobą reprezentują czerpiecie nie z ich biografii a brukowców. O ile w ogóle wiecie o ich istnieniu bo w dzisiejszych mass mediach nie ma miejsca dla ludzi, którzy mają jakąś wartość. To się nie sprzedaje…

Jeżeli nawet między biernością i narzekaniem na wszystko i wszystkich bierzecie los we własne ręce, walczycie o coś, to i tak najczęściej jesteście marionetkami w rękach innych. Kolejny raz daliście się zmanipulować. Tylko Wam się wydawało, że robicie coś dla siebie. Robiliście to bo tak było na rękę innym.

Nie macie żadnych zasad i żadne zasady Was nie obowiązują. To przecież takie modne walczyć z systemem, Policją, ze wszystkimi. Paradoksalnie, dzięki tym samym zasadom macie swój chleb i swoje igrzyska. O regułach przypominacie sobie tylko wtedy gdy możecie coś na tym zyskać.

Jeżeli w Waszych oczach jestem dziwakiem to osiągnąłem swój cel. W tych chorych czasach udało mi się zachować normalność.


Pogoda na stronie www

23 czerwca 2010

Skryptów PHP do pobierania informacji o pogodzie widziałem kilka. Większość to straszne kobyły, część nie działa, inna część działa błędnie lub mało wydajnie. Znowu przyszło mi pisać coś swojego...

Z pogodą na stronie jest jeden podstawowy problem: trzeba skądś pobrać dane. Są trzy wyjścia:

  • Wstawić na stronę gotową "wklejkę", która jest odpowiedzialna za wyświetlenie pogody (i przy okazji linka do źródła, logo innego serwisu itp.).
  • Parsować jakąś stronę www i "na chama" wyciągać z niej informacje o pogodzie (np. z pogoda.onet.pl).
  • Parsować ogólnodostępne źródło, najczęściej jakiś RSS

Pierwszym sposobem zajmować się nie będziemy wcale. Po to piszemy własny skrypt żeby wyświetlić pogodę dokładnie tak jak chcemy, bez zbędnych linków, obrazków itd. a nie tak jak ktoś nam nakaże.

Drugi sposób ma swoje zalety i wady.
Nasze rodzime serwisy informacyjne mają bogatą bazę polskich miejscowości. Każdy znajdzie tam swoją miejscowość lub inną, bardzo blisko położoną swojej. Dodatkowo najczęściej udostępniają bardzo wiele informacji pogodowych.
Przejdźmy do wad. Po pierwsze, nasze (znaczy polskie) serwisy nie udostępniają informacji o pogodzie w jakimś otwartym standardzie np. RSS. Musimy na własną rękę parsować wybraną witrynę. Gdy na stronie coś się zmieni to w najlepszym przypadku nasza pogoda nagle przestanie działać. W najgorszym, zaczną się u nas wyświetlać jakieś bzdury co w skrajnym przypadku rozwali nam cały serwis...
Druga wada jest powiązana z pierwszą. Skoro musimy parsować stronę to zwyczajnie kradniemy dane. I nie pomoże nawet informacja u nas na stronie skąd pobieramy pogodę. Jeżeli ktoś nie udostępnił RSS, XML czy innego ustrojstwa to znaczy, że nie chce nam czegoś dać, koniec kropka.

I nareszcie przechodzimy do trzeciego sposobu. Zagraniczne serwisy o pogodzie są bardziej liberalne od polskich i najczęściej każde miasto ma swój kanał RSS, który możemy spokojnie pobierać. Mamy dużo większą pewność, że nie będziemy musieli raz na kilka miesięcy zmieniać swoich skryptów w skutek zmian w strukturze pliku nad którym pracujemy. Nie obejdzie się jednak bez wad. Baza miejscowości jest przeważnie dużo skromniejsza niż byśmy tego oczekiwali. Jednak na własnym przykładzie przetestowałem, że nie jest to aż taki duży problem. Dla Tomaszowa Mazowieckiego na jednej ze stron wyświetlam pogodę z kanału Łodzi (jakieś 45km odległości licząc od środka jednego miasta do środka drugiego) i zawsze jest wyjątkowo aktualna :)
Udostępniono tylko kilka podstawowych informacji o pogodzie ale tu również praktyka pokazuje, że to jest wystarczające. Pamiętaj, że pogoda na Twojej stronie to tylko dodatek a nie główny element. Jeżeli jest inaczej to musisz podpisać umowę z odpowiednimi instytucjami o udostępnienie danych pogodowych a nie myśleć o pobieraniu tego wszystkiego od innych...

Przejdźmy do konkretów. Rok temu stanąłem przed problemem wyświetlania pogody na stronie www. Dzisiaj udostępniam skrypt :) Zdecydowałem się skorzystać z serwisu weather.yahoo.com i po dziś dzień nie miałem okazji pożałować tego wyboru. Poniżej zamieszczam prostą klasę PHP5 z której korzystam:

PHP:
  1. <?php
  2.  
  3. class yahoo_weather {
  4.  
  5.   public $city_code;
  6.   protected $weather;
  7.  
  8.   public function __construct($city_code) {
  9.     $this->city_code = $city_code;
  10.   }
  11.  
  12.   public function get($get_channel = NULL) {
  13.  
  14.     if(empty($this->weather)) {
  15.  
  16.       try {
  17.         $xml = @new SimpleXMLElement('http://weather.yahooapis.com/forecastrss?w='. $this->city_code .'&u=c', NULL, TRUE);
  18.       } catch (Exception $e) {
  19.         return FALSE;
  20.       }
  21.  
  22.       $xml->registerXpathNamespace('yweather', 'http://xml.weather.yahoo.com/ns/rss/1.0');
  23.  
  24.       $wind       = $xml->xpath('//channel/yweather:wind');
  25.       $atmosphere = $xml->xpath('//channel/yweather:atmosphere');
  26.       $astronomy  = $xml->xpath('//channel/yweather:astronomy');
  27.       $condition  = $xml->xpath('//channel/item/yweather:condition');
  28.       $forecast   = $xml->xpath('//channel/item/yweather:forecast');
  29.  
  30.       $this->weather = array(
  31.         'wind'       => array(
  32.           'chill'      => "{$wind[0]['chill']}",
  33.           'direction'  => "{$wind[0]['direction']}",
  34.           'speed'      => "{$wind[0]['speed']}",
  35.           ),
  36.         'atmosphere' => array(
  37.           'humidity'   => "{$atmosphere[0]['humidity']}",
  38.           'visibility' => "{$atmosphere[0]['visibility']}",
  39.           'pressure'   => "{$atmosphere[0]['pressure']}",
  40.           'rising'     => "{$atmosphere[0]['rising']}",
  41.         ),
  42.         'astronomy'  => array(
  43.           'sunrise'    => "{$astronomy[0]['sunrise']}",
  44.           'sunset'     => "{$astronomy[0]['sunset']}",
  45.         ),
  46.         'condition'  => array(
  47.           'text'       => "{$condition[0]['text']}",
  48.           'code'       => "{$condition[0]['code']}",
  49.           'temp'       => "{$condition[0]['temp']}",
  50.           'date'       => "{$condition[0]['date']}",
  51.         ),
  52.         'forecast'   => array(
  53.           'today'      => array(
  54.             'day'        => "{$forecast[0]['day']}",
  55.             'date'       => "{$forecast[0]['date']}",
  56.             'low'        => "{$forecast[0]['low']}",
  57.             'high'       => "{$forecast[0]['high']}",
  58.             'text'       => "{$forecast[0]['text']}",
  59.             'code'       => "{$forecast[0]['code']}",
  60.           ),
  61.           'tomorrow'   => array(
  62.             'day'        => "{$forecast[1]['day']}",
  63.             'date'       => "{$forecast[1]['date']}",
  64.             'low'        => "{$forecast[1]['low']}",
  65.             'high'       => "{$forecast[1]['high']}",
  66.             'text'       => "{$forecast[1]['text']}",
  67.             'code'       => "{$forecast[1]['code']}",
  68.           )
  69.         )
  70.       );
  71.  
  72.       $xml = NULL;
  73.     }
  74.  
  75.     if($get_channel == NULL) {
  76.       return $this->weather;
  77.     }
  78.     else {
  79.       return $this->weather[$get_channel];
  80.     }
  81.   }
  82. }

Użycie skryptu wygląda następująco (pobieramy kanał http://weather.yahooapis.com/forecastrss?w=505120&u=c):

PHP:
  1. $yahoo_weather = new yahoo_weather('505120');
  2. $weather = $yahoo_weather->get();

I od teraz w zmiennej $weather mamy piękną tablicę ze wszystkimi informacjami o pogodzie. Dodatkowo możemy dokonać pewnych przekształceń (według własnych upodobań):

PHP:
  1. $weather['wind']['speed'] = round($weather['wind']['speed'], 1);
  2.  
  3. $weather['astronomy']['sunrise'] = substr($weather['astronomy']['sunrise'], 0, -3);
  4.  
  5. $sunset = explode(':', substr($weather['astronomy']['sunset'], 0, -3));
  6. $sunset[0] += 12;
  7.  
  8. $weather['astronomy']['sunset'] = $sunset[0] .':'. $sunset[1];

Specjalny kod miejscowości, który przekazujemy do klasy musimy znaleźć sami. Wchodzimy na weather.yahoo.com, odszukujemy miasto, które nam najbardziej odpowiada i klikamy w prawym górnym roku na pomarańczową ikonkę RSS. W adresie na jaki zostaniemy przekierowani w parametrze "p" odnajdziemy interesujący nas kod. Właśnie wyczytałem w dokumentacji, że w adresie RSS zamiast parametru "p" (który został uznany za przestarzały) należy używać parametru "w" podając tzw. kod WOEID. Problem w tym, że gdy odnajdzie się stronę z pogodą dla wybranej miejscowości to sami linkują ikonkę RSS pod adres z parametrem "p". Kod, którego potrzebujemy jest w adresie strony z pogodą dla miasta. Dla Łodzi adres to http://weather.yahoo.com/poland/lodz/%EF%BF%BD%EF%BF%BDd%EF%BF%BD-505120/ z czego interesują nas ostatnie cyferki czyli 505120. Oto nasz kod (wcześniej PLXX0014). Poprawiłem klasę, jest już przygotowana do nowego standardu.

Klasa jest prosta i nie będę jej omawiał :) Na jej podstawie można napisać parser pogody z innego serwisu niż weather.yahoo.com lub np. nauczyć się jak pobierać i parsować dokumenty RSS, Atom, XML itp.

Skąd wziąć ikony pogody? Ten problem powtarza się bardzo często, ładne ikony to nieodzowny element prognozy pogody na każdej stronie www. Tu nie pomogą nam nawet zagraniczne serwisy. Nie chcą udostępniać swoich ikon bo to dla nich dodatkowy ruch na łączach i serwerach. A jak chcą to są dodatkowe obostrzenia, konieczność wyświetlania ich logo itp. Z tego powodu moja klasa nie wyciąga adresu do ikony aktualnej pogody mimo, że taki jest podawany (chociaż nie tak otwarcie jak reszta danych). Na szczęście w internecie jest sporo ikon, często darmowych (przynajmniej dla zastosowań niekomercyjnych), którymi możemy na swojej stronie zobrazować pogodę. Tu pojawia się zaleta wyboru weather.yahoo.com. Ich RSS udostępnia kod warunków pogody np. w chwili gdy to piszę jest częściowe zachmurzenie w nocy czemu powinna odpowiadać ikona księżyca za lekkimi chmurkami i takim warunkom przypisano kod 33. Wiele gotowych pakietów ikon uwzględnia te kody przez co sami już nie musimy sprawdzać wszystkich kodów i samemu ich przypisywać do odpowiednich ikon. Wystarczy wyświetlić ikonę 33.png :)

Nie możesz znaleźć ikon dla siebie? Moim faworytem są te ikony. Są już przystosowane do kodów z weather.yahoo.com. Co więcej, ich autorem jest nasz rodak ;) Ikony są darmowe do zastosowań niekomercyjnych a za wykorzystanie w komercyjnym projekcie trzeba zapłacić 200zł (tak było rok temu, teraz nie wiem). Warte tych pieniędzy.

W ekstremalnej sytuacji można ściągnąć ikony weather.yahoo.com na własny serwer. Chyba się nie pogniewają... :)

Na koniec pamiętaj aby wynik powyższej klasy zapisywać jakoś do cache (np. korzystając z dobrodziejstw crona). Niedopuszczalne jest pobieranie informacji o pogodzie za każdym razem gdy musimy je wyświetlić u siebie na stronie. To spowodowałoby bardzo duży wzrost transferu, niepotrzebne obciążenie maszyny i opóźnienie w wyświetlaniu się naszej witryny. Osobiście ściągam pogodę raz na godzinę.

PS
Zachęcam do zapoznania się z dokumentacją RSS, którą można znaleźć pod tym adresem developer.yahoo.com/weather.

PS 2
A może jednak jakiś polski serwis udostępnia w prostej postaci i za darmo informacje o pogodzie? Poproszę o linki w komentarzach :)


Zgłoszenia naruszeń na osada.pl

15 czerwca 2010

Dzisiaj wpis sentymentalny. Szkic utworzyłem przynajmniej dwa lata temu, zamierzałem go regularnie uzupełniać i kiedyś opublikować. Niestety był to także moment gdy moja przygoda z osada.pl miała się ku końcowi. Z tego powodu treści w dzisiejszym wpisie niewiele ale z drugiej strony szkoda aby się to zmarnowało i nie ujrzało światła dziennego :)

Na osada.pl istnieje możliwość wysłania raportu jeżeli naszym zdaniem zdjęcie z jakiegoś powodu nie powinno być zamieszczone (jest wulgarne, przedstawia kogoś kto nie jest właściciele profilu, łamie jakieś prawa autorskie etc.). Aby wysłać raport należało podać jego powód. Poniżej kilka zgłoszeń, które szczególnie przypadły mi do gustu :)

bluźni i podrywa mi chłopaka !! znaczy nie muwi do mnie szmata

Blużniła na N@di i wyzywała od szmat!!!

Ukradła mi chlopaka!!!

Bo nie chce ze mna chodzic !! ;(

To nie są jej fotQ Poniewsz jeszcze ją lubilam to widzialam jak dodawalaa tą fote

ten typ ma pryszczata twarz i mi wrzuca i dostanie bicie prosze o usuniecie tego foto

bo tak

nie podoba mi sie opis bo nie jest napisana prawda.....

jest lezba

Takich rodzynków było znacznie więcej... :)


Jak zmienić IP w Multimedia Polska?

29 maja 2010

Spotykam się z tym pytaniem coraz częściej. Nie wszystkich oczywiście ten temat interesuje ale skoro MM ma kilkaset tysięcy klientów to chyba znajdzie się kilku, którzy doczytają do końca ;) Inni mogą się zainteresować kwestią zmiany adresu MAC.

Klienci Multimedia Polska mają stałe IP. Przeważnie :) Otóż IP nie jest przypisane na stałe do abonenta. Z własnych obserwacji wnioskuję, że adres IP zmienia się sam, raz na jakiś czas. U mnie bywa różnie, ostatnio na zmianę czekałem jakieś pół roku. Czy to są zamierzone zmiany czy może wynikają one z innych, nieznanych mi czynników i wyciągam błędne wnioski? Tego nie wiem.

Niekiedy można się spotkać z poradami, że trzeba na 5-10 minut odłączyć modem MM od prądu i po podłączeniu zostanie nam przypisany nowy numer IP. To chyba jednak takie proste nie jest i może zadziałać tylko w wyjątkowo sprzyjających warunkach. U mnie przynajmniej to nie działa. Specjalnie nie sprawdzałem ale kilka awarii prądu było i nigdy IP się nie zmienił :)

Jest jednak metoda, która przyniosła mi pożądane rezultaty. Zmiana adresu MAC.

Jak zmienić MAC?
MAC to taki odcisk palca naszego sprzętu, którego używamy do łączenia się z siecią. W teorii niepowtarzalny na całym świecie ciąg znaków, 48-bitowa liczba. W praktyce każdy z nas może zmienić adres MAC jakim urządzenie się przedstawia. O ile nasze urządzenie nam na to pozwala :) Ale coraz częściej zdarza się, że producenci sprzętu/oprogramowania nam to ułatwiają. Zawsze możesz też zaprzęgnąć do pracy lutownicę ale osobiście raczej nie polecam... :)

W domu mam postawioną bezprzewodową sieć a więc "na zewnątrz" widoczny jest adres MAC mojego routera. W takich przypadkach musimy indywidualnie sprawdzić czy i jak nasz sprzęt pozwala na zmianę MAC. U mnie to jest banalnie proste, korzystam z alternatywnego oprogramowania Tomato.

Jeżeli Twój komputer z modemem MM łączy się bezpośrednio to trzeba zmienić MAC Twojej karty sieciowej. Sposobów na to jest kilka, z pomocą przychodzi Google. Warto zawsze poszukać w różnych manualach czy producent nie udostępnił jakiegoś prostego sposobu. Jeżeli nie (lub nie chce Ci się szukać czy korzystać z innych sposobów :) ) to pozostaje skorzystanie z programu SMAC (tylko systemy Windows).

SMAC jest raczej prosty w użyciu więc nie będę opisywał jak z niego korzystać. Producent na swojej stronie udostępnił również instrukcję obsługi. Program jest niestety płatny. Wasza sprawa co z tym zrobicie :P

Po zmianie adresu MAC (ja zmieniam na jakiś losowy) najlepiej wszystko zresetować. Komputer, router czy inne ustrojstwo w którym MAC zmienialiśmy oraz modem od MM. Po ponownym połączeniu powinniśmy otrzymać nowy numer IP. U mnie działa ;)

PS
Jeżeli tekst przeczytał jakiś technik MM to pewnie ma ubaw bo ja wróżę z fusów a on dokładnie wie jak proces zmiany/przypisania IP wygląda. Tekst jest mocno nietechniczny :) Nie zastanawiałem się nad uzasadnieniami technicznymi tego co napisałem. Wiem jedno, u mnie zmiana MAC daje rezultaty :)

PS 2
Nie, to nie jest poradnik dla trolli żeby mogli omijać bany na IP. Kiedyś przypisany mi został numer IP po jakimś spamerze. W konsekwencji nie mogłem wysyłać poczty e-mail na wiele różnych kont. Innym razem ktoś coś nabroił, ja dostałem jego IP i miałem zablokowaną stronę z której pilnie musiałem skorzystać. Przyznacie chyba, że to są racjonalne powody do zmiany IP.


Reset styli CSS

11 maja 2010

No tak... Ledwo się Riddle pojawił a już mi podebrał temat o którym planowałem w najbliższych dniach napisać ;) Ale to bardzo dobrze bo pewnie nie mielibyście takiego pożytku z mojego wpisu jak z jego.

Każda przeglądarka internetowa ma zbiór podstawowych reguł CSS, które ustawiają właściwości tagów HTML. Dzięki temu możemy stworzyć dokument HTML bez żadnych reguł CSS a mimo to będzie odpowiednio wyglądał (tag strong będzie pogrubiał, h1 będzie ustawiał odpowiednio duży nagłówek itd.). To nie jest efekt jakichś magicznych reguł umieszczonych wprost w kodzie źródłowym przeglądarki a właśnie rezultat zastosowania CSS.

Wszystko byłoby pięknie gdyby twórcy przeglądarek umieli się dogadać ale jak wszyscy wiemy nie potrafią nawet stosować się do przyjętych standardów więc jak tu wymagać aby stosowali takie same zasady w mniej formalnych aspektach. Z tego powodu mamy totalny bajzel. Wystarczy spojrzeć na te dwie strony (tu i tu - adresy też znaleziony u Riddle :) ) aby przekonać się jak duże różnice są między przeglądarkami a nawet ich poszczególnymi wersjami.

Dążąc do perfekcji (aby nasze strony wyglądały identycznie w każdej przeglądarce) webmasterzy postanowili stworzyć zbiór reguł CSS, które zresetują wszystkie zasady CSS ustawione przez przeglądarki. W ten sposób zaczniemy budować każdą stronę z "czystym kontem". Wystarczy jednak wpisać w Google "CSS reset" aby się przekonać, że pomysłów na rozwiązanie problemu jest wiele. Który jest najlepszy?

Rozwiązaniem może być to co wczoraj zaproponował Riddle. Wygląda to naprawdę zgrabnie, jest dokładnie opisane, przygotowuje nas już do pracy z HTML5. Polecam.

Pamiętaj jednak, że nim zaczniesz stosować te reguły to dobrze byłoby je zrozumieć. Znam przykłady gdzie koder zastosował jakieś reguły mimo, że ich nie potrzebował i potem przy każdym wystąpieniu np. odnośnika (tu zwróć uwagę na to co napisał Riddle o text-decoration) je "odkręcał". Z drugiej strony warto rozszerzać te reguły o swoje własne jeżeli upraszczają pracę z Twoim projektem. Nie chodzi przecież o to aby mieć idealne reguły resetujące ustawienia przeglądarek a o to aby posiadać reguły maksymalnie ułatwiające nam budowanie własnej strony.


Riddle wrócił

08 maja 2010

Bycie informatykiem to trochę jak bycie lekarzem. Właściwie każda specjalizacja (programowanie, tworzenie www, sprzęt itd.) wymaga od Ciebie ciągłej nauki i samodoskonalenia. Na szczęście są osoby, które chętnie dzielą się swoją wiedzą i/lub znajdują dla nas ciekawe materiały w sieci. Nie ma ich zbyt wielu a pod koniec 2007 roku ubyło jednego. Ku zadowoleniu webdeveloperów (także mojemu) wrócił... :)

Piotr Petrus szerzej znany pod pseudonimem Riddle to, moim skromnym zdaniem, naprawdę utalentowany młody chłopak o bardzo bogatej wiedzy. Na swoim blogu opisywał ciekawe aspekty tworzenia www, podpowiadał wyjątkowo funkcjonalne rozwiązania. Ponad dwa lata temu zniknął by w marcu tego roku wrócić ponownie (o czym dowiedziałem się dopiero dzisiaj).

Jeżeli nie miałeś przyjemności trafić wcześniej na artykuły Piotrka to zapraszam pod ten adres. Mimo upływu czasu na pewno znajdziesz tam coś ciekawego. Tymczasem pod starym adresem jego bloga czyli www.perfectionorvanity.com jest już nowa odsłona witryny gdzie autor porusza wyjątkowo ciekawe i aktualne aspekty tworzenia aplikacji na potrzeby globalnej sieci. Czas najwyższy zacząć poważnie szkolić się w nowych technologiach takich jak HTML5 czy CSS3 a także poznać interesujące rozwiązania w JavaScript. Jestem pewien, że nowa inicjatywa Riddle mnie nie zawiedzie :) Obyś i Ty stał się stałym gościem jego strony. Warto.

PS
Należy wspomnieć o znanym projekcie Riddle czyli Em Calculator. Szalenie przydatny skrypcik gdy budujemy swoją stronę na em'ach zamiast pikselach (do czego zachęcam). Pierwsza wersja kalkulatora została udostępniona w maju 2006, druga w lutym 2007 ale przez lata projekt niczego nie stracił na funkcjonalności. Gdzieś po sieci od dłuższego czasu krążą zapowiedzi Piotra o wersji trzeciej. Nawet screeny są, filmik. Nic tylko czekać :)


Gotowe rozwiązania w PHP – samo dobro?

06 maja 2010

Za napisanie czegoś w tym temacie zabierałem się dobre kilka lat :) Uznawałem do tej pory, że lepiej nie wdawać się w długie dyskusje tylko dalej robić swoje i po swojemu. Jednak coraz częściej spotykane, wręcz euforyczne komentarze na temat różnych gotowych rozwiązań w PHP skłaniają mnie do dodania łyżki dziegciu do tej beczki miodu...

Bez dwóch zdań, PHP to lider w tematyce tworzenia stron www. Za popularnością idzie również wzrost aplikacji open source, których w świecie PHP jest zatrzęsienie. Gdyby tak na nie wszystkie spojrzeć to można byłoby dojść do wniosku, że tworzenie stron www stało się bajecznie proste i bardzo szybkie, przecież dla każdego elementu strony mamy setkę różnych darmowych rozwiązań. Tylko czerpać garściami...

Szybko się jednak okazuje, że nie ma tak różowo. Bez względu na to czy mówimy o rozbudowanych systemach CMS czy o frameworkach to zawsze powtarzają się te same główne problemy:

  • Wydajność
  • Zbyt dużo elementów, których nie potrzebujemy a które są uruchamiane...
  • ... natomiast nie ma tego co dla nas jest najważniejsze lub jest ale nie spełnia naszych wszystkich oczekiwań
  • Obciążające mechanizmy, które mają za zadanie dostosować aplikację do wszystkich popularnych serwerów, rozwiązań itd. a Tobie nigdy się nie przydadzą
  • Musisz się uczyć nowego oprogramowania, czasami jest tyle zasad, komend i funkcji do zapamiętania, że przybiera to rozmiary małego języka programowania

Oczywiście lista wad zależy od naszych potrzeb i oczekiwań. Przy malutkim projekcie mało kto zwraca uwagę na wydajność. Przy typowym projekcie bez żadnych szczególnych wymagań zadowolimy się gotowymi modułami, które są dostarczone razem z CMS'em. I tak dalej... Z drugiej strony czy potrzebujemy wytaczać tak ogromne działa jak np. Drupal do strony jakiejś firmy gdzie będzie maksymalnie 10 podstron? I jak często projekty, które tworzysz są tak typowe, że zadowalasz się gotowymi modułami do CMS'a i nic już w nich nie musisz zmieniać?

Nie byłbym obiektywny gdybym widział w gotowych rozwiązaniach tylko same wady. Podstawowe zalety to:

  • Dobra (przeważnie) dokumentacja
  • Duża społeczność gdzie wielu służy Ci pomocą gdy masz problem i jednocześnie możesz szukać pracownika/współpracownika, który nie zgubi się w Twoich projektach bo korzysta z tego samego oprogramowania
  • Sporo gotowych rozwiązań, których można używać lub się na nich uczyć
  • Bezpieczeństwo
  • Łatwość programowania

Jak widać, gotowe rozwiązania mają się czym bronić.

Dokumentacja, jaka by nie była to i tak jest lepsza od tej, którą Ty masz na starcie w swoim autorskim rozwiązaniu (a nie masz żadnej póki sobie jej sam nie stworzysz).

Społeczność i spore grono już "wyszkolonych" pracowników to też zaleta. Chociaż z tymi specjalistami to też nie jest tak różowo bo najczęściej brakuje takich, którzy już umieją dobrze sobie radzić z danym narzędziem i trzeba ich i tak douczać. A nawet jak są to się cenią...

Gotowe moduły to fajna rzecz. Niestety i tutaj jest się do czego przyczepić. Często są źle zaprojektowane, niechlujnie napisane, powodują zwiększone obciążenie, mają w sobie furtki dla włamywaczy a na ich podstawie możemy się jedynie nauczyć jak NIE programować. Nie będę jednak tak krytyczny, zdarzają się prawdziwe perełki a duża część trzyma poziom.

Bezpieczeństwo: z jednej strony błędy są szybko wychwytywane przez społeczność i developerów, z drugiej główny kod Twojej strony, tzw. "silnik" jest dostępny dla każdego i każdy teoretycznie może tam wyszukać lukę lub skorzystać z gotowej instrukcji jeżeli na czas nie załatałeś strony oficjalną łatką. Jednocześnie jednak CMS'y i frameworki najczęściej mają mechanizmy, które pilnują programistę aby nie potworzył furtek dla włamywaczy a w Twoim własnym oprogramowaniu sam się musisz pilnować lub pisać samemu mechanizm zabezpieczeń. Jeszcze inaczej podchodząc do tematu, w Twojej aplikacji może być luka ale jest niewielkie prawdopodobieństwo, że ktokolwiek na nią trafi i ją wykorzysta bo nikt nie ma Twoich kodów źródłowych :) Chociaż to nie jest oczywiście najlepsze z możliwych podejście do bezpieczeństwa...

Z łatwością programowania to już jest bardzo różnie... Takie są ogólne zasady powstawania gotowych narzędzi: ułatwiać życie programiście. Nie zawsze jednak cel jest osiągany. Nie da się jednak zaprzeczyć, że wraz z gotowymi rozwiązaniami dostajemy często moduły np. do łatwego testowania i debugowania naszych aplikacji. We własnych projektach jest z tym dużo gorzej.

Czas na kilka przykładów z życia. Pierwszy raz na blogu odniosę się do mojej ponad rocznej pracy z systemem Drupal. Nie byłem z tego wyboru jakoś wielce zadowolony chociaż rozumiałem argumenty dlaczego go wybrano w firmie. Nasz największy projekt od dnia startu do pierwszej wersji beta pochłonął kilka miesięcy pracy dwóch programistów. Dodajmy uczciwie, że cały czas uczyliśmy się tego CMS'a. Efektem była całkiem sympatyczna aplikacja i kilkadziesiąt naszych autorskich modułów. Nie wszystko jednak wyglądało tak jak powinno... To co zaliczyłbym do wad:

  • Miesiące nauki a i tak co chwila napotykaliśmy na problemy (a chyba tacy głupi nie jesteśmy... :) )
  • Niektóre rzeczy napisalibyśmy w godzinę ale głowiliśmy się kilka dni jak to ugryźć w Drupalu przez narzucone przez niego ograniczenia
  • No właśnie, ciągle ograniczenia i ograniczenia. Jasne zasady i standardy są dobre ale nie można przesadzać...
  • Wydajność... a raczej jej brak
  • Co z tego, że jest dużo gotowych rozwiązań skoro i tak wiele z nich musieliśmy poprawiać i dostosowywać do swoich potrzeb

Odniosę się tylko do wydajności bo cała reszta jest raczej jasna (a w szczegóły wchodzić nie ma sensu bo to nie wpis o Drupalu). Nie wiem dokładnie jak obciążony był serwer naszą aplikacją ale z pewnością bardzo i od początku były z tym problemy. Gdy pierwszy raz sprawdziliśmy ile zapytań do bazy danych generuje strona główna to mało nie spadłem z krzesła. Ponad tysiąc dwieście! Specjalnie napisałem słownie żeby nie było wątpliwości, że się nie pomyliłem :) Po optymalizacjach wyszło ponad 700. W Drupalu były włączone standardowe mechanizmy cachowania itp. Nie wiem czy i jak sobie z tym poradzili, wkrótce potem zająłem się innymi sprawami. Te liczby są porażające... Odnosząc się do moich autorskich rozwiązań strona główna nasztomaszow.pl generuje dziennie kilkadziesiąt zapytań do bazy. Dziennie! Kilkadziesiąt! I to bez względu na to jak duży ruch jest na stronie z racji sprytnego systemu cachowania. Poza nawiasem dodam, że standardowy system cachowania w Drupalu jest oparty o... bazę danych. Nie wiem czemu tak, może ja się nie znam i tak jest najwydajniej :)

Po tamtych doświadczeniach wiedziałem już, że mój następny projekt oprę o własne rozwiązania. Tak się składa, że NaszTomaszow.pl (a o nim właśnie mowa) można śmiało porównywać z opisywaną aplikacją w Drupalu. Obie mniej więcej odpowiadają za to samo - za prowadzenie/obsługę portali miejskich. O liczbie zapytań do MySQL strony głównej już pisałem. Niestety nie pamiętam już jakie wyniki generował XDebug dla witryny w Drupalu natomiast praktycznie goła instalacja tego CMS'a generuje się u mnie w średnio 700ms. Jak na tym tle wygląda mój system? Stronę główną NaszTomaszow.pl parser wypluwa w około 45ms. Czystą instalację w 15ms.

Zrobiłem inne testy*. Sprawdziłem jak szybko generują się strony we frameworku Yii (podobno bardzo wydajny), przetestowałem system forum IPB i CakePHP. Wiem, że to nie jest jakaś super reprezentatywna grupa ale są to raczej popularne skrypty a ja zrobiłem testy tylko z ciekawości a nie aby badać cały rynek ;) Oto wszystkie wyniki:

  • Yii (przykład blogu z oficjalnej paczki) - średnio 650ms
  • forum IPB (konfiguracja z NaszTomaszow.pl, forum puste) - średnio 420ms
  • CakePHP (czysta instalacja, tuż po wypakowaniu z oficjalnej paczki) - średnio 790ms
  • Drupal (malutka, prosta stronka, baza praktycznie pusta) - średnio 700ms
  • Mój system (na podstawie aktualnej wersji plików i bazy NaszTomaszow.pl) - 45ms
  • Mój system (czysta instalacja) - 15ms

Czy więc odradzam korzystanie z gotowców? Nie, zdecydowanie nie. Sam przecież czasami stawiam coś na Drupalu a ten blog oparty jest o WordPress'a. Warto poznać popularne rozwiązania open source, chociażby po to żeby móc mówić o ich wadach. Przy pracy z nimi zdobędziesz też wiele doświadczenia i odkryjesz ciekawe rozwiązania wielu problemów. Czasami ich wybór jest jedynym słusznym rozwiązaniem.

Ten artykuł jest bardzo lakoniczny, może nawet ktoś uzna, że amatorski. Nie chciałem porównywać konkretnych systemów, głosić jedynej słusznej teorii i nawracać niewiernych. Chciałem przypomnieć Ci, że nic nie zastąpi zdrowego rozsądku. Pogódź się z tym, że nie ma idealnych narzędzi. Zawsze to Ty musisz się wykazać znajomością problematyki i przewidzieć na jakie problemy możesz się natknąć oraz wykazać jakie rozwiązania będą efektywniejsze i spełnią Twoje założenia. Czasami potrzebna jest ekstremalna wydajność, czasami najważniejszy jest czas oddania projektu, innym razem masz wieloosobowy a może nawet międzynarodowy zespół. Czynników, które powinny wpływać na Twoją decyzję co do wyboru oprogramowania są dziesiątki.

Przypominają mi się w tej chwili stare wojny np. programowanie strukturalne versus obiektowe. Zawsze to co nowe podbijało szybko serca programistów, przychodził jednak czas opamiętania i rozsądek podpowiadał wtedy starą prawdę: stosuj wedle zapotrzebowania.

* Wszystkie testy były banalnie proste. Uruchomiony XDebug, wyniki odczytywane za pomocą WinCacheGrind, kilkanaście prób i wyciągnięta średnia.

EDIT 14.06.2010
Postanowiłem dzisiaj sprawdzić jak wydajnościowo mają się dwa frameworki, którymi jestem szczególnie zainteresowany. Oto uzupełnienie powyższej listy:

  • Symfony (przykładowa paczka Sandbox) - średnio 680ms
  • Zend Framework (oficjalne aplikacje demo) - średnio 365ms

Takiego właśnie wyniku Symfony się spodziewałem. Słyszałem narzekania na jego wydajność. Paczka Sandbox to, o ile dobrze przeczytałem, wstępnie skonfigurowane Symfony. Na tle Drupala, który po instalacji ma już wiele gotowych elementów do zaoferowania nie wygląda to imponująco (chociaż po ponad rocznej pracy z Drupalem i pięciu minutach w dokumentacji Symfony chyba w tym drugim, jako programista, czułbym się lepiej ;) ).

Testując Zend Framework skorzystałem z gotowych aplikacji demo, które znalazłem w paczce. Zdarzały się dużo lepsze czasy niż powyżej zaprezentowana średnia (poniżej 200ms a nawet poniżej 50ms) ale powiedzmy sobie szczerze, ile może trwać wyświetlenie jednego formularza? :) Dlatego wybrałem dwa czy trzy trochę bardziej wymagające wersje demo i na nich oparłem wyniki testu. Ciekaw jestem jak wyglądałyby wyniki np. przy jakimś prostym systemie newsów.