Bérletigazolvány

Hogy mi közöm a BKV-hoz? Néha magam is elgondolkozom rajta. Amióta van autóm teljesen elszeparálódtam a Máv értékelhetetlen, színvonaltalan szolgáltatásától. És milyen jól tettem. A havi bérlet árából bőven megtankolok, és nem 1.5 óra az út hanem maximum 40 perc. A sztrájkokról is csak akkor értesülök, ha valakit felhozok pestre, mert épp megint nem járnak a vonatok. Ennek ellenére pesten nem használom az autót, mert úgy érzem, hogy nem helyes megfullasztani embertársaimat. Így hát marad a BKV amivel nagy általánosságban nem is volt bajom. Eddig.
Történt ugyanis, hogy hazafele tartok, mikor odajött hozzám egy kedves ellenőr. Sebaj, mindennapos dolog, és amúgy is mindig van bérletem, mert bízom benne, hogy ha fizetek, akkor talán szolgáltatást is kapok. A szolgáltatást meg is kaptam, az ellenőr kedvesen megkérdezte, hogy mi az a szám a bérleten. Én kedvesen mondtam neki, hogy a személyi igazolványom száma, mi más. Válasz: hát fiatalember szét kellene tépnem a bérletét, mert ez így nagyon helytelen. Szerintem meg nem az, de a vége az lett a dolognak, hogy nagylelkűen mégsem tépte szét, és a lelkemre kötötte, hogy azonnal másnap de rögtön csináltassak BKV bérletigazolványt. Kb. 4-5 éve nincs ilyenem, és azért meg voltam nélküle egész jól. De mivel én jó fej vagyok, és a világért sem akarok konfrontálódni a helyi magasan képzett BKV-s ellenőr urakkal, valamint úgyis mentem bérletet venni, gondoltam akkor most már lesz ilyenem is. Sajnos az utolsó igazolvány kép körülbelül 5 évesen készült rólam. De gondoltam az pont megfelelő is lesz. Nagy lelkesen odaálltam egy bérletpénztárhoz, ahol balszerencsémre éppen valami probléma kezdett kibontakozni. Valaki ugyanis épp 30 napos bérletet akart venni, de azt mondta a kedves hölgy hogy olyan nincs. Ezt a párbeszédet ismételgették már 5 perce, amikor arra a szörnyű felismerésre jutottam, hogy én is olyat akarok az új igazolványom mellé, szóval gyorsan oda is álltam egy másik ablakhoz. Ez az ablak sokkal jobbnak tűnt, odaadtam a képet, meg a pénzt, és meglepő módon ott volt 30 napos bérlet is 🙂
Az igazolvány. Szóval csak a kép kellett. Azt egy hölgy beszegecselte egy lapra, csodapecsét, és már kész is a szupi, eredeti BKV bérletigazolvány. A képre annyi volt a reakció, hogy megkérdezte, diák bérletet kérek e? Sebaj, az élet szép, és már bérletigazolványom is van.
De a hülyeségek helyett inkább:
Vehetnének. számlázó szoftvert, hogy ne kelljen várni arra, amíg a szerencsétlen árusok minden hónapban, minden alkalmazottnak beírják kézzel a számlára a cégadatokat (a várakozási idő 70%-át ez tette ki)
Aztán érdemes lenne elgondolkozni azon is, mennyivel jobb a személyigazolványomnál, egy darab fehér lap egy képpel, amit egyébként bárki, bármikor meghamisít. Továbbá nincs rajta semmilyen adat, se név, se cím se semmi. Pontosabban nekem senki nem mondta, hogy meg kellene adni. Hely az van neki. Majd lehet, és persze ha lesz kedvem, kitöltöm ceruzával. Azt legalább ki tudom radírozni, ha kölcsönadom valakinek a bérletem.
De ami a legnagyobb probléma. Egy újabb iratot kell magamnál tartani, teljesen feleslegesen, ami ráadásul nem is kártya méretű… (nekem már akkora mert összehajtogattam ügyesen)

C# Singleton

Generics mint fogalom létezik a .net-ben. És ez jó. Gondoltam csinálok egy singleton ősosztályt mert az legalább olyan jó mint a generics.

   public abstract class Singleton<T> System.Object, new()
    {
        private static T _instance;

        public static T get()
        {
            if (_instance == null)
            {
                _instance=new T();
            }
            return _instance;
        }
    }

Öröm boldogság, gondoltam. De a fordító nem örült, és ezt mondta:

Error 1 Constraint cannot be special class ‘object’

Ejnye. Megnéztem a helpet.

Compiler Error CS0702
The following types may not be used as constraints: System.Array, System.Delegate, System.Enum, or System.ValueType.

Szerencsére, mint a Microsoft termékeknél általában, mindig van egy alternatív megoldás.

    public abstract class Singleton<T>
    {
        private static T _instance;

        public static T get()
        {
            if (_instance == null)
            {
                _instance = System.Activator.CreateInstance<T>();
            }
            return _instance;
        }
    }

Szolgáltatás és a Timer

Naivan azt gondolhatnánk, hogy ha egy Timer komponenst használunk a szolgáltatásunkban az működni fog. Pedig nem. A .Net rendelkezik pár Timer osztályal számunkra most kettő érdekes (az ismertetés csak felületes, akit érdekel nézze meg msdn-en ügyesen):
System.Threading.Timer: mint neve is mutatja külön szálat hoz létre, és az végzi az üzemezést
System.Windows.Forms.Timer: ezt használja a gui, azon keresztül történik az ütemezés
A feladat csak annyi, hogy amikor a szolgáltatásunk elindul, eldöntsük azt melyiket is kell használnunk. Célszerű erre egy burkoló osztályt létrehozni, ami a külső használók elöl elrejti, hogy milyen timer is működik a háttérben valójában.
Az én implementációm nagyon egyszerű, egy szempont volt: működjön. Letölthető itt.

Simian Mobile Disco – Hustler lyrics

Mivel még továbbra sem lelhető fel ezen alapmű szövege, közzéteszem, hogy mindeki meg tudja tanulni ügyesen.

Simian Mobile Disco – Hustler

Yeah, I’m a hustler baby
That’s what my daddy’s made me

If I had the money to go to a record store, I would
Go to the record store
Go to the record store and put records in my clothes
Go to the record store

Gotta walk out the record door past that record man

Go to the record store and put it in my clothes and walk past that record man
Gotta have the sticky hands when your *** is broke like me
Go to that record store, steal some records man
I’m telling you I’m broke
But I’m surviving and I can cope
Yeah, I’m a hustler baby
That’s what my daddy’s made me

It’s eight o’clock and I got nothing to do
Can’t go to the club so I guess I’ll go to the record store
Visit my record man with my sticky hands,
Walk out that record door with the records in my clothes

What the **** is you gonna do?
What the **** is you gonna do about it?
Nothing.

Push it, push it, push it

I’m a hustler baby
That’s what my daddy’s made me

Tegnap este, hazafele séta alatt, máig ismeretlen körülmények között, fényképeztem ezt.

Ilyenkor mindig arra kell gondolni, hogy mily értéktelen fémhalmaz, mert bármikor reprodukálható. Ellentétben veletek.
De akkor is gyönyörű…

mstsc és tsclient

Ha az ember a windows beépített terminál szerverét használja (msts) akkor módja van arra, hogy a kapcsolódó gép fájlrendszerét elérje a bejelentkezés ideje alatt, ha ezt engedélyezi. Ezen elérés látszik explorer alatt, ellenben total commander alatt nem.
Ahhoz, hogy ezt a meghajtót el tudjuk érni, nem kell mást tennünk mint beírni ezt a parancsot total commanderbe:

cd \\tsclient

És már látszanak is a kliens oldali megosztot meghajtók ügyesen.

voji és a sajt

Tegnap hazafelé menet, beugrottam egy kis boltba, ami talán az egyetlen volt a környéken, ami ilyen késői órában is alkalmas volt a hagyományos (civilizált) értelemben vett élelemszerzésre. Szóval bementem, és meglepő módon volt náluk sajt, ami az a termék volt, ami a teljes vásárlási igényemet lefedte. Meg is vettem, öröm boldogság, mondjuk az árán kicsit meghökkentem, ugyanis annyiért fél kilót is adnak máshol. Sebaj, elvégre valaki itt azért nem alszik, hogy nekem sajtot adhasson az éjszaka közepén. Aztán elkezdtem gondolkozni ezen a dolgon egy picit. Miért is kell valakinek a boltban lennie azért, hogy nekem eladjon valamit, amikor máshol ezt önkiszolgáló módon is meg lehet tenni. Ahol a 7/24 az tényleg 7/24, és ahol a pénztárnál lehúzom a termékek vonalkódjait, és a végén beteszem a kártyámat, majd távozok. Arról nem is beszélve, hogy ismertem egy ilyen kis bolt tulajdonost. Neki nem volt hűtőkocsija, és 3 darab sajtért, ami kb. az üzletben 1 hónap alatt elfogy nem is fog odamenni egy hűtőkocsi. Tehát az áruszállítás abból ált, hogy a kis kombi személykocsival elment mondjuk a Metróba, bepakolt mindent a csomagtartóba, és aztán szépen hazagurult. Nem biztos, hogy a leg egészségesebb ez mondjuk egy sajtnak, ha kint 30 Celsius fölötti a hőmérséklet. Lehet, hogy egy ilyen szállítás után újra kell értékelni a „minőségét megőrzi” feliratot. De sebaj, szerencsére most nincs kánikula.
Szóval miért is nincsenek itt normális önkiszolgáló üzletek, ahol nem aranyáron adnak bármit, és tehetik ezt, azért mert nem kell alkalmazottakat fizetni, max néha az árufeltöltőket, meg a takarítókat? Sok mindent fel lehet sorolni indoklásnak. De ha belegondolunk, mi történne, ha nyitna itt egy ilyen üzlet…
Az emberek egy része nem fizetne semmit. A másik része azért valamekkora részt kifizetne, a többit csak úgy elvinné, elvégre ő szegény. És lenne egy nagyon kis rész, aki intelligens, mindent kifizet, és tudatában van annak, hogy ha nem teszi ezt, bezár a bolt, mert amit nem ad oda az olyan mintha mástól venné el. És aztán megint nem lesz olcsó sajt, főleg nem este 8 után. Persze aztán a semmit ki nem fizető társadalmi réteg elmondaná a haverjainak is, hogy itt milyen nagy biznisz van, aminek következtében az intelligensebbek, már be sem mennének a boltba, de még a részlegesen fizetők se.
Persze bele lehet építeni a lopások árát a termékek árába. Kis hazánkban erre nagyon sok jó példa van. Természetesen a példák csak azért jók, mert nagyon jól szemléltetik, miért nem szabad ilyet csinálni.
Itt van például az ArtistJust, amit én mind a mai napig nem értek. Van ugyanis ez a kedves szervezet, aki ragasztgat ilyen matricákat mindenre (CD, DVD, memóriakártya, merevlemez), és aztán a befolyt pénzből támogatja a művészeket (saját elgondolásában igazságos rendszer szerint). Teszi ezt azért, mert szegényeknek letöltik, meg másolják a dalaikat. Kérdem én, egy fényképezőbe vett memóriakártyán, vagy egy backupnak használt DVD-n milyen jogon fizettetnek ki velem ilyen díjat? Milyen jogon vádolnak meg azzal, hogy illegális tartalmat fogok rá másolni? Ez alaphangon is rágalmazás. De hát jogállamban élünk, itt lehet ilyet. A szegény, napi megélhetési problémákkal küzdő zenész meg csinálja azt, amihez ért(enie kellene). Menjen el fellépni, nyújtson valami egyedit, amiért megéri elmenni a koncertjére. Sajnos nagyon kevés ilyen zenész van, és hogy mindenki megnyugodjon, nem azokat támogatják az emberek a kis matricák utáni fizetéssel. De eltartunk egy egész ArtisJust-ot cserébe, csak úgy puszira, matricaragasztgatásért, sőt még óriásplakátok tervezésérem nyomtatására, felrakására is van pénz. Gondolom ott is vannak alkalmazottak, ügyvezető, kell a céges autó, a sok számítógép, elvégre ők mind kemény és nélkülözhetetlen munkát végeznek.
Ugyan ez a helyzet a zene és filmterjesztésben is, senki sem vásárol, meg kevesen járnak moziba, emeljük az árát, és akkor legalább a haszon meglesz. Persze ennek hatására az sem fog vásárolni, vagy moziba menni, aki eddig megtette, de ez mellékes, az áremelés minidig jó ötlet.
Na de visszatérve a sajthoz, és a fenti jó példákhoz, rádöbbenünk, hogy ez sajnos nem járható út. Mint ahogy a biztonsági őrök, meg kamerák sem, mert az első variáns szintén drága, a második meg használhatatlan.
Tehát marad minden a régiben, és felesleges is fejtegetni, a probléma további okait.
Jobb esetben konstatálhatjuk, hogy nem miattunk nem lehet normális szolgáltatást nyújtani, örülhetünk, ha ismerőseink is ebbe a kategóriába tartoznak. De a hiba ennek ellenére mégiscsak bennünk van.

Alkalmazás kimenete log fájlba

Aki sokat használ konzolos alkalmazásokat, gyakran beleütközhet abba, hogy szüksége van az alkalmazás outputjára egy fájlban. Ez elég egyszerű feladat, és az alábbi módon lehet megoldani:
test.exe > out.log

Ha nem csak a sima kimenetet szeretnénk látni a fájlban, hanem a hibacsatornára kerülő dolgokat is, az alábbit kell tennünk:
test.exe 2>&1 > out.log

Egy picit elegánsabb megoldás, ha a kimenetet kiírjuk fájlba, ugyanakkor kiírjuk a képernyőre is:
test.exe 2>&1 | tee out.log

A log fájlok nézegetésére egy jó megoldás a less utasítás. Amennyiben úgy szeretnénk nézni a napló fájlt, hogy az új bejegyzéseket is azonnal lássuk, azt az alábbi módon tehetjük meg egyszerűen:
less +M out.log