Mittwoch, 5. November 2008

hängengebliebenen Druckauftrag unter WinXP löschen

Problem:
Unter Windows XP bleiben ab und zu Druckaufträge hängen, die sich auch als Administrator und nach einem Neustart nicht löschen lassen (z.B. weil der Drucker nicht mehr erreichbar ist).

Lösung:
- Unter Start-->Ausführen die Dienste-Konsole "services.msc" aufrufen.
- Den Dienst "Druckerwarteschlange" heraussuchen, markieren und oben auf die "Stop"-Schaltfläche klicken; der Dienst wird angehalten.
- Im Windows-Explorer das Verzeichnis "C:\WINDOWS\system32\spool\PRINTERS" heraussuchen und alle darin enthaltenen Dateien löschen; damit sind alle Druckaufträge (auf allen installierten Druckern!) gelöscht.
- In der Dienste-Konsole jetzt den Dienst "Druckerwarteschlange" wieder starten, über die "Play"-Schaltfläche.

Montag, 3. November 2008

iTalc neu installieren

iTalc ist ein Freeware-Programm, mit dem sich ein Klassenraum voller Computer "überwachen" lässt, z.B. um am Bildschirm einem Schüler per "Fernwartung" Tipps zu geben, einen Schülerbildschirm auf den Beamer zu holen, alle Schülerbildschirme zu sperren oder auch alle Rechner mit einem Mausklick herunterzufahren.

Problem:
Eine Neuinstallation (neue Version oder Image von einem anderen Raum) führt häufig, wenn man die richtigen Schritte nicht beachtet, dazu, dass die alten Schlüssel verwendet werden und eine Verbindung zwischen Master und Clients nicht zustande kommt (Clients lehnen Verbindung mit einer Meldung in der Taskleiste ab).

Lösung:

Man muss sowohl den iTalc-Dienst ica aus den Windows-Diensten entfernen (nicht nur deaktivieren!) wie auch (anschließend) das iTalc-Verzeichnis mit den alten Schlüsseln löschen.

Vorgehen:
Besonders bequem und mausklicksparend ist folgendes Vorgehen:

- Batch-Datei "italcdeinst.bat" erstellen mit folgendem Inhalt (am besten auf einem Netzlaufwerk speichern, zusammen mit den Installationsdateien von iTalc):
c:\Programme\italc\ica -unregisterservice
rmdir C:\Programme\italc /s /q
Befehl 1 schmeißt ica aus der Liste der Windows-Dienste raus.
Befehl 2 löscht das Verzeichnis ...\italc mit allen Dateien und Unterverzeichnissen (/s) ohne Nachfrage (/q)


- Batch-Datei "italcdeinst.bat" auf dem Master-Rechner (z.B. der Lehrerrechner) ausführen

- iTalc auf dem Master-Rechner installieren, neue Schlüssel anlegen und dabei das Verzeichnis für den öffentlicher-Schlüssel-Export beachten!

- Batch-Datei "italcdeinst.bat" auf dem ersten Client-Rechner (=Schülerrechner) ausführen.

- Datei "setup.exe" auf dem ersten Client-Rechner ausführen, dabei vorher exportierten Schlüssel jetzt importieren und am Ende den Haken bei "Installationsvorgang speichern" setzen. Im iTalc-Installationsverzeichnis wird dann automatisch eine Datei "installsettings.xml" angelegt.

- Batch-Datei "italcinstall.bat" anlegen (im iTalc-Installationsverzeichnis auf dem Netzlaufwerk) mit folgendem Inhalt:
setup.exe installsettings.xml

Damit wird das iTalc-Setup automatisch mit den Einstellungen des letzten Client-Setups ausgeführt.


- Batch-Dateien "italcuninst.bat" und "italcinstall.bat" nun auf allen Clients ausführen - fertig!

Freitag, 4. Januar 2008

Arktur 4 und Corel PhotoPaint X3

Problem:

Ich hatte auf einem Serververzeichnis einige Fotos (Dateigröße zwischen 300Kb und 5MB) gespeichert und ließ meine 12 Schüler die Fotos auf dem Server öffnen und mit Corel PhotoPaint X3 bearbeiten (mit Kontrastregler spielen usw.). Die Schüler haben in diesem Verzeichnis nur Lese-Rechte.

Nach einiger Zeit musste ich feststellen, dass unser Arktur 4 RC5 komplett abgestürzt war - kein Lesen von irgendwelchen Netzlaufwerken mehr möglich, kein Putty, sogar der Bildschirm am Server selbst blieb schwarz, ein Strg-Alt-Entf am Server bewirkte nichts - nur ein Reset verhalf dem Server wieder zum Leben.

Das ganze passierte 2 Mal, beide Male während der Arbeit mitt Corel PhotoPaint auf einem Serververzeichnis. Seitdem ich anders vorgehe (s.u.), ist der Server kein einziges Mal mehr abgestürzt.

Workaround:
Ich lasse die Schüler den Ordner mit den Bildern jetzt immer zuerst auf den Desktop laden (kein Netzlaufwerk, sondern ja lokal auf dem Client bis zum Logout des Schülers "zwischengelagert") und erst dann das Foto in PhotoPaint öffnen - dann funktioniert alles ohne Probleme.
Die Schüler sollten nur am Ende der Stunde die Fotos wieder vom Desktop löschen, damit sie nicht bei jedem Login/Logout auf den/vom Client kopiert werden müssen.

Sonntag, 13. Mai 2007

Ubuntu mit SquidGuard als Proxy-Server

Vorgeschichte:

Da unsere Versuche mit einem zweiten Arktur-Schulserver als Proxy auf die Dauer nicht erfolgreich waren (Arktur besteht darauf, die Internetverbindung über eine zweite Netzwerkkarte herzustellen, und das hat offenbar unser gesamtes Netz nach einigen Tagen an den Rande eines Zusammenbruchs gebracht - warum ist mir nicht so ganz klar, aber nach Stilllegen des Arktur-Proxys und Einschalten eines Jana-Proxys unter WinXP lief alles wieder), musste eine andere Lösung her.

Aufgabe:
Mit Ubuntu haben wir bisher gute Erfahrungen gemacht, also warum nicht statt Arktur Ubuntu 6.06 LTS installieren, mit aptitude den SquidGuard nachinstallieren (Squid selbst kommt automatisch mit...) und mit diesem unsere Schüler vor Nazi-, Porno- oder sonstigen pädagogisch und auch sonst nicht wertvollen Seiten bewahren?

Vorgehen:
Ubuntu in der Server-Ausgabe (mit Long-Time-Support für Updates) ist schnell und auch für Linux-Laien schnell installiert, etwas mehr Mühe kostet es, mit vi die erweiterten Archive einzutragen, damit man dann - wiederum ganz einfach - mit aptitude den Midnight Commander und SquidGuard nachinstallieren kann. (ausführlichere Beschreibung dieser Schritte folgt später...)

Dann gilt es noch, eine gut gepflegte Blacklist zu laden, damit SquidGuard auch weiß, welche Seiten er sperren soll. (Beschreibung folgt)

Und nun das Interessanteste: Wie muss ich die squid.conf und die squidguard.conf anpassen, damit die Anfragen der Clients jetzt auch wirklich gefiltert werden.

squid.conf:
Hier ist nur wenig zu tun: man muss im Prinzip nur alle Anfragen an Squidguard weiterleiten.

squidguard.conf:
Im Prinzip ist hier auch nicht viel zu erledigen, man muss nur das Prinzip verstehen, was uns einiges an Zeit gekostet hat! Dabei ist es doch so einfach:

...to be continued

Montag, 7. Mai 2007

Netzwerk-route mit Ubuntu

(oder: was das ubuntuusers-Wiki verschweigt)

Problem:

Der Rechner soll in verschiedene Netze (z.B. unterschiedliche VLans nach dem Schema 192.168.0.0, 192.168.1.0, 192.168.2.0 usw.) Kontakt haben. in anderen Linux-Ditributionen ist dafür die Datei /etc/route.conf zuständig - die gibt es unter Ubuntu aber nicht! Wie geht es dann?

Betriebssystem:
Ubuntu-Server 6.06 LTS

Lösung:
Ubuntu speichert die grundlegenden Informationen zum Netzwerk in der Datei /etc/network/interfaces, deshalb gibt es auch keine route.conf mehr.
Diese Datei hat zu jeder im Rechner eingebauten Netzwerkkarte eine eigene "Abteilung". Hier fügt man nun einfach hinter den bestehenden Informationen als neue Zeile die benötigten routing-Informationen nach folgendem Muster hinzu:

route add 192.168.1.0 gw 192.168.0.254

Vorne steht das zweite Netz, dass der Rechner (eigene IP: 192.168.0.1) erreichen soll.
"gw" steht für die Adresse des Gateways (z.B. der Switch), sofern dieses benötigt wird.

Gibt es noch weitere Netze, die erreicht werden sollen, so fügt man einfach beliebig viele weitere Zeilen für jedes Netz hinzu.

Dienstag, 20. Februar 2007

Eigener Webserver mit moodle

Wie installiere ich einen eigenen Webserver und die Lernumgebung "moodle"?

Da die moodle-Seiten auf dem Landesbildungsserver Baden-Württemberg und dem Lehrerfortbildungsserver wenig komfortabel in der Benutzung sind und auch nicht alle Funktionen zur Verfügung stellen (veraltete moodle-Versionen), haben wir uns entschlossen, einen eigenen Server ins Internet zu stellen und einen eigenen moodle-Server darauf zu installieren.

Grundlage
Das Grundsystem für unseren Server stellte der Ubuntu-Server in der Version 6.06.1 (Long-Run-Support) dar. Das System ist kostenlos, der ebenfalls kostenlose Support mit Sicherheitsupdates usw. wird für 3 Jahre gewährleistet, die Installation ist easy:
  • CD einlegen und starten
  • LAMP-System installieren (LAMP = Linux, Apache, MySQL-Datenbank, PHP-Skripsprache), ein paar einfache Nachfragen beantworten
  • fertig
Der Nachteil: nach dem Neustart und dem Login steht einem lediglich ein Prompt zur Verfügung - für Linux-Anfänger doch eher ein Hindernis!

Erweiterung
Dieses Problem lässt sich einfach beheben: man installiert die grafische Umgebung (bei Ubuntu standardmäßig Gnome, auch wenn man KDE gewohnt ist, ist Gnome keine große Umstellung) nach:
  • sudo aptitude aufrufen (= die Paketverwaltung aptitude mit Administratorrechten starten)
  • das Paket "ubuntu-desktop" suchen (mit Strg-C kommt man an das Menü, der erste von der Suchfunktion gefundene Eintrag ist der falsche, die Suche kann man mit Strg-N fortsetzen) und auswählen ("g" drücken)
  • Nochmals mit "g" bestätigen und schon legt die Installation los - einige wenige Teile werden von der Server-CD geladenn, das meiste (einige 100 MB!) lädt sich aptitude aus dem Internet nach!
Fortan steht einem nach dem booten automatisch ein grafischer Login und Gnome zur Verfügung, jetzt kommen auch Linux-Anfänger mit dem System recht problemlos zu Rande und können z.B. weitere Benutzer am Server einrichten oder die automatiuschen Updates konfigurieren.

moodle installieren
Zunächst lädt man sich von moodle.org die aktuelle Version herunter. In der englischen ubuntu-Wiki wird der Installationsvorgang sehr schön und einfach beschrieben: es sind nur wenige Änderungen an Konfigurationsdateien und Rechten auf der Linux-Konsole vorzunehmen, das meiste läuft dann ganz einfach über den Browser ab - bei uns dauerte es knapp 15 Minuten, bis wir einen lauffähigen moodle-server hatten!

Probleme
  1. moodle mailt nicht!
Wenn man bei der ubuntu-Installation den Domain-Namen korrekt angegeben hat und keine Firewall o.ä. (bei Belwue muss man z.B. einen Belwue-eigenen Mailserver als SMTP-Ziel angeben) den Mailversand behindert, sollten die Grundlegenden Mails z.B. an den moodle-Admin oder die Bestätigungsmails für neu eingetragene moodle-Mitglieder direkt versendet werden.
Wenn allerdings in einem moodle-Kurs im Forum ein Eintrag verfasst wird, so wird dieser nicht wie versprochen an alle Mitglieder des Kurses verschickt!
Die Lösung findet sich im Admin-Menü unter dem unscheinbaren Punkt "Mitteilungen": Hier steht die Meldung "Das Cron-Script wurde in den letzten 24 Stunden nicht ausgeführt.", wobei die Worte "Cron-Script" ein Link sind, ein Klick hierauf startet das Script, es erscheinen Textmeldungen auf einer neuen Browser-Seite, jetzt werden alle auf Halde gesammelten Mails verschickt. Dieses Cron-Script will als Cron-Job unter Linux eingetragen sein, die moodle-Hilfefunktion gibt hierfür wieder genaue Anweisungen. Anschließend wird das Script automatisch alle 5 Minuten gestartet.

Weitere Punkte folgen später an dieser Stelle!

Samstag, 4. November 2006

Proxy-Einstellungen in Firefox schützen

Problem:
Beim IE ist mittels GPedit recht einfach die "Verbindungen"-Seite zu sperren, sodass die Schüler die Proxy-Einstellungen nicht verändern können.
Firefox hält sich allerdings nicht an die Einstellungen dieser Seite, sondern verwaltet den Proxy selber. Bis Version 1.5 im Karteireiter Allgemein unter Extras-Einstellungen, seit Version 2.0 im Karteireiter Erweitert-Netzwerk-Einstellungen.
Diese Seite lässt sich zwar global für alle User je Client vorgeben, allerdings können die User die Einstellungen verändern oder stilllegen. Wie lässt sich dies verhindern?

Lösung:
Mit den geeigneten Suchbegriffen lassen sich bereits Beschreibungen für die Problemlösung finden, ich stütze mich hier u.a. auf den Lösungsansatz von Mac-o-Net und Chris Ilias, baue aber unsere spezielle Fragestellung ein.

1. Schritt: Wir basteln uns eine Vorlage.
In einem Texteditor erstellen wir folgende Zeilen:
//
lockPref("network.proxy.backup.ftp","192.168.0.200");
lockPref("network.proxy.backup.ftp_port",8080);
lockPref("network.proxy.backup.gopher","192.168.0.200");
lockPref("network.proxy.backup.gopher_port", 8080);
lockPref("network.proxy.backup.socks","192.168.0.200");
lockPref("network.proxy.backup.socks_port", 8080);
lockPref("network.proxy.backup.ssl","192.168.0.200");
lockPref("network.proxy.backup.ssl_port", 8080);
lockPref("network.proxy.ftp","192.168.0.200");
lockPref("network.proxy.ftp_port", 8080);
lockPref("network.proxy.gopher","192.168.0.200");
lockPref("network.proxy.gopher_port", 8080);
lockPref("network.proxy.socks","192.168.0.200");
lockPref("network.proxy.socks_port", 8080);
lockPref("network.proxy.ssl","192.168.0.200");
lockPref("network.proxy.ssl_port", 8080);
lockPref("network.proxy.http","192.168.0.200");
lockPref("network.proxy.http_port", 8080);
lockPref("network.proxy.share_proxy_settings",true);
lockPref("network.proxy.type",1);
lockPref("browser.startup.homepage","http://arktur.schul-netz.de");
Erklärung:Der Proxy hat die IP 192.168.0.200 und den Port 8080 (wenn nicht, dann einfach abändern). Durch die Vorgabe "lockPref" wird Firefox angewiesen, die Einstellung zu sperren, im entsprechenden Menüfenster sind dann Änderungen des Users (auch mit Admin-Rechten!) nicht mehr möglich - das gleiche gilt übrigens auch für die entsprechenden Einträge in about:config!

Die Datei speichern wir unter "mozilla.txt".

2. Schritt: Wir wandeln die Vorlage um.
(Achtung: Original-Post gilt für alte Firefox-Versionen. Siehe Edit unten!)

Firefox akzeptiert Configurationsdateien nur kodiert (byte-shifting mit einem Versatz von 13), am bequemsten geht das mit dem Automatic Mozilla Configurator, Datei hochladen, umwandeln lassen und als mozilla.cfg abspeichern - und zwar im gleichen Verzeichnis wie die firefox.exe - also im Normalfall unter C:\Programme\Mozilla Firefox.

3. Schritt: Ergänzen der all.js.
(Achtung: Original-Post gilt für alte Firefox-Versionen. Siehe Edit unten!) 
Nun müssen wir Firefox mit der neuen Datei noch bekanntmachen. Wir öffnen in einem normalen Texteditor die Datei all.js aus dem Verzeichnis C:\Programme\Mozilla Firefox\greprefs. Ganz ans Ende der Datei hängen wir die Zeile:pref("general.config.filename","mozilla.cfg");
(bitte danach vorsichtshalber eine Leerzeile freilassen!)

