Ostatnio uaktualniane: 29.10.2011
Treść
Algorytmy kompresji LZxx
Self modyfing code under x86 Linux. Tested with kernels 2.4 & 2.6.
[pl] Zobacz opis
bardziej rozbudowana funkcja assert korzystająca z dobrodziejstw preprocesora. Np.:
f = fopen(filename, 'w');
Assert(f != NULL, ("File %s not found", filename))
[en]: Simple utility to check placing of curly brackets '{' '}' in a TeX file. The program reports exact places (line, column) where not closed groups are started — TeX says only: "end occured inside a group at [some] level". The program finds also extra closing brackets (TeX says only the line where error occured).
[pl]: Program sprawdza rozmieszczenie nawiasów klamrowych w źródle TeX-a. Podaje dokładne koordynaty (wiersz, kolumna) nadmiarowej klamry zamykającej lub pozycję klamry otwierającej niezamkniętej grupy. Dla pierwszego przypadku TeX podaje tylko wiersz, zaś dla drugiego zaledwie poziom zagnieżdżenia. W przypadku dużych i skomplikowanych dokumentów to może być za mało i wówczas ten mały programik będzie pomocny.
Użycie:
checktex file1.tex file2.tex ...
[en] Program converts a list of words saved in a text-file into format recognized by OO (tested in OO 1.0 and 1.1.1). It also converts a polish diacritical characters — simply define PL on compilation.
[pl] Program konwertuje listę słów (każde słowo w jednym wierszu) na słownik użytkownika dla programu OpenOffice; testowane na OO 1.0, 1.1. Słownik należy skopiować do katalogu {OO}/user/wordbook i ponownie uruchomić OO.
Użycie:
$ wordlist2userdic lista_słów openoffice.dic $ wordlist2userdic.awk < lista_słów > openoffice.dicKompilacja:
$ gcc wordlist2userdic.c -o wordlist2userdic $ gcc -DPL wordlist2userdic.c -o wordlist2userdic # polskie litery
biblioteczka: kubiczne krzywe Beziera:
- punkt na krzywej
- podział krzywej algorytmem de Casteljau
- dokładne pudełko otaczające
- przejście na bazę potęgową
- adaptywny podział (+ 3 funkcje określające „płaskość” krzywej)
- punkty przecięcia z prostą
- punkty przecięcia z drugą krzywą
- odległość punktu od krzywej (przybliżona)
- długość krzywej (przybliżona)
- demo: Algorytm Cohena-Sutherlanda
- demo on-line: SVG + JavaScript
- demo (PIL): Sutherland-Hodgman.py
- demo (Tkinter): polyintersect-tkdemo.py [5.12.2006]
- algorytm: polyintersect.py [5.12.2006]
Pudełko otaczające obróconego łuku eliptycznego
- opis
- implementacja w Pythonie: elarc_aabb.py
- demo SVG+JavaScript: elarc_aabb-demo.svg
Funkcja grupuje kolejne elementy list, dla których funkcja value zwróci tę samą wartość.
>>> L = [1, 1, 1, 1, 2, 3, 3, 4, 4, 4, 4]
>>> group_elements(L)
[(1, [1, 1, 1, 1]), (2, [2]), (3, [3, 3]), (4, [4, 4, 4, 4])]
>>>
>>> L = ["aaa", "aab", "bba", "bab", "bca"]
>>> group_elements(L, lambda x: x[0])
[('a', ['aaa', 'aab']), ('b', ['bba', 'bab', 'bca'])]
>>>
Zwraca listę par (wspólny element, lista elementów).
Funkcję fields (z bodajże SML-a), która działa podobnie do split, ale zostawia na liście pola białych znaków można bardzo zgrabnie wyrazić za pomocą group_elements:
def fields(string, pred=lambda x: x.isspace()):
tmp = group_elements(string, pred)
return [(p, ”.join(cl)) for p, cl in tmp]
W pliku znajdują się dwie funkcje: find_file oraz find_all_files.
Funkcja find_file zwraca pierwszy plik, dla którego predykat pred jest prawdziwy, natomiast find_all_files zwraca listę wszystkich plików spełniających predykat. Funkcja pred przyjmuje dwa argumenty: nazwę bieżącego katalogu oraz nazwę pliku.
Funkcje wyszukują pliki w katalogu, bądź na liście katalogów.
Obie funkcje przechodzą katalogi wszerz; o tym czy katalog zostanie odwiedzony decyduje funkcja enterdir (domyślnie każdy katalog jest odwiedzany). Funkcja enterdir przyjmuje dwa argumenty: nazwę bieżącego katalogu oraz poziom w drzewie katalogów (liczony od zera).
Wyszukanie pliku nie uwzględniając rozmiaru liter:
filename = 'Text.TXT'
def pred(p, f):
return f.lower() == filename.lower()
f = find_file(['.', '/home/'], pred)
Wyszukanie plików .py we wszystkich katalogach oprócz CVS, .svn i tmp:
def pred(p, f):
return f.endswith('.py')
def enterdir(p, l):
return not p.endswith('/CVS') and \
not p.endswith('/.svn') and \
not p.endswith('/tmp')
fl = find_all_files('.', pred, enterdir)
PyGTK application with own CellRenderers: 1. drawing an arbitrary shape and rendering a text, 2. drawing text rendered from given gobject properties.
PyGTK line attributes demo: join, bevel and capjoin styles, and also dashes


This packages defines two commands:
First commands defines footnote text and assigns one to the given number. Second command makes footnote with n-th text note.
This allows to place text of footnotes anywhere in manuscript, for example all at the end of source file.
Mandelbrot fractal generator — SSE2 & SSE4.1 implementation.
SSE procedure calculates 4 pixels in parallel. SSE4.1 procedure uses PTEST instruction to break loop when lengths of all 4 complex numbers are greater then some threshold. SSE2 version uses PMOVMSKB and x86 TEST.
Average speedup over FPU procedure is around 4.5 times. Measured on Core2 Duo E8200 @ 2.66GHz.
Crossfading of 32bpp images — see article for details.
Program contains reference C implementation and two SSE procedures: one using old SSE instructions, and another using new SSE4.1 instruction PMADDUBSW.
Alpha blending of 32bpp images — see article
Program contains four procedures:
Lookup-based 32bpp pixels transformations — see article
This simple program includes following procedures:
16bpp to 32bpp pixel conversion — see article
This simple program includes following procedures
Acceleration of strstr using SSE4 instruction MPSADBW — read detailed description.
This program includes one wrapper sse4_strstr around following functions:
Population count of bits strings — see article
This program includes five functions:
Bin to hex conversion — for details see article
Four different approaches to dump hex:
Demonstracja dwóch metod dodawania z nasyceniem pikseli 16bpp (metody 1: x86 i 3: MMX).
Program możne działać albo wsadowo i wówczas wykonuje wybraną procedurę n razy (profilowanie, pomiar wydajności) albo interaktywnie — ładuje wskazany obrazek PPM, wyświetla w oknie (X Window) i wykonuje dodawanie z nasyceniem. Do kompilacji dla X Window wymaga dodatkowo biblioteczek load_ppm oraz Xscr.
Kompilacja:
gcc -O2 saturated_add.c -o cokolwiek
lub:
gcc -O2 Xscr.o load_ppm.o -DUSE_Xscr saturared_add.c -o cokolwiek
Następnie:
$ ./cokolwiek help
Demonstracja algorytmu rozmywania obrazów w skali szarości. Zawiera pięć funkcji:
Program możne działać albo wsadowo i wówczas wykonuje wybraną procedurę n razy (profilowanie, pomiar wydajności) albo interaktywnie — ładuje wskazany obrazek PPM, wyświetla w oknie (X Window) i rozmywa. Do kompilacji dla X Window wymaga dodatkowo biblioteczek load_ppm oraz Xscr.
Kompilacja:
gcc -O2 -lX11 -DUSE_Xscr Xcr.o load_ppm.o blur.c -o blur
lub:
gcc -O2 blur.c -o blur
Użycie:
$ ./blur help
Dokument utworzony przez rozszerzony rst2html.