Magazīnatmiņa 15.06.2006 Vakarnakt atkal nosapņoju kārtējo murgaino programmēšanas sapni :) Šoreiz iedomāsimies situāciju: mūsu rīcībā ir procesors ar divām magazīnas (steka) tipa atmiņām, kurš prot izpildīt šādas darbības:
Visi skaitļi ir 8 bitu veseli skaitļi. Interesanti, vai ar šīm darbībām ir iespējams realizēt šeit aprakstītās darbības? Mēģināsim. Atņemšana "-" Bez komentāriem. Ļoti vienkārši, IMHO. NOT+ PUSH 1 + Salīdzināšana "<" Riebīgākā daļa ir ņemt vērā, ka var gadīties situācijas, kurās pirmais skaitlis ir 255. Tās arī ir jāapstrādā. DUPSAVE PUSH 254 RESTORE > SAVE PUSH 1 + > NOT RESTORE OR Salīdzināšana "<>" Tāds savdabīgs Hanojas torņu uzdevums. Ja magazīnā ir AB, tad jāiegūst ABAB, jo jāveic divas salīdzināšanas. SAVEDUP RESTORE DUP SAVE SWAP RESTORE > SAVE < RESTORE AND Salīdzināšana "=" Šī jau ir pavisam vienkārša :) <>NOT PUSH 1 AND Izrādās, šo darbību realizācija bez reģistriem it nemaz nav sarežģīta. Ja kādam ir interese, varu uzdot uzdevumu - kā to visu realizēt bez palīgmagazīnas? Iespējams, jāpievieno kādu papildus darbību, bet kādu? Nekādi nevaru izdomāt... Komentāri (2) Homeopātija 14.06.2006 Priecājieties jel - panaceja ir dzimusi! Kādā lieliskā, zinātniskiem pierādījumiem pārsātinātā Latvijas Interneta resursā Jūs atradīsit neapgāžamus pierādījumus tam, ka ķīmiskās zāles nevienam nav vajadzīgas! Izrādās, visas cilvēces veselības problēmas rodas tāpēc, ka notiek masveidīga apārstēšanās, kā rezultātā notiek organisma imunitātes krišanās. Imunitātes krišanos novērst Jums palīdzēs ārstēšanās ar tīru ūdeni! Kā rakstīts Vikipēdijā, homeopātija balstās uz zāļu aktīvās vielas atšķaidīšanu līdz pat 1060 reizēm. Ņemot vērā Avogadro skaitli - 6,02 x 1023 g/mol, kļūst skaidrs, ka, iegūstot galarezultātā iegūtā šķīduma trauciņu, ir visnotaļ maza iespēja, ka tajā atradīsit kaut vienu aktīvās vielas molekulu. Domājāt, ar to esam pierādījuši, ka homeopātijas patiesais nosaukums ir šarlatānisms Q.E.D.? Nekā nebija! Citāts iz minētā zinātniskā resursa: Saprotams, ka tādi šķīdumi nevar izraisīt alerģiskas reakcijas vai kādas kaitīgas blakusiedarbības, bet vai tie var ārstēt? Jā, var gan. Redziet, redziet? Viss šīs panacejas noslēpums ir kratīšana! Kratīšana jau izsenis ir zinātniski pamatota - to paveica jau 15.gadsimta alķīmiķi, mēģinot no smiltīm iegūt zeltu. Bet nu nopietni - sarakstot murgainu tekstu, minot tajā visdažādākos zinātniskos terminus jeb vienkāršāk - reti dzirdētus svešvārdus, jaucot ķīmiju, fiziku un alķīmiju, kā arī nepamatotus apgalvojumus, varam panākt vēlamo efektu - mietpilsoņi tam notic. Tāda jau ir pasaules patiesība - ja cilvēks neko no lasītā nesaprot, tad bieži vien tam tāpat notic. Vēl viens, pavisam īss citāts no mūsu ūberhomeopātu resursa: Varbūt jūs šai parādībai atradīsiet citu iemeslu, bet zinātnieki domā, ka[...]. Teikšu īsi - parādiet man tos zinātniekus... Komentāri (10) Loose Change 2nd Edition vi rulez 12.06.2006 Šiten te pavisam nejauši uzgāju interesantu padomu vi izmantošanā: Dear Adelie, Kurš vēl apgalvos, ka vi nav lietotājam draudzīgs? :) Komentāri (4) Lielais 08.06.2006 Izrādās, sīkmīkstā uzņēmuma programmiņa Windows Genuine Advantage regulāri (reizi dienā, cik noprotu), sazinās ar Lielo Diez, ko vēl šis rīks dara? Varbūt klusītēm pārsūta Lielajam Komentāri (1) Ādolfs dzied Laikam jau jūdzos... 08.06.2006 Vakar sapnī (laikam jau jāsaka - murgā) redzēju šādas lietas... Iedomāsimies, ka eksistē kāds iedomāts skaitļotājs (procesors, whatever) ar šādām īpašībām:
Tagad iedomāsimies, ka vēlamies realizēt šādas darbības (nosauksim tās par makrokomandām):
Interesantākais ir tas, ka katru no šīm darbībām mēs varam realizēt! Sāksim, tātad: A - B -> R Iedomāsimies, ka reģistrā A ir 5 un B - 3. Rezultātā iekš R būtu jābūt 2. Kā mēs to varam iegūt? Vispirms iedomāsimies, kā varam atņemt tieši 1. A + 254 -> A - 1 Kāpēc tā? Vienkārši: A = 55 + 254 = 259 Tā kā notiek "liekā" bita nomešana, iegūstam 4. Ja pieskaitīsim 253, iegūsim 3, t.i., būtībā A - 2. Tas nozīmē, ka mazinātāju B mums ir jāizsaka kā 255 - BTo varam izdarīt pavisam vienkārši - veicot darbības NOT B -> RLOAD B, R Kopumā atņemšanas makrokomanda izskatās šādi: NOT B -> RLOAD B, R A + B -> R Pārbaudīsim. Kā jau vienojāmies, reģistrā A ir 5 un reģistrā B - 3. Pirmās komandas izpildes rezultāts būs (skaidrībai pierakstīsim arī binārajā sistēmā): NOT 3 (%00000011) = 252 (%11111100)Otrā komanda vienkārši reģistrā B ielādē iegūto rezultātu. Trešās komandas izpildes rezultāts būs 5 + 252 = 257Tā kā notiek "liekā" bita nomešana, reģistrā R būs... 2. Q.E.D. Pirms makrokomandas izsaukuma jāsaglabā reģistru A un B saturu, ko veic šim nolūkam ieviestā komanda SAVE. To jāveic, jo reģistra B saturs tiek "sabojāts". Pēc komandas izsaukuma reģistru saturu jāatjauno. SAVENOT B -> R LOAD B, R A + B -> R RESTORE A = B -> R Tagad mēs jau droši varam izmantot makrokomandu A - B -> R. Kā salīdzināt divus skaitļus? Patiesībā jau vienkārši: 1) Ja (A+1) > B izpildās un 2) (A-1) > B neizpildās, tad varam secināt, ka A = B. Patiešām, salīdzināsim divus skaitļus - A=3 un B=3. Redzam, ka (3+1) > 3 izpildās un (3-1) > 3 neizpildās Kā to realizēt? Mēģināsim. Vispirms realizēsim pirmo - saskaitīšanu un salīdzināšanu. SAVELOAD B, 1 A + B -> R RESTORE SAVE LOAD A, R A > B -> R RESTORE Šajā brīdī reģistrs R satur 1, ja (A+1) > B. Saglabāsim šo vērtību. PUSHRealizēsim arī otro daļu. SAVELOAD B, 254 A + B -> R RESTORE SAVE LOAD A, R A > B -> R LOAD A, R NOT A -> R PUSH RESTORE Tagad magazīnas atmiņā ir ievietoti divi elementi, kuriem abiem jābūt 1. Veiksim pēdējo daļu: SAVEPOP LOAD A, R POP LOAD B, R A AND B -> R RESTORE Patiesībā šī bloka "SAVE" un iepriekšējā bloka "RESTORE" varējām arī izlaist. Kopā makrokomandas kods izskatās šādi: SAVELOAD B, 1 A + B -> R RESTORE SAVE LOAD A, R A > B -> R RESTORE PUSH SAVE LOAD B, 254 A + B -> R RESTORE SAVE LOAD A, R A > B -> R LOAD A, R NOT A -> R LOAD A, R POP LOAD B, R A AND B -> R RESTORE Mēģināsim izsekot šī koda darbībai, salīdzinot skaitļus A=3 un B=3.
Kur šeit bija viltība ar to, ka reģistrs R satur vai nu 0, vai 255? Skatāmies: a) pēc salīdzināšanas pirmā vērtība ir 0 un otrā 0. Pēc loģiskā UN sanāks, ka rezultāts ir 0. Ļoti labi. b) Pirmā vērtība ir 1 un otrā 0. Rezultāts - 0. Arī labi. c) Pirmā vērtība ir 0 un otrā 1. Rezultāts - 0. d) Pirmā vērtība ir 1 un otrā - 255. Rezultāts būs 1. Kāpēc? Skatāmies: 00000001 AND 11111111 = 00000001. Jauki, ne? :)Darbību A < B -> R un A <> B -> R izveidi atstāšu tiem, kam tas interesē. It kā jau nekas liels, bet kaut ko tādu redzēt sapņos - tas gan ir kaut kas... Komentāri (7) Popki KDE gļuki ar Kat 01.06.2006 Jaunajās KDE versijās (kādās nu jaunajās patiesībā - cik zinu, sākot ar KDE 3.4) ir pieejama tāda jauka lietiņa, kā failu indeksēšanas serviss Kat Desktop Search Environment. Viss jau būtu ļoti jauki, un tomēr... Kādai kastei ar Mandriva 2006 pēkšņi parādījās ļoti dīvaina uzvedība - iestartējot KDE, sāka crashot kded. Pie tam šī avarēšana izskatījās ļoti dīvaini - ik pa aptuveni 15 sekundēm tika iestartēts jauns kded, kurš, kā jau kārtīgam softam pieklājas, nekavējoties avarēja, vienlaikus izvadot crash dialoglogu. Sākumā nolēmu izmantot metodi Sāku analizēt situāciju. Failā .xsession-errors crasha brīdī bija atrodamas rindiņas (precīzi necitēšu), ka tiek veikta QSQLite3 objekta inicializācija, pēc kā kded avarē. Hmm, kura KDE komponente izmanto SQLite datu bāzi, pie tam, spriežot pēc regulārās avarēšanas, dara to regulāri? Pareizi, Kat. Tālāk atradu Kat datu bāzes failu - /home/user/.kde/share/apps/kat/db.kat. Tas bija izaudzis līdz kādiem 16 MiB. Failu gluži vienkārši izdzēsu. Un brīnums - pie nākamās Kat startēšanās (un Kat startēšanu veic kded, ja kas) tika izveidota jauna datu bāze un viss darbojās bez gļukiem. :) Tātad, neliels rezumē - ja jūsu datorā parādās šādi pat KDE gļuki, vai nu atslēdziet Kat lietošanu, vai nu izveidojiet nelielu skriptiņu, kurš regulāri pārbauda minētā faila apjomu un vajadzības gadījumā to dzēš. Kaut kā tā. :) Komentāri (4) The Albino Code 29.05.2006 Uhcī, LOL :) Domājāt, ka Da Vinci Code ir kaut kas lielisks? Neā. Skatāmies The Albino Code. :) Komentāri (0) |











