Rainbowheart - ultimele 7 pagini

  • Multithreading in Python pentru Windows si Unix

    17-Jan-2018 12:51 - 4 vizionari

    Executia mai multor task-uri in Python merge destul de bine in Unix si Windows, dar necesita indeplinirea a catorva conditii: actualizarea controalelor grafice (GUI) sa fie facuta de evenimente wxPython (nu este permisa modificarea directa dintr-un task) si taskurile trebuie sa includa o mica temporizare (cel putin de o milisecunda).

    Pentru testarea executiei pe Windows, Linux si OpenBSD, am facut un program de test cu patru taskuri consumatoare de resurse de calcul plus un task de ceas ca referinta.

    Cand cele patru taskuri care incarca procesoarele includ o temporizare prea mica (100 microsecunde), observ o limitare a executiei taskului de ceas in Windows, dar in Unix nu am observat sa fie vreo problema. Am facut mai multe teste si rezultatele variaza foarte mult in functie de procesorul folosit, dar pentru siguranta, taskurile trebuie sa includa o mica temporizare, cel putin 1 ms.

    2tasks_2cpu 1task_2cpu 4tasks_4cpu 2tasks_4cpu

    Cand numarul de taskuri consumatoare de resurse este egal cu numarul de procesoare, incarcarea este constanta.

    Cand numarul de taskuri consumatoare de resurse este mai mic decat numarul de procesoare disponibile, sistemul Linux foloseste procesoarele prin rotatie si, astfel, previne incalzirea excesiva a procesoarelor.


  • 20 de ani de greseala de proiectare sau de utilizare?

    10-Jan-2018 18:21 - 27 vizionari

    Cum sa ma simt cand aflu ca anul trecut a iesit la iveala o problema in procesoarele lumii moderne (calculatoare, telefoane smart, console de jocuri, automobile) veche de peste 20 de ani?

    Nu stiu daca sa plang sa ma bucur, dar ma consolez cu speranta ca va scadea pretul la cele mai tari procesoare "afectate" de greseala propagata generatie de generatie si ca imi voi cumpara un calculator-server ceva mai ieftin decat am prevazut.

    Problema chiar este veche de 22-24 de ani si este aparuta din vremea procesoarelor Intel Pentium (lansate in martie 1993) si Pentium Pro (noiembrie 1995) si care au reprezantat un pas urias privind trecerea de la procesoarele i486 (80486).

    Pe ATS am gasit o lista de discutie privind doua defecte de proiectare in procesoarele din ultimii 20 de ani, vulnerabilitati care pot duce ls accese neautorizate la o memorie protejata (metoda Meltdown - afecteaza Intel si ARM) si posibilitatea ca un program neprivilegiat sa apeleze rutine accesibile numai administratorilor (metoda Spectre - afecteaza Intel, AMD si ARM).

    https://meltdownattack.com/ sau https://spectreattack.com/

    O lista de resurse privind uriasa problema de securitate care a aparut este la github.

    Citind o introducere privind problema sau detalii privind situatia actuala incep sa inteleg cat de mare este problema:

    Descoperirea Meltdown: ca problema sa fie rezolvata, o solutie este toate programele (privilegiate si neprivilegiate) sa aiba propria tabela TLB (translation lookaside buffer), o alta solutie este ca nucleul sistemului de operare (executie privilegiata pe inelul 0) sa aiba o tabela TLB si restul de aplicatii (programe neprivilegiate care se executa in inelul 1, 2 sau 3) sa aiba alta tabela TLB comuna, dar orice solutie s-ar folosi, tot ar apare penalitati in viteza de executie a programelor (zona TLB este limitata in functie de procesor), pentru ca se pierde timp cu schimbarea contextului de executie intre instructiuni privilegiate (inelul 0) si neprivilegiate (alte inele).

    Un program neprivilegiat care apeleaza rar functii de nucleu se executa cu penalitati de viteza de 2-3%.

    Dar un program de test construit (in mod exagerat) ca sa testeze viteza sistemului cand este protejat (la problema Meltdown) si care nu face altceva decat sa apeleze continuu functii din nucleu (cod privilegiat) se executa cu penalitati de 50%, adica apelurile catre nucleu dureaza de doua ori mai mult datorita pierderii de timp cu refacerea TLB program neprivilegiat ca sa nu contina valori din zona nucleului si asta inainte de returnarea rezultatului. Vulnerabilitatea Meltdown consta in faptul ca un program neprivilegiat poate citi prin TLB zone de memorie care nu ar fi trebuit sa fie accesibile.

    Asadar penalitatile de executie vor fi, in medie de 25%, dar sistemul va fi protejat la atacurile efectuate dupa metoda Meltdown prin actualizari de sistem (nucleul este recompilat si astfel functiile exportate sunt accesibile in siguranta).

    Descoperirea Spectre: executia predictiva din procesoarele moderne (o tehnica de optimizare a executiei instructiunilor si de crestere a vitezei) creaza o oportunitate exploatabila de catre hackeri astfel incat un program neprivilegiat sa execute (sa apeleze rutine) secvente de cod din programe la care nu ar fi trebuit sa aiba acces si de aici rezulta ca un program conceput sa fure date, poate compromite foarte usor un server.

    Nu exista o solutie simpla la vulnerabilitatea Spectre, pentru ca toate programele care se doresc a fi protejate trebuie recompilate, iar compilatorul trebuie sa fie pregatit sa genereze cod care sa nu necesite executia predictiva (sa o ocoleasca folosind un algoritm potrivit situatiei) si asta necesita ceva timp pana apare un asemenea compilator, dezactivarea (ocolirea) executiei predictive scade viteza de executie a programelor (se pierde optimizarea de care s-au bucurat toti cei care au inlocuit i486 cu P5, P Pro si MMX) in plus problema apare pe arhitecturi diferite de procesoare (Intel, AMD si ARM) si necesita multa munca de cercetare.

    Situatia este ingrijoratoare: se stie de mult ca un program JavaScript care ruleaza in browser poate fura parolele stocate in browser, dar combinat cu vulnerabilitatile descrise de cei doi hackeri, poate fura parole din sistem (din memorie prin TLB) si poate executa secvente privilegiate de cod (pe inelul 0) care sa creeze legaturi cu serverul hackerului: calculatorul "infectat" face singur legatura cu atacatorul (si aproape nimeni nu il poate opri aici, rareori o face firewallul sau antivirusul) si ii comunica parola descoperita sau prin conexiunea creata primeste comenzi de la hacker care sa fie executate in regim de administrator (root sau supervizor).

    In plus, nici browserele prin sistemul TOR nu mai sunt sigure, trebuiesc recompilate.

    11 ianuarie 2018: Se pare ca OpenBSD, cand este vorba de securitate, este cu 10 ani inaintea celorlalte sisteme de operare: mesaj de la Theo de Raadt din 27 iunie 2007.

    Interviu din 8 ianuarie 2018 cu Theo de Raadt, fondatorul OpenBSD.


  • The Witcher

    08-Jan-2018 19:03 - 27 vizionari

    Anul trecut, de sarbatori, mi-am reinstalat un joc vechi (The Witcher 3) si alte doua noi (nu le-am mai jucat pana acum), dar am preferat The Witcher 3.

    Muzica din The Witcher, primul din serie, lansat pe 26 octombrie 2007:

    Cand a aparut, am jucat cu placere The Witcher (primul din serie) si acum am reluat The Witcher 3 (aparut in 2015, dar acum cu ultimele actualizari), dupa o pauza de doi ani.

    Am sarit peste The Witcher 2 (2011) pentru ca mi s-a parut prea dificil (la bataia cu pumni) si limitat in libertatea specifica jocurilor de tip Open World (harta mare, misiuni multe efectute in ordinea aleasa de jucator, iar jocul poate sa continue si daca nu urmaresti misiunea principala sau o incepi dar nu o termini), oricum era prea lent pentru placa mea grafica, zice vulpea care nu ajunge la struguri.

    Am jucat multa vreme si Skyrim (The Elder Scrolls V: Skyrim, lansat pe 11 noiembrie 2011) si Oblivion (The Elder Scrolls IV: Oblivion, lansat in martie 2006), Prototype 2 (2012 - grafica excelenta pentru vechiul meu PC), dar universul The Witcher este mult mai veridic si mai interesant.

    Toate jocurile amintite sunt lumi fantastice, universuri paralele si simulari ale realitatii.

    Cand inchizi ochii sau cand practici o meditatie usoara, cand faci aerobic, tai iarba, conduci masina automat si mintea iti zboara aiurea, cand citesti o carte, vizionezi un film sau joci un joc pe calculator, creierul trece in modul alfa (vibratii de 7.5 - 12.5 Hz) si potentialul creativ creste foarte mult, dar creste si sugestibilitatea (autohipnoza).

    Diferenta dintre un film si un joc de calculator este ca in joc inveti de doua ori mai mult (vezi si faci), iar in film doar participi pasiv.

    Am lacrimat de cateva ori la The Witcher3, datorita modalitatilor in care s-au terminat cateva misiuni, pentru ca indiferent de alegerile facute, nu puteai sa-i salvezi pe toti cei care meritau sa fie salvati (Hearts of Stone - povestea de dragoste a lui Olgierd von Everec si misiunea cu orfanii de la Crookback Bog si familia Baronului Rosu).

    Nu am inceput campania Blood and Wine din The Witcher3, dar sunt sigur ca ascunde misiuni lacrimogene.

    La Skyrim am lacrimat cand am adoptat doi copii fara adapost, iar la Oblivion am lacrimat la finalul misiunilor cu Ghilda Hotilor (povestea de dragoste a lui Corvus Umbranox) si la moartea tragica a lui Lucien Lachance (Ghilda Asasinilor).

    Jocul The Witcher este bazat pe cartile lui Andrzej Sapkowski, iar lumea creata este fascinanta (trebuie neaparat sa-i citesc cartile) si incredibil de realista: categorii de monstrii, demoni, duhuri, blesteme, iubiri tradate, inimi frante, superstitii, folclor european, tarani, cavaleri, regi, atmosfera medievala din secolul XIII.


  • Rezolvarea paradoxului privind existenţa răului

    08-Jan-2018 16:44 - 28 vizionari

    Exista mai multe paradoxuri privind existenta răului, iar eu stiam doar de Paradoxul (atribuit fals) lui Epicur.

    Dar de 2-3 ani m-am impacat cu Divinitatea afirmand: Dumnezeu in infinita lui mila, infinita lui dreptate si infinita lui rabdare ne ofera un numar infinit de vieti (si de sanse de salvare si iluminare), si, astfel, am rezolvat paradoxul.

    Consider ca reincarnarea + karma ofera o solutie la rezolvarea ecuatiei răului.

    (O alta rezolvare a ecuatiei este Iluzia dualitatii si Experimentul Lucifer din cartea lui Drunvalo Melchizedek, Secretul antic al Florii Vietii.)

    Poate ca explicatia oferita este scurta si superficiala, dar prezenta infinitului din raspuns cantareste greu, infinit de greu.


  • Adevăr, Bunătate şi Toleranţă

    08-Jan-2018 16:07 - 22 vizionari

    Adevăr, Bunătate şi Toleranţă (pronuntate Zhen, Shan, Ren in Chineza) sunt principiile Falun Dafa (o practica de cultivare a sinelui fondata de Maestrul Li Hongzhi), sunt cele mai inalte calitati ale Universului si sunt bazate pe legile dupa care se dezvolta cosmosul.

    In momentul in care m-am impacat cu Divinitatea (cu 2-3 ani in urma), afirmand: Dumnezeu in infinita lui mila, infinita lui dreptate si infinita lui rabdare ne ofera un numar infinit de vieti (si de sanse de salvare si iluminare), am inceput si vad universul altfel, iar cand am descoperit Falun Dafa, principiile pe care m-am bazat s-au intarit (nu s-au naruit).

    De cateva luni am inceput sa studiez si (un pic, pentru ca este foarte greu) sa practic Falun Dafa, dovada este introducerea mea si categoria Falun Dafa.

    Adevarul este pretuit de Scoala Taoista si, dupa parerea mea, trebuie sa fie busola dupa care fiecare calator spiritual trebuie sa se orienteze. Nu are rost sa subliniez importanta adevarului (pentru progres spiritual) si complicatiile (karmice) care apar de la minciuna si inselatorie.

    Bunătatea sau Compasiunea sunt pretuite de Scoala Budista si sunt cheia pentru o lume mai buna: renuntarea la violenta si la egoism si cultivarea unei stari de bunatate si de altruism.

    Toleranţa sau Răbdarea, dupa parerea mea, este partea lasa-i pe altii sa traiasca din zicala traieste si lasa-i pe altii sa traiasca.

    Daca am ceva idee despre Adevar si Bunatate, pot spune ca Toleranta este una din lectiile la care am picat examenul: am ciuda pe ignoranti, pe hăhăitori, pe vorbitorii de trivialitati si inutilitati si pe cei care isi irosesc viata, iar la finalul vietii, cand Creatorul le va pune intrebarea cruciala (ce ai invatat din viata care tocmai s-a incheiat) sa nu fie capabili sa dea un raspuns consistent.

    Poate Bunatatea ma face sa reactionez (din mila pentru ce-i asteapta in viata viitoare pe cei care nu au depus eforturi sa invete ceva in viata curenta = au irosit o sansa oferita de Creator) si sa nu tolerez mastile sociale si discutiile de complezenta, condamnand ignorantii si superficialii. (Cine nu isi invata lectiile din viata curenta, isi mareste karma si in viata urmatoare are un trai mult mai aspru si mai multe lectii de invatat.)

    Acum ca am constientizat problema poate imi invat lectia si devin mai tolerant, dar drumul catre iluminare este stramt si plin de capcane si tentatii, iar ceata ascunde capatul drumului si niciodata nu pot spune cu siguranta: am ajuns, acum pot sa ma opresc, m-am iluminat, acum cunosc Adevarul Absolut si nu mai am nimic de invatat, nu mai am nici o provocare.


  • Terence McKenna - The Gnostic Astronaut

    24-Dec-2017 11:06 - 43 vizionari

    Un film de doua ore disponibil pe Youtube: Terence McKenna - The Gnostic Astronaut (Video Lecture).

    Am avut rabdare sa vad tot filmul cu subtitrarea youtube activata si am inteles cat de important este Gnosticismul si cat de putin se stie despre aceasta miscare.

    Conform filmului, pana in 1948 tot ce se stia despre Gnosticism era din scrierile care le atacau invatatura (parintii fondatori ai Bisericii Crestine au dus lupte grele sa doboare Gnosticismul), dar in 1948 la Nag Hammadi se descopera cateva pergamente atribuite gnosticilor, aproximativ 52 de documente datate ca fiind din anul 350 dupa Cristos.

    Pergamentele de la Nag Hammadi s-au pastrat izolate de sfintii parinti si reformele lor, s-au pastrat izolate de evolutia Crestinismului si acum pun probleme serioase teologiei crestine.

    Conform scrierilor gnostice, universul fizic este o inchisoare din care fiinta umana trebuie sa evadeze, iar creatorul universului fizic este unul din demiurgi (archon = stapanitor in greaca) si Adevaratul Creator al Universului (material si imaterial) nu este usor de gasit in universul fizic, dar este prezent in sufletul fiecarei fiinte umane - Luca 17:20-21.

    (Creatorul universului fizic este zeul Vechiului Testament, numit si Tatal Minciunii si Yaldabaoth Saklas Samael, iar in Matei 4:8-9 ni se da de inteles ca zeul creator al planului fizic este si stapanitorul materiei si are puterea sa dea lumea materiala cui doreste, adica lui Yahyasha Emanuel. Planul fizic si bogatiile materiale sunt ale lui Satan, materialismul si capitalismul sunt piedici spirituale menite sa ne abata de la drumul catre adevarata noastra casa, aflata in cer, la Tatal, …)

    Conform Gnosticismului omul este captiv intr-un univers care nu este casa lui, idee sugerata si de Iisus in predicile sale.


  • Python si algoritmul zlib

    19-Dec-2017 13:37 - 38 vizionari

    Zlib este un algoritm de comprimare / decomprimare blocuri de date (texte, fisiere, imagini) oferit gratis in comunitatea de programatori si lipsit de patente sau alte pretentii legale.

    Limbajul Python poate folosi (diferit, in functie de versiune) biblioteca zlib, iar solutia este incredibil de simpla:

    
    #
    # zlib compress/decompress on python 2 and 3
    #
    
    import sys
    import zlib
    
    py   = sys.version_info
    py3k = py >= (3, 0, 0)
    
    def test_zip(teststr):
        if py3k:
            compressed = zlib.compress(teststr.encode('utf-8'))
            decompressed = zlib.decompress(compressed)
            rate = float(len(compressed)) / float(len(teststr))
            print('Compress rate:{}/{}={:.3f}% - {}'.format(
                    len(compressed), len(teststr), rate,
                    teststr.encode('utf-8') == decompressed))
        else:
            compressed1 = teststr.encode('zip')
            decompressed = compressed1.decode('zip')
            rate = float(len(compressed1)) / float(len(teststr))
            print('Compress rate:{}/{}={:.3f}% - {}'.format(
                    len(compressed1), len(teststr), rate,
                    teststr.encode('utf-8') == decompressed))
            compressed2 = zlib.compress(teststr.encode('utf-8'))
            decompressed = zlib.decompress(compressed2)
            rate = float(len(compressed1)) / float(len(teststr))
            print('Compress rate:{}/{}={:.3f}% - {}'.format(
                    len(compressed2), len(teststr), rate,
                    teststr.encode('utf-8') == decompressed))
            print('Same: {}'.format(compressed1 == compressed2))
    
    if __name__ == "__main__":
        test_zip('123')
        test_zip('ax'*1000)
        test_zip('a'*1000)
        test_zip('12345678'*10000)
        if py3k:
            input('Enter')
        else:
            raw_input('Enter')
        
    
    

    Modulul zlib este suportat de ambele versiuni, python2 si python3, dar python2 il implementeaza si tranparent ca functii de compresie si decompresie ale variabilei-string.

    Rezultatul executiei in python3:

    
    Compress rate:11/3=3.667% - True
    Compress rate:24/2000=0.012% - True
    Compress rate:17/1000=0.017% - True
    Compress rate:148/80000=0.002% - True
    
    

    Comprimarea nu este eficienta pentru secvente scurte (exmplul '123' in program ocupa 11 bytes) sau care nu au multe blocuri care sa se repete, dar compresia a 1000 de 'ax' ocupa 24 bytes, compresia a 1000 de 'a' ocupa 17 bytes si 10000 de '12345678' ocupa 148.



Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric



Contorizari incepand cu 9 iunie 2014:
Flag Counter
Serviciul DNS este oferit gratuit de Free DNS.

Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.