Benchmark bash dash ksh csh zsh

 

PoisonBit per lavori che sta facendo a voluto fare dei test per decidere quale shell usare, a questo proposito ha fatto un test per verificarne le performance. Io ho modificato questo script aggiungendo ulteriori shell. Lo script è il seguente:

 

#!/bin/bash

testdir=$HOME/test
mkdir -p "$testdir"
printf '#!/bin/dash --\n\n' > "$testdir/dash"
printf '#!/bin/bash --\n\n' > "$testdir/bash"
printf '#!/bin/ksh --\n\n'  > "$testdir/ksh"
printf '#!/bin/csh --\n\n'  > "$testdir/csh"
printf '#!/bin/zsh --\n\n'  > "$testdir/zsh"
chmod +x "$testdir"/*

for i in 1 10 100 1000 10000
do
    for shell in 'bash' 'dash' 'ksh' 'csh' 'zsh'
    do
        result=''
        printf "$shell\t$i\t"
        result="$(
            (time for ((x=0; x < $i; x++));
             do
                 "$testdir/$shell";
             done) 2>&1 | awk -F\  '/real/{print $2}'
        )"
        printf "$result\n"
    done
    printf -- '-------------------------\n'
done

 

salviamo come test-shell.sh

$ chmod a+x test-shell.sh

 

lo lanciamo con:

$ ./test-shell.sh

 

come si può vedere dai risultati il più performante è dash, ma questo era prevedibile, quello che è interessante sono proprio le differenze in termini numerici tra di loro.

 

edmond@debianbox:~$ ./testshell.sh
bash    1    0m0.002s
dash    1    0m0.001s
ksh    1    0m0.002s
csh    1    0m0.004s
zsh    1    0m0.003s
————————-
bash    10    0m0.021s
dash    10    0m0.009s
ksh    10    0m0.019s
csh    10    0m0.039s
zsh    10    0m0.032s
————————-
bash    100    0m0.202s
dash    100    0m0.088s
ksh    100    0m0.181s
csh    100    0m0.380s
zsh    100    0m0.294s
————————-
bash    1000    0m1.900s
dash    1000    0m0.867s
ksh    1000    0m1.793s
csh    1000    0m3.759s
zsh    1000    0m3.078s
————————-
bash    10000    0m19.689s
dash    10000    0m8.577s
ksh    10000    0m17.453s
csh    10000    0m36.365s
zsh    10000    0m29.948s

il vincitore è  Debian Almquist Shell (dash)

Conoscere quante volte si è usato un comando

Per conoscere quali sono i comandi usati più frequentemente ed in quale numero, bisogna andare a spulciare in bash_history, ma se vogliamo velocizzare il tutto basta questo comando:

$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head

nel mio caso il risultato è questo:

edmond@debianbox:~$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head
58 mencoder
56 ffmpeg
49 cd
43 swfc
43 sudo
41 su
30 swfextract
26 cat
24 ls
10 phoronix-test-suite
 

in bash_history si trovano numerose  informazioni su quello che si è fatto, e per chi volesse disabilitare lo storico per una maggiore sicurezza:

$ rm -f ~/.bash_history

$ nano ~/.bashrc

ed inserire in fondo queste righe:

export HISTFILESIZE=4
unset HISTFILE
export HISTSIZE=2
export HISTCONTROL=ignoredups

Linux Slot Machine in flash

 

 

 

 

 

                                                                         Premere spin

 

Poco tempo fa avevo parlato di Swftools, una serie di tools in grado di leggere e creare file.swf (flash), e come già detto in precedenza è un pò che lo conosco, ed in quel poco di tempo libero che mi rimane cerco  d'apprendere  qualche segreto in più. E proprio nella ricerca di ulteriori guide per la compilazione di un file.swf e le sue più svariate opzioni,, mi sono imbattuto in Distro Slot.e quindi l'ho scaricato per cercare di studiarlo. Ho fatto delle piccole modifiche e lo si può scaricare da qua. Quindi una volta installato Swftools:

$ tar xjvf Linux-slot-machine.tar.bz2

$ cd Linux-slot-machine

quindi compiliamo con:

$ swfc -o distro_slot.swf distro_slot.sc

e possiamo goderci la Linux Slot Machine in Flash 😉 per chi volesse solamente il file .swf può scaricarlo quà.

Il primo che riesce a fare un tris di Debian o altro è pregato di postare uno screenshot 🙂

Video installazione Debian Gnu/kFreeBsd

 

 

 

 

 

Ho voluto fare un video di installazione di Debian Gnu/kFreeBsd su virtualbox per far conoscere la semplicità del nuovo debian installer, ma soprattutto far vedere che funziona :). Diciamo che adesso a differenza della guida che ho fatto tempo fa alcuni bug sono stati risolti e a differenza di allora non dobbiamo mettere mano a xorg.conf aggiungendo delle  opzioni per farlo funzionare. Adesso rifacendo una nuova installazione su hard disk non ho avuto grossi problemi, la mini.iso che ho usata è questa  ed una volta finito l'installazione e riavviato, tutto è andato bene o quasi. Se al riavvio abbiamo lo schermo nero e vediamo soltanto il mouse, entriamo in ttyv1 o successive e comandiamo un:

# rm /tmp/.X0-lock

sinceramente non ho ancora provato a capire dove è il problema.

quindi:

$ startx

se all'avvio su dektop appare questo errore:

andare in /etc/fstab e commentare questa riga;

#fdesc           /dev/fd         fdescfs rw              0       0

ed aggiungiamo anche le nostre partizioni linux/dati inserendo qualcosa di simile, adattandolo alle vostre esigenze.

/dev/ad0s6     /mnt/dati       ext2fs   rw              0       1

Gnu/Linux……un sentimento reciproco 🙂 ….generazione morta 🙂

Debian GNU/kFreeBSD compilare il kernel

 

Come compilare il kernel in Debian GNU/kFreeBSD?, col metodo Debian o con quello FreeBsd? Diciamo che per quelli come me che usano prevalentemente Debian, all'inizio si trovano un pò spaesati, forse per la troppa facilità 🙂 ,ma questo è normale quando ci si avvicina ad un qualcosa che non conosci bene e devi imparare. Comunque il mio sistema è:

edmond@GnuKfreeBsd:~$ uname -a
GNU/kFreeBSD GnuKfreeBsd 8.1-1-686-smp #0 Tue Aug 17 23:24:32 CEST 2010 i686 i386 Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz GNU/kFreeBSD

per iniziare la compilazione dobbiamo avere un pò di strumenti quindi:

# apt-get build-dep kfreebsd-8

poi:

# apt-get source kfreebsd-8

# cd kfreebsd-8-8.1

andare nel percorso del file .config della nostra architettura:

esempio:

/home/edmond/kfreebsd-8-8.1/debian/arch/i386/686-smp.config

ed effettuare i cambiamenti.

step finale:

# dpkg-buildpackage opzione_di_compilazione

esempio:

# dpkg-buildpackage -B -uc

fare riferimento al man dpkg-buildpackage

Orologio di sistema sempre inesatto

 

 

Da qualche tempo sulla mia Debian Squeeze l'ora sulla barra delle applicazioni è sbagliata, praticamente è sempre 2 ore indietro, un paio di volte nei giorni scorsi sono andato a modificarla dalla barra stessa, ma puntualmente al riavvio successivo tutto tornava come prima. La soluzione è abbastanza semplice, basta effettuare la sincronizzazione con il server NTP:

# apt-get install ntpdate

ed al prossimo riavvio la sincronizzazione avverrà in automatico. Parlando di ora non possiamo che parlare anche della data, quindi ecco alcuni comandi:

edmond@debianbox:~$ date
ven 17 set 2010, 20.54.00, CEST
 

edmond@debianbox:~$ cat /etc/timezone
Europe/Rome
 

root@debianbox:/home/edmond# dpkg-reconfigure tzdata

Current default time zone: 'Europe/Rome'
Local time is now:      Fri Sep 17 20:54:54 CEST 2010.
Universal Time is now:  Fri Sep 17 18:54:54 UTC 2010.

USB 3.0 e Linux una scheggia

 

Oggi sono andato alla fiera dell'elettronica di Busto Arsizio (VA), per curiosare e vedere se ci fossero delle novità o qualcosa che attirasse la mia attenzione. Io queste fiere le seguo sempre, di solito frequento anche quelle di Erba (CO) Novegro (MI) e Cremona. Comunque curiosando di quà e di là ho acquistato qualcosa, alla fine me la sono cavata fortunatamente con una spesa di circa 120€ in totale. Il pezzo pregiato dei miei acquisti è stata una pen drive da 16g con standard USB 3.0 al prezzo di 39€, mentre quella USB 2.0 costava 26€. Una volta arrivato a casa mi sono messo subito a testarla, ed a questo proposito, bisogna ricordare che Linux per primo ha il supporto nativo per questo standard, fin dal kernel 2.6.31. Comunque per far capire la velocità di questo standard ho fatto una prova sul mio pc che ha come hub:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Per prima cosa ho formattato la pen drive con dd, dato che gparted non riusciva a formattarla:

$ dd if=/dev/zero of=/dev/sdX

Test:

copia di un file video di 1g su una pen drive Sony da 2g:

Bus 001 Device 015: ID 054c:0243 Sony Corp. MicroVault Flash Drive

Risultato:

real    5m29.500s
user    0m0.008s
sys    0m2.512s

copia dello stesso file su ADATA Nobility Series N005 USB 3.0:

Bus 001 Device 016: ID 125f:105a A-DATA Technology Co., Ltd.

Risultato:

real    0m42.896s
user    0m0.024s
sys    0m2.740s

il risultato direi che è ottimo…una scheggia 🙂
 

Converseen-convertire 100+ formati

 

 

Ho scoperto da poco Converseen, e devo dire che è un ottimo programma, anche se, come dice lo stesso autore italiano, c'è ancora qualche bug da sistemare. Comunque può risultare molto utile nell'ottimizzazione, conversione ( oltre 100 formati) e ridimensione di un gruppo di immagini. Io l'ho installato su Debian Squeeze/Sid con:

# apt-get install qt4-qmake imagemagick libmagick++3 libmagick++-dev

$ wget https://sourceforge.net/projects/converseen/files/Converseen/Converseen%200.3/converseen_0.3.tar.bz2/download

$ tar -xvf converseen_0.3.tar.bz2

$ cd converseen_0.3

$ qmake && make

# make install

Conoscere chi usa la memoria con lo script ps_mem.py

 

 

 

 

 

 

Questo script in pyton, ps_mem.py, può risultare molto utile ogni qual volta si ha bisogno di sapere quanta memoria ogni singolo programma occupa. Per chi volesse provarlo:

$ wget https://www.pixelbeat.org/scripts/ps_mem.py

# mv ps_mem.py /usr/local/sbin/

# chmod 755 /usr/local/sbin/ps_mem.py

lo lanciamo con:

# ps_mem.py

il risultato è una lista minuziosa.

root@debianbox:/home/edmond# ps_mem.py
 Private  +   Shared  =  RAM used    Program

112.0 KiB +  30.5 KiB = 142.5 KiB    portmap
128.0 KiB +  22.5 KiB = 150.5 KiB    gnome-pty-helper
140.0 KiB +  12.0 KiB = 152.0 KiB    sh
144.0 KiB +  22.0 KiB = 166.0 KiB    atd
144.0 KiB +  23.0 KiB = 167.0 KiB    acpid
164.0 KiB +  19.5 KiB = 183.5 KiB    init
160.0 KiB +  33.5 KiB = 193.5 KiB    hald-addon-rfkill-killswitch
164.0 KiB +  33.5 KiB = 197.5 KiB    hald-addon-leds
164.0 KiB +  34.5 KiB = 198.5 KiB    hald-addon-input
168.0 KiB +  35.5 KiB = 203.5 KiB    hald-addon-acpi
192.0 KiB +  53.5 KiB = 245.5 KiB    rpc.statd
256.0 KiB +  14.0 KiB = 270.0 KiB    ssh-agent
220.0 KiB +  50.5 KiB = 270.5 KiB    cron
240.0 KiB +  44.5 KiB = 284.5 KiB    hald-addon-usb-csr
268.0 KiB +  30.5 KiB = 298.5 KiB    hald-runner
272.0 KiB +  29.5 KiB = 301.5 KiB    dbus-launch
332.0 KiB +  14.0 KiB = 346.0 KiB    hddtemp
332.0 KiB +  48.5 KiB = 380.5 KiB    kerneloops
364.0 KiB +  48.0 KiB = 412.0 KiB    usbmuxd
336.0 KiB + 103.0 KiB = 439.0 KiB    gvfsd-burn
352.0 KiB + 119.5 KiB = 471.5 KiB    su
448.0 KiB +  43.0 KiB = 491.0 KiB    exim4
444.0 KiB +  65.5 KiB = 509.5 KiB    gvfsd-metadata
516.0 KiB +  17.0 KiB = 533.0 KiB    dhclient
460.0 KiB +  89.0 KiB = 549.0 KiB    gvfs-gphoto2-volume-monitor
468.0 KiB + 108.0 KiB = 576.0 KiB    getty (6)
480.0 KiB + 105.5 KiB = 585.5 KiB    gdm3
472.0 KiB + 126.5 KiB = 598.5 KiB    bluetoothd
464.0 KiB + 156.0 KiB = 620.0 KiB    gvfs-afc-volume-monitor
664.0 KiB +  71.5 KiB = 735.5 KiB    modem-manager
504.0 KiB + 252.0 KiB = 756.0 KiB    avahi-daemon (2)
592.0 KiB + 186.0 KiB = 778.0 KiB    gdm-session-worker
676.0 KiB + 236.0 KiB = 912.0 KiB    wpa_supplicant
792.0 KiB + 156.5 KiB = 948.5 KiB    bonobo-activation-server
820.0 KiB + 169.0 KiB = 989.0 KiB    gvfs-gdu-volume-monitor
968.0 KiB +  52.5 KiB =   1.0 MiB    rsyslogd
868.0 KiB + 206.0 KiB =   1.0 MiB    gdm-simple-slave
352.0 KiB + 741.0 KiB =   1.1 MiB    udevd (3)
904.0 KiB + 225.0 KiB =   1.1 MiB    hald-addon-storage (6)
  1.0 MiB +  94.0 KiB =   1.1 MiB    gvfsd
980.0 KiB + 176.5 KiB =   1.1 MiB    console-kit-daemon
728.0 KiB + 436.5 KiB =   1.1 MiB    upowerd
  1.1 MiB + 105.0 KiB =   1.2 MiB    gnome-keyring-daemon
  1.0 MiB + 203.0 KiB =   1.2 MiB    gvfsd-trash
  1.0 MiB + 162.5 KiB =   1.2 MiB    polkitd
944.0 KiB + 303.5 KiB =   1.2 MiB    udisks-daemon (2)
904.0 KiB + 439.5 KiB =   1.3 MiB    gvfsd-afc
  1.0 MiB + 322.0 KiB =   1.3 MiB    kerneloops-applet
  1.2 MiB + 281.5 KiB =   1.5 MiB    NetworkManager
  1.5 MiB + 210.0 KiB =   1.7 MiB    cupsd
  1.3 MiB + 457.5 KiB =   1.8 MiB    gdu-notification-daemon
  1.4 MiB + 368.0 KiB =   1.8 MiB    seahorse-agent
  1.5 MiB + 324.0 KiB =   1.8 MiB    dbus-daemon (2)
  1.5 MiB + 425.5 KiB =   1.9 MiB    gnome-screensaver
  1.8 MiB + 748.0 KiB =   2.6 MiB    multiload-applet-2
  1.9 MiB + 804.5 KiB =   2.7 MiB    trashapplet
  1.9 MiB + 796.5 KiB =   2.7 MiB    polkit-gnome-authentication-agent-1
  2.3 MiB + 721.0 KiB =   3.0 MiB    nm-applet
  2.2 MiB + 866.0 KiB =   3.0 MiB    update-notifier
  2.3 MiB + 803.5 KiB =   3.0 MiB    gtk-window-decorator
  2.3 MiB + 806.0 KiB =   3.1 MiB    x-session-manag
  3.1 MiB +  65.5 KiB =   3.2 MiB    hald
  3.3 MiB +  96.0 KiB =   3.4 MiB    gconfd-2
  3.0 MiB + 722.0 KiB =   3.7 MiB    bash (2)
  3.3 MiB + 805.0 KiB =   4.1 MiB    gnome-terminal
  3.5 MiB + 936.5 KiB =   4.4 MiB    gnome-settings-daemon
  4.4 MiB +   1.1 MiB =   5.5 MiB    mixer_applet2
 11.9 MiB + 847.0 KiB =  12.7 MiB    coherence
 17.3 MiB +   2.1 MiB =  19.4 MiB    rhythmbox
 17.4 MiB +   2.5 MiB =  19.9 MiB    gnome-panel
 34.2 MiB +   5.5 MiB =  39.7 MiB    nautilus
 47.1 MiB +   2.5 MiB =  49.6 MiB    compiz
 46.3 MiB +   4.8 MiB =  51.0 MiB    Xorg
244.8 MiB +   2.6 MiB = 247.4 MiB    firefox-bin

———————————
                        524.4 MiB
=================================

 Private  +   Shared  =  RAM used    Program

Swftools su Debian Squeeze/Sid

 

 

 

 

 

 

 

Swftools include una serie di strumenti che servono per leggere file.swf  (Adobe Flash), e riesce a creare,  tra l'altro partendo da delle  immagini, o da pdf ,  un file in flash. Comunque qua c'è la documentazione dei vari tools. Io è un pò che lo conosco e se non ricordo male prima si trovava nei repo, ma adesso non so come mai, ma non esiste più…va bè. Comunque ho voluto installarlo e dopo qualche problema di librerie mancanti ed errori vari, sono riuscito a compilarlo.

Requisiti:

apt-get install libgif-dev xpdf libfreetype6 libfreetype6-dev libjpeg62 libjpeg8 libjpeg8-dev

verificare se manca qualcos'altro.

Scaricare compilare installare

$ wget https://www.swftools.org/swftools-0.9.1.tar.gz

$ tar -zvxf swftools-0.9.1.tar.gz

$ cd swftools-0.9.1

$ ./configure --prefix=/usr/local

$ make

se c'è un errore come questo:

jpeg.c:463: error: conflicting types for ‘jpeg_load_from_mem’
jpeg.h:15: error: previous declaration of ‘jpeg_load_from_mem’

risolvere editando il file jpeg.c e modificarlo da così:

int jpeg_load_from_mem(unsigned char*_data, int size, unsigned char*dest, int width, int height)

a così:

int jpeg_load_from_mem(unsigned char*_data, int _size, unsigned char**dest, int*width, int*height)

un altro errore che potrebbe verificarsi è il seguente:

make[2]: *** No rule to make target `xpdf-*tar.gz', needed by `xpdf/Gfx.cc'.  Stop.

si risolve con:

$ cd lib/pdf

$ wget

$ perl inject-xpdf.pl xpdf-3.02.tar.gz

se alla fine non ci sono errori siamo pronti per l'installazione, in caso di altri errori postare:

# make install oppure make checkinstall

a questo punto siamo pronti ad ottenere un immagine in flash come sopra ,creando un file.sc ed inserendo all'interno:

.flash filename="file.swf" version=5 fps=25
   
    .jpeg s1 "file.jpeg" quality=80%

    .put s1 x=50 y=50 scalex=110 scaley=110
    .frame 50
    .change s1 x=0 y=0 scalex=210 scaley=210 red=-1+255 green=-1+255 blue=-1+255 #invert
    .frame 100
    .change s1 x=100 y=50 scalex=110 scaley=110 red=0 green=+0 blue=+0 #remove red
    .frame 150
    .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=2 blue=-1+255 #amplify green, invert blue
    .frame 200
    .change s1 x=50 y=100 scalex=110 scaley=110 red=2-128 green=-2+255 blue=+0.7+40 #alien glow
    .frame 250
    .change s1 x=0 y=0 scalex=210 scaley=210 red=8-1024 green=8-1024 blue=8-1024 #palette reduce
    .frame 300
    .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=+0 blue=+0 #back to normal
    .frame 350
    .change s1 x=105 y=105 scalex=0 scaley=0 luminance=0 #fadeout
.end

quindi diamo il comando: comando:

$ swfc file.sc

Invece se vogliamo convertire un file.pdf in file .swf utilizziamo l'utility pdf2sw:

$ pdf2swf file.pdf -o file.swf

 

Comunque sul sito si trovano vari esempi di utilizzo per i vari strumenti.