Przeglądając sobie stare śmieci trafiłem na adres do stronki Minds.pl. Pomyślałem sobie, że może warto będzie śledzić ich kanał RSS. Patrzę sobie na pasek adresu i nie widzę znajomej mi ikonki. Pobieżnie przeglądam witrynę, również nie znalazłem nic co by przypominało ikonkę kanału RSS. Zrezygnowany chciałem już opuszczać witrynę, gdy nagle udało mi się odnaleźć to co poszukiwałem. Potrzebowałem na to ok. minuty, co w zasadzie oznacza, że poświęciłem sporo czasu na odnalezienie tylko jednej rzeczy!
Normalnie to ZU po prostu opuściłby przeglądaną witrynę. Pomyśleć, że wystarczyłoby dodać RSS Autodiscovery i byłby jeden problem mniej.
Pamiętaj, jeśli już robisz kanały RSS/Atom to nie zapomnij również o tej jakże przydatnej rzeczy. Zdecydowanie zwiększy użyteczność i zwiększy zapewne oglądalność (o ile użytkownik będzie śledził feedy).
Osobiście uważam, że AdBlock jest jednym z najlepszych rozszerzeń dostępnych dla Firefoksa. Świat bez reklam jest milszy. Niestety nie zawsze. Okazało się, że podczas pisania kolejnego frontendu, oraz przy pracach nad Just Proto AdBlock sporo namieszał. Zaczęły znikać poszczególne boksy, lub całe grafiki (nawet z tła). Zanim wpadliśmy na to co jest przyczyną stracono sporo czasu.
Najczęściej jest to wina omyłkowego nazwania elementów, lub plików. Robiąc zaślepkę, która w nazwie ma frazę "_300x250" ryzykuję, że jej nie ujrzę. Podobnie może się stać nadając boksom z ogłoszeniem nazwę typu "Ad". Pamiętaj, gdy ze stroną dzieją się cuda, upewnij się, czy to przypadkiem nie jest zasługa AdBlocka.
Pracując jako programista nie raz, nie dwa musiałem się zmierzyć z tym co klient ma na myśli. Niestety specyfikacja nie oddaje tego jak w rzeczywistości dane funkcjonalności mają się prezentować. Sprawia to sporo problemów. Przede wszystkim konieczność wprowadzania masy poprawek z tego względu, że wyobrażenie klienta było zupełnie inne od wizji programisty.
Jest pewna metoda, która może skutecznie pomóc w poprawieniu tworzenia aplikacji oraz uniknąć wprowadzania zbędnych (a czasami czasochłonnych) poprawek. Ów metoda to, wspomniane w tytule, prototypowanie.
Prototypy pozwalają urzeczywistnić wizję tego jak poszczególne funkcjonalności, a zarazem cała aplikacja mają wyglądać. Pozwalają klientowi w początkowej fazie na ustawienie wszystkiego zgodnie z tym jak chce, a w późniejszych etapach ułatwiają stworzenie serwisu.
Miałem okazję tworzyć serwis zgodnie z wytycznymi dostarczonymi w prototypie. Muszę przyznać, że dostarczony prototyp okazał się niesamowicie pomocny i zdecydowanie przyspieszył stworzenie aplikacji z bardzo prostego powodu - uniknięcia zbędnych pytań oraz tworzenia kolejnych poprawek.
Słowem wstępu, a zarazem nawiązując do wcześniejszej notki musiałem chwilkę powalczyć z tym, żeby odpalić ten modem pod Linuksem. Podczas lektury wyników z googla naczytałem się o różnych sposobach typu usb_modeswitch. Tak naprawdę okazały się zbędne. Ten problem można rozwiązać na dwa sposoby.
wvdial
Osobiście wydaje mi się, że jest to najwygodniejsza opcja. Wystarczy prosty config (niżej zamieszczam), oraz jeszcze prostszy skrypt w bashu, który jest odpowiedzialny za połączenie i rozłączenie i to wszystko. Rozłączanie jest tym bardziej zabawne (jak dla mnie), ponieważ wystarczy ubić proces wvdial, a ten (wyłapując odpowiedni sygnał) wszystko ładnie po sobie posprząta.
Muszę jeszcze dodać, że aby wszystko działało muszę tworzyć ręcznie interfejs ppp, poleceniem "mknod /dev/ppp c 108 0".
Niestety wvdial służy tylko i wyłącznie do ustanawiania połączeń. Modem ma nieco większe możliwości (chociażby wysyłanie/odbieranie smsów, książka adresowa, no ale pewnie to zasługa karty sim w środku :)), których w ten sposób nie obsłużymy. Z drugiej jednak strony nie wiem czy to jest specjalnie do czegoś potrzebne.
Dziw nastał. Wielu twierdzi, że Firefox trzymał webdeveloperów dzięki wtyczkom takim jak "Firebug". Dzisiaj znajomy podrzucił mi ciekawego linka do części developerskiej Opery. (PS, żeby było zabawniej to jest wiadomość z 2006 roku, dziwne, że wcześniej o tym nie słyszałem)
Mamy do czynienia z czymś na wzór skryptozakładki, która pozwala na przeglądanie drzewa DOM, wraz z jego modyfikacją i możliwością podejrzenia zmian. Chwilkę się pobawiłem tą zabawką i muszę przyznać, że mamy coś podobnego do Firebug'a. Ten dodatek, choć bardzo fajny (pozwala dodatkowo modyfikować Cookies + nagłówki HTTP), ma pewne dziwne i mało wygodne rozwiązania.
Jednak nie było aż tak źle. Wcześniej strasznie się męczyłem, bo sterowniki ze strony ATI nie chciały w ogóle się włączać. Dzisiaj pobrałem plik "ati-driver-installer-8.40.4-x86.x86_64.run", a potem już w konsoli:
chmod +x ati-driver-installer-8.40.4-x86.x86_64.run
./ati-driver-installer-8.40.4-x86.x86_64.run --buildpkg Ubuntu/feisty
sudo dpkg -i ./*.deb
sudo m-a prepare,update
sudo m-a build,install fglrx-kernel
sudo depmod
Restart X-ów, i tyle. U mnie działa :)
Edit: teraz dopiero się zorientowałem, że pobrałem wersję 64 bitową, a mój laptop ma procesor 32 bitowy.. o_0
Przyznam się, że nie wiedziałem jak nazwać tą notkę także wybaczcie mi to ;-) Chciałem napisać (specjalnie na prośbę Grzegorza Piechuły ;-] ) sposób w jaki przedstawione są u mnie notatki z minibloga.
Cel jaki chcemy osiągnąć to warstwa (w niej będzie treść notek), która zwija się i rozwija. Poza tym zrobimy tak, że gdy jedna notka będzie rozwinięta, a chcemy zobaczyć drugą to ta pierwsza posłusznie się zwinie, a dopiero później pokaże się druga.
Już minęło sporo czasu od pojawienia się pierwszej części kursu PHP-GTK. Chciałem mocno przeprosić za to, że musieliście czekać, niestety w sporej mierze to wina mojego lenistwa...
Dzisiaj zajmiemy się czymś bardziej skomplikowanym. Stworzymy formularz logowania, który pokaże komunikat błędu jeśli wpiszemy złe hasło/login.
Tym razem będzie krótka notka. Dawniej pisałem o tym jak za pomocą CSS można wyświetlać status serwera (czyli to czy jest offline, czy też online). Niedawno przyszedł mi do głowy nieco inny sposób na wykorzystanie CSSa do tego celu.
PHP-GTK to rozszerzenie PHP stworzone przez Andrieja Zmiewskiego pozwalające używać popularnej biblioteki GTK+ służącej do tworzenia graficznych interfejsów użytkownika na podstawie zestawu dostępnych widgetów (kontrolek). Programy korzystające z PHP-GTK wyróżniają się łatwością i szybkością napisania.
via Wikipedia
Już od dawna chciałem chociaż troszkę poznać to rozszerzenie. Trochę to potrwało zanim cokolwiek się dowiedziałem. Aktualnie sam poznaję PHP-GTK, ale mogę już opisać pewne "podstawy podstaw". Ten kurs proszę traktujcie raczej jako wolne tłumaczenie kolejnego z rozdziałów tutoriala znajdującego się na stronie projektu.
Mam do wykonania parę zadań. Jedno z nich to napisanie funkcji/procedury w MySQL. Jak dla mnie to jest (a właściwie była) czarna magia. Troszkę czasu na to przeznaczyłem i okazało się, że takie coś wcale nie jest straszne ;-]
Podobnie jak PHP, C++, Java i masa innych języków programowania ma procedury i/lub funkcje. Jak wiadomo mogą one posłużyć do wielu różnych rzeczy. W MySQL można je wykorzystać aby zwiększyć bezpieczeństwo. Zapisana funkcja/procedura może być bez problemu wywołana z poziomu PHP, ponieważ wystarczy wysłać zapytanie do bazy będące wywołaniem funkcji/procedury. W dalszej części postaram się nieco opisać te dwie rzeczy.
Całkiem niedawno postanowiłem, że chciałbym mieć na moim pulpicie zdjęcie pewnej ukochanej osoby. Ustawienie jej zdjęcia jako tapetę nie odpowiadało mi. Postanowiłem, że skorzystam sobie z programu pod KDE - SuperKaramba.
Znalazłem nawet pewien widżet, który dowolny obrazek "wsadzał" w taką fajną ramkę i umieszczał na pulpicie. Całkiem miły skrypt (A-photo), ale strasznie toporny i obciążający mój sprzęt. Nie mogłem nawet zmienić obramowania do obrazka (a było ich kilka), dlatego też postanowiłem, że sam sobie zrobię prosty widżet, który umieści zdjęcie na pulpicie.
Ku mojemu zdziwieniu stworzenie prostych widżetów dla karamby wcale nie jest tak skomplikowane. Wykonanie skryptu, który mnie zadowala zajęło ok. 5 minut i 3 linijki kodu. Wprawdzie to jest prymitywny skrypt (wyświetla jedno zdjęcie, które jest na przezroczystym tle) to mi on wystarcza ;-)
Raz na stronie zlecenia.przez.net znalazłem zlecenie dotyczące stworzenia skryptu, który generuje formularz na podstawie struktury tabeli MySQL. Pomyślałem sobie, że to zadanie jest czymś ciekawym dla mnie i w wolnej chwili postanowiłem napisać prosty (a właściwie prowizoryczny) skrypt, który by wykonywał takie zadanie.
Ostatnio bawiąc się i modyfikując plik /etc/motd zauważyłem, że po restarcie zawartość tego pliku zostaje przywrócona do tej sprzed jakichkolwiek modyfikacji. Problem ten wyjątkowo mnie zdziwił, ponieważ wcześniejsza wersja Ubuntu (Dapper Drake) nie sprawiła mi tego typu problemu.
Za całość jest odpowiedzialny plik /etc/init.d/bootmisc.sh, oraz plik /etc/motd, który jest tylko symbolicznym linkiem do /var/run/motd.
Od pewnego czasu zamarzyło mi się zrobić wyświetlanie jakiegoś tekstu podczas rozpoczynania nowej sesji terminala. Pod Slackiem wyglądało to tak, że zanim pokazało się np. 'radmen@Balrog:~$' to przed tym wyświetlała się dowolna "fortunka" czyli jakiś cytat.
Mi akurat nie zależało na tym, aby pokazywały się losowe cytaty tylko jeden konkretny. Ten cytat umieściłem w pliku /etc/motd (równie dobrze może to być inny plik, np ~/.motd), a potem wystarczyło, że do pliku ~/.bashrc dopisałem coś takiego (na samym końcu):
cat {plik z MOTD}
Jak widać nic wyszukanego, a u mnie działa. Edycja pliku /etc/motd sprawi, że przy logowaniu poprzez np. SSH pokaże się również ta wiadomość.
Na koniec dołączę taki mały obrazek, jak to u mnie wygląda ;-)
Kiedyś widziałem takie różne fajne ficzery na stronach, które pokazywały czy serwer jest online czy offline. Niektórzy próbowali użycie JS, inni mieli swoje sposoby. Ja dzisiaj sobie o tym przypomniałem i postanowiłem przedstawić swój sposób wykorzystujący CSS.
Wczoraj miałem nieco problemów z podpięciem zewnętrznej domeny za pomocą CPanelu, na serwerach webd.pl. Chwilkę się pomęczyłem, natrudziłem, ale wreszcie udało mi się dojść do rozwiązania.
Tak się składa, że w DirectAdmin sprawa podpięcia domeny jest zdecydowanie prostsza, ale przejdźmy do rzeczy.
Normalnie to można skorzystać z zaparkowania domeny. Niestety to rozwiązanie jest kiepskie. Zaparkowana domena będzie prowadzić tylko do katalogu głównego na serwerze i nie można ustawić przekierowania do innego katalogu. Kolejną wadą tego rozwiązania jest to, że zaparkowana domena nie maskuje prawdziwych URL umieszczonych na stronie (przynajmniej tak było w moim wypadku).
W CPanelu mamy również możliwość podpięcia domeny. Służy do tego zakładka "Zarządzanie witryną/Domeny podpięte". Aby z tego skorzystać musimy najpierw ustawić sobie subdomenę. Subdomenę tworzy się w zakładce "Zarządzanie witryną/Subdomeny". Tworzymy tam subdomenę, po czym wracamy do zakładki "Domeny podpięte".
W polu "Nazwa nowej domeny:" wpisujemy nazwę domeny, którą chcemy podpiąć, a w "Nazwa użytkownika/nazwa subdomeny:" wpisujemy nazwę stworzonej wcześniej subdomeny. Jako hasło wpisałem moje hasło, które służy mi do logowania do CPanelu. Właściwie po chwili wszystko już jest ustawione!
Pliki do subdomeny znajdują się w katalogu "/public_html/[nazwa subdomeny]". Myślę, że nie muszę wspominać aby w ustawieniach domeny ustawić odpowiednie przekierowanie ;-]
Dzisiaj musiałem z pewnego PDFa wyciągnąć tekst, który był mi potrzebny. Normalnie to wystarczy, że w KPDF zaznaczę tekst i wybieram "kopiuj tekst do schowka" i po sprawie. Jednak skoro dokument jest zabezpieczony, a ja nie mogę kopiować jego zawartości to co zrobić ?
Sprawa jest całkiem prosta. Wystarczy, że otworzysz tego PDFa i wydrukujesz to pliku PDF (paczka "cups-pdf" pod Ubuntu). Ale zaraz, PDFa drukować do PDFa? Tak! Kawał polega na tym, że zostanie zapisana dokładna kopia dokumentu, z tą różnicą, że nie będzie już zabezpieczeń. Po tej malutkiej sztuczce mogłem moim KPDF kopiować tekst z "wydrukowanego" pliku. Jedynym problemem było to, że część materiału w oryginalnym dokumencie było już zapisane jako obrazek i tego już nie szło zapisać jako tekst ;-) (ok, dałoby radę gdybym użył jakiegoś OCR, ale nie o tym mowa ;p )
ScoreParser.php to klasa napisana w PHP5 na zlecenie pewnej osoby. W jaki sposób działa? Mamy plik XML z wynikami. Klasa ma za odczytywać/dodawać wyniki. Jeśli chodzi o dodawanie, to jeśli wynik jest lepszy (lub równy) od najgorszego to ten ostatni jest wywalany. W dalszej części krótki opis i link do kodu.
To jest mały przykład jak wykonań za pomocą CSS prosty efekt rollover. Czym on będzie się różnić od innych? Normalnie po najechaniu na element zmienia się jago tło. W tym momencie przeglądarka ładuje nowy obrazek będący tłem, a to czasami może zająć troszkę czasu i efekt będzie opóźniony.
Sposób, który opiszę polega na tym, że jest ładowany tylko jeden obrazek. Po najechaniu na element, obrazek tła po prostu przesuwa się. Czyli efekt mamy natychmiastowy.