![]() |
|
Reggel elképesztően kómásan kelés, indulás, Péter kirángatása az ágyból, mert õ visz minket a Bradley-re. Elbúcsúzunk Amerikától, igencsak nem szívesen - de reméljük csak átmenetileg. A "magyar valóság" nem hiányzik egyikünknek sem, már a gondolata is negatív. Eszembe jut, hogy mennyire lehúz azt a "szenvedés", amit otthon van... az emberek nyűglődése, a panaszkodás, pesszimizmus (tisztelet a kivételnek, mint mindig), Budapest zsúfoltsága, sorolhatnám hosszan. Ami pedig a legrosszabb: Taco Bell sincs Pesten! :)
LAX, búcsú. Valami szürnyű McDonald's-os reggeli, kávé, check-in, take-off. Most minden rendben megy: a JFK átszállás (mondjuk késés itt mindig van), ésatöbbi. Az álmosság miatt összemosódik az út, alig emlékszem rá későbbb...
A New York-ig gépen magyarok: "...teee, mi most jövünk Hawaii-ról, és tiii?" Na tessék, újgazdagék... Összenézünk Ingriddel: ó hogy mennyire ellenszenvesek ezek a magyarok :) BÁÁÁÁ! Legalább Pestig bírták volna ki....
Magyar idő szerint reggel 6 óra, valahol Írország felett járunk, mikor ezeket a sorokat írom. (...és másfél évvel később Berekfürdőn, mikor befejezem.) Rendezgetem a képeket... sajnos a bejegyzések felvitele elmaradt egy jó ideje, a hétvégén megpróbálom majd pótolni, ha minden igaz. (Nem lett igaz. :))
Megérkezünk, Tamás hazaszállít minket az XI.-be. Hát... ENNÉL azért még Vegas is jobb volt :) Amerikából jöttünk, mesterségünk címere... "Amerikába visszamenni akarók". Nincs valahol felvétel?
Ezt a "fejezetet" a Perl (Perl 5) programnyelvnek, pontosabban néhány tipikus, Perl programozás közben gyakorta felmerülő feladat "megoldásának" szentelném.
A bejegyzés folytatódik »
A feladat: egy adott képfile átméretezése úgy, hogy a létrejövő kép egy előre megadott méretű téglalapba beférjen, és ne torzuljon (tartsa meg a méretarányait). Lehetőleg a script minél több formátumot ismerjen.
Mellébeszélés helyett lássuk egyből a kódot!
Gyakori feladat: van egy címlistánk, ugyanazt az e-mailt ki kell küldenünk mindegyik címre. Egy meglehetősen primitív megoldást adnék erre lentebb.
A program első paramétereként a címlistát várja (txt file, soremelésekkel lezárva, egy e-mail egy sor), másodiknak a kiküldendő e-mail file-ját. A kiküldendő file első sora a feladó e-mail címe, második a levél tárgya, harmadiktól maga a levél.
ISO-8859-2 kódkészletet feltételezünk mint a subject-re, mind a levél törzsére!
Nemrégiben vettem autót, jó magyar szokás szerint devizahitelre. Persze tudtam - mint ahogy tudja mindenki - hogy az árfolyamkockázat nagy: a hitelt a választott devizában jegyzik, ha a forint romlik, az ember ráfizethet. Mindenesetre a forint alapú hitelekkel összehasonlítva még így is sokkal alacsonyabb részletek jöttek ki, tehát ennél maradtam.
Most jön a barbatrükk!
Az eredetileg megállapított kezdőrészletnél már az első alkalommal majd' 10%-kal többet kellett csengetnem. Nocsak, ennyit romlott volna a svájci frank?
Utánajártam hát a dolognak, végigrágtam magam a szerződésben szereplő gyökjeleken és szummákon - egy leasingszerződés megértéséhez felsőfokú jogi ÉS matematikai tanulmányok szükségeltetnek - és a következő "érdekességet" találtam.
A bank amikor a hitelt kiadja, devizavételi árfolyammal kalkulál, ehhez képest adja meg az első törlesztőrészletet. Majd mikor kiküldi az első csekket, ezt korrigálja az árfolyamváltozással - azonban ekkor már devizaeladási árral számol. Mindez azt jelenti, hogy már az első részlet több - még akkor is, ha nem volt árfolyamváltozás. Néhány forintos ingadozás esetén - annyi biztosan lesz, lásd lejjebb, hogy miért - ez azt jelenti, hogy mondjuk egy 84 hónapra felvett, 2.5M forint körüli devizahitelre még relatíve állando árfolyam esetén is összesen minimum 300,000 Ft-tal fizetünk többet, mint amit előzetesen kalkuláltunk: egy 5-6% körüli "kedvezményesnek" vagy "akciósnak" nevezett hitel esetén tehát kb. 600,000 Ft helyett 900,000 Ft lesz a hitel költsége.
Aki valamennyire foglalkozott már devizával, lehet elcsodálkozik: honnan jön ki ez a nagy különbség, ha a deviza spread (vételi és eladási ár közötti különbség) 1-2 forintnál nem szokott több lenni? A válasz egyszerű: a bank "direkt erre a célra" fenntart egy, a szerződésben is megnevezett árfolyamot, ahol a spread CHF esetén is legalább 5-6 Ft. Mindehhez hozzájárul, hogy a bank a szerződést "nem előttünk írja alá", tehát lehetősége van néhány napot ide-oda mozogni, és a rendelkezésére álló időszakban a legalacsonyabb devizaárfolyam idejére dátumozni a szerződést, így gyakorlatilag garantálva, hogy már az első részletnél ráfizessünk a hitelre még egy kis árfolyamváltozási "büntetést" is.
Na ennyit a THM-ről. Ha valakinek nem tetszik a dolog, akkor persze felmondhatja a szerződést, és kifizetheti egy összegben az autóját - tekintettel arra, hogy a teljes hitelszerződést az összes trükkös kondícióval csak az autó megvásárlása után kapja majd kézhez.
Azt rebesgetik, hogy Orson Scott Card magyarul "Végjáték" cím alatt megjelent regényét (eredetileg: Ender's Game) megfilmesítik. A rendező Wolfgang Petersen (Trója, Kedves Ellenségem).
Az IMDB szerint a film a két párhuzamosan játszódó könyv (Ender's Game, Ender's Shadow) elegyítése lesz. Ez nem hangzik valami jól - mindenesetre biztató, hogy maga az író készíti a forgatókönyvet. A tervezett megjelenés 2008. Izgatottan várjuk, hiszen a regényciklussá terebélyesedett Ender's Game a sci-fi irodalom egyik legnagyobb klasszikusa, amely több Nebula -és Hugo díjat is magáénak tudhat, és amelyet csak olyan hasonló művekkel együtt emlegetnek, mint Isaac Asimov Alapítvány vagy Frank Herbert Dűne "sorozata".
Az "E! kultúrát" sokan a végtelenül kiválló (tm) és hiánypótló Napirajzból ismerik, azonban ha minden igaz, a dolognak van egy régebbi eredete is. Kissé megkoptak már emlékeim, tehát bocs, ha tévedek, de a sztori, ha jól emlékszem, a következő volt:
Az Impulzus szerkesztőségében valahol így 96-99 környékén (legalábbis jobbára - életünket a félévek és évfolyamok kalapgörbévé alakították) annak rendje és módja szerint remek kis szubkultúra alakult ki. A számtalan faszság közül egy célünk a "bazmeg" kifejezés minél gazdaságosabb tömörítése volt. Így a "bazeg", "baeg", "vazeg" (ez IRC-es hagyomány), majd "vzeg"-en keresztül jutott el ha jól emlékszem a "ve"-ig. (Megfelelően kell hangsúlyozni, ez a kulcs! Lásd még: ÜÁZZ)
Ekkoriban futottam bele édesapám egy kazettájába, aki t.i. tanárember volt, ergo voltak neki ilyen "oktatást segítő" dolgai. Az egyikbe - véletlenül - belehallgattam: első osztályosoknak a hangokról és betűkről. Idézném az anyagot:
Női hang: Az "E" betű.
(boinggg)
Férfi hang: Mondjuk hangosan az E betűt!
(szünet, majd kórusban nő+férfi)
- E! E! E!
Ezt persze reprodukáltam jeles kollégáimnak. Hamar rádöbbentünk, hogy ez a "ve"-n is túlmutat, és hogy pszeudo-igénytelenségi mozgalmunk megtalálta a "mindenféle közlés abszolút minimálisra történő csökkentésének non-plus-ultrájáját". A dolog ragadt: Galaxy mester remekbe szabott (a.k.a. neoprimitív) rajzain át beragyogta fényességével
az Impulzus lapjait, majdpedig bevonult baráti körünk, illetve villanyos, valamint infós kollégáink aktív szókincsébe.
Mondjátok ti is az E! betűt!
Aki esetleg nem vágná, mi is az a VPN, annak valószínűleg úgysincsen rá szüksége, és ne is olvassa tovább. Mindamellett röviden azért, a köz okulása végett:
A VPN (Virtual Private Network) segítségével hálózatokat lehet összekapcsolni, méghozzá biztonságos (titkosított) módon. A tényleges kapcsolat persze mindig két gép között jön létre, sőt az is lehet, hogy csak két gép a hálózat tagja, mindazonáltal ez ritka: a gyakoribb az, hogy egy/több gépet csatolunk be egy már meglévő hálózata.
Például: egy cég két irodájának a gépeit egyetlen hálózatban akarjuk látni. Vagy: a munkahelyi hálózatunkra csatlakozunk rá otthonról.
A VPN nem szerver-kliens jellegű kapcsolat: fizikai kapcsolatot "emulálunk", mintha mondjuk egy b*szott hosszú kábellel kötnénk be mondjuk az otthoni laptopunkat pl. egy egyetemi hálózatba, minek hatására a gépünk úgy viselkedik, mintha tényleg ott lenne az a kábel.
A VPN felépítése sajnos nem annyi, hogy elindítunk valami service-t aztán jólvan. A problémák:
- A VPN nem egy protokol, mint mondjuk a HTTP, hanem egy fogalom, architektúra: ennek megfelelően mindenképppen választanunk kell egy VPN szoftvert, amihez megfelelő szerver mellett megfelelő (értsd: minden csatlakozni kívánó gépen futó) kliens is tartozik.
- Az egyes VPN szoftverek tipikusan nem kompatibilisek egymással.
- Rendszerszinten a fogadó (szerver) oldalon a VPN beállítása nem elég: jellemzően egyéb trükköket is kell alkalmazni, pl. routing tábla módosítása, IP forward, stb.
- Egyáltalán nem biztos, hogy vannak statikus IP címeink (ez ugye főleg a szerver oldalon gond), ami bonyolítja a helyzetet.
- Mindenféle firewall-ok állhatnak utunkba.
- A szerver LAN-jában lévő service-eket bizonyos konfigurációban tájékoztatni kell arról, hogy megértsék a VPN által becsatolt virtuális hálózatot (ami alapból külön tartomány). Néha a LAN tartományt (pl. cím allokáció) is módosítani kell.
Két gépet összekötni VPN-nel, statikus IP-n viszonylag egyszerű - ennek megfelelően sok értelme sincs. Ígyhát egy bonyolultabb - egyébként viszont tipikus - konfigurációról lesz itt szó. Lássuk!
A körülmények:
- egy irodai hálózatba akarunk becsatlakozni, ahol már van egy lokális IP tartomány: legyen ez 192.168.1.x
- az irodába bejövő internet egy dinamikus IP-n ülő, belülre dinamikus IP-t DHCP-ző router-en ül
- ezen a router-en keresztül NAT segítségével látják a kinti hálót a gépek
- belül van egy Windows hálózat (Samba vagy nem, mindegy)
- van "az asztalon" egy Linux szerver, aminek szintén a router ad (kvázistatikus) IP-t, ami legyen mondjuk 192.168.1.10
- a Linux szerver Samba szerver is, csak hogy örüljünk
Ez egy meglehetősen tipikus konfiguráció: a legtöbb kis -és közepes munkahelyen valami ilyesmit találunk.
Amit el akarunk érni:
- "külső" gépekről (otthonról) a belső hálózatot Windows Networking-en keresztül elérni, minden szenvedés nélkül (tehát a kliensnek legyen egyszerű dolga, vagyis X.Y. hozzá nem értő munkatársunk egyszerűen tudja használni otthonról, Windows XP-ről vagy Vista-ról)
A feladathoz használt VPN szoftver az OpenVPN. Ez egy jól működő dolog, és mind Windows-on (Vista-n is), mind Linuxon remek támogatással rendelkezik. Ingyenes.
A VPN szerver egy Fedora Linux, esetünkben Fedora 8, de más verziók és más Linux disztribúciók is szinte ugyanígy használhatóak.
Mielőtt beledőlnénk a VPN-be, először is meg kell tenni a következőket:
1. Mivel a külső IP-nket dinamikusan kapjuk, egy DDNS-t kell létrehozni erre a címre. A router-ekben jellemzően be lehet állítani a dyndns.com-ot, a példa kedvéért legyen a külső dinamikus IP-nk címe az example.dyndns.com. Innentől ez mutat a router-ünk aktuális IP címére. Csináljuk ezt meg, próbáljuk ki! Nem árt, ha a 22-es portot forwardoljuk a routeren át a Linux gépre, így könnyen ellenőrizhető a dolog.
Ha megvan, akkor NEXT :)
2. A router-en az OpenVPN portját (1194) ki kell nyitni és a belső gépre irányítani. Ez lehet UDP vagy TCP - legyen most UDP. Innentől elérjük tetszőleges külső gépről a belső gépet.
3. Ki kell nyitni az 1194/UDP portot a Linux szerveren, már persze ha zárva lenne, és már ha egyáltalán használunk firewall-t, és az az IPTABLES :)) Ha igen, akkor valami ilyesmi kell a /etc/sysconfig/iptables-be:
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
#!/bin/bash
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
ifdown eth0
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.1.10"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.1.255"
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
#!/bin/bash
####################################
# Tear Down Ethernet bridge on Linux
####################################
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged together
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done-A -i tap0 -j ACCEPT -A -i br0 -j ACCEPT -A FORWARD -i br0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
route add default gw 192.168.1.1
./vars source vars ./clean-all ./build-ca
./build-key-server server
./build-dh
./build-key-pass client-1
port 1194 proto udp dev tap0 ca "/etc/openvpn/easy-rsa/keys/ca.crt" cert "/etc/openvpn/easy-rsa/keys/server.crt" key "/etc/openvpn/easy-rsa/keys/server.key" # Titkos! dh "/etc/openvpn/easy-rsa/keys/dh1024.pem" server-bridge 192.168.1.10 255.255.255.0 192.168.1.200 192.168.1.254 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo max-clients 10 persist-key persist-tun status openvpn-status.log verb 4
/etc/rc.d/init.d/openvpn start
openvpn /etc/openvpn/server.conf
br0 Link encap:Ethernet HWaddr 00:19:20:90:B4:22
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:69486 errors:0 dropped:0 overruns:0 frame:0
TX packets:48783 errors:0 dropped:0 overruns:0 carrier:0
eth0 Link encap:Ethernet HWaddr 00:19:20:90:B4:22
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:69519 errors:0 dropped:0 overruns:0 frame:0
TX packets:48769 errors:0 dropped:0 overruns:0 carrier:0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6362 errors:0 dropped:0 overruns:0 frame:0
TX packets:6362 errors:0 dropped:0 overruns:0 carrier:0
tap0 Link encap:Ethernet HWaddr 00:FF:30:82:85:C5
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:9650 overruns:0 carrier:0client dev tap proto udp remote example.dyndns.com 1194 resolv-retry infinite nobind persist-key persist-tun ca "/etc/openvpn/easy-rsa/keys/ca.crt" cert "/etc/openvpn/easy-rsa/keys/client1.crt" key "/etc/openvpn/easy-rsa/keys/client1.key" comp-lzo verb4
openvpn /etc/openvpn/client.conf
| 31. |
...hazafelé
2007, Május 1., 1h |
| 32. |
Perl blog - ez miez?
2007, Május 29., 23h |
| 33. |
Első ujjgyakorlat: thumbnail-ek készítése
2007, Május 31., 15h |
| 34. |
Triviális hírlevél küldő
2007, Június 1., 14h |
| 35. |
A devizahitel szépségei
2007, Augusztus 10., 12h |
| 36. |
Végjáték
2007, Szeptember 27., 1h |
| 37. |
E!
2007, November 12., 23h |
| 38. |
VPN beállítása Linuxon (Fedora + OpenVPN)
2008, Április 2., 11h |
| 1.- 11.- 21.- 31.- |
| Cím: | A bugyuta ember |
| : | 409 |
| : |