Po-słowie na każdy temat

czyli programowanie i nie tylko

Archiwizowanie plików w locie

Temat o tyle aktualny, o ile tylko potrzeba nam uzupełnić ściąganie plików o ściąganie zbiorcze, ściąganie całego katalogu i tym podobnych. Cel już znamy, a przyczyna przed nami. „W locie” znaczy tyle, co skompresuj, prześlij i spraw by po archiwum nie było śladu w systemie. Na pewno znajdziecie w Internecie na ten temat wiele wywodów, prób rozwiązań, a nawet rozwiązań. Tyle tylko, że nie każde rozwiązanie można uznać za kompletne, a i niejedno nie działa. Takie uroki globalnej sieci – można wrzucić wszystko, nikt tego nie sprawdza, „cenzuruje” – wolność słowa.

Czytaj dalej…

SEO – o co w tym wszystkim chodzi?

Natchniony endorfinami uraczę Was dzisiaj wiadomościami ze świata SEO. Te trzy literki dla początkujących webmasterów są jak wspomnienia o wojnie – lepiej nie psuć sobie nimi humoru. Ale nie o humorze tu będzie mowa, a tym bardziej nie o początkujących webmasterach. Zamieszczę małe kompendium, stanowiące o sednie tematu.

Generalnie twórca strony (niekoniecznie autor) nie poprzestaje na upublicznieniu portalu. Ba, on wymaga od nas dobrego wypozycjonowania stron. I tutaj sprawa się komplikuje. Z jednej strony pozycjonowanie to oddzielna branża i chcielibyśmy się pozbyć tego przykrego obowiązku. Z drugiej strony, aby wypozycjonować strony, wymagane jest poczynienie określonych działań w procesie projektowania i programowania stron. Z której strony by nie spojrzeć, z tej mamy korzyści. Klasyczny przykład symbiozy. Złoty środek to jednak znajomość procesów SEO w projektowaniu i programowaniu. Zatem do dzieła.

Czytaj dalej…

jQuery EasyUI – datagrid – filtr przedziałowy po dacie

Nie wszystko otrzymujemy w pakiecie, inaczej nie nazywalibyśmy się programistami. Nieprawdaż? Takie wyzwanie stanęło niedawno przede mną podczas „chwilowych” prac z biblioteką jQuery EasyUI. Zadanie było proste – grid. Grid z danymi, grid z filtrami. Wszystko pięknie. Sam grid jest wsparty natywnie biblioteką, filtry obsługiwane są przez rozszerzenie. Filtr daty również istnieje. Ale, no właśnie – filtrowanie daty po przedziale to już miejsce na popis programistów. Nawet nie w całości, jeśli dokładnie śledzimy sieć. Zachęcam to lektury.

O datagridzie przeczytacie tutaj. O rozszerzeniach – filtrowaniu grida – dowiecie się więcej z tej strony. Zmierzamy w dobrym kierunku. Przyglądając się domyślnym operatorom filtrowania, można wywnioskować, że działają one typowo wspierając treść (String) lub liczby (Number). Dociekliwych odsyłam do źródła otwartego kodu – tutaj.

Zatem możemy dodać filtr daty, ale wyłącznie porównując wartość komórki do jednej wskazanej wartości podanej w filtrze. To nas nie interesuje, więc musimy coś dodać. Najpierw chwila poszukiwań rozwiązań po sieci i … mamy jeden traf. Jest rozwiązanie, ale jednak niekompletne. To nie problem. W tym artykule sprawimy, by stało się kompletne.

Czytaj dalej…

Agile – rola klienta i rola programistów

Zwinnie przechodzimy do kolejnego tematu. Trzeba przyznać, że na klientów-ignorantów w branży informatycznej nie można sobie pozwolić i wystrzegać się tego, jak ognia. Podejście mówiące „ja płacę i oczekuję wyników za 6 miesięcy, w międzyczasie wyjeżdżam na 3 miesięczny urlop i generalnie będę niedostępny” jest skrajne. Zgadzam się, ale to na nim bardzo dobrze widać, czy i komu bardziej zależy na realizacji (jeśli w ogóle komuś zależy). Aby zadanie się powiodło klient musi poświęcić nie tylko pieniądze, ale i czas – swój, bądź osoby upoważnionej i przede wszystkim decyzyjnej.
Czytaj dalej…

Agile, czyli lepiej

Tym artykułem chciałbym rozpocząć cykl dotyczący metodyki Agile. Jednak nie będziemy ściśle trzymać się określonych ram. Można liczyć na porównania z innymi (konkurencyjnymi?) metodykami, które wspierają pracę licznych zespołów programistów. Ale czy tylko ich? Sukces, czy porażka projektu zależy nie tylko od programistów. Wiadomo, ojców sukcesu jest zawsze więcej, aniżeli ojców porażki, ale ciągle mówimy o licznych stanowiskach – od analityków, po testerów. Każdy szczebelek tej drabiny, ma swój wkład w rozwój. Czy łatwo wskazać powiązania? Gdzie ich szukać? Na co zwrócić uwagę, by mechanizm pracy działał bez zarzutów? Tutaj z pomocą przychodzą metodyki.

Czytaj dalej…

PhoneGap/Cordova (2) – Ripple Emulator

ripple-logo-squareWitam po świątecznym wypoczynku. Niecierpliwiliście się? Mam taką nadzieję. Zatem do dzieła, a nasze dzisiejsze dzieło zwie się Ripple Emulator. Sama nazwa może nie nakierować osób, które nie miały z nim styczności. Dlatego zacznijmy od opisania narzędzia, które pod swoje skrzydła niedawno wziął Apache. Piękny opis znajdziecie na stronie Apache Ripple, ja jednak pozwolę sobie na parę zdań wstępu. Otóż dobrze zintegrowane środowisko programistyczne, przygotowane do tworzenia aplikacji PhoneGap, wiąże się testowaniem wyniku naszych prac kodowania na wirtualnym emulatorze urządzenia mobilnego i/lub na rzeczywistym urządzeniu – smartfonie lub tablecie. Ekstra, ale czy to jest wszystko, czego można oczekiwać? Jak się domyślacie – nie! Logicznie rzecz ujmując – PhoneGap = Html5+JS+CSS3 – a to nasuwa pytanie: Dlaczego zatem nie można byłoby testować w przeglądarce? I słusznie, wystarczy odpowiednia aplikacja, która pozwoli symulować ekran urządzenia mobilnego i jego specyficzne funkcje. To wszystko zapewnia Apache Ripple, który jest obecnie w wersji rozwojowej (Beta) i znajduje się w inkubatorze. Przydatne, naprawdę przydatne.  Czytaj dalej…

Przygoda z PhoneGap/Cordova (1)

PhoneGap/CordovaZapewne coraz częściej w branży mówi się o frameworku PhoneGap firmy Adobe. Jest w pełni darmowy i umożliwia budowanie „pseudonatywnych” aplikacji na urządzenia mobilne. Brzmi ciekawie? A jakże. Nie musimy bowiem uczyć się Javy (Android) lub Objective-C (iOS) by stworzyć natywną aplikację mobilną. Podejście, jakie przedstawia PhoneGap jeszcze niedawno było szeroko krytykowane przez osoby powiązane z branżą. Jednak czy słusznie, tego nikt obiektywnie nie oceni. W mojej ocenie krytyka była spowodowana:
– rozwojem PhoneGap’a
– niezaradnością i/lub nieznajomością HTML5/JS
– przeświadczeniem, że jest to słabe.

Szerząca się w ten sposób propaganda źle oddziaływała na pewno na osoby/firmy badające rynek, możliwości i zalety Adobe PhoneGap. W myśl mojego przekonania, że „dobry produkt sam się wybroni” mogę przekierować wszystkich na stronę phonegap.com, gdzie możecie sprawdzić ile i jakie aplikacje zawdzięczają swój żywot właśnie temu wrapperowi. Czy warto zainteresować się frameworkiem i jak rozpocząć przygodę z tworzeniem aplikacji z wykorzystaniem PhoneGap’a? O tym w dalszej części artykułu.  Czytaj dalej…

Google Maps + geolokalizacja

Znowuż strudzony codziennością i poirytowany brakiem czasu próbuję stworzyć wrażenie, że nie zaniedbuję czytelników. Spodziewam się, że tylko ciekawy artykuł może temu zaradzić. Zatem zapraszam do lektury. W niej geolokalizacja po IP i temat map.

Google-Maps-icon

Google Maps – czy jest jakiś czytelnik, który nie spotkał się z tą aplikacją Google? Domyślam się, że nie (śmiałe przekonanie). Jednak, jeśli chodzi o wykorzystywanie API w zewnętrznych aplikacjach, to ten procent czytelników maleje.

Z kolei, jeśli chodzi o geolokalizację, to z pomocą przychodzi z pomocą FreeGeoIP. Jest to rozwiązanie darmowe, jedno z nielicznych. Jeśli potrzebujemy dokładniejszych danych geolokalizacyjnych możemy skorzystać opcji płatnych, jakie dają m.in.: IPLigence, IPAddressLabs, IPInfoDB.

Czytaj dalej…

Gource od podstaw

Witam wszystkich po małej przerwie, za którą przepraszam. Niemniej czasami ciężko pogodzić życie zawodowe, prywatne … i bloga. Mimo, że nie stanowiło to problemu dotychczas, teraz w natłoku przygotowań do Świąt, staje się to rzeczywistością.

Jednak do rzeczy. Dzisiaj będzie mowa o pewnym narzędziu, aplikacji, o której zapewne większość z Was nie słyszała. Względnie słyszała, jednak nie praktykowała z nią zbyt długo. Sam natknąłem się przez przypadek. Mowa o Gource! Czym jest to cudo?

Jest to aplikacja konsolowa, która generuje nam wizualizację zmian, zachodzących w repozytorium. Możemy wybrać określoną gałąź (dendrolodzy się skuszą :)) lub domyślnie pozwolić generatorowi przeczytać całego loga systemu kontroli wersji. Powstaje w domyśle piękna animacja – film – przedstawiający zmiany jakie zachodziły z biegiem czasu w projekcie. Wspiera takie systemy kontroli wersji, jak GIT, Mercurial, Bazaar, SVN, CVS. Posiada otwartą licencję GNU GPL v3. Gource pozwala nam cieszyć się wizją powstawania naszego dzieła. Już nie będę się rozpływał na programem 🙂 – zapraszam do dalszej części artykułu, gdzie wraz z przykładami zobaczymy, jak to ugryźć. Czytaj dalej…

JavaScript – CryptoJS

Tym razem mało odkrywczy artykuł. Chociaż dla osób, którzy poszukują sposobu szyfrowania po stronie JavaScriptu może okazać się bardzo pomocny. Rzecz rozchodzi się o bibliotekę CryptoJS, która oferuje nam funkcje skrótu, algorytmy szyfrujące, HMAC i inne. Biblioteka jest darmowa, rozprowadzana na licencji New-BSDco pozwala na dowolne wykorzystanie w aplikacjach internetowych.

Biblioteka udostępnia nam algorytmy mieszające (haszujące, in. funkcje skrótu) takie, jak MD5, SHA-1, SHA-2, SHA-3 oraz RIPEMD-160. Każda z funkcji rozszerzona jest o HMAC, czyli kod MAC z wmieszanym tajnym kluczem pozwalającym utrzymać zarówno ochronę integralności, jak i autentyczności danych.

cryptoPakiet został rozszerzony o funkcję PBKDF2 ściśle powiązaną z generowaniem ciągów kluczowych przy wykorzystaniu soli oraz wielokrotnego zastosowania funkcji skrótu. Nie tyle akurat ta funkcja, w opisywanej bibliotece jest godna uwagi, ale samo podejście do generowania klucza. W obecnych czasach bardzo dynamicznego rozwoju technologicznego wszelkie utrudnienia w umożliwieniu odgadnięcia hasła wejściowego są nie tyle zalecane, co konieczne.

Poza funkcjami skrótu pakiet CryptoJS oferuje również kryptograficzne algorytmy szyfrujące. Na liście w obecnej wersji jest AES, DES, 3DES, Rabbit, RC4, RC4Drop. Czytaj dalej…