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

piątek, 10 sierpnia 2007

Mapowanie

Programowanie ma zadziwiająco mało struktur:

Singleton (jeden obiekt):
.

Lista(Szeregowo ustawione obiekty różnych typów):
...........................

Tablica(Albo lista list):
...........................
...........................
...........................

Drzewo (Z bierzącego węzła jest dostęp do N węzłów potomnych):
.
. .
. .
. .

Graf (Jak wyżej ale węzeł może być swoim węzłem potomnym).

Naturalną strukturą dla obiektu jest graf. Widać to szczególnie w javie*, ale i cpp ma podobną. Dla języków niskiego poziomu naturalną strukturą jest lista.

Można mapować jedne strukturę na drugą, ale to zawsze jest robota. Mapowanie drzewa na ścieżkę od jednego węzła do drugiego (ale ścieżkę przepływu danych, która nie jest ścieżką po gałęziach), zajęło mi z pół godziny roboty i parędziesiąt linijek mojego dość oszczędnego kodu... Mapowanie np. Vectora na tablicę to jest jedna linia kodu..

I teraz co za debil wymyślił SQL? Albo inaczej co za debil wymyślił mapowanie obiektów na SQL...
To jest tak nienaturalna struktura. Nie da się wrzucić obiektu w tablicę. Chyba że statycznego (ale takie są nudne i nieprzydatne). Żeby to miało jakieś wydajnościowe uzasadnienie... Ale nie! Sql nie jest bardzo wydajny, a jeśli jest więcej czasu traci się na obsługę mapowania Baza Danych <-> Obiekt niż się oszczędza na odczycie danych....

Doh!!

Bo mapowaniem Baza Danych <-> język ją przetwarzający zajmuje się serwer integracji. A przy jego oprogramowaniu to java jest niskopoziomowa ;).

Dlatego ostatnio tak modny jest XML, jest zajebiście nieoptymalnym wydajnościowo formatem (jak wszystkie tekstowe). Ale mapowanie Java <-> XML jest mapowaniem 1 do 1. Kod mapujący takie coś to i maszyna napisze (i owszem --- piszą ;)).



* Obiekty są tak na prawdę zbiorami odnośników do innych obiektów. Liściami tego drzewa są typy prymitywne.

czwartek, 14 czerwca 2007

Pan B.

Pisałem dziś kolokwium z KADD.
Na debianie, na debianie tym nie działały:
  • KDE
  • GNOME
  • FIREFOX
  • Przeglądarka plików
  • Konqueror
A adminowi nie było nawet głupio.

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

We will draw the line, however, at the inefficient N^2 algorithm, beloved of elementary computer science texts, called bubble sort. If you know what bubble sort is, wipe it from your mind; if you don’t know, make a point of never finding out!


Bubble sort to ciekawy algorytm. Łączy on w sobie dwie, zdawałoby się trudne do połączenia cechy, jest niezrozumiały (jak na sortowanie o złożoności N^2), i jest całkowicie, żałośnie wolny. Nie wiem ki kretyn włożył go do podręcznika. Przeca są algorytmy (też N^2), ale dwa cztery szybsze i jednocześnie zrozumialsze.

środa, 7 marca 2007

Reality...

... is ”What You Can Get Away With”.
... is an agreement that people have arrived at to make life more livable.
... is not always probable, or likely.
... is a palette that humans paint on to let themselves sleep better at night.
... is the leading cause of stress amongst those in touch with it.
... is projected Illusion.
... is a shared hallucination.
... is observable.
... is strange.
... [the concept of] is one that we must learn to get along without, and that the strength of one's impulses to use it is a measure of one's operational weak-mindedness.
... is prosaic.
... is only as the mind perceives it, where yesterday will never arrive and tomorrow has long since gone.
... is easy to find.
... is frequently inaccurate.
... is a symbolic, man-made, metaphysical creation.
... depends upon the Observer.
... is not optional.
... in the ordinary physical sense can neither be ascribed to the phenomenon nor to the agencies of observation.
... is Unraveling for Bush.
... is nothing but a shadow on the wall of the cave.
... is an ongoing quest for knowledge of what lay within.
... [virtual] is now on the cutting edge of technology.
... is a movie.
... is what you believe it to be.
... is breaking through
... is complex.
... is a complex term.
... is plastic.
... is a pretty brutal thing.
... is what you bump up against when your beliefs are false.
...
1. is that which can be perceived,
2. is that which can be communicated and,
3. is that which makes up thoughts.
... is unbelievable.
... is not a hoax.
... is merely a matter of perception.
... is something you rise above.
... is a collective hunch.
... is for people who lack imagination.
... is a canvas to our imaginations.
... is all that exists.

Pewnego wieczora nudziłem się twórczo i męczyłem Google głupimi pytaniami. Oto co uzyskałem - głupie pytanie głupia odpowiedź.

Źródło: Google.

sobota, 17 lutego 2007

metawyszukiwanie

Która wyszukiwarka pozwala wyszukać silniki wyszukujące pozwalające wyszukiwać w tematach niszowych :-)

Google oczywiście :)

Refs: wyszukiwarki specjalizowane(co to; jak założyć); jak je znleźć;

piątek, 9 lutego 2007

Mac

- Allo I'm a Mac.
- And I am a PC.
- I'm doin fun stuff like movies, music, podcast.
- I am also doing fun stuff - like spreadshets, timesteets and pie-charts.

Reszta tu.

Web 2.0



Good

środa, 17 stycznia 2007

Specjalność

prof. 1: No po naszej specjalności jest prodziekan i rektor.
prof. 2: No mamy do wydania w Europie 7mld Euro (wiecie ile trzeba etatów żeby to przepuścić)
prof. 3: No u nas nie ma ani prorekora, ani 7mld euro, ba, nie mamy nawet laboratorium na miejscu. Dlatego nasi studenci jeżdżą do CERNU.

Gdyby mówili więcej o tym co się robi na zajęciach to może bym wiedział co wybrać.

prof 1. (po pięciu minutach opisu jego pracowni) No jest jeszcze pracowania prof. Jakiegośtam. [click, zmienia slajd na następny] Przejdźmy dalej.

Kocham tę, no, lojalność ;-)

sobota, 13 stycznia 2007

Wysoko roździelcze sny elektrycznych owiec.

Chcecie wiedzieć Czy androidy śnią o elektrycznych owcach? (a ja już wiem).

Tak na marginesie książka jest super.

czwartek, 11 stycznia 2007

Geek

Spotyka się dwóch geeków:
- Cześć, właśnie zrekompilowałem sobie jądro Linuxa.
- Phi, ja otrzymałem stabilną plazmę w mikrofali.

niedziela, 31 grudnia 2006

Jeśli ufasz Googlom, bardziej niż lekarzowi. . . - much a draft

Google wypuściłty nowy gadżet --- na podstawie historii wyszukiwań (o ile była włączona przez jakiś czas) wyszukują inne rzeczy które mogłyby Ci zainteresować.
Moje propozycje można podzielić na trzy grupy:

1. Java
2. TeX
3. Góry


OK. Rozumiem że Java, ok tym bardziej rozumiem że TeX (bo ostatnio w co drugim wyszukaniu było to słowo), ale góry? Też trafione. . . Ale ja tego tematu w necie chyba nigdy nie poruszałem. . . Nigdy nie wyszukiwałem czegoś takiego. Jak na to Google wpadły? Nie wiem.


Życie to wydalanie informacji. Człowiek wprost broczy informacjami. Nie da się tego uniknąć, widać gdzieś te moje zainteresowania przeciekły i superkomputer Googli zrobił z nich użytek. . . Broczymy informacjami czy chcemy, czy nie. Każdy człowiek zostawia ślady z których (przy dostatecznym zacięciu) można odtworzyć wszystko. Jeśli nie chce by coś się przedarło do świata - unika pewnych tematów (ale to że ich unika też jest informacją). Nie da się nic ukryć.

Jest tylko jedna tajemnica - ta że nie ma żadnych tajemnic. Wszytstko jest jasne i cudownie przejrzyste[ES]

Tak wszystko jest widoczne, trzeba tylko patrzeć.

W jednej książce Zajdla wprowadzono całkowicie bezgotówkowy obrót pieniężny i czy rodzaje walut --- czerwone, niebieskie i żółte. Każdy zawsze co miesiąc dostawał ileśtam punktów określonych kolorów, i nawet totalne nieroby dostawały trochę kasy. Bochater w pewnym momencie stwierdza że jest tak dlatego bo włada jest miłosierna, ale dlatego że pozwala to władzy dokładnie śledzić poczynania ludzi. Jest tam nawet powiedzenie "broczył punktami [no tak się tam waluty nazywały]".

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: