2010. augusztus 17., kedd

Elhanyagolva

Csúnyán elhanyagoltam ezt a blogot, ezen a közeljövőben igyekszem változtatni.
Az a baj, hogy nem tudom, miről írjak.
Semmiképpen sem szeretnék egyszerű, már kismillió helyen leírt dolgokkal foglalkozni, mert annak nem lenne értelme.
Linux címszó alatt el lehetne kalandozni a C++-hoz vagy a Python-hoz. Mindkettő elég erős eszköz a linuxos felhasználó kezében a Bash mellett.
Főleg, hogy az utóbbi felett kezd eljárni az idő. A Microsoft PoweShell-je elég magasra tette a lécet. Nem mélyedtem túlságosan bele, de azt már látom, hogy sokkal könnyebb és hatékonyabb vele a munka, mint a Bash-sel.
A probléma ezzel csak az, hogy mind a C++-nak, mind a Python-nak óriási (magyar és angol nyelvű) irodalma van, amihez már nem nagyon tudok érdemben hozzászólni.

Szóval: Ha valaki látogatja még a blogot, és van ötlete arról, hogy miről lehetne írni, az ne tartsa vissza magát. :)

2010. április 4., vasárnap

Az ssh, scp és az sshfs

Van Linux alá néhány zseniális program, az ssh, az scp és az sshfs.
Ezek arra valók, hogy távoli gépeket is úgy kezeljünk, mintha ott ülnénk előtte.
Az ssh segítségével rácsatlakozhatunk egy olyan gépre, melyen fut az ssh szerver, és megkapjuk a parancssorát. Az scp-vel fájlokat másolhatunk, az sshfs-sel pedig felcsatolhatunk egy távoli könyvtárat, mely minden program számára olyan lesz, mintha a saját gépünkön lenne.
Nekem itthon például két gépem van. Az egyik egy gyenge vas nagy háttértárral és egy linuxszal. Ott tárolom az összes fontos adatomat. (Filmek, képek, stb...) Ez a gép a 21-es porton keresztül (azt használja az ssh) elérhető a világhálóról, és így bárhol vagyok, hozzá tudok férni az adataimhoz.

Szemléletváltás

Rájöttem, hogy annak nincs túl sok értelme, hogy az összes parancson végigmegyek és részletezem a működését, mert ezek egyrészt ott vannak a manuálban, másrészt ott vannak a neten kismillió helyen és nyelven.
Mostantól inkább a Linux finombeállításaira és speciális lehetőségeire koncentrálok.

2010. február 24., szerda

A find parancs -1-

Régen írtam. Váljék mentségemre, hirtelen annyi dolog hullott a nyakamba, hogy alig bírok szelektálni.
Ez most csak egy rövid bejegyzés lesz a find parancsról.
Ez a hasznos parancs arra való, hogy (mint ahogy azt a neve is mutatja) állományokat keressünk.
A legegyszerűbben úgy lehet használni, ha belépünk abba a könyvtárba, amelyikben (vagy amelyik almappáiban) keresni akarunk, azután kiadjuk a következő parancsot.

find -name keresendo_cucc

Érdemes tudni, hogy nem csak név szerint lehet keresni, hanem a módosítás dátuma, vagy bármi más alapján is. 
Még azt is meg lehet adni, hogy a rekurzív keresés milyen mély legyen.
Ezekről bővebben a manuálban, vagy később a blogomban lehet olvasni.
Most csak adnék néhány egyszerű példát a használatára.

cd /
find -name *.pdf
Ezek kilistázzák az összes PDF-állományt.
cd
find -name *42*
Ezek a felhasználó home-könyvtárán belül (a cd paraméterezés nélkül oda dob) kilistáznak minden olyan fájlt, aminek a nevében szerepel a 42.

A find utasítás alapvető használatához szerintem ennyi tudás elég is.
Amint lesz időm, írok még.

2010. február 13., szombat

A jegyzet állása

Egyébként a jegyzet is készül, csak nem gondoltam volna, hogy ilyen unalmas lesz a formázás.
Ez is a jövő héten lesz elérhető.

A terminálok haszna

Az előző bejegyzésben írt projektek egyikét Windows alatt fejlesztem. (Visual Studio C++)
Néhány óra fejlesztés után kicsit játszani akartam, ha már egyszer Windows alatt vagyok. Játék elindít, 10 perc után pedig behal.
Jó. Előfordul, hogy egy program lefagy. Azért van az operációs rendszer, hogy egy ilyent lekezeljen. Várok, hátha kijön egy hibaüzenet, de semmi. Közben a képernyő sötét, a játék zenéje szól.
Nem baj. Ott a [CTRL]+[ALT]+[DEL] billentyűkombináció, amit neki is álltam nyomogatni, mint a hülye. Semmi.
Super gombra (A windows-logós gombnak elvileg ez a neve) se jött túl sok reakció.
Újra jött a hárombetűs kombó, amivel végre sikerült behoznom a feladatkezelőt. Legalább is az a középső választóképernyő feljött. Kiválasztottam rajta a feladatkezelőt, ami egyből el is tűnt. Újra a fekete képernyő fogadott.
Ekkor taktikát váltottam, és az [ALT]+[TAB]-ra szálltam rá. Szerencsére meg volt nyitva a Visual Studio is, ezért ez a kísérlet, még ha nem is egyből, de eredményre vezetett. A feladatkezelőt előhoztam újra, kiválasztottam a játék folyamatát, bezártam, és -mint aki jól végezte dolgát- folytattam a fejlesztést. Kb. 5 másodpercig. Ekkor a Windows kékhalált dobott, és újraindult. Ez van. Szerencsére mentettem.

Linux alatt mi történt volna hasonló helyzetben?
A [CTRL]+[ALT]+[F1]-gyel átugrottam volna az egyik konzolra, bejelentkeztem volna, és a killall -9 game paranccsal bezártam volna a játékot. Ezután a [CTRL]+[ALT]+[F7] kombinációval visszamehettem volna a GDM-be, és folytathattam volna a munkát.
Kár, hogy Linux alatt nem fut sem a FarCry, sem a Visual Studio... :(

2010. február 10., szerda

Leállás

Kicsit elhanyagolom most a blogot más projectek miatt. (Az egyik a Linuxhoz is köthető, de még korai róla bármit írni.)
Jövő hét közepén fogok újra írni. Előtte biztosan nem.

2010. január 31., vasárnap

Linux parancsok - jegyzet

Néhány napig nem lesz új bejegyzés, mert egy jegyzetet írok, mely a fontos és kevésbé fontos parancsokról nyújt egy könnyen kereshető áttekintést. Úgy szerda tájékában lesz érdemes visszalátogatni. Akkortájt fogok elkészülni.
Az összes (általam fontosnak talált) parancs benne lesz. Elég vaskos gyűjtemény.
Nyers szöveg formátumban már kész van és régóta használom (meg persze bővítem). Már csak a formázásokat kell megcsinálni.

cd, mkdir, rm, rmdir

Most egy rövid bejegyzés következik, melyben a címben említett parancsokról lesz szó. Ezek nem tartoznak a bonyolult parancsok közé.
  • cd
    Ennek a segítségével megváltoztathatjuk az aktuális könyvtárat.
    Paraméterezés nélkül a saját home-könyvtáradba dob.
    Meg lehet neki adni realtív elérési útvonalat, pl.: ../../mappa1/mappa2 és abszolút útvonalat is. (/dev/proc/)
    Fontos tudni, hogy ha csinálunk egy könyvtárat, akkor abban alapból létezni fog a . és a .. könyvtár. A . az aktuális könyvtárat jelenti, a .. pedig a szülőkönyvtárat. Tehát ha én azt írom, hogy cd ./././././././././, akkor nem fog semmi sem történni. De ha azt mondom, hogy cd ../../.., akkor 3 szinttel feljebb kerültem.
  • mkdir
    Ezzel lehet mappákat létrehozni. Az mkdir mappa1 parancs például létrehoz egy mappa1 nevű mappát az aktuális könyvtárban.
    Egyszerre létre lehet hozni több mappát is így: mkdir mappa1 mappa2 mappa3
    Ha létezik a mappa1 és mi ezen belül akarjuk létrehozni a mappa2-t, akkor az mkdir mappa1/mappa2 parancsot használjuk, ami ugyan azt jelenti, mint a cd mappa1; mkdir mappa2; cd ..; csak gyorsabb beírni.
    Lehetőség van egyszerre egész könyvtárszerkezetek létrehozására is a -p kapcsoló segítségével.
    mkdir -p aaa/bbb aaa/ccc aaa/ddd/eee aaa/ddd/fff
    Ekkor létrejön az aaa, azon belül a bbb, ccc, ddd, a ddd-n belül pedig az eee és fff.
  • rmdir
    Az rmdir üres könytárak törlésére használható. Azért jó, mert egy könyvtárat csak akkor hajlandó kitörölni, ha üres.
  • rm
    Fájlok és könyvtárak törlésére használható. Kapcsoló nélkül mappákat nem töröl, csak fájlokat. Az -r vagy -R kapcsoló hatására azonban bármit lezúz, legyen az fájl vagy könyvtár. Ezzel le lehet törölni a nemüres könyvtárakat is.
    Hasznos kapcsolók az -i és az -f. Előbbi kérdez, mielőtt töröl valamit, utóbbi pedig szó nélkül lezúz mindent. Érdemes őket nem összekeverni. ;)
    Érdemes tudni, hogy amit az rm letötöl, az még egy ideig visszaállítható. Erről is lesz még szó.

