Diskuze: Machr na C# - Zvýrazňovač syntaxe

C# .NET .NET (C# a Visual Basic) Machr na C# - Zvýrazňovač syntaxe American English version English version

Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Ahoj, v dlouho očekávané soutěži si tentokrát vyzkoušíte vytvořit zvýrazňovač syntaxe jazyka HTML. Nebojte se, není to zas tak složité. Aplikace musí být buďto ve Windows Forms nebo ve WPF, ze zkušenosti doporučuji použít Windows Forms a RichTextBox ( http:// ). Snažte se o co nejrychlejší algoritmus, ideálně by měl fungovat na 1 průchod HTML kódem.

Pokročilejší mohou přidat rozpoznání tagů style a script, uvnitř kterých se bude zvýrazňovat syntaxe CSS a JavaScriptu.

Pro jakékoli dotazy je dost místa v komentářích.

Čas si dáme do neděle 22.6.2014 do 23:00. Vyhodnocení by mělo být v pondělí odpoledne/večer.

Kompletní pravidla soutěží: http://www.itnetwork.cz/…outezi-machr
Pozn.: Prosím odevzdávejte to v zazipované složce, ať to nemusím rozbalovat nějakou webovou službou

Odpovědět  +3 17.6.2014 16:09
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
KlimiCZ:

Konečně machr pokusím ze zucasnit :)

Nahoru Odpovědět  +1 17.6.2014 16:14
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
KlimiCZ:

Az to budu mit tak to mam dat sen do vlakna ?

Nahoru Odpovědět 17.6.2014 16:16
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na KlimiCZ
Zdeněk Pavlátka:

Můžeš to dát sem, nebo mi to poslat do zpráv.

Nahoru Odpovědět  +1 17.6.2014 16:27
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:

Zrovna dnes mi přišly z výroby nové placky s ITnetwork :) Samolepky bohužel ještě nemám, ale budou taky.

Nahoru Odpovědět  +5 17.6.2014 16:28
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Ondrca:

Je jedno jakou barvou co obarvím?

Nahoru Odpovědět 18.6.2014 20:14
Zase jsem o něco chytřejší
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Ondrca
Zdeněk Pavlátka:

Je to jedno, ale snaž se to nepřehnat s počtem barev ;)

Nahoru Odpovědět 18.6.2014 20:37
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
KlimiCZ
Člen
Avatar
KlimiCZ:

Hele nevíte kde je html keywords všechni ?

Nahoru Odpovědět 21.6.2014 13:16
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na KlimiCZ
Jan Vargovský:

http://www.w3schools.com/…f_byfunc.asp

Ale nevím jestli je dobrý nápad, že mu dáš seznam klíčových slov a přebarvíš je :)

 
Nahoru Odpovědět 21.6.2014 13:26
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na Jan Vargovský
KlimiCZ:

až teď jsem zjistil že je to nad moje síly :(

Nahoru Odpovědět 21.6.2014 13:50
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na KlimiCZ
Jan Vargovský:

Já to teď dopsal no :) za chvíli to upnu, se můžeš kouknout.

 
Nahoru Odpovědět 21.6.2014 14:30
Avatar
KlimiCZ
Člen
Avatar
Nahoru Odpovědět 21.6.2014 15:08
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:
http://leteckaposta.cz/998437559
Editováno 21.6.2014 21:13
 
Nahoru Odpovědět  +1 21.6.2014 21:10
Avatar
nulam
Člen
Avatar
nulam:

Netuším jak si to obstojí z profesionální pohledu(tipuju že nic moc :[), ale tak tady to je :)

http://leteckaposta.cz/479680044
Editováno 22.6.2014 13:47
 
Nahoru Odpovědět 22.6.2014 13:46
Avatar
dave_23
Člen
Avatar
dave_23:

