Tag Archives: SOFT

V-USB ir Microsoft Visual Basic Express Edition

Padaryti įrenginį kuris valdomas per USB su AVR atmega ar panašia mikroschema gana paprasta. Parašyti command line valdyma linux ar windows sistemai irgi gana lengva. Tačiau paleisti ką nors ant monstriško “visual” jau žymiai sunkiau.
Nesu programuotojas ir man tos visos “struktūros” ir kitokie specifiniai dalykai sunkiai įkandami. Man paprasčiau iškastruoti veikiantį svetimą produktą. Vienas toks produktas, tipo pavyzdinis, buvo “generic_hid_vb_50.zip”. Tačiau jis man neveikė- dar buvo per sudėtingas. Tačiau radau kitą projektą- kažkoks LCF matuoklis. Šitas projektas bent jau pamatė mano USB termometrą ir nuskaitė kelis baitus. Paaukojau dieną ir iškastravau esama source kodą iki minimalistinio varianto, kur jau kiekvienas supras kaip ir ką pakeisti. Rezultatas- pilnas source kodas ir maža programėlė, kuri tiesiogiai nuskaito USB termometro skaičius (HID device).

V-USB hid and MS visual basic

Spaudžiant “Write/Read USB” išsiunčiami keli baitai ir kartu nuskaitomi keli baitai iš USB įrenginio. Kiek pamenu, V-USB apribotas 8 baitais vienu metu. Čia jei neklystu.
Dar kažkur pramargalinau automatinį pranešimą, kad “savas” USB įrenginys jau įkištas ar jau ištrauktas. Dabar “statusas” atsinaujina tik pabandžius nuskaityti duomenis.

V-USB HID MS Visual Basic Express Edition 11 source code

Kompiliuojasi su nemokamu Visual Studio paketu.

P.S. turėtu veikti su bet kokiu USB HID įrenginiu. Nebūtinai AVR V-USB…

Mano kalkuliatoriai androidui

Visas pasaulis arba iPadėja arba Androidėja. Aišku dar biški ir windowsėja. Apie smulkesnius -ėjimus nekalbėsim. Dvidešimt pirmas amžius verčia tobulėti. Juolab, kad pas mane net du įrenginiai su Android-Linux sistema:
Android devices
Kiniškas “ipadas” ir FriendlyARM devboardas kuri nusipirkau iš vieno žmogaus. O kai jau yra tokios “platformos”, nutariau perrašyti savo weblogo kalkuliatorius (čia kur dešinėje meniu) šiai platformai. Gal koks žmogus pasinaudos ir geru žodžiu paminės…
Iš karto pasakau, tai mano pirmas projektas android sistemai ir aplamai, pirmas projektas Java kalbose. Ypač tokioje “iškreiptoje” kai android-java… 🙂

Toliau bus screenšotai ir pati programa nusikrovimui: Continue reading →

99 alaus butelių daina arba labai geekiška programavimo kalba

Yra tokia monotoniška angliška daina: 99 alaus buteliai ant lentynos. Prasideda daina taip:

99 bottles of beer on the wall, 99 bottles of beer!
Take one down, pass it around,
98 bottles of beer on the wall!

Ir taip tesiasi kol baigiasi tie buteliai. Galima parašyti programą kuri šios dainos teksta atspausdina ant ekrano. Nieko ten sudėtingo. Tačiau yra tokia labai labai geekiška programavimo kalba “perl”. Šiaip, ji sukurta apdoroti tekstui ir turi visokių įdomių teksto apdorojimo prigulnybių. Nors ir kiek moku šią kalbą, man jos užkeikimai su visokiais skliausteliais, apostrofais, šliašais ir kitais simboliais nesuprantama… O štai kaip sugeba programuoti šios kalbos specialistai. Tai minėtos dainos printeriavimo source kodas:

99 bear bottles
Continue reading →

1995 o gal 1993

Jau galvojau, kad pamečiau… Gal kur nors disketėse dar ir rasčiau. Tačiau gerai kad yra internetas… Apie ką aš čia? Čia mano pirmasis didesnis programinis projektas. Ir kogero antra programa kuri parašyta C kalboje. Programa paviešinta internete, baisu net gi pasakyti, 1995 metais. 🙂
Radau netyčia naršydamas pagal savo vardą ir pavardę. Pasirodo įtrauktas į kažkokius “classic games” CD rinkinius. Pasirodo, aš buvau geras žmogus ir programa netgi įdėjau su visais sourcais. Dabar nusikroviau, paleidau Amiga kompiuterio emuliatorių ir va kas gavosi:

Ant tikro Amiga kompiuterio visas vaizdelis žymiai tolygesnis. Čia jau emuliacijos problemos (CPU ir GPU dažnio santykis). Sunku suderinti, nes “žaidimas” parašytas visiškai nežinant OS subtilybių ir be jokios dokumentacijos. Nors ir nebuvo dokumentacijos (rašiau reverse engineerindamas keletą bandiminiu programų) šis žaidimukas naudoja GPU akseleraciją! (aišku 95 metų lygio). Kas juokingiausia- nemokėjau skaityti iš disko (arba ilinkinti grafinę medžiagą) ir nemokėjau daryti “fprint” komandos grafinėje aplinkoje… Todėl gavosi tokia keista grafika, tekstas ir garsai… 😉

Source kodas rodo dvigubą datą: 1993 ir 1995 metus. Kadangi rašyta ant dviejų kompų (A500 ir A1200) tai yra didelė tikimybė, kad softas gali būti ir 1993 metų. Tik jis paskelbtas 1995.

Boulder Dash

Nu, bent jau prie labirintų žemėliapių parašyta tiktai senesnė data:

Boulder Dash

Gaila, neišliko mano rašytas ATARI kompiuko softas… 🙁 nebuvo tada interneto.

PHP programavimas: vienas iš mano tiesioginių darbų

Kartais nuo karto klausiat ką aš dirbu ne poilsio metu. Vienas iš mano darbų yra web programavimas. Paskutinis, dar nepabaigtas projektas tai UAB Vitra TVS (CMS) su prekių žinynu. Programos nuo nulio nerašiau- kaip pagrindą panaudojom kažkokį komercinį produktą kurį buvo nupirkusi kompanija. Tačiau ta sistema visiškai morališkai paseno, o “gamintojai” pradėjo šnekėti apie kažkokius kosminius skaičius. Teko pasinagrinėti svetimą kodą ir gana stipriai jį perrašyti. Taip gavosi tokia pusiau CMS, pusiau prekių katalogas.

Vitra.lt

Kadangi jau beveik žinau ką daro kiekvienas kodo pirstelėjimas, dabar labai lengva tobulinti sistemą. Ypač kai įdėjas laikas nuo laiko pageneruoja bendradarbiai. “Dizainą” tikrai pats nedariau, čia paprasčiausias free template. Tačiau CMSas lengvai apvelkamas bet kokiu drabužėliu.

Emailų markutės

10 ct markuteLabai jau užknisa spamas. Tikrai užknisa. Su užsienietišku spamu apie pimpalų prailginimą galima kovoti naudojant gana efektyvias Spamassassin priemones. Tačiau su Rusišku ir Lietuvišku spamu jau kovoti žymiai sunkiau. Ypač užknisa, kad Lietuviškas spamas labai neefektyvus ir jo siuntėjai yra visiški debilai. Tokių debilų kontora yra “Office System” iš Vilniaus. Jie siuntinėja 180…230 kilobaitų paveiksliuką su kažkokiu pasiūlymu… Kadangi jie proto neturi, o ir seimūnai nuo šių metų pradžios iteisino spamą, tenka griežtinti elektroninio pašto taisykles. Todėl, jei man rašot laišką iš kokio užspaminto domeino, ypač iš kokių nors Rusiškų webmailų, padidėja tikimybė, kad jūsų laiškas paprasčiausiai automatiškai bus ištrintas jau serveryje, o jūsų SMTP serveriui bus pranešta, kad tokio emailo nėra ar iš viso, kad pašto serveris neegzistuoja. Prasimušti per šį bloką labai sunku. Tačiau yra labai paprastas sprendimas- naudokite pašto ženklus- markutes. Šiuo metu Savel Paštas išleido į apyvartą nemokamas 10, 25 centų ir vieno lito vertės pašto markutes. 🙂
Kad pasinaudoti šiomis markutėmis, tereikia jas perkopijuoti į laiško temos (Subject) laukelį. Užtenka kad ir temos gale įkopijuoti markutę, ir jūsų elektroninis laiškas gaus spamassassino neigiamų taškų. Rašant iš paprastų emailų dažniausiai užtenka priklijuoti 10ct markutę, tačiau jei rašote iš kokio nors nuvalkioto Rusiško webmailo ir dar rusiškom raidėm, gali prireikti 25ct ar net vieno lito pašto ženklo…
Pašto ženklai riboto galiojimo laiko. Todėl prašom nenaudoti senų pašto ženklų. Šiuo metu galioja šie pašto ženklai:

[Markute10c]
[Markute25c]
[Markute1Lt]

Gal toks metodas paplis 🙂

Spamassassin pluginas FromTo

Pradėjo mano serveriuką atakuoti spamas kuris siūlo pasiilginti savo šlangą keliais centimetrais. Kiek žiūrėjau, pats spaminis tekstas skiriasi kiekviename laiške. Pilnai skiriasi, o ir tiesioginio “penis enlargement” nėra paminėta. Viskas parašytas alegorijom- tai smauglys, tai gyvatė, tai šlanga, tai gyvis.. ir panašiai. Tiesiogiai spamassassin taisyklės kaip ir nėra galimybės parašyti.Tačiau yra vienas bendras dalykas tuose laiškuose- gavėjas ir siuntėjas sutampa. T.y. “FROM:” ir “TO:” laukelis tas pats. Kaip ir laiškai rašyti sau pačiam.
Pasiknaisiojes internete nieko gero neradau. Todėl pasinaudojau paprasto plugino source code ir parašiau pluginą, kuris paprasčiausiai sulygina tuos du laukelius.

Pluginas ir konfiguracinė eilutė šiame ZIP faile: FromTo Spamassassin plugin

Kadangi kodas labai paprastas, bet kas gali pasimodifikuoti source, kad būtų atliekamas net tik “FROM” = “TO” tikrinimas, bet ir “REPLYTO” ir koks nors “envelope”…
Nu ir standartinė atmazkė: use at your own risk.

Mygtukai analoginiam įėjime

Viskas prasidėjo nuo to, kad asmuo kodiniu vardu “Miltukų Meistras” sudaužė vieną Kinietišką prietaisiuką, o aš ji norėjau dar panagrinėti… Čia aišku nepalyginamas dalykas su žmogaus kodiniu vardu “Taupytis” poelgiu, kai norėdamas pažiūrėti kokios spalvos stiklas, jis atsipjovė su kampiniu šlifuokliu plazminio teliko ekrano gabalą… Dar veikiančio teliko…

O dabar esmė- daugelyje prietaisu yra grupės mygtukų. Dažnai mygtukai būna ir megėjiškuose prietaisuose su mikrokontroleriais (MCU). Tam tikslui naudojamos vertingos mikroprocesoriuko kojos. Jei grupė mygtukų, jie jungiami į matricą ir naudojamas dinaminis klavietūros skanavimas. Tuo tarpu, kieme jau 21 amžius ir daugelis MCU turi analoginius įėjimus. Ir daugelyje pramoninių prietaisų (magnetolos, CD grotuvai, radiojos, MP3 grotuvėliai, LCD monitoriai, elektroniniai laikrodžiai) jau seniai naudoja analoginį mygtukų valdyma. Minėtas sudaužytas prietaisas turėjo štai tokį mygtukų pajungimą:


(čia realaus prietaiso schema. Kodėl parinkti tokie rezistoriai aš nežinau)

Kaip matome, šeši mygtukai pajungti prie vienos MCU kojos. Šiaip prietaisiukas turi 3 analoginius valdymo įėjimus. 3 duomenų laidais pajungta 16 mygtukų. Naudojant grynai skaitmeninį pajungimą reikėtu žymiai daugiau MCU laidelių ir daryti ganėtinai sudėtingą ir resursų naudojantį algoritmą.

Pabandom suvesti skaitmeninio ir analoginio valdymo pliusus ir minusus (šios konkrečios schemos):

Analoginis valdymas:
(+) vienas MCU laidas
(+) lengva pajungti kiek toliau išneštą klavietūrą (rezistorius lengva prilituoti prie mygtukų)
(+) lengvas softas- analoginis signalas gali generuoti pertraukimą arba galima viena komandą nuskaityti klavietūros būklę.
(+)nėra kontaktų “kibirkščiavimo”
(-) reikia ADC
(-) reikia skirtingų rezistorių 🙂
(-) negalima daryti akordų (tiesa galima panaudoti binarinį kodavima su 2^n kodavimu)
(-) reikalingas Vref (tiesa jis gi pas MCU būna)
(-) galbūt jautrus trukdžiams? Ar blogiems mygtukams?

Skaitmeninis valdymas:
(+) yprastas
(+) daug softo
(+) galima akordai (nevisada)
(-) reikia daugiau MCU kojyčių
(-) reikia kovoti su kontaktų drebėjimu
(-) daug laidų iki klavietūros
(-) softas ėda daug MCU laiko, jei reikia dinaminio skanavimo

Malonu būtų išgirsti mintis ir komentarus.

Backscatter mail išpuolis

Pentadienį pastebėja neįprasta veiklą mano pašto dėžutėje ir pašto serveryje. Kaip nepastebėsi, kai pamatai pranešimą, kad gavai kokius 3000 naujų laiškų. Ir laiškų kiekis didėja akyse. 99.5% laiškų- pranešimai, kad mano siustas laiškas nepraėjo. Panagrinėjus giliau, paaiškėjo, kad “mano” laiškas kvietė pažiūrėti tokios pornografijos, kokios dar niekas nematė… 🙂 Ir nuoroda į imageshack serveriuose esanti flash paveiksliuką. Nežinau, kokia ten gera pornografija buvo, bet kad tai virusas tai jau tikrai. Vienintelė bėda, kad virusas siuntinėjo laiškus su mano atgaliniu adresu. Gal naudojo ir kokius nors dar kitokius- nežinau. Bet kad naudojo mano tai tikrai žinau 🙂 Aš net neįsivaizduoju kiek buvo išsiusta laiškų, bet visi laiškai kurie nerado adresato ar buvo užblokuoti kokios nors antispam sistemos parvyko pas mane. Gerai, kad laiškai ėjo tolygiu srautu ir nebuvo labai dideli. Aš teoriškai paskaičiavau, kad gavau apie 600Mb pašto per vieną parą. Kad apsisaugoti nuo įkyriu pašto serveriu teko pakoreguoti spamassassino taisykles, kurios melavo serveriams, kad tokio vartotojo iš viso nėra. (Standartinis assassino bouncer tikrintojas nepadėjo).

Čia jums situacijos iliustracija:

Backscatter schema

Dabar (šeštadienį), atrodo virusas buvo užgniaužtas pačio imageshack sistemos ir kitų tarnybų. Dabar gaunu tik keliasdešimt laiškelių per minutę. Tikiuosi protrukis greit nurims.
Šitas efektas anglų kalboje vadinamas “backscatter” mail.

Pagaučiau aš tą viruso kurėja, tai tokia pornografija jam padaryčiau… geriausiu atveju nuraučiau kiaušius.

Kodekų debuginimas: GraphEdit

Kaip sužinoti, kokius kodekus ir filtrus naudoja windows kompiuteris kad parodyti vieną ar kitą failą? (video ar garso). Kaip patiuninti tu kodekų ir filtrų parametrus? O gal išviso, kaip pratestuoti, gal tas kodekas blogesnis už kitą. Tam reikalui Microsoftas turi gana įdomų įrankį. Oficialiai, šis utilitas paslėptas Direct X 9.0 (ar kitos versijos) SDK, bet internete yra mažytė, išgryninta versija. Paieškos sistema naudotis tikriausiai mokate- raktinis žodis “GraphEdit”.

Štai keletas iliustracijų, kaip WindowsXP operacinė virškina skirtingus media failus. Tai screen shotai, jie gana dideli, todėl dedu panažintas ir normalias versijas.

Pirmas failas: tiesiai iš skaitmeninės kameros nukrautas failas. Kamera rašo DV formatu.
GraphEdit
(spausti ant paveiksliuko, kad pamatyti didesnį).
Kad groti šį failą naudojamas vienintelis DV video dekoderis. Garsas tame faile nokompresuotas.

Antras failas: filmas koduodas su DivX serijos kodeku. Garsas MP3.
GraphEdit
Kaip matosi, aš naudoju nemokamą ffdshow kodekų “rinkinį” ir kažkodėl “Moonlight Odio” dekoderį.

Trečias failas: muzikėlė kompresuota su windows media (wma išplėtimas).
GraphEdit
Naudoja kažkokį WMAudio decoderį. Beja, visus kodekus ir filtrus galima reguliuoti ir tiuninti- užtenka paklickinti ar jų su pelyte. Taip pat galima pasinaudoti kitu kodekų ar įrenginių. Tik ne visi įrenginiai jungiasi vienas su kitu. Teoriškai, galima kai įėjimo įrenginį paimti TV tiunerį ir žiūrėti programą be jokio TV tiunerio softo.

Ketvirtas failas: standartinis MP3 failiukas. Taip ji grotu Windows sistema, jei aš pats negročiau jų per winampą.
GraphEdit
Čia matosi kad mp3 failas dalinamas į MPEG streamus (čia jų tik vienas), tas streamas sumaitinamas tam pačiam Moonlightui ir toliau grojamas per įrenginį “Direct sound device”. Jei čia pakabinti kietą diską, jame atsirastu nesukompresuotas PCM failas.

Penktas failas: Čia jau kiek egzotiškesnis, DVB-T transportas (įrašytas į diską).
GraphEdit
Paskutiniu metu aš naudoju ffdshow šiems failams, o kartais naudojų komercinį AVC kodeką.

Šeštas failas: Dar didesnė egzotika- matrioška.
GraphEdit
Matrioškoje dažnai būna keli garso takeliai ir titrai. Šiaip matrioška leidžia pridėti daug garso, video ir tekstinių takelių. Šiaip tai gana universalus konteineris. Jis nėra populiarius tarp paprastu divx filmų, tačiau kažkodėl labai populiarus tarp multikų megėjų. Gal todėl, kad daug multikų būna japoniški ir jiems reikia subtiktrų?
Šis failas ardomas į tris srautus, video ir audio dekoduoja ffdshow, tekstinį srautą apdoroja “DirectVobSub” kuris generuoja titrus ir “uždeda” juos ant video vaizdelio.