Sudoku

Balandžio viduryje Kalifornijoje vyko MySQL konferencija, kurioje buvo galima išgirsti pačių įvairiausių pranešimų duomenų bazių tema. Mane labiausiai sudomino „The Lost Art of the Self Join“ pranešimas (pateiktis PDF formatu), kurio kulminacija buvo Sudoku galvosūkio išsprendimas vos viena SQL užklausa (angl. query) - šį kartą apžvelgsiu mano rastus Sudoku sprendimo būdus.

Daugiau informacijos apie Sudoku žaidimą galite rasti Wikipedijoje, kur aprašyti ir dažniausiai sutinkami bei naudojami sprendimo būdai. Kompiuteris veikia šiek tiek kitaip nei žmogaus smegenys, todėl ne visi aprašyti būdai tinkami - paprasčiausia būtų Sudoku sprendžiančią programą parašyti „aklo spėjimo“ (angl. Bruteforce) būdu. Toks sprendimo būdas paremtas tuo, kad išbandomos visos įmanomos langelių reikšmės ({1,2,3,4,5,6,7,8,9}), kol randamas teisingas sprendimas. Pats elementariausias sprendimas sunaudotų 9^81 (1.96 * 10^77) procesoriaus ciklų, todėl sprendimas turėtų užtrukti ilgai, labai ilgai. Internete yra gausybė įvairiausių programų, kurios sprendžia Sudoku, o jų sparta siekia dešimtis ar net šimtus tūkstančių galvosūkių per sekundę.

Minėtoje pateiktyje buvo patekta užklausa, kuri 6×6 dydžio Sudoku galvosūkį išsprendžia per akimirką. Šis būdas susidoroja tik su sumažinta galvosūkio versija, nes standartinio 9×9 galvosūkio sprendimui pritrūktų JOIN tipo vidinių užklausų (MySQL JOIN užklausų kiekis yra ribotas, taigi pavyzdžiui su PostgreSQL pavyktų išspręsti ir pilno dydžio galvosūkį). Kadangi pateikties tikslas buvo lyg ir priminti, kad SQL užklausose galima naudoti JOIN’us, tai pateiktas sprendimas gal ir nėra praktiškai pritaikomas, tačiau puikiai iliustruoja tai, kaip galima programos ciklus perkelti į užklausas. Verta pažymėti ir tai, kad tiek daug vidinių užklausų galima naudoti tik tada kai duomenys yra gerai indeksuoti arba jų yra mažai, nes kitu atveju užklausa gali būti apdorojama amžiais (4 lentelės su 15′000 įrašų sujungtos į 4-matę struktūrą būtų apdorojamos 321 metus).

Jei jau pradėjome spręsti Sudoku, tai galima prieiti ir prie galutinio sprendimo - 9×9 dydžio galvosūkį sprendžianti užklausa. Nors ji iš pirmo žvilgsnio atrodo gana griozdiška ir neoptimali, tačiau jos vykdymas užtrunka vos 0.4 sekundės. Lyginant su programiniais sprendimo algoritmais tokia sparta atrodo juokinga, tačiau pasižaisti ši užklausa yra visai tinkama. Užklausos pabaigoje pamatysite pradinių duomenų reikšmes, o atsakymas gaunamas vien tik loginių patikrinimų dėka, t.y. šioje užklausoje aprašyta Sudoku taisyklė - skaičius turi būti unikalus stulpelyje ir eilutėje. Pasižiūrėjus atidžiau šis sprendimo būdas netgi nenaudoja jokių duomenų iš lentelės - lentelė panaudojama kaip šablonas ir jos laukeliai tik nusako lentelės struktūrą.

Nors dar nespėjau išbandyti nei pirmos nei antros užklausos (kol kas dar neradau paruoštų testinių duomenų bei naudojamų lentelių struktūros aprašų), tačiau abejoju, kad jos galėtų neveikti - abu jie kopijuoti iš patikimų šaltinių, o ir pačiose užklausose nelabai pavyko rasti loginių ar pan. klaidų. Abi šios užklausos pasižymi tuo, kad viena lentelė (su N laukų) panaudojama kelis kartus taip sukuriant virtualią NxN dydžio galvosūkio lentelę - atsakymo ieškojimas ir skaičių bandymas paliekamas MySQL duomenų bazių sistemai. Galbūt tai yra šioks toks „iškrypimas“, tačiau tokius dalykus gali sukurti tik gerai išmanydamas užklausų rašymą, todėl tikrai rekomenduoju kiekvienam pasiskaityti pateikties skaidres.

Praktiškai tokie dalykai vargiai panaudojami, tačiau teorinėms žinios stiprinti yra visai šaunūs, nes parašyti gerą užklausą yra menas mokslas. Be abejo kompiuterių sparta nepaliaujamai auga ir tai, kas vakar atrodė lėta, šiandien užtrunka vos kelias tūkstantąsias sekundės dalis, tačiau tai dar nereiškia, kad resursų prieaugį galima švaistyti. Kokių įdomybių jūs žinote?

Priešas

Visai neseniai Gytis tinklaraštyje „Žmogus turintis ką pasakyti“ pristatė savo mintis apie knygų skaitymą. Svarbiausias jo rašinio sakinys man pasirodė šis - “Jei žmogus nenori, tai ir neskaito”. Šiandien jums papasakosiu ne tik apie knygų skaitymą, tačiau ir mano požiūrį į lietuvių kalbą kaip pamoką ir kodėl aš esu jos didžiausias „priešas“ - turbūt ne veltui rašau apie matematiką ar programavimą.

Vis dar mokausi mokykloje, tačiau jau nebe pamenu kada paskutinį kartą skaičiau knygą - turbūt vėliausiai prieš keletą mėnesių. Parašęs šį sakinį jaučiuosi šiek tiek kvailai, nes netgi pats žinau, kad knygos yra geras dalykas ir jų skaitymas labai praturtina žmogaus mintis. Tačiau tam yra šioks toks paaiškinimas. Kas su manimi mokosi mokykloje, be abejo žino, kad man lietuvių kalba yra „priešas numeris vienas“. Vien jau faktas, kad anglų kalbos bandomąjį egzaminą parašiau žymiai geriau nei lietuvių, tik įrodo, kad lietuvių kalba tikrai nėra mano mėgstamiausia pamoka. Nekartą lietuvių kalbos pamokas praleisdavome valgykloje su draugais, nes iš esmės bet kokia kita veikla man atrodo žymiai įdomesnė nei lietuvių kalbos pamokos. Net ir tada, kai nueinu į pamoką, tai atsėdžiu iškenčiu tas 45 min. ir nuskambėjus skambučiui pajaučiu didelį palengvėjimą. Realinis profilis pasirinktas 11-oje klasėje labai puikiai apibūdina mano požiūrį į lietuvių kalbą.

Lietuvių kalbos pamokoms dažniausiai kas savaitę reikia perskaityti bent po vieną knygą, bet tai pas mus daro labai retas. Žinoma, mokausi ne gimnazijoje ar prestižinėje mokykloje tai tikriausiai ir žmonių poreikiai yra visai kitokie, tačiau mes visi labai šauniai išsisukame ir be knygų skaitymo. Labai dažnoje situacijoje nuomonę apie knygą galima susidaryti jau per pirmą jos nagrinėjimo valandą, nes beveik visada knyga turi tik keletą mokykliniam lygiui svarbių bruožų, o norint juos atrasti visiškai nebūtina skaityti visos knygos. Kartais būna riesta, nes neperskaičius knygos dorai dalyvauti jos nagrinėjimo diskusijoje būna sudėtinga, tačiau kadangi šansas, kad tave pakvies, yra lygus 1/N, kur N - mokinių skaičius klasėje, tai net ir neskaičius knygos galima labai paprastai išvengti dvejeto. Galima būtų bijoti artėjančio lietuvių kalbos brandos egzamino, tačiau realiai nelabai matau priežastis nervintis - rašant rašinį užtenka remtis vos vienu lietuvių rašytoju, todėl visiškai nebijau pritrūkti argumentų.

Įdomiausia yra tai, kad yra du projektai, kurie mano situacija daro logiškai nesuvokiama. Pirmasis - tai ŽaliaŽolė.lt (rašyk.lt mažesnė versija, tačiau vien jau šių projektų santykiai verti atskiro įrašo). Nevertinsiu šio projekto gerumo ir prasmės, nes jau praėjo kelios savaitės nuo to, kai aš suradau mane pavaduojantį sistemos administratorių. Šis projektas įdomus tuo, kad jo veikla yra sukoncentruota ties savo kūrybos dalinimusi ir kitų kūrybos vertinimu. Man jau kuris laikas galvoje kirbėjo klausimas „Ką aš čia veikiu?“, tačiau padoraus atsakymo taip ir neradau - poezijos niekada gyvenime nerašiau, kitų kūrinių neskaitau, o lietuvių kalbos pamokas praleidžiu labai dažnai. Keletą kartų esu dalyvavęs šio projekto rengiamuose poezijos skaitymuose, knygų pristatymuose, bet taip ir nesupratau ką aš ten veikiu. Turbūt nesunku atspėti, kad tarp menininkų iškentęs daugiau nei 3 metus šiandien aš ten jau net nebekišu nosies.

Kelių savaičių bėgyje atidarome savo knygyną ir aš iš dalies tampu knygų prekeiviu. Nelogiškumo viršūnė, nes koks iš manęs knygų pardavėjas, kuris pats neskaito knygų (skaityti čia). Labai gerai, kad mūsų įmonėje dirba net 4 knygomis labai besidomintys žmonės, tai mano neišmanymas nelabai kam ir betrukdo, tačiau pats faktas, kad užsiimu tokia veikla atrodo gana įdomiai. Ne taip, kaip su ŽaliaŽolė.lt projektu, kuriamo knygyno mesti niekada neplanuoju, nes tai bus toks projektas, kuris labai tikėtina, kad paklos pamatus mano finansiniam stabilumui. Visiems skaitytojams norėčiau dar ir pareklamuoti šį jau greitai pasirodantį projektą - knygos geriausiomis kainomis, labai didelis pasirinkimas, papildomos funkcijos ir t.t. Nemoku rašyti agitacijų ar propagandinio tipo rašinėlių, todėl labai daug ir neišsiplėsiu, bet faktas tas, kad tai bus tikrai labai geras knygynas. (Ne, aš nuolaidų neteikiu)

Viską tenka užbaigti tuo, kad viena iš tinklaraščio rašymo priežasčių buvo noras išmokti rašyti geriau, sklandžiau ir vaizdingiau. Rezultatai kol kas vargiai jaučiami, bet aš pats jaučiu, kad rašydamas rašinį aš jaučiuosi žymiai stipriau ir reikalaujama 500 žodžių riba jau gana lengvai pasiekiama. Galbūt pasirinktas straipsnio pavadinimas atrodo šiek tiek per drastiškas, bet nuoširdžiai galiu pasakyti, kad jei kas nors man duotų pasirinkimą, tai jau seniai nelankyčiau lietuvių kalbos pamokų. Degraduočiau greičiau nei reikėtų, bet galėčiau laiką skirti tam, kas mane domina. Kokių pamokų jūs vengiate/vengėte?

Autoritetas

„Įvaizdis dar ne viskas - troškulys yra viskas“, skelbė Sprite reklama. Šį kartą nekalbėsiu nei apie gėrimus, nei apie reklamą - šiandien kalbėsiu apie gerą ir blogą įvaizdį ir kokias problemas jie gali kelti. Įvaizdį nagrinėsiu autoriteto ir pagarbos požiūriu, nes mano manymu tai yra svarbiausios įvaizdžio dedamosios. Žinoma šis įrašas bus gana subjektyvus, nes remsiuosi daugiausia savo patirtimi, o kadangi dar niekada nebuvau neigiamo įvaizdžio barikadų pusėje, tai daugiausia ir rašysiu apie jį, nes nenoriu prisigalvoti nebūtų dalykų apie tai, kuo blogas įvaizdis ir autoriteto neturėjimas yra šaunus. Be to, vis labiau džiaugiuosi, kad pradedu liesti, ne vien IT temas, nes juk ne visiems tai rūpi ir kartais jau darosi nuobodu, kai visi dienos rašiniai apie vieną ir tą patį - kompiuterius.

Tapti autoritetingu žmogumi yra gana sudėtinga. Sudėtinga ne vien dėl to, kad autoritetas yra sunkiai išugdomas, o dėl to, kad autoritetas gali būti gana greitai nusmukdomas. Iš esmės, elementarus neigiamas įvykis gali sugriauti kitų teigiamą požiūrį į jūs ir susigrąžinti gerą vardą gali būti itin sunku. Tokia pati situacija ir su neigiamu įvaizdžiu arba autoriteto neturėjimu - pagerinti situaciją gali būti labai sunku, nes žmonės jau bus pripratę prie jūsų neigiamumo ir bet koks jūsų stengimasis elgtis geriau gali kelti tik įtarimą. Nors autoritetingi žmonės retai pasitaiko, tačiau nebūtina būti kitiems autoritetu - užtenka turėti elementarią kitų pagarbą (aka respect). Pagarba yra lengviau užsitarnaujama nei autoritetas, tačiau lengviau ir iššvaistoma, todėl pagarbos vertas žmogus nebūtinai visada išliks toks pats. Problema yra tame, kad dažniausiai žmonės yra tarpiniame variante - nei verti pagarbos, nei verti paniekos. Toks žmonių išsidėstymas yra gana natūralus, nes visgi didžiajai daliai žmonių socialinių parametrų galioja varpo struktūra - didžioji dalis žmonių susitelkia grafiko viduryje, o tik labai maža dalis yra grafiko kraštuose. Nors tai natūralu, bet tai yra blogai, nes retas žmogus yra kažkuo išsiskiriantis iš kitų - visi kiti yra grafiko viduryje ir juos galima vadinti tiesiog „pilka mase“. Juos vadiname „pilka mase“, nes jie neužsitarnauja kitų pagarbos, tačiau nėra ir pernelyg neigiami personažai, vadinasi jie tiesiog nedaro kitiems įtakos ir gyvena „sau“. Akivaizdu, kad patekti į grafiko kraštą nėra lengva, kaip nėra lengva ir turėti stiprų autoritetą.

Teigiama pagarbos ir autoriteto savybė - kitų žmonių pasitikėjimas. Dažnu atveju teigiamu laikomas žmogus ne visada elgiasi tinkamai, tačiau tai jam yra atleidžiama ir laikoma kaip juokavimas arba tiesiog nesusipratimas. Beveik visada „geras“ žmogus sau gali leisti daugiau, nei „blogiukas“, nes jis bus vistiek suprastas. Žinoma, nereikia persistengti ir pradėti piknaudžiauti savo geru įvaizdžiu, tačiau beveik visada kažkur suklydę pagarbos neprarasite. Negaliu nepaminėti mokyklos, nes čia vis dar praleidžiu daug laiko - mokykloje geri mokiniai gali sau žymiai daugiau leisti. Triukšmauti, nusirašinėti, nedalyvauti pamokose, nedaryti namų darbų ir pan. yra „leidžiama“ tik gerai besimokantiems - „blogieji“ mokiniai už tai yra baudžiami, o „gerieji“ beveik visada nuo bausmės išsisuka. Kadangi aš save priskiriu prie „gerųjų“, tai toks mokytojų požiūris man yra palankus - neretai kiti lieka nuskriaustieji, o aš „išlipu sausas“. Žinoma tai yra labai neteisinga kitų mokinių atžvilgiu, tačiau juk niekas netrukdo susikurti teigiamo įvaizdžio, o po to juo naudotis. Nors tuo nepiknaudžiauju, tačiau pats faktas, kad galiu jaustis ramus dėl kai kurių dalykų yra labai šaunus - mokytojų pagarba besimokant mokykloje yra nepaprastai naudinga. Be abejo, būna įvairiausių nutikimų, tačiau geras įvaizdis dažniausiai gelbsti, o ir kiti žmonės ilgainiui priima tai kaip natūralų dalyką, nors neretai ir supyksta ar įsižeidžia dėl nevienodų sąlygų. Taigi galima drąsiai teigti, kad pagarbos vertas žmogus sau gali leisti daug, o aplinkiniai jį vistiek supras, tačiau peržengus ribą, viskas gali labai greitai apsiversti.

Tačiau pagarba ir autoritetas turi ir neigiamų savybių, kurių viena svarbiausių - perdėtas kitų žmonių tikėjimasis. Labai dažnai autoritetingas žmogus yra laikomas kažkokiu simboliu, kuris neklysta ir 24 valandas per parą yra laikytinas pavyzdžiu. Tokia situacija kartais priveda prie to, kad žmogus tiesiog palūžta ir nebe išgali lyderiauti - tai ypač dažnai pasireiškia mokykloje. Mokykloje visada yra gerai besimokantys, vidutiniokai ir blogai besimokantys (tapati varpo sistema), o iš gerai besimokančių yra visada tikimasi gerų rezultatų - aukštų pažymių. Keisčiausia, kai net gavęs 9-uką vietoje 10-uko pavyzdingas mokinys (aka moksliukas) nuliūsta, nes žino, kad kiti žmonės į jį žiūrės kreivai, o kartais net bus pasityčiota iš jo „prasto“ pažymio. Todėl labai seniai supratau, kad stengimasis palaikyti labai aukštą rezultatų lygį yra bevertis ir gaunant įvairesnių pažymių yra ne tik, kad lengviau nepalūžti, bet ir kitų žmonių požiūris yra visiškai kitoks. Be abejo, matematikos mokytoja beveik visada paburnoja, kai gaunu ne 10-uką, tačiau per kelis metus aš ją „išmokiau“, kad man tai nėra pats svarbiausias dalykas ir 9-ių vidurkis man yra tikrai pakankamas, nors galėčiau nesunkiai turėti 10-imt. Tokia pati situacija buvo ir su pirmąją pasaulio raketė Roger Federer, kuris po ilgos pergalių serijos pralaimėjo - žmonės tiesiog net neįsivaizdavo, kad jis gali pralaimėti, todėl jo pralaimėjimas buvo sutiktas su didžiule nuostaba. Tačiau Roger išliko ramus ir pakomentavo, kad „jūs patys išauginote bulių, kuris niekam negali pralaimėti“ (citata netiksli) - jo pralaimėjimas jam buvo natūralus dalykas, o susikurtas įvaizdis jam tai trukdė padaryti.

Tikriausiai bus geriau, jei nepadarysiu jokių baigiamųjų išvadų ir paliksiu laisvės jūsų apmąstymams - visgi ši tema yra gana asmeniška ir tikiu, kad kiekvienas jai turi savą požiūrį. Turbūt užteks to, kad pasakysiu, jog gerą autoritetą susikurti sunku, tačiau jis ne visada yra naudingas ir visuomenė kartais iškreipia požiūrį į autoritetingus ir pagarbos vertus žmones. Kol kas aš dar jaunas, tai pagarbą užsitarnauju tik bendraamžių tarpe, tačiau labai džiaugiuosi, kad parašiau šį įrašą - po kelių metų galėsiu palyginti kaip pasikeitė požiūris į mane ir pagarbos samprata.

Konkursas

Šiandien matematikos mokytoja pasiūlė sudalyvauti tarptautiniame matematikos konkurse Matmintinis. Šis konkursas įdomus tuo, kad jame reikia įveikti ne sudėtingus uždavinius, o kuo greičiau atlikti elementariuosius matematinius veiksmus - sudėtį, atimtį ir pan. Kadangi aš matematikoje nutuokiu gana nemažai ir skaičiuoju tikrai sparčiai, tai kilo noras išbandyti - galbūt būtų pavykę laimėti… Tačiau nebūčiau aš Juozas, jei nepastebėčiau kaip prastai žmonės dirba - apie tai, kodėl šis konkursas yra tiesiog apgailėtinas parašysiu šiame įraše. Tikrai nesu nusistatęs prieš šio konkurso rengėjus ar pan., tačiau negalėjau neaprašyti šio konkurso prastumo, nes tikiu, kad kas nors padarys išvadas.

Šio konkurso organizatorių tikslas tikriausiai buvo skatinti informacinių technologijų naudojimą, nes pirmieji konkurso etapai vyksta internetu. Nors tai yra labai sveikintinas dalykas, bet norint konkursus organizuoti internetu būtinai reikia pasirūpinti tvarkinga sistema. Iš kodo sandaros ir naudojamų komentarų, bei vis išlendančių angliškų frazių galiu spėti, kad jį sukūrė viena kompanija, o naudoja visos šalys dalyvės. Kartais toks sprendimas pasiteisina, tačiau šiuo atveju jis tiesiog pražudė visą konkursą ir tik sugaišino dalyvių laiką, netrukus įsitikinsite kodėl. Pradėkime nuo to, kad registruojantis užtenka įvesti vardą, pavardę ir mokyklą, o visi kiti duomenis yra standartiniai (vartotojo vardas, slaptažodis ir t.t.). Beveik neabejoju, kad nėra jokio įvesto vardo ir pavardės tikrinimo proceso, nes tai padaryti būtų tikriausiai per sudėtinga. Be to, susikūrus vartotoją jis automatiškai patvirtinamas, taigi galima iškart pradėti spręsti. Tai išties patogu, bet labai nelogiška ir kvaila, nes nesunkiai galima dalyvauti įvairiausiais vardais (jei su savuoju nepavyko gerai pasirodyti) arba net nebūnant mokiniu (tą patikrinti iš vis neįmanoma). Žinoma internete sunku užtikrinti žmogaus identiteto unikalumą, tačiau jei jau buvo norima konkursą perkelti į internetą, tai reikėjo bendradarbiauti su mokyklomis ir automatiškai generuoti vartotojus visiems norintiems mokiniams. Taigi jau pirmasis žvilgsnis aiškiai parodo, kad konkurso dalyviai yra nekontroliuojami - konkursas jau čia praranda prasmę.

Toliau dar blogiau. Konkurso sprendimai vyksta įvedant teisingą atsakymą „skaičiuotuvu“ - kvailiau sugalvoti turbūt buvo sunkiai įmanoma. Vietoje to, kad būtų naudojamas paprastas teksto laukas, į kurį skaičiai būtų įvedami klaviatūra, naudojama virtuali skaičių klaviatūra. Nežinau kodėl organizatoriai naudoja tokį dalyką, tačiau tai yra be galo nepatogu, nes skaičiai klaviatūra gali būti įvesti ir paprasčiau, ir greičiau, o juk konkurso tikslas yra kuo greičiau ir kuo daugiau teisingai suskaičiuoti. Visgi šiaip ne taip sugebėjau priprasti (su nešiojamojo kompiuterio pele tai padaryti tikrai nėra lengva), tačiau pastebėjau labai įdomų dalyką - taškų skaičius yra skaičiuojamas vartotojo kompiuteryje ir be jokio patikrinimo išsiunčiamas į konkurso serverį. Peržvelgiau JavaScript kodą ir mane ištiko lengvas šokas - viskas padaryta be galo elementariai ir tikėtina, kad apeiti sistemą bus labai lengva. Per 5 min. išanalizavau kodą ir parengiau dviejų eilučių JavaScript programėlę, kuri automatiškai įrašo teisingą atsakymą ir nuspaudžia patvirtinimo mygtuką. Išbandžiau įvairiuose lygiuose ir režimuose - galiu surinkti bet kokį norimą skaičių taškų. Nenorėjau dar daugiau analizuoti kodą, nes net neabejoju, kad labai lengvai galima pakeisti ir galutinį taškų skaičių, net nelendant prie matematinių veiksmų atlikimo. Tikrai nesukčiavau norėdamas nugalėti, tačiau jei man tai pavyko padaryti taip paprastai, tai net neabejoju, kad bus dar ne vienas, kuris tai pastebės ir padarys save nugalėtoju.

Išvados paprastos - minėtasis konkursas yra tiesiog žlugęs. Galbūt tolesni jo etapai bus vykdomi jau nebe internetu, tačiau šiuo metu į tolesnį etapą gali patekti visi norintys ir net nemokantys matematikos - užtenka tik labai elementaraus triuko, kurio dėl visiems suprantamų priežasčių aš neatskleisiu. Neatskleisiu spragos, nes šis konkursas išvis bus surengtas be reikalo - kol mažai žmonių žino šį sukčiavimo būdą, tai rezultatai bus daug maž realūs. Aš iš pradžių galvojau dalyvauti, tačiau dabar nebematau prasmės - vistiek laimės tie, kurie sukčiaus, o taip dalyvauti nematau tiklso. Išvada paprasta - Matmintinis yra dėl apgailėtinos sistemos kokybės žlugęs konkursas. Keista, kai konkursai organizuojami taip atmestinai…

Pateiktis

Paskutinė Lapkričio savaitė mano mokykloje buvo Matematikos savaitė, kurioje aš buvau pakviestas į šiokią tokią konferenciją matematikos tema. Mano pranešimas buvo apie greituosius matematikos skaičiavimo būdus, apie kurių vieną jau buvau rašęs. Pačią pateiktį parengiau gana lengvai remdamasis 10/20/30 taisykle ir kitais pateikčių rengimo patarimais, be to nepagailėjau humoro elementų tiek pačiai pateikties formai, tiek ir pasakojimui (pateikties pavadinimas buvo impulsyviai sugalvotas štai toks - „Obuolienės staigmena“).

Pateiktį rengiau su „OpenOffice.org Presentation“ programa. Ši programa yra dalis OpenOffice.org paketo ir iš esmės savo funkcionalumu ji beveik nesiskiria nuo Microsoft Office produkto Powerpoint, tačiau ji yra atvirojo kodo ir visiškai nemokama. Žinoma, ją pasirinkau ne dėl to, kad ji man nieko nekainuoja, o dėl to, kad ji yra turbūt vienintelis pasirinkimas mano naudojamai Kubuntu Linux sistemai. Turbūt akivaizdu, kad dėl vienos pateikties pereiti prie Windows turbūt būtų buvę kvaila. Taigi pateiktį gana lengvai sukūriau, nors Presentation naudoja ir pirmą kartą. Viskas gražu, veikia ir galime eiti į konferenciją. Deja, gera pradžia tik pusė darbo.

Visai netyčia man į galvą toptelėjo mintis, kad galbūt Presentation paruošta pps (Powerpoint formatas) rinkmena bus sunkiai atidaroma su Powerpoint, todėl nusprendžiau, kad visgi verta rizikuoti neštis į mokyklą savo nešiojamąjį kompiuterį. Anksčia dar nebuvo tekę jo jungti prie išorinio ekrano, todėl dar namuose pabandymui prijungiau prie paprasto CRT monitoriaus per VGA jungtį. Vaizdo nėra. Pradėjau landžioti po nustatymų langus, bet vaizdas taip ir neatsirado. Tik perkrovus kompiuterį ir prieš krovimasį prijungus monitorių, vaizdas jame atsirasdavo ir būdavo sėkmingai rodomas. Man šis variantas ne ypač tiko, nes kai būsiu pakviestas skaityti pranešimo nelabai kas turės laiko laukti kol užsikraus mano sistema. Bandžiau daug ir įvairių dalykų, bet vaizdas taip ir neatsirado. Galiausiai pabandžiau Ubuntu sistemai skirtą monitorių valdymo programą, kuri diegiama kartu su Ubuntu 7.10 ir, pasakoj jos autorių, užtikrina lengvą darbą su keliais monitoriais. Rezultatas - vaizdo nėra ir sugadinta Xorg nustatymų rinkmena. Per daugiau nei valandą sistemos nustatymus pavyko atstatyti, bet nusispjoviau ir nusprendžiau, kad jau geriau pabandysiu pateiktį parodyti iš eksportuotos rinkmenos.

Atėjus konferencijos dienai pabandžiau pateiktį peržiūrėti informatikos kabinete - viskas kuo gražiausiai veikė. Prieš prasidedant pačiai konferencijai pabandžiau pateiktį paleisti su prie projektoriaus prijungtu kompiuteriu. Po velnių - skaidrės viršuje esantis juodas antraštės fonas išsitempė per pusę ekrano ir uždengia didžiąją dalį teksto. Reikėjo ką nors greitai sugalvoti, todėl skaidrėms pritaikiau vieną iš standartinių ruošinių. Mano paruoštis iš solidžios ir suderintų šriftų pavirto į kažkokį komišką žalią reginį, todėl likau šiek tiek nusivylęs, nes tiesiog nebuvo laiko derinti šriftų dydžius ir pan. Deja, nelabai buvo galima ką pakeisti ir teko pradėti kalbėti. Nors kalbėjimo fonas - pateiktis, ir nebuvo tokia, kokios aš norėjau, tačiau kadangi aš bekalbėdamas į ją beveik nežiūrėjau, tai pranešimo kokybę išlaikiau, manau, neblogu kalbėjimu.

Taip jau būna - atrodo nereikšmingi dalykai gali pakišti koją. Nors aš pats esu stiprus atvirojo kodo ir Linux šalininkas, tačiau kartais mane supykdo toks nestabilus darbas. Nors nesuderinamumas su Microsoft produktais nėra labai stebinantis, tačiau sistemos „sugriūvimas“ vos prijungus išorinį monitorių mane šiek tiek nuliūdino. Gaila, bet tenka pripažinti, kad jei būčiau naudojęs Windows ir Powerpoint turbūt jokių problemų nebūtų kilę… O dar labiau liūdna, kad vis dar negaliu šios sistemos rekomenduoti kitiems namų vartotojams.

Lapkritis 20, 2007Kaip greitai skaičiuoti?

MatematikaNeseniai vedžiau vieną matematikos pamoką, taigi teko jai pasiruošti ką nors tokio, kas sudomintų net ir didžiausius matematikos „nekentėjus“. Pasirinkau greitosios matematikos temą, kuria bandysiu sudominti ir jus. Greitąja matematika aš vadinu tokius sprendimo būdus, kai paprasti matematiniai veiksmai atliekami greičiau nei užtruktų skaičiuojant kampu ar pan. Be to greitoji matematika įdomi tuo, kad visus jos patarimus galima pritaikyti gyvenime, nes nemažai matematikos pamokose dėstomų dalykų bus mažai arba išvis nepanaudojami, jei žmogus vėliau nesimokys ar nedirbs su matematika susijusio darbo.

Kiek yra 109^2 (109 kvadratu)? Su skaičiuotuvu jūs tai suskaičiuotumėte per kelias sekundes, mintyse suskaičiuotumėte per kokią minutę, o per keliasdešimt sekundžių išspręstumėte sąsiuvinio lape. Tačiau aš galiu iš kart pasakyti - 11881. O tada kiek 96^2? 9216! Tikriausiai pamanėte, kad suskaičiavau skaičiuotuvu, tačiau tikrai ne - rašiau kartu su tekstu. Jei jūs norite taip pat greitai skaičiuoti štai jums patarimas (taikomas skaičiams artimiems 100).

Turime skaičių X, šio skaičiaus pagrindu laikykime 100, taigi raskime skirtumą tarp pagrindo ir pačio skaičiaus.
109 - 100 = 9
Gautąjį skaičių pavadinkime dalele, ir pridėkime ją prie pradinio skaičiaus.
109 + 9 = 118
Dabar belieka prie paskutinio gauto skaičiaus iš dešinės pusės prirašyti dalelės kvadratą.
118 _ 81 = 11881
Viskas!

Tas pats ir su skaičiais mažesniais už 100. Randame skirtumą:
96 - 100 = -4
Prie pradinio skaičiaus pridėkime gautą dalelę:Smile
96 + (-4) = 92
Beliko prirašyti dalelės kvadratą:
92 _ 16 = 9216

Matome, kad bet kokiu atveju toks sprendimo būdas garantuoja teisingą atsakymą (jei netikite - galite patys išbandyti). Taip pat jį labai patogu naudoti, ypač kai reikia greitai suskaičiuoti, o skaičiuotuvo po ranka nėra.
Laukite tęsinio ir taisyklių įvairesniems skaičiams. ;)

Lapkritis 8, 2007Paklaida \ 0.999847742

BasketballVakar bežiūrėdamas krepšinio varžybas sugalvojau šiokią tokią lygtį:

cos(cos(cos(cos(X)))) = 0.999847742

Atrodo beprasmis skaičius, bet kaip parodė mano Citizen scientific calculator, su bet kuria X reikšme, ši lygybė teisinga. Paprasčiausiai pasiimkite skaičiuotuvą, įveskite bet kokį skaičių ir keturis kartus paspauskite mygtuką cos - visada gausite 0.999847742. :) Nors ir anksčiau buvau bandęs atrasti (kažkaip įdomiau, nei spręsti tą patį per tą patį per pamokas) ne vieną formulę ar neįtikimą lygybę, tačiau visada pasirodydavo, kad ji ne visada skaičiuodavo teisingai. Šį kart viskas atrodė puikiai - kiek bebandžiau vistiek po keturių paspaudimų gaudavau tą pačią reikšmę. Įdomiausia, kad vėliau nors ir 100 kartų paspausdavau cos - vis tiek reikšmė likdavo ta pati.

LooserŠiandien nuėjau į mokyklą, pabandėm su draugais - nu tikrai veikia. Po to matematikos mokytojai parodžiau, bet ilgiau nepavyko pasišnekėt tai ir negavau rimtesnio patvirtinimo. Grįžau namo ir pabandžiau su rimtu kompiuteriniu skaičiuokliu. Velnias - pasirodo, kad reikšmės skiriasi, bet tiek mažai, kad skaičuotuvai suapvalinę visada gauna tas pačias reikšmes.

Taigi gautinė išvada būtų tokia, kad su paprastu skaičiuotuvu, bet kokio skaičiaus keturis kartus pakartotas (cos(cos(cos(cos(X))))) kosinuso skaičiavimas visada lygus apie 0.999847742.

Lapkritis 5, 2007Matematinė įdomybė

MatematikaTurbūt niekam nereikia įrodinėti, kad kompiuteriai ir kompiuterių mokslas yra susijęs su Matematika. Taigi stengsiuosi pasidalinti ir įdomiais matematiniais dalykėliais, o šiandien pateikiu labai paprastą, tačiau stebinantį uždavinuką.

Įsivaizduokite vieno milimetro (1 mm.) storio lapą. Dabar paimkite lapą ir perlenkite į pusiau, o gautą rezultatą perlenkite dar kartą pusiau, po to dar kartą ir t.t. kol lapą perlenksite 30 kartų (t.y. lenkimo pusiau veiksmą pakartosite 30 kartų).

Kokio storio lapų krūvelę gausime?


© 2008 Juozo Kaziukėno blogas | TextNData dizainas | Wordpress variklis