Posted on December 24, 2008 in Uncategorized by seadogNo Comments »

heckert_gnusmall

Μετάcopyleft από την Wikipedia, έκανα το πρωτοχρονιάτικο δώρο μου και στο Ίδρυμα Ελεύθερου Λογισμικού. Ανανέωσα την φοιτητική συνδρομή μου για ένα χρόνο για να συνεχίσω να έχω τα προνόμια του μέλους (όπως email @member.fsf.org, έκτωση στο FSF store, usb κάρτα μέλους κ.α.) αλλά πολύ περισσότερο για να προστατέψω τα δικαιώματά μας στον ψηφιακό κοσμο. Το FSF πέρα από την υποστήριξη του GNU Project (μέρος του οποίου είναι ο GCC, το GIMP, o Emacs), φροντίζει για την νομική υπόσταση του Ελεύθερου Λογισμικού (άδεια χρήσης GPL) και δίνει μάχες (που κερδίζει!) με τους “κακούς” που πολλές φορές προσπαθούν να εκμεταλλευτούν το Ελεύθερο Λογισμικό χωρίς να τηρούν τους όρους χρήσcampaignsης (τελευταίο παράδειγμα η μήνυση που κατέθεσε το FSF στην Cisco), γιespα να καταργηθεί το DRM που το βρίσκουμε όλο και περισσότερο μπροστά μας, κα. Φυσικά το FSF πρωτοστατεί και στο θέμα των Πατεντών Λογισμικού, ζητώντας φυσικά την κατάργησή τους από την Αμερική και την μη-υιοθέτησή τους από την Ε.Ε.

Διαβάστε το κάλεσμα για νέα μέλη και υποστηρικτές για το έτος 2009

Posted on December 11, 2008 in Uncategorized by seadogNo Comments »

Πολλά βλέπουμε, πολλά διαβάζουμε,

ώρα να δράσουμε!

εικόνα από ομάδα virus

Posted on October 24, 2008 in Uncategorized by seadog5 Comments »
Typical Delft Canal

Typical Delft Canal

Μετά από μερικούς μήνες blog-απραξίας (αλήθεια υπάρχει συγκεκριμένη λέξη για το blogging;) επέστρεψα και μάλιστα με άρωμα Ευρώπης. Βρίσκομαι τώρα στο Delft, της Ολλανδίας και σπουδάζω Computer Engineering στο TU Delft. Για την ακρίβεια κάνω ένα 2-ετές Master πάνω στο θέμα, οπότε θα είμαι για αρκετό καιρό εδώ.

Τον καιρό που μας πέρασε ασχοληθήκα:

  • Με το πρώτο μέρος του tutorial για το Django framework που δημοσιεύτηκε στο Ελληνικό Linux Format (Σεπτεμβρίου - Οκτωβρίου).
  • Με το δεύτερο μέρος του tutorial για το Django framework που θα δημοσιευτεί στο Ελληνικό Linux Format (Νοεμβρίου - Δεκεμβρίου). Πιστεύω ότι είναι πολύ καλύτερο από το πρώτο, οπότε εάν σας άρεσε το πρώτο μην χάσετε την συνέχεια :) Βγήκε και το Django 1.0 εν το μεταξύ οπότε τώρα το να ξέρεις Django σου δίνει περισσότερο mana!
  • Πήγα στην Κωνσταντινούπολη στην πρώτη μου GUADEC που ήταν φανταστικά. Τόσο η Κωνσταντινούπολη με τον υπέροχο κόσμο και το περιέργο χρώμα τις Ανατολικής Ευρώπης - Δυτικής Ασίας, όσο και η GUADEC και όλος ο κόσμος που βρισκόταν εκεί, με τις ιδέες του, την επιθυμία για γνωριμίες και την τρέλα στο μάτι για το Gnome 3.0!
  • Και έκανα ταξίδια. Πολλά ταξίδια!

Tulip from TU Delft

Τώρα λοιπόν που βρίσκω τους ρυθμούς μου στο Delft, θα δουλέψω λίγο με το blog για να μεταφέρω εμπειρίες και γνώση στα παρακάτω αλλά και σε άλλα θέματα:

  • Άρχισα να ασχολούμαι με τον TUlip, το linux powered humanoid του TU Delft που συμμετέχει στο Robocup.
  • Έχω φτιάξει ήδη δύο μπύρες, μία Weiss και μία Pilsner, οπότε τώρα που βρίσκομαι πολύ κοντά στην πηγή του κακού θα δουλέψω μία δικιά μου συνταγή (πιθανώς με spirulina! “Now there is a reason to have a beer in the morning!”)
  • Θα δουλέψω λίγο πιο συστηματικά πάνω στο Gnome. Ήδη έκανα κάποιο patch στο Hamster Projec.
  • Τέλος ψάχνω λίγο το θέμα με εναλλακτικές search engines που να έχουν αξίες (ηθικές!) βλέπε Yacy και Wikia Search.

Περισσότερα posts με λεπτομέριες θα ακολουθήσουν!

Posted on May 2, 2008 in Uncategorized by seadogNo Comments »

Την Κυριακή 4 Μάη θα συναντηθούμε στο Flocafe στη παραλία της Θεσσαλονίκης για να γιορτάσουμε την έκδοση 8.04 του Ubuntu. Έχουν ετοιμαστεί αφίσες, flyer, μπλουζάκια, cd και με πάνω από 35 άτομα δηλωμένα (!) το παρτυ θα είναι σίγουρα μεγάλη επιτυχία.

Αναλυτικές πληροφορίες στη σελίδα του wiki του ubuntu-gr

Θα τα πούμε εκει!

Posted on April 16, 2008 in Uncategorized by seadogNo Comments »

Ίσως είναι ένα από τα πιο αποτυχημένα features που έχουν παρουσιαστεί σε λογισμικό! (καλά είμαι λίγο υπερβολικός αλλά με πνίγει το δίκιο ;) Ο αγαπημένος μου Instant Messanger, το pidgin, από την έκδοση 2.4 έχει ένα feature αυτόματης αναπροσαρμογής του textbox στο οποίο γράφουμε το μήνυμα για τον συνομιλητή μας. Με κανονικό ύψος 2 γραμμές και με μέγιστο 4 και με καμία δυνατότητα παραμετροποίησης από τον χρήστη, η χρήση του pidgin έγινε απίστευτα ενοχλητική! Υπάρχει μία αναφορά σφάλματος στο bug-tracking site του pidgin με πάρα πολλά σχόλια αλλά από ότι κατάλαβα οι developers του pidgin γουστάρουν το auto-resize που έχουν φτιάξει :(
Ευτυχώς το pidgin έχει plugin system και ευτυχώς κάποια παιδιά ασχολήθηκαν και έφτιαξαν το funpidgin plugin που διορθώνει αυτή τη συμπεριφορά. Μπορείτε να κατεβάσετε το deb του plugin από εδώ. Στο hardy (ίσως και αλλού) υπάρχει κάποιο conflict κατά την εγκατάσταση, με το πακέτο pidgin-data, το οποίο μπορεί να ξεπεραστεί απλά εάν εκτελέσουμε από τερματικό την εντολή


dpkg -i --force-all funpidgin_2.4.1-0ubuntu1_i386.deb

Ύστερα κάνουμε ένα restart το pidgin, και από το Tools -> Plugins επιλέγουμε το plugin “Entry area manual sizing” και απολαμβάνουμε την εμπειρία ;)
Όπως και να έχει θα ρίξω μια ματία και στο empathy, τον νέο IM, που βασίζεται στο telepathy framework

Ευχαριστώ Θάνο για το γρήγορο support στο bug! :)

Posted on April 10, 2008 in Uncategorized by seadog1 Comment »

Πολλές φορές έχει τύχει, ειδικά όταν συνδέομαι σε απομακρυσμένους υπολογιστές, να εκτελώ μία εντολή για παραπάνω από μία φορές, προσπαθώντας να δω την εξέλιξη μιας διαδικασίας. Η λύση στο πρόβλημα είναι η εντολή watch.

Η watch εκτελείται με παράμετρο την εντολή που μας ενδιαφέρει να εκτελούμε περιοδικά και αναλαμβάνει έργο. Κάθε δύο δευτερόλεπτα ανανεώνει την οθόνη με το αποτέλεσμα της εντολής. Μπορούμε να αυξήσουμε το διάστημα μεταξύ των εκτελέσεων με τη παράμετρο -n ή να υπογραμμίζεται τα σημεία της εξόδου της εντολής που αλλάξαν από την προηγούμενη εκτέλεση με τη παράμετρο -d.

Ένα τυπικό παράδειγμα εκτέλεσης της εντολής watch είναι

watch -n 5 -d date

η εκτέλεση του οποίου θα μας δίνει την ώρα, υπογραμμίζοντας ότι άλλαξε κάθε 5 δεύτερα. Φυσικά τίποτα (?) χρήσιμο δεν μπορείς να κάνεις με αυτή!

Η watch είναι χρήσιμη όταν παρακολουθούμε την εξέλιξη του μεγέθους καταλόγων

watch -n 5 du -sm bigdir/

Μπορούμε να χρησιμοποιήσουμε εισαγωγικά εάν η εντολή μας είναι πιο σύνθετη π.χ. Όταν θέλουμε να δούμε τα αρχεία που δημιουργεί ο μόνο ο χρήστης seadog

watch -n 5 "ls -lh | grep seadog"

Τα εισαγωγικά θα φανούν χρήσιμα και όταν χρησιμοποιούμε wildcards. Για παράδειγμα εάν θέλουμε να μάθουμε το μέγεθος των αρχείων στον κατάλογο που είμαστε και χρησιμοποιήσουμε την εντολή

watch du -sm *

και κατά τη διάρκεια εκτέλεσης εμφανιστεί ένα νέο αρχείο ή κατάλογος στο directory που παρακολουθούμε, αυτό δεν θα εμφανιστεί στην watch. Αυτό συμβαίνει γιατί το wildcard μεταφράζεται σε αρχεία, από το κέλυφος, όταν εκτελείται η watch και όχι σε κάθε εκτέλεση της du. Η εκτέλεση της εντολής με εισαγωγικά θα μας δώσει το επιθυμητό αποτέλεσμα

watch "du -sm *"

Η εντολή watch βρίσκεται στο πακέτο procps στο debian και στο ubuntu και πιθανότητα υπάρχει ήδη στο /usr/bin του υπολογιστή σας!

Posted on March 1, 2008 in Uncategorized by seadog3 Comments »

Τρεις μήνες χωρίς ούτε ένα post, αλλά με πτυχίο Ηλεκτρoνικού Μηχανικού και Μηχανικού Η/Υ από το Πολυτεχνείο Κρήτης, μια μετακόμιση, νέο server και αλλαγή bloging software (ας ελπίσουμε ότι το wordpress θα μου αφήσει καλύτερη γεύση στο στόμα με λιγότερη φασαρία από το drupal). Ξαναμπαίνω λοιπόν σε λογική bloging, παρόλο που αυτή τη περίοδο με τις πολιτικές εξελίξεις στη μπανανία μπορεί να μην είμαι και πολύ σώφρων :P. Και μιας το SIP είναι πολύ της μόδας με τους εναλλακτικούς του ΟΤΕ ορίστε μια ακόμη εταιρία της Betamax όχι μόνο με δωρεάν κλήσεις σε σταθερά αλλά και sms!

Posted on September 25, 2007 in Uncategorized by seadog1 Comment »

Το practical python που είχα παραγγείλει πριν από 27 μέρες τελικά έφτασε! Πήρε μια εβδομάδα παραπάνω από ότι είχα υπολογίσει στο πρώτο post, αλλά δεν είχα υπολογίσει τον χρόνο που χρειάζεται το βιβλίο να πάει από τον πραγματικό πωλητή στην alibris. Όπως και να έχει, το βιβλίο είναι όντως καινούριο, ατσαλάκωτο και άγραφο και μου κόστισε μόλις 18,5 ευρώ με τα μεταφορικά.

Το καλύτερο νέο όμως ότι η alibris άνοιξε και κατάστημα στην αγγλία, με μεταφορικά μόλις 5,8 ευρώ (+2,5 για κάθε άλλο βιβλίο) και χρόνο παραλαβής 3-14 (!) μέρες.

+1 από μένα για την alibris ;)

Posted on September 18, 2007 in Uncategorized by seadogNo Comments »

Ένα μικρό jabber client module που έγραψα, βασισμένο στο twisted python framework. To client παρέχει όλες τις βασικές συναρτήσεις για login στο jabber server, για επικοινωνία με άλλα jabber accounts και εγκρίνει αυτόματα τις αιτήσεις για “αναγνώριση” (presence notifications)

Στο συγκεκριμένο client έχουν βασιστεί και τα echo, fortune και marx bots (σχετικό post).

#!/usr/bin/env python

from twisted.words.protocols.jabber import jid,xmlstream,client
from twisted.words.xish import domish
from twisted.internet import reactor

from string import join, letters
from random import sample

class Jclient:

def __init__(self, server, username, password, resource="Jclient", port=5222, observers=None):
self.username = username
self.password = password
self.resource = resource
self.server = server
self.port = port
self.observers = observers

def connect(self):
self.myJid = jid.JID('%s/%s' % (self.username, self.resource))
factory = client.basicClientFactory(self.myJid, self.password)
factory.addBootstrap('//event/stream/authd', self.authd)

reactor.connectTCP(self.server, self.port, factory)
reactor.run()

def authd(self, xmlstream):
#save xmlstream
self.xmlstream = xmlstream

# send presence
presence = domish.Element(('jabber:client', 'presence'))
xmlstream.send(presence)

self.watchdog()

def watchdog(self):

if not self.observers:
self.observers = {}
#self.observers['/*'] = self.logger
self.observers['/message'] = self.messageHandler
self.observers['/presence'] = self.presenceHandler

for trigger, function in self.observers.items():
self.xmlstream.addObserver(trigger, function)

def logger(self, xmlstream):
print xmlstream.toXml()

def messageHandler(self, xmlstream):
“”"
Returns sender’s jid, receiver’s jid and message
“”"

sender = xmlstream['from']
receiver = xmlstream['to']
message = xmlstream.body.children[0]
id = xmlstream['id']

return sender, receiver, id, message

def send(self, msg):

self.xmlstream.send(msg)

def newMsg(self, to, message, id=None, type=”chat”):

if not id:
# generate id
id = ‘jc’ + join(sample(letters, 5), ”)

msg = domish.Element((’jabber:client’, ‘message’), attribs={’to’:to, ‘from’:self.myJid.full(), ‘type’: type, ‘id’: id})
msg.addElement(’body’, content=message)

return msg

def replyMsg(self, xmlstream, message, type=None):
“”"
Creates reply AND sends it
“”"
msg = self.newMsg(xmlstream['from'], message, None, type or xmlstream['type'])
self.send(msg)

def presenceHandler(self, xmlstream):
“”"
Should implement auto add and auto delete from
presence lists
“”"

if ‘type’ in xmlstream.attributes:
if xmlstream['type'] == ‘error’:
pass
elif xmlstream['type'] == ‘probe’:
msg = domish.Element((’jabber:client’, ‘presence’), attribs = {’to’: xmlstream['from'], ‘from’:xmlstream['to']})
# always free to chat
msg.addElement(’show’, content=”chat”)
else:
msg = domish.Element((’jabber:client’, ‘presence’), attribs = {’type’:xmlstream['type'], ‘to’:xmlstream['from'], ‘from’:xmlstream['to']})

if msg:
self.xmlstream.send(msg)

def __del__(self):
reactor.stop()

Φτιάχνοντας ένα echo bot σε 22 γραμμές με χρήση του Jclient


#!/usr/bin/env python

from jclient import Jclient
from twisted.words.xish import domish
from twisted.internet import reactor

class Jecho(Jclient):
def __init__(self, server, username, password, resource="Jecho", port=5222):
Jclient.__init__(self,server, username, password, resource, port)
self.connect()

def messageHandler(self, xmlstream):
"""
echoes the same message to sender
"""

(sender, receiver, id, message) = Jclient.messageHandler(self,xmlstream)
self.replyMsg(xmlstream,message)

jecho = Jecho("localhost", "server@localhost", "1")

Posted on September 2, 2007 in Uncategorized by seadogNo Comments »

Super Mushroom
Μου έκαναν δώρο ένα pixelized μανιτάρι από το super mario, φτιαγμένο με υλικά ενός παιχνιδιού χειροτεχνίας. Κάνεις ένα σχέδιο με χάντρες - pixels μετά τα σιδερώνεις και το πλαστικό λιώνοντας κολλά τις χάντρες μεταξύ τους, δίνοντας ένα ενιαίο αποτέλεσμα. Εύκολο, αισθητικά ωραίο και σίγουρα geeky ;) Το μόνο πρόβλημα είναι ότι δεν ξέρω πως ονομάζεται το παιχνίδι!

btw ποιός είπε ότι τα μανιτάρια του super mario δεν έχουν καταχώρηση στην wikipedia? http://en.wikipedia.org/wiki/Mushroom_(Mario)

Next Page »