f0xhu blogja

EAN-13 barcode rajzolás Qt alapokon

Már lassan 2 éve, hogy egyetlen sor kódot sem írtam kedvenc keretrendszeremben. Nagyon lelombozó érzés rájönni, hogy mennyit fejlődött azóta és a gyakorlat hiányával milyen gyorsan felejt az ember... Ezt ellensúlyozandó az utóbbi hetekben, ha volt időm, próbáltam felfrissíteni azt a keveset, amit anno megtanultam. Mivel van egy régóta dédelgetett tervem, a héten pedig mahosilver-nek hála megjön a vonalkódolvasó is, gondoltam utána járok, mi fán is terem ez a jelölés. Ma pedig összegányoltam egy QGraphicsView alapú EAN-13 barcode rajzolót, csak úgy PoC módon :)

Persze korántsem tökéletes, nem szép és nem biztos, hogy kellően gyors, de még úgyis alakítok rajta.

Lássuk!

Ez WTF?

Ez hogy van, hogy megjelenik egy fórumtopik egy úriembertől, aztán mire befejezem a segítő szándékú kód írását, eltűnik? Meg az összes többi, amit létrehozott ma? Ha nem trey teszi, akkor miért kell? Ez nem IRC, MSN meg Skype; fáj, ha más is tanul esetleg, vagy megkíméljük magunkat attól, hogy 3 nap múlva más tegye fel ugyanazt a kérdést? o.O

POSIX shell eszközök kiaknázása - avagy hogyan adok értéket több változónak egy menetben "külső" program nélkül

Nagyon jóóóó :D ->


$INSTR="foo,bar,baz"

