Dziesmu spēlētājamie, attālinātā vadība, Symbian
Nov 14, 2005
Tātad, pirms 3 dienām bija tā - gulēju gultā, skatījos griestos un domāju, cik tomēr forši būtu gulēt gultā un operēt ar datoru. Ienāca prātā pamēģināt uztaisīt, lai no telefona var kontrolēt mūzikas spēlējamo datorā. Biju lējis siekalas par laacz parādīto ControlFreak un gribējās ko līdzīgu.
Manam datoram nav Bluetooth, tāpēc Bemused arī atkrīt. Drusku žēl 20 latu tādam mazam Bluetooth nieciņam. Varbūt kādreiz.
Tātad, pirmais piegājiens. rhythmbox --help
atklāj, kā no komandrindas pārslēgt iepriekšējo/nākamo dziesmu, un regulēt skaļumu. Ar ssh port forwarding izlienu caur ugunsmūri, lai pie mana datora varētu pieslēgties no ārpasaules. Uzinstalēju telefonā PuTTY, pieslēdzos pie kompīša, veiksmīgi pārtinu dziesmu. Un tad vēlvienu. Un vēlvienu. Caur SSH, protams, ar datoru var izdarīt praktiski jebko, vienīgā problēma - ļoti neērti telefonā klabināt iekšā tās komandas.
Tarā - otrais piegājiens. Ideja - uztaisīt, lai mūzikas spēlējamo varētu kontrolēt no pārlūkprogrammas telefonā. Izmantojot HTML, varētu ātri un vienkārši uztaisīt krietni ērtāku saskarni par komandrindu. Izpētu, ka Rhythmbox ir diezgan trūcīgas iespējas kontrolēt no ārpuses, bet ar XMMS gan var darīties visvisādi. XMMS turklāt ir pieejami Python bindings, tā ka ar to darboties ir pavisam ērti. Uzrakstu PHP skriptu, kas ļauj pārtīt iepriekšējo/nākošo dziesmu, mainīt skaļumu, rāda fragmentu no dziesmu saraksta izceļot patlaban skanošo un piedāvā "Quick Jump" - ievadot teksta gabaliņu, atfiltrē dziesmas, kuru nosaukumos tas ir atrodams. Ar šo ņēmos sestdien līdz pustrijiem naktī. Toties svētdienas rītā, guļot gultā, atvēru lapu telefonā un slēgāju dziesmas, griezu klusāk/skaļāk un priecājos. Izskatās šādi:
Nākamais solis būtu uztaisīt, lai dziesmu pārtīšanai ir glītas podziņas, skaļumam - skaļrunīša bildīte, visādi rāmīši un pustoņu pārejas - varētu sataisīt, ka izskatītos ne sliktāk kā tas pats ControlFreak. Bet - viss paliktu lēnāks, un, galvenais, dārgāks (dati nāk pa GPRS). Un, negribēsies katru reizi, lai pārtītu dziesmu, vērt vaļā pārlūku. Vajadzētu īstu Symbian programmu, kas labi izskatītos, runātos ar manu PHP skriptu izmantojot kaut kādu protokolu un pēc iespējas izvairītos no liekas datu sūtīšanas.
Un tā, visbeidzot - trešais piegājiens! Uz Symbian ir pieejams speciāls, pielāgots Python - jāpapēta tas. Izrādās ka Nokia SDK strādā tikai uz Windows. Python skriptus, protams, var rakstīt vienalga kur, bet telefona emulators (kurš *ļoti* atvieglotu izstrādes procesu) ir tikai uz Windows. Bez emulatora man nāktos pēc katrām izmaiņām savu Python skriptu kopēt uz telefonu un darbināt tur. Sākumā, kamēr apgūstu sistēmu, gribētos skriptu izmēģināt pēc katras pamainītas rindiņas. Neko darīt, instalēju tos SDK brīnumus zem VMWare darbinātos logos un sāku pētīt. Izlasu, kā Python skriptos veidot vienkāršas lietotāja saskarnes (tādas, kas sastāv no Symbian UI standarta elementiem - popupiem, ievadlaukiem, sarakstiem, izvēlnēm utt). Izskatās varen vienkārši - ar šo problēmu nebūs. Tālāk rodas doma - lai pa tīklu nebūtu jādzenā daudz datu, visu XMMS dziesmu sarakstu varētu kompresētu nolādēt vienā piegājienā un pēc tam ziņojumi starp telefonu un datoru būtu pavisam īsi (nu, "Pārslēdz uz 53. dziesmu" - "Darīts, skan 53. dziesma!"). "Quick Jump" tiešām būtu quick, jo dziesmu filtrēšana notiktu turpat telefonā. Tātad, jāpadomā, kā telefonā efektīvi operēt ar dziesmu sarakstu. Efektīvi - lai neizmantotu daudz atmiņas un neietu briesmīgi lēni. Man patlaban sarakstā ir 3800 dziesmas - dziesmu saraksts aizņem 300K, kompresēts 80K. Lasot tālāk dokumentāciju, izrādās, ka Symbian sistēmā jau ir iebūvēta datubāzes sistēma - ar to runājas izmantojot SQL. Nepārspējami - var taisīt tabulas, rakstīt, atlasīt datus un tā tālāk. Ir visādi datu tipi, ir indeksi. Datubāzes fukcijas ir pieejamas arī manam Python skriptam. Diezgan vāji nodokumentētas (droši vien skatos nepareizajā vietā), tomēr, pacīnoties, drīz vien izdodas uztaisīt savu tabulu un iedzīt tajā dziesmu sarakstu. Un atlasīt filtrējot. Emulatorā atfiltrējas zibenīgi, telefonā neesmu mēģinājis.
Lūk, un tālāk problēma, kas neglābjami rodas ar visiem "projektiem", kam pieķeros. Brīdī, kad būtībā ir skaidrs, kā visu uztaisīt un atliek vairs tikai darīt, tad interese beidzas. Atceros, piemēram, reizi, kad ar entuziasmu drusku pieķēros pie bittorrent klienta rakstīšanas - izpētīju, kādas ir iespējas komunicēt ar pašu pitonā rakstīto bittorrent klientu, uzzīmēju lietotāja saskarni, drusku pamēģināju to no skripta kontrolēt un atmetu ar roku. Agrākā jaunībā bija vēl trakāk - vienu dienu projektēju savu programmēšanas valodu, citu dienu - savu operētājsistēmu. Pa gadiem backup diskos ir savākušies simtu simtiem iesāktu projektu. Skats kā vecā pieputējušā rotaļu istabā - uz grīdas mētājas iekš Delphi rakstīts POP3/SMTP klients, drusku tālāk - paskālā rakstīta zīmēšanas programma, un tad vēl tālāk autosacīkstes beisikā. Te vispār varētu pafilozofēt (sorry tm) - programmēšanā ir tā burvība, ka vari kā bērns spēlēties ar rotaļlietām, konstruktoriem - kombinēt kopā, veidot savas sistēmas. Un nav jau jāpabeidz līdz galam lai jau iztēlē redzētu, kas tur galā būs sanācis.
Nu, varbūt ar šo es saņemšos - pitonā rakstīta, tā programma varētu būt labi, ja pārsimts rindiņas gara.