Archiv des Autors: d.weller

India calling

Nachdem Zensursula mal wieder das Beispiel Indien dafür heranzog ihre Internetsperren zu begründen, schrieb ich der indischen Botschaft und beschwerte mich über die laxe Gesetzgebung. Jetzt hab ich eine Antwort erhalten:

*Dear Sir/Madam,*
Please refer to your email expressing doubts about the legal provisions in India for combating child abuse and child pornography.

The contention that there are no laws in India against child pornography and that child abuse is legal in India is totally unfounded and misleading.

The Indian Penal Code and Code of Criminal Procedure, 1973 have several provisions to punish child abuses e.g. Section 354 dealing ith outraging the modesty of a woman, Section 375 dealing with the offence of rape (any act, consensual or otherwise, with a minor is onsidered rape), Section 377 dealing with unnatural acts and offences. These cover the crimes related to the child abuse in a comprehensive manner.

To deal with the cases of child pornography in the electronic form, the Information Technology (Amendment) Act, 2008 – was enacted on 5 February 2009. As per Section 67 sub-clauses B(a) & (b) of this Act, it is a criminal offence in India to publish, transmit, collect, create, seek, promote, advertise, exchange or distribute material in any electronic form depicting children in obscene or indecent or sexually explicit manner. Conviction for such offences is punishable with imprisonment up to 7 years and a fine up to Rs 1 million (Euros 15,000/- approx).  It is an equal offence in India to browse or download any such material and is punishable with the same
sentence and fine.

The sub-clauses B (c) to (e) cover other offences related to online abuse of children.  Full text of the Section 67 B of the said act is given below for your information. German translation of the message is also appended.

*Ashutosh Agrawal*

Leerzeilen sowie die in der Mail enthaltenen Rechtstexte wurden entfernt. Zensursula sagt wiederholt die Unwahrheit zur Förderung eigener Ziele. Das kann man wohl auch als Lüge bezeichnen.

qed

Moodle, MRBS und force login

Ich will im nächsten Schuljahr den Block MRBS im Moodle meiner Schule als Klassenarbeitsordner zur Verfügung stellen. Dabei sollten die Schüler/innen nur sehen können, wann Sie eine KA schreiben und die Berichtsfunktion nutzen, die Lehrer/innen sollten diese eintragen können und die Eltern sollten möglichst ohne ihre Kinder nur lesenden Zugriff haben – nicht jedoch Zugriff auf die Berichtsfunktion.

Leider fehlt eine solche Funktion im Add-on Paket zu Moodle. Dabei ist diese leicht nachzurüsten:

Ich habe in der report.php nun das Folgende stehen (fett gedruckt sind meine Zugaben):

<?php
# $Id: report.php,v 1.8 2008/08/17 23:07:29 arborrow Exp $
require_once(„../../../config.php“); //for Moodle integration
require_once „grab_globals.inc.php“;
include „config.inc.php“;
include „functions.php“;
include „$dbsys.php“;

require_login();
#if ($CFG->forcelogin) {
# require_login();
# }

[…]

Das scheint reibungslos zu funktionieren. Wenn jemand auf den Schalter „Bericht“ klickt, dann zwingt Moodle die Person zum Login. Da der Bericht die Funktion ist, mit der im MySQL Dummheiten gemacht werden könnten, bin ich damit wohl vorerst auf der sicheren Seite.

Dieser Zwang zum Login könnte auch Teil der index.php werden, wenn MRBS für Fremde komplett unlesbar sein soll.

<?php

# $Id: index.php,v 1.2 2007/12/28 05:53:06 arborrow Exp $

# Index is just a stub to redirect to the appropriate view
# as defined in config.inc.php using the variable $default_view
# If $default_room is defined in config.inc.php then this will
# be used to redirect to a particular room.
require_once(„../../../config.php“);; //for Moodle integration
require_once „grab_globals.inc.php“;
include(„config.inc.php“);
include(„$dbsys.php“);
require_login();

[…]

Noch was: Der Gastzugang muss dann ausgeschaltet sein – sonst können Gäste weiterhin den Bericht aufrufen, da diese dem System gegenüber keine Fremden mehr sind. Soll auch das verhindert werden, dann darf die Berichtsfunktion nur dem Admin allein zugeteilt werden.

In die report.php gehört für diesen Fall der folgende Code:

[…]

#check if user is admin
if( ! getAuthorised(2))
{
showAccessDenied($day, $month, $year, $area);
exit();
}

[…]

Selbstverständlich darf das […] in den Codeschnipseln jeweils NICHT mitkopiert werden – das steht hier nur, damit klar wird, dass die jeweilige Datei noch weitergeht.

Mehr war das nicht. Garantie für die Sicherheit und Funktionsfähigkeit von MRBS und Moodle nach der Anwendung dieser Hacks übernehme ich selbstverständlich keine, die Anwendung erfolgt auf eigenes Risiko. Bei mir läuft der Hack seit Juli 2009 ohne Probleme – bei über 700 Buchungen im Monat.

gpick

gpick

gpick ist ein kleines, praktisches Tool, um z.B. aus Webseiten schnell Farben gezielt auszuwählen. Zwar kann der Gimp das auch – aber den zu starten dauert länger.

Die Bedienung ist einfach:

  1. In gpick ein Sechseck anklicken, das die Farbe aufnehmen soll (im Bild oben ist das links oben der Bereich „Swatch“).
  2. Mit der Maus über die Farbe fahren (im Bild oben ist die „Zoomed area“ auf der linken Seite unten zu sehen).
  3. Leertaste drücken – die Farbe wird ausgelesen.

Bei Hardy ist gpick nicht in den Quellen, sondern muss gesondert als DEB installiert werden. Evtl. schafft es die zugehörige Gruppe aber, gpick in Launchpad zu pflegen.

cpio

cpio ist ein nettes Hilfesmittelchen zum Ein- und Auspacken von Verzeichnisinhalten. Dummerweise ist die man page zuerst recht unverständlich, die Dokumentation im Netz jedoch sehr klar, wenn man von so wundersamen Formulierungen wie der Folgenden absieht:

In copy-out mode, cpio copies files into an archive.

Damit ist die Eselsbrücke schon abgebrochen. Warum nicht:

In copy-out mode, cpio copies files out of a directory and to an archive.

Die praktischen Schalterchen im Überblick:

ls | cpio -ov > directory.cpio

Einpacken eines Verzeichnisses ohne Unterverzeichnisse.

find . -print -depth | cpio -ov > dirtree.cpio

Einpacken eines Verzeichnisses mit Unterverzeichnissen.

cpio -iv < directory.cpio

Auspacken des Archivs in das aktuelle Verzeichnis.

cpio -idv < dirtree.cpio

Auspacken eines Verzeichnisbaumes in das aktuelle Verzeichnis.

Beide Schritte, ein- und auspacken, lassen sich auch mit dem Schalter -p (pass mode) kombinieren:

find . -depth -print0 | cpio –null -pvd anderesverz

Die Optionen an find helfen bei der Fehlervermeidung in Kombination mit dem –null bei cpio. anderesverz ist das Zielverzeichnis, in das der Inhalt des aktuellen Verzeichnisses kopiert wird.

find . -print -depth | cpio -ov -H tar  > dirtree.cpio.tar

Der Schalter -H erlaubt die Angabe von Archivformaten – im Beispiel oben wäre das dann tar. Da das aber viel länger ist als

tar cfz dirtree.tar.gz directoryname

das darüber hinaus noch stärker komprimierte Archive erzeugt, ist die Option wohl für die Katz. Die oben angegebene Seite listet allerdings Archivformate, die Historiker durchaus interessieren könnten. Mit cpio bekommt man die dann in den Griff.

Portable Apps unter Wine

… laufen ohne Probleme. Hätte ich nicht gedacht.

ff35_portable

Eine sehr wenig elegante Art, FF3.5 unter Ubuntu Hardy 64 Bit zum Laufen zu überreden – aber immerhin möglich 🙂 Wie es richtig geht, steht z.B. hier (und im Auge zu behalten ist vor allem die Entwicklung hier im PPA).

winscp_portable

Auch WinSCP läuft und Notepad ++ und FileZilla und und und …

portable_ooo31

… OpenOffice 3.1 ebenfalls.

Ubuntu Gutsy

… auch 7.10 genannt. Nicht gerade die neueste Variante, aber für meinen apt-cache in der Schule reicht das, weil der Rechner von Außen nicht zu erreichen ist. Erst in den Sommerferien kommt da ein neuer Rechner hin, vorher find ich nicht die Zeit. Bis dahin wollte ich die alte Kiste noch mit Updates versorgt wissen, die ich über lange Zeit schlicht verschlafen hatte. Die letzten Aktualisierungen lassen sich noch von old-releases einspielen:

sudo su –
cd /etc/apt
mv sources.list sources.list.old
cat sources.list.old | sed ’s/de.archive/old-releases/‘ > sources.list
apt-get update
apt-get upgrade

Bei Fehlermeldungen die sources.list mal auf Zeilen durchsehen, die nicht auf den Suchen und Ersetzen Befehl mit sed passen und im Notfall löschen. Der Server mit den alten Releases ist schnarchelangsam – also ein wenig Geduld mitbringen. Dafür kann man sich dort aber noch ein 4.10er Ubuntu herunterladen 😉

Bildschrumpfede

Hier hab ich ein Skript für imagemagick gefunden, das ein Bild so lange in den Abmessungen schrumpft, bis es eine bestimmte Größe in KB hat. Ich brauch aber meistens keine Größenanpassungen, sondern lediglich eine „Gewichtsreduktion“ schon in den Abmessungen angepasster Bilder.

Ein Script für die Anpassung der Größe einer einzelnen Datei, ohne die Abmessungen anzufassen, könnte so aussehen:

#!/bin/bash
if [ $# -ne 2 ]
then
echo -e „\nusage:  $0 <file size limit> <image>\n“
exit
fi
IMAGE_FORMAT=jpg
FILE_SIZE_LIMIT=$1
IMAGE_IN=$2
BASENAME=`echo ${IMAGE_IN} | cut -d‘.‘ -f-1 `
IMAGE_OUT=${BASENAME}.smaller.jpg
FILE_SIZE=`ls -sk $IMAGE_IN | cut -d‘ ‚ -f1`
if [ $FILE_SIZE -ge $FILE_SIZE_LIMIT ]
then
echo „reducing $IMAGE_IN from: $FILE_SIZE KB to $1 KB“
SIZE=`identify $IMAGE_IN | cut -d‘ ‚ -f7`
S=`echo $SIZE`
echo „SIZE: ${S}“
QUAL=100
while [ $FILE_SIZE -ge $FILE_SIZE_LIMIT ]
do
let QUAL=QUAL-1
echo „Current quality: ${QUAL}“
convert $IMAGE_IN -quality ${QUAL} $IMAGE_OUT
FILE_SIZE=`ls -sk $IMAGE_OUT | cut -d‘ ‚ -f1`
echo „Current filesize: $FILE_SIZE KB“
done
mv $IMAGE_OUT ${BASENAME}.${QUAL}.${IMAGE_FORMAT}
fi

Den obigen Codeschnipsel für eigene Versuche und Anpassungen in eine Textdatei einfügen (nennen wir sie filesize.sh) und diese ausführbar machen.

./filesize.sh 100 bild.jpg

macht dann bild.jpg 100kb groß und speichert das Ergebnis in der Datei

bild.qualitätsstufenangabe.jpg

Oft muss man aber gleich ganze Ordner bearbeiten – was mit dem Script oben auch ginge:

find /pfad/zum/ordner -iname „*.jpg“ -exec filesize.sh 100 {} \;

Meist ist das aber doch viel zu dick aufgetragen, denn ohne Script geht das schnell mal so:

for i in `ls *.jpg`; do convert -quality 80 $i conv_$i; done

Dann schau man sich das Ergebnis an

ls -l conv*.jpg

und schreibt, sollte es nicht passen, halt eine niedrigere Zahl hinter -quality, nachdem man den ersten Durchgang mit

rm conv*.jpg

gelöscht hat. So lange bis es passt. Schnell und dreckig.

Nachdem die Zeilen einmal eingegeben sind, stecken die in der History der Bash und können mit den Cursortasten nach Oben zügig aufgerufen oder noch Tage später mit [Strg] [R] gesucht und gefunden werden.