abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 22:22 | Komunita

Společnost Purism představila kryptografický token Librem Key. Koupit jej lze za 59 dolarů. Token byl vyvinut ve spolupráci se společností Nitrokey a poskytuje jak OpenPGP čipovou kartu, tak zabezpečení bootování notebooků Librem a také dalších notebooků s open source firmwarem Heads.

Ladislav Hagara | Komentářů: 0
včera 20:33 | Nová verze

Společnost NVIDIA oficiálně vydala verzi 10.0 toolkitu CUDA (Wikipedie) umožňujícího vývoj aplikací běžících na jejich grafických kartách. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 20:00 | Upozornění

Příspěvek Jak přežít plánovanou údržbu DNS na blogu zaměstnanců CZ.NIC upozorňuje na historicky poprvé podepsání DNS root zóny novým klíčem dne 11. října 2018 v 18:00. Software, který nebude po tomto okamžiku obsahovat nový DNSSEC root klíč, nebude schopen resolvovat žádná data. Druhým důležitým datem je 1. února 2019, kdy významní výrobci DNS softwaru, také historicky poprvé, přestanou podporovat servery, které porušují DNS standard

… více »
Ladislav Hagara | Komentářů: 4
včera 15:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 156. brněnský sraz, který proběhne v pátek 21. září od 18:00 v restauraci Na Purkyňce na adrese Purkyňova 80.

Ladislav Hagara | Komentářů: 0
včera 13:22 | Nová verze

Alan Griffiths z Canonicalu oznámil vydání verze 1.0.0 display serveru Mir (GitHub, Wikipedie). Mir byl představen v březnu 2013 jako náhrada X serveru a alternativa k Waylandu. Dnes Mir běží nad Waylandem a cílen je na internet věcí (IoT).

Ladislav Hagara | Komentářů: 0
20.9. 22:00 | Nasazení Linuxu
Stabilní aktualizace Chrome OS 69 (resp. Chromium OS), konkrétně 69.0.3497.95, přináší mj. podporu linuxových aplikací. Implementována je pomocí virtualizace, a proto je tato funkce také omezena na zařízení s dostatkem paměti a podporou hardwarové akcelerace, tudíž nejsou podporovány chromebooky s 32bitovými architekturami ARM, či Intel Bay Trail (tzn. bez Intel VT-x).
Fluttershy, yay! | Komentářů: 5
20.9. 21:32 | Zajímavý projekt
Došlo k uvolnění linuxové distribuce CLIP OS, vyvíjené francouzským úřadem pro kybernetickou bezpečnost ANSSI, jako open source. Vznikla za účelem nasazení v úřadech, kde je potřeba omezit přístup k důvěrným datům. Je založená na Gentoo.
Fluttershy, yay! | Komentářů: 1
20.9. 16:00 | Komerce

Zjistěte více o bezpečné a flexibilní architektuře v cloudu! IBM Cloud poskytuje bezpečné úložiště pro Vaše obchodní data s možností škálovatelnosti a flexibilitou ukládání dat. Zároveň nabízí prostředky pro jejich analýzu, vizualizaci, reporting a podporu rozhodování.

… více »
Fluttershy, yay! | Komentářů: 12
20.9. 12:22 | Nová verze

V dubnu letošního roku Mozilla představila webový prohlížeč pro rozšířenou a virtuální realitu Firefox Reality (GitHub). V úterý oznámila vydání verze 1.0. Ukázka na YouTube. Firefox Reality je k dispozici pro Viveport, Oculus a Daydream.

Ladislav Hagara | Komentářů: 2
20.9. 12:00 | Komunita

V srpnu loňského roku společnost Oracle oznámila, že Java EE (Enterprise Edition) bude uvolněna jako open source. O měsíc později bylo rozhodnuto, že tato open source Java EE bude přejmenována a předána Eclipse Foundation. Nové jméno bylo oznámeno v únoru letošního roku. Z Java EE se stala Jakarta EE. Eclipse Foundation včera oznámila dosažení dalšího milníku. Zdrojové kódy aplikačního serveru GlassFish jsou již k dispozici v git repozitářích Eclipse Foundation (GitHub).

Ladislav Hagara | Komentářů: 0
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (14%)
 (21%)
 (23%)
 (25%)
 (4%)
 (1%)
Celkem 384 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Vlastika ultra brutal erlang chat server

11.2.2010 22:00 | Přečteno: 1514× | programovani | poslední úprava: 14.2.2010 17:27

Rád bych vám představil svůj zbrusu nový výtvor, související s mým učením se funkcionálnímu jazyku erlang, vhodnému pro psaní serverů.

Jedná se o chat server, na který se dá připojit přes telnet. Možná se zrovna divíte, že něco takového musí být v erlangu na pár řádek ale ...

Tu je seznam vlastností

Na tomto projektíku jsem se naučil základům erlangu za 3 dny. Obsahuje snad všecko, co muže takový jednoduchý program obsahovat - obousměrná meziprocesová komunikace, monitor procesy, operace s seznamy, regulární výrazy, všudepřítomný pattern matching (== způsob programování v erlangu), podmínky pro výběr funkce (hlavně v kódu terminálu).

Rád bych, aby moje práce byla někomu k něčemu, takže jsem zvolil zjednodušenou BSD licenci. Naopak bych byl také rád, kdyby se objevil nějaký zkušený erlang programátor, aby to zkritizoval a já se poučil ze svých chyb.

Pokud mě erlang bude bavit a budu mít chuť, možná se mužete těšit na nějaký miniúvod do erlangu, případně na nějakou kritiku tohoto vynikajícího jazyka.

Nakonec tedy link na

DOWNLOAD 0.1

Pro spuštění stačí mít nainstalovaný erlang a spustit run.sh script, který skompiluje oba zdrojáky a spustí chat server. Defaultní port je 5000, dá se změnit v chat.erl v definici skoro hned za licencí.


Updated 13.02.2010

DOWNLOAD 0.2

Updated 14.02.2010

DOWNLOAD 0.2.1

Updated 14.02.2010

DOWNLOAD 0.2.2

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

12.2.2010 12:34 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server

Pár poznámek ke kódu: Seznamy velmi často používáte jako pole, tj. snažil bych se vyhnout funkci lists:nth/2. Není třeba všude používat knihovní funkce viz třeba term:compare_strings/2, kterou by šlo napsat prakticky bez knihovních funkcí a byla by navíc efektivnější nebo napsat s knihovními funkcemi třeba takto (v Haskellu):

compareStrings as bs
  | as == bs  = Nothing
  | otherwise = Just $ length $ takeWhile id $ zipWith (==) as bs

V Erlangu je potíž s funkcí lists:zipwith/3, která přijímá jen stejně dlouhé seznamy tj. musel byste řetězce oříznout na délku toho kratšího.

s mým učením se funkcionálnímu jazyku erlang

Je dobře, že se učíte funkcionální jazyk, a doufám, že po Erlangu bude následovat Haskell :-)

vlastikroot avatar 12.2.2010 15:11 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server

Díky za připomínky. Doufám, že si nemusíme vykat ;-) Tu compare_strings/2 jsem přepsal, mě osobně se líbí mnohem víc

compare_strings(S1, S2) when S1 == S2 ->
     same;
compare_strings(S1, S2) when (S1 == []) or (S2 == []) ->
     {different,0};
compare_strings(S1, S2) when length(S2) > length(S1) ->
     compare_strings(S2, S1);
compare_strings(S1, S2) when length(S1) > length(S2) ->
     S1Part = lists:sublist(S1, length(S2)),
     compare_strings(S1Part, S2);
compare_strings(S1, S2) when length(S1) == length(S2) ->
     Same = lists:zipwith(fun(X, Y) -> X == Y end, S1, S2),
     {different,length(lists:takewhile(fun(X) -> X end, Same))}.

Použil jsem tu funkci lists:zipwith/3, o které jsem předtím nevěděl (díky :-)).

