Pokazywanie postów oznaczonych etykietą polecam. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą polecam. Pokaż wszystkie posty

poniedziałek, 11 czerwca 2007

Summerhill

Why does my small son tell so many lies?

Possibly in imitation of his parents.

środa, 6 czerwca 2007

[ja] Biorę dziekankę na Fizyce.
[Hania] To będziesz miał czas na życie osobiste
[ja] Albo na działalność naukową.
[Hania] Ale działalność naukowa nie zastępuje życia osobistego.
[ja] Ale życie osobiste nie zastępuje działalności naukowej.
[Maja] A nie można obu?
[Hania] Trzebabyłoby się rozdwoić!
[ja] Dlatego wg. Eriugeny Bóg stworzył człowieka dwa razy. Raz jako ducha raz jako ciało.
[Hania] Ale który ma mieć życie osobiste?
[ja] Hmmm. Ciężko sobie wyobrazić cielesne obcowanie dusz*.

*Znaczy owszem łatwo. Był taki tekst na Piwnicy pod Baranami.

niedziela, 13 maja 2007




ABSTRACT

It's midnight. I've been working sixteen hours a day, seven days a week. I'm ... all » not being paid. In fact, my project was canceled six months ago, so I'm evading security, sneaking into Apple Computer's main offices in the heart of Silicon Valley, doing clandestine volunteer work for an eight-billion-dollar corporation.

poniedziałek, 30 kwietnia 2007

Metaprogramming

Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data or that do part of the work during compile time that is otherwise done at run time. In many cases, this allows programmers to get more done in the same amount of time as they would take to write all the code manually.
-wikipedia

Mówią że C++ daje narzędzia do metaprogrammingu a java nie. Przykładowo by wygenerować klasę całkują funkcje zwracającą double i std::complex, starczy napisać jeden szablon integrator.

Ale to Java ma powera do metaprogrammingu. Czytałem sobie w "Thinking in Java"* w rozdziale o adnotacjach, adnotacje to są takie fajne metadane dołaczane do kodu źródłowego. Ogólnie można do każdego elementu klasy dopisać jakąś informację. Co więcej, można za pomocą narzędzia apt (annotation processing tool), generować nowe pliki klas.

Dziś pisałem sejwowanie klasy do XML wygląda tak że na początku pisze się kod:
Element root = new Element ("[nazwa klasy]");
a dla każdej składowej klasy pisze się:
Element [nazwa składowej] = new Element ("[nazwa składowej]");
[nazwa_składowej].appendChild(String.valueOf(this.[nazwa_składowej]));
root.appendChild([nazwa_składowej]);
W sumie upierdliwe jak się ma 9 składowych. Wyglądało to tak:

package jb.sk;

import java.io.Serializable;
import java.text.ParseException;

import nu.xom.Element;

public class Comment implements Serializable, Comparable{

private static final long serialVersionUID = -5532948060127766412L;

String author;
String authorEmail;
long authorIP;
String authorUrl;
long date;
boolean deleted;
String message;
CommentId no = null;
boolean visible;
public Element getXML(){

Element comment = new Element("comment");

Element author = new Element("author");
author.appendChild(getAuthor());
comment.appendChild(author);

Element authorEmail = new Element("authorEmail");
authorEmail.appendChild(getAuthorEmail());
comment.appendChild(authorEmail);

Element authorIP = new Element("authorIP");
authorIP.appendChild(String.valueOf(getAuthorIP()));
comment.appendChild(authorIP);

Element authorUrl = new Element("authorUrl");
authorUrl.appendChild(getAuthorUrl());
comment.appendChild(authorUrl);

Element date = new Element("date");
date.appendChild(String.valueOf(getDate()));
comment.appendChild(date);

Element deleted = new Element("this.deleted");
date.appendChild(String.valueOf(isDeleted()));
comment.appendChild(deleted);

Element message = new Element("message");
message.appendChild(getMessage());
comment.appendChild(message);

Element no = new Element("no");
no.appendChild(this.no.toString());
comment.appendChild(no);

Element visible = new Element("visible");
visible.appendChild(String.valueOf(isVisible()));
comment.appendChild(visible);

return comment;
}
/*...*/
}


No i trafiło mnie żestarczyłoby utworzyć takie coś:
@XMLAble
abstract Comment_base{
@XMLAbleElement
String author;
/*..*/
Comment(Element e){
set(e);
}

abstract Element getXML();
abstract set(Element elem);

/*..*/
}


Potem automatycznie (przy pomocy apta) pisać klasę: Comment, która te dwie metody nadpisuje kodem generowanym w trywialny sposób. Po prostu tworzyłaby nową klasę dla @XMLAble i która sejwowałaby każdy element z annotacją @XMLAbleElement. Trywial :). Może kiedyś napisze coś takiego :).


---
* Wersji IV, wersja III dostępna na stronie autora (nie ma w niej chyba rozdziału w którym mówie).

piątek, 6 kwietnia 2007

Kuszenie Spinozy


Baruch Spinoza z Amsterdamu
zapragnął dosięgnąć Boga
szlifując
na strychu soczewki
przebił nagle zasłonę
i stanał twarzą w twarz
mówił długo
(a gdy tak mówił
rozszerzał się umysł jego
i dusza jego)
zadawał pytania
na temat natury człowieka
- Bóg gładził roztargnioną brodę
pytał o pierwszą przyczynę
- Bóg patrzył w nieskończoność
pytał o przyczynę ostateczną
- Bóg łamał palce
chrząkał

Kiedy Spinoza zamilkł rzecze Bóg
- Mówisz ładnie, Baruch
lubię twoją geometryczną łacinę
a także jasną skłądnię
symetrię wywodów

pomówmy jednak o
Rzeczach Naprawdę Wielkich

- Popatrz na twoje ręce
pokaleczone i drżące

- Niszczysz oczy w ciemnościach

- odżywiasz się źle odziewasz nędznie

- kup nowy dom
wybacz weneckim lustrom
że powtarzają powierzchnię

- wybacz kwiatom we włosach
pijackiej piosence

- dbaj o dochody
jak twój kolega Kartezjusz

- bądź przbiegły jak Erazm

- poświęć traktat Ludwikowi XIV
i tak go nikt nie przeczyta

- uciszaj racjonalną furię
upadną od niej trony
i szczernieją gwiazdy

- pomyśl o kobiecie
która da ci dziecko

- widzisz, Baruch, mówimy o
Rzeczach Wielkich.

- Chcę być kochany
przez nieuczonych i gwałtownych
są to jedyni
którzy prawdziwie mnie łakną

Teraz zasłona opada
Spinoza zostaje sam

Nie widzi złotego obłoku
światła na wysokościach
widzi ciemność

Słyszy skrzypienie schodów
kroki schodzące w dół


Nie to że polecam :P, nie to że się zgadzam, ale ładne.

Dodam że to Herbert jest.

sobota, 31 marca 2007

Polecam

SchrodingerWarning: this comic occasionally contains strong language (which may be unsuitable for children), unusual humor (which may be unsuitable for adults), and advanced mathematics (which may be unsuitable for liberal-arts majors).

Reklama:

Zachęcam do zajrzenia na: http://fizolof.blogspot.com/

Moja strona domowa zmieniła adres: http://jbhome.wikidot.com/

Ta strona nie będzie już updejtowana. Blog został przeniesiony na: http://jbhome.wikidot.com/blog:start

Blog: