Anonymní profil LukoSS – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil LukoSS – Programujte.comAnonymní profil LukoSS – Programujte.com

 

Příspěvky odeslané z IP adresy 88.103.252.–

LukoSS
.NET › Získaní ID před automatickým…
3. 8. 2015   #203971

#10 Kit
Na to mazání visejících záznamů v databázi? Na to by session asi stačil, to je fakt.

Pokud jde o to tvé řešení s transakcí - to není moc dobrý nápad, protože by bylo potřeba udržovat otevřené připojení do DB do doby, než uživatel záznam vloží/odejde ze stránky. A kvůli tomu by zase bylo potřeba prodloužit timeout, aby se to připojení po chvíli neuzavřelo. Faktem ale je, že si nedokážu představit situaci, ve které by mělo smysl znát dopředu ID záznamu, který se teprve bude vytvářet, takže bych to asi více neřešil   

LukoSS
.NET › Získaní ID před automatickým…
3. 8. 2015   #203965

Pokud by bylo opravdu potřeba vědět ID již při příchodu na stránku, tak to je také možné řešit třeba takto:

  1. Po příchodu na stránku vytvořit prázdný záznam v databázi, ideálně s nějakým příznakem, podle kterého bude možné poznat, že tento záznam je pouze rozpracovaný.
  2. Po stisknutí tlačítka pro vložení provést pouze update připraveného záznamu.

Vhodnost tohoto řešení ale záleží na konkrétní situaci. Jelikož se může stát, že uživatel přijde na stránku a pak z ní hned zase odejde, tak by bylo potřeba po nějaké době mazat takovéto "neplnohodnotné" záznamy, aby se nehromadili v databázi.

LukoSS
.NET › Vytvoření třídního diagramu…
23. 2. 2015   #199535

Stačí v diagramu pravým tlačítkem kliknout na konkrétní proměnnou a dát Show as association, případně Show as collection association, viz tahle odpověď na StackOverflow. Bohužel to vypadá, že to nejde udělat nějak hromadně v celém diagramu..

LukoSS
JavaScript, AJAX, jQuery › Type script volání private m…
9. 12. 2014   #197041

#1 ondra
Koukni sem. Zkráceně - this odkazuje na JavaScriptový objekt window (tak jako v klasickém JavaScriptu). Jelikož window.refresh neexistuje (je undefined), tak ti to vyhodí chybu, že není možné zavolat funkci undefined. V tom odkaze najdeš řešení, díky kterému je možné to this použít (obalení do lambda výrazu).

#2 peter
TypeScript (nebo případně i CoffeeScript) se dnes docela běžně používá, možná by stálo za to kouknout na google a doplnit si znalosti   

LukoSS
Offtopic › Je reálné pracovní zařazení…
25. 11. 2014   #196473

#1 Matěj Andrle
Programátorů rozhodně dostatek není. Na druhou stranu je spousta lidí, kteří si myslí, že umí programovat. Už jsem na pohovorech viděl hodně lidí, kteří nebyli schopní napsat jednoduchý program na 50 řádků kódu tak, aby nepadal, a aby to mělo hlavu a patu. Někteří z nich měli dokonce VŠ a byly z oboru..

Vím, že ty zjevně programovat umíš, ale upřímně si nedokážu představit, že bych s tebou měl spolupracovat na něčem reálném. Neustále si tady na fóru stěžuješ na "prasekód", což je pro tebe vše, co není na 100% tak, jak bys to napsal ty. Jenže člověk se v praxi musí často vrtat v kódu, který psalo opravdové prase, a není možné se v něm pomalu vyznat. Jindy je potřeba určitou část systému optimalizovat, což často odporuje čistému, objektovému řešení. Zkrátka není možné vždy vše dělat tak, aby to dodržovalo všechny teoretické poučky, které najdeš na internetu..

Taky jsem si všiml, že se často snažíš optimalizovat úplně vše, i když to třeba vůbec nedává smysl (nedávno jsme se třeba bavili o tom, že je podle tebe lepší 16x rozkopírovat skoro stejný řádek, protože for cyklus je pro tebe zbytečně neefektivní). V reálu ale nikdo nemá čas optimalizovat kód, který se spustí když někdo klikne na nějaké skoro nepoužívané tlačítko. Je potřeba včas dodat program zákazníkovi. Čím víc času se stráví zbytečnostmi, tím více se program prodraží (a tím víc bude zákazník naštvaný).

Práce mám víc než dost, ale tebe bych si k sobě nejspíš nevzal, protože mám pocit, že spolupracovat na jednom projektu bychom spolu nemohli, a kdybych ti svěřil celý projekt, tak jej dokončíš za dvojnásobek času, než kolik je zákazník ochotný zaplatit.

Zkrátka, není to jen o tom, jestli máš školu nebo jestli umíš programovat.

LukoSS
JavaScript, AJAX, jQuery › Tetris - kritika
30. 9. 2014   #194427

#11 Matěj Andrle
Vy byste vše řešili jen cykly. Já nechci plácat výpočetním výkonem - když předem znám počet a ten počet není zase tak velký.

No jestli ti je pár ušetřených nanosekund přednější než čitelnější kód, tak si asi budeš práci hledat těžko. Ne nadarmo se předčasná optimalizace uvádí jako jedna z nejčastějších začátečnických chyb. Optimalizace má smysl jen v případě, kdy některá část kódu výrazně brzdí zbytek programu.
Navíc si trochu protiřečíš, protože v kódu máš mimo jiné třeba tohle: 

for(var width = 0; width < 10; width++)
    cells[width].style.backgroundPosition = "";

Není podle tvé logiky lepší tenhle cyklus smazat a dát tam 10x stejný řádek?

LukoSS
JavaScript, AJAX, jQuery › Tetris - kritika
29. 9. 2014   #194410

#1 Matěj Andrle
Chceš kritiku, máš ji mít  No a jelikož jsme na programátorském fóru, tak se koukneme na kód. Zdroják je docela čitelný a hra bez problémů funguje. Následující výtky proto ber spíše jako rady do budoucna.

Trochu mi v kódu vadí spousta magických čísel, např.:

...
case 19:
case 80:
    pause();
...

Je jasné, že jde o kódy kláves 'p' a 'pause', ale vždycky je lepší si to hodit jako konstanty. Trochu horší už je to tady:

...
for(var row = 3; row < 22; row++)
if(testRow(row))
{
    removeRow(row);
...

Na první pohled není úplně jasné, proč procházíš zrovna řádky 3 - 22. Stejně tak není jasné, proč má být řádek smazán, protože testRow nic moc neříká o tom, co se ve funkci děje. Jestliže do této funkce nahlédnu...

function testRow(row)
{
    var cells = canvas.rows[row].cells;
    return cells[0].style.backgroundPosition && cells[1].style.backgroundPosition &&
    cells[2].style.backgroundPosition && cells[3].style.backgroundPosition &&
    cells[4].style.backgroundPosition && cells[5].style.backgroundPosition &&
    cells[6].style.backgroundPosition && cells[7].style.backgroundPosition &&
    cells[8].style.backgroundPosition && cells[9].style.backgroundPosition;
}

... tak pokud bych JS (případně CSS) moc neovládal, tak stejně nebudu vědět, proč v ní testuješ backgroundPosition na true. A i když JS ovládám (a vím, že převádí neprázdný řetězec na true), tak musím projít celý zdroják, abych pochopil, o co jde. A upřímně si stejně nejsem zcela jistý jestli rozumím správně tomu, že testuješ jestli je v každé buňce řádku kostka. Takže vhodnější název funkce a obalení toho checkování backgroundPosition do samostatné funkce (třeba s názvem isCellOccupied()) by rozhodně přispělo k větší čitelnosti.
V té funkci je ještě jedna věc, kterou bych vytkl - proč v ní nepoužít for cyklus? Je tam 10x to samé, jen s jiným indexem. Stejné je to třeba tady: 

...
previewElement.rows[0].cells[0].style.backgroundPosition = tmpTetromino[0];
previewElement.rows[0].cells[1].style.backgroundPosition = tmpTetromino[1];
previewElement.rows[0].cells[2].style.backgroundPosition = tmpTetromino[2];
previewElement.rows[0].cells[3].style.backgroundPosition = tmpTetromino[3];
previewElement.rows[1].cells[0].style.backgroundPosition = tmpTetromino[4];
previewElement.rows[1].cells[1].style.backgroundPosition = tmpTetromino[5];
previewElement.rows[1].cells[2].style.backgroundPosition = tmpTetromino[6];
previewElement.rows[1].cells[3].style.backgroundPosition = tmpTetromino[7];
...

Je to jen část, celkem tam máš 16 takovýchto řádků, ve kterých se děje to stejné.

Ať ale jen nekritizuju, tak musím uznat, že použití tabulky na vykreslení hrací plochy je docela chytré. Věřím, že by spousta lidí použila canvas, protože ten je dnes v módě...

LukoSS
.NET › Vývojoví Diagram
17. 9. 2014   #194054

#10 Kit
Už delší dobu koukám na tvoje příspěvky tady na fóru, a tohle je jen potvrzení toho, co jsem si myslel. Oba máme k programování jiný přístup. Ty máš v hlavě hromadu pouček, které se snažíš za každou cenu vždy použít. Já se podívám, a když vidím, že jde o jednoduchý příklad, takže jej jednoduše vyřeším. A řešit znovupoužitelnost u kódu, který bude v praxi na 3 řádky opravdu nehodlám.

Začátek a konec se u vývojových diagramů běžně uvádějí. Nebo jsem se to aspoň před pár lety učil ve škole. A když se podívám a původní Matějův příspěvek, tak se to tak zjevně učí i oni.

SRP bych sem vůbec netahal. SRP je o tom, že má mít každá třída pouze jednu odpovědnost. Tady se bavíme o vývojovém diagramu, který slouží na zjednodušené popsání algoritmu. Vůbec se neřeší, jestli bude pak implementován objektově, procedurálně nebo funkcionálně (nebo jestli bude vůbec implementován). Bavíme se o primitivním školním příkladu, který má začátečníky uvést do programování.

LukoSS
.NET › Vývojoví Diagram
17. 9. 2014   #194051

#5 Kit
Ano, fórum tu není od toho, abychom druhým řešili úkoly. Je tu od toho, aby, když se někdo zeptá, tak abychom mu odpověděli/nasměrovali správným směrem. Jelikož je zcela jasné, že jde o nějaký úkol do školy, tak byl ten tvůj první příspěvek obsahově úplně prázdný. Proto jsem psal, že když není co říct, tak je lepší mlčet.

Zkus trochu rozvést, proč by se podle toho diagramu nedal program napsat správně. Rád se něco přiučím.

LukoSS
.NET › Vývojoví Diagram
17. 9. 2014   #194046

#2 Kit
Víš, že je lepší mlčet, když nemáš co říct? Nebo si se snad snažil říct, že má tazatel jít za učitelem a říct mu, že domácí úkol nemá, protože se vývojové diagramy už nedělají? Psaním nazpaměť naučených pouček nikomu nepomůžeš.

#1 MatějH
Vývojový diagram by mohl vypadat třeba takto:

Připojen obrázek.

LukoSS
.NET › Jak se dostat k typu button
12. 4. 2014   #189197

Odkaz na tlačítko asi nijak snadno vytáhnout nepůjde, ale zde se řeší změna barvy a je tam i několik možných řešení..

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý