A developer’s review on Ainol Novo Paladin 7

Posted in Android, computer science by trelobifteki on Μαρτίου 2, 2012

Where to get it?

I bought this tablet device for almost 100 U.S. dollars (~ 80 euros). The price was very tempting and I couldn’t resist. I bought it from an internet store in China and I delivered it after ~ 2 weeks. I bought it from there, since it did not require any extra money for bringing it from there (only post expenses).

Please send me a PM in twitter (@trelobifteki) for asking me the site. But you’ll find it quite easily in Google.

Technical overview:

- 7-inch capacitive touchscreen display (840 x 480 resolution)
- MIPS-Based XBurst 1.0GHz processor
- Vivante GC860 444MH GPU
- Android 4.0 Ice Cream Sandwich
- 8GB memory, expandable up to 32GB via microSD
- 512RAM
- WiFi 802.11 b/g/n
- 4000 mAh battery
- No camera
- No 3G
- No Bluetooth

Technical review

  • Performance:You’ll soon discover that it’s quite slow but bearable. You may notice some display lags when scrolling between workspaces in launcher application or some games included (E.g. Spiderman) have low FPS, but it’ll be quite responsive. Sometimes, you need to reboot it as well.
  • Battery: I’m quite satisfied with the battery lifespan, but recharging it from USB requires quite some time (> 3 hours). It is possible that charging from USB is slower than  power cable, but it was not included in the box.
  • Screen:  Screen is fair and meets my minimum requirements. I’d  prefer better display resolution and quite better color quality
  • Applications: The most serious issue I’ve came across with this device is mainly the MIPS-based processor that makes it incompatible with almost any application in Android market. As a result, I had to find from untrusted markets several basic applications that were forbidden from Android Market (E.g. Facebook, Twitter, Youtube, Adobe reader, Flash).
  • Sound: Sound speaker is horrible. Better use headphones or mute it.
Generally, I’m not that satisfied with hardware. I would be better to have bought another more expensive tablet that includes better screen resolution. But I believe this can be a perfect gift for someone special 😉

Firmware upgrade guide:

I followed the firmware upgrade path below  in order to  remove almost all Chinese apps & install Youtube application. Please refer to the following forum, that I found very useful:
Novo 7 Paladin forum
Custom ROM by Pinkflozd

Upgrade guide from 4.0.1 to custom ROM 4.0.3
CyanogenClockWorkMod for Ainol Novo Paladin 7
Working apps list with download links

I believe this upgrade is very useful for the following reasons:

  • Root access is always welcome and useful 😉
  • No chinese apps + keyboard anymore
  • Magic code allows several application to run in your MIPS based processor (this is actually magic)
  • More apps 😀


  • An SD card with 2GB free space (I can be less, but what’s the point?)

1. Upgrading to 4.0.3: First, you need to upgrade to latest Android release (4.0.3). Notice that upgrading firmware requires to copy zip file to the root directory of a sd card (not the internal one!). Also, I found confusing that I had to use Vol+ for booting to recovery (usually, this is done by Vol-). Please be patient during installation procedure. It takes some time.

2. Installing clockworkmod recovery: Use the same process as above. After installing it, boot to recovery and make a backup of your system.

3. Upgrading to custom ROM: Currently I used Pinkflozd custom ROM 0.7. I’m pretty satisfied with it. I erased data files and cache and installed it. After this, I took a look on the backup I made an extracted all APK files that I wanted (E.g. Superman :D)

Youtube  app is included in this ROM 😀

4. Install applications from the website: Link is provided above (Facebook, Twitter, Games…).  The only thing I’m missing now is Google Talk and Skype. Of course, you can download IM+ from Google Market.

I also found very useful downloading a Black Market app for android. Basically, you can download APK files this way with no Android Market restrictions. By using Magic Code, usually you won’t have any problem installing them (running them is another story).

Developer Notes

If you want to do some development for this table, I suggest to download the SDK / NDK for MIPS based processors. You may find them from the links below:

MIPS Android NDK download
MIPS Android SDK download

