pondělí 1. prosince 2008

SW je down

Právě v této chvíli, poprvé v historii placenýho hostingu, a ne mou chybou.
A už je zpátky...

Malý krůček pro SW...

Možná jste si všimli nového skinu SW. Doufám že se vám líbí. Je to vlastně pokus o co nejvěrnější kopii toho jak vypadalo MM... (kromě obrázků, samozřejmě, jejich počet chci v samotném layoutu udržet na nejnižií možné hranici)...

Měl jsem totiž stesk za MM, a uvědomil jsem si že jeho barevné schéma je fakt mnohem příjemnější na pohled, než to modré / modřefialové co sw mělo. Každopádně si můžete vybrat které se vám líbí víc, v Nastaveních.

A taky už bych konečně chtěl/mohl udělat Křivdy a Úspěchy, vymyslel jsem si k nim vtipnou věcičku, že v profilu člověka se bude zobrazovat, že má X Křivd a Y Úspěchů a bude při tom ikonka která bude nějak znázorňovat ten poměr... A taky vám přibyde jeden "titul" podle toho jak hlasujete při zpovědích, možnosti budou Milosrdný, Krutý a Neutrální.

Už to "jen" udělat.

A... děkuju vám, lidi...

Kiowa: nikdy to nebude stejný, tak proč to chceš kupovat? MM je konečně doopravdy mrtvý a z jeho popela povstal svět stínů.

Black.Fairy: MIDNIGHTE, nepropadej depresím. Jsme rádi, že SW máme, že se můžeme zase někde hádat a předávat si názory / zkušenosti aspoň virtuálně : ) chopil ses toho a dovedl jsi to až sem, i kdyby to takhle mělo zůstat napořád, tak jsi odvedl kus skvělý práce a my jsme ti všichni vděčný. I ta Bejunka, protože se má kde vykecat. Takže nevěš hlavu, na MM jen vzpomínej a nechtěj oživovat něco, co už má zůstat zakopáno.


MilujuBublinky: Midnight: panebože... jako vrátit se v čase.... strašně zvláštní..vrátit se tam, kde sem strávila tolik času.. a najendou to bylo v nedohlednu..tyjo..sem z toho úplně v prdeli.

Moc pro mě všechny vaše reakce na změny na SW (a na moje podivné nálady) znamenají...

Dobrá, ale trochu jiný věci jsem chtěl... Zaprvý, zajímá mě, kolik lidí si nechalo nastavený nový skin, a kolik se vrátilo k starému, takže si uděláme takovou malou tabulku:

SELECT Skin, COUNT(Owner) FROM swUserSettings GROUP BY Skin;
SkinPočet registrovaných
Shadoworld1
Nostalgie (MM skin)183

Takže... jo, myslel jsem si, ten MM skin je fakt příjemnější, přiznám se, že ten jeden člověk co má nastaven SW skin nejsem já...

Jěště jednou díky, vám všem, že jste se mnou, a díky tomu je mimo jiné SW velmi hodnotným příspěvkem do mého webprogramátorského portfolia... O:-)

Mám vás rád =)

čtvrtek 27. listopadu 2008

Pavlina19

Tak mě k tomu konečně dokopali.
Spojené síly ostatních uživatel, Pavliny samotné, a toho že jsem konečně měl zase trochu času způsobily, že jsem pavlině nastavil limit...

Zkrátka to její floodování Equilibria už bylo moc... A nedala si říct a nedala. A furt jí všichni do komentů nadávali...

No, prostě odteď může přidat Equi jen když od toho minulého přidání uběhlo sedm dní a více...

Ale abych ti udělal alespoň trochu radost Beju, jsi navěky (nebo alespoň než se mi bude chtít naprogramovat to lépe a korektněji) zapsaná v samotném zdrojovém kódu SW:


//ak je user Pavlina19, tak skontroluj poslednú spoveď
//(temporary code, malo by byť robené všeobecnejšie, aby sa to dalo
//aplikovať na akéhokoľvek usera cez db)
if($Login->Get() == "Pavlina19")
{
$qr = mysql_query("SELECT * FROM swEquilibrium WHERE (Owner = 'Pavlina19') AND (OwnerRegistered = 1) ORDER BY DateAdded DESC LIMIT 1;");
$fqr = mysql_fetch_assoc($qr);

//ak je dátum pridania starší ako 7 dní, nesprav nič, ak novší, tak vypíš hlášku a returnni
if($fqr["DateAdded"] > date("Y-m-d H:i:s", strtotime("-1 week")))
{
$le = date("d.m. Y, H:i", strtotime($fqr["DateAdded"]));
$ne = date("d.m. Y, H:i", strtotime($fqr["DateAdded"]) + 60*60*24*7);

$res =
...[snip: html kód zprávy která se jí zobrazí]...

return $res;
}//koniec ifu ak je limit v platnosti
}//koniec ifu ak je user Pavlina19

pondělí 8. září 2008

Konečně!

Lidi, budeme mít články!
Konečně jsem našel co jsem hledal.
Webový WYSIWYG RTF... tedy spíš HTML (ale to není až tak podstatné) editor...

Ehm, laicky řečeno, něco jako takové malé okénko wordu na stránce - a díky němu budete moct formátovat text který píšete - nastavit mu písmo, velikost, barvu, zarovnání, jednoduše vkládat odkazy, obrázky, a dokonce i videa nebo flashové animace!

Říká si to tinyMCE, a je to udělaný kompletně v JavaScriptu, a já sice netuším jak, ale jeho tvůrce obdivuju...

Jo, a proč o tom mluvím v souvislosti s články?
Protože v mém konceptu se takovýto editor s články vždy spojoval...
Už dávno jsem vám mohl dát další textarea, kam by jste ty "články" psali, ale nebylo by to ono... Byl by to zase jen obyčejnej text, bez všech těch možností, které měla editace článků na původním MM, a to mi přišlo nepřípustné.
Tak jsem hledal.
A teď, asi po třech měsících jsem našel!

Takže články budou, tak do dvou týdnů.
(Přeci jen to není jenom o tom editorku, chce to taky novou tabulku, pár nových PHP tříd, udělat schvalování a výpis, a tak.)

Avšak editor už je vlastně plně funkční, a můžete si jej klidně vyzkoušet, tady.
Po tom, co si vyhrajete se vším možným, stiskněte uložit (hned první tlačítko, klasická disketka), a text se zatím sice nikam neuloží, ale zobrazí se vám téměř tak, jak by se zobrazil v článcích...
(Akorát že bude na celou stránku, a v článcích bude jenom ve středovém panelu. A taky si budu muset promyslet defaultní barvu pozadí, písma, atakdál... Ale i přes to si je budete moci změnit...)

Zabavte se, doufejte že se mi to povede, a držte palce =)

středa 3. září 2008

SAKRA! Aktivační maily!

...až teď mi to došlo, když jsem se rozhodl podívat do registrační classy... až teď jsem si uvědomil, proč nějak stoupal počet lidí stěžujících si na nemožnost přihlášení/nefunkční registraci...

Nechodili jim aktivační maily! A když přišly, tak tam byla špatná adresa, jěště na starej server!

...ale už je to opravený. A taky už konečně funguje diakritika, a je to hezkej HTML mail, a taky subject a mail-from, a tak...

Jo, a taky jedna minoritní chybička - když jste jako host přidali zpověď, a do Nicku jste zadali jméno existujícího uživatele, v hlavičce spovědi to k vám přiřadilo status toho registrovaného, i když to nebyl link na jeho profil...

Problém byl, že podmínka kontrolovala jestli je nastavenej status, a když ne, tak ho nastavila na "Host". Ale status nastavenej byl - protože z DB jsem tahal záznamy o Equi a pároval je se záznamy o uživatelech na základě uživatelského jména, takže pokud se jména shodovaly, status prostě nastavený byl. O kus dál však podmínka, která rozhodovala jestli z jména udělat link na profil nebo ne, kontrolovala jestli OwnerRegistered při zpovědi je true nebo false, a fungovala správně.

Nevím co to bylo za nápad s tou první podmínkou, ale přepsal jsem ji taky na if(!OwnerRegistered){Status = "Host";}, a běhá to správně.

To by bylo nadnes vše, zítra snad něco o obyvatelstvu, a událostech na SW samotném, ne v jeho kódu.

úterý 26. srpna 2008

Diaries

...tak už se mi konečně povedlo je sfunkčnit?
Myslím zobrazování posledního přidaného vůbec, nebo posledního v deníku konkrétního uživatele...
Ta query byla zabiják...
Schválně, query která vybere nejnovější záznam a bere v úvahu i to, jestli máte dostatečné privilegia na čtení záznamu (jste registrovaní, nebo vás má jeho majitel v přátelích, podle toho jak je ten záznam nastaven) vypadá takto pro vybrání záznamu na titulku:

$hugeQuery =
"SELECT *
FROM (
SELECT swDiaries.Owner, swDiaries.DateAdded, swDiaries.VisibleTo, swDiaries.Title, swDiaries.Text1, Ft.FriendOwner, Ft.Friend
FROM swDiaries
LEFT JOIN (SELECT swFriends.Owner AS FriendOwner, swFriends.Friend
FROM swFriends
WHERE (swFriends.Friend = '" . $Login->Get() . "')) AS Ft
ON swDiaries.Owner = Ft.FriendOwner ORDER BY swDiaries.DateAdded DESC) as ResT
WHERE (ResT.VisibleTo <= " . $Login->GetPrivileges() . ") OR ((ResT.VisibleTo = 3) AND (ResT.Owner = '" . $Login->Get() . "')) OR ((ResT.VisibleTo = 2) AND (ResT.Friend = '" . $Login->Get() . "'))
LIMIT 1;";

A query pro výběr nejnovějšího záznamu z deníku konkrétního uživatele (pro zobrazení v jeho profilu), která taky bere v úvahu všechna privilegia a tak, vypadá zase takhle:

$hugeQuery =
"SELECT *
FROM (
SELECT swDiaries.Owner, swDiaries.DateAdded, swDiaries.VisibleTo, swDiaries.Title, swDiaries.Text1, Ft.FriendOwner, Ft.Friend
FROM swDiaries
LEFT JOIN (SELECT swFriends.Owner AS FriendOwner, swFriends.Friend
FROM swFriends
WHERE swFriends.Friend = '" . $Login->Get() . "') AS Ft
ON swDiaries.Owner = Ft.FriendOwner ORDER BY swDiaries.DateAdded DESC) as ResT
WHERE (ResT.Owner = '" . $Owner . "') AND ((ResT.VisibleTo <= " . ($Login->GetPrivileges()) . ") OR ((ResT.VisibleTo = 3) AND (ResT.Owner = '" . $Login->Get() . "')) OR ((ResT.VisibleTo = 2) AND (ResT.Friend = '" . $Login->Get() . "')))
LIMIT 1;";

pondělí 25. srpna 2008

č. jednotné č. množné
1. p. téma témata
2. p. tématu témat
3. p. tématu tématům
4. p. téma témata
5. p. téma mata
6. p. tématu matech
7. p. tématem maty

Sakra, už bych to konečně v tom fóru mohl poopravovat, co?

čtvrtek 14. srpna 2008

Krátkodobé cíle...

Takže... Co dál?

1. Úpravy fóra. Při výpisu témat nezobrazovat poslední vytvořený thread v tématu, ale poslední ve kterém byl přidán nový post. A taky udělat, aby to byl rovnou link.
1.1. Taky poopravovat výskyty slova téma.

2. Při zakládání nového threadu udělat možnost "Zvýraznit tento thread (stojí 5 vln) - zobrazí informaci o založení threadu v novinkách v pravém panelu.", kde po jejím zaškrtnutí budete moct napsat text, který se má v pravém panelu zobrazovat, a speciální bbcode značka [threadlink]nějaký text[/threadlink] se překonvertuje na link přímo do threadu.

3. Opravit popup menu online panelu - pošta se totiž neodešle, když někomu píšete přes stránku která se otevřela kliknutím na "Napsat zprávu" z tohoto menu.

4. Dodělat zobrazování pohlaví/statusu při jménech uživatel.

5. Popup okno se základními údaji o uživateli, když na něj najedete myší. A taky s možností zobrazit profil, a napsat zprávu.

To jsou asi všechny krátkodobé cíle.

středa 13. srpna 2008

To je rychlost!

Takže jedna věc, pro mě hodně překvapující.

Shadoworld je asi desetkrát rychlejší než Město Mrtvých 2.0.

Přičemž na MM2.0 se pořád nachází jenom guestbook, který je pravděpodobně v jedné tabulce.
A titulní strana není v tabulce žádné.

Tohle hlásí MM2.0 když otevřete guestbook: Stránka byla vygenerována za 0.155 s
Přepodkládám, jak už jsem řekl, jednu tabulku, a jednu query.

Tohle hlásí SW, když otevřete Equilibrium: Vygenerováno za 0.023 sekund
Přičemž minimum (za ideálních podmínek, že všechny zpovědi v seznamu jsou od neregistrovaných uživatel) je to jedna query na jedné tabulce.
Za normálních podmínek je to jedna query s joinem dvou tabulek (swEquilibrium a swUsers).
Což není moc velký rozdíl v počtu operací, ale velký rozdíl ve výkonu.
A to jěště dělám asi nejhorší věc, kterou můžu - celý zdrojový html stránky z php echuju.

Holt, forpsi má asi supr servery :-P

úterý 12. srpna 2008

Doména! Hosting!

JO!
Takže Shadoworld je odteď na nové doméně, konečně krásné www.shadoworld.cz, a taky na novém hostingu, krásně rychlém...

Dalo to ale hodně práce... původně jsem plánoval, že včera po příchodě domů (kolem 18:00) jěště chvilku zamakám na fóru, vyladím to jak vypadá (stejně je to pořád tak trochu hnus), a pak mi bude na přenesení stačit tak dvacet minut...

Protáhlo se to na šest hodin, no...
Nejdřív začal zmatkovat notebook, neskutečně se spomalil (zkuste mít na Pentiu 300 s 32 ram mít najednou otevřeny tři okna exploreru, PSPad s čtyřmi otevřenými textovými soubory, a spuštěnej apache a MySQL, a pak jěště Total Commander a pochopíte...), takže první pokus o přenos trval bezmála hodinu...

Pak začala zmatkovat samotná stránka... Není divu, připojoval jsem se na zlej MySQL server, ale podivné bylo, že i když z něj stránka žádný data nedokázala načíst (Connection to MySQL server lost during query execution), tak přidávat (zpověď, jako neregistrovaný uživatel) jsem mohl...

A najednou se mi taky nedalo přihlásit do gmailu, kde jsem měl přihlašovací data na všechny servery, takže jsem si to ani nemohl ověřit.
Takže forpsi webmail, a píšeme adminovi. Naštěstí technická podpora je prej online nonstop, a skutečně je, a taky mi okamžitě řekli správnej server kam se mám připojovat.
Takže supr.

Pak začal zmatkovat export/import databáze - asi už je na jeden textový soubor příliš veliká (2mb)... A forpsi phpmyadmin mi zas při importu hlásil chyby, které jsem v životě neviděl...

A některé tabulky naimportoval tak, že jejich názvy byly kompletně lowercase, co najednou stránce vadilo (v DB swfposts, na stránce jsem tahal data ze swfPosts)... Nechápu to, některým serverům je to jedno, některým ne, každopádně mi trvalo hodně dlouho na to přijít, a mezitím jsem si ve snaze zfunkčnit to, rozesral zdroják na několika místech, takže když jsem na to pak přišel, a původní chybu opravil, musel jsem jěště dvě hodiny chodit zdrojákem a opravovat všechny blbosti, co jsem tam nově udělal...