$F1=`echo $INSTR | awk -F, '{print $1;}'
$F2=`echo $INSTR | awk -F, '{print $2;}'
$F3=`echo $INSTR | awk -F, '{print $3;}'

helyett használjuk ki a ksh képességeit:


$INSTR="foo,bar,baz"

OLDIFS=$IFS; IFS=, ; set -- $INSTR; F1=$1; F2=$2; F3=$3; IFS=$OLDIFS

Egy újszülöttnek minden vicc új, de tetszik :) Ha nem is sokat, de talán lehet nyerni némi teljesítményt vele! ;)

gitorious.org vs. Windows - PuTTY vs. msysgit

Emlékeztetőül:

Mivel több, mint 2 hónapja mélytorkozom ezzel... ;)

Windows alatt NE puttygen.exe-vel generáljunk privát/publikus kulcspárt, ha valamely gitorious.org repóval szeretnénk dolgozni.
Bár elvileg a gitorious.org Manage SSH keys oldalán simán megeszi a fingerprint-et publikus kulcsot, egy esetleges push-oláskor

fatal: The remote end hung up unexpectedly

üzenetet kapunk. Használjuk az msysgit parancssorát, és ott adjuk ki a következőt:

ssh-keygen -t rsa

Válaszoljuk meg a kérdéseket, adjunk jelszót és az így létrejött

id_rsa.pub

állomány tartalmát
töltsük fel a gitoriousra.

Bicikli

Most, hogy megérkezett a jó idő, úgy döntöttünk asszonnyal, hogy a télen felszedett kilóktól (többek közt) némi kerékpározás segítségével fogunk megszabadulni. Találtunk is anyósnál régi kerékpárt, azonban a javítás kb. többe kerülne, mint egy 0km-es bicikli vásárlása. Azon filozofáltunk, hogy van-e Pesten megbízható használt kerékpár üzlet? Értsd.: Nem lopott, átfestett, széthulló szemét, hanem megkímélt és szigorúan hobbicélra használható szerkezetek kellenének.

Láma napi bölcsessége #2

Vegyük a következő, a valóságtól elrugaszkodott példát:


#!/usr/bin/perl

@file_list = qx(ls -t /path/dir);

foreach(@file_list) {
    open CURRFILE, "<", $_ or die $!;
    while(<CURRFILE>) {
        print $_;
    }
    close CURRFILE;
}

Erre a buta, ökör wannabe noob 1.5 napig töri a fejét, hogy miért kap file does not exist üzenetet...

Kulcsszó?

chomp

!!


#!/usr/bin/perl

@file_list = qx(ls -t /path/dir);

foreach(@file_list) {

    chomp($_);

    open CURRFILE, "<", $_ or die $!;
    while(<CURRFILE>) {
        print $_;
    }
    close CURRFILE;
}

64bit vagy mégsem?

Tegnap szerettem volna egy ilyenre VirtualBox 3.1.4 alá feldobni egy x86_64-es openSuSE 11.2-t, de a telepítő "This is a 32bit computer. You cannot install 64bit software on a 32bit computer. Reboot" ablakkal elhajt.

Itt írva vagyon a 64bit... most ki a hülye? (Gyanítom én, hogy pénzt adtam ilyen gépért)

Memo: dátum | idő regexp

Emlékeztetőül magamnak

óó:pp formátumú idő kinyerés:

echo "14:45" | awk '/(((0[0-9])|(1[0-9])|(2[0-3])):[0-5][0-9])/ { print "Matched time: " $0 }'

hh/nn/éééé formátumú dátum kinyerése:

echo "02/09/2010" | awk '/((0[1-9])|(1[0-2]))\/((0[1-9])|([1-2][0-9])|(3[0-1]))\/(([1-9][0-9]))/ { print "Matched date: " $0 }'

Emlékeztetőül: VirtualBox Guest Additions telepítése OpenSuSE 11.2 alá

Mivel szükség lesz rá az újabb vbox kiadások során és nekem alapból nem ment az openSuSE-val jövő GA, ím:

Kernel forrás, sym-ek beszerzése:


mfx@mfxvbox:~> sudo zypper in kernel-source kernel-syms

Kernel konfigurálás:
[code]
mfx@mfxvbox:~> cd /usr/src/linux
mfx@mfxvbox:/usr/src/linux> sudo make oldconfig
scripts/kconfig/conf -o arch/x86/Kconfig
#
# configuration written to .config
#
mfx@mfxvbox:/usr/src/linux> sudo make prepare
scripts/kconfig/conf -s arch/x86/Kconfig
CHK include/linux/version.h
UPD include/linux/version.h
CHK include/linux/utsrelease.h
UPD include/linux/utsrelease.h
SYMLINK include/asm -> arch/x86/include/asm
CC kernel/bounds.s
GEN include/linux/bounds.h
CC arch/x86/kernel/asm-offsets.s
GEN include/asm/asm-offsets.h
CALL scripts/checksyscalls.sh

openSuSE vs. KUbuntu avagy back to the roots

“KUbuntu user since 6.10” - ez áll a LaunchPad-es about-me oldalam alján. Bizony, már több, mint 3 éve *ubuntu-val nyomom. Állítólag ez (volt) a legjobb KDE-re kihegyezett disztró. Nekem mégis valahogy esetlennek, instabilnak tűnik olykor. Több gépre, 32/64 bites architektúrára is installáltam már, jelenleg is aktívan használjuk 2db asztali gépen, amíg nem kell hozzányúlni, nagy baj nincs is. Viszont egy AMD A64 3000+, 2,5Gb ram, GeForce 6600GT-vel szerelt gépen, amikor az asztali effektusokat teljesen ki kell kapcsolni, vagy egy firefox indulásra (ami vagy megtörténik, vagy valahol a /dev/null-ban köt ki) 30-60 másodpercet kell várni, az már idegesítő. Persze, hogy ennek nem feltétlenül kell így lennie, erre csak az alábbiak után jöttem rá:

Friss-ropogós Apache+PHP install hint

Tudom - tudom... a szakma szégyene leszek :)

Adva vagyon:
- Sun VirtualBox 3.1.0 r55467
benne:
- XP SP3 Corp. 32bit
- apache_2.2.14-win32-x86-openssl-0.9.8k.msi
- php-5.2.12-win32-installer.msi
- mysql-5.1.41-win32.msi

Magyarázkodik: Szeretném kipróbálni a Symfony-t, viszont a már meglévő produktív környezetemet nem akartam "beszennyezni".

Nos a fent említett Apache - PHP kombináció nem használható együtt. Apache PHP nélkül még működik, PHP CLI szintén (Csak a PDO-MySQL és XSLT extension-öket tettem fel); viszont amint telepített PHP modullal indítanám az Apache-ot, nyom egy gyönyörű EPIC FAIL-t. Valamiféle php5ts.dll-lel kapcsolatos hibára hivatkozik. Namost, keresgéltem sokat, eddig kb. 4 ilyen jellegű hibával kapcsolatos találatom volt és senki nem tudott megoldást. (Illetve állítólag a php5ts.dll C:\Windows\system32 mappába másolása orvosolja a gondot, de NEM!) :)

Az emberi "butaság" netovábbjai

Alapvetően békés, segítőkész embernek tartom magam, akit
nehéz kihozni a sodrából, pedig találkozom sok értetlen
és lusta emberrel...

Aki néha beleolvas a böffenéseimbe, tudhatja, hogy valamiféle
perverz vonzalmat érzek a Qt nevezetű keretrendszer iránt.
Eme rajongásomat kielégítve már évek óta tagja vagyok a cucc
hivatalos levlistájának és többé kevésbé igyekszem követni, illetve
reagálni az ott folyó eseményeket/-re.

Mióta 4.5-tel LGPL alá is került a framework, sajnos vagy szerencsére
egyre több és több új arc jelenik meg a listán. Néhányan valóban jó
kérdéseket tudnak feltenni és 1-1 odahintett morzsából már maguktól is
megtalálni a probléma megoldását. Ennek örülök.

Hasznos Qt segítségek

Pár napja kért valaki a qt-interest@ listán mindenféle
Qt-s tutorialokhoz segítséget. Ha valaki nem lenne feliratkozva,
de érdekli a dolog, kivonatolok ide 1-2 linket, amiről nem tudtam,
de hasznosnak tűnik:

http://www.ics.com/learning/icsnetwork/ - webcastok
http://www.ics.com/learning/learning_center_downloads/ - whitepapers

(ICS-re kell egy szimpla regisztráció letöltés előtt)

http://www.qtrac.eu/marksummerfield.html - ő volt a társszerzője a C++ GUI Programming in Qt3/4 könyveknek
http://www.zetcode.com/tutorials/qt4tutorial/ - "egy" Qt4 tutorial

http://doc.trolltech.com/qq/ - Qt Quarterly, negyedévente megjelenő Trolltech (Nokia, Qt Software)
munkatársak által készített kiadvány (elvileg 4.5-óta mindenkinek elérhető a megjelenés pillanatától,
korábban volt pár hónap késleltetés a publikus kiadásban)

VMWare power-off guest gyorsítás

6.5-ös VMWaretől lépett fel a probléma, miszerint egy külső USB-s
hdd-n tartott Windows guest egy örökkévalóságig poweroffolt...
Mivel sokszor sietve kellett volna vinnem a racket, így muszáj
volt valami megoldást találni a problémára.

(Igen, azért van külső racken, mert nem 1 gépen dolgozom. :P)

Paraméterek (A/B gép különböző host masinériák):

  • Hard Disk 1 12GB (rendszer+programok)
  • Hard Disk 2 10GB (adattárolás, egyebek)
  • Guest OS: Windows XP SP3 - current
  • Guest RAM:
    • A gép: 1536MB
    • B gép: 3584MB
  • # of CPU-s:
    • A gép: 1
    • B gép: 2 (4 magos Phenom, elvileg a guest kihasználta a 2 core-t)

Ennek a lekapcsolása kb. 4 perc volt folyamatos lemezhasználattal... gépfüggetlenül

Láma napi bölcsessége #1

Nem képzeljük naívan azt, hogy egy select mindig használható adatot ad vissza.

SELECT SUM(valami) FROM akarmi...

helyett

SELECT IFNULL(SUM(valami),0) FROM akarmi...

megteheti, ha a nulla érték elfogadható ilyen esetben.

Nokia to license Qt under LGPL

We have some exciting news we'd like to share with you: Qt will be
licensed under the terms of the LGPL version 2.1 with the upcoming Qt
4.5 release, in addition to our standard GPL and commercial licenses.
We are also pleased to announce that we are going to open up the Qt
source code repository and also make it easier for the community to
contribute to Qt.

Adding LGPL version 2.1 will greatly increase adoption of Qt across
Windows, Linux, embedded Linux, Mac, S60, Windows CE, maemo, and Ovi
web services. Having a larger number of users, including Nokia
developers, providing feedback and contributions will help Qt remain a
cutting edge, robust UI and application framework.

Borland nyűg, avagy láma esete a RAD eszközökkel

Agyam eldobom lassan...

Dolgozok egy alkalmazáson, ami majdan adatbázisban tárolt adatokat hivatott kezelni.

Ami van:
* MySQL 5.x adatbázis
* MySQL ODBC Connector
* Codegear RAD Studio 2k7 (Borland? Embarcadero? Codegear? o.O)

Magát a dolgot úgy képzeltem, hogy egy MDI ablak, amin belül a különféle kis
adatszerkesztő formok mint MDI child ablakok jelennek meg.

1-2 teszt formot létrehoztam, húzgáltam rá szép dbgridet meg editeket meg lookupcomboboxot.
3 nap alatt sikerült összekattintani (már-már a "kéremakényszerzubbonytide!!!" hátárán), hogy
a formon levő dbrid adott rekordját lemappeljem az editekbe, szerkeszteni, menteni, törölni,
felvenni rekordot tudjak (cheateltem: beraktam egy dbnavigatort is :D)...

QtCreator -> Project "Greenhouse" Technical Preview + infók

Nem egész 1 órája jött a levél:

We proudly present QtCreator (formerly known as Project "Greenhouse")
technical preview,
a new, lightweight, cross-platform IDE for use with the Qt application
framework!

You find all the details, downloads, FAQ and introduction video here on
http://trolltech.com/developer/qt-creator

The QtCreator Team

--
Eike Ziller
Nokia, Qt Software

-----
Azt hiszem ma sem kerülök éjjel 2-nél korábban ágyba :D

Qt Greenhouse - Üvegház Qt fejlesztőknek

Október 14-15 közt zajlott az idei Qt Developer Days Münchenben.

Matthias Ettrich a németországi Qt Software (a.k.a. Trolltech) R&D feje, nyitóbeszédében egy olyan eszközt jelentett be,
amely után már számos Qt/C++ fejlesztő vágyott: Qt Greenhouse IDE.

A projekt maga 3 éve indult egy "Creative Friday" projekt keretében és azóta érlelődött a berlini és oslói irodák falai közt.

Célja elsősorban, hogy megőrizze a vi vagy Emacs "puritánságát", ezzel pedig rávegye ezen eszközök
használóit is az áttérésre. Az alapkoncepció szerint egy ablakban érhető el minden, a fejlesztő számára
lényegtelen részek elrejthetők és szinte a teljes alkalmazás billentyűzetről vezérelhető.
A mindent-vivő "joker" funkció a "Quickfinder" néven bevezetett keresőmező. Egy egyszerű billentyű-
kombinációval előhívható és tetszés szerint kereshetők kódrészletek, dokumentáció vagy akár sorszám begépelése
alapján a forráskód tetszőleges részére ugorhatunk. Az éppen használt függvény/eljárás dokumentációja
folyamatosan elérhető és rendelkezésre áll egy automatikus kódkiegészítő, valamint "on-the-fly" kódszínező.
A csomag a Qt függvénykönyvtáron felül természetesen fordítót és hibakeresőt is tartalmaz (erről konkrétumok később).