I tried to compile Warmux from source. This was pretty easy but I found some problems while running the debug application and I stopped it there.

Anyway, happy hacking 😉

P.S. If you accidentally smashed the power button (as I did), have no worries. Thank God, the reset button can work for turning on the device again.


Εντυπώσεις από Fosscomm 2010

Posted in computer science by trelobifteki on Απρίλιος 27, 2010

Πέρασε λοιπόν και η φετινή Fosscomm και λέω να γράψω και γω ορισμένες εμπειρίες.

Η αλήθεια είναι ότι ένας από τους σημαντικότερους λόγους που πήγα Θεσσαλλονίκη ήτανε οι άνθρωποι παρά το ίδιο το συνέδριο. Ίσως είναι από τις λίγες ευκαιρίες (μία κάθε χρόνο βασικά) για να συναντήσω άτομα που μιλάω μέσω IRC ή e-mail και με τους οποίους νοιώθω μία ιδιόμορφη οικειότητα.

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

Όμως και οι παρουσιάσεις τελικά δεν ήτανε τόσο χλιαρές, όσο αρχικά θεωρήσαμε. Προσωπικά, είδα παρουσιάσεις για μη προγραμματιστές (όπως αυτού του νόστιμου νεαρού με τους γκρίζους κροτάφους που εντελώς τυχαία το όνομα του μου διαφεύγει) σχετικά με την συνεισφορά του καθένα στην κοινότητα.Υπήρχαν όμως και πιο εξειδικευμένα, όπως Workshops για ένα web framework σε Java που είχα δει στο παρελθόν (που δεν με πείθει και τόσο, αλλά δεν πειράζει).

Μην ξεχνάω και τις παρουσιάσεις του Απόλλωνα (apoikos) και του Γρηγόρη (gregpuppy), που ήτανε αρκετά ενδιαφέρουσες

Γνώρισα επίσης από κοντά για πρώτη φορά διάφορα άτομα, όπως η Fillio και ο Beket. Δυστυχώς, ο λιγοστός χρόνος δεν με άφησε να δω πολλά άτομα. Άνετα θα ξανανέβαινα για να βγω έναν καφέ με όλους αυτούς.

Η Θεσσαλονίκη; Ένοιωσα πραγματικά ξενος. Μία πόλη που δεν είναι καθόλου οικεία με την Αθήνα. Μου φάνηκε οργανωμένη και όμορφη ακόμα και με τα άσχημα κτίριά της. Ως πόλη ή δήμος, που οργανώνεται για τους πολίτες της και υπάρχει ζωή, πραγματική ζωή. Τελικά, το χάος και ο πανικός ανήκει στην Αθήνα αποκλειστικά σε αυτήν την χώρα.

Ένα περίεργο μάθημα από την fosscomm είναι το πόσο μερικές φορές το βρωμόστομά μου κάνει τα χειρότερα λάθη.

Θα ήθελα λοιπόν να ζητήσω στο τέλος την συγχώρεση από δύο άτομα:

Αρχικά, από τον Δημήτρη Γλέζο, γιατί η ερώτησή που του έκανα παρασύρθηκε και έμοιαζε ως επίθεση. Όμως, εκτιμώ την δουλειά που έχει κάνει και αναγνωρίζω το έργο του. Η παρουσίασή του ήτανε εξίσου ενδιαφέρουσα και ας μην είχε τεχνικό χαρακτήρα. Επιπλέον, δεν μπορώ να κάνω τέτοιες δραματικές ερωτήσεις και ο καθένας κάνει πρώτον ότι μπορεί για να επιτεύξει τους στόχους του, είτε είναι αυτό διαχείριση είτε οτιδήποτε άλλο. Καλά κάνει αυτό που κάνει, το μόνο σίγουρο είναι αυτό.

Επίσης, από τον Μπουκουβάλα θα ήθελα να ζητήσω συγγνώμη για ένα υπερβολικό e-mail που είχα στείλει στην LGU κάποτε. Ήμουνα τότε γενικότερα εν βρασμώ ψυχής, γιατί βλέπω την ανάγκη για συγκρότηση της ΕΛΛΑΚ κοινότητας παρά την συνεχή σύσταση ομάδων. Όμως, πέρα από τις ομάδες, πάνω απ’ όλα έχει σημασία η επικοινωνία και η ελευθερία. Ο καθένας συνεχίζει τον δρόμο που θέλει και απλά να συνεργαζόμαστε όσο μπορούμε. Αυτό αρκεί.

Οπότε, μέχρι την επόμενη φορά…

Tagged with:

Σύλλογοι ΕΛ/ΛΑΚ: Όνειρα & Εφιάλτες

Posted in computer science by trelobifteki on Αύγουστος 25, 2009

Πρόσφατα είδα ένα ακατανόμαστο site (μην πατάτε το link, μη δίνετε ούτε GET  request στον server του) το οποίο απλά είναι η αρχή για διάφορα πράγματα που έχω βιώσει και σκεφτεί σχετικά με το όλο θέμα των συλλόγων και του ΕΛ/ΛΑΚ στην Ελλάδα.

Προσωπικά, δεν θα εκφράσω τι πρέπει να είναι ένας σύλλογος. Μόνο μία εικόνα. Ένας στόχος μου (πια) θα ήθελα να ήτανε να βοηθάω φοιτητές με εξοπλισμό/ χώρο / πηγές (λεφτά γενικότερα) για να γίνονται εκδηλώσεις σχετικά με το ανοιχτό λογισμικό.  Coding summer camps, beer fests, install fests σε σχολεία, να φέρνουμε κανά ομιλητή από το εξωτερικό, gatherings γενικότερα είναι αυτά που ΟΝΤΩΣ δένουν τους ανθρώπους μεταξύ τους και βοηθάει σε συνεργασίες, ιδέες, μετάδοση γνώσεων και οτιδήποτε άλλο.

Όπως με τις παρουσιάσεις που κάναμε τον καιρό εκείνο στην σχολή και μετά μαζευόμασταν όλοι για καφέ/φαγητό, μπορώ να πω με σιγουριά ότι μάθαινα πολύτιμα πράγματα και γνώριζα ανθρώπους που με ενέμπνεαν και μου δίνανε ένα σημαντικό «κομμάτι» από τις ιδέες και γνώσεις τους. Χαίρομαι που είχαμε και την συμπαράσταση του Hellug για ορισμένες εκδηλώσεις, γιατί μας έφερε σε επαφή με άτομα που μπορούσαν να παρουσιάσουν χρήσιμα πράγματα. Είχαμε μία μικρή ομάδα, που όμως κατάφερε κάποια σημαντικά πράγματα με τη συνεργασία κάποιου συλλόγου. Δεν κλειστήκαμε στους εαυτούς μας και όποτε θέλαμε βοήθεια την ζητάγαμε χωρίς να μας νοιάζει κανένας «υποτιθέμενος» εγωισμός.

Βέβαια, αυτό δεν σημαίνει ότι δεν βρίσκω και πολλά προβλήματα σε συλλόγους.  Σε δύο συναντήσεις που ήμουνα και εγώ, τα πράγματα μου φαινόντουσαν απλά λυπηρά. Ίντριγκες (αν είναι δυνατόν), άνθρωποι να στήνουν λαϊκό δικαστήριο με το καταστατικό στο χέρι (σαν να βρίσκομαι στο ΙΚΑ), και ένας μαύρος χαμός.  Σαν όλοι να κυνηγούσαν συμφέροντα,την αναγνώριση, το κύρος του «προέδρου» σε δημόσια υπηρεσία. Αν και συνειδητοποιώ ότι γίνανε σημαντικές αλλαγές φέτος στον σύλλογο, είναι λίγο ντροπή να παιδιαρίζουμε έτσι.

Γενικότερα όμως, πιστεύω ότι υπάρχει μία σχετικά χαμηλή ενεργή δραστηριότητα των ΕΛ/ΛΑΚ κοινοτήτων. Ως ενεργή θεωρώ ανθρώπους που συνεισφέρουν γράφωντας κώδικα, διατηρώντας open-source projects και συνεισφέροντας σε διανομές Linux ως maintainers.  Πιστεύω πως οι άνθρωποι αυτοί εντός Ελλάδος είναι λίγοι και πρέπει γενικότερα να τους σεβόμαστε (ως είδος υπο εξαφάνιση) και να εμπνευστούμε από αυτούς.

Δεν θέλω να σας πικράνω, αλλά αυτό που έχετε μπροστά στην οθόνη σας δωρεάν και παίζει (όσο γίνεται) το έχουν γράψει άνθρωποι με την καλή τους την καρδιά. Από το να το χαζεύετε και να κλαίγεστε ότι δεν παίζει, ανοίξτε τον κώδικα και διορθώστε το. Το να διορθώνονται open-source projects είναι η καλύτερη προώθηση που μπορεί να του γίνει και δεν χρειάζονται άλλα κόλπα 🙂

Από την άλλη, μια χώρα με χαμηλή δραστηριότητα αποκτά τόσους συλλόγους (τυπικούς και μη) και τόσες μικρές ομάδες, όπου αδυνατούν να συνεργαστούν.  Αυτό είναι απλά θλιβερό. Άνθρωποι που επιθυμούν ΑΠΛΑ να οργανώσουν (όλοι κρύβουμε τον manager μέσα μας τελικά) αντί ουσιαστικά να ΣΥΝΕΙΣΦΕΡΟΥΝ (με όλη την σημασία της λέξης), το μόνο που χρειάζονται είναι την απόρριψη όλων μας.

Κοινώς, μην φτιάχνετε ομάδες / συλλόγους / κουραφέξαλα πια. Άμα θέλετε οι υπόλοιποι να σας σέβονται για αυτό που είστε και εσείς τους εαυτούς σας, ανοίξτε το λογισμικό σας, διορθώστε κώδικα και συνεισφέρετε είτε χρηματικά είτε με ΔΟΥΛΕΙΑ.  Είναι ντροπή να δείχνεις ότιδήποτε αν δεν έχεις πραγματικά δουλέψει σε αυτό.

Και πάνω απ΄ όλα συνεργαστείτε επιτέλους και ζητήστε βοήθεια από τους άλλους. Κανείς δεν θα σας δαγκώσει.

Δεν συμπεριλαμβάνω workshops γιατί τις περισσότερες φορές δεν βλέπω να αποδίδουνε στην open-source κοινότητα (ή τουλάχιστον εμείς αποτυγχάνουμε να παράγουμε κάτι).

Why Windows explorer cannot copy?

Posted in computer science by trelobifteki on Αύγουστος 21, 2009

Κάθε φορά που προσπαθώ να κάνω copy μεγάλο (?) αρχείο (πάνω από 800ΜΒ), τρώω το παρακάτω σφάλμα από τον explorer:

Error 0x800705AA: Insufficient system resources exist to complete the requested service

Δεν ζητάω πιστεύω πολλά από οποιοδήποτε OS από να μπορεί με απλό τρόπο να αντιγράφει/μεταφέρει αρχεία ΧΩΡΙΣ προβλήματα. Ειδικά και όταν έχω 3GB μνήμη….

Τελικά, cygwin + mc κάνουν την δουλεία αργά, αλλά τουλάχιστονχωρίς κανένα πρόβλημα. Ντροπή ρε παιδιά….

Tagged with: , ,

X.Org > 1.6 + HAL input keymapping

Posted in computer science by trelobifteki on Αύγουστος 21, 2009

Ήτανε Σάββατο βράδυ και ετοιμαζόμουνα για να πάω σε ένα πάρτυ μιας κοπέλας. Μπήκα στο driveme και ήθελα να ψάξω την τοποθεσία του σπιτιού της. Παρατήρησα ότι δεν είχα βάλει το ελληνικό πληκτρολόγιο στο linux και δεν μπορούσα να γράψω την διεύθυνση…

Από εκεί, ξεκίνησαν όλα… Και θα πω και πως τελειώσανε. Ένα σπασμένο πληκτρολόγιο, μια άθλια πίτσα μισοφαγωμένη, να μαζεύω τους αφρούς από το στόμα μου.

Debian GNU/Linux (unstable)
Xorg: 1:7.4+1
HAL: 0.5.12~git20090406.46dc48-2

Το πρόγραμμα ξεκίνησε να configurarw το xorg. Δοκίμασα 5-6 φορές με διάφορες εκδοχές από το ίδιο σχεδόν configuration. @@. Τελικά κατάλαβα ότι όλες οι προσπάθειες έπιασαν πάτο επειδή αυτόματα απενεργοποιούσε ο Xorg το kbd και mouse device. Μετά από ώρα και εφόσον έκανα διάφορα πειράματα και ερωτήσεις στο irc, κατάλαβα ότι οι γλώσσες ρυθμίζονται πια (ΓΙΑΤΙ;) από το HAL έναντι του πατροπαράδοτου configuration file που όλοι ξέραμε και αγαπούσαμε.

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

Οι δρόμοι χωρίστηκαν και κατάλαβα ότι έπρεπε είτε να κλείσω modules στο xorg για να απορρίψω τα αυτόματα του HAL είτε να το ρυθμίσω το ρημάδι. Τελικά διάλεξα HAL, γιατί δοκίμασα το κόλπο να βάλω το ποντίκι από USB σε PS2 και το κατάλαβε άμεσα (στα Windows παίζει να φας και μπλε οθόνη). Κορίτσια γλεντούσανε στο πάρτι με ένα live συγκρότημα που δεν ακουγότανε καλά αλλά ποιος χέστηκε και δεν μύρισε; Εγώ έτρωγα την πίτσα που έμεινε από εχτές και βιαζόμουνα μπας και προλάβαινα.

Λίγο από δω, λίγο από εκεί. Βρήκα τις ρυθμίσεις και ήτανε περίπου όπως της περιγράφει ο Βαγγέλη (πολύ καλό παιδί με προίκα και αυτός και full-pansion εντοιχισμένος) εδώ. ΚΑΙ ΠΑΛΙ ΔΕΝ ΕΠΑΙΖΕ!!! Δοκίμαζα 2-3 διαφορετικούς τρόπους και τίποτα πάλι. Εκεί απλά τρελάθηκα και έσπασα το space.

Πήρα νέο πληκτρολόγιο, έψαξα λίγο παραπάνω και βρήκα τη λύση. ΟΙ γαμι.ληδες αλλάξανε την σύνταξη στο συγκεκριμένο πεδίο για τις γλώσσες (μέσα σε περίοδο 2 βδομάδων). . To πεδίο-κλειδί ήτανε το input.x11_options.XkbLayout έναντι του input.xkb.options. Το διόρθωσα και είχα επιτέλους Ελληνικά. Είχε πάει η ώρα όμως αργά και εγώ πήρα τα @@ μου για μία άλλη φορά.

Τα σχόλια δικά σας. Παραθέτω πως είναι οι ρυθμίσεις στο HAL μου τώρα (ευτυχώς, παίζουνε ακόμα!)

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
 <match key="info.capabilities" contains="input.keymap">
 <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>

 <match key="info.capabilities" contains="input.keys">
 <merge key="input.xkb.rules" type="string">base</merge>

 <!-- If we're using Linux, we use evdev by default (falling back to
 keyboard otherwise). -->
 <merge key="input.xkb.model" type="string">keyboard</merge>
 <match key="/org/freedesktop/Hal/devices/"
 <merge key="input.xkb.model" type="string">evdev</merge>
 <merge key="input.xkb.Options" type="string">grp:alt_shift_toggle</merge>
 <merge key="input.xkb.variant" type="string" />
 <merge key="input.x11_options.XkbLayout" type="string">us,el</merge>
 <merge key="input.xkb.layout" type="string" >us,el</merge>
 <merge key="input.xkb.model" type="string">pc105</merge>
 <merge key="input.x11_options.XkbOptions" type="string">grp:alt_shift_toggle</merge>
