Czech.NET Forum - diskusnφ f≤rum v ASP.NET
Kdy₧ se objevil nßpad pou₧φt na Intervalu diskusnφ f≤rum z Microsoft ASP.net, zajßsal jsem v p°edtuÜe snadnΘ a pohodlnΘ instalace. Bohu₧el zßhy mΘ nadÜenφ vyst°φdalo zklamßnφ. Jak²mi peripetiemi f≤rum proÜlo a co vÜechno jsem musel ud∞lat, aby diskuze "b∞haly" v ΦeskΘm prost°edφ, to se dozvφte z tohoto Φlßnku.
Zcela naivn∞ jsem z www.asp.net stßhl instalaΦnφ program a spustil instalaci, kterß se m∞la o vÜe postarat - vÜechny systΘmovΘ po₧adavky jsem p°eci spl≥oval s rezervou:
- Windows 2000, XP nebo Windows 2003
- MSDE 2000 nebo MS SQL 7.0 a vyÜÜφ
- nainstalovan² .NET Framework 1.0. nebo vyÜÜφ
Z p°edstavy, ₧e f≤rum nainstaluji a bude hotovo, jsem byl vylΘΦen ihned po spuÜt∞nφ prohlφ₧eΦe. To, co jsem vid∞l, mi doslova vyrazilo dech:
Podle dokumentace k MS SQL nastßvß tato chyba v p°φpad∞, kdy se porovnßvajφ dva °et∞zce, kterΘ majφ r∙znΘ nastavenφ kolace. Podot²kßm, ₧e mßm nastavenu kolaci na Czech_CI_AS, nepou₧φvßm defaultnφ SQL_Latin1_General_CP1_CI_AS. Tu vÜak ASP.NET Forums naprosto nekompromisn∞ vy₧adujφ a p°i pou₧itφ jinΘ kolace jednoduÜe havarujφ. (Pokud se vßm tedy poda°ilo f≤rum nainstalovat a bez problΘm∙ spustit, m∙₧ete si b²t jisti, ₧e pou₧φvßte MS SQL v zßkladnφm nastavenφ vΦetn∞ kolace SQL_Latin1_General_CP1_CI_AS, kterß ovÜem nenφ pro naÜe prost°edφ vhodnß).
Aplikace zßvislß na nastavenφ serveru se pravd∞podobn∞ nejen mn∞ v∙bec nelφbφ, proto jsem se rozhodl najφt °eÜenφ, kterΘ by tuto zßvislost odstranilo. Po zdlouhavΘm hledßnφ jsem zjistil, ₧e jsou v ulo₧en²ch procedurßch databßzovΘ aplikace pou₧φvßny doΦasnΘ tabulky, kterΘ nemajφ specifikovßnu kolaci u pou₧it²ch objekt∙. A to je prßv∞ kßmen ·razu. V p°φpad∞, ₧e nenφ specifikovßna kolace, SQL server toti₧ pou₧ije kolaci podle databßze, v nφ₧ je objekt ulo₧en. Pokud vÜak pou₧φvßte doΦasnΘ objekty, nedojde k pou₧itφ kolace databßze, s nφ₧ pracujete (AspNetForums), ale kolace databßze tempdb, kterß b²vß v∞tÜinou nastavena stejn∞ jako SQL server.
Abych nechodil kolem horkΘ kaÜe - naÜel jsem chyby v nastavenφ kolace pro sloupce doΦasn²ch tabulek, kterΘ jsou pou₧φvßny v ulo₧en²ch procedurßch. Jednß se o Statistics_ResetTopPosters a forums_FindUsersByName. ProhlΘdnout si je m∙₧ete p°φmo v SQL skriptu AspNetForum.sql, kter² najdete v adresß°i, do n∞j₧ jste f≤rum nainstalovali (standardn∞ c:\AspNetForums). Proto₧e si myslφm, ₧e kolace SQL_Latin1_General_CP1_CI_AS nenφ zrovna nejvhodn∞jÜφ pro ΦeskΘ prost°edφ, upravil jsem SQL skript pro vytvo°enφ databßze, tabulek a ulo₧en²ch procedur pro kolaci Czech_CI_AS, staΦila chvilka s Notepadem.
DalÜφm problΘmem je, ₧e ka₧dΘmu nov∞ vytvo°enΘmu u₧ivateli je nastaveno ΦasovΘ pßsmo GMT-5. Proto₧e jsme vÜak ve st°ednφ Evrop∞, dovolil jsem si tuto hodnotu v tabulce user upravit na GMT+1, kterß odpovφdß naÜemu ΦasovΘmu pßsmu.
V tΘto fßzi jsme zaΦali uva₧ovat o specißlnφ mutaci ASP.NET Forums, kterß by zahrnovala vÜechny pot°ebnΘ opravy a ·pravy pro naÜe podmφnky, a dalÜφ problΘmy s f≤rem na Intervalu nßs nakonec p°esv∞dΦily o nutnosti tohoto kroku. V²sledkem je tedy instalaΦnφ balφk Czech.NET Forum. InstalaΦnφ program nenφ jeÜt∞ zcela poΦeÜt∞n, stejn∞ tak jako nemß Φeskou lokalizaci f≤rum, co₧ je ovÜem pouze otßzkou Φasu. (Na p°ekladu ji₧ pracuje jedna ze Φtenß°ek Intervalu.)
Zp∞t k instalaci. Pokud vÜe prob∞hne bez chyb, m∞li byste ve svΘm prohlφ₧eΦi spat°it obrazovku podobnou tΘto:
Po v²Üe popsan²ch ·pravßch mßte sice funkΦnφ f≤rum, bylo by vÜak vhodnΘ jej alespo≥ trochu nakonfigurovat. ╪ada polo₧ek je ulo₧ena v souboru web.config, ale jak se nßsledn∞ p°esv∞dΦφte, p°inejmenÜφm stejnΘ mno₧stvφ parametr∙ je zak≤dovßno napevno p°φmo v enginu. Cφlem dalÜφho buildu Czech.Net Forum proto bude mimo jinΘ i p°esun veÜker²ch konfigurovateln²ch polo₧ek prßv∞ do souboru web.config, prozatφm ovÜem budete muset postupovat podle nßsledujφcφho nßvodu.
Jako prvnφ byste m∞li zm∞nit heslo sprßvce konference (standardn∞ mß jmΘno Admin/admin), i kdy₧ daleko lepÜφ by asi bylo vytvo°it zcela jinΘho u₧ivatele se stejn²mi prßvy.
Zcela jist∞ budete chtφt, aby se vaÜe f≤rum jinak jmenovalo a b∞halo na ·pln∞ jinΘ adrese. Toho dosßhnete pomocφ parametr∙ siteName a urlWebSite. A pokud p°edpoklßdßte, ₧e se v∞tÜina vaÜich u₧ivatel∙ fyzicky vyskytuje ve st°ednφ Evrop∞, m∙₧ete rovnou zm∞nit nastavenφ dbTimeZoneOffset na hodnotou +1, mφsto p°eddefinovanΘ -5, kterß odpovφdß v²chodnφmu pob°e₧φ USA (v instalaci Czech.NET Forum ji₧ tato ·prava zanesena je).
<add key="urlWebSite" value="http://www.forum.cz" />
<add key="dbTimeZoneOffset" value="+1" />
V souboru web.config m∙₧ete sice nastavovat formßt data a Φasu, ale bohu₧el vßm to na °ad∞ mφst nebude moc platnΘ, jeliko₧ auto°i ASP.NET v∞tÜinou formßt natvrdo zadali p°φmo v enginu f≤ra. Pokud tedy budete chtφt pln∞ modifikovat formßty zobrazenφ pomocφ nφ₧e uveden²ch parametr∙, nezb²vß vßm nic jinΘho, ne₧ si engine p°epsat nebo si poΦkat na dalÜφ build z dφlny redakce Intervalu. (Mimochodem, do enginu je zcela nesmysln∞ zak≤dovßna takΘ °ada text∙!!!)
<add key="defaultTimeFormat" value="hh:mm tt"/>
CelΘ ASP.NET Forums zkrßtka obsahuje °adu chyb a nedod∞lk∙, kterΘ se vßm budeme sna₧it nejen ukßzat, ale i nabφdnout jejich °eÜenφ. Samoz°ejm∞ nejsme vÜev∞doucφ a nenφ v naÜich silßch odhalit vÜechny problΘmy Φi dokonce je um∞t vÜechny hned vy°eÜit. Pokud n∞kdo z vßs objevφ chybu a bude ji um∞t opravit, uÜet°φ nßm mno₧stvφ prßce, zv²Üφ kvalitu naÜeho Interfora a zßrove≥ prosp∞je ostatnφm Φtenß°∙m, kte°φ se rozhodnou vyu₧φt naÜe Czech.NET Forum v rßmci sv²ch www-projekt∙.
Zßkladnφ zm∞ny provedenΘ v prvnφm buildu Czech.Net Forum oproti ASP.NET Forums, aby jej bylo v∙bec mo₧no nainstalovat:
- adresß° s aplikacφ p°ejmenovßn na CzechNetForum
- pou₧itß databßze p°ejmenovßna na CzechNetForum
- v databßzi zm∞n∞na kolace na Czech_CI_AS
- ΦasovΘ pßsmo nastaveno na st°ednφ Evropu (GMT+1)
Nakonec jeÜt∞ jedna maliΦkost. UrΦit∞ bude °adu z vßs zajφmat, zda lze zprovoznit Czech.NET Forum na hostingu, kdy₧ instalaΦnφ program neumo₧≥uje nainstalovat aplikaci jinam ne₧ na lokßlnφ stroj. F≤rum na hostingu samoz°ejm∞ pou₧φt lze, budete ale muset provΘst celou konfiguraci ruΦn∞ a mφt p°itom na pam∞ti, ₧e se databßze bude muset jmenovat ·pln∞ jinak (zcela jist∞ ji budete mφt ji₧ od provozovatele vytvo°enu). Pokud bude o detailnφ postup zprovozn∞nφ f≤ra na hostingu vΦetn∞ upraven²ch SQL skript∙ zßjem, budu o Φlßnku na toto tΘma vß₧n∞ uva₧ovat.