Plagiate in (Java) Quellcode finden

fadingLeider scheint bis jetzt niemand eine wirklich freie, gute und lokale Code-Plagiats-Applikation entwickelt zu haben. Ich wäre sehr gespannt, was AST-Vergleiche bringen würden. Nundenn, ein erster und unaufwändiger Vergleich von Quellcode (und bei Programmierprüfungen eventuell mit alten Lösungen) kann schon vieles zeigen. Die einfachste Variante, die ich bis jetzt gefunden habe, ist der CPD copy-paste-detector, der Teil des PMD-Packages ist.

Der CPD braucht nicht installiert zu werden: Herunterladen, entpacken und den Pfad bei den Einstellungen in Control Panel\System and Security\System\Advanced system SettingsAdvancedEnvironmentVariables setzen.

Pfad Setzen in Windows

Pfad Setzen in Windows

Danach eine Kommandozeile öffnen den Computer um Folgendes bitten:

cpd --encoding utf8 --minimum-tokens 200 --files E:\Pruefungen\IB13a\VMKN-226\files > similarities.txt

Das kann auch auf eine Sprache eigegrenzt werden:

cpd --language java --encoding utf8 --minimum-tokens 200 --files E:\Pruefungen\IB13a\VMKN-226\files > similarities.txt

Nun stehen in der Datei similarities.txt die Teile der Dateien, die gleich sind. Weitere Optionen können auf der CPD-Page gefunden werden.

Powerpoint (Office) Presenter App von Microsoft

officeremoteMicrosoft gibt ja ziemlich Gas in letzter Zeit! An allen Fronten (.net, MVC, …) machen sie sympathische Dinge. Nicht nur sympathisch, sondern auch äusserst nützlich ist die Office Remote App für Android. Sie ermöglicht (unter Anderem) das Fernsteuern von Powerpoint-Präsentationen über das Handy. Auf dem PC muss eine offizielle Erweiterung installiert werden und die App nimmt über Bluetooth Kontakt auf. Wenn alles funktioniert hat, dann kann die Präsi mit Hilfe der App gesteuert werden: Vorwärts und rückwärts sind gut erreichbar und als überraschend gut funktionierenden Gag gibt es einen Touch-Laserpointer! Ebenfalls sind die Notizen sind einsehbar plus eine Vorschau ist auch dabei:

or-in-action

Das alles hat ohne Rumpfriemeln funktioniert und ist sogar einfacher zu bedienen als mein Hardware-Presenter-Teil.

Dynamische Mailsignaturen in Apple 10.7 (Lion)

Dynamisches MailWie man in verschiedenen, schon geschriebenen Blogeinträgen sehen kann, ist es mir ein Anliegen, die Welt mit etwas Dynamik zu versehen, zumindest was Mailsignaturen betrifft. Ja, auch in Mac OSX ist das möglich!

Von Haus aus bringt OSX keine Möglichkeit mehr mit, dynamische Signaturen zu erstellen. Entweder, weil es so gedacht war, weil diese Funktion in die Cloud ausgelagert wurde 🙂 oder wegen eines Bugs. Ich habe so ziemlich alles durchprobiert, was dieser Artikel über fortunes und andere Websites beschrieben haben, doch leider läuft es nicht – oder nicht mehr – so.

Erkenntnisse:

  • AppleScripts möchten nicht einfach so mit Tastaturkürzeln versehen werden.
  • Das AppleScript Utility gibt es nicht mehr. Um AppleScripts zu aktivieren muss der AppleScript-Editor geöffnet werden und das Skriptmenü in den Einstellungen aktiviert werden (siehe Abbildung).

Skript-Menü im neuen AppleScript-Editor

Will man doch mittels fortune dynamische Signaturen erzeugen, muss man wie Folgt vorgehen:

  1. Zuerst braucht man fortune. Dies kann man sich beispielsweise per MacPorts beschaffen. Damit MacPorts läuft, muss XCode vom AppStore installiert werden.
  2. Dann sollte man sich eine Zitatsammlung bereit legen, wie im Blogeintrag zu dynamischen Signaturen beschrieben.
  3. Dann muss man den Automator starten und einen neuen Service erstellen.
  4. Grundeinstellung: „Dienst empfängt keine Eingabe in Mail.app
  5. Als Aktion AppleScript ausführen suchen und einfügen.
  6. Das AppleScript:
    on run {input, parameters}
       
        tell application "Mail"
            activate
            make new outgoing message with properties ¬
                {content:do shell script "/Users/linux/Documents/sigs/psignature-mac", visible:true}
        end tell
        return input
    end run

    Natürlich muss der Pfad angepasst werden. psignature-mac ist ein Script mit folgendem Inhalt:

    #! /bin/bash
    echo "  Viele Grüsse"
    echo "     Skaldrom"
    echo "-=-=-=-=-=-=-=-=-"
    /opt/local/bin/fortune `dirname "$0"`/quotes/shorties

    Dann alles speichern und einen Kaffee trinken oder Kekse backen gehen.

  7. Um den Tastaturkürzel festzulegen, muss die Systemeinstellungen geöffnet werden. Dort auf TastaturTastaturkurzbefehle gehen. Der Dienst sollte irgendwo erscheinen und ein Klick auf den leeren Platz rechts davon ermöglicht es, einen Tastaturkurzbefehl einzugeben.
  8. Mail öffnen, Tastaturkurzbefehl (ja, ich mag dieses Wort) drücken und sich freuen.

Es gibt auch eine Lösung für existierende Mails:

on run {input, parameters}
   
    tell application "Mail"
        activate
        get do shell script "/Users/linux/Documents/sigs/psignature-mac"
        copy return & the result ¬
            to theFortune
       
        tell application "System Events"
            tell process "Mail"
                keystroke theFortune
            end tell
        end tell
    end tell
    return input
end run

Klauen ist auch nicht mehr wie früher…

Das Arsenal an Geräten, die ein durchschnittlicher Geek heutzutage mit sich herumschleppt, hat bald den Gegenwert eines kleinen Autos. Wenn früher ein Rucksack geklaut wurde (oder, hmm, ehrlich gesagt, zerstreut wie immer „irgendwo liegen gelassen“ wurde), dann war der Rucksack selbst oftmals das teuerste Ding des ganzen Verlustes. Heutzutage – mit Laptop, Pad, Phone, … – geht ein ganzer Serverraum verloren. Meine Wenigkeit ist so was von Monotasking, dass ich oftmals mit atmen, laufen, verdauen und transpirieren schon an die Grenze komme (darum spreche ich so wenig, weil dann mein Herz aussetzen würde!), wie soll ich dann noch an die 1001 Geräte denken, die ich irgendwie zusammen wischen und mitnehmen sollte? Da ich körperlich auch nicht unbedingt einem Standard-Hulk entspreche, muss ich wohl gegen Diebstahl andere Massnahmen ergreifen.

Vorsorge ist besser als Heulen und Therapie im Nachhinein, darum habe ich jetzt, wo alle Geräte noch um mich herum sind, ein paar Dinge überlegt. Ich kann das nicht genug gewichten: Man sollte etwas tun, bevor die Geräte weg sind.

Weiterlesen

Swisscom Labs mit (beta) Apps und Technik-Infos

swisscom logo[Trigami-Review]
Wie klingt das: „Eine Schweizer Website für Technikaffine mit News, der Möglichkeit als „Early Adopter“ Services, Apps und Neues zu testen, Erfahrungen auszutauschen sowie eine Plattform für Entwickler.“? Passt doch wie die Faust aufs Auge! Und dahinter steht niemand geringerer als die Swisscom selbst: Sie hat die Swisscom Labs ins Leben gerufen. Beim Schmökern merkt man, dass die Site noch neu ist, aber mit sehr viel Enthusiasmus und Aufwand gefördert wird. Mit Wettbewerben, Aktionen wie „Ask the CEO“ und verschiedenen Events wird das Community-Building vorangetrieben. Das lasse ich mir als „Zielpublikum“ natürlich gerne gefallen.

Was gibts auf den Swisscon Labs?

News

Die News, die auf der Site präsentiert werden, sind zum Einen aus der vordersten Front (Beispielsweise „Ein gebogener Multi-Touch-Arbeitstisch„), geekig („Antikes mit «Lego Technic» nachgebaut„) oder aus dem Hause Swisscom selbst (wie „Swisscom und ICTnet prämieren beste Diplomarbeit im ICT-Bereich„). Alles in Allem eine gute und interessante Mischung von Themen, die in einem angenehmen Rhythmus publiziert werden.

Apps

DAS könnte spannend werden: Ein interessantes Sammelsurium aus Android, I-Phone und Web-Applikationen. Hier finden sich Apps von Swisscom und auch von anderen Anbietern. Einige der Apps sind gebrauchsfertig, andere wiederum sind eher Betas. Laut FAQ könnte man hier auch eigene Entwicklungen publizieren, wenn sie gewissen Anforderungen genügen. Diese App-Abteilung hat das Potential, ein Platz für lokale/nationale Applikationen zu werden, die in erster Linie die Schweiz betreffen. In den Markets findet man diese sonst leider eher schlecht, weil sie in der Masse untergehen. Ich glaube nicht, dass die Swisscom einen eigenen, ausgewachsenen App-Market hochziehen möchte, aber vielleicht erhält sie auf diese Art und Weise befruchtende Ideen oder Apps, die das Netz ausnutzen….

Forum

Ein Forum zum Laufen zu kriegen – vorallem wenn die Inhalte nicht sehr kontrovers sind – ist schwer. Die Swisscom hat hier richtig gehandelt und ein einzelnes Forum (ohne Unterthemen) aufgeschaltet. Ich schätze den freundlichen und höflichen Umgangston der in diesem Forum herrscht sehr. Ein sehr angenehmer Gegensatz zu anderen Fach-Plattformen.

Technisch ist es etwas verwunderlich, dass die Links im Forum nicht mit „nofollow“ gekennzeichnet werden. Einige Spammer haben bereits Witterung aufgenommen. Ich bin aber fest davon überzeugt, dass die Admins das bald im Griff haben werden.
Weiterlesen

Jetzt macht auch Google noch ein Programmierwettbewerb

Ich habe mich schon gefreut: Der Würfler zum Linux-Magazin-Wettbewerb ist fertiggestellt und eigentlich bereit zum Einsenden. Etwas enttäuscht habe ich festgestellt, dass das Problem akademisch gelöst und der optimale Spieler bekannt ist. Nun, der Thrill der noch bleibt ist, dass bei nur 100 Spielen auf 50 Punkte der Zufall eine seeeehr grosse Rolle spielt.

Doch zu früh gefreut, jetzt kommt das: Die Google AI-Challenge. Man kann nicht mal was gewinnen, aber das Spiel ist unglaublich genial: Es geht darum, Planeten zu erobern:

Es gibt jetzt schon Starter-Packages für verschiedene Sprachen und das System ist ziemlich offen (für unsere Shell-Krieger 🙂 ). Ab dem 10.09.2010 kann man sich dann offiziell eintragen und losranken.

Ein Programmierwettbewerb vom Linux Magazin

Nachtrag vom 19.08.2010: Ich wurde Opfer von „mod_security“, damit konnte ich keine Artikel mehr editieren, weil ich immer ein „404 Not Found“ präsentiert bekommen habe. DAS ist doch ein Heuler…

Nun, ich habe eine neue Version des Clients unten hingehäng: Stabiler, so dass er auch eine ganze Nacht über viele Stunden und Verbindungsprobleme hinweg weiterspielt.

WuerfelOh nein. Frisch erkältet wollte ich mich auf die Arbeiten stürzen, die eigentlich schon letztes Jahr hätten erledigt sein müssen, und nun das: Das Linux-Magazin veranstaltet einen Wettbewerb für Programmierer! Die Details sind in der Ausgabe 09/10 (auch online) beschrieben und es gibt eine Wettbewerbs-Seite dazu.

Grundsätzlich geht es darum, dass zwei Programme gegeneinander würfeln. Wer zuerst 50 Punkte oder mehr erreicht, hat gewonnen. Ist man am Zuge, so kann man entweder Würfeln oder „Save“n. Bei einem Wurf werden die Augen zu der eigenen Punktzahl hinzugezählt, ausser man würfelt eine 6, dann werden alle Punkte seit dem letzten Save wieder abgezogen. Bei einem Save werden die Punkte gespeichert und der Gegner ist am Zuge.
Weiterlesen

Automatischer Spell-Check in KMail

Als Ortogravieh-Experte bin ich sehr froh für die roten Linien unter den falsch geschriebenen Wörtern, man will ja nicht schon beim ersten Mail den Eindruck eines Dorftrottels hinterlassen :). Leider schaltet sich diese sehr nützliche Funktion bei KMail immer mal wieder aus.

Was bisher geholfen hat:

  • Folgende Pakete müssen installiert werden:
    • spell
    • ispell
    • Lokale Dictionaries: ingerman, inswiss, …
  • Global muss folgendes Häckchen gesetzt sein: SystemeinstellungenLand/Region & SpracheRechtschreibprüfungAutomatische Rechtschreibprüfung in der Voreinstellung aktiviert
  • Das Standardwörterbuch (Default-Dictionary) muss man in der Identität einstellen: KMail → Einstellungen… → Identitäten → Ändern → Erweitert.
  • Beim Schreiben einer Mail muss unten rechts Rechteschreibprüfung: ein stehen.
  • Das aktuelle Wörterbuch kann angezeigt werden bei Ansicht → Wörterbuch.

Bookmarklets: Kleine Helferlein

bookmarkBookmarklets sind eigentlich ganz normale Links, die aber Javascript beinhalten. Sie können aus einer beliebigen Website direkt an den bevorzugten Bookmark-Ort (Toolbar, Menü, Sidebar, …) gezogen und verwendet werden. Die Idee ist so einfach und genial, dass es schon grosse Verzeichnisse für sie gibt. Da sie in Javascript programmiert sind, kann man auch den Quellcode direkt ansehen und für sich anpassen.

Beispiele sind:

  • Das auf der aktuellen Seite markierte Wort nachschlagen, übersetzen, auf der ganzen Seite markieren, …
  • Seitendaten (Bilder, Links, Texte) oder -metadaten (Frische, Grösse, …) auslesen.
  • Seite verändern: (Schrift, Farbe, …)

Hier ein Trivialbeispiel: ddo.com ist ein MMPORG, das den Service „my.ddo.com“ anbietet. Dort können Detaildaten über die Charakteren der Spieler abgerufen werden indem eine spezielle URL nach dem Schema http://my.ddo.com/character/welt/name/ zusammengestellt wird. Das erste Bookmarklet nimmt vom Benutzer Welt und Name entgegen und ruft die entsprechende URL auf (Test: Senthessel auf Ghallanda):

<a href="javascript:void(Tn=prompt('Toon name:',''));void(Sr=prompt('Server:',''));if(Tn && Sr) location.href='http://my.ddo.com/character/'+escape(Sr.toLowerCase())+'/'+escape(Tn.toLowerCase())+'/'">Suche DDO-Toon</a>

Es ist voll bookmarkfähig und sieht folgendermassen aus: Suche DDO-Toon.

Ein zweites Bookmarklet sucht auf einer bestimmten Welt und nimmt als Namen entweder den auf einer Webseite markierten Text oder die Eingabe in einem Dialog:

<a href="javascript:Tn=document.getSelection();if(!Tn){void(Tn=prompt('Toon name:',''))};if(Tn) location.href='http://my.ddo.com/character/ghallanda/'+escape(Tn.toLowerCase())+'/'">Search DDO-Toon On Ghallanda</a>

Beispiel: Search DDO-Toon On Ghallanda

Folgendes Bookmarklet sucht ein entsprechendes Ausbildungsmodul von I-CH (Quelltext anzeigen für die Source 😉 ): Modulsuche auf I-CH

Am besten nimmt man ein bestehendes Bookmarklet und passt es auf seine Bedürfnisse an.


Hier eine Liste der kompletten DDO-Bookmarklets:

Avira Antivir Personal will nicht updaten

aviraDa Windows noch nicht ganz verschwunden ist, muss ich mich ab und an auch damit ein Bisschen herumschlagen. Es rächt sich für die Vernachlässigung , indem es jedesmal wenn es gebootet wird eine zuerst eine halbstündige Updateorgie abzieht.

Einer der Updatewilligen ist Avira Antivir. Avira ist mein bevorzugter Virenschutz, weil es sich schön im Hintergrund hält, seine Arbeit macht und mir nicht allzuweit ins System hineinfunkt. Leider scheinen die Server ab und zu überlastet zu sein und dann werde ich von Windows und Avira generft.

Doch Hilfe naht: In einem Beitrag in der Avira Knowledge Base steht, wie man manuell updaten kann:

  1. Verlinkte Datei downloaden.
  2. Avira Hauptprogramm starten.
  3. Update → Manual Update auswählen.
  4. Die Datei – wie sie ist – angeben.
  5. Und schon sind alle glücklich.