TechBlog cikkei

Legnagyobb közös osztó-keresés

Hát ez nem pont egy technikai téma, inkább matek, de arra gondoltam, kiposztolom ide, hátha valakinek van ötlete. Szóval úgy néz ki, lassan szükségem lesz egy olyan algoritmusra, ami egy adott halmaznak megadja a legnagyobb közös osztóját. Ugye ha egész számokról van szó, akkor ez egy elég triviális probléma. A gond az, hogy nekem valós számokra kell elvégeznem a dolgot, és igazából nem is a szigorúan vett "legnagyobb közös osztóra" van szükségem (két irracionális szám esetén például lehet, hogy nincs is közös valós osztójuk), hanem valahogy arra a valós számra, ami egy egészséges egyensúlyt ad a következő két feltételre:

  1. Egy adott (valós) számhalmaz elemeit elosztva ezzel a bizonyos számmal a maradékok legyenek "kicsik".
  2. A halmaz elemeit ezzel a bizonyos számmal elosztva az eredmények legyenek "minél közelebb" olyan racionális számokhoz, amelyeknek a nevezője "minél kisebb".

És plusz pontért még egy kritérium:

  • A számhalmaz minden eleméhez lehessen rendelni egy "súlyparamétert", ami azt mutatja, hogy mennyire "gáz", ha ezt a bizonyos legnagyobb közös osztót ennek a számnak az "ignorálásával" határozzuk meg.

A konkrét megoldandó probléma az, hogy adott egy formáns-halmaz (vagyis: egy adott hangról készített "FFT-szkeccs", vagyis nem a teljes FFT kép, hanem csak a legjellemzőbb frekvenciák és a hozzájuk tartozó amplitúdók, mint "súlyfaktorok") és ezekből az adatokból meg kell határoznom, hogy milyen hang szól (pontosabban, hogy a mintavételezett spektrumnak mi az "alaphangja"). Az alaphang az a frekvencia, amivel a "legegyszerűbben" magyarázható a spektrum többi tagja.

Utóbbi alatt a következőt értem: ideális esetben egy (hangszer)hang spektruma modellezhető úgy, mint egy f0 alapfrekvencia és ennek fn=nf0 felhangjainak halmaza (n egész, vagy legalábbis olyan racionális szám, aminek a nevezője kellően kicsi). A gyakorlatban általában a mérési hibák, az adatfeldolgozás során bevitt egyéb hibák (pl. FFT-ablakolási problémák stb.) a környezet és a hangszerek nemlinearitása miatt ez a modell nem teljesen helytálló. Sajnos az irodalomban csak olyan képleteket találok alaphangbecslésre, amik erősen "mérnöki" jellegűek (pl. most olvastam egyet, ahol bizonyos hibákat ad össze bizonyos együtthatókkal, majd a képlet után közli, hogy "X és Y javaslata alapján az együtthatók legjobb értékei" majd jön egy rakás szám mindenféle indoklás nélkül), és valahogy nincs gusztusom ilyesmivel dolgozni, ezért gondoltam, hogy valamit összeütök magamnak, aminek egy ilyen "legnagyobb közös valós osztó keresés" lenne az első lépése.

Tagek:
 
Utoljára módosította SAdam 2010.VIII.30 11:57-n; 2 hozzászólás
Bejegyzés módosítása | PermaLink
Szavazás letiltva.

Telefonközpont razzia

Szerda délután egy összehangolt rendőrségi akció keretében 84 mobiltelefon-központot foglaltak le az országban. A 3 hazai szolgáltató statisztikái alapján a mobiltelefon-forgalom 45%-kal esett néhány percen belül. Értesüléseink szerint a házkutatási parancsra az adott okot, hogy a BKV-s és egyéb a közelmúltban vizsgált korrupciós ügyekben a bűncselekmények leszervezésére úgynevezett mobiltelefont használtak a gyanúsítottak. Ez egy olyan - vonalas telefonhoz hasonló - készülék, amellyel a bűnöző a tartózkodási helyétől függetlenül bűncselekményeket tud leszervezni. A telefonközpontokon csak az elmúlt héten összesen 4 millió percnyi beszélgetést folytattak. A gépek súlya összesen 12 tonna. A telefonközpontokat a per lezártáig bizonyítékként őrzik, a várhatóan 4-5 év múlva meghirdetett ítélet után a tulajdonosaik visszakapják őket.

Ha pedig valaki nem értené, ennek az álhírnek mi köze van a technikához, olvassa el, milyen érdekesen fogalmazták meg [néhány hazai torrent tracker tegnapi lefoglalását].

Tagek:
 
Utoljára módosította Wigy 2010.VI.18 08:55-n; 0 hozzászólás
Bejegyzés módosítása | PermaLink
Szavazás letiltva.

Minőség

Vicces korszakban élünk. Van egy rahedli programozó. Többnyire nagyon jól keresnek, egy részük még értelmes is. 15 évvel ezelőtt egy kém nyom nélkül tüntetett volna el bárkit egy mai számítógépért. Ma meg komplikált, hibás és lassú szoftvereket írnak rájuk. Pont ugyanarra használható, ugyanolyan sebességű szoftvereink vannak, mint 15 évvel ezelőtt. Talán egy kicsit szebbek, de több bennük a hiba és veszélyesebb környezetben futnak (ld. Internet).

A Moore törvény már nem segít az egyszálú programokon, a párhuzamos programozás pedig rétegtudás és tipikusan tovább rontja a megbízhatóságát egy szoftvernek, úgyhogy nagyon össze kellene szednie magát a szoftveriparnak. Kedves barátom szokta mondani, hogyha az építészek úgy építkeznének, mint ahogyan a szoftvereket fejlesztik, egy harkály romba tudná dönteni Budapestet.

2 irány van: Vagy csak a nagyon tehetséges és alapos embereket engedjük programozni, vagy nagyon le kell csökkenteni a sikeres fejlesztéshez szükséges tudást. Mindkettőt próbálgatják és egyik sem működik.

Az elsőre a pici, extreme programming sznobériáját választó startup cégek adnak jó példát, amelyek egy része anyagi sikereket ér el, megnő és leromlik.

A másodikra a Visual Basic a jó példa, amelyben sokak kezdtek el egy pici célprogramot összekalapálni, némelyiket el is kezdenek komolyabban használni, de a való életben általában változtatásokat kérnek a felhasználók, és az első változtatások után általában rohamosan szétesik a projekt.

Ha valaki megtalálja a megoldást, nagyon gazdag lesz. Úgy értem, hogy gazdagabb, mint Bill Gates és Sergey Brin együtt. Ezért sokan keresgélik is a megoldást.

Hát, szerintem a meccs nincs lejátszva, látjuk hogy valaki kaszálni fog. Bár szerintem az nyer, aki a megrendelők elvárását meg tudja növelni, hogy ne fizessenek ki olyat, ami igazából használhatatlan.

Tagek:
 
Utoljára módosította Wigy 2010.III.11 16:32-n; 3 hozzászólás
Bejegyzés módosítása | PermaLink
Szavazás letiltva.

HCF - Halt and Catch Fire

Az assembly (gépi kódú) nyelveken a processzorok utasításait általában hárombetűs rövidítésekkel (mnenomic) szokták jelölni. Például a "jump" utasítás mnenomicja a "JMP" szokott lenni, vagy mondjuk az "A" regiszter értékadása LDA ("Load A").

(Ebből az egészből kb az a lényeg, hogy gépi kódban programozni nem sokban különbözik az autizmustól.)

Következik pár, kevésbé ismert opcode leírása:

Any of several undocumented and semi-mythical {machine instructions} with destructive side-effects, supposedly included for test purposes on several well-known architectures going as far back as the {IBM 360}. The {Motorola} {6800} {microprocessor} was the first for which an HCF {opcode} became widely known. This instruction caused the processor to {toggle} a subset of the {bus} lines as rapidly as it could; in some configurations this could actually cause lines to burn up.

KAH - Kill All Humans

Processor will push the status of the flags to the stack, and will then attempt to kill all humans.

This works much like 'Kill Some Humans' (KSH) but there is no way to set a maximum bodycount. Instead, with KAH, the immediate operand and ALU contents are ignored.

Note: on the second edition of this CPU, this opcode can be masked by pulling low the "/safe" pin, and this is the recommended usage.

Tagek:
 
Utoljára módosította UPi 2010.II.26 17:31-n; 2 hozzászólás
Bejegyzés módosítása | PermaLink
Szavazás letiltva.

Kétféle programozó

Azt hiszem mélyponton vagyok mostanság a munkahelyemen. Persze indokot mindig lehet találni a rosszkedvre: leépítések miatt értékes munkatársak elveszítése, munkakörülmények előrelátható romlása 1-2 hónapon belül, általános hangulatváltozás a kollégák között, stb... De jobban végiggondolva semmi köze ezeknek a rosszkedvemhez.

Inkább magammal vagyok elégedetlen. Más elvárásokat táplál a környezetem felém és ezzel összefüggésben én is mást várok el magamtól, mint amiben jó vagyok. Bármilyen meglepő, de jobban dolgozom csapatban, mint egyedül. Sokat kísérleteztem a csapattagok hatásának helyettesítésével: Kérdések, amiket magamnak felteszek, konzultáció képzeletbeli beszélgetőtárssal (ld. gumikacsa effektus). Nem segít. Így is vannak komplett hetek, amiket elakadva töltök. Az elmúlt hétért nem adnék magamnak fizetést.

Van egy klasszikus novella a neten 1985-ből kétféle fejleszőről. Ebben Charles hetekig nem csinál semmit, de aztán előáll egy technológiailag ideális szoftverrel. Vígasztalhatnám magam vele, hogy nekem is most a töprengős hetem volt, és olyan fasza gyerek vagyok amúgy, mint Charles. A helyzet az, hogy a múltamból arra következtetnék, hogy egyedül nem fogom megszülni a megoldást.

2 éve volt 3 hónapom (!) amikor egyetlen feladattal küzdöttem. Valami hiba miatt egy komplex szoftver egyik része egy másik rész memóriáját írta felül. Linux alatt kész megoldásokat ismertem az ilyesmi probléma kinyomozására, de ez Windows volt. Itt "termékek" léteztek csak a nyomozáshoz, jónéhány még az árat is csak azután mondta meg, hogy megnézte, mennyit lehet legombolni a cégről, aki veszi. Jónéhány hozzáférhető eszközt kipróbáltunk, de mind használhatatlanul lassú volt, a szoftver valósidejű követelményeit elrontotta. Elkeseredésemben 1 hónap után elkezdtem írni egy eszközt, amivel a memóriafoglalások/felszabadítások kicsit többet adminisztrálnak, így legalább azt megtudjuk, ki írt felül mit. 2 hét alatt eljutottam odáig, hogy egy adott Win32 hívás túl lassú, és mindegyik program azt használta. Újabb 1 hét alatt újraimplementáltam azt a Win32 hívást, hogy gyors legyen. És utána 1 hónap szünet.

Fogalmam sincs, mit csináltam abban az 1 hónapban. Mondhatnám, hogy vánszorgott a fejlesztés, de még azt sem. Minden mással foglalkoztam. "Segítettem" más feladatokban. Filmeket néztem munkaidőben. Kiolvastam az egész internetet. Aztán jött a szikra, hogy talán el kellene mesélnem valakinek az egészet. Megtaláltam a megfelelő áldozatot, aki semmit nem értett a dologhoz, így ideális beszélgetőtárs volt. 1 hét alatt közösen befejeztük a hibakereső eszközt, beintegráltuk a hibás szoftverbe, megtaláltuk és kijavítottuk a memória-korrupciót. Zseniális beszélgetőtársra találtam, nem?

Nem vagyok Charles. De nagyon szeretnék azzá válni.

Tagek:
 
Utoljára módosította Wigy 2010.II.06 12:01-n; 0 hozzászólás
Bejegyzés módosítása | PermaLink
Szavazás letiltva.