Tagged with: , , ,

Tiny tip in Bash #2

Posted in computer science by trelobifteki on Απρίλιος 22, 2009

Here is a small if/else example in bash:

if  test -f foo; then
echo "The file exists"
echo "The file does not exist"

Ok, there’s also another way for this:

[ -f foo] && echo "File exists" || echo "File does not exist"

Similarly, Python does not support colon operator (?) as Java/PHP, so it can be substituted with the following line:

A= (B>31) and 0 or A

BEWARE! Everything I’ve already written is quite incorrect! How so? You have to be certain that the second statement always return true, in order this to work properly. What would happen in the following case?

[ -f /boot/vmlinuz ] && mumbojumbo || echo "The file does not exist"

Tiny tip for bash scripting

Posted in computer science by trelobifteki on Απρίλιος 9, 2009

Πολλές φορές βάζουμε σε ένα bash script μία σειρά εντολών μέσα σε pipes ( | ), όπως φαίνεται στο παρακάτω παράδειγμα (στο οποίο βάζουμε σε ένα tar όλα τα pdf που έχουν γίνει modified μέσα σε 1 μέρα):

find . -name "*.pdf" -mtime -1 | xargs tar -czvf  last-day-pdfs.tar.gz

Πως μπορούμε μέσα σε αυτό να γνωρίζουμε το exit status κάθε εργασίας που έχει γίνει; Πολύ απλά, με την PIPESTATUS

Οπως την περιγράφει στο Advanced Bash scripting guide:

Array variable holding exit status(es) of last executed foreground pipe.

Ας τσεκάρουμε το παρακάτω:

find . -name "*.pdf" -mtime -1 | xargs tar -czvf  last-day-pdfs.tar.gz
ret=( ${PIPESTATUS[@]} )
if [ ${ret[0]} -ne 0 ]; then
echo "find failed with exit status: ${ret[0]}"
if [ ${ret[1]} -ne 0 ]; then
echo "tar failed with exit status: ${ret[1]}"
Tagged with: , , ,

tiny hint in OpenSolaris

Posted in computer science by trelobifteki on Απρίλιος 7, 2009

Εγκατέστησα τις προάλλες σε virtualBox στο γραφείο ένα OpenSolaris, για να παίξω και γω σα παιδί και λίγο μαζί του.

Είχα ένα μικρό θέμα να εγκαταστήσω κάποια πακέτα από το Package Manager (του μάθαμε στου χουριώ εχθροί και φίλοι ούλοι), διότι το firewall επιτρέπει μονάχα HTTP κίνηση μέσω Proxy (δεν θέλω να μάθω τον λόγο).

Ενα λοιπόν ξανθό παλικάρι στη δουλειά (καλό παιδί με προίκα, δεχόμεθα προτάσεις από ανάλογες νύφες)  μου είπε την λύση. Για να γίνει αυτό χτυπάμε απλά την παρακάτω εντολή:

env http_proxy="...." gksu packagemanager &

Απλό και απέριττο!

Χρησιμοποιώντας το sed

Posted in computer science by trelobifteki on Νοέμβριος 18, 2008

Χρειάστηκε χτες να φτιάξω ενα scriptaki που θα μπορεί να μου εκτυπώνει value από attributes σε ένα XML schema file.

Ας πουμε, ότι το XML schema περιείχε το παρακάτω κείμενο μέσα:

  <xs:simpleType name="MyTest">
    <xs:restriction base="xs:string">
      <xs:enumeration value="This"/>
      <xs:enumeration value="is"/>
      <xs:enumeration value="a"/>
      <xs:enumeration value="test" />

Αυτό βρίσκεται μέσα σε διάφορα άλλα, όπως φαντάζεστε…

Το πρόβλημα είναι το εξής: Πως θα εκτυπώσω από αυτό το αρχείο μονάχα τις enumerated τιμές (this, is, a, test);

