Internet Technologies & News

Archiwum dla kategorii ‘Programowanie’

Drzewo AVL

Monday, June 2nd, 2008

Oto projekt AVL który wraz z kolegą realizowałem ostatnio.

W razie bugów proszę pisać.

avl.ansi-c.pl

Pod ww. adresem dostępna jest dokumentacja, prezentacja i informacje o programie. Można też pobrać, pliki źródłowe.

Drzewa AVL …

Sunday, May 18th, 2008

Co to jest AVL?? Jest to zrównoważone drzewo poszukiwań binarnych ( BST ), w którym wysokość lewego i prawego poddrzewa każdego węzła różni się maxymalnie o jeden. Tyle w wielkim skrócie.

Jakie zalety ?

Otóż maksymalna wysokość drzewa AVL składającego się z n “danych” wynosić 1,44*log2(n), a drzewa BST niezrównoważonego n.

Wady ( jeśli można to tak nazwać )

Potrzeba wykonania rotacji ( 2 typy po 2 rotacje ):
RR - rotacja pojedyncza prawa
LL - rotacja pojedyncza lewa
RL - rotacja podwójna lewa ( najpierw prawa potem lewa )
LR - rotacja podwójna prawa ( najpierw lewa potem prawa )
(more…)

Pigmej Paste

Wednesday, August 22nd, 2007

Pisząc darmowy silnik Wiki - Pigmej Wiki stwierdziłem, że przydać może się kolorowanie składni. I tak oto zająłem się stworzeniem modułu dla Pigmej Wiki. W tym celu wykorzystałem Pygments, bo jest bardzo szybkie i wydajane. Stworzyłem własne sposoby “informowania” Pygments jaki fragment i w jaki sposób ma kolorować (rozszerzenie nobilitet dla Markdown nie działało tak jak chciałem)… ale nie o tym miała być mowa.
Jak już skończyłem to miałem w zasadzie gotowy prosty skrypt Paste, wystarczyło napisać formularz. I tak oto właśnie powstało Pigmej Paste.
Paste ma podstawowe funkcje:

  1. Dodawanie nowych Paste i wybieranie spośród 82 różnych typów kolorowania składni. (Języki programowania, Języki Template, Pliki konfiguracyjne tutaj lista
  2. Usuwanie Paste po wpisaniu poprawnego kodu
  3. Przełączanie pomiędzy wersją z numerowanymi liniami i bez numerowanych linii ( można podawać linki do tych wersji )

Całość oczywiście Python dzięki mod_python + MySQL.

Zapraszam do używania Pigmej Paste.

BTC - Better Than Captcha

Thursday, August 2nd, 2007

Od pewnego czasu pracowałem dość intensywnie nad tym projektem. Co to za projekt?

Alternatywa dla Captcha “literowych”, więcej dowiecie się po starcie czyli po 12:00 02.08.2007 GMT (czyli godzina 13 dla Polski)

Używanie i implementacja banalna. Pobranie obrazka, wysłanie odpowiedzi, pobranie odpowiedzi z serwera BTC. Na stronie gotowe przykłady obszerne wyjaśnienia itd.

Liczę na wasze zdanie i sugestie odnośnie BTC

Ponieważ projekt skierowany jest nie tylko na Polskę, strona jest dostępna w różnych wersjach językowych.

Strona: http://btc.pigmej.eu/

Prosty CMS, wydajny CMS - Pigmej CMS

Friday, July 20th, 2007

Od kilku dni piszę Pigmej CMS. Głównymi cechami tego CMS są:

  • Łatwość obsługi
  • Pigmej CMS posiada czytelny panel administratora, wszystkie teksty można dodawać/edytować w edytorze WYSWIG.
  • Prędkość działania
  • Pigmej CMS napisany jest w całości w Pythonie, poświęciłem wiele czasu na optymalizację jego kodu. Nie korzystałem, z żadnego frameworka więc dokładnie kontroluję jakość kodu we/wy.
  • Łatwość zmiany wyglądu
  • Twój własny wygląd Pigmej CMS w kilka chwil. Wystarczy do pliku html wpisać odpowienie wyrażenia (np. %%menu%% dla wyświetlenia menu, %%tresc%% dla tresci itd), zainstalować styl i nic więcej. Wybierać można też spośród kilku gotowych rozwiązań.
  • Przyjazne linki
  • Wszystkie linki są przyjazne wyszukiwarkom (np. archiwum-lipiec-2007.html dla archiwum lipca 2007 itp.)
  • SEO
  • Możliwość dodawania/edytowania osobnych słów kluczowych dla każdej strony/każdego posta. Tytuł w tagach generowany na podstawie tytułu posta/strony - możliwość ustawienia.

Oczywiście CMS posiada wszystkie niezbędne funkcje kategorie, archiwum, poziomy użytkowników itd. Wiele czasu poświęciłem również na bezpieczeństwo.

CMS dostępny będzie dla każdego zainteresowanego całkowicie za darmo. Obecnie wersja CMS to 0.15 alpha.

Do działania wymagany jest serwer z obsługą Pythona przez WWW (np. dzięki mod_python).

Sortowanie liczb w pythonie

Tuesday, July 10th, 2007

Pewnie wielu z was zastanawiało się jak posortować liczby w Pythonie mając je w formacie string. W tym króciutkim how-to pokażę jak to prawidłowo zrobić.

1
2
3
4
5
6
7
def liczbowe_por(x, y):
	if int(x)>int(y):
	   return 1
	elif int(x)==int(y):
	   return 0
	else: # x<y
	   return -1

Teraz wystarczy jedynie wywołać np

jakas_lista.sort(liczbowe_por)

W łatwy sposób możemy też odwrócić kolejność sortowania:

(more…)

Opis Centralki, czyli mojego projektu…

Sunday, May 6th, 2007

Od kilku tygodni pracuję nad dość rozbudowanym botem obsługującym różne protokoły. Postanowiłem upublicznić spis dostępnych funkcji wraz z krótkim opisem. Cała centralka oparta jest o bazy danych, wszystkie teksty pobierane są z bazy danych. W związku z tym z poziomu komunikatora można je łatwo zmienić. (more…)

Boty Boty Boty…

Tuesday, April 24th, 2007

Od kilku dni intensywnie przenosiłem moje boty GG na jabbera z transportami. W tym celu musiałem wykorzystać xmpppy. Pythonową bibliotekę implementującą jabbera. Całe przejście obyło się prawie bez problemów. Największym z nich była zbyt mała moja znajomość specyfikacji działania protokołu jabber. W związku z czym miałem problem z podłączaniem się do transportów. Wczoraj trochę poczytałem i udało się. Dużym plusem jest też to, że teraz bez problemu działa wysyłanie polskich znaków diakrytycznych Te zmagania przyczyniły się do braku wpisów. Ale bez obaw. Blog nie umiera. Jeszcze sporo ciekawych rzeczy się tutaj pojawi.

Zarzadzanie linuxem z poziomu… komunikatora

Saturday, April 7th, 2007

Tak tak dokładnie tak jak napisałem. Ponieważ musiałem napisać bota gg dla tajnego puki co projektu, w celach wyłącznie szkoleniowych napisałem tez bota do obsługi linuxa. Obsługuje on wszystkie komendy ktore dostępne są na komputerze “matce”. Do części poprzez moduły a część jako polecenia systemowe przekazywane bezpośrednio na /bin/bash.

W obecnej wersji bot nie umie jeszcze wykonać komendy która wymaga jakiejkolwiek interwencji ze strony użytkownika (np “Aby potwierdzić wciśnij y”). Puki co każdą taką komendę staram się wykonywać z parametrem -f lub –force. Właśnie kończę moduł wykrywania takich komend i będzie się to działo automatycznie. Mam już co prawda pomysł na “normalne” użycie.

Jak pozbawię bota wszelkich błędów to założę bota demonstracyjnego, w którym będzie trzeba się zarejestrować, zostanie utworzone konto użytkownika linuxa oraz bota i będzie można używać (moduł rejestracji/usuwania już napisany).

Zapomniałbym bot działa na sieciach gg i jabber(szyfrowana transmisja).