Moje bakalářská práce už začíná docela dobře zobrazovat grafy a tak bych vám chtěl ukázat jeden z nich. Samozřejmě, že to ještě není konečná podoba, zatím jde jen o to, aby to ukázalo správný graf a ne o to jaké má barvičky a co je okolo.
9.2.2007 11:22 | Programování | Komentáře (3) | Trvalý odkaz | 18696x | Linkuj.cz
Dnes jsem si stáhl a nainstaloval nový wysiwyg editor pro tvorbu webových stránek od Microsoftu Expression Web Designer ve verzi Beta 1.
Uživatelské prostředí je velmi příjemné, ostatně jako u všech posledních programů od Microsoftu, po prvním spuštění se nám nabízí pět základních panelů: Seznam souborů a adresářů (Folder list), vlastnosti css (CSS Properties), Okno designeru, Toolbox a Aplikace či správa stylů (Apply Styles a Manage styles). V okně designeru si můžete vybrat, jestli budete používat wysiwyg nebo budete kód psát ručně či obojí.
Microsoft Expression Web Designer je vlastně takovým nástupcem nenáviděného i milovaného editoru Front Page, jde však o dost dál, dynamické stránky můžete psát rovnou v ASP.NET 2.0 a vybrat si můžete jestli budete psát v jazyku C#, Visual J# či Visual Basicu, máte k dispozici všechny ASP.NET ovládací prvky, dobře použitelný editor css a hlavně výsledný kód stránky vypadá docela pěkně.
Tohle všechno jsem napsal již po hodině hraní si s tímto programem, který si své uživatele určitě najde, ještě si jej pár dní nechám nainstalovaný a zkusím v něm udělat něco kloudného, ale Visual Studio 2005 mi nenahradí.
21.11.2006 12:12 | Programování | Komentáře (24) | Trvalý odkaz | 59845x | Linkuj.cz
Posledních pár dní jsem studoval, jak kreslit obrázek v ASP.NET a ono to není vůbec těžké. Nejdříve si musíte založit nový projekt ve Visual Studiu nebo WebDeveloperu, kde si vyberete položku ASP.NET Web Site. Ještě než cokoliv napíšete přidejte do projektu nový WebForm s kódem v odděleném souboru, který můžete nazvat například kruhy. Otevřete si soubor kruhy.aspx.cs připište do použitých jmenných prostorů následující:
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
Nyní se podívejte o kousek níže, kde je metoda Page_Load(), do které napíšeme náš obrázek. Začneme tím, že vytvoříme nový obrázek a také objekt pro kreslení, kterému nastavíme aby při kreslení používal AntiAliasing a rovnou si vykreslíme i nějaké pozadí:
Bitmap obrazek = new Bitmap(500, 400);
Graphics g = Graphics.FromImage(obrazek);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.FillRectangle(Brushes.DarkOrange, 0, 0, 500, 400);
Nyní si vytvoříme pero, kterým budeme kreslit:
Pen pero = new Pen(Color.White, 2);
Když už máme čím kreslit, nakreslíme si pár kruhů.
g.DrawEllipse(pero, 200, 150, 100, 100);
g.DrawEllipse(pero, 250, 100, 100, 100);
g.DrawEllipse(pero, 250, 200, 100, 100);
g.DrawEllipse(pero, 150, 200, 100, 100);
g.DrawEllipse(pero, 150, 100, 100, 100);
g.DrawEllipse(pero, 270, 150, 100, 100);
g.DrawEllipse(pero, 130, 150, 100, 100);
g.DrawEllipse(pero, 200, 80, 100, 100);
g.DrawEllipse(pero, 200, 220, 100, 100);
Samozřejmě můžete vykreslovat i jiné geometrické útvary, ty si můžete najít ve vytvořeném objektu g. No a aby jsme z toho něco měli můžeme si přidat i popisek obrázku:
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
g.DrawString("Kreslení v ASP.NET 2.0 pomocí knihovny GDI", new Font("Trebuchet MS", 14), Brushes.White, new Point(10, 10));
Teď obrázek uložíme a použijeme:
obrazek.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
g.Dispose();
obrazek.Dispose()
Nakonec přejdeme k souboru Default.aspx, kam přidáme ovládací prvek image, kterému nastavíme vlastnost ImageUrl na kruhy.aspx. Měl by se vám zobrazit následující obrázek.
9.11.2006 14:09 | Programování | Komentáře (0) | Trvalý odkaz | 16493x | Linkuj.cz
Microsoft uvolnil beta verzi frameworku ASP.NET AJAX pro snadné vytváření interaktivních webových stránek pod ASP.NET. Všechny potřebné informace se o frameworku dozvíte na webu http://ajax.asp.net/.
Jak nám ukazuje zejména Google, ale i například český Seznam, Ajaxové aplikace jsou opravdu úžasně interaktivní a nejeden uživatel to dokáže ocenit. Pokud ještě nevíte co to ajax je, doporučuji si přečíst článek na AJAX na české wikipedii.
Citace: AJAX (Asynchronous JavaScript and XML) je obecné označení pro technologie vývoje interaktivních webových aplikací, které mění obsah svých stránek bez nutnosti jejich znovunačítání. Na rozdíl od klasických webových aplikací poskytují uživatelsky příjemnější prostředí, ale vyžadují použití moderních webových prohlížečů.7.11.2006 18:33 | Programování | Komentáře (0) | Trvalý odkaz | 14931x | Linkuj.cz
Určitě jste už někde na internetu potkali dynamické galerie, kde jste nahráli obrázek a hned jste mohli vidět jeho náhled. Díky PHP a knihovně GD jsou takovéto náhledy docela jednoduchou záležitostí.
Nejdříve vrátíme hlavičku obrázku, aby prohlížeč vrátil soubor jako obrázek, v našem případě vrátíme obrázek jako JPEG a stejně tak tento skript bere jen souboru ve formátu JPEG.
Je dobré ošetřit stav, kdy obrázek, ze kterého chceme udělat náhled neexistuje. Pokud neexistuje vypíšeme tuto skutečnost na náhled. Pokud obrázek existuje, vytvoříme z něj funkcí ImageCreateFromJPEG nový obrázek, který následně vložíme do náhledu a zmenšíme (ImageCopyResized) do námi chtěných rozměrů.
<?php
Header("Content-type: Image/jpeg");
$img="obrazek.jpg";
$width = 130;
$height = 96;
if (!file_exists($img)){
$Im1 = ImageCreate($width,$height);
$bgc = imagecolorallocate ($Im1, 255, 255, 255);
$tc = imagecolorallocate ($Im1, 0, 0, 0);
imagefilledrectangle ($Im1, 0, 0, 150, 30, $bgc);
imagestring ($Im1, 1, 5, 5, "Obrázek není", $tc);
imagestring ($Im1, 1, 5, 15, "k dispozici", $tc);
imageline ($Im1, 0, $height/2, $width, $height/2, $tc);
}else{
$Im2 = ImageCreateFromJPEG("data/images/$img");
if(ImageSX($Im2)>ImageSY($Im2))
{
$pomer=ImageSY($Im2)/ImageSX($Im2);
$sirka=$width;
$vyska=$width*$pomer;
$posun_dolu=($height-$vyska)/2;
$posun_doprava = 0;
}else
{
$pomer=ImageSX($Im2)/ImageSY($Im2);
$sirka=$height*$pomer;
$vyska=$height;
$posun_dolu= 0;
$posun_doprava = ($width-$sirka)/2;
}
$Im1 = ImageCreateTrueColor($sirka,$vyska);
imagefilledrectangle ($Im1, 0, 0, $width, $height, $White);
ImageCopyResized($Im1,$Im2,0,0,0,0,$sirka, $vyska,ImageSX($Im2),ImageSY($Im2));
}
ImageJpeg($Im1);
Destroy($Im1);
Destroy($Im2);
?>
2.11.2006 09:50 | Programování | Komentáře (4) | Trvalý odkaz | 20300x | Linkuj.cz
Včera jsem zprovoznil jednu novinku na fotoblogu a tou je možnost si nechat vybrané fotografie zabalit do zip archivu a následně stáhnout. Vše můžete vyzkoušet, ale má to jeden háček, jakmile velikost archivu překoná určitou velikost, tak PHP nahlásí chybu:
Fatal error: Allowed memory size of 6291456 bytes exhausted (tried to allocate 43361 bytes) in /DISK2/WWW/clovicek.net/fotoblog/zip.lib.php on line 130Nevíte náhodou někdo, jak takovouto nepříjemnost obejít? Napadlo mě pouze ukládat soubor dočasně na server a pak jej mazat, ale to může mít nechtěné následky.
20.10.2006 15:27 | Programování | Komentáře (1) | Trvalý odkaz | 14020x | Linkuj.cz
Někdy potřebujeme při psaní stránek testovat různé SQL dotazy, aby jsme našli optimální řešení. K tomuto účelu jsem si napsal jednoduchou pomůcku.
Požadavkem bylo, abych pouze napsal svůj SQL dotaz a skript mi vrátil všechny výsledky. Řešení je jednodušší než by se mohlo zdát. Funkcí mysql_query() pošleme dotaz na databázi, výsledky vložíme do pole pomocí mysql_fetch_array() s parametrem MYSQL_ASSOC, kterým zajistíme aby jsme v poli měli výsledky pouze pod asociativními názvy. Potom jen projdeme celé pole a vypíšeme výsledky.
<?
$sql['server']="localhost";
$sql['databaze']="databaze";
$sql['jmeno']="root";
$sql['heslo']="";
$dotaz="SELECT * FROM tabulka";
function VratDotaz($dotaz, $mysql){
$spojeni = @MySQL_Connect($mysql['server'],$mysql['jmeno'],$mysql['heslo']);
@MySQL_Select_DB($mysql['databaze']) or die("<p>Nejsme připojeni</p>");
$dotaz = htmlspecialchars(stripslashes($dotaz));
$dotaznik=mysql_query($dotaz);
if(!$dotaznik) echo("<p>".mysql_error()."</p>");
$nacti_klic=@mysql_fetch_array($dotaznik, MYSQL_ASSOC);
echo "<table><tr class=\"top\">";
foreach ($nacti_klic as $key => $value) {
echo "<td><strong>$key</strong></td>";
}
echo "</tr>";
while($nacti=@mysql_fetch_array($dotaznik, MYSQL_ASSOC)){
echo "<tr>";
foreach ($nacti as $key => $value) {
echo "<td>$value</td>";
}
echo "</tr>";
}
echo "</table>";
}
VratDotaz($dotaz, $sql);
?>
12.10.2006 09:44 | Programování | Komentáře (2) | Trvalý odkaz | 13913x | Linkuj.cz
Stejně jako u sazby textu při tisku existují typografická pravidla, tak existují typografická pravidla i pro web. Jak vyřešit nezalamování textu v případech, kdy máme před slovem jednopísmenné předložky nebo spojky, si ukážeme dnes.
Řešení je docela jednoduché, použijeme funkci ereg_replace(string vzor, string nahrazení, string řetězec), kde použijeme regulárního výrazu. Ten sestavíme tak, že uděláme výčet znaků, které chceme změnit. Regulární výraz tedy bude vypadat takto: „([svzkuoiaSVZKAUOI])“. Tyto znaky nahradíme řetězem „ znak “.
<?php
$text="Dnes i včera bylo v Šebetově pěkně";
$typotext=ereg_replace(" ([svzkuoiaSVZKAUOI]) ", " \\1 ", $text);
echo "<p><strong>Neupravený text: </strong>".htmlspecialchars($text)."</p>";
echo "<p><strong>Upravený text:</strong> ".htmlspecialchars($typotext)."</p>";
?>
9.10.2006 22:27 | Programování | Komentáře (9) | Trvalý odkaz | 19734x | Linkuj.cz
V této době snad každý, kdo na svých stránkách umožňuje přidání komentářů k článku, návštěvní knihu čí odeslání e-mailu přes kontaktní formulář musí řešit přibývající nárůst spamu. Někteří všechny data kontrolují a když dorazí nějaký spam, potom jej smažou, což může být po určité době naprosto nezvladatelné. Jiní si dělají seznamy IP adres, zakázaných slov nebo obojího a když se něco shoduje pak příspěvek neuloží. Další možností je přidat políčko do formuláře a pak zkontrolovat jeho výstup, když vše projde, pak se můžou potřebná data uložit. Jenže nikomu se nechce nic vyplňovat navíc a tak se vymýšlejí různé finty, aby uživatel nemusel nic dělat.
Ono přidané políčko schováme pomocí css a necháme je prázdné, protože se roboti nezabývají tím co je a co není pomocí css schované, tak políčko vidí. To je to co potřebujeme ;o) Proč? Dobrým zvykem robota je vyplňovat všechna políčka formuláře a tedy i to pro obyčejného uživatele schované. Stačí tedy při ukládání zkontrolovat, zda je políčko vyplněno a pokud není, tak data uložit.
Druhou fintou je vyplnění správné odpovědi na otázku pomocí JavaScriptu a opět schování políčka s tím, že když má nějaký uživatel vypnutý JavaScript, tak mu políčko ukážeme i s otázkou pro správné vyplnění. Počítá se totiž s tím, že roboti zatím JavaSript neovládají a tak se jim odpověď na otázku nepředvyplní. Jakmile je odpověď na otázku správná, můžeme data uložit. Nikdo ovšem nemůže vyloučit, že se roboti JavaScript již brzo naučí. Dokonce jsem už někde četl (bohužel už nevím kde to bylo), že se tak již stalo. Zatím je to ovšem docela bezpečná možnost.
Moje finta je taková, že mám odpověď na otázku po dlouhou dobu stejnou a to až do doby, kdy se podaří robotům nalézt odpověď, což může být třeba na pořád. Uživatel bude nucen odpověď vyplnit pouze jednou a pak mu ji uložíme do COOKIES prohlížeče. Vždy když bude chtít znovu vyplnit formulář, odpověď na jeho otázku již bude předvyplněna. Jestliže uživatel nemá ve svém prohlížeči cookies povoleny, potom musí na otázku odpovídat pokaždé. Řekl bych, že je to o něco bezpečnější varianta než vyplnění odpovědi JavaScriptem, ale také trochu nepříjemnější pro uživatele.
7.10.2006 12:20 | Programování | Komentáře (7) | Trvalý odkaz | 11652x | Linkuj.cz
Předchozí příspěvky | 1 | 2 | 3 |"A jedeme dál ..." Človíčkův Weblog aneb Michal Horák bloguje. (c) Michal Horák (Človíček webdesign) 2006