Technik, Gothic und Anderes

Technik ist Spiel, Gothic ist ernst und Zeit hat man zuviel

Archiv für 'Applikationen' Kategorie


Simple-Tags Fehler in Deutsch

Geschrieben von skaldrom am 28. October 2007

TaggingDas Simple Tags Plugin ist der Nachfolger von Simpletagging. Dieses Plugin arbeitet mit den neuen Tags in Wordpress 2.3 wunderbar zusammen und bietet einiges an Luxus.

Dieses neue Plugin funktioniert schon ziemlich gut, mit einem kleinen Schönheitsfehler: Beim Hoovern über die Tags wird Sujets und nicht Artikel geschrieben. Ein Bugreport ist bis jetzt leider ohne Reaktion geblieben. Darum: poedit (was für ein Name *fg*) aufgestartet, gesucht, geändert und probiert: Siehe da, es funzt.

Die geänderten Dateien können natürlich hier heruntergeladen werden.

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Blogging | Keine Kommentare »

Blogfever down

Geschrieben von skaldrom am 24. October 2007

Das ist ja ganz super! Blogfever ist down und alle Blogs, die das Widget eingebunden haben sind blockiert. Damit verabschiedet sich dieses Widget von meiner Sidebar…

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Blogging | 3 Komentare »

Moodle Block Resource-Download

Geschrieben von skaldrom am 22. October 2007

Der Moodle Resource Download Block

Moodle Resource Download Block Auf vielfachen Schülerwunsch hin habe ich einen Block für unser Learning Management System Moodle codiert: Den Resource Download Block. Er erlaubt den Download aller Kursdateien und Verzeichnisse in einem ZIP-Archiv. Dieses Zip-Archiv wird wie im Beitrag Zipdateien on-the-fly erstellen mit PHP dynamisch erstellt, da (in der Theorie) jeder Lernende eine andere Kursansicht haben kann.

Einen Block erstellen ist relativ einfach, wenn man dem Block Howto folgt, aber der Teufel liegt wie immer im Detail.

Configwerte

Jeder Block kann verschiedene Konfigurationswerte erfragen und erhalten. Diese unterscheiden sich aber, ob der Block global (pinned, sticky) ist, in welchem er nur von einem Ort aus konfiguruiert wird oder ob er den individuellen Kursen hinzugefügt wurde, wobei dann jede Instanz ihre eigene Konfiguration hat. Ich habe mich für den zweiten Weg entschieden.

Um die Konfigurationsvariablen mit einem Defaultwert zu versehen, muss man sich in der instance_config_print() Methode darum kümmern:

if (!isset ($this->config)) {
    // ... teacher has not yet configured the block, let's put some default values here to explain things
    $this->config->exclusionregexp= block_downloader_default_exclusionregexp();
    $this->config->compression= block_downloader_default_compression();
    $this->config->maxsize= block_downloader_default_maxsize();
}

Die Datei, die das Zip zusammenstellt ist mehr oder weniger ausserhalb von Moodle, da sie nicht “als Block” erscheinen kann. Um da an die Konfigurationsdaten zu kommen, muss man etwas mehr Aufwand treiben. Sie befinden sich base64 codiert in den Tabellen block_instance respektive blocks_pinned für globale Blocks. courseid und instanceid werden dabei vom Link im Block übergeben.

<?php

/**
 * Create the zip on the fly and push it to the browser.
 */


require_once ('../../config.php');
require_once ($CFG->dirroot . '/blocks/downloader/lib/archive.php');
require_once ($CFG->dirroot . '/blocks/downloader/lib/downloadlib.php');
require_once ($CFG->dirroot . '/lib/filelib.php');
require_once ($CFG->dirroot . '/lib/moodlelib.php');
require_once ($CFG->dirroot . '/blocks/downloader/lib/downloadlib.php');

$courseid= required_param('courseid', PARAM_INT); // Course identification
$instanceid= required_param('instanceid', PARAM_INT); // Instance of the block

// Securitycheck
[SNIP]

// Get Config Data
$where= "pagetype = 'course-view' AND visible = 1 AND id=" . addslashes($instanceid);

// Instance?
$blockarr= get_records_select('block_instance', $where . " AND pageid=" . addslashes($courseid));

// Maybe pinned? In this case we have no courseid
if (!$blockarr) {
    $blockarr= get_records_select('block_pinned', $where);
}

if (!$blockarr) {
    error("cannot find block with: " . $where . " AND pageid=" . addslashes($courseid));
    exit ();
}

// Take the first result
$block= array_pop($blockarr);

$configdata= unserialize(base64_decode($block->configdata));

print_r($configdata);

[...]

Dateien pro Kurs abholen

Das Zusammenstellen aller Pfade für Dateien, die ein Benutzer sieht und auf die er Zugriff hat ist echt mühsam. Ich wünsche mir hier ein Bisschen den Servicegedanken: Beispielsweise würde man viel Zeit sparen, wenn der Entwickler mit dem entsprechenden Wissen Funktionen wie can_read($userid, $resourceid) implementieren würde. Zusätzlich wäre man unabhängig vom verwendeten Absicherungsschema. Ich werde das zukünftig in meinen Programmen berücksichtigen.

Reaktionen

Die Community hat - wie meistens bei Moodle - sehr nett auf die Veröffentlichung reagiert. Zwei Tage nach Version 1.0.0 habe ich schon eine Slovakische Übersetzung und diverse Hinweise auf Bugs erhalten.

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Theorie und Schnipsel, Web | Keine Kommentare »

Office 2007 Wordateien (docx) unter (Debian) Linux mit OpenOffice öffnen

Geschrieben von skaldrom am 18. October 2007

Voraussetzungen

Word 2007Office 2007 greift um sich! Immer öfters begegnet man den docx Dateien im OpenXML Format. Die vorgestellte Lösung erlaubt das Öffnen und Ansehen dieser Dateien in OpenOffice. Ob sie allerdings echt Layouttreu sind, habe ich nicht gecheckt. Damit es läuft sollte ein OpenOffice > 2.0 installiert sein → bei mir hats mit 2.2.1 gefunzt.

Vorgehen

Zum Glück wird dee Translator weiterentwickelt. Die entsprechenden Dateinamen müssen einfach angepasst werden. Der Downloadlink sollte generisch sein.

  1. Download des OpenOffice OpenXML Translator - RPM’s von Novell.
  2. Im Verzeichnis drin das RPM entpacken (Dateinamen bitte anpassen):
    rpm2cpio odf-converter-1.0.0-5.i586.rpm | cpio -iv --make-directories
  3. OpenOffice schliessen und die entsprechenden Erweiterungen ins richtige Verzeichnis kopieren:
    cp -r usr/lib/ooo-2.0/* /usr/lib/openoffice/
  4. Die Doku kopieren:
    cp -r usr/share/doc/packages/odf-converter /usr/share/doc/
  5. Mime-XML kopieren:
    cp usr/share/mime/packages/odf-converter.xml  /usr/share/mime/packages/
  6. Mime-Datenbank updaten:
    update-mime-database /usr/share/mime
  7. KDE3 Mime:
    cp opt/kde3/share/mimelnk/application/* /usr/share/mimelnk/application/
  8. Gnome Mime:
    cp opt/kde3/share/mimelnk/application/* /usr/share/mimelnk/application/
  9. Dann noch die Icons:
    cp -r opt/gnome/share/icons/* /usr/share/icons/
  10. Sich freuen!!!

Addition Mai 2008:

Zamzar macht das nun auch online! Ganz stark, und vorallem mit allen Formaten, also auch xlsx (Excel 2007)!

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Desktop, Linux | 4 Komentare »

Blogfever: Kontextsensitiver Linktausch

Geschrieben von skaldrom am 6. October 2007

BlogfeverIch befürchte sehr stark, dass Korsti recht hat und Blogger nur für Blogger übers Bloggen bloggen. Ich möchte daher die Beiträge über das Bloggen zahlenmässig eher klein halten, aber diesen Tip wollte ich nicht für mich behalten.

Mit Blogfever ist ein weiterer, kontextsensitiver Linktauscher für Blogs an den Start gegangen. Der bekannteste ist wohl Blogrush (leider momentan nur in Englisch). Im deutschen Sprachraum gibt es auch noch Blogspeed.

Die Funktionsweise ist elegant und einfach: Man meldet sein Blog an und an Hand der Tags und der Kategorisierung werden Links in einem Widget (siehe rechte Sidebar) zu anderen Blogs dargestellt. Man erhält Punkte für jede Anzeige dieses Widgets und noch viel mehr wenn jemand auf einen Link klickt. Mit diesen Punkten werden nun Links auf das eigene Blog in anderen Widgets angezeigt.

Wieso ich darüber blogge: Weil die Klicktrough Rate so fantastisch ist:

Alle Ihre Schlagzeilen wurden insgesamt 688 mal in anderen Blogs angezeigt und 10 mal angeklickt.

Also satte 1,45%! DAS freut den Blogger, insbesondere weil es interessiertes Publikum ist das durch den Titel des Artikels auf die Seite gekommen ist und nicht durch irgendeinen Taschenspielertrick.

Blogfever hat den Vorteil, dass man das Widget extrem gut anpassen kann. Hat jemand Erfahrungen mit anderen Systemen?

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Blogging | Keine Kommentare »

Wettbewerb für Blogger

Geschrieben von skaldrom am 2. October 2007

MoneyProBlogger (eifrige Verfolger dieses Blogs wissen, dass der Autor dieses Blogs für mich eine Art Vorbild für gewisse Bloggingaspekte darstellt ;-) ) wird drei Jahre alt. Da er viel Googlesaft zu verschenken hat, hat er in einem Posting aufgerufen, Preise zu spenden, was viele auch getan haben. Und wie: über 50′000$..!

Ich hab auch gespendet: Ein Set bester Schweizer Schokolade. Bin mal gespannt ob mir das was bringt und ob der Preis überhaupt angenommen wurde :-)

Auf jeden Fall werden die 50′000$ in den nächsten Tagen und Wochen verschenkt… Wer mitmachen möchte, kann auf der Website vorbeisehen oder den Feed abonnieren.

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Blogging | Keine Kommentare »

Installation von Drupal ohne “CREATE TEMPORARY TABLE” Rechte unter MySQL

Geschrieben von skaldrom am 27. September 2007

Problem

Drupal

Some hosting providers do not grant the MySQL-userright CREATE TEMPORARY TABLES to their customers. Maybe because it’s full moon at the moment and everyone seems a bit crazy. But a href=”http://drupal.org/”>Drupal really wants this right and so a workaround is needed :-(

The error during the installation could be something like this:

user warning: Access denied for user: 'drupal@%' to database 'drupal' query: CREATE
TEMPORARY TABLE missing_nids SELECT n.nid, n.created, n.uid FROM node n LEFT
JOIN node_comment_statistics c ON n.nid = c.nid WHERE c.comment_count IS NULL in
/var/websites/drupal/includes/database.mysql.inc on line 167.

Kind of a Solution

I have written a patch for Drupal 5.2 which should kinda solve the problem. In Drupal, CREATE TEMPORARY TABLES is only used in the db_query_temporary function, found in the file includes/database.mysql.inc, which is a very clean progamming style! Basically, this patch creates a real table instead of a temporary one. The name and the creationdate is stored in an extra table called temporary_table. The cron.php removes these tables on a regular base. If the table already exists, it is dropped.

This patch only works for MySQL and MySQLI and may be a performance loss. I have tested this patch only on a low traffic site and I do not know if there are race conditions. Use it on your own risk…

Addendum

Another solution has been posted at Drupal.org.

Here it is: Patch to use Drupal without the CREATE TEMPORARY TABLES.

To apply it, change into the Drupal base directory and issue patch -p0<drupalwotemptables.patch on the commandline.

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Web | Keine Kommentare »

eLearning etwas anders…

Geschrieben von skaldrom am 26. September 2007

Unter Elearning wird oftmals noch das dröge Lernen von verbugten, sturen CD’s seiner selbst willen verstanden. Einen Schritt weiter geht das Blended Learning und die Learning Management Systems (lms) wie zum Beispiel Moodle.

Es geht aber auch ganz einfach und ganz spassig: AK Kappenberg hat mit WinChemie eine Programmsammlung mit einigen Perlen gratis zum Download ins Web gestellt, und das nicht nur für Chemie!

Der grosse Preis

Bei Der grosse Preis wird die Klasse in mehrere Gruppen eingeteilt, die live und abwechslungsweise gegeneinander Fragen beantworten, die mit dem Beamer projiziert werden. Dabei können die Gruppen Punkte einsetzen, sich beraten, ärgern oder freuen. Der Lerneffekt ist riesig, weil es einfach Spass macht. Die Fragen können mit einem Editor geändert und für jedes Fachgebiet angepasst werden.

Achtung: Damit das Teil läuft müssen die EconNSoft Core Components von AK Kappenberg vorgängig installiert werden, ansonsten gibt es eine nichtssagende Fehlermeldung!

Als nächstes werde ich AK Riddle austesten. Das scheint über das Netzwerk zu funktionieren. Ein Erfahrungsbericht dürfte folgen…

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Desktop, eLearning | Keine Kommentare »

CMS? Erschlag mich!

Geschrieben von skaldrom am 24. September 2007

Der Auftrag

desperateIch möchte für die Website www.oncode.info ein schnuggeliges opensource CMS, das mir ermöglicht, meinen abgesonderten Code irgendwie halbwegs schön zu präsentieren und zum Download anzubieten. Als besondere Extremhürde würde ich zusätzlich gerne den RSS-Feed dieses Blogs anzeigen und irgendein schönes Design übernehmen, da ich die Fähigkeit habe, alles hässlich aussehen zu lassen wenn ich es selbst in die Hand nehme. In Java hingegen möcht ichs nicht, da Tomcat mich nicht mag…

Die Ausführung

Das kann doch nicht so schwer sein! hat sichs gedacht, obwohl mans doch besser weiss. Xoops kenne ich schon und mit Typo3 habe ich auch schon Erfahrungen gesammelt, was Neues sollts schon sein irgendwie. Bei opensourcecms kann man verschiedene OSS CMS ausprobieren (genial! Mit Adminfrontend!) und bei cmsmatrix können ebendiese verglichen werden. Es scheinen also auch schon andere arme Kerle mit diesem Problem konfrontiert worden zu sein. Obwohl Joomla! unterschiedlich gute Schlagzeilen macht, hat es auf den ersten Blick doch gut und vielseitig ausgesehen. Nundenn: Fröhlich eingerichtet, ein Template gesucht und installiert. Das erste Template ging nicht, weil es irgendeine %#*(/+ Sublib brauchte. Ich wollte nicht die nächsten 24 Stunden wirklich nicht mit Suchen verbringen und so habe ich wohl oder übel die zweite Wahl eingesetzt. In dieser zweiten Wahl hatte es ein wunderbares Bildchen, das ich natürlich in liebevoller Kleinarbeit angepasst und verschandelt habe. Tja, nach dem ersten mal herumschrauben im Adminpanel ist es dann leider - wohl von sich selbst angewiedert - verschwunden… Nunja, ok. Man kann in ebendiesem Adminpanel RSS-Feed-URLs eintippen: Hab ich gemacht, aber darstellen ist nicht… Nunja. Ich lade dann halt mal ein Modul herunter und installiere es mit dem Installer. Es erscheint, aber nur genügend lange bis ich es konfigurieren konnte. Danach verschwindet es (wohl zum hässlichen Bildchen) und meine Website wird nur noch halb angezeigt, ohne Fehlermeldung, (sogar im Debug-Modus)… Wahrscheinlich die Rache des J’s im Namen des RSS Aggregatormoduls. Das hat mir gereicht: Ich bin zu dumm… Bin ich schon raus oder was?

Auch von PHPWCMS hört man viel Gutes. Dass aber im Titel der Dokumentationsseite eine Art HTML-Tags dargestellt werden, hat mich doch eher abgeschreckt… Nunja, wahrscheinlich ist es ein designerisches Mittel und absichtlich, aber ich hab auch echt keine Nerven dafür das herauszufinden nach dem Joomla!-Debakel… AddOns gibt es leider auch noch nicht viele… PHPWCMS ist wirklich gut und hat sich im Einsatz bewährt, für mich scheints aber nicht zu sein…

Dritter Versuch: e107. Geiler Name, schöne Site, viele Erweiterungen, aber leider ist die Theme-Site nicht erreichbar. Nunja, vielleicht kommt sie ja wieder (nachdem sie sich mit dem hässlichen Bild und dem J-Aggregatormodul genügend unterhalten hat), aber nachdem ich auf der Pluginsite eine Entschuldigung für die lange Downtime gelesen habe, hats mir gereicht. (Ok, ich gebs zu, viel geschlafen habe ich in letzter Zeit nicht, darum bin ich auch nicht so geduldig, aber das ist eine GANZ andere Geschichte :-) ).

Naja, dann suche ich halt mal weiter… Die Verlockung, selber was Kleines zu schreiben wird aber immer grösser…. Das wäre dann wohl das gazillionste CMS…

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Web | 5 Komentare »

Mediawiki im Intranet: Nur angemeldete Benutzer zulassen

Geschrieben von skaldrom am 18. September 2007

Geschlossenes Mediawiki

restricted Ein Mediawiki im Intranet muss unter Umständen abgeriegelt und ausschliesslich einer geschlossenen Benutzergruppe zugänglich gemacht werden. Wenn man wissen will, welcher Benutzer welche Wikiseite bearbeitet hat, reichen leider die schönen Basic-Authentication Features von Apache nicht aus. Damit Mediawiki alle zur Anmeldung zwingt muss die Datei LocalSettings.php folgendermassen ergänzt werden:
############## Handmade ################
# Specify who can edit: true means only logged in users may edit pages
$wgGroupPermissions['*'    ]['createaccount']   = false;
$wgGroupPermissions['*'    ]['edit']            = false;
$wgGroupPermissions['*'    ]['read']            = false;
$wgGroupPermissions['sysop']['createaccount']   = true;
$wgGroupPermissions['user' ]['edit']            = true;
$wgGroupPermissions['user' ]['read']            = true;

# Logo
$wgLogo                         = "/images/bbbq.gif";

# Pages anonymous (not-logged-in) users may see
$wgWhitelistRead = array ("Spezial:Userlogin", "Wikipedia:Help");

Benutzer

Am Einfachsten ist sicher das Kopieren eines bestehenden Users (eventuell in MySQL). Dabei müssen user_id unduser_name eindeutig sein. Normalerweise braucht es keine weiteren Rechtemanipulationen. Sollen die Benutzer trotzdem gewissen Gruppen zugeteilt werden, gibt die Mediawiki-Dokumentation Auskunft über die Rechte und die Zuteilung zu Gruppen.

Passworte

In Mediawiki 1.10 ist die Passwortverschlüsselung in der Funktion includes/GlobalFunctions.php definiert:

function wfEncryptPassword( $userid, $password ) {
        global $wgPasswordSalt;
        $p = md5( $password);

        if($wgPasswordSalt)
                return md5( "{$userid}-{$p}" );
        else
                return $p;
}

$wgPasswordSalt kann in LocalSettings.php umdefiniert werden, aber normalerweise ist es in includes/DefaultSettings.php auf true gesetzt. $userid ist die user_id aus der Tabelle user.

Das Passwort kann mit php ausgegeben werden (angenommen für user mit id 15):

<?php echo md5('15-'.md5('PASSWORT'))."\n"; ?>

Oder direkt in Mysql:

UPDATE bi_user SET user_password=md5(concat(user_id,'-',md5('PASSWORT'))) WHERE user_id=15;
Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • blogmarks
  • Furl
  • Simpy
  • Spurl
  • YahooMyWeb

Eingeordnet in Web | Keine Kommentare »