Apostolos\’ Daily Plate

Η βασική διαφορά του LaTeX με το XeLaTeX

Posted in Πληροφορική by asyropoulos on 5 Απριλίου, 2021

Στους υπολογιστές όλα τα σύμβολα που μπορούν να πληκτρολογηθούνονομάζονται χαρακτρήρες. Ο κάθε χαρακτήρας αναπαριστάνεται εσωτερικά με έναν αριθμό. Το byte είναι βασική μονάδα μέτρησης όγκου πληροφοριών. Ένα byte μπορεί να αναπαραστήσει όλους τους ακεραίους αριθμούς από το 0 ως το 255 (μπορεί και όλους τους αριθμούς από το -127 ως +128 αλλά αυτό δεν μας αφορά εδώ). Στις αρχές της πληροφορικής οι χαρακτήρεςπου αναγνωρίζει ένας Η/Υ ήταν πολλοί λίγοι: τα αγγλικά γράμματα (πεζά και κεφαλαία), τα ψηφιά, τα σύμβολα στίξης και μερικά ακόμη σύμβολα και χαρακτήρες ελέγχου. Όλοι αυτοί οι χαρακτήρες σχηματίζουν ένα σύμβολοτο οποίο είναι γνωστό ως ASCII. Με την εξάπλωση των Η/Υ στη δεκαετία του 1980 έγινε κατανοητό πως οι Η/Υ (ουσιαστικά τα λειτουργικά συστήματα) έπρεπε να  υποστηρίζουν και άλλους χαρακτήρες. Έτσι οι Η/Υ στην Ελλάδα υποστήριζαν  τους αρχικούς χαρακτήρες του ASCII συν τους μονοτονικούς ελληνικούς χαρακτήρες. Αυτή η (αναγκαστική;) επιλογή είχε ένα βασικό μειονέκτημα: Έκανε δύσκολη ως αδύνατη την επικοινωνία στα ελληνικά, αραβικά κ.λπ. μεταξύ ανθρώπων που ζούσαν σε διαφορετικές χώρες. Επιπλέον, δεν ήταν καθόλου εύκολο ένα κείμενο να περιέχει παραπομπές γραμμένες σε 3 ή περισσότερες γραφές (σκεφτείτε τη συσκευασία ενός σύγχρονου προϊόντος και δείτε σε πόσες γραφές είναι γραμμένα τα συστατικά). Για να δωθεί λύση σε αυτά αλλά και άλλα συναφή προβήματα, ένα consortium εταιρειών πληροφορικής έφτιαξε το Unicode Consortium. Αυτό με τη σειρά του δημιούργησε το προτυπο Unicode το οποίο επιτρέπει στα Λ/Σ να αναπαριστάνουν σήμερα πάνω από 100.000 χαρακτήρες!

Το TeX είναι ένα πρόγραμμα που δημιουργήθηκε πριν το Unicode. Οπότε σχεδιάστηκε με βάση την υπόθεση ότι ένας Η/Υ μπορεί να «δουλεύει» με το πολύ 256 χαρακτήρες. Έτσι και οι γραμματοσειρές που χρησιμοποιούσε μπορούσαν να έχουν το πολύ 256 χαρακτήρες. Το ίδιο φυσικά ισχύει και για το pdfTeX το οποίο είναι ίδιο με το TeX απλά παράγει αρχεία PDF απευθειας. Το πακέτο inputenc με την επιλογές utf-8 επιτρέπει στο LaTeX να επεξεργάζεται αρχεία κωδικοποιημένα στην κωδικοποίηση UTF-8 του Unicode σε επίπεδο μακροεντολών. Δηλαδή θεωρεί όλες τις δυάδες από byte τα οποία αναπαριστάνουν χαρακτήρες Unicode ως εντολές και τα αντιστοιχεί σε γλυφές συγκεκριμένων γραμματοσειρών. Ποια συγκεκριμένα σε στις γραμματοσειρές που θεωρούνται οι κύριες γραμματοσειρές κάθε γλώσσας και έχουν κωδικοποιηθεί με βάση κάποια συγκεκριμένη κωδικοποίηση 1 byte ανά χαρακτήρα.

To XeTeX είναι μια επέκταση του TeX που μπορεί να επεξεργαστεί απευθείας αρχεία κωδικοποιημένα στην UTF-8. Αυτό σημαίνει ότι αυτόματα μπορεί να χρησιμοποιήσει μια γραμματοσειρά που περιέχει ως 100.000 γλυφές! Οπότε είναι τεράστιο λάθος να χρησιμοποιούμε το πακέτο inputenc με το XeLaTeX. Γενικότερα είναι απλά χάσιμο χρόνου να χρησιμοποιούμε το LaTeX και όχι το XeLaTeX ή ακόμη κι το LuaLateX. Άλλωστε το ένα ακόμη όφελος είναι η δυνατότητα χρήσεις γραμματοσειρών OpenType και TrueType, η αυτόματη εναλλαγή χρήσης κανόνων συλλαβισμού, η χρήση μαθηματικών γραμματοσρειρών τύπου OpenType και TrueType κ.λπ.

Άλλα τα μάτια του λαγού κι άλλα της κουκουβάγιας

Posted in Χωρίς κατηγορία by asyropoulos on 16 Δεκεμβρίου, 2020

Το γεγονός ότι κάποιος είναι καλός γραφίστας δεν σημαίνει απαραίτητα ότι ξέρει να στήνει ένα βιβλίο. Δεύτερον, προγράμματα όπως το Microsoft Word και το Adobe InDesign δίνουν σε αρκετούς την εσφαλμένη εντύπωση πως ο σχεδισμός ενός βιβλίου είναι μια εύκολη και απλή υπόθεση και το μόνο που χρειάζεται να κάνουμε είναι να γεμίσουμε τη σελίδα με έγχρωμα κουτάκια. Δυστυχώς αυτό είναι τεράστιο λάθος και η πίστη στο αντίθετο δημιουργεί εκτρώματα όπως η σελίδα που ακολουθεί.

Προσέξτε πόσο άσχημος είναι ο τρόπος με τον οποίο γράφεται ένας ορισμός. Δυστυχώς τέτοια «εφέ» δεν χρησιμοποιούμε ούτε σε προσχολικά βιβλία. Επίσης δείτε πως αυτός που έστησε το βιβλίο δεν ξέρει καθόλου μαθηματικά. Ενώ λοιπόν θέλει να πει πως μπορούμε να χρησιμοποιούμε το σύμβολο «⊊» αντί να χρησιμοποιούμε το σύμβολο «⊈», προτείνει να χρησιμοποιούμε το σύμβολο “⊂” το οποίο φυσικά σημαίνει κάτι τελείως διαφορετικό. Ακόμη, η τελευταία πρόταση στο ορισμό έπρεπε να είναι εκτός του ορισμού. Αν λοιπόν σε τέτοια απλά πράγματα υπάρχουν τέτοια παιδαριώδη λάθη, τότε σε κάτι πιο εξεζητημένο θα γίνεται του Κουτρούλη ο γάμος!

The Royal Mint Sucks!

Posted in Χωρίς κατηγορία by asyropoulos on 10 Δεκεμβρίου, 2020

On September 9, 2020 I decided to buy a silver Britania coin from the Royal Mint. So I placed an order using their web shop. The followin clearly shows my transaction history.

When one buys a bullion coin from the Royal Mint, for some reason they put it immediately into their vault (i.e., their storage facility). I did not know this and although I find it quite strange, tha next day I deposited some money to my account and asked them to deliver the bullion coin to my home address. After placing this «new» order I got the following email.

Today is December 10 and although I have repeatedly complained that I have not received the coin, they still ignore my messages or when they reply they are just talking bullshit. Most probably I will lose my money but the morale of the story is to avoid buying anything from them. They are completely unprofessional and very arrogant people.

Desktop Having TV as Monitor

Posted in Πληροφορική, OpenIndiana by asyropoulos on 22 Αυγούστου, 2018

I have a computer that uses the latest version of OpenIndiana/hipster and I am using a TV as a monitor. To reduce the number of wires, I decided to use only the HDMI wire. My video card is a GeForce GT 1030 that naturally has HDMI output. Of course the first thing is to connect the video card with the monitor. Although the visual output was OK, there was no sound! First of all, I had to change the audio devices:

apostolo@adalind>> audioctl list-devices
audiohd#6
audiohd#3
apostolo@adalind>> audioctl show-device
Device: /dev/sound/audiohd:3mixer
  Name    = audiohd#3
  Config  = ATI HD Audio (SB600)
  HW Info = Unknown HD codec: 0x10ec0900

This is how my system is setup now. To achieve this I had top do the following:

# cd /dev
# rm audio audioctl
# ln -s sound/1 audio
# ln -s sound/1ctl audioctl
# rm dsp
# ln -s dsp1 dsp

OK but how do I know which device is the correct one:

apostolo@adalind>> audiotest
Sound subsystem and version: SunOS Audio 4.0 (0x00040003)
Platform: SunOS 5.11 illumos-6578fdfad8 i86pc

*** Scanning sound adapter #1 ***
/dev/sound/audiohd:6dsp (audio engine 0): audiohd#6
  - Performing audio playback test... 
         ................OK
         ...............OK
         ..............OK
        

*** Scanning sound adapter #2 ***
/dev/sound/audiohd:3dsp (audio engine 1): audiohd#3
  - Performing audio playback test... 
         ................OK
         ...............OK
         ..............OK
        

*** All tests completed OK ***

If you hear sound, then the device is the correct one. In my case, I had to make a change to the monitror. The following images show what I did:

 

 

 

Now I enjoy sound and I have only one wire!

Compiling FontForge on OpenIndiana

Posted in Πληροφορική, OpenIndiana by asyropoulos on 3 Απριλίου, 2018

FontForge is an open-source font editor. I have been using this editor for many year and I always compile it myself on OI/hipster. In order to proceed, one need to download and install a few libraries:

We only need the source code of the FreeType not to compile it. Compiling the other two libraries is easy:

$ CC=gcc64 ./configure --prefix=/opt/gnu \
--libdir=/opt/gnu/lib/amd64 --bindir=/opt/gnu/bin/amd64"

The command gcc64 is actually a script that calls gcc with the -m64 option enabled. To configure fontforge I had to make sure GNU date is the first date accessible. Also, I had to patch the configure script as follows:

--- configure.old       2018-04-03 10:59:31.003080406 +0000
+++ configure   2018-03-31 16:49:04.069977255 +0000
@@ -37305,10 +37305,10 @@
 fi
 FONTFORGE_DATE_NOW=${SOURCE_DATE_EPOCH:-$(date +'%s')}
 FONTFORGE_DATE_OPTS="--date=@${FONTFORGE_DATE_NOW}"
-if ! date --version 2>/dev/null ; then
-  # Use POSIX date instead of GNU date on BSD systems
-  FONTFORGE_DATE_OPTS="-j -f %s ${FONTFORGE_DATE_NOW}"
-fi
+#if ! date --version 2>/dev/null ; then
+#  # Use POSIX date instead of GNU date on BSD systems
+#  FONTFORGE_DATE_OPTS="-j -f %s ${FONTFORGE_DATE_NOW}"
+#fi
 FONTFORGE_MODTIME="$(date -u $FONTFORGE_DATE_OPTS +'%s')L"
 FONTFORGE_MODTIME_STR="$(date -u $FONTFORGE_DATE_OPTS +'%H:%M %Z %e-%b-%Y')"
 FONTFORGE_VERSIONDATE="$(date -u $FONTFORGE_DATE_OPTS +'%Y%m%d')"

The command that follows is the one I have used to configure fontforge:

CC=gcc64 CXX=g++64 CFLAGS="-I/opt/gnu/include" LIBSPIRO_CFLAGS="-I/opt/gnu/include" \
LDFLAGS="-L/opt/gnu/lib/amd64 -R/opt/gnu/lib/amd64" ./configure --prefix=/opt/gnu \
--libdir=/opt/gnu/lib/amd64 --bindir=/opt/gnu/bin/amd64/ \
--with-freetype-source=../freetype-2.6.5

Of course you should adjust the name of the freetype source tree. That’s it.

Ιδανικός αριθμός μαθητών ανά τάξη

Posted in Παιδεία by asyropoulos on 4 Μαρτίου, 2018

Πριν χρόνια μας όταν θα ξεκινούσε η διδασκαλία της πληροφορικής στα λύκεια, ο υπεύθυνος πληροφορικής του τότε «Παιδαγωγικού» Ινστιτούτου (τώρα πια Ινστιτούτο Εκπαιδευτικής Πολιτικής) έκανε ενημερωτικές συναντήσεις με τους εκπαιδευτικούς που θα διδάσκαν το μάθημα.  Η ενημὲρωση-μάθημα έγινε στο ΠΕΚ Καβάλας κάποια στιγμή πριν το 2000. Εκεί λοιπόν ο υπεύθυνος μας είπε διάφορα κουλά αλλά ένα πραγματικά με εξόργισε:  Όπως έχει συμπεράνει το ISO αλλά και το πανεπιστήμιο του Harvard ο ιδανικός αριθμός μαθητών ανά υπολογιστή είναι 3! Τότε εγώ ζήτησα το λόγο και του είπα: Δεν ξέρω τι λέει το ISO και το Harvard αλλά νομίζω πως ο ιδανικός αριθμός μαθητών ανά υπολογιστή είναι 4, δύο μπροστά στην οθόνη και δύο πίσω να παίζουν τάβλι! Φυσικά ακολούθησε πανδαιμόνιο και ο κομισὰριος εκπαίδευσης (όχι σύμβουλος εκπαίδευσης) δεν ήξερε τι να πει. Τώρα ο υπουργός «παιδείας» τόλμησε και είπε στο 10ο Περιφερειακό Συνέδριο στην Τρίπολη ο Υπουργός Παιδείας:

Υπάρχει μια εντελώς λάθος αντίληψη στην κοινωνία. Και λέει όσο λιγότερα παιδιά είναι στην τάξη τόσο περισσότερα γράμματα θα μάθουν τα παιδιά μου. Οπότε άσε μια παθολογία του συστήματος να διαιωνίζεται. Αυτό θα πρέπει εμείς, όχι η κεντρική διοίκηση, εμείς όλοι να το αντιμετωπίσουμε. Το παιδί ούτε γράμματα μαθαίνει ούτε κοινωνικοποιείται όταν είναι σε μικρές τάξεις όλες οι δυνατές έρευνες το έχουν αποδείξει.

Μια άλλα λόγια πλάθουμε ένα παραμύθι το οποίο πλασάρουμε στουε ιθαγενείς και όποιος τσίμησε, τσίμπησε! Κρίμα!

Favouritism everywhere!

Posted in «Αθλητισμός», Πληροφορική by asyropoulos on 6 Νοεμβρίου, 2017

A few months ago I saw an ad about a position at a Swedish university. Clearly, I was not eligible for the position but I wanted to apply just to see what people think about my work. First let’s see what the position was about:

From the text it is crystal clear that they wanted someone who has been specialized in the theoretical foundations of computational or computer science. In plain English they wanted someone who works in theoretical computer science. Now let’s see what one reviewer had to say about the person they have finally selected:


Clearly, this candidate is not specialized in theoretical computer science: he had used computers to implement his new (?) algorithms on matrix computation. Frankly, it is very difficult to me to see how matrix computations will enable us to better understand the nature of computation. Second, one cannot compare the number of citations for work that is done in different areas! It is simply absurd! My understanding is that the department wanted to hire this particular person and so they found a way to make him appear as the best candidate. In plain English again, this is the textbook example of favoritism!

All these years the people of the North accused the people of the South for corruption, favouritism, nepotism, etc. This simple example shows that Northern countries are as corrupt as the Southern countries. The only difference is that Swedes and others have mastered the art of making favouritism, nepotism, etc., look as the most reasonable choice.

Creating NTFS and ZFS file systems on an external USB disk

Posted in OpenIndiana by asyropoulos on 8 Σεπτεμβρίου, 2017

Recently, I bought an external USB 3.0 hard disk. The disk comes pre-formatted in NTFS but for my own reasons I wanted two partitions: the first formatted in NTFS and the second formatted in ZFS. The first thing one should do is to delete all partition on the disk. To do this use a command like the following one:

# rmformat -l
Looking for devices...
     1. Logical Node: /dev/rdsk/c12t0d0p0
        Physical Node: /pci@0,0/pci1458,5004@13,2/storage@3/disk@0,0
        Connected Device: Generic- SD/MMC           1.00
        Device Type: Removable
        Bus: USB
        Size: 30,4 GB
        Label: 
# fdisk /dev/rdsk/c12t0d0p0

The first command should be used to discover the name of the device that represents your disk. Will see something like the following:

             Total disk size is 3880 cylinders
             Cylinder size is 16065 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1                 IFS: NTFS         0  1939    1940     50

SELECT ONE OF THE FOLLOWING:
   1. Create a partition
   2. Specify the active partition
   3. Delete a partition
   4. Change between Solaris and Solaris2 Partition IDs
   5. Edit/View extended partitions
   6. Exit (update disk configuration and exit)
   7. Cancel (exit without updating disk configuration)
Enter Selection: 

Now press 3 to delete the partition and when prompted press 1 and then 6 to exit. This program cannot create NTFS partitions so you
need to use parted as shown below:

# parted /dev/rdsk/c12t0d0p0
GNU Parted 1.8.8
Using /dev/rdsk/c12t0d0p0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart                                                           
mkpart
Partition type?  primary/extended? primary                                
primary
File system type?  [ext2]? ntfs                                           
ntfs
Start? 0                                                                  
0
End? 50%                                                                  
50%
(parted) print                                                            
print
Model: Generic Ide (ide)
Disk /dev/rdsk/c12t0d0p0: 31.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  16.0GB  16.0GB  primary                    

(parted) quit                                                             
quit
#

Start again fdisk to create a Solaris partition. After pressing 1 and then 1 again you can enter 50 to specify the percentage that the second partition will occupy.

             Total disk size is 3880 cylinders
             Cylinder size is 16065 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1                 IFS: NTFS         0  1939    1940     50
          2       Active    Solaris2       1940  3879    1940     50



SELECT ONE OF THE FOLLOWING:
   1. Create a partition
   2. Specify the active partition
   3. Delete a partition
   4. Change between Solaris and Solaris2 Partition IDs
   5. Edit/View extended partitions
   6. Exit (update disk configuration and exit)
   7. Cancel (exit without updating disk configuration)
Enter Selection: 


Partition 2 is now the active partition.

Of course you can make the first partition active.  Now let’s create an NTFS file system.

# mkntfs -s 4096 -c 4096 -S 65535 -f -v /dev/dsk/c12t0d0p1

The next thing is to modify the slice table on the Solaris partition. Start the format utility and
chose your disk. Then select «partition». You should see something like the following after pressing «p»:

Current partition table (original):
Total disk cylinders available: 14590 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0 unassigned    wm       0                0         (0/0/0)             0
  1 unassigned    wm       0                0         (0/0/0)             0
  2     backup    wu       0 - 14589      447.06GB    (14590/0/0) 937553400
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0
  8       boot    wu       0 -     0       31.38MB    (1/0/0)         64260
  9 unassigned    wm       0                0         (0/0/0)             0

This is wrong for our purpose and we need to modify it. First press 2 and change the «backup» tag to «unassigned», make the start cylinder 0 and the size 0gb. Then press 0 and change the tag to «root», make the start cylinder 1, and enter the size. In this case it should be 447gb. After pressing «p» you should see something like the following.

partition> p   
Current partition table (unnamed):
Total disk cylinders available: 14590 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wu       1 - 14589      447.03GB    (14589/0/0) 937489140
  1 unassigned    wm       0                0         (0/0/0)             0
  2 unassigned    wu       0                0         (0/0/0)             0
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0
  8       boot    wu       0 -     0       31.38MB    (1/0/0)         64260
  9 unassigned    wm       0                0         (0/0/0)             0

Now press «label» to write the new table onto the disk. After this you can terminate the format utility. The next step is to create the zpool

# zpool create utank /dev/dsk/c12t0d0s0

Notice that the pool is created on slice 0. We continue by creating the file system:

# zfs create utank/external

The command that follows makes sure the disk is readable by «your» user:

# chown -R apostolo:staff /utank/external/

You can copy things to folder /utank/external/. Before unplugging the disk export the zpool:

# zpool export utank

The next time just use zpool import to import the pool. That’s all!

PS I would like to thank Udo Grabowski for his comments and suggestions.

The (very very) long trip of a book

Posted in Χωρίς κατηγορία by asyropoulos on 4 Σεπτεμβρίου, 2017

On April 13, 2017 I went to the local office of the Greek Postal Service in order to send a book to a friend who lives in Rio de Janeiro. I sent the book by registered mail so to be able to track the parcel. The following screenshot shows how long it took to arrive to London airport.

From Greece to the UK

The third line says that the parcel arrived to the UK on 19/04/2017 and «rearrived» there on 01/06/2017. Obviously, they did something extremely stupid and the parcel stayed almost 40 days at the airport. But the good news is that on 07/06/2017 the parcel was on its way to Brazil.

From the UK to Brazil

Surprisingly the book arrived to Brazil on 07/06/2017, that is, the same day. But it was delivered to my friend on 25/08/2017. This means that it took 80 days to go from Curitiba to Rio de Janeiro. The distance between the two cities is 676 Km! I just wonder what is more lousy: the Royal Mail or Correios?

Ελληνικός Πολιτισμός

Posted in «Αθλητισμός» by asyropoulos on 23 Αυγούστου, 2017

Αυτές τις μέρες έβλεπα μια σουηδική τηλεοπτική σειρά (Springfloden) και ειλικρινά μου έκανε πολύ θετική εντύπωση. Δεν είναι η πρώτη εξαιρετική σουηδική τηλεοπτική σειρά που είδα (π.χ. η Äkta människor, η Modus κ.ά.).Επίσης έχω διαβάσει τα βιβλία  «Ο εκατοντάχρονος που πήδηξε από το παράθυρο και εξαφανίστηκε» και «Ο Αντερς ο φονιάς και οι φίλοι του» ενώ παράλληλα μου άρεσε πολύ και το τραγούδι Eruption των Be The Bear. Όλα αυτά πάνω κάτω τα ονομάζουμε παραγωγή πολιτιστικού προϊόντος. Βέβαια κάποιος θα πει πως και η Τουρκία βγάζει σαπουνόπερες αλλά δεν μιλάω για κάτι τέτοιο. Μιλάω για σοβαρό εξαγώγιμο πολιτιστικό προϊόν. Τέτοιο προϊόν δεν παράγει η χώρα μας. Ὰλλωστε αυτό αναφέρετε και σε αυτό το βίντεο. Εμείς όμως έχουμε πολύ υποβαθμισμένη την πολιτιστική εκπαίδευση και παιδεία και θεωρούμε πως πολιτισμός είναι να διδάσκονται αρχαία ελληνικά τα παιδιά στο Γυμνάσιο και στο Λύκειο. Φυσικά και την τεχνολογική εκπαίδεσυη έχουμε πλήρως υποβαθμισμένη.

Θα συνεχίσω να βλέπω σουηδικές αλλά και ισλανδικές σειρές (η σειρά Trapped  είναι εξαιρετική) αλλά δυστυχώς δεν είμαι σίγουρος αν θα αξιωθώ ποτέ να δω μια ανάλογη ελλγνικλη σειρά.