2011. máj. 28.

Váltás

Megszegve régi, önmagamnak tett fogadalmamat leváltottam az operációs rendszert a laptopomon.

Ubuntu volt rajta már pár éve, a sima kiadás, és mindig csak frissítve volt. A fogadalmam az volt vele kapcsolatban, hogy ha a végletekig tele is szemetelem, vagy félpercenként össze is omlik, szakítok azzal a rossz szokással, hogy "újrahúzzuk oszt' jólesz". Helyette szép kulturáltan kitakarítom, karban- és rendben tartom, vigyázok a rendszerre, és bármi áron helyreálítom, ha baj van.

Ez meg is volt, csakhogy egy idő után nem tetszett az Ubuntu. Az nem érdekelt, hogy "magasabb körökben" lenézik, hogy "titkárnő-Linux", az viszont már sokkal inkább érdekelt, hogy rohamosan elk**vult a rendszer. A Gnome Shell, a Unity, a Global Menu, a MeMenu, a rengeteg ilyen baromság nekem nagyon nem jött be. Eleinte, amikor bekerült a disztróba, a PulseAudioból is elegem volt. Néhány kiadás erejéig még ki tudtam gyomlálni, és sima ALSA-val zenélni, de aztán annyira beintegrálták, hogy rántott volna magával olyan dolgokat is, amik kellettek volna még, tehát maradt. Végül (nagyrészt) megszűntek a vele kapcsolatos problémák, és megláttam azt a néhány csekély előnyét a sima ALSA-val szemben, amik nélkül viszont igazán tudtam volna élni. Ezért lehetett tehát, hogy megbékéltem a mostani rendszerben is jelen levésével.

Ugyanis néhány hete az Ubuntu eltűnt a gépről, és jött helyette az LMDE, azaz Linux Mint Debian Edition. Gnome-mal, mert megszoktam. Azért nem sima Debian, mert a s**gnyalást is megszoktam. Külön tetszik, hogy rolling release, tehát nem kell szívni a félévenkénti dist-upgrade-del, elég a napi kis upgrade-ekkel... De azokkal akkor sincs annyi, és legalább egyesével jönnek. Lévén a Debian testing a forrásrepója, pár extrával, elég régi benne néhány (az összes?) csomag. Példának okáért a VLC, a GCC, és főleg a Chromium. Nekem pedig ezek kellenek, méghozzá új kell belőlük. (A testing-ben lévő Chromiumba még kiegészítőket [AdBlock Plus] se tudtam rakni a Store-ból, mert ahhoz is túl régi volt. Asszem 6-os körüli.)

Ezt úgy oldottam meg, hogy hozzáadtam a Debian unstable repóját is, és az apt preferences konfigfájlban "pineltem" olyan prioritással, hogy csak akkor rakjon fel belőle csomagot, ha azt én külön úgy kérem, de amik onnan vannak felrakva, azokat frissítse is onnan. Ez pedig a 200-as Pin-Priority. (Megj.: Az alapból jelen lévő 500-as priority-jű pinhez meg oda kellett még írni, hogy a=testing, mert anélkül mindre érvényes volt. [Asszem ez volt a külön szükséges változtatás]). Tehát jelenleg Gnome, Linux Mint, viszonylag stabil (testing) Debian, néhány "unstable" szoftverrel meg mentolízű extrával.

S látám, hogy ez jó.

2011. febr. 4.

Verziókezelő rendszerekről

Mivel egyre komolyabb projekteket kezdek (pl. most a szakdolgozatom), és már régebben is olvastam, hogy milyen jó dolog is ez, valamilyen verziókezelő rendszer keresésébe kezdtem.

Ebben is nehezítette a dolgomat, hogy "ökörh*gyoztában", vagyis 4-5 helyen is, 2-féle platformon fejlesztek mindenfélét, és csak a saját gépemen vannak kielégítő jogosultságaim és fejlesztői környezetem. Mindenhol máshol pendriveon IDE hurcolás+windows+mezei júzer.

Szóval ilyen rendszerekből van ugye kétféle: a központosított és az elosztott. Előbbiből a Subversion (svn), utóbbiból a git és a Mercurial (hg) jött szóba. Nekem már csak elvből is jobban tetszett az elosztott, meg saját (svn) szervert nem akarok mindenhol indítani csak ezért, a netet meg nem érem el mindig. Csak majdnem.

Maradt tehát a git és a hg. Az előbbi azért lenne jó, mert a "Nagyok" csinálták és használják, nyilván profi; de fele Perl, fele Shell, fele meg Linux-C, szóval windowson csak Cygwin-el vagy MSYS-el menne, amiből az utóbbi még csakcsak, de ha nem muszáj, azt se. Lévén a hg meg Python, az megy mindenhol. Megy pendrive-ról is (csak két sort kell átírni valami konfigfájlba, azt is a bugyuta meghajtókat-betűvel-jelölős, relatív-útvonalat-nem-ismerős rendszer miatt...)

Félig kizárásos alapon maradt tehát a Mercurial.

Online "backupként" pedig ahogy az svn-nek a SourceForge (jó, ez itt inkább A repó), a gitnek a github, úgy van a Mercurialnak is a BitBucket.

Elégedett vagyok vele, sokszor hasznos a revert, meg két év múlva jó lesz nevetni a changelogon...

Tanulság: DVCS-t a népnek!

Ui.: Hogy miért nem Bazaar (bzr) meg a Launchpad? Nem tudom, valahogy elkerülte a figyelmemet akkor. Elsőre nem találok benne kivetnivalót. Sőt. De már mindegy. Majd talán...

2011. jan. 1.

[K|L|X]Ubuntu Live, CD nélkül

Nagyon jó dolog ez a Live CD-s kipróbálósdi, de egy hátránya van: lemezre kell írni a .iso-t, hogy betöltsön róla a gép. Vagy pendrive-ra rakni, vagy virtuális gépbe az .iso-t képként rakni.

Merevlemezen lévő .iso-t kiírás nélkül a natív gépre betölteni GRUB2-vel így lehet ni:

/etc/grub.d/40_custom fájlba egy ilyent kell írni:

menuentry "CD-kép a merevlemezről" {
        insmod ext2
        set root=(hd0,1) # ezen a partíción van a CD-kép
        loopback loop /betoltendo/lemez/kep.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/betoltendo/lemez/kep.iso noeject noprompt --
        initrd (loop)/casper/initrd.lz
}


Utána kell egy update-grub2 parancs rendszergazdaként, hogy újragenerálja a konfigfájlt.
Különben ennek meg olyan hátránya van, hogy azt a partíciót, amin a lemezkép van (amit GRUB-ban megadtunk rootnak), nem használhatja az így betöltött rendszer. Valamit valamiért.

2010. dec. 10.

Közelebbi szög

Nemrégiben több alkalommal is találkoztam azzal a problémával, hogy két szög közül melyik áll közelebb egy harmadikhoz. Nyilván az, amelyiket kivonva a harmadikból és annak véve az abszolút értékét kisebb számot kapunk. Ez jó is lenne, ha a szögek nem fordulnának körbe 2π-nél.
De körbefordulnak.
Tehát például a 3°-hoz közelebb van a 355°, mint a 20°. Érthető?

Nem akartam azzal szórakozni, hogy mindegyiket adott intervallumba forgassam, meg megnézzem, hogy van-e közöttük "körbefordulási hely".

Ezután egy unalmas irodalomórán jutott eszembe az egyszerű, nagyszerű, bár inefficiens (Van ilyen szó! Már van.) megoldás: (Nyilván nem nekem először.)

double get_closer_angle(double to, double a, double b)
{
  return ((cos(a-to) > cos(b-to))?a:b);
}

Nyilván lehetne bele sokféle ellenőrzést, hogy melyik mivel egyenlő, és akkor rögtön visszatérni vele, mert két koszinusz nem megy olyan hamar, de ahova kellett, elég volt így.
C++-ban a szögfüggvények miatt radiánban dolgozik, de ez a módszer lényegén nem változtat.

2010. nov. 27.

Napi agy#@$&kapás...

Programozásverseny, multicast-el küldenek adatokat.
SMFL-t akartam a hálózathoz, mert az jó és egyszerű, de sajnos multicast-et nem tud.
Sima winsock nem jó, mert bár windowson fog futni, én linuxon fejlesztem.
Kell egy wrapper. Ezt találtam: SimpleSockets.
Tök jó, DE...

CPassiveSocket osztály BindMulticast függvénye kér két IP-címet meg egy portot.
A két cím const uint8*. Hát mi jut eszébe az embernek(?!), ha IPv4 cím és bájt tömb?
Ez:

uint8 ip[4] = {224,0,0,1};
(Feltételezve C++0x-ben lévő extended initilizer lists megértődését...)

De pedig nem, mert Host.h-ban van egy ilyen:

typedef unsigned char uint8;

És mit ért meg a BindMulticast függvény?
Ezt:

(const uint8*)"224.0.0.1"

Hát majdnem csúnyákat ordítozva vertem a fejem a falba...
Akkor legalább const char[]-t kérne, hogy tudjam, hogy szöveg...
Áárgh...

2010. nov. 2.

Apró snippet télire

Még a tavalyi fűtésszezonban készült, de most lett rá megint szükség.
További leírás nem szükséges. Ez egy ilyen poszt.

#!/bin/bash
while (true)

do
   notify-send "Nézd a tüzet!";
   sleep 600;
done;


Különben komolyan használom.

2010. nov. 1.

YouTube RickRoll

Tudtam én eddig is, hogy a Google-nál rengeteg elvetemült ember(?) dolgozik, de ez most megint jó volt:

Bekapcsolva a HTML5 Beta-t, azokon a videókon, amik tényleg Flash nélkül játszódnak le, jobb gombbal kattintásra előjön egy helyi menü. Mi van benne? Ez:


Az alsó csak visszavisz oda, ahol ki/bekapcsolni lehet a HTML5-ös lejátszót.
De a fölső? Nem működik ám, dehogyis. Ide mutat... Ezek betegek.