Értelmetlen programok
2012-01-03T00:21:52+01:00
2012-01-03T17:36:32+01:00
2022-07-24T07:26:21+02:00
  • Slash script language under AS2 for CCG

    Röviden annyit, hogy régen készítettem egy gyűjtögetős kártyajátékot ( nem számítógépes, rendesen papírra ) a Chio-nak, a Master Crok termékhez, akkor még főleg mint grafikus futottam, de a játékrendszert is én dolgoztam ki a történethez.
    Már akkor is ( 2001 ) szerettem volna megvalósítani, számítógépen is, de az első körben gyorsan visszapattantam, mert még nem volt meg hozzá a megfelelő tudásom.
    Később viszont eljött az alkalom ( 2008 ), hogy a játékrendszert egy másik brandre ( Narnia Prince Caspian ) átültetve immár egy program formájában valósítsam meg. Egyetlen megkötés volt, hogy AS2-ben kellett megoldani a programot, pedig akkor már inkább AS3-ban kódoltam volna, de a keretrendszer megkötötte a kezem.

    Így született meg a Slash fantázia nevű scriptnyelv AS2 alatt, amivel kezelni lehetett lapok képességét, mivel a 135 különböző lap saját képességgel rendelkezett, tulajdonképpen mindegyikhez tartozott egy-egy kis script.

    Értelmetlen, mert:
    - A program elkészülése után nem sokkal a brandet dobta a cég, így sohase került nyilvánosságra.
    - Már a megjelenésekor is idejétmúlt technika volt az AS2 (igaz, hogy azzal is nagyrészt mindent meg lehet csinálni amit AS3-al)
    - Lassan a flash is kihal ( bár böngészőben futó játék készítésre még mindig a legjobb program )

    A következő értelmetlen program pedig az erősen fejlesztés alatt álló programnyelv tervezetem ( valószínűleg sohasem fog megvalósulni ), amit jó szokás szerint megint csak Slash-nak nevezek.
    Mutasd a teljes hozzászólást!
  • Ha nem kótyavetyélődik el az ep128-unk, akkor mostanában retróból én is elővenném
    Egyébként erről az Amiga-E nyelv jut eszembe, na az egy igazi csoda

    Ez saját??
    Mutasd a teljes hozzászólást!
  • Prince Of Persian Commodore 64-re, 2011-ben Nem túl hasznos, viszont nagyon-nagyon cool
    Mutasd a teljes hozzászólást!
  • Azért ne vedd ennyire komolyan azt ott, nem azért írtam oda, hogy ezen ugrabugráljunk, hanem könnyed felvezetésnek egy könnyed topikhoz
    Mutasd a teljes hozzászólást!
  • "Az olyan dolgokon amit meg érdemes csinálni már dolgoznak, vagy már készen is van."

    Nem bántásból mondom, de ez eszetlen nagy marhaság. Kb. megfelel annak, hogy ami kitalálható az már ki van találva.

    Példa: ősember - kőbalta
    Egy ősember egy nap rájön, hogyha a marokkövét rárakja a bunkósbotjára, akkor jobban tud fát vágni. Körülnéz a törzsben/környéken, de mindenki a marokkövekkel vágja a fát. Senkinek még csak eszébe sem jutott a bunkósbotját elrontani egy kővel. Ha ősemberünk gondolkodásmódja megegyezik az ismerősödével, akkor fogja és szétszereli a kőbaltát, hiszen nyilvánvalóan azért nem használ senki kőbaltát, vagy dolgozik rajta mert nem érdemes...

    Szerencsére az emberek egy meghatározó csoportja nem így gondolkodik. Az ő nevükhöz fűződnek a felfedezések, találmányok, újítások és fejlesztések. No meg persze baklövések és anyagi javak eredménytelen pazarlása, de ez is benne van a pakliban.


    Mutasd a teljes hozzászólást!
  • Ide kívánkozik az én C++ template meta sql akármim

    Először létrehozunk táblákat, amikben típusok vannak
    #define DEF_COLUMN(name) struct Col##name {}; \ template<typename T> struct name \ { typedef typename mpl::pair<Col##name, T> type; }; struct TestTable1 { DEF_COLUMN(PrimaryKey) DEF_COLUMN(Storage) DEF_COLUMN(BaseType) typedef mpl::vector<ColPrimaryKey, ColStorage, ColBaseType> header; // sample table // PrimaryKey | Storage | BaseType // -----------+---------+----------- // CTypeA1 | int | CTypeABase // CTypeA2 | string | CTypeABase typedef mpl::vector< mpl::map3<PrimaryKey<CTypeA1>::type, Storage<int>::type, BaseType<CTypeABase>::type>, mpl::map3<PrimaryKey<CTypeA2>::type, Storage<std::string>::type, BaseType<CTypeABase>::type> > type; }; struct TestTable2 { DEF_COLUMN(Tag) DEF_COLUMN(Attribute) typedef mpl::vector< mpl::map2<Tag<CTypeA1>::type, Attribute<CTypeB1>::type>, mpl::map2<Tag<CTypeA2>::type, Attribute<CTypeB1>::type>, mpl::map2<Tag<CTypeA2>::type, Attribute<CTypeB2>::type> > type; };

    majd lekérdezéseket csinálunk rá


    void TestQuery1() { typedef Select< Columns<MplFunction<Column<TestTable1::ColStorage>, mpl::sizeof_> >, From<TestTable1, Join<TestTable2, Equal<TestTable1::ColPrimaryKey, TestTable2::ColTag> > > > TResultSet; DEBUG_TYPE((TResultSet)); print_table<TResultSet::type>(); }

    ez szépen ki is írja, hogy

    TResultSet => Select<Columns<MplFunction<Column<TestTable1::ColStorage>, boost::mpl::sizeof_>, mpl_::na>, From<TestTable1, Join<TestTable2, Equal<TestTable1::ColPrimaryKey, TestTable2::ColTag> > >, Where<True> > +------------------------+ | TestTable1::ColStorage | +------------------------+ | mpl_::size_t<8ul> | | mpl_::size_t<8ul> | | mpl_::size_t<4ul> | +------------------------+ 3 rows in set

    Szóval ez az izé ilyen kifacsart SQL szintaktikával típusokat kérdez le, meg hoz létre akár több táblából is.


    void TestQuery3() { typedef Select< Columns<Column<TestTable1::ColStorage> >, From<TestTable1>, Where< Equal<TestTable1::ColPrimaryKey, CTypeA1> > > TResultSet; DEBUG_TYPE((TResultSet)); print_table<TResultSet::type>(); // fetch one row typedef mpl::back<TResultSet::type>::type TResultRow; // get column ColStorage which is an int, TRes will be an int typedef mpl::at<TResultRow, TestTable1::ColStorage>::type TRes; // use the "int" type TRes testInteger = 9; // prints test value std::cout << "testInteger:" << testInteger << std::endl; }

    a fenti pl. ezt csinálja:


    TResultSet => Select<Columns<Column<TestTable1::ColStorage>, mpl_::na>, From<TestTable1, mpl_::na>, Where<Equal<TestTable1::ColPrimaryKey, CTypeA1> > > +------------------------+ | TestTable1::ColStorage | +------------------------+ | int | +------------------------+ 1 row in set testInteger:9
    Mutasd a teljes hozzászólást!
  • Program: DosWav SS Turbo pascal modul
    ^^Azt hiszem, ez bár akkor elég hasznosnak is tűnt, de gyakorlatilag bekerülhet ide, mert a felhasznált technológia megszámlálta a napjait nagyon... Igazából nekem akkoriban mániám volt, hogy az NTVDM "valós" módjából ki tudjak törni és mindenféle dolgokat hívogatni és végül rá is jöttem hogyan kell (mindenféle külső DLL nélkül), útközben pedig kifejlődött ez a csoda. Már szinte teljesen el is felejtettem, hogy létezik, nem is beszélve a tényleg sokkal értelmetlenebb grail.asm-ről, ami .com-ra fordult és kirakott egy messageboxot
    Mindenesetre win vista, sőt 64 bites xp óta már egyik se használható és emulálni se nagyon lehet, mert nem dos program, nem windows program, hanem nagyon is konkrétan csakis az "igazi és vérbeli" NTVDM-en hajlandóak futni

    ui.: Kisj is csinált egyszer valami vízkitöltő robotkart ideiglenesen és videó is volt róla, na az ilyen dolgok is beleférnek, ha pedig valaki megcsinálta a semmittevő dobozt, nyugodtan mondja azt is
    Mutasd a teljes hozzászólást!
  • igaz arról volt szó hogy mindenki maga mit csinált, de majd valaki biztos belinkeli azt a ládikát amin egy kapcsoló bekapcsolása után a ládikából kinyúl egy kar és visszakapcsolja eredeti állásba a kapcsolót. na de oda se neki.
    mondjuk ilyen topic szerinti értelmetlen kategóriába sorolom azt is amikor bambulok az értelmetlen rajzfilmek előtt. igazából olyankor van ha álmos nem vagyok, de pihennem kell :) de ezen kívül nincs más értelme.
    akkor egy másik még tini koromból való. akkoriban kedvenc játékom az amőba (ötödölő, gomoku) volt, és ezt programoztam le párszor. annyiban nem volt értelmetlen hogy tanultam vele, meg büszkélkedtem, de biztos hogy megirta már akkor is sokszor és jobban. csak nem annyira volt internet - 90-es évek eleje
    még korábban volt olyan hogy begépeltem a programom, lefuttattam (talán qbasic volt, de fene tudja) és elfelejtettem elmenteni. na ezt eljátszottam vagy 3 alkalommal. egy életre megtanultam hogy a mentés billentyűkombóját elsőként kell megnézni - és használni :)
    ilyenek voltak - de amint látszik, mindből lehetett tanulni :)

    a madmin egy java alapú moduláris adminfelület webalkalmazások háttéradatainak adminisztrálására. innen a neve is: moduláris admin. igazi lényege annyi hogy újrainditás nélkül lehet például verziófrissitést művelni az egyes moduljain. már van egy a vállalatunknál, csak más koncepció. aztán gondoltam - illetve egy kollégával gondoltuk hogy csinálunk egy jobbat. előbbit sokan fejlesztették, utóbbit csak ketten :) szóval sok esélyét nem látom hogy használatba kerül valaha is. viszont sok sok újdonságot tanultam, például a classloaderekkel kapcsolatban :)
    Mutasd a teljes hozzászólást!
  • Egyébként mi lesz/lenne ez a madmin? Próbáltam rákeresni is, de túl sok a találat, ahhoz, hogy ráhibázzak
    Mutasd a teljes hozzászólást!
  • No úgy illik, hogy el is kezdjem:

    Program: Struktúrált programozás Clean-ben:

    module structured import StdEnv // ------------------------------------------------------------------------- // // Few lines of functional stuff in Clean to "enable" structural programming // // ------------------------------------------------------------------------- // // Helper types, for expressions :: Letexp :== A -> A :: Logexp :== A -> Bool // Basic "syntax" tree :: S = E | SKIP | LET Letexp | DO [S] | IF Logexp S S | WHILE Logexp S // The program is a record :: Program = { s :: S // Remaining statements , a :: A // Current State } // This helper function chooses among S's according to the boolean Choose :: Bool S S -> S Choose False s1 s2 = s2 Choose True s1 s2 = s1 // Run implements the semantics of structural programming Run :: Program -> Program Run {s = E, a = a1} = {s = E, a = a1} Run {s = SKIP, a = a1} = {s = E, a = a1} Run {s = LET f, a = a1} = {s = E, a = f a1} Run {s = DO [], a = a1} = {s = E, a = a1} Run {s = DO [x:xs], a = a1} = Run {s = DO xs, a = ( Run({s = x, a = a1}) ).a} Run {s = IF condition s1 s2, a = a1} = Run {s = (Choose (condition a1) s1 s2), a = a1} Run {s = WHILE condition s1, a = a1} = Run {s = (Choose (condition a1) (DO [s1, WHILE condition s1]) E), a = a1} // ---------------------------------------------------------- // // And the old 60's-style structural programming starts here: // // ---------------------------------------------------------- // // Declare "variables" (You start calling me "Barbarian" here, I think ) :: A = { x :: Int, y1 :: Int, y2 :: Int, y3 :: Int } // Give start values to them startstate :: A startstate = {x = 3200, y1 = 0, y2 = 1, y3 = 1} // Declare the statements for our program (to calculate the integer square root of x) statements :: S statements = IF (\state -> state.x >= 0) ( WHILE (\state -> (state.y2 <= state.x)) (DO [ LET \state -> {state & y1 = state.y1 + 1}, LET \state -> {state & y2 = state.y2 + state.y3 + 2}, LET \state -> {state & y3 = state.y3 + 2} ]) ) ( LET \state -> {state & y1 = -1} ) // Declare the program(statements + input data) isqrt :: Program isqrt = { s = statements, a = startstate } // Run the program Start = (Run(isqrt)).a.y1 // Run(isqrt) prints all the variables // but we only need the value of y1 now!

    ui.: Váá, már meg is előztek természetesen nagyobb dolgot is lehet írni, ahogy sarkiroka tette
    Mutasd a teljes hozzászólást!
  • madmin - gyanítom sosem lesz használva, mégis csinálom. igaz annyira nem értelmetlen - tanulok vele.

    jó a topic
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Van egy ismerősöm, akinek két fontos törvénye van. Szoktuk is őket barátok között idézni:
    1.) Az olyan dolgokon amit meg érdemes csinálni már dolgoznak, vagy már készen is van.
    2.) A mai világban az olyan dolgokra is igaz az első pont második része, amiken egyáltalán nem érdemes dolgozni és nem érdemes megcsinálni.
    - Ez a topik reményeim szerint az utóbbiakról szól.

    Tehát mezeibben fogalmazva, gyűjtsünk ide minden olyan programot, ami értelmetlen, ami lényegtelen, ami befektetett erőforrásokba került, de csak játék, vagy ami csak "menőzésből" esetleg "csak azért is" jellegű megfontolásokból lett kreálva, vagyis minden olyan program, ami önmagáért létezik csupán.

    A felhasznált fejlesztőeszköz, nyelv, architektúra nincs kikötve (sőt akár lehet programon kívül más is, de ne offoljuk szét teljesen), a lényeg hogy vicces legyen, vagy trükkös, esetleg meglepő, esetleg a fentiek közül egyik sem

    No, remélem nagyon sok érdekes kód gyűlik össze itt.
    Gyerünk!

    ui.: A fenti törvény második pontját azt hiszem az ismerős akkor fogalmazta meg, amikor eszébe jutott mekkora "poén" lenne postscript-ben raytracert írni, aztán rájött, hogy már olyan is van
    Mutasd a teljes hozzászólást!
abcd