EgyProgramozo

PHP/NodeJS programozó, Linux Desktop/Server fan

Clean code a gyakorlatban
Clean code a gyakorlatban

Ha programozóként tévedtél ide, akkor biztos foglalkoztat hogyan lehetne minőségi kódot előállítani. Ez egy művészet, de mint mindent, sok gyakorlással és tapasztalással ez is elsajátítható. Az elején még nagyon fájdalmas lecserélni a $c változót egy sokkal beszédesebb, kifejezőbb névre, de pár hét/hónap múlva, mikor újra dolgoznod kell az adott résszel meg fogod köszönni magadnak.

Tervben van, hogy konkrét példákon keresztül fogom bemutatni hogyan lehet széppé tenni az örökölt kódjainkat, de addig is 2 nagyon jó videót szeretnék megosztani a témában:

2019.07.25.
Legacy Kód
Legacy Kód

A típusosság és a változó fontos dolog:

2019.06.18.
Programozzunk 3D-t
Programozzunk 3D-t

Elsőre kb mindenkinek az AutoCAD ugorhat be ha valami modellezésről van szó. Ha valaki kicsit is érdeklődik a 3D nyomtatás iránt, akkor találkozhatott a következőkkel: FreeCAD, ThinkerCAD, Blender, stb. De mi van akkor, ha nem akarunk kattingatni?

2018.11.06.
Chrome futtatás headless módban
Chrome futtatás headless módban

Selenium teszt futtatáshoz előbb vagy utóbb elengedhetetlen, hogy egy olyan szerveren fusson a kód, ahol nincs vizuális felület. Ez lehet egy tényleges konzolos szerver vagy egy docker image. Szóval ami kell hozzá:

2018.09.29.
Független projektek egy git repóban
Független projektek egy git repóban

Git-nél alapértelmezetten az első commit lesz az ős és erre tudunk építkezni. Viszont nem minden esetben lehet szükségünk rá:
Ha szűkölködünk a repókban vagy ha a kód annyira elfajzott, hogy minden telepítés más és más lett idővel ez egy nagyon hasznos trükk:<!--more-->

2018.02.13.
Gitlab pipeline deploy
Gitlab pipeline deploy

Ha Gitlabot használunk és szeretnénk a PHP projektünket commit után közvetlen deployolni a sandbox szerverünkre, a következőkre lesz szükségünk:<!--more-->

2018.02.09.
Csak agilisen

Forrás: HWSW

2017.05.22.
CodeBug
CodeBug

Ha még csak most ismerkedünk a programozással vagy mással szeretnénk megismertetni, ez egy remek kézzelfogható lehetőség:<!--more-->

2017.05.01.
Közösségi Code Kata
Közösségi Code Kata

Ha unnánk már a magunkban Katázást, akkor a CodeWars igazi felüdülés lesz.

2017.04.24.
PHP CLI progress bar
PHP CLI progress bar

Terminálban jól jöhet néha egy progress bar:

2017.03.16.
A defenzív programozás művészete
A defenzív programozás művészete

Hogyan írjunk biztonságos kódot

2016.12.26.
Docker webfejlesztéshez
Docker webfejlesztéshez

Dockerfile és docker-compose.yml egy új projekt elkezdéséhez vagy egy meglévő tuningolásához:

2016.11.17.
Legacy kód
Legacy kód

Avagy, hogyan ne programozzunk:<!--more-->

2016.10.09.
Code Kata
Code Kata

Ahogy a zenészeknek, úgy a programozóknak is gyakorlásra van szükségük, hogy minél könnyedebben tudjanak feladatokat megoldani. Erre szolgálnak a Katák. A Kata a harcművészetben ismert formagyakorlat, amelyben a gyakorló elképzelt ellenféllel dolgozik. A gyakorlatok folyamatos ismétlése segít memorizálni a helyes mozgást.<!--more-->

2016.09.04.
Minden napra egy könyv

[http://lefty.im/](http://lefty.im/)
http://lefty.im

2016.08.15.
nCore aktivitás könyvjelzőzés hack
nCore aktivitás könyvjelzőzés hack

Az rss csatornás letöltéshez egy kis segítség, ha szeretnénk az nCore Aktivitás oldalon lévő összes elemet egyszerre hozzáadni a könyvjelzőinkhez:

2015.12.25.
Git fájl jogosultság mellőzés
Git fájl jogosultság mellőzés

A git alapértelmezetten figyeli a fájl, mappa jogosultságának változását, ami nem feltétlen szerencsés bizonyos esetekben.

2015.08.06.
PHP 5.6 függvény paraméter lekérés
PHP 5.6 függvény paraméter lekérés

Kicsit el vagyok maradva a php újabb verziót illetően, mert a legtöbb helyen régebbire kell kódolni és így néha érnek meglepetések 🙂<!--more-->

2015.05.25.
Epson TM-T20II
Epson TM-T20II

A megérkezés után jöhet a tényleges fejlesztés. Mit is lehet csinálni egy ilyen nyomtatóval?
<!--more-->

2015.04.28.
Rendező algoritmusok
Rendező algoritmusok

A rendezés hangja:

2015.04.22.
Programozó betűtípus
Programozó betűtípus

Kicsit már unalmas mindig ugyanazokat a betűket bámulni, de keresgélve a neten rengeteg alternatív betűtípust lehet találni. Jelenlegi kedvencem az Inconsolata, de ezen a linken számos más font is elérhető.<!--more-->

2015.04.14.
Programozó kifogás naptár
Programozó kifogás naptár

Réges régen rábukkantam egy irományra, ami egy rendszergazda napjait írja le. Ez volt A Pokoli Operátor naplója.
Aki még nem olvasta, az feltétlen pótolja… Ebben Simon egy naptárból veszi az aktuális kifogásokat, ami teljes mértékben értelmetlen, de az egyszerű felhasználókat simán meg lehet vezetni vele.

2015.04.08.
HTML, CSS, JavaScript Guideline
HTML, CSS, JavaScript Guideline

Egy rövid leírás, hogyan használjuk a HTML, CSS,  JavaScript nyelveket: https://github.com/bendc/frontend-guidelines

2015.03.16.
PHP strip_tags alternatíva
PHP strip_tags alternatíva

A strip_tags() függvénnyel az a nagy probléma, hogy a multibyte-os karaktereket hibásan kezeli. Erre egy lehetséges megoldás:
<!--more-->

2015.03.02.
Sublime Text + PlainTasks
Sublime Text + PlainTasks

A munka során szükség lehet todo listára, amire rengeteg online elérhető szolgáltatás van, de néha elég egy egyszerű txt is.
Egy ilyen megoldás/szabvány a todo.txt, amihez rengeteg alkalmazás létezik, de a Sublimehoz találtam egy “szebb” lehetőséget.
<!--more-->

2015.02.24.
Git utolsó commit visszavonás
Git utolsó commit visszavonás

Ha még nem push-oltuk a commitunkat, akkor lehetőség van visszaállni az előző állapotra:<!--more-->

2015.02.23.
Ingyenesen letölthető programozás könyvek
Ingyenesen letölthető programozás könyvek

A GitHubon készült egy tároló, ami nyelvenként csoportosítva gyűjti össze a szabadon letölthető ebookokat.

2015.02.08.
Git HTTP hozzáférés mentése
Git HTTP hozzáférés mentése

Ha a Git repositorynkat http kapcsolaton keresztül tudjuk használni, akkor jól jöhet, hogy nem kell megadni minden parancsnál a felhasználónév, jelszó párost.

2015.01.29.
SSH kulcs generálás
SSH kulcs generálás

Ha sokat és/vagy sok helyre kell belépnünk ssh kapsolaton keresztül, jól jöhet, ha nem kell minden belépésnél megadnunk a jelszavunkat, hanem egy előre generált biztonságos kulccsal tudjuk azonosítani magunkat.

2015.01.28.
Node.js Socket.io teszter
Node.js Socket.io teszter

Az alábbi kód segít tesztelni a távoli socket.io kommunikáció válaszát.<!--more-->

2015.01.15.
Legacy Kódrészlet
Legacy Kódrészlet

Hogyan kezeljük le, hogy képekből ne lehessen bmp-t feltölteni(, de minden mást nyugodt szívvel):

2014.12.16.
Legacy kódrészlet
Legacy kódrészlet

if(in_array($partner['id'], $favorites))
   ;
else
   continue;
2014.10.21.
Kommunikáció a megrendelővel
Kommunikáció a megrendelővel

CSS blur effekt az oldalra:

A blur egyedül chromeban működik, a firefox nem támogatja a hivatalos oldalán se… **ügyfél**: és egy ilyen aberrált megoldás?: **ügyfél**: 1. betöltődik a content oldalt 2. csinál a progi egy pillanatképet arról a kontentről 3. nem tölti be a kontentet, csak azt a képet 4. ráteszi a progi a blur-t 5. betöltődik a teljes oldal

2014.09.29.
Kopogj!

kopogj

2013.11.18.
Programozók napja

Mint mindennek/mindenkinek, így a programozóknak is van napjuk.

2013.08.02.
Regexper – regexp vizualizálás

Aki már írt regexp-et, az tudja, hogy elég szépen el lehet bonyolítani, hogy teljes homály legyen mit is csinál. Ennek kibogozására született egy oldal, amin vizuálisan megkapjuk a beírt regexp működését: http://www.regexper.com/

Példa pattern

Az alábbi szöszszenet a helyes dátum formátumot ellenőrzi (YYYY-mm-dd) /^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/ Az évet még lehetne boncolgatni, de az most lényegtelen
2013.07.26.
Sublime Text 2 tapasztalatok

Az előző cikk óta használom ezt a szerkesztőt. Előtte a Komodo Edit volt a favorit, nagyon szerettem, de sajnos a Sublime olyan dolgokat tud, amit nem tud űberelni... ( Nemrég jött ki 8-as Komodo, amihez még nem volt szerencsém, de 1-2 dolgot megvalósít a Sublimeból. Ha valakinek van tapasztalata vele, várom szeretettel a hozzászólásokat ) A lényeget már az előző cikkben is leírtam, de más egyszer elolvasni ezeket és más átélni működés közben.

A felületről

Bal oldalt van egy panelünk, ide kerülnek a projectbe felvett mappák és bekapcsolható, hogy megjelenjen a megnyitott fájlok listája, így nem a füleket kell bogarászni, hanem itt kiválasztható a szükséges fájl. Az alap fülek kinézete olyan, mint a Chromeban. Ezt persze témával lehet módosítani. Ami szintén pozitív, hogy a "Jobbra eső lapok bezárása" funkció is meg van valósítva. Külön állítható a felület kinézete, ez változtatja a panelban lévő mappák, a fülek, meg a szerkesztőn kívüli felületek kinézetét, valamint külön állítható a szerkesztő rész színvilága. Már az alap sötét felülettel is nagyon jó, de található pár verzió a beállítások között (világos is). A szerkesztő felületet fel lehet osztani több részre a View -> Layout menüpontban. Lehet 2-3-4 oszlopra, 2 sorra vagy 2x2-es felosztásra állítani, kinek mi a kedvenc. Ezek méretezhetőek, így nem feltétlen azonos helyet foglalhatnak el a felületből.

Szerkesztés

A szerkesztő nagyon gyors összetett szavas szövegkiegészítővel rendelkezik, azaz egy hosszabb változó / függvény esetén elég leírni a szavak első karakterét, mint ahogy ez már ismerős lehet az Eclipseből. Ami nekem külön tetszett, hogy Komodo esetén csak azokat a változókat ajánlotta, amit az aktuális sor előtt használtunk, itt viszont a teljes fájlban keres, így könnyebb a kódban használt változónak alap értéket adni a blokk elején.

Ctrl + P

Szöveges navigáláshoz kapunk egy beviteli mezőt, ami az alábbiakat tudja:
  • Fájlok közötti ugrás
  • Adott fájlban:
    • Szövegre ugrás (#)
    • Függvényre ugrás (@)
    • Sorra ugrás (:)
Szintén érvényes, hogy az összetett szavaknál vagy mappáknál elegendő 1-1 karaktert megadni. Elég a mappa első karakterét megadni, majd a fájl első karakterét. A mappa teljes nevét beírva, pedig leszűri a benne található fájlokat. Ezek a funkciók kombinálhatóak, egy lépésben megnyithatunk egy fájlt és az X-edik sorára, vagy a megnyitandó fájl adott függvényére ugorhatunk.

Ctrl+Shift+P

Parancsok listája beviteli mező. Innen szövegesen indíthatjuk a menüben található funkciókat, valamint a telepített package managert is innen használhatjuk.

Többszörös szerkesztés

Más szerkesztővel szemben hatalmas előny, hogy egyszerre akár több sort is tudunk párhuzamosan szerkeszteni. Egy soron belül is lehet több kurzor, ha éppen úgy adódik.

Ctrl+D

A kijelölt szöveg következő előfordulását is kijelöli. A kijelöléseket ezek után egyszerre szerkeszthetőek. Ha ki akarjuk hagyni a legutolsó kijelölést, akkor Ctrl+K, Ctrl+D lenyomásával kihagyja és a következőt jelöli ki.

Ctrl+Shift+L

A kijelölt sorokat soronként szerkeszthetővé teszi. Ez akkor jöhet jól, ha például van egy listánk, amit tömbbé akarunk átalakítani.

Package Manager

A http://wbond.net/sublime_packages/package_control oldalról telepíthető a csomagkezelő, amivel extra funkciókat adhatunk a Sublime-hoz. A csomagokat Ctrl+Shift+P segítségével lehet adminisztrálni. ( telepíteni, frissíteni, törölni, listázni, stb) Én az alábbi csomagokat használom jelenleg:
  • Blogify - A kódot átalakítja könnyen publikálhatóvá
  • ColorPicker - Színválasztó ablak
  • DocBlockr - Automatikusan legenerálja az osztályok / metódusok komment részét
  • jQuery - jQuery segítő csomag
  • jQuery Snippets pack - Kiegészítők jQueryhez
  • memTask - Rögzíti, hogy az egyes fájlokkal mennyi időt dolgoztunk
  • SublimeCodeIntel - A Komodo-ban már ismert CodeIntel megvalósítása, nekem nem minden funkció működik.
  • SublimeTODO - Kiszedi a configban meghatározott szövegeket a fájlokból. TODO, FIXIT, stb
Kipróbáltam még a SublimeLinter csomagot is, ami képes megjeleníteni a forráskódban a hibákat, de egyelőre még fagy egy picit, a legtöbb indítás után leállította a Sublime-ot, így sajnos meg kellett válni tőle. Talán később jobb lesz.
2013.06.29.
Sublime Text 2
Sublime Text 2

Sublime Text 2 A hétvégén akadtam rá erre a nagyon letisztult és meglepően gyors szerkesztőre.

Mivel tűnik ki a többitől?

  • többszörös kijelölés: egyszerre több sorban tudjuk kijelölni az azonos részeket ( van lehetőség viszont kihagyni egyes elemeket ) és a kijelölteket egyszerre módosíthatjuk ( pl.: azonos változók tömeges cseréje )
  • tömeges módosítás: több sort kijelölve, egyszerre tudjuk módosítani azokat ( tömb készítés sorokból )
  • eclipse-hez hasonló kezdőbetűk beírásával függvények / változók ajánlása
  • gyors hozzáférés a parancsokhoz, fájlokhoz, projektekhez, fájlokon belüli függvényekhez
A szerkesztőt egy szép fekete témával kapjuk, a fülek a Chrome füleihez hasonlítanak, még az is meg van valósítva, hogy a jobbra eső lapokat zárja be. ( + pont )

Amilyen egyszerűnek tűnik első látásra, annyira el lehet benne mélyedni

A szerkesztő képességeit csomagokkal lehet még jobban kiegészíteni. Szerencsére az okosok készítettek egy csomagot, ami összefogja ezeket a telepíthető csomagokat, megkönnyítve a keresést, telepítést, frissítést. A csomagkezelő innen tölthető le: http://wbond.net/sublime_packages/package_control Az oldalon böngészhetjük a csomagokat, de a telepítést a Sublime-on belül kell elkövetni. Amit még mindenképpen meg kell oldanom, hogy több gép között szinkronizálódjanak a beállítások, de ez még idő hiányában várat magára. Hivatalos oldal: http://www.sublimetext.com/
2013.01.30.
Torrent automatikus letöltése HTPC-n ( Debian + XBMC )

Az alap ötlet az, hogy ne kelljen külön az asztali gépen letöltenünk az anyagot és azt felmásolni a htpc-re. A htpc kezelje le, ha kap egy torrent fájlt, töltse le és ha elkészült másolja a megfelelő mappába. Az XBMC-ben pedig már csak egy frissítést kelljen elkövetni. Az alábbi leírás alanya egy Debian testing ( wheezy ) és egy XBMC Froyo. Jelen esetben az XBMC verziója lényegtelen, mivel csak a Debianban kell ügyködni. Szükséges csomagok letöltése: apt-get install transmission-daemon Telepítés után állítsuk le a daemont: /etc/init.d/transmission-daemon stop Nyissuk meg szerkesztésre a transmission daemon settings fájlját: nano /etc/transmission-daemon/settings.json A webes felülethez való kapcsolódáshoz módosítsuk az rpc-whitelist változót *-ra, így bármilyen gépről hozzá tudunk férni otthon: "rpc-whitelist": "*" Mentés után indítsuk újra a daemont: /etc/init.d/transmission-daemon start Böngészőben pedig írjuk be a gépünk ip címét, valamint a settingsben megadott port-ot ( alapból 9091 ). Az alap felhasználónév és jelszó: transmission A webes felületen módosíthatjuk, hogy például milyen időszakban töltsön korlátozott sávszélességgel. Jól jöhet, ha egész nap megy a masina, de nem akarjuk, hogy nap közben a teljes sávszélességet megegye. Ha módosítani szeretnénk a settings.json fájlt, akkor először le kell állítani a daemont, mivel minden leállásnál kiíródik a settings.json. Ha futás közben kézzel módosítjuk a fájlt, akkor az felül fog íródni. A felhasználónév / jelszó szabadon módosítható. A jelszóban lévő tartalmat ki kell törölni és beírni a saját jelszavunkat. A következő settings kiírásnál már a kódolt változatot látjuk.

Torrent betöltése

Ezt a scriptet lefuttatva, egy általunk megadott mappát átvizsgálva az almappákban található torrent fájlokat hozzáadja a transmission daemonhoz. A script beállítja, hogy az elkészült fájlok hová másolódjanak. Külön le van kezelve, hogy ha a Sorozat almappában talál fájlt, azt az XBMC által implementált TV Series hiearchiának megfelelően másolja a megfelelő helyre. A fájl elején jól kommentezve megtalálhatóak a beállítandó fájlok.

Script futtatásának automatizálása

Az automatizálásra a rendszer által adott crontab-ot fogjuk használni. Ennek szerkesztéséhez írjuk be: crontab -e A fájl végére illesszük be a következőt ( az elérési utat írjuk át a megfelelőre ): 0 * * * * /home/xbmc/Dropbox/transmission.sh Jelen beállítás minden órában lefuttatja a script-et. Véleményem szerint ez bőven elég, de szabadon módosítható.
2012.12.24.
HTML átalakítása Textile formátumba

Új szórakozásom (nem szórakozás), hogy a HTML dokumentációkat akarom átvinni wiki-be, ami Textile formátumot használ.

2012.11.18.
Google Authenticator saját oldalhoz

Ma találtam egy nagyon jó kis leírást arra, hogy hogyan lehet a Google Authenticatorját saját programunkban használni. Az Authenticator előnye, hogy mivel idő alapú a kód, így nem kell a telefonnak nethez kapcsolódnia, így bárki, akinek van Android, iPhone vagy Blackberry telefonja könnyen használhatja.

2012.10.25.