tak jsem taky zkusil svého prvního machra...snad se za to nebudu muset moc stydět :D a snad nevadí, že jsem to zplácal ve VB :[

http://leteckaposta.cz/246089313
 
Nahoru Odpovědět  +1 22.6.2014 14:05
Avatar
Odpovídá na Jan Vargovský
Jakub Lásko[Saarix]:

Docela šlusný ranec kódu a funguje to pěkně ;)

Nahoru Odpovědět 22.6.2014 21:08
Časem je vše možné.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Jakub Lásko[Saarix]
Jan Vargovský:

Jo, nějak to nabobtnalo :D ale zas to umí poznat i jestli ten kód je vpohodě nebo ne.

 
Nahoru Odpovědět 22.6.2014 21:28
Avatar
Lukáš Křehula
Redaktor
Avatar
Odpovídá na nulam
Lukáš Křehula:

Ahoj, díval jsem se na tvou práci, celkem pěkné, ale vypadá to, jako kdyby jsi to vůbec nevyzkoušel :/
Zapni automatické obarvování a zkus třeba zadat (bez uvozovek) "<>><", spadne ti to s chybou. :)

 
Nahoru Odpovědět 22.6.2014 23:42
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Lukáš Křehula
Jan Vargovský:

To určitě spadne i mi, protože je to nevalidní :)

 
Nahoru Odpovědět 22.6.2014 23:50
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Jé to je účastníků, udělali jste mi radost :) během dne se na to podívám, do večera tu budou výsledky ;)

dave_23 : VB sice moc nemusím, ale zkusím to nějak přelouskat ;)

Nahoru Odpovědět 23.6.2014 6:44
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
nulam
Člen
Avatar
Odpovídá na Lukáš Křehula
nulam:

Já jsem to dokonce i opravil, ale stejně jsem sem nahodil špatnou verzi :D Jestli můžu teda mírně pozměnit moji submission :)

http://leteckaposta.cz/749709321
 
Nahoru Odpovědět 23.6.2014 8:45
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Takže. Rozhodl jsem se hodnotit pomocí bodů. Body se daly získat za: kód, výsledný vzhled aplikace, funkčnost a rychlost. Za každou věc bylo max 5 bodů, takže celkem bylo max 20.

Jan Vargovský : 18 bodů
kód - 5b - velmi přehledný, rozdělený do tříd, krásný algoritmus na parsování kódu
vzhled - 4b - opravdu pěkný, ale jako editor moc užitečný není
funkčnost - 4b - bez problémů obarví a navíc i naformátuje kód, jen použitelnost je celkem nízká
rychlost - 5b - rychlost je opravdu skvělá, dokonce měříš dobu trvání :)

martinsakra : 15 bodů
kód - 4b - Celkem pěkný, jen ho to chtělo oddělit do zvláštní třídy. Líbí se mi to použití BackgroundWorkeru.
vzhled - 1b - Jediné plus je přehlednost, v tomhle se opravdu člověk neztratí. Jinak je to nic moc, mohl jsi to alespoň nějak lépe rozmístit. Když zmenším okno, tlačítka zmizí.
funkčnost - 5b - funguje to výborně, obarvuje změněnou část - to se mi na tom moc líbí, nenašel jsem žádnou chybu
rychlost - 5b - díky BackgroundWorkeru se aplikace neseká a obarvování neruší při práci

dave_23 : 10 bodů
kód - 3b - Visual Basicu sice moc nerozumím, ale něco jsem z toho vyčetl. Takže. Určitě není dobré pojmenovávat seznamy podle barev místo podle obsahu. Např. List s komentáři pojmenovaný jako "zeleny".
vzhled - 3b - stejný jako martinsakra, jen v češtině :) při změně velikosti se ale pohybujíi tlačítka, takže je to o něco lepší.
funkčnost - 1b - při změně kódu jsou z nějakého důvodu posunuté barvy (obrázek: https://www.dropbox.com/…16.28.21.png )
rychlost - 3b - není špatná, ale neobarvuje bez kliknutí na tlačítko

nulam : 9 bodů
kód - 2b - Není nejhorší, ale chtěl by oddělit do zvláštní třídy. Vadí mi tam jen

Math.Floor((double)(Regex.Matches(code, ">").Count + Regex.Matches(code, "<").Count)/2)

v podmínce cyklu. Když se code nemění, je naprosto zbytečné to počítat stále znovu. nevíc nechápu ten převod na double a následné zaokrouhlení. Pokud chceš vždy zaokrouhlit dolů, stačí ti celočíselné dělení.
vzhled - 3b - celkem pěkný, je zablokována změna velikosti, takže rozložení nelze "rozbít"
funkčnost - 3b - při zapnutí automatického obarvování se na chvíli sekne, při psaní projíždí celý kód, takže musí člověk po každém znaku čekat
rychlost - 1b - hodně špatná, problémy popsány výše

Nejvíce se mi líbil výtvor Jan Vargovský , ale moc pěkně fungoval i program od martinsakra . Oba tam měli nějaký nedostatek, ale nikdo není dokonalý. Publikujte tedy svoje výtvory a napište si x o placku.

Editováno 23.6.2014 16:49
Nahoru Odpovědět  +2 23.6.2014 16:48
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Jan Vargovský:

Já to nedělal jako editor, ale jednoduché obarvení + formátování html, takže ono to vypadalo 99% času jen jako 2 holé texty, jeden defaultní a druhý mnou upravený. Pak jsem tam jen něco přidal, aby se to lépe testovalo.

martinsakra hodíš sem link na to tvoje? rád bych se podíval, jak jsi to řešil :)

Editováno 23.6.2014 17:30
 
Nahoru Odpovědět  +1 23.6.2014 17:29
Avatar
martinsakra
Redaktor
Avatar
Odpovídá na Jan Vargovský
martinsakra:

taky jsem dělal jenom zvýraznění, a pravda gui jsem moc nedal (to že při resize zmizeli buttony je chyba co opravim)

  • přišlo mi že kvuli 3 metodám dělat třídu (která stejně pracuje s Richtextboxem je kanon na vrabce :D

odkaz máš tu:
http://leteckaposta.cz/298148444
uploadnu verzi z tim nedodělkem v GUI

Nahoru Odpovědět 23.6.2014 17:47
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na martinsakra
Jan Vargovský:

Jsem si stáhl main page odsud (1200 řádků) a celý ten proces i s formátováním textu mi trval cca sekundu (říkal jsem si, že je to totálně pomalé jen tak btw :) ), kdybych to hodil někde na samostatné vlákno a přidávání do toho rtb asynchronně, tak by to bylo i celkem slušné. Zatímco u tebe to skrz ten regex chroustalo asi 2 minuty :D (celá appka zamrzla)

Editováno 23.6.2014 18:12
 
Nahoru Odpovědět  +1 23.6.2014 18:12
Avatar
martinsakra
Redaktor
Avatar
Odpovídá na Jan Vargovský
martinsakra:

práve proto to umí tu krásnou funkci když html píšeš postupně tak ti to zvýraznuje postupně každý slovo který si dopsal :D a ano vypadá to že tvoje procházení polem, je rychlejší než můj regex (což není moc překvapení),ale zase výměním regex a hned mi to bude validovat co potřebuju (při kvalitním regexu)

Nahoru Odpovědět 23.6.2014 18:22
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
coells
Redaktor
Avatar
Odpovídá na martinsakra
coells:

Pro mě by to překvapení bylo. Regex v C# je obvykle rychlejší než naivní procházení polem, protože C# vytváří regulární automat na úrovni CIL. Stačí ho správně napsat a použít.

 
Nahoru Odpovědět  +1 23.6.2014 19:02
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
Zdeněk Pavlátka:

Jan Vargovský a martinsakra : změna, placky budu posílat já, takže mi pak do PM napište adresy, kam to mam poslat

Nahoru Odpovědět 23.6.2014 19:09
Kolik jazyků umíš, tolikrát jsi programátor.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 28 zpráv z 28.