Blogbejegyzések

PHP, RTFM és a logika

Egy oszlopos cimborám szerint, a PHP nyelv úgy készült, hogy a developerek fogták pár programozási nyelvnek a kézikönyvét, bepanírozták, kirántották, megcsócsálták, leöblítették fél liter hashajtóval, és az így születő végterméket bedobozolták. Az eddigi gyöngyszemek mellett felbukkant egy újabb, amire józan, paraszti ésszel kevés magyarázatot lehet találni.

Ismerős hív, hogy van neki egy veretes php3-as kódja, amit rálőcsöltek, mert űbergyorsan PHP5 alatt futtathatóvá kell tenni és valami gáz van vele. A probléma, hogy az eredeti kódnak az oldalak szép hosszú stringeket adnak át paraméterekként és ez nem megyen. Ő első lépésként az összes $HTTP_GET_VARS-t lecserélte $_GET-re, lévén az előbbi deprecated és a célzott szerver nem engedi az ilyen változók használatát.
Elkezdte tesztelni az oldalt és 90%-ban működött, de amint hosszú string kerül paraméterként átadásra akkor mindenféle, nem várt működést eredményezett. Értsd, semmi hibaüzenet, csak, mintha az átadott string egyes darabjai eltűntek volna.
Átküldi a kódot, ami nagyjából az én "hello world" szintemen áll. Gyakorlatilag pár form, statikusan beépített link és egy parser, ami $_GET-től kapott stringet pofozza át a mysql lekérdezésbe. A kód viszonylag szépen van megírva, aki csinálta, figyelt, hogy megfelelően kezelje a bejövő értékeket. Próbaképp megetetem a php kódot a GET metódussal küldöttekkel simán változóként beadova és nézem az eredményt, ami megfelel a vártnak. Ugyanezt GET metódussal átküldve teljesen mást ad vissza. Úgy tűnik a parser nem azt kapja amit vár.
Nézem a PHP doksit ami a következőket írja:
"$HTTP_GET_VARS contains the same initial information, but is not a superglobal. (Note that $HTTP_GET_VARS and $_GET are different variables and that PHP handles them as such)"
Ránézésre tehát a $_GET = $HTTP_GET_VARS, teháta cserének nem kellett volna a működést befolyásolnia. Aztán kcisit lejjebb görgetek és észreveszem ezt a mgjegyzést:
"The GET variables are passed through urldecode()."
Megnézem az urldecode() leírását:
"Decodes any %## encoding in the given string. Plus symbols ('+') are decoded to a space character."
Valószínűleg kitaláltátok, a böngésző által átküldött stringben a keresett kifejezések '+' jelekkel összefűzve és a parser a lekérdezés előállításakor ezt kereste. FUUUUUUUUU...

Több mint 50 millió Apache OpenOffice letöltés egy év alatt

Az Apache OpenOffice letöltése az AOO 3.4.0 megjelenése után egy évvel átlépte az 50 milliót. Figyelembe kell venni, hogy a 3.4.1 változat is megjelent közben.
A Sourceforge adatai alapján:
http://sourceforge.net/projects/openofficeorg.mirror/files/stats/map?da…

A más forrásokon keresztül történő terjesztés adatai nincsenek figyelembe véve.

Szerkesztés:
Az Apache blog bejegyzés a témában, további adatokkal: https://blogs.apache.org/OOo/entry/apache_openoffice_one_year_50

A magyar letöltési adatok:
Android 477
Bsd 5
Linux 4,277
Macintosh 9,589
Solaris 6
Ismeretlen 442
Windows 214,689
Összesen: 243,732

BBC Human Planet

Hétvégén, a Sparban, a sajtos pult mellett megakadt a szemem a pár forintos DVD tárolón, két Piedone film közé volt bedugva, mivel nem volt drága a 4 lemez (~3k) gondoltam megveszem - bár mostanában egyre kevesebb DVD-t/TV-t nézünk (-> 0) - és nem is bántam meg.

A Spectrum/Discovery/Whatever csatornák elé már nem igazán tudok leülni a sok reklám miatt, ezt azonban elég tátott szájjal kezdtük figyelni - talán a régi Cousteau filmeket néztük ekkora csendben.

