Author Archive

Ohne Worte

laptop:~ spahan$ dig spahan.ch ANY

; <<>> DiG 9.6.0-APPLE-P2 <<>> spahan.ch ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20615
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;spahan.ch.            IN    ANY

;; ANSWER SECTION:
spahan.ch.        771    IN    TXT    "v=spf1 mx ~all"
spahan.ch.        771    IN    AAAA    2a01:4f8:131:10e1:ff::73
spahan.ch.        771    IN    A    88.198.81.73
spahan.ch.        771    IN    NS    ns.spahan.ch.
spahan.ch.        771    IN    NS    dns2.nettica.com.
spahan.ch.        771    IN    NS    dns4.nettica.com.
spahan.ch.        771    IN    SOA    ns.spahan.ch. hanfi68.gmx.net. 2010102501 10800 3600 604800 38400
spahan.ch.        771    IN    MX    10 mail.spahan.ch.

;; ADDITIONAL SECTION:
dns2.nettica.com.    2762    IN    A    64.237.45.34
dns4.nettica.com.    2741    IN    A    69.41.170.223

;; Query time: 27 msec
;; SERVER: 192.168.28.1#53(192.168.28.1)
;; WHEN: Mon Oct 25 15:40:24 2010
;; MSG SIZE  rcvd: 268

laptop:~ spahan$ ping6 mail.spahan.ch
PING6(56=40+8+8 bytes) 2002:bc3c:3061:6464:21f:5bff:feec:e8f --> 2a01:4f8:131:10e1:ff::77
16 bytes from 2a01:4f8:131:10e1:ff::77, icmp_seq=0 hlim=58 time=72.459 ms
16 bytes from 2a01:4f8:131:10e1:ff::77, icmp_seq=1 hlim=58 time=72.305 ms

laptop:~ spahan$ wget --prefer-family=ipv6 http://blog.spahan.ch
--2010-10-25 15:36:26--  http://blog.spahan.ch/
Auflösen des Hostnamen »blog.spahan.ch«.... 2a01:4f8:131:10e1:ff::73, 88.198.81.73
Verbindungsaufbau zu blog.spahan.ch|2a01:4f8:131:10e1:ff::73|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/html]
In »»index.html.1«« speichern.

 [  <=>   ] 61.577       107K/s   in 0,6s    

2010-10-25 15:36:28 (107 KB/s) - »»index.html.1«« gespeichert [61577]
 

Doch noch ein paar Worte : “Lol, wtf @n00bs!”

laptop:~ spahan$ dig ipv6porn.com AAAA

; <<>> DiG 9.6.0-APPLE-P2 <<>> ipv6porn.com AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38847
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ipv6porn.com.            IN    AAAA

;; Query time: 22 msec
;; SERVER: 192.168.28.1#53(192.168.28.1)
;; WHEN: Mon Oct 25 15:50:31 2010
;; MSG SIZE  rcvd: 30

flattr this!

Comments Comments Off

Eingetlich sollte alles ganz einfach sein. Server wird ausgebaut, Server wird an den neuen Standort gebracht, Server wird eingebaut, Fertig.

Leider scheint das bei meinem Server nicht so ganz geklappt zu haben. Der Server hatte schon zuvor ein bisschen Schluckauf, aber nachdem der Server umgezogen war, wollte er erstmal gar nicht mehr Hochfahren. Nicht einemal der autimatische Reset über das Hetzner-Web-Interface ging mehr. Der Support hat mich dann nach einigen Mails an eine Remote-Konsole geschaltet, welche aber irgendwie trotzdem nicht mein Server war. Das deutet auf ein grösseres Problem hin, der Support hat sich meine Maschine angeguckt.

Diagnose: Mainboard am Arsch. Also HDs raus, in einen neuen Server eingebaut, soweit so gut. Immerhin konnte ich nun ins Rescue-system booten, und habe gleich mal ein aktuelles Backup gezogen. Dank dem Hetzner-FTP war es kein grosses Problem kurz mal 37 GB an Daten extern zu speichern.

Neuer Server, neues Glück; daher auch ein neues System. Nach der Installation startet der Server nicht mehr, also wieder eine Mail an den Hetzner Support; Diagnose: sda Tot.

Ok, neue sda; System neu installiert, Daten vom backup eingespielt, reboot… Hurra! es funktioniert. Zumindest für etwa eine Woche. Thunderbird meldet mir “interne Server-Fehler” beim check des updates. Also per ssh auf den Server, log files angucken…OMFG! Dem ist die sdb mit den Daten unter dem Arsch weggestorben. Er konnte nicht mal mehr auf die HD zugreifen ohne gleich einen Fehler auszuspucken. Also nochmal den Hetzner support bemüht, die tauschten dann sdb und das SATA-Kabel aus.

Seit diesem Tausch scheint nun alles wieder korrekt zu funktionieren. Aber im Rückblick erscheint das ganze Surreal und auch etwas lustig. Hoffen wir mal, dass dies kein böses Omen für das neue Rechenzentrum war. So, und jetzt werd ich mal versuchen das IPv6 zum laufen zu kriegen (und ja, auch hier gabs noch ein tehnische Problem, das aber dank bisher nicht eingesetztem IPv6 von niemandem bemerkt wurde).

flattr this!

Comments Comments Off

Hetzner hat mir mitgeteilt, dass sie meinen Server nächsten Monat zügeln werden. Daher wird der Server nächsten Monat mal einen Tag offline sein.

Das grösste Problem damit ist der Wegfall des DNS-Servers. Ist kein NS erreichbar, denken viele Mail-Server, dass die Domain nicht existiert, und verwerfen die Mail. Antwortet der NS aber der Mailserver nicht, wird die Mail im Queue für spätere Zustellung behalten.

Das Problem (auch mit anderen PRotokollen) wurde beim design von DNS bedacht. Die RFC diesbezüglich ist eindeutig, Domain-Besitzer MÜSSEN mindestens 2 Authoritative DN-Server bereithalten. Diese sollten in verschiedenen Netzen (AS) beheimatet sein. Ein korolar daraus wäre, dass man NS NICHT auf der Kiste hostet auf der die zu erreichenden Services laufen.

Natürlich gelten diese Regeln immer nur für alle anderen, aber nicht für den Super-Admin Hanspeter. Und jetzt sitze ich in der Tinte. Also woher einen zweiten NS? Im Prinzip brauche ich einfach einen temporären Server, der die Notwendigen Dienste wärend des Umzugs aufrecht hält (DNS, eventuell ein Mail-Proxy?). Zudem kann man diese Gelegenheit auch nützen den betagten Lenny rauszuschmeissen un durch den brandneuen Squeeze zu ersetzen. Squeeze mag noch nicht offiziell Stable sein, aber mein lokaler Squeeze-Server hier macht keine Probleme.

Also woher einen billigen, temporären Zweitserver, den man bei Bedarf hochfährt, und der am besten nichts kosten soll. Amazon to the rescue! in Form von EC2. NAch einer etwas Umständlichen Registrierungs-Prozedur (hey, mein erster Anruf aus den USA…war eine Maschiene), ist die Sache einfach. Einloggen, 10 Minuten nach der BedienerKonsole suchen, Maschienenspezifikationen angeben, und starten. Und schon läuft ein frisch installiertes Fedora irgendwo in den VSA. Kostet mich 0.85$ pro Stunde. Wenn der Server in den nächsten 2 Tagen spuckt, liegt das daran, dass ich die Gelegenheit nutze ein paar Dinge aufzurüsten.

flattr this!

Comments Comments Off

Firefox comes with a set of predefined search plugins. Those are stored inside the Application bundle. Go to /Applications (or wherever your Firefox.app is), right click and choose “Show package content”.
This will open a new window with the Application Data and Binaries. Inside “Content/MacOS/searchplugins” you can find the preset search plugins. You may want remove those not used, I don’t think this has any speed impact, but you never use the wrong one then.

The searchplugins use a open standard which works for multiple Browsers. The default file on my System one see below:

<SearchPlugin xmlns=”http://www.mozilla.org/2006/browser/search/“>
<ShortName>Google</ShortName>
<Description>Google Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width=”16″ height=”16″>data:image/png;base64,[long base64 encoded image]</Image>
<Url type=”application/x-suggestions+json” method=”GET” template=”http://suggestqueries.google.com/complete/search?output=firefox&amp;client=firefox&amp;hl={moz:locale}&amp;q={searchTerms}”/>
<Url type=”text/html” method=”GET” template=”http://www.google.com/search“>
<Param name=”q” value=”{searchTerms}”/>
<Param name=”ie” value=”utf-8″/>
<Param name=”oe” value=”utf-8″/>
<Param name=”aq” value=”t”/>
<!– Dynamic parameters –>
<Param name=”rls” value=”{moz:distributionID}:{moz:locale}:{moz:official}”/>
<MozParam name=”client” condition=”defaultEngine” trueValue=”firefox-a” falseValue=”firefox”/>
</Url>
<SearchForm>http://www.google.com/firefox</SearchForm>
</SearchPlugin>

This is a xml file, and one can use any text editor to edit. We need change 3 lines.

  1. In the second last line starting with <SearchForm> replace http://www.google.com/firefox by https://encrypted.google.com/ (important! NO firefox at end!)
  2. In the line starting with <Url type=”text/html” replace http://www.google.com/search by https://encrypted.google.com/search (including the /search!)
  3. Remove the first Url tag (the one which has suggestqueries in it). Unfortunately it looks like google doesnt offer suggestqueries over https for now. If you do not remove this line, all your typing will search for suggestions at google without https, therefore rendering all the other changes unneeded. Your final query would be https encrypted, but before that it will check for suggestions unencrpyted. If your concerned enough to switch google to https, i assume you dont miss the suggestions anyway.

Thats it. Now your search field uses https. Don’t feel bad about google servers have more load because of this. Google is working on lower the footprint of ssl. So help them debug their stuff.

Side notes: IF you are paranoid, think about remove the 2 Lines after “<!– Dynamic parameters –>”. The first will tell google your FF version, your language setting, and if your FF is the official one. The second one is used to show google if your using google as default search engine. I assume both lines are used to allow Mozilla get money from Google. Since google is a big source of income for Mozilla, I actually suggest to at lest keep the MozParam. They deserve some money for their good work. Setting those lines to static values may help too.

flattr this!

Comments Comments Off

Netatalk ist ein AFP Server für Linux.

Wer schon mal Dateien zwischen Mac-Computern ausgetauscht hat, hat es mit hoher Wahrscheinlichkeit benutzt.
Die installation ist Debiantypisch denkbar einfach: aptitude install netatalk

Als nächstes muss man entscheiden, ob man AppleTalk unterstützen will. Wer keine Uralt-Macs im Netz hat, braucht das nicht. Es handelt sich dabei um ein Relikt aus alten Zeiten, Zeiten als TCP noch nicht das Standard-Protokoll war. Ich werde darauf hier nicht weiter eingehen.

Nun geht es ans konfigurieren des afpd. Die Konfigurationsdateien findet man in /etc/netatalk. Das Freigeben von Dateien und Ordnern ist ein 2-Schritt Prozess.
Zuerst editieren wir /etc/netatalk/afpd.conf. In dieser Datei konfigurieren wir den afpd selber. Jede Zeile der Datei ohne # stellt einen Server dar. Im allgemeinen hat man einen Server:
- -tcp -noddp -advertise_ssh -uamlist uams_dhx.so,uams_dhx2.so
Das erste Feld definiert den Servernamen, “-” ist der default server. Danach folgen die Optionen; wir benützen tcp (-tcp), kein AppleTalk (-noddp) und ssh-advertising (für ältere MacOSx versionen).
die uamlist option spezifiziert welche Methoden zur Authentifizierung benützt werden. In unserem Fall erlauben wir die beiden Diffie-Hellman eXchange Methoden.
Weitere Optionen sind in der /etc/netatalk/afpd.conf oder unter “man afpd.conf” zu finden.

Als nächstes definieren wir die zu veröffentlichenden Ordner.
Die öffentlich sichtbaren Shares sind in der Datei /etc/netatalk/AppleVolumes.default definiert. Dort freigegebene Ordner sieht ein User wenn er die notwendigen Rechte für diesen Bereich hat (Linux-Filesystem-Rechte). Wie bei afpd.conf wird auch hier Pro Zeile eine Freigabe beschrieben.
Per default sind die Home-Ordner der User freigegeben, das sollte vorerst auch reichen.
Jetzt sollte man das netatalk system neu starten /etc/init.d/netatalk restart
Auf einem Mac sollte es nun möglich sein, im Finder über “Connect to server” das Home-Verzeichniss zu mounten.

Damit wäre die Sache fast erledigt. Eines funktioniert nämlich noch gar nicht. Auf dem MacOS taucht der Server zwar automatisch in der Liste der gefundenen Server auf, aber er kann sich dort noch nicht verbinden. Apple verwendet für die “Location Discovery” mDNS. Die Standart-implementierung auf Linux ist avahi. Debian bringt avahi per default mit, daher werde ich hier nicht auf die Installation eingehen. Da netatalk keinen nativen support für avahi mitbringt, müssen wir für den afp-service eine eigene service-xml datei schreiben. Die Datei /etc/avahi/services/afpd.service sollte folgenden Inhalt haben:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 <name replace-wildcards="yes">AFP on %h</name>
 <service>
  <type>_afpovertcp._tcp</type>
  <port>548</port>
 </service>
</service-group>

Nun sollte der Server auch im Finder erscheinen (falls nicht, avahi neu starten). Um sich mit dem Home-Verzeichniss zu verbinden, muss man noch auf “Connect as” klicken.

Ein wichtiger Hinweis.
Dateien die mit “.Apple” beginnen sollte man in ruhe lassen. Diese werden vom afpd gebraucht um ein Apple Filesystem zu emulieren, und wenn diese Weg sind kann es zu komischem Verhalten kommen (im Speziellen wenn man mit Aliases und Links arbeitet).

Als kleine Übung will ich nun noch meinen Torrent-Ordner freigeben. Dieser wird aus dem Netz über das Deluge-Bittorrent Programm gefüllt worauf auch andere User Zugriff haben. Diese sollen sich ihre Dateien ja auch vom server runterladen können.
Dazu müssen wir “Guest Login” im afpd erlauben indem wir uams_guest.so zur uamlist in /etc/netatalk/afpd.conf hinzufügen:
- -tcp -noddp -advertise_ssh -uamlist uams_guest.so,uams_dhx.so,uams_dhx2.so -nosavepassword
Neustart des afpd /etc/init.d/netatalk restart
Diese User sehen noch kein Volume, da sie kein Home-Directory haben. Daher veröffentlichen wir noch das Verzeichnis in /etc/netatalk/AppleVolumes.default:
/home/spahan/deluge/complete/ "downloads"
Dabei ist zu beachten, dass der afpd die Zugriffsrechte von Linux beachtet. Gäste können den Ordner daher nur sehen, wenn die “other”-Attribute Leserecht haben. Will man ihnen Schreibrechte geben, muss man “other” auch Schreibrechte geben (Schlechte Idee!).
Obige Zeile kann zudem zu Problemen führen. Als User spahan kann ich gleichzeitig mein Homedir (/home/spahan/) und auch das deluge-Verzeichniss mounten. Mach ich das gleichzeitig kann das den afpd durcheinanderbringen. Die Man-page sagt explizit, das man keine Volumes verschachteln soll. Das Problem hierbei ist ähnlich wie wenn man die .Apple-Dateien löscht. Solange man aber nur lesend darauf zugreift sollte es keine Probleme geben.

Damit sollte AFP auf Linux funktionieren. Happy Sharing :P
Noch ein paar nützliche Links fürs Troubleshooting:

flattr this!

Comments Comments Off

Ich entwickle für meinen Arbeitsplatz am URZ ein kleines HTML-Interface für die Domain-Administration. Wir verwenden für die Authentifizierung LDAP/Kerberos, was prinzipiell mal toll ist. Da ich zuvor immer nur Name/Passwort Login gemacht habe, ist das ganze erstmals etwas neues, und ich stolpere immer wieder über neue Problemchen. Um anderen die Arbeit zu ersparen, schreibe ich hier ein paar Details aus, die ich dabei gefunden habe.

Dank mod_authnz_ldap ist ein einfaches Login problemlos möglich. Damit kann man einfach alle Domain-User einloggen lassen (require valid-user) oder ldap-typisch spezifische Gruppen.

Damit starten die Probleme aber erst. Die WebApp soll ja mit den User-Credentials auf andere Ressourcen zugreifen können (in meinem Falle den LDAP-Server). Dazu ist etwas Arbeit nötig. Erstmals müssen wir dem Apache erlauben, die User-Credentials für die dauer des Requests zwischenzuspeichern, was mit “KrbSaveCredentials on” in der Apache-Konfig gelingt. Der Apache speichert dann eine Kopie des Tickets in einer temporären Datei , und löscht diese am Ende des Requests wieder. Der Name dieser Datei wird einem Skript als CGI-Parameter KRB5CCNAME mitgegeben. Hier muss man sich darüber klar sein, dass diese Cache-Datei in /tmp steht, und für Server-Admins ziemlich einfach auslesbar sind. Also nur auf vertrauenswürdigen Hosts machen (die genauen Sicherheitsimplikationen werde ich später noch beschreiben)!

Damit kann man jetzt auf dem Hosts Kerberos-Programme wie klist aufrufen muss aber immer die Cache-Datei mit angeben. Vor allem GSSAPI-Zugriffe sind damit noch nicht möglich, da GSSAPI auf die Umgebungsvariablen guckt um den Ticket-Cache zu finden. Daher ist es Notwendig, vor einem GSSAPI-Zugriff die Environment-Variable KRB5CCNAME auf die CGI-Variable KRB5CCNAME zu setzen. Dann klappt es auch mit GSSAPI.

Hier ein kleines Beispielskript um sich mit einem LDAP-Server mit den UserCredentials zu verbinden:


import os
import ldap
import ldap.sasl
from mod_python import apache

#index file
def index(req):
    #we need load the cgi-vars first
    req.add_common_vars()

    req.write("<h1>LDAP-GSSAPI</h1>")
    req.write("<p>kerberos username is %s<br/>kerberos-ticket cache file is %s</p>" % (req.subprocess_env['REMOTE_USER'],req.subprocess_env['KRB5CCNAME']))

    #set environment so gssapi finds our ticket cache.
    os.environ['KRB5CCNAME'] = req.subprocess_env['KRB5CCNAME']

    try:
        conn = ldap.initialize('ldaps://ldap.example.org')
        # only works if environment is set correctly.
        auth_tokens=ldap.sasl.gssapi()
        if conn.sasl_interactive_bind_s('',auth_tokens) == 0:
            req.write( "<p>Successfully connected</p>")
        else:
            req.write("<p>Oopsy, somethign went wrong.</p>")
    except ldap.SERVER_DOWN:
        req.write(print "<p>ldap-server is sleeping. Dont disturb.</p>")
    return apache.OK

flattr this!

Comments Comments Off

Ich wollte ja schon mehrmals an den Chaos Communication Congress fahren. Dieses Jahr hab ich endlich mal keine Ausrede gefunden und bin hin gefahren. Das hat mich ziemlich viel gekostet, aber das war es definitiv Wert.

Ich bin dabei Zweigleisig gefahren. Einerseits Kongress, andererseits Berliner Nachtleben mit meinen Freunden die ebenfalls dort waren. Sie haben das ganze etwas gelassener angegangen und sind meist erst spät Nachmittags am Kongress aufgetaucht, während ich auch nach einer durchzechten Nacht meist um 12h wieder vor Ort war. Daher bin ich wohl am Mate-Konsum-Rekord nicht ganz unschuldig.

Berlin ist nicht umsonst berühmt für sein Nachtleben. Irgendwo ist immer Party , auch um 5 Uhr am Morgen. Und Alkohol ist billig. Kein Vergleich zu Basel. Mein neuer Lieblingsdrink ist der “Mexicana”, ein dem Bloody Mary ähnelnden Drink.

Der Kongress war ein Feuerwerk an Ideen und Erfahrungen. Am meisten Beeindruckt hat mich eine  verblüffend einfache Sicherheitslücke in GSM und der MakerBot (der Replikator ist gar nicht so weit entfernt wie ich immer dachte).

Neben den Sensationen war aber auch Zeit mich weiter zu Bilden. Sehr interessiert habe ich mich da für die Hardwaresachen, speziell auch das ganze mobile Zeugs.

Die ganzen Zensur-Sachen interessieren mich nicht so sehr, ich sehe das ganze als ganze als Entwicklung die dieser Staat machen muss um die bestehende Ordnung zu erhalten. Um das Problem zu lösen hilft es nichts, wenn man versucht die Bürgerlichen Freiheiten auf biegen und brechen zu verteidigen, wir müssen das System viel Tiefer angreifen und verändern (Und genau hier finde ich die MakerBot-Idee absolut Genial. Sie versucht die Industrie zu dezentralisieren, was dann notwendigerweise auch die Eigentumsverhältnisse durcheinander würfelt)

Und das wurde am Kongress im Untergeschoss aka Hackzenter getan. Moral erstmal egal, gehackt wird was gehackt werden kann. Vorstellen kann man sich das ganze als einen Grossen Raum mit hunderten (?) Hackern die dicht gepackt an Tischen an ihren Laptops sitzen und irgendwelche Dinge machen. Setz dich hin, pack deinen PC aus, leg los.Gleich dahinter (etwas kleiner) die MusikLounge, wo man sich auf mit dem Laptop auf Sofas breit macht und rauchend/saufend/musizierend sein Ding dreht.

Dann gab es auch noch die kleinen Highligts die einfach Nett waren; Die singende Teslaspule, selbstgebaute Flugmaschienen und noch viele kleine Spielereien.

Ich kann mich daher dieser Twittermeldung anschliessen und Freue mich aufs nächste mal am 27c3.

flattr this!

Comments Comments Off

Die Schweiz hat heute mal wieder bewiesen, dass ihr humanitäres Bild nichts weiter als eine nette Fantasie ist. Minarette sind böse, aber Kriegswaffen verkaufen ist ganz toll.
Wie viele Menschen sind durch Minarette gestorben? Wie viele Menschen sterben durch unsere Waffen?

Bei solch offenem Rassismus bleibt mir immer die Spucke weg. Das schlimme ist; die meisten werden den Rassismus-Vorwurf weit von sich weisen. Sie werden Ausflüchte suchen und sie natürlich auch finden (jede Wette der Jugo wird in den nächsten Wochen am Stammtisch schon irgendwie Schuld sein).

Die Schweiz hat an diesem Wochenende alle Masken fallen lassen. Das Bild da darunter zum Vorschein kommt ist Hässlich. Ein kleinlicher Waffenschieber, der alles fremde Ablehnt und nur auf sein Geld guckt. Die Rechte verweist ja immer auf die Abzocker in den Finanzzentren, die Gewissenslos ihre Interessen durchsetzten. Dieses Volk gibt es tatsächlich. Nur lebt es mitten in Europa und icht im nahen Osten.

flattr this!

Comments Comments Off

Mal wieder haben meine Freunde von Digital Mayhem Production eine Party geschmissen. Und ich hab mal wieder mein Freivolumen für einen Livestream draufgehen lassen. Diverse DJs waren angesagt, da ich aber erst um etwa 23:00 ankahm wurde, hab ich nur 5½ davon erwischt. Die Location Hauptquartier muss man sich merken, da gehts richtig ab.

Ich hab die Aufnahme mal in 6 Teile gesplittet damit man etwas selektiver Auswählen kann. Die Übergänge sind fliessend.

@Welk, das mit den 666MB hat dieses mal nicht geklappt. Aber immerhin sind es 6 mp3 Dateien :-p

Have Fun, cya next Time :-)

PS: Alle mp3 Files die ich von DMP mache kann man auch hier finden und runterladen. Schmeisst den Link doch mal in euere Bookmarks.

Update: Bevor ich es vergesse, die Livestreams wird man unter http://gnr.spahan.ch:8000/dmp.m3u oder (etwas kürzer) http://häm.ch/dmp finden. Ich guck mal ob ich das irgendwann so hinkriege, dass die alten Sachen dort geloopt werden wenn kein Livestream da ist. Das mit dem Loopen klappt jetzt. Ab sofort ist Radio DMP Archive online unter den 2 Adressen erreichbar. Wir senden 24/7 und es gibt keine Werbeunterbrechungen (nur technische Pausen bei einigen DJ-Wechseln oder Laptop-Abstürzen).

flattr this!

Comments 3 Comments »

Bei meinem abendlichen Strolchzug durchs Netz bin ich über diesen Tweet gestossen.

9+9 = 18 _ 81 = 9*9 coincidence???

Ein bisschen nachgerechnet, nope, kein Zufall. Stimmt auch für andere kleinere Basen. Aber stimmt es auch für grosse Basen? Für alle?

Der Beweis dafür, dass es immer stimmt, ist ziemlich einfach.

Sei b eine Basis in ℕ > 1. Sei x = b-1.  aⁱ bezeichne die Koeffizienten der b-adischen Dahrstellung* von a.

Aus x+x = b-1+b-1 = b + (b-2) = 1*b¹ + (b-2)*b⁰ folgt, dass x+x  durch x⁰=b-2, x¹=1 darstellbar ist.

Dito ergeben sich für x*x = (b-1)*(b-1) = b^2 -2b + 1 = (b-2)*b¹ + 1*b⁰  => x’⁰=1, x’¹=b-2

Somit ist x⁰=x’¹ und x¹ = x’⁰. Was zu zeigen wahr.**

*aⁱ ist die i-te Stelle der Zahl wenn man sie ausschreibt. zB ist die dezimale Zahl 132 durch a⁰=2, a¹=3, a²=1 gegeben.

**endlich mal eine Anwendung für den ganzen Mathe-Quatsch.

flattr this!

Comments Comments Off