A jedeme dál ...
Človíčkův Weblog aneb Michal Horák bloguje

Programování


První graf z bakalářské práce

 | 9.2.2007

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 | 17770x | Linkuj.cz

Microsoft Expression Web Designer Beta 1

 | 21.11.2006

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 Beta 1

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 | 58747x | Linkuj.cz

Kreslení v ASP.NET pomocí knihovny GDI

 | 9.11.2006

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.

Kreslení v ASP.NET pomocí knihovny GDI

9.11.2006 14:09 | Programování | Komentáře (0) | Trvalý odkaz | 15485x | Linkuj.cz

ASP.NET AJAX

 | 7.11.2006

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 | 13966x | Linkuj.cz

Náhledy obrázků v PHP

 | 2.11.2006

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ů.

Zdrojový kód

<?php
Header
("Content-type: Image/jpeg");

$img="obrazek.jpg";

$width 130;
$height 96;

if (!
file_exists($img)){
    
$Im1 ImageCreate($width,$height);
    
$bgc imagecolorallocate ($Im1255255255);
    
$tc  imagecolorallocate ($Im1000);
    
imagefilledrectangle ($Im10015030$bgc);
    
imagestring ($Im1155"Obrázek není"$tc);
    
imagestring ($Im11515"k dispozici"$tc);
    
imageline ($Im10$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_dolu0;
        
$posun_doprava = ($width-$sirka)/2;
    }
    
$Im1 ImageCreateTrueColor($sirka,$vyska);
    
    
imagefilledrectangle ($Im100$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 | 19304x | Linkuj.cz

Balíček na fotoblogu

 | 20.10.2006

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 130

Neví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 | 13048x | Linkuj.cz

PHP a MySQL: Vyhodnocení dotazu

 | 12.10.2006

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($dotaznikMYSQL_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($dotaznikMYSQL_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 | 13088x | Linkuj.cz

PHP: Jak automaticky přidávat pevnou mezeru za předložky

 | 9.10.2006

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&nbsp;“.

Příklad kódu:

<?php

$text
="Dnes i včera bylo v Šebetově pěkně";
$typotext=ereg_replace(" ([svzkuoiaSVZKAUOI]) "" \\1&nbsp;"$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 | 18735x | Linkuj.cz

Kompromis ve vyplňování otázky pro antispamový filtr

 | 7.10.2006

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.

Finta první

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.

Finta druhá

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.

Finta třetí - Kompromis

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 | 10776x | Linkuj.cz

Předchozí příspěvky | 1 | 2 | 3 |

Tipy na přečtení

Kategorie

Vyhledávání

Odkazy

Nejčtenější příspěvky za poslední týden

Poslední příspěvky

"A jedeme dál ..." Človíčkův Weblog aneb Michal Horák bloguje. (c) Michal Horák (Človíček webdesign) 2006