<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8526364323565954995</id><updated>2011-11-28T01:14:27.096+01:00</updated><category term='algorytmy'/><category term='PHP'/><category term='AJAX'/><category term='SEO'/><category term='javascript'/><category term='CSS'/><category term='python'/><category term='books'/><category term='HTML'/><title type='text'>Blog informatyczny</title><subtitle type='html'>Blog informatyczny - aplikacje webowe, JavaScript, AJAX, Python, PHP</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.malysa.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-1303619803323856084</id><published>2009-03-21T09:54:00.000+01:00</published><updated>2009-03-21T09:56:45.914+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='algorytmy'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Jak wygenerować wartości dla własnego wybieracza kolorów (color picker'a)</title><content type='html'>Wygenerowana tablica kolorów będzie służyła wybieraczowi kolorów dla aplikacji webowej napisanej w Pythonie. Dla przykładu plansza kolorów na wybieraczu będzie utworzona jako HTML-owa tabela z dynamicznym wpisywaniem wartości kolorów. Nie jest to optymalne rozwiązanie, ale proste.&lt;br /&gt;&lt;br /&gt;Tabela przyjmnie postać&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;table cellpadding='0' cellspacing='0'&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td style='width:2px;height:2px;background-color: rgb(colR,colG,colB);'&amp;gt;&lt;br /&gt; &amp;lt;/td&amp;gt;&lt;br /&gt; ...&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt; ...&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;gdzie colR, colG, colB są wartościami czerwieni, zieleni i błękitu w przedziale (0-255).&lt;br /&gt;&lt;br /&gt;Wyświetlane kolory należą do trójwymiarowej przestrzeni RGB. Plansza kolorów wybieracza kolorów windowsowego programu Paint wyświetla kolory w przestrzeni HSL o stałym L=0.5. Jest więc to dwuwymiarowa przestrzeń. H oznacza odcień (ang. hue), S - nasycenie (ang. saturation), a L - świetło (ang. lightness). Nasza tabela będzie miała wymiary 100 na 100, a wartości HSL będą z przedziału 0-1.&lt;br /&gt;&lt;br /&gt;Wartości z przestrzeni HSL o stałym L należy przeliczyć na wartości RGB. W tym celu skorzystam z algorytmu znalezionego w Inetrnecie, a kod programu zapiszę w języku Python.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;L = 0.5&lt;br /&gt;&lt;br /&gt;html = """&lt;br /&gt;&amp;lt;table cellpadding='0' cellspacing='0'&amp;gt;&lt;br /&gt;"""&lt;br /&gt;&lt;br /&gt;for i in range(99,-1,-1):&lt;br /&gt;    S = i/100.0&lt;br /&gt;    html += '&amp;lt;tr&amp;gt;'&lt;br /&gt;    for j in range(100):&lt;br /&gt;        H = j/100.0&lt;br /&gt;        temp2=L+S - L*S&lt;br /&gt;        temp1 = 2.0*L - temp2&lt;br /&gt;        Rtemp3=H+1.0/3.0&lt;br /&gt;        if Rtemp3 &amp;lt; 0:&lt;br /&gt;         Rtemp3 = Rtemp3 + 1.0&lt;br /&gt;        if Rtemp3 &amp;gt; 1:&lt;br /&gt;         Rtemp3 = Rtemp3 - 1.0&lt;br /&gt;        Gtemp3=H&lt;br /&gt;        if Gtemp3 &amp;lt; 0:&lt;br /&gt;         Gtemp3 = Gtemp3 + 1.0&lt;br /&gt;        if Gtemp3 &amp;gt; 1:&lt;br /&gt;         Gtemp3 = Gtemp3 - 1.0&lt;br /&gt;        Btemp3=H-1.0/3.0&lt;br /&gt;        if Btemp3 &amp;lt; 0:&lt;br /&gt;         Btemp3 = Btemp3 + 1.0&lt;br /&gt;        if Btemp3 &amp;gt; 1:&lt;br /&gt;         Btemp3 = Btemp3 - 1.0&lt;br /&gt;        &lt;br /&gt;        if S == 0:&lt;br /&gt;         R = L&lt;br /&gt;         G = L&lt;br /&gt;         B = L&lt;br /&gt;        else:   &lt;br /&gt;           if 6.0*Rtemp3 &amp;lt; 1:&lt;br /&gt;            R = temp1+(temp2-temp1)*6.0*Rtemp3&lt;br /&gt;           elif 2.0*Rtemp3 &amp;lt; 1:&lt;br /&gt;            R = temp2&lt;br /&gt;           elif 3.0*Rtemp3 &amp;lt; 2:&lt;br /&gt;            R = temp1+(temp2-temp1)*((2.0/3.0)-Rtemp3)*6.0&lt;br /&gt;           else:&lt;br /&gt;            R = temp1&lt;br /&gt;&lt;br /&gt;           if 6.0*Gtemp3 &amp;lt; 1:&lt;br /&gt;            G = temp1+(temp2-temp1)*6.0*Gtemp3&lt;br /&gt;           elif 2.0*Gtemp3 &amp;lt; 1:&lt;br /&gt;            G = temp2&lt;br /&gt;           elif 3.0*Gtemp3 &amp;lt; 2:&lt;br /&gt;            G = temp1+(temp2-temp1)*((2.0/3.0)-Gtemp3)*6.0&lt;br /&gt;           else:&lt;br /&gt;            G = temp1&lt;br /&gt;        &lt;br /&gt;           if 6.0*Btemp3 &amp;lt; 1:&lt;br /&gt;            B = temp1+(temp2-temp1)*6.0*Btemp3&lt;br /&gt;           elif 2.0*Btemp3 &amp;lt; 1:&lt;br /&gt;            B = temp2&lt;br /&gt;           elif 3.0*Btemp3 &amp;lt; 2:&lt;br /&gt;            B = temp1+(temp2-temp1)*((2.0/3.0)-Btemp3)*6.0&lt;br /&gt;           else:&lt;br /&gt;            B = temp1&lt;br /&gt;        &lt;br /&gt;        R1 = int(256*R)&lt;br /&gt;        G1 = int(256*G)&lt;br /&gt;        B1 = int(256*B)  &lt;br /&gt;        line= "&amp;lt;td style='width:2px;height:2px;background-color: rgb("+str(R1)+","+str(G1)+","+str(B1)+");'&amp;gt;&amp;lt;/td&amp;gt;"&lt;br /&gt;        html += line&lt;br /&gt;    html += '&amp;lt;/tr&amp;gt;'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;html += """&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;"""&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;W wybieraczu kolorów programu Paint w systemie Windows, plansza kolorów jest stała i światło (lub jaskrawość) wynosi 0.5. Z boku znajduje się jednak suwak zmieniający jaskrawość. Zmiana jaskrawości na suwaku nie zmienia planszy, ale zmienia kolor wynikowy pokazywany w osobnym prostokącie. W ten sposób otrzymujemy trójwymiarową przestrzeń HSL.&lt;br /&gt;&lt;br /&gt;Różne programy graficzne, np. GIMP, używają innego modelu przy wyborze kolorów. Jest to model HSV. W programie GIMP istnieje kilka plansz kolorów.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-1303619803323856084?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/1303619803323856084/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=1303619803323856084' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/1303619803323856084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/1303619803323856084'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2009/03/jak-wygenerowac-wartosci-dla-wasnego.html' title='Jak wygenerować wartości dla własnego wybieracza kolorów (color picker&apos;a)'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-6204721440355544070</id><published>2009-02-26T19:51:00.001+01:00</published><updated>2009-02-26T19:54:21.576+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Jak stworzyć dynamiczny arkusz CSS w języku PHP?</title><content type='html'>Przy użyciu języka PHP można łatwo stworzyć dynamiczny arkusz CSS, w którym style mogą zmieniać się zależnie od zmiennych PHP-owych.&lt;br /&gt;Po pierwsze, tak stworzony dokument musi mieć odpowieni nagłówek HTTP, który wskaże odpowiedni typ mine, w tym przypadku text/css.&lt;br /&gt;tworzymy plik PHP, np. style.php&lt;br /&gt;&lt;br /&gt;&lt;codeblock&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;header("Content-Type: text/css");&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/codeblock&gt;&lt;br /&gt;&lt;br /&gt;Taki plik można zaprogramować na różne sposoby. Tutaj dla przejrzystości kodu proponuję najpierw ustawiać zmienne odpowiednimi wartościami, a później wydruk tych wartości wklejać do definicji standardowego pliku CSS.&lt;br /&gt;Np. kod koloru sztywno zapisanego jako #a0a0a0 zamieniamy na &lt;?php print($backgroundColor); ?&gt;. Zmienna $backgroundColor została wcześniej odpowiednio zdefiniowana.&lt;br /&gt;&lt;br /&gt;&lt;codeblock&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;header("Content-Type: text/css");&lt;br /&gt;$backgroundColor = '#a0a0a0';&lt;br /&gt;?&amp;gt;&lt;br /&gt;body {&lt;br /&gt;    background-color: &lt;?php print($backgroundColor); ?&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/codeblock&gt;&lt;br /&gt;&lt;br /&gt;Style mogą różnić się w zależności od przeglądarki ($_SERVER['HTTP_USER_AGENT']), w zależności od wartości odczytanych z sesji lub z bazy danych, w zależności od czasu lub mogą być na stałe ustawione, jeśli celem stworzenia dynamicznego arkusza CSS jest łatwość zmien w stylach. &lt;br /&gt;&lt;br /&gt;Stworzonyw ten sposób plik PHP dołączamy do kodu HTML:&lt;br /&gt;&lt;br /&gt;&lt;codeblock&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" href="style.php"&lt;br /&gt;  type="text/css" /&amp;gt;&lt;br /&gt;&lt;/codeblock&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-6204721440355544070?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/6204721440355544070/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=6204721440355544070' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/6204721440355544070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/6204721440355544070'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2009/02/jak-stworzyc-dynamiczny-arkusz-css-w.html' title='Jak stworzyć dynamiczny arkusz CSS w języku PHP?'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-3517763599337208692</id><published>2009-02-23T22:08:00.003+01:00</published><updated>2009-02-24T17:16:15.923+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Czym różnią się atrybuty name i id w HTML-u?</title><content type='html'>Każdy element HTML może posiadać zarówno atrybut name jak i id.&lt;br /&gt;Funkcja javaScript'u&lt;br /&gt;&lt;blockquote&gt;document.getElementById(id)&lt;/blockquote&gt;&lt;br /&gt;zwraca obiekt pojedynczego elementu HTML o danym id, natomiast&lt;br /&gt;&lt;blockquote&gt;document.getElementsByName(name)&lt;/blockquote&gt;&lt;br /&gt;zwraca obiekt kolekcji HTML - wszystkie elementy z odpowiednim atrybutem name.&lt;br /&gt;Atrybut name jest używany w formularzach. Po naciśnięciu przycisku submit formularz jest wysyłany do serwera. Po stronie serwera uzyskujemy w ten sposób pary name=value.&lt;br /&gt;&lt;br /&gt;W kaskadowych arkuszach stulu (CSS) można definiować styl elementu poprzez id, np:&lt;br /&gt;&lt;blockquote&gt;#id {&lt;br /&gt;    background-color: #ffffff; &lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Atrybuty name i id, choć wydają się podobne, mają troche inne zastosowanie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-3517763599337208692?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/3517763599337208692/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=3517763599337208692' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/3517763599337208692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/3517763599337208692'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2009/02/czym-roznia-sie-atrybuty-name-i-id-w.html' title='Czym różnią się atrybuty name i id w HTML-u?'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-4718141110437394531</id><published>2009-02-20T20:32:00.006+01:00</published><updated>2009-02-20T20:51:00.109+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Blokowanie zawartości strony internetowej elementem div</title><content type='html'>Podczas tworzenia aplikacji webowej pojawiła się potrzeba zablokowania elementów strony na czas pobierania AJAX-a. Rozwiązaniem jest zastosowanie ukrytego diva, który w razie potrzeby zasłoni całą stronę.&lt;br /&gt;&lt;br /&gt;W kodzie HTML umieszczamy odpowiedni element div:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;div id="ukrywanie"&amp;gt;&amp;lt;/div&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;W arkuszu stylów CSS dla strony umieszczamy:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#ukrywanie{&lt;br /&gt;    width: 100%;&lt;br /&gt;    height: 100%;&lt;br /&gt;    top:0pt;&lt;br /&gt;    left:0pt;&lt;br /&gt;    display: none;&lt;br /&gt;    z-index: 1000000;&lt;br /&gt;    position: fixed;&lt;br /&gt;    background-image: url('pixel.gif');&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Właściwość z-index ustawia porządek stosu dla elementu. Element z większą wartością z-index znajduje się zawsze przed innym elementem z mniejszą wartością, zakrywa element z mniejszą warością. Element z bardzo dużą wartocią, np. 1000000 zakryje wszystkie inne.&lt;br /&gt;&lt;br /&gt;właściwość z-index działa jedynie dla elementów z ustawioną pozycją (np. position:fixed;)&lt;br /&gt;&lt;br /&gt;pixel.gif to jednopikselowy przeźroczysty gif. Zastosowanie przeźroczystego gifa jako tła sprawia, że rozwiązanie sprawdza się także pod Intenet Explorerem. Bez background-image doskonale działa pod Firefoxem, ale nie pod IE.&lt;br /&gt;&lt;br /&gt;Jeżeli chcemy dodatkowo uzyskać efekt tzw. firanek (zasłonięcie wyświetlanej strony półprzeźroczystą wartową) to do CSS-u dopisujemy:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;    opacity:0.3;&lt;br /&gt;    filter:alpha(opacity=30);&lt;br /&gt;    background-color: white&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;a właściwość background-image jest juz niepotrzebna.&lt;br /&gt;&lt;br /&gt;Opacity działa prawidłowo w przeglądarce Mozilla Firefox, nie działa natomiast pod Internet Explorerem. Dla drugiej przeglądarki dodatkowo umieszczamy filter:alpha(opacity=30).&lt;br /&gt;&lt;br /&gt;Wtedy CSS otrzymuje postać:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#ukrywanie{&lt;br /&gt;    width: 100%;&lt;br /&gt;    height: 100%;&lt;br /&gt;    top:0pt;&lt;br /&gt;    left:0pt;&lt;br /&gt;    display: none;&lt;br /&gt;    z-index: 1000000;&lt;br /&gt;    position: fixed;&lt;br /&gt;    opacity:0.3;&lt;br /&gt;    filter:alpha(opacity=30);&lt;br /&gt;    background-color:white;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Blokowanie strony uzyskujemy poprzez włączanie i wyłączanie elementu div o id "ukrywanie". Mogą temu posłuzyć następujące funkcje JavaScript:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;function blokuj() {&lt;br /&gt;    document.getElementById( 'ukrywanie').style.display='block';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function odblokuj() {&lt;br /&gt;    document.getElementById( 'ukrywanie' ).style.display='none';&lt;br /&gt;};&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-4718141110437394531?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/4718141110437394531/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=4718141110437394531' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/4718141110437394531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/4718141110437394531'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2009/02/blokowanie-zawartosci-strony.html' title='Blokowanie zawartości strony internetowej elementem div'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-7866102654156502591</id><published>2008-10-30T18:29:00.003+01:00</published><updated>2008-10-30T18:33:56.212+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>AJAX i SEO</title><content type='html'>Z założenia AJAX i SEO wykluczją się nawzajem. Na stronach AJAX-owych zawartość jest ładowana javascriptem, co z kolei nie pozwala wyszukiwarkom jej widzieć i indeksować. Jeśli chcemy zoptymalizować stronę pod względem wyszukiwarek to należy doprowadzić do sytuacji, w której po wylączeniu javascriptu treść wyła dostępna w inny sposób.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-7866102654156502591?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/7866102654156502591/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=7866102654156502591' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/7866102654156502591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/7866102654156502591'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2008/10/ajax-i-seo.html' title='AJAX i SEO'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-1263465200143726123</id><published>2008-10-28T19:37:00.009+01:00</published><updated>2009-02-20T20:49:44.314+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Wyłączenie menu kontekstowego w przeglądarce internetowej</title><content type='html'>Aby wyłączyć menu kontekstowe (czyli domyślne menu pojawiające się po kliknięciu prawego przycisku myszy) w przeglądarce internetowej można na przykład w znaczniku body przypisać atrybutowi oncontextmenu  "return false;":&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt; body oncontextmenu="return false;"&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Domyślne menu kontekstowe przeglądarki można wyłączać javascriptem jeśli tworzy się właśne menu kontekstowe na potrzeby aplikacji webowej. Nie zaleca się natomiast wyłączania tego menu w celu zabezpieczenia przed kradzieżą grafiki, gdyż takie zabezpieczenie można łatwo obejść. &lt;br /&gt;&lt;br /&gt;Opisany sposób nie działa w przeglądarce Opera, nie da się tam zablokować menu kontekstowego, a własne menu należy wywoływać skrótem klawiszowym.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-1263465200143726123?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/1263465200143726123/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=1263465200143726123' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/1263465200143726123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/1263465200143726123'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2008/10/wyczenie-menu-kontekstowego-w.html' title='Wyłączenie menu kontekstowego w przeglądarce internetowej'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-2756743366600081519</id><published>2008-06-12T16:00:00.003+02:00</published><updated>2008-06-21T16:12:38.362+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Switch-case emulation in Python</title><content type='html'>There is no switch-case construction in python. Although one can emulate its simplicity and compactness with appropriate use of a dictionary.&lt;br /&gt;&lt;br /&gt;d = {}&lt;br /&gt;d['condition1'] = 'result1'&lt;br /&gt;d['condition2'] = 'result2'&lt;br /&gt;d['condition3'] = 'result3'&lt;br /&gt;result = d[condition]&lt;br /&gt;&lt;br /&gt;Result can be execution of appropriate function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-2756743366600081519?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/2756743366600081519/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=2756743366600081519' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/2756743366600081519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/2756743366600081519'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2008/06/switch-case-emulation-in-python.html' title='Switch-case emulation in Python'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-3456304967353619014</id><published>2008-03-29T13:38:00.002+01:00</published><updated>2008-03-29T13:47:00.135+01:00</updated><title type='text'>My Home Page</title><content type='html'>I have created my personal home page on &lt;a href="http://lukaszmalysa.ovh.org"&gt;lukaszmalysa.ovh.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-3456304967353619014?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/3456304967353619014/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=3456304967353619014' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/3456304967353619014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/3456304967353619014'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2008/03/my-home-page.html' title='My Home Page'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-4217203328857865395</id><published>2008-03-29T12:55:00.002+01:00</published><updated>2008-03-29T13:07:41.831+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Zope Bible</title><content type='html'>I read almost the entire book about a month ago. It is a simple general introduction to Zope with elements of Python programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-4217203328857865395?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/4217203328857865395/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=4217203328857865395' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/4217203328857865395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/4217203328857865395'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2008/03/zope-bible.html' title='Zope Bible'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-2772854735718456171</id><published>2008-03-29T11:27:00.002+01:00</published><updated>2008-03-29T11:30:43.075+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>A Byte of Python</title><content type='html'>I read it some time ago. It is really the simplest book about computer programming I have ever read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-2772854735718456171?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.malysa.info/feeds/2772854735718456171/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8526364323565954995&amp;postID=2772854735718456171' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/2772854735718456171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/2772854735718456171'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2008/03/byte-of-python.html' title='A Byte of Python'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8526364323565954995.post-3225586320845030122</id><published>2001-01-01T18:04:00.000+01:00</published><updated>2009-02-27T18:12:34.425+01:00</updated><title type='text'>Promocja</title><content type='html'>Jeżeli podoba Ci się ten blog, umieść na swojej stronie link:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;a href="http://blog.malysa.info"&amp;gt;Blog informatyczny&amp;lt;/a&amp;gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8526364323565954995-3225586320845030122?l=blog.malysa.info' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/3225586320845030122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8526364323565954995/posts/default/3225586320845030122'/><link rel='alternate' type='text/html' href='http://blog.malysa.info/2009/02/promocja.html' title='Promocja'/><author><name>Łukasz</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_pQFPrabBzIc/SwRJLPsk8JI/AAAAAAAAAU0/kYPvBtnfT_A/S220/malysa.jpg'/></author></entry></feed>
