--- Záznam otevřen Tue Jul 15 17:46:47 2003 17:46 < gott> čau. 17:46 <@nop> jen upozornění k mému mlčení 17:46 <@hezekiah> Tue Jul 15 21:46:49 UTC 2003 17:47 <@hezekiah> OK. Schůzka iip-dev začala. 17:47 <@hezekiah> Je to 48. nebo 49.? 17:47 < jrand0m> nop> proto je zásadní, abychom co nejdřív vytesali architekturu routeru. Chápu, že různí lidé mají různou rychlost, a musíme to rozdělit, aby různé komponenty mohly postupovat podle toho. 17:47 < mihi> 49. 17:47 <@hezekiah> OK! Vítejte na 49. schůzce iip-dev! 17:47 < jrand0m> mám ještě tři dny v práci, po nichž 90+ hodin týdně věnuju tomu, aby se to rozjelo 17:48 < jrand0m> vím, a nečekám, že to všichni budou moci udělat, proto to musíme rozdělit 17:48 < jrand0m> ahoj hezekiah :) 17:48 <@hezekiah> lol 17:48 <@nop> na to navážu 17:48 <@hezekiah> Počkám minutu. Pak můžeme dát agendu. :) 17:48 <@nop> bezpečnost architektury routeru je závislá i na tom, abyste to nehnali 17:49 <@nop> když to uděláme 17:49 <@nop> něco přehlédneme 17:49 <@nop> což by nás později mohlo nechat uklízet pěkný binec 17:49 -!- Rain [Rain@anon.iip] se odpojil [I Quit] 17:49 < jrand0m> nop> nesouhlasím. pořád můžeme stavět aplikační vrstvu a API bez implementace routeru (nebo dokonce bez toho, abychom věděli, jak bude síť fungovat) 17:49 <@nop> s tím souhlasím 17:50 <@nop> mluvím konkrétně o podkladové síti 17:50 < jrand0m> pokud se shodneme na API, které jsem poslal, tak to je to rozdělení, které potřebujeme 17:50 < jrand0m> ano, implementace routeru a návrh sítě ještě nejsou hotové 17:50 <@nop> ok 17:50 <@nop> s tvým API se zatím určitě můžu ztotožnit 17:51 <@hezekiah> jrand0m: Jeden problém. 17:51 < jrand0m> povídej, hezekiah 17:51 <@hezekiah> V C to bude vypadat jinak. 17:51 < jrand0m> ne zas tak 17:51 < gott> jejda 17:51 < jrand0m> méně velkých písmen a objekty nahradit strukturami 17:51 < gott> v jakých jazycích to lidi zvažují implementovat? 17:51 < jrand0m> (u toho API) 17:51 <@hezekiah> Eh, jrand0m? V C není 'byte[]'. 17:51 < jrand0m> gott> přečti si mailové archivy, jsou tam nějaké příklady odpovědí 17:52 <@hezekiah> Budeš používat void* s integerem, který nejspíš určuje délku. 17:52 < jrand0m> hezekiah> tak pak unsigned int[] 17:52 < gott> jrand0m: konečně náboženská válka, do které nejsem zapojen 17:52 <@hezekiah> Jestli si pamatuju správně (pomoz mi tady, nop), nemůžeš jen tak vracet unsigned int[] z funkce. 17:53 <@hezekiah> gott: oproti čemu? pseudokódu? 17:53 < jrand0m> ano, syntaktické změny. ale pokud jsou opravdové rozdíly, musíme je vyřešit ASAP. (třeba dnes) Možná je teď dobrý čas podívat se na e-mail, který jsem poslal s názvem „high level router architecture and API“, a projít si to? 17:54 <@hezekiah> nop? UserX? Jste pro? 17:54 < jrand0m> ne zas tak odlišné, ale přece jen jiné, ano. proto jsem dnes do mailu napsal Java API :) 17:54 -!- WinBear [WinBear@anon.iip] vstoupil do #iip-dev 17:55 <@nop> počkej 17:55 <@nop> čtu výš 17:55 -!- mihi_2 [~none@anon.iip] vstoupil do #iip-dev 17:55 -!- mihi je nyní znám jako nickthief60234 17:55 -!- mihi_2 je nyní znám jako mihi 17:55 < jrand0m> vítej zpět, mihi 17:55 < gott> mimochodem, loguje se to živě? 17:55 -!- nickthief60234 [~none@anon.iip] se odpojil [EOF From client] 17:55 <@hezekiah> gott: Ano. 17:55 < mihi> redundance vládne ;) 17:55 < gott> Tak si to pak přečtu. 17:55 -!- gott [~gott@anon.iip] opustil #iip-dev [gott] 17:56 <@nop> ok 17:56 <@nop> ano 17:56 < WinBear> jrand0m: ahoj 17:56 <@nop> rozhodně rozdíly 17:56 <@nop> co potřebujeme 17:56 < jrand0m> čau, WinBear 17:56 <@nop> je tým vybraných vývojářů, kteří napíšou hlavní API vrstvy pro tyto jazyky 17:56 <@nop> víme, že jrand0m zvládne javu 17:56 <@nop> a pravděpodobně se může spojit s thecrypto 17:56 <@nop> a hezekiah a spol. mohou dělat C 17:56 <@nop> a jeremiah, pokud bude chtít 17:56 <@nop> může dělat python 17:56 <@hezekiah> Umím i C++! ;-) 17:56 <@nop> ok 17:56 <@nop> i C++ 17:57 <@hezekiah> lol 17:57 <@nop> C++ nejspíš půjde 17:57 <@nop> s C 17:57 <@nop> pokud to nezasypeš šablonami 17:57 < jrand0m> heh 17:57 <@hezekiah> lol 17:57 <@hezekiah> Ve skutečnosti, zatímco MSVC umí linkovat C a C++ objektové soubory, gcc to zrovna nemusí. 17:57 <@nop> tj. držet se struktur kompatibilních s C, nebo to není průchodné? 17:57 < jrand0m> první otázka, ještě předtím: jaké aplikace budou tato API používat? Vím o appech, co budou chtít javu, bude iproxy v C? 17:58 <@hezekiah> nop: Nemyslím, že C a C++ jsou binárně kompatibilní na úrovni objektů. 17:58 <@nop> ok 17:58 <@hezekiah> nop: C++ si s C nebude rozumět o moc víc než Java. 17:58 <@nop> tak možná by C mohl dělat USerX 17:58 <@nop> a ty bys vzal C++ 17:58 <@hezekiah> My ne 17:58 <@nop> ? 17:58 <@hezekiah> C++ ani nemusíme vůbec dělat. Jen ho preferuju. 17:59 <@nop> no, věc je 17:59 <@nop> že je hodně C++ vývojářů 17:59 <@nop> zejména ve světě Microsoftu 17:59 <@hezekiah> I v Linux světě. (viz: KDE a Qt.) 17:59 < jrand0m> C a C++ jsou binárně kompatibilní, když uděláš jen .so nebo .a 17:59 < jrand0m> (mimochodem) 18:00 <@nop> může být C dobrá náhrada za C++, tj. C++ vývojáři zvládnou C API snáz než C++ API s C vývojářem? 18:00 <@hezekiah> jrand0m: Jo. Asi můžeš mít knihovny ... ale pokud můžeš 18:00 <@hezekiah> jrand0m: ani nemůžeš použít třídy, tak to trochu postrádá smysl. 18:00 <@nop> jasně 18:00 <@nop> držme se C 18:01 <@nop> protože C++ kodéři můžou volat C knihovnu docela snadno 18:01 <@hezekiah> Pokud jeden modul potřebuje volat funkce druhého, je lepší, když jsou oba ve stejném jazyce. 18:01 <@hezekiah> nop: C++ kodéři budou C znát dostatečně ... i když to může chvíli trvat, pokud se ho nikdy nenaučili. 18:02 <@hezekiah> Nicméně C kodéři nebudou znát C++, protože C je jen podmnožina C++. 18:02 -!- logger_ [~logger@anon.iip] vstoupil do #iip-dev 18:02 -!- Téma pro #iip-dev: logy budou online po schůzce: http://wiki.invisiblenet.net/?Meetings 18:02 [Uživatelé #iip-dev] 18:02 [@hezekiah] [+Ehud ] [ leenookx] [ moltar] [ tek ] 18:02 [@nop ] [ jeremiah] [ logger_ ] [ Neo ] [ WinBear] 18:02 [@UserX ] [ jrand0m ] [ mihi ] [ ptsc ] 18:02 -!- Irssi: #iip-dev: Celkem 14 přezdívek [3 ops, 0 halfops, 1 voices, 10 normálních] 18:02 < jrand0m> jasně 18:02 -!- Irssi: Připojení do #iip-dev bylo synchronizováno za 9 s 18:02 < jrand0m> (s JMS :) 18:02 <@nop> jo 18:03 -!- Teď jsi znám jako logger 18:03 < jrand0m> ok, můžeme nejdřív projít celkovou architekturu, abychom viděli, jestli jsou ta API vůbec relevantní? 18:03 <@nop> fajn 18:04 < jrand0m> :) 18:04 < jrand0m> ok, koukněte na e-mail, který jsem poslal s routerArchitecture.webp. nějaké názory na to oddělení? 18:04 -!- tek [~tek@anon.iip] se odpojil [] 18:05 < WinBear> jrand0m: je to na wiki? 18:05 < jrand0m> WinBear> ne, na mailing listu, ale archivy jsou dole. hodím to na wikki 18:06 <@hezekiah> Opravte mě, jestli se pletu ... 18:07 <@hezekiah> ... ale vypadá to, že budeme mít 3 samostatná API, která budou co nejpodobnější. 18:07 <@hezekiah> Že? 18:07 < jrand0m> ano, hezekiah 18:07 <@hezekiah> Takže když je každé API v jiném jazyce, budou mít všechna i samostatné implementace? 18:07 < jrand0m> ano 18:07 <@hezekiah> Nebo je způsob, jak Java nebo Python přistoupí ke knihovně v C? 18:08 < jrand0m> ano, ale tudy jít nechceme 18:08 < mihi> pro javu: JNI 18:08 <@hezekiah> Takže ty řeči o tom, že Java, C, C++, Python atd. budou spolu pěkně vycházet, jsou bezpředmětné, protože nikdy nebudou? 18:08 < jrand0m> jak připojím obrázek na wiki? 18:08 <@hezekiah> Každé API má svůj backend napsaný v tom jazyce. 18:08 < jrand0m> ne, hezekiah, podívej se na diagram 18:09 <@hezekiah> Aha, jasně! 18:09 <@hezekiah> API nejsou napojená na backend. 18:10 <@hezekiah> Mluví přes sokety. 18:10 < jrand0m> si sr 18:10 <@hezekiah> Pořád je to trochu matoucí. 18:10 <@hezekiah> Dej mi chvilku. :) 18:11 <@hezekiah> OK. Co je ta věc označená „transport“? 18:11 < jrand0m> například obousměrný HTTP transport, SMTP transport, prostý socket transport, polling HTTP socket atd. 18:11 < jrand0m> věc, která přesouvá bajty mezi routery 18:12 <@hezekiah> OK. 18:12 <@hezekiah> Takže diagram, na který koukám, ukazuje počítač jednoho člověka. 18:12 <@hezekiah> Má router, který mluví s počítači ostatních přes transporty. 18:12 < jrand0m> správně 18:12 <@hezekiah> Osoba 1 (Alice) má spuštěné 2 aplikace. 18:12 <@hezekiah> Jedna je v C, druhá v Javě. 18:13 <@hezekiah> Obě jsou linknuté na knihovnu (to je API). 18:13 < jrand0m> obě jsou „linknuté“ na samostatné knihovny (API) 18:13 <@nop> jednoduchý koncept 18:13 <@nop> ano 18:13 <@hezekiah> Ty knihovny vezmou vstup z programu, zašifrují ho a pošlou přes sokety (unix nebo TCP) do routeru ... což je další program, který Alice běží. 18:13 < jrand0m> správně 18:14 <@hezekiah> OK. Takže je to trochu jako kdyby se isproxy rozdělilo na dvě. 18:14 < jrand0m> bingo :) 18:14 <@hezekiah> Jedna část je nízkoúrovňová a napsaná v C a druhá je vysokoúrovňová a napsaná v čemkoli. 18:14 < jrand0m> přesně 18:14 <@hezekiah> OK. Chápu to. :) 18:14 < jrand0m> w00t 18:14 <@hezekiah> Takže žádný jazyk nemusí vycházet s jiným jazykem. 18:14 < jrand0m> WinBear> sorry, nemůžu to hodit na wiki, bere jen text :/ 18:15 <@hezekiah> Protože všichni komunikují s routerem přes sokety, můžeš napsat API klidně v PASCALu, jak je libo. 18:15 <@nop> ano 18:15 <@nop> libovolné 18:15 < jrand0m> jasně 18:15 <@nop> zvládá libovolné sokety 18:15 < jrand0m> i když některé věci musí být standardizované (jako datové struktury pro Destination, Lease atd.) 18:15 < WinBear> jrand0m: mám mlhavou představu na základě toho, co říká hezekiah 18:15 < jrand0m> word 18:16 <@hezekiah> jrand0m: Správně. Struktura a pořadí bajtů, co jdou přes ten socket, je někde v návrhu dané 18:16 <@hezekiah> někde. 18:17 <@hezekiah> Ale pořád můžeš implementovat, jak se ty bajty posílají a přijímají, jakkoli vesele chceš. 18:17 <@nop> WinBear: je to úplně stejný způsob, jakým funguje IRC klient s isproxy 18:17 < jrand0m> přesně 18:17 <@hezekiah> Dobře. 18:17 <@hezekiah> Teď to chápu. :) 18:17 -!- moltar [~me@anon.iip] opustil #iip-dev [moltar] 18:17 <@nop> no 18:17 <@nop> ne úplně 18:17 <@hezekiah> Aha. 18:17 <@nop> ale představ si, jak to funguje 18:17 <@nop> a pochopíš libovolné sokety 18:17 <@nop> isproxy jen routuje 18:17 <@nop> a doručuje 18:18 <@nop> teď jrand0m 18:18 <@nop> rychlý dotaz 18:18 < jrand0m> si sr? 18:18 <@nop> je tohle API navržené jen pro nové aplikace, které jsou navržené pro práci v téhle síti 18:18 -!- mode/#iip-dev [+v logger] by hezekiah 18:18 < WinBear> nop: s highlevel částí místo irc klienta? 18:18 < jrand0m> nop> ano. i SOCKS5 proxy by to API mohlo používat 18:18 <@nop> nebo to může mít prostředníka, který umožní už hotovým standardním klientům 18:18 <@nop> například 18:19 <@nop> takže stačí napsat prostředník -> api 18:19 < jrand0m> (ale pozor, není k dispozici žádná služba „lookup“ – v téhle síti není DNS) 18:19 < jrand0m> správně 18:19 <@nop> abychom mohli podporovat třeba Mozillu atd. 18:19 <@nop> aby si mohli psát pluginy 18:19 < jrand0m> nop> ano 18:19 <@nop> ok 18:19 <@nop> nebo transporty :) 18:20 < jrand0m> (např. SOCKS5 má HTTP outproxy natvrdo na destination1, destination2 a destination3) 18:20 <@nop> ok 18:20 < WinBear> myslím, že to chápu 18:21 < jrand0m> w00t 18:21 < jrand0m> ok, jedna z věcí, které jsem musel v tom návrhu promyslet, bylo držet soukromé klíče v paměťovém prostoru aplikace – router se nikdy nedostane k soukromým klíčům Destination. 18:21 <@hezekiah> Takže aplikace může posílat raw data přes síť I2P tak, že je pošle do API, a o zbytek se starat nemusí. 18:22 <@hezekiah> Že? 18:22 < jrand0m> to znamená, že API musí implementovat end-to-end část krypta 18:22 < jrand0m> přesně tak, hezekiah 18:22 <@hezekiah> OK. 18:22 <@nop> ano 18:22 <@nop> o to jde 18:22 <@nop> udělá to za tebe 18:22 <@nop> jen zavoláš háček 18:23 <@hezekiah> Rychlá otázka: 18:23 <@hezekiah> Ten „router“ zjevně musí mluvit určitým protokolem přes své transporty. 18:23 < jrand0m> správně 18:23 <@hezekiah> Takže je možné poskytovat více implementací routeru ... 18:23 < jrand0m> ano 18:24 <@hezekiah> ... pokud všechny mluví stejným protokolem. 18:24 < jrand0m> (proto má specifikace placeholdery pro bitbuckets) 18:24 < jrand0m> správně 18:24 <@hezekiah> Takže budeš mít router v Javě, jeden v C a jeden v PASCALu. 18:24 * jrand0m se otřásl 18:24 < jrand0m> ale jo 18:24 <@hezekiah> A všichni si budou rozumět, protože komunikují přes TCP/IP stejným protokolem. 18:24 * WinBear vyskočí 18:24 <@hezekiah> jrand0m: A jo. Ani já nevzpomínám na své PASCAL časy zrovna s láskou. 18:25 < jrand0m> no, Pascal může mluvit s tím C přes TCP transport a C může mluvit s Javou přes HTTP transport, třeba 18:25 <@hezekiah> Správně. 18:25 < jrand0m> (transporty mluví s jinými stejnými transporty, routery spravují zprávy doručované mezi nimi, ale neřeší, jak jsou doručovány) 18:26 <@hezekiah> Pointa, kterou jsem chtěl udělat, je, že protokol je stejný, takže je jedno, v jakém jazyce je něčí router implementován. 18:26 < jrand0m> jasně 18:26 <@hezekiah> Super. 18:26 < jrand0m> teď chápeš, proč jsem říkal „koho to zajímá“ ke všem těm debatám C vs Java vs atd.? :) 18:26 <@hezekiah> Jo. 18:26 <@hezekiah> lol 18:27 <@hezekiah> Musím ti dát kredit, jrand0m. Tohle vývojářům hodně usnadní psaní programů pro tuhle síť. 18:27 < jrand0m> heh, no, to API není úplně originální. takhle funguje Message Oriented Middleware (MOM) 18:27 <@hezekiah> A můžeš dokonce udělat routery, které se specializují na určité platformní vlastnosti (jako 64bit CPU). 18:28 < jrand0m> naprosto 18:28 <@hezekiah> jrand0m: Ještě skromný! ;-) 18:28 <@hezekiah> No, mně se to líbí. 18:28 < jrand0m> ok, UserX, nop, dává tohle oddělení smysl? 18:28 <@nop> samozřejmě 18:28 <@nop> je userx ještě tady 18:29 <@hezekiah> Je neaktivní 1:26. 18:29 < jrand0m> ok. takže máme dva úkoly: navrhnout síť a navrhnout, jak funguje API. 18:29 <@nop> ano 18:29 <@hezekiah> Rychlá jednoduchá otázka: API dělají end-to-end crypto. Dělají routery node-to-node crypto? 18:29 <@nop> ano 18:30 < jrand0m> ano 18:30 < jrand0m> (na úrovni transportu) 18:30 <@hezekiah> Dobře. :) 18:30 <@nop> hezekiah: je to v tomhle ohledu hodně podobné tomu, co už máme 18:30 <@nop> v tomhle aspektu 18:31 < jrand0m> ok.. eh, sakra, thecrypto tu není, aby okomentoval výkonnostní model. 18:31 < Neo> a pro paranoiky může appka udělat PGP šifrování ještě předtím, než to trefí API ;) 18:31 < jrand0m> naprosto, neo 18:31 < jrand0m> dokonce jsem byl v pokušení nechat end-to-end crypto mimo API a nechat to na appkách... 18:31 <@hezekiah> jrand0m: To by bylo kruté. 18:31 < jrand0m> heheh 18:32 <@hezekiah> Mimochodem, API a router komunikují přes sokety. 18:32 <@hezekiah> Na UNIXu budou používat UNIX sokety, nebo lokální TCP/IP sokety? 18:32 < jrand0m> asi prostě lokální tcp/ip pro jednoduchost 18:32 <@nop> vydrž 18:32 <@hezekiah> (Předpokládám, že můžeš udělat router, který bere oboje.) 18:33 * hezekiah se mu hodně líbí tahle koncepce zaměnitelných částí 18:33 <@nop> jestli chvilku vydržíte 18:34 <@hezekiah> Držím ... :) 18:34 <@nop> zavolám thecrypto domů 18:34 <@nop> jestli se může připojit 18:34 < jrand0m> hehe, jasně 18:34 <@hezekiah> lol 18:34 * hezekiah nasazuje silný italský přízvuk 18:34 <@hezekiah> Nop má ... KONEXE! 18:34 < jeremiah> čau 18:34 <@nop> ahoj, jeremiah 18:35 < jrand0m> čau, jeremiah 18:35 <@nop> byl bys ochoten na úrovni API pomoct s python API 18:35 < jeremiah> jasně 18:35 * jeremiah čte backlog 18:35 < jrand0m> heh, jasně 18:35 * nop volá 18:36 <@nop> není doma 18:36 <@nop> bude zpátky za hodinu 18:36 < jrand0m> ok, četl někdo jiný to .xls a/nebo má komentáře k modelu? 18:37 <@hezekiah> Četl jsem to .xls ... ale o p2p moc nevím, takže většina mi utekla. 18:37 <@hezekiah> UserX je v tomhle dobrý. 18:37 <@nop> musím to ještě přečíst 18:37 < jrand0m> (mimochodem, morphmix měl šílená čísla... říkali, že můžou očekávat, že náhodní hosté na netu budou mít průměrné pingy 20–150 ms, místo 3–500, co jsem čekal) 18:37 < jrand0m> cool 18:37 <@nop> je to staroffice nebo openoffice? 18:37 < jrand0m> openoffice, ale exportoval jsem to do .xls 18:37 <@nop> což je excell? 18:37 < jrand0m> správně 18:38 <@hezekiah> Mimochodem, k API ... 18:38 < jrand0m> si sr? 18:38 <@hezekiah> ... v C by boolean byl int. 18:38 <@nop> který e-mail 18:38 <@nop> hezekiah: ano 18:38 <@hezekiah> Třídy by se posílaly jako ukazatele na struktury. 18:38 <@nop> leda že bys typedefnul boolean 18:39 <@hezekiah> A funkce, které používají byte[], by použily void* s dalším parametrem, který specifikuje délku bufferu. 18:39 <@nop> hezekiah: jsi hnidopich :) 18:39 < jrand0m> nop> nedostanu se do archivů, takže nevím, jak byl předmět, ale bylo to minulý týden... 18:39 <@nop> nechme to na jindy 18:39 <@hezekiah> nop: Hnidopich? 18:39 < jrand0m> heh, jo, vy, co děláte na C API, si tohle dořešte 18:39 * jeremiah dočetl backlog 18:39 <@nop> jak se ten soubor jmenuje 18:39 <@hezekiah> nop: Snažím se najít všechny věci, které jsou jiné, abychom je mohli vyřešit, jak jrand0m chtěl. 18:40 <@hezekiah> Snažím se pomoct. :) 18:40 <@nop> hezekiah: ano, nejspíš mimo schůzku 18:40 < jrand0m> nop> simple_latency.xls 18:40 <@hezekiah> boolean sendMessage(Destination dest, byte[] payload); 18:40 <@hezekiah> by bylo 18:40 <@hezekiah> int sendMessage(Destination dest, void* payload, int length); 18:40 <@hezekiah> . 18:40 <@hezekiah> byte[] recieveMessage(int msgId); 18:40 <@hezekiah> to by mohlo být buď: 18:41 <@hezekiah> void* recieveMessage(int msgId, int* length); 18:41 <@hezekiah> nebo 18:41 <@nop> jrand0m: mám to 18:41 <@hezekiah> void recieveMessage(int msgId, void* buf, int* length); 18:41 <@hezekiah> nebo 18:41 < jrand0m> hezekia: proč ne typedef struct { int length; void* data; } Payload; 18:41 <@hezekiah> DataBlock* recieveMessage(int msgId)l 18:41 <@hezekiah> DataBlock* recieveMessage(int msgId); 18:41 < jeremiah> kde je to xls? 18:41 <@nop> oh iip-dev 18:41 <@hezekiah> jrand0m: Struktura, kterou jsi zmínil, je v podstatě to, co je DataBlock. 18:42 < jrand0m> jasně, hezekiah 18:42 <@nop> subject more models 18:42 <@hezekiah> Je pravděpodobné, že C verze bude mít DataBlocky. 18:43 <@hezekiah> Kromě toho je jediná další věc, že každý „interface“ by byl prostě sada funkcí. 18:43 <@hezekiah> nop: Našel jsem všechny rozdíly, které by v C API byly? 18:43 < jrand0m> jasně. možná #include "i2psession.h" nebo tak něco 18:43 < jeremiah> je někde nástřel python API? 18:44 < jrand0m> ne, jeremiah, python moc neznám :/ 18:44 <@nop> musel bych znovu projít java API, ale řekl bych, že jsi přesně na místě 18:44 < jrand0m> ale bylo by asi podobné Javě, protože python je OO 18:44 < jeremiah> super, můžu odvodit z C 18:44 * nop není java head 18:44 < jrand0m> super, jeremiah 18:44 < jeremiah> je c api v tom, cos poslal před pár dny? 18:44 <@hezekiah> Jo. Python by měl zvládnout Java api. 18:44 < jrand0m> jeremiah> to bylo Java 18:45 < jrand0m> aha, Java byla dnes 18:45 < jrand0m> to starší bylo nezávislé na jazyku 18:45 <@hezekiah> Hmm 18:45 <@nop> UserX říká, že by měl být schopen pomoct s C API 18:45 < jrand0m> jasně 18:45 <@nop> je teď zaneprázdněný v práci 18:46 < jrand0m> coo' 18:46 <@hezekiah> Ještě poslední poznámka: U C API bude každá funkce asi brát structure* na strukturu, jejímž „rozhraním“ je to v Javě. 18:46 <@nop> hezekiah: vypadá to dobře 18:46 <@nop> vypadá to dobře 18:46 <@hezekiah> I2PSession createSession(String keyFileToLoadFrom, Properties options); 18:46 <@hezekiah> by bylo: 18:46 <@nop> java a jejich nenativní datové typy 18:46 <@hezekiah> I2PSession* createSession(I2PClient* client, char* keyFileToLoadFrom, Properties* options); 18:46 <@nop> ;) 18:46 < jrand0m> hehe 18:46 < jrand0m> jasně, hezekiah 18:47 < jeremiah> řešíme unicode? 18:47 <@hezekiah> Každopádně, pokud zvládnete tyhle rozdíly, C a Java API by měly být mimo to identické. 18:47 <@hezekiah> nop? Unicode? :) 18:47 < jrand0m> UTF8 pokud ne UTF16 18:48 <@hezekiah> Možná by Unicode měl řešit aplikační level. 18:48 < jrand0m> jasně, charset je obsah zprávy 18:48 <@hezekiah> Aha. 18:48 < jeremiah> ok 18:48 <@hezekiah> Java String jsou v Unicode, že, jrand0m? 18:48 < jrand0m> bitbuckets budou všechny definované po bitech 18:48 < jrand0m> ano, hezekiah 18:48 < jrand0m> (pokud je výslovně nenavedeš, aby změnily znakové sady) 18:49 <@hezekiah> Takže string poslaný do Java API by se lišil od toho poslaného do C API, pokud C API neimplementuje řetězce v Unicode. 18:49 < jrand0m> nerelevantní 18:49 <@hezekiah> OK. 18:49 < jrand0m> (app->API != API->router. definujeme jen API->router) 18:49 <@hezekiah> Myslím to takhle, jrand0m: 18:50 <@hezekiah> Když nastavím heslo přes Java API, jde to do routeru ven někam jinam. 18:50 < jrand0m> heslo? myslíš, že vytvoříš Destination? 18:50 <@hezekiah> Pak to najde jiný router, který to pošle do jiného API (?) které je implementované v C. 18:50 <@hezekiah> void setPassphrase(String old, String new); 18:50 <@hezekiah> Tahle funkce. 18:51 < jrand0m> hezekiah> to je administrativní heslo pro přístup k administrativním metodám routeru 18:51 <@hezekiah> Aha 18:51 <@hezekiah> Posílají se nějaké funkce v API, které používají Java String, nakonec s tím Stringem do jiného API? 18:51 < jrand0m> 99,9 % appek bude používat jen I2PSession, ne I2PAdminSession 18:51 <@nop> taky všechno, co router nese, se konvertuje pro cestu po síti, správně? 18:51 <@hezekiah> Pokud ano, měli bychom asi použít Unicode. 18:51 <@nop> unicode by nebyl relevantní 18:52 < jrand0m> hezekiah> ne. veškeré informace mezi routery budou definované bitovými poli 18:52 <@hezekiah> OK. 18:52 < jrand0m> správně, nop, na úrovni transportu 18:52 <@hezekiah> (Předpokládám, že bit bucket je prostě binární buffer, že?) 18:53 < jrand0m> bit bucket je tvrzení, že první bit znamená X, druhý bit znamená Y, bity 3–42 znamenají Z atd. 18:53 < jrand0m> (např. můžeme chtít použít X.509 pro bitové pole certifikátů)
18:53 <@hezekiah> S tím jsem se ještě nikdy nesetkal. 18:54 <@hezekiah> Budu to řešit, až to přijde. :) 18:54 < jrand0m> heh jasně 18:55 < jrand0m> ok, čtyři věci, které jsem chtěl dnes probrat: *router architektura, *výkonnostní model, *analýza útoků, *psyc. První máme, thecrypto je offline, takže to možná odložíme (pokud k tomu modelu nemáš nápady, nop?) 18:57 <@hezekiah> Um … jrand0m. Mám ještě jednu otázku. 18:57 < jeremiah> jrand0m: kde je poslední verze specifikace sítě? je to to, co jsi poslal 13.? 18:57 < jrand0m> si sr? 18:57 <@hezekiah> No, architektura router nechává API zpracovávat klíče /poslané Aplikací/. 18:57 < jrand0m> jeremiah> ano 18:57 <@nop> Teď ne 18:58 <@hezekiah> Teď … jediný způsob, jak podle mě API získá klíč, je z createSession. 18:58 < jrand0m> hezekiah> router dostává veřejné klíče a podpisy, ne soukromé klíče 18:58 < jrand0m> správně 18:58 <@hezekiah> Ale to vyžaduje soubor. 18:58 < jrand0m> klíče jsou uložené v souboru nebo v paměti API 18:58 < jrand0m> ano 18:58 <@hezekiah> Když aplikace generuje klíč, proč ho prostě nemůže poslat API přes vyrovnávací paměť? 18:59 <@hezekiah> Musí ho opravdu ukládat do souboru a pak předat název souboru? 18:59 < jrand0m> ne, může být v paměti, pokud chceš 18:59 <@hezekiah> V API na to ale není žádná funkce. 18:59 <@hezekiah> Jen nápad. 19:00 <@hezekiah> Pokud se má klíč vygenerovat jen jednou a používat se mnohokrát (jako GPG klíče), pak dává soubor smysl. 19:00 -!- mihi [none@anon.iip] se odpojil [čau všichni, už je pozdě…] 19:00 <@hezekiah> Ale pokud se bude generovat častěji, tak by se možná hodil nějaký způsob, jak ho poslat přímo API přes nějakou strukturu nebo vyrovnávací paměť 19:00 <@hezekiah> . 19:01 < jrand0m> ano, generuje se jednou a jen jednou (pokud nenosíš alobalovou čepici) 19:02 < jrand0m> i když createDestination(keyFileToSaveTo) ti umožní ten klíč vytvořit 19:02 <@hezekiah> OK. 19:02 <@hezekiah> Takže opravdu není potřeba to posílat přímo z aplikace do API. Stačí soubor. 19:03 <@hezekiah> Tak kde jsme byli, než jsem tak nezdvořile přerušil? :) 19:06 < jeremiah> takže teď pracujeme jen na router API, ne na klientském, že? 19:06 < jrand0m> no, pro teď přeskočíme analýzu výkonu (doufejme, že na mailing listu k tomu do příštího týdne bude nějaká debata?). A asi stejně tak ohledně analýzy útoků (pokud někdo četl novou spec a má komentáře) 19:07 <@hezekiah> Když to tedy přeskočíme, o čem máme mluvit teď? 19:07 <@hezekiah> Psyc? 19:07 < jrand0m> pokud někdo nemá jiné poznámky, co vytáhnout…? 19:08 <@hezekiah> No, výjimečně je moje díra na komentáře (také nechvalně známá jako moje pusa) prázdná. 19:08 < jrand0m> hehe 19:09 < jrand0m> ok, má někdo nějaké myšlenky, jak bude fungovat IRC část, a jestli může být psyc relevantní nebo užitečné? 19:09 < jeremiah> poznámka bokem (to mě naštvalo): seznam Wiredu “Wired, Tired, Expired” zařadil Waste jako ‘wired’ 19:09 < jrand0m> heh 19:09 < jrand0m> dochází ti, jak moc všem vyrazíme dech? 19:09 < jeremiah> jo 19:09 <@hezekiah> jrand0m: To předpokládá, že nám to bude fungovat. 19:10 < jrand0m> Zaručuju, že to bude fungovat. 19:10 <@hezekiah> Venku je spousta jiných neúspěšných pokusů. 19:10 < jrand0m> Dal jsem výpověď, abych na tom dělal. 19:10 <@hezekiah> Tak pak všem vyrazíme dech. :) 19:10 <@hezekiah> Jo. Jak se ti pak dostane chleba na stůl, když to uděláš? 19:10 <@hezekiah> Za GPL kód se moc neplatí. ;-) 19:10 < jrand0m> heh 19:11 <@hezekiah> Co se týče psyc … řeknu to takhle: 19:11 <@hezekiah> Poprvé jsem o tom slyšel, když jsi nám o tom poslal e‑mail. 19:11 < jrand0m> sakra, to jsem nebyl já, kdo to našel :) 19:11 <@hezekiah> Nicméně IRC je asi jeden z nejrozšířenějších (ne-li /the/ nejrozšířenější) chatovacích protokolů. 19:11 <@hezekiah> Lidi budou chtít IRC aplikace HODNĚ dřív, než vůbec / budou vědět/, co je psyc. 19:11 <@hezekiah> jrand0m: Oups. Promiň. Na ten detail jsem zapomněl. :) 19:12 < jrand0m> ne podle psyc. jejich historie sahá myslím do 86 19:12 <@hezekiah> Jde o to, že nadřazenost protokolu není zas tak relevantní jako to, kdo ho používá. 19:12 <@hezekiah> Jejich historie může sahat tak daleko. 19:12 <@hezekiah> Ale kolik lidí používá Psyc? 19:12 < jeremiah> jo, jestli jsou tu od roku po mém narození (ehm) a pořád nejsou tak velcí 19:12 <@hezekiah> Pointa je, že i když je to lepší protokol, většina lidí používá IRC. 19:13 <@hezekiah> Můžeme udělat nejlepší I2P síť na planetě … 19:13 -!- Ehud [logger@anon.iip] se odpojil [Ping timeout] 19:14 < jeremiah> může mi někdo stručně vysvětlit, proč nás to zajímá? Myslel jsem, že IRC bude jen jedna z možných aplikací, ale že síť je dost flexibilní, aby případně podporovala i psyc 19:14 <@hezekiah> Správně. 19:14 <@hezekiah> Psyc lze udělat … 19:14 <@hezekiah> … ale říkám, že bychom měli nejdřív udělat IRC, protože ho používá víc lidí.
19:14 <@hezekiah> jrand0m, můžeme vytvořit skvělou I2P síť, ale lidé ji nebudou používat, pokud v ní nebude něco, co chtějí. 19:14 < jrand0m> jeremiah> důvod, proč je psyc zajímavý, je ten, že možná budeme chtít implementovat IRC ve stejném duchu, v jakém funguje psyc 19:15 <@hezekiah> Proto bychom jim měli poskytnout ‘killer-app’. 19:15 < jeremiah> ok 19:15 < jrand0m> jasně, IIP je Invisible IRC Project a umožní lidem provozovat IRC 19:16 < jrand0m> bez centrálního serveru (nebo vlastně bez jakéhokoli serveru), je třeba hodně promyslet, jak bude IRC fungovat. psyc na to má možné řešení 19:16 < jrand0m> i když existují i další 19:17 <@hezekiah> Jak jsem říkal, psyc může dopadnout lépe, ale lidé chtějí používat IRC, ne psyc. 19:17 < jrand0m> a budou 19:17 < jrand0m> budou používat irc 19:17 <@hezekiah> Je to celé o marketingu, kámo! ;-) 19:17 < jeremiah> Zkusím si dnes večer přečíst specifikaci a něco o psyc 19:17 < jrand0m> word 19:17 <@hezekiah> lol 19:17 < jeremiah> plánujeme se sejít zítra v 5:00 UTC? 19:17 <@hezekiah> Ne? 19:18 < jeremiah> nebo kdykoli 19:18 < jrand0m> Jsem na iip 24x7 :) 19:18 < jeremiah> jo, ale já jím 19:18 <@hezekiah> jrand0m: Všiml jsem si. 19:18 < jrand0m> 05:00 utc nebo 17:00 utc? 19:18 <@hezekiah> jeremiah: LOL! 19:18 <@hezekiah> No, schůzka iip-dev oficiálně začíná ve 21:00 UTC. 19:18 -!- Ehud [~logger@anon.iip] se připojil k #iip-dev 19:19 < jeremiah> ok, řekl jsem 05:00 UTC jen proto, že jsem kecal z prdele 19:19 < jeremiah> kde je mids? 19:19 <@hezekiah> mids na nějakou dobu projekt opustil. 19:19 <@hezekiah> Nebyl jsi tam před pár schůzkami? 19:19 < jeremiah> ok 19:19 < jeremiah> asi ne 19:19 <@hezekiah> Měli jsme v rámci agendy jakousi rozlučku. 19:19 < jeremiah> aha 19:20 <@hezekiah> OK … 19:20 <@hezekiah> Je ještě něco na programu? 19:20 * jrand0m u mě už nic nezbývá 19:20 < jeremiah> ohledně psyc: 19:20 < jeremiah> pokud je tohle funkce psyc, vím, že jsi to před časem zmiňoval 19:20 * hezekiah v první řadě jsem žádnou agendu ani neměl 19:21 <@hezekiah> pace 19:21 <@hezekiah> place 19:21 < jeremiah> Nemyslím si, že je dobrý nápad, aby každý uživatel posílal zprávu každému dalšímu uživateli v místnosti 19:21 <@hezekiah> Tak! 19:21 < jrand0m> jeremiah> takže by nadbytečné nominované pseudoservers přerozdělovaly zprávy? 19:21 < jrand0m> (pseudoservers = peerové v kanálu, kteří mají seznam uživatelů) 19:21 < jeremiah> Nemyslím si, že ani ‘broadcasting’ je tak chytrý, ale to
se zdá, že by to vyžadovalo hodně šířky pásma pro daného uživatele, který může být na modemu, a zpoždění při odesílání třeba… 20 zpráv zvlášť by rozbilo konverzaci
19:21 < jeremiah> Neznám nejlepší řešení, možná by tohle bylo jedním z nich
19:22 < jeremiah> Myslím, že přímé zprávy by byly fajn, když bys je chtěl, ale jsou případy, kdy to asi není tak důležité
19:22 <@hezekiah> Zpráva by musela být podepsaná soukromým klíčem autora, aby se zajistila autenticita.
19:22 <@hezekiah> I když na tomhle ještě dlouho nebude záležet, myslím, že jeremiah má pravdu
19:22 < jrand0m> hezekiah> to vyžaduje uživatele, kteří chtějí prokazatelnou komunikaci :)
19:23 < jrand0m> rozhodně.
19:23 <@hezekiah> Kdybych musel poslat zprávu 100 uživatelům v kanálu …
19:23 < jeremiah> i když moje průměrná zpráva má jen pár set bajtů, takže poslat ji stovkám uživatelů nemusí být tak těžké
19:23 <@hezekiah> … no, moje konverzace by byla /velmi/ pomalá.
19:23 < jeremiah> zvlášť pokud bys nečekal na odpověď
19:23 <@hezekiah> 20K na odeslání jedné zprávy.
19:23 <@hezekiah> To tedy ne. :)
19:23 < jrand0m> no, pokud je v kanálu 100 uživatelů, někdo musí rozeslat 100 zpráv
19:23 < jeremiah> je to 20k?
19:23 < jeremiah> aha, jasně
19:23 <@hezekiah> 200 uživatelů
19:24 < jeremiah> hmm
19:24 < jeremiah> nebyly by na to routery dobré?
19:24 < jeremiah> můžeme celkem bezpečně předpokládat, že mají slušnou šířku pásma, že?
19:24 <@hezekiah> Myslel jsem, že každý má ‘router implementation’
19:24 < jrand0m> ani ne. pokud jsou tam relaye, nominační mechanismus to musí brát v potaz
19:24 < jrand0m> ano hezekiah
19:24 < jeremiah> spec jsem nečetl
19:25 < jrand0m> router je tvůj lokální router
19:25 <@hezekiah> Uf!
19:25 <@hezekiah> Pořád si pletu vaše nicky!
19:25 <@hezekiah> lol
19:25 < jrand0m> hehe
19:25 <@hezekiah> Ehm … kam zmizel nop?
19:25 <@hezekiah> Aha.
19:26 <@hezekiah> Pořád je tady.
19:26 <@hezekiah> Chvíli jsem myslel, že je pryč,
19:26 < jrand0m> ale jeremiah má pravdu, psyc má pár nápadů, které bychom mohli zvážit, i když je třeba nakonec odmítneme
19:26 <@hezekiah> Nejdřív prostě rozběhejme síť.
19:26 * jrand0m na to si připije
19:26 <@hezekiah> Když příliš upneš zrak k cílové čáře, zakopneš o kámen 3 palce před sebou.
19:27 * jeremiah se cítí inspirován
19:27 <@hezekiah> lol
19:27 < jrand0m> Myslím, že by bylo fakt skvělé, kdybychom si dali za cíl do příštího týdne zrecenzovat síťovou specifikaci a posílat e-maily na iip-dev, kdykoli bude mít někdo myšlenky nebo komentáře. nejsem blázen?
19:27 <@hezekiah> nop? Máš ještě něco k přidání do agendy, nebo to ukončíme?
19:27 <@hezekiah> jrand0m: No, nevím, jestli bych to všechno stihl přečíst do příštího týdne, ale můžu to zkusit. :)
19:27 < jrand0m> heh
19:28 < jrand0m> je to úmorných 15 stran ;)
19:28 <@hezekiah> 15 stran?
19:28 <@hezekiah> Vypadalo to spíš na 120!
19:29 < jrand0m> heh, no, záleží na tvém rozlišení, řekl bych ;)
19:29 < jeremiah> má tam spoustu kotev, takže to vypadá obrovské
19:29 < jrand0m> hehe
19:29 <@hezekiah> Levá strana má MNOHEM víc než 15 odkazů, kámo!
19:29 <@hezekiah> Tak se přiznej!
19:29 <@hezekiah> Je jich víc než 15. :)
19:29 <@hezekiah> Oh!
19:29 <@hezekiah> To nejsou stránky! To jsou jen kotvy!
19:29 <@hezekiah> Jsem zachráněn!
19:30 * hezekiah se cítí jako námořník právě zachráněný před utonutím
19:30 < jeremiah> třído, nalistujte svazek 4 kapitolu 2 Struktura bajtu zprávy
19:30 < jrand0m> lol
19:30 <@hezekiah> lol
19:30 <@nop> ukončeno
19:30 <@hezekiah> baf!
19:30 <@hezekiah> Příští týden, 21:00 UTC, stejné místo.
19:30 <@hezekiah> Uvidíme se tam. :)
19:30 < jeremiah> čau — Záznam uzavřen Tue Jul 15 19:30:51 2003