Setting Firefox default Home URL by shell script

May 19th, 2010

I had to automatically change the default home URL (i.e. startup homepage) of Firefox on freshly installed Linux machines and surprisingly that was a pain in the *. If there is an easy way to do this, please let me know. The script runs as root as it finishes the install procedure. What I finally did was:

  • run Firefox as user to have FF create the profile dir
  • identify the profile dir (which is sick, but whatyagonnado?)
  • finally set the URL in user.js via user_pref()

And here is the shell script: set_firefox_default_home_URL

HTML5

April 10th, 2010

Ich les grad das HTML5 Buch von Peter Kröner (als Lektor, es kommt erst in ein paar Wochen raus). Was man mit HTML5 — zum Teil auch ganz bequem jetzt schon — machen kann, ist extrem geil. Allein die Geolocation-Api find ich superknorke, die neuen Formular-Elemente sind saupraktisch und lassen sich mit Graceful Degradation heute schon gut einsetzen, die Offline-Möglichkeiten (via Cache-Manifest etc.) sind cool und Canvas ist sowieso total abgefahren. Und die Drag&Drop-API? Magic (wenn auch bissl kompliziert ;)! Google hat Gears nicht umsonst zugunsten von HTML5 aufgegeben.

Kröner argumentiert in einem “Meta-Kapitel”, dass in HTML5 deshalb mehr App-taugliche Elemente einfließen als solche für semantisches Markup (was zum Teil kritisiert wird), weil die treibenden Kräfte hinter HTML5 (u.a. Google und Apple), einfach mehr Interesse an einer App-Plattform haben, mit der sie sich (im Browser) gegen lokale Apps durchsetzen können, sie arbeiten sozusagen daran, die Technologien zu standardisieren und institutionalisieren, die ihr Geschäftsmodell für die Zukunft sichern. Fand ich sehr interessant.

Das Buch gibt einen profunden Einblick, was mit HTML5 heute schon machbar ist und viele Tipps, wie man größtmögliche Cross-Browser-Kompatibilität erzielt. Peter Kröner bietet auch eine Schulung zu HTML5 in der Open Source School (München) an, die nächste ist im Juni. < /werbung> :)

How many TYPO3 experts does it take

March 31st, 2010

to change a light bulb?

Five. One who does it in TypoScript, one who writes an extension, one who bitches about Drupal not being able to handle light bulbs, one who ports the extension to Extbase/Fluid, and one who actually changes the light bulb.

VirtualBox Maschine kopieren

February 20th, 2010

Dass man das .dvi-File nicht einfach kopieren kann, merkt man schnell, wenn man versucht, einer neuen virtuellen Maschine dieses .dvi als Harddisk unterzujubeln. Kopiert man wie folgt, funktionierts:

$ cd ~/.VirtualBox/HardDisks
$ VBoxManage clonevdi some_OS-01.vdi some_OS-02.vdi

Man kann aber auch einer mit cp kopierten Maschine eine neue uuid geben:
$ VBoxManage internalcommands setvdiuuid <VDI-Datei>

TYPO3 Seminars: Seminar title as page title

February 12th, 2010

This sick little piece of typoscript code puts the seminar's title into the page title in TYPO3 (extension seminar manager), put it in an extension template for the page containing the single view plugin:


config.no_cache = 1
config.noPageTitle = 2
page.headerData.5 = TEXT
page.headerData.5 {
dataWrap = DB : tx_seminars_seminars : {GPvar : tx_seminars_pi1 | showUid} : title
wrap3 = <title>Have fun with: {|}</title>
insertData = 1
}

Und wieder bissl Werbung: Schulung zu TYPO3 Extensionprogrammierung in München

TYPO3 Seminars und Indexed Search

January 28th, 2010

Das Problem mit der Suche auf einer TYPO3-Seite, die die Extension Seminars benutzt, ist gemeinhin, dass die Extension indexed_search, die man gerne verwendet, nur gecachte Seiten durchsucht, also nicht die Seminare, Schulungen, Termine etc., weil das Plugin nicht gecaht wird. Die Seminars-eigene Suche aber durchsucht natürlich nur Seminare, nicht die restliche Website. Ich zumindest weiß von keiner Lösung. Ich wollte auf der Website aber genau eine Suchbox, die auf allen Seiten sichtbar ist.

Ins Haupt-HTML-Template hab ich dazu (14 ist die ID der “Such-Landing-Page”):

<form name="mainsearchform" action="index.php?id=14" method="POST">
<input type="text" name="tx_indexedsearch[sword]" size="12" class="mainsearchform">
<a href="#" onClick="document.mainsearchform.submit()">Suche</a>
</form>

Weil ich das Suchwort aber auch noch für die Seminars-suche brauche (ev. könnte man mit JS das Eigegebene auch in zwei verschiedene POSTVARS übergeben? Weiß ich nicht. :), hab ich auf Seite 14 ein Extension-Template platziert:

page.5 = PHP_SCRIPT
page.5.file = fileadmin/path/to/searchhelper.php

Das Skript kopiert einfach die POSTVAR um:
$_POST['tx_seminars_pi1']['sword'] = $_POST['tx_indexedsearch']['sword'];

Auf der Such-Seite (id 14) werden jetzt einfach ein Plugin von indexed_search und eines von Seminar Manager (Event List) platziert, bisschen noch stylen in HTML-Template (Seminars) und CSS und fertig. So siehts bei mir aus: http://www.opensourceschool.de

Falls wem irgendwelche Schwächen oder Sicherheitsmängel zu dieser Lösung einfallen, bitte um Kommentar. :)

Und a bissl Werbung: TYPO3 Schulung in München

aspell Spellchecking Kurzbefehl

October 21st, 2009

function myspell {
  aspell -t -l de_DE -d german -c "$1" -T latin1 --encoding=iso-8859-15
}

-t steht für LaTeX, der Rest ist eh klar. Tu das in Deine .bashrc und ruf auf mit:

myspell filename.tex

Wakeup script using BASH associative arrays

September 10th, 2009

Now that we have associative arrays in BASH 4, we can do cool stuff like:

#!/bin/bash

declare -A MAC_ADDR

MAC_ADDR[myhost01]=00:19:d1:b5:a2:aa
MAC_ADDR[somehost02]=00:30:18:af:f3:47

#------------------------------------

echo_known_hostnames() {
 echo "Known hosts: ${!MAC_ADDR[@]}"
}

[ $# -eq 0 ] && {
 echo "Usage: $(basename $0) hostname"
 echo_known_hostnames
 exit 0
}

HOST="$1"
[ -z "$(grep $HOST <(echo ${MAC_ADDR[@]}))" ] || {
 echo_known_hostnames
 exit 1
}

TARGET=${MAC_ADDR[$HOST]}

[ -n "$TARGET" ] && {
 /usr/sbin/etherwake $TARGET
}

# had to set suid-bit on etherwake
# so that users can use this... ;/

(Keyboard)Macro in Xemacs auf Taste legen

August 25th, 2009

Nimm auf mit:
C-x (
[jetzt machst Du Dein Zeugs]
C-x )

M-x name-last-kbd-macro
(benutz die Tab-Completion :)
(jetzt vergibst Du einen Namen)

Öffne die ~.xemacs/init.el

M-x insert-kbd-macro
(und wieder, jippie, Tab-Completion :)

Füg nun außerdem dort ein:
(global-set-key [f1] 'name_den_Du_vergeben_hast)

Speicher die init.el ab. Fertig, jetzt liegt es auf der F1-Taste. Klar, wenn man LISP kann… aber wer kann das?? ;p

HTML 5

June 1st, 2009

Es gibt heute einen neuen Draft auf der HTML-5-Developer-Seite des W3C, von zwei Leuten, der eine bei Google, der andere bei Apple, und es ginge doch mit dem Teufel zu, wenn das nicht mit den noch zu inkorporierenden Fähigkeiten zu tun hat, die u.a. mit Google Wave gezeigt wurden…

We can disappear you

May 15th, 2009

Geschäftsidee Idee für eine Fernsehserie: Eine verdeckt arbeitende Gruppe von Internetspezialisten und Hackern bietet als Service, all deine Spuren im Internet zu beseitigen. Bilder von dir werden mit facial recognition software aufgespürt (face.com). E-Mail-Accounts (du hast mehr als einen, und du hast 5-10 vergessene, ich zumindest) werden gelöscht. Blogkommentare, Tweets, Facebook-Account, MySpace-Account, Forenbeiträge, deine Accounts bei [55 beliebige sonstige Web 2.0 Services here], deine PicDrops, deine verwaisten Webspaces von 1998, deine Parship-Mitgliedschaft von vor vier Jahren, deine Accounts bei Torrent-Plattformen (von denen du dachtest, sie seien anonym), die Logs deiner Skype-Chats, deine Google-Illegal-Secret-Traceback-Aufzeichnungen (klar machen die die!), die Cookies in all den Proxies, von denen du nichts weißt, und und und. Alles wird getilgt. Alles wird gelöscht. Du bist fort. Du bist sicher. Du bist frei.

Wär das schön. seufz :)

According to current trends...

May 6th, 2009

Aus einer Diskussion zu einem Artikel über E-Book-Reader für Zeitungen:

Kommentar:
e-Reader: $300
Newspaper: 50 cents.

I know which one I’m more likely to buy…

Antwort:
According to current trends: neither.

gnihi ;)

foreach-ähnliche Konstruktion in der BASH

April 14th, 2009

Hat man Arrays, in denen nur für manche Keys Werte gesetzt sind, ist eine foreach-ähnliche (PHP) Konstruktion praktisch:

unset BLA
BLA[7]=hallo
BLA[22]=welt
for KEY in $(echo ${!BLA[*]}) ; do
echo $KEY - ${BLA[$KEY]}
done

Macht:

7 - hallo
22 - welt

Hilfe...

April 11th, 2009

Ich hab grad mal bei Amazon auf die persönlichen Empfehlungen geklickt. An 5. Stelle wird mir Oracular Spectacular inkl. “Time To Pretend”, “Electric Feel” und “Kids” von Mgmt angeboten. Das macht mir Angst, denn bis vor 2 Tagen wusste ich gar nicht, dass es MGMT gibt, erst als Felix mir sagte, dieses Lied, das mir gefällt, hieße “Kids”, hab ich auf FB, Google und YouTube dazu gepostet/gesucht.

Ein Zufall? Oder ein alarmierendes Cross-Site-Whatever-Info-Harvesting, das ich nicht nachvollziehen kann? Hilfe. :(

Howto concatenate postscript-files

March 26th, 2009

Ja, nö, riesen Spaß gehabt für n paar Stunden, aber es ist halt ECHT so:

In general it is impossible to concatenate several PS programs to get the combined result. (Postscript-FAQ)