Az értelmetlen szabályok megszegése az értelmes gondolkozás biztos jele.
Napi idézet
“A számítógépes játékok nincsenek hatással a srácokra. Ha gyerekkorunkban hatott volna ránk a PacMan, akkor ma sötét termekben rohangálnánk tablettákat rágcsálva, miközben repetitív elektronikus zene szól.”
Hupsz 🙂
VirtualBox partíció növelése
Elfogyott a hely a virtuális gépen, szerencsére már nem olyan bonyolult megnövelni mint régen… Persze a vmdk formátum (amit preferál új virtuális gép létrehozásánál) átméretezését a virtualbox még nem támogatja.
Az alábbit kell tenni:
1. konvertálni a vmdk formátumot vdi formátummá:
VBoxManage.exe clonehd Appliance-disk1.vmdk appliance_1.vdi –format vdi
2. Új uuid-et generálni, mert ha ugyanaz több lemeznek az uuid-je, akkor a virtualbox ellenségessé válik, és nem csinál semmit egyik lemezzel se:
VBoxManage.exe internalcommands sethduuid Appliance-disk1.vdi
3. Átméretezni a kedvenc vdi formátumú lemezünket:
c:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd Appliance-disk1.vdi –resize 12000
(a 12000 mb-ot jelent)
4. átrakni az új lemezt a virtuálisgépbe (merészek vissza is konvertálhatják vmdk-ba)
5. átméretezni a partíciót az operációs rendszer számára (pl. bootolni egy ubuntu iso-t, és gparted-el átméretezni a kívánt partíciót)
Scarlett upgrade
Ilyen lett:
Hozzáértőknek feltűnhet, hogy az új kép sokkal profibb, hisz míg a régin csak egy vézna kis árnyék van, az új képen frankó tükröződés. Amikor ezt megláttam, tudtam, hogy a sorsom megpecsételődött. Egyszerűen kell.
Persze vannak még különbségek, amik a képen nem látszanak elsőre. Pl. míg a 2i2 usbről működött, a 6i6-nak már dedikált tápegységre van szüksége. Ez lehetne hátrány is, de mint tudjuk, ha valaminek külön táp kell, akkor az csak egyet jelenthet: sokat fogyaszt. És ha csak nem rontottak el valamit nagyon a Focusrite főhadiszállásán, akkor reménykedhetünk benne, hogy ez a valami gyorsabb is lesz ezáltal és nem csak olvasztjuk vele a jégsapkákat, mert megtehetjük (segítek: nem hibáztak, gyorsabb lett).
Fontos apróság továbbá, hogy van hozzá MixControl is végre (hello pfl, hello loopback). Az igazat megvallva azt hittem, hogy ez alap, amíg egy kedves angol úriember fel nem világosított, hogy rosszul hiszem. Persze ahogy a mondás tartja, olcsó hangkártyának ne nézd a MixControlját. Sajnos még a 6i6 mixere is fapad a Liquid Saffire 56 mixeréhez képest de ennek legalább van.
És hát a hangja… Szóval a teszt biztos jól sikerült volna, ha nem akadok el az első sound check videónál:
Chocolatey finomságok
A minap elég sok alkalmazásból frissítettem verziót, és ennek kapcsán felmerült bennem az ötlet, hogy kellene készíteni egy programot, ami felveszi pontosan mit csinálnak az adott telepítők, és az rpm-hez hasonlóan egy univerzális csomagot készítene az ily módon rögzített adatokból (fájl és registry módosítások).
Ezt nem lehetetlen megcsinálni, elvégre a sysinternals process monitora is valami hasonlót csinál (csomagot nem készít, de a módosításokat szépen megmutatja). Ez egy elég jó kiindulási alap lehetne, és ha jól emlékszem open source is. Persze lennének problémák mindenféle varázs guid-ot generáló komponens regisztrációkkal, kiszűrni mi tartozik a telepítőhöz mi nem, nomeg a file formátuma, operációs rendszerenként eltérő műveletek. De hát a problémák azért vannak, hogy az emberek megoldják őket 🙂
Mivel időm nincs, gondoltam segítségül hívom a google-t, és megnézem, van e már ilyen. Sajnos pont ilyen nincs (szóval valaki aki lelkes, és ideje van igazán megírhatná), ellenben van egy sokkal egyszerűbb (de legalább vicces fejlesztők által készített) alternatíva, a Chocolatey.
Ez egy primitív apt-get windowsra, a felhasználók egyszerű scripteket készítenek, és egy leírót. A script általában letölti a telepítőt, felrakja silent módban a gépre. Update során megnézi a leírót, van e újabb verzió, ha van akkor ezt a folyamatot megismétli az újabb scriptel.
Értelemszerűen uninstallálni nem tud (az enyém tudna, bibibiii), és a csomagok terén is vannak még hiányosságok (pl: pspad, plex, winamp, fences, hypersnap még nincs), de a dolog működik, és még így is nagy könnyebbség, hogy nem kell kézzel frissítgetni mindent. A hiányzó csomagokat pedig bárki elkészítheti (én pl. hétvégén a felsoroltakat megcsinálom), és a support is csodás (vasárnap este írtam, hogy egy csomag hibás, másnap reggelre jött a válasz, hogy javítják).
Szóval egyenlőre maradnak a nagy álmok, az univerzális windows telepítő csomagot készítő alkalmazást illetően, aztán majd egyszer ha sok időm lesz (pl. elfogynak a synctocloud feladatok), akkor lehet nekiállok…
Addig is: The chocolatey gods have answered your reuest! Yipieee!
Oracle 11g 64 bit telepítése ubuntu 12.04 64 bit alá
Az Oracle céget és piacvezető alkalmazásukat elég jól jellemzi, hogy az ubuntu és minden más normális linux disztribúció támogatása kimerül abban, hogy tedd redhat-ra mert az a supportált. Oracle adatbázis miatt redhat-et telepíteni pedig több mint nevetséges.
Az ubuntura történő telepítés nem is olyan bonyolult, csak rá kell jönni a telepítő (és a borzasztó oracle telepítést végző script halom) működésére.
A telepítő két dolgot csinál valójában:
- kimásolja az oracle fájlokat
- sok make fájlal, és elképzelhetetlenül sok (és értelmetlen) változó segítségével lefordítja a bináris dolgokat
Az első lépésen viszonylag könnyen felül lehet emelkedni, a neten megvan hozzá minden, én csak kigyűjtöttem egy helyre.
Kell egy kevés dependencia, hogy egyáltalán elinduljon a telepítés:
sudo apt-get install ksh less lesstif2 lesstif2-dev lib32z1 libaio1 libaio-dev \ libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libmotif4 \ libodbcinstq4-1 libodbcinstq4-1:i386 libpth-dev libpthread-stubs0 \ libpthread-stubs0-dev lsb-cxx make openssh-server pdksh rlwrap rpm \ sysstat unixodbc unixodbc-dev unzip x11-utils zlibc gcc-multilib \ ia32-libs libstdc++5 libstdc++5:i386
Egy két extra link, hogy minden ott legyen, ahol a telepítő keresi:
sudo ln -s /usr/bin/basename /bin/basename sudo ln -sf /bin/bash /bin/sh sudo ln -s /usr/bin/rpm /bin/rpm sudo ln -s /usr/bin/awk /bin/awk sudo mkdir /usr/lib64 sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/ sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/ sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/ sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64 sudo ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a sudo ln -s /bin/lib/libgcc_s.so.1 /lib/libgcc_s.so sudo ln -s /usr/lib/libstdc++.so.6.0.13 /usr/lib/libstdc++.so.5
Egy user, és pár group a telepítőnek, és az oracle példánynak:
sudo groupadd oinstall sudo groupadd dba sudo groupadd nobody sudo useradd -m oracle -g oinstall -G dba sudo passwd oracle
Kell még egy pár kernel paraméter:
sudo nano /etc/sysctl.conf
Ide az alábbi dolgokat kell felvenni:
kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000
Ha a módosításokkal megvagyunk, olvastassuk fel újra a kernelparamétereket:
sudo /sbin/sysctl -p
A limits-eket is érdemes módosítani:
sudo nano /etc/security/limits.conf
ide fel kell még venni az alábbi sorokat:
* soft nproc 2047 * hard nproc 16384 * soft nofile 1024 * hard nofile 65536
És kell még egy ál-redhat release is, hogy a telepítő megnyugodjon:
sudo nano /etc/redhat-release
A fájl tartalma pedig:
Red Hat Enterprise Linux AS release 3 (Taroon)
Ha mindent default módon telepítünk, akkor érdemes még felvenni, az alábbi környezeti változókat, hogy az életünk könnyebb legyen már a telepítés alatt is:
#oracle exports export ORACLE_BASE=/home/oracle export ORACLE_HOME=$ORACLE_BASE/app/oracle/product/11.2.0/dbhome_1 export ORACLE_SID=orcl11 export PATH=$PATH:$ORACLE_HOME/bin
Ha ezzel megvagyunk, akkor jöhet a telepítő kitömörítése, és indítása (oracle userként).
xhost + sudo su oracle ~/oracle_install/runInstaller
A fájlok másolása ha nem rontottunk el semmit, akkor hiba nélkül megtörténik, az érdekes rész ezután jön. Amikor elkezd fordítani az oracle, jó eséllyel látunk majd egy két hibát. Gondolom meg kell indokolni Oracle-nál, hogy mire kell azt a nagyon sok support költséget fizetni (hogy nem normális telepítő írására, az biztos). A hibák az alábbi főbb problémákra vezethetőek vissza:
- Ubuntu alatt a gcc picit szigorúbban fordít, és meg kell enyhíteni a lelkét, amin a „-Wl,–no-as-needed” paraéterpáros általában szokott segíteni.
- Hiányoznak a fordításhoz referenciák, amit a gcc általában –l(lib) formában kap meg.
Itt fontos megjegyezni, hogy a –lagtsh az valójában libagtsh.so-t jelent, azt érdemes keresni. Másik hasznos utasítás az nm parancs, aminek a segítségével megnézhetjük, hogy egy adott függvény, amit épp a make nem talál, milyen so fájlokban van benne. Pl:
nm -A $ORACLE_HOME/lib/*.so | grep procr_get_ctx
Ahol U van, ott az so fájl használja a szolgáltatást, ahol T ott implementálva van.
A neten sok problémára van megoldás, de nem mindre (én kettőre nem találtam). A tapasztalatom szerint ilyen esetekben érdemesebb picit beleásni a dolgokba, és megérteni, mit és miért csinálunk, mert az az esetek nagy részében célravezetőbb mint mindenféle misztikus sed-et, és egyéb utasításokat kiadni, hátha valami működik.
Az részletes fordítás alatt jelentkező (make) hibákat az alábbi módon érdemes nézni:
tail -f $ORACLE_HOME/install/make.log
Vegyük sorra, hogy nálam milyen problémák adódtak, és mi volt a megoldásuk:
– libagtsh.so: undefined reference to `nnfyboot’ in make: rdbms/lib/dg4odbc]
Ez egy elég ravasz hiba, a probléma az, hogy nincs még meg az a fájl, ami a fordításhoz szükséges. A megoldást az internet szállítja: fordítsunk magunknak egyet:
ln -s $ORACLE_HOME/lib/libclient11.a $ORACLE_HOME/lib/libagtsh.a $ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0
– libnnz11.so: could not read symbols: Invalid operation /sysman/lib/ins_emagent.mk
Kis keresgetés után lehet látni, hogy a hívás a $ORACLE_HOME/sysman/lib/ins_emagent.mk fájlból indul, és egy olyan szolgáltatásra hivatkozik, ami a libnnz11.so-ben van benne. Ezt pótoljuk oly módon, hogy a dependenciát is kapja meg meg a gcc:
$ORACLE_HOME/sysman/lib/ins_emagent.mk
régi:
$(MK_EMAGENT_NMECTL)
új:
$(MK_EMAGENT_NMECTL) -lnnz11
– genorasdksh: Failed to link liborasdk.so.11.1
Szintén egy dependencia probléma, amikor a teljes oracle sdk-t próbálja lefordítani, akkor nagyon sok dolgot nem talál hirtelen. A megoldás hasonló az előző esethez, a megnézzük a szolgáltatásokat, azonnal feltűnik, hogy a libagtsh.so és a liborasdkbase.so hiányzik neki nagyon. Értessük meg vele:
$ORACLE_HOME/bin/genorasdksh
Régi:
OLIBS="$LCLIENT $LSQL $LVSN $LNETWORK $LCLIENT \ $LCOMMON $LGENERIC $LMM $XAONDY $LNETWORK $LCLIENT $LCOMMON \ $LGENERIC $LTRACE $LNNET_ON $LSKGXP"
Új:
OLIBS="$LCLIENT $LSQL $LVSN $LNETWORK $LCLIENT \ $LCOMMON $LGENERIC $LMM $XAONDY $LNETWORK $LCLIENT $LCOMMON \ $LGENERIC $LTRACE $LNNET_ON $LSKGXP -lagtsh -lorasdkbase"
– getcrshome – libhashgen11 missing reference
Itt ha megnézzük, akkor az a szolgáltatás amit keres, megtalálható az .so fájlban, ami meg is van adva. Itt a hiányzó extra paraméter a gond. Kis keresgetés után erre is rá lehet találni. A megoldás:
$ORACLE_HOME/srvm/lib/env_srvm.mk
Régi:
LDOBJSZ=-m64
Új:
LDOBJSZ=-m64 -Wl,--no-as-needed
És láss csodát, hiba nélkül működik az oracle ubuntun. Szerencsére csak az oracle build script-jeit láttam, a forrását nem, de ha azt is olyanok írták, mint ezeket a scripteket, akkor jobb is ez így…
Drobox szerver otthonra
Miutan elszaporodtak a gepek a halozaton, egyre nagyobb szerephez jut a dropbox. Ellenben eleg sok szamitogepemben ssd van abbol is a legkissebb darabok igy oda nem telepul ilyesmi (elvegre rendes ember adatokat ugyis csak raiden vagy cloudba tarol, vagy inkabb mindket helyen, felesleges a nagy hdd kis gepekbe). Felraktam egy dropboxot a szerverre is, es kiosztottam sambaval (mert cloud nelul azert megsem elet az elet :).
Ennek a megoldasnak van par elonye:
– a szerverrel is barhonnan tudok egyszeruen fajlokat cserelni (pl torrent fajlt megadni letoltesre)
– a lokalis gepek sokkal gyorsabban szinkronizalnak a dropboxal (hisz lanrol toltenek)
– ha valami nagyot akarok feltolteni, csak atdobom a szerverre, es majd megkuzd vele
– alahol nincs dropbox onnan is elerem a benne tarolt fajlokat fileshare-n keresztul
A tanulsag pedig: Cloud ide vagy oda, mindig jo ha van egy szerver odahaza 😉
GPX fájlból route endmondo-ba
Itt találtam egy jó leírást, hogy lehet csak útvonalat tartalmazó gpx fájlból endomondo útvonalat létrehozni.
https://getsatisfaction.com/endomondo/topics/gpx_import_not_working
A lényeg:
At the moment we don’t have a feature for a direct import of GPX file without timestamps, but there is a workaround – see how to do it below.
1) Run the file (containing the route) through a converter such as the one found at gpsies.com. Converting the file from it’s current state to a GPX Track will generally add all of the information that we need.
2) Import this file as a workout to endomondo.com
3) Save a workout as a route: go to the workout, click “To Route”, give it a name and select whether it should be public or private (private routes are only visible by you), and click save. Now you can find the route on the “Routes” page.
Route is now available to be downloaded to the phone or used otherwise.
Ennek örömére meg is csináltam a G50 útvonalát: http://www.endomondo.com/routes/175134683
Wifi optimalizálás, avagy harc az erőért
Pesten a népsűrűségnek, és a wifi hálózatok terjedésének megvannak a maga jótékony hatásai. Soha se volt jó a jel a pesti lakásban, de azért amikor minden 5 csomag request timeoutra futott, elkezdtem komolyabban venni a problémát. Gondoltam leírom milyen út vezetett a megoldáshoz, később még jól jöhet.
Nulladik lépésként ellenőrizzük, hogy az internet kapcsolattal, vagy a wlannal van probléma. Elég kellemetlen, ha órákat töltünk a wlan kapcsolat állítgatásával, közben az internettel van probléma. Ezt úgy tudjuk megtenni, hogy elfelejtjük a wlant, nézünk egy ping -t google.com-ot, esetleg speedtest.net-et, és ha minden rendben, megismételjük ezt vezeték nélküli hálózatról is.
Ha csak a wlan része a problémás a dolognak, akkor jöhet az érdemi munka. Első körben mindig próbáljuk meg frissíteni a router szoftverét, mert lehet azt próbáljuk megoldani épp, amit a router készítői már megoldottak (mondjuk 2 éve).
Ha ez megvan, és a helyzet nem javult, akkor a “mi mindent megtettünk” felkiáltás mellett végre széttúrhatjuk a gyári beállításokat.
A hullámformából következik egy csomó dolog (például, hogy nem kell vezeték…), de ami minket most a legjobban zavar az a hullámok között fellépő interferencia. Ha sok wlan van egy helyen, akkor azok hajlamosak összeveszni a csatornákon, ami elég rossz hatással van hálózatunk működésére. Azt, hogy pontosan mi is történik körülöttünk a Wifi Analyzer nevű programmal meg tudjuk nézni, akár a telefonunkon is. Itt kell választani egy olyan tartományt, ami viszonylag kevésbé belakott. Nálam ez a 12 csatorna volt (a routerek általában az alacsonyabb csatornákat lakják be, és ott harcolnak egymással).
Első beállításunk tehát:
Channel: 12
Ha nagyon terhelt a hálózat, akkor érdemes még a csomagméretet kisebbre venni, mert kisebb csomagokba kevésbé tud belerondítani bárki. Ha ezt az értéket túl kicsire vesszük, akkor járhat sávszélesség vesztéssel, de: inkább legyen egy lassú de állandóan működő hálózatom, mint egy gyors, de néha nem működő változtat.
Fragmentation Threshold: 1024
Ilyen helyzetben alap, hogy minden sok sok crc-vel fogunk ellátni, hogy minél nagyobb hibákat is tudjanak javítani az eszközeink, tehát:
Preamble Type: Long preamble
Ha az életben maradásért (na jó nem, csak stabil internet kapcsolatért) küzdünk, akkor mindenféle optimalizációt (mint a rövid gurad intervallt, csomag összefűzést kapcsoljunk ki):
Short GI: Off
Aggregation: Off
És lőn nagy öröm, boldogság, éjszakákat átívelő stream-ek.
A végén megjegyezném, hogy -1 lépés az, hogy ne vegyük meg a legolcsóbb és legrosszabb minőségű routert. Törekedjünk az ismert, bevált márkákra (asus, cisco, linksys, stb), és ezekből se a kategória alját vegyük, hanem a kb. 2-3000 huf-al drágább középmezőnyből válogassunk. Olcsó noname routereknél nem ritka jelenség, hogy nagy mennyiségű adattól túlmelegednek/belassulnak, vagy egyszerűen sok élő kapcsolattól meghalnak, és ezekre a problémákra rendszerint csak egy drágább router vásárlása jelenti a megoldást.
Dosbox + Gravis ultrasound
A régi szép időkbe a midi zene, egyet jelentett a Gravis Ultrasound-al. Akkoriban az egyetlen hangkártya volt, ami elérhető áron, és valamilyen szinten élvezhető módon játszotta le a midi fájlokat. Ahhoz, hogy ezt a legendát, és a régi midi hangzást újra átélhessük a dosbox alatt futó régi játékokban, szükségünk van a régi Gravis kártyához tartozó fájlokra (ahonnan majd a patch-eket be tudja tölteni).
Ezek bár kislemezen elérhetőek az interneten, és pici munkával áthidalható ez a probléma, mégiscsak egyszerűbb egy zip-ből kitömöríteni a dolgot és erre hivatkozni.
A zip letölthető innen: ultrasnd.zip
A dosbox konfigurációs fájlában az alábbit kell írni a [gus] szekcióba:
[gus] gus=true gusbase=240 irq1=7 irq2=7 dma1=3 dma2=3 gusrate=22050 ultradir=C:\ULTRASND
az ultradir helye fontos, ez oda mutasson, ahova a dosboxon belül kimásoltuk a zip tartalmát.