Installare SVN su Ubuntu Server

Era ora di farlo, ce l’avevo in testa da tempo oramai e stava diventando sempre poù indispensabile. Parlo di un mio server Subversion! I software che ho sviluppato e che continuo a sviluppare aumentano e non sempre un disco fisso e delle semplici cartelle sono il posto migliore dove conservare le diverse versioni che si susseguono e che si sono susseguite nel corso dei mesi e degli anni.

Di seguito gli appunti che ho preso durante l’installazione di Subversion sul mio server Digital Ocean con Ubuntu Server.

  1. Aggiornare i server di Ubuntu:
    sudo apt-get update
  2. Installare Subversion
    sudo apt-get install subversion libapache2-svn apache2-utils
  3. Creare la cartella che ospiterà i vari repository
    sudo mkdir -p /svn/repos/
  4. Creare il primo repository (sostituire da qui in poi reposname con il nome appropriato)
    sudo svnadmin create /svn/repos/reposname
  5. Cambiare quindi la proprietà della cartella
    sudo chown -R www-data:www-data /svn/repos/reposname
  6. Creare il file reposname.conf  in /etc/apache2/sites-available/ per abilitare un virtual host su Apache con il seguente contenuto
    <Location /svn>
      DAV svn
      SVNParentPath /svn/repos/
      AuthType Basic
      AuthName "Test Repo"
      AuthUserFile /etc/svnpasswd
      Require valid-user
    </Location>
  7. Abilitare il virtual host
    sudo a2ensite reposname
  8. Riavviare il web server
    sudo service apache2 reload
  9. Creare il file per il controllo degli accessi al repository e fornire la password
    sudo htpasswd -cm /etc/svnpasswd nomeutente

    Per creare altri utenti usare il comando

    sudo htpasswd -m /etc/svnpasswd altroutente
  10. Subversion e il repository reposname sono ora accessibili via http all’indirizzo
    http://www.nomesito.it/svn/reposname
  11. Installare un SVN Client come ad esempio TortoiseSVN per poter accedere anche in scrittura al repository.

 

 

 


Aggiungere una immagine all’inizio di un video con FFMPEG

Per inserire una immagine nei primi frame del video (per esempio una immagine con il titolo del video e alcune note) una possibile soluzione è la seguente:

ffmpeg -loop 1 -framerate FPS -t SECONDS -i IMAGE -i INPUTVIDEO -filter_complex '[0:0] [1:0] concat=n=2:v=1:a=0' [OPTIONS] OUTPUT

Dove:

  • FPS: frame per second
  • SECONDS: il numero di secondi all’inizio del video in cui l’immagine myImage è mostrata
  • IMAGE: immagine da aggiungere
  • INPUTVIDEO: video originale
  • [OPTIONS]: parametri di codifica opzionali
  • OUTPUT: video elaborato
  • Esempio:

Esempio in cui viene mostrata una immagine fissa all’inizio del video per cinque secondi.

$ ffmpeg -loop 1 -framerate 192 -t 5 -i myImage.png -t 5 -f lavfi -i aevalsrc=0 -i inputVideo.flv -filter_complex "[0:0] [1:0] [2:0] [2:1] concat=n=2:v=1:a=1" \
-q:v 3 outputVideo.flv

“q:v  3″  

consente di non perdere qualità rispetto al video usato come input

“framerate 192″         

E’ importante che il framerate coincida con quello del video originale.


Aggiungere un logo ad un video con FFMPEG

Per inserire un logo durante un video una possibile soluzione è la seguente:

ffmpeg -i inputFile.mp4 -i logoFile.png -filter_complex overlay=main_w-overlay_w-10:10 -codec:a copy outputFile.mp4

Oppure:

ffmpeg -i inputVideo.flv -vcodec libx264 \ -preset slow -crf 25 -acodec copy -vf \ "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]"

overlay=10:10 indica la posizione dove visualizzare il logo.
Per visualizzare un logo di 100×100 pixel in basso a destra, su un video 1920×1080, i valori da utilizzare sono 10:970 (lasciando 10 pixel dal bordo del video)

Questo il link per scaricare ffmpeg:

http://ffmpeg.zeranoe.com/builds/

Dopo l’installazione (che in effetti consiste solo nello scompattare il file ZIP in una cartella a scelta) è necessario aggiungere il path della sottocartella bin alla variabile di ambiente PATH dell’utente o di sistema.