Das war's auch schon! Beim nächsten Start von Firefox sind die Proxy-Einstellungen gesperrt. Und zwar bei allen Usern auf diesem Rechner.

Wenn man das auf mehreren Rechnern im Netzwerk erledigen muss, hilft eine kleine Batch-Datei auf einem Netzlaufwerk (hier als Laufwerk P: gemountet) mit folgendem Inhalt:

copy p:\mozilla.cfg "C:\Programme\Mozilla Firefox" /y
copy p:\all.js "
C:\Programme\Mozilla Firefox\greprefs" /y
pause


Erklärung:
Man beachte die Anführungszeichen! Der Pfad enthält ein Leerzeichen. Damit das Firefox als Teil des Pfades und nicht als fehlerhafte Optionsangabe des Befehls copy angesehen wird, bedarf es der Anführungszeichen!
Die Option /y verhindert eine Nachfrage beim Überschreiben bereits existierender Dateien.
Achtung! Die all.js unterscheidet sich zwischen Firefox 1.5 und 2.0! Man sollte sie also nicht miteinander vermischen!



Edit (04.01.2013):

Das oben Aufgeführte gilt in aktuellen Firefox-Versionen (derzeit: 17.0.1) so nicht mehr! Es geht jetzt einfacher: 
  • Schritt 1 bleibt wie oben beschrieben, allerdings wird die Datei nicht als mozilla.txt, sondern gleich als mozilla.cfg gespeichert, der Byteshift aus dem 2. Schritt ist jetzt überflüssig! Die Datei wird im Verzeichnis C:\Programme\Mozilla Firefox gespeichert.
  • Eine Anpassung der all.js ist nicht mehr notwendig (und auch nur noch schwer möglich, weil sie in der Datei omni.jar verpackt ist), stattdessen speichert man einfach eine Datei mit dem Namen local-settings.js und folgendem Inhalt:

    //
    pref("general.config.obscure_value", 0);
    pref("general.config.filename", "mozilla.cfg");

    in das Verzeichnis
    C:\Programme\Mozilla Firefox\defaults\pref\
  • Die batch-Datei lautet jetzt: 
copy p:\mozilla.cfg "C:\Programme\Mozilla Firefox" /y
copy p:\local-settings.js "
C:\Programme\Mozilla Firefox\defaults\pref" /y
pause

Montag, 1. Mai 2006

Wegbeschreibung mit Google-Maps auf der eigenen Homepage

Problem:

Auf der Homepage unseres Chores möchte ich gerne Hinweise in Kartenform geben, wie man mit dem Auto oder Öffis (=öffentliche Verkehrsmittel) zur Pauluskirche Stuttgart kommt.
Es gibt jede Menge Kartendienste im Internet - nur möchte ich eigentlich nicht von der Homepage eines Kirchenchores auf eine mit mehr oder weniger viel Werbung vollgestopfte Seite verweisen - ich möchte möglichst weitgehend den Inhalt der Seite kontrollieren können. Und das möglichst innerhalb des Kontextes meiner eigenen Seite, nicht unter einer fremden URL!

Lösung:

Ja, ich weiß: Google, die Krake. Überall mischt Google mit und sammelt fröhlich Daten. Andererseits gebe ich meine Daten ja nicht für irgendein Gewinnspiel heraus, bei dem ich tolle Klingeltöne gewinnen kann, sondern ich erhalte echten Mehrwert. Z.B. den Speicherplatz und die Verwaltungssoftware für dieses Blog.
Oder auch Straßenkarten, nach Wunsch verknüpft mit ansehnlichen Luftbildern. Und da wären wir beim springenden Punkt:

Google-Maps (http://maps.google.de/)

Google bietet für seinen Maps-Dienst eine API an, die man kostenlos in seine Homepage einbauen kann. Man muss sich dazu einmalig anmelden und erhält für seine Homepage (gebunden an eine URL) einen Code. Die Anmeldung setzt einen Google-Account voraus und erfolgt hier:
http://www.google.de/apis/maps/

Man erhält einen persönlichen Code, der nur in Verbindung mit der zuvor selbst angegebenen eigenen URL funktioniert (auch nicht mit Unterverzeichnissen dieser URL, also von Anfang an das richtige Unterverzeichnis - falls nötig - angeben!).

Einsatz:

Nun muss die Karte ja in eine Seite der eigenen Homepage eingebunden werden. Das funktioniert im Prinzip recht einfach, die offizielle Dokumentation gibt es hier:
http://www.google.de/apis/maps/documentation/

Für diejenigen, die mit Javascript nicht allzuviel anfangen können, aber schnell ein ansehnliches Ergebnis haben möchten, hier eine kleine Anleitung, das fertige Beispiel kann man unter dieser Adresse bewundern:
http://home.arcor.de/pauluschor/weg.html


Anleitung:


Wir basteln uns eine neue html-Datei oder überarbeiten eine bestehende, entweder in einem Editor mit Quelltextansicht oder einfach im normalen Editor im Windows-Zubehör.

Zunächst muss das Google-Script im html-head eingebettet werden, dort werden auch alle Einstellungen vorgenommen:

<html>
<head>

<title>Wegbeschreibung Pauluschor-Stuttgart</title>

<script src="http://maps.google.com/maps?file=IhrGoogleCode"
type="text/javascript"></script>
<script type="text/javascript">

//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));


Bis hierher muss fast nichts geändert werden, nur der Titel und die Worte IhrGoogleCode, an deren Stelle, vor das schließende Anführungszeichen, kommt der Code, den man von Google erhalten hat.

map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());


Das sind die Kontrollfelder links oben. Mit ihrer Hilfe kann der Anwender die Zoomstufe und wählen und den Ausschnitt verschieben - wenn er dazu nicht einfach Drag&Drop verwenden will. Veränderungen bedarf es bei diesen Zeilen ebenfalls keiner. Man kann sie auch weglassen, dann kann der Anwender eben nicht die Zoomstufe verändern.

map.setCenter(new GLatLng(48.772624055119635,9.153199195861816), 16);

Jetzt wirds wichtig: Hier gibt man an, welcher Kartenausschnitt gezeigt werden soll, genauer: auf welche Geokoordinaten zentriert werden soll (die beiden langen Zahlen, Breite und Länge) und welche Zoomstufe gewählt werden soll (in diesem Fall 16 - ein ziemlich naher Zoom).
Und wie bekommt man die gewünschten Geokoordinaten heraus? Ganz einfach:
http://www.infosports.com/m/map.htm
Der Free Geocoder basiert ebenfalls auf Google-Maps, man zieht die Karte auf die richtige Position, zoomt ein wenig, klickt dann auf den Punkt, auf den später die eigene Karte zentriert werden soll, dort wird ein Marker angelegt, wenn man diesen jetzt anklickt, erscheint ein Fenster mit den Geokoordinaten, die man freundlicherweise einfach herauskopieren kann.
Aber Vorsicht: Der Geocoder gibt Länge, Breite aus, man muss für unsere Zwecke die beiden Zahlen also umdrehen (Breite, Länge)!

var icon = new GIcon();
icon.image = "symkirche.png";
icon.shadow = "schakirch.png";
icon.iconSize = new GSize(40, 59);
icon.shadowSize = new GSize(1, 1);
icon.iconAnchor = new GPoint(20, 30);
icon.infoWindowAnchor = new GPoint(40, 1);


Jetzt gehts schon etwas in die Tiefe: diese Zeilen werden nicht unbedingt benötigt, man kann sie problemlos weglassen!
Wir legen ein Icon an (die Pauluskirche Stuttgart, Dateiname symkirche.png), geben ihm einen Schatten (wollte ich nicht haben, ist in diesem Fall nur ein schwarzer Pixel, Dateiname schakirch.png), definieren die Größe der beiden Grafiken, geben an, an welcher Stelle des Icons sein Ankerpunkt sein soll, an dem es später auf der Karte "befestigt" wird (hier: genau in der Mitte) und an welchem Punkt des Icons das dazugehörige Info-Fenster angedockt sein soll (hier: oben rechts).

var Punkt0 = new GLatLng(48.772624055119635,9.153199195861816);
var Punkt1 = new GLatLng(48.77385436402763,9.155881404876709);
var Punkt2 = new GLatLng(48.769993638392656,9.15459394454956);
var Punkt3 = new GLatLng(48.77490080994553,9.150989055633545);


OK, jetzt definieren wir vier (Anzahl beliebig) verschiedene Punkte auf unserer Karte, der erste ist das Zentrum (die Pauluskirche), die anderen drei eine Bushaltestelle, die S-Bahn-Haltestelle und die Haltestelle der Stadtbahn.

var marker0 = new GMarker(Punkt0, icon);
var marker1 = new GMarker(Punkt1);
var marker2 = new GMarker(Punkt2);
var marker3 = new GMarker(Punkt3);


Aus den vier Punkten werden jetzt Marker (wie beim Geocoder, wenn man auf die Karte klickt), der erste Marker erhält nicht nur die Geokoordinaten des ersten Punktes, sondern auch noch unser Icon von oben - wenn keines definiert wurde, dann , icon einfach weglassen.

GEvent.addListener(marker0, "click", function() {
marker0.openInfoWindowHtml("<div>
<strong>Pauluskirche
</strong></div><div>Paulusstr. 1</div><div>
70197 Stuttgart</div>");

});
map.addOverlay(marker0);

marker0.openInfoWindowHtml("<div><strong>Pauluskirche
</strong></div>
<div>Paulusstr. 1</div><div>
70197 Stuttgart</div>");


Jetzt wird der erste Marker (marker0) tatsächlich auf die Karte gesetzt und ihm auch gleich ein Info-Fenster mitgegeben. Innerhalb der Anführungszeichen steht hier weiterer html-Code: alles, was zwischen <div>...</div> steht, bekommt eine eigene Zeile in diesem Info-Fenster, <strong>...</strong> bedeutet, dass der Text dazwischen fett und etwas größer (je nach Browser) dargestellt wird.
Die Zeile marker0.openInfoWindowHtml steht absichtlich zweimal da: Beim ersten Mal wird definiert, was erscheinen soll, wenn jemand den Marker anklickt. Beim zweiten Mal wird gesagt, dass beim ersten Laden der Seite dieses Info-Fenster bereits geöffnet sein soll. Es kann immer nur ein Info-Fenster zur gleichen Zeit offen sein!

GEvent.addListener(marker1, "click", function() {
marker1.openInfoWindowHtml("<div><b>Bushaltestelle Bismarckplatz</b></div>
<div>Linie 42</div>");
});
map.addOverlay(marker1);

GEvent.addListener(marker2, "click", function() {
marker2.openInfoWindowHtml("<div><b>S-Bahn-Haltestelle Schwabstraße
</b></div><div>Ausgang Seyfferstraße</div><div>alle Linien</div>");
});
map.addOverlay(marker2);

GEvent.addListener(marker3, "click", function() {
marker3.openInfoWindowHtml("<div><b>Stadtbahnhaltestelle
Arndt/Spittastraße</b></div><div>Linie 4</div><div>Linie 9</div>");
});
map.addOverlay(marker3);

}
}

//]]>

Jetzt folgen die restlichen 3 Marker (jeweils nur mit einem marker0.openInfoWindowHtml, schließlich sollen diese Info-Fenster noch geschlossen sein!), schließlich kommen die nötigen Klammern, die ganz oben geöffnet wurden, das Ende des Scriptes und das Ende des html-heads.

So, und jetzt muss das Script nur noch in der eigentlichen "Webseite" geöffnet werden, das geschieht im html-body:

<body onload="load()" onunload="GUnload()" bgcolor="#FFFF99">

<center>

<div>Wie kommt man zur Pauluskirche?</div>

<font face="arial, verdana" size="2">
<div id="map" style="width: 800px; height: 600px;"></div>
</font>

</center>
</body>


Was passiert hier: die beiden Tags onload und onunload stammen von Google, die müssen so da stehen. Dahinter (bgcolor) wird die Hintergrundfarbe der Seite angegeben.
Alles nun folgende wird bei mir zentriert (<center>). Das wirkt sich auch auf die Texte in den Info-Fenstern der Google-Karte aus!!!
Nun folgt die Überschrift meiner Seite (nicht zu verwechseln mit dem Titel!) in einem eigenen Absatz (<div>...</div>).
Dann definiere ich die Schriftart für die Info-Fenster, hier: Arial oder Verdana in der Browserschriftgröße 2.
Die nächste Zeile legt jetzt endlich die Karte an!!! Veränderungen kann man hier an der Größe des Kartenbereichs vornehmen, also an der Breite (width) und der Höhe (heigth), Angaben in Pixel. Ich habe hier Werte genommen, die auf den meisten Monitoren problemlos angezeigt werden müssten.
So, und das wars auch schon. Noch brav alle geöffneten Tags wieder schließen (bis </body>), und schon kann man seine neue Homepage speichern, hochladen und bewundern!

Samstag, 29. April 2006

Epson-Toner im Dell-Drucker

Man kanns ja mal probieren:

Kann man in einen Dell 3000cn die Tonerkartuschen eines Epson 1100 einsetzen?


Zunächst:
Ja, man kann - aber leider nur mechanisch! Drucken kann man damit nicht!

Genauer:
Das Druckwerk der beiden Drucker ist exakt das selbe, die Tonerkartuschen der Drucker sind mechanisch (bis auf eine kleine Kerbe oben rechts, die aber mit ein wenig Geschick nicht weiter stört) identisch. Da wir im Sekretariat einen Epson, im Lehrerzimmer aber einen Dell stehen haben, wollten wir die Bestellung vereinheitlichen und die Kartuschen des Epsons auch für den Dell verwenden.
Zunächst kämpften wir mal wieder mit der sagenhaft fummligen Mechanik des Dell beim Einsetzen der neuen Schwarz-Kartusche. Das Ding wollte wieder einmal nicht einrasten, das passiert allerdings auch bei den Original-Dell-Kartuschen. Schließlich ließ sich der Hebel der Kartusche endlich bewegen und schien einzurasten.

Beim Einschalten des Druckers erwies sich dies aber als falsch, die Kartusche verklemmte beim Diagnosedurchlauf in der Trommel, es kostete uns einige Zeit herauszubekommen, wie die Trommel sich manuell drehen lässt (links ist eine Vertiefung in der äußeren Wand des Druckers, dort lässt sich mit einem Kuli ein Hebel eindrücken, der die Arettierung der Tromel löst), sodass wir die Kartusche wieder entfernen und diesmal korrekt einsetzen konnten.

Der Dell führte korrekt seine Diagnose durch, meldete dann aber: Falscher Typ!
Super: das heißt also, die Epson-Kartuschen funktionieren im Dell nicht, wir müssen immer doppelt für beide Drucker bestellen. Auch eine Verstellung des Menü-Eintrags "Kein Dell-Toner" hilft hier nicht weiter!

Nicht gerade Werbung für Dell, diese Sache. Der Drucker druckt zwar in Farbe sehr langsam, legt auch häufig Zwangspausen zum Kalibrieren ein (habe noch keine Möglichkeit gefunden, den Intervall zu verlängern), die Qualität des Drucks ist aber wirklich ansprechend. Nur ist der Wechsel der Medien (kurz mal eine Klarsichtfolien bedrucken) unzumutbar, trotz ausführlicher bebilderter Anleitung scheitern die Kollegen an diesem Vorgang häufig. Ist ja auch idiotisch, die Medien sowohl am Drucker wie auch im Druckertreiber auswählen zu müssen - eines von beidem vergessen die Kollegen grundsätzlich! Und wenn sie fertig sind, stellen sie am Drucker wieder nicht auf Normalpapier zurück...

Nächstes Mal ein anderer Drucker - zumindest fürs Lehrerzimmer.

Mittwoch, 12. April 2006

Aldi-Schnäppchen

Nein, auch hier geht es nicht um Computer oder Chorgesang, es geht um die heutige Aldi-Anzeige in der Zeitung:

Zu kaufen gibt es nämlich Angelausrüstung:
  • Angeln
  • Köder
  • Angelschnur
  • Bleigewichte
  • usw.
Und für den Fall, dass das mit dem Angeln nicht so hinhaut:
  • Fischstäbchen
  • Schlemmerfilet
  • usw.
Aldi hat das ganz offensichtlich drauf, unterschiedliche Artikel des Sortiments sinnvoll miteinander zu verknüpfen...

Jetzt stellt sich nur die Frage: Bei der nächsten Anzeige mit Reitutensilien (Reiterstiefel, Reiterhose, Reitergerte usw.), was gibt es da für Angebote, wenn das mit dem Reiten nicht so ganz hinhaut? Ungarische Salami...?