Mar 5 2010

Rails Template

Idąc za ciosem postanowiłem wydłubać własny szablonik do startu z aplikacjami. Jest on dostępny na githubie i można śmiało z niego korzystać.
Co robi szablonik?

- inicjuje repozytorium Git, dodaje niektóre miejsca i pliki do ignore’a po czym zatwierdza resztę.

- instaluje platformę testową RSpec, RSpec-Rails, Cucumber, Factory_Girl i Webrat.

- instaluje authologic i declarative_authorization,

- tworzy model do dodawania artykułów oraz cruda do niego.

- tworzy model użytkownika, ról  i sesji

- tworzy widoki dla artykułów, panel logowania i edycja profilu.

- tworzy dwie początkowe role: user i admin.

- nadaje uprawnienia:

- gość może czytać artykuły, założyć konto i się zalogować,

- użytkownik może się wylogować, dodać artykuł, edytować lub usunąć własny artykuł, edytować swój profil,

- admin może wszystko.

Planuję jeszcze nad kilkoma dodatkami, ale nie wiem jeszcze dokładnie co i jak. Muszę to przemyśleć. Jak na razie szablon tworzy to, co w prawie każdej aplikacji istnieje. Modele można rozbudować wg własnych potrzeb ale mamy już dobry punkt początkowy.

Zapraszam do testowania i wyrażania swoich uwag.


Dec 12 2009

Automatyczny start czyli Rails Templates

Jeżeli tworzymy kilka aplikacji w ruby on rails, to przeważnie początkowe etapy są do siebie bardzo podobne. Np. inicjalizacja kontroli wersji (np. w sposób jaki jest opisany w poprzednim artykule), instalacja ulubionych pluginów, usuwanie zbędnych plików, Czy też inne operacje. Na szczeście do pomocy przychodzą nam Templates, które zostały wprowadzone w rails 2.3. Teplate to nic innego niż plik ruby, w którym wpisujemy komendy w przygotowanym do tego języku domenowym (DSL). Po przygotowaniu takiego szablonu inicjujemy projekt rails z parametrem -m ścieżka_do_szablonu.rb. Rails od razu po wykonaniu inicjacji projektu od razu uruchomi podany plik.

rails my_app -m ~/szablon_startowy.rb

tak samo jak URI, możemy uzywać URL:

rails my_app -m http://marioosh.5dots.pl/szablon.txt

(powyższy plik nie istnieje więc nie testujcie ;) )
ostatnim sposobem jest inicjacja szablonu przed odpowiednie zadanie rake z ustawienie zmiennej LOCATION:

rake rails:template LOCATION=~/szablon_startowy.rb

› Continue reading


Dec 11 2009

Objęcie kontrolą wersji Git nowej aplikacji Rails

Za każdym razem, gdy rozpoczynam pracę z projektem, muszę skonfigurować Git, aby repozytorium nie zawierało zbędnych plików.
Cała operacja jest wykonywana w kilku krokach, gdzie pierwszym z nich będzie stworzenie nowej aplikacji rails na naszym komputerze. Następnie musimy zaiinicjować kontrolę wersji.


$ rails my_app
$ cd my_app
$ git init
$ git status
...
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# README
# Rakefile
# app/
# config/
# db/
# doc/
# log/
# public/
# script/
# test/
› Continue reading


Dec 10 2009

Nowe trendy programowania

Patrząc na rynek pracy, a obecnie mam taką sytuację zawodową, że patrzeć muszę, zauważyłem pewną nową tendencję. Otóż jeszcze kilka lat temu, programistów szukało sie po języku programowania, w którym potrafi pracować. Szukało się programistów Java (ew. J2EE), PHP, C++ i innych. Po kilku latach, pojęcie języka programowania stało się zbyt ogólne, więc ogłoszenia stały się bardziej specjalistyczne, uzywano nazw frameworków czy technologii bezpośrednio z tym językiem związane, np. widziałem takie warunki: Struts, JSF, Hibernate, JPA, J2ME (to javowe), albo takie: CakePHP, Zend, Symphony, Smarty (to php-owe).

W sumie nic dziwnego, języki rozwijają się, dołączone do nich biblioteki rosną w postępie logarytmicznym. Poza tym znajomość języka to raz, a znajomość konkretnego frameworka to dwa. Dając ogłoszenie o programisty JSF jakoby normalny staje się fakt, że potrafi on Javę samą w sobie.

Można by było przypuszczać, że obecny trend zmierza do jeszcze większej specjalizacji. Jednak tak nie jest. Znajomość frameworka czy narzędzia nadal pojawia się w ogłoszeniach. Jednak oprócz nich pojawiają się wymagania dotyczących technologii nie związanych bezpośrednio z językiem, np. AJAX. Przecież możemy wykorzystywać go zarówno w aplikacjach javowych, php-owych, rails-owych czy też innych. Poniżej przedstawiam listę nowych wymagań stwianych w ofertach pracy. Wg mnie technologie te staną się w ciągu kilku najbliższych lat bardzo ważne, więc zapoznanie się znimi już dziś może nam ułatwić poszukiwania pracy.

1. Widgety, Gadgety

Wiele stron i mechanizmów umożliwia wykorzsytywanie tych mini aplikacji. Widgety to jakby aplikacje wewnątrz innych aplikacji, które potrafią żyć własnym cyklem nie ingerując w mechanikę strony. Za to dodają witrynie wiele nowych finkcjonalności, których napisanie zajęłoby nam sporo czasu.

2. Integracja z serwisami społecznościowymi

Serwisy społecznościowe rosną jak grzyby po deszczu. Jedne bardziej popularne drugie mniej. Jedne oferują więcej usług i możliwości inne odwrotnie. W każdym razie już coraz mniej witryn można spotkać, które nie mają chociaż jednej malutkiej integracji z takim portalem społecznościowy. Wiele takich integracji z resztą polega na dodaniu do strony widgetu wspomnianego w punkcie pierwszym. Przeglądając witrynę spójrzmy, czy nie ma tam linka do takich serwisów jak Twitter, Blip, Flakier, Wykop, Dig-it, delicious czy też innych.

3. SEO

SEO jest ważnym elementem pozycjonowania strony więc wiedza na ten temat jest coraz bardziej wymagana.

4. Aplikacje mobilne IPhone & Android

iPhone zrewolucjonizował rynek telefonów, uczynił rewolucję, która podłączyła wielu użytkowników do internetu. Przeglądamy strony jadąc tramwajem, słuchamy radia internetowego, czy też gramy w gry online. Oferty pracy dla programistów iPhone’a czy Androida pojawiają się coraz częściej. Moim zdaniem Android będzie się rozwijał szybciej bo nie jest blokowany jak to ma się z telefonem od Apple.Dostęp do tej technologi jest łatwiejszy, więc rynek będzie szedł w tą stronę.


Dec 3 2009

Palarnia

Myślę, że taki fresk na suficie palarni daje wiele do myślenia ;)
Palarnia


Nov 4 2009

Mysql i Snow Leopard

Po aktualizacji systemu do MacOS X 10.6 (Snow Leopard) zauważyłem, że nie startuje moja baza danych Mysql. Sprawdziłem ręcznie co jest nie tak:

cd /Library/StartupItems/MySQLCOM
sudo ./MySQLCOM start
Could not find MySQL startup script!


aha! Poszedłem więc do /usr/local i zrobiłem link symboliczny
sudo ln -s mysql* mysql
Po ponownej próbie uruchomienia bazy danych otrzymałem komunikat:
Starting MySQL database server
Czyli wszystko ok.


Nov 4 2009

Kopiowanie z/na konsolę

Podczas pracy w terminalu, czasem zdaża mi się, że wynik, który otrzymuję muszę sprawnie przenieść do jakiegoś programu okienkowego. W przypadku dłuższych listingów przekierowywuję output na plik tekstowy i z niego potem odczytuję w drugim programie. Pracując na MacOS X znalazałem ułatwienie mojej pracy. Programy pbcopy i pbpaste odpowiedzialne są za wklejanie do i z pamięci podręcznej. Przekierowując output podczas np. listowania folderu na pbcopy mamy dostęp do tego listingu używając zwykłej fukncji ‘Wklej’ dowolnego okienkowego programu.


Oct 27 2009

Java, TMPDIR i MacOS X

Prawie cały dzień spędziłem na bezefektywnej próbie uruchomienia starego jBossa wygrzebanego z backup’u na moim Macu. Po dłuższych analizach znalazłem przycznę. Otóż, podczas startu, serwer ustawiał zmienną java.io.tmpdir. W systemie MacOS X w takim momenie zostaje utworzony nowy folder w /private/var/folders.Problemem jest to, że w nazwie tego folderu występują znaki plus +, które przez niektóre mechanizmy (np. Xerces) są traktowane jako spacje. Obejściem tego problemu jest ustawienie parametru java.io.tmpdir w JAVA_OPTS. JAVA_OPTS="-Djava.io.tmpdir=/tmp/". Zmienna ta w przypadku serwera jBoss jest ustawiana w pliku run.conf, więc należy go edytować i dopisać co podałem.


Aug 20 2009

Praca ze zdalnym repozytorium w GIT

Jak obiecałem w jednym z poprzednich artykułów opiszę jak wygląda praca z projektem za pośrednictwem zdalnego repozytorium.

Większość projektów nie jest prowadzona samodzielnie, jest w niego zaangażowane kilku (-nastu, -dziesięciu) innych programistów. Każdy z nich może lokalnie prowadzić własną ścieżkę, ale z doświadczenia wiem, że przydaje się jedno wspólne repozytorium. Punkt centralny dla naszej pracy.

› Continue reading


Aug 19 2009

Spring jest GIT

Zgodnie z zapowiedziami projekt DM Server prowadzony przez SpringSourcezostał zmigrowany z Subversion na GIT. Jest to już drugi projekt tej grupy, który przeniósł się na ten system kontroli wersji (pierwszy to Grails). › Continue reading