angol róka (Gimp)

Ha valaki magyar local settings-el használja a windows-át, meglepő módon tapasztalhatja, hogy a gimp midnig magyarul akar kommunikálni vele… A megoldás, le kell törölni minden könyvtárat, ami nem en-el kezdődik az alábbi helyről:

C:\Program Files\GIMP-2.0\share\locale\

Effect chain

Van az a mondás, hogy embert barátjáról, gitárost setupjáról…
Hát íme az enyém.

Az effekt loop szívét, egy Lehle 3in1 kapcsoló pedál képezi, ez szolgál a váltásra a két (3) effektkör között.
Az első kör az erősítő reverb csatornájába kötött, enyhén úsztatott hang, amit egy kicsit teltebbé, kiemeltebbé tesz a TubeScreamer.
A második kör, pedig egy FuzzFactory által erősen torzított, Dunlop Wah effekten keresztül az erősítő tiszta csatornájába kötött (a nem erősített bemenetbe, mert a fuzz elég hangos tud lenni) sor, a szólóknak, vagy a kiemelt részeknek.
Mindkét kör keresztülmegy ugyanazon a DD-9-es Delay uniton, így elég egy helyen beállítani a kívánt Delay effektet.
Ami érdekesebb, hogy a második körbe opcionálisan bekapcsolható (C kapcsoló) az EMU 1616, Cubase SX Studio, és ez által a VST effektek egész sora. A külön kapcsolás több dolog miatt is hasznos. Ha valami nem jó, az EMU helyett szól a fuzz és a wah. Szintén ez történik, ha valami hardver, szoftver probléma adódna (de nem nagyon adódik szerencsére).
Az effektek paramétereit a Novation Remote Zero SL által lehet állítani, ami nagyon gyorsan a szívembe lopta magát, de terveim szerint ezt egy későbbi postban még jobban kifejtem, pontosan miért is. A midi kontrol egységhez csatlakozik a Boss volume pedálja, de itt, mint midi exp pedál (ezt is tudja ugyanis), Volume pedálnak kicsit zajos, midi exp pedálnak tökéletes (kevés robosztusabb midi exp pedált láttam eddig). Ezzel lehet az effektek azon paraméterét állítani amit játék alatt is gyakran módosítani szeretnék.

Változások

Megszűnt a voji.hu régi mivolta, helyét teljes egészében a blog vette át, mivel a voji.hu oldal karbantartására abszolút nem volt már időkeret.
Ellenben a blog kategóriái picit átrendezésre kerültek, és mostmár látok arra is (pici) esélyt, hogy ne csak programozási, hanem zenéléssel kapcsolatos postok is kerüljenek bele.

SVCgen batch processing, and parameters

Az SVC technológia kapcsán (ami egyébként kivételesen ötletes) az az érzése lehet az embernek, mintha nem lett volna rá idő rendesen beintegrálni a Visual Studio 2008-ba, ugyanis nincs módunk a kliens stub-ok generálására studióból. Vagy legalábbis én még nem jöttem rá erre. De sebaj, van megoldás. Írni kell két bat filét.

svc.bat

@echo off
echo Starting servicestub generation 
cmd /V:ON /C svcgen.bat

svcgen.bat

@echo off
set serviceList=system/system.svc,other/other1.svc,common/common.svc,admin/admin.svc

set serviceHost=http://localhost:3467/services/
set outputDir=.\client\serviceproxy\servicestubs\
set outputConfig=.\..\..\..\services_app.config
set resourceFile=.\..\common\bin\Debug\common.dll
set svcTool="c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\SvcUtil"

set wsdlPostFix=?WSDL
set commonParams=/noLogo /target:code /l:cs /ser:datacontractserializer /importxmltypes

 
set cmdLine=%commonParams% /r:%resourceFile% /config:%outputConfig% /d:%outputDir%

del %outputDir%%outputConfig%
del /Q %outputDir%\*.* 

set firstrun=true

for %%a in (%serviceList%) do (        
  echo Processing service: %%a       
  echo ------------------- 
  rem echo %svcTool% %cmdLine% %serviceHost%%%a%wsdlPostFix%
  
  if "!firstrun!" == "false" (  
    %svcTool% %cmdLine% /mergeConfig %serviceHost%%%a%wsdlPostFix%   
 )
    
  if "!firstrun!" == "true" (
     %svcTool% %cmdLine% %serviceHost%%%a%wsdlPostFix%     
     set firstrun=false
 )  
)

A szolgáltatásokat a serviceList listába kell felvenni, vesszővel elválasztva.
A /r: paraméter arra szolgál, hogy azon osztályok, amik szerepelnek a megadott dll-ben nem kerülnek legenerálásra a kliens oldalon.

Ha igazán széppé akarjuk tenni a megoldást, akkor kell írnunk egy alkalmazást, ami a végeredményül kapott services_app.config fájlt bele tudja illeszteni az app.config fájl megfelelő xpath helyére.

Panoráma

Semmi időm nincs, élni sem, nem hogy blogolni.
De ha valaki szeret fényképezni, és hatalmas felbontású képeket szeretne csinálni, akkor nincs szüksége másra, mint egy fényképezőre, ami támogatja a képek nagyáboli egymáshoz illesztését (stitch assist) és egy PTGui nevű programra.

És az eredmény valami ilyesmi lesz:
kép_1
kép_2

Na pá

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.