Gedanken eines Wombats, gefangen im fensterlosen Großstadtdschungel der weltweiten Vernetzung
Don't wanna be here? Send us removal request.
Text
json in der bash && freifunk
Wer ihn nicht kennt: ‘jq’ ist ein recht mächtiger JSON-Manipulator in shell. Manchmal braucht man aber etwas länger, um ihm zu erklären, was man eigentich will: Die IP-Adressen (einer bestimmten | meiner) Freifunk-Knoten.
mint@mint ~ $ wget -q -O - ${URL} | jq -c ' . as $node| keys[] | $node[.] | { hostname, ip: .network.addresses[] } | [.hostname , .ip] ' | egrep "ffka-knoten123.*\"2a" ["ffka-knoten123-123","2a03:1234:5678:abcd:00aa:1fff:1122:3344"] mint@mint ~ $
2 notes
·
View notes
Text
SSH und httpd auf meinem Freifunk Router
Ich betreibe bei Freifunk Karlsruhe zwei Knoten; zwei kleine TP-Link WR841ND. Genutzt werden diese deutlich mehr, als ich initial gedacht hatte. 8-10 parallele Clients im Peak täglich; 65 GB Traffic im Monat. Alles gut.
Die globale Erreichbarkeit des kleinen uhttpd für Freifunks Statusseite sowie der weltweit lauschende SSHd haben mich schon immer etwas gestört. Nun hab’ ich mich drangesetzt und dies geändert:
root@kiste:~# cat /etc/firewall.user /usr/bin/lua -e " local site = require 'gluon.site_config' os.execute('ip6tables -A input_rule -6 -p tcp ! -s ' .. site.prefix6 .. ' --dport 80 -j reject') os.execute('ip6tables -A input_rule -6 -p tcp ! -s ' .. site.prefix6 .. ' --dport 22 -j reject') " root@kiste:~# /etc/init.d/firewall restart
WWW und SSH sind damit nur aus dem Freifunk-Karlsruhe-Netz erreichbar. Die lua-Hülle hätte man sich auch sparen können. So ist's aber schöner, da die v6-Prefixe direkt aus der site.conf des gulcon-Frameworks übernommen werden.
1 note
·
View note
Text
Kartendarstellung der WLAN-Reichweite (Heatmap)
Ziel: Die Reichweite meines Freifunk-Knotens in der Umgebung auf einer Karte farbig darstellen.
Fakt 1: Alle im GooglePlay-Store hierfür angebotenen Apps sind veraltet, unbrauchbar, fake, kaputt oder instabil.
Fakt 2: Die Idee hatten schon andere. Mit brauchbaren Ergebnissen.
Zwischenergebnis: Mit dieser Android-App (Linkquelle) und dieser OSM-Offline-Umgebung auf Leaflet-Basis lassen sich kurzfristig gute erste Ergebnisse erzielen:

Fakt 3: Eine gute Basis ist erreicht. Potential für Weiterentwicklung besteht.
Technik: Als Accesspoint kommt ein kleiner TP-Link WR841ND zum Einsatz. Dieser steht im 2. OG, innen, direkt an der Außenwand. Der WLAN-Pegel wurden mit einem Nexus 4 (Android 5.1.1) gemessen.
Update 2015-07-17:
Die beiden 12dBi-Antennen wurden an dem AccessPoint verbaut. Die Reichweite hat sich insbesondere auf freier Fläche nach Norden und Westen erhöht. Mehr ist vermutlich aus der 20,- € TP-Link Hardware nicht rauszuholen. Es sei jedoch erwähnt, dass diese Reichweite von 150 Meter aus dem Gebäudeinneren sowie durch ein paar Bäume und Büsche hindurch in dieser Hardwareklasse über meiner Erwartungshaltung liegt. Zufrieden.

Farblegende für beide Grafiken (© OpenStreetMap contributors):
dunkelgrau/violett: nix zu messen
rot: -90 dBi
gelb: -75 dBi
grün: -65 dBi
nächste Zwischenziele:
automatischen Log-Upload zum Server in Gang bringen
Frontend im Web bauen
mehr Daten erheben
Accesspoint-Antennen auf 12dBi-Antennen umrüsten und Veränderung messen
mit Outdoor-Accesspoint mit Richtwirkung messen (z.B. CPE210) wenn mal verfügbar
1 note
·
View note
Text
Was haben alle gegen Vectoring?
Alle meckern über Vectoring. Warum?
Vectoring heißt grob "Glasfaser bis zum KVZ" (FTTC). Von dort geht's auf vorhandenen Kupferkablen via VDSL-Vectoring bis zum Kunden - wenn der Kunde ein paar hundert Meter entfernt wohnt. Bitraten bis zu 100 Mbit/s sind möglich; ein Großteil der Kunden wird jedoch weiter beim günstigeren Tarifen mit Bitraten um die 16 Mbit/s down & 2,3 up verbleiben wollen. Direkt zum Start des Ausbaus einen Ausbau von Glasfaser bis zum Kunden zu fordern (FTTB, FTTH), vervielfacht die Investitionssumme und ist nur dann konsequent, wenn die Faser bis zum Wohnzimmer des Kunden geht (FTTH; =im Haus Rillen in die Wand hauen). Endet die Faser nur im Keller (FTTB), geht’s auch nur via VDSL(100) zum Kunden in die Wohnung. Konsequent wäre es, in Wohngebieten jetzt möglichst überall VDSL-Vectoring ab KVZ zu starten und dann bei jeder Bauarbeit in die Straße Faser vom KVZ bis in die Häuser zu legen. Wenn der Bitratenbedarf und die Zahlungsbereitschaft der Kunden dann irgendwann mal steigen sollte, wird die Faser im KVZ zum Kunden verlängert und die Technik auf beiden Seiten ausgetauscht.
zugegeben...
Für Neubaugebiete sowie Kunden mit großen Entfernungen zum KVZ, großen Mehrfamilienhäusern sowie Gewerbegebieten mögen andere Vorgehensweisen zielführender und zukunftsweisender sein.
zur Klarstellung:
Natürlich ist es wünschenswert überall und flächendeckend großen Bitraten zu haben. Die Kosten für einen flächendeckenden Glasfaserausbau sind jedoch sehr hoch und müssen von irgendjemandem bezahlt werden. Entweder dem Staat/Kommune/Landkreis/... (durch unsere Steuern) oder dem Telekommunikationsanbieter (der es wiederum auf die Produktpreis aufschlägt). Der Anteil an Kunden, welche bereit sind, einmalig viele hundert Euro für einen FTTH-Anschluss zu bezahlen, ist deutlich zu gering. In Gebieten mit großer Bevölkerungsdichte mag sich das rausmitteln. Bei 10++ Haushalten pro Gebäude fallen die Anschlusskosten für den Tiefbauer halt nur einmal an. In Gebieten mit 1-2 Haushalten pro Gebäude sieht’s anders aus.
0 notes
Photo

Für einen Elektrogrill gar nicht mal so schlecht. Und lecker.
0 notes
Link
0 notes
Link
0 notes
Link
0 notes
Link
In diesem Beitrag findet ihr eine Sammlung sehr hilfreicher Tools für Designer und Webentwickler: Slider und Navigationsmenüs für Responsive Websites, Dienste zum Decodieren von URLs und Sonderzeichen, CSS3-Animationen, SVG-Hintergründe uvm.
0 notes
Text
perl DBI: most efficient way to fetch data
my $sth = $dhb->prepare($sql); $sth->execute; my %row; $sth->bind_columns( \( @row{ @{$sth->{NAME_lc} } } )); while ($sth->fetch) { print "$row{region}: $row{sales}\n"; }
Quelle: http://search.cpan.org/dist/DBI/DBI.pm#bind_columns
0 notes
Text
Perl: syntactic sugar
$r = $s||'foo' # if ($s) { $r = $s } else { $r = 'foo' }; $r = $s//'foo' # if (defined $s) { $r = $s } else { $r = 'foo' }; $r ||= $s; # $r = $s unless ($r); $r //= $s; # $r = $s unless (defined $r); $r &&= $s; # $r = $s if ($r); $r = $c ? $s : $t; # if ($c) { $r = $s } else { $r = $t } $c ? $r : $s = $t; # if ($c) { $r = $t } else { $s = $t } $r = $s || $t; # if ($s) { $r = $s } else { $r = $t } $r = $s && $t; # if ($s) { $r = $t } else { $r = $s = undef, 0, untrue, etc. } $c and return $r; # return $r if ($c); $c or return $r; # return $r unless ($c); $c and $r = $s; # $r = $s if ($c); @$r{qw(a b c d)} # ($r->{a}, $r->{b}, $r->{c}, $r->{d})
0 notes