Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
Avatar
Zdeněk Pavlátka:17.6.2014 16:09

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
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:17.6.2014 16:14

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

Nahoru Odpovědět
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:17.6.2014 16:16

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
Odpovídá na KlimiCZ
Zdeněk Pavlátka:17.6.2014 16:27

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

Nahoru Odpovědět
17.6.2014 16:27
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Zdeněk Pavlátka
David Hartinger:17.6.2014 16:28

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
17.6.2014 16:28
You are the greatest project you will ever work on.
Avatar
Ondrca
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Ondrca:18.6.2014 20:14

Je jedno jakou barvou co obarvím?

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

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:21.6.2014 13:16

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ý
Tvůrce
Avatar
Odpovídá na KlimiCZ
Jan Vargovský:21.6.2014 13:26

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:21.6.2014 13:50

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ý
Tvůrce
Avatar
Odpovídá na KlimiCZ
Jan Vargovský:21.6.2014 14:30

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ý
Tvůrce
Avatar
Jan Vargovský:21.6.2014 21:10
http://leteckaposta.cz/998437559
Editováno 21.6.2014 21:13
 
Nahoru Odpovědět
21.6.2014 21:10
Avatar
nulam
Člen
Avatar
nulam:22.6.2014 13:46

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
Tvůrce
Avatar
dave_23:22.6.2014 14:05

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
22.6.2014 14:05
Avatar
Odpovídá na Jan Vargovský
Jakub Lásko[Saarix]:22.6.2014 21:08

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ý
Tvůrce
Avatar
Odpovídá na Jakub Lásko[Saarix]
Jan Vargovský:22.6.2014 21:28

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
Odpovídá na nulam
Lukáš Křehula:22.6.2014 23:42

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ý
Tvůrce
Avatar
Odpovídá na Lukáš Křehula
Jan Vargovský:22.6.2014 23:50

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:23.6.2014 6:44

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:23.6.2014 8:45

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:23.6.2014 16:48

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
23.6.2014 16:48
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Jan Vargovský:23.6.2014 17:29

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
23.6.2014 17:29
Avatar
martinsakra
Tvůrce
Avatar
Odpovídá na Jan Vargovský
martinsakra:23.6.2014 17:47

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ý
Tvůrce
Avatar
Odpovídá na martinsakra
Jan Vargovský:23.6.2014 18:12

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
23.6.2014 18:12
Avatar
martinsakra
Tvůrce
Avatar
Odpovídá na Jan Vargovský
martinsakra:23.6.2014 18:22

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
Tvůrce
Avatar
Odpovídá na martinsakra
coells:23.6.2014 19:02

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
23.6.2014 19:02
Avatar
Odpovídá na Zdeněk Pavlátka
Zdeněk Pavlátka:23.6.2014 19:09

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.