Έψαχνα εχθές από που θα αγοράσω το βιβλίο Practical Python. Ο παπασωτηρίου το έχει μόλις (!) 47 ευρώ (+ έξοδα αποστολής) και λέει στο στέλνει εντός 4-7 ημερών + (2-3 ημέρες που θα κάνει η έρθει). Το όχι και τόσο αγαπητό Amazon το είχε μόνο σε used μορφή ξεκινώντας από 4 δολάρια! Απογοητεύτηκα γρήγορα πέφτοντας πάνω στην ειδοποίηση ότι τελικά δεν το στέλνουν στην Μπανανία και έτσι εγκατέλειψα και αυτή την προσπάθεια.
Βρήκα όμως το Alibris ένα site που ασχολείται με χρησιμοποιημένα βιβλία και ταινίες, κάνοντας ουσιαστικά τον μεσάζοντα μεταξύ του αγοραστή και του πραγματικού κατόχου του βιβλίου. Όπως δηλαδή και στο Amazon. Μάλιστα πολλά βιβλία υπάρχουν και σε καινούρια - μη χρησιμοποιημένη κατάσταση.
Τελικά παράγγειλα από εκεί το βιβλίο μου, μόλις για 3.87 ευρώ καινούριο! Το αιώνιο κακό είναι τα μεταφορικά τα οποία είναι 14,67 ευρώ για παράδοση εντός δύο εβδομάδων, οπότε το σύνολο 18,54 ευρώ.
Εν ολίγοις, περίπου στον ίδιο χρόνο που θα μου το έστελνε ο παπασωτηρίου και λιγότερα από τα μισά λεφτά θα πάρω το βιβλίο μου. Νεώτερα όταν φτάσει για να δούμε και την κατάσταση στην οποία θα φτάσει!
Recent Posts
Recent Comments
Tags
διάφορα δούρειος ήχος ελληνοφρένια act now art bash checkinstall django donate embedded fsf fun gnome grub howto infowar jabber linux opinion podcast python review search engines sms tip ubuntu ubuntu packages wikia search wikipedia yacyCategories
- Computers (36)
- Photography (1)
- Uncategorized (13)
Archives
Έφτιαξα ένα playlist με όλους τους σταθμούς από το e-radio.gr γιατί ο firefox (βλέπε bloatfox) έχει αρχίσει να είναι πολύ ασταθής τώρα τελευταία και προτιμώ να ακούω τους σταθμούς μου χωρίς crash ![]()
Για τους ενδιαφερόμενους ορίστε και το script που με βοήθησε να το κάνω (αν και δεν είναι και τίποτα φοβερό!):
#!/usr/bin/env python
import re, urllib
HTML = urllib.urlopen(”http://www.e-radio.gr”).readlines()
#print HTML
sstring = re.compile(”(?<=Repository\/Radios\/gr\/)[A-Za-z]+|(?<=\)[A-z0-9., ]+”)
k = 1
for line in HTML:
radios = sstring.findall(line)
i = 0
while i+1 < len(radios):
print “File%d=mmsh://live.onestreaming.com/%s?MSWMExt=.asx” % (k,radios[i])
print “Title%d=%s” %(k,radios[i+1])
i += 2
k += 1
![]()
Everybody likes UNO. You can play it using common playing cards or can buy an UNO pack from your local toy store but I prefer using my homemade GPLed cards!
Here is a small howto to make yours:
Stuff you will need
- Project DUO implements a free UNO game using python. They are so kind to offer us free GPLed uno card images.
- Scribus is a open source desktop publishing program with scripting capabilities using python
- Python programming language
I ripped off IDgen-NG, removed a lot of code, made some improvents and modifications to fit my needs. The resulting scribus script asks for a directory containing your uno cards images and then creates a document placing those images the one next to the other. The output is a dozen pages of physical sized, ready to print and cut uno playing cards, with almost no effort!
Of course this script can be used to produce any kind of playing cards!
Usage:
Open Scribus -> Script -> Execute Script -> Select uno.py (see attachments)
Select dir containing card images. That’s it!
Now print, cut, and enjoy your game!
To howto αυτό θα μας δείξει πως να δρομολογήσουμε δεδομένα IP (TCP, UDP κτλ) “πάνω” ή καλύτερα μέσα σε DNS δεδομένα τύπου ΤΧΤ. Με απλά ελληνικά: πως θα πάρω πρόσβαση στο internet από εκείνο το wifi hotspot στο πλοίο (ή το αεροδρόμιο ή οπουδήποτε έχουν το θράσος να χρεώνουν γι’ αυτό το απαραίτητο αγαθό της ζωής!)
Συστατικά:
- Ένα linux laptop σε τοποθεσία με επί-πληρωμή wifi. Κατα προτίμηση με κάτι debian based. Εγώ το έκανα με Ubuntu
- Ένας linux server
- Ένα domain που να μπορούμε να επεξεργαστούμε τα subdomain του
- Το nstx λογισμικό (debian πακέτο nstx) website
Βασική ιδέα
Η βασική ιδέα πίσω από το όλο εγχείρημα είναι η εξής. Βρισκόμαστε σε ένα χώρο με wifi hotspot στο οποίο μπορούμε να συνδεθούμε, παίρνουμε IP και μόλις ζητήσουμε ένα site αντί για το site εμφανίζεται μία ωραία σελίδα που σου λέει να βάλεις τον κωδικό σου. Σε αυτές τις περιπτώσεις συνήθως επιτρέπεται να κάνεις ping ή/και dns queries χωρίς πρόβλημα. Οπότε αμέσως το διαβολάκι πάνω από τον αριστερό σου ώμο σε ρωτάει: “Δεν είναι δυνατόν να δρομολογήσουμε κάπως δεδομένα IP “πάνω” από ICMP (ping) ή DNS?” Φυσικά και είναι δυνατόν.
Σε δύο εγκαταστάσεις με αυτό το σύστημα που έχω δει, επιτρέπουν και οι δύο ping και dns δεδομένα χωρίς να τα φιλτράρουν (τα dns φυσικά μόνο προς τον δικό τους dns server). Δυστυχώς όμως οι λύσεις IP over ICMP (παρόλο που υπάρχουν πολλές στο google και το ptunnel σε πακέτο στο ubuntu) δεν έπαιξαν επειδή έπαιρνες εσωτερικό IP και είχες πρόσβαση στο δίκτυο μέσω NAT. Οπότε κάπου κόλλαγε η διαδικασία.
Απορρίπτουμε λοιπόν το IP over ICMP και πάμε στο πιο δύσκολο στο set-αρισμα, αλλά πολύ πιο πιθανό να παίζει εάν όχι σε όλες, τουλάχιστον στις περισσότερες εγκαταστάσεις τέτοιου τύπου IP over DNS. Με απλά λόγια αυτό που κάνουμε είναι ο εξής, δημιουργούμε ένα κανάλι δεδομένων στο οποίο αποστέλλουμε πληροφορία κωδικοποιημένη στο subdomain για το οποίο ζητάμε πληροφορίες και λαμβάνουμε πληροφορία κωδικοποιημένη στο TXT πεδίο της DNS απάντησης. Δηλαδή όταν ζητάμε να μάθουμε για το domain jsKsje38.tunnel.foo.gr στην ουσία λέμε στην άλλη μεριά του καναλιού ssh root@1.2.3.4 και η απάντηση μας έρχεται ο DNS πληροφορία κ.ο.κ.
Για να παίξει αυτό θα πρέπει να κάνουμε ρυθμίσεις στο dns server που διαχειρίζεται το domain μας foo.gr, να έχουμε ένα άλλο μηχάνημα που να μην τρέχει DNS για να τρέξουμε τον nstx server που πρέπει να καταλαβαίνει τι του στέλνουμε και να μας απαντά κατάλληλα (έστω ότι έχει την IP 1.2.3.4) και φυσικά να ρυθμίσουμε το nstx client στο laptop.
DNS site:
Έστω ότι έχουμε το domain foo.gr, θα πρέπει να δημιουργήσουμε δύο νέες καταχωρήσεις στο dns server μας τύπου
tunnel.foo.gr. 1 IN NS ntunnel.foo.gr.
ntunnel.foo.gr. 1 IN A 1.2.3.4
Όπου tunnel.foo.gr είναι το domain που θα χρησιμοποιήσουμε ως tunnel για να μεταφέρουμε τα ΤΧΤ δεδομένα μας και πληροφορίες για το domain αυτό θα μας δίνει ο ntunnel.foo.gr nameserver που ακούει στην διεύθυνση 1.2.3.4.
TIP: Για να λειτουργήσει το σύστημα δεν θέλουμε αναγκαστικά δύο μηχανήματα. Μπορούμε να δώσουμε σε μία κάρτα δικτύου δύο διαφορετικά (ή και παραπάνω IP) χρησιμοποιώντας IP aliasing. Φυσικά πρέπει να έχουμε δύο διαφορετικά public IP. Στο παράδειγμά μας έχουμε τα IP 1.2.3.3 (o dns server μας) και το 1.2.3.4 (o nstx server μας).
Server side:
Χρησιμοποιούμε το ip aliasing για να δημιουργήσουμε το interface eth0:1 με την διεύθυνση 1.2.3.4
ifconfig eth0:1 1.2.3.4 netmask 255.255.255.0 up
Κατεβάζουμε το nstx
apt-get install nstx
To nstx χρησιμοποιεί το αρχείο /etc/default/nstx για την ρύθμισή του, αλλά κάτι πήγαινε στραβά με αυτό και το έτρεξα με το χέρι.
Τρέχουμε το nstx server
nstxd -i 1.2.3.4 tunnel.foo.gr
Όπου -i σημαίνει να ακούει μόνο στην διεύθυνση 1.2.3.4 (στην διεύθυνση 1.2.3.3 έχουμε τον πραγματικό DNS) και να επεξεργάζεται δεδομένα του domain tunnel.foo.gr.
Επίσης δημιουργούμε το interface που θα χρησιμοποιήσει το nstx server για να μεταφέρει δεδομένα
modprobe tun
ifconfig tun0 10.0.0.1 netmask 255.0.0.0 up
Τέλος θέλουμε ότι δεδομένα φτάνουν στο tun0 interface (δηλαδή δεδομένα από τον nstx server) να μπορούν να έχουν πρόσβαση στο net, οπότε θα χρησιμοποιήσουμε IP Masquarate για να τα δρομολογήσουμε μέσω του interface eth0 που έχει πρόσβαση στο διαδίκτυο.
Εγκαθιστούμε το iptables και κάνουμε τις κατάλληλες ρυθμίσεις
apt-get install iptables
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
iptables -I FORWARD -j ACCEPT -s 10.0.0.0/8
echo "1" >> /proc/sys/net/ipv4/ip_forward
Συνοψίζουμε: Όποιος ζητήσει πληροφορίες για το domain tunnel.foo.gr θα μάθει ότι ο nameserver του tunnel.foo.gr είναι το ntunnel.foo.gr που ακούει στην διεύθυνση 1.2.3.4. Άρα θα στείλει τον DNS server στην διεύθυνση 1.2.3.4 δηλαδή τον nstx server δεδομένα, τα οποία το nstx τα μεταφράζει σε χρήσιμα δεδομένα και τα δρομολογεί στο interface eth0.
Client side:
Έχουμε συνδεθεί στο δίκτυο και έχουμε IP. Πρέπει να μάθουμε μερικά πράγματα για το δίκτυο που βρισκόμαστε. Πρώτα το IP του dns server που πρέπει να χρησιμοποιούμε. Βρίσκεται στο αρχείο /etc/resolv.conf . Δεύτερον το IP του gateway που έχουμε τώρα.
H καταχώρηση στο route table με flags UG είναι το gateway μας
route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
xx.xx.xx.xx 0.0.0.0 255.255.255.248 UG 0 0 0 eth0
Κατεβάζουμε το nstx (το έχουμε από πριν! θυμάστε ότι δεν έχουμε πρόσβαση εδώ που βρισκόμαστε!)
apt-get install nstx
Και το εκτελούμε
nstxcd tunnel.foo.gr <ip dns server που πρέπει να χρησιμοποιούμε>
Δημιουργούμε το interface για το nstxcd
modprobe tun
ifconfig tun0 up 10.0.0.2 netmask 255.255.255.0
Και τώρα πρέπει να ορίσουμε ως νέο default interface το tun0 και να δρομολογούμε από το παλιό μόνο τις αιτήσεις DNS.
route del defautl
route add default gw 10.0.0.1 tun0
route add -host gw dev eth1
To eth1 είναι το wifi device στο laptop. Σε άλλους μπορεί να είναι wlan.
Voila! Τώρα όλα τα δεδομένα δρομολογούνται μέσω του tun0 μεταφράζονται σε dns queries κ.ο.κ. και εσύ απολαμβάνεις internet access χωρίς να πληρώνεις 10 ευρώ τα 15′ λεπτά! (ναι για τέτοιες τιμές μιλάμε!)
Τελικές παρατηρήσεις:
Δεν ξέρω για άλλους χώρους, αλλά στα πλοία η πρόσβαση στο Inet πέρα από πανάκριβη είναι και τόσο ασταθής και αργή που ουσιαστικά δεν μπορεί να χρησιμοποιηθεί. Προσωπικά κατάφερα μερικά ssh connections (για web ούτε για αστείο) χρησιμοποιώντας συμπίεση και ssh version 1 (δεν ξέρω γιατί αλλά έπαιζε καλύτερα από το δύο. μάλλον λιγότερα δεδομένα
και αυτές δεν διαρκούσαν παραπάνω από 1-2 εντολές, εάν έφταναν μέχρι εκεί.
Επιτέλους! Είναι η δεύτερη προσπάθεια αλλά η πρώτη δεν μετράει. Είχε μόνο ένα - δυο posts και ούτε καν θυμάμαι που και πως το είχε στήσει. Τελευταία όμως συνέχεια έλεγα ότι θα έπρεπε να είχε ένα weblog για να συγκεντρώνω μερικά ενδιαφέροντα νέα και σκέψεις, μερικά scriptακια που hackαρω εδώ και εκεί και γενικά πράγματα που αξίζουν “κοινής θέας”, ορίστε λοιπόν: ”’To προσωπικό ιστολόγιο του Γιώργου Λογιωτατίδη (a.k.a seadog)”’
Περισσότερα σύντομα!
