ú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