Ááá

Další web používající WordPress

Led

3

Rok 2008

Rozhodl jsem se shrnout svůj vývoj na poli programování. Vzhledem k tomu, že si na to najdu čas sotva pár hodin týdně a někdy ani to ne, tak je toho docela dost.

Začátkem roku jsem si začal psát vlastní PHP framework, vycházející ze vzoru Page Controller.

Pak jsem si napsal i vlastní testovací nástroj. Na Simpletestu i PHPUnit mi z několika důvodů vadilo, že se testy spouští postupně v jednom vlákně. Tak jsem si ubastlil takový ošklivý skript, který ajaxem posílal kupu požadavků na provedení jednotlivých testů.

Bylo to o něco rychlejší, testy byly lépe izolované a navíc jsem tím měl i trochu ošetřenou thread safety: Kdyby nějaký kód nebyl thread safe, tak by se to pravděpodobně projevilo ještě při testech.

Na jaře jsem se zasekl, protože se mi začaly hromadit duplicity mezi Modelem a View a nevěděl jsem, co s tím. Pořád nevím…

Do toho jsem začátkem srpna přešel od PHP k Javě. Tím jsem veškeré dosavadní výtvory zahodil (tak moc toho zas nebylo :-) ).

Koncem srpna jsem přešel od Javy k .NET, protože na malé webové projekty se Java nehodí.

Od té doby se tak trochu plácám. ASP.NET se dá do vysoké míry přizpůsobit, ale ne vždy je snadné přijít na to, jak.

Hodně času jsem třeba strávil tím, že jsem chtěl testovat instance stránek. Představoval jsem si testy, které by probíhaly přibližně takto:

  • Vytvořit instanci stránky "~/default.aspx".
  • Provést request.
  • Ověřit, jestli vlastnosti určitých controlů nabývají správných hodnot.

To se mi do jisté míry podařilo, ale byl to porod a pořád ještě nevím, jak nasimulovat třeba POST request. Navíc po proběhnutí testu občas vylétá jakási výjimka. (Viz ASP.NET fórum.)

A takhle je to se vším. Jakmile se rozhodnu dělat něco jenom trošku jinak než je obvyklé, tak narazím…

This entry was posted by LLook on 17:50, Led 3rd 2009 and filed in Nezařazené.

Komentáře můžete sledovat přes RSS 2.0 kanál.

Komentářů už je 17. :-) to “Rok 2008”

  1. Avatarv6ak
    Posted: Led 3rd, 2009 at 18.12
    1

    „Na jaře jsem se zasekl, protože se mi začaly hromadit duplicity mezi Modelem a View a nevěděl jsem, co s tím.“
    To si neumím představit. Můžeš specifikovat? Třeba z toho budou cenné zkušenosti.

  2. AvatarLLook
    Posted: Led 3rd, 2009 at 18.35
    2
    Author Comment

    Mám tím na mysli to, že struktura formulářů dost kopíruje strukturu dat v databázi. Ne tolik, aby se formuláře daly generovat podle struktury dat (nebo naopak), ale dostatečně na to, aby většinu změn v té struktuře bylo potřeba zanést i do formulářů a jejich zpracování.

  3. Avatarv6ak
    Posted: Led 3rd, 2009 at 22.26
    3

    Tak s tím jsem se už setkal. Přemýšlel jsem nad tím. Nijak automaticky to nejde, takže by to mohlo řešit asi jen IDE: Přidám sloupec do databáze a nabídne mi i úpravu formulářů. Bylo by to ale asi celkem těžké napsat. A byl by trochu problém s univerzalitou.
    Co ale jde, je někdy do jisté míry spojit editační formulář, vkládací formulář a tabulku, ve které je obsah. Záleží pochopitelně na konkrétních požadavcích.

  4. Avatarv6ak
    Posted: Led 4th, 2009 at 8.54
    4

    On by to možná nemusel být až takový problém. Stačilo by pomocí nějakých anotací říct, co jak mapuje co, a nebyl by problém s různými vyššími vrstvami.

  5. Avatarsh
    Posted: Led 4th, 2009 at 23.50
    5

    No symfony (nebo spis propel?) prave formulare generuje na zaklade databaze resp. jeji specifikace a pak je moznost prvky ve zdedene tride formu upravit. Samotne generovani vuziva maximum informaci takze se pomerne malokdy stane ze se musi neco prepisovat „rucne“. Popisky a chybovy stavy rovnou prekladam z defaultnich hlasek vedle v I18N. Na druhou stranu je to cely strasne megalomansky, ale funguje to :)

  6. Avatarv6ak
    Posted: Led 5th, 2009 at 5.41
    6

    [5] No dobře, ale co po úpravě? To už je potřeba ručně, ne? Na to by se právě IMHO hodilo něco v IDE.

  7. Avatarsh
    Posted: Led 6th, 2009 at 2.13
    7

    Pokud se přidává, tak problém nemáš – přegeneruje se ti i „základní“ třída (např. BaseCustomerForm) a ve formuláři se ti prostě objeví novej prvek. Pokud ubereš z db zrovna prvky, co ve svojí zděděné třídě(CustomerForm) upravil tak tě to samozřejmě zjebe, že ti ve formu asi něco přebejvá…

    Do IDE by to sice bylo hezké, nicméně stejně jako ty si to nedokážu představit naimplementované nějak „genericky“.

  8. Avatarv6ak
    Posted: Led 6th, 2009 at 6.53
    8

    To přidávání je zajímavé. Na druhou stranu to IMHO nepokryje složitější případy. Můžu něco chtít dat k dispozici jen určitým uživatelům, můžu chtít vícejazyčnost, …
    Integraci s IDE si dovedu trošku představit. Základní situace je jednoduchá: View zobrazuje třídu Modelu. Pokud mám trošku obecnější View, pak může v anotacích (nebo třeba komentářích) popisovat jak.
    BTW Tento problém se ještě IMHO promítne do Controlleru, ale to by šlo vyřešit stejně.

  9. Avatarsh
    Posted: Led 6th, 2009 at 18.32
    9

    No i to je poměrně elegantně řešitelné – vytvoříš třeba PersonalCusto­merForm extends CustomerForm … a v něm jenom unsetneš nebo změníš jeden nebo víc prvků třeba. Vícejazyčnost se řeší interně i18n což do formu nezasahuje…

  10. AvatarLLook
    Posted: Led 6th, 2009 at 20.52
    10
    Author Comment

    Řekněme, že budu chtít část formuláře rozdělit do dvou sloupců a zbytek dát pod to:

    fakturační údaje adresa dodání (pokud se liší)
    ostatní údaje

    Jak si s tímhle poradí Symfony Forms?

  11. Avatarsh
    Posted: Led 7th, 2009 at 1.39
    11

    Neporadí, resp. podle slov vývojářů je „echo $form“ jen pro prototyping a forms by neměly ve finále nahrazovat templaty – ručně si to můžeš samozřejmě rozházet jak chceš. Nicméně jestli narážíš na ekvivalent zendu „display groups“ tak ty (bohužel) neumí, plánovány jsou do verze 1.3.

    Jinak je z toho imho beztak většina obšlehnutá právě od zendu, zasazená do symfony a vylepšená o generátor propelu/doctrine, nedělal bych z toho kdovíco…

  12. Avatarv6ak
    Posted: Led 8th, 2009 at 16.08
    12

    No pochybuji, že struktura databáze s komentáři může být všemocná.
    Mazání není ideální, preferoval bych přesně opačný postup.
    Lokalizace asi taky nebude tak, jak jsem si to představoval. Vpodstatě jde tedy závislosti.

  13. Avatarsh
    Posted: Led 8th, 2009 at 18.20
    13

    Databáze s komentáři? Závislosti?

  14. Avatarv6ak
    Posted: Led 9th, 2009 at 11.31
    14

    No podle čeho se řeší názvy ve formulářích? Jsou tu v zásadě dvě možnosti:

    1. vygenerovat z (pravděpodobně anglického) názvu sloupce
    2. použít z komentářů

    To řešení prostě má svá omezení na způsob zobrazení.
    Celkově mi přijde lepší, když si zvolím, jak to chci zobrazit, než když se mi to „nějak“ udělá a pak zjistím, kde všude je to jinak, než chci.
    Závislost je to, co jsem tu popisoval. V případě jazyka by ale mohlo být (v závislosti na konkrétním řešení) například povinné vyřešit závislost, zatímco u formulářů by to bylo na zvážení. Samozřejmě, není problém vymyslet, aby vývojář psal popisky třeba jen v češtině nebo angličtině a ostatní dát lokalizátorům.

  15. Avatarsh
    Posted: Led 9th, 2009 at 15.45
    15

    Aha, chápu – tak to je ta první možnost (podtržítka z názvu sloupce změní na mezery a zvětší první písmeno – má to svoje konvence). Labely u jednotlivých prvků lze samozřejmě přepsat ve formu, nicméně kouzlo je právě v tom, že píšeš vždy méně kódu, což možná vy dva neoceníte, ale já jo :)

    Přesně takhle se snaží symfony s lokalizací pracovat, základ je napsat projekt jakoby se nechumelilo. Pak nacpat pár textů ze šablon do __() a čísla, datumy, peníze do správných helperů. Spustit skript, který nakonec vyplivne standardizovaný XLIFF který se strčí překladatelům. Routingem/session vyřešíš přepínání jazyků a světě div se, je hotovo. Proto mi příjde dělat různé verze formulářů pro každý jazyk zbytečné když elegantní řešení je jinde… (tohle je jedna z věcí, která mě fakt hodně překvapila, vždycky jsem měl za to, že lokalizace čehokoliv je pain in the ass)

  16. Avatarv6ak
    Posted: Led 9th, 2009 at 22.13
    16

    No já mám takovou vizi, že bych sice měl více kódu, ale část z toho mi mi navrhlo IDE a já to jen odsouhlasil/zamítl, takže bych měl méně práce a univerzálnější řešení.

  17. AvatarJosef Strzibny
    Posted: Úno 2nd, 2009 at 15.07
    17

    To jsou mi přechody :-). ASP.NET mě celkem láká, ale nevím jestli se mi vrátí úsilí jej řádně nastudovat.

SexyComments by BorkWeb

Leave a Reply


© Ááá * WordPress * LoseMyMind * Feed feed