Wednesday, August 11, 2010

LaTeX formulas in XFig figures using PDFLaTeX

Hi,
this post is to explain how to insert mathematical formulas in figures created with XFig when using PDFLaTeX (and therefore when PSFrags is not an option). The procedure is actually so painless that I would recommend it even when PSFrags is available.
  1. when inserting the text in XFig, make sure you set the "Special text" flag. This can be done even after inserting the text by opening the Edit dialog window. You can mix normal text and math with the usual $ symbol.
  2. instead of exporting to PDF, export as "Combined PDF/LaTeX (both parts)". This will create two files figure00.pdf and figure00.pdf_t (assuming the name of the XFig file is figure00.fig).
  3. In your document, instead of using \includegraphics{figure00.pdf} include the _t file with \input{figure00.pdf_t}. If you want to resize the picture, you can use the command \resizebox as shown in the example below
  4. run pdflatex as usual.


Here are example files:
test.tex:

\documentclass{article}
\usepackage{graphicx}
\usepackage{color}
\begin{document}
Some text before the figure.
\begin{figure}
\resizebox{.5\textwidth}{!}{
\input{figure00.pdf_t}
}
\end{figure}
\end{document}

figure00.fig:

#FIG 3.2 Produced by xfig version 3.2.5b
Landscape
Center
Metric
A4
100.00
Single
-2
1200 2
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
0 0 1.00 60.00 120.00
1800 5490 1800 1395
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
0 0 1.00 60.00 120.00
315 5310 5535 5310
3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 4
585 5220 1980 5130 3195 4320 4545 1440
0.000 1.000 1.000 0.000
4 0 0 50 -1 0 12 0.0000 6 210 735 5040 5625 $\\alpha$\001
4 0 0 50 -1 0 12 0.0000 6 210 945 1935 1665 $e^\\alpha$\001

Enjoy!

Friday, August 6, 2010

TCP Window scaling may cause transfer problems

I noticed this problem first in Italy with an Alice Gate 2 Plus Wi-Fi modem and now I see a similar behaviour in Sweden with a NETGEAR Wireless Cable Voice Gateway modem used by ComHem. This made me think it was a good idea to rewrite in English my original post which was in Italian.

The symptoms (Alice Gate 2 Plus Wi-Fi):


- In GNU Linux this modem/router only works in modem modality, that is, by manually creating a pppoe connection with pppoeconf/pon/poff. If used as a router (automatic connection) web pages are only loaded partially or not loaded at all. Skype works in any case.
- In Windows 7, the router modality only works in combination with MS Internet Explorer (other browsers, such as Firefox and Chrome, show the same problem as in Linux)

The symptoms (NETGEAR Wireless Cable Voice Gateway):


- In GNU Linux the NETGEAR gateway works fine as long as browsing is concerned. When using SSH and many services using SSH, such as SVN, rsync, etc, sometimes the connection stalls and eventually times out
- I do not have a Windows computer in Sweden and could not check if the problem affects Windows as well, but, given the problems in saw in Italy, I would guess it does at least starting with Vista and newer versions.

The problem:


It seems that in both cases the routers do not handle properly the TCP option "window scaling" also called "receive window auto-tuning". This option is implemented in Linux and in Windows starting with Vista, and that is why the problem never occurred with Window XP or older.

The solution:


A solution is to disable window scaling in the TCP options, that is
- in GNU Linux open a terminal and run:
sudo sysctl net.ipv4.tcp_window_scaling=0
To make the option permanent, you have to add the line net.ipv4.tcp_window_scaling=0 in the /etc/sysctl.conf file.
- in Windows, start cmd as administrator and run:
netsh int tcp set global autotuninglevel=disabled

This may make the TCP protocol less efficient, so do this only if you encounter the problems described above.

Thursday, January 21, 2010

Che Rai.tv sia sempre maledetto

Aggiornamento 2011-01-28: Moonlight perde la sincronizzazione tra audio e video a meno che non si muova il mouse in continuazione sull'immagine. Un hack proposto da questo post è di installare i tool di xautomation con
sudo apt-get install xautomation
ed eseguire dal terminal:
while ((1)); do xte 'mousermove 1 1'; sleep 0.02; xte 'mousermove -1 -1'; sleep 0.02; done
e posizionare il mouse da qualche parte sull'immagine. Il comando muoverà il puntatore del mouse in continuazione, facendo funzionare magicamente la sincronia tra audio e video in moonlight. Rispetto alla soluzione riportata nel link qui sopra, ho aggiunto i comandi sleep che rendono il processo meno oneroso per il computer. Sul mio, il processo Xorg prende il 20% della cpu senza sleep e 5% della cpu con sleep.

Aggiornamento 2010-09-16: pare che rai.tv, o più probabilmente Moonlight, abbia risolto il problema. È ora possibile installare il plugin cliccando su "installa Silverlight" e seguendo le istruzioni. Io ho provato solo con la versione 3.0 di Moonlight che funziona su Firefox e Chrome (Ubuntu 10.04 e versioni correnti dei browser). Peccato che il plugin usi molte più risorse di ogni altro plugin video abbia provato.

Aggirnamento 2010-05-14: il risentimento per chi gestisce il sito rai.tv è sempre vivo, ma la soluzione qui sotto sfortunatamente non funziona più. Questa è la pagina più completa che ho trovato con soluzioni che potrebbero ancora funzionare, anche se il titolo riguarda le dirette.

oggi ci occupiamo di un altro problema che assilla gli utenti Linux (e spesso anche Mac) che vogliono vedere i contenuti online della Rai Radio Televisione Italiana. Purtroppo chi gestisce il sito rai.tv, come precedentemente il sito di raiclicktv, non ha alcuna considerazione per l'accessibilità dei propri contenuti. Il sito cambia sistema di streaming ogni tot mesi e introduce limitazioni arbitrarie per chi non usa la combinazione standard di prodotti microsoft.

Si potrebbe obiettare: "avete scelto un sistema operativo meno usato, dovete essere pronti ad accettarne le conseguenze". In realtà io uso giornalmente siti simili a quello della rai (CNN, BBC, SVT, per fare alcuni esempi), e nessuno mi ha mai dato alcun problema. Inoltre, per quanto possa accettare che una piccola azienda concentri lo sviluppo dei propri prodotti sulle piattaforme più diffuse, questo non può essere vero per grandi aziende che, facendo informazione, dovrebbero aspirare a raggiungere un pubblico più vasto possibile. Questo a maggior ragione dal momento che soluzioni de facto standard sono disponibili al giorno d'oggi, come dimostrano gli esempi fatti in precedenza.

Problema


Il sito rai.tv costringe gli utenti ad usare un software particolare (SilverLight) per fruire dei contenuti multimediali. Una versione linux esiste (MoonLight), ma il sito rai.tv ne preclude l'utilizzo con dei controlli aleatori sul sistema operativo/browser...

La mia soluzione


Molti programmi disponibili in linux (se non tutti) sono in grado di riprodurre il formato di stream usato da rai.tv. L'unica cosa noiosa è ottenere l'URL giusto per ogni contenuto. La soluzione qui proposta semplifica questo passo.

Innanzi tutto dovrete installare un paio di piccole utilità se non le avete già nel sistema, eseguendo il comando seguente in un terminale (funziona su Ubuntu o distribuzioni basate su Debian):
sudo apt-get install xsel wget

Poi, ogni volta che state cercando di vedere un video su rai.tv e avete ricevuto invece la scritta (nero su blu per cecarvi meglio): "Per visualizzare il contenuto video installa Moonlight da questo sito e poi torna sulla pagina.", voi:
1) Copiate l'URL della pagina web nel clipboard con Ctrl-C
2) Eseguite il comando:
wget -qO - `xsel --clipboard` | grep "videoURL =" | sed 's/^.*videoURL = \"//g' | sed 's/\";$//g' | xargs vlc

Il comando estrae l'URL del video e lo apre con vlc. Potete create un pulsante sulla barra menu che esegue il comando per semplificare ancora l'operazione, oppure cambiare vlc con il vostro programma multimediale preferito.

Naturalmente questa soluzione funzionerà finché alla rai non cambieranno la struttura HTML delle pagine web.

AGGIORNAMENTO:
data la grande richiesta, per creare un pulsante nel pannello di gnome, create un file dal nome ~/.gnome2/panel2.d/default/launchers/rai.tv.desktop e copiateci il seguente testo:

#!/usr/bin/env xdg-open

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Icon[en_DK]=checkbox
Exec=sh -c "wget -qO - `xsel --clipboard` | grep \\"videoURL =\\" | sed 's/^.*videoURL = \\\\\\"//g' | sed 's/\\\\\\";$//g' | xargs vlc"
Name[en_DK]=MostraRaiTV
Comment[en_DK]=Apri il video della pagina rai.tv il cui URL è nel clipboard
Name=MostraRai
Comment=Apri il video della pagina il cui URL è nel clipboard
Icon=checkbox

Poi fate log-out e di nuovo log-in.

Thursday, January 7, 2010

Alice Gate 2 Plus WiFi e TCP windows scaling

I miei genitori sono sfortunati abbonati di Alice ADSL Tutto incluso. Dopo un anno di sofferenze comincio a capire il motivo dei problemi continui (a patre l'iniziale consegna di un modem difettoso).

Il modem è un Dial Face (non Pirelli) e mostra nella pagina di configurazione (http://192.168.1.1/) le seguenti informazioni:

nome: Alice Gate 2 Plus Wi-Fi
hardware: S3PM-2
software: AGIA_1.2.0
smart card: non attiva

I sintomi:


- in GNU Linux il modem/router funziona correttamente solo come modem, cioè stabilendo manualmente una connessione pppoe con pppoeconf/pon/poff. Se usato come router (connessione automatica) le pagine web vengono caricate solo parzialmente o non caricate affatto. Skype funziona in ogni caso.
- in Windows 7, la modalità router funziona solo se si usa Internet Explorer (usando altri browser si hanno gli stessi problemi di Linux).

Il problema:


il modem/router non gestisce bene l'opzione TCP "window scaling" anche chiamata "receive window auto-tuning", adottata dal kernel di Linux e da Windows a partire da Vista.

La soluzione:


Disabilitare il window scaling nelle opzioni TCP, cioè
- in GNU Linux, apri un terminale ed esegui
sudo sysctl net.ipv4.tcp_window_scaling=0
Per rendere la modifica permanente, basta inserire la riga net.ipv4.tcp_window_scaling=0 nel file /etc/sysctl.conf.
- in Windows, avvia cmd come amministratore ed esegui
netsh int tcp set global autotuninglevel=disabled

Questo probabilmente rende il protocollo TCP meno efficiente.

L'alternativa:


è di usare l'"attrezzo" come un semplice modem stabilendo ogni volta connessioni pppoe, quando avrò tempo scriverò come rendere la connessione pppoe automatica in Windows (in Linux ancora non è semplice).

Per ulteriori informazioni clicca qui.