Youtube-on fennt van az első lemez fele fullba - BBC- Human Planet Oceans: http://www.youtube.com/watch?v=c8jlazU0rkM - akit érdekel nézzen bele/végig mert vannak benne durva dolgok (pl. akik hajón élnek, vagy a kompresszoros halászok élete).

Valaki ajándékozna egy normális monitort a Mozillának?

Szerk.: Az elején annyit szerettem volna elérni, hogy ha valaki erre jár a Mozillától és tehet valamit az ügyben, tegye meg. Nem miattam, hanem a saját közössége miatt. Azért lett ilyen a bejegyzés, mert egyrészt elkeseredett voltam, másrészt az emberek jobban odafigyelnek az undorító/erőszakos/stb. megnyilvánulásokra. Azóta már nem a Mozilla oldalának kinézetéről szól ez a téma, de a képernyőkép egy jó összefoglalása mindannak, amin szerintem változtatni kellene.

Újabb csendben javított Linux kernel sebezhetőség...

...amelyre már kinn is van egy exploit attól, aki már 3 éve tudott róla.


hunger@hgc ~ $ uname -a
Linux hgc 3.2.43 #1 SMP Sat Apr 27 04:00:32 CEST 2013 x86_64 GNU/Linux
hunger@hgc ~ $ id
uid=1000(hunger) gid=1000(hunger) groups=1000(hunger)
hunger@hgc ~ $ ./a.out
2.6.37-3.x x86_64
2010
hgc ~ # id
uid=0(root) gid=0(root) groups=0(root),1000(hunger)
hgc ~ #

PaX UDEREF/KERNEXEC véd ellene.

https://news.ycombinator.com/item?id=5703758

AVR libc delay-ek 13.04-re frissítés után

Hétvégén toltam egy dist-upgrade-t majd örömmel konstatáltam, hogy bizony van új Codeblocks, meg van Qt5. Kipróbáltam, lefordítottam néhány projektemet,

Ezen örömöm erőteljesen szertefoszlott ma hajnal hatkor, mikor konstatáltam, hogy az avr-gcc-vel fordított kódjaimban a _delay_ms() hívások ignorálódnak. Először valami optimalizációs kapcsoló elmészására gondoltam, de nem, a codeblocks a régi opciókkal fordít.

Fél óra szívás után a __DELAY_BACKWARD_COMPATIBLE__ definiálása megoldotta a problémát.
http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html

How to install Pepper Flash for Chromium Web browser on Ubuntu GNU/Linux

This repository provides the pepflashplugin-installer package, which will download and install the newer "Pepper" (PPAPI) version of the Adobe Flash Player plugin for use with the Chromium Web browser on Ubuntu GNU/Linux. The package is similar to Ubuntu's official flashplugin-installer in that it does not include the plugin itself, but instead downloads the plugin and installs it automatically. (Specifically, it downloads the latest Google Chrome package, extracts the Pepper Flash files, and installs only those. Google Chrome itself is not installed nor otherwise used in any way.)

Full Story

Bajnok a Győr

A hétvégén minden összejött:

#1 Ugyan a magyar focit nem követem és nem is érdekel, de győriként mindenképpen örömmel tölt el, hogy a "mi csapatunk" 30 év után ismét bajnokcsapat lett.

#2 Ahogy arról már írtam, a női kézilabdacsapatunk (ez a focival ellentétben még érdekel is) BL-győztes lett.

#3 Alonso is behúzta a hétvégét, így teljes az öröm és boldogság! Ha a forma és az autó így kitart, akkor nem fogok panaszkodni. Végre Massa is kezdi összekapni magát, ami azért nem elhanyagolható a Ferrari (és Alonso) szempontjából.

BMI

Az egészséges életmód jegyében... Érdekes dolog a BMI (Body Mass Index). Nálam 1,89 méteres magasság mellé 81,9 kilogrammos tömeg párosul jelenleg. Ez normális az egyik kalkulátor szerint, de már messze nem a normális sáv közepén van. Ha beállítom, hogy a cél a normális (zöld) sáv közepe a cél, akkor azt írja, hogy még 4 kg-ot kellene fogynom és a testtömegemnek 77 kilogrammnak kellene lennie.

Ethernet Gadget (ethernet over usb) beállítása Beaglebone Black Ubuntu alatt

Adott ebben a kütyüben, hogy tudja az ethernet over usb-t, ami szerintem minden hobbista/fejlesztő álma:

Ebben a példában az egész fejlesztői környezetet tudjuk akár egy szál usbről táplálni úgy, hogy a hálózat is a kliens géppel teljes értékű.

A régebbi post leírása alapján az ubuntu rendszert telepítjük, majd az /etc/network/interface fileba beírjuk például:

auto usb0
iface usb0 inet static
address 10.10.10.1
netmask 255.255.255.0

Ezután az /etc/modules fileba beírjuk a g_ether szót, és lekapcsoljuk a lapot.

Mindent lehúzunk, és a gépünkre rádugva elindítjuk a lapot, és windows esetén feltelepítjük az rndis drivert, linux alatt semmi sem szükséges elvileg. (én win alól próbáltam)
Természetesen a kliensen lévő virtuális interface-t is azonos hálózatba kell rakni a lapon beállítottal...
Ezután már a beállított címen elérhetőek a lapon beállított szolgáltatások.

Business Server Page (BSP) hiba

Kedvenc hibaüzenet mára:
Jegyzet

A következő hibaszöveg feldolgozva a rendszerben:
CX_SY_REF_IS_INITIAL típus kivétele lépett fel, de sem lokális kezelésére, sem egy RAISING-klauzula általi deklarálásra nem került sor.

Kivételosztály CX_SY_REF_IS_INITIAL
Hibanév
Program CL_O2D8H58RFLDYC4QK7BWPC5UBDXQCP
Include CL_O2D8H58RFLDYC4QK7BWPC5UBDXQCM007
ABAP-osztály CL_O2D8H58RFLDYC4QK7BWPC5UBDXQ
Módszer _ONINPUTPROCESSING
BSP-alkalmazás ZES_KER
BSP-oldal PRIVATE/TARTALOM.HTM
Sor 18
Hosszú szöveg Kísérlet történt dinamikus módszerfelhívás végrehajtására egy iniciális (NULL-) objektumreferencián. A referenciának objektumra kell hivatkoznia.

Libvirt, SDL, jogosultságkezelés és a Hang

Hátha valaki másnak is jó lesz rovat következik:

Helyszín az otthoni Arch linuxos gépem. Egy ideje úgy határoztam, hogy a háztáji desktop virtualizációs igényeimre vmware workstation/player, virtualbox és hasonló proprietary (és az aktuális kernelekhez patchelni mindig szívás) megoldások helyett haladok a korral és qemu-t fogok használni. Pontosabban qemu + libvirt + virt-manager kombót. Hogy ez milyen szinten fapados az előző kettőhöz képest, az nem ennek a bejegyzésnek a tárgya. (Egyébként nagyon!).

A fapadosságért cserébe azt vártam volna, hogy - mainline kernelben karbantartott megoldásról lévén szó - egyszer összelövöm és utána update-ek és minden egyebek simán gond nélkül menni fognak, nem igényel folyamatos rejtvényfejtést mindenféle patchek kergetése, fordítási hibák kézi javítgatása, inkompatibilis library verziók workaroundolása. Na ez sem jött be. Több-kevesebb rendszerességgel jön olyan update, ami elrontja a konfigot és utána nyomozhatok, hogy ezúttal mit kell utánahúzni. Leginkább a jogosultságkezelés környékén szoktak bajok lenni, ott rendszeresen átvariálnak valamit.

Vanilla-JS framework

A Vanilla-JS egy könnyű, flexibilis, többplatformos keretrendszer, javascript alkalmazások készítéséhez. Sebességére jellemző, hogy ugyanazon művelet végzésekor, kétszerte gyorsabb egy Dojo-val és hatszorta gyorsabb egy Prototype JS-el készített híváshoz képest.
Elterjedtségére és ismeretlenségére jellemző, hogy titokban olyan nagyvállalatok és tartalomszolgáltatók is használják, mint: Facebook, Google, YouTube, Yahoo, Wikipedia, Windows Live, Twitter, Amazon, LinkedIn, MSN, eBay.
További előnye, hogy a framework alapban integrálva van minden jelentősebb böngészőben, így csökkenthetjük az általunk fejlesztett oldal hálózati overheadjét.