Η παρακάτω εντολή (1 εντολή παρακαλώ) της sed, μας βοηθάει. Βέβαια ίσως να μην είναι θεωρητικά 100% ακριβής (και τα regexp που χρησιμοποιώ δεν ικανοποιούν όλες τις περιπτώσεις, αλλα παίρνετε την ιδέα.

sed -n ‘/<xs:simpleType name=»MyTest»>/,/<\/xs:simpleType>/ s/[ ]*<xs:enumeration[ ]*value=»\(.*\)»[ ]*\/>/\1 /p ‘ test.xsd

Καταλαβαίνω ότι τα regular expressions δεν είναι και τα καλύτερα. Π.χ. αντί για (.*) (δηλαδή, αυτό που περιμένεις να έχει μέσα) ίσως να πρέπει να βάλεις ([^»]*) (δηλαδή αυτό που δεν πρέπει να έχει μέσα). Τέλος πάντων, Όλα ενδιαφέροντα είναι και δέχομαι οποιαδήποτε comments.

Από την άλλη, ας εξηγήσω λίγο το παραπάνω που με ενδιαφέρει περισσότερο.

  • Η παράμετρος -n δηλώνει να μην εκτυπωθεί στην οθόνη το κείμενο που θα εισάγουμε
  • το πρώτο μέρος (/[regular expression/,/regular expression/) δηλώνει το μέρος του κειμένου όπου θα εκτελεστεί η εντολή. Το ενδιαφέρον είναι ότι ορίζει την αρχή και το τέλος σύμφωνα με regular expressions (μπορείς βέβαια και με γραμμές, αλλά αυτό το κάνει τρομερά πρακτικό). Παρατήρησα ότι τελειώνει στην πιο πρόσφατη γραμμή που συναντά το δεύτερο regexp.
  • To δεύτερο μέρος είναι πιο κλασσικό (αντικατάσταση). Αντικαθιστώ αυτό που κάνει match το regular expressions (προσοχή στις παρενθέσεις) με αυτό που βρίσκεται μέσα στις παρενθέσεις (\1). Επιπλέον διαλέγω την επιλογή p για να προσπεράσει την -n που είχα βάλει στην αρχή και να εκτυπώσει το εσωτερικό.

Δηλαδή, το πολύ ενδιαφέρον είναι ότι μπορείς να μαζέψεις απο ένα συγκεκριμένο σημείο σε ένα κείμενο που έχεις καταλάβει το pattern, ένα στοιχείο που ανήκει πάλι σε ένα pattern. Πολύ βολικό και σε μία εντολή κάνεις πολύ ωραία πράγματα.

Tagged with:


Posted in computer science by trelobifteki on Οκτώβριος 20, 2008

Ένα πράγμα που λατρεύω να κάνω όταν δουλεύω σε terminal είναι η χρήση του screen και ειδικά το split σε δύο εικονικές οθόνες. Ο συνδυασμός για αυτό γίνεται με τον συνδυασμό ctrl+a, shift+s (S κεφαλαίο)

Ένα πολύ κλασσικό λάθος μου είναι μερικές φορές να πατάω το ctrl+s, που σημαίνει σε διαφορετικά τερματικά (π.χ. putty, rxvt) ASCII XOFF (παύση της μεταφοράς). Μερικές φορές επισης δεν πατάω το shift, που προκαλεί το ίδιο αποτέλεσμα μέσα από το screen. Επείδη δεν στρίβω, μερικές φορές μπερδεύομαι και νομίζω ότι η σύνδεση μάλλον έπεσε ή προσπαθώ να θυμηθώ τον συνδυασμό να το επαναφέρω, όμως για κάποιον λόγο θυμάμαι άσχετους συνδυασμούς. Ίσως επειδή το q το συνδυάζω νοητά με quit  παρά με resume 😛

τέλος πάντων. Απλά σημειώνω (περισσότερο στον εαυτό μου που κάνω συχνά τέτοια χαζά λάθη) ότι ο συνδυασμός για ASCII XON είναι ctrl+q και για μέσα από το screen ctrl+a, .

Κρίμα που έχει αυτόν τον συνδυασμό πάντως αυτή η λειτουργία

Tagged with: , , ,