seeseekey.net - Invictus Deus Ex Machina

Seit 2007 kann man bei der Ent­wick­lung mit­tels .NET in den Quell­text des Frame­works debug­gen. So kann man Feh­ler fin­den wel­che mit dem Unter­bau zusam­men­hän­gen, was durch­aus mal vor­kommt.

referencesource.microsoft.com

Wäh­rend man in den frü­hen Ver­sio­nen den Quell­text nur mit­tels des Visual Stu­dios anschauen konnte, gibt es nun seit eini­ger Zeit auch eine Mög­lich­keit dies Online zu tun. Auf der Seite referencesource.microsoft.com kann sich der Quell­text des gesam­ten .NET Frame­works pro­blem­los im Brow­ser ange­zeigt wer­den. Lizen­ziert ist das ganze dabei unter der Micro­soft Refe­rence Source License (MS-RSL).

Vor eini­ger Zeit spielte ich mit dem Gedan­ken einen Disas­sem­bler für Mac OS X zu pro­gram­mie­ren. Aller­dings wollte ich nicht alles neu erfin­den und schaute mich des­halb nach einem pas­sen­den Frame­work um. Gefun­den habe ich dabei Capstone.

capstone-engine.org

Dabei han­delt es sich um ein freies, unter einer BSD-Lizenz lizen­zier­tes, Frame­work zur Disas­sem­blie­rung. Über ver­schie­dene Bin­dings kann das Frame­work aus den unter­schied­lichs­ten Pro­gram­mier­spra­chen ange­spro­chen wer­den. So gibt es unter ande­rem Bin­dings für C#, Java, Ruby und Python. Das Frame­work selbst ist dabei in C geschrie­ben. Caps­tone unter­stützt dabei eine Reihe von Pro­zes­sor­ar­chi­tek­tu­ren wie X86, Sparc, MIPS und ARM. Bezo­gen wer­den kann Caps­tone unter capstone-engine.org.

Wel­che Aus­maße das Phä­no­men Flappy Bird mitt­ler­weile ange­nom­men hat kann man sich auf code.org anschauen.

Dort kann man sich durch meh­rere Puz­zle arbei­ten und so Stück für Stück eine eigene Flappy Bird Vari­ante erschaf­fen. Das ganze ist dabei genau genom­men nur ein Kapi­tel über die Soft­ware­ent­wick­lung bei Code.org. im Bei Code.org han­delt es sich um eine Non-Profit-Organisation wel­che vor allen Schü­lern, aber auch ande­ren Inter­es­sier­ten, die Grund­la­gen der Rechen­tech­nik und der Soft­ware­ent­wick­lung bei­brin­gen möchten.

Bei der Theme-Entwicklung für Word­Press wird man des öfte­ren mit der „functions.php“-Datei in Kon­takt kom­men. Viele Funk­tio­nen wel­che man selbst im Schweiße sei­nes Ange­sichts ent­wi­ckelt hat wur­den meist schon von einem ande­ren Ent­wick­ler in ähn­li­cher Form fabri­ziert. Hier setzt die Seite wpfunction.me an.

wpfunction.me

Auf die­ser Seite fin­det man Snip­pets für häu­fig ver­wen­dete Funk­tio­na­li­tä­ten, wie dem Ent­fer­nen der Admin Bar oder dem Regis­trie­ren eige­ner Menüs. Im Ide­al­fall kann man durch sol­che Code­schnipp­sel eine Menge Zeit spa­ren und sich somit auf die wich­ti­gen Sachen bei der Ent­wick­lung sei­nes The­mes konzentrieren.

Unter OpenGL gibt es eine Reihe von Blend-Modi, wel­che sich auf die Kom­bi­na­tio­nen von Tex­tu­ren ver­ste­hen. Das Pro­blem an die­sem Modi ist, das die wenigs­ten Ent­wick­ler die Aus­wir­kun­gen all die­ser Modi im Kopf haben. Für die­sen Zweck gibt es nun eine Web­seite von Anders Rig­gel­sen auf der die unter­schied­lichs­ten Modi getes­tet wer­den kön­nen.

andersriggelsen.dk

Auf der Web­seite kann mit Hilfe unter­schied­li­cher Bil­der (vor­ge­ge­bene oder eigene) mit den unter­schied­li­chen Blend-Optionen gespielt wer­den. Für OpenGL Ent­wick­ler sollte die Web­seite damit ein hilf­rei­ches Werk­zeug darstellen.

Bei EncFS han­delt es sich um eine Imple­men­tie­rung eines Ver­schlüss­lungs­sys­tems für beste­hende Datei­sys­teme. Bei die­sem Sys­tem wird jede Datei für sich ver­schlüs­selt und das dar­un­ter lie­gende Datei­sys­tem genutzt. Neben der Ori­gi­nalim­ple­men­tie­rung von EncFS gibt es auch Por­tie­run­gen in andere Pro­gram­mier­spra­chen. Mit die­sen Por­tie­run­gen kön­nen EncFS ver­schlüs­selte Daten auch unter Java und .NET aus­ge­le­sen werden.

Die Java­va­ri­ante von EncFS trägt dabei den Namen „encfs-java“ und ist auf Git­Hub zu fin­den. Neben die­ser gibt es auch eine Vari­ante für .NET wel­che in C# geschrie­ben ist und auf Bit­Bu­cket zu fin­den ist. Ursprüng­lich han­delt es sich bei „encfs-dotnet“ um eine Por­tie­rung von „encfs-java“. Mitt­ler­weile wurde diese Imple­men­tie­rung aber kom­plett neu geschrie­ben. Wie bei der Ori­gi­nalim­ple­men­tie­rung, han­delt es sich auch bei den Por­tie­run­gen um freie Soft­ware. Die Java-Portierung steht dabei unter der GPL, wäh­rend die .NET Imple­men­tie­rung unter der LGPG steht, was deren Ver­wen­dung fle­xi­bler gestaltet.

Wei­tere Infor­ma­tio­nen gibt es unter:
https://de.wikipedia.org/wiki/EncFS

Wenn man ein Plu­gin für Word­Press ent­wi­ckelt und dabei die Klasse „WP_List_Table“ für die Dar­stel­lung der Lis­ten im Backend nutzt, so gibt es einige Dinge zu beach­ten. Das fängt damit an das man die Klasse „WP_List_Table“ nicht nut­zen sollte, da sie nur für die interne Ver­wen­dung von Word­Press gedacht ist. Statt­des­sen soll die ent­spre­chende Datei unter einem ande­ren Namen in das Plu­gin­ver­zeich­nis kopiert werden.

Eine Instanz der WP_List_Table

Bei Ver­wen­dung der „WP_List_Table“ kann es pas­sie­ren, das der „Übernehmen“-Button nicht funk­tio­niert. Der Grund dafür ist recht sim­pel — der But­ton muss in ein For­mu­la­r­ele­ment ein­ge­bet­tet wer­den. Das könnte dann so aussehen:

<form id="events-filter" method="post">
<?php
$wp_list_table = new Own_List_Table();
$wp_list_table->prepare_items();
$wp_list_table->search_box( __( 'Search users' ), 'project' );
$wp_list_table->display();
?>
</form>

Das For­mu­lar schließt den erzeug­ten Lis­ten­quell­code ein und der But­ton kann wie­der genutzt werden.

Möchte man in einer .NET respek­tive Mono­spra­che einen Anwen­dung schrei­ben wel­che mit der Twit­ter API inter­agiert, so sollte man hier­für eine Biblio­thek nut­zen um den Auf­wand in Gren­zen zu halten.

tweetinvi.codeplex.com

Eine emp­feh­lens­werte Bibli­to­thek in die­sem Bereich ist dabei Tweet­invi wel­che auf Code­P­lex zu fin­den ist. Tweet­invi ist dabei unter der Micro­soft Public License lizen­siert und somit freie Soft­ware. Die Biblio­thek ist dabei pro­blem­los in der Lage meh­rere Mil­lio­nen Tweets zu ver­ar­bei­ten und befin­det sich in akti­ver Ent­wick­lung. Ein ein­fa­ches Bei­spiel um einen Tweet abzu­set­zen könnte dabei so aussehen:

IToken token=new Token(twitterAccessToken, twitterAccessTokenSecret, twitterConsumerKey, twitterConsumerSecret);
ITweet tweet=new Tweet(tweetText, token);
bool success=tweet.Publish();

Damit hätte man den ers­ten Tweet mit die­ser Biblio­thek abgesendet.

Wenn man beim Aus­füh­ren einer Mono-Applikation auf einem Ubuntu-Server Feh­ler­mel­dun­gen wie diese:

Unhandled Exception: System.TypeLoadException: A type load exception has occurred.
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: A type load exception has occurred.

zu sehen bekommt, so lässt sich die­ses Pro­blem meist leicht lösen, indem man die pas­sen­den Mono-Bibliotheken durch Instal­la­tion des Pake­tes „mono-complete“ hinzufügt:

apt-get install mono-complete

Danach sollte die ent­spre­chende Anwen­dung ohne Pro­bleme starten.

Wer im neuen Jahr seine Kennt­nisse in Pro­gram­mier­spra­chen auf­fri­schen will, der sollte es mal mit dem Hello Word Quiz probieren.

Hello World Quiz

Bei dem Quiz bekommt man ein Stück Quell­text zu sehen. Die Auf­gabe ist es nun die dazu­ge­hö­rige Spra­che zu bestim­men. Zu fin­den ist das ganze dabei auf helloworldquiz.com. Das Quiz ist dabei unter der MIT-Lizenz lizen­siert. Der ent­spre­chende Quell­text befin­det sich auf Git­Hub.