Updates from July, 2010 Toggle Comment Threads | Keyboard Shortcuts

  • Urban 01:09 on 13 Jul. 2010 Permalink |  

    Logiranje tipk 

    Po Wolframovi ideji, o kateri pišem v prejšnjem postu, sem tudi sam izdelal aplikacijo, ki beleži aktivnost na tipkovnici in klikanje miške. Zadeva je trivialna (lotil sem se v dobrem starem VB61 🙂 )

    'mouse & keyboard deklaracija za v BAS file ========
    Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
    
    Public Function GetKey() As Integer
        For i = 0 To 255
            If (GetAsyncKeyState(i) And &H8001) <> 0 Then
                GetKey = i
                Exit Function
            End If
        Next i
    End Function
    
    'LOG keys and clicks ================ 
    Private Sub keytimer_Timer()
        'get keys
        newkey = GetKey
        'Replace letters with X to prevent keylogging
        If newkey > 48 And newkey < 100 Then
            dbkeycode = 88
        Else
            dbkeycode = newkey
        End If
        
        If oldkey <> newkey And newkey <> 0 Then
            'open db, insert
            Set Db = OpenDatabase(App.Path & "\data.mdb")
            Set Rs = Db.OpenRecordset("SELECT * FROM key_log", dbOpenDynaset)
            Rs.AddNew
            Rs!Time = Date & " " & Time
            Rs!keycode = dbkeycode
            Rs.Update
            Db.Close
        End If
        oldkey = newkey
    End Sub
    

    Prva finta opisane kode je, da beleži tako evente tipkovnice kot miške. Če funkcija GetKey vrne 1, 2, 3 ali 4, gre za gumb na miški, ostalo je tipkovnica. To zadevo sem nekaj časa uporabljal in beležil vse GetKey evente v MDB bazo, nakar sem postal rahlo paranoičen. MDB je vseboval vse passworde in vedno obstaja verjetnost, da taka zadeva pride v napačne roke. Zato v zgornji kodi brž replacal vse alfanumerične znake z ‘x’. Razlog, da nisem vseh, je naslednji: želel sem pustiti notri kode tipk, ki bi se izkazale za uporabne. Takšne so naprimer delete in backspace; ti dve omogočata, da beležiš kolikokrat se je uporabnik zmotil pri tipkanju; sigurno pa so še druge podobne skrite informacije.

    Že ti podatki lahko dajo dokaj dobro analizo produktivnosti glede na čas dneva, če pa bi jih uparili še z imenom aplikacije, Shazam detekcijo muzike, ki se vrti v ozadju, s podatki o količini dnevnega gibanja (recimo s FitBita), kvaliteti spanca (FitBit/SleepTracker), s TV sporedom, porabo električne energije v bajti, zunanjo in notranjo temperaturo, telesno temperaturo, srčnim utripom in/ali ročno vnesenimi podatki (splošno počutje, lakota, žeja), bi dobili pravi recept za optimalne pogoje produktivnosti ali kreativnosti.

    Problem take rešitve je, da predstavlja precej velik vdor v zasebnost uporabnika. Edina sprejemljiva varianta je, da reč zapakiraš v desktop aplikacijo, s tem pa izgubiš vse prednosti oblaka: spremljanje več naprav, centraliziran pregled statistike, ipd.

    Glede na to, da tudi sam takih podatkov ne bi zaupal nikomur (in da sem takoj odinštaliral Rescue Time, ki podobne podatke zbira na webu), vidim kot edino možnost privaten oblak. Mnogi (tudi Eric Schmidt) menijo, da bo regulativa na tem področju šla po sledeh bank, in da se bo nivo zaupanja do ustreznih ponudnikov dvignil do te mere, da bomo podatke “nakazovali” brez strahu, da jih bo kdo ukradel. In ko bo mogoče najeti simpl sef za podatke, bo tudi take občutljive zadeve možno preko VPN shranjevati od kjerkoli.

    1. ta je še ena antična, z začetki v 2006 kot aplikacija, ki je bila po želeni funkcionalnosti na las podobna današnjemu ManicTime-u []
     
    • dare 09:55 on 13 Jul. 2010 Permalink

      tipu se je res odprl…

    • Urban 10:47 on 13 Jul. 2010 Permalink

      🙂 mwahaha.. ma mi je prov škoda vse te kode in idej, ker že men mal peša spomin 🙂

  • Urban 22:38 on 11 Jun. 2009 Permalink |  

    Dilbert iskalnik 

    Rad čitam Dilbert stripe, ker tu pa tam zadanejo žebljico na glavico. Nekaj časa sem si ta boljše shranjeval, našel pa nikoli točno tistega, ki bi ilustriral kakšno še posebej absurdno situacijo. V takih trenutkih sem si želel storitve, v kateri bi lahko brskal po arhivu in iskal stripe po tekstu in junakih.

    Ko sem pred časom preverjal, se tega še ni dalo, zato sem se napravil zadevo narediti sam. Danes obstajata že 2 podobna sajta (pa jih žal ne znam uporabljat — mogoče sta namenoma prekomplicirana, da preveč očitno ne kršita pravic), spodaj pa opisujem svoj poskus, ki sem se ga lotil že dolgo nazaj.

    Izhajal sem iz arhiva sličic, ki ga nekdo pridno fila. K sebi sem zložil vse slike in se namenil na njih narediti OCR. To je dokaj težko, ker je resolucija slaba, font pa majhen in na roko napisane sorte. Sprobal sem cel kup komercialnih in nekomercialnih OCR-ov (tudi tesseract, ki se je obnesel porazno). Za silo sprejemljiive rezultate sem dobil z Microsoft Office Document imaging OCR, ki je del Offica, in se ga da kontrolirati tudi softversko. Na hitro sem zložil skupaj par vrstic VB6 kode in zakrožil po slikah.

    Private Sub Command1_Click()
     
      Dim miDoc As MODI.Document
      Dim File As String
      
      sPath = "f:dilbert"
      File = Dir$(sPath & "*.jpg")
      Do While Len(File)
          Label1.Caption = "Processing " & File
          DoEvents
          Set miDoc = New MODI.Document
          miDoc.Create sPath & File
          miDoc.OCR MODI.MiLANGUAGES.miLANG_ENGLISH, False, True
          Open sPath & File & ".txt" For Output As #1
          Print #1, miDoc.Images(0).Layout.Text
          Close #1
          File = Dir$
      Loop
      Label1.Caption = "Finished"
    End Sub
    

    Da bi izboljšal rezultate, sem poskusil po FBI-jevsko izboljšati kvaliteto slike. Naredil sem Photoshop akcijo, ki je povečala velikost in nato naredila sharpen, za nameček pa še spremenila vodoraven strip v navpično postavitev. Akcijo sem uporabil na celem direktoriju (z manjšimi problemi pri določanju imen izhodnih datotek), nato pa še enkrat naredil OCR.

    Rezultat je bil mnogo boljši, ampak še vedno s precej napakami. Obupal sem in raje poiskal user-generated transkripte in jih napopal v bazo kot dodaten stolpec. Voilà.

     
  • Urban 01:07 on 2 Jun. 2009 Permalink |  

    Processing.org testna vožnja 

    Dostikrat sem že videl hude vizualizacije, narejene s Processing.org, čez vikend pa sem zadevo tudi sam probal. In huda je.

    Primeri, ki so v distribuciji, pokrivajo vse od 2D in 3D animacij, do zajema in vizualizacije zvoka in manipulacije videa. Na neodvisnem sajtu OpenProcessing.org pa najdemo javen repozitorij številnih dobrih vizualizacij/animacij s pripadajočo kodo.

    Processing je osnovan na Javi, zato pišemo javansko kodo. Na voljo pa je cel kup konstruktov, specifičnih za vizualizacijo, kar zelo poenostavi programiranje. Rezultat se dá exportati kot applet (tole spodaj) ali kot Java-based executable aplikacijo za Win/Linux/MacOS.

    Tale je čisto moj, rezultat parurnega eksperimentiranja.
    (Klikni za štart, oviro pa lahko premikaš z miško.)

    This browser does not have a Java Plug-in.
    Get the latest Java Plug-in here.

     
    • dare 14:01 on 2 Jun. 2009 Permalink

      hudo! sam neki maš čudno fiziko…

      če postaviš kroglo nad tok (tako da gre vse mimo), potem jo pa potegneš dol v tok, špricne mal partiklov z zgornjega dela krogle v random smeri 🙂

    • Urban 23:57 on 2 Jun. 2009 Permalink

      Ja res je.. premikanje krogle ni blo planirano, dodal sm ga za foro, k sm pogruntal da sta samo 2 dodatni vrstici in da je dobr efekt… Problem je, da se premik kugle zgodi tko hitro, da se ta dejansko pojavi na mestu kjer so že particli (torej collision), in takrat jih moj lame mehanizem replaya nazaj dokler niso zunaj krogle. Nepredvidljiv prehodni pojav pač 🙂

  • Urban 01:33 on 22 May. 2009 Permalink |  

    Movie Word Cloud 

    I’ve calculated the word frequency in the subtitles of about 40k English movies. I thought I’d get something useful, but can’t see it yet. Listing highest ranking words proved almost entirely useless, so I excluded the most common stop-words. Here I listed the highest 500 ranking words.

    An interesting question here would be: is the relative frequency any different than the relative frequency in English language in general? What words have higher frequency in movies than in everyday language? Can we detect movie speak by the lack of certain words?

    wordcloud

    But what seems more promising than doing a simple word count is Yahoo term extractor which, surprisingly, does a pretty good job. For example, American Beauty yields these terms:

    • lester burnham
    • neighbor jim
    • pruning shears
    • product launch
    • lover jim
    • miracle gro
    • typical teenager
    • geek boy
    • daughter jane
    • wife carolyn
    • eggshells
    • role model
    • high point
    • clogs
    • misery
    • loser
    • girlfriend
    • honey
    • roses
    • dad

    In fact it’s almost as good as watching the movie 🙂 . That’s why the next step will be listing the most common Yahoo-extracted terms for all the movies. Gotta do it while Yahoo’s still around 🙂 .

    This bit of Ruby code queries Yahoo term extraction API (you need an API key first):

    require 'net/http'
    require 'rexml/document'
    
    app_id = '***************'
    yahoo_uri = URI.parse('http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction')
    
    resp = Net::HTTP.post_form(yahoo_uri, { 'appid' => app_id, 'context' => text  } )
    
    terms = REXML::Document.new resp.body
    
    terms.each_element("//Result") do |term| 
        puts term
    end
    
     
    • dare 17:22 on 22 May. 2009 Permalink

      hacking & sharing, pohvalno.

      fajn vizuelna prenova bloga!

    • dare 17:23 on 22 May. 2009 Permalink

      pa za boljšo sliko bi blo treba zmergat hear/heard, thing/things ipd.

    • Urban 17:57 on 24 May. 2009 Permalink

      prov maš.. stemming in lematizacija bi dost pomagala. sploh nism pomislu.

  • Urban 22:42 on 7 May. 2007 Permalink |  

    Kako rešiš post na WordPressu 

    Ko sem shranil prejšnji post, sem dobil zloveščo napako:

    Sorry, you need to enable sending referrers for this feature to work.

    Zvrtelo se mi je pred očmi. Da bi šel še enkrat pisat post od začetka, mi še na misel ni padlo. Po malo brskanja sem ugotovil da imam izklopljene referrerje v Firefoxu in to sem brž popravil z about:config. Toda ob osvežitvi sem dobil isto napako, saj je bila stran zgrajena že prej in še vedno ni vsebovala referrerja.
    Vedel sem, da je moj post še vedno shranjen v POST variabli HTTP requesta, saj je browser ob vsakem refreshu potožil, da bo resendal POSTDATA. Firebug (najuporabnejši plugin za web razvoj na svetu) na žalost ne zna prikazati browserjevih POST spremenljivk. Zato sem se domislil ukane. Datoteko post.php na strežniku sem zamenjal s temle:

    <?
         print_r($_REQUEST);
    ?>

    Ob refreshu sem dobil vsebino posta, ki sem jo samo še prilepil v HTML pogled urejevalnika.

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel