Tag: software

vba: download files (website requires login)

notiz… damit ich das nicht nochmal erfinden muss. die webseite erfordert ein login, bevor man daten runterladen kann. das login formular muss man sich halt mal ansehen und die entsprechenden werte in einem POST request schicken. ich habe dazu einfach irgendein firefox plugin beim login mitlaufen lassen, welches den entsprechenden POST request aufzeichnet. das cookie muss man dann noch aus der antwort des webserver axtrahieren und beim anschliessenden download der dateien mitschicken.
mit excel 2003 und dem ie7 ging das noch ohne login in vba, wenn man sich vorher im browser eingeloggt hatte (mit urlmon o.ä. einfach runterladen). mit excel 2010 und ie9 muss man sich explizit (mit vba) einloggen um die dateien runterladen zu können.

Option Explicit
 
Sub DownloadData()
 
    Dim strSavePath As String
    Dim strURL As String
    Dim strURLDownload As String
    Dim strHeaders As String
    Dim strResult As String
    Dim strRequest As Variant
    Dim objXMLhttp: Set objXMLhttp = CreateObject("msxml2.xmlhttp")
    Dim strUsername As String
    Dim strPassword As String
    Dim strFileToSave As String
    Dim xArr As Variant
    Dim yArr As Variant
    Dim strTheCookie As String
    Dim strCookie As String
    Dim objStream: Set objStream = CreateObject("ADODB.Stream")
    Dim i
    Dim WkSh As Worksheet ' das Quell-Tabellenblatt - die Herkunft der Daten
    Dim lZeile As Long
 
    ' Variablen
    Set WkSh = ThisWorkbook.Worksheets("DOWNLOADFILES") ' den Tabellenblattnamen ggf. anpassen!
    ' Format in dem Tabellenblatt DOWNLOADFILES.. einfach eine Auflistung der Download URLs:
    'http://www.website.com/download/data/file_1.xls
    'http://www.website.com/download/data/file_2.xls
    'http://www.website.com/download/data/file_3.xls

    ' Pfad zum speichern der XLS Dateien 
    strSavePath = "c:\temp\"
    strUsername = "vorname.nachname%40domain.tld" ' URL encoded: @ = %40
    strPassword = "mypassword"
    ' Login URL
    strURL = "http://www.website.com/login-user"
    ' mitgehörter request header (mit Firefox Plugin aufgezeichnet)
    ' Benutzername und Passwort durch Variablen ersetzt
    strRequest = "viewFrom=viewLOGIN&forward=%2Fbackend%2Findex.html&referer=%2Flogin.html&username= " & strUsername & "&password=" & strPassword & "&actionSUBMIT.x=0&actionSUBMIT.y=0"

    ' Login
    With objXMLhttp
        .Open "POST", strURL, False
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .send strRequest
    End With
   
    strHeaders = objXMLhttp.getAllResponseHeaders()
   
    ' ggf Response speichern um das Cookie anzuschauen
    'Open "C:\temp\response.txt" For Output As #1
    '  Print #1, , strHeaders
    'Close
   
    ' Beispiel Cookie aus strHeaders
    'Set-Cookie: BALANCERID=b.cocoon0a0815; Expires=Tue, 07-Aug-2012 08:00:00 GMT; Path=/
   
    ' Cookie extrahieren
    xArr = Split(strHeaders, "Set-Cookie: ")
    For i = 1 To UBound(xArr)
        strTheCookie = Left(xArr(i), InStr(xArr(i), "Path=/") - 2)
        strCookie = strCookie & " " & strTheCookie
    Next
    yArr = Split(strCookie, ";")
    strCookie = yArr(0)
 
   For lZeile = 1 To WkSh.Cells(Rows.Count, 1).End(xlUp).Row

        ' Downloadlink
        strURLDownload = WkSh.Range("A" & lZeile).Value

        ' Dateiname aus URL extrahieren
        strFileToSave = Mid$(strURLDownload, InStrRev(strURLDownload, "/") + 1)
       
        ' Download der xls Datei
        With objXMLhttp
            .Open "GET", strURLDownload, False
            .setRequestHeader "cache-control", "no-cache, must revalidate"
            'Cookie 2mal setzen... Bug: http://support.microsoft.com/kb/290899
            .setRequestHeader "Cookie", strCookie
            .setRequestHeader "Cookie", strCookie
            .send
        End With
       
        ' Speichern der xls Datei als Binary
        With objStream
            .Type = 1 ' adTypeBinary
            .Open
            .Write objXMLhttp.responseBody
            .SaveToFile strSavePath & strFileToSave, 2 ' adSaveCreateOverWrite
        End With
        objStream.Close
       
   Next lZeile
   
    Set objStream = Nothing
    Set objXMLhttp = Nothing
 
End Sub
 

linux software raid: component device mismatches found

heute ist mir in einem syslog das hier ueber den weg gelaufen:

Aug  5 09:27:46 myhostname mdadm[1555]: RebuildFinished event detected on md device /dev/md/0, component device  mismatches found: 1024

ach ja richtig.. dabei handelt es sich um ein software raid 1 auf einem linux rechner 😉

diese info steht da geschrieben:

cat /sys/block/md0/md/mismatch_cnt 
1024

und eine reparatur laesst sich so anschubsen:

echo repair >> /sys/block/md0/md/sync_action

bei mir ist das von alleine losgelaufen. zu beobachten mit:

watch cat /proc/mdstat

danach sieht es hoffentlich wieder so aus:

cat /sys/block/md0/md/mismatch_cnt 
0

wenn nicht… gibts hier weitere hilfe.

whatsapp beschert besucher

das thema whatsapp beschert mir immernoch besucher viele auf meinem blog. am sonntag kam im fernsehen in den nachrichten ein beitrag ueber whatsapp, in dem sich ein redakteur der computerbild darueber berichtet hat, was seit einem viertel jahr schon bekannt ist. wie auch immer.. daraufhin setzen sich die leute vor ihre kiste und googlen erstmal… und das beschert mir besucher:

und zwar eine spontane verdreifachung 😉

whatsapp systemstatus

nuja ok.. die koennen nix dafuer. das ist naemlich ne seite bei twitter. und wenn zuviele leute (wahrscheinlich ge-nat’tet) mit ihrem mobiltelefon zugreifen, dann is essig. versteh ich trotzdem nicht ganz. dann muesste twitter doch oefters mal nicht angezeigt werden koennen. vermutlich hat whatsapp nen proxy dazwischen geschaltet und da klemmts. bin aber auch echt gerade zu faul, um das mal zu sniffen…
wie auch immer.. kann man auch direkt auf twitter anschauen oder abonnieren: https://twitter.com/wa_status

adobe will mich noetigen

jedesmal aufs neue, wenn ich erlaube ein update zu einzuspielen, ist die default einstellung “Zulassen, dass Adobe Updates installiert”

auch wenn ich sowieso nicht ueberpruefe, was da wieder fuern kack installiert wird, so uebernehmt doch bitte einfach die auswahl meiner letzten wahl. ich WILL darueber entscheiden, ob ich ein scheiss update fuer den scheiss flashplayer einspiele. schlimm genug, dass ich den ueberhaupt brauche.

openfire und der java heap space

wenn der openfire jabber server mal nicht mehr mag und im logfile oder webfrontend diese meldung spuckt:

java.lang.OutOfMemoryError: Java heap space.

dann muss der heap space einfach mal vergroessert werden. eine loesung habe ich gefunden:

Open the server script (/bin/openfire) in a text editor.

Search for a line starting with:

nohup “$app_java_home/bin/java” -server -Dinstall4j.jvmDir=”$app_java_home” (……)

Add the parameter -Xmx512m to increase the heap size (512 MB in this example). Like this:

nohup “$app_java_home/bin/java” -Xmx512m -server -Dinstall4j.jvmDir=”$app_java_home” (…..)

bloss was ist eine vernuenftige groesse? darauf suche ich noch eine antwort…

is mir schlecht…

hab ich schon erwaehnt, dass ich java nicht mag?

finnisch

wie geil is das denn?

auf den ersten blick hab ichs auch nicht gesehen. hier nochmal in gross…

danke an tst

diaspora pod update wiedermal (2)

…wieder, damits irgendwo geschrieben steht. wer weiss, fuer was man das nochmal gebrauchen kann.

beim letzten mal hats ja schon nicht so recht klappen wollen. (fuer mich ist es) jedesmal wieder ein krampf. einfach nicht meine welt… naja…

beim update kam es bei diesem schritt…

DB="mysql" bundle install --without development,test

…zu dieser fehlermeldung:

Using markerb (1.0.0) from https://github.com/plataformatec/markerb.git (at master) 
ArgumentError: invalid byte sequence in US-ASCII
An error occured while installing markerb (1.0.0), and Bundler cannot continue.
Make sure that `gem install markerb -v '1.0.0'` succeeds before bundling.

oh.. ja.. die locales waren nicht richtig eingestellt. mal schnell nachholen und auf en_US.UTF-8 einstellen:

dpkg-reconfigure locales

dann kam es zu diesem fehler:

Installing rubygems-1.8.17 for ruby-1.9.3-p125@diaspora ...
Error running 'GEM_PATH="/home/diaspora/.rvm/gems/ruby-1.9.3-p125@diaspora:/home/diaspora/.rvm/gems/ruby-1.9.3-p125@global:/home/diaspora/.rvm/gems/ruby-1.9.3-p125@global" GEM_HOME="/home/diaspora/.rvm/gems/ruby-1.9.3-p125@diaspora" "/home/diaspora/.rvm/rubies/ruby-1.9.3-p125/bin/ruby" "/home/diaspora/.rvm/src/rubygems-1.8.17/setup.rb"', please read /home/diaspora/.rvm/log/ruby-1.9.3-p125@diaspora/rubygems.install.log
Installation of rubygems did not complete successfully.

was einfach deher ruehrte, dass in diesem pfad nichts installiert war…

/home/diaspora/.rvm/rubies/ruby-1.9.3-p125/bin/

warum auch immer… also einmal neu installieren.

rvm reinstall ruby-1.9.3-p125

ahja.. deswegen ists nicht installiert.. weil autoreconf fehlt:

rvm requires autoreconf to install the selected ruby interpreter however autoreconf was not found in the PATH.

also autoreconf installieren:

apt-get install dh-autoreconf

und dann klappts auch mit dem…

rvm reinstall ruby-1.9.3-p125

und das update wie bereits hier beschrieben laeuft durch… yeah 😉

su - diaspora
git pull origin master
DB="mysql" bundle install --without development,test
RAILS_ENV="production" DB="mysql" bundle exec rake db:migrate
bundle exec rake assets:precompile

UPDATE: oh.. und diesmal war ich richtig schnell und bin ohne fremde hilfe ausgekommen 😉

PingdomAlert UP:
https://pod.sd.vc (pod.sd.vc) is 
UP again at 03.07.2012. 09:39:36, after 45m of downtime.

auch xing spinnt mal rum

wtf? wie auch immer die da drauf kommen…