Κυριακή, 7 Αυγούστου 2011

Offline Package Management με το apt-offline

Τώρα το καλοκαιράκι πολύς κόσμος θα πάει στα εξοχικά του κλπ κάποια από τα οποία δεν έχουν πρόσβαση στο διαδίκτυο. Πώς εγκαθιστούμε debian/ubuntu πακέτα σε τέτοιους offline / απομακρυσμένους υπολογιστές;

Υπάρχουν πολλά projects που φιλοδοξούν να δώσουν λύση σε αυτό το πρόβλημα όπως το Keryx, το deb-downloader, το sushi-huh κλπ αλλά η προσωπική μου προτίμηση είναι το apt-offline. Δυστυχώς δε φαίνεται να υπάρχει κάποιος οδηγός στα ελληνικά γι αυτό, πράγμα που ελπίζω να καλύψει αυτό το post.

Παρασκευή, 10 Ιουνίου 2011

+1 Jetway! (τεχνική υποστήριξη)

Μόλις διάβασα ένα post στο blog του Eric Sandeen. Μεταφράζω λίγο για τους μη-αγγλομαθείς, για να δούμε λίγο στην Ελλάδα τι σημαίνει σοβαρό technical support και όχι κοροϊδία του κόσμου:

Το πρόβλημα του Eric ήταν ότι δεν μπορούσε να τροφοδοτήσει ένα σύστημα βασισμένο σε Jetway JNC9C-550-LF μητρική από ένα PicoPSU-90 τροφοδοτικό (ο συνδυασμός δεν έκανε boot). Ο Eric έγραψε γι αυτό στη Jetway και η απάντηση ήταν:

Αγαπητέ πελάτη,
Σας ευχαριστούμε που μας γράψατε τις ανησυχίες σας. Ευχαρίστως να σας βοηθήσω.
Εξετάσαμε το αίτημά σας σχετικά με το JNC9C-550-LF. Σύμφωνα με την αναφορά σας, πιστεύουμε ότι το πρόβλημα είναι σχετικό με το τροφοδοτικό.
Έχουμε παρατηρήσει προβλήματα "υποτροφοδοσίας" με τις παρακάτω πηγές:

1. IEI ACE-4518AP
2. PicoPSU-90
3. M3-ATX 125W
4. Power-win PW-085B-5Y
Η λύση μας για τα παραπάνω είναι:

1. αφαίρεση του D9
2. αφαίρεση του R163
3. αλλαγή του Q30 από C01-E7002-F σε C04-EAPM2300A-F
4. αλλαγή του R270 από E01-42B1.8K-F σε E01-42B3.3K-F
Μπορείτε να δοκιμάσετε να αφαιρέσετε τα D9 και R163 πρώτα. Οι δοκιμές μας έδειξαν ότι η μητρική θα δουλέψει με το picoPSU, απλά αν αφαιρεθούν αυτά τα 2 μέρη.
Ελπίζουμε ότι το παραπάνω σας βοήθησε. Παρόλα αυτά αν έχετε επιπλέον ερωτήσεις, σας παρακαλώ μη διστάσετε να επικοινωνήσετε με το τεχνικό μας τμήμα.
Χαιρετισμούς,

Jetway FAE / Tech Support Team
Jetway Computer Corp.
38507 Cherry Street, Suite E
Newark, CA 94560
Email: tech@jetwaycomputer.com
www.jetwaycomputer.com


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

Ας κάνουμε μια μικρή σύγκριση με το επίπεδο τεχνικής υποστήριξης που προσφέρεται στην Ελλάδα καθώς και την αντιμετώπιση των πελατών ...








Τρίτη, 7 Ιουνίου 2011

Αλλάζοντας το όνομα του εκτελέσιμου ενός προγράμματος στο Linux

Για ένα άρθρο ήθελα να γράψω ένα πρόγραμμα στο Linux το οποίο να αλλάζει το όνομά του (όπως αυτό φαίνεται στο ps, top κλπ) κατά τη διάρκεια της εκτέλεσης. Πολλά προγράμματα έχουν αυτή τη δυνατότητα όπως το ssh, η postgresql κλπ.

Ο πιο portable τρόπος για να γίνει κάτι τέτοιο είναι να κάνει απλά το πρόγραμμα exec τον εαυτό του με άλλο όνομα.

Στη δική μου περίπτωση το exec δε βόλευε για άλλους λόγους, οπότε η μόνη λύση ήταν η κατευθείαν αλλαγή του ονόματος. Τα BSD έχουν γι αυτή τη δουλειά την κλήση συστήματος setproctitle. Στο Linux όμως δεν υπάρχει κάτι τέτοιο.

Πέμπτη, 2 Ιουνίου 2011

Ιδέες για (περισσότερο) ΕΛ/ΛΑΚ στο δημόσιο τομέα Part 2: Στρατηγική


Τις τελευταίες μέρες γίνεται κάποια κουβέντα για το ενδεχόμενο μεγαλύτερης διείσδυσης του ΕΛ/ΛΑΚ σε υπηρεσίες και επιχειρήσεις του δημόσιου τομέα.

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

Ως γνωστόν υπάρχει ήδη ως ένα βαθμό χρήση ΕΛΛΑΚ στο δημόσιο, από το openoffice/οdt σε ορισμένες δημόσιες υπηρεσίες, μέχρι το ubuntu στο τμήμα μουσικών σπουδών του Πανεπιστημίου του Ιονίου, τα σχολικά εργαστήρια με ubuntu και FreeBSD κλπ.

Το θέμα είναι το τι παραπάνω μπορεί να γίνει. Αυτό οδήγησε το Νίκο στο δεύτερο άρθρο (περί πιστοποιημένης διανομής) που δημιούργησε τις πρόσφατες αντιδράσεις.

Σε αυτή τη συζήτηση θα ήθελα να δούμε το θέμα ψύχραιμα και ρεαλιστικά από την άποψη του τι θα μπορούσε να γίνει και τι θα μπορούσαμε να κάνουμε εμείς γι αυτό. Για να ξεκινήσει η κουβέντα θα παραθέσω κάποιες πρώτες ιδέες/σκέψεις "to get the ball rolling". Οι ιδέες αυτές είναι απλά brainstorming οπότε δε θα παρεξηγήσω όποιον θέλει να απορρίψει κάποια ή όλες. Θα ήθελα να προσθέσετε και τις δικές σας, προκειμένου να δούμε τι μπορεί να υλοποιηθεί και πώς.

Ιδέες για (περισσότερο) ΕΛ/ΛΑΚ στο δημόσιο τομέα Part 1: Οι λόγοι

Τον τελευταίο καιρό γίνεται όλο και περισσότερη συζήτηση για το πώς θα μπορούσε να επιτευχθεί μεγαλύτερη διείσδυση του Ελεύθερου Λογισμικού στο δημόσιο τομέα (προσωπικά θα το επέκτεινα και σε μεγάλες επιχειρήσεις, δεν πιστεύω ότι είναι ηθικό να προτείνουμε κάτι για τις δημόσιες υπηρεσίες το οποίο δε θα το χρησιμοποιούσαμε πρώτα απ' όλα στη δική μας επιχείρηση ή όπου αλλού είμαστε υπεύθυνοι).

Μερικοί λόγοι για να θέλουμε κάτι τέτοιο:
(Κάποιοι από τους παρακάτω λόγους έχουν αναφερθεί και στο post του Νίκου Ρούσσου)

Τετάρτη, 1 Ιουνίου 2011

Περί "επίσημης διανομής" και ελληνικών distro wars ...

Αν και το blog αυτό έχει κατά κύριο λόγο τεχνικό (και χιουμοριστικό) χαρακτήρα, θα ήθελα να ξοδέψω λίγο χρόνο για να σχολιάσω από δω το δεύτερο άρθρο του Νίκου Ρούσσου στο περιοδικό Linux Inside περί "επίσημης πιστοποιημένης ελληνικής διανομής" και της παρουσίασης 3 mainstream διανομών (debian, ubuntu, fedora) σε αυτό.  Ο σχολιασμός είναι φυσικά ως προς τον τίτλο του άρθρου, δηλαδή θεωρώντας μία δημόσια υπηρεσία ως "χρήστη", όχι τον οποιονδήποτε.

(Σημ: Δεν έχω λάβει ακόμα το αντίτυπο του περιοδικού που περιέχει το άρθρο, αλλά το διάβασα σε scan από το link που περιέχεται σε αυτό το post στο OSArena).

Κυριακή, 29 Μαΐου 2011

ΕΛΛΑΚ και ευρωπαϊκά ερευνητικά προγράμματα

Η ολοένα αυξανόμενη χρήση και δημοφιλία του ΕΛΛΑΚ, καθώς και η ευκολία μελέτης του (λόγω του ότι τα περισσότερα δεδομένα είναι διαθέσιμα: κώδικας, ιστορικό, αρχεία λιστών ταχυδρομείου, IRC logs κλπ κλπ) έχουν οδηγήσει τα τελευταία χρόνια σε αντίστοιχα αυξημένο ενδιαφέρον για το ΕΛΛΑΚ από την ακαδημαϊκή/ερευνητική κοινότητα.

Τα τελευταία χρόνια έχουν τρέξει και τρέχουν αρκετά ευρωπαϊκά ερευνητικά προγράμματα που ασχολούνται με το ΕΛΛΑΚ:

  • Τα projects EDOS και MANCOOSI που ασχολούνται κυρίως με θέματα package management και διαχείριση dependencies. Η σχετική ερευνητική ομάδα απασχολεί μάλιστα και τον τωρινό DPL. Τα projects αυτά έχουν ήδη προσφέρει χρήσιμα εργαλεία, όπως το debian weather.
  • Τα projects FLOSSMETRICS, QUALOSS και SQO-OSS που ασχολούνται με την ποιότητα των διαθέσιμων πακέτων ΕΛΛΑΚ.
  • Το project OSEPA με στόχο την προώθηση του ΕΛΛΑΚ στη δημόσια διακυβέρνηση
  • Μια πιο πλήρη εικόνα μπορείτε να δείτε εδώ και εδώ.


    More computer science humour ...

    Two tables are sitting in a bar and in comes a query: "May I join you?"

    Your mother is so fat that if she sits on a binary tree she will make a list out of it in constant time ...

    Two bytes meet. The first byte asks, “Are you ill?”
    The second byte replies, “No, just feeling a bit off.”

    Eight bytes walk into a bar. The bartender asks, “Can I get you anything?”
    “Yeah,” reply the bytes. “Make us a double.”

    There are only 10 kinds of people in this world: those who know binary and those who don’t.

    My new computer is so fast it can execute an infinite loop in 3 seconds ...

    From the Random Shack Data Processing Dictionary:

    Endless Loop: n., see Loop, Endless.
    Loop, Endless: n., see Endless Loop.

    Πέμπτη, 26 Μαΐου 2011

    ADSL modems και NetworkManager: status update

    Αυτή τη στιγμή τα patches για PPPoA και PPPoE support βρίσκονται σε ένα upstream branch με στόχο να ενσωματωθούν στο NetworkManager 0.9.2.

    Πρόσφατα ήρθε και το πρώτο εξαιρετικό review από τον David Woodhouse ο οποίος αναφέρθηκε στην υποστήριξη για multi-port PCI ADSL modems, IPv6, στην πιθανή αντικατάσταση του br2684ctl με NetworkManager internal κώδικα καθώς και στο patch του Dan Williams που μόλις στάλθηκε στη
    λίστα netdev του Linux με θέμα την προσθήκη "index" στις ATM συσκευές.

    Τετάρτη, 25 Μαΐου 2011

    DIY One Touch Backup στο Linux Part 1: Reverse engineering

    Σε διάφορα forums, σε threads που έχουν να κάνουν με backup, χρήστες των windows έχουν κάνει σχόλια του στυλ: "Δεν μπορεί να είναι τόσο δύσκολο, εγώ για να πάρω backup απλά τοποθετώ τον εξωτερικό δίσκο και πατάω το κουμπάκι που λέει One Touch Backup".

    Καθώς δεν υπάρχει κανένας σοβαρός τεχνικός λόγος γιατί να μην μπορεί αυτό να δουλέψει και στο Linux, αποφάσισα να ρίξω μια ματιά στους εξωτερικούς δίσκους μου για να δω τι θα χρειαζόταν ώστε να υποστηριχθεί το "κουμπί" που συμπεριλαμβάνουν.

    Τρίτη, 24 Μαΐου 2011

    USB Reverse engineering με virtualbox και usbmon

    Στις μέρες μας η πιο διαδεδομένη μορφή συνδεσιμότητας για περιφερειακές συσκευές είναι ο USB (Universal Serial Bus - Οικουμενικός Σειριακός Δίαυλος). Πολλές φορές, διάφορες χρήσιμες  / ενδιαφέρουσες USB συσκευές έρχονται με υποστήριξη μόνο για windows, οπότε η ικανότητα να μπορεί κάποιος να καταλάβει τον τρόπο λειτουργίας τους (reverse engineering) και να τις κάνει να υποστηρίζονται στο Linux είναι αρκετά σημαντική για κάθε επίδοξο "Linux ninja".

    Heads up: Pristine source debian packages και PPAs

    Η κλασική μέθοδος για να κάνει κάποιος "port" ένα πακέτο από το debian στο ubuntu PPA του είναι:

    dget http://.../file.dsc
    dpkg-source -x *.dsc
    cd ...
    dch -i     # εδώ βάζουμε το δικό μας όνομα, σχόλιο κλπ
    debuild -S
    cd ..
    dput ppa *.changes
    

    Τελευταία, σε ορισμένα πακέτα, το debuild -S δε συμπεριλαμβάνει στο description του upload το .orig.tar.gz αρχείο (για λόγους που δε χρειάζεται να περιγράψω εδώ). Αυτό μπορεί να οδηγήσει σε μήνυμα λάθους του στυλ:

    "Unable to find blabla.orig.tar.gz in upload or distribution.
    Files specified in DSC are broken or missing, skipping package unpack verification."

    Η λύση σε αυτή την περίπτωση είναι η χρήση του
    debuild -S -sa
    

    Απλό :)

    Σάββατο, 21 Μαΐου 2011

    Και λίγο χιούμορ ...

    COSTELLO CALLS TO BUY A COMPUTER FROM ABBOTT

    ABBOTT: Super Duper computer store. Can I help you?

    COSTELLO: Thanks. I'm setting up an office in my den and I'm thinking about buying a computer.

    ABBOTT: Mac?

    COSTELLO: No, the name's Lou.

    Τετάρτη, 18 Μαΐου 2011

    x86 emulator σε javascript από το Fabrice Bellard

    Εχθές, ο Fabrice Bellard (ffmpeg, qemu, tcc, ...) δημοσίευσε ένα πλήρη x86 emulator γραμμένο σε Javascript (!) αρκετά πλήρη ώστε να τρέχει ένα πυρήνα Linux 2.6.20. Από ότι φαίνεται η εξομοιωμένη μηχανή είναι επιπέδου 486 με MMU αλλά χωρίς FPU (το οποίο δεν είναι πρόβλημα για το Linux αφού περιλαμβάνει FPU emulator) και έχει δύναμη περίπου ίση με ένα 486 DX/40.

    Για το demo: http://bellard.org/jslinux
    Για περισσότερες πληροφορίες: http://bellard.org/jslinux/tech.html
    Και για μια πιο εκλαϊκευμένη εξήγηση του πώς δουλεύει ο emulator δείτε εδώ: http://www.quora.com/CPU-Emulation/How-does-bellard-org-jslinux-work

    Επιλογές παρουσιάσεων από EclipseCon 2011

    Εχθές βράδυ κοίταγα τις παρουσιάσεις της EclipseCon 2011 (τουλάχιστον αυτές που έχουν δημόσια διαθέσιμο το υλικό τους) και επειδή στο σύνολο οι παρουσιάσεις είναι πραγματικά πολλές, σκέφτηκα να μοιραστώ τις επιλογές μου (και για δικό μου future reference):

    Τρίτη, 17 Μαΐου 2011

    Υποστήριξη για ADSL modems στο NetworkManager (update)

    Μόλις έστειλα αρχικές υλοποιήσεις για υποστήριξη pppoa και pppoe συνδέσεων από ADSL modems, στη λίστα του NetworkManager. Υπάρχει ακόμα αρκετή δουλειά να γίνει βέβαια και ο κώδικας αυτός αφορά μόνο το core του NetworkManager και όχι το γραφικό interface (αν και έχω κάποιες ιδέες / preliminary κώδικα και γι αυτό) οπότε μάλλον είναι λίγο νωρίς για να δηλώσουμε επιτυχία στο project.

    Παρόλα αυτά, το γεγονός ότι οι γραμμές αυτές γράφονται από μια PPPoE ADSL σύνδεση (LLC Encapsulation) που δημιουργήθηκε από ένα version του NetworkManager με τα patches μου, δείχνει ότι πιθανότατα δεν είμαστε και τόσο μακριά ...

    Αν κάποιος θα ήθελε να βοηθήσει στο project ας επικοινωνήσει μαζί μου μέσω της φόρμας ή στο γνωστό email.

    Παντελής



    Σάββατο, 14 Μαΐου 2011

    Systemd στη Fedora 15

    Λίγο πριν δημοσιευτεί η έκδοση 15 της Fedora, ένα από τα πιο ενδιαφέροντα χαρακτηριστικά είναι η χρήση του systemd ως παροχέα για το /sbin/init. Ως κάποιος που παρακολουθεί τις διαφορετικές προσπάθειες για σοβαρότερο process / service management στο Linux τα τελευταία 10 χρόνια πιστεύω ότι το systemd είναι μια φιλόδοξη και πολλά υποσχόμενη προσπάθεια.

    Ο δημιουργός του systemd, Lennart Poettering, έχει γράψει μία πολύ ενδιαφέρουσα σειρά από blog posts όπου παρουσιάζονται τα χαρακτηριστικά αυτού του service manager:


    • Why systemd
    • Systemd for administrators (PDF με τα άρθρα της σειράς)

    Όσοι ενδιαφέρονται για init systems και service management θα ήταν πολύ χρήσιμο να ρίξουν μια ματιά ...

    Τρίτη, 10 Μαΐου 2011

    Εντυπώσεις από τη FOSSCOMM 2011

    Από το καράβι της επιστροφής από τη FOSSCOMM 2011, θα ήθελα να μοιραστώ τις εντυπώσεις μου από πιθανότατα το σημαντικότερο γεγονός σε επίπεδο Free Software κοινοτήτων στην ελλάδα.

    Ως εκδήλωση, η FOSSCOMM περιλαμβάνει booths κοινοτήτων και εταιρειών που ασχολούνται με το ελεύθερο λογισμικό (και μπορούν να επιδοθούν σε "marketing"/"advocacy" και ενημέρωση για τις δραστηριότητες και τα προϊόντα τους), καθώς και παρουσιάσεις και workshop από developers και μέλη της γενικότερης κοινότητας του ΕΛΛΑΚ που θέλουν να μοιραστούν τις εμπειρίες τους με τους υπόλοιπους.

    Τετάρτη, 4 Μαΐου 2011

    Compiling latest versions of NetworkManager and nm-applet on Natty

    You might want to play with the new support for WiMax devices in NetworkManager, or you may even want to hack it to support a feature that you always wanted. But it would also be nice if this can be done without disrupting your current well-maintained ubuntu system. When you are done playing with the new versions, you should be able to return back to the system-provided ones and things should be as if nothing ever happened.

    The following is the process I used for achieving these goals, in case it is useful to someone else as well: The key is to install under a different prefix (e.g., /opt/nm.git) and modify all the "attachment points" of NM to the system to pick the alternative version. Using dpkg-divert we can ensure that this won't break our system and updates to the system-versions will keep being applied undisturbed (to the renamed files instead of the original ones).

    Τετάρτη, 20 Απριλίου 2011

    Kernel-debugging a Qemu windows VM from a Linux host using wine


    The "normal" way to debug a Qemu/KVM windows virtual machine at kernel-level (e.g., for writing a windows driver) is to use 2 windows VMs. One (called server) in which to run the kernel you are going to debug and one (called client or host) in which to run the debug tools.
    (If you want to try this way, the instructions here have worked for me at least).

    Several people have wondered if it is possible to save (at least some of) the memory overhead of the host/client VM by using wine instead to run the debug tools (from the Linux host). Unfortunately this seems to be harder than it seems.

    MSBL: All your bugs are belong to me :)

    Όπως έγραψα και στα σχετικά mail στις λίστες open-source-el και linux-greek-users, θα ήθελα να ξεκινήσω μια προσπάθεια συγκέντρωσης των (πιο σημαντικών) bugs που εμποδίζουν ή δυσκολεύουν τη διάδοση του ΕΛ/ΛΑΚ στην Ελλάδα.

    Με ενδιαφέρουν upstream bugs τα οποία έχουν υποβληθεί ήδη στα αντίστοιχα bugtrackers, τα οποία αφορούν mainstream λογισμικό όπως π.χ., Firefox, Libreoffice κλπ (όχι προγράμματα που έχουν κάτω από 20 έλληνες χρήστες).

    Επίσης, η προσπάθεια αυτή επικεντρώνεται σε bugs τα οποία "αν δεν τα διορθώσει κάποιος Έλληνας πιθανότατα δε θα τα διορθώσει κανείς", δηλαδή π.χ., σε προβλήματα υποστήριξης της ελληνικής γλώσσας ή σε προβλήματα χρήσης υπηρεσιών στην Ελλάδα (π.χ., τραπεζών ή του δημοσίου, δηλ. για παράδειγμα αν κάποιο bug στο firefox εμποδίζει πολύ κόσμο να υποβάλλει τη φορολογική του δήλωση ή κάτι τέτοιο).

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

    Με βάση αυτά που θα συλλέξω η δική μου δουλειά θα είναι η ιεράρχηση και η πιο λεπτομερής "ματιά" ώστε να δημοσιεύεται κάθε μήνα μια λίστα με τα "10 πιο σημαντικά" και μία με τα "10 σημαντικά και εύκολα στην επίλυση" bugs, τόσο μέσω αυτού του blog (και άρα των πλανητών hellug και ellak), όσο και μέσω email στις ελληνικές λίστες ΕΛ/ΛΑΚ.

    Αν λοιπόν γνωρίζετε κάποιο bug που πληρεί αυτά τα κριτήρια, παρακαλώ στείλτε το σχετικό link στο upstream bugtracker report καθώς και αν γίνεται μια μικρή περιγραφή για το γιατί αυτό το bug είναι σημαντικό στη διεύθυνση pktoss at g mail τελεία com, με θέμα που να ξεκινά από MSBL: (για να διευκολυνθεί η ταξινόμηση).

    Παντελής

    Υ.Γ., αν έχετε σχόλια σχετικά με το εγχείρημα, θα χαρώ να τα δω μέσω comments ή μέσω email.

    Τρίτη, 19 Απριλίου 2011

    frelink: restoring deleted open or loop-mounted files in Linux

    Has it ever happened to you that an important file has been deleted (by yours or someone else's mistake) but this file is still open by a process or loop-mounted somewhere?

    In the "still open by a process" case, if the file is relatively small, as well as static or append only, you can use the well-known tricks of
    cp /proc/<pid>/fd/<fd> /new/file/path
    or
    tail -c +0 -f /proc/<pid>/fd/<fd> > /new/file/path
    to bring it back from the land of the "unlinked" by copying to someplace safe.

    But what happens if the file is too big to copy or changes in a random fashion so that "tail -f" can not ensure that the copy will have the latest updates? Even worse, what happens if the file is loop-mounted in which case there is not even an fd to copy it from?

    Κυριακή, 17 Απριλίου 2011

    Το LibreOffice 3.4 θα έχει υποστήριξη για ελληνική αρίθμηση σε λίστες και κεφάλαια

    Όπως ίσως διαβάσατε και σε προηγούμενο post, το LibreOffice 3.4 θα έχει πλέον υποστήριξη για ελληνική αρίθμηση σε λίστες και κεφάλαια, ένα patch που εκκρεμούσε 2 χρόνια πάνω-κάτω στο OpenOffice.

    Μπορείτε να δοκιμάσετε αυτή τη δυνατότητα κατεβάζοντας κάποιο από τα prerelease του LibreOffice εδώ.

    Τετάρτη, 13 Απριλίου 2011

    I have no computer but I can code :P

    Δυστυχώς δεν έχω σχεδόν καθόλου ελεύθερο χρόνο αυτό τον καιρό για να γράψω κάτι σοβαρό, αλλά θα ήθελα να μοιραστώ το παρακάτω που είδα σε ένα forum post:

    Ερώτηση:
    Hello,

    I posted this on another forum, and I figure I would try here as well.

    I have a rather straightforward challenge and I need a little help. Let me preface that I am not a very experienced kernel module developer, but I have read through some of the basic tutorials and examples. I also have a fair amount of C/C++ experience, so I am not a complete novice in those regards.

    The challenge is to count the contents of each /proc/[pid]/fd directory from a kernel module. Basically, counting the number of open file descriptors for each process.


    Απάντηση:
    Because of my poor english,this may out of some misunderstanding....

    I am not a programmer either linux user,further have no computer...this is my smartphone;;;

    include/linux/file.h
    Per-Process file table ->fdtable
    Open file table -> files_struct

    So,The 'fdtable' struct may have key possiblity to solve this problem

    This is my first posting to LQ which requires at least one posting to access full user account...
    This policy force to use english all over the world...may not a quite wide open concepts


    -Παντελής

    Πέμπτη, 7 Απριλίου 2011

    Μικραίνοντας εικονικούς δίσκους μέσω qemu-img

    Ας πούμε ότι φτιάχνετε ένα virtual machine για να το παραδώσετε σε κάποιον ως appliance (π.χ., ένα service appliance ή ένα appliance για εξάσκηση σε κάποια τεχνική administration). Ξεκινάτε στα γρήγορα από ένα minimal image (π.χ., ubuntu JeOS ή debian minimal) κάνετε install τα απαραίτητα, σβήνετε ότι υπάρχει περιττό και ετοιμάζεστε να το παραδώσετε. Υπάρχει όμως ένα μικρό πρόβλημα, το μέγεθος του image / virtual disk.

    Μετά από αρκετό setup και install/deinstall (ειδικά αν θέλετε να κάνετε compile ένα πακέτο εντός του VM ή κάτι παρόμοιο), δεν είναι παράξενο το df εντός του VM να μας λέει π.χ., 500ΜΒ αλλά το ίδιο το αρχείο του image να είναι 1-2GB, λόγω του ότι τα filesystems προσπαθούν να μην πειράζουν τα σβησμένα αρχεία όταν δεν είναι αναγκασμένα να το κάνουν (ώστε να έχει ελπίδες το undelete).

    Πώς μπορούμε λοιπόν να ξαναμικρύνουμε ένα π.χ., qemu qcow2 image ώστε το μέγεθός του να ανταποκρίνεται στο μέγεθος των περιεχομένων του; Η λύση είναι ένας συνδυασμός προγραμμάτων που τρέχουμε εντός του VM και του qemu-img.

    Τετάρτη, 6 Απριλίου 2011

    N-queens σε C με bitmasks και αναδρομή

    Όσο προσπαθώ να βρω μια ικανοποιητική λύση για posting κώδικα στο blogspot, θα ήθελα με αυτό το post να μοιραστώ μια πολύ όμορφη λύση στο πρόβλημα των N-Βασιλισσών σε C, η οποία συνδυάζει μικρό και "συμπαγή" κώδικα με αρκετά καλή αποδοτικότητα σε χώρο/χρόνο, χάρη στο συνδυασμό bitmasks και αναδρομής.

    Κυριακή, 3 Απριλίου 2011

    A collection of links with useful information about Qemu/kVM

    I would like to share a collection of links that contain useful information about Qemu/KVM internals. They are useful for people interested in hacking on Qemu/KVM either to fix bugs or improve the existing functionality / academic projects, GSoC etc

    Reading (open source) code

    I read lots and lots of code, practically on a daily basis. Only a tiny fraction of that code has been written by me, or people I know, so I wanted to share my techniques on effective reading of large modern free software projects and if possible to hear yours as well :)

    Σάββατο, 2 Απριλίου 2011

    Wake On LAN σε Ubuntu

    Το "wake on LAN" είναι ένα πολύ χρήσιμο χαρακτηριστικό στα σύγχρονα desktop.

    Ιδιαίτερα στην περίπτωση ενός "server" υπολογιστή που βρίσκεται σε άλλο δωμάτιο ή όροφο (ή ακόμα περισσότερο σε μη προσβάσιμο από εμάς χώρο) και θέλουμε ένα εύκολο τρόπο να τον "ανοίγουμε" χωρίς να σηκωθούμε από τη θέση μας.

    Παρασκευή, 1 Απριλίου 2011

    Περί αναδρομής και αποτίμησης αριθμητικών παραστάσεων

    Προς όφελος όσων μελετούν εισαγωγικά θέματα στη C/C++ και διαδικασιακό προγραμματισμό αυτό τον καιρό και για δικό μου reference όταν γεράσω και ξεκουτιάνω ( :P ), ας δούμε λίγο κώδικα για αποτίμηση αριθμητικών παραστάσεων.

    Για λόγους ευκολίας (= τεμπελιάς) θα θεωρήσω ότι το σύστημά μας δέχεται ως αριθμούς μόνο ακέραια ψηφία από το 0 ως το 9. Η γενίκευση για πραγματικούς αριθμούς είναι τετριμμένη και αφήνεται ως άσκηση για το χρήστη ( :P ).

    Αυτό που θέλουμε λοιπόν είναι καταρχήν να αναγνωρίζουμε αριθμητικές παραστάσεις του στυλ:
    5*2+7/2+4-8

    Τι πρέπει να προσέξουμε:
    • Οι τελεστές είναι "left associative" δηλαδή το 5*3/2 π.χ., αποτιμάται ως (5*3)/2 και όχι ως 5*(2/3).
    • Υπάρχει προτεραιότητα στους τελεστές, δηλαδή το '*' και το '/' έχουν μεγαλύτερη προτεραιότητα από το '+' και '-', δηλ. το 5+3*8 αποτιμάται σαν 5+(3*8) και όχι (5+3)*8.
    Τα παραπάνω μας οδηγούν στην εξής στρατηγική σύμφωνα με την πρακτική του "διαίρει και βασίλευε": Ξεκίνα να διαβάζεις από τα αριστερά, όταν βλέπεις σταθερά θυμίσου την, όταν βλέπεις "*" ή "/" και έχεις στη μνήμη σου και τους 2 τελεστέους κάνε την πράξη, όταν βλέπεις "+" ή "-" και έχεις κάνει όλους τους πολ/σμους και διαιρέσεις στους τελεστέους (για σεβασμό της προτεραιότητας) κάνε την πράξη, στο τέλος η τιμή της παράστασης είναι το σύνολο των επιμέρους πράξεων.

    Αν αναθέσουμε σε κάθε κομμάτι του προγράμματος μια συνάρτηση, το παραπάνω μπορεί να εκφραστεί σε κώδικα ως εξής:

     double prim(bool get)  
    {
    if (get) cursor ++;
    char c = expression[cursor++];
    //Primaries can only be single digit integers
    return c - '0';
    }
    double term(bool get)
    {
    double left = prim(get);
    for (;;) {
    switch (expression[cursor]) {
    case '*':
    left *= prim(true);
    break;
    case '/':
    left /= prim(true);
    break;
    default:
    return left;
    }
    }
    }
    double expr(bool get)
    {
    double left = term(get);
    for (;;) {
    switch (expression[cursor]) {
    case '+':
    left += term(true);
    break;
    case '-':
    left -= term(true);
    break;
    default:
    return left;
    }
    }
    }

    Η δυαδική μεταβλητή get καθορίζει αν θέλουμε να καταναλώσουμε το επόμενο σύμβολο ή όχι. Η κλήση π.χ., του παραπάνω κώδικα θα ήταν ως expr(false). Ακόμα και στην περίπτωση της αμοιβαίας αναδρομής, η υλοποίηση αυτή στη C είναι αρκετά αποδοτική καθώς η κλήση συνάρτησης στη C είναι σχετικά "φτηνή".

    Υπάρχουν σίγουρα πιο "σοφιστικέ" τρόποι να δουλέψει κανείς με operators (π.χ., Operator precedence parsing) αλλά όταν χρειάζεται να γράψει κάποιος τον κώδικα "με το χέρι" (χωρίς τη βοήθεια γραμματικών και parser generators) όσο πιο απλός και προφανής είναι ο κώδικας τόσο λιγότερο το debugging και αυτό είναι που μετρά στο τέλος της ημέρας ...

    Παντελής

    Τετάρτη, 30 Μαρτίου 2011

    Virtual USB Analyzer


    Για όσους γράφουν ή φιλοδοξούν να γράψουν USB drivers για το Linux, ένα από τα βασικά εργαλεία είναι το usbmon, δηλαδή το υποσύστημα του πυρήνα που παρακολουθεί τα πακέτα που μεταφέρονται μεταξύ drivers και controller. Με αυτό μπορούμε να υλοποιήσουμε το αντίστοιχο του tcpdump για usb, αλλά μόλις πάρουμε ένα τεράστιο log τι γίνεται;

    Τρίτη, 29 Μαρτίου 2011

    openssh-server και reverse DNS

    Αν ο openssh server αργεί αδικαιολόγητα να σας δείξει το password prompt
    σε local μηχάνημα ή Virtual Machine (debian ή ubuntu), προσθέστε στο /etc/ssh/sshd_config:
    UseDNS no
    και το πρόβλημα θα διορθωθεί.

    Παντελής

    "Καταλαμβάνοντας" απενεργοποιημένους windows υπολογιστές μέσω PXE και WoL

    Ας πούμε ότι είστε σε ένα περιβάλλον όπου υπάρχουν αρκετοί υπολογιστές οι οποίοι είναι κλειστοί. Ως αυθεντικό geek, θα θέλατε να τους χρησιμοποιήσετε όλους εσείς (distcc κανείς?) αλλά το πρόβλημα είναι ότι το μόνο λειτουργικό που έχουν εγκατεστημένο είναι τα windows και αυτοί που τους χρησιμοποιούν κανονικά θα θύμωναν ιδιαίτερα αν αλλάζατε με οποιοδήποτε τρόπο το δίσκο τους (π.χ., αν εγκαθιστούσατε Linux, έστω και dual-boot).

    Ή έστω ότι έχετε εγκαταστήσει Linux σαν dual-boot σε όλους αλλά θέλετε να μην (χρειάζεται να) το γνωρίζει αυτό κανείς άλλος, δηλαδή το default boot selection να είναι τα windows αλλά παρόλα αυτά να μπορείτε να τους έχετε όλους στη διάθεσή σας χωρίς να χρειάζεται να σηκωθείτε από τη θέση σας.

    Η λύση είναι να χρησιμοποιήσουμε μια σειρά από χαρακτηριστικά που έρχονται προεγκατεστημένα στα σύγχρονα desktop: Wake on LAN και PXE.

    Μετατροπή desktop μηχανήματος σε headless server στα γρήγορα με ubuntu και FreeNX

    Ας υποθέσουμε ότι έχετε στο γραφείο σας ένα (σχετικά ισχυρό και αθόρυβο) laptop και ένα αρκετά ισχυρότερο αλλά θορυβώδες desktop. Θα μπορούσατε να ασχοληθείτε ώστε να κάνετε το desktop (αρκετά πιο) αθόρυβο αλλά αυτό κοστίζει και χρόνο και χρήμα. Η εύκολη και γρήγορη λύση σε πολλές περιπτώσεις είναι να το απομακρύνετε απλά από το χώρο σας μετατρέποντάς στο σε headless server.

    ReactOS 0.3.13 και υποστήριξη για ελληνικά!


    Αρκετοί από εμάς γνωρίζουν το project ReactOS το οποίο προσπαθεί να προσφέρει στην κοινότητα ένα ελεύθερο λειτουργικό σύστημα 100% binary compatible με τα Windows.

    Πρόσφατα (22 Μαρτίου, ακριβώς πάνω στα γενέθλιά μου, δεν είναι υπέροχο να είναι κανείς μέλος της κοινότητας του OSS; Παίρνεις δώρα όλη την ώρα :) ) το project δημοσίευσε την έκδοση 0.3.13 με αρκετές βελτιώσεις και σταθερότητας αλλά και λειτουργικότητας (π.χ., το skype 4 δουλεύει τώρα).

    Δευτέρα, 28 Μαρτίου 2011

    Βίντεο διαλέξεων από MIT, Stanford και Berkeley

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

    Κυριακή, 27 Μαρτίου 2011

    Git get all branches

    Πολλές φορές ένα remote git repository έχει πολλά branches και θέλουμε να τα κάνουμε track όλα. Στην περίπτωση αυτή μπορούμε να έχουμε ένα μικρό σκριπτάκι που κάνει το ακόλουθο:
    #!/bin/bash
    set -e

    url="${1}"
    git clone "${url}"
    cd "${url##*/}"
    for branch in $(git branch -a | grep remotes | grep -v "HEAD\|master"); do
    git branch --track "${branch##*/}" "${branch}"
    done
    git fetch --all
    git pull --all

    Μπορείτε να το ονομάσετε gitall και να το καλείτε ως gitall <url>

    Παντελής

    Αντιγράφοντας 1 terabyte ...

    Ένα από τα οικιακά μου projects αυτό το σαββατοκύριακο ήταν η αντιγραφή 1TB δεδομένων (virtual machine images, κώδικας, datafiles από πειράματα κλπ κλπ κλπ, πάνω από 200000 αρχεία στο σύνολο) από ένα (αναξιόπιστο πλέον λόγω hardware) usb εξωτερικό δίσκο σε μία ελαφρά πιο αξιόπιστη λύση (usb εξωτερικό case με θήκη για 2 δίσκους τους οποίους έχω κάνει software RAID-1 μέσω md, να 'ναι καλά το Linuxάκι).

    Τώρα που επιτέλους η αντιγραφή τελείωσε, ορισμένα σχόλια, για όσους θα θελήσουν να κάνουν κάτι παρόμοιο:
    1. Χρησιμοποιήστε ξεχωριστό υπολογιστή, κατά προτίμηση σε άλλο δωμάτιο κλπ. Η αντιγραφή θα κρατήσει 2-3 μέρες με τις τυπικές ταχύτητες (USB 2.0 περίπου 20MB/s) και επειδή σε αρκετά σημεία ο ένας από τους 2 δίσκους θα "σκάσει" (δεν εννοώ ολική καταστροφή, απλά κάτι θα γίνει, π.χ., θα πέσει το ρεύμα και θα χαθεί o δίσκος από τα devices απότομα). Άρα δε θέλετε να έχετε το θόρυβο κλπ από τον υπολογιστή αυτόν στο κεφάλι σας όλο αυτό τον καιρό.
    2. Χρησιμοποιήστε rsync -avh --progress αντί για copy, αφού με αυτό τον τρόπο κάθε φορά που το copy θα "σκάει" θα μπορείτε να κάνετε resume και να πηγαίνει λίγο παραπέρα από την προηγούμενη φορά. Έτσι μπορείτε να είστε σχετικά βέβαιοι ότι αν ο ένας από τους 2 δίσκους δε σκάσει τελείως, το copy θα τελειώσει κάποτε ...
    3. Επειδή όπως είπαμε κανείς δε θέλει να κάθεται να νταντεύει ένα copy, η απλή λύση (don't you love unix) είναι rsync -avh --progress bla/ blo/ || mplayer metallica.mp3 και το volume στο full. Ο λόγος που δε βάζουμε απλά το rsync μέσα σε ένα endless loop είναι ότι συνήθως όταν σκάει το copy χρειάζεται ανθρώπινη επέμβαση στο hardware (aka βάλε - βγάλε το δίσκο στο USB port) για να μπορεί να συνεχίσει
    Θα ήθελα να παρατηρήσω εδώ αυτό που λένε κάποιοι χρήστες των windows ότι "το linux είναι μόνο για servers". Καθώς η τεχνολογία προχωράει, όλο και περισσότερες εργασίες που παλιότερα θα χρειαζόταν να γίνουν μόνο σε high end servers / datacenters γίνονται πλέον σπίτι μας (π.χ., το να παίζουμε με terabytes δεδομένων).

    Σε αυτές τις περιπτώσεις όσοι χρησιμοποιούμε linux έχουμε πάντα δίπλα μας τα δοκιμασμένα και πιστά command-line tools για να "βγάλουμε το φίδι απ' την τρύπα" :)

    Παντελής

    Ubuntu administration: metapackages

    Μετά από reinstall ή όταν φτιάχνουμε μια καινούργια debian/ubuntu-based εικονική μηχανή ή LiveCD/LiveDVD/chroot για κάποιο συγκεκριμένο σκοπό, χρειαζόμαστε ένα σύνολο από πακέτα εγκατεστημένα. Το να εγκατασταθούν αυτά τα πακέτα ένα-ένα με το χέρι είναι κάτι πολύ βαρετό, γι αυτό το debian συμπεριέλαβε από πολύ νωρίς την ιδέα των "metapackages". Πακέτα δηλαδή που δεν εγκαθιστούν αρχεία, αλλά είναι απλά ένα σύνολο από εξαρτήσεις (dependencies) προς τα πακέτα που θέλουμε να εγκαταστήσουμε.

    Ο μικρός Παντελής μαθαίνει blogging :P

    Το ομολογώ, οι ικανότητές μου αυτή τη στιγμή τείνουν στο μηδέν, αλλά θα μάθω σιγά-σιγά :P

    Θα παραθέσω λοιπόν μερικά χρήσιμα links για δικό μου όφελος και αν κάποιος δει ποτέ αυτό το post μπορείτε να γράψετε και τα δικά σας tips/links :)

    • Google Analytics Τι καλύτερος τρόπος να σκοτώσει κάποιος την ώρα του από το να βλέπει τα στατιστικά για τα page views :P
    • Source Code Formatter Είμαι προγραμματιστής / sysadmin, οπότε λογικό είναι τα posts μου να περιέχουν κώδικα :)
    Παντελής

    Δημιουργία chroot για development

    Αν ο κώδικας που γράφει κάποιος δεν έχει ιδιαίτερες απαιτήσεις (π.χ., βιβλιοθήκες ή εργαλεία) ούτε reverse dependencies (π.χ., αν γράφουμε λύσεις για τα προβλήματα στο project euler) τότε το να γίνει η ανάπτυξη στο ίδιο περιβάλλον που γίνονται και οι υπόλοιπες δουλειές στον υπολογιστή (π.χ., browsing, συγγραφή κειμένων) δεν δημιουργεί κανένα πρόβλημα.

    Αν όμως οι φιλοδοξίες μας είναι μεγαλύτερες (π.χ., αλλαγές στο window manager ή στο office suite ή ακόμα και σε κάτι πιο θεμελιώδες όπως ο kernel ή ο boot loader) τότε κάποια μορφή "απομόνωσης" του περιβάλλοντος ανάπτυξης είναι απαραίτητη, για 2 κυρίως λόγους.

    Σάββατο, 26 Μαρτίου 2011

    Editing your scripts in $PATH easily

    Ένα μικρό αλλά χρήσιμο κολπάκι που χρησιμοποιώ συχνά στα "οικιακά" μου shell scripts είναι το παρακάτω. Στην αρχή του script μπορούμε να προσθέσουμε τον κώδικα:

    if [ "x${1}" = "x-e" ]; then
    ${EDITOR:-editor} $0
    exit 0
    fi

    Αυτό θα έχει ως συνέπεια να μπορούμε να κάνουμε edit κάθε script foo στο PATH (δηλαδή κάθε script που μπορούμε να τρέξουμε γράφοντας απλά το όνομά του) γράφοντας απλά "foo -e" αντί για "foo" και χωρίς να μας ενδιαφέρει το πού ακριβώς βρίσκεται το "foo".

    Επειδή χρησιμοποιούμε το ${EDITOR:-editor} δίνουμε τη μεγαλύτερη δυνατή ευελιξία στο χρήστη. Μπορεί ή να χρησιμοποιήσει το default της εγκατάστασης (από τα alternatives) ή την προτίμησή του (π.χ., σκεφτείτε ένα server με πολλούς χρήστες που σε κάθε έναν αρέσει άλλος editor) μέσω του environment variable $EDITOR.

    To /usr/bin/editor symlink είναι "debianism" βέβαια αν θυμάμαι καλά, οπότε μπορείτε να το αντικαταστήσετε με το όνομα του editor που προτιμάτε ή με αντίστοιχο μηχανισμό σε άλλες διανομές.

    Παντελής

    Αλουμινόχαρτο

    Το πρόβλημα: σας έχει χαλάσει το mp3 player (δεν κάνει επαφή το jack του ακουστικού) ή δεν κάνει επαφή η μπαταρία στο mouse γιατί έχει χαλαρώσει το ελατήριο.

    Η λύση: αλουμινόχαρτο :P

    Debian administration: apt-cacher-ng

    Αν έχετε περισσότερα από ένα μηχανήματα με debian/ubuntu στο σπίτι ή στο γραφείο, ή αν ασχολείστε ενεργά με την ανάπτυξη / συντήρηση / δοκιμή εφαρμογών και επομένως χρειάζεστε να μπορείτε να φτιάχνετε γρήγορα chroots ή εικονικές μηχανές με συγκεκριμμένα debian πακέτα και εκδόσεις, θα έχετε παρατηρήσει ότι ακόμα και με μια γρήγορη σύνδεση, το "κατέβασμα" των πακέτων κάθε φορά είναι η κύρια αιτία καθυστέρησης (bottleneck).

    Η λύση στο πρόβλημα, είναι ένας τοπικός caching proxy για debian πακέτα. Μόλις δηλαδή τα πακέτα κατέβουν μία φορά, παραμένουν στο δίσκο σας και τις επόμενες φορές που θα ζητηθούν δε θα χρειαστεί να τα πάρετε από το internet.

    Μέχρι και πριν από 1-2 χρόνια, οι λύσεις που κυκλοφορούσαν στα επίσημα αποθετήρια (apt-cacher γραμμένο σε python, apt-cacher-ng σε C, approx σε Ocaml) παρουσίαζαν διάφορα προβλήματα ειδικά κάτω από συνθήκες μεγάλου traffic ή αναξιόπιστης σύνδεσης με το internet.

    Αυτά όμως πλέον ανήκουν στο παρελθόν και ο apt-cacher-ng προτείνεται πια ανεπιφύλακτα σε όλους όσους έχουν αρκετό χώρο στο δίσκο και θέλουν να μειώσουν σημαντικά το χρόνο αναμονής τους. Ενδεικτικά, ο χρόνος για το "χτίσιμο" ενός ubuntu maverick virtual machine για Qemu/KVM μέσω του ubuntu-vm-builder πέφτει από τα ~30 στα ~3 λεπτά σε ένα σχετικά γρήγορο σύστημα με "ζεστή" cache!!

    Η εγκατάσταση του apt-cacher-ng είναι επίσης πανεύκολη (2 εντολές):

    sudo apt-get install apt-cacher-ng
    echo 'Acquire::http { Proxy "http://127.0.0.1:3142" ; };' |
    sudo tee -a /etc/apt/apt.conf.d/98aptcacher

    Αν έχετε εικονικές μηχανές, chroot, άλλα μηχανήματα στο δίκτυο κλπ το μόνο που χρειάζεται να κάνετε σε αυτά είναι

    echo 'Acquire::http { Proxy "http://192.168.1.1:3142" ; }; |
    sudo tee -a /etc/apt/apt.conf.d/98aptcacher

    Όπου αντί για 192.168.1.1 βάζετε το κατάλληλο IP (ή hostname αν έχετε κάνει τις κατάλληλες ρυθμίσεις) του μηχανήματος που "τρέχει" το apt-cacher-ng και φροντίζετε το port 3142 να είναι ανοιχτό από το firewall σε αυτό το μηχάνημα.

    Δυστυχώς δεν έχω βρει ακόμα κάτι αντίστοιχα κομψό για Fedora (όχι, το squid
    δεν το θεωρώ κομψή λύση). Αν γνωρίζετε κάποιο τέτοιο proxy για .rpm
    θα ενδιαφερόμουν πολύ να το μάθω :)

    Παντελής

    Δευτέρα, 21 Μαρτίου 2011

    Software RAID-1

    Για να μην το ξεχνάω, τα βήματα για ένα καινούργιο
    RAID-1 array (όχι primary) από command-line
    σε debian:

    1. cfdisk /dev/sda (set partition type to "fd" linux RAID autodetect)
    2. apt-get install mdadm
    3. sfdisk -d /dev/sda | sfdisk /dev/sdb (copy over the partition table)
    4. mdadm --create /dev/md0 --chunk=4 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
    5. mdadm -Es | grep md0 >> /etc/mdadm/mdadm.conf
    6. update-initramfs -k all -u
    7. watch cat /proc/mdstat (περιμένουμε να συγχρονίσει)
    8. mkfs.ext4 /dev/md0 -L store (ή setup LVM)
    9. Setup fstab to mount /media/store on boot
    10. done!

    Τετάρτη, 16 Μαρτίου 2011

    Wine και ελληνικά Fonts

    Αν τρέχετε κάποια windows εφαρμογή στην οποία τα ελληνικά φαίνονται
    περίεργα, μπορεί να φταίει το γεγονός ότι πολλές windows εφαρμογές
    ζητούν τη γραμματοσειρά Tahoma explicitly by name ή ακόμα και by file(!).

    Για να το αντιμετωπίσει αυτό το wine έρχεται με τη δική του 100% metric
    compatible εκδοχή, δηλαδή όλοι οι χαρακτήρες σε όλα τα "point sizes"
    έχουν το ίδιο μέγεθος σε pixels με αυτούς της Tahoma των Windows.

    Δυστυχώς, η γραμματοσειρά αυτή δεν έχει ελληνικούς χαρακτήρες
    με αποτέλεσμα να μπαίνει σε εφαρμογή ο κώδικας για αντικατάσταση
    γραμμάτων και ο χρήστης να βλέπει ένα ιδιαίτερα αντιαισθητικό αποτέλεσμα
    και σε πολλές περιπτώσεις να επηρεάζεται και η ίδια η λειτουργικότητα της
    εφαρμογής (π.χ., αν κάποια labels δε φαίνονται).

    Η ιδανική λύση θα ήταν κάποιος να προσθέσει ελληνικούς χαρακτήρες
    στην Tahoma του wine μέσω fontforge. Δυστυχώς κανείς δεν έχει προσφερθεί
    μέχρι στιγμής ...

    Ως τότε τα workarounds που γνωρίζω (σε Ubuntu 10.10 / debian testing)
    είναι τα εξής:

    1. Η απλή / αλλά μη συμβατή με το πνεύμα του Ελ. Λογισμικού λύση:
    απλά εγκαθιστούμε την Tahoma των windows

    wget http://www.kegel.com/wine/winetricks
    sh winetricks tahoma


    2. Η "brute force" λύση.
    edit ~/.wine/system.reg

    εκεί που λέει: Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes
    προσθέτουμε τη γραμμή
    "Tahoma"="Liberation Sans"
    Αυτό μπορεί να γίνει και με wine regedit

    Επίσης μετακινούμε τα αρχεία tahoma.ttf και tahomabd.ttf σε άλλο φάκελο
    και λέμε στο dpkg να μην τα επαναφέρει όταν αναβαθμίσουμε το wine:

    sudo mkdir /usr/share/fonts-noel
    sudo dpkg-divert --divert /usr/share/fonts-noel/tahoma.ttf \
    --rename /usr/share/wine/fonts/tahoma.ttf
    sudo dpkg-divert --divert /usr/share/fonts-noel/tahomabd.ttf \
    --rename /usr/share/wine/fonts/tahomabd.ttf

    με αυτό τον τρόπο το wine θα αναγκαστεί να χρησιμοποιήσει τα system fonts του
    Linux στα οποία τα ελληνικά φαίνονται σωστά.


    Σημείωση: ίσως υπάρχει δυνατότητα επίλυσης και μέσω του

    Software\\Microsoft\\Windows NT\\CurrentVersion\\FontLink\\SystemLink

    κλειδιού στη "registry" του wine, αυτός ο τρόπος όμως μπορεί να κάνει το κείμενο
    να φαίνεται αταίριαστο μεταξύ ελληνικών και αγγλικών (αφού έτσι τα ελληνικά
    θα τα παίρνει από το system font και τα αγγλικά από την ενσωματωμένη Tahoma).

    Δυστυχώς, στο 2011 και αν και έχει γίνει τόση πολλή και σημαντική δουλειά
    στον τομέα των γραμματοσειρών στο ελεύθερο λογισμικό, υπάρχουν ακόμα
    τέτοια θέματα ...





    Δευτέρα, 14 Μαρτίου 2011

    LibreOffice vs OpenOffice σημειώσατε 1!

    Πριν από 2 χρόνια, το καλοκαίρι του 2009, στα πλαίσια του
    coding camp που διοργάνωσε τότε ο Chania Lug είχαμε
    υλοποιήσει μεταξύ άλλων και ένα patch για το OpenOffice
    για την υποστήριξη ελληνικού συστήματος αρίθμησης
    στις λίστες.

    Για την υποβολή του στο OpenOffice ακολουθήσαμε την
    καθιερωμένη διαδικασία (attach στο bug, mark ως patch)
    και υπήρξαν και ενθαρρυντικά σχόλια από έλληνες χρήστες
    που είχαν ζητήσει αυτό το χαρακτηριστικό. Αποτέλεσμα;

    Μετά από 1 χρόνο (!) μου στάλθηκε το copyright assignment
    form (SCA). Και ενώ το υπέγραψα σχετικά άμεσα (εντός 3 ημερών)
    έχει περάσει περίπου 1 χρόνος ακόμα και κανένα σχόλιο δεν
    έχει γίνει από τους maintainers για αποδοχή ή απόρριψη ...

    Αντίθετα, στο LibreOffice για το ίδιο ακριβώς κώδικα δε
    χρειάστηκε καμμία γραφειοκρατική διατύπωση (το μόνο που
    ζήτησαν είναι άδεια MPL/LGPLv3+ για το patch πράγμα εντελώς
    λογικό) και το χαρακτηριστικό έγινε μέρος του LibreOffice εντός
    3 ημερών από την υποβολή του patch!

    Εσείς σε ποιο Opensource Office Suite θα διαλέγατε να συνεισφέρετε;





    Κυριακή, 13 Μαρτίου 2011

    Μετατροπή σε mp4 για PSP

    Καθώς στο στρατό το PSP κάνει θραύση, το πιο συνηθισμένο
    αίτημα που είχα ως φαντάρος από συναδέλφους ήταν για μετατροπή
    ταινίας από mpeg-2 σε mp4.

    Ο τρόπος που δούλεψε για μένα (μια και δεν είχα και internet και
    άρα μόνο τα ήδη εγκατεστημένα προγράμματα του Linux μπορούσα
    να χρησιμοποιήσω):

    mencoder -sws 9 -vf scale -zoom -xy 480 -ovc x264 -oac faac \
    -faacopts br=64:mpeg=4:object=2:raw -channels 2 \
    -srate 24000 \
    -x264encopts crf=26:me=umh:me_range=16:subq=6:trellis=2:global_header:level_idc=30 \
    -of lavf -lavfopts format=psp \
    -info name="$NAME" $FNAME.mpg -o $FNAME.mp4
    Όπου NAME ο τίτλος της ταινίας και FNAME το όνομα του αρχείου
    χωρίς την κατάληξη. Δυστυχώς το παραπάνω δεν είναι εγγυημένο ότι
    θα δουλέψει και για εσάς γιατί διαφορετικά PSP μοντέλα χρειάζονται
    διαφορετικές ρυθμίσεις, αλλά με λίγο πειραματισμό με τις διαστάσεις
    της οθόνης κλπ υπάρχουν καλές πιθανότητες να βγει κάτι που δουλεύει ...