Archiwum

Archiwum dla ‘polish’ Kategoria

Inżynierka v0.1

Marzec 2nd, 2010 Dariusz Łuksza 4 comments

Oto pierwszy screenshot z mojej pracy inżynierskiej ;)

Aplikacja posiada już następujące funkcjonalności:

  • Potrafi sprawdzić stan WiFi oraz w razie potrzeby sama go włączyć (nie pytając użytkownika o zdanie … bo po co ? jeżeli się uruchamia taką aplikację wiadomo, że sieć bezprzewodowa musi być włączona ;) )
  • Potrafi sprawdzić status usługi GPS oraz poprosić użytkownika o jej włączenie (ponieważ android może za zgodą użytkownika wysyłać dane lokalizacyjne go Google’a warto żeby użytkownik sam włączył usługę, ewentualnie wyłączył moją aplikację)
  • Wyświetla aktualną pozycję użytkownika (to jest właśnie ta gwiazdka na środku ekranu)
  • Automatycznie co pół sekundy skanuje eter w poszukiwaniu sieci bezprzewodowych.
  • W prawym górnym rogu umieszczona jest licznik aktualnie wykrytych sieci
  • W prawym dolnym rogu umieszczony jest licznik sieci które aplikacja „mniej więcej” zlokalizowała (ew. potrafiła zlokalizować)

Przewidywane funkcjonalności:

  • Automatyczne wycentrowanie mapy na pozycję użytkownika (gwiazdkę)
  • Dodanie możliwości konfiguracji (chociażby możliwość zmiany interwału skanowania)
  • Obsługa przycisku „menu”
  • Zapisywanie wyników aplikacji w „jakimś” formacie
  • Kalibracja aplikacji
  • Algorytm lokalizacji punktów na podstawie sygnału WiFi oraz lokalizacji użytkownika

Teoretycznie powinno już być z górki, gdyż już w miarę zaprzyjaźniłem się z SDK oraz API android’a. Największym wyzwaniem będzie główna część czyli implementacja (raz opracowanie) algorytmu pozwalającego na zlokalizowanie access point’a; jego zarysy już kłębią się mi w głowie z tym, że posiada on jeszcze kilka słabostek.

MacBook – destrukcja

Tak oto wygląda MacBook po tym jak dorwała się do niego para informatyków … osobiście starałem się trzymać w miarę z dala od destrukcji, ale nie odmówiłem sobie wyrwania układu karty graficznej ;>

Na powyższym zdjęciu brakuje kilku istotnych elementów  <!– @page { margin: 0.79in } P { margin-bottom: 0.08in } –>konstrukcyjnych, takich jak:

  • matryca LCD
  • klawisze z klawiatury (teoretycznie zachowałem je sobie w razie „W”)
  • procesor (został wyrwany w celu zrobienia „wisiorka”)
  • układ karty graficznej (podzielił los procesora)
  • karty WiFi (myślałem, że układ Aheros’a który znajdował się w tym mac’u będzie dobrym zamiennikiem dla mojego Broadcom’a; niestety jak się przekonałem natywne wsparcie postaci ath5k dostarcza mniej funkcjonalności niż para bcm + ndiswrapper)

BTW. Dla ścisłości to nie jest mój mac … mój sprzęt ma się dobrze ;)

konstrukcyjnych

Android … here I come ! – inżynierka

Luty 16th, 2010 Dariusz Łuksza 1 komentarz

Siedem semestrów nauki już za mną, czas więc na napisanie pracy inżynierskiej … a czasu zostało nie wiele, bo do końca kwietnia. Tak więc czeka mnie teraz wzmożony okres ;>. Moje ambitne plany zakładają do końca lutego stworzyć aplikację na tyle, żeby można było rozpocząć badania (oczywiście w między czasie aplikacja będzie musiała być ulepszana). Cały marzec mam zamiar poświęcić na przeprowadzenie „badań naukowych”  oraz „napisanie” pracy.

Jeżeli wszystko pójdzie zgodnie z ambitnym planem to w połowie kwietnia powinienem złożyć gotową pracę … zobaczymy jak to wyjdzie.

W pierwotnej wersji moja praca inżynierska miała wiązać się z OpenMoko … niestety semestr walki z JNA nie przyniósł pożądanych efektów dlatego postanowiłem zmienić platformę na „bardziej dojrzałą” (zwłaszcza, że w między czasie nabyłem G1).

Taki obrót sytuacji spowodował, że na chwilę obecną nie posiadam nawet zarysu aplikacji ;>. Ale czym tu się przejmować, nie ma co biadolić czas zabierać się za robotę :D

IMHO bardzo dobrym quick-start’em jest ta dwugodzinna prezentacja. Zawiera ona dość przekrojową wiedzę potrzebną do tego żeby szybko wystartować z projektem; brakuje w niej opisu manifestu aplikacji, poziomów dostępu do danych i sprzętu … to będzie trzeba uzupełnić na własną rękę.

Oprócz tego standardową kopalnią wiedzy na temat androida jest strona developer.android.com, gdzie dostępne są prezentacje z Google I/O oraz inne sponsorowane przez Google jak również dostępna jest pełna dokumentacja.

