<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>m1chu.eu - another devblog &#187; Edukacja</title>
	<atom:link href="http://m1chu.eu/category/ogolne/edukacja/feed/" rel="self" type="application/rss+xml" />
	<link>http://m1chu.eu</link>
	<description>we live, as we dream... alone - another devblog</description>
	<lastBuildDate>Fri, 25 Jun 2010 22:04:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Zend PHP 5 Certification &#8211; Self Test &#8211; omówienie pytań&#8230;</title>
		<link>http://m1chu.eu/2008/05/12/zend-php-5-certification-self-test-omowienie-pytan/</link>
		<comments>http://m1chu.eu/2008/05/12/zend-php-5-certification-self-test-omowienie-pytan/#comments</comments>
		<pubDate>Sun, 11 May 2008 23:26:38 +0000</pubDate>
		<dc:creator>m1chu</dc:creator>
				<category><![CDATA[Edukacja]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Życie]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ceryfikat]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[self]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://m1chu.eu/?p=45</guid>
		<description><![CDATA[Tak się składa, że zamierzam od drugiej części przyszłego miesiąca zmienić kilka rzeczy związanych z moimi zamiłowaniami do programowania. I właśnie jedną ze zmian ma być zapisanie się na certyfikat Zend&#8217;a, który to sugeruje aby przed podjęciem wyzwania egzaminacyjnego napisać wstępny, składający się z 8śmiu pytań test. Poziom jego zaawansowania jest ponoć zbliżony do normalnego [...]]]></description>
			<content:encoded><![CDATA[<p>Tak się składa, że zamierzam od drugiej części przyszłego miesiąca zmienić kilka rzeczy związanych z moimi zamiłowaniami do programowania. I właśnie jedną ze zmian ma być zapisanie się na certyfikat Zend&#8217;a, który to sugeruje aby przed podjęciem wyzwania egzaminacyjnego napisać wstępny, składający się z 8śmiu pytań test. Poziom jego zaawansowania jest ponoć zbliżony do normalnego egzaminu, dlatego jest on dobrym wyznacznikiem do sprawdzenia swojej osoby, czy nadaje się ona do podjęcia walki o otrzymanie tegoż certyfikatu. Jak wyglądają pytania z PHP5? Które odpowiedzi są poprawne i dlaczego? I jaki wynik uzyskałem? Jeśli chcecie poznać odpowiedzi na te pytania, czytajcie dalej :D</p>
<p><span id="more-45"></span></p>
<p>Po pierwsze należy wspomnieć, że cały test jest po angielsku, dlatego w takim języku podam pytania. Swoje umiejętności w nim możecie sprawdzić <a target="_blank" href="http://www.zend.com/store/education/certification/self-test.php?begin=1"  title="Zend - Self Test">tutaj</a>. Zanim zacznę rozwodzić się na temat jego rozwiązywania zalecam Wam podjęcie go przez doczytaniem tego wpisu do końca. Przecież nie chodzi tutaj o oszukiwanie samych siebie, a o sprawdzenie się &#8211; nikt z Was z tego rozliczać nie będzie.</p>
<ul>
<li><strong>Pytanie I. How can precisely one byte be read from a file, pointed by $fp?</strong>
<ol>
<li>fseek($fp, 1)</li>
<li>fgets($fp, 1)</li>
<li>fgetss($fp, 1)</li>
<li><strong>fgetc($fp)</strong></li>
<li>All of the above</li>
</ol>
</li>
</ul>
<p>Pierwsza odpowiedź &#8211; <strong>fseek()</strong> powoduje przesunięcie wskaźnika na miejsce wyznaczone przez drugi parametr. Funkcje &#8211; <strong>fgets()</strong> i <strong>fgetss()</strong> pobierają ciąg znaków z pliku o długości podanym w drugim parametrze, z tymże druga z nich usuwa tagi HTML w locie. Dlatego poprawny jest <strong>4</strong> wybór.</p>
<ul>
<li><strong>Pytanie II. What object method specifies post-deserialization behavior for an object?</strong>
<ol>
<li>__sleep()</li>
<li><strong>__wakeup()</strong></li>
<li>__set_state()</li>
<li>__get()</li>
<li>__autoload()</li>
</ol>
</li>
</ul>
<p>Trzy ostatnie metody magiczne możemy skreślić na wstępie. Mianowicie <strong>__get()</strong> ułatwia dostęp do elementów wewnątrz klasy, <strong>__autoload()</strong> zostaje wywołane automatycznie w wypadku próby zainicjowania klasy dotychczas niezdefiniowanej, no i ostatecznie najbardziej tajemnicze <strong>__set_state()</strong> wywoływane dla wyników wyeksportowanej instancji klasy poprzez <strong>var_export()</strong>. Zostają nam więc:</p>
<ul>
<li><strong>__sleep()</strong> &#8211; istnienie tej funkcji sprawdzane jest przed każdą serializacją wywoływaną funkcją <strong>serialize()</strong>,</li>
<li><strong>__wakeup()</strong> &#8211; istnienie tej funkcji w klasie sprawdzane jest przed każdą deserializacją wywoływaną funkcją <strong>unserialize()</strong>.</li>
</ul>
<p>Wybór chyba jest już oczywisty.</p>
<ul>
<li><strong>Pytanie III. Where does the session extension store the session data by default?</strong>
<ol>
<li>SQLite Database</li>
<li>MySQL Database</li>
<li>Shared Memory</li>
<li><strong>File System</strong></li>
<li>Session Server</li>
</ol>
</li>
</ul>
<p>Standardowo dane sesji przechowywane są w plikach. Nie mniej jednak za pomocą funkcji <a target="_blank" href="http://pl2.php.net/session_set_save_handler"  title="Session Function">session_set_save_handler</a> i jej parametrów możemy utworzyć odniesienia do nich umożliwiające przetrzymywanie danych sesji np. w bazie danych.</p>
<ul>
<li><strong>Pytanie IV. Which of the following data types cannot be directly manipulated by the client?</strong>
<ol>
<li>Cookie Data</li>
<li><strong>Session Data</strong></li>
<li>Remote IP Address</li>
<li>User Agent</li>
</ol>
</li>
</ul>
<p>Spośród tych czterech elementów tylko dane sesji przetrzymywane są po stronie serwera, także bez odpowiednio przygotowanego skryptu wykonywanego po stronie serwera nie ma możliwości dostępu do manipulacji tymi danymi. Nie mniej jednak nie jest to już dostęp bezpośredni.</p>
<ul>
<li><strong>Pytanie V. What is the difference between isset() and other is_*() functions (is_alpha(), is_number(), etc.)?</strong>
<ol>
<li>isset() is a function call and is_*() are not function calls</li>
<li>is_*() are language constructs and isset() is not a language construct</li>
<li><strong>isset() is a language construct and is_*() are not language constructs</strong></li>
<li>is_*() return a value whereas isset() does not</li>
</ol>
</li>
</ul>
<p>Odpowiedź trzecia jest poprawna, gdyż <strong>isset()</strong> jest konstrukcją językową, a pozostałe z wymienionych są funkcjami. Bardzo ładnie dla oka można to sprawdzić w bardziej zaawansowanych edytorach PHP, poprzez specyficzne podświetlanie konstrukcji językowych i nie podświetlanie funkcji języka PHP.</p>
<ul>
<li><strong>Pytanie VI. What will be the value of $b after running the following code?</strong></li>
<li style="list-style-type: none;">
<pre class="brush: php;">$a = array('c', 'b', 'a');
$b = (array) $a;</pre>
<ol>
<li>TRUE</li>
<li><strong>array(&#8216;c&#8217;, &#8216;b&#8217;, &#8216;a&#8217;)</strong></li>
<li>array(array(&#8216;c&#8217;, &#8216;b&#8217;, &#8216;a&#8217;))</li>
<li>None of the above</li>
</ol>
</li>
</ul>
<p>W drugiej linii następuje rzutowanie tablicy <strong>$a</strong> utworzonej linie wyżej na typ tablicy, po czym wynik przypisany jest do zmiennej (już tablicowej/tablicy) <strong>$b</strong>.</p>
<ul>
<li><strong>Pytanie VII. Which of the following function signatures is correct if you want to have classes automatically loaded?</strong>
<ol>
<li>function autoload($class_name)</li>
<li>function __autoload($class_name, $file)</li>
<li><strong>function __autoload($class_name)</strong></li>
<li>function _autoload($class_name)</li>
<li>function autoload($class_name, $file)</li>
</ol>
</li>
</ul>
<p>Wszystkie metody magiczne w PHP5 rozpoczynają się od <strong>__</strong>. Więc wybór zaokrąglił się nam do drugiej i trzeciej odpowiedzi. A ponieważ posiada ona wg. dokumentacji tylko jeden parametr to należy wybrać trzecią odpowiedź.</p>
<ul>
<li><strong>Pytanie VIII. What is the best way to run PHP 4 and PHP 5 side-by-side on the same Apache server?</strong>
<ol>
<li><strong>Run one as an Apache module, the other as a CGI binary.</strong></li>
<li>Run both as a CGI binary.</li>
<li>Just use .php4 for PHP 4, and .php for PHP 5.</li>
<li>Use .php for both but use different document roots.</li>
</ol>
</li>
</ul>
<p>Przyznaję, że w tym wypadku dwie odpowiedzi &#8211; drugą i czwartą skreśliłem ze względu, moim zdaniem na brak logiki. Pierwsze co mi się rzuciło to opcja realna ze strony klienta &#8211; czyli trzecia. Nie mniej jednak te <strong>&#8220;to run&#8221;</strong> w pytaniu pokwapiło mnie do wniosku, że należy do tego podejść z innej, bardziej technicznej strony. A ponieważ da się dwie wersje PHP uruchomić w trybie jedna jako skrypt CGI, a druga jako moduł Apache&#8217;a (dopiero po tym, należałoby skupić na parsowaniu dokumentów PHP w danej wersji zależnej od rozszerzenia) to pierwsza odpowiedź jest dobra. Ale zamieszałem :D I, żeby nie być gołosłownym, że niby nie rozwiązałem sam, proszę (strzelajcie w którym pytaniu się walnąłem ;]):</p>
<p style="text-align: center;"><a target="_blank" href="http://www.zend.com/store/education/certification/self-test.php?begin=1"  title="Zend Self-Test"><img class="center" src="http://img246.imageshack.us/img246/2097/zendcerttz8.png" alt="Zend Self-Test" /></a></p>
<p>Mam nadzieję, że komuś się przydadzą te odpowiedzi, rzecz jasna do sprawdzenia siebie samego. Jeśli coś przypadkiem pomyliłem, proszę o uwagi w komentarzach.</p>
<p>I na koniec pytanie &#8211; czy ktoś miał z bardziej praktycznej strony kontakt z <a target="_blank" href="http://utnij.eu/zend-cert/"  title="Zend Certificate"><strong>Zend Certificate</strong></a> i mógłby mi na tyle na ile umowa pozwala przybliżyć jak to wszystko działa (w komentarzach)? Z góry dzięki.</p>
]]></content:encoded>
			<wfw:commentRss>http://m1chu.eu/2008/05/12/zend-php-5-certification-self-test-omowienie-pytan/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>10 punktów podstaw teoretycznego tworzenia stron&#8230;</title>
		<link>http://m1chu.eu/2008/02/24/10-punktow-podstaw-teoretycznego-tworzenia-stron/</link>
		<comments>http://m1chu.eu/2008/02/24/10-punktow-podstaw-teoretycznego-tworzenia-stron/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 10:37:04 +0000</pubDate>
		<dc:creator>m1chu</dc:creator>
				<category><![CDATA[Edukacja]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webhosting]]></category>
		<category><![CDATA[architektura informacji]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[projektowanie]]></category>
		<category><![CDATA[teoria]]></category>
		<category><![CDATA[tworzenie stron]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://m1chu.eu/edukacja/10-punktow-podstaw-teoretycznego-tworzenia-stron</guid>
		<description><![CDATA[Dawno nic nie pisałem, bo przymierzam się nad większymi zmianami tutaj, ale wczoraj coś mnie natchnęło i przygotowałem mały teoretyczno-praktyczny poradnik inspirowany przez moją własną prezentację.

1. Prolog
Jakiś czas temu tworzyłem anglojęzyczną prezentację o tytule &#8220;How to create a good enough website?&#8221;. Rzecz jasna starałem się tam przedstawić przede wszystkim kwestie teoretyczne i przygotowawcze do kreowania [...]]]></description>
			<content:encoded><![CDATA[<p>Dawno nic nie pisałem, bo przymierzam się nad większymi zmianami tutaj, ale wczoraj coś mnie natchnęło i przygotowałem mały teoretyczno-praktyczny poradnik inspirowany przez moją własną prezentację.</p>
<p><span id="more-33"></span></p>
<h2>1. Prolog</h2>
<p>Jakiś czas temu tworzyłem anglojęzyczną prezentację o tytule <strong>&#8220;How to create a good enough website?&#8221;</strong>. Rzecz jasna starałem się tam przedstawić przede wszystkim kwestie teoretyczne i przygotowawcze do kreowania stron internetowych, bo jakakolwiek próba praktycznego przedstawienia tak szerokiego zagadnienia w formie ustnej zakończyłaby się za pewnie wielogodzinną przemową bez konkretnych wniosków. Nie mniej jednak zmotywowało mnie to do napisania &#8220;kilku&#8221; słów szerszego poradnika na temat <strong>&#8220;jak zacząć i o czym należy pamiętać tworząc strony internetowe&#8230;&#8221;</strong> &#8211; w formie głównie teoretycznej z aspektami praktycznymi&#8230;</p>
<h2>2. Czy na pewno tego chcesz?</h2>
<p>Jest to chyba podstawowe pytanie które powinien zadać sobie każdy przyszły, bądź początkujący programista. <strong>&#8220;Czy naprawdę masz na tyle czasu i motywacji, aby utworzyć swój pierwszy serwis?&#8221;</strong>. Pytanie jest o tyle ważne, że tworzenie jakichkolwiek mniej lub bardziej zawiłych, czy to programów, czy w naszym przypadku aplikacji internetowych jest procesem najczęściej skomplikowanym i długim. Przede wszystkim musisz myśleć abstrakcyjnie, co powoduje, że w wielu przypadkach niektóre aspekty codziennej logiki odchodzą w zapomnienie. Nie licz na to, że każdy z Twoich problemów rozwiążą inni. Z tym wiąże się fakt, że musisz posiadać choć małą nutkę umiejętności szukania i analizowania gotowych rozwiązań bądź porad. Jeśli spełniasz powyższe zasady, masz szansę że twoja zabawa z kodem nie zakończy się klęską.</p>
<h2>3. Rozpocznij projektowanie tradycjonalnie&#8230;</h2>
<p>No właśnie. Pomimo różnych zawiłości które już po części wymieniłem początek jakiejkolwiek większej pracy należy rozpoczynać tradycjonalnie, najlepiej podług uogólnionych zasad. Musisz wiedzieć, że:</p>
<ul>
<li>tradycjonalnie <em>nie znaczy</em> zawsze tak samo,</li>
<li>pamiętaj, że rola projektanta wiążę się z rolą programisty z podstawowych powodów:</li>
<li>
<ul>
<li>kreowanie strony której nie da się zaimplementować lub implementacja nie będzie działać poprawnie jest co najmniej niemądre,</li>
<li>w drugą stronę &#8211; zmieniane struktury projektu za każdym razem kiedy chcemy zmienić sposób działania strony będzie na pewno czasochłonne, a niekiedy nawet kosztowne.</li>
</ul>
</li>
<li>jeśli stronę miałoby tworzyć kilka osób należy zabrać pod uwagę przy projektowaniu możliwości każdego z programistów w celu jak najbardziej optymalnej implementacji przyszłego kodu.</li>
</ul>
<h2>4. Co z tym projektowaniem samym w sobie?</h2>
<p>I doszliśmy do pierwszego punktu nie stricte teoretycznego. Przed praktycznym pisaniem musisz wiedzieć czego chcesz i czego oczekujesz po swojej stronie. Można to nazwać <a target="_blank" href="http://pl.wikipedia.org/wiki/Architektura_informacji" title="Architektura informacji" ><strong>&#8220;architekturą informacji&#8221;</strong></a> twojej strony. Po fazie informacyjnej przedstawionej wyżej musisz stworzyć, przetestować i zweryfikować strukturę i możliwości swojej przyszłej strony. Mówiąc dokładniej, czy to na kartce, czy we własnej głowie przeanalizuj:</p>
<ul>
<li>jaki serwis chcesz tworzyć?</li>
<li>jaki ma być cel tego serwisu?</li>
<li>co chcesz wykorzystać przy jego tworzeniu i w jaki sposób chcesz to zaimplementować?</li>
<li>i co najważniejsze &#8211; do jakiej grupy osób ma być on kierowany i czy chcesz rozwijać jego możliwości poprzez np. wielojęzykowość?</li>
</ul>
<p>Jest to o tyle ważny punkt całego kreowania, że wybór którego dokonasz przy planowaniu będzie obowiązywał twoją stronę praktycznie do końca jej istnienia. Pamiętaj także, aby dokładnie testować wszystkie możliwe skutki swoich ewentualnych wyborów. W wypadku większych projektów pomocne będą tu znane od wielu lat&#8230; kartka i długopis :]</p>
<p>Kiedy już dojdziesz dokładnie do tego czego oczekujesz po swoim przyszłym tworze pora poznać kilka informacji o projektowaniu samym w sobie. Wiele osób nie mających zbytnio nic wspólnego z technologiami internetowymi może uważać, że tworzenie rozwiązań tego typu to rodzaj  tajemniczej sztuki. Nic mylnego moim zdaniem. To po prostu pewne predyspozycje do bycia kreatywnym. Dokładniej <strong>zbiór umownych reguł do rozwiązywania problemów w celu zrozumienia zapotrzebowań użytkowników i tworzenia efektywnych rozwiązań internetowych</strong>. Oczywiście definicja ta ma tylko zobrazować pojęcie i naginanie jej wg. indywidualnych potrzeb jest jak najbardziej zrozumiałe. Niekiedy z angielskiego <strong>&#8220;design&#8221;</strong> jest mylnie kojarzony tylko i wyłącznie z tworzeniem wizualnej części stron, a związane jest to z dominacją grafików internetowych (z angielskiego <strong>&#8220;graphic designers&#8221;</strong>).</p>
<p>Reasumując paragraf:</p>
<ul>
<li>nie należy zapominać o kooperacji z użytkownikami, którzy często są bardzo ważnym źródłem informacji i zapotrzebowań wśród ludzi,</li>
<li>należy zapoznać się z podstawowymi zasadami użyteczności stron i projektowania stron internetowych &#8211; wymienionych po części powyżej,</li>
<li>należy projektować jak już zostało wyżej podane abstrakcyjnie, ale nie <em>&#8220;na ślepo&#8221;, w jednym kierunku</em>. Tłumacząc bardziej: <em>kreuj swój serwis tak, jak sam chciałbyś go widzieć będąc swoim własnym klientem</em>.</li>
</ul>
<h2>5. Mam ułożony w głowie dokładny plan, ale za co mam się &#8220;chwycić&#8221; żeby go zaimplementować?</h2>
<p>Po pierwsze języki programowania, bądź związane z nimi technologie. Bez tego &#8211; to lepiej odpalić nowe <strong>CoD</strong> i czekać, aż osoby które się znają na tego typu sprawach zrobią coś za nas i dla nas. Prawda jest taka, że informatyka nie jest łatwą dziedziną, bo pomimo, że jest młoda daje ogromne pole do popisu i manewru, a to za sprawą ogromu na jaki się rozwinęła. I tak jest i przy tworzeniu aplikacji internetowych. <a target="_blank" href="http://pl.wikipedia.org/wiki/Html" title="Html" ><strong>HTML</strong></a> lub bardziej rygorystyczny <a target="_blank" href="http://pl.wikipedia.org/wiki/XHTML" title="xHTML" ><strong>xHTML</strong></a> i do tego <a target="_blank" href="http://pl.wikipedia.org/wiki/Kaskadowe_arkusze_styl%C3%B3w" title="CSS" ><strong>CSS (Kaskadowe arkusze stylów)</strong></a> w celu implementacji strony wizualnej i jej modyfikacji, a także <a target="_blank" href="http://pl.wikipedia.org/wiki/Php" title="PHP" ><strong>PHP</strong></a> i najbardziej znany tego typu system <a target="_blank" href="http://pl.wikipedia.org/wiki/Mysql" title="MySQL" ><strong>MySQL</strong></a> w celu utworzenia zdatnych do działania algorytmów, rozwiązań i przechowania danych to niestety w dzisiejszych czasach niezbędne minimum.</p>
<p>Nie będę omawiał tu każdego z tych języków. Bo w zasobach internetu można znaleźć wiele dobrych kursów, opracowań i przykładów. Wystarczy spojrzeć <a target="_blank" href="http://google.pl" title="Google.pl" ><strong>tutaj</strong></a>. Dodam tylko, że postaram się zawrzeć kilka informacji o pewnych aspektach tych języków. Jeśli ktoś już na początku chce mieć swobodną możliwość wyboru to przedstawiam poniżej kilka języków wraz z ich alternatywami (oczywiście są to tylko przykłady, względem własnych potrzeb można konfiguracje ułożyć inaczej):</p>
<p style="text-align: center;"><img class="iborder" src="http://images33.fotosik.pl/154/5191cd4ca892c1d4.png" alt="Screen" /></p>
<p>Osobiście będę starał się opierać na podanej wyżej konfiguracji podstawowej.</p>
<p>Do programowania w czymkolwiek przydałby się też jakiś edytor/program przeznaczony do tego typu zadań. A mianowicie:</p>
<ul>
<li>PHP, HTML, xHTML, MySQL w <em>Notepad++, ZendStudio (dla bardziej zaawansowanych &#8211; posiada kolorowanie składni, podpowiedzi, klienta ftp, cvs, debuger kodu, zarządzanie projektami, przeglądanie funkcji, klas, metod i wiele innych)</em>. Dodam tylko, że nie polecam np. Notatnika z racji dla przykładu problemów z kodowaniem, o czym później,</li>
<li>CSS w <em>Top Style Pro, Visual Studio .NET</em>, itp.,</li>
<li>JS/AJAX w <em>ZendStudio, Visual Studio .NET</em>.</li>
</ul>
<p>Oczywiście to nieliczne przykłady, najlepiej zacząć od testowania ich, albo ewentualnie innych tego typu programów w celu odnalezienia najbardziej przyjaznego samemu sobie.</p>
<h2>6. Czym jest te wspomniane kodowanie?</h2>
<p>Nieszczęsna rzecz. I w gotowych serwisach i w czasie pisania swoich skryptów. Sprawa jest jasna &#8211; <em>najlepiej jeśli kodowanie plików, <a target="_blank" href="http://www.w3.org/International/O-HTTP-charset.pl.php" >charset</a> dokumentu i kodowanie wraz z porównywanie znaków bazy danych są tego samego typu</em>. Dzięki temu powinniście uniknąć problemów z &#8220;krzakami&#8221; przy imporcie starej bazy, czy pisania dodatkowego kodu odpowiadającego za dynamiczne zmiany kodowania.</p>
<p>Jako polscy użytkownicy dla których domyślnie grupami odbiorców są właśnie także Polacy macie do wyboru dwa kodowania:</p>
<p style="text-align: center;"><img class="iborder" src="http://images33.fotosik.pl/155/e793dea04612399c.png" alt="Screen" /></p>
<p>Jest jeszcze trzecie &#8211; Microsoftowskie <em>windows-1250</em>, ale stanowczo odradzam używanie go. Do podanych powyżej pierwsze odnosić się będzie stricte tylko do polskich użytkowników. Drugie jest uniwersalne i doradzam używanie go, jeśli masz świadomość, że w pewnym momencie będą twoją stronę przeglądać użytkownicy z zagranicy. W nawiasie podałem odpowiedni w MySQL-u.</p>
<p>Teraz ciut praktyki. Czyli jak to wygląda kolejno w <strong>xHTML-u / HTML-u</strong>, kodowaniu plików (na podstawie <strong>ZendStudio</strong>) i MySQL-u (via <a target="_blank" href="http://pl.wikipedia.org/wiki/PhpMyAdmin" title="phpMyAdmin" ><strong>phpMyAdmin</strong></a>).</p>
<p>W pierwszym i drugim języku każda strona i podstrona musi posiadać nadany odpowiedni charset. My będziemy chcieli uzyskać dla przykładu <strong>utf-8</strong>. xHTML:</p>
<pre class="brush: xml;">&lt;meta http-equiv=&quot;content-type&quot; content=&quot;application/xhtml+xml; charset=utf-8&quot; /&gt;</pre>
<p>A także w postaci deklaracji języka dokumentu, dla przykładu w tagu <strong>html</strong>:</p>
<pre class="brush: xml;">&lt;html lang=&quot;pl&quot; xml:lang=&quot;pl&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;  // xhtml 1.0</pre>
<pre class="brush: xml;">&lt;html xml:lang=&quot;pl&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt; // xhtml 1.1</pre>
<p>Jeśli wewnątrz strony zmienia się język to w tagu nadrzędnym regionu ze zmienionym językiem możemy zadeklarować inny język:</p>
<pre class="brush: xml;">Witaj użytkowniku!
&lt;p lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;Welcome user!&lt;/p&gt;
// xhtml 1.0</pre>
<pre class="brush: xml;">Witaj użytkowniku!
&lt;p xml:lang=&quot;en&quot;&gt;Welcome user!&lt;/p&gt;
// xhtml 1.1</pre>
<p>Dla czystego <strong>HTML-a</strong> powyższe elementy będą wyglądać następująco:</p>
<pre class="brush: xml;">&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;</pre>
<pre class="brush: xml;">&lt;html lang=&quot;pl&quot;&gt;</pre>
<pre class="brush: xml;">Witaj użytkowniku!
&lt;p lang=&quot;en&quot;&gt;Welcome user!&lt;/p&gt;
</pre>
<p>To nie wszystko. Taki plik należy odpowiednio otwierać i odpowiednio zapisywać. Rzecz jasna piszę tu o kodowaniu. Dla przykładu &#8211; zapis w <strong>ZendStudio</strong> w kodowaniu proporcjonalnym do <strong>charset-u</strong> powinien wyglądać tak:</p>
<p style="text-align: center;"><img class="iborder" src="http://images25.fotosik.pl/163/1bb52424c102ee9cmed.png" alt="Screen" /></p>
<p>No i ostatnia sprawa. Aspekt bazy danych. Jeśli już z niej korzystasz w celu składowania danych należy ustawić porównywanie znaków i kodowanie pól w <em>phpMyAdmin</em> na w naszym przypadku <strong>utf8_unicode_ci</strong>.</p>
<p style="text-align: center;"><img class="iborder" src="http://images24.fotosik.pl/165/b509b13e566c72bc.png" alt="Screen" /></p>
<p style="text-align: center;"><img class="iborder" src="http://images34.fotosik.pl/154/bee4f720882aeada.png" alt="Screen" /></p>
<p>Należy pamiętać aby zmiany w phpMyAdmin wprowadzić <em>przed</em> wgraniem czy to pustej czy starej bazy danych.</p>
<h2>7. Ponad zakresowy aspekt numer jeden: <em>bezpieczeństwo!</em></h2>
<p>Kolejny praktyczny aspekt, który za pewnie można znaleźć w sieci, ale czymże byłby ten tekst bez niego. Dla laików &#8211; kilka porad co może czychać na niezabezpieczony skrypt i jak można się przed tym uchronić.</p>
<ul>
<li><em>Cross-Site scripting (XSS)</em></li>
</ul>
<p><strong>Opis:</strong> &#8211; sposób ataku możliwy do przeprowadzenia przy braku odpowiedniego filtrowania danych pozwalający na wstrzyknięcie niepowołanego kodu najczęściej w postaci JavaScript.<br />
<strong>Przykład kodu niezabezpieczonego:</strong></p>
<pre class="brush: php;">$nick = $_GET['nick'];
print 'Zalogowany jako: ' . $nick;</pre>
<p><strong>Przykład użycia luki:</strong></p>
<pre class="brush: xml;">http://serwer.pl/index.php?nick=&quot;&gt;&lt;script&gt;alert(document.cookie);&lt;/script&gt;</pre>
<p><strong>Sposób zabezpieczenia:</strong> należy przefiltrować dane poprzez funkcje htmlspecialchars(), strip_tags() lub/i htmlenties(), a także dodatkowo można via np. <strong>str_replace()</strong> usuwać ze zmiennych takie ciągi jak <strong><script type="text/javascript"></script></strong>.</p>
<pre class="brush: php;">$nick = strip_tags(htmlspecialchars($_GET['nick']));</pre>
<ul>
<li><em>SQL Injection</em></li>
</ul>
<p><strong>Opis:</strong> &#8211; atak spowodowany nieodpowiednim typowaniem lub brakiem filtrowania pozwalający na modyfikację zapytania do SQL-a.<br />
<strong>Przykład kodu niezabezpieczonego:</strong></p>
<pre class="brush: php;">$nick = $_GET['nick'];
mysql_query('SELECT id FROM users WHERE nick = ' . $nick);</pre>
<p><strong>Przykład użycia luki:</strong></p>
<pre class="brush: xml;">http://serwer.pl/index.php?nick=-1%20union%20select%201,2,3,4,5,6,7/*</pre>
<p><strong>Sposób zabezpieczenia:</strong> należy przefiltrować dane poprzez <strong>mysql_real_escape_string()</strong> wraz z sprawdzeniem, czy <em>magic_quotes</em> na serwerze jest włączony.</p>
<pre class="brush: php;">$nick = $_GET['nick'];
if ( ini_get('magic_quotes_gpc') )
{
	$nick = stripslashes($nick);
}
$nick = mysql_real_escape_string($nick);</pre>
<ul>
<li><em>Cross-site request forgery (XSRF)</em></li>
</ul>
<p><strong>Opis:</strong> &#8211; polega na wykorzystaniu uprawnień osoby administrującej w celu wykonania zadanego kodu.<br />
<strong>Przykład użycia luki:</strong></p>
<pre class="brush: xml;">[url]http://serwer.pl/index.php?mode=delete&amp;u=2[/url]</pre>
<p><strong>Sposób zabezpieczenia:</strong> należy przede wszystkim dokładnie sprawdzać co się otwiera. Nie zawsze, czy to grafiki, czy to odnośniki są tym czym mogą się wydawać. Po za tym należy przesyłać ważne dane np. w PA poprzez $_POST, a nie $_GET. Można ograniczyć przesyłanie linków w BBCode związanych z najważniejszymi funkcjami danego serwisu. Ostatecznie można też uniemożliwić używanie BBCode w serwisie.</p>
<ul>
<li><em>Session fixation</em></li>
</ul>
<p><strong>Opis:</strong> &#8211; polega na przejęciu konta użytkownika poprzez poznanie jego id sesji.<br />
<strong>Przykład użycia luki:</strong> &#8211; najczęściej poprzez przekazywanie id sesji poprzez adres i nieodpowiednie sprawdzanie go w czasie ładowania strony.</p>
<pre class="brush: xml;">http://www.mojadomena.pl/index.php?PHPSESSID=987654321</pre>
<p><strong>Sposób zabezpieczenia:</strong> należy regenerować id sesji w taki sposób, aby użytkownik nie mógł nadać sobie samemu jej id. Dodatkowo powinno się sprawdzać nadane id sesji, wraz z danymi użytkownika z tymi które istnieją w bazie danych.</p>
<pre class="brush: php;">session_start();
if (!isset($_SESSION['nick']))
{
	session_destroy();
}
session_regenerate_id();
$_SESSION['nick'] = true;</pre>
<ul>
<li><em>Local File Include / Remote File Include</em></li>
</ul>
<p><strong>Opis:</strong> &#8211; pozwala na załączenie (via np. include, require, readfile, fopen) niepożądanego pliku na serwerze lub zdalnie z poza serwera skryptu.<br />
<strong>Przykład niezabezpieczonego kodu:</strong></p>
<pre class="brush: php;">require 'include/' . $_GET['id'];</pre>
<p><strong>Przykład użycia luki:</strong> &#8211; <em>%00</em> na końcu to tzw. atak z użyciem zerowego bajtu (<em>Poison Null Byte</em>) przez co po zaincludeowaniu ścieżki wszystko co po za zmienną zostanie usunięte (pozbywamy się np. rozszerzenia html z include wpisanego na stałe).</p>
<pre class="brush: xml;">http://serwer.pl/index.php?id=./../../../../../../../../../etc/passwd%00</pre>
<p><strong>Sposób zabezpieczenia:</strong> można filtrować dane podług danych znaków i te wejściowe, ale także niektóre z $_SERVER. Po za tym należy wyłączyć możliwość zdalnego odwoływania się do plików z poza serwera przez readfile, include czy fopen.</p>
<p>Pamiętaj także, że w każdym z wyżej wymienionych przypadków jeśli masz pewność, że przekazywane dane będą wartością np. całkowitą najlepiej jest wykonać rzutowanie lub przefiltrować odpowiednią funkcją je. Dla przykładu:</p>
<pre class="brush: php;">$id = intval($_GET['id']); // funkcja</pre>
<pre class="brush: php;">$id = (int)$_GET['id']; // rzutowanie</pre>
<h2>8. Ponad zakresowy aspekt numer dwa: <em>podstawy optymalizacji!</em></h2>
<p>Punkt ten możesz brać z malutkim przymrużeniem oka ;] Optymalizacja jest ważna, ale bardziej w formie zaprojektowania serwisu i bazy danych (szczególnie korelacji pół i tabel, a także optymalizacji zapytań) niż aspektów stricte semantycznych które podam. O to kilka testów wraz z wynikami w komentarzach (w postaci prędkości):</p>
<pre class="brush: php;">// długość zmiennej
if ( strlen($try) &lt; 5000000 ) { echo 0; }
// kontra
if ( !isset($try{5000000}) ) { echo 0; }

// wynik:
// 1: 0.000046
// 2: 0.000012
// powodem jest fakt, że isset() jest konstrukcją językową, a strlen() funkcją</pre>
<pre class="brush: php;">// pre / post-inkrementacja
for ( $i = 0; $i &lt; 150000; ++$i )
{
print null;
}
// kontra
for ( $j = 0; $j &lt; 150000; $j++ )
{
print null;
}
// wynik:
// 1: 0.0441
// 2: 0.0489
// wszędzie po za parametrami warunków należy używać pre-inkrementacji, gdyż nie jest wtedy tworzona dodatkowa przejściowa zmienna przez co czas użycia jest krótszy.</pre>
<pre class="brush: php;">// przeliczanie funkcji w pętlach
for ( $i = 0; $i &lt; sizeof($tablica); ++$i )
{
print null;
}
// kontra
$size = sizeof($tablica);
for ( $j = 0; $j &lt; $size; ++$j )
{
print null;
}
// wynik:
// 1: 0.00066
// 2: 0.00031
// w pierwszym przypadku przy każdej iteracji pętli zostaje obliczany wynik funkcji sizeof co wydłuża działanie skryptu</pre>
<pre class="brush: php;">// wyrażenia regularne i funkcje wbudowane
if (preg_match(&quot;!^foo_!i&quot;, &quot;FoO_&quot;)) { }
// kontra
if (!strncasecmp(&quot;foo_&quot;, &quot;FoO_&quot;, 4)) { }
// wynik:
// 1: 0.0000791
// 2: 0.0000119
// wyrażenia regularne w wypadku prostych zastosowań są o wiele wolniejsze niż przeznaczone do tego funkcje wbudowane</pre>
<p>To tylko niektóre proste testy, ukazujące z pozoru nieznaczne, ale przy nagromadzeniu i większych projektach uciążliwe różnice w wydajności. Więcej informacji już niedługo będzie można uzyskać na moim blogu.</p>
<h2>9. A może kilka słów jak projektować bazy?</h2>
<p>Nie, nie uzyskasz krok po kroku porad jak utworzyć uniwersalną bazę. Nie ma chyba takich poradników. To zależy od tego czego potrzebujesz. Mogę jednak wypunktować główne założenia:</p>
<ul>
<li>jeśli masz zamiar wykonywać bardzo dużo operacji w jednoczesnym czasie to proponuje wybrać typ <strong>InnoDB</strong>. Jest on ciut wolniejszy, ale za to posiada takie dodatkowe aspekty jak transakcje co lepiej organizuje i zabezpiecza działanie na bazie (w przeciwieństwie do MyISAM),</li>
<li>każda tabela powinna posiadać indeks, a w wypadku kiedy istnieje możliwość, że tabela rozrośnie się do dużych rozmiarów korzystaj z unikalnych indeksów na danych kolumnach co zwiększy wydajność przeszukiwania tabeli. Musisz pamiętać jednak, że przed umieszczeniem wpisu w tabeli musisz sprawdzić, czy nie istnieje już czasami wartość tego typu w kolumnie o nadanym unikalnym indeksie. W przeciwnym razie wystąpi błąd przy wykonaniu zapytania.
<pre class="brush: sql;">ALTER TABLE nazwa_tabeli ADD UNIQUE INDEX (nazwa_kolumny);</pre>
</li>
<li>spróbuj przewidywać długość typów pól. Jeśli zapisujesz w czystej postaci IP to nie twórz typu <strong>VARCHAR</strong> większego niż <strong>15ście</strong> znaków. Jeśli zapisujesz zahashowane w md5 hasło to ustaw pole na <strong>32 znaki</strong>. Nadmiary wielkości nie są potrzebne w bazie i odbijają się na wydajności.</li>
<li>konstruuj tabelę tak, abyś mógł bez problemu przeszukiwać ją po ID. Kardynalnym błędem w zautomatyzowanych serwisach jest działanie np. na nickach użytkowników. Wyjątkiem są specyficzne serwisy, gdzie jedno pole danej tabeli nie oddziałuje na drugie. W przeciwnym wypadku działanie na ID jest bardzo dobrą metodą na łączenie danych z kilku tabel.
<pre class="brush: sql;">SELECT u.username, g.groups FROM groups g LEFT JOIN users u ON g.user_id = u.user_id WHERE g.group_id = 1;</pre>
</li>
<li>jeśli masz możliwość używaj modułu <strong>mysqli</strong> &#8211; jest wydajniejszy już z samej konstrukcji.</li>
</ul>
<h2>10. Co, gdy mój serwis już stoi?</h2>
<p>Teraz możesz się przygotować na kilka tygodni, miesięcy bardziej równomiernej pracy nad promocją serwisu. O ile naprawdę chcesz go promować. Twój kod za pewnie standardowo nie jest przystosowany dla wyszukiwarek. Więc pierwsze co możesz zrobić to pomajsterkować z <strong>mod_rewrite</strong> i przepisywaniem linków na bardziej przyjazne wyszukiwarką.</p>
<pre class="brush: xml;">RewriteEngine on
RewriteRule ^([a-z0-9]+)$ /index.php?action=$1 [L,QSA,NE,NC]</pre>
<p>Po za tym zainteresuj się systemami linkującymi i pozycyjnymi &#8211; szczególnie tymi o wysokim <a target="_blank" href="http://pl.wikipedia.org/wiki/PageRank" title="PageRank" ><strong>PageRank-u</strong></a>. Po jakimś czasie pomoże się wybić to twojej stronie na wyższe pozycje pod danymi frazami. Możesz wspomóc się automatycznymi skryptami do dodawania, ale one najczęściej dodają przede wszystkim do stron o niskim pożytku dla nas samych.</p>
<p>Ważnym i przyciągającym najwięcej klientów, czy użytkowników (a co zarazem idzie rozwijającym serwis i zwiększającym PR) są systemy typu AdWords. Płatnie wyświetlają one reklamy w google po wpisaniu zadanych fraz przez użytkownika w wyszukiwarce. Przewidywalnie za około 100 złotych może twoją stronę odwiedzić kilkadziesiąt tysięcy użytkowników (praktycznie jest to tyle kliknięć).</p>
<p>No i ostatecznie najważniejszym aspektem jest twoja opieka nad stroną. Jej rozwój, zmiana treści, , zachowanie poprawności (sprawdzanej np. <a target="_blank" href="http://validator.w3.org/" title="Validator W3" >tutaj</a>), udoskonalanie pod oczekiwania użytkowników czemu pomóc może np. system analityczny Google Analytics &#8211; to wszystko pozwoli Ci maksymalnie rozwinąć twój serwis internetowy.</p>
]]></content:encoded>
			<wfw:commentRss>http://m1chu.eu/2008/02/24/10-punktow-podstaw-teoretycznego-tworzenia-stron/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>&#8220;Mr. Bucked&#8221; szaleje po raz kolejny&#8230;</title>
		<link>http://m1chu.eu/2007/09/26/mr-bucked-szaleje-po-raz-kolejny/</link>
		<comments>http://m1chu.eu/2007/09/26/mr-bucked-szaleje-po-raz-kolejny/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 18:28:15 +0000</pubDate>
		<dc:creator>m1chu</dc:creator>
				<category><![CDATA[Edukacja]]></category>
		<category><![CDATA[bućko]]></category>
		<category><![CDATA[hack.pl]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[home.pl]]></category>
		<category><![CDATA[uczelnia]]></category>

		<guid isPermaLink="false">http://m1chu.eu/pozostale/mr-bucked-szaleje-po-raz-kolejny/</guid>
		<description><![CDATA[Michał Bućko, znacie? Możliwe, że grono osób z kręgu tych które choć ciut interesują się dziedzinami informatycznymi kojarzą tego Pana. Zaznaczę tylko, że zbieżność imion jest przypadkowa ;] Osoba ta dla mniej wtajemniczonych wybiła się medialnie po swojej jakże cnotliwej i zacnej propozycji &#8220;charytatywnej&#8221; pomocy w załataniu dziury dotyczącej możliwości publicznego przeglądania logów użytkowników serwerów [...]]]></description>
			<content:encoded><![CDATA[<p>Michał Bućko, znacie? Możliwe, że grono osób z kręgu tych które choć ciut interesują się dziedzinami informatycznymi kojarzą tego Pana. Zaznaczę tylko, że zbieżność imion jest przypadkowa ;] Osoba ta dla mniej wtajemniczonych wybiła się medialnie po swojej jakże cnotliwej i zacnej propozycji &#8220;charytatywnej&#8221; pomocy w załataniu dziury dotyczącej możliwości publicznego przeglądania logów użytkowników serwerów wirtualnych home.pl &#8211; za bagatela, 200 tysięcy złotych. Tym razem nasz podmiot raczy nas &#8211; aktualnych i przyszłych studentów jakże w jego oczach utopijnym systemem akademickiego kształcenia&#8230;</p>
<p><span id="more-18"></span></p>
<p>Kilka dni temu przypadkiem natknąłem się na <a href="http://hack.pl/list_otwarty/"  onclick="this.target='_blank'" title="List otwarty">tą</a> podstronę serwisu hack.pl. I pomimo, że z kilkoma tam poruszonymi aspektami się zgadzam, to cały list wprowadził mnie w negatywne zdumienie, które szybko przerodziło się w lekki szok, odczucie zewnętrznej bufonady, samolubstwa, a wręcz nawet chamstwa autora tego tekstu. Dlaczego? Już wyjaśniam&#8230;</p>
<blockquote><p>1.Wprowadzenie egzaminów ustnych. Zastąpienie przez egzaminy ustne (tudzież ustne + pisemne) dotychczasowych egzaminów.</p></blockquote>
<p>Punktu tego nie rozumiem zupełnie. No przepraszam, może po prostu jego semantyka jest niepoprawna, bo moim zdaniem próba zamiany dotychczasowych (pisemnych i ustnych dodam) egzaminów, na niech zacytuje ponownie &#8220;egzaminy ustne (tudzież ustne + pisemne)&#8221; jest co najmniej w sensie części znajdującej się w nawiasie niepoprawna. Czy zamiana logicznie sprawę rzecz biorąc zbioru <strong>A</strong> o elementach <strong>B</strong> i <strong>C</strong> na zbiór <strong>D</strong> o elementach <strong>B</strong> i <strong>C</strong> ma jakiś sens? Mogę się domyślać o co chodziło autorowi, nie mniej jednak merytorycznie jest tu coś nie tak.</p>
<blockquote><p>Egzamin ustny w zdecydowanie wyższym stopniu pozwala na sprawdzenie wiedzy studenta/studentki. (Ew egzamin ustny + przekrojowy egzamin pisemny).</p></blockquote>
<p>Tutaj sytuacja już się &#8220;z deka&#8221; wyjaśnia. I zarówno do tej części tego akapitu, jak i do jej reszty &#8211; zgadzam się. Przejście na pytania o charakterze ogólnym, zmiana systemu kształcenia na bardziej profilowany, przystępniejszy dla studenta na pewno się przyda.</p>
<blockquote><p>2. Zakaz ściągania na uczelniach wyższych. Ściąganie karane natychmiastowym usunięciem z uczelni.</p>
<p>Nadchodzi czas rozliczenia z konformizmem i prostactwem.</p></blockquote>
<p>Po pierwsze radziłbym rozróżnić kiedy człowiek jest prostakiem, a kiedy charakteryzuje się prostotą. To są dwa zupełnie inne określenia. Nie próbujmy robić z każdego człowieka persony renesansu. Tym bardziej, że każdy kto jest lub był studentem wie, że nigdy nie było i nie będzie równości, a tym bardziej sprawiedliwości w środowisku akademickim. Nie można wymagać czegoś od kogoś, jeśli samemu nie daje się nic. Nie każdy jest perfekcjonistą w danym zakresie, nie każdy nawet jak mocno chce potrafi, nie każdy pomimo, że się postarał zostaje sprawiedliwie ocenionym za swoją pracę. I tak &#8211; autor ma rację, nie każdy <strong>ma prawo skończyć studia, otrzymać tytuł magistra</strong>, a tym bardziej ci którzy używają określeń <strong>&#8220;nie każdy <em>musi mieć</em> studia&#8221;</strong>.</p>
<blockquote><p>Wsparcie dla ubogich studentów ? tak. Czy jednak musimy wspierać kolejnych sofistów, którzy nigdy nie będą mieli marzeń o nieskończoności? Uważam, że nie musimy.</p></blockquote>
<p>Kolejny argument w stylu <strong>&#8220;ja jestem ten doskonały, ambitny, inteligentny i mądry, a ci słabsi nie mają racji bytu&#8221;</strong>. O co tu chodzi? Bo pomimo, że zgadzam się w sprawie stypendiów za działalność, spełnianie naukowych ambicji, czy prace badawcze to nazywanie kogokolwiek miernotą jest dla mnie niedopuszczalne. Może by tak podejść do sprawy w formie, że są też osoby lepsze w danych dziedzinach i to my dla nich jesteśmy miernotami? No i jeszcze jedna sprawa &#8211; o co chodzi z tymi <strong>sofistami</strong>. Co mają osoby, czy ich dokonania z dziedzin filozofii greckiej, czy etyki do tej tematyki. Czy o czymś nie wiem? Czy może po prostu chodziło o <strong>sofizmatów</strong>? Bo przecież tak łatwo jest ich pomylić wykształconej osobie&#8230;</p>
<p>Kilka słów podsumowania na koniec. List może nie jest zły. Możliwe nawet, że pobudki do jego napisania też nie miały być złe. Jest wiele paragrafów w nim napisanych w miarę konkretnych i pozytywnie nastrajających na przyszłość. Niestety, lekki przejaw narcyzmu, uwydatniania własnej doskonałości i kilka błędów merytorycznych zmusiły mnie do napisania kilku słów na ten temat. Nie wiem czy ktoś to przeczyta, czy ktoś na moje zarzuty odpowie, przejmie się tym &#8211; ja swoje zdanie wyraziłem.</p>
]]></content:encoded>
			<wfw:commentRss>http://m1chu.eu/2007/09/26/mr-bucked-szaleje-po-raz-kolejny/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Kampania wrześniowa&#8230; misja trwa&#8230;</title>
		<link>http://m1chu.eu/2007/09/26/kampania-wrzesniowa-misja-trwa/</link>
		<comments>http://m1chu.eu/2007/09/26/kampania-wrzesniowa-misja-trwa/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 17:13:07 +0000</pubDate>
		<dc:creator>m1chu</dc:creator>
				<category><![CDATA[Edukacja]]></category>
		<category><![CDATA[Projekty]]></category>
		<category><![CDATA[forum komputerowe]]></category>
		<category><![CDATA[kampania wrześniowa]]></category>
		<category><![CDATA[Politechnika Poznańska]]></category>
		<category><![CDATA[thenet.pl]]></category>
		<category><![CDATA[uczelnia]]></category>

		<guid isPermaLink="false">http://m1chu.eu/pozostale/kampania-wrzesniowa-misja-trwa/</guid>
		<description><![CDATA[Nadchodzi tak okres w życiu człowieka w którym jest on zmuszany do robienia rzeczy których robić nie chce. Jedni przeżywają to co tydzień, drudzy kilka razy w życiu. Doświadcza tego jednak z reguły każdy. Tak się składa, że studentowi &#8220;zaszczyt&#8221; ten przypada spełniać najczęściej raz do roku&#8230;

Kampania wrześniowa, inaczej zwana sesją poprawką to właśnie ta [...]]]></description>
			<content:encoded><![CDATA[<p>Nadchodzi tak okres w życiu człowieka w którym jest on zmuszany do robienia rzeczy których robić nie chce. Jedni przeżywają to co tydzień, drudzy kilka razy w życiu. Doświadcza tego jednak z reguły każdy. Tak się składa, że studentowi &#8220;zaszczyt&#8221; ten przypada spełniać najczęściej raz do roku&#8230;</p>
<p><span id="more-17"></span></p>
<p>Kampania wrześniowa, inaczej zwana sesją poprawką to właśnie ta przypadłość na którą aktualnie cierpi duża część grona akademickiego. Oczywiście części uczącej się, a nie uczącej innych. Z tego też powodu nie pisałem nic przez długi okres oficjalnie starannie ucząc się do całego wachlarza poprawek. I pomimo, że &#8220;kampanię na tapecie&#8221; mam nadal i to w najgorszej formie, to w znacznym rozluźnieniu i lekkim przekonaniu, że i tak nie zdam postanowiłem kilka słów o drobnych niuansach i innowacjach napisać.</p>
<p>Po pierwsze &#8211; jak może ktoś zauważył pojawiły się dwie nowe rzeczy. Przy wysyłaniu komentarzy trzeba wpisać sumę dwóch liczb przed wysłaniem wpisu. Dodawać chyba każdy umie? Więc nie widzę problemu, szczególnie że to w zakresie sumowania do dwudziestu. Druga z innowacji to <a href="http://pl.wikipedia.org/wiki/Token"  onclick="this.target='_blank'" title="Wikipedia: token">token</a> w postaci wygenerowanego ciągu znaków pokazywany przy rejestracji nowego użytkownika. Oczywiście nie wprowadziłem tego po to, aby Wam użytkownikom utrudnić życie. Wprost przeciwnie &#8211; chcę Was uchronić od zbędnego spamu i w formie botów i wpisów przez nie rozprowadzanych. A taka sytuacja mogła nastąpić, co zauważyłem po rejestracji kilku z powyżej wymienionych robotów internetowych na blogu.</p>
<p>W międzyczasie wreszcie rozpocząłem dawno zapowiadany projekt &#8211; <a href="http://forum.thenet.pl"  onclick="this.target='_blank'" title="thenet.pl - technologiczne spojrzenie na świat"><strong>thenet.pl</strong></a>. Jak dotychczas powstało tylko forum, na okres przyszły &#8211; bliżej określony w zależności od rozwoju, zapotrzebowania i ilości użytkowników planowany jest też profesjonalny serwis. Na czym ma polegać cały projekt? Na jak najbardziej profesjonalnym, konkretnym i klarownym informowaniu i pomaganiu użytkownikom. Na pomysł serwisu wpadł wraz ze mną <strong>MrC</strong>. Krótko po tym do aspektów graficznych dołączył się <strong>nappy</strong>. Nie mniej jednak długo trwało za nim coś się ruszyło, coś zaczęło powstawać. Na dzień dzisiejszy forum jest w początkowym stadium rozwoju &#8211; szukamy <em>specjalistów</em> od danych działów, osób które chcą wykazać się wiedzą, potrafią napisać co nie co w rodzimym nam języku, chcą pomagać innym, a w przyszłości tworzyć ogólnopolski serwis informatyczny (w powiązaniu z elektroniką i matematyką). Zapraszamy także wszystkich chętnych użytkowników, przede wszystkim osoby które szukają pomocy, a także swoim udziałem chciałyby pomóc w rozwoju naszego projektu.</p>
<p>Na koniec mogę zaznaczyć, że z biegiem czasu właśnie z powyższego powodu z forum mojej strony znikną wszelkie działy niezwiązane bezpośrednio z moją pracą, na rzecz <strong>thenet.pl</strong> oczywiście.</p>
<p>Zapraszam do czytania wpisów i komentowania.</p>
]]></content:encoded>
			<wfw:commentRss>http://m1chu.eu/2007/09/26/kampania-wrzesniowa-misja-trwa/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
