yeti vs. mersultrenurilor.ro

Există site-ul ăsta, mersultrenurilor.ro, care este practic o interfață nouă, umană și bună (în comparație cu infofer.ro, care e urât, ne-prietenos și pe care nu te poți baza) pentru mersul trenurilor. Nu îmi este exact exact clar cum obțin informațiile (mersul trenurilor este o informație publică prin natura ei), dacă le obțin de la diverse agenții (mă îndoiesc) sau parsează conținuturi de pagini de la infofer și își fac o bază de date a lor, copie fidelă a bazei de date infofer.

Mie mi-a surâs foarte mult ideea, pentru că algoritmii pe care îi aplică site-ul oficial pentru calcularea rutelor sunt efectiv varză (adica dacă ai de schimbat, îți arată mii de legături, nu doar cele mai bune), și interfața lor lasă puternic de dorit. Mai mult, nu ai cum să integrezi informația de la infofer în altă aplicație. Așa că am crezut că, dacă oamenii ăștia au „eliberat” baza de date a CFR Călători or nu or să repete greșeala celor de la infofer de a obliga utilizatorii să folosească interfața lor. N-a fost așa :|.

M-am gândit să le scriu un mail, să le zic de posibilitatea asta extraordinară de a dezvolta ceva deosebit, dar nu aveau mail de contact pe site, doar formular de pus comentarii. Așa că am pus comentarii, mai ales liniștit că dacă nu vor să-l publice aveau moderare și cineva îl citea. Uite ce le-am scris:

Salut,

Avand in vedere ca oferiti aceeasi informatie ca si infofer, doar ca voi o faceti liber, aveti posibilitatea extraordinara sa implementati un SERVICIU WEB si sa deschideti baza asta de date (care oricum ar trebui sa fie publica, dar deh, nici nu vreau sa stiu ce calificare au oamenii lor pe tehnica / informatica) catre servicii terte.

Sunt sigur ca s-ar putea gasi o solutie pentru gazduire, dar ati putea pune baza unui serviciu mai mult decat util pentru foarte multe companii (agentii de turism, diverse site-uri). CFR nu prea are ce actiune sa ia impotriva unei treburi de genul asta, pentru ca in orice societate ne-inapoiata, EI ar trebui sa fie cei ce fac asta.

Am constatat cu placere ca nu aveti reclame pe site, deci nu o faceti pentru bani, si va felicit si va respect pentru asta. Sugestia mea ar fi : porniti un proiect OpenSource, lasati lumea sa vina sa va sprijine! ;)

Și uite ce răspuns mi-or tras:

[RASPUNS] : Multumim. Dar pana la urma e munca 8ore/zi a unor oameni si nu poate fi open source.

GRRRRRRR…. mi se pare incredibil, o dată să ai idei așa bune, să le duci la implementare și să nu înțelegi avantajul OpenSource, și după aia să mai faci și pe șmecheru ca ui la ei cât lucrează și cum adică să dea și la alții.

Concluzia e că m-am supărat pe atitudinea asta și m-am hotărât să fac eu produsul opensource care să fie integrabil în alte aplicații, cum ar fi deskbar applet-ul meu de gnome :P, un serviciu web și de ce nu o aplicație pentru agenții de turism din țară și nu numai. Dacă este cineva interesat să dea o mână de ajutor, poate dăm lovitura și ieșim la pensie la 25 de ani! O să postez aici diverse update-uri în legătură cu starea aplicației.

Cea mai buna șaorma de când mă știu

[Pentru puținii oameni care intră aici și nu mă cunosc, trebuie să menționez că sunt gurmand :)]

Am luat acum câteva zile (joi, dacă nu greșesc), în grabă, în drum de la CS.PUB la sediul ONCR, o șaorma de la APACA (nu de la colț de acolo de la Alex Calm, unde au și patiserie, ci de la turc, un pic mai spre facultate). La șaormărie îi zice Helin (sper să nu greșesc), dar toată lumea o știe drept „la turcu’ ăla la APACA”, și am mai mâncat acolo, dar nu mi s-o părut neapărat grozavă (mai bună ca în regie, dar nu grozavă).

Dar joi, am luat o șaorma direct de la turcu bătrân și o fost EXCEPȚIONALĂ. O fost și foarte glumeț când o făcut-o, am chiar simțit așa că pune omu suflet în șaorma aia. Și după aia, m-am apucat să o mănânc, pe drum spre 336, și efectiv m-o lovit cât de bună era și am stat aproape 2 minute la trecerea de pietoni să mă gândesc dacă să stau să o termin și să îmi mai iau una sau nu. (n-am mai stat, că era târziu, dar am regretat și am vrut să mă întorc după).

Recomand șaorma de la turcu de la APACA :P

AVR plugin pentru Eclipse

De când am făcut marea trecere pe linux, găsesc tot mai multe tooluri la îndemână pentru lumea noastră, a geek-șilor, și tot mai puține pentru lumea ailaltă, știți voi, aia reală. Totuși, nu pot decât să mă bucur când găsesc ceva să-mi simplifice task-urile … creative.

Acum un an am avut o materie numită Proiectarea cu Microcontrollere (sau așa ceva, ideea e că numele de cod este PM), unde, pentru prima oară în 4 ani (atunci) de școala trebuia să construim noi un dispozitiv. Ideea e că am fost puși față în față cu seria ATMega de la Atmel, și ni s-au dat pași concreți spre realizarea unei chestiuțe care să chiar MEARGĂ. De atunci, toate planurile de world domination includ cel puțin un ATMega :).

Anyway, post-ul ăsta există pentru că am găsit ceva util. Procesoarele AVR au mai multe feluri de programatoare (și chiar de Debuggere real-time), există plăci de dezvoltare and stuff like that. (AVRFreaks este site-ul recunoscut ca cea mai bună sursă de informații :P). Îs enșpe mii de variante de procesoare, care se folosesc destul de larg în orice „home brewed” device. Anul trecut, ca să le programăm, sub Windows, trebuia să scriem sursa cumva, să facem un Makefile (care era oarecum complicat, din ce țin eu minte) și să folosim un soft (PonyProg) ca să încărcăm proiectul pe procesor.

Există destul de multe tool-uri pentru lucrul cu AVRuri (WinAVR are și un IDE integrat, am înțeles că există ceva numit CodeVision, mai sunt), dar eu n-am reușit să le fac să-mi meargă pe Windows (parțial pentru că nu există suport pentru programatorul neavansat pe care îl folosim noi, parțial pentru că eram prea tăntălău). Tool-ul general preferat de mine, din anul II, de la tema cu bridge-ul (prietenii știu de ce) este Eclipse, care e extrem de configurabil și sunt sigur că măcar compilarea se putea rezolva de „mână” și înainte.

Dar acum nu mai e nevoie. Există plugin-ul ăsta super, care este construit peste pluginul CDT (partea de C/C++ a Eclipse) și are niște unelte de compilat automat, uploadat pe device direct cu avrdude. Am vazut că avrdude există și pe Windows, deci nu văd de ce tool-ul ăsta n-ar merge la fel de beton cum îmi merge și mie pe linux. Am avut plugin-ul instalat și pe Windows, da nu m-am simțit împins nicicum să-l fac să meargă.

Am găsit prin avrfreaks doua link-uri cu cum să-l aranjezi să-ți meargă (trebuie setat programatorul fizic ce se folosește, noi am folosit SI-Prog, dar am văzut că acum se face la PM o treabă pe USB care nu știu exact cum funcționește … încă!). De ce ar face cineva tutoriale pentru oameni tehnici în format video n-am înțeles, așa că pe scurt despre ce trebuie să faceți să vă programați ATMega-ul dintr-un foc (*credit-ul pentru indicații merge la baieții din link-urile de mai sus, eu doar încerc să-l fac un pic mai cursiv, pentru oameni nerabdători ca mine :P):

1. Vă trebuie compilatorul (avr-gcc), și alte câteva jucării (avrdude e downloader  / uploader, libusb trebuie dacă folosiți un device care se programează pe USB, avr-libc e biblioteca standard)

sudo apt-get install binutils-avr, avr-gcc, avr-libc, avrdude, libusb

Cred că pachetul ăsta se numea altfel mai demult (gcc-avr), dar mie cu ăsta mi-o mers

2. Vă trebuie Eclipse (recomand 3.4, dacă nu aveți motive serioase de a rămâne la 3.3) și CDT >= 4 (eu îl am pe ultimu stable de la Ganymede)

3. Instalați plug-in-ul AVR (care are site de update pentru Eclipse, just add the site to the Eclipse sources list .P)

http://avr-eclipse.sourceforge.net/updatesite/

4. Faceți un proiect C nou în Eclipse, alegeți AVR Cross Target App, Alegeți Toolchain-ul cu avr-gcc (dacă mai aveți și altele), alegeți tipul de device și frecvența (ATMega16/32 au o frecvență bazată pe un oscilator intern, la 1MHz. La PM am învățat cum să-l ducem la maximul potențialului, cu un cristal de 16MHz – trebuie setate niște fuse-uri prin el).

5. Windows > Preferences > AVR > AVRDude. Bifați chestia aia cu Log output to console dacă vreți să vedeți ce face (recomandat). Adăugați o configurație nouă, în funcție de programatorul vostru (avrdude are suport pentru o gramada de configurații, eu folosesc cea mai simplă, probabil, SI-Prog.). Poate e o idee bună să îi spuneți acolo și ce port serial folosiți în cazul în care mai programați pe serială :).

* Pașii 4 și 5 sunt independenți și interschimbabili

6. Project > Preferences > AVRDude > alegeți configurația pe care tocmai ce ați salvat-o.

7. Project > Preferences > C / C++ Build aveți o opțiune Additional Tools in Toolchain, ar trebui să aveți selectat AVRDude și Generate HEX file for Flash Memory cel puțin selectate. Eu am selectat și Print Size și Generate Extended Listing (deși nu știu exact daca nu-s numa chestii de raportare și nu de programare efectiv)

8. Tot acolo aveți posibilitatea să configurați comanda către avrdude (dacă nu îl aveți în path sau dacă aveți nevoie de drepturi de root să folosiți portul pe care vreți să-l folosiți, tipu de la care preiau chestia asta o pus un sudo avrdude acolo. Eu mi-am modificat permisiunile pentru serială)

9. (Recomandat) Setați nivelul de optimizare la AVR Compiler la -Os (size optimization)

10. La următorul build, dacă aveți legat controllerul în programator, avrdude o să descarce hex-ul în controller.

Mai sunt niște viewuri pe-acolo pe care le puteți folosi, și este un buton direct de upload pe device (care pe mine mă enervează că se pune acolo sus in bară și la alte viewuri decât ale pluginului ăstuia)

Utilizare port serial în aplicație Java pe Linux

Am nevoie să fac o conexiune pe un port serial din Java, și să comunic both ways prin el. (Eu sunt fericitul posesor al unui laptop generatie relativ noua (Dell Latitude 820) care are inca port serial – si ce bine ca are!). Am googălit puțin, și aici este o soluție, pentru arhivă (pe ubuntu 8.10 x86_64):

Se instalează pachetul oamenilor astora:

sudo apt-get install librxtx-java

Mai trebuie luat, de pe același site, RXTXComm.jar, în funcție de versiunea de rxtx care o are ubuntu vostru în repo (eu am 2.1.7.4).

Apoi, ca să-l folosiți în Eclipse, puteți să urmați ghidul de la ei de pe site. Traducere, pe scurt: adăugați JAR-u în class pathul proiectului, dați click pe el ([+] expand), setați native library location la  /usr/lib (la mine), și proiectul vostru are puteri seriale :P. Este la ei pe site exemplu de cod suficient cât să te apuci de treabă.

Getting shut out of my Windows / Opening up to a new World

Toată povestea asta începe cu ziua când, după ce am dat super examenul la IE, micvs și cu mine am decis să ne schimbăm sistemele de operare. El, din Ubuntu în Vista 64, eu din WinXP în Ubuntu 64. Bine, ideea era așa, un test, să vedem cum merge, dar dacă tot m-am regăsit în Ubuntu, am zis ce-ar fi să redimensionez eu partiția mea NTFS de Windows să o fac un pic mai mare, că și așa n-am nevoie de 40 de Giga pe Ubuntu. Allright, zis și făcut. 5 ore de redimensionat partiția de NTFS, restart, surpriza! Pentru că probabil s-or rescris descriptorii partiției în MBR după redimensionare, Windows acuma se credea instalat pe C:\, deși el era instalat pe F:\. Normal, no more boot, no more Windows.

Am încercat să-l lămuresc eu, am citit mult și bine despre cum se poate și ce se poate face, să repari chestia asta. Vă spun imediat ce am reușit, dar ce contează e că în timp ce foloseam Ubuntu ca să mă documentez și mai instalam câte o chestie, două în el, și am reușit să găsesc metode să trec peste problemele care îl făceau enervant pentru mine și, acum, după 3 zile (vă zic, nu-i așa simplu să găsești documentație pentru problema ce-am avut-o eu :P) sunt destul de hotărât să trec, într-un final, pe Ubuntu ca sistem de operare principal. Mai mult despre aventurile mele în ultimele 3 zile mai încolo. Postul ăsta este de fapt despre cât de prost îi Windows la chestii simple, și despre ce să faceți dacă pățiți ca mine :)zu

Situația pre-dezastru

Aveam un Ubuntu 7.04 (updatat între timp la 8.10), deci un ext3 și un swap. swapu era evident, standard, într-o partiție extinsă. Când am instalat XP-ul, am redimensionat partiția primară a linuxului și i-am făcut loc între linux și swap. Windows a văzut partița ca discul F: și așa a rămas (C, ext3u, D, swapu, și E, cdrom-ul – cred).

Problema

Am micșorat partiția ext3, în setup-ul pentru Ubuntu amd64, și am lăsat spațiu între ea și partiția ntfs a windows-ului, apoi, din proaspătul instalat Ubuntu, am rulat GParted (am încercat inițial cu Partition Magic din Windows, dar fiind partiția activa o refuzat să ruleze), și am redimensionat partiția ntfs la stânga (ceea ce implică și o deplasare). De menționat că îți trebe musai ntfsprogs ca să faci trăznăi pe ntfs din GParted.

Când am repornit windows-ul, partiția mea F: era acum C: și, Windows-ul nu mai știa să pornească (ajungea chiar înainte de login!). Am citit toate forumurile posibile, și am aflat o gramadă de sfaturi utile la tot felu de oameni în probleme asemănătoare cu a mea, dar nici unul util pentru mine. Totuși, niște chestii interesante.

  • Windows nu folosește la boot litere de partiții. La boot are un fișier special, boot.ini, unde partițiile sunt definite pretty much ca in linux, adica o adresare de tipul hard/partitie. Drive letter assignment este ținut în regiștrii (se înregistrează id-ul partiției la litera asociată). Dacă id-ul partiției se modifică sau ceva se schimbă și îi dă cu virgulă, Windows decide să facă o reasignare instant pornind de la C: (ceea ce am pățit și eu)
  • Practic, se pot edita regiștrii Windows, dacă reușești să te loghezi (se pare că sunt cazuri în care ajungi să te și loghezi), sau, poți să-i modifici chiar din Linux, dar tre să știi ce faci (și atenție copii, că regiștrii îs tot ce contează în windows, dacă cineva vine cu un livecd vă poate faulta. Sugestia mea, întotdeauna să aveți parolă pe boot :)
  • GParted se mișcă în direcția în care problema asta nu o să mai existe
  • Există un utilitar pe RecoveryConsole-ul de la WindowsXP, BOOTCFG cu care se poate modifica fișierul boot.ini, și regenera în cazul în care se strică sau devine corupt
  • Vista știe să repare cu DVDul de instalare default problema asta (nice)
  • WindowsXP are posibilitatea de a se reinstala (face un soi de Recovery, zice el) dacă bagi exact cdu ăla în unitate (adica acelasi produs, nu neaparat același CD fizic – contează dacă-i SP2, dacă-i varianta pentru MSDNAA, dacă ii Pro sau Home …) în care practic își șterge toate fișierele lui și le pune la loc și rescrie regiștrii. Eu am văzut în chestia asta scăparea mea (și cred ca era) doar că, dintr-un motiv bizar, când am ajuns să bag Keyul de la MSDNAA, Windows Setup nu îmi vedea tastatura, de loc. Am încercat de două ori, și am renunțat.

Soluția mea finală: move to Ubuntu, Windows can get screwed to fast, to unexpectedly. Totuși, dacă nu aveam problema cu tastatura (care presupun că a fost cauzată de ceva problema cu drivere gata instalate) puteam să îmi bootez windows-ul. De acord, îl butam în C: nu în F:, dar apoi puteam trece la șmecheriile cu regiștrii și eram home safe. Cred că unui user de desktop i-ar fi mers.