ape to mp3

apt-get install libjmac-java

IFS=$’\n’; for i in $(ls *.ape); do java -jar /usr/share/java/jmac.jar d “$i” $(basename “$i” ape)wav; ffmpeg -y -i $(basename “$i” ape)wav -ab 320000 $(basename “$i” ape)mp3; rm *.wav; done

ledprogram, és a frissítés

Várnagy György minden frissítés után belefut a hibába, hogy a ledvillogtató programom a /sys mappa struktúrájának változása miatt elromlik. És minden alkalommal lelkiismeretesen el is küldi a megoldást. Ím az utolsó:

A trükk az, hogy az elérési út megváltozott és ezt kell kijavítani az /etc/rc.local-ban és a szkriptedben.

A régi elérési út :
/sys/devices/virtual/leds/asus:mail/brightness

Az új pedig :
/sys/devices/virtual/leds/asus::mail/brightness

Az utóbbiban van egy plusz kettőspont a mail előtt.

A Mail Notification program is frissült már korábban. A frissítés óta a beállító grafikus felületen nincsenek meg a mezők amibe be lehetne írni, hogy mi történjen, ha új mail érkezett és ha a mailt már elolvasták. Én ezt úgy oldottam meg, hogy a régi verzió beállításait tartalmazó rejtett fájlokat átmásoltam az új verziójú program rejtett könyvtárába. Így az új Mail Notification program továbbra is indítja a led_on és exit_led_on szkripteket.

Ha az általam leírt megoldás nálad is működik és arra érdemesnek tartod, kitehetnéd az oldaladra hátha mást is érdekel a megoldás.

Gyuri

Köszi! 🙂

személyes siker

Néha vannak olyan dolgok amiknek kifejezetten tudok örülni. Ilyen az a siker is amit a hétvégén értünk el. Online kampány során sikerült 3000 kattintást kihozni 50.000 Ftból. A profi nagymenő cég ennek a számnak a felét hozta ki 150.000 Ftból. Egy hét alatt.
Elbízásra nincs ok. Még van hova fejlődni.

vendor és product id win alatt

Drivert kellett összevadászni hálókártyához. Adva van hogy a vendor és product id alapján. Mindez windows alatt így deríthető ki:
regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI
Itt ki kell keresni a DeviceDesc alapján amire szükségünk van, a többi értelem szerűen.

mpl és a szerver

Neten bóklászva találtam:
“Az ország bármely pontjáról elküldheti hozzánk akár postán szerverét!”
Elképzelem ahogy a magyar pósta elvisz egy rack szervert… 😀

silihost spam

Ismét spam, ismét a Silihost tartományából. Legközelebb tényleg feljelentem a céget! Folyamatosan spammelnek a rendszerükről… Még jó, hogy a közkézen forgó illegális adatbázisban most már 3 címem van. 🙂

Tisztelt cím!

A továbbított levelet a mai napon kaptam, mely megszegi a 2008. évi
hatályos spam törvényt.

Idézet a 2008. évi XLVIII. törvényből:
“…reklám természetes személynek […] elektronikus levelezés vagy
azzal egyenértékű más egyéni kommunikációs eszköz útján […] kizárólag
akkor közölhető, ha ahhoz a reklám címzettje előzetesen egyértelműen és
kifejezetten hozzájárult.”

Kijelentem, hogy nem járultam hozzá előzetesen, címemet feltehetőleg
illegális adatbázis útján szerezte meg a levelet küldő.

A levél küldőjének “Peter Stefan” van megjelölve. A feladótól korábbi
alkalmakon további 2 emailt kaptam melyek szintén sértik a hatályos
jogszabályokat.

A levelet fejléce alapján autoresponder.hu domain-ről küldték ki
melynek ip címe 213.163.8.132.

autoresponder.hu domain tulajdonosa Silihost Kft.
A fent található címhez tartozó tartományok közvetlen felhasználója
szintúgy a Silihost Kft, internet szolgáltatója az Invitel Távközlési
Zrt.
A Silihost Kft tartományából korábban is érkezett spam tartalmú levél,
más címzettektől. Ezek alapján kijelenthető, hogy a cég közvetve
rendre törvénysértést követ el, az ügyfelei számára folyamatosan
megengedi a kéretlen levelek küldését.
Kérek mielőbbi intézkedést a levél feladója és a hoszting szolgáltató ellen.
Amennyiben további kéretlen levelet kapok a Silihost Kft
tartományából, jogi útra terelem az ügyet!

Jelenlegi levelemről másolatot kap:
A törvénysértést elkövető ügyfél.
A szervert üzemeltető Silihost Kft.
A szervert elhelyező Invitel Távközlési Zrt.
A Nemzeti Hírközlési Hatóság.

régi idők böngészője

Az előző lelkes hozzászólásom és Doransky korábbi IE6-os fejtegetései kapcsán született egy kiegészítés az utóbbihoz.

Ma kétféle IE6 felhasználóval találkoztam. Az egyik aki azért nem frissít mert a Magyar Postánál dolgozik. Ha sokak által ismert állami szerv levélküldési szolgáltatásainak minőségét veszem, akkor szerintem reális képet kapok a rendszergazdáinak alulfizetettségéről/képzetlenségéről. Ezek után nem meglepő, hogy ott még IE6-ot használnak.
Megoldás: Portable apps/firefox. Ha gizike tudná mi az…
De ugye erről írt is Doransky.

Viszont a másik felhasználó kategória az izgalmasabb! Azért nem frissít mert lopott operációs-rendszere van. A Microsoft mint zárt programokat gyártó és ezt pénzért licencelő profitorientált cég, a programjait joggal csak olyan rendszerekre készíti amit megvásároltak. Az illegalitást nem támogatja (én se tenném), hiszen abból nincs bevétele. Ezzel azt éri el, hogy a kedves páciens nem fog frissíteni. Addig a pontig amíg egy csoda folytán nem jut az IE penetráció olyan szintre, hogy ne érje meg a rá való fejlesztést. Akkor mi történik? Összelop a kedves jóember egy újabb operációs rendszert, amiben ugye alapból újabb Internet Felfedező csücsül. Igen ám! De a mostanában zajló perek talán egyik lehetséges kimenetele az lesz hogy az új operációs rendszert Internet Felfedező nélkül fogják szállítani. Ahhoz hogy telepítve legyen rá ilyen, vagy ehhez hasonló funkcionalitású program, vagy jogtiszta forrásból kell beszerezni azt (ingyenes és letölti, Opera, Chrome, Firefox stb) vagy az operációs rendszert kell megvenni (lévén akkor sem fogja támogatni az MS a lopott rendszerre való töltést). A kör bezárult, eredmény felhasználóvesztés.
A másik lehetséges forgatókönyv szerint, az operációs rendszer frissítése nélkül kénytelen lesz a felhasználó egy alternatív ingyenes változatot letölteni, hogy a továbbiakban használni tudja az internetet és böngészni tudjon.
Ennek a változatnak is az a vége hogy felhasználót veszít a gyártó. Amivel szerintem nincs semmi baj. Így áll be egy egyensúly a megvásárolt és az ingyenes rendszerek/programok között.
Már csak az a kérdés, hogy melyik nagy szolgáltató kezdi el itthon a NO-IE6 külföldi kezdeményezést.
Én mint fejlesztő a nyolcas böngészőverzióval védve lettem. Ha szerződésben az áll, hogy utolsó stabil és utolsó stabil-1 (mindezt a 4 nagyobb böngészőre), akkor a kedves megrendelő csak kemény összegekért tud rávenni arra, hogy az oldala elkészüljön IE6-ra is. Ha megfizeti örömmel szívok vele. Ha nem… 🙂

IE8

Egy hétfőn induló oldal kapcsán fel kellett tennem, a most megjelent IE 8-at. Hogy őszinte legyek, életemben először tudtam örülni annak amit látok explorerben. Mindent úgy jelenített meg ahogy azt Firefoxban vagy Operában! Feltételes megjegyzéseket ráigazítottam, hogy csak ie 7 alatt aktiválódnak és tökéletes eredményt kaptam! Az animációk, JS interakciók működnek, a design a helyén, a böngésző teszi a dolgát. Ha ennyi bajom lesz ezzel a verzióval a jövőben akkor szeretni fogom! 🙂

uno in oo.org

Tegnap egy egész érdekes szárnypróbálgatást tettem az uno háza táján. Aki nem tudná mi az az uno (helyesen UNO, Universal Network Objects) annak elmondom: openoffice.org API megvalósítása. Ennek segítségével java-ban c++-ban vagy akár pythonban lehet programozni az OpenOfficet. Mivel c++-ban annyira nem vagyok otthon, Java-t meg még csak most tanulom, így maradt a python.
A program mérete miatt el lehet képzelni, hogy mennyire hatalmas az API dokumentációja, arról már ne is beszéljünk hogy milyen bonyolult és átláthatatlan első ránézésre. A hab a tortán, hogy python példakódok nem lévén (Java se nagyon van!) azért nem 5 perc mire átlátja az emberfia hogy mit és hogyan kéne.
Két 2 óra alatt sikerült is megtalálnom hogy hogyan keressek meg egy táblát a dokumentumban név alapján. A kulcs a getTextTables() és a getByName() metódusok. Logikus elnevezések. 🙂 Aki használta annak mindenképpen.

itemsTable = doc.getTextTables().getByName(‘elemek’)
tableText = itemsTable.getCellByName(“A1”)
tableText.setString(“szöveg”)
Sötöbö.

Így lehetőségem nyílt például ilyen irodai felhasználásra:

  • Gizike megírja a dokumentumsablont (vagy körlevélsablont)
  • betölti egy erre megírt célszoftverbe
  • a program megtalálja a sablonban az entitásokat (vagy mezőket) amiket gizike elhelyezett.
  • majd fogja a forrás adatbázist (partnerek, megrendelések, számlák, árajánlatok, raktárnyilvántartás stb…) és a sablont az adatokkal összeműtve a kimenetet valahogy feldolgozza: PDF, email küldés, e-szignó, Fax, nyomtatás)

Így, minimális energiabefektetéssel kaptunk egy minőségien megszerkeszthető sablonozható rendszert. Teszt gyanánt kipróbáltam, és pár óra alatt sikerült Szállítólevél készítő programot összedobni a vállalatirányítási szoftverhez amit most kezdtem el csinálni. Az eredmény lenyűgözően szép és pontos. Ráadásul minden formázási eszköz rögtön rendelkezésemre áll, nem kell fejleszteni.
Pár óra fejlesztést vessük össze azzal, mi lenne akkor ha az ismétlődő fejléc (élőfej), ismétlődő táblázatfej, behúzások, automatikus szövegigazítások, stb mindezt nekem kéne implementálni és produkálni hasonló minőséggel mondjuk egy számlázó szoftver esetén. Nem beszélve arról, hogy így gyakorlatilag egy-két napos munkával akár egy számlázót is össze tudok már pakolni. Kész a linux alapú táviroda. 🙂

Hihetetlen perspektívák nyíltak így meg. Még magam se nagyon tudom elképzelni hogy mennyi mindenre fel tudnám használni ezt az infrastruktúrát. Pár gyakorlati terv és biztos vevő már így is akad. Van egy tippem, hogy a google is használja az UNO-t… 🙂

javascript médiatípus

Épp oktatóanyagot írok HTML és XHTML témakörben (sok elfelejtett/nem használt dolog kerül elő 🙂 ), és a content-type témakörben találtam egy számomra új dolgot. Az IANA MIME Media type oldalán a text/javascript elavult címkével van jelölve (a vonatkozó RFC-ben is). Helyette az application/javascript -et javasolja. Kipróbáltam és működik. Lehet tippelni melyik böngésző nem kezeli…

raid1 és 3 merevlemez

Cél: szoftveres raid1 (tükrözés) megoldása.
Adott hardver:

  • 1db 40 gigás merevlemez, rajta a hardy rendszerrel. (sda)
  • 2db 160 gigás merevlemez, ezekre kerül a raid és a rendszer kissé átméretezve. (sdb és sdc)

Következők történtek első nekifutásra:
Itthon csak 6.10-es ubuntu cd-t találtam, de mivel elméletileg teljesen mindegy milyen verzióval csinálom, így azt tettem be (persz a gparted miatt nem teljesen mindegy). Gparteddel létrehoztam az egyik új merevlemezen a partíciókat és a meglévőket átmásoltam/átméreteztem. A grub-ot az fstabot és a grub menu.lst-t beállítottam majd megnéztem, hogy betölt-e a rendszer. Itt kezdődtek a bonyodalmak. Egy érdekes ata bugba futottam ami az eredeti hardy telepítést érinti. Bejegyzések alapján azt javasolták hogy frissítsem, intrepidet már nem érinti a hiba. Ezt már nem akartam a régi live cd-ről megcsinálni, ezért leszedtem egy intrepid-et. Viszont itthon csak dvd van, munkahelyen van cd. K3b probléma nélkül kiírta a cd imaget dvd-re. Végre valami ami működik. Intrepid betölt, a root és a boot partíciókat felcsatoltam, majd chroot-olva a környezetet jött a dist upgrade. Probléma nélkül. Feltettem az mdadm-ot, majd létrehoztam a raid tömböket. Ekkor követtem el a végzetes hibát, nem hoztam létre a fájlrendszert a raiden is, hanem rögtön megkezdtem a szinkronizálást. Az mdadm viszont nem hoz létre superblockot és betöltéskor az fsck be is szólt hogy ez így nem lesz jó… Éjjel egy. S láttam hogy mindez nem jó. Alvás. Ma új lappal, zsibbadó arcszerkezettel (pofánrúgott a fogtündér délelőtt), megnézzük hogyan is kellett volna tegnap…

Raid vs Connor második menet:
Intrepid korong be. Partíciók legyalulása. Új szerkezet létrehozása. Így néz ki per winyó:


/dev/sdb5 /boot: 2 giga
/dev/sdb6 swap: 3 giga
/dev/sdb7 /root: 20 giga
/dev/sdb8 /home: maradék

Ugyan így az sdc is. Mindegyik raid flag-et, a /boot boot flag-et kap.
Hozzuk létre a raid-eket. Ehhez mdadm kell majd ami alapból nincs fenn, tehát feltesszük:
apt-get install mdadm


boot:
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sdb5 /dev/sdc5
swap:
mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sdb6 /dev/sdc6
root:
mdadm --create /dev/md2 --level=1 --raid-disks=2 /dev/sdb7 /dev/sdc7
home:
mdadm --create /dev/md3 --level=1 --raid-disks=2 /dev/sdb8 /dev/sdc8

A háttérben megkezdődik a resync ezt várjuk meg (avagy nézzük a macskát ahogy játszik az mdstat-al).

watch cat /proc/mdstat

Hozzuk létre a fájlrendszert a raiden:

mkfs.ext2 /dev/md0
mkswap /dev/md1
mkfs.ext3 /dev/md2
mkfs.ext3 /dev/md3

Most pedig mindent szépen átpakolunk a régiről az újra. Ehhez felcsatolunk mindent és létrehozzuk a szükséges struktúrát:


mkdir /mnt/new /mnt/old
mount -t ext3 /dev/md2 /mnt/new
mount /dev/sda6 /mnt/old
mount /dev/sda7 /mnt/old/home

mkdir /mnt/new/home /mnt/new/boot
mount -t ext2 /dev/md0 /mnt/new/boot
mount -t ext3 /dev/md3 /mnt/new/home

Kezdődhet a másolgatás:


cd new
tar -C ../old -clspf - . | tar -xlspvf -
cd ..

umount /mnt/old/home
umount /mnt/old

Mivel nálam frissítés kell (hardy nem bootolna), ezért ezt most elvégzem:


chroot /mnt/new
mount -t proc proc /proc
cat /etc/apt/sources.list | sed s/hardy/intrepid/ > new; mv new /etc/apt/sources.list
apt-get update
apt-get dist-upgrade

Újabb szünet.
Ezek részek megint általánosak, mindenki számára el kell végezni. Írjuk át a szükséges fájlokat:

  • vim new/etc/fstab
  • vim new/boot/grub/menu.lst

    root=/dev/md2 md1,/dev/sda7,/dev/sdb7
  • vim new/etc/initramfs-tools/modules

    md
    raid1

Fstabnál md esetén uuid helyett /dev/md[0-9] formátumban adjuk meg, grubnál a root-t kell átírni a megfelelőre. Esetemben /dev/md2. Az initramfs-tools modules fájlába md és raid1 sorok kellenek, hiszen szükséges hogy az initramfs tartalmazza ezeket a kernelmodulokat.

Megnézzük, hogy a grub megtalálja-e amit kell:


grub

root (hd1,4)
setup (hd1)

root (hd2,4)
setup (hd2)

Elméletileg mindent megcsináltunk, leválaszthatjuk a régi merevlemezt. Gép kikapcs, régi winyó leköt, gép elindít. Újra a livecd-t indítsuk. Hozzuk létre a tömböket újra. Mivel a winchester leválasztása után már átrendeződtek, így ennek megfelelően paraméterezzük:

mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda5 /dev/sdb5
mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sda6 /dev/sdb6
mdadm --create /dev/md2 --level=1 --raid-disks=2 /dev/sda7 /dev/sdb7
mdadm --create /dev/md3 --level=1 --raid-disks=2 /dev/sda8 /dev/sdb8

Csatoljuk fel a boot és a root partíciókat majd lépjünk be a chroot-ba. Erre azért van szükség mert az update-initramfs parancs livecd-n nem fut, ami meg fut az meg nem úgy fut ahogy kéne. Hozzáadjuk az mdadm-hoz, az elkészített tömböket és újrageneráljuk az initramfs-t (initramfs csomagolja az mdadm.conf-ot is, ezért szükséges, hogy a tömb benne legyen!!!):
mdadm --detail --scan >> /mnt/etc/mdadm/mdadm.conf
update-initramfs -u

Reboot és betöltés a merevlemeről.

Megjegyzések:

  • mdadm: metadata format 00.90 unknown, ignored.

    /etc/mdadm/mdadm.conf fájlban a metadata=00.90 -t cseréljük le metadata=0.90 -re

  • Talán egyszerűbben is létre lehet hozni a rendszert. Különös tekintettel a második “tömblétrehozásra”. A neten leginkább olyan megoldások vannak amiknél a felét hozzák létre, arról töltenek be majd hozzácsapják a másik felét. Ez még tesztelést igényel részemről. A másik elképzelés aminek nem tudtam utánajárni, hogy uuid-t adok meg a régi típusú megadás helyett. Bár az initramfs pillanatában még ahogy elnéztem nem létezik a /dev/disk/by-uuid, így ez az elképzelés necces.
  • id változtatása parancssorból:
    sfdisk --change-id /dev/sdb 1 fd
  • Ha nem lenne éles irodai rendszer akkor most jönne az a játék hogy lehúzom az egyiket és úgy bootolok.

Következő (számomra) érdekes dolog a virtualbox xp partíció átméretezése.