2013. március 29., péntek

Nyomtass magadnak saját konzolt ...

Nyomtass magadnak saját konzolt ...

http://www.thingiverse.com/thing:66411/
http://www.thingiverse.com/thing:66411/

Új Facebook-os mém japánból ... Szerintem eddig talán a legötletesebb ...

Új Facebook-os mém japánból ... Szerintem eddig talán a legötletesebb ...

Originally shared by Robert Cartman

Szégyen, de ez tetszik XD
http://www.buzzfeed.com/ryanhatesthis/if-this-is-what-the-japanese-harlem-shake-looks-like-america

Burke Holland gets to the core purpose and mental model behind AngularJS Directives in his article on the Adobe...

Burke Holland gets to the core purpose and mental model behind AngularJS Directives in his article on the Adobe Developer Connection site.
http://www.adobe.com/devnet/html5/articles/angularjs-directives-and-the-computer-science-of-javascript.html?utm_source=javascriptweekly&utm_medium=email

Szép ... Érdemes a forrást is böngészni, lehet belőle sokat tanulni.


Szép ... Érdemes a forrást is böngészni, lehet belőle sokat tanulni.

Originally shared by Simple AngularJS RSS Reader

Simple AngularJS RSS Reader

This is a simple (really simple) RSS reader with AngularJS  and Google's Feed API and currently the main project is hosted on Github. If you want you can save and make your own RSS reader :) No server-side PHP, Ruby, Java or Node.js... Nothing ^^.

http://yitsushi.github.com/SimpleAngularRss/

Currently:
 - Add feed
 - Update feed
 - Read articles
 - Share with Google+ Interactive Posts

Next:
 - Delete feed
 - Delete old items
 - Sync with Google Drive (or other online service)
 - More makeup (but not too much)
 - Publish as Chrome extension
 - More mobile friendly view :)

So enjoy :)

#javascript   #html   #css   #angularjs   #rss   #rssreader   #onepage   #github

Lassan megéri Dart-ban írni a JavaScript kódokat, mert jobb JavaScript kódot generál, mint ha eleve JS-ben írtuk...

Lassan megéri Dart-ban írni a JavaScript kódokat, mert jobb JavaScript kódot generál, mint ha eleve JS-ben írtuk volna.

Originally shared by Dart

dart2js maintains Dart's semantics, but that doesn't stop it from producing smaller and faster code in some cases. Read more to see plenty of code samples of how dart2js generates JavaScript.

#dartlang  
http://news.dartlang.org/2013/03/why-dart2js-produces-faster-javascript.html

2013. március 28., csütörtök

Nem volt elég a hekkelés, már saját Android-ja is van a Facebooknak

Nem volt elég a hekkelés, már saját Android-ja is van a Facebooknak ... Így már valóban jöhetnek a Facebook telefonok.

Originally shared by TechCrunch

Android users (who use Facebook), you ready?
http://techcrunch.com/2013/03/28/facebook-android-phone/

Ez jól hangzik.

Ez jól hangzik. Igazából eddig is volt erre lehetőség, de így már minden 5.5 feletti PHP verzióban számíthatunk rá. Mondjuk aki igazán gyorsan szeretne PHP-t futtatni, annak még jobb alternatíva a Facebook HipHop-jának használata (https://github.com/facebook/hiphop-php), ami natív kódra fordítja a PHP kódunkat, vagy még talán ennél is jobb a Caucho féle Quercus (http://quercus.caucho.com/), ami Java alkalmazás szerveren képes PHP-t futtatni. Így a mellett, hogy a PHP kód Java bájtkódra fordul, kihasználhatjuk a Java által nyújtott további előnyöket is, mint a connection pool, ORM és cache megoldások, a kódot Java kóddal, vagy saját libekkel bővíthetjük, clusterezhetjük az alkalmazást, stb.

http://prog.hu/hirek/3188/Vegre+beepitett+opcode-cache+fog+kerulni+a+PHP-be.html
http://prog.hu/hirek/3188/Vegre+beepitett+opcode-cache+fog+kerulni+a+PHP-be.html

Néhány teljesítmény teszt különböző web framework-ökkel.

Néhány teljesítmény teszt különböző web framework-ökkel. Ami szerintem leginkább érdekes belőle, hogy a tiszta java servlet milyen jól teljesít, és minden tesztben rávert pl. node.js-re.  

http://www.techempower.com/blog/2013/03/28/framework-benchmarks/
http://www.techempower.com/blog/2013/03/28/framework-benchmarks/

Na, ez érdekes. Ingyen energiával nyeri Orbán a következő választást ...

Na, ez érdekes. Ingyen energiával nyeri Orbán a következő választást ...

http://index.hu/gazdasag/2013/03/28/szeles/
http://index.hu/gazdasag/2013/03/28/szeles/

Na, ezek az igazán durva fejlesztők.

Na, ezek az igazán durva fejlesztők. A nagy nevek, Zuckerberg, a Google alapítói, Bill Gates, stb. Ők okos emberek jó üzleti érzékkel, és nagy adag szerencsével, de ezek a kölkök valóban zsenik. Láttam pár ilyet, és nagyon durva dolgok vannak. Van pl. olyan kategória, hogy 4K-s demók. 4Kbyte az egy kisebb kép. Ezek meg 5 perces kis "videókat" raknak össze ebbe, tisztán kódolással. Ezt csak úgy lehet, hogy minden byte-al spórolsz, és mindenféle trükkökkel a processzort alacsony szinten programozva, bonyolult matematikai képleteket használva valósítasz meg mindent. Ez már  nem a szakma kategória, hanem az egyik legmagasabb szintű művészet ... 

http://androbit.org/news.php?readmore=3410&title=a_vakondok_2_dvd_n_es_blu_ray_en
http://androbit.org/news.php?readmore=3410&title=a_vakondok_2_dvd_n_es_blu_ray_en

2013. március 27., szerda

Portolják az Unreal Engine-t JavaScript-re

Portolják az Unreal Engine-t JavaScript-re

Utána néztem kicsit a technológiának. C/C++ kódot eddig is lehetett JavaScript-re fordítani úgy, hogy lefordítottuk LLVM virtuális gépre, amit Emscripten-el lehet JavaScript-re fordítani. Pár alkalmazást portoltak is már így JavaScript-re. Persze ez azért jelentős teljesítmény romlást is jelent, mivel a JavaScript ugye nem natív kód.

Erre a Google megoldása a NaCl (Native Client), amivel natív kódot futtathatunk a böngészőben. Ez egy JavaScript-től teljesen független saját technológia, tehát a támogatásához külön plugin kell, illetve minden platformra külön kell fordítani (bár ha jól tudom, itt is készül LLVM-es megoldás, amit az adott platformon futtatás előtt fordítanak natív kódra).
 
A Mozilla megoldása (amit most az Unreal Engine-hez is használnak) egy asm.js nevű kiterjesztés a JavaScript-hez. Az asm.js-es kód sima JavaScript, de van benne néhány speciális változó, stb. amit az asm.js-t támogató JavaScript engine-ek jobban tudnak optimalizálni. Ezeknek a változóknak fix típusa van például, így ki lehet pl. hagyni a dinamikus változókat érintő plusz konverziókat, ellenőrzéseket, stb. illetve előre natív kódra lehet fordítani, így nem kell interpreterrel futtatni. Ennek ugye az a nagy előnye, hogy sima JavaScript, nem kell hozzá semmilyen böngésző plugin (mint az NaCl esetén), mégis natívhoz közeli sebességgel fut.

Itt még érdemes megemlíteni szerintem a Dart-ot, ami ugyancsak JavaScript-re fordítható, tehát plugin nélkül is tud futni a böngészőben, de ha a saját virtuális gépben fut, akkor az opcionális típusoknak, SIMD műveleteknek, stb. hála natív kódhoz közeli sebességgel futtathatunk kódot. Mivel a js fordítónak köszönhetően ehhez sem kell külső plugin, ezért ez sokkal inkább tekinthető az asm.js alternatívájának.  

Akármelyik technológiát is nézzük, a lényeg, hogy a webes alkalmazások lassan de biztosan kezdik teljesítményben is felvenni a versenyt a natív alkalmazásokkal.

#blog  

Originally shared by TechCrunch

To show off what game developers can do with a modern browser & without plugins, Mozilla and Epic teamed up to port Unreal Engine 3 to the web.
http://techcrunch.com/2013/03/27/mozilla-and-epic-games-bring-unreal-engine-3-to-the-web-no-plugin-needed/

Hú, ez nagyon jó ...

Hú, ez nagyon jó ...

Jamie Winchester: Ego Toaster + Hold Me, Thrill Me, Kiss Me, Kill Me [U2] - Live 2009.
http://www.youtube.com/watch?v=DBV8-sffd0c

Obama egy egér ... !

Obama egy egér ... !

Originally shared by Urban Legends
http://www.urbanlegends.hu/2013/03/obamaeknak-nincs-penzuk-foldonkivuli-testorokre/

2013. március 26., kedd

Chrome kiegészítő AngularJS fejlesztéshez ...

Chrome kiegészítő AngularJS fejlesztéshez ...

https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk
https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk

Egy nagyon jó előadás Dr. Orosz Lászlótól, ahol Dr. Egely György könyveiről beszél

Egy nagyon jó előadás Dr. Orosz Lászlótól, ahol Dr. Egely György könyveiről beszél

Az előadás a könyvekben elkövetett hibákról szól. Érdemes megnézni mindenkinek, akit az örökmozgó téma érdekel. Az érdekessége, hogy az előadást Egely is végigülte a hallgatókkal. A végén azért van Egely-től egy ügyes odavágás, amit nem tudott a prof. jól hárítani. Azt remekül megmutatta az előadás, hogy milyen matematikai és fizikai hibákat ejtett Egely (azért Egely zsenialitása mellet szól, hogy ezeket nem mindig könnyű kiszúrni), és ezzel a célját maradéktalanul teljesítette is. Ugyanakkor arra nem kaptunk választ, hogy a jelenségek maguk léteznek-e. Valószínűleg a gyakorlat is a professzort igazolná, de ezt a kérdést valóban csak kísérletekkel lehet eldönteni, ahogyan Egely is felhozta az előadás végén. És ebben a helyzetben tényleg hibás volt a prof. hozzáállása, hogy "Nem kell elvégeznem a kísérletet, a nélkül is le tudom vezetni". A dolognak egyébként könnyen pontot lehetne tenni a végre azzal, hogy Egely-ék hozzák a jelenséget, a prof. a matekot és a fizikát. Elvégzik a mérést, és ha azt prof. magyarázni tudja az eszközkészletével, akkor neki volt igaza, ha nem, akkor Egely-ék valóban találtak valamit. 

Köszönet a linkkért Krisztián Kovács -nak.

#blog  

Áltudományos mechanika - Dr. Orosz László előadása
http://www.youtube.com/watch?v=pEC4kYyeiPI

The Adobe Developer Connection just posted this article on Getting started with AngularJS.


The Adobe Developer Connection just posted this article on Getting started with AngularJS.  Follow it to build a snazzy photo viewer.  http://www.adobe.com/devnet/html5/articles/getting-started-with-angularjs.html

Interesting quote:

One notable characteristic of the application is just how little JavaScript code needed to be written...It's also important to note something that is absent. The JavaScript is completely devoid of code that manipulates the DOM. This characteristic of AngularJS makes it very different from many other JavaScript frameworks. This feature means it's much easier to build soundly architected applications with clear separation between application logic and view rendering.

2013. március 25., hétfő

http://www.alternativenergia.hu/100-szazalekban-megujulo-energiaforrasokat-fogunk-hasznalni/58791

http://www.alternativenergia.hu/100-szazalekban-megujulo-energiaforrasokat-fogunk-hasznalni/58791
http://www.alternativenergia.hu/100-szazalekban-megujulo-energiaforrasokat-fogunk-hasznalni/58791
Boldog karácsonyt ...

Annak idején Egely egy TV műsorban elővett a zsebéből egy bigyót, amin pár led égett folyamatosan.

Annak idején Egely egy TV műsorban elővett a zsebéből egy bigyót, amin pár led égett folyamatosan. Mondta, hogy ő mindig hord magánál egy ilyen örökmozgót, bizonyítékul arra, hogy ez a dolog működik ...

Robert Cartman Krisztián Kovács  

http://pcforum.hu/hirek/14779/Soha+le+nem+merulo+mobiltelefonon+dolgozik+a+Nokia.html
http://pcforum.hu/hirek/14779/Soha+le+nem+merulo+mobiltelefonon+dolgozik+a+Nokia.html

Már az IE is letagadja magáról, hogy IE, annyira szégyenlik

Már az IE is letagadja magáról, hogy IE, annyira szégyenlik ... :) Viszont úgy tűnik, lassan kezd felzárkózni, ami jó hír a fejlesztőknek, mert azért a felhasználók egy igen jelentős része az IE-t használja, mivel az a beépített böngésző. Csak győzzük kivárni azt a pár évet, amíg a sok szar feledni való előd kikopik ..

http://pcforum.hu/hirek/14776/Firefox-nak+fogja+alcazni+magat+az+Internet+Explorer+11.html
http://pcforum.hu/hirek/14776/Firefox-nak+fogja+alcazni+magat+az+Internet+Explorer+11.html

2013. március 23., szombat

Ingyen energia, avagy a net legnagyobb baromságai

Originally shared by Robert Cartman
http://dirtywindows.hu/discussion/topic/ingyen-energia-avagy-a-net-legnagyobb-baromsagai/

A hangyákról, méhekről, stb.

A hangyákról, méhekről, stb. szokták mondani, hogy rajintelligenciával rendelkeznek. Szóval valójában nem is egy hangya vagy méh tekinthető egy élőlénynek, hanem az egész raj. Tulajdonképpen az emberi test is egy ilyen raj. Különálló, önálló lényekként (bár nagyon primitív lények) létező sejtek alkotják a testünket, és ezek "társadalma" egy egy ember. Vajon egy ilyen sejteknél "autonómabb" lényekből felépülő rajnak is lehet öntudata? Olyan, mint nekünk embereknek. A hangyákat elnézve gondolkodtam ezen, hogy vajon milyen lenne egy ilyen földön kívüli létforma, aminek sz egyedei mondjuk ilyen hangyaszerű lények, akik együtt alkotnak egy értelmes lényt. Olyat, aki képes gondolkodni, érezni, stb. Érdekes ezt elképzelni ...

Most, hogy rákényszerültem a használatára, be kell látnom, hogy az IE fejlesztőeszköz készlete is teljesen...

Most, hogy rákényszerültem a használatára, be kell látnom, hogy az IE fejlesztőeszköz készlete is teljesen használható. Nagyon jó JavaScript debugger van benne, hálózati forgalom figyelő, stb. 9-től felfelé már az oldalak megjelenítése is közelít az elviselhetőhöz (ezért itt még vannak hiányosságok), de szép lassan kezd felzárkózni a Firefox-hoz és a Chrome-hoz. Mondjuk hogy az egyik legelső böngésző miért utolsóként kezd használhatóvá válni, az egy jó kérdés ...

2013. március 22., péntek

Tudtok valami jó cuccot, amivel több IE-t futtathatok a gépen?

Tudtok valami jó cuccot, amivel több IE-t futtathatok a gépen? Egy weboldalt szeretnék tesztelni, hogy menjen minden szutykos IE alatt. MultipleIEs-t néztem, de az elvileg csak 6-ig támogatja a verziókat. Nekem most 9-es van, viszont szeretném 7-esre és 8-asra is tesztelni.

2013. március 21., csütörtök

Holly Schinsky just posted a comprehensive overview of AngularJS.

Holly Schinsky just posted a comprehensive overview of AngularJS.  Possibly the most complete one I've seen.  Stay tuned for her next post where she ports her iTunes app to PhoneGap!
http://devgirl.org/2013/03/21/fun-with-angularjs/

Pár webes fejlesztőkörnyezet (olyan mint a Cloud9) ...

Pár webes fejlesztőkörnyezet (olyan mint a Cloud9) ...

Originally shared by Paul Irish

Web-based IDEs:

try.devtable.com
shiftedit.net (works offline!)
icenium.com
codio.com
code.google.com/p/collide/ .
compilr.com
akshell.com
codiad.com
plnkr.co
c9.io
koding.com (invite only)
codenvy.com (invite only)

Ez jópofa ...

Ez jópofa ...

Originally shared by József Makay
http://www.youtube.com/watch?v=niV2KCkKmRw

Ez a Google Keep nagyon kis hasznos cuccnak tűnik.

Ez a Google Keep nagyon kis hasznos cuccnak tűnik. Gondoltam kipróbálom, de beletört a bicskám. Minek ennek 4.0.3-as Android? Nem tudom amúgy mennyire tendencia, de szerintem sokan szaladgálnak 2.x-es eszközökkel, így szerintem ha valaki ezeket kihagyja, azzal értékes piacot veszít. Én ha appot fejlesztek mindig próbálok törekedni arra, hogy ha lehet, akár 1.5-ös androidon is elfusson, de legalábbis 2.2-esnél ne kelljen újabb, és a legtöbb feature amúgy bele is fér ebbe a kategóriába.

2013. március 20., szerda

Tökre el tudok képzelni egy ilyen "UI-t" mond.juk Google Glass-al a látótér jobb felső sarkába vetítve.

Tökre el tudok képzelni egy ilyen "UI-t" mond.juk Google Glass-al a látótér jobb felső sarkába vetítve. Nem azért, mert nem lehet e nélkül élni, hanem azért, mert jópofa, és mert az ember szívesebben beszél egy másik emberhez, mint egy monitorhoz.

http://pcforum.hu/hirek/14759/Hihetetlenul+elethu+valodinak+tuno+mesterseges+szemelyt+hoztak+letre.html
http://pcforum.hu/hirek/14759/Hihetetlenul+elethu+valodinak+tuno+mesterseges+szemelyt+hoztak+letre.html

Ügyes ... Lassan kukázhatjuk a színészeket ...

Ügyes ... Lassan kukázhatjuk a színészeket ...

Originally shared by Ray Cromwell

Real-time Face rendering, crossing the uncanny valley?
http://www.youtube.com/watch?v=5d1ZOYU4gpo

Nem igazán akarok politizálni, vagy pártok ellen/mellett mondani bármit is, csak úgy elméletileg jutott az eszembe a...

Nem igazán akarok politizálni, vagy pártok ellen/mellett mondani bármit is, csak úgy elméletileg jutott az eszembe a következő dolog. Hoztak ugye most pár intézkedést, ami teljhatalmat adna politikai erőknek, és amik "kivezetnek" a demokráciából. Ezeket most ugye külföldön bírálják is. Tegyük fel, hogy ezek jóhiszemű döntések, tényleg csak bizonyos törvények meghozásához kellenek, amúgy a jelenlegi kormány "veszélytelen", nem akarnak diktatúrát, nem akarnak semmi rosszat. Viszont ezek a törvények ugye bekerültek az alkotmányba. Mi van, ha a következő választást egy szélsőséges politikai erő nyeri? Akkor most szépen megágyaztak nekik ...

2013. március 19., kedd

Egy AppEngine-en futtatható app, amin keresztül adatokat user függően tárolhatunk a DataStore-ban.

Egy AppEngine-en futtatható app, amin keresztül adatokat user függően tárolhatunk a DataStore-ban. Azért jó, mert sok esetben a szerver oldalon csak adattárolás történik, és AppEngine-nél ehhez Python, Go, vagy Java tudás kell. Így viszont elég felpakolni ezt a Tailbone-t, és kliens oldalon, JavaScript-ből megoldható az egész app. Pl. egy todo, vagy naptár, stb. app-hoz nem kell más, csak JavaScript tudás, és kliens oldali programozás. 

http://googleappengine.blogspot.hu/2013/03/using-tailbone-to-talk-to-app-engine.html
http://googleappengine.blogspot.hu/2013/03/using-tailbone-to-talk-to-app-engine.html

Ha valaki nem szeretne megválni a PHP-tól, de .NET környezetben kell fejlesztenie, akkor ez a Phlanger lehet a...

Ha valaki nem szeretne megválni a PHP-tól, de .NET környezetben kell fejlesztenie, akkor ez a Phlanger lehet a megoldás. Ez PHP értelmező .NET főlé. Hasonló, mint a Quercus (http://quercus.caucho.com/) Java-ra. Így a nagyját össze lehet dobni PHP-ben, amit meg kell, le lehet implementálni .NET-ben (vagy Java-ban).  

http://phalanger.codeplex.com/
http://phalanger.codeplex.com/

Hogy alakítsunk ki adatbázis architektúrát MySQL-el kisitől egészen extra nagy forgalmú oldalakig.

Hogy alakítsunk ki adatbázis architektúrát MySQL-el kisitől egészen extra nagy forgalmú oldalakig. A vége már egész érdekesen néz ki ... Mondjuk nem gyakran ütközik az ember olyan problémába, hogy több milliós site-ok mögé milyen MySQL clustert építsen. 

http://www.infoq.com/news/2013/03/MySQL-Reference-Architectures
http://www.infoq.com/news/2013/03/MySQL-Reference-Architectures

2013. március 18., hétfő

Eddig az alternatív futtató környezeteket használó Android alkalmazásokkal az volt a bajom, hogy sok helyet...

Eddig az alternatív futtató környezeteket használó Android alkalmazásokkal az volt a bajom, hogy sok helyet foglalnak, és ugye hiába van sok G-s SD kártya minden telefonban, ha az app memória olyan szűkös, hogy megákon kell spórolni. Ugyanakkor a ksweb kapcsán jöttem rá, hogy a dolognak egy olyan előnye, hogy az ilyen app-ok teljesen függetlenek a DalvikVM-től. Csak egy pár K-s behúzó kód kell, ami letölti a valódi futtatókörnyezetet az SD kártyára, és elindítja. Így lehetne Adroid alkalmazásokat fejleszteni .NET-es környezetben (Mono), JavaScript-ban (V8), de akár Python-ban, PHP-ben, stb. Egyszerűen mindenki vihetné magával a kedvenc környezetét, ami adott esetben pár tíz mega is lehet (ksweb webszerverrel, mysql-el, PHP-val, meg minden szutyokkal olyan 40M körül van), de SD kártyán kényelmesen elfér, és maga az apk csak pár K-t foglalna. Akár komplett oprendszert is lehetne telepíteni így egy pár K-s appal, ami SD-ről fut.

Ez igazából az Android szabadságából ered. A natív app támogatásból, és hogy lehetőséged van ezeket SD-ről futtatni. Igazából nem új dolog, lehet, hogy sok helyen ki is használják, csak most tudatosult bennem mindez, és ennek örömére gyorsan leírtam. Kezdek fantáziát látni a telefonon futtatott lokális webappokban ... (Mint amilyen Sancho Virág Attila  rss olvasója, vagy Papp Zsolt  Drupal szervere. De ennyi erővel az ember írhat magának kis TODO app-ot, naptárat, meg hasonló kis okosságokat minden Java tudás nélkül úgy, hogy csak PHP-hez ért.)

Jópofa ...

Jópofa ...

http://www.origo.hu/techbazis/20130318-centikre-az-asztal-felett-lebeg-a-csuklokimelo-eger.html
http://www.origo.hu/techbazis/20130318-centikre-az-asztal-felett-lebeg-a-csuklokimelo-eger.html

2013. március 17., vasárnap

Újra összelőttem egy Eclipse-et PHP fejlesztéshez.

Újra összelőttem egy Eclipse-et PHP fejlesztéshez. Annak idején próbálkoztam ezzel már egyszer, de mindenféle gond volt vele, és végül visszatértem a text editoros szerkesztéshez. Most újra kipróbáltam. Van néhány nagyon idegesítő alapbeállítás, de kicsit finomhangolni kell, és akkor nagyon kényelmes tud lenni. Most az oldalak xampp-ban futnak, a PHP fájlokat xdebug-on keresztül lehet debug-olni. Például egy WordPress template-ben elhelyezett brakepoint-al nagyon szépen lehet látni a hívási láncot, és a változókat, és szépen látszik az egész rendszer működése. Telepítettem Chrome DevTools-t is, amivel a JavaScript-eket is Eclipse-ben lehet debugolni, így egy helyen látszik, hogy mit csinál a kliens oldali angularjs rész, és mit csinál a szerver oldali PHP. Az Eclipse-ben beépített Git támogatás van, van Mylyn GitHub integráció, és egy rakás alternatív tool. Java-s fejlesztésekhez eddig is Eclipse-et használtam, Python-hoz és C++-hoz is ideálisnak bizonyult, és most talán a PHP-s fejlesztések esetén is megmaradok ennél.

Asszony unszolására újra megnéztük az 'Ádám almáit'...

Asszony unszolására újra megnéztük az 'Ádám almáit' (http://www.port.hu/adam_almai_adams_aebler/pls/w/films.film_page?i_film_id=90487), és újra be kellett látnom, hogy ez a film zseniális. Még ezt a számot is megszerettem. :) Ne, ne, ne ítélj előre ... Nézd meg a filmet, és te is máshogy fogod hallgatni ... ;)

Take That - How Deep Is Your Love
http://www.youtube.com/watch?v=CTqabbIPfc0

http://index.hu/tudomany/2013/03/16/ujabb_14_embert_gyogyitottak_ki_hiv-fertozesbol/

http://index.hu/tudomany/2013/03/16/ujabb_14_embert_gyogyitottak_ki_hiv-fertozesbol/
http://index.hu/tudomany/2013/03/16/ujabb_14_embert_gyogyitottak_ki_hiv-fertozesbol/

Érdekes cikk. Nagyon hekkelnek ott valamit ...

Érdekes cikk. Nagyon hekkelnek ott valamit ...

http://pcpult.hu/it-technologia/hirek-ujdonsagok/megis-mi-a-menkut-muvel-mobilon-a-facebook-android.html
http://pcpult.hu/it-technologia/hirek-ujdonsagok/megis-mi-a-menkut-muvel-mobilon-a-facebook-android.html

Az ember tragédiája mint Cloud Atlas

Az ember tragédiája mint Cloud Atlas

Az ember tragédiájából (http://hu.wikipedia.org/wiki/Az_ember_trag%C3%A9di%C3%A1ja - igen igen az a Madách féle még irodalom óráról) kicsit kiszínezve, hollywoodi köntösbe bújtatva szerintem nagyon jó Cloud Atlas szerű filmet lehetne készíteni. A szereplők (Ádám, Éva, Lucifer és pár mellékszereplő) ugyanúgy reinkarnálódnának az egyes korokon át, mint a Cloud Atlas szereplői. Ugyanúgy be lehetne csempészni kis áthatásokat az egyes idősíkok közé, bár igazából ezt nem is kell külön erőltetni, mivel a tézis-antitézis-szintézis folyam önmagában megteremti a síkok egymásra hatását. A Falanszter részt kicsit ki lehetne csicsázni egy valódi jövőbeli világgá repülő autókkal, robotokkal, miegymás. Az űr béli színt valahogy úgy magyarázni, hogy Ádám milliárdosként valami űrbázisra költözik ki, stb. Kéne rajta dolgozni, csiszolgatni kicsit a mai kor szellemének megfelelően, de szerintem zseniális lenne. Megkockáztatom, hogy sokkal jobb, mint a Cloud Atlas (ami amúgy maga sem rossz film), sokkal mélyebb történettel és mondanivalóval. Szinte fáj, hogy ez a film bizonyára nem fog elkészülni ... 

#blog

jQuery alapok

jQuery alapok

A jQuery az egyik legelterjedtebb JavaScript programkönyvtár. Rengeteg oldal használja, és sok JavaScript keretrendszer épül rá. A követezőkben nagyon röviden azt szeretném bemutatni, hogy mi is ez a jQuery, miért jó, és mire lehet használni. A leírás olvasása alapvető HTML és CSS és JavaScript ismereteket igényel. Ezekre nem térek majd ki külön, mert nagyon elnyújtaná a bejegyzést.

Ha egy mondatban kellene meghatározni, akkor azt mondanám, hogy a jQuery olyasmi mint a CSS, csak itt nem designt rendelünk az egyes HTML elemekhez, hanem működést. Az elemek kijelöléséhez ugyanazokat a szelektorokat használhatjuk, mint CSS esetén, és az így kijelölt elemeket manipulálhatjuk, eseménykezelőket aggathatunk rájuk, lekérdezhetjük az értéküket, vagy valamilyen más működéssel láthatjuk el. Hamarosan mutatok példákat is, de gyorsan nézzük át, mik ennek az egésznek az előnyei:

- Ahogyan a CSS esetén elválik a design a HTML kódtól, ugyanúgy leválasztható a jQuery segítségével a működés is az elemekről. (Ez véleményem szerint néha hasznos, néha nem, de ebbe most ne menjünk bele.)
-  A jQuery-s működés elrejti előlünk a böngészők közötti különbséget. Amire adott esetben többféle elágaztatott JavaScript-re lenne szükség, az jQuery-ben egyetlen hívással megoldható. A jQuery egyébként (tudtommal) az összes ismert nagy böngészőt támogatja, ide értve a desktop és mobil változatokat is.
- Sok mindent sokkal egyszerűbb megoldani jQuery-ben, mint tiszta JavaScript-ben, ráadásul nagyon egyszerűen lehet hozzá új funkciókat adni pluginek formájában, és rengeteg plugin elérhető hozzá a weben. Köztük olyan komplex dolgok is, mint wysiwyg editor, adattáblák, tree komponens, miegymás.

No, akkor nézzük is, hogy megy mindez a gyakorlatban. Ha jQuery-t szeretnénk használni, akkor ugye egy script tag-el be kell hivatkozni. Ezt két módon tehetjük meg. Vagy letöltjük a jQuery aktuális változatát, és azt használjuk, vagy CDN-ről hivatkozzuk be. A CDN egy fix hely a weben, ahol az aktuális változat megtalálható. A legismertebb ilyen CDN a Google féle (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js). Ennek az az előnye, hogy innen a böngésző egyszer letölti a JavaScript kódot, és utána cache-eli. Mivel sokan használják így a jquery-t, ezért jó esetben már valószínűleg cache-elve van a böngészőben, így mikor a mi weblapunk töltődik be, ezt már nem kell újra letölteni. Olyan baromi nagy különbség amúgy nincs a két megoldás közt, csak érdekesség.

Ha behivatkoztuk a lib-et, elkezdhetjük használni. Készítsünk egy kis HTML olalt, amin van egy gomb (button tag). Rakjunk erre egy eseménykezelőt, ami klikkelésre kiír valami üzenetet. Ez így néz ki:

$('button').click(function(){
  alert('Hello World');
})

Láthatóan nem valami bonyolult. A jQuery-re a $ fv.-el tudunk hivatkozni, aminek paramétere egy css szelektor. Ezek ugyanazok a jelölések, amit css esetén használunk az elemek kijelölésére. Tehát a $('button') jelen esetben azt jelenti, hogy minden button elem-re vonatkozzon a kijelölés. Ezt ki is próbálhatjuk. Rakjunk be még egy gombot az oldalra. Így akármelyikre gyomunk, meg fog jelenni az alert. A $ jel helyett használhatjuk a jQuery nevet is, de olyat is láttam, ahol jq-t használtak. Tehát a $('button'), a jQuery('button') és a jq('button') ugyanazt jelölik. Ha kijelöltük az elemet, akkor jöhetnek az azon végzett műveletek. Jelen esetben a click, ami egy eseménykezelőt helyez az adott elemre. Most nézzünk egy olyan példát, ahol nem eseménykezelőt rakunk az elemre, hanem valamilyen manipulációt végzünk rajta.

$('button').css('font-weight', 'bold');

Ez a sor az összes gomb font-weight tulajdonságát bold-ra állítja, tehát minden gomb felirata vastagon lesz szedve. A jQuery hívásokat láncolhatjuk is, így:

$('button').css('font-weight', 'bold').click(function() {
  alert('!!!');
})

Persze kettőnél sokkal több hívás is követheti egymást, így egész komplex működéseket egész egyszerűen írhatunk le. Ha egy eseménykezelőben az aktuális elemre akarunk hivatkozni, azt a this kulcsszóval tehetjük meg. A this ez esetben a HTML objektumot jelöli, így ha jQuery-s műveletet akarunk rajta végezni, akkor $()-be kell rakni. Erre itt egy példa:

$('button').click(function() {
  $(this).hide('slow');
});

Ez így annyit csinál, hogy ha megnyomjuk a gombot, akkor szépen animálva elrejti azt. De ez alapján elrejthetünk/megjeleníthatünk komplett formokat, stb.

Eddig ugye minden esetben a gombok mindegyikére vonatkozott az adott művelet. Ha pontosabban ki szeretnénk jelölni a célt, akkor használjuk a szokásos css szelektorokat. Adjunk az egyik gombnak egy 'gomb' class-t. Erre a $('.gomb') -al hivatkozhatunk. Így csak a 'gomb' osztályú elemekre fog hivatkozni az adott hívás. Ha egy adott elemet akarunk kijelölni, akkor adjunk neki valami id-t. Ha 'gomb' id-t adunk neki, akkor a css-hez hasonlóan $('#gomb') -al hivatkozhatunk rá. De persze mennek a bonyolultabb szelektorok is. Pl. az item class-u li elemeken belüli gomb class-u gombok, stb.

Amivel még gyakran találkozni, az a $('document').ready esemény, ami jQuery-ben az onload megfelelője. Tehát amit ide írunk, az akkor fog végrehajtódni, ha már teljesen betöltődött az oldal. Amolyan ökölszabályként elmondható, hogy érdemes a teljes jQuery kódot ebbe írni, valahogy így:

$( document ).ready(function() {
  $('button').click(function() {
    $(this).hide('slow');
  });
  ...
});

Hát, indulásnak kb. ennyi szerintem elég. Rengeteg példát találni weben, és a jQuery honlapján (http://jquery.com/). Igény esetén készülhet hasonló leírás egy egy témáról, de mivel a jQuery eszközkészlete elég szerteágazó, írjátok le, hogy pontosan melyik része érdekel, és ha azzal a résszel kapcsolatban van tapasztalat, azt szívesen leírom.

#blog   #jquery

2013. március 16., szombat

A cloud és a desktop technológia közötti szakadék áthidalására lehetne csinálni egy kis lokális node.js szervert.

A cloud és a desktop technológia közötti szakadék áthidalására lehetne csinálni egy kis lokális node.js szervert. Az egész telepítés után leköltözne a tálcára, és dupla klikkre megnyitná böngészőben a fő oldalt, ahonnan alkalmazásokat lehet telepítgetni illetve futtatni. Ez így majdnem a Chrome App kategória, annyiból jobb, hogy nincs Chrome-hoz kötve (bármilyen böngészőből elérhető, mint a cloud app-ok), illetve teljes hozzáférése van a géphez, mint más desktop alkalmazásoknak. Az ilyen app-ok ugye teljes mértékben html + javascript technológiákkal készülnének, és így végül is minden desktop app kiváltható lenne. E-mail kliens, RSS olvasó, fejelsztő eszközök, torrent kliens, stb. Minden persze maximálisan felhasználóbarát módon. Az ilyen app-ok nagy előnye az is, hogy mivel az ember gépén futnak, nincs kiszolgáltatva egy külső szolgáltatónak. Tulajdonképpen minden előnyük megvan, ami a desktop app-oknak, de egyben magukban hordozzák a cloud app-ok sok előnyét is. Adott esetben akár kipakolhatjuk őket a lokális NAS-ra, vagy éppen hosztolhatjuk külső szerveren. A lényeg, hogy mindvégig minden a miénk.

Készítettem egy ilyen kis PHP + AngularJS mintát.

Készítettem egy ilyen kis PHP + AngularJS mintát. Van benne kis PHP, kis AngularJS, kis SQL (SQLite-al), meg egy kis JavaScript. Akit érdekel, Cloud9-en ki tudja próbálni, bele tud nézni a forrásba, esetleg igény esetén kár ki is elemezgethetjük, hogy mi mit csinál. 

Originally shared by Laszlo Fazekas

PHP messageboard

Kíváncsi voltam, hogy lehet-e csupán AngularJS használatával "értelmes" üzenőfalat csinálni. Végül is az eredmény egy kis (a sallangot leszámítva 1 fájl) PHP alkalmazás lett. Az üzenetek tárolására sqlite-ot használtam, a szerver oldal PHP, a kliens oldal pedig AngularJS és egy kis AngularUI (csak az animáció miatt). Akit érdekel, klónozza le Cloud9-be (itt van hozzá leírás: https://plus.google.com/115334992192871078712/posts/gxfBQsDEsp4) , és ki tudja próbálni. Ehhez ugye index.php-n nyomjunk egy Run-t, majd két böngészőfülön nyissuk meg az url-t. Ha az egyik oldalon írunk valamit, akkor az a másik oldalon is megjelenik 5mp-es frissítéssel. Nem nagy valami, de a célnak pont megfelel.

Gitub repo: git://github.com/TheBojda/php-messageboard.git

#blog   #php   #angularjs   #angularui

PHP messageboard

PHP messageboard

Kíváncsi voltam, hogy lehet-e csupán AngularJS használatával "értelmes" üzenőfalat csinálni. Végül is az eredmény egy kis (a sallangot leszámítva 1 fájl) PHP alkalmazás lett. Az üzenetek tárolására sqlite-ot használtam, a szerver oldal PHP, a kliens oldal pedig AngularJS és egy kis AngularUI (csak az animáció miatt). Akit érdekel, klónozza le Cloud9-be (itt van hozzá leírás: https://plus.google.com/115334992192871078712/posts/gxfBQsDEsp4) , és ki tudja próbálni. Ehhez ugye index.php-n nyomjunk egy Run-t, majd két böngészőfülön nyissuk meg az url-t. Ha az egyik oldalon írunk valamit, akkor az a másik oldalon is megjelenik 5mp-es frissítéssel. Nem nagy valami, de a célnak pont megfelel.

Gitub repo: git://github.com/TheBojda/php-messageboard.git

#blog   #php   #angularjs   #angularui

Amúgy a közösség tagjai közül ki mennyire tud programozni?

Amúgy a közösség tagjai közül ki mennyire tud programozni? Mennyire ismeri a HTML nyelvet, JavaScriptet, PHP-t, Java-t, esetleg WordPress-t, Drupal-t, stb. ? Csak kíváncsi vagyok, mennyire heterogén az összetétel, meg hogy úgy nagyjából kit mi érdekel.

Ügyes

Ügyes ... Így darabokban nagyon jó cuccok vannak már. Nagyon ügyes robotkezek, ilyen élethű mimikával rendelkező arcok, mint ez, vannak robotok, amik már egész ügyesen járnak és futnak, stb. Talán még az intelligenciájuk az ahol a legtöbb a fejleszteni való. De ez a sok darab egyszer csak összeáll, és akkor jön majd a meglepetés. Szerintem villám gyorsan (pár év alatt) elkezdik majd ezek ellepni a piacot, és az életünk részévé válnak. A "semmiből fognak kipattanni" a hétköznapi használatra szánt humanoid háztartási robotok.  

Creepily realistic robot can hold conversations and answer questions
http://www.youtube.com/watch?v=IhVu2hxm07E

2013. március 15., péntek

Ez nem annyira alap JavaScript, de ha valaki rendelkezik alapvető HTML és JavaScript tudással (tényleg elég az alap...

Ez nem annyira alap JavaScript, de ha valaki rendelkezik alapvető HTML és JavaScript tudással (tényleg elég az alap tudás), az már csodákat tud művelni AngularJS segítségével. Ezért gondoltam, hogy érdemes ide is bepostolni.

/cc Robert Cartman Nádi András 

Originally shared by Laszlo Fazekas

AngularJS (1. alapok)

Már egy ideje ígérgetem, hogy írok egy rövid bejegyzést arról, hogy mi is az AngularJS. Amikor elsőnek találkoztam vele, úgy jellemezte valaki a rendszert, hogy ilyen lenne a HTML nyelv, ha most találták volna fel. Tehát felfoghatjuk akár a jelenlegi szabvány felokosításának is.

Kicsit jobban kifejtve az AngularJS egy nagyon szépen megkonstruált MVC keretrendszer. Ez valami baromi misztikus dolognak hangzik, pedig nem az. Az MVC a Model View Controller hármas rövidítése. és mostanában tulajdonképpen szinte minden adatokat kezelő alkalmazás ezt a felépítést használja. Az MVC annyit jelent, hogy az alkalmazást három rétegre osztjuk. Az adattartalomra (model), a megjelenítésre (view), és a működésre (controller). Ezek a rétegek körkörösen hivatkoznak egymásra. Az adattartalmat (model) a view réteg jeleníti meg, ahonnan mindenféle felhasználói események hatására meghívódik valami működés (controller), ami megváltoztatja az adattartalmat, és itt körbe is ért az egész. Talán még így is ködös kicsit az egész, úgyhogy nézzünk egy példát. Egy sima todo listát, ahová új elemeket lehet felvenni, és törölni onnan (mint mondjuk egy bevásárló lista). Itt ugye az adattartalom (model) az a lista, ami a todo elemeket tartalmazza. A view az ezt megjelenítő felhasználói felület. A cotroller pedig az eseménykezelők összessége, tehát hogy mit kell csinálni hozzáadáskor, illetve elem törlésekor. Így már úgy nagyjából talán világos, hogy mi az az MVC, de hogy valósul meg ez AngularJS-ben?

AngularJS-ben a model réteget JavaScript változók adják. Ezek tárolják az adatokat. A view réteget a HTML kód adja, amit az AngularJS saját attribútumokkal egészít ki. Innen jött ugye a bejegyzés elején említett dolog, tehát hogy fel lehet fogni az AngularJS-t a HTML nyelv felokosításának is. Ezek az attribútumok rendelik össze a model-t a view-val (tehát hogy hol milyen adatot kell megjeleníteni), illetve a controllerrel (hogy milyen eseményre mit kell reagálni). A controller réteget JavaScript függvények adják, amik a model réteget adó JavaScript változókat manipulálják, és ezzel teljes is a kép.

Lássunk is pár példát. Ehhez látogassunk el a http://angularjs.org helyre, és tekerjük kicsit le az oldalt a második HTML kódig (az 'Add Some Control' címet keressük). Ez pont az a todo alkalmazás, amit a példában is említettem. Nézzük hogyan is épül fel. Kattintsunk át a todo.js fülre. Itt látunk egy TodoCtrl nevű függvényt (valójában inkább osztály, de JavaScriptben ezek összemosódnak). Ennek van egy $scope nevű paramétere. Ennek részletezésébe most annyira nem akarok belemenni, mert nagyon elnyúlna a bejegyzés, de lényeg, hogy minden változót (model), és működést leíró függvényt (controller) ehhez kell majd hozzárendelnünk. Rögtön a kód elején láthatjuk is a todos változó kezdeti értékének beállítását. Itt a todos változóba két érték kerül, az egyik egy todo elem, ami már le van zárva, a másik pedig egy még nem teljesült todo elem. Az előbbiek fényében már gondolom mindenki tudja, hogy ebben az alkalmazásban ez a todos változó a model réteg szerepét tölti be. A változón túl van még 3 függvény. Ezek képezik a controller réteget. Az addTodo egy új elemet ad a listához, az archive pedig törli a már teljesült elemeket. Hát, a remaining olyan öszvér fajta, mert igaz, hogy függvény, de igazából adatot ad vissza (pontosan azt adja vissza, hogy hány elvégzendő feladat van), amit a felületen kijelzünk, tehát inkább a model rétegbe sorolnám. Most kattintsunk át a html nézetre. Itt láthatjuk a view réteget, és az összerendeléseket, ami az AngularJS igazi ereje. A kód elején van egy ng-app attribútum. Ez minden AngularJS alkalmazás elejére kell, ez jelöli ki azt a részt, ahol a speciális attribútumokat értelmezni kell. Ebben az esetben ez a teljes html kódra vonatkozik. Aztán van két script rész, ahol behivatkozzuk az AngularJS-t magát, illetve a controller-t tartalmazó javascript állományt. Eztán jön egy ng-controller attribútum, mivel az előbb definiált controllert egy html blokkhoz rendeljük. Ha a HTML oldal olyan felépítésű, akkor megtehetjük, hogy egyes részeihez más más controller-t rendelünk, vagy ezeket akár egymásba is ágyazhatjuk, de ilyesmivel most ne bonyolítsuk az életünket. Az ng-controller-es div-en belül vannak {{ és }} jelek közti szakaszok. Ezekkel dinamikus tartalmat illeszthetünk be a HTML kódba, ráadásul nemesen egyszerű módon. Egyszerűen ha itt megadjuk egy $scope-hoz rendelt változó nevét, akkor a rendszer ide behelyettesíti annak tartalmát, illetve ugyanez történik, ha valamilyen függvény hívást írunk a jelek közé (tulajdonképpen ide bármilyen egyszerűbb JavaScript kifejezést írhatunk). Utóbbira példa a {{remining()}} rész, előbbire pedig a {{todos.length}}. Ez tehát egy módja a model bekötésének. Eztán jön egy link ng-click attribútummal. Ez egy szép példa a controller bekötésére. Leírja, hogy egy esemény hatására milyen működésnek kell életbe lépnie. Ha ugye erre a linkre kattintunk (archive), akkor az archive() függvényt kell meghívni a $scope-ból. Eztán jön egy ng-repeat rész, ami megintcsak a  model bekötésének módja. Ez végigszalad a megadott változón, és közben egy másik változó minden körben felveszi az aktuális elem értékét. Itt ugye a todos változón szaladunk végig. Minden körben generálódik egy li elem, és a todo változó felveszi az aktuális elem értékét. A li elemben találunk egy checkbox-ot, amihez ng-model-el van hozzárendelve a todo elem done változója. Míg a {{}} jelek használata egyirányú összerendelés (csak odaírja a rendszer a változó tartalmát), addig az ng-model kétirányú. Tehát egyfelől az elem a változó tartalmának megfelelően viselkedik, másfelől a változó az elem állapotának megfelelő értéket kapja. Olyan mint ha innentől a változó a HTML elem leképződése lenne, ebben az esetben a checkbox-é. Ha a változó értéke változik, változik a checkbox állapota is, illetve ha a felhasználó változtat a checkbox állapotán, akkor változik a változó értéke is. A következő span részben az elem class-ja a todo.done-tól függ. Ez az egyszerű {{}} jeles behelyettesítés. Amire érdemes felfigyelni, hogy az egész dolog teljesen real-time. Tehát mikor beklikkeljük a checkbox-ot, és megváltozik a változó értéke, akkor vele együtt minden változóhoz kötött dolog is változik. Tehát jelen esetben az elem class-a is. Ezt ki is próbálhatjuk, ha jobb oldalon a checkbox-ra kattintunk. Nem kell azzal vesződnünk, mint mondjuk jQuery esetén, hogy a bejelölés eseményre rakjunk egy eseménykezelőt, ami megváltoztatja a másik elem class-át. Ezzel sokkal rövidebb, szebb, és tisztább kódot kapunk. Végül pedig van egy ng-submit eseménykezelő, ami az add gomb megnyomására meghívja az addTodo függvényt, ami berakja az új todo elemet, aminek tartalma az előtte lévő text elemben lévő ng-model attribútumnak hála a todoText változóba kerül.  

Hát, nagyon tömören ennyit akartam írni az alapokról. Az AngularJS nagyon sok mindent tud még ezen kívül. Definiálhatunk modulokat, saját attribútumokat, kommunikálhatunk a szerverrel, stb. de ezeknek már talán érdemes új bejegyzést szentelni. 

#blog   #angularjs  
http://angularjs.org

AngularJS (1. alapok)

AngularJS (1. alapok)

Már egy ideje ígérgetem, hogy írok egy rövid bejegyzést arról, hogy mi is az AngularJS. Amikor elsőnek találkoztam vele, úgy jellemezte valaki a rendszert, hogy ilyen lenne a HTML nyelv, ha most találták volna fel. Tehát felfoghatjuk akár a jelenlegi szabvány felokosításának is.

Kicsit jobban kifejtve az AngularJS egy nagyon szépen megkonstruált MVC keretrendszer. Ez valami baromi misztikus dolognak hangzik, pedig nem az. Az MVC a Model View Controller hármas rövidítése. és mostanában tulajdonképpen szinte minden adatokat kezelő alkalmazás ezt a felépítést használja. Az MVC annyit jelent, hogy az alkalmazást három rétegre osztjuk. Az adattartalomra (model), a megjelenítésre (view), és a működésre (controller). Ezek a rétegek körkörösen hivatkoznak egymásra. Az adattartalmat (model) a view réteg jeleníti meg, ahonnan mindenféle felhasználói események hatására meghívódik valami működés (controller), ami megváltoztatja az adattartalmat, és itt körbe is ért az egész. Talán még így is ködös kicsit az egész, úgyhogy nézzünk egy példát. Egy sima todo listát, ahová új elemeket lehet felvenni, és törölni onnan (mint mondjuk egy bevásárló lista). Itt ugye az adattartalom (model) az a lista, ami a todo elemeket tartalmazza. A view az ezt megjelenítő felhasználói felület. A cotroller pedig az eseménykezelők összessége, tehát hogy mit kell csinálni hozzáadáskor, illetve elem törlésekor. Így már úgy nagyjából talán világos, hogy mi az az MVC, de hogy valósul meg ez AngularJS-ben?

AngularJS-ben a model réteget JavaScript változók adják. Ezek tárolják az adatokat. A view réteget a HTML kód adja, amit az AngularJS saját attribútumokkal egészít ki. Innen jött ugye a bejegyzés elején említett dolog, tehát hogy fel lehet fogni az AngularJS-t a HTML nyelv felokosításának is. Ezek az attribútumok rendelik össze a model-t a view-val (tehát hogy hol milyen adatot kell megjeleníteni), illetve a controllerrel (hogy milyen eseményre mit kell reagálni). A controller réteget JavaScript függvények adják, amik a model réteget adó JavaScript változókat manipulálják, és ezzel teljes is a kép.

Lássunk is pár példát. Ehhez látogassunk el a http://angularjs.org helyre, és tekerjük kicsit le az oldalt a második HTML kódig (az 'Add Some Control' címet keressük). Ez pont az a todo alkalmazás, amit a példában is említettem. Nézzük hogyan is épül fel. Kattintsunk át a todo.js fülre. Itt látunk egy TodoCtrl nevű függvényt (valójában inkább osztály, de JavaScriptben ezek összemosódnak). Ennek van egy $scope nevű paramétere. Ennek részletezésébe most annyira nem akarok belemenni, mert nagyon elnyúlna a bejegyzés, de lényeg, hogy minden változót (model), és működést leíró függvényt (controller) ehhez kell majd hozzárendelnünk. Rögtön a kód elején láthatjuk is a todos változó kezdeti értékének beállítását. Itt a todos változóba két érték kerül, az egyik egy todo elem, ami már le van zárva, a másik pedig egy még nem teljesült todo elem. Az előbbiek fényében már gondolom mindenki tudja, hogy ebben az alkalmazásban ez a todos változó a model réteg szerepét tölti be. A változón túl van még 3 függvény. Ezek képezik a controller réteget. Az addTodo egy új elemet ad a listához, az archive pedig törli a már teljesült elemeket. Hát, a remaining olyan öszvér fajta, mert igaz, hogy függvény, de igazából adatot ad vissza (pontosan azt adja vissza, hogy hány elvégzendő feladat van), amit a felületen kijelzünk, tehát inkább a model rétegbe sorolnám. Most kattintsunk át a html nézetre. Itt láthatjuk a view réteget, és az összerendeléseket, ami az AngularJS igazi ereje. A kód elején van egy ng-app attribútum. Ez minden AngularJS alkalmazás elejére kell, ez jelöli ki azt a részt, ahol a speciális attribútumokat értelmezni kell. Ebben az esetben ez a teljes html kódra vonatkozik. Aztán van két script rész, ahol behivatkozzuk az AngularJS-t magát, illetve a controller-t tartalmazó javascript állományt. Eztán jön egy ng-controller attribútum, mivel az előbb definiált controllert egy html blokkhoz rendeljük. Ha a HTML oldal olyan felépítésű, akkor megtehetjük, hogy egyes részeihez más más controller-t rendelünk, vagy ezeket akár egymásba is ágyazhatjuk, de ilyesmivel most ne bonyolítsuk az életünket. Az ng-controller-es div-en belül vannak {{ és }} jelek közti szakaszok. Ezekkel dinamikus tartalmat illeszthetünk be a HTML kódba, ráadásul nemesen egyszerű módon. Egyszerűen ha itt megadjuk egy $scope-hoz rendelt változó nevét, akkor a rendszer ide behelyettesíti annak tartalmát, illetve ugyanez történik, ha valamilyen függvény hívást írunk a jelek közé (tulajdonképpen ide bármilyen egyszerűbb JavaScript kifejezést írhatunk). Utóbbira példa a {{remining()}} rész, előbbire pedig a {{todos.length}}. Ez tehát egy módja a model bekötésének. Eztán jön egy link ng-click attribútummal. Ez egy szép példa a controller bekötésére. Leírja, hogy egy esemény hatására milyen működésnek kell életbe lépnie. Ha ugye erre a linkre kattintunk (archive), akkor az archive() függvényt kell meghívni a $scope-ból. Eztán jön egy ng-repeat rész, ami megintcsak a  model bekötésének módja. Ez végigszalad a megadott változón, és közben egy másik változó minden körben felveszi az aktuális elem értékét. Itt ugye a todos változón szaladunk végig. Minden körben generálódik egy li elem, és a todo változó felveszi az aktuális elem értékét. A li elemben találunk egy checkbox-ot, amihez ng-model-el van hozzárendelve a todo elem done változója. Míg a {{}} jelek használata egyirányú összerendelés (csak odaírja a rendszer a változó tartalmát), addig az ng-model kétirányú. Tehát egyfelől az elem a változó tartalmának megfelelően viselkedik, másfelől a változó az elem állapotának megfelelő értéket kapja. Olyan mint ha innentől a változó a HTML elem leképződése lenne, ebben az esetben a checkbox-é. Ha a változó értéke változik, változik a checkbox állapota is, illetve ha a felhasználó változtat a checkbox állapotán, akkor változik a változó értéke is. A következő span részben az elem class-ja a todo.done-tól függ. Ez az egyszerű {{}} jeles behelyettesítés. Amire érdemes felfigyelni, hogy az egész dolog teljesen real-time. Tehát mikor beklikkeljük a checkbox-ot, és megváltozik a változó értéke, akkor vele együtt minden változóhoz kötött dolog is változik. Tehát jelen esetben az elem class-a is. Ezt ki is próbálhatjuk, ha jobb oldalon a checkbox-ra kattintunk. Nem kell azzal vesződnünk, mint mondjuk jQuery esetén, hogy a bejelölés eseményre rakjunk egy eseménykezelőt, ami megváltoztatja a másik elem class-át. Ezzel sokkal rövidebb, szebb, és tisztább kódot kapunk. Végül pedig van egy ng-submit eseménykezelő, ami az add gomb megnyomására meghívja az addTodo függvényt, ami berakja az új todo elemet, aminek tartalma az előtte lévő text elemben lévő ng-model attribútumnak hála a todoText változóba kerül.  

Hát, nagyon tömören ennyit akartam írni az alapokról. Az AngularJS nagyon sok mindent tud még ezen kívül. Definiálhatunk modulokat, saját attribútumokat, kommunikálhatunk a szerverrel, stb. de ezeknek már talán érdemes új bejegyzést szentelni. 

#blog   #angularjs  
http://angularjs.org

A pápaválasztást mutatták épp a híradóban, és elképzeltem, hogy vajon Jézus mit szólna, ha visszatérne így kétezer...

A pápaválasztást mutatták épp a híradóban, és elképzeltem, hogy vajon Jézus mit szólna, ha visszatérne így kétezer pár év után. Egész életében azon tépte a száját, hogy add a vagyonod a szegényeknek, segíts másoknak, szeressétek egymást, miegymás. Erre voltak itt keresztes háborúk, inkvizíció, arannyal díszített templomok, papok, pápák, meg az egész pereputty. Szerintem az első mondata az lenne, hogy "Mi ez a kupleráj?" :)

Coming from a jQuery background and interested in learning AngularJS? This post is for you!

Coming from a jQuery background and interested in learning AngularJS?  This post is for you!
http://blog.artlogic.com/2013/03/06/angularjs-for-jquery-developers/?utm_source=javascriptweekly&utm_medium=email

Ez sem mai darab már.

Ez sem mai darab már. Sokszor volt a TV-ben is (most is épp valahol megy, onnan jutott eszembe). Alapvetően szerintem zseniális az alapötlet, és a kivitelezés sem rossz. Végig izgalmas, és meg lehet nézni akár többször is. Persze bele lehet kötni a sztoriba sok helyen, de az ilyen típusú filmeknél ez alap. Aki még nem látta, annak nyugodt szívvel tudom ajánlani.

Filmajánló  

http://www.port.hu/a_felejtes_bere_paycheck/pls/w/films.film_page?i_film_id=57735
http://www.port.hu/a_felejtes_bere_paycheck/pls/w/films.film_page?i_film_id=57735

2013. március 14., csütörtök

Az normális, hogy március közepén nagyobb hó van, mint télen?

Az normális, hogy március közepén nagyobb hó van, mint télen? Valahogy az évszakokkal valami nincs rendben már pár éve, és egyre durvább az egész ...

Annak idején még Robert Cartman -nek csináltam egy minta kódot dinamikus üzenőfalra AngularJS-el, mert azzal baromi...

Annak idején még Robert Cartman -nek csináltam egy minta kódot dinamikus üzenőfalra AngularJS-el, mert azzal baromi egyszerűen meg lehetett csinálni. Azzal akkor egy bajom volt, hogy mikor új elemek jönnek a listába, nem tudtam szépen meganimálni, simán csak megjelentek az elemek, mivel azt az AngularJS saját hatókörben intézte. Most találtam egy mintát, hogy hogyan lehet ezt megoldani. Nagyon szépen működik, és jól mutatja az egész rendszer flexibilitását. Nagyon jó kis framework ez az AngularJS. Egyszerűen nem tudok belekötni ...

http://jsfiddle.net/pfqKY/51/
http://jsfiddle.net/pfqKY/51/

http://fa-bula.blog.hu/2013/03/13/a_mikrohullamu_suto_elpusztitja_a_rakellenes_tapanyagokat_az_elelmiszerekben_es_elo...

http://fa-bula.blog.hu/2013/03/13/a_mikrohullamu_suto_elpusztitja_a_rakellenes_tapanyagokat_az_elelmiszerekben_es_elosegiti_a_taplalko

Amindenit! blog szerinted?
http://fa-bula.blog.hu/2013/03/13/a_mikrohullamu_suto_elpusztitja_a_rakellenes_tapanyagokat_az_elelmiszerekben_es_elosegiti_a_taplalko
Az egyik weboldalamról lelopott e-mail címre kaptam spam-et, hogy vegyek weboldalt, mert az kell a cégemnek ... :)

Én RSS olvasásra Thunderbird-öt használok már nagyon régóta, úgyhogy annyira nem fáj a szívem a Google Reader miatt.

Én RSS olvasásra Thunderbird-öt használok már nagyon régóta, úgyhogy annyira nem fáj a szívem a Google Reader miatt. De a helyett, hogy kinyírják, szerintem jobban tették volna, ha valamilyen formában beolvasztják a G+-ba. Így nincs az, hogy valami felesleges fejlesztésre megy el az idő, hiszen így a Reader csak egy jelentéktelen funkció lenne a G+-ban. Igazából csak annyi kellene, hogy a feed-eket virtuális userekként, lehessen követni, fel lehessen venni körökbe, stb. Ennyi. A meglévő keresés, relevancia kezelés, a mobil felület, minden működhetne, ez a virtuális user kezelés pedig csak minimális fejlesztés lenne. Így nem hőbörögnének a Reader userek, aki eddig csak Readert használt, azt be lehetne húzni G+-ba, sőt megkockáztatom, hogy aki eddig más megoldást használt, viszont G+ user (pl. én a Thunderbirddel), az áttérne erre a hírolvasási módra. Plusz könnyebb lenne a híreket megosztani G+-on, így elősegítenék, hogy tartalom kerüljön a rendszerbe, amit aztán itt kommentálnak, stb. Szerintem ez egy nagyon jó lehetőség, amit most nagyon elb@sztak...

2013. március 13., szerda

Kéne egy olyan szolgáltatás, ahol generáltathatsz magadnak valami kamu e-mail címet, amit elhelyezhetsz az oldaladon...

Kéne egy olyan szolgáltatás, ahol generáltathatsz magadnak valami kamu e-mail címet, amit elhelyezhetsz az oldaladon valami nem látható helyen. Ha valahonnan erre az e-mail címre jön egy levél, az élből menne spam listára, a szerver pedig tiltó listára. Az ilyen címekre ugye normál esetben nem jönne e-mail, viszont a köcsög kis spam robotok felszednék őket. Nincs esetleg már valami ilyesmi?

WordPress (nagyon)gyorstalpaló (bővítmények fejlesztése)

WordPress (nagyon)gyorstalpaló (bővítmények fejlesztése)

Ez a bejegyzés némi PHP tudást feltételez, de ennek ellenére nem lesz bonyolult. Igazából szerintem a WordPress leglenyűgözőbb tulajdonsága az egyszerűsége. De lássuk, hogy is megy ez ...

Ahogyan a dolog nevéből is adódik, a bővítmények segítségével új funkcionalitással bővíthetjük a rendszert. Ilyen kiegészítők segítségével szinte bármit megvalósíthatunk. A bővítmények a sablonokhoz hasonlóan a wp-content mappában találhatóak, a plugins könyvtárban. A pluginek felépítése is nagyon hasonló a sablonokéhoz. A WordPress végigszalad a plugins könyvtár tartalmán. Az ott található php fájlok, illetve könyvtárak tartalmazhatnak plugineket. A plugin adatok a sablonokhoz hasonlóan a fájl elején kommentben találhatóak. Ha a plugin könyvtárban található, akkor a WordPress a könyvtár nevével megegyező php állományt keres. Tehát ha a plugin a 'test' könyvtárban található, akkor 'test.php'-t. Minden WordPress változatban található egy 'Hello Dolly' nevű teszt plugin, amit a plugins könyvtárban találhatunk hello.php néven. Ennek az elején láthatjuk az előbb említett komment részt a plugin nevével és leírásával. Ez alapján már elkészíthetjük a saját bővítményünket. Hozzunk létre mondjuk egy test.php nevű állományt a plugins könyvtárban, és kommentek segítségével adjunk neki nevet és leírást. Ha minden jól megy, ez már elég ahhoz, hogy a pluginünk megjelenjen a bővítmények listájában. Ugyanígy működni fog az is, ha a test.php-t egy test nevű könyvtárban helyezzük el az esetleges egyéb állományokkal.

Tehát van már egy bővítményünk, ami egyenlőre nem csinál semmit. Most jöhet az, hogy valami tényleges funkcionalitást adjunk a rendszerhez. Erre a WordPress-ben az action-ök és a filterek szolgálnak. Az action-ök olyan pontok a rendszerben, ahová saját működést szúrhatunk be. Ilyen action például az oldal fejlécének generálása, vagy éppen az, hogy a rendszer kigenerált egy blogbejegyzést. Vegyünk például egy olyan plugint, ami egy megosztó sávot (like, G+, stb.) helyez a bejegyzések aljára. Egy ilyen plugin-nak a bejegyzés generálása után meghívódó action-re kell regisztrálnia egy függvényt. Ahogy a WordPress generálja az oldal darabjait, az egyes action-öknél meghívja a mi kezelőinket, így avatkozhatunk be az oldalgenerálás folyamatába.

A filter a beavatkozás másik formája. Ez egy olyan függvény, ami valami adatot kap a paraméterében, és valami változtatást végez rajta. Így például bizonyos karaktersorozatokat cserélhetünk le a tartalomban, menü elemeket adhatunk az admin felülethez, és hasonlók.

Az action-ökön és filtereken túl van még pár lehetőség a működésbe való beavatkozásra, de az esetek nagy többségében ezeken keresztül adhatjuk hozzá az új működést a rendszerhez. Ráadásul a kialakítás annyira flexibilis, hogy szinte bármit megoldhatunk WordPress-en belül.

Igazából a plugin fejlesztésről könyvet lehetne írni, de indulásnak talán ennyi elég. A továbblépéshez a WordPress Codex vonatkozó fejezeteit tudom ajánlani: http://codex.wordpress.org/Plugins , de ezen kívül is sok tutorial található a weben, illetve sokat tanulhatunk már meglévő plugin-ek forráskódjának böngészésével is.

#blog

GitHub (vagy úgy általában Git) használatára Windows-on talán a legjobb eszköz a TorotiseGit.

GitHub (vagy úgy általában Git) használatára Windows-on talán a legjobb eszköz a TorotiseGit. Telepítés után a kiegészítő beköltözik a jobb klikkes menübe. Például ha egy GitHub tárolót szeretnénk xampp alá lehúzni, akkor létrehozzuk htdocs-ban a könyvtárat, jobb gomb rajta, Git clone, és már jön is a tartalom. Aztán ugyanúgy, ahogy Cloud9-en csináltuk, commit (ugyancsak a jobb gombos menüből), majd ha kész vagyunk, push vissza a GitHub-ra. Nagyon jó kis eszköz. Tulajdonképpen xampp + TortoiseGit + valami jó szövegszerkesztő hármassal egy ugyanolyan kényelmes fejelsztői környezetet rendezhetünk be desktopon, mint amilyen a Cloud9 online. 

https://code.google.com/p/tortoisegit/
https://code.google.com/p/tortoisegit/

2013. március 12., kedd

PHP naplózás Chrome JavaScript konzolra

PHP naplózás Chrome JavaScript konzolra

Ez is egy hasznos tool php-hoz. A Chrome JavaScript konzoljára lehet vele log-olni, így nem "piszkoljuk" össze az oldalt a debug üzenetekkel, var_dump-okkal, stb. A php-s logger a HTTP header-t használja a log üzenetek Chrome-hoz való továbbítására, így (elvileg) AJAX hívásokra is működik.

#blog  

http://www.chromephp.com/
http://www.chromephp.com/

PHP-ban a var_dump mellett egy másik nagyon hasznos fv.

PHP-ban a var_dump mellett egy másik nagyon hasznos fv. a debug_print_backtrace. Ki lehet vele íratni, hogy az adott fv. milyen hívási láncon (stack trace) hívódott meg (ki hívta őt).

http://www.php.net/manual/en/function.debug-print-backtrace.php 
http://www.php.net/manual/en/function.debug-print-backtrace.php

Érdekes kezdeményezés.

Érdekes kezdeményezés. Mondjuk a cikk elég szűkszavú. Kicsit nézelődtem az oldalon is, de ott sem derült ki olyan sok róla. Igazából az érdekelne, hogy hogyan tudják általános, minden robot által érthető formában megfogalmazni a tudást. A protokollból nekem csak annyi derült ki, hogy fel lehet tölteni "bigyókat", ezekre lehet keresni, meg le lehet őket tölteni, de hogy hogy néz ki egy ilyen "bigyó", arról nem nagyon találtam leírást. Azért érdemes rá odafigyelni, mert nagyon jó ötlet kiszervezni az intelligenciát a felhőbe. 

http://itcafe.hu/hir/robot_rapyuta_european_robo_earth.html
http://itcafe.hu/hir/robot_rapyuta_european_robo_earth.html

Reguláris kifejezés tesztelő cucc ... Nagyon hasznos!

Reguláris kifejezés tesztelő cucc ... Nagyon hasznos!

Robert Cartman találta nekünk

http://gskinner.com/RegExr/
http://gskinner.com/RegExr/

2013. március 11., hétfő

WordPress (nagyon)gyorstalpaló (sablonkezelés)

WordPress (nagyon)gyorstalpaló (sablonkezelés)

Most, hogy (kb. 5 perc munkával) sikeresen telepítettünk saját WordPress-t, elkezdhetjük testre szabni. Ennek legfontosabb része, hogy kialakítsuk az oldal külső megjelenését. A WordPress ilyen szempontból nagyon jól testre szabható a sablonok segítségével.

Lépjünk be a WordPress vezérlőpultjára, és válasszuk ki a Megjelenés menü / Sablonok részt. Itt jelennek meg a már elérhető sablonok, illetve van felül egy Sablonok telepítése fül, ott tudunk új sablonokat telepíteni. Mivel a weben több száz (de lehet, hogy több ezer) WordPress sablon megtalálható, ezért én azt javasolnám, hogy soha ne kezdjünk el nulláról sablont fejleszteni. Keressünk valamit, ami nagyjából megfelel az igényeinknek, és ha kell, azt módosítsuk tovább. Ha nem a belső sablonkeresőt használjuk, akkor weben a http://wordpress.org/extend/themes/ címen keresgélhetünk az ingyenes változatok közt. Ebből jelenleg 1700+ db van (!), ami nem kevés, de ha Google-ben rákeresünk a wordpress témákra, találunk még legalább ugyanennyit, illetve van sok fizetős is. Szóval tényleg hatalmas a felhozatal. Ha megtaláltuk a céljainknak leginkább megfelelő sablont, töltsük fel a sablonkezelőben, telepítsük, és szabjuk testre igényeknek megfelelően.

No, de hogy valamiről szóljon is a bejegyzés, lássuk mit kell tennünk akkor, ha saját sablont szeretnénk készíteni, vagy legalábbis átalakítani a már meglévőt. A WordPress wp-content/themes könyvtárában találhatóak meg a WordPress sablonok. A frissen telepített sablonunk is ide került be, így ha minden igaz, van ott egy könyvtár neki is. Új sablont hozzáadni elég egyszerű, ugyanis a WordPress egyszerűen végig szalad ezen a könyvtáron, és minden itt lévő alkönyvtárat sablonként értelmez. Az új sablon készítéséhez tehát fogjuk a már telepített (alapanyagnak leginkább megfelelő) sablont, és lemásoljuk mondjuk 'sajat_sablon' néven. Eztán lépjünk be a 'sajat_sablon' könyvtárba, és nyissuk meg az itt található style.css-t. Igazából itt van a trükk, ugyanis a style.css elején van egy komment rész. A WordPress innen olvassa ki a sablon adatait. Itt írjuk át a sablon nevét, megadhatjuk a készítőt, stb. Ha az adatokat módosítottuk, nézzünk rá WordPress-ben a sablonkezelőre. Ha minden jól megy, ott meg is jelent a saját sablonunk az általunk adott névvel. Ennyi, kész is életünk első WordPress sablonja. Az esetek nagy többségében általában sikerül jó alapot találni, és elég a css-t módosítani. Amennyiben ez nem elég, és bele kell nyúlni a html kódba is, úgy érdemes kicsit szétnézni a könyvtárban. Itt van pár PHP állomány, amik a weboldal különböző darabkáját tartalmazzák. Ezek igazából HTML fájlok némi PHP betéttel. Ha valamit módosítani kellene, akkor itt tehetjük azt meg. Mivel a sablonok felépítése többféle lehet, ezért nincs általános szabály arra, hogy mit hol találunk meg. Én azt szoktam csinálni, hogy megnézem az oldal aktuális állapotának forrását, keresek valami arra a részre jellemző motívumot (id-t, class-t, stb.) arra rákeresek a sablonba, és az így megtalált darabban már elvégezhető a módosítás.

Igazából a WordPress sablonkezelése még egy csomó mindent lehetővé tesz. Regisztrálhatunk dinamikus területeket widgeteknek, új funkcionalitást adhatuk az oldalnak, stb. Tulajdonképpen bármit ki lehet alakítani így. Akár egy teljes Facebook, vagy Google+ oldal is megvalósítható a WordPress sablonrendszerének segítségével, nincs semmi, ami bármiben is korlátozna.  Ez viszont már a mély víz (vagy legalábbis mélyebb) kategória, így túlmutat egy ilyen rövid bejegyzés határain. Indulásnak szerintem ennyi bőven elég. Aki jobban el akar mélyedni a témában, az talál bőven leírásokat a weben.

A továbblépéshez itt egy nagyon jó infografika és leírás a sablonok működéséről: http://yoast.com/wordpress-theme-anatomy/

Illetve a hivatalos WordPress doksi: http://codex.wordpress.org/Theme_Development 

#blog

WordPress (nagyon)gyorstalpaló (telepítés)

WordPress (nagyon)gyorstalpaló (telepítés)

Ez a rövid bejegyzés arról fog szólni, hogy hogyan telepíthetünk WordPress-t a már előzőleg feltelepített XAMPP rendszerünkre.

Először töltsük le a WordPress legújabb példányát a http://wphu.org/letoltes oldalról. Hozzunk létre egy könyvtárat a xampp könyvtárában lévő htdocs mappában. Legyen a könyvtár neve mondjuk wp. Zippeljük ki a letöltött WordPress csomagot ebbe a wp mappába. Indítsuk el az Apache-ot és a MySQL-t, majd nyissuk meg a böngészőben a http://localhost/wp oldalt.

A megjelenő install képernyőn meg kell adnunk az adatbázis adatait, ehhez viszont létre kell hoznunk egy adatbázist. Az adatbázis adminisztrációs felületet a http://localhost/phpmyadmin oldalon találjuk meg. Itt az adatbázisok tabfül alatt hozhatunk létre adatbázist. Legyen az adatbázis neve mondjuk wordpress, az illesztésnél pedig válasszuk ki az utf8_unicode_ci-t. Létrehoz, és már kész is az adatbázis. Térjünk vissza az admin oldalra, az adatbázis nevénél adjuk meg a frissen létrehozott adatbázis nevét (jelen esetben wordpress), a felhasználó root, a jelszó pedig üres. Ha megnyomtuk a tovább gombot, a rendszer kér még pár adatot, majd létrehozza az új wordpress változatot.

Igazából ennyi az egész. Pár egyszerű lépés, és már használatba is vehetjük új WordPress oldalunkat. 

#blog

A legjobb reklám a Tanuljunk együtt IT (https://plus.google.com/communities/1079478452291458265) csoportnak ...

A legjobb reklám a Tanuljunk együtt IT (https://plus.google.com/communities/1079478452291458265) csoportnak ...

Originally shared by Papp Zsolt

Az hogy harom napja tudok a Git-rol ugy egyaltalan de eppen most huztam le a Drupal core-t a gepemre terminalbol az vagany nem? :)

Kéne csinálni egy weboldalt (mondjuk szamoljaki.hu vagy valami), ahol szépen végig van számolva minden, banki...

Kéne csinálni egy weboldalt (mondjuk szamoljaki.hu vagy valami), ahol szépen végig van számolva minden, banki hitelek, befektetések, mindenféle. És akkor lehetne látni, legalább nagyságrendileg, hogy mi mennyi. Az ötlet onnan jött, hogy láttam Fundamentás hirdetést. Az valahogy úgy van, hogy nem kamatozik semmit, viszont van 30% állami támogatás, ami jól hangzik, de leghamarabb 4 év múlva lehet felvenni lakás célra, vagy 8 év múlva nem lakás célra. Na, nem is ez a lényeg, csak ha ezt az ember leosztja évekre, és kiszámolja, aztán meg kiszámolja, hogy ugyanaz a pénz lekötve valami 10% alatti kamatos kamattal hol tartana ugyanannyi év múlva, akkor szerintem utóbbi ráverne az előbbire, hiába néz ki olyan jól az a 30%. Nem számoltam végig, nem is az a lényeg, csak innen jött az ötlet ...

Kemény Zsolt

Jópofa ... Mondjuk eleve a chrome://flags -ben van pár érdekesség.


Jópofa ... Mondjuk eleve a chrome://flags -ben van pár érdekesség.

Originally shared by Sancho Vi At

Google Chrome alkalmazásindító panel bekapcsolása Windows alatt: #fb   #tw  
Amolyan Start menü szerűen bekapcsolhatod a Chromebook OS-hez hasonlóan a Chrome alkalmazásaidat megjelenítő panelt az alábbi módon:

► írd be a böngészősorba, hogy chrome://flags,
► keresd meg a Chrome alkalmazásindító megjelenítése. sort,
► kattints az Engedélyezés linkre,
► indítsd újra a böngészőt,
► figyeld a Windows eszköztáradon a 3x3-as négyzet megjelenését.

Forrás: http://goo.gl/az30R Tőle: http://goo.gl/9q2V8

2013. március 10., vasárnap

Tegnap este néztük az AVATAR extened collectors edition-t.

Tegnap este néztük az AVATAR extened collectors edition-t. Ha választanom kellene, hogy melyik a legjobb film amit egész életemben láttam, és csak egyet választhatnék, akkor az AVATAR lenne az. Ráadásul aki teheti, szerintem nézze meg az extended változatot, van benne pár jó jelenet, és kiderül pár dolog. Például szerintem a mozis változatból nem derült ki, hogy az értékes ásvány, amiért az emberek a bolygóra jöttek egy szobahőmérsékletű szupravezető. Mondjuk ez a dolog lehet, hogy csak nekem érdekes ... :)

Filmajánló

Én ezt a szövegszerkesztőt szoktam használni PHP kódok írásához (meg úgy általában szövegszerkesztőnek).

Én ezt a szövegszerkesztőt szoktam használni PHP kódok írásához (meg úgy általában szövegszerkesztőnek). Egyszerű eszköz, semmi extra, csak van benne szintaxis kiemelés. Van még egy rakás olyan szövegszerkesztő, ami szépen színezi nekünk a PHP kódot, de én ezt szoktam meg. 

http://www.scintilla.org/SciTE.html
http://www.scintilla.org/SciTE.html

Lokális fejlesztés XAMPP használatával

Lokális fejlesztés XAMPP használatával

Habár induláshoz szerintem a Cloud9 a legalkalmasabb (regisztrálás után egy pöccre összelőtt felületet kapuk szerkesztővel, szerverrel, git-el, mindennel), kicsit komplexebb projektekhez már a XAMPP-ot (http://www.apachefriends.org/en/xampp.html) ajánlanám. A XAMPP egy egyszerűen telepíthető környezet, mely tartalmazza a webszervert (apache), az SQL szervert (MySQL), a PHP futtatókörnyezetet, és még pár hasznos dolgot. Igazából a legnagyobb előnye a Cloud9-el szemben az SQL szerver (MySQL), amit Cloud9 esetén csak a fizetős változatban kapunk. Hátránya pedig, hogy telepíteni kell, nem kapunk kényelmes kódszerkesztőt, és Git támogatást.

A XAMPP telepítése után simán a létrejött parancsikonra kattintva indíthatjuk. Itt a megjelenő vezérlőpanelen indítsuk el az apacehe-ot és a mysql-t. Másra egyelőre nem igen lesz szükség. A http://localhost címet a böngészőben megnyitva rögtön láthatjuk is hogy fut, és innen el is érhetünk pár hasznos toolt.

A PHP-s oldalak futtatása sem sokkal bonyolultabb. Keressük ki az a könyvtárat, ahová a XAMPP-ot telepítettük. Itt a htdocs könyvtárban hozzunk létre egy alkönyvtárat mondjuk 'teszt' néven. A könyvtárban hozzunk létre egy teszt.php állományt, és másoljunk bele valami PHP-s kódot. Majd nyissuk meg böngészőben a http://localhost/teszt/teszt.php url-t, és ha minden igaz, látni is fogjuk az eredményt. Ha a teszt.php-t átnevezzük index.php-ra, akkor elég a http://localhost/teszt címet megadni, mivel alapbeállítás szerint ez az alapértelmezett PHP állomány, amit akkor futtat a webszerver, ha nincs külön PHP állomány megadva.

Igazából ennyi elég is az induláshoz ...
 
#blog  
http://www.apachefriends.org/en/xampp.html

Cloud 9 használata GitHubbal (4.)

Cloud 9 használata GitHubbal (4.)

Habár az előző bejegyzésről azt mondtam, hogy az lesz az utolsó, van még egy dolog, ami fontos lehet. Ha forkoltunk egy tárolót, az a későbbiekben változhat (új fejlesztések, hibajavítások kerülnek a mester változatba), ezeket a változásokat pedig vissza kell húznunk a saját águnkba, hogy dolgozhassunk vele. Ezt a következő módon tehetjük meg:

Lépjünk be cloud9-be, és nyissuk meg szerkesztésre a helyi klónt.

Adjuk ki a git remote add upstream parancsot. Ezt elég egyszer megcsinálni, a későbbiekben ezt a parancsot már nem kell majd kiadnunk.

A git fetch upstream paranccsal húzzuk le a változásokat, majd a git merge upstream/master paranccsal fésüljük be azokat a saját változatunkba. Így tehát a helyi változat már frissült a mester változatból.

Innen pedig már csak a szokásos git push paranccsal toljuk vissza az egészet GitHub-ra. Így frissíthetjük a lokális változatot a mester tárolóból.

#blog

A WordPress-ről sokan azt gondolják, hogy csak egy szimpla blog engine, pedig ez messze nem igaz.

A WordPress-ről sokan azt gondolják, hogy csak egy szimpla blog engine, pedig ez messze nem igaz. Az alábbi oldal jó példa arra, hogy megfelelő pluginek segítségével akár komplett közösségi portált is fel lehet építeni WordPress-re. Ha web portál építésébe kezdünk, mindenképp érdemes meggondolni valami CMS rendszer (Drupal, Joomla, vagy éppen WordPress) használatát, és bővítmények segítségével megoldani a feladatot. Általános ökölszabály, hogy akkor kezdjünk csak el vadul programozni, ha már biztosak vagyunk benne, hogy a probléma megoldására nincs már létező megoldás.

Robert Cartman 

http://dirtywindows.hu/
http://dirtywindows.hu/

Nem hiszek abban, hogy bárkit is negatív megerősítéssel ösztönözni lehetne bármire.

Nem hiszek abban, hogy bárkit is negatív megerősítéssel ösztönözni lehetne bármire. A rossztól való félelem korlátozhat ugyan, de igazán ösztönözni szerintem nem lehet így. Ha valakinek az épülését kívánjuk, mindig csak dicsérjük, soha ne kritizáljuk élesen. Legalábbis én így gondolom ...


#blog

Kikerült a GitHub-ra az AngularGWT első változata, ami a Google két nagy sikernek örvendő technológiáját, az...

Kikerült a GitHub-ra az AngularGWT első változata, ami a Google két nagy sikernek örvendő technológiáját, az AngularJS-t és a GWT-t ötvözi. Így a Model-View összerendelést deklaratív úton az AngularJS-el végezhetjük, míg a controllert Java-ban fejleszthetjük. Szerintem ha rendesen kiforrja magát a technológia, akkor nagyon hatékony eszköz lehet a fejlesztők kezében.

Amikor Ray Cormwell (aki a GWT fejlesztésének vezetője) a Bombermine-ról posztolt (https://plus.google.com/110412141990454266397/posts/FxRjuNDUuN1), felvetettem, hogy kellene valami szép megoldás gwt-s angularjs controllerek írására. Persze lehet, hogy akkor már megvolt a fejében az ötlet, az is lehet, hogy ez már azelőtt több ezer embernek eszébe jutott. Minden esetre hátha esetleg volt ennek valami halvány köze ahhoz, hogy megszületett ez a projekt. :)

Originally shared by Ray Cromwell

Ok, my hacked up AngularJS + GWT integration is available on GitHub. Uses a ton of code-generators and 'configuration by convention' to try and keep boilerplate to a minimum while preserving AngularJS idiomatic feel.

Works great with SuperDevMode, probably doesn't work at all with regular DevMode. I haven't tried it yet, but a lot of JSO and compiler-casting magic is going on that will probably break a JVM hosted module.

Lots of goodies: Use interfaces to define object literals with typed getters/setters, using either JavaBean style, or fluent style. Implementation backed by JSO is auto-generated. Two kinds: Model (just plain old json object), and Scope, which is backed by a AngularJs $scope object and has extra methods.

You can register a watch function just by annotating any function as @NgWatch. You can make something injectable by adding @NgInject to its type, and then when you refer to it in methods, like a controller method, $inject will be automatically set up.

You can register controller actions just by adding public methods to a controller. That's it. You can compare with JS here: https://github.com/addyosmani/todomvc/tree/gh-pages/architecture-examples/angularjs/js

Here's how you configure an Angular module.
@NgName("todomvc")
@NgDepends({TodoStorage.class, TodoFilter.class, TodoController.class, TodoBlurDirective.class,  TodoFocusDirective.class})
public class TodoAppModule implements AngularModule {}

That's about the most boilerplate config you need. This tells the code generator what dependency injections to register.

Here's how you define a storage service:
@NgInject(name= "todoStorage")
public class TodoStorage {
  private static final String STORAGE_ID = "todos-angularjs";

  public ArrayOf get() {
    ArrayOf todos = reinterpret_cast(Json.parse(Browser.getWindow().getLocalStorage().getItem
        (STORAGE_ID)));
    return todos == null ? JsArrayOf.create() : todos;
  }

  public void put(ArrayOf todos) {
    Browser.getWindow().getLocalStorage().setItem(STORAGE_ID, toJson(todos));
  }
}

Here's how you define a directive:
public class TodoBlurDirective implements Directive {

 @NgDirective("todoBlur")
  public void blur(final TodoScope scope, final NgElement element,
                   final JsonObject attrs) {
    element.bind("blur", new Runnable() {
      public void run() {
        scope.$apply(attrs.getString("todoBlur"));
      }
    });
  }
}

Here's how you define a controller:
@NgInject(name= "TodoCtrl")
public class TodoController extends AngularController {

  private ArrayOf todos;
  private Location location;
  private TodoStorage store;
  private TodoFilter filterFilter;

  public void onInit(TodoScope scope, Location location, TodoStorage store, TodoFilter filter) {
    this.location = location;
    this.store = store;
    this.filterFilter = filter;
    scope.newTodo("")
        .editedTodo(null)
        .location(location);
    this.todos = store.get();
    scope.todos(todos);
    if ("".equals(location.path())) {
      location.path("/");
    }
  }

 @NgWatch(value= "todos", objEq = true)
  public void $watchTodos() {
    Todo todoPredicate = makeTodo();
    todoPredicate.setCompleted(false);
    scope.remainingCount(filterFilter.filter(todos, todoPredicate).length())
        .doneCount(todos.length() - scope.remainingCount())
        .allChecked(scope.remainingCount() != 0);
    store.put(todos);
  }

 @NgWatch("location.path()")
  public void $watchPath(String path) {
    scope.statusFilter("/active".equals(path) ?
        makeTodo().setCompleted(false) :
        "/completed".equals(path) ?
            makeTodo().setCompleted(true) : null);
  }

  private Todo makeTodo() {
    return make(GWT.create(Todo.class));
  }

  public void addTodo() {
    if (scope.newTodo().length() == 0) {
      return;
    }
    Todo newTodo = makeTodo();
    newTodo.setTitle(scope.newTodo())
        .setCompleted(false);
    todos.push(newTodo);
    scope.newTodo("");
  }

  public void doneEditing(Todo todo) {
    scope.editedTodo(null);
    if ("".equals(todo.getTitle())) {
      removeTodo(todo);
    }
  }

  public void editTodo(Todo todo) {
    scope.editedTodo(todo);
  }

  public void removeTodo(Todo todo) {
    todos.splice(todos.indexOf(todo), 1);
  }

  public void markAll(boolean done) {
    for (Todo todo : iterable(todos)) {
      todo.setCompleted(done);
    }
  }

  public void clearDoneTodos() {
    ArrayOf result = JsArrayOf.create();
    for (Todo todo : iterable(todos)) {
      if (!todo.getCompleted()) {
        result.push(todo);
      }
    }
    scope.todos(result);
  }
}
https://github.com/cromwellian/angulargwt/

Google Chrome Developer Tools

Google Chrome Developer Tools

Ha valaki Eclipse-ből szeretne JavaScript-et debugolni, annak ez egy nagyon hasznos kis eszköz. Most próbáltam ki. Beszippantja Chrome-ból a JavaScript-eket, amiket szépen meg lehet nyitogatni, el lehet bennük helyezni brakepoint-ot, nézegetni a változók tartalmát, sőt, még át is lehet írni a JS-t, és visszanyomni a böngésző v8-as virtuális gépébe. Igazából a Chrome beépített debuggere többet tud. Akkor lehet kényelmes, ha tiszta JavaScript-et szeretnénk debugolni. 

https://code.google.com/p/chromedevtools/

#blog  
https://code.google.com/p/chromedevtools/

2013. március 9., szombat

Papp Zsolt Mit szólnál, ha a GitHub kategóriát neveznénk át fejlesztő eszközöknek?

Papp Zsolt Mit szólnál, ha a GitHub kategóriát neveznénk át fejlesztő eszközöknek? Szerintem csak a GitHub-nak felesleges külön kategóriát fenntartani, elég lenne egy kategória, ahová bármilyen fejlesztő eszközzel kapcsolatos írás kerülne. Illetve nem tudom, hogy SSH-t van-e értelme külön kiemelni. Én azt dobnám, mint külön kategóriát.

Cloud 9 használata GitHubbal (3.)

Cloud 9 használata GitHubbal (3.)

Ebben a harmadik (és ebből a sorozatból szerintem utolsó) részben azt írom le, hogy hogyan szállhatunk be más GitHub-os fejlesztésekbe és hogyan dolgozhatunk együtt másokkal. Igazából itt fog összeérni a három írás és remélhetőleg sikerül rávilágítani arra is, hogy miért olyan nagyszerű eszköz a GitHub, ha nyílt forrású fejlesztésen törjük a fejünket.

Ha minden igaz, akkor már van GitHub accountunk. Tegyük fel, hogy találtunk egy projektet aminek a fejlesztésébe szeretnénk beszállni. Van valami jó ötletünk, valami feature, vagy hibajavítás. Jelen esetben legyen ez a projekt az általam létrehozott PHP mintaprojekt, ami itt érhető el: https://github.com/TheBojda/php-examples . Ha be vagyunk jelentkezve GitHub-ra, felül fogunk látni egy Fork gombot. Ezt megnyomva a tárolóról némi pötyörgés után készül egy másolat, ami bekerül a saját tárolóink közé.

Most hogy már van saját példányunk, lépjünk be cloud9-be, és a már leírtaknak megfelelően húzzuk be a GitHub-ról a tartalmat, futtassuk, módosítsuk, majd toljuk vissza GitHub-ra.

Ha a változások már GitHub-on vannak, akkor jön a varázslat, amiben a GitHub ereje rejlik. Van felül egy pull request gomb. Ezt megnyomva küldhetünk egy kérelmet az eredeti tároló tulajdonosának, hogy olvassza be a mi változtatásainkat a fő ágba. A pull requesthez írhatunk valami leírást, és a projekt gazdájának számára is jól látszik, hogy a változtatás miket foglal magában. Így nagyon egyszerű módon hozzájárulhatunk más projektekhez. Nem kell kérnünk, hogy felvegyenek a fejlesztő csapatba, nincs szükség semmilyen felesleges interakcióra. Egyszerűen csak fogjuk a cuccot, kérünk belőle egy másolatot, változatunk/hozzáadunk amit gondolunk, majd küldünk egy pull request-et, ami alapján vagy beolvasztják a változtatásainkat a projektbe, vagy nem. Többek között például sok Google projekt is a GitHub-ot használja. Például a népszerű AngularJS keretrendszer tárolójában várakozó pull request-eket itt láthatjuk: https://github.com/angular/angular.js/pulls . Ezek mind olyan emberek hozzájárulásai a Google keretrendszeréhez, akik nem Google alkalmazottak. Egyszerűen csak használják a rendszert, és így segítik a rendszer fejlődését. Ettől lesz az egész nyílt forrású fejlesztés közösségi ... 

#blog

Nem tudom ki mennyire ismeri a Chrome fejlesztői eszközeit, de mindenkinek csak ajánlani tudom.

Nem tudom ki mennyire ismeri a Chrome fejlesztői eszközeit, de mindenkinek csak ajánlani tudom. Lefigyelhetjük vele a hálózati forgalmat (ajax alkalmazásoknál hasznos), megnézegethetjük vele az aktuálisan megjelenő (tehát adott esetben JavaScript által módosított) HTML forrást, láthatjuk, hogy melyik elem milyen css-ből milyen tulajdonságokat örököl, és mind ezeket, mind magát a HTML kódot módosíthatjuk. De ez így még mind hagyján. Beépítve kapunk egy fullos JavaScript debuggert brakepointokkal, watch-al, és sourcemaps-el. De ami még ennél is jobb, és nemrég nagyon jól jött, hogy brakepointokat rakhatunk ajax hívásokra (vagy mindenre, vagy URL-re szűrve), illetve HTML elemekre is. Aki próbált már rájönni arra, hogy egy HTML elemet milyen JavaScript módosítgat, az tudja mire gondolok. Nekem konkrétan egy olyan problémám volt, hogy egy formot eltüntetett valami JS, mikor postoltunk. Namost egy ilyet nem tudom más eszközzel hogy lehet elkapni. Itt egyszerűen rak egy brakepointot az ember az adott HTML elemre, és mikor az módosul, látjuk a hívási láncot, ahol szépen látszik, hogy melyik JS melyik sorából jött a hívás. Aki komolyabb kliens oldali JavaScripteken töri a fejét, annak "must have" ...

2013. március 8., péntek

Cloud 9 használata GitHubbal (2.)

Cloud 9 használata GitHubbal (2.)

Az előző rész alapján már elvileg bárki le tudja klónozni cloud9-be más GitHub tárolóját, és futtathatja onnan annak tartalmát. Most arról írnék röviden, hogy hogyan használhatjuk a saját GitHub tárolónkat saját projektjeink fejlesztéséhez. Nem lesz sokkal bonyolultabb, mint az előző ...

Először is regisztráljunk GitHub-on egy felhasználót. Ha ez megvan, akkor jobb felső sarokban a kis könyves plusszos ikonnal csináljunk egy tárolót ('create new repo'). Alul van egy checkbox, hogy csináljon readme-t is, jelöljük be azt is. Megadjuk a nevet, és kész is a repo, jöhet a cloud9.

Most hogy van GitHub felhasználónk, azzal be is léphetünk cloud9-re, vagy ha már van felhasználónk, a profil oldalon hozzárendelhetjük a GitHub felhasználónkat. Ha ez megvan, akkor elvileg cloud9 ben bal oldalon alul meg is jelennek a github tárolóink, köztük az újjal, amit most hoztunk létre. Ez a tároló a GitHub-on létezik, így a szerkesztéshez le kell klónozni cloud9-be. Ehhez elég kiválasztani bal oldalon a repo-t, majd megnyomni a 'clone to edit' gombot felül. Ha ez megvolt, akkor létrejön a workspace, és lehet szerkeszteni.

Hozzunk létre mondjuk egy php állományt, írjunk bele valami tartalmat, futtassuk, stb. Lényeg, hogy legyen valami tartalom, amit visszatölthetünk a repo-ba.

Na, ha már van tartalom is, akkor jön a git, aminek használatához parancssor szükséges. A terminált a képernyő alján találjuk, itt adhatjuk ki a parancsokat. 

A git add paranccsal jelölhetjük meg az egyes állományokat verzionálásra, vagy git add . használatával egyből hozzáadhatjuk az összes állományt. A git az így megjelölt fájlokat fogja a továbbiakban kezelni.

A git add után git commit -m 'Leírás' paranccsal tolhatjuk ki a változásokat a cloud9-en lévő helyi tárolóba. Ennek a mi esetünkben nem sok értelme van, de ha valami nagyobb fejlesztésen dolgozunk, akkor érdemes lehet fejlesztés közben mentegetni. Az így létrejött verziókra később visszatérhetünk, megtekinthetjük a különbségeket, stb. Egyenlőre most ezekkel ne foglalkozzunk, lényeg, hogy commit-al kikerültek a helyi (cloud9-es) tárolóba a változások.

Végül a git push parancs kiadásával a lokális tárolóból kitolhatjuk a tartalmat a GitHub-ra. Ha minden jól ment, akkor ha visszanézünk a GitHub-ra, látni fogjuk ott a művünket. Azt mások is megtekinthetik, leklónozhatják, fejleszthetik, stb. Ezzel jegyet váltottunk a nyílt forrású fejlesztők közösségébe.

A következő részben arról lesz szó, hogy hogy szállhatunk be már meglévő projektek fejlesztésébe.

#blog

Lebegő szigetek

Lebegő szigetek

Épp kinéztem az ablakon, és elég borús az idő. Arra gondoltam, milyen jópofa lenne héliummal töltött léghajókkal mesterséges szigeteket emelni a felhők fölé, ahol mindig süt a nap, és gyönyörű a kilátás. A sziget energiaellátása mehetne napelemről, és szélerőművekről, és eleve az egész önfenntartó lenne. Saját víztisztító rendszer, saját kis kertek az élelem megtermelésére, úgy, mint egy valódi szigeten. Szerintem egy ilyen viszonylag hamar visszahozná az árát az ide szervezett luxusnyaralásokból, de később akár egy alternatív megoldás is lehetne a föld túlnépesedésének kezelésére.

#blog

Felvettem még 3 kategóriát.

Felvettem még 3 kategóriát. JavaScript alapok, Java alapok és Python alapok címmel. Igazából az én javaslatom annyi, hogy azért alapvetően ez maradjon egy kezdő közösség. Tehát olyan posztokat, kérdéseket, stb. küldjetek, amik kezdőknek szólnak, mert ez még így belefér egy csoportba, de ha ilyen általános jellegű (vagy profi szintű) JavaScript/Python/Java/stb. viták indulnak, akkor káosz lesz. Ezek mind olyan nagy területek, amik már lefednek egy külön közösséget. Szerintem legalábbis ...

2013. március 7., csütörtök

Cloud 9 használata GitHubbal (1.)

Originally shared by Laszlo Fazekas

Cloud 9 használata GitHubbal (1.)

A GitHub amolyan közösségi tér fejlesztőknek (itt írtam róla kicsit: http://lf.estontorise.hu/archives/288). Papp Zsolt -al beszélgettünk kicsit, és végül az lett a konklúzió, hogy érdemes ezt az eszközt már a tanulás elején megismerni, mivel már ebben a fázisban jó hasznát vehetjük.

Ebben a bejegyzésben azt fogom leírni, hogy hogyan lehet egy már GitHubon létező projektet behúzni cloud9 (http://c9.io) alá, és futtatni. A későbbiekben tervezem, hogy készülne 1-2 további bejegyzés arról, hogy hogyan hozhatunk létre saját GitHub repository-kat, illetve hogyan járulhatunk hozzá más open source projektek fejlesztéséhez.

Egy GitHub-os projektet nagyon egyszerű behúzni cloud 9 alá. Egyszerűen jelentkezzünk be (ez előtt persze regisztráljunk cloud 9-en), majd válasszuk a 'Create new workspace' részt, azon belül pedig a 'Clone URL'-t. Itt kell megadnunk a GitHub-os tároló nevét. Én direkt teszt célra csináltam egy git://github.com/TheBojda/php-examples.git tárolót, így jobb híján adjuk meg azt- 'Create', és már kész is a klón. Válasszuk ki a listából, majd nyomjuk meg a 'Start Editing'-et, így megjelenik a szerkesztő. Itt nyissuk meg az index.php-t a hello_world mappából, majd jobb felül nyomjuk meg a Run gombot. Az alul megjelenő URL-re kattintva megnyithatjuk azt a beépített böngészőben, és láthatjuk az eredményt. Ha valamit átírunk a kódon, elég menteni, majd frissíteni a beépített böngészőt, és már látszik is az eredmény.

Hát, igazából ennyi. Nem egy nagy varázslat ... 

#blog  
http://lf.estontorise.hu/archives/288