Ta funkce byla opravdu ošklivě napsaná, asi jsem se moc nesoustředil a jen psal takovým tím C stylem (funguje to, je to dobře).

S haskellem nevím, zatím pro něj nemám praktické využití (možná v budoucnu na nějakou matematiku etc.). Cesty programátora jsou nevyzpytatelné :-)

Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
13.2.2010 11:43 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server

Takhle to vypadá lépe, ale zkus si zavolat compare_strings("auto","aut"). Já bych to napsal asi takto (bez funkcí z knihovny):

compare_strings(XS, YS) -> compare_strings(0, XS, YS).

compare_strings(I, [A|XS], [A|YS]) -> compare_strings(I+1, XS, YS);
compare_strings(_, []    , []    ) -> {same};
compare_strings(I, _     , _     ) -> {different, I}.
13.2.2010 11:47 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
s/{same}/same/
vlastikroot avatar 13.2.2010 11:47 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Hmm :-( mám se ještě co učit, v pohodě chápu jak to funguje, ale nevymyslel bych to ...
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
13.2.2010 19:57 CiV | skóre: 3
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Přidání parametru - akumulátoru je často používaná technika ve funkcionálním programování. To se hodí znát.
12.2.2010 12:52 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server

Chtěl bych se ještě zeptat, jestli se Erlang učíte díky KSP?

vlastikroot avatar 12.2.2010 15:12 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Učím se ho jen ze svých šílených pohnutek :-D
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
12.2.2010 23:56 pozortucnak | skóre: 21 | blog: vecny_windowsar
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Ten miniúvod do erlangu by byl fajn... Možná by to ale nejdřív chtělo úvod do funkcionálního programování, přeci jen to vyžaduje jiný přístup...
Jsem mimořádně obtížný případ
vlastikroot avatar 13.2.2010 00:09 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Já nevím, jestli bych si na něco takového troufnul, přecejen o funkcionálnim programování nevím zhola nic (a abych řek pravdu, ani o žádném jiném - to člověk prostě musí mít v krvi). Asi tak jen že je to jako každé jiné programování (imperativní, objektově orientované), jen má člověk silně omezenou ale mocnou množinu vyjadřovacích schopností. Navíc nemám rád teorii :-D
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
vlastikroot avatar 13.2.2010 17:48 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Tak, přidal jsem novou verzi 0.2 :-)
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
xkucf03 avatar 14.2.2010 15:18 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Pěkné, zkoušel jsem a funguje. Jen jsem měl trochu problém s editací řádku (backspace, delete…).

Tip na vylepšení: používat Jabber MUC jako „backend“ – udělat z toho telnetové rozhraní k místnosti v Jabberu. BTW: já teď zase pracuji na jednoduchém webovém rozhraní pro jabberové místnosti.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
vlastikroot avatar 14.2.2010 15:59 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Jak přesně se projevují ty problémy s terminálem? Protože já to nikde jinde než u mě s telnetem z inetutils na xtermu nezkoušel. To MUC je zajímavý nápad, třeba někdy :-)
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
vlastikroot avatar 14.2.2010 16:19 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Přidal jsem další verzi, skus, jestli to pomuže. Byl tam problém s tím, že xterm posílá pro backspace /b, ale libvte terminály /0x127.
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
xkucf03 avatar 14.2.2010 17:18 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
0.2.1 – to už je lepší, backspace a delete fungují. Teď ještě když nastavím kurzor na (ne za ale na) poslední písmenko řádku a snažím se něco napsat, chová se to „divně“ – jednou se přepíše, jindy se připíše před něj atd.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
vlastikroot avatar 14.2.2010 17:26 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Vlastika ultra brutal erlang chat server
Uff. To těch verzí je. Každopádně díky za bugreporty :-)
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
xkucf03 avatar 14.2.2010 17:36 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše verzování
njn, mohl by sis pořídit nějaký verzovací systém, ať to sem nemusíš dávat jako archívy :-P
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
vlastikroot avatar 14.2.2010 17:38 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: verzování
Náš git server je momentálně down, tak proto ;-)
Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.