C++, Delphi, JAVA és egyéb programnyelvek

Started by ignus, 2007-06-05, 15:03:45

Previous topic - Next topic

Próféta

#330
Quote from: chilip on 2010-12-13, 16:26:28
alázást most nem kérnék, hanem csak ötleteket a megvalósításra :D
:oops: Ezer bocsi, tényleg nem szokásom. Alighanem vért reggeliztem akkor :redface:

Quote from: chilip on 2010-12-13, 17:01:37
egyeske *p;    => csak az egyeske class típusú valamire mutathat
Vagy az egyeske osztály egyik leszármazott osztályába tartozó objektumra. Ez is a polimorfizmus egy formája (hú!). Lásd még: minden bogár rovar. Kicsit bővebben: http://newdata.box.sk/bx/c/htm/ch12.htm (és utána http://newdata.box.sk/bx/c/htm/ch13.htm ha már kened-vágod).

Egyébként kikuchiyonál a pont.
Ja és:
typedef std::list<kozos_ososztaly_egyeskenek_es_ketteskenek*> LinkedList; :P

Azért egy gonosz támadó kérdés: erre biztos hogy mind magatoktól kellene ráébrednetek? Nincs nálatok valami tananyag, vagy előadás, ahol ezt elmagyarázzák?

kikuchiyo

[spoiler=gonosz támadó válasz]Az előadásra nyilván nem járt be, a tananyagba nem nézett bele évközben, és most "Tarzan csinál másik lyuk" stílusban akarja megírni a beadandókat.[/spoiler]

Az jutott még eszembe, hogy ha nem az lenne a követelmény, hogy az egyik osztály egy double-t tartalmazzon, a másik kettőt, hanem az lenne, mint a belinkeltem fórumtémában (tehát az egyikben int, a másikban double "ugyanaz" a változó), akkor előnyösebb lehet hardcore C-módra unionnal megoldani, és akkor nem kell vacakolni a származtatással.
Failure is the default option

chilip

előadás annyiból állt hogy felolvasta a netes jegyzetet, gyakorlaton se tanítottak semmit, az is csak a beadandók leadására volt... netre felbaszták az anyagot meg a házikat oszt csá.

amúgy a tárgyat hagyom a picsbe, mert télleg nem ilyen kevés C++ -os tudással kéne nekiállni, majd ha vége a vizsgáknak elkezdem nyüstölni, főleg azt a tutorialt amit próféta ajánlott. amúgy köszönöm a válaszokat, azért majd rájuk nézek ma még miket linkeltetek :P a baj az volt ezzel a tárgyal hogy ennek előzménye a "programozási nyelvek: C++" ami 1,5 éve volt nekem (azóta nem volt C++ -os tárgyam) és szar előadóval (=> alig lett meg és alig tanultam ott valamit, máig nem értem hogy sikerült a végső géptermi ZH). szóval jah, rá kéne gyúrni mikor lesz időm :D




Quote from: kikuchiyo on 2010-12-15, 12:09:49
[spoiler=gonosz támadó válasz]Az előadásra nyilván nem járt be, a tananyagba nem nézett bele évközben, és most "Tarzan csinál másik lyuk" stílusban akarja megírni a beadandókat.[/spoiler]

hát ez szíven ütött....
[spoiler]annyira igaz az ezévi dolgaimra ebből a tárgyból :angyali:[/spoiler]

Puru²

Ez melyik suli ?Illetve hányad éves vagy ?

chilip

1. ELTE
2. már nem merem bevallani :D

tavaly mentem át programtervező matematikusról programtervező informatikusra, ami lényegében ugyanaz mégis más.... csomó tárgyat összevontak, szétszedtek stb így pl tavaly őszi szemeszteremben 2 tárgy volt összesen :P mert a többit elvégeztem már. kicsit megártott a semmittevés :( most szívom a levét a dolognak  :ejj:

Darkstar

小野寺梓のラブリーすきぴちゃん

Puru²

#336
Részvétem , összes haver aki oda ment félév után otthagyta és átjött hozzánk a BMF-re .  :ejnye:  ^^"

Darkstar

Kérdés:
matlabban akarom lemodellezni azt, hogy ha egy labdát felülről beejtünk egy rendszerbe, ahol mindíg jobbra vagy balra mehet (jelen esetben 11* kell "döntenie"), akkor elég sok labda esetén az elhelyezkedésekből normál eloszlást kapunk. Nekem valamiért erősen egyenletes eloszlást ad ki...
A kód (tudom, tudom)
matrix=zeros(2048,1);
n=30;
for i=1:n
    a=1; b=2048;
    for j=1:11
       p=floor(rand()*2);
       if p==0
           b=b-((b-a+1)/2);
       else
           a=a+((b-a+1)/2);
       end
    end
   matrix(a)=matrix(a)+1;
end
plot(matrix);
小野寺梓のラブリーすきぴちゃん

kikuchiyo

Azért kapsz egyenletes eloszlást, mert az az eset, amit a kódod modellez, nem az, amit szeretnél.
Amit te csinálsz, az a következő: van d=11 döntés, amik együtt 2d=2048-féle végállapotot eredményeznek. Te pedig minden lehetséges végállapotot külön számolsz! Így persze, hogy egyenletes eloszlást kapsz.

Akkor kapsz normális eloszlást, ha minden döntésnél "összeejted a lehetőségeket", azaz összesen d+1=12 végállapotot számolsz csak.

.
|\
.  .
|\ |\
.  .  .
|\ |\ |\
.  .  .  .

Sz'al érted.

d=11;
matrix=zeros(d+1,1);
n=3000;
for i=1:n
    a=1;
    for j=1:d
       p=floor(rand()*2);
       a=a+p;
    end
   matrix(a)=matrix(a)+1;
end
plot(matrix);

Failure is the default option

Darkstar

#339
Ebben az a vicces, hogy először hasonlóan csináltam, ki is jött a normál eloszlás, de aztán megnéztem egy gifet, ahol ugyanez volt modellezve, csak középről ejtették a labdákat és mintha több lett volna a végállapot, ezért írtam át, ezek szerint hülyeségre. :D
Köszi!  :merci:
小野寺梓のラブリーすきぴちゃん

chilip

srácok, írtam javascriptben egy szimpla táblás játékot még 1-1,5 hónapja
ha valaki ért hozzá és nagyon sok a szabadideje, meg tudná mondani miért hülyül meg néha (a nagyobb tábláknál) a lépésellenőrzés? (léphet-e még, győzhet-e még) http://people.inf.elte.hu/chilip/pegged/

+-t kaptam rá, meg 5öst a tárgyra, de ez bassza a csőröm :D hogy nem jövök rá

Kvikveg

Quote from: chilip on 2010-12-28, 01:19:34
srácok, írtam javascriptben egy szimpla táblás játékot még 1-1,5 hónapja
ha valaki ért hozzá és nagyon sok a szabadideje, meg tudná mondani miért hülyül meg néha (a nagyobb tábláknál) a lépésellenőrzés? (léphet-e még, győzhet-e még) http://people.inf.elte.hu/chilip/pegged/

+-t kaptam rá, meg 5öst a tárgyra, de ez bassza a csőröm :D hogy nem jövök rá
Es a bongeszo back gombja csodas gyozelemhez segit! :D
WARNING: module "coffee.exe" did not run correctly. Brain running in limited mode.
Do not meddle in the affairs of dragons for you are crunchy and taste good with ketchup.

Próféta

Quote from: chilip on 2010-12-28, 01:19:34
srácok, írtam javascriptben egy szimpla táblás játékot még 1-1,5 hónapja
ha valaki ért hozzá és nagyon sok a szabadideje, meg tudná mondani miért hülyül meg néha (a nagyobb tábláknál) a lépésellenőrzés? (léphet-e még, győzhet-e még) http://people.inf.elte.hu/chilip/pegged/

+-t kaptam rá, meg 5öst a tárgyra, de ez bassza a csőröm :D hogy nem jövök rá
0. Menjen inkább a kódertopikba, ne?
1. Hogy kell irányítani? ??? Na várj, megnézem a forráskódjában :D
2. Kihagytad az átlós lépést, a szabályok általában azt is megengedik.
3. Folyton globális változókat piszkálsz (lephet_e, kor1, stb.) --> csúnya + hibalehetőség
4. Erősen bele van drótozva a 7x7 táblaméret; már csak a gondolkodásmódod fejlesztése érdekében is célszerű lenne úgy átírni, hogy tetszőleges N*M-es táblán működjön... A koord() függvénynél például melegen ajánlom a maradékos osztás nevű varázslatot ;) Vagy legalább használnád ki azt, hogy a tömbbe valamiért belekódoltad a két koordinátát (tök értelmetlenül amúgy).
5. Azzal ugye tisztában vagy, hogy az alábbi feltétel minden (e,f) párra teljesül? Egyáltalán mit akart volna jelenteni?
((e != -1 && f != -1) || (e != -1 && f != 1) || (e != 1 && f != -1) || (e != 1 && f != 1) || (e != 0 && f != 0))
6. Ha e és f értéke  -1 és +1 között mozog, akkor miért kor1 - 1 ill. kor2 - 1 -hez adod őket hozzá?
7. Jó tanács, saját tapasztalatból: ha ennyi a copy paste kód egymás alatt, akkor sejtheted, hogy valamit elrontottál, vagy legkésőbb a copy paste során el fogsz rontani :) Tipikusan valamit nem gondoltál jól végig. Írj rá rövidebb kódot! Abban a hibát is hamarabb észreveszed, meg arra kényszerít, hogy jobban átgondold az egészet.

chilip

#343
Quote from: Próféta on 2010-12-28, 02:09:40

5. Azzal ugye tisztában vagy, hogy az alábbi feltétel minden (e,f) párra teljesül? Egyáltalán mit akart volna jelenteni?
((e != -1 && f != -1) || (e != -1 && f != 1) || (e != 1 && f != -1) || (e != 1 && f != 1) || (e != 0 && f != 0))


jézus :D ezt észre se vettem :D ugh, na majd holnap ránézek erre, de ez csak most esik le :O lehet hogy nem használt függvény egyébként :) amúgy átlós lépés direkt nem volt megengedve, és első "komolyabb" javascript programom :) szóval büszke vagyok quasimodo szörnyszülött fiamra :D nagyon

ed.: ja nem is!!! nem mindenre!!! most esett le, minden olyan e,f párra ahol az egyik 0 a másik meg nem az... vagy az akart lenni :D asszem lassan elsajátítom az "ösztönből programozás" csúnya képességét :D

Kvikveg

Quote from: chilip on 2010-12-28, 03:26:23
Quote from: Próféta on 2010-12-28, 02:09:40

5. Azzal ugye tisztában vagy, hogy az alábbi feltétel minden (e,f) párra teljesül? Egyáltalán mit akart volna jelenteni?
((e != -1 && f != -1) || (e != -1 && f != 1) || (e != 1 && f != -1) || (e != 1 && f != 1) || (e != 0 && f != 0))


jézus :D ezt észre se vettem :D ugh, na majd holnap ránézek erre, de ez csak most esik le :O lehet hogy nem használt függvény egyébként :) amúgy átlós lépés direkt nem volt megengedve, és első "komolyabb" javascript programom :) szóval büszke vagyok quasimodo szörnyszülött fiamra :D nagyon

ed.: ja nem is!!! nem mindenre!!! most esett le, minden olyan e,f párra ahol az egyik 0 a másik meg nem az... vagy az akart lenni :D asszem lassan elsajátítom az "ösztönből programozás" csúnya képességét :D
Hoho most mar en is belenezek. :)
Btw akkor miert nem ( e==0 && f!=0 ) || (e!=0 && f==0) ? Vagy mar az anyja se ismerne ra az eredeti otletre, ami otvenszer modosult?
Mondjuk tegnap este en is elkovettem egy szepet:
if ($ize == "" && ( $bigyo=="" || $bigyo== 1) ) {
$ize='emez';
}else {                                            // if ( $ize== "" ) uppsz kimaradt
$ize='amaz';
}

Csodalkoztam is amikor teszteltem - ugye biztos ami biztos - hogy mi a franc.
Gondolkodtam, hogy szebb lenne egymasba agyazni oket, de gyozott a lustasag...
WARNING: module "coffee.exe" did not run correctly. Brain running in limited mode.
Do not meddle in the affairs of dragons for you are crunchy and taste good with ketchup.

Próféta

Quote from: chilip on 2010-12-28, 03:26:23
ed.: ja nem is!!! nem mindenre!!! most esett le, minden olyan e,f párra ahol az egyik 0 a másik meg nem az... vagy az akart lenni :D
e=0, f=1 az első term kapásból true, szóval ez tényleg legfeljebb a szándék lehetett.

Két hasznos fogalom:
http://hu.wikipedia.org/wiki/Diszjunkt%C3%ADv_norm%C3%A1lforma
http://hu.wikipedia.org/wiki/Konjunkt%C3%ADv_norm%C3%A1lforma

Kvikveg

Quote from: Próféta on 2010-12-28, 11:55:07
Quote from: chilip on 2010-12-28, 03:26:23
ed.: ja nem is!!! nem mindenre!!! most esett le, minden olyan e,f párra ahol az egyik 0 a másik meg nem az... vagy az akart lenni :D
e=0, f=1 az első term kapásból true, szóval ez tényleg legfeljebb a szándék lehetett.

Két hasznos fogalom:
http://hu.wikipedia.org/wiki/Diszjunkt%C3%ADv_norm%C3%A1lforma
http://hu.wikipedia.org/wiki/Konjunkt%C3%ADv_norm%C3%A1lforma
"a művelet változóinak vagy negáltjainak konjunkcióinak diszjunkciója"
Ne kinozz! Najo a peldaval mar ertheto. De regen volt logika oram... ::)
WARNING: module "coffee.exe" did not run correctly. Brain running in limited mode.
Do not meddle in the affairs of dragons for you are crunchy and taste good with ketchup.

kikuchiyo

Szórakoztató haszontalanságok, avagy milyen hülyeségekre lehet használni az ember által alkotott legbonyolultabb gépezeteket:

[spoiler]
Az alábbi igen primitív program egy kört mozgat a képernyőn a gép helyzetének megfelelően, gyorsulásmérővel felszerelt laptopon. A gyakorlatban ez linuxot futtató Thinkpadet jelent, amin a hdaps telepítve van és működik is. A tablettel igazán poén, mert azt kézbe lehet venni, és a golyó arra mozog, amerre döntöd a gépet.

Work in progress, primitív, bugos, és ami a legrosszabb, perl+Gtk2+Goo::Canvas kell hozzá.
Valami hasonlót szeretnék majd belőle, mint a Resco Bubbles WinMo-ra.

#!/usr/bin/perl

use strict;
use warnings;
use Goo::Canvas;
use Gtk2 '-init';
use Glib qw(TRUE FALSE);

my $screenx = 1200;
my $screeny = 700;
my $r = 50;
my $poll_interval = 40;
my $alpha0 = 502.84;
my $beta0 = -504.38;
my $avg_alpha;
my $avg_beta;
my $n = 0;
my $swapx = 0;
my $swapy = 1;
my $scalex = 0.0002;
my $scaley = 0.0002;
my $bounce = 0.5;
my $devfn = '/sys/devices/platform/hdaps/position';
my $x0 = $screenx / 2;
my $y0 = $screeny / 2;

my ($x, $y) = ($x0, $y0);
my ($vx, $vy) = (0, 0);

my $window = Gtk2::Window->new('toplevel');
$window->signal_connect('delete_event' => sub { Gtk2->main_quit; });
$window->set_default_size($screenx, $screeny);

my $swin = Gtk2::ScrolledWindow->new;
$swin->set_shadow_type('in');
$window->add($swin);

my $canvas = Goo::Canvas->new();
$canvas->set_size_request($screenx, $screeny);
$canvas->set_bounds(0, 0, $screenx, $screeny);
$swin->add($canvas);

my $root = $canvas->get_root_item();
my $ball = Goo::Canvas::Ellipse->new(
    $root, $x0, $y0, $r, $r,
    'stroke-color' => 'red',
    'fill-color' => 'red'
);

my $text = Goo::Canvas::Text->new(
    $root, "hhh", $x0, 100, -1, 'center',
    'font' => 'Sans 14',
);

my $timer = Glib::Timeout->add ($poll_interval, \&timeout_handler);

sub timeout_handler {
open(my $DEV, "<", $devfn) || die "can't read hdaps position device!";
my $strpos;
read $DEV, $strpos, 12;
close $DEV;
my ($alpha, $beta);
die "no sensible information from hdaps position device!"
unless (($alpha, $beta) = ($strpos =~ /\((-?\d+),(-?\d+)\)/));
my $da = $alpha - $alpha0;
my $db = $beta - $beta0;

$avg_alpha = ($alpha + $avg_alpha*$n) / ($n+1);
$avg_beta = ($beta + $avg_beta*$n) / ($n+1);
$n++;

my ($dx, $dy);
$vx -= $da;
$vy -= $db;
$dx = $vx * $poll_interval * ($swapx ? -1 : 1) * $scalex;
$dy = $vy * $poll_interval * ($swapy ? -1 : 1) * $scaley;
$x = $x0 + $dx;
$y = $y0 + $dy;
if ($x > $screenx - $r) {
$x = $screenx - $r;
$x0 = $x;
$vx *= -$bounce;
}
if ($y > $screeny - $r) {
$y = $screeny - $r;
$y0 = $y;
$vy *= -$bounce;
}
if ($x < $r) {
$x = $r;
$x0 = $x;
$vx *= -$bounce;
}
if ($y < $r) {
$y = $r;
$y0 = $y;
$vy *= -$bounce;
}
#$ball->translate($dx, $dy);
$ball->set('center-x' => int($x));
$ball->set('center-y' => int($y));
$text->set('text' => sprintf(
"x=%.2f,y=%.2f,x0=%.2f,y0=%.2f,da=%.2f,db=%.2f,vx=%.2f,vy=%.2f,avg_a=%.2f,avg_b=%.2f",
$x,$x,$x0,$y0,$da,$db,$vx,$vy,$avg_alpha,$avg_beta));
$x0 = $x;
$y0 = $y;
return 1;
}


$window->show_all();
Gtk2->main;


[/spoiler]
Failure is the default option

Próféta

Hehe :)
Ebben az a jó, hogy látszik hogy élvezetből csinálod.

[spoiler]Fejben lefuttatva a statikus def-use kódanalízist úgy tűnik, hogy a
   if ($x > $screenx - $r) {
jellegű elágazásokban az $x0 ill. $y0 beállításának nincs semmi szerepe azon kívül, hogy $poll_interval idővel hamarabb villan fel a $text mezőben... jól látom?  [/spoiler]

kikuchiyo

#349
[spoiler]Nincs szerepe, azon kívül, hogy egy előző, hibás számítási módot probáltam debuggolni vele.[/spoiler]

Egyébként csak próbálgatom, hogy mit tud az új játékszerem. Azt is meg lehetne csinálni, hogy a helyzetérzékelő adatai alapján elforgassa a desktopot, ha kell.
Failure is the default option

Darkstar

#350
Quotegyorsulásmérővel felszerelt laptop

Érdekes, ilyenről még nem nagyon hallottam. Minek laptopba gyorsulásmérő? Telefonba/ipad és hasonló tabletbe oké, de laptopba? (Nem piszkálódás, tényleg érdekel)
小野寺梓のラブリーすきぴちゃん

Próféta

Quote from: Darkstar on 2011-02-12, 02:30:16
Érdekes, ilyenről még nem nagyon hallottam. Minek laptopba gyorsulásmérő? Telefonba/ipad és hasonló tabletbe oké, de laptopba? (Nem piszkálódás, tényleg érdekel)
Valamiféle szokott lenni az összesben, nem? Pl. hogy leállítsa a vinyókat, ha nagyon mozgolódsz.
De kikuchiyonak ráadásul tabletje van (mármint rendes tablet PC, nem ilyen iPad/Tab izé), ha jól rémlik.

Darkstar

#352
Az mondjuk tényleg jogos lenne, csak eddig nem tudtam róla, hogy mindegyikben van.

Azért mondtam az iPad/Tab féle tableteket, mert azt az ember könnyebben "marokra" fogja és szórakozik a gyroval/gyorsulásmérővel, míg a tablet pc kicsit "kötöttebb" szerintem.
小野寺梓のラブリーすきぴちゃん

kikuchiyo

Erős túlzás, hogy mindegyikben van gyorsulásmérő: tudtommal csak a Thinkpadekben és Macbookokban van, meg talán még egy harmadik gyártó csúcskategóriás gépeiben.

A célját már kitaláltátok: hirtelen mozgásoknál parkoltatja az olvasófejet, hogy ne sérüljön az adathordozó felülete. A Lenovo úgy is hívja a technológiát, hogy Active Protection System.

De mivel a gyorsulásmérő adatai közvetlenül is kinyerhetőek, elvetemült emberek mindenféle vicces dolgokat találtak ki a hasznosításukra:

Lépésszámláló és wirelesshálózattérkép-készítő
Vezérlés kopogtatással

A linuxos driver szabványos joystickként is regisztrálja a gyorsulásmérőt, így lehet pl. a Neverball c. játékot vezérelni vele. De akár az mplayert is meg lehet tanítani, hogy a gép döntögetésére gyorsítsa vagy visszatekerje a filmet.

Illetve a legkézenfekvőbb játék az, amit én is elkezdtem csinálni: egy egyszerű golyó mozgatása a gép helyzetének megfelelően. Windows Mobile-ra a Resco Bubbles ilyen, csak az persze profibban meg van csinálva. Még azt is tudja, hogy ha a "golyó" a "falnak" ütődik, akkor egy kicsit megrezegteti a telefont. Igen addiktív játék, eddig mindenki odavolt érte.
Failure is the default option

Próféta

Quote from: kikuchiyo on 2011-02-12, 12:20:11
Erős túlzás, hogy mindegyikben van gyorsulásmérő: tudtommal csak a Thinkpadekben és Macbookokban van, meg talán még egy harmadik gyártó csúcskategóriás gépeiben.
Mások szerint "many laptop vendors have implemented this technology", és ebből a listából hiányzik is pl. a FuSi. Valamint ha az én Lifebook E8410-em csúcskategóriának számít, akkor el se merem képzelni, egy középkategóriás laptop milyen minőségű lehet. :eek:

kikuchiyo

#355
 :eek: :mittomen: Akkor meg én tudtam rosszul, vagy csak régi forrásokat olvastam.

De úgy látszik, hogy a Thinkpad- és a Macbook-használókon kívül nem sokan tudnak erről, vagy legalábbis nem alakult ki más gyártók hasonló featúrája körül összevethető mértékű szoftveres ekoszisztéma.


Failure is the default option

kikuchiyo

(duplapost, mert megérdemlem)

Nagyon amatőr és buta kérdés:
Hogy lehet egy összetett adatstruktúrát (SQL-lel masszírozható) adatbázisban reprezentálni?

Pl. egy ilyet:

[spoiler]
$osszetett_struktura = {
    alma => {
    típus => "gyümölcs",
    állapot => "fostos",
    beleharaptam => [
    1234567890,
    1234567900
    ],
    },
    körte => {
    típus => "gyümölcs",
    állapot => "szottyos",
    beleharaptam => [
    1234567390,
    1234567888
    ],
    },
    ló => {
    típus => "állat",
    állapot => "döglött",
    ismertetőjegyek => {
    eredet => "ajándék",
    fog => "ne nézd"
    }
    }
}


Nyilván primitív a példa, de azt illusztrálja, hogy nem csak kulcs-érték párok vannak, hanem az értékek maguk is összetett adatstruktúrák.
[/spoiler]
Failure is the default option

Próféta

1a. Ha SQL-ről van szó (vagyis relációs adatbázisról), akkor ORM kell neked (már ha hajlandó vagy kicsit megmasszírozni az az adatstruktúrát, hogy ojjektumorientált legyen). A jobbféle rendszerek szinte teljesen transzparensek (objektumok be -> DB ír, DB olvas -> objektumok előállnak, objektumokat módosít -> DB update). Minden valamirevaló programozási platformhoz van egy halom ORM perzisztencia réteg, válaszd ki a neked legalkalmasabbat.

1b. Legrosszabb esetben "kézzel" leképzed adatbázistáblába az adatstruktúrádat, majd lekódolod szépen a CRUD eljárásokat hozzá. Lesz mondjuk cucc(cuccnév, típus, állapot) táblád, meg külön egy beleharapási_idő(cuccnév, int) és ismeretőjegye(cuccnév, jegy, érték) tábla, az értelemszerű elsődleges ill. idegen kulcs kényszerfeltételekkel.

1c. Vannak XML felületet adó adatbázisok is, ha OO felépítésbe luxus lenne átgyúrni.

2. Vannak ám nemrelációs adatbázisok is, bár az eredeti követelményed ezt kizárta.

kikuchiyo

 :borul:

Quote from: Próféta on 2011-03-24, 22:58:15
1a. Ha SQL-ről van szó (vagyis relációs adatbázisról), akkor ORM kell neked (már ha hajlandó vagy kicsit megmasszírozni az az adatstruktúrát, hogy ojjektumorientált legyen). A jobbféle rendszerek szinte teljesen transzparensek (objektumok be -> DB ír, DB olvas -> objektumok előállnak, objektumokat módosít -> DB update). Minden valamirevaló programozási platformhoz van egy halom ORM perzisztencia réteg, válaszd ki a neked legalkalmasabbat.

Kösz, ezt a kulcsszót nem ismertem. Még körülnézek, hogy melyik lenne a legcélszerűbb.

Quote from: Próféta on 2011-03-24, 22:58:151b. Legrosszabb esetben "kézzel" leképzed adatbázistáblába az adatstruktúrádat, majd lekódolod szépen a CRUD eljárásokat hozzá. Lesz mondjuk cucc(cuccnév, típus, állapot) táblád, meg külön egy beleharapási_idő(cuccnév, int) és ismeretőjegye(cuccnév, jegy, érték) tábla, az értelemszerű elsődleges ill. idegen kulcs kényszerfeltételekkel.

Ez a része nem volt nekem világos. A valódi adatstruktúrában 4-5 emelet mélyen vannak beágyazott struktúrák, és nem tudtam elképzelni, hogy ezt hogyan reprezentálom át 2 dimenziós adatbázis-táblákban.

Quote from: Próféta on 2011-03-24, 22:58:151c. Vannak XML felületet adó adatbázisok is, ha OO felépítésbe luxus lenne átgyúrni.

Ez miben jobb, mintha simán szerializálnám a struktúrát, mint ahogy most teszem? Ez még ráadásul human readable is, ellentétben az XML-lel. Vagy most faszságot kérdeztem?
Failure is the default option

Próféta

Quote from: kikuchiyo on 2011-03-24, 23:38:01
Ez a része nem volt nekem világos. A valódi adatstruktúrában 4-5 emelet mélyen vannak beágyazott struktúrák, és nem tudtam elképzelni, hogy ezt hogyan reprezentálom át 2 dimenziós adatbázis-táblákban.
Ha mindenképpen kézzel akarod csinálni és nagyon bonyolult, akkor először esetleg készíts (legalább fejben) E-R modellt. Az még viszonylag közel áll az emberi gondolkodáshoz, és utána jól algoritmizálhatón képezhető le relációs sémákká.

"reprezentálom át" -->
Quote from: kikuchiyo on 2006-09-25, 23:25:24
Szerk: ezennel bejelentem az igényemet a "Szép magyar nyelvért" érdeméremre
Ismételt jelölés!

Quote from: kikuchiyo on 2011-03-24, 23:38:01
Quote from: Próféta on 2011-03-24, 22:58:151c. Vannak XML felületet adó adatbázisok is, ha OO felépítésbe luxus lenne átgyúrni.

Ez miben jobb, mintha simán szerializálnám a struktúrát, mint ahogy most teszem? Ez még ráadásul human readable is, ellentétben az XML-lel. Vagy most faszságot kérdeztem?
Nem kérdeztél faszságot. Akkor van igazán értelme hierarchikus adatbázisba rakni, ha utána olyan jellegű lekérdezéseket akarsz végrehajtani rajta (mondjuk XPath nyelven), hogy kéred azokat a hierarchiában akárhol található, "dohos" állapotú csomópontokat, amelyeknek a "láda" típusú közvetlen gyerekcsomópontjai közül a második tartalmaz legalább egy piros labdát valahol a részfájában.