2010. január 25., hétfő

A terminál alapjai az ls parancson keresztül

Ebben a cikkben a terminál alapjait mutatom be. Először is nyissuk meg! (Ubuntu alatt: Alkalmazások -> Kellékek -> Terminál)


Most egy fehér hátterű képernyőt látunk, amiben villog a fekete kurzor. Nem tudom miért ez az alapbeállítás, még senkit sem láttam, aki így használta volna a terminált. Állítsuk is át! Kattintsunk rá jobb egérgombbal és válasszuk ki a profilok -> Profil tulajdonsága részt! Most kapnunk kellett egy szokványos ablakot, amin ott vannak a lehetséges beállítások. Válasszuk ki a színek-fület és vegyük ki a pipát a Rendszertéma színeinek használata mellől!


Ezután megadhatjuk a saját színeinket. Én a beépített sémák közül a Zöld a feketén-t javaslom. Ez jól néz ki és nyugtatja a szemet. (Ma már az iskolai táblák is fekete alapon zöld csíkokkal vannak.) De javaslom a többi séma átnézését és egyéni színek próbálgatását. A jövőben elég sokszor fogjuk bámulni ezt a villogó kurzort. :D

Leokézni nem kell, mert a változtatások egyből életbe léptek.

Most, hogy jól néz ki a terminálunk, elkezdhetünk vele dolgozni.
Gépeljük be először is azt, hogy ls
Ekkor láthatunk egy listát a saját home-könyvtárunkban lévő fájlokról. A színekből azt is megtudjuk, hogy ezek könyvtárak, vagy fájlok-e.

Most írjuk be azt, hogy clear. Ekkor kitörlődik minden. Csak a felső sorban látjuk a készenléti jelet, amire még visszatérünk.
Most inkább írjuk be azt, hogy ls -l
Ekkor egy olyan listát kapunk, amiben a fájlok egymás alatt vannak és minden információt megtudunk róluk.
Nézzük ezeket az információkat szépen egymás után!

Az első karakter a fájl típusát adja meg. Ez lehet - a sima fájl esetén, d a könyvtárak (directory) esetén és l a linkek (ezekre még szintén visszatérünk, bár nem hiszem, hogy ma) esetén.

Az első karakter után 3*3 karaktert láthatunk. Ezek a jogosultságok. Az első három karakter a tulajdonos jogait adja meg. Ez lehet r, w, vagy x. Az r az olvasási jog, a w az írási jog, az x pedig a futtatási jog. Ha az adott joggal rendelkezik a tulajdonos, akkor ott van a betű, ha pedig nem, akkor a betű helyén egy - van. A tulajdonos jogai után a csoport jogai jönnek, utána pedig mindenki más jogai. (Részletekért lásd: UNIX-alapú jogosultságkezelés)

A jogosultságok után egy szám áll. Ez könyvtárak esetén azt mondja meg, hogy az adott könyvtár hány elemet tartalmaz. (Minden könyvtár tartalmaz legalább kettő elemet, de ezekre majd a fájlrendszer tárgyalásánál visszatérünk.)
Fájlok esetén azt tudhatjuk meg, hogy az adott fájlra hány hardlink mutat. (Ezt is a fájlrendszereknél fogom tárgyalni, ami még odébb van. Egyelőre elég róla annyit tudni, hogy jó dolog. ;)

A harmadik oszlop a fájl tulajdonosa, a negyedik pedig a fájl csoportja. (Ez alapból egyezik a tulajdonos csoportjával, de átállítható.)

Az ötödik oszlop a fájl mérete bájtokban. Ez így nem túl hasznos, de mindjárt megnézzük, hogyan lehet megabájtokban is kiíratni.

A hatodik oszlop a fájl létrehozásának dátuma, az utolsó oszlop pedig a fájl neve.

Most nyomjunk egy [CTRL]+L billentyűkombinációt. Azt kell tapasztalnunk, hogy a képernyő kitörlődik. A [CTRL]+L-nek ugyan olyan szerepe van, mint a clear parancsnak, csak gyorsabb beütni.

most írjuk be azt, hogy ls -lh
Ekkor ugyan azt kapjuk, mint ls -l esetén, azzal a különbséggel, hogy a méretek nem bájtokban vannak megadva, hanem human-readable módon, azaz emberek számára olvasható módon.

Felvetődhet a kérdés, hogy még milyen (úgynevezett) kapcsolói vannak az ls parancsnak?
Erre megkaphatjuk a választ, ha beírjuk, hogy man ls.

Amit most látunk, azok az úgynevezett man-oldalak. (Manual-pages -> man-pages) Ezek a windowsos súgónak felelnek meg azzal a különbséggel, hogy tényleg hasznosak és informatívak...

Általában (és itt is) a következő fejezetekre oszlanak.
Name
        Itt a parancs nevét, és rövid leírását olvashatjuk.
Synposis
        Itt a parancs szintaxisa van
Description
        Ez már érdekesebb. Itt a parancs összes paramétere és funkciója megtalálható.
        Az ls esetén az igazán fontos paraméterek a következőek:
  • -a : Ez a rejtett (Linux alatt a rejtett a .-tal kezdődő fájl) fájlokat is listázza
  • -l : Minden információt megtudunk a fájlról
  • -h : A méretet az emberek számára olvashatóvá alakítja
  • -R : az aktuális könyvtár almappáinak a tartalmát is listázza
Examples
         Itt ilyen pont nincs, de bonyolultabb parancsok esetén szokás példákkal segíteni a felhasználót.
Author
         Az adott parancs írója. (A parancsok általában programokként vannak megvalósítva.)
Copyright
         A szerzői jogokról ír.
See also
         Ha neked a manuál nem lett volna elég részletes, itt még több információt találhatsz.

Azt egyébként elfelejtettem az elején mondani, hogy lejjebb menni a kurzor-billentyűkkel vagy az egérgörgővel lehet...
Miután átnéztük a manuált, a q megnyomásával kiléphetünk.
Hosszabb manuálok esetén hasznos, hogy ha megnyomjuk magyar billentyűzeten a [SHIFT]+6-ot (a /-jel), akkor kereshetünk egy szóra. Be kell írni egy szót és az [ENTER] lenyomása után az első találatra ugrik.
Az n nyomogatásával lehet a következő találatra ugrani.
Egyébb információk a man man paranccsal érhetőek el. ( ;)

A terminál alapjait már átvettük. Ezután az egyes paranccsokkal fogunk megismerkedni, amíg el nem jutunk az első egyszerű programig. Ez az eddigi ígéretem szerint egy faltörő lesz. Azt mindenképpen megcsinálom. De előtte valószínűbb, hogy írunk egy labirintusos szerepjátékot a Bash segítségével.

Mindenkinek jó Linuxozást. Holnap (vagy ma este) a cd, mkdir, rm, rmdir parancsokról lesz szó. Ezek használata nem túl bonyolult, aki ért az angolhoz, az a manuálból is elsajátíthatja a használatukat.

Linux - pro és kontra

Ez a cikk egy kis kitérő. Több ilyen nem is lesz, mert  csak flame-et eredményezne. A téma pedig az, hogy miért használjunk, vagy éppen miért ne használjunk Linuxot? Mivel én a Linuxot csak 4 hónapja használom és még nem múlt el a rózsaszín köd, ezért itt nem én fogok beszélni, hanem néhány valóban hozzáértő kolléga.

Először is jöjjön egy ellenérv-gyűjtemény.

A prog.hu-n LC a kérésemre küldött néhány ellenérvet a Linuxszal szemben. Neki mindkét rendszeren (Linux és Windows) mély felhasználói és programozói tapasztalatai vannak, úgyhogy van súlya a szavának.

Levelét változtatások nélkül közlöm.
Szia!

Én kb. 95-ben tettem fel az első Linuxomat még floppyról (egy slackware-t). Aztán elég sokáig volt második desktop a gépemen, majd úgy 98-tól folyamatosan egyre inkább elsővé vált, úgy 2005-ig. Akkor kezdtem el .NET-ezni és szépen visszaszokni Windowsra. Kb. 2000-2006 között elsősorban linuxos fejlesztésből és az erre fejlesztett dobozos szoftver értékesítéséből, valamint supportjából éltem.

A Linuxnak több gyenge pontja is van, a legnagyobb része a community jellegéből és az openszorszból adódik.

Az első a bináris kompatibilitás hiánya. Ha például írsz KDE alá egy programot C++-ban és azt megcsinálod OpenSuSE 11.0 alá, akkor tuti hogy OpenSuSE 11-en nem fog menni. 10-essel meg szóba sem áll. Azaz ha csinálsz egy progit ami nem nyílt forráskódú akkor meg kell csinálni a csomagot az összes nagyobb Linux disztrib legalább 4-5 verziójára mert ezek félévenként kiadnak egy újat, viszont nem minden júzer cseréli le a már meglévő Linuxát. Ráadásul a dll pokol csak az egyik baj. A másik az, hogy olyanok is tudnak változni hogy pl. az egyik disztrib az X verzióban még így kezelte a menüt, az X+1-ben már úgy.

Nem sokkal jobb a helyzet akkor sem, ha openszorsz a dolog. Az Ubuntu talán az egyetlen olyan disztrib amire többé-kevésbé megtaláltam minden olyasmit, amit kerestem. De ott sem minden fenékig tejfel! Pl. az előző Ubuntuban olyan ősi mono csomag volt hogy azt még a Flinestone Frédi írhatta. Az OpenSuSE alá pedig nem igazán találtam pár progit, pl. a kedvenc VICE nevű Commodore 64 emulátoromat. Szóval, míg win32-re, ha egyszer valamit megcsináltál és nem használtál olyasmit amit nem szabad, akkor az jó eséllyel menni fog win7-en is, addig a Linux mozgó célpont.

Stabilitás... Szóval, a Linux sok-sok csomagból van összerakva, és nem mindig mindenből a legstabilabb. Lásd KDE 4 ami már elég rég a disztribek része, ehhez képest a Bluetooth kezelője minden kilépés után segfaulttal távozik az élők sorából az OpenSuSE 11.2-n az EEE PC-men, ráadásul időnként nem küld semmit ha nem indítom újra. Az Ubuntunak meg az X szervere művel ugyanott érdekes dolgokat. Aztán volt olyanom Gnome/OpenSuSE 11.2-vel hogy az automatikus frissítés után nem indult el a Firefox, konzolról indítva pedig közölte hogy valamelyik összetevőnek az 1.4-es verziója kellene, de neki az 1.4-es van csak meg, ezért nem indul...

Szóval, a Linux, ha úgy használja az ember ahogy a Windowst, és nem csak böngészésre, levelezésre, valamint szövegszerkesztésre, akkor érhetik meglepetések. Pl. a csak Skypera és Firefoxra használt gépen volt, hogy valami elnémította a hangot, és a továbbiakban nem lehetett vele telefonálni. Elég kellemetlen meglepetés, ha a túloldalon nem informatikus ül, és a túloldal 100 kilométerre van...

Nagyjából ezek hirtelen amik eszembe jutnak, de még jó sokáig folytathatnám, kezdve a radikálisan eltérő admin felületekkel (=mezei júzernek tanulhatatlan), a KDE vs Gnome redundancia szépségein át sok mindennel. Ezzel együtt persze el lehet lenni vele jól, ha az embernek van ideje és kedve vele foglalkozni, pláne ha az ember informatikus, de én az utóbbi 10 évben nem nagyon láttam olyan változásokat amiktől alapvetően alkalmasabb lenne a dolog desktop OS-nek mint 2000-ben.
Ebből a levélből (melyet ezúton is köszönök) kiderül, hogy a Linux megfelelő használatához bizony nem árt a szakértelem és az elhivatottság.

Zárásnak egy olyan postot közlök, amiből megtudhatjuk, hogy mit kap a felhasználó a szakértelméért és az elhivatottságáért.
Banderasz gyűjött össze (szintén a prog.hu-n) 10 érvet arról, hogy ő miért használja a Linuxot. (Eme post a prog-hu Ki legyen a nagytestvér című témájában született. Az eredeti postot és a rá érkező reakciókat ott megtekintheted. A post 2010.01.21. 19:24-kor született. Az átvétel az író engedélyével történt, amit ezúton is köszönök.)

Igen. Tudom, hogy sok olyan dolog van Linuxon, ami nem vet rá éppen jó fényt. Ezek közül talán az a legrosszabb, amit mondtál, hogy ahhoz, hogy maximálisan testre szabható legyen, nem elég az ablakkezelő grafikus felületén kattintgatni, ahhoz bizony konfigurálni is kell. Ez pedig némi szakértelmet tényleg megkövetel, dn egyrészt programozó vagyok, másrészt meg amire én használom, arra tökéletesen megfelel.
Írok 10 érvet, hogy miért Linux-ot (most éppen Ubuntu-t) használok Windows helyett:


1) A fájlrendszerbe fel tudok csatolni egy tetszőleges megosztott könyvtárat úgy, hogy ehhez nem kell a Windows-ok végtelenül hülye meghajtóbetűjeleinek keverednie. Linux alatt minden felcsatolásnak rendes neve van, nem csak egy betű, és ami fontos, hogy az így felcsatolt fájlokat úgy láthatják a programok, mintha azok a helyi fájlrendszerem részei lennének.
Például amikor egy FTP-t felcsatolok, akkor az FTP-n lévő tartalom ugyan úgy érhető el, mintha itt lenne a winyómon. Ha ezek képek, akkor azonnal megjelennek azok előnézeti képei, ha ezek zenék, akkor egyből megszólalnak, ha föléjük viszem az egeret (ez is előnézet), ha ezek PDF dokumentumok, akkor előnézetben egyből látom az első oldalak miniatűrjeit, stb...
Tehát nem kell ezeket letöltenem előre, hogy aztán bármit is kezdhessek velük, hanem azonnal elérhetőek. Ez akkor a legjobb, ha forráskódokat kell szerkesztenem. Nem kell WinSCP-vel (meg hasonló kiegészítő őrületekkel) előre letöltögetnem őket, hanem, mivel fel vannak csatolva a fájlrendszerbe, egyből dolgozhatok rajtuk.

2) Biztonságos, mert Linux-ra nincs annyi őrült sok kártevő elterjedve az interneten, azaz nem kell a memóriát meg a CPU időt felzabáltatnom mindenféle virus-detektorral. Elég egy normálisan konfigurált tűzfal, ami meg alapból adott a kernellel együtt (IPTABLES). Iletve szintén biztonságos azért is, mert a fenti 1-es pontban leírtak szerint a csak rendszergazda által zerkeszthető /etc/fstab fájlban csatolom fel előre a használatos távoli fájlrendszereket, ami ugye azt jelenti, hogy a programokban már nem kell semmi ilyen féltendő információt beállítanom.
Windows-on például elterjedt támadási mód, ha a Total Commander-be felvett FTP kapcsolatokat lopják el. Nekem Linuxon nem kell ilyentől félnem, mivel itt nem kell egyetlen programnak sem kiadnom a szigorúan titkos hozzáféréseimet, így nem tudják ellopni az account-okat sem, mert azokat csak rendszergazdai jogosultsággal lehetne kiolvasni a /etc/fstab fájlból.

3) Egynél több asztal használható. Windowson az őrület tud kerülgetni, ha egy csomó ablakot kell letennem a tálcára, míg megtalálom a keresettet, vagy ALT+TAB segítségével keresgélem ki a hosszú listából. Linuxon minden valamire való ablakkezelő tud több virtuális ablakot is kezelni, ezért itt nagyon kényelmesen el tudok terpeszkedni. Jelenleg 8 ilyen asztalt használok a következő logika szerint:

  1. Thunderbird és Firefox általános böngészésre
  2. Fejlesztéshez megnyitott böngészők (mégegy Firefox ablak, plusz Opera, Chrome, és VMWARE-ben futtatott XP-n IE6, IE7, IE8 és Safari
  3. Fejlesztő környezet (IDE, konzol ablak, megnyitott fájlmenedzser)
  4. IRC blokk, azaz itt van az MSN, a GTalk, és a Skype megnyitva
  5. Zenehallgatás helye (fejlesztés közben nem zavar így a lejátszó, csak szól, és nem foglal helyet a tálcán),
  6. 7.  8.  ezek szabadok. Általában arra használom, hogy ha fordítani kell velemit, a millió megnyitott konzol ablak áttekinthető legyen.
Na mindezt hogy oldanád meg Windows-on? Inkább kínlódsz a durranásig tele tömött tálcával, meg az ALT+TAB őrülettel? Hát nem irígyellek...

4) Én jelenleg PHP vonalon fejlesztek, és ehhez a szükséges webszervert, PHP értelmezőt, postfix levelező szervert és MySQL adatbáziskezelőt Linuxon tudom a legjobban kihasználni. Például PHP-ből bajosan használsz chmod() függvényt Windows-on, vagy bajosan küldesz saját magadnak teszt-email-t az éppen készítés alatt lévő oldal regisztrációs részének aktiváló email-jeként. Nem is beszélve a Linuxokon nagyon-nagyon kényelmesen használható cron-ról, valamint a távoli menedzseléshez szeretett SSH szerverről. Persze mindezekre van alternatíva (vagy ismert hack) Windowsra is, de valljuk be őszintén: ezek a rendszerek igazán Linuxon érzik jól magukat.

5) Linuxon van normális lehetőségem arra, hogy tényleg jól használható módon alakítsam ki a winyóm partícióit. Itt megtehetem azt, hogy a /boot, és a /home mindenestől ki vannak rakva külön partícióra, így nem hoz zavarba ha új Linuxot kell felraknom a régi helyére, de az sem okoz gondot, ha a végtelenül hülye Windows a telepítéskor felülírja az MBR-t, hisz elég csak visszarakni a /boot (sda1) alá, és aztán könnyen felvehetem a grub-ba. Te meg szenvedhetsz a Windows sajátjával, ami vagy összejön, vagy nem.

6) A Linux különbséget tesz a fájlrendszerben a kis-, és a nagybetűk között. Ez ugyan önmagában még talán nem is volna akkora érv, de szívtam már meg Windowson azzal, hogy egy Linuxos szerverről FTP-n keresztül töltöttem le képeket, és az azonos nevűek (de különbőző méretűek) mind-mind elvesztek, mert a letöltés után felülíródtak. Ellenben fordítva: ha egy windowsos szerverről kell képeket letöltenem Linuxra, akkor csak vigyorgok, mint a tejbetök, mert így ez a nagy szívatás még csak elő sem fordulhat.

7) Nagyon tetszik, hogy konzolból el tudok érni szinte minden információt, ami nekem kell. A man oldalak mindig kéznél vannak még akkor is, ha éppen szívat az X szerver, és nem indul el a gdm. Windowson egyrészt nem állnak rendelkezésre ezek a jól olvasható, részletes, és precíz súgók, másrészt még ha lennének is, grafikai hiba esetén hogy néznéd meg őket, ha a konzol mint olyan, szövegesen nem létezik? Na meg nem is beszélve a Windows súgóról, ami enyhén szólva is hülyének nézi a felhasználót, és a problémák többségére úgysem találsz benne megoldást.

8) Linuxos körökben ha bármi gondom akad, egy linuxos fórumon megkérdezve a szakértőket szinte azonnal kapok választ a kérdésemre, ráadásul úgy, hogy a közösség nem nézi hülyének még a kezdőket sem. Nem úgy, mint Windowson, ahol egy-egy hülye kérdéskor az fórumok többségénél helyből elzavarják melegebb éghajlatra a kérdezőt. A Linuxos körökben érezhető az összetartás, és a tényleges segítőkészség. Jó dolog ilyen közösségnek tagja lenni.

9) Már el sem tudnám képzelni, hogy szimbolikus linkek nélkül sokmindent hogy oldanék meg Windowson. Oké, tudom, hogy ott is van lehetőség linkelésre, de az nekem egyszerűen nem tetszik, mert körülményes. Linux-on meg olyan egyszerű az ln használata, mint az egyszeregy.

10) Végül, de nem utolsó sorban nagyon szép a Linux. Itt valódi élsimítás van a karaktereken, amit a Windows nem tud még megközelíteni sem. Aki már látta közelről, hogy még LCD kijelzővel is milyen jól olvashatók a karakterek, annak esze ágában sincs visszatérni a Windows csúnya pixeles karaktereihez, amitől 15 perc olvasás után megfájdul az ember szeme. Na meg ott van parasztvakításnak a Compiz, ami OpenGL-lel sokkal több, és szebb effektet képes produkálni, mint Windowson a DirectX-es cucc. A Windowst ilyen értelemben messze nem lehet annyira rugalmasan testre szabni, mint a Linuxot. És nekem bizony számít, hogy hogy néz ki az, amit használok nap, mint nap.

Nos hát íme. Ezen okok miatt használok Linux-ot.

Ez volt a Linux - pro és kontra című, rendhagyó bejegyzés. Remélem, a végigolvasás után már mindenki tudja, hogy szeretne-e Linuxot, vagy sem.


Több ilyen biztosan nem lesz, mert nem akarok flame-blogot csinálni, az ilyen témájú hozzászólásokat ki is fogom moderálni a többi post alól, itt viszont meg lehet vitatni, hogy ki mit szeret/utál benne. De csak kultúráltan!

2010. január 21., csütörtök

UNIX-alapú jogosultságkezelés

Ez egy hosszú, fontos és nehéz cikk de az itt leírtak bármilyen UNIX-alapú rendszerre (Apple, FreeBSD, Linux, Minix, stb...) igazak.

Ha nem érted elsőre, ne keseredj el! Majd vissza-vissza térsz, ahogy egyre jobban elmélyedünk a Linuxban, és lassan össze fog állni a kép.

Mint ahogy már írtam, a Linux többfelhasználós rendszer és mint ilyenben, a felhasználók mozgáskörét be kell határolni.
Ezt a UNIX (és így a Linux is) úgy oldja meg, hogy minden fájlhoz hozzárendel egy háromjegyű számot, plusz egy tulajdonost. A háromjegyű számra még visszatérünk, de előbb beszéljünk a tulajdonosról.
A tulajdonos egy felhasználó. Általában az, aki létrehozta a fájlt, de a tulajdonosi jogokat át is lehet ruházni másra.

Azt is tudni kell, hogy minden felhasználónak -így a tulajdonosnak is- van egy csoportja. Ez a csoport a vele egy szinten lévő felhasználókat fogja össze. Például nálunk az egyetemen van egy csoport az alkalmazottaknak, a hallgatónak és persze a rootnak. (employes, students, root) Ez nálunk (a kis kar miatt) elég is, de egy nagy akár cégben minden részlegnek lehet saját csoportja.

A kis kitérő után térjünk vissza a háromjegyű számra!
Tudni kell, hogy az egyes jegyek nem vehetnek fel tetszőleges értékeket. Az értékek 0 és 7 jegy között mozognak. A bináris számrendszerben járatosak ebből már rá is jöhettek arra, hogy ezek 3 bites értékek. Ez nem véletlen, egy ilyen szám ugyanis 3 műveletet engedélyez, vagy tilt.

A három különböző szám pedig azért kell, mert a felhasználókat három csoportra lehet osztani a fájl szemszögéből:
  1. A tulajdonos
    Az ő jogait határozza meg az első szám. Ő az, aki birtokolja a fájlt. A hozzáférési jogokat csak ő (meg persze a root) állíthatja át.
  2. A tulajdonos csoportja
    A második számjegy azon felhasználók jogait határozzák meg, akik a tulajdonossal egy csoportban vannak.
  3. Mindenki más
    A harmadik számjegy az előző két kategóriába nem tartozó felhasználókat jelöli.
Már csak azt kéne tudni, hogy mi az a három tulajdonság, amire ki lehet adni (meg lehet tagadni) valaki(k)nek a jogot.
Ezek a jogok a következők:
  • Olvasási jog (4)
  • írási/módosítási jog (2)
  • Futtatási jog (1)
Az olvasási jog fájl esetén azt jelenit, hogy belenézhetünk a fájlba, kilistázhatjuk a tartalmát.
Az írási/módosítási jog is hasonlóan egyértelmű.
A futtatási jog esetén arra van jogunk, hogy a fájlt futtassuk, amennyiben az egy végrehajtható állomány. (Script vagy bináris)

Könyvtárak esetén a dolog már komplikáltabb.
Az olvasási jog azt jelenti, hogy listázhatjuk a tartalmat. Érdekes, hogy attól, hogy nincs olvasási jogunk, attól még hozhatunk létre benne új fájlt és beleléphetünk.
A fájlok létrehozását, törlését az írási jog szabályozza.
Azt pedig, hogy beleléphetünk-e az adott könyvtárba, a futtatási jog engedi, vagy tiltja meg.

Mondok egy példát, de előtte még fontos tisztázni, hogy miért írtam számokat a jogosultságok után.
Ha te magadnak olvasási és futtatási jogot akarsz adni, akkor be kell állítanod az első számot 4+1=5-ra. Ha csak írásit akarsz, akkor 2-re kell állítanod. Ha 7-es jogod van valamire, akkor azzal mindent szabad (1+2+4=7)

Akkor most végre jöjjön a példa, ami remélhetőleg megérteti a linuxos jogosultségrendszert.

Van az alábbi könyvtárszerkezet: (a nevek után zárójelben a jogaidat szimbolizáló számmal)

home(7)
    |___mydir(1+4=5)
         |___kontener(1)
                |______titok(0)
                |______dokumentumok(1+2+4=7)
                |           |________fájl1(1)
                |           |________fájl2(2)
                |______cuccaim(0)

Legyen a példában a mydir az én home-könyvtáram. A konkéner ezen belül egy mapa, amire neked nem adtam listázási jogot, bár a mappába be tudsz lépni. Listázási jogot azért nem kapsz, hogy ne tudd, hogy ott én még miket tárolok.

 A dokumentumokra neked minden jogod van, így beléphetsz, kilistázhatod a tartalmát, csinálhatsz és törölhetsz benne fájlokat. De a fájl1-et és a fájl2-t nem törölheted, mert nincs rájuk írási jogod. A fájl1-et csak futtathatod, a fájl2-t pedig csak olvashatod. Fontos észrevenni, hogy te csinálhatsz egy fájl3-at a fájl kettő tartalmával, amire adhatsz magadnak futtatási jogokat, és így, még ha nem is közvetlenül, de futtathatod a fájl2-t. Ez azért nem gond, mert fájl2-re valószínűleg azért nincs futtatási jogod, mert nem futtatható.

A jogosultságokat konzolból a chmod parancscsal lehet állítani, de erre még vissza fogok térni a későbbiekben.

A cikk zárásaként néhány példát mutatok, hogy melyik szám mit eredményez.
Újra mondom, amit már az elején elmondtam. Aki nem érti a cikket, ne keseredjen el. Majd menet közben minden világos lesz.

És jöjjenek a példák
  • 777: Mindenkinek szabad mindent
  • 700: A tulajdonos bármit tehet, a többiek semmit
  • 644: A tulajdonos írhatja és olvashatja, a többiek csak olvashatják
    • Például egy jegyzet, vagy egy napló
  • 100: A tulaj csak futtathatja, a többiek semmit sem csinálhatnak vele
    • Ez egy írásvédett futtatható állomány lehet, amit nincs értelme olvasn
  • 000: Senki sem csinálhat vele semmit
    • Sok értelme nincs. (A tulaj és a root természetesen megváltoztathatja.)
  • 007: A csoport és a tulajdonos nem csinálhat semmit, a többiek meg mindet
    • Valószínűleg 700 akart lenni, de el lett cseszve. ;)
  • 466: A tulaj csak olvashatja, a többiek írhatják is
    • Hasznos lehet egy olyan log esetén, amibe a létrehozónak nem kell írnia
  • 611: A tulaj írhatja és olvashatja, a többiek futtathatják
    • Egy olyan script lehet, amit a tulajnak csak szerkesztenie kell, futtatnia nem.
Ennyi példa remélem elég. Csak azt akartam demosntrálni, hogy minden elképzelhető kombináció jó még akkor is, ha néhány egyszerűen értelmetlen. Azt is fontos tisztázni, hogy a jogosultságok megváltoztatásához nem írási jog kell. Ez a tulajdonos (és a root) kiváltsága.

Ha valami nem tiszta, kommentben lehet kérdezni.

A bc program használata - 1. rész

Most egy kicsit előre megyek, és bemutatok egy konzolos programot. Aki nem érti ezt a cikket, az nyugodtan ugorja át. A következő már visszatér az alapokhoz.

Ez a konzolos program nem más, mint a bc. Futtatni nagyon egyszerű, csak be kell írni terminálba, hogy bc, és már fut is, bár ez a konzol villogásán kívül semmiben sem nyilvánul meg. Tegyünk vele egy próbát, és írjuk be, hogy:

13+37

Az eredmény egyből meg is jelenik. Próbáljunk ki most valami érdekesebbet:

(13+37)^(2*4)

Az eredmény (15625) ezúttal is megjelenik. Az eddigi bevezetőből nyilván mindenki rájött már, hogy egy konzolos számológéppel van dolgunk. De ez nem egy közönséges számológép! Ezt lehet programozni is. (Innentől feltételezek egy alapvető programozói tudást.) Nézzük meg a lehetőségeit közelebbről!

Ezt űgy tudjuk megtenni, ha először is beírjuk, hogy quit (vagy nyomunk egy [CTRL]+C-t és megtudjuk, hogy ezt kell beírni) és kiadjuk a bashnak a következő parancsot:

man bc

Ebből megtudhatjuk, hogy a bc egy komplett u.n. interpreter (magyarul parancsvégrehajtó), ami elsősorban numerikus műveletek elvégzésére alkalmas.

Két adattípussal rendelkezik: skalárral és tömbökkel. A skalárok rendelkeznek két további tulajdonsággal: A mérettel (vagyis hogy hány számjegyből állnak) és a pontossággal (vagyis hogy a tizedes pont után hány számjegy állhat.)
A paramétereket nem kell előre deklarálni, azok maguktól létrejönnek, amint hivatkozunk rájuk.
Nézzünk egy példát a skalárok használatára:

a
> 0
a=10
b=20
a+b
> 30
a*b
> 200
b^a
> 10240000000000
c=a+b
c
> 30
Remélem, a lényeg kivehető a fenti példából, ezért nem is nagyon magyarázom, hogy mi miért történt. (Csak annyit, hogy a >-jeleket én raktam be, és azt jelentik, hogy ott nem én írtam be, hanem ő írt ki.)

Térjünk át egy izgalmasabb adatszerkezetre: a tömbökre.
A tömbök (pongyolán fogalmazva) nem mások, mint sok skalár ugyan azzal a névvel. Indexeléssel hivatkozunk az egyes elemekre. A bc az indexelést is dinamikusan kezeli, tehát nem kell előre lefoglalni a memóriában a megfelelő méretet. Magyarázhatnám még a működésüket, de ezt is példán keresztül lehet a legjobban megérteni.

tomb=10
tomb[0]
> 0
tomb[1]
> 0
tomb[0]=10
tomb[0]
> 10
tomb[1]=20
tomb[1]
> 20
tomb[0]
> 10
tomb[3]=tomb[0]+tomb[1]
tomb[3]
> 30
tomb[132]=3.14
tomb[131]
> 0
tomb[132]
> 3.14
tomb[133]
> 0
tomb
> 10

Az egydimenziós tömbökről (másként vektorokról) ennyi elég is. Többdimenziós tömböket a bc nem képes támogatni, de egy későbbi cikk keretében fogok hozzá írni egy olyan könyvtárat, mely tetszőlegesen sok dimenziós tömböket is tud majd kezelni. Most inkább térjünk át az első fejezet befejezésére: a ciklusokra.

Ehhez először is beszélni kell a logikai műveletekről. Ezek olyan műveletek, melyek visszatérési értéke 1 (igaz) vagy 0 (hamis).
Ezt is inkább példákon keresztül mutatom be:

1<2> 1
2<1> 0
2==2
> 1
3==2
> 0
a=3==2
a
> 0
a=2<4> 1

És most jöjjenek is a ciklusok.
while (feltétel) {
ciklustörzs
}
A ciklustörzs addig hajtódik végre, amíg a feltétel logikai értéke igaz (vagyis 0-tól különböző).
for (kifejezés1; kifejezés2; kifejezés3){
ciklustörzs
}
Ez a C-típusú nyelvekből ismert szabvány for-ciklus. Először végrehajtódik a kifejezés1, aztán ha a kifejezés2 értéke igaz, akkor lefut a ciklustörzs, majd a kifejezés3. Ezután újra ellenőrzi a kifejezés2-t, újra lefut a ciklustörzs és így tovább, amíg a kifejezés2 igaz.

Végül bemutatom az elágazást.

if (feltétel) {
igaz_ág;
} else {
hamis_ág;
}

Itt a feltétel kiértékelődik, ha igaz, akkor lefut az igaz ág, ha hamis, akkor a hamis_ág fut le. A hamis_ág (természetesen az else-vel együtt) elhagyható.

A fenti dolgok elsőre bonyolultnak tűnnek, de próbálgatással könnyű őket megérteni.
A bc egy nagyon ügyes kis program, érdemes bele időt ölni. Ráadásul a fenti ciklusok a legtöbb, valamire való nyelvben megvannak.

Még akarok a bc-ről cikket írni, hiszen még rengeteg bemutatásra váró lehetősége van, de nem tudom, hogy mikor jön a sorozat második része. Addig lehet olvasgatni a manuált.

Jó számolgatást! ;)

2010. január 20., szerda

Az első lépések

Most, hogy már minden kedves érdeklődőnek van valamilyen Linux a gépén, el is kezdhetjük az alapokat.
Azt feltételezem, hogy aki ezt a blogot olvassa, az képes egy grafikus felületen az ablakok között elkattintgatni, úgyhogy az ablakkezelőket csak minimálisan részletezem. (Minimálisan is csak a gnome-ot, de a többi is hasonló.)
Először is, ami a legtöbb (volt;) windowsosnak feltűnhet (a gyors indulás után;) az az, hogy nincsenek meghajtók. (Aki mégse jutott volna még el a fájlkezelőig, ami gnome alatt a Nautilus nevet viseli, annak a felső szürke sávban Helyek -> Saját mappa) Van helyette egy olyan, hogy fájlrendszer. Linux (és bármilyen Unix-alapú rendszer) alatt a fájlrendszer nem (csak) a merevlemezen történő adattárolás mikéntjét takarja, hanem az összes mappát és fájlt, amik Linux alatt egy rendszerbe szerveződnek. Először is foglalkozzunk ezzel a fájlrendszerrel!

A legfelső könyvtárat nevezik gyökérkönyvtárnak. Ide jutunk, ha sokszor megnyomjuk a Fel gombot. Ezt a / jelöli. Nyomjuk meg sokszor hát a Fel-t, és oda is kerülünk. Itt láthatunk egy csomó mappát. Majd a legtöbb még szóba fog kerülni, de most csak három könyvtárra koncentrálunk, ezek a root, a home és a media.

Először nézzük meg, mi van a root mappában! Nagy valószínűséggel -és néhány rendszerfájl kivételével- nem találunk semmit, pedig ez egy nagyon fontos mappa. Ez a root u.n home-könyvtára. Ez magyarul azt jelenti, hogy a root itt tárolja a cuccait. Na de ki a gyökér az a root? Ez kérlek szépen a saját gépeden általában te vagy. Pontosabban azok a felhasználók, akik rendelkeznek root-jogokkal. (Ez a windowsos rendszergazda megfelelője.) Csak a rootnak van joga telepíteni, turkálni a rendszerfájlokban, sőt, az összes felhasználó cuccai között. A root-nak olyan nagy szabadsága van, hogy néhány kattintással tönkrevághatja a rendszert, ha úgy akarja. (Nekem először sikerült is... Aztán a LiveCD-vel helyrehoztam a kárt.)
Ezért is nagyon fontos, hogy a root-jelszavunkat ne adjuk oda senkinek! Ezt nem lehet elégszer hangsúlyozni, de még így is sokan odaadják akárkinek. Erre szoktam azt mondani, hogy úgy kell nekik... (A root-jelszóval akár az USA-ból is azt csinálhatnak a gépeddel, amit akarnak, ha a netre van kötve. Erre még a jövő héten kitérek részletesebben.)
Azt is fontos tudni, hogy egy root-jogú felhasználó alapból mezei userként van bejelentkezve. A root-jogokat neki is kérnie kell. Ennek a mikéntjére még kitérünk, (bár valószínűleg a rendszer már kérte a root-jelszót egy-két frissítéshez... Na. Úgy.)

Most, hogy a mezei userek szóbakerültek, lépjünk be a home nevű könyvtárba is megnézni, mi van ott. Eddig valószínűleg egyetlen könyvtárat fogsz találni a felhasználóneveddel. Hogy ebben mi van alapból, az már függ a disztribúciótól, de Ubuntu alatt van egy Asztal, van egy Dokumentumok, meg még van néhány, amikre már nem emlékszem. Erről a könyvtárról azt kell tudni, hogy ezzel azt csinálsz, amit akarsz, mert ez a te home-könyvtárad. Itt tárolhatod a fájljaidat, sőt! Minden beállításod itt tárolódik (általában) rejtett fájlokként. (Linux alatt a rejtett mappák és fájlok annyiban térnek el a többitől, hogy .-tal (ponttal) kezdődnek.)
Lehetőség szerint ide, és csak ide rakd a személyes fájljaidat. Nagy barbárság teleszemetelni a többi könyvtárat.
Fontos azt is tudni, hogy a Linuxon akár hány felhasználó lehet. Ezeknek természetesen mindnek van saját home-könyvtára a /home könyvtáron belül. Ez gondolom a Windowsosoknak sem szokatlan. Ami már érdekesebb, hogy Linux alatt akár egyszerre is tetszőleges számú (elvi korlát nincs, gyakorlati korlátot a gép ereje szab) felhasználó lehet bejelentkezve. Windows alatt egyszerre csak egy felhasználó ténykedhet, a szerver-változat alatt pedig 4. (+1 konzolból)
Ez elég nagy marhaságnak hangzik, hiszen hogyan csatlakoztathatnánk már egy géphez egyszerre több monitort meg annyi beviteli perifériákat... Természetesen így marhaság is lenne (bár a '70-es évek nagygépeihez bizony nem egy terminál csatlakozott... Azokon is UNIX futott. :) A(z esetenként) 30-40 user a neten keresztül, telnettel, távoli asztallal, SSH-val vagy ki tudja még, mivel tud csatlakozni. Ebből a három módból mi csak az SSH-val fogunk foglalkozni. (A telnet elavult, a távoli asztal meg maradjon csak meg ott, ahol nincs Bash.) De csak jövő héten.

Mint ahogy már írtam, harmadikként foglalkozni akarok még ma a /media mappával is. Tegyük fel, hogy beraksz egy pendriveot, vagy CD-t. Mivel meghajtók nincsenek, ezért hiába keresed majd a C, D, G, stb... meghajtón a pendrive-ot, az nem lesz ott. A cserélhető eszközök alapból (és autómatikusan) a /media mappa alatt csatlakoznak be a fájlrendszerbe. (Egyébként parancssorból oda rakhatod őket, ahová akarod, de ezt még hagyjuk.)
A /media mappát -ha csak grafikus felületen akarod használni a Linuxot- soha nem fogod megnyitni, mert a Nautilus (és gondolom a többi fájlkezelő is) a cserélhető médiákat kirakja egy külön sávba. (Sőt, a legtöbb ablakkezelő még az asztalra is kirakja az ikonjukat.) Parancssorból azonban fontos tudni, hogy hol keresd a cuccaidat.

Le is írtam azt, amit akartam. Talán még többet is. Legközelebb még beszélek a jogosultságrendszerről, aztán rátérünk a terminálra.
Aki már nem bírja türtőztetni magát, annak: Alkalmazások -> Kellékek -> Terminál.

Mindenkinek jó linuxozást! :)

Feedback

Ha valaki olvassa a blogot, írjon egy kommentet és azt is írja le, hogy hogy talált ide. (Valamint hogy van-e az itt leírt dolgoknak haszna, miről lenne jó írni, stb...)

2010. január 19., kedd

Előretekintés

Miután a Bash alapjait ismertettem, egy faltörő játék megírásán keresztül mutatom be a ciklusokat és az adatszerkezeteket.

A kód egy része megvan. Ez az ütő mozgatását valósítja meg. (Mozgatáshoz a 4, 5, 6 számokat kell használni)

Ez egy nagyon alapszintű kód, de az alapokat jól mutatja. Aztán egy hétig nem is igen foglalkozom újra vele, aztán az alapok után visszatérek rá.

Most csak közlöm. Aki már ismeri a Bash-script fogalmát, nyugodtan boncolgassa és játszadozzon vele. Próbálja megérteni. Aki még a Bashről sem igen hallott, az meg várjon türelemmel holnapig. ;)


#!/bin/bash #Melyik parancsértelmezőt kell használni a script futtatásához

x=0; #x változó kezdőértéket kap

while [ true ]; do #Végtelenciklus
chr=5; #Az értéket be kell állítani, mert a read ezt nem teszi meg
read -t 1 -n 1 chr #CSAK billentyűleütés esetén a leütött bill-t a chr-be rakja
clear; #törli a képernyőt
x=$( echo $x+$chr-5 | bc ); #Számol a bc programmal

for ((i=0; i<30; i++)) do #szokásos for-ciklus bash-változata. Fontos a duplazárójel
echo #Ez a ciklus csinál 30 újsort
done;

for ((i=0; i<$x; i++)) do
echo -n " "; #Ez szóközökkel a kurzort bepozícionálja
done;

echo TTTTTTTTTTTTT; #Ez "kirajzolja" az "ütőt"
done

2010. január 18., hétfő

Ha félsz a Linux telepítésétől...

Sokan vannak (kezdetben én is) akik azért nem raktak Linuxot a gépükre, mert félnek, hogy tönkre rakják a windowsos partíciót.
Most két módszerről írok röviden, amik használatával garantáltan nem kell attól félni, hogy tönkremennek a windowsos cuccok.
  1. Virtuális PC
    A virtuális PC egy olyan program, ami (esetünkben) a Windows alá emulál egy másik számítógépet. Ez a "gép" az adatait ugyan a valósi PC-nk merevlemezén tárolja egy speciális formában, de a virtuális PC-ről nem lehet elérni közvetlenül a rendes gépünket (hálózaton el lehet, de az más).
    Ezekre a virtuális gépekre aztán azt lehet telepíteni, amit csak akarunk. Esetünkben Linuxot. Be lehet vele gyakorolni a telepítés lépéseit biztonságosan.
    A virtuális gép egyedüli hátránya, hogy lassabb rajta a rendszer, mintha a natív gépen futna. (Ekkor ugyanis két operációs rendszer fut, plusz a hardwerelemeket is emulálni kell...)
    Én jó szívvel ajánlom a Sun Virtual Boxot, melyet innen lehet (ingyenesen és legálisan) letölteni.
  2. A wubi.exe használata
    Az Ubuntu fejlesztői gondoltak azokra is, akik teljes értékű linuxot akarnak a gépükre, de nem akarják kockáztatni a windowsos partíciójukat. Nekik hozták létre a wubi.exe-t. Ez a program az Ubuntu CD gyökérkönyvtárában található, és nem csinál mást, mint feltelepíti a Linuxot Windows alá, úgy, mintha az csak egy játék telepítője lenne. A felhasználónak csak annyi a dolga, hogy kiválassza a célmeghajtót, ahová rak a telepítő egy 10-30GB-os (a felhasználó dönti el) lemezképet. A linux ebben a fájlban fog "lakni". Közben felrakja a GRUB-ot is, aminek hála a legközelebbi indításkor választhatunk a Windows és a Linux között. Nincs partícionálás, nincs semmi kockázat, csak egy működő Linux. Ha mégsem jött be a Linux, Windows alól bármikor letörölhetjük. Ekkor az uninstaller visszaállítja az eredeti állapotokat.
    Ennek a telepítésnek az az egyedüli hátránya, hogy nem lehet a Linuxot hibernálni, de ez nem nagy áldozat.
    Még annyi gond van ezzel, hogy ha két Windows (+egy Windows bootloader) van a gépen, akkor a GRUB-ot nem fogjuk tudni felrakni, és így a Linux sem indul el... :(
  3. Szabványos telepítés
    Aki úgy dönt, hogy bátor, az egyszerűen bebootol a Linux-CD-jéről, és egy magyar nyelvű menü végigvezeti a telepítésen. Nem kell egy teljes meghajtót kiüríteni, mert a telepítő képes egy létező meghajtóról lecsippenteni annyi helyet (persze csak ha van. ;), amennyi kell neki. Mindenesetre, én a meghajtón lévő fontosabb fájlokról azért csináltam egy biztonsági mentést... Az ördög sosem alszik. ;)
    Utóiratnak ehhez még annyit, hogy a CD-ről be lehet úgy is bootolni, hogy nem telepítjük a rendszert. Ekkor ki tudjuk próbálni a Linuxot minden telepítés nélkül. Fájlokat is tudunk létrehozni, amiket RAM-lemezeken fog tárolni. (A RAM-lemezekről még írni fogok a későbbiekben.) Ennek a módszernek az a hátránya, hogy áramtalanítás után minden beállításunk elveszik. De egy próbának jó.
Remélem, ez után a leírás után már mindenki érez magában elég bátorságot ahhoz, hogy valahogyan feltelepítse a Linuxot. :)

Egyébként ha valaki nem találná és ez tartaná vissza, akkor az Ubuntu-t a http://ubuntu.hu/letoltes címről töltheti le. Ezt még ki kell írnia CD-re, vagy virtuális gép esetén be kell mountolnia, és kezdőthet is a telepítés.

2010. január 17., vasárnap

Kezdetek

Amikor szeptemberben felkerültem az egyetemre, az oktatók egyik első dolga az volt, hogy megtanítsanak minket a Linux használatára. Ehhez az Ubuntu-t ugráltattuk virtuális gépen, de akiknek kedvük volt hozzá, a saját gépükre fel is telepíthették.

Na de mi is az a Linux? Kismillió, jobbnál jobb, magyar nyelvű leírás van erről az interneten, úgyhogy rövid leszek. A Linux egy oprendszer. Kezdőknek olyan, mint a Windows, leszámítva néhány apróságot, amik már telepítéskor is megmutatkoznak. A profi linuxosok pedig már emlegetik is a nőági felmenőimet a hasonlatért. :D

A Linux általam tapasztalt előnyei:

  1. Ingyenes. Még egy teljes értékű Windows 7-ért bizony fel kell törni a malacperselyt, a Linuxot csak le kell tölteni. Sőt! Ha te is Ubuntut akarsz, akkor eredeti gyári CD-t rendelhetsz teljesen ingyen. Erről részletesebb leírást az alábbi linken találhatsz. (Nekem is így van CD-m, úgyhogy tényleg kihozzák.)
  2. Minden ingyenes rajta. Még az Office csomagért egy kisebb vagyont kell odaadni, az OpenOffice csomag teljesen ingyenes és az Ubuntuval együtt az is jár. A legjobb, hogy az OpenOffice és az Office egymással kompatibilisek.
  3. Stabil. Nekem egyszer ment tönkre a Linuxom, akkor is csak azért, mert felülírtam egy rendszerfájlt. Kb. 5 percembe került a javítás. A Windows gyakrabban produkál spontán összeomlásokat.
  4. Gyors. Mire a Windows behozza az asztalt, addigra Linux alatt már netezek. És jól tudjuk, hogy a Windows alatt az asztal megjelenése csak egy dolog.
  5. Könnyű beállítani. Miután telepítettem a Linuxot, egyből volt netem, wifim, Blootothom, mindenem. Windows alatt ezekkel szenvedni kell egy kicsit.
  6. Könnyű hálózatba állítani őket. Igazából csak ki kell adni egy parancsot és kész is.

Az előnyöket még sorolhatnám egy ideig, de beszéljünk inkább a hátrányairól.

  1. Kevés rajta a játék. A modernebbek nem fognak rajta futni. Amihez DirectX kell, azt nem igazán fogod Linux alatt futásra bírni. Az OpenGL-es játékoknál viszont (DooM 3, Warcraft III, stb...) van a Wine-nek hála esélyed (erről még írok), de ha te elsősorban játszol a gépen, akkor neked felesleges a Linux. (Nem sértésnek mondom. Játékra tényleg nem való...)
  2. Én úgy tapasztaltam, hogy kevesebb hardwert támogat, mint a Windows. Például a laptopom HDMI-kimenetét nem tudtam vele normálisan megcsinálni. Valószínűleg az a gond, hogy a grafikus kártyámat nem tudom vele rendesen beállítani. Erre többen is panaszkodtak. Működni működik, csak nem használja ki 100%-osan a videókártyát.
  3. A rendszer használatához kell a megfelelő szaktudás. A Windows a varázslói segítségével igyekszik mindent a felhasználó kezébe adni, ami gyakran a rugalmasság rovására megy. A Linuxnak mindent meg kell mondani pontosan. (És a kapott utasítást végre is hajtja szó szerint...)

Más hátrányt nem tudok neki felsorolni, remélem, egy tapasztaltabb kolléga majd megteszi helyettem.

A blogról néhány szót: Van a Linux alatt kismillió ablakkezelő rendszer (KDE, Gnome, stb...) Ezeknek hála lehet grafikus felületen kezelni, és a laikusoknak olyan, mint a Windows. Én viszont a Linuxnak elsősorban a sötét oldalát akarom bemutatni. Ez a sötét oldal pedig nem más, mint a terminál. A terminálnak hála parancsszavakkal utasíthatjuk a gépet különböző dolgokra. Windows alatt is van ilyen (Start menü -> Futtatás -> cmd -> enter), de a Linux (u.n) parancsértelmezője (Bashként fogok rá utalni a továbbiakban, mert az a legelterjedtebb shell, vagyis parancsértelmező.) sokkal nagyobb tudású. Mindent meg lehet vele csinálni, általában sokkal kényelmesebben, mint grafikus felületről. A blogom is elsősorban erről fog szólni.

Szerdán vagy csütörtökön meg is írom az első olyan posztot, ami konkrétan a linux parancsértelmezőjével foglalkozik. Nem vágunk bele egyből a Bash ugráltatásába, először inkább a fájlrendszerrel fogjuk kezdeni. Aztán kitérünk egy kicsit a jogosultságkezelésre, és bele is vágunk a Bash szépségeibe. Addig javaslom mindenkinek, aki ezt a blogot megtalálja, hogy telepítsen egy linuxot és ismerkedjen meg vele.