W tym poście postaram się agregować wszystkie przydatne linki które okażą się pomocne podczas tworzenia aplikacji. Więc jeżeli interesujesz się tym tematem to zapraszam do zaglądania tutaj … podobnie jeżeli Ty posiadasz jakieś interesujące materiały nie krępuj się umieścić link do nich w komentarzu ;)

  • Tutorial pokazujący wykorzystanie widgetu MapView dostępnego w Google APIs (czyli dodatku do standardowego API androida)
  • Szybki TUT jak rozpocząć „zabawy” z GPS’em

Ściągi dla developera

Luty 9th, 2010 Dariusz Łuksza 1 komentarz

Dziś dzięki serwisowi develway.pl który dość nie dawno trafił do mojego  czytnika RSS, trafiłem na serwis devcheatsheet.com na którym to znajdują się  ściągawki (tzw. chetsheet’y) do wielu języków, framework’ów oraz narzędzi developerskich (nie które odnośniki są puste np. do GWT ale może za jakiś czas coś się tam pojawi).

Mnie w szczególności zainteresowały te pozycje:

Miłego ściągania ;>

Anno domini 2009

Styczeń 3rd, 2010 Dariusz Łuksza 2 comments

Rok 2009 szybko przeminął, tak szybko że nawet nie zdążyłem go podsumować przed jego końcem. Mimo że mamy już 3 stycznia 2009 warto spojrzeć wstecz i podsumować co się udało osiągnąć nam w zeszłym roku względem tego co sobie założyliśmy.

Ponad rok temu opublikowałem wpis o bardzo podobnym tytule, tak więc mam swój punkt odniesienia ;) . Z rzeczy które znalazły się na tamtej liście udało się mi tylko wyjść na prostą ze studiami tj. nie mam już żadnych zaległości ani różnic programowych … tylko tyle jest do dość nie wiele. Aktualnie jestem na dobrej drodze, żeby zakończyć semestr 7, niestety jego zakończenie nie jest jednoznaczne z skończeniem studiów, gdyż do tego potrzebna jest jeszcze praca inżynierska oraz jej obronienie, a jej właściwie nie tknąłem w ubiegłym roku. W sprawie studiów jestem realistą, nie uzyskam tytułu inżyniera w lutym 2009, żeby zrobić to w czerwcu 2009 muszę się mocno postarać … będzie trzeba się spiąć i przysiąść.

Pozostałe rzeczy techniczne takie jak python, web2py, GWT, EJB zostały praktycznie nie ruszone. Warto może tutaj wspomnieć o cda2mpc, małym skrypciku do zgrywania ścieżek audio do formatu mpc. Web2py całkowicie zarzuciłem, podobnie EJB, natomiast z GWT cały czas stykam się w pracy nie mam natomiast czasu i energii żeby podłubać w tym prywatnie (to będzie trzeba zmienić).

To tyle w kwestii porównania tego co chciałem zrobić z tym co zrobiłem w 2009 roku. Warto też wspomnieć o tym co nie znalazło się na wspomnianej liście, a było równie ważne (jak nie ważniejsze).

Trzymając się (niej więcej) porządku chronologicznego:

Było też kilka kwestii które wypłynęły w tkacie 2009 a nigdy i nigdy nie zostały zrealizowane, mam tutaj na myśli wspominany już dawno temu artykuł o Spring JMX oraz Spring Acpect który nigdy nie ujrzał światła dziennego. Tak samo nie udało mi się dokończyć w 2009 seryjki wpisów o git’cie (trzecia ostatnia część konfiguracji serwera jest w zanadrzu). Postaram się poprawić w nowym roku ;)

Plany na 2010:

  • uzyskać tytuł inżyniera
  • przeczytać: The Power Of Less – Leo Babauta oraz Richard Koch: The 80/20 Principle: The Secret to Success by Achieving More with Less (nie jest to długa lista ale od czegoś trzeba zacząć ;) )
  • ciągle waham się czy próbować startować w Google Summer of Code 2010, to się rozwiąże z czasem
  • w miarę posiadanego czasu i energii chciał bym też w przyszłym roku zrobić SCJP6 (ten temat się już przewija długi czasu … warto było by go w końcu zrealizować i zamknąć ;) )

To raczej na tyle. Wszystkim czytelnikom pragnę złożyć, trochę spóźnione ale równie szczere i gorące, życzenia noworoczne, oby w nadchodzącym roku spełniały się wasze cele i marzenia, nie ważne jakiego kalibru. Sobie i wam życzę również wytrwałości w realizacji swoich planów ;)

Następne podsumowanie za rok ;>

Spotkanie Czytelników Blogu Alexa 5.12

Grudzień 6th, 2009 Dariusz Łuksza Brak komentarzy

To była bardzo długa sobota. Zaczęła się już w piątek o 22 kiedy to opuszczałem Szczecin, skończyła się dziś (tj. w niedziele) o 7 rano kiedy to wróciłem w miejsce skąd cała podróż się zaczęła. Celem spotkania było wspomniane w tytule Spotkanie czytelników blogu Alexa w Warszawie.

Do wyboru miałem 2 połączenia kolejowe Szczecin Główny -Warszawa Centralna:

  • wyjazd 21:30, 9h w pociągu, przyjazd 8:10
  • wyjazd 22:45, prawie 7h w pociągu, przyjazd 5:30

