2010. január 31., vasárnap

PHP programozókat keresünk

Frissítve: 2010-02-17

Feladat:
* Külföldi ügyfelünk meglévő site-jának továbbfejlesztése 4-5 fős csapat részeként

Elvárások:
* PHP 4 és PHP 5 alapos ismerete
* Valamely PHP MVC framework ismerete
* Angol nyelvtudás

Előny:
* Javascript, CSS ismerete
* SQL tapasztalat

Amit kínálunk:

* Versenyképes jövedelem
* Nemzetközi projektekben való részvétel
* Barátságos munkahely Debrecenben

Jelentkezés:
Bessenyei Zsolt
epam.debrecen kukac gmail.com

2010. január 29., péntek

Norvégia, Stavanger

Norvég ügyfelünknek dolgozó kollégánk Stavangerben járt:









M.I.

Outlook tippek és trükkök

Az alábbiak az Outlook 2007 angol nyelvű verziója alapján íródtak.

A feladatok követésére találták ki az issue/bug tracking rendszereket, de ezek használata előtt nagyobb projekteken gyakran előzetes információ gyűjtés szükséges, és mindaddig email-ben van minden. Ennek kapcsán a klienssel (és a kliens kliensével) folytatott email kommunikáció néha olyan méreteket ölt, hogy problémát jelenthet ezek nyomonkövetése. Pl. tudni, kell, ha valamire még nem válaszoltunk, a minket segítő csapat nem reagált, a kliens nem reagált, a kliens kliens-e nem adott elegendő inputot...

1. Használjuk a "Follow up" funkciót, vagyis tegyünk piros zászlót az email-okra, amire pl. még nem válaszoltunk

2. Hozzunk létre emlékeztetőt a Calendar-ban, főleg ha határidő is van arra, hogy válaszoljunk, vagy mi várunk válaszra adott határidőig

3. Hozzunk létre pl. egy "Lezárt" folder-t, és az ide tartozó email-okat húzzuk át az Inbox-ból

4. Használjuk a "Categorize" funkciót, amellyel színkódokat rendelhetünk az email-okhoz fontosság szerint

5. Különösen fontos esetekben az általunk küldött email-ekban használjuk a "high importance" jelölőt

6. Az általunk küldött email-ekben adjunk meg "due date"-et (csak magunknak, a címzettnek, vagy mindkettőnek)

A due date megadása, és sok más opció is megtalálható a Follow Up -> Flag for recepient menüpontban:


A.P.

2010. január 25., hétfő

Norvégia, Oszló

Norvég ügyfelünknek dolgozó kollégánk Oszlóban járt:














M.I.

Ruby on Rails ORM

Bár még nincs Ruby on Rails-es projekt az irodában, de több érdeklődés is volt már ügyfelek részéről. Most az egyik meglévő ügyfelünk is fontolóra vette egy már futó projekt kiszervezését hozzánk. Így aztán gyakorlásként elkezdődött egy bloghoz hasonló kis webes alkalmazás fejlesztése, ahol lehet regisztrálni, bejegyzéseket írni, mások bejegyzéseit elolvasni, és kommenteket írni a bejegyzésekhez.

Ennek egy részfeladata a 'Legfrissebbek' link, amely megjeleníti a legutóbb kommentelt bejegyzéseket az oldalon. A szokásoktól eltérően ez nem egyszerűen az utolsó néhány komment kiírását jelenti, hanem azon bejegyzések egyedi listáját, amelyeket a legutóbb kommenteltek.

A bejegyzés és a komment osztály között természetesen 1-n kapcsolatot adunk meg:

class Note <>
has_many :comment
...
end

class Comment <>
belongs_to :note
...
end

Az első próbálkozás: JOIN

Note.all(:joins => [:comment], :order => "comments.created_at DESC", :limit => 6)

A Rails a következő lekérdezést generálta ehhez:

SELECT `notes`.* FROM `notes` INNER JOIN `comments` ON comments.note_id = notes.id ORDER BY comments.created_at DESC LIMIT 6

Ezzel az a probléma hogy az eredményben többször is előfordult egy bejegyzés ha több új komment is tartozott hozzá.


Második próbálkozás: DISTINCT

Note.all(:select => "DISTINCT `notes`.*", :joins => [:comment], :order => "comments.created_at DESC", :limit => 6)

Így 6 különböző bejegyzést kapunk, és látszólag megoldottuk a problémát.

Kerestünk egy Rails hosting szolgáltatást: http://heroku.com. A free regisztráció nem ad sok tárhelyet, sem nagy teljesítményt, de egy kis forgalmú blognak megfelelő. Fontos, hogy a remote git repo-ba kell feltennünk a programunkat, és ehhez git kliens is kell, pl. http://code.google.com/p/msysgit/

A fenti megoldás MySQL (5.0) alatt működött, de a Heroku PostgreSQL-t használ, ahol ebben a formában hibás volt a query (olyan mezőre is rendez, amelyet nem kérdez le). Olyan megoldást kerestünk, amely könnyen beilleszthető az ActiveRecord-ba is.


Harmadik próbálkozás: DISTINCT nélkül kérjük le a bejegyzések egyedi listáját, majd kiiratjuk a bejegyzéseket.

comment_list = Comment.all(:select => "note_id, max(created_at)", :group => "note_id", :order => "max(created_at) DESC", :limit => 6)
note_ids = []
comment_list.each { |comment|
note_ids <<>
}
Note.find(note_ids)

A generált lekérdezés már hiba nélkül lefutott PostgreSQL-en is:

SELECT note_id, max(created_at) FROM `comments` GROUP BY note_id ORDER BY max(created_at) DESC LIMIT 6

A fenti kis kódrészletből is látszik, milyen kifejezően írhatunk lekérdezéseket ill. kezelhetünk listákat Ruby-ban.

A Rails egy open-source web framework, amellyel MVC architektúrájú webes alkalmazásokat fejleszthetünk. Bővebben: http://guides.rubyonrails.org/

G.Z.

2010. január 19., kedd

Flash / Web fejlesztőt keresünk

Flash, CSS, HTML, JavaScript fejlesztőt keresünk!

Frissítve: 2010-01-22

Túró Rudi

A legendás epamos ingyenes túró rudi automata már fizetőssé vált, de sokak fantáziáját izgatja a mai napig.

Nos, ha visszaállítani nem is lehet, egy-egy darab azért kerül mostanában a debreceni irodában a havi ellátmány keretében...

2010. január 10., vasárnap

2009 Karácsony

Néhány kép az EPAM Debreceni iroda karácsonyi partijáról: