Archive for June, 2007

40

Tuesday, June 26th, 2007

Via VH1 – 40 greatest internet superstars: Mr. pregnant

Sapulces padara tevi stulbāku

Monday, June 18th, 2007

Ejot uz sapulci, vērtīgi atcerēties, ka sapulces padara mūs stulbākus. Man gan ir mazliet savādāka teorija, nekā rakstā minētā: nepareiza dalībnieku izvēle un paļaujoties uz to, ka kopā izdosies atrast risinājumu, katrs indivīds nedomā tik intensīvi kā to darītu vienatnē. Tieši tāpēc, pirms uzmākties citiem ar savām problēmām, ir vērtīgi padomāt vēlreiz, mēģināt noformulēt problēmu uz papīra, notepad vai izstāstīt kādai mīkstajai rotaļlietai. Man tas palīdz.

OTL: I’m coming after you!

Monday, June 18th, 2007

Izlasot On Lisp, man prātā palika kāda doma kāpēc Lisp un Lisp hakeri ir tik kruti: labākie hakeri problēmu risināšanai veido augsta līmeņa, problēmas domēnam specifisku programmēšanas valodu un Lisp ļauj viņiem to izdarīt. Arī citas programmēšanas valodas ļauj izveidot tādu abstrakcijas līmeni (ja autors pacenšas), bet Lisp tas iznāk daudz elegantāk un neatšķiras no valodas iebūvētajām konstrukcijām. Pēc grāmatas izlasīšanas cenšos savādāk skatīties uz koda rakstīšanu: vairāk domājot nevis par to, kādu API var piedāvāt zemākais līmenis, bet gan kā vajadzētu izskatīties augstāka līmeņa kodam, un tad rakstot API, kas to nodrošina.

Spēlējoties ar OCI, atklāju OTL streams un man ideja iepatikās, tikai realizācija gan nē. Pretstatā daudzām citām SQL bibliotēkām, šī ļauj nedomāt par prepare/bind/execute/describe/fetch soļiem. Un ļauj nedomāt par lietām, ko programma var izdomāt pati – visādu setDouble()/setString()/utml. izsaukumu vietā programma pati var noskaidrot paramteru tipu un izmēru. Bibliotēka ir vērtīgāka tad, ja tā ļauj rakstīt augstākā abstrakcijas līmenī, nevis tikai noslēpj dažus API izsaukumus. Man atlika atrast brīvu laiku un savam iepriekšējam, Tuxedo orientētajam, darbam pievienot papildus stream interfeisu (tas nebija triviāli) un ieguvu kaut ko līdzīgu OTL ar bulk operācijām zem interfeisa:

DbStream s("SELECT name, value FROM something WHERE id = :id");
s << 14;
while (s) {
    s >> name >> value;
}

Un tas tikai ~1500 koda rindiņās, nav slikti. Vēl jāuzraksta vairāki vienībtesti un tad lēnā garā metīšu ārā kādus 95% PRO*C koda, aizstājot to ar 2-3 reizes īsāku. PRO*C ir forši, bet tā pre-kompilēšana, nepieciešamība uzturēt DB kompilēšanas vajadzībām un boilerplate kods, kas jāraksta bulk operācijām, nogurdina. Oracle C++ Call Interface, diemžēl, ir pārāk zaļš: XA tie uzturēts tika sākot ar versiju 10g, “RETURNING” vispār nav, tādēļ nācās kādu laiku pavadīt OCI dokumentācijā – perversi.

666

Friday, June 15th, 2007

Š odien es atradu pierādījumu, ka skaitlis “666″ ir ļauns. Statement.cpp 666. rindiņā programma izkrīt skaļi lamādamās par free() un nederīgu rādītāju. Kā izrādās, MALLOC_CHECK_ vērtība pēc noklusēšanas ir 3 un mans ekrāns ir pilns ar hax0rīgām atmiņas bloku izdrukām.

Nākošais neloģiskais eksperiments: vai kļūda pazudīs, ja kodu pārvietošu uz 667. rindiņu? Tāpat kā daudzās viesnīcās nav 13. numuriņa vai celtnēs nav stāva ar nosaukumu “13″, arī kodā 13. un 666. rindiņu vajadzētu atstāt tukšu. Un drošības labad ievilkt trīs krustus, lai ļaunie dragoni netiek iekšā.

C.S.I.

Thursday, June 7th, 2007

Par attiecīgu samaksu es varētu vismaz divas reizes uzlabot C.S.I. pirkstu nospiedumu un sejas atpazīšanas programmatūru, lai viņiem nav jāgaida tik daudz stundas vai pat dienas. Vajadzētu pietikt ar visu nospiedumu un fotogrāfiju nerādīšanu uz ekrāna.

Linus and Git

Monday, June 4th, 2007

Linus stāsta par Git Googlei. Manuprāt, ir vērts noskatīties šo video. Lai arī Linusa viedoklis ir diezgan radikāls, tajā ir daudz patiesības. Daudziem argumentiem saknes atrodamas izstrādes metodēs, ko atbalsta Linus. Tas ir: programmētāji izmaiņas veic savos zaros (branch), bieži saglabā izmaiņas un beigās tās pārnes uz galveno zaru vai izmet ārā. Zaru un dalītās sistēmas priekšrocības ir tādas, ka jebkurš var izveidot savu repozitāriju, veikt tajā izmaiņas nekaunoties/nebaidoties no kritikas, nebaidoties salauzt kompilēšanās procesu vai pašu programmu.

  • Git ir nevis failu satura atsekošanas programma, bet gan projekta satura atsekošanas programma – izmaiņas tiek atsekotas projekta, nevis faila līmenī. Š ī pieeja nodrošina gan efektīvu diska vietas izmantošanu, gan ātrdarbību.
  • Versiju kontroles sistēmai ir svarīgi nodrošināt efektīvu zarošanos (branching), bet daudz, daudz svarīgāk ir nodrošināt zaru apvienošanu (merge).
  • CVS dēļ efektīvas zarošanas trūkuma sūkā.
  • Subversion sūkā, jo zarošanu padarīja ātrāku, toties zaru apvienošana, sevišķi vairākkārtēja, joprojām sūkā.
  • Pat Linux kodola sākotnējā “versiju kontrole sistēma” manuāli darbojoties ar *.tar.gz failiem un patchiem bija daudz labāka par CVS.
  • Ja kādam patīk lietot CVS, tad viņa vieta ir Tvaika ielā.
  • Subversion ir bezjēdzīgs projekts, jo viņu uzstādījums bija “labāks CVS” jeb “salabots CVS”. Nav jēgas uzlabot CVS, jo tas risina nepareizo problēmu.
  • Ja tu nepiekrīti Linusam, tu esi stulbs un neglīts – fantastiski, turpmāk neziņas brīžos izmantošu šādu argumentāciju.

Re: Less code

Friday, June 1st, 2007

Es pats jau iepriekš rakstīju par koda nerakstīšanas tēmu, tagad šī doma atkārtojas arī manā Google Reader: If you love writing code– really, truly love to write code– you’ll love it enough to write as little of it as possible.