Archive for the ‘Computer science and math’ Category

Just another wget clone

Tuesday, June 10th, 2008

While nothing interesting is happening in my life I post my recent program. Simply wget clone, with -m option it downloads all images and some stylesheets from the page and changes them to local adresses. Sorry for Polish comments and names in source file.

Source

Współczynnik durności ankiety

Monday, May 12th, 2008

W sobotę po kolokwium (tak, było w sobotę…) czekając na ludzi, zaczepił mnie jakiś student psychologii z prośbą o wypełnienie ankiety. Tematem ankiety była seksualność. Miałem chwilę czasu i byłem ciekawy, o co chodzi (tak, zaciekawiła mnie ta seksualność), więc przystąpiłem do wypełniania.

Budowa ankiety była dosyć prosta. Zawierała jakieś 40-50 pytań tak/nie typu “czy miewasz erotyczne sny z X?”, “czy uprawiałeś seks z X?”, “czy potrafisz być czuły wobec X?”, “czy podniecają Cię ładne/ładni X?”, “czy czujesz potrzebę zrealizowania się w związku z X?”, gdzie pytania o numerach nieparzystych miały zamiast X słowo “dziewczynami”, a reszta ─ “chłopakami”. Nie powiem, jak odpowiadałem, w każdym razie zaznaczyłem niektóre z tych parzystych. :>

Przy okazji wpadłem na pomysł współczynnika durności testu. Większość z nich zawiera potwarzające się pytania, tylko inaczej sformułowane. Ma to na celu wyeliminowanie czegośtam, nieważne. W każdym razie, jeśli jest tego za dużo, to to irytuje.

Teraz zacznie się matematyka. Niech Q będzie zbiorem pytań ankiety, a relacja = określona na zbiorze Q^2 jest zdefiniowana następująco:

Jeśli a i b należą do zbioru Q, to a = b \Longleftrightarrow a pyta o to samo, co b.

Oczywistym jest, że = jest relacją równoważności. Napis [a] (dla a należącego do Q) będzie oznaczał klasę abstrakcji względem tej relacji (dla humanistów: zbiór wszystkich pytań pytających o to samo, co a). Współczynnik durności ankiety, S, definiuje wzór:

S = \frac{|Q|}{| \lbrace [a] | a \in Q \rbrace|}

Czyli innymi słowy stosunek liczby pytań do liczby pytań unikalnych. :> Teraz trzeba wymyślić jakąś skalę, ja przyjąłem, że do 1,1 ankieta normalna, do 1,4 jest normalnym psychologicznym testem, a do 2,0 jest durna. Powyżej 2,0 staje się niepoważna.

LOLCode Compiler (my own!)

Wednesday, April 23rd, 2008

Hah! My dream have come through! I wrote my first compiler with my own lexer and parser. It compiles LOLCode (slightly modified version, see in specification [in polish, but only output language]) to stack machine language. My project contains also stack machine which interprets output files and prints them in human readable assembler and three examples of LOLCode programs. It’s all GPL so you can learn how it works. It’s written in C and I didn’t have much time to write pretty dynamic arrays and If someone will fix it, I would be verry happy. If you’ve got question about how it works, go ahead, write me and ask.

Source

Mój plan na semestr letni

Saturday, February 23rd, 2008

Przy okazji pobawiłem się Google Spreadsheet. ;)

http://spreadsheets.google.com/pub?key=pGWzSN9qMru5kSDOS6VN_Sg

pyhttpd - a tiny HTTP deamon written in Python

Monday, February 11th, 2008

It’s for my Python Course. It provides only very basic HTTP, but yet can be used for simple WWW hosting. Link.

Features:

  • GET and POST methods
  • New thread for new connection
  • Directory listing
  • Error pages
  • Document index
  • Deafult type and charset
  • Python scripts ;)
  • Configuration file
  • … and my own modules to handle these

TODOs:

  • Logging
  • Much more stability (exceptions handling, etc.)
  • Sending gzipped or chunked data (if accepted)
  • Range headers
  • … and many, many other

To run just edit pyhttpd.conf and change Port and Document root. Then type “python pyhttpd.py” and it should be now listening for connections.

How to run a python script and its output send to client? Pyhttpd checks if the requesting file is a python one. If so then it opens a python interpreter by a pipe, sends _GET and _POST dictionaries and file contents. And finally, sends interpreter outputs to client.

_GET and_POST are just dictionaries with variable names as keys. So if there is a foobar.py?i=500 request then _GET will be { ‘i’ : ‘500′ } (note that this is always a string value).

It’s GPL if someone asked.

JZW Interpreter source and examples

Sunday, September 9th, 2007

All right. I said I’ll show my jzwi source and here it is: http://www.root.ponton.in5.pl/jzwi/

It is almost ended. It doesn’t only check local variable if they have unique names. I’m too lazy to do that. But after all it works fine and quite fast (compared to other interpreters written by my colleagues).

To run jzwi program just run “jzwi program.jzw argument1 argument2 …”.

It’s all licensed on GPL (any version). There is no guarantee that it’ll work. ;)

JZWI

Wednesday, August 22nd, 2007

Uff… I have nearly finished my jzwi interpreter, just few minor fixes I will make in a week…

JZWI means “Język z wykładu improved” (”Language from lecture improved”). On our programming language theory subject we defined syntax using BNF notation and then we define formal semantic of this language (which is quite simmilar to Pascal/ALGOL).

It was our lab project to write a parser, converter to xHTML/LaTeX, an interpreter or full compiler in Haskell. It wasn’t as difficult as I thought, but I had to rewrite many parts of the code, ’cause firstly I wrote only simply parser, then simply converter and then I decided to try interpreter.

It costed me few nights and days, but I am very happy, when I see how beautifully it runs insertion sort. ;) Full source will be uploaded within few days. I have to lay off from vim and ghc. ;)

Uff… maybe I’ll check insertion sort once more. :>