Se venisse visualizzato il messaggio di errore ‘libstdc++ -6 is missing’ è necessario installare il ‘Microsoft Visual C++ Redistributable Package’, disponibile gratuitamente direttamente dal sito Microsoft.


Collegare un LCD (HD44780) al Raspberry Pi

Come collegare un display con controller HD44780 alla porta GPIO di un Raspberry.
Dettagli tecnici tratti dall’articolo di Dimitris van Leusden a questo indirizzo.

  • Generally the first two and the last two pins are about powering the LCD. The first set (pins 1-2) is about the display of characters and the last set (pins 15-16) is about the back-light. When powering, we mean the +5V pin from Raspberry Pi, not the +3.3V one.
  • Pins 1, 5 and 16 are all connected to ground (-). Pin 5 is ground because we only want to write to the screen (0), not read (1).
  • Pin 3 is about managing the contrast. Here we connect a potentiometer and adjust the contrast (must-do, because the default contrast is always not good enough).
  • Pins 4 (Register Select or RS) and 6 (Enable or EN) are about controlling the LCD (e.g. clearing the screen, setting the cursor etc.)
  • Pins 7-14 are supposed for the characters to be displayed. That’s 8 pins if you are going to program it in 8-bit mode, which again means 8 cables to Raspberry Pi, only for the characters! But we can do with less, meaning only with 4 cables (4-bit mode). It’s slower, but the saving on pins is big.

What/how many pins we need from the RPi side:

  • Pins 2 and 15 from the LCD connect to RPi pin +5V.
  • Pins 1, 5 and 16 from the LCD go to any ground pin on RPi.
  • Pins 4 (RS), 6 (EN) and the first 4 data pins from the LCD (pins 7-10) connect to any free GPIO pins (not +3V3/+5V and not ground).
  • Pin 3 (contrast) connects to the potentiometer which in turns connects its other two pins to +5V and ground.

Because it’s 8 pins to the Raspberry (+5V, ground, RS, EN and 4 data pins), it’s easy to make a mistake. So my advise is to start simple, and that is to only connect what is related to power and the potentiometer. That means, first connect pins 1,2,3,15 and 16 from the LCD side.

Here’s how you will connect the LCD with the potentiometer as you look at it from the back side (not viewing the knob):

When you manage to do the above and you power on the Raspberry, you should see something like this:

So you will see the first line of the LCD with block characters. When adjusting the potentiometer, you should be able to adjust the visibility/blurriness of these blocks. That means: so far so good!

The next steps is to wire the remaining pins, which are pins 4 (RS), 6 (EN) and the first 4 data pins from the LCD (pins 7-10). Make sure you write down what pin from the LCD goes to what pin from the Rapsberry!A useful Excel file to note is this.

In the next article about the HD44780 I will go into details about programming it. If you can’t wait and want to play with your newly wired LCD, try the Python code from Adafruit here. Don’t forget to change the pin numbers with the ones that you used!


CHMOD ricorsivo su file o su cartelle

Spesso capita di dover cambiare gli attributi delle directory e delle sottodirectory (cartelle e sottocartelle) in maniera ricorsiva, applicando cioè le impostazioni a cascata su tutto l’albero delle directory a partire da un certo percorso.
In linux esiste un modo modo semplice per farlo, utilizzando un comando di una sola riga, ecco come:

Per cambiare i diritti soltanto alle directory:

find . -type d -exec chmod 755 {} \;

naturalmente al posto di 755 dovrete inserire i valori desiderati per i diritti di accesso

Per cambiare i diritti soltanto ai file:

find . -type f -exec chmod 644 {} \;

anche in questo caso al posto di 644 dovrete inserire i valori desiderati per i diritti di accesso

Vediamo nel dettaglio i parametri utilizzati:

“find .” dice di iniziare la ricerca dalla directory corrente
“-type d” dice di cercare soltanto le directory (nel caso di “-type f” verranno cercati solo i file
“-exec chmod {}” dice di eseguire il comando chmod sul file o sulla directory trovata (rappresentati dalla coppia di parentesi graffe)
“\;” dice a find che il comando è finito. Bisogna usare il carattere di escape “\” (backslash) perchè senza di esso il punto e virgola verrebbe interpretato e “mangiato” dalla shell prima di essere letto da find.

Link originale