2014-12-14

Polska klawiatura programisty w Linuksie - nie tylko alfabet

Najczęściej używanym przez polskiego użytkownika Linuksa układem klawiatury jest tzw. polska klawiatura programisty. Wszyscy wiedzą, że aby uzyskać wielką literę albo wykrzyknik należy użyć klawisza Shift, zaś aby uzyskać litery z polskimi znakami diakrytycznymi – należy użyć prawego klawisza Alt. Nie wszyscy jednak wiedzą, ze z tego układu klawiatury można wycisnąć nieco więcej. Na poniższym rysunku (kliknij aby go powiększyć) przedstawiłem znaki które można otrzymać przyciskając dany klawisz oraz:
  • żadnego modyfikatora (lewy górny róg „kratki”)
  • klawisz Shift (prawy górny róg)
  • prawy klawisz Alt (lewy dolny róg)
  • jednocześnie klawisze Shift i Alt (prawy dolny róg)


Dzięki znajomości odpowiednich skrótów można w dość prosty sposób umieścić w tekście np. zarówno poprawny polski cudzysłów („Ala ma kota”), jak i jego niemiecką („Ala hat eine Katze“) czy francuską (« Ala a un chat ») wersję.

2014-10-23

Compression of plain text files - 7z vs zip vs rar

This blog post is a translation of original post in Polish – for my friends who do not speak Polish :-)

Quantum-mechanical calculation codes create output in the form of plain text files. Sometimes the files are very large - a several / a few dozen MB of plain text. Some time ago I decided to clean out some directories containing calculation outputs in large text files (to save some disk space) and compress them. By the way I checked which one of the three common compression formats – zip, rar, or 7z – has better compression level for text files.

Size without compression (MB)Zip archive (MB)7z archive (MB)Rar archive (MB)
Directory 1 (only text files)193,738,82,43,5
Directory 2 (only text files)633,7128,65,98,5
Directory 3 (text and binary files)699,6153,399,7144,4

The results are very interesting, because for plain text files (of high redundancy) the 7z compression allows you to create an archive of size up to 100 times smaller than uncompressed files (and up to several times smaller than a zip/rar archive).

2014-07-23

Tworzenie wykresów naukowych w LaTeX-u za pomocą pgfplots, cz. 2

Trochę długo zbierałem się do napisania drugiego odcinka serii, ale w końcu powstał ;-)

Tym razem mam do pokazania dwa przykłady wykresów stworzonych za pomocą pgfplots. Na ich przykładzie chciałbym pokazać, jak za pomocą pgfplots wczytywać serie danych z pliku.

Przykład pierwszy:

2014-06-23

Wyrażenia matematyczne na stronach WWW - MathJAX


Biblioteka javascriptowa MathJAX umożliwia w łatwy sposób zamieszczanie wyrażeń matematycznych na stronach WWW, używając składni LaTeX-owej (możliwe jest także używanie składni MathML oraz ASCIIMathML, ale zostańmy przy LaTeX-u). MathJAX powstał w 2009 roku i jest rozwijany pod egidą Amerykańskiego Towarzystwa Matematycznego (American Mathematical Society, AMS - to ci od pakietu amsmath). Obecnie jest używany na wielu stronach WWW, m.in. na Wikipedii, arXiv, czy stronie Physical Review.

MathJAX ma tą przewagę nad standardem MathML że:
  • działa na większej ilości przeglądarek,
  • posługuje się prostą składnią LaTeX-ową a nie lasem znaczników jak MathML - przykład: odpowiednikiem LaTeX-owego $E=mc^2$ w MathML jest <math><mi>E</mi><mo>=</mo><mi>m</mi><msup><mi>c</mi><mn>2</mn></msup></math> (skonwertowane za pomocą edytora WIRIS)

Aby zacząć zabawę/pracę z MathJAX należy wpierw umieścić w kodzie HTML odnośnik do biblioteki:

<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>

Oczywiście można ściągnąć bibliotekę MathJax.js (licencja Apache) na swój serwer i odpowiednio zmodyfikować ścieżkę, ale w przypadku Bloggera ta opcja odpada.

Dalej jest prosto - para znaczników \( i \) umożliwia wstawianie formuł matematycznych umieszczanych w linii tekstowej, zaś pary znaczników $$...$$ lub \[...\] umożliwiają wstawianie formuł matematycznych eksponowanych.

Przykład - poniższy kod:

Hamiltonian dla układu <i>N</i>-elektronowego ma postać:
\[ \hat H = \sum_{i=1}^N \hat h(i) + \sum_{i>j=1}^N \hat V_{ij} \]
gdzie \( \hat h(i) \) jest hamiltonianem jednoelektronowym zaś \( \hat V_{ij} \) jest operatorem oddziaływania elektron-elektron.

Macierze Pauliego:
$$
\sigma_x=
\begin{pmatrix}
0 & 1 \\
1 & 0\\
\end{pmatrix}
\qquad
\sigma_y=
\begin{pmatrix}
0 & -i \\
i & 0\\
\end{pmatrix}
\qquad
\sigma_z=
\begin{pmatrix}
1 & 0 \\
0 & -1\\
\end{pmatrix}
$$

daje w wyniku

Hamiltonian dla układu N-elektronowego ma postać:
\[ \hat H = \sum_{i=1}^N \hat h(i) + \sum_{i>j=1}^N \hat V_{ij} \]
gdzie \( \hat h(i) \) jest hamiltonianem jednoelektronowym zaś \( \hat V_{ij} \) jest operatorem oddziaływania elektron-elektron.

Macierze Pauliego:
$$
\sigma_x=
\begin{pmatrix}
0 & 1 \\
1 & 0\\
\end{pmatrix}
\qquad
\sigma_y=
\begin{pmatrix}
0 & -i \\
i & 0\\
\end{pmatrix}
\qquad
\sigma_z=
\begin{pmatrix}
1 & 0 \\
0 & -1\\
\end{pmatrix}
$$


Strona domowa projektu: www.mathjax.org

2014-06-13

Tworzenie wykresów naukowych w LaTeX-u za pomocą pgfplots, cz. 1

Jak wiadomo LaTeX potrafi wiele rzeczy związanych ze składem tekstu. Pakiet pgf/tikz umożliwia łatwe i eleganckie tworzenie różnorakich diagramów, rysunków i wykresów w kodzie LaTeXa. Powstał nawet pakiet pgfplots, będący rozszerzeniem pgf/tikz specjalnie poświęconym generowaniu wykresów. I ten właśnie pakiet chciałbym omówić.

Oczywiście chociaż pobieżne omówienie podstawowych funkcji pakietu pgfplots przerasta możliwości tego posta (a raczej serii postów, gdyż, jak można wywnioskować z tytułu, planuję ich więcej niż jeden) - w końcu oficjalny manual liczy sobie ponad 300 stron. Dlatego też postanowiłem stworzyć kilka przykładowych, "życiowych", wykresów i omówić pokrótce ich kod, tak aby każdy mógł dostosować go do swoich potrzeb.

Na pierwszy ogień idzie chemia :-)

Oto wykres (użyłem danych z Wikipedii)...


...a oto kod:


\begin{tikzpicture}[scale=1.5]
\begin{axis}[
title={Zależność rozpuszczalności NaCl oraz CuSO$_4\cdot$5H$_2$O od temperatury},
title style={text width=16em},
xlabel={Temperatura [\textcelsius]},
ylabel={Rozpuszczalność [g/100~g wody]},
xmin=0,xmax=100,
ymin=0,ymax=120,
legend pos=north west,
ymajorgrids=true,grid style=dashed
]

\addplot[color=red,mark=*]
coordinates {
(0,35.65)
(10,35.72)
(20,35.89)
(30,36.09)
(40,36.37)
(50,36.69)
(60,37.04)
(70,37.46)
(80,37.93)
(90,38.47)
(100,38.99)
};

\addplot[color=blue,mark=square]
coordinates {
(0,23.1)
(10,27.5)
(20,32)
(30,37.8)
(40,44.6)
(60,61.8)
(80,83.8)
(100,114)
};

\legend{NaCl,CuSO$_4\cdot$5H$_2$O}
\end{axis}
\end{tikzpicture}


2014-03-29

3 ciekawe aplikacje, cz. 3

dwb

jest przeglądarką internetową opartą na połączeniu Webkita, Gtk, skrajnego minimalizmu i skrótów klawiaturowych w stylu Vima. Podobnie zresztą jak vimprobable, uzbl, jumanji, luakit, czy surf.


Chociaż dwb wydaje się na pierwszy rzut oka bardzo uproszczony, posiada on wiele funkcji cechujących nowoczesne przeglądarki, tj. zakładki, obsługę ciasteczek i proxy, adblocka, blokowanie flasha i javascriptu, rozszerzenia i skrypty użytkownika.

Gdyby ktoś nie wiedział jak wyjść z dwb, to podpowiem, że wystarczy wpisać :quit ;-)

QtWeb

jest przeglądarką internetową opartą na Webkicie i Qt, zaprojektowaną do bycia aplikacją przenośną.


Ciekawą funkcją QtWeb jest możliwość prostej deaktywacji w locie wczytywania obrazów, skryptów javascript lub flasha (niestety globalnie a nie dla każdej karty z osobna), czyli coś czego brakuje mi w Chrome a co było dobrze zrobione w Operze zanim zchromiała do reszty.

Meld

jest graficznym programem do porównywania zawartości plików tekstowych lub katalogów.


Meld posiada elegancki interfejs użytkownika oraz pozwala na zawijanie długich linii tekstu - co dla mnie jest osobiści ważniejsze, gdyż umożliwia mi to wygodniejsze porównywanie plików źródłowych LaTeX-a, i czego brakowało mi w programie Kompare.

2014-03-27

XeLaTeX, fonty i małe kapitaliki

XeLaTeX umożliwia nam korzystanie z fontów Open Type i True Type w dokumentach LaTeX-owych. Kapitaliki (ang. small caps, czyli "małe kapitaliki") natomiast są popularnym narzędziem typograficznym pozwalającym na wyróżnianie pojedynczych wyrazów lub krótkich wyrażeń (np. tytułów). Niestety większość fontów Open Type i True Type nie posiada w swoim kroju zaprojektowanych prawdziwych kapitalików, więc polecenie \textsc{jakiśtekst} zwróci po prostu zwykły tekst bez kapitalików.

Obejściem tego problemu jest zdefiniowanie dodatkowego fontu specjalnie na potrzeby tekstu z kapitalikami oraz przedefiniowanie polecenia \textsc, tak jak w poniższym kodzie.


\setmainfont{Lato}
\newfontfamily\capsfont{TeX Gyre Adventor}
\let\oldtextsc=\textsc
\renewcommand{\textsc}[1]{\oldtextsc{\capsfont#1}}


Poniżej przedstawiam dwa przykłady jak to wygląda: pierwszy przykład to font Lato dla zwykłego tekstu oraz TeX Gyre Adventor dla kapitalików, natomiast drugi przykład to Georgia dla zwykłego tekstu i Linux Libertine O dla kapitalików.

2014-01-12

3 ciekawe aplikacje, cz. 2

Od pierwszego wpisu z serii "3 ciekawe aplikacje" minęło bardzo dużo czasu, co obrazuje tylko moje lenistwo w pisaniu, bo ciekawych aplikacji nie brak. Tak więc po posypaniu głowy popiołem przedstawiam trzy kolejne, według mnie ciekawe, aplikacje.

Mpv

Otwartoźródłowy odtwarzacz multimedialny. Twórcy tego programu chwalą się, że połączyli to co najlepsze w projektach mplayer i mplayer2, usuwając większość niepewnie działających funkcji.
Interfejs programu jest dość minimalistyczny - oprócz okna z filmem mpv posiada jeszcze samoukrywający się panel kontrolny z paskiem postępu odtwarzania oraz OSD w stylu mplayera i to wszystko; żadnych pasków narzędziowych, menu, itp. Aplikacja powinna się więc podobać wielbicielom Fluxboksów/Openboksów i innym minimalistom.


Strona programu: mpv.io

PdfToText

Program pdftotext jest częścią pakietu xpdf i, jak sama nazwa wskazuje, służy do ekstrakcji tekstu z plików PDF (oczywiście odpadają pliki PDF zawierające w sobie tylko skany). Przydatne, gdy chcemy skopiować z PDF'a trochę więcej niż kilka zdań.

Chcesz wiedzieć więcej: strona domowa Xpdf oraz man pdftotext

Double Commander

Dwupanelowy menedżer plików inspirowany Total Commanderem, tak więc dalszy opis jest raczej zbędny ;-) Mam wrażenie, że Double Commander stara się być bardziej podobny do Total Commandera niż mój ulubiony Krusader.
Ciekawostka: Double Commander jest napisany w języku Pascal (a dokładnie: Free Pascal + Lazarus), który jak widać nie ogranicza się obecnie tylko do szkolnych pracowni komputerowych :-)


Strona programu: doublecmd.sourceforge.net