Takže přesun, který se prakticky měl odehrát v čase 21:30-22:00 se protáhl mezi 21:30 a 04:30...
Potěší.
Hlavně když už den předtím jste spali slabé tři hodinky, a ráno znovu vstáváte do práce...

Takže jsem fyzicky na dně.
Normálně bych všechny chybky a nedoladěnosti, co jste mi začali psát do fóra (za co vám moc děkuji) opravoval okamžitě, ale teď na to fakt nemám sil. Jdu vyvenčit psa, a pak spát, a opravovat se bude zítra.
Snad mi to protentokrát odpustíte ;-)

váš Midnight

čtvrtek 31. července 2008

Dlouho...

Dlouho jsem se neozval, ale až tak to nevadí, protože mě zatím stejně nikdo nečte (a možná ani nebude, hehe...).

Takže novinky:
  1. Smajlíky už jedou. Jejich kompletní seznam možná později zveřejním, ale to až když přestanu uvažovat o tom, že udělám soutěž o to, kdo je všechny nalezne... Každopádně, je to dělaný přes obyčejný str_replace, kdy řetězce typu :-) a tak nahrazuju img tagem...
  2. Fórum už je taky... SKORO hotový... (já vím, sakra, trvá mi to, sakra... ale když já teď pracuju...).
  3. Bude chat =)
  4. Stránky "Uživatel neexistuje" zatím pořád nejsou, ale už mám v plánu něco jiného s profily, a spolu s tím se svezou i tyto chybové...
  5. Nástroje samosprávy... dočasné zablokování/permanentní smazání uživatele na základě hlasování ostatních uživatel... Je momentálně ve fázi plánování, ale měl bych si s tím pohnout, protože na SW se začínají stěhovat i některé velmi kontroverzní persony, které mnoho uživatel nemá rádo... Akorát tak vědět čím jim po výmazu zabráním znova se registrovat... Možná banem mailu? Vytvoří si nový, jo, taky mi to někdo říkal, že jemu nedělá problém udělat si deset mailů.
    No jo, ale jednou ho to snad bavit přestane...
Toť zatím asi vše co se týče mých plánů.
Teď o tom, proč mi tolik trvá je realizovat...

Mám totiž práci. Na plný úvazek. Jako PHP+MySQL programátor pro Avízo.sk.
Což znamená poprvé v životě stabilní plat (alespoň dokud mě nevyhodí, hehe), ale taky to, že z mých dnů je absolutní nic. Na devátou jsem tady, a o půl páté končím (oficiálně začínám o osmé, no...), a cesta domů trvá tak hodinu, hodinu a půl, takže o šesté jsem doma a totálně mrtvej... :-(.

A víkendy?
To je vlastně jediná doba kdy jstem živej, a v poslední čase je to díky tomu, že jsem tehdy odcestovanej v Banské Bystřici, kde žije moje milovaná Hekate =).
Takže to taky se SW moc nepohnu...
Ale já si ten režim nějak vymyslím, nebojte...

Jo, a AJAX!
Možná jste si všimli můj happy status na Shadoworldu, který zní asi "Pojedeme na AJAX na AJAX na AJAX...".
AJAX, jinak řečeno Asynchronous Javascript And XML.
Tedy asynchronní javascript a XML.
V praxi to znamená, že server dokáže klientovi (vám) posílat nové informace bez reloadu stránky. To znamená popup divy (pozor, ne okna), rychlejší a plynulejší přidávání příspěvků, zobrazování informací o uživateli když ukážete na jeho jméno, a tak.
Takže to se chystá, a na tom se už (sice mírně vlažně, z důvodů které jsem popsal výše, ale) pracuje...

Toť zatím asi vše. Držte palce.

středa 4. června 2008

Zítra... ehm... dneska...

Se do toho konečně dám. Ale jěště předtím půjdu spát, a abych nezapoměl, tak si sem napíšu pár poznámek o tom, co musím udělat:
  1. Přidat kontrolu přihlášenosti i před odeslání příspěvku do nástěnky, nejen při vstupu na ni, protože se už víckrát stalo, že někdo na ní zůstal tak dlouho, že mu vypršela session, a když pak přidal příspěvek, jako autor se zobrazuje nic. Taky to chce způsob jak uložit a následně recovernout text, který napsal a chtěl odeslat. Do session? Ale vždyť ta vypršela... do POST? Ale vždyť tam je, ale dlouho nebude... asi budu muset udělat stránku, ...clipboard?
    Umím pomocí Javascriptu něco dostat do clipboardu?
    Hmm... prej neumím, prej kvůli bezpečnosti... Tak jak?
    Asi budu muset udělat stránku, která zobrazí zprávu co chtěl člověk odeslat, a on si ji bude muset do clipboardu strčit sám... Nebude to moc elegantní, ale pořád lepší jak nic. Nebo bych taky mohl udělat samostatný login speciálně pro tyto případy, co by text zachoval...
  2. Fórum, fórum, už konečně udělej fórum, dyť je to snadný!!!
  3. Taky tag na citáty (resp. dva, jeden na citáty takové, co jsou jako supr věty, a druhý na takové do fóra, ve kterých bývá kousek zprávy na kterou reagujete... jak je jenom oddělit?).
  4. Taky smajlíky.
  5. Taky se konečně budu muset podívat na tu chybu, kdy při odpovídání na zprávu která obsahuje tagy, se tyto tagy rozpadnou...
  6. A to snad stačí.
  7. Jo, a taky stránku "profil neexistuje" pro profily, které neexistují =).
Jo, teď už to stačí... Budu mít co dělat...

pátek 30. května 2008

Intro

A abych nezahlcoval svůj deník technickými věcmi, tak jsem se rozhodl založit tenhle devblog. Tento konkrétně bude zaměřen na vývoj stránky http://shadoworld.ic.cz, a problémy/nápady s ním spojené. Možná tady později objevíte i něco jako tutorialy, nebo kusy zdrojáků, nebo přímo některé (obecněji použitelné) classy i na download.
Ehm, ale vy nevíte v čem, že?
Takže

Základní info o stránce
adresa: http://www.shadoworld.cz
hosting: forpsi.com
jazyk: PHP (server), XHTML (klient), JavaScript (klient), VBScript (klient)
databáze: MySQL
kód: teď už OOP

Takže tak. Možná teď díky těmto informacím vyvstalo pár otázek. Například:
"Proč JavaScript i VBScript?" - protože JavaScript je v IE dost zabugovanej, a VBScript pravděpodobně méně.
"Jak že 'teď už OOP'?" - tak, že momentální SW na webu je druhá verze. První vznikla v průběhu týdne, zároveň s tím, jak jsem se učil PHP, HTML, SQL a CSS. Byla procedurální, a celá stránka se nacházela v jednom souboru - index.php. Ke konci svého života měla 1500 řádků kódu, a ani desetinu funkcií co měla mít... A nedala se spravovat. Takže jsem se do toho pustil odznovu, modulárně a objektově. A v průběhu dvou týdnů (z nichž jeden byl můj svaťák ;-) ) se zrodila druhá (tzn momentálně aktuální) verze SW.

Má taky přehlednější layout (všechno je dělaný přes css - co se týče vizuálního designu myslím, je to samozřejmě nacpaný taky tabulkami, protože jsem jěště css neovládl dostatečně... ale celá stránka momentálně obsahuje jeden jediný obrázek, a to logo v hlavičce...), příjemnější (a sjednocené) ovládání, a pár nových funkcií.

A mně právě teď skončily maturity, a v pondělí mi oficiálně končí škola, což znamená, že Shadoworld bude růst.

Jak a kam?
Právě o tom bude tenhle blog. A taky vám dá možnost se k jeho růstu vyjádřit, něco navrhnout (funkci, cokoliv), nebo komentovat ostatní návrhy.

Tak snad tady někdo najdete něco zajímavého na čtení.