Dnes jsem dokoncil svuj dalsi program, tentokrat velmi uzce souvisejici a spolupracujici s mym hostingem www.sunamo.net , jak uz nazev jiste napovida. Tento program vypada nejak takto:
Ty horni ToolStripMenuItem’#x2122;s zatim nic nedelaji, krome Aplikace, ktera zobrazuje form Logu. Program zatim neni vicevlaknovy, takze kdyz aplikace dela nejakou operaci nebo se v nejake metode zdrzi, tak se program zasekne/zasedne a jde ho jen ukoncit. Stejne tak ve spodni liste, jak tam jsou ty 2 progress bary a popisek “Total: “ se zatim nic neodehrava. To je proto ze program si nezjisti nejdrive co vsechno bylo zmeneno a az pak uploaduje nebo maze se hostingu, on to dela prubezne. Namet na vylepseni!
Zbytek ale co vidite je plne funkcni. Ta mala oblast logu s jedinou zpravou je tak chuda proto ze jsem prave ted ten program spustil a krom toho toto pisu v aute, kde neni pripojeni k internetu takze se program pokusi prvne nalogovat na ftp server a kdyz se mu to nezdari, tak uz dalsi metody (s loginem a heslem, presun do adresare, atd.) vynecha.
Jak uz jsem psal v minulem blogpostu http://sunamoblog.blogspot.cz/2012/12/weby-kocicky-i-ggdag-na-novych-adresach.html , kazdy web ma nyni svou slozku, ktera je “izolovana” od ostatnich slozek jinych webu. Izolovana ve smyslu ze pokud v teto slozce je nejaky kod ktery vyuziva i jiny web, tak tento kod presunu do slozky Shared.
To zarucuje ze kdykoliv budu chtit libovolny web “odstavit” tak staci vymazat jen jednu slozku. Samozrejme mi tam zustanou DB polozky, css styly a obrazky ktere jsou v jinych slozkach ale pokud budu chtit pouze zmenoznit pristup na nejaky web, staci v rychlosti odstranit nebo prejmenovat jedinou slozku. To je ale jen takovy Bonus, skutecne plus je to ze nemam vsechny soubory aspx v jedne slozce a muze mit vice webu stejne pojmenovanou stranku.
Toto jsem tak zevrubne popsal, protoze je to dulezite abyste vedeli co budou delat jednotlive tlacitka, kazde z tech 8. Vetsina jich, stejne jako 1. si rozdeli slozky a podslozky podle toho co se s nimi ma udelat a pak to s kazdou touto slozkou udela. Existuje i akce “nedelej nic se slozkou” a to jak rekurzivne tak pouze “lokalne”. Pokud je takova akce tak ji nemuze nikdo ignorovat.
Prvni tlacitko uploaduje vsechny weby vybrane v te liste, jak tam jsou ty 4 ikonky. 2 tlacitko uploaduje i weby nevybrane. Treti tlacitko obnovi seznam souboru v levem TreeView(stromu). On se stejne vzdycky obnovuje automaticky kdyz chci synchronizovat zmeny ale pokud ho chci obnovit rucne, tak taky muzu. 4. talcitko je hodne dulezite kdyz jsem na hosting nauploadoval pomoci jineho FTP klienta a mam tak zastarale udaje v DB o souborech na hostingu.
5. tlacitko odstranuje nepouzivane soubory na hostingu, ktere nejsou na localu ale necha prazdne slozky – resp. nekontroluje ktere slozky zustali prazdne. 6. tlacitko je podobne s tim rozdilem ze po odstraneni vsech souboru z dane slozky si zkontroluje zda slozka neni prazdna a pokud je, tak ji odstrani.
7. tlacitko je podobne 1., funguje na stejnem principu ale nezjistuje si z FTP serveru ktere soubory na hostingu jsou ale z DB. To cely proces vyrazne urychluje. 8. tlacitko je podobne 2. protoze opet uploaduje vsechny weby a informace o tom co je na hostingu si bere z DB.
Vyvoj tohoto programu mi trval celkove asi 3 dny, to neni moc ale mezi jednotlivymi casy byly dlouhe pauzy kdy jsem nic nedelal, takze jsem jej co se tyka casoveho intervalu vyvijel asi 8 dni. Z pocatku tam byla dlouha casova pauza nekolik dnu, pak jsem za 1 den ho prakticky cely dokoncil, ale pak jsem zjistil ze mi nefunguje upload na web(ta trida kterou jesm pouzil posilala primo nizkourovnove sockety a nepracoval s tridou FtpWebRequest). Tak jesm to nahradil tu metodu pro upload metodou pouzivajici FtpWebRequest.
To pomohlo ale pozdeji jsem zase prisel nato ze mi nefunguje metoda, ktera posila FTP prikaz LIST(Detailni vypis adresare). Sice jsem s tim trochu cachroval protoze mi to vracelo 226 Transfer Complete a prece to hazelo chybu ale nakonec jsem to vyresil tak ze jsem pouzil osvedcenou metodu s FtpWebRequest.
Pak se to jiz rozjelo, posledni vec co jsem ja delal bylo ta prace s databazi, a samozrejme ladeni a testovani. Je to naprogramovane hodne ledabyle, chaoticky a spoustu veci by slo presunout do samostatnych metod a vyuzivat je casteji, misto toho abych to ja psal pokazde znovu, coz by mi na jedne strane zvysilo abstrakci a delku vykonavani kodu, na druhe strane program by byl cistci, jasnejsi, spravovatelnejsi.
Mnozstvi kodu by se taky mirne snizilo.