Ruby on Rails

Trzeba być naprawdę mądrym, by wiedzieć, jak wiele potrzeba, by stać się naprawdę mądrym. Takie mniej więcej słowa usłyszałem od mojego dobrego kolegi z którym współpracuję, no, już od przeszło 4 lat. Miał rację. Ostatnio bardzo upierałem się przy tym że ruby on rails jest nie potrzebne komuś kto dość dobrze zna język PHP (nie napiszę że świetnie, chociaż stworzyłem własnego frameworka z którego jestem dumny), jak się oczywiście okazało – myliłem się.

Ostatnio swojego devloga zapychałem dużą ilością informacji na temat frameworków którymi się jarałem. Tylko… jest z nimi jeden, dość poważny problem. Początki są przyjemne, wchodzisz, programujesz i do czasu do kiedy wszystko działa jest świetnie. Gorzej jeśli pojawią Ci się problemy: w Symfony2 było to Doctrine, w Zendzie zbyt duża dowolność projektowania systemu w której można się dość łatwo zgubić. Oczywiście wszystko da się prędzej czy później zrozumieć, ale niemniej w trakcie samotnej nauki jest to bardzo kłopotliwe i przede wszystkim demotywuje, bo kto chciałby siedzieć przed nie działającym kodem, tylko po to by dowiedzieć się jak zrobić coś, co zajmuje Ci nie wiele czasu, w jeszcze trochę (nie wiele) szybszym tempie, ale w zupełnie inny, do którego nie jesteś przyzwyczajony sposób? Ta, już widzę te tłumy programistów pasjonatów… Ehh, dziewczynę byście znaleźli ;)

A tak poważniej, ja osobiście cenię sobie najbardziej rozwiązania szybkie, łatwe i przyjemne, dlatego wolę dodawać na palcach niż w pamięci :P W każdym razie jeśli można coś zrobić szybko i skutecznie, trzeba z tego korzystać, bo każda godzina Twojej pracy kosztuje, a jeśli w 15 minut potrafisz zrobić to, co inni robią w 45 jesteś od nich 3 razy, nie tylko szybszy, lepszy i sprytniejszy, ale co najważniejsze bogatszy.

Ostatnio więc, zupełnie z nudów, otworzyłem stronę rubyonrails.pl, stwierdziłem że skoro mam ten wolny czas i ochotę, warto poznać coś co staje się ostatnio na tyle popularne, że więcej mówi się o tym niż o starym, dobrym, poczciwym PHP’ie. 15 minutowy tour, pobranie RVM’a, przepisanie kodu i… I’m in love. System działa niesamowicie sprawnie i skutecznie, kilka linijek kodu to kilkanaście linijek PHP’a, a w typowym frameworku, lub własnym, powiedzmy do 2 razy tyle.

Nie wiem czemu, ale ruby bardzo przypomina mi Cake’a, ten framework też był całkiem fajny, ale był pisany w PHP4 co jako tako go wyklucza (magiczne funkcje w klasach php są bardzo przydatne).

Tak czy inaczej po rubiego warto sięgnąć, książki, co prawda może nie najlepsze, ale już do niego są, dokumentacja jest bardzo obszerna a jedyne czego tak naprawdę musimy się nauczyć to cierpliwości, bo czasem naprawdę lepiej poświęcić miesiąc pracy na dokładną naukę nowego i skuteczniejszego fameworko – języka niż przez miesiąc bawić się w to, co w owej technologii można zrobić w ciągu dnia. Tak samo było z js i jQuery, takie samo uczucie mam w przypadku php’a i rubiego. Polecam wszystkim.

Konfiguracja virtual hostów w xampp na mac’u, windowsie i linuksie

Dokładnie 17 godzin do matury, a ja, oczywiście uczę się… Nie tego co trzeba :)

Podobno każdy szanujący się webdeveloper (mam tu na myśli programistów PHP / RoR) powinien wiedzieć w jaki sposób konfigurować apache’a. No to się pośmialiśmy i wracajmy do konkretnej treści artykułu.

Jeśli jesteś jednym z tych programistów którzy nie lubią marnować czasu (tak, wiem że jestem heretykiem) na konfigurowanie serwera i używasz gotowej paczki XAMPP, prędzej czy później przyjdzie do Ciebie problem – jak można na tym skonfigurować virtual hosts. Pokażę jak to zrobić na kilku różnych systemach operacyjnych, zaczynając od swojego maczka.

Konfiguracja serwera w xampp

Zasadniczo konfiguracja na każdym systemie jest taka sama. Pierwsze co musimy zrobić to odpalić plik httpd.conf który na mac’u, podobnie jak i na innych systemach znajduje się w katalogu /ect w głównym katalogu xampp. W pliku tym wyszukujemy lini:

# Virtual hosts
 #Include /Applications/xampp/etc/extra/httpd-vhosts.conf

I usuwamy # sprzed include. Dzięki temu dołączymy do naszej konfiguracji plik /extra/httpd-vhosts.conf w pliku tym dodajmy usuńmy wszystkie dane które znajdują się w pliku i dodajmy:

NameVirtualHost *:80
<VirtualHost *:80>
 DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
 ServerName localhost
 ServerAlias localhost
 ErrorLog "/Users/macbook/dev/logs/2"
 CustomLog "/Users/macbook/dev/logs/2" common
</VirtualHost>

<VirtualHost *:80>
ServerName mementis.localhost
ServerAlias www.mementis.localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/mementis/public"
<Directory "/Applications/XAMPP/xamppfiles/htdocs/mementis/public">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog "/Users/macbook/dev/logs/1"
CustomLog "/Users/macbook/dev/logs/1" common
</VirtualHost>

Czas na opisanie pliku. W sekcjach VirtualHost dodajemy kolejne opcje (podobnie z resztą wygląda sprawa konfiguracji nice-url’s – .htaccess).

  • DocumentRoot to ścieżka w naszym systemie (zależna od systemu, na windowsie zaczynać się będzie od dysku, u mnie na mac’u wygląda tak jak wyżej)
  • ServerName to nazwa naszego serwera, to na samej górze to nasz localhost, bez niego nie będziemy mieli dostępu do naszego serwera, ale bezpośrednio do pierwszego vh (przynajmniej tak było w moim przypadku)
  • ServerAlias czyli alias, prawdopodobnie opcjonalny
  • ErrorLog czyli logi o błędach. Jeśli nasz serwer się nie odpali to jest to wina na 99% z dostępem do pliku (błędy zawsze możemy sprawdzić w logach)
  • CustomLog to samo co error, tyle że custom ;)

Dodajemy kolejne opcje, w moim przypadku jest to ścieżka do lokalnej wersji mementis.pl i to wszystko jeśli chodzi o konfigurację serwera.

Read the rest of this entry »

Nowy projekt, mementis

Zostałem czarnym grabarzem. Ba! Czarnym grabarzem webdeveloperem ;)

Od kilku dni jestem „dyrektorem działu IT” Mementis sp. z o.o. Do moich zadań należeć będzie rozwijanie projektu Mementis.pl, programowanie nowych funkcjonalności, wdrażanie działań pomagających przy zwiększeniu konwersji i nadzorowanie zespołów programistycznych które pracują nad nowymi funkcjonalnościami.

To chyba pierwsza moja, taka bardziej tradycyjna praca, gdyż choć praca zdalna będzie przeze mnie oczywiście wykonywana, ja sam urzędować będę w dużej mierze we Wrocławskim studiu.

Wrocław to niesamowicie piękne miasto, pełne ciasnych uliczek, między którymi znajdują się wielkie kamienice. Z początku można poczuć się lekko przytłoczonym, ale z całą pewnością mogę powiedzieć że zaraz po Krakowie, to najpiękniejsze miasto w Polsce :)

Kilka słów o Zend Framework

Koledzy, nie programiści, powiedzą od razu: „ech, kolejny artykuł z serii Lenkoś no-life”, dlatego w dzisiejszym tekście nie napiszę choćby jednej linijki kodu źródłowego. Jeśli chcesz zacząć zabawę z Zendem polecam stronę z serii ciężki umysł ;) Ciekawa nazwa, ale jakość artykułów jest znacznie ciekawsza, naprawdę polecam.

Co do samego Zenda, bardzo mi się podoba. Spodziewałem się gotowego systemu, ze ściśle ustalonymi katalogami, a tu, proszę, można zrobić to dowolnie jak się chce. Wystarczy napisać plik bootstrappera, podać tam ścieżki, wywołać dispatchera i po sprawie. Większość zadań jakie miałbym jeszcze do napisania w moim frameworku jest już dawno gotowa. ORM jest banalnie łatwy w obsłudze i choć nie jest lekkim narzędziem, korzystanie z czystego MySql’a też jest przyjemne. Wydaje mi się że całkowita przesiadka na Zenda będzie bardzo sensowna.

Licząc zalety gotowego frameworka nie można zapominać o czasie tworzenia strony. Przeciętny system dodawania i edycji danych może zająć na moim obecnym narzędziu około godziny, podczas gdy na Zend, większość rzeczy robiona jest automatycznie i zajmuje około 30 minut. Bardzo mi się to podoba.

Zend ma też dość ciekawie rozbudowaną filozofię, możesz dodać bardzo, bardzo dużo różnych bibliotek i po prostu ich używać, nawet bez obowiązku ładowania, bo tym zajmie się autoloader. Nad Zendem, poza samym Zendem, czyli, jeśli można tak powiedzieć właścicielem PHP, pracują Microsoft, Google i masa innych firm, dostarczających ciekawe API, a ty – nie musisz zupełnie nic robić. Zatem, na ten przykład podłączenie do strony facebooka jest banalnie proste. Całkiem przyjemne, prawda :)

Tags: ,

Efekt motyla w moim życiu

Kilka miesięcy temu, nie wiem, czy już o tym pisałem, czytałem książkę Kamila Cebulskiego – Efekt motyla. Ciekawa lektura, zmusiła mnie do mobilizacji i do przypomnienia sobie o tym o czym czytałem wcześniej, choćby Bogatym ojcu.

Dzisiejszego wieczoru wróciła do mnie ta myśl. Jak mało wystarczy żeby do czegoś dojść. Mało? Cóż, tak naprawdę to o tym będzie dzisiejszy post, no i o tym jak to było w moim przypadku.

Mam 19 lat. Jestem webdeveloperem, dobrym programistą PHP, uważam się za naprawdę bardzo dobrego frontendowca (moi klienci z resztą też tak sądzą). Współtworzyłem fajny startup – ifotos, pracuję nad kolejnymi. Prowadziłem też wraz ze wspólnikiem agencję reklamową. Mam też bardzo fajnie rozbudowane portfolio. Sądzę że jak na 19 to bardzo dużo, ale nie chcę się tutaj chwalić. Chcę opisać dzisiaj coś, co pozwoliło mi na rozwijanie się. Dzisiaj usłyszałem piękny tekst „co dadzą mi gameplaye”. Co? No właśnie, sami zobaczcie jak to było w moim przypadku.

Read the rest of this entry »

HTML 5 – Czyli ile dzisiaj znaczy innowacyjność

Jestem pod wrażeniem, nie ma co opisywać, sami zobaczcie. Bardzo przyjemna i prosta strona, na koniec podany cel. Reklama genialna a technologia prosta jak konstrukcja cepa http://benthebodyguard.com/index-d.php

Polecam ;)

Tworzenie pluginów do wordpress’a od podstaw

Ostatnio miałem ciekawe zlecenie, miałem za zadanie napisać agregator newsów, oparty na stronach wordpress’a tworzonych w opcji multisite. Postanowiłem więc zabrać się za napisanie do tego celu małego pluginu. I choć szczerze mówiąc słowo plugin nigdy jakoś na mnie dobrze nie działało, to zabawa we „wtyczkowanie” wordpressa była naprawdę przyjemna.

Pisanie samego pluginu jest dość proste, wystarczy do tego celu znać PHP’a i mieć opanowane podstawowe zasady tworzenia plugnów. Zacznijmy od ustawień. Wszystkie pluginy jakich używamy powinny się znajdować w katalogu wp-content/plugins. W zależności od tego jak bardzo złożony będzie nasz program możemy stworzyć katalog i nazwać tak samo plik znajdujący się w nim, który będzie dla nas czymś w rodzaju dispatchera, lub po prostu stworzyć plik php w którym będzie nasz kod.

W zależności od tego jakiej opcji użyliśmy w pliku startowym kilka pierwszych linijek powinno wyglądać w ten sposób:

<?php
/**
* @package Nazwa paczki
* @version 0.1
*/
/*
Plugin Name: Nazwa pluginu
Description: Opis, czyli czym twój plugin będzie się zajmował
Author: Twoje Imię i Nazwisko
Version: 0.1
*/
?>

Kodu tłumaczyć chyba nie trzeba, nazwa paczki, opis, twoje imię i nazwisko no i wersja pluginu to wszystko czego potrzebujemy. Więcej informacji na ten temat można znaleźć w opisie z dokumentacji wordpress. Od tej pory plugin (jeśli znajduje się w katalogu wordpressa) powinien być widoczny we wtyczkach. Wszystko bardzo fajnie tylko… No właśnie, tak naprawdę nasz plugin nic jeszcze nie robi :)

Działanie pluginu polega na wywoływaniu funkcji naszego kodu w wywołanych przez Ciebie miejscach. I tak, żeby zadeklarować jakieś działanie, musimy użyć za każdym razem funkcji add_action. Pisząc na końcu w naszym kodzie np. add_action(‘loop_end’, ‘nazwa_naszej_funkcji’); wywołamy zaraz po akcji loop_end (czyli pod koniec wypisywania treści postów / strony) funkcję o nazwie nazwa_naszej_funkcji. Wszystko jak widać jest dość proste i wystarczą tak naprawdę podstawy PHP by napisać prosty plugin. Wszystkie akcje jakie możemy wywołać, a jest ich dość sporo, znajdziemy w dokumentacji.

Nie należy też zapominać o bazie danych. W wordpress za bazę danych odpowiada zmienna globalna $wpdb, którą w każdej funkcji wystarczy wywołać za pomocą global $wpdb; Nie mam jednak zamiaru rozpisywać się na ten temat za dużo, bo całość została pięknie opisana w dokumentacji do której odsyłam was po raz setny, a to dlatego że nie tylko są to oficjalne informacje, ale też dlatego że wordpress codex jest pisany bardzo prostym i przejrzystym językiem, pomimo że angielskim.

Życzę wszystkim szybkiego, lekkiego i przyjemnego pisania waszych własnych pluginów. To naprawdę proste :-)

Read the rest of this entry »

Tags: , ,