PHP kódminőség fenntartás
php, qa, static code checking, phpunit, phpcs, phpmd, phpstan, churn, phpdd, psalm, phplint, phan
2024-10-17
Failed: bson encoding error: BSON element key cannot contain null bytes
mongo, mongodb, bson, null, key
2024-08-24
Nem bízol a kollégáidban? Akkor valamit rosszul csinálsz!
bizalom vezetokent
2023-05-03
Dolgok, amikről a programozók azt hiszik, hogy tudják, de tévednek
programozoi-tevhitek-falsehoods
2023-04-08
A programozóktól meg kell szabadulni
chatgpt no-code low-code
2023-01-22
Miért fontosak a személyes adatok egyáltalán?
privacyaware, privacy
2023-01-07
Egy tanmese a szerény, de tehetséges informatikusról, akit én csak Gézának hívok
privacyaware, privacy
2023-01-02
Beskatulyáznád magad egy termékkel? Gondold át még egyszer!
learning, vendorlockin, risky
2022-12-11
Rekrúterekről és állásajánlatokról
bérsáv, recruiter, relevancia
2022-10-30
"A hídon akkor kell átmenni, amikor odaérünk."​ - YAGNI
yagni, pagni
2022-10-17
"A lényeg, hogy a munka készen legyen!"
agile, estimation, becsles, scrum, home office
2022-08-20
Munka vs. hivatás, a klasszikus dilemma
hr, hobbi, munka, egyensuly, hivatas
2022-07-18
Miért nem fogok nálatok technikai interjún részt venni?
technikai interju, hr, recruit, leet code, coding challenge, take home challenge
2022-07-04
"Hogyan építsek kapcsolati tőkét, ha karriert szeretnék váltani?"
linkedin, tippek, trukkok
2022-06-10
Junior/Medior/Senior, hogyan mérjük?
junior, medior, senior, hr, grade, level, experience
2022-05-09
11 tipp frontendeseknek, hogyan tegyék hatékonyabbá a munkájukat
frondend, vscode, angular
2021-10-31
Motion zoom - mozgás alapú képrekonstrukció
#52het
2021-06-01
Gesture Launcher
#52het
2021-05-31
CellEvent, első Android alkalmazásom
#52het
2021-05-19
Notebookcheck, azaz hogyan válasszuk ki a legjobb ár-érték arányú eszközt
#52het
2021-05-18
Torrent multiplexer
#52het
2021-05-17
Process watcher, logger
#52het
2021-05-05
Lazy loading material dialog content
lazy loading, angular, material, dialog
2020-12-28
Runtime configuration loading in Angular
angular, runtime, configuration, settings, environment, production
2020-03-29
How to start an Angular project?
angular
2020-03-11
Az 52 hét projekt
#52het
2020-01-01
Akkutöltöttség-jelző
#52het
2020-01-01
NetClub - Kollégiumi internetszolgáltató
#52het
2019-12-31
DeeJayy - Lost Terminal
#52het
2019-12-31
Counter Strike monitor
#52het
2019-12-31
Kollégiumi CS bajnokság 2005
#52het
2019-12-31
Mozgásérzékelős képrögzítő, Camera Capture
#52het
2019-12-30
Többszörös host pingelő
#52het
2019-12-30
Sávszélesség mérő, tesztelő
#52het
2019-12-30
Generáljunk hamis adatokat
#52het
2019-12-30
SQL lekérdezések parancssorból, odbc-vel
#52het
2019-12-30
Nonogram generátor (aka. "Fesse feketére")
#52het
2019-12-30
Egyedi chat alkalmazás, kliens és szerver
#52het
2019-12-29
FontSelector - betűtípusválasztó / font preview
#52het
2019-12-28
Saját hálózati kommunikációs segédszoftver - sox
#52het
2019-12-28
Csoportos e-mail küldő szoftver Delphiben
#52het
2019-12-28
Universal Api caller module for Angular 7-9 With NGRX state management
Ngrx, API, Effects, HttpClient
2019-07-02
A leghosszabb projekt
#52het
2019-04-19
Legelső kioszk projektem: Stari Sör Jukebox
#52het
2019-02-28
BPM számláló
#52het
2018-11-01
Assembly féléves beadandók
#52het
2018-11-01
Chatbot before it was cool
#52het
2018-10-30
StartX - Cseréljük ki a windows tálcáját és a Start menüt
#52het
2018-10-28
What? - fájltípus azonosító
#52het
2018-10-27
Transport Tycoon DirectX
#52het
2018-10-26
Diff - fájlösszehasonlító
#52het
2018-10-26
De Facto - Szoftverfelügyelet
#52het
2018-10-25
CD és DVD katalogizáló
#52het
2018-09-24
MP3 segédeszközök
#52het
2018-09-24
Keylogger - azaz billentyűleütés-figyelő és naplózó alkalmazás
#52het
2018-08-29
Az örök projekt: személyes weboldal és blog
#52het
2018-08-14
Szógyakorló nyelvtanuláshoz
#52het
2018-08-13
Warzone 2100 mentett játék szerkesztő
#52het
2018-08-13
Rejtett Windows-beállításokat konfiguráló program: TweakMaster
#52het
2018-08-13
A DrótPostaGalamb levelezőprogram adatfájljainak dekódolása
#52het
2018-08-13
Privacy jegyzet
2018-07-30
Egy éve ilyenkor
2018-07-25
The Matrix - konzol szimuláció
#52het
2018-07-13
Kakaóreceptkönyv
kakaó
2018-06-29
Crackelés!
#52het
2018-06-22
A K.I.T.T. challenge
#52het
2018-06-18
Doom 2 botokkal
#52het
2018-06-16
Römi játék Delphiben
#52het
2018-06-09
MeetsCow & DeeJayy - Intro
#52het
2018-06-09
Direct viewer - bitmap megjelenítő
#52het
2018-06-09
bazMAG
#52het
2018-06-09
Console Vision - Konzolos ablakkezelő Delphiben
#52het
2018-05-01
Quake 2 egy floppyn
#52het
2018-04-20
Játék-kitömörítők
#52het
2018-04-12
Tetszőleges program elrejtése Windows tálcáról
#52het
2018-04-05
Személyre szabás
#52het
2018-03-28
A year with Angular 5, 6 - Angular 2018
#angular5 #angular #resources #articles
2018-03-16
Az ikon evolúciója
#52het
2018-03-14
Betűtípusok
#52het
2018-03-04
Billentyűzet-gyakorló
#52het
2018-02-28
Zenél is a DeeJayy?
#52het
2018-02-22
Térképrajzoló az Ascii 3D labirintushoz
#52het
2018-02-19
Ascii 3D labyrinth
#52het
2018-02-14
52 hét - 52 projekt, avagy #eletem
#52het
2018-02-14
Dockerezzünk virtualizált környezetben!
docker, xen, ubuntu
2017-11-12
A cloud-initramfs-copymods hatásai paravirtualizált környezetben
ubuntu, xen, copymods, docker, docker-ce, docker.io
2017-11-11
Virtualizáljunk Xen 4.6-tal Ubuntu 16-on (Xenial)
ubuntu, xen, virtualizálás, hypervisor, debootstrap
2017-11-04
Álláskeresésem története
álláskeresés, it, fejvadászok, linkedin, job
2017-10-24
FAR Manager competitors
far manager, file managers
2010-01-01
Blog
blog
2001-01-02

Dolgok, amikről a programozók azt hiszik, hogy tudják, de tévednek

Nap mint nap rendszereket építünk, amik legtöbbször felhasználók elé kerülnek. Életünk során akár felhasználóként, akár fejlesztőként egy csomó dolgot megtapasztalunk, amikből azután általánosítunk és alapul vesszük a szoftverfejlesztéshez. Néha fel sem merül bennünk, hogy valami nem úgy van, mint ahogyan 20 éve hisszük. Összegyűjtöttem néhány tényt, illetve igyekszem életszerű példákkal szemléltetni, hogy ez mikor nincs így.

Tévhit: Az e-mail címben mindig van legalább egy pont

Az egész a domain nevek miatt van. Jellemzően kéttagú domain névvel szoktunk találkozni: office.com, ritkábban hárommal: outlook.office.com, de olyannal, amiben csak egy van (tehát a TLD = Top Level Domain része), szinte soha. Pedig nemcsak, hogy léteznek, van, amelyiken weboldal is van, sőt, még e-mail-t is tudnak rajta fogadni! Bár a világ piacvezető böngészője (chrome) nem képes megküzdeni vele, a http://ai/ például probléma nélkül bejön Firefoxban vagy w3m-ben.

Mivel az e-mail címek usernév@domain formában léteznek, a két dolog együttállásából következik, hogy a root@ai egy valós cím, amire minden szabványkövető levelezőprogrammal lehetőségünk van üzenetet küldeni.

Statisztikailag egyébként ma összesen 1480 top level domain (elsőszintű domain) van, ebből 1329 használja a latin ABC betűit (mert, meglepetés: vannak arab, kínai, koreai, stb TLD-k is!), ebből 10-hez tartozik IP cím (ai, arab, cm, music, pn, store, tk, uz, work, ws), 14-hez pedig e-mail kezelő (ai, cf, gp, gt, hr, km, lk, mq, pa, ph, sr, tt, ua, ws) és összesen 3 esetén jön be valóban egy weboldal (ai, pn, uz).

Ritka? Az. Szabványos? Kétség kívül. De tekintve, hogy a legtöbbünk által használt böngészőnek beletörik a bicskája, vajon hány e-mail küldő szoftver nem engedi egyáltalán elküldeni sem a levelet, ha a címben nincs legalább egy pont? Tippre 50%.

Tévhit: Minden embernek van neve

Tegyük félre azt az esetet, hogy a névvel nem rendelkező emberek weboldalakra akarnak regisztrálni és közelítsük meg onnan, hogy egy egyszerű családfát akarunk összerakni. Léteznek kisebb népcsoportok, törzsek, ahol egymásra nem névvel, hanem rokoni viszonnyal hivatkoznak, például "a bátyám legidősebb fia".

Érdekes kisszínes az is, hogy miért alakultak ki családnevek a történelem során. Mivel kicsi volt a népsűrűség, kis közösségek voltak, a keresztnév tökéletesen elegendő volt az egymásra hivatkozás során. Azután megteremtették az adóhivatalt, akinek fogalma nem volt, hogy a Pista a harmadik utcából ugyanaz-e, mint a Pista, a falu kovácsa, így formálissá vált a családnév (például foglalkozás alapon, de sok más is előfordult).

Tévhit: A házszám csak arab számokat tartalmazhat

Erre Magyarországon is nagyon könnyű példát lelni, minden bizonnyal találkoztál már a "Fő utca 2/A"-val vagy a "Teve utca 4-6"-tal. Mindegyik érvényes postai cím, éppencsak a számokon kívül betűket vagy jeleket is tartalmaz.

Tévhit: az autóknak négy kerekük van

Noha a wikipedia idevágó oldala (https://en.wikipedia.org/wiki/Three-wheeler) számos példát vonultat fel, a valóságban relatív ritkán találkozunk ilyen járművekkel. Mindenesetre, ha felni- vagy gumikereskedést tervezel, nem árt számolni azzal a lehetőséggel, hogy a "szett" nem feltétlenül 4 darabból áll.

Tévhit: 0.1 + 0.2 = 0.3

A számítógépek csak bináris alapon tudnak működni (na ez vajon tévhit?). Minden egyéb reprezentáció ezen kell, hogy alapuljon, legyen szó akár szövegről (pl. az "A" betű az ASCII kódtábla szerint binárisan 1000001), egész számokról (a 29-es érték binárisan 11101) vagy törtekről. A tört számokat ún. "lebegőpontos" (floating point) módon tároljuk és számolunk vele. A két világ közötti átjáráskor bizonyos hibák fordulhatnak elő, mint a fent említett példában is, ugyanis a

0.1 + 0.2 = 0.30000000000000004

De nem minden programnyelven és eszközben! Ez a weboldal a fent említett problémának szenteli a lényegét: https://0.30000000000000004.com/

Tévhit: Bármilyen néven elmentheted a fájljaidat

A fájlnevezéktannak egyébként rengeteg aspektusa van, hogy milyen karaktereket tartalmazhat, milyen hosszú lehet, milyen mély könyvtárstruktúrában helyezkedhet el, stb. Mégis, ami főleg a Windows-t használóknak kell figyelembe venniük: nem nevezhetik el a fájljaikat az alábbi listából: CON, PRN, AUX, NUL, COMx (x = 1-9), LPTx (x = 1-9). Ezek ugyanis fenntartott nevek, speciális funkcionalitással bírnak (pl. régen egy egyszerű szöveges fájlt olyan könnyen ki lehetett nyomtatni, hogy "type info.txt > prn"). Velem egyidősek emlékezhetnek a "copy con info.txt" parancsra is, amivel tetszőleges fájl lehetett létrehozni és begépelni a tartalmat (copy parancs: honnan, mit, hová, ezesetben a honnan: con, azaz konzol, mit: amit begépelünk, hová: az info.txt-be).

Volt régen egy vicc is, miszerint az igazi programozó így kezdi: "copy con program.exe" (utalva arra, hogy az igazi programozók gépi kódot írnak fejből, ami elsőre működik).

Tévhit: A piros szín minden monitoron pirosan jelenik meg

Egy halom példa van arra, hogy ez mikor nincs így, vegyük csak a legegyszerűbbet: e-ink képernyő, ami csak fekete-fehér kijelzőjű, és modern eszközökön is fellelhető (e-book olvasók, takarékos mobiltelefonok, stb). De még színes kijelzőn is akadhatnak eltérések az eszköz állapota, minősége, beállítása (pl. szemkímélő mód be van-e állítva?), kalibrálása miatt. Egy designer ismerősöm karriere kezdetén belefutott abba, hogy sajnos olcsó eszközöket volt kénytelen használni és ami színvilágot ő megtervezett, az sehol máshol nem nézett ki úgy, ahogy nála - kalibrálhatta újra az egész tervet.

Tévhit: Ha a piros szín valóban pirosként jelenik meg a képernyőn, akkor mindenki pirosnak látja

Kicsit már rákanyarodunk az akadálymentesség (accessibility) témakörére, de bizonyos látási nehézségek, színtévesztés esetén a fenti tévhit nagyon hamar megdől. Itt is hangsúlyos, hogy amíg az ember nem találkozik ilyesmivel testközelből, hajlamos róla megfeledkezni.

Ami kimaradt

Próbáltam minél hétköznapibb és megfoghatóbb példákat hozni annak érdekében, hogy minél közelebb érezzük az egyes eseteket magunkhoz, de a lista közel sem teljes. Ez a zseniális gyűjtés és annak minden hivatkozása egy-egy hasonló tévhitet sorol, amit minden, a témával foglalkozó fejlesztőnek (de sokkal inkább: rendszertervezőnek!) ismernie kellene: https://github.com/kdeldycke/awesome-falsehood