Strony

2010-12-14

[js][jQuery] Czy zmienna istnieje i nie jest pusta

Prosty sposób na sprawdzenie czy zmienna istnieje i nie jest pusta:

var zmienna = $("#zmienna").val();
if(typeof zmienna !== "undefined" && zmienna){
alert(zmienna);
} else {
alert("brak zmiennej lub pusta");
}

2010-12-08

[psql] Prosta funkcja w PostgreSQLu

PostgreSQL umożliwia tworzenie funkcji - poniżej można zobaczyć na prostym przykładzie jak tego dokonać:

CREATE OR REPLACE FUNCTION prosta_funkcja(pierwsza_zmienna integer, druga_zmienna integer) RETURNS void AS
$$
BEGIN
INSERT INTO jakas_tabela (dodata, modata, idoper, kod, nazw) SELECT now() as dodata, now() as modata, $2 as idoper, kod, nazw FROM jakas_tabela WHERE idoper=$1;
END;
$$ LANGUAGE plpgsql;

To taki zupełnie prosty przykład - więcej można znaleźć w dokumentacji.
Szczegóły funkcji można w każdej chwili sobie obejrzeć za pomocą komendy

\dt prosta_funkcja

2010-12-07

[unix][xml] XMLStarlet Command Line XML Toolkit

XMLStarlet to bajeranckie narzędzie do wszelkich działań na plikach XML z poziomu linii poleceń. Można za jego pomocą m.in. przeglądać, edytować w walidować tego typu pliki.
Aby obejrzeć możliwości tego cudeńka zapraszam do dokumentacji.

2010-12-06

[jQuery] $.get() i wykorzystanie danych w innej funkcji

Funkcja $.get() daje bardzo fajną możliwość wykorzystania świeżo pobranych danych w innej funkcji:

function wczytajCos(){
$.get('cos.php?cl=foo', zrobCos);
}

function zrobCos(data){
alert(data);
}

Jak łatwo się domyśleć funkcja wczytajCos() prześle zmienną foo w tablicy $_GET do strony cos.php i uruchomi funkcję zrobCos(), która z kolei wyświetli w alercie wynik tej akcji.

2010-11-24

[php] IF i ELSE w jednej linii

Raz na jakiś czas zapominam się i muszę szukać składni na prosty IF, który czasem jest przydatny.

$val = ($status=="OK") ? "jest okej" : "cos niehalo";

Być może wpis tutaj pozwoli mi zapamiętać ten sposób elsifowania. ;)

2010-11-23

[jQuery] Pobranie wartości do Greyboxa

Za pomocą top.window można z łatwością pobrać w jQuery wartość ze strony znajdującej się "pod" okienkiem Greybox'a:

var datawiz = top.window.$("#datawiz").val();

2010-10-11

[bash] Tablice w Bash'u

Bash umożliwia korzystanie z tablic w skryptach - bardzo miło z jego strony. :) Na prostym przykładzie pokażę w jaki sposób to zrobić:

#!/bin/bash

TABLICA=(Tytus Romek Atomek)

#ilość elementów tablicy
ILOSC_ELEMENTOW=${#TABLICA[@]}

echo Moj ulubiony komiks z dziecinstwa ma $ILOSC_ELEMENTOW glownych bohaterow, ktorzy maja na imie:
for((i=0; i<$ILOSC_ELEMENTOW; i++)); do
echo - ${TABLICA[${i}]}
done


Wynik:

Moj ulubiony komiks z dziecinstwa ma 3 glównych bohaterow, ktorzy maja na imie:
- Tytus
- Romek
- Atomek

2010-08-16

[jQuery] Nowy View Large On Black i .one()

Niedawno zmienił się layout galerii Flickr i przestał mi działać skrypcik View Large On Black, o którym pisałem tutaj.
Modyfikując skrypt natknąłem się na fantastyczną funkcję jQuery .one(). Dzięki .one() można w prosty sposób zdefiniować, aby jakieś zdarzenie mogło być wykonane tylko jeden raz. Można oczywiście tego typu zabieg wykonać również za pomocą .bind() i .unbind() ale .one() jest znacznie bardziej "eleganckie".
Nowy skrypt View Large On Black - i przy okazji zastosowanie funkcji .one() - można obejrzeć pobierając plik stąd.

2010-07-28

[unix] Cloc - obliczanie ilości linii kodu

Jeśli chcesz sprawdzić ile linii kodu ma Twoja aplikacja polecam Cloc'a (Count Lines of Code). Jest to skrypt napisany w Perlu - wystarczy ściągnąć na dysk, uruchomić wskazując program, który chcemy zbadać i wcisnąć enter:

./cloc-1.51.pl /var/www/test/

Cloc przeskanuje pliki znajdujące się w katalogu test i wyrzuci wynik wyglądający mniej więcej tak:

456 text files.
450 unique files.
164 files ignored.

http://cloc.sourceforge.net v 1.51 T=2.0 s (146.0 files/s, 16437.5 lines/s)
---------------------------------------------------------------------
Language files blank comment code
---------------------------------------------------------------------
PHP 265 3947 10352 15815
CSS 9 165 172 1036
Javascript 6 20 278 575
Bourne Shell 10 54 142 218
SQL 2 13 0 88
---------------------------------------------------------------------
SUM: 292 4199 10944 17732
---------------------------------------------------------------------

Cloc wspiera wiele języków programowania i ma mnóstwo fajnych opcji o których warto sobie poczytać w deszczowe dni... :)

2010-07-22

[psql] Obliczanie wieku funkcją age() i date_part()

Funkcja age() w Postgresie to bardzo fajna sprawa. Za pomocą niej można w prosty sposób obliczyć wiek użytkownika.
Zapytanie:

SELECT age(data_ur) as wiek FROM user WHERE id=1;

(gdzie data_ur jest typu date) może dać wynik:

wiek
-------------------------
6 years 11 mons 21 days

Jeśli chcielibyśmy się dowiedzieć ile użytkownik miał lat na przykład 21 kwietnia 2009 roku wystarczy napisać:

SELECT age(timestamp '2009-04-21', data_ur) as wiek FROM user WHERE id=1;

co da wynik w postaci:

wiek
------------------------
5 years 8 mons 20 days

Za pomocą funkcji date_part() można w prosty sposób "wyciągnąć" z wyniku np. jedynie ilość lat (bez informacji o miesiącach i dniach):

SELECT date_part('year', age(timestamp '2009-04-21', data_ur)) as wiek FROM user WHERE id=1

wynik:

wiek
------
5

2010-06-17

[jquery] Automatyczne wylogowanie użytkownika

W jaki sposób wylogować użytkownika z programu gdy on sam tego nie zrobi? Jak go wylogować gdy zamknie okno przeglądarki lub wyjdzie z programu przechodząc na inną stronę? Jak to zrobić pod Firefox'em?
Szukam odpowiedzi na te pytania od jakiegoś czasu i znaleźć tak do końca dobrego sposobu nie mogę. W sieci też nie namierzyłem żadnego dobrze działającego rozwiązania a jak to mawiają jak czegoś nie ma w googlach to na pewno to coś nie istnieje. ;)
Mimo wszystko nie poddaję się i coś kombinuję - udało mi się znaleźć pewnie rozwiązanie, dzięki któremu ilość wylogowań użytkowników z systemu znacznie wzrosła.

W momencie gdy na utworzymy plik autologout.js w którym umieścimy:

$(document).ready(function(){
function bye(e) {
location.href = "logout.php";
}
window.onbeforeunload=bye;

$("#nazwaBody").mousedown(function(){
window.onbeforeunload=null;
});
});

a w samym kodzie strony umieścimy:

<script type='text/javascript' src='autologout.js'></script>

oraz dodamy id do body:

<body id="nazwaBody">

to każda próba wyjścia z systemu spowoduje przejście do strony logout.php. Aby skrypt nie zadziałał w momencie przejścia z jednej podstrony systemu do drugiej wyłączamy onbeforeunload gdy użytkownik kliknie gdziekolwiek w obszarze aplikacji.

Nie jest to idealne rozwiązanie (można je obejść w prosty sposób) ale mimo wszystko ilość wylogowujących się z systemu użytkowników wzrosła z 10 do 90 procent co bardzo mnie cieszy. :)

Szukam w dalszym ciągu lepszego rozwiązania tego problemu...

2010-05-11

[jquery][php] $_GET w jQuery

Aby skorzystać z tablicy $_GET w jQuery wystarczy:

function getQueryParams(qs) {
qs = qs.split("+").join(" ");
var params = {};
var tokens;

while (tokens = /[?&]?([^=]+)=([^&]*)/g.exec(qs)) {
params[decodeURIComponent(tokens[1])]
= decodeURIComponent(tokens[2]);
}

return params;
}

var $_GET = getQueryParams(document.location.search);

źródło: http://stackoverflow.com/questions/439463/how-to-get-get-and-post-variables-with-jquery

2010-04-25

[unix] edytor vi

Czasem zdarza mi się edytować ogromne pliki tekstowe - takie, które 'ważą' ponad 1GB. Zwykły edytor nie daje sobie rady z otworzeniem takiej ilości danych. Z pomocą w takim wypadku przychodzi edytor vi. Nie jest dla mnie zbyt intuicyjny dlatego właśnie o nim wspominam - może się przydać taki wpis w przyszłości.

Najważniejsze polecenia (dla mnie):

# wyjście bez zapisania zmian
:q!

# zapisanie zmian
:w

# wyjście z zapisaniem zmian
:x

# zamiana wszystkich nazwa1 na nazwa2 w danej linii (gdzie jest kursor)
:s/nazwa1/nazwa2/g

# zamiana wszystkich nazwa1 na nazwa2 w całym pliku
:%s/nazwa1/nazwa2/g
Więcej o edytorze można przeczytać na Wikipedii.

2010-04-18

[kohana] cache'owanie

Pisząc poprzedni wpis do bloga zauważyłem, że mój View Large On Black potrzebuje około 2 sekund na wyrenderowanie strony:

W tym czasie aplikacja trzy razy łączy się z api flickr'a aby pobrać dane wyświetlanych zdjęć.
Dane te są stałe więc można tu z powodzeniem wykorzystać cache'owanie.
W kohanej aby dodać dane do cache'a wystarczy:

Kohana::cache($nazwa_zmiennej,$dane);

Odczyt danych wygląda natomiast w ten sposób:

$wynik = Kohana::cache($nazwa_zmiennej,null,$lifetime);
gdzie $lifetime oznacza czas życia zmiennej cache.
Jeśli nie podamy $lifetime:

$wynik = Kohana::cache($nazwa_zmiennej);
to aplikacja będzie uwzględniać dane, które trafiły do cache'a w ciągu ostatnich 60 sekund.
Po umieszczeniu w cache'u danych pobieranych z flickr'a udało się zaoszczędzić ok. 2 sekundy podczas każdego przeładowania i renderowanie strony wynosi ok. 0,02 sekundy.

2010-04-10

[kohana] czas renderowania strony

Aby wyświetlić w aplikacji - wykonanej za pomocą frameworka kohana - czas renderowania strony.

W pliku index.php należy dodać linijkę:

define('KOHANA_START_TIME', microtime(TRUE));


W pliku application/bootstrap.php zamiast:

echo Request::instance()
->execute()
->send_headers()
->response;


należy wpisać:

$request = Request::instance($_SERVER['PATH_INFO']);
$request->execute();
if($request->response){
$total = array(
'{execution_time}' => number_format(microtime(TRUE) - KOHANA_START_TIME, 5).' s.');

$request->response = strtr((string) $request->response, $total);
}
echo $request->send_headers()->response;


I na koniec w widoku wystarczy dodać np:

Czas renderowania strony: {execution_time}

2010-03-27

[Java] Gra w Kółko i Krzyżyk - 8. Zakończenie

Najwyższy czas na zakończenie temetu gry - udostępniłem stronę, na której można obejrzeć jak ta aplikacja działa i wygląda w środku.
Gra uruchamia się w nowym okienku - w aplecie javy, do którego niezbędne jest środowisko wykonawcze Java.

Grę uruchamia się za pomocą klasy Gra. Sama aplikacja nie posiada żadnego interfejsu - nie to było celem zadania. Być może nadejdzie piękny czas, że stworzę coś takiego. :) Na razie takie rzeczy jak nazwy graczy, znaki jakimi będą się posługiwać w grze (kółko lub krzyżyk) oraz kto zaczyna pierwszy ustawić można również w klasie Gra w metodzie startujemy:
public void startujemy() throws ZlyZnakException{
 k.setNazwaGracza("Anna");
 c.setNazwaGracza("Marcin");
 try {
  k.setZnak("O");
  c.setZnak("X");
 } catch (ZlyZnakException e) {
  throw e;
 }
 Console.run(p,300,300);
 p.ustawGracza(c);
 pomieszajRozwiazania();
 ruch();
}


Całą resztę starałem się opisać w kodzie - zapraszam do lektury. :)

Podoba Ci się ten wpis? Kliknij w reklamę. :)

2010-02-19

[Java] Gra w Kółko i Krzyżyk - 7. Diagram przebiegu (UML)

Diagram przebiegu pokazuje w nieco inny sposób zarządzanie ruchem w trakcie gry niż to było widoczne na diagramie aktywności. Diagram ten ukazuje interakcję jaka zachodzi między poszczególnymi elementami programu. Widać tutaj w jakim celu i w jakim momencie aplikacja korzysta z klasy Walidacja. Jest ona używana zarówno w klasie Gra (do sprawdzania czy wygrał któryś z graczy oraz czy są jeszcze wolne pola) jak również w klasie Komputer (do sprawdzenia jaki ruch jest najkorzystniejszy). Diagram ukazuje również kiedy i w jaki sposób zaznaczane są pola na Planszy oraz w jaki sposób kończy się rozgrywka.



Podoba Ci się ten wpis? Kliknij w reklamę. :)

2010-02-16

[Java] Gra w Kółko i Krzyżyk - 6. Diagramy stanowe (UML)

Diagram stanowy przycisku pokazuje jakie może przyjąć stany przycisk znajdujący się na planszy.


W pierwszym etapie, po uruchomieniu gry, każdy z dziewięciu przycisków jest przyciskiem aktywnym i nie posiada żadnego napisu (jest pusty – bez tekstu). W czasie gry każdy z przycisków może przyjąć jeszcze dwa różne stany – może stać się nieaktywny i otrzymać etykietę tekstową (stanie się tak jeśli gracz kliknie lewym klawiszem myszki w aktywny przycisk) lub też może stać się nieaktywny bez etykietki tekstowej (jeśli gra zakończy się zwycięstwem jednego z graczy to reszta aktywnych przycisków przyjmie właśnie taki stan).

2010-02-15

[Java] Gra w Kółko i Krzyżyk - 5. Diagramy aktywności (UML)

Komputer w naszej aplikacji Kółko i Krzyżyk dąży przede wszystkim do zwycięstwa – dlatego też pierwszą czynnością, którą powinien wykonywać przed każdym ruchem jest sprawdzenie czy może w danym momencie zakończyć partię zwycięsko. Diagram aktywności przedstawiony poniżej ukazuje schemat działania gracza komputerowego.


2010-02-14

[Java] Gra w Kółko i Krzyżyk - 4. Diagram klas (UML)

Diagram klas jest jednym z najpopularniejszych w języku UML. Opisuje on klasy składające się na system oraz zależności występujące między nimi.
Aplikacja składa się z klas przedstawionych na rysunku:


Główną klasą, za pomocą której uruchamiamy program jest Gra. Jest to klasa, która steruje grą. W niej tworzymy między innymi graczy oraz planszę. Nadajemy graczom nazwy, definiujemy jakimi znakami będą operować oraz ustalamy który z graczy pierwszy zaczyna rozgrywkę. Klasa ta sprawdza przed każdym ruchem gracza czy gra może być kontynuowana (czy jest zwycięzca oraz czy są wolne pola na planszy). Klasa Gra odpowiada również za zmianę gracza po każdym ruchu.
Klasa Plansza odpowiada za wyświetlenie planszy na ekranie, zawiera tablicę obiektów typu Znak, które są polami planszy. Jest to dziewięć przycisków za pomocą których możliwe jest wykonanie ruchów przez graczy. Klasa ta zawiera w sobie inna klasę – BL – która pomaga sprawnie zarządzać przyciskami zgodnie z tym jaki ruch wykonali gracze (m.in. wyświetlać znak X lub O).
Klasa Walidacja sprawdza czy jest zwycięzca pojedynku oraz czy są wolne pola na planszy i możliwe jest kontynuowanie gry. Klasa daje również informacje graczowi wykonującemu ruch, które pole może dać mu zwycięstwo, które pole może dać zwycięstwo przeciwnikowi oraz jakie jest jeszcze możliwe rozwiązanie (jeśli jest).
Program zawiera również abstrakcyjną klasę Gracz, którą dziedziczą klasy Czlowiek oraz Komputer. Metoda setZnak() klasy Gracz (oraz klas potomnych) może wyrzucać
wyjątek klasy ZlyZnakException dziedziczącej po klasie Exception. Jest to zabezpieczenie przed ustawianiem innych znaków niż „X” i „O”.
Aplikacja zawiera również klasę Console pochodzącą z książki „Thinking in Java”, której użyłem w celu wyświetlenia aplikacji w okienku apletu.

Podoba Ci się ten wpis? Kliknij w reklamę. :)

2010-02-13

[Java] Gra w Kółko i Krzyżyk - 3. Diagram przypadków uzycia (UML)

Diagram przypadków użycia jest doskonałym punktem startowym etapu tworzenia i projektowania systemu zatem przyda się on przy rozpoczynaniu projektu, określaniu wymagań systemu oraz komunikacji z użytkownikami systemu. W skrócie rzecz ujmując diagram przypadków użycia opisuje co system powinien robić.
Diagram taki składa się m.in. ze schematycznych postaci lub prostokątów (aktorów), elips (przypadków użycia), ciągłych linii oznaczających komunikację, strzałki przerywanej opisującej zależności (include, extend) oraz strzałki ciągłej opisującej uogólnienia (dziedziczenie).

2010-02-09

[Java] Gra w Kółko i Krzyżyk - 2. Założenia

Przed przystąpieniem do jakiejkolwiek zabawy z kodem dobrze jest pozbierać myśli i przelać je na papier. Nawet najbardziej podstawowe rzeczy warto jest sobie rozpisać - to później może pomóc w pracy a na pewno nie zaszkodzi. Dotyczy to nie tylko tej gry ale każdego innego projektu.

Zasada działania gry


Gra, o czym chyba każdy wie, polega na stawianiu znaków - kółka (O) i krzyżyka (X) - na planszy składającej się z dziewięciu pól:

012
345
678

Gra toczy się do momentu wyczerpania wolnych pól (0-8) lub gdy jeden z graczy ustawi trzy znaki (kółka lub krzyżyki) obok siebie w pionie, poziomie lub po przekątnej. Gra przeznaczona jest dla dwóch graczy, którzy wykonują po jednym ruchu na przemian.

2010-02-07

[Java] Gra w Kółko i Krzyżyk - 1. Wstęp

Odkopałem dziś małą grę (Kółko i Krzyżyk), którą jakiś czas temu "popełniłem" za pomocą Javy na zakończenie kursu z programowania obiektowego. Zrobiłem do tej gry również małą specyfikację. Cały mój wysiłek, który włożyłem w ten mały projekt zakończył się co prawda zdobyciem dyplomu ale sama gra nigdy nikomu się nie przydała. Zagrało w nią kilka osób (które do tego zmusiłem) a na kod źródłowy patrzyłem jedynie ja i Pan egzaminator.
Uznałem, że to trochę szkoda i że fajnie byłoby udostępnić ją tutaj - może komuś się przyda w zrozumieniu podstaw projektowania obiektowego na przykładzie języka Java. Ledwo udało mi się znaleźć ten programik co jeszcze bardziej umocniło mnie w przekonaniu, że warto go opublikować - również w celu archiwizacji. ;)
Jeśli wygooglaliście ten post bo też macie takie "zadanie domowe" na zaliczenie to chciałbym Wam doradzić byście spróbowali najpierw sami zmierzyć się z tym tematem. Proces tworzenia może być bardzo przyjemny a efekt może przynieść wiele radości - jeśli w całości dokonacie tego sami. Poza tym projekt nie jest idealny - działa ale na pewno można go wykonać lepiej.
Zaprezentuję wszystko zaczynając od dokumentacji - dopiero na końcu (jako efekt finalny) udostępnię grę, w którą będzie można zagrać i którą będzie można ściągnąć i obejrzeć "od środka" (udostępnię oczywiście kod źródłowy). Dokumentacja składać się będzie z założeń i kilku diagramów UML, które mam zamiar tutaj przenieść w ciągu tego tygodnia.

Podoba Ci się ten wpis? Kliknij w reklamę. :)

2010-02-04

jQuery + Greasemonkey na przykładzie Flickr'a

Istnieje możliwość tworzenia skryptów do Greasemonkey w jQuery - to dla mnie bardzo dobra nowina bo odkąd poznałem jQuery pisanie w czystym javascript'cie jakoś mnie nie cieszy. ;)
Aby skorzystać w GM (Greasemonkey) z jQuery wystarczy wpisać w skrypcie:
// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

// Check if jQuery's loaded
function GM_wait() {
 if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
 else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();

// All your GM code must be inside this function
function letsJQuery() {}

źródło: http://joanpiedra.com/jquery/greasemonkey/
Wpadłem na to rozwiązanie logując się po raz setny do pewnego portalu, do którego mam koło dwudziestu różnych loginów. Aby się tam zalogować trzeba wypełnić trzy pola, co w żaden sposób nie dało się zapamiętać w przeglądarce. W pewnym momencie miałem już tego kompletnie dość - postanowiłem zrobić coś, co ułatwi mi nieco życie. Z pomocą przyszedł mi tu właśnie GM i jQuery - pamiętają za mnie wszystkie moje loginy. :]

2010-01-25

[psql] CASE WHEN END

Wyrażenie CASE w Postgresie działa i na pewno można je zastosować na wiele sposobów - mi się dziś przydało przy łączeniu dwóch kolumn.

2010-01-19

[kohana] Usuwanie index.php

Gdy chcesz usunąć z Kohana index.php a zawiodą sposoby przedstawione tutaj i będzie wyświetlał Ci się w dalszym ciągu "Interval Server Error" to spróbuj wpisać
sudo a2enmod rewrite
Zrestartuj Apache'a i spróbuj ponownie - u mnie zadziałało.

W razie problemów zajrzyj jeszcze do httpd.conf i zobacz czy masz coś w tym stylu:
<Directory "/var/www/*">
Order allow,deny
Allow from all
AllowOverride All
</Directory>

W nowszych wersjach Apache'a nie ma już pliku httpd.conf tak więc tę zmianę musimy zrobić bezpośrednio w pliku apache2.conf.

[psql] Insert z select'em w środku

Istnieje możliwość wrzucenia zawartości tego co otrzymaliśmy z SELECT'a bezpośrednio do tabeli za pomocą INSERT'a pisząc:

INSERT INTO moja_tabela (data_dodania, oper_id, poz_id, kodpozycji_id, ilosc) SELECT now() as data_dodania, '0' as oper_id, poz_id, kodpozycji_id, ilosc FROM moja_tabela WHERE poz_id=7 and ilosc=0;

Za pomocą takiej konstrukcji możliwe jest kopiowanie danych. Należy tylko pamiętać aby pola miały taki sam typ (int, date, timestamp itp.).

2010-01-14

[jQuery] Gadżet Blogger'a z fotkami z Flickr'a

Stworzyłem mały gadżet do bloggera, za pomocą którego można tutaj obejrzeć moje fotki z galerii flickr'owej. Skorzystałem z ogólnodostępnych dobrodziejstw: API Flickr'a, jQuery'ego no i możliwości tworzenia własnych gadżetów na bloggerze.

2010-01-13

[psql] Grupowanie i funkcja min()

Funkcja min() PostgreSQL'a w połączniu z grupowaniem daje bardzo fajną użyteczność.
Załóżmy, że mamy trzy tabele: ojciec, dziecko i powiazanie. Jeden rodzic może mieć wiele dzieci:

Sen

Dziś w nocy miałem sen, w którym żadnego z zaplanowanych w pracy zadań nie udało mi się zrealizować...

No i sen się sprawdził...

No i stało się

Ten właściwy czas nadszedł - zakładam bloga! :) Chciałem stworzyć własnego, na swojej stronie ale na chęciach zawsze się kończyło. Postanowiłem wziąć się w garść i skorzystać z gotowych rozwiązań, skupić się na pisaniu - zobaczymy jak będzie mi to szło...
Generalnie założenie jest takie, że blog ten będzie zbiorem informatycznych rozwiązań, na które wpadam lub znajduję gdzieś w sieci podczas różnorakiej pracy i które mogą mi się w przyszłości (lub komuś innemu) przydać. W tym momencie nigdzie (poza własną zawodną pamięcią) nie gromadzę tego typu wiedzy - spróbuję zbierać to tutaj i zobaczymy jak to będzie wyglądać... :)