Bez większego namysłu wybrałem pierwszą opcję, gdyż najbardziej pasował mi czas przyjazdu pociągu, a w ciągu tych 9h można poczytać książkę i (prawie) wygodnie się zdrzemnąć w kuszetce. Podróż jest długa ale lepsze to niż błąkać się po Warszawie od 5:30 ;)

Na miejsce spotkania dotarłem jako pierwszy ;) . Po krótkim przywitaniu z Alexem, na własną prośbę, dostałem zadanie powycinania wizytówek to identyfikatorów … muszę powiedzieć, że obsługa gilotyny nie jest taka prosta na jaką wygalda ;) na szczęście znalazły się osoby które też chciały się o tym przekonać ;) , dzięki temu mogłem zająć się (prawie beztroskim) wkładaniem wyciętych wizytówek w identyfikatory ;) (co udawało się mi znacznie lepiej niż ich wycinanie ;) ).

Spotkanie zaczęło się punktualnie o 11. Zdziwiło to, że nie pojawił się komplet osób, mimo iż jasno w treści zaproszenia było napisane, żeby o nie możności przybycia poinformować organizatora (tj. Alexa) co skutkowało tym, że miejsce dostawała to osoba z listy rezerwowej. Szkoda, że tak się stało gdyż te miejsca mogły zostać wykorzystane przez interesujące osoby dając im sporą wartość dodaną.

Pierwszym punktem programu była autoprezentacja. Każdy dostał ~45 sekund na przedstawienie siebie odpowiadając na 5 pytań pomocniczych. Taki wstęp pozwolił poznać wszystkich uczestników, muszę przyznać że na spotkanie przyjechali na prawdę wyjątkowi i ciekawi ludzie, spora część z nich związana jest z ogólnie pojętą branżą IT (od programistów, przez managerów, po testerów) ale nie zabrakło też reprezentantów innych grup zawodowych (architektów, nauczycieli, artystów itp.). Alex na bieżąco omawiał popełniane przez nas błędy co dawało od razu materiał do przemyśleń i poprawek we własnym wystąpieniu.

Już przed wyjazdem wiedziałem, że mam problem z wystąpieniami publicznymi ale liczyłem na to, że autoprezentacja nie będzie wymagała wyjścia na środek … a tu się okazało inaczej. Wysłuchiwałem bacznie moich przedmówców oraz rad Alexa i na bieżąco „nanosiłem” poprawki na to co miałem w głowie. Kiedy zdecydowałem, że jestem już gotowy ruszyłem śmiało na środek … w czasie tych paru kroków dzielących moje miejsce od środka sali zapomniałem praktycznie wszystko … kiedy stanąłem przed zgromadzonymi cieszyłem się, że nie zapomniałem jak się nazywam i skąd przyjechałem ;) . W moim przekonaniu moja auto prezentacja wypadła dość słabo, brak było kontaktu wzrokowego z audytorium (nie pomogły nawet Alexa gestykulacje, żeby to poprawić :| ). Zapomniałem o najważniejszych rzeczach które mnie wyróżniają spośród innych … Ta „lekcja” była dla mnie bardzo przydatna, wpajana „wrodzona skromność” (uznawana za dobrą cechę) okazuje się bezużyteczna aktualnie, jeżeli nie zainteresujesz swoją osobą (nie ważne czy będzie to osoba rekrutująca, szef w pacy, czy poznana dziewczyna) innych to nie masz co liczyć na to że sami będą chcieli ciebie odkrywać. Skoro problem jest już określony teraz zostaje „tylko” go poprawić ;) zobaczymy co z tego wyniknie ;>

Kiedy już wszyscy się przedstawili nastąpiła przerwa na kawę/herbatę i kuluarowe rozmowy. W gwarze jaki panował przed salą ciężko było prowadzić w/w rozmowy … aczkolwiek sam gwar wskazywał na to, że większości się to „jakoś” udawało, co powodowało ciągłą eskalację problemu przekrzykiwania się na wzajem ;)

Po przerwie zajęliśmy się problemem poczucia własnej wartości. Za dużo miejsca i czasu zajęło by mi opisywanie w całości tej części spotkania. Ogólny zarys jaki pozostał w mojej głowie po niej jest taki, że za niskie poczucie własnej wartości po części odpowiada nasze otoczenie które wyraża swoją „opinię” na nasz temat chcąc poprawić sobie własne samopoczucie. W takich wypadkach Alex proponuje poprosić naszego rozmówce o sprecyzowanie co ma na myśli mówiąc, że jesteśmy „idiotami”, „półgłówkami” itp. gdyż takie opinie mogą nie być poparte żadnymi racjonalnymi powodami. Z drugiej strony to my sami powodujemy u siebie zaniżenie poczucia własnej wartości stawiając sobie zbyt wysoko poprzeczkę, starając się dążyć do tego żeby być idealnym. Nawet jeżeli udało by się nam zostać „ideałem”, to z takim ideałem ciężko się żyje innym. Kolejną sprawą jest to, że przez naszą „wrodzoną skromność” mamy skłonność do bagatelizowania i zaniżania wartości naszych sukcesów/osiągnięć. Często wydaje się nam, że jeżeli sukces nie był trudny w osiągnięciu to nie jest on czymś z czym możemy być dumni, zapominając o tym, że posiadając pewne predyspozycje zrobienie pewniej rzeczy dla nas jest łatwiejsze niż dla innych … ot chociażby dostanie czegoś z górnej półki jest łatwiejsze dla osób wyższych ;) . Z predyspozycjami mentalnymi/psychicznymi czy też zdolnościami/talentami jest podobnie jak z wzrostem, nie każdy jest wysoki.

Następnie nastąpiła dłuższa przerwa na posilenie się … kanapki były wyborne ;>. Gwar przed salą trochę opadł bo część uczestników rozmawiała w sali, tak więc zrobiło się też bardziej przestronnie. Można było dłużej porozmawiać z innymi uczestnikami spotkania ;)

Po tej przerwie zaczęła się dyskusja na temat „sprzedawania się”. W sumie IMHO był to taki szybki pokaz jak aktywnie uczestnicząc w rozmowie, zadając pytania otwarte, można wyciągnąć od rozmówcy potrzebne informacje np. jakie cech powinna mieć osoba starająca się o awans. Wnioskując dalej można też by powiedzieć, że zadając odpowiednie pytania można manipulować (dla niektórych słowo „manipulować” jest w tym kontekście zbyt duże, IMHO pasuje znakomicie) całym tokiem rozmowy i rozmówcą. Alex udzielał masy rad, o co pytać, jak pytać, jak odpowiadać w dodatku na żywo przeprowadził parę warsztatów z uczestnikami gdzie ich rozmowa (nazwijmy ją umownie) „kwalifikacyjną” została potem przez Niego omówiona pod kątem popełnionych błędów, również Alex udzielał rad jak taki błąd poprawić, po czym rozmowa odbywała się ponownie z tym samym scenariuszem w czasie której to błędy powinny zostać poprawione. Porównanie takich dwóch rozmów uświadamia jak ważna jest umiejętność wprawnego używania języka polskiego oraz samo opanowanie Bez opanowania, nawet kiedy pytania jakie trzeba zadać są napisane na kartce, zdarzają się pomyłki; stres bierze górę nad chłodną oceną sytuacji … i cały misterny plan może posypać się jak domek z kart.

Całe spotkanie skończyło się kilka minut przed godziną 20. Po spotkaniu jeden z uprzejmych uczestników podwiózł mnie na dworzec PKP, za co Jemu serdecznie dziękuję ;) . Los tak chciał, że na dworcu spotkałem jednego z uczestników spotkania z którym mogłem porozmawiać w czasie oczekiwania na nasze pociągi ;)

Podróż powrotna trwała 9h, o 6:30 byłem już w Szczecinie … tak to się zakończyła ta wyjątkowa sobota.

Podsumowując całość. Na prawdę cieszę się, że pomimo mojej długiej nie aktywności na blogu Alexa mogłem uczestniczyć w tym spotkaniu. Tych kilka (no kilkanaście) godzin w pociągu na prawdę było warte całej atmosfery, poznanych ludzi i ogromu wiedzy jaką w ciągu kilku godzin tego spotkania zdobyłem. Na prawdę podziwiam w Alexie jego wiedzę, profesjonalizm, charyzmę oraz przede wszystkim to, że potrafił dla nas znaleźć czas oraz mimo przebytej kilka dni wcześniej choroby nie odwołał spotkania. Podziwu godny jest też sposób prowadzenia przez Alexa całego spotkania, trwało ono 9 godzin, a ani przez chwile nie czułem znużenia czas ten zleciał mi szybciej niż nie jeden wykład na uczelni, a czas trwania obu jest nie porównywalnie inny.

Żałuję tego, że nie zdobyłem się na odwagę żeby aktywniej uczestniczyć w spotkaniu oraz lepiej się zaprezentować na początku spotkania … może uda się to kiedyś naprawić ;) .

Zdjęcie większości uczestników jak i podsumowanie spotkania autorstwa Alexa dostępne jest tutaj.

Prywatne repo git’a cz.2

Grudzień 2nd, 2009 Dariusz Łuksza Brak komentarzy

W poprzednim poście de facto mało zajmowaliśmy się git’em … szczerze powiedziawszy to skonfigurowaliśmy tylko lighttpd które to później będzie nam potrzebne do uruchomienia cgit‘a czyli interfejsu www w którym będziemy mogli obejrzeć sobie nasze repo. Dziś za to zajmiemy się instalacją i konfiguracją gitosis.

Czym jest gitosis i o czego będzie nam potrzebne?

Cóż, podobnie jak sam git, gitosis jest zestawem skryptów ułatwiającym prace z repozytorium. Zestaw tych skryptów odpowiedzialny jest za kontrolę dostępu do repo jak i za sam dostęp do niego.

Jak działa gitosis?

„Integruje” się ono z serwerem SSH, „integruje się” to za wiele powiedziane, bo sshd wykorzystywane jest tylko do autoryzacji użytkowników oraz transferu danych z i do repo. Samo gitosis nie uruchamia dodatkowego daemona, jak już wspomniałem korzysta z sshd.

Jak przebiega proces autoryzacji ?

Podobnie jak w GitHub‘ie najpierw trzeba dodać nasz klucz publiczny, żebyśmy mogli zostać z autoryzowani, następnie przy każdej próbie połączenia z repo będzie on wykorzystywany do przeprowadzenia autoryzacji … nie ma w tym żadnej wielkiej filozofii, dorzycamy nasz klucz i wszystko po prostu działa.

Ok, więc może w końcu do sedna … zaczynamy od zainstalowania pakietu gitosis w systemie:

apt-get install gitosis

Proces instalacji sam utworzy w systemie konto użytkownika (standardowy login to gitosis), założy mu katalog domowy (standardowo: /srv/gitosis). Jeżeli bardzo chcemy to możemy to zmienić korzystając ze standardowej komendy usermod dla uproszczenia ja będę się posługiwał standardową nazwą użytkownika. Pozostaje nam tylko inicjalizacja i konfiguracja:

sudo -H -u gitosis gitosis-init < id_rsa.pub

Gdzie id_rsa.pub jest naszym kluczem publicznym używanym przez naszego klienta ssh … fajnie to brzmi ale co to właściwie jest ? ;) Dokładny opis jak taki klucz sobie wygenerować (i co z nim zrobić) znajduje się tutaj. Generalnie powinien być to klucz który będzie identyfikował naszą maszynę z której będziemy się łączyć do repozytorium (tj. klucz prywatny i publiczny powinny być zapisane w katalogu ~/.ssh na twoim desktopie/laptopie, tylko klucz publiczny w celu instalacji go w konfiguracji gitosis powinieneś skopiować na serwer na którym instalujesz repozytorium). Powyższa komęda powinna zainicjalizować repozytorium git/gitosis oraz dodać wskazany klucz publiczny jako klucz administratora. Jeżeli mamy szczęście to po wykonaniu poniżeszej komędy na naszym desktopie/laptopie (tj. na tym na którym znajduje się para ~/.ssh/id_rsa i ~/.ssh/id_rsa.pub):

git clone gitosis@adres_serwera:gitosis-admin.git

Jeżeli powyższa komenda nie wykona się poprawnie (jak to było w moim przypadku) zmuszeni jesteśmy skonfigurować gitosis ręcznie. W tym celu udajemy musimy przeedytować plik /srv/gitosis/.ssh/authorized_keys (tak wiem, że nie powinno się go edytować … ale co nam pozostaje ?) i zmienić „domyślny” login na identyczny z tym podanym w komentarzu do naszego klucza prywatnego (to jest to co podaliśmy za przełącznikiem -C podczas jego tworzenia), wartość klucza publicznego (to jest ten dziwny ciąg znaków za ssh-rsa) oraz na samym końcu ponownie wstawiamy wartość z naszego komentarza. Po wykonaniu tych zmian i ich zapisaniu ponownie próbujemy sklonować repozytorium z konfiguracją (czyli jeszcze raz wydajemy poprzednią komendę) … jeżeli znowu nie wykona się poprawnie … cóż czasem trzeba sobie radzić samemu ;)

Ok, zakładam że w końcu uda się pobrać z serwera konfigurację z serwera … tak, na prawdę gitosis przechowuje swoją konfigurację w formie jednego z repozytoriów. Jest to dość wygodne, gdyż nie wymusza na nas logowania się na serwer celem zmiany konfiguracji (w wypadku dodania użytkownika repozytorium, czy też nowego projektu). W każdej chwili możemy sobie ta konfigurację pobrać, zmodyfikować, „wepchnąć” z powrotem i usunąć ;) jak dla mnie bomba ;) .

Co do samej konfiguracji to składa się ona z 2 rzeczy:

  • pliku z konfiguracją (znajdują się tam definicje repozytoriów, grup i praw dostępu)
  • katalogu z kluczami publicznymi użytkowników

W katalogu keydir/ znajdują się klucze publiczne użytkowników, w postaci:

uzywany_login.pub

najczęściej login ma postać adresu email, więc przykładowy plik dla użytkownika wlodek@luksza.org będzie się nazywał wlodek@luksza.org.pub … jest to niezmiernie skomplikowane, nieprawdaż ;)

W przypadku kiedy chcemy dodać nowego użytkownika bądź repozytorium musimy przeedytować plik gitosis.conf, jego opis można znaleźć tutaj. W przypadku użytkowników należy pamiętać o zgodności nawy użytkownika z nazwą pliku zawierającą jego klucz publiczny. Dodatkowo warto wspomnieć o tym, że dla każdego repozytorium możemy zdefiniować właściciela (parametr owner ;) ) oraz opis (description), są to przydatne parametry zwłaszcza podczas eksploracji repozytorium przy użyciu cgit‘a czy też gitweb‘a.

Kiedy już wykonamy wszystkie zmiany commit’ujemy je do lokalnego repo, a potem wypychamy do głównego:

git commit -a
git push

W ten prosty sposób administrujemy repozytorium git’a zarządzanym przez gitosis ;)

BTW. Chyba szykuje się nam zmiana na miejscu domyślnego repo Eclipse Fundation możliwe, że nowe repo będzie obsługiwane przez git’a, „pierwsze” takie przesłanki można znaleźć tutaj.

Prywatne repo git’a cz.1

Listopad 29th, 2009 Dariusz Łuksza Brak komentarzy

Jakiś czas temu pisałem jak za pomocą git’a i pendirve’a można w łatwy sposób zabezpieczyć się przed utratą projektu. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git’a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje GitHub; mają też rozwiązanie płatne w którym to możemy mieć  prywatne repo, ale ja wole mieć je u siebie ;) ).

Moje oczekiwania od takiego repo są następujące:

  • dostępność do repo z każdego zakątka świata (czyli serwer musi być dostępny szeroko pojętej sieci)
  • możliwość dostępu do repo tylko dla wybranych użytkowników
  • możliwość przeglądania repo z poziomu www
  • bezpieczeństwo stosowanego rozwiązania (https, ssh)

Jakie wybrałem oprogramowanie ?

  • systemem bazowym będzie Debian (znany, lubiany i standardowy linux)
  • gitosis (prosty soft do hostowania repozytorium git’a z równie prostą kontrolą dostępu, IMO rozwiązanie w sam raz do moich potrzeb)
  • lighttpd (mały i szybki httpd)
  • mod_ssl oraz mod_auth do wyżej wymienionego httpd
  • cgit odpowiednik gitweb’a ale moim zdaniem ładniejszy i bardziej przejrzysty

We własnym zakresie trzeba zadbać o system bazowy, oraz jego konfigurację ;) . Zakładam, że Debian jest już zainstalowany, skonfigurowany, zabezpieczony oraz podpięty do sieci.

Zaczynamy od instalacji i konfiguracji lighttpd

apt-get install lighttpd apache2-utils

Pakiet apache2-utils będzie nam potrzebny do wygenerowania hash‘a hasła potrzebnego do mod_auth (swoją drogą system pakietowania debiana coraz bardziej mnie zadziwia … nie rozumiem po co w zależnościach do tego pakietu znajduje się libmysqlclient …). Po zainstalowaniu włączamy dwa interesujące nas moduły:

lighttpd-enable-mod auth
lighttpd-enable-mod ssl

Oraz przechodzimy do konfiguracji zarówno httpd jak i modułów. Zaczniemy od mod_auth, czyli edytujemy pliczek /etc/lighttpd/conf-enabled/05-auth.conf, w którym to wybieramy backend (czyli algorytm szyfrowania haseł oraz miejsce ich zapisu) oraz konfigurujemy miejsca do których dostęp będzie strzeżony hasłem. Po modyfikacjach plik konfiguracyjny powinien wyglądać mniej więcej tak:

## Authentication for lighttpd
##
## Documentation: /usr/share/doc/lighttpd-doc/authentication.txt.gz
##                http://www.lighttpd.net/documentation/authentication.html
server.modules                += ( "mod_auth" )
# htdigest jest najmocniejszym dostepnym "algorytmem" szyfrujacym
auth.backend                   = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/lighttpd-htdigest.user"
 
auth.require                 = ( "/" =>
                                     (
                                       "method"  => "digest",
                                       "realm"   => "secure content",
                                       "require" => "valid-user"
                                      )
                                )

Opcja auth.require zawiera tylko jeden element, którym jest root serwera httpd, czyli dostęp do dowolnego pliku na serwerze będzie chroniony hasłem. Warto tutaj wspomnieć, że hash hasła zostanie posolony wartością w realm, dzięki temu uzyskujemy prosty mechanizm kontroli dostępu (tj. gdybyśmy mieli dwa zasoby z różnymi wartościami w realm, każdego użytkownika który powinien posiadać dostęp do obu powinniśmy dodać osobno). Teraz wystarczy tylko dodać użytkownika:

htdigest -c /etc/lighttpd/lighttpd-htdigest.user 'secure content' user_name

Po wydaniu tej komendy zostaniemy poproszeni o podanie oraz potwierdzenie hasła dla tego użytkownika.

Po skonfigurowaniu mod_auth przechodzimy do konfiguracji mod_ssl, w tym celu edytujemy /etc/lighttpd/conf-enabled/10-ssl.conf. Ja zdecydowałem się udostępniać usługę http tylko na porcie 443 z szyfrowaniem (czyli popularny https ;) ), więc w konfiguracji mod_ssl wskazałem na którym dokładnie adresie IP oraz na jakim porcie ma nasłuchiwać daemon; plik konfiguracyjny wygląda mniej więcej tak:

## lighttpd support for SSLv2 and SSLv3
##
## Documentation: /usr/share/doc/lighttpd-doc/ssl.txt
##      http://www.lighttpd.net/documentation/ssl.html
 
#### SSL engine
$SERVER["socket"] == "111.222.3.4:443" {
ssl.engine                  = "enable"
ssl.pemfile                 = "/etc/lighttpd/server.pem"
}

następnie generujemy certyfikat self-signed dla naszego serwera:

openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

Który to kopujemy do /etc/lighttpd/server.pem.

Ostatnią częścią konfiguracji lighttpd będzie ogólna konfiguracja serwera, czyli edytujemy plik
/etc/lighttpd/lihttpd.conf. W którym to odkomentowujemy tylko linie:

server.bind = "localhost"

Spowoduje to, że port 80 zostanie otwarty tylko na interfejsie loopback, co w konsekwencji prowadzi do tego, że wszystkie połączenia (z sieci) do portu 80 będą odrzucane (za to akceptowane będą połączenia do portu 443, zgodnie z konfiguracją w pliku 10-ssl.conf).

Na razie to wszystko w kwestii konfiguracji lighttpd, wrócimy jeszcze do niej podczas konfiguracji cgit’a. W następnej części zajmiemy się konfiguracją gitosis.

PS. Tutaj jest część druga.

Po Szczecińskiej Konferencji OpenSource

Listopad 23rd, 2009 Dariusz Łuksza Brak komentarzy

W dniach 20-21 listopada odbyła się druga Szczecińska Konferencja OpenSource (de facto pierwsza edycja nazywała się: Szczecińska Konferencja OpenSolaris ale to już jest w kwestii organizatorów ;) ). Ogólna tematyka konferencji w większości poświęcona była OpenSolarisowi, pomiędzy prezentacje o zonach, zfs (… czyli to co jak powiedział Damian Wojsław: każda porządna konferencja o OpenSolarisie powinna posiadać) itp. wpleciono dość zgrabnie aspekty prawne dotyczące OpenSource, Sambe4, systemy biblioteczne, XEN’a, Firefoxa i PostrgreSQL.

Pierwszego dnia kulturalnie się spóźniłem kilka minut i ominą mnie początek pierwszej prezentacji o OpenSolarisie, na szczęście na pozostałych prezentacjach byłem już obecny w całości, tak więc po kolei. Druga prezentacja Piotra Jasiukajtisa bardzo ładnie prezentowała wykorzystanie mechanizmów które są dostępne tylko w *Solarisie (należy pamiętać o tym że wszystkie omawiane technologie istnieją również w innych systemach ale nie zawsze są odpowiednikami 1 do 1 w stosunku do prezentowanych). Ogólnie prezentacja bardzo przypadła mi od gustu, gdyż w przeciwieństwie do tego co było rok temu, pokazywała jak praktycznie są wykorzystywane zony, zfs i mechanizm wirtualizacji. Dla mnie jako osoby która na co dzień nie ma styczności z *Solarisem nie jest ważne to jak skonfigurować zfs’a, zone czy cokolwiek innego, tylko gdzie to można użyć, jakie problemy rozwiązać. Dzięki tej prezentacji wiem, że mechanizm snapshot’ów w zfs’ie na prawdę jest przydatny oraz jest praktycznie jedynym rozwiązaniem jeżeli chodzi o backup dużej porcji danych które się cały czas zmieniają. To samo dotyczy zon. Takie podejście do mnie trafia ;)

Kolejna prezentacja nt. aspektów prawnych Rafała Malujdy była równie cennym doświadczeniem. Przede wszystkim dla tego, że w końcu zobaczyłem że OpenSource nie tylko dostrzegany jest przez środowisko IT oraz pasjonatów/hobbystów informatyki ale też przez inne grupy zawodowe oraz że jest on postrzegany jako równie interesujący. Cieszę się bardzo, że ten temat został poruszony na tej konferencji oraz, że prelegent jest ze Szczecina ;) .

Samba 4 … przed tą prezentacją wiedziałem tylko że jest jakaś samba, do czego służy oraz jak mniej więcej powstała. Po prezentacji TomLee’go (tj. Tomasza Woźniaka) wiem dużo więcej o ciekawej (moim zdaniem) historii tego projektu, o tym jak jest rozwijany … a co konkretnie będzie w kolejnej wesji to szczerze mówiąc jest dla mnie miej istotne ;)

RBAC i OpenSolaris, czyli dostęp oparty o role w w/w systemie. Prezentacja rzeczowa i przyjemna, szkoda tylko że ograniczona tylko do OpenSolarisa … rozumiem, że tam jest to zrobione najlepiej ale moim zdaniem warto by też wspomnieć więcej o innych systemach i dostępnych tam implementacjach. AFAIK i nie czegoś nie pomieszałem to dla linuxa dostępne są trzy implementacje RSBAC, SeLinux, grsecurity … to takie moje małe wtrącenia jako sympatyka linuxa ;)

Drugi dzień konferencji również obfitował w wykłady o OpenSolarisie które poruszały już bardziej zaawansowane tematy które jakoś nie specjalnie mnie … aktualnie programistę, a nie admina … porwały ;) . Za to wszystkie tematy nie związane z OpenSolaristem były bardzo ciekawe ;)

Wegług kolejności pierwszy był Firefox prezentowany przez Roberta Partykę . Muszę przyznać, że nie wiedziałem iż ta przeglądarka posiada takie możliwości. Tak wiem, spora ilość pluginów może o tym świadczyć. Prezentacja była bardzo rzeczowa (aczkolwiek można by trochę popracować nad jej kolorystyką i wielkością czcionki ;) ), na prawdę zrobiła na mnie spore wrażenie … do tego stopnia, że przesiadłem się ponownie z Opery na Firefox’a. Swoją drogą jestem ciekaw dlaczego ktoś jeszcze nie pokusił się (a przynajmniej nic mi o tym nie wiadomo) o pisanie plugin’ów do firefox’a z wykorzystaniem GWT … przecież to JavaScript, a w Javie przecież jest wygodniej ;)

Ostatnio mognym tematem jest wirtualizacja … może z powodu kryzysu w którym to tnie się koszty ;) . Nie mogło jej zabraknąć również na tej konferencji, najpierw Marcin Weksznejder mówił o wirtualizacji pod OpenSolarisem, potem Sebastian Szary mówił o XENie. Prezentacja mocno ukierunkowana była na praktyczne wykorzystanie tej technologii. O wirtualizacji z wykorzystaniem XEN’a mówił na GeeCon’ie oraz JAVArsovii mówił również Waldemar Kot … w sumie były to prezentacje o wirtualizacji JVM, a nie całego systemu operacyjnego ;)

Hitem całej konferencji okazała się prezentacja Piotra Wejmana o systemie bibliotecznym … głównie dzięki niesamowitemu prowadzącemu który w poprowadził tą prezentację (mógł bym porównać poziom tej prezentacji do poziomu Jacka Laskowskiego). Prezentacja ta była kolejnym dowodem, że oprogramowanie OpenSource coraz aktywniej bierze udział w walce rynkowej oraz, że coraz częściej jest postrzegane jako właściwy wybór/kierunek. O samej aplikacji Koha nie będę się rozwodził, jedyne co mogę napisać to to, że na podstawie zaprezentowanych screenshot’ów rzeczywiście bije na głowę zamkniętą konkurencję.

Pod przewrotnym tytułem kolejnej prezentacji „Słonie w akcji”, poprowadzonej znowu przez Roberta Partykę ukrywała się PostgreSQL. Kolejna świetna prezentacja na wysokim poziomie. Dzięki tej prezentacji wiem jak sporo jeszcze nie wiem o PostgreSQL oraz, że w miarę możliwości będę wybierał ten system bazodanowy, a nie MySQL’a ;) . Robertowi należą się spore brawa za przygotownie dwuch na prawdę dobrych i interesujących prezentacji, jestem pod wrażeniem jego wiedzy oraz umiejętności jej przekazania jak i umiejętności prowadzenia prezentacji … na prawdę jest z kogo brać przykład ;)

Ostatnia prezentacja dotyczyła wykorzystania wolnego oprogramowania w firmie. TomLee przedstawił kilka przykładowych scenariuszy oraz listę zamienników dla płatnych aplikacji … szkoda tylko, że na audytorium nie było ludzi którzy mogli by z tej wiedzy skorzystać … cóż, są sobie sami winni …

Po konferencji odbyło się nie oficjalne wspólne spotkanie przy nie pasteryzowanym piwie w PetitParis w czasie którego poruszane były przeróżne tematy ;) kto nie był ten niech żałuje ;P

Cieszę się, że w Szczecinie odbywają się takie imprezy. Jest to już druga konferencja informatyczna odbywająca się cyklicznie w tym mieście (pierwsza jest Java4People ;) ), mam nadzieje że za rok będę mógł powtórzyć to zdanie (tj. że obie konferencje się znowu odbędą ;) ). Jest jedna rzecz która mnie trochę martwi … słaby sponsoring tych imprez, nie wiem dlaczego Szczecińskie (i chyba nie tylko firmy) nie widzą w tym jakiejś formy promocji, czy też kontaktu z nowymi pracownikami (warto tutaj wspomnieć, że na JAVArsovi organizowana była wśród uczestników rekrutacja …)

BTW. Trójmiejska Grupa Użytkowników Linuksa (TLUG) organizuje zimowisko linuksowe w Pucku, można się rejestrować pod adresem: http://zimowisko.linux.gda.pl/. ;) ;>

PS. Z góry, chcę przeprosić jeżeli przekręciłem czyjeś nazwisko, gdyby ktoś coś takiego się jednak zdarzyło proszę o informacje … tak samo jeżeli ktoś chciał by podlinkować swojego bloga ;)

SCJP6 c.d.

Listopad 16th, 2009 Dariusz Łuksza 2 comments

Ponad rok temu wspominałem tutaj o blogu Mariusz Lipińskiego w kontekście SCJP. Od wspominanego wpisu minął ponad rok. W tym czasie Mariusz zdążył uzyskać certyfikat, a nawet opublikować dwa wydania własnej książki (pierwsze jest całkowicie darmowe, a drugie można kupić tutaj), dodatkowo na łamach bloga krótko opisuje każdy rozdział z Sun Certified Programmer for Java 5 Stury Guide.

Ja w tym samy czasie próbowałem moich sił z  Sun Certified Programmer for Java 6 Stury Guide (SCJP6SG), cóż ukazał się dokładnie jeden post o tym temacie (w sumie to nie ma się czym chwalić :| ), a natłok obowiązków związanych ze studiami i pracą nie pozwolił mi kontynuować tą serię wpisów.

Wspomniałem już wcześniej o książce Mariusza w formie drukowanej, dziś właśnie dotarł do mnie jeden jej egzemplarz. Objętościowo jest on nie do porównania z SCJP6SG. Jeszcze nie zagłębiałem się dokładnie w Przygotowanie do certyfikacji SCJP6 ale zakładam, że jest to odpowiedni wstęp jak i repetytorium przed i po zapoznaniem się z SCPJ6SG.

W tym roku nie ma już raczej szans żebym przystąpił do egzaminu … ale za to postaram się to zrobić w przyszłym ;)