What is CloudApp?
CloudApp is a nice and small application for all Mac OS X computers. Here's how they describe themself:
» CloudApp allows you to share images, links, music, videos and files. Here is how it works: choose a file, drag it to the menubar and let us take care of the rest. We provide you with a short link automatically copied to your clipboard that you can use to share your upload with co-workers and friends. «
This tool is very handy when it comes to sharing screenshots, as they are uploaded instantly. I use it very often. And because I like it so much I thought to write a small Perl API interface so others can build nice tools around this tool!
The Perl interface
The Perl interface to the API, called CloudApp::REST, is completely object-oriented and takes advantage of Moose, a "postmodern object system for Perl 5". It fully supports the CloudApp API, provides proxy functionality and representations for every CloudApp item type.
You can get CloudApp::REST at the nearest CPAN mirror or from CPAN directly. You can find online documentation, smoke testing results, bug tracker and more at http://search.cpan.org/perldoc?CloudApp::REST (once they are available through the automatic processes of PAUSE).
Please test, bend and break!
Yes, please do so! Every bug and spelling error ;-) that is discovered is one less, so please try and test CloudApp::REST. Please report any bugs to the bug tracker mentioned in the docs, so everyone can see and discuss!
Thanks!
P.S.: There are some API wrappers written in other languages, too, and I heard from a Linux client as well. So maybe this will be a tool for all platforms someday :-).
\n-Zeilenumbruch, wie es z.B. Linux und Mac OS X machen, verwendet Windows einen Zeilenumbruch, bestehend aus zwei Zeichen: \r\n. Ist wohl vielen bekannt.\r als Teil des Interpreterpfades an, und versuchen anstatt /usr/bin/perl den Aufruf von /usr/bin/perl\r - auf der Konsole steht dann immer /usr/bin/perl^M.\r\n durch jeweils \n zu ersetzen. Doch, wie macht man das am Besten ohne viel Aufwand? Der folgende Befehl zeigt, wie es sehr einfach geht, eine einzelne Datei entsprechend umzuwandeln:perl -pi -e 's/\r\n?/\n/' foo.pl
Thread stack overrun: 4992 bytes used of a 131072 stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack.mysqladmin shutdown und anschließend mysqld_safe & (als root ausführen, z.B. mit sudo) einen Neustart von MySQL hinlegen.rainboxx Matthias Dietrich
Königsallee 43
71638 Ludwigsburg
"Das Stoppschild kennen Sie aus dem Straßenverkehr. Es heißt nicht "Durchfahrt verboten" oder "Straße gesperrt". Es heißt man soll anhalten, sicherstellen, dass keiner kommt, und dann in Ruhe weiterfahren."
"Vergleichbar wäre, ein Polizist überrascht einen Vergewaltiger auf frischer Tat, und statt sich auf ihn zu stürzen, errichtet er einen Sichtschutz, damit zufällig vorbeikommende Passanten die schrecklichen Bilder nicht unfreiwillig ansehen müssen."
Sehr geil und sehr passende Vergleiche! Hört rein.
var element = new Array(
new Array( 0, 1, 1, 0 ),
new Array( 1, 0, 1, 0 )
);
Mit zwei verschachtelten for-Schleifen kann man nun schön über das zweidimensionale Array drübergehen und die Elemente in das Koordinatensystem an die entsprechende Stelle malen.Soweit, so gut. Es kam dann der Augenblick, als ich ein neues Element mit nur einem Punk auf der x-Achse definiert habe:
var element = new Array(
new Array( 1 ),
new Array( 1 )
);
Dieses Element wurde nie gezeichnet, weil Javascript aus irgendeinem Grund die Anzahl der Elemente in der zweiten Dimension des Arrays als undefiniert ansah. Hier mal ein Beispiel:
var element = new Array(
new Array( 0, 1, 1, 0 ),
new Array( 1, 0, 1, 0 )
);
alert(element[0][1]); // --> "1"
var element2 = new Array(
new Array( 1 ),
new Array( 1 )
);
alert(element2[0][0]); // --> "undefined"
Eine ganze Weile habe ich nach dem Problem gesucht, weil ich einfach keines sehen konnte. Klar, für mich ist hier auch immer noch keines ersichtlich und ich würde das Verhalten als Bug ansehen. Warum Javascript einen einzelnen boolschen Wert im Array als leer ansieht, ist mir nicht verständlich.Die Lösung war dann, den boolschen Wert als
String anzugeben, was IMHO ein wenig doof ist (und natürlich auch mehr Schreibarbeit bedeutet, solange die Elemente noch von Hand definiert werden. Der Vollständigkeit wegen hier ein Komplettbeispiel:
var element = new Array(
new Array( 0, 1, 1, 0 ),
new Array( 1, 0, 1, 0 )
);
alert(element[0][1]); // --> "1"
var element2 = new Array(
new Array( 1 ),
new Array( 1 )
);
alert(element2[0][0]); // --> "undefined"
var element3 = new Array(
new Array( "1" ),
new Array( "1" )
);
alert(element3[0][0]); // --> "1"
Vielleicht kann mir jemand auf die Sprünge helfen, warum Javascript dieses Verhalten an den Tag legt. Ich würde das gerne mal wissen :).Ach ja, das Ganze habe ich bisher nur im Firefox 3.0.11 getestet; wie es in den anderen Browsern aussieht, kann ich derzeit nicht sagen.
Bei Johannes Kleske habe ich ein interessantes Zitat aus der SZ gelesen:
"Wenn dieses Gesetz in Kraft tritt, wird es nicht Kinder vor Missbrauch schützen, nicht Täter vor sich selbst schützen oder dingfest machen, nicht Neugierige davor schützen, straffällig zu werden. Es wird nicht einmal etwas werden, mit dem die CSU irgendwen vor sich hertreiben kann.
Das alles ist sehr weit weg. Weit weg von den Differenzierungen der Fahnder, der Therapeuten und der Psychologen. Es ist lediglich nah dran an der Emotion des Bürgers. Es gibt nichts, was die Leute so leer und wütend macht wie gequälte Kinder, nichts, was einen so fassungslos macht wie Mitbürger, die ihre Nachkommen mit Plastiktüten, Kameraobjektiven, Besenstielen, Flaschenhälsen und dem eigenen Körper traktieren.
[...]
Die Beschwörung einer organisierten Jagd ist also nur ein Wahlkampf-Tool. Hilfreicher wäre, wenn Ursula von der Leyen da ansetzen würde, wo ihre Kompetenz liegt, in dem Ort, der einen Großteil der Täter auch im Internetzeitalter beherbergt: in der Familie."
Ich empfehle jedem, den Artikel bei der Süddeutschen Zeitung durchzulesen. Weitere Informationen gibt es auch immer wieder im Odem Blog zu dem Thema, oder man liest bei SpOn.Was ist Padre?
Wie der Name bereits sagt, ist es eine Perl-Applikation zum Entwickeln und Refactoring. Ja, eine Perl-Applikation, nicht eine Applikation zum Entwickeln von Perl-Programmen, was ich zuerst gedacht habe. Die unterstützten Sprachen sind vielfälltig, ich habe allerdings keine Auflistung gefunden, welche Sprachen tatsächlich unterstützt werden - leider.
Was kann Padre?
Viel. Fast so viel wie Eclipse mit dem EPIC-Plugin. Hier eine Auflistung:
Syntax Checking
Syntax Highlighting
Auto indent (auch mit perltidy)
Inkrementelle Suche
Bracket matching
Folding
Variablenauflistung
Codebrowser
Debugging mit Stepping, Breakpoints und Watches
Suggest & complete
Fehleridentifizierung
Interaktive Shell
Code snippets ("Templates")
...
Ein großer Vorteil ist auch die Fehlerbehandlung, was hier als "Fehleridentifizierung" aufgeführt ist. Dies bedeutet, dass Fehler (z.B. nicht-deklarierte Variablen bei "use strict") nicht nur angemeckert und die entsprechende Perl-Fehlermeldung gezeigt wird. Mehr noch, die Fehlermeldungen werden angeschaut und es wird versucht, Tipps zu geben, was falsch ist und vor allem, was man anstelle dessen machen sollte (nämlich nicht "use strict" entfernen!). Dies scheint recht gut zu funktionieren und ist vor allem für Anfänger im Perl-Umfeld geeignet.
Padre ist komplett in Perl - und portabel!
...bis auf die Umsetzung der GUI, dabei wurde wxWidgets verwendet, was in C geschrieben ist. Das hat den Vorteil, dass es den nativen Windowmanager vom jeweiligen System (Mac OS X, Linux, Windows) nutzt und sich die Anwenung somit perfekt in das System einbindet (fast perfekt - dazu aber weiter unten mehr). Wie angesprochen, läuft die Anwendung dank dem Aufbau auf Perl auf den gängigen Systemen wie Mac OS X, verschiedenen Linux-Distributionen und Windows. Unter Linux ist dies abhängig davon, wie der Distri-Herausgeber die wxWidgets-Bibliothek zur Verfügung stellt.
Ebenfalls ein Vorteil der Perl-Basis ist: Man kann es beliebig erweitern! Der Code liegt (natürlich) im Source vor und man kann diesen leicht verändern und erweitern, sofern man Perl kann. Kleine Hacks, oder Anpassungen an den eigenen Workflow können wenn nötig hinzugefügt werden.
Caveats unter Mac OS X
Während des Vortrags habe ich begonnen, Padre auf meinem MacBook Pro zu installieren - es gibt eine kurze Anleitung auf der Padre-Seite. Leider hatte ich eine alte Version von wxWidgets drauf und musste diese erst über die Macports updaten, was erstmal eine Weile gedauert hat. Danach mussten noch ein paar Module installiert werden, was sich als etwas problematisch herausstellte.
Das Padre-Modul hat einige Abhängigkeiten. Nachdem die Installation dieser Module nach einer Weile abgebrochen war, habe ich die Installation (der Module) nocheinmal gestartet, um nur die Module zu sehen, deren Installation fehlgeschlagen war. Es waren zwei oder drei, die ich dann einzeln versucht habe, zu installieren, was nach ein paar Versuchen ohne Änderung funktioniert hatte. Die Tests schlugen erstmal fehl und liefen danach einwandfrei durch - sehr komisch. Leider konnte ich nicht mehr festhalten, welche Module dies waren, da mein UMTS-Modem den Mac zum Lahmen gebracht hat und dieser neugestartet werden musste.
Die Nutzung ist recht einfach, hat aber noch ein paar Probleme mit den Tastatureigenheiten vom Mac. Die Funktion von "Ctrl" unter Linux und Windows liegt unter'm Mac auf der "Cmd"-Taste und Backslashes werden über die Tastenkombination "Alt" + "Shift" + "7" abgesetzt. In Padre liegt allerdings der Rechte-Maus-Klick auf dem Shortcut "Alt" + "7", um für Nutzer, die Tastenkombinationen intensiv nutzen, ein wenig Heimatgefühl zu bieten. Erwartungsgemäß müsste nun bei der Eingabe eines Pipe-Symbols ("|") das Kontext-Menü erscheinen, was allerdings nicht passiert. Erstmal erfreut, wird ein kleines Hello-World-Programm geschrieben. Doch bei der Eingabe eines "\n" für Zeilenumbruch erscheinte bei "\" das Kontext-Menü ;).
Alles noch ein wenig komisch, aber Padre ist ja noch nicht bei Version 1.0 angekommen. Nach einer Weile konnte ich dann auch Backslashes schreiben.
Fazit
Ich werde demnächst desöfteren Padre verwenden, um mich ein wenig einzufinden. Das Werkzeug scheint sehr gut zu sein und eine gute Alternative zu Eclipse. Ich denke zwar nicht, dass ich demnächst voll umsteigen werde, da mir noch die SVN-Integration fehlt - und vor allem in der Art, wie Subclipse es bietet. Für Einsteiger scheint das Tool aber sehr gut zu sein.
Hier gibt es übrigens noch einen Überblick mit Screenshots unter Linux - vielleicht auch einen Blick wert: perl-howto.de

Feed dieses Blogs abonnieren
Neueste Kommentare
Philipp on Schade: kein erweiterter Heise-Newsfeed: Hi, ich wü
Ano Nym on Schade: kein erweiterter Heise-Newsfeed: Ich würde
Jonas on Schade: kein erweiterter Heise-Newsfeed: Ich wäre a
mots on Schade: kein erweiterter Heise-Newsfeed: Ich würd d
Bastian on Zwei Jahre ist es her...: Hej, willk
Heiko W. Rupp on PostgreSQL und Volltextsuche: Im letzten
Josef on Schade: kein erweiterter Heise-Newsfeed: Würde mich
Martin on Schade: kein erweiterter Heise-Newsfeed: ich reihe
Guido on Schade: kein erweiterter Heise-Newsfeed: Dich hätte