<?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>Migol's Blog &#187; Informatyka</title>
	<atom:link href="http://blog.migol.net/category/informatyka/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.migol.net</link>
	<description></description>
	<lastBuildDate>Fri, 06 Feb 2009 15:16:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bazaar &#8211; wrażenia z użytkowania</title>
		<link>http://blog.migol.net/2009/02/06/bazaar-wrazenia-z-uzytkowania/</link>
		<comments>http://blog.migol.net/2009/02/06/bazaar-wrazenia-z-uzytkowania/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 15:12:27 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Kontrola wersji]]></category>
		<category><![CDATA[bazaar]]></category>
		<category><![CDATA[bzr]]></category>
		<category><![CDATA[dvcs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[wersjonowanie]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=103</guid>
		<description><![CDATA[Ostatnio w ramach robienia projektu LabAdmin (takie cudo do zarządzania użytkownikami w laboratorium komputerowym) zacząłem korzystać z systemu kontroli wersji Bazaar. Potrzebowałem go, aby móc pracować offline i jednocześnie czerpać korzyści z wersjonowania.

Pierwsze spostrzeżenie jakie mi się nasunęło: Bazaar jest dość powolny przy niektórych operacjach &#8211; szczególnie branchowaniu (tworzeniu odnogi w produkcji). Nie mam zbytniego [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio w ramach robienia projektu LabAdmin (takie cudo do zarządzania użytkownikami w laboratorium komputerowym) zacząłem korzystać z systemu kontroli wersji <a href="http://bazaar-vcs.org" target="_blank">Bazaar</a>. Potrzebowałem go, aby móc pracować offline i jednocześnie czerpać korzyści z wersjonowania.</p>
<p><span id="more-103"></span></p>
<p>Pierwsze spostrzeżenie jakie mi się nasunęło: Bazaar jest dość powolny przy niektórych operacjach &#8211; szczególnie branchowaniu (tworzeniu odnogi w produkcji). Nie mam zbytniego porównania z innymi systemami kontroli wersji, bo nie użytwałem ich zbyt długo, ale jak dla mnie przydałoby się nieco szybciej to robić. Może być też tak, że korzystając z jakiegoś przełącznika da się to przyśpieszyć, ale też tego nie poszukiwałem.</p>
<p>Jeżeli chodzi o samą pracę to tutaj bardzo przydatny okazuje się TortoiseBzr (dołączony do wersja Bazaara dla Windows). Dzięki niemu nie musimy gimnastykować palców przy selektywnym dodawaniu plików do repozytorium. Także selektywny commit jest dużo wygodniejszy.</p>
<p>Wracając do branchowania to jest to jedna z bardziej użytecznych opcji, zaniedbana nieco w zwykłych (nie rozproszonych) systemach kontroli wersji. Polega to na tym, że tworzymy gałąź jeżeli chcemy coś przygotować, do niej wykonujemy commity a następnie łączymy (mergeujemy) z główną gałęzią. Mimo, że pracowałem sam, praktycznie każda większa zmiana miała u mnie swoją gałąź, dzięki czemu mogłem się zajmować tym co mi odpowiadało w danej chwili. Jednocześnie robiło mi to za taką &#8220;listę rzeczy do zrobienia&#8221; &#8211; każda gałąź odpowiadała za inną rzecz, gałęzie czasem dalej mi się rozgałęziały. Trzecim powodem takiej pracy jest fakt, że mogłem commitować niedziałający (bądź nawet nie kompilujący się) kod i nie miał on wpływu na inne części systemu którymi się zajmowałem.</p>
<p>Jedyną większą wadą takiego systemu jest to że potem trzeba to łączyć ze sobą, co czasami bywa karkołomnym zadaniem. Oczywiście praktycznie nic nie da się zrobić, jeśli z jakąś binarką się rozbiegniemy, ale nawet dla zwykłych plików mogą powstać problemy. Bazaar promuje metodę 3-way diff: mamy 3 pliki: bazę, wersję tego repozytorium i wersję drugiego repozytorium. Naszym zadaniem jest połączenie tych trzech wersji w jedną. Bywa ciężko.</p>
<p>Oczywiście jeśli już rozwiążemy problemy to wszystko toczy się dalej świetnie &#8211; Bazaar pozwala nawet na najbardziej karkołomne połączenia między gałęziami. Takie dzikie połączenia przydały mi się gdy na jednym branchu przygotowywałem menu dla aplikacji.</p>
<p>Oddzielną kwestią jest numerowanie wersji. Jest ono zrobione DUŻO lepiej niż w Git. Tutaj numery są nadawane tylko i wyłącznie lokalnie. Teraz jeśli robię merge to brancha wyżej to moim rewizjom nadawany jest prefix w formie numeru rewisji od której się odbranchowalem oraz kolejnego numeru identyfikacyjnego brancha. Ma to jedną wadę &#8211; nie do końca wiesz jaki numer rewizji dostaniesz, ale jest to dużo wygodniejsze niż numer w postaci SHA1 zawartości (ble!).</p>
<p>Jak tylko rozwiąże wszystkie sprawy z uczelnią napewno postawię sobie serwer Bazaara (na FTP <img src='http://blog.migol.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) żeby móc wygodniej z niego korzystać.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2009/02/06/bazaar-wrazenia-z-uzytkowania/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Git &#8211; trzy rzeczy które mnie wkurzają</title>
		<link>http://blog.migol.net/2008/12/14/git-trzy-rzeczy-ktore-mnie-wkurzaja/</link>
		<comments>http://blog.migol.net/2008/12/14/git-trzy-rzeczy-ktore-mnie-wkurzaja/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 20:11:02 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Informatyka]]></category>
		<category><![CDATA[dvcs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[wersjonowanie]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=73</guid>
		<description><![CDATA[Ostatnio dość mocno eksperymentuję z różnymi systemami kontroli wersji zaczynając od CVS-a (mam go w pracy) przez systemy rozproszone takie jak Mercurial (Hg), Bazaar i wspomniany w tytule Git. Tym razem właśnie na nim się skupię, gdyż stał się on strasznie popularny pomimo swoich wad.

Wada 1: Co to za wersja???
Podstawową denerwującą rzeczą w Git jaka [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio dość mocno eksperymentuję z różnymi systemami kontroli wersji zaczynając od CVS-a (mam go w pracy) przez systemy rozproszone takie jak Mercurial (Hg), Bazaar i wspomniany w tytule Git. Tym razem właśnie na nim się skupię, gdyż stał się on strasznie popularny pomimo swoich wad.</p>
<p><span id="more-73"></span></p>
<h3>Wada 1: Co to za wersja???</h3>
<p>Podstawową denerwującą rzeczą w Git jaka mi się rzuciła w oczy to nazywanie wersji. Nie mamy tutaj wersji 1, 2, 3 tak jak w Subversion, ale 40 znakowe, alfanumeryczne hashe. Po co to? Rozumiem, że macie kompleksy związane z tym, że w systemie rozproszonym każdy może mieć inny numer wersji u siebie i wypadałoby je jakoś od siebie odróżniać. Ale czemu nie można zostawić ładnych numerków tylko trzeba wrzucać te potworne hashe? Tutaj rozwiązał to choćby Mercurial, gdzie nazwa wersji składa się z normalnej liczby porządkowej i hasha. Do przeglądania wystarczy numer,  przy łączeniu wersji hash się przydaje.</p>
<h3>Wada 2: Jakie to polecenie???</h3>
<p>Wada druga jest związana z tym, że twórca Git&#8217;a (tak tak, TEN Linus Torvalds) musiał koniecznie stworzyć coś nowego. Więc oprócz nowego systemu kontroli wersji dał też nowy zestaw poleceń, które mogę przypominać to co znamy z SVNa, ale tym nie są. Istnieją nawet magiczne tabelki dla użytkowników SVNa którzy by chcieli poGitować sobie. Nowy zestaw komend to chyba najbardziej głupi sposób na bycie innowacyjnym.</p>
<h3>Wada 3: Windows &#8211; tak, tam też byś się przydał.</h3>
<p>Trzecią wadą jest fakt, iż Git ma kłopoty pod Windowsem. Ponoć nie są to już problemy z kompilacją (istnieje wersja msys która działa) ale miliony (czy jakoś tak) skrypcików doczepionych do Git-a nie działa, bo nie mamy basha i innych fajnych rzeczy. Ludzie&#8230; Czy nie można zrobić tego kulturalnie, tak, żeby nawet człowiek któremu Linux kojarzy się z chorobą weneryczną mógł tego używać? Pomnę tutaj takie dodatki jak seria Tortoise, pluginy SCC dla Visual Studio czy też choćby pluginy NetBeans. Dlaczego mimo, że Bazaar jest projektem młodszym to ma własnego TortoiseBzr (w testach) czy też plugin SCC dla Visual Studio (w developmencie, ponoć coś działa).</p>
<h3>Podsumowanie</h3>
<p>Pewnie każdy kto to czyta albo stwierdzi że albo Git jest do niczego, albo że plotę bzdury. Owszem, Git ma zalety takie jak gigantyczna prędkość działania czy też branche in-place (nie tworzysz nowego katalogu, po prostu katalog roboczy zmienia się). Ale te zalety są sobie, a wady sobie.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/12/14/git-trzy-rzeczy-ktore-mnie-wkurzaja/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Assembla &#8211; alternatywy</title>
		<link>http://blog.migol.net/2008/11/21/assembla-alternatywy/</link>
		<comments>http://blog.migol.net/2008/11/21/assembla-alternatywy/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 22:59:07 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[assembla]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=60</guid>
		<description><![CDATA[Pisałem już o tym, że Assembla przestała być ostoją darmowego (i prywatnego!) SVNa. Na szczęście udało mi się znaleźć dwie inne opcje:

Bean Stalk
Bean Stalk oferuje nam niewiele. Mamy na nasz użytek 20 MB przestrzeni na jedno repozytorium SVN z maksymalnie trzema użytkownikami. ALe są też większe problemy. Bean Stalk w wersji darmowej NIE obsługuje szyfrowania. [...]]]></description>
			<content:encoded><![CDATA[<p>Pisałem już o tym, że Assembla przestała być ostoją darmowego (i prywatnego!) SVNa. Na szczęście udało mi się znaleźć dwie inne opcje:</p>
<p><span id="more-60"></span></p>
<h2>Bean Stalk</h2>
<p>Bean Stalk oferuje nam niewiele. Mamy na nasz użytek 20 MB przestrzeni na jedno repozytorium SVN z maksymalnie trzema użytkownikami. ALe są też większe problemy. Bean Stalk w wersji darmowej NIE obsługuje szyfrowania. Ani SFTP and HTTPS. Oznacza to, że nasz cenny kod lata sobie po Internecie czytelny dla każdego kto się o to postara.</p>
<p>Dla osób które w grupie tworzą projekty też mam złe wieści. Oprócz przeglądu aktywności na repozytorium z narzędzi inżyniera oprogramowania nie ma nic. Nie mówię tutaj o integracji Trac&#8217;a czy też innego podobnego oprogramowania, ale nawet biedne autorskie rozwiązania Assembli już dawały jako takie możliwości.</p>
<h2>Unfuddle</h2>
<p>Unfuddle z drugiej strony wygląda lepiej. Mamy tutaj 200 MB miejsca, jeden projekt (projekt, nie repozytorium). Niestety w projekcie mogą brać udział jedynie dwie osoby. Repozytoriów natomiast możemu stworzyć ile dusza zapragnie. I do tego nie tylko SVN, ale także ostatnio coraz bardziej popularnego Git&#8217;a.</p>
<p>Do tego Unfuddle obsługuje tickety, milestone&#8217;y i newsy, dzięki czemu wytwarzanie oprogramowania jest trochę przyjemniejsze. Niestety SSL dalej jest płayną opcją i do dość daleko w planach hostingowych.</p>
<h2>Podsumowanie</h2>
<p>Który serwis teraz bym wybrał? Jeśli chodzi o moje prace na Politechnikę, a to jest  moje najczęściej używane repozytorium to Unfuddle. Właściwie to tylko dla tego, że daje więcej miejsca i pozwala na utworzenie dodatkowych repozytoriów. A jeśli chodzi o Bean Stalk, to daje on po prostu za mało.</p>
<p>Jeśli znacie jakieś dobre serisy z darmowymi repozytoriami do piszcie je w komentarzach. Chętnie je przetestuje, może skorzystam.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/11/21/assembla-alternatywy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gentoo: Czy warto robić bootstrap?</title>
		<link>http://blog.migol.net/2008/10/28/gentoo-czy-warto-robic-bootstrap/</link>
		<comments>http://blog.migol.net/2008/10/28/gentoo-czy-warto-robic-bootstrap/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 21:43:01 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=50</guid>
		<description><![CDATA[Dzisiaj z okazji tego że mnie cholera strzeliła wziełem się w końcu za instalowanie Gentoo na laptopie. Owszem, byłoby to trywialne zadanie, gdyby nie fakt, iż laptop ma niesprawny CD-ROM i nie może bootować z USB. A, no i się pozbyłem przypadkiem poprzedniego systemu. Czyli jakby nie patrzeć ogólne miodzio. No ale nie o tym [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj z okazji tego że mnie cholera strzeliła wziełem się w końcu za instalowanie Gentoo na laptopie. Owszem, byłoby to trywialne zadanie, gdyby nie fakt, iż laptop ma niesprawny CD-ROM i nie może bootować z USB. A, no i się pozbyłem przypadkiem poprzedniego systemu. Czyli jakby nie patrzeć ogólne miodzio. No ale nie o tym miałem pisać.</p>
<p>Najpierw najważniejsze, czyli co to jest ten bootstrap. Otóż jest to proces w którym Gentoo przebudowuje samo siebie od nowa. Startujemy tutaj nie z gotowej bazy systemu (czyli tzw. stage3) ale z podstwowego zestawu narzędzi (Binutils, GCC itp.) czyli kochanego stage1. Ciekaw byłem co się stało ze stage2, które też było dostępne do ściągnięcia, no ale znowu odbiegam.</p>
<p><span id="more-50"></span></p>
<p>Jeżeli chodzi o większość dystrybucji Linux&#8217;a bootstrap jest niemożliwy (no dobra, jest, ale nie ma on sensu). A dlaczego bootstrap się wykonuje? Są dwa główne powody: cross-kompilacja na nieobsługiwaną platformę oraz przyśpieszenie systemu. Dla mnie ważny jest ten drugi powód. Zwykle gdy używamy dystrybucji Linux&#8217;a jest ona przeznaczona (teraz) na procesory i586, czyli okolice Pentium. Od tamtej pory trochę się jednak pozmieniało, mamy MMX, SSE, SSE2, 3DNow! i masę innych optymalizacji. GCC je obsługuje, możemy je wprowadzać do instalacji Gentoo, ale tak naprawdę toolchain, czyli m.in. GCC nie korzysta z ich dobrodziejstw, tak samo jak biblioteka Glibc (tak, ta główna od każdego programu w C/C++ itd.).</p>
<p>Czyli tak naprawdę dopalamy sobie tylko dalsze elementy systemu podczas gdy wnętrze dalej jest ociężałe. Dlatego też wymyślono bootstrap, dzięki którymu to my decydujemy na jakich flagach zostanie zbudowany system (najważniejsza jest tutaj -march=). No tak, darmowa prędkość, trochę więcej czasu spędzimy przy instalacji, ale czy są jakieś tego wady?</p>
<p>Okazuje się niestety że tak. Podstawowy i z tego co wiem jedyny duży problem z tak przygotowanym systemem jest jego niekompatybilność z Gentoo. No nie z całym oczywiście, ale z pakietami binarnymi. Niestety (tutaj wiele osób stwierdzi, że się mylę) Gentoo wprowadziło pakiety binarne, żeby użytkownicy mogli szybcie instalować programy. Ja z tego nigdy nie korzystałem, mimo że przygotowanie do działania KDE3 zajmuje ok. 24h (!!).</p>
<p>A nie robię tego dlatego, że to niszczy całą ideę używanie Gentoo &#8211; pełną optymalizację pod względem funkcji i prędkości. W wypadku innych systemów często wpadałem w szał, gdy widziałem, że nie wiem z jakiego powodu np. kdepim chce instalować mi oprogramowanie od Bluetooth. Nie mam dongla, nie używam tego, więc po co mi to?</p>
<p>No ale czas już na podsumowanie. A jest ono proste &#8211; jeśli zależy ci na maksymalnej prędkości, a nie na szybkiej instalacji, wykonaj bootstrap od stage1. Jeśli jednak chcesz mieć system teraz, zaraz, już i przeżyjesz niewielkie spowolnienie jego działania, nie rób tego. Dla ciebie są pakiety binarne (i inne dystrybucje&#8230;).</p>
<p>Więcej o bootstrapie można przeczytać <a href="http://www.gentoo.org/doc/en/draft/bootstrapping-guide.xml#doc_chap3">tutaj</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/10/28/gentoo-czy-warto-robic-bootstrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rake 0.8.3 a NetBeans</title>
		<link>http://blog.migol.net/2008/10/24/rake-083-a-netbeans/</link>
		<comments>http://blog.migol.net/2008/10/24/rake-083-a-netbeans/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 13:15:03 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=45</guid>
		<description><![CDATA[Ostatnio pojawił mi się problem przy tworzeniu aplikacji Rails w NetBeans&#8217;ie. Otóż jak zawsze chciałem mieć najnowszą wersję oprogramowania dlatego zainstalowałem gem Rake w wersji 0.8.3. No i NetBeans przy starcie zaczął się burzyć, że nie może odczytać danych o zadaniach Rake (ku przypomnieniu, Rake, to jest Make dla Ruby&#8217;ego), a w błędzie informacja, że [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio pojawił mi się problem przy tworzeniu aplikacji Rails w NetBeans&#8217;ie. Otóż jak zawsze chciałem mieć najnowszą wersję oprogramowania dlatego zainstalowałem gem Rake w wersji 0.8.3. No i NetBeans przy starcie zaczął się burzyć, że nie może odczytać danych o zadaniach Rake (ku przypomnieniu, Rake, to jest Make dla Ruby&#8217;ego), a w błędzie informacja, że brakuje funkcji &#8220;do_option&#8221;.</p>
<p><span id="more-45"></span></p>
<p>Trochę musiałem powalczyć żeby to naprawić. Niestety dokumentacja RubyGems jest biedna i dotyczy wersji sprzed dawna (0.8.7 jak sie nie myle, gdzie teraz jest 1.3.0). Udało mi się doczytać, że teraz nie ma już require_gem, lecz trzeba najpierw aktywować gem a dopiero potem zrobic require. No cóż, szkoda że tych informacji na oficjalnej stronie RubyGems nie ma.</p>
<p>Druga sprawa jaka mnie dziwi, to fakt, że w Rake 0.8.3 w changelogu nie ma żadnych informacji o usunięciu funkcji do_option. Przecież zmianie uległo zewnętrzne API, takie rzeczy się pisze. No nic, kolejny problem ze społecznością Ruby&#8217;ego.</p>
<p>No ale jeśli tu trafiłeś to pewnie masz ten sam problem co ja miałem. Oto rozwiązanie:</p>
<ol>
<li>Musisz mieć zainstalowanego Rake 0.8.1 (pamiętaj że gemy pozwalają na wiele wersji naraz!). Jeśli skasowałeś to &#8220;gem install rake -v 0.8.1&#8243;</li>
<li>Musisz odnaleźć plik &#8220;rake_tasks_info.rb&#8221;, powinien być w katalogu &#8220;&lt;NetBeans&gt;\ruby2&#8243;.</li>
<li>Przed linijką &#8220;require &#8216;rake&#8217;&#8221; dopisz linię &#8220;gem &#8216;rake&#8217;, &#8216;&lt;= 0.8.1&#8242; &#8221; (bez cudzysłowów).</li>
</ol>
<p>Ponoć w trunku najnowszej wersji pluginu do NB jest już dodana poprawka na to.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/10/24/rake-083-a-netbeans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assembla: Smutny koniec darmowości</title>
		<link>http://blog.migol.net/2008/10/19/assembla-smutny-koniec-darmowosci/</link>
		<comments>http://blog.migol.net/2008/10/19/assembla-smutny-koniec-darmowosci/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 10:56:48 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Oprogramowanie]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=40</guid>
		<description><![CDATA[Dzisiaj chcąc sprawdzić możliwości kolaboracji i prowadzenia projektów metodyką Scrum na serwerze Assembla odkryłem bardzo smutną prawdę. Otóż serwis który był dla mnie idealnym rozwiązaniem do przechowywania kodu się komercjalizuje i nie chce oferować prywatnych przestrzeni za darmo.

Dawniej było tak, że był tylko SVN i można było go udostępniać publicznie, albo i nie. Czyli prywatne [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj chcąc sprawdzić możliwości kolaboracji i prowadzenia projektów metodyką Scrum na serwerze <a href="http://www.assembla.com">Assembla</a> odkryłem bardzo smutną prawdę. Otóż serwis który był dla mnie idealnym rozwiązaniem do przechowywania kodu się komercjalizuje i nie chce oferować prywatnych przestrzeni za darmo.</p>
<p><span id="more-40"></span></p>
<p>Dawniej było tak, że był tylko SVN i można było go udostępniać publicznie, albo i nie. Czyli prywatne małe projekciki mogły sobie bezpiecznie żyć pod kontrolą ich serwera. Teraz sytuacja się dość mocno zmieniła. Otóż jeśli chcemy mieć za darmo &#8220;przestrzeń&#8221; (ang. <em>space</em>) to musimy ją udostępniać. A jak nie to płacić.</p>
<p>Cena może nie jest zabócza ($2 miesięcznie za każdego developera i $3 miesięcznie za 1 GB przestrzeni) ale moje repozytorium to tylko 6 MB (2 semestry PG) i 1 developer czyli bym płacił $5 miesięcznie, co daje $60 na rok. A to już trochę dużo jak za taką usługę.</p>
<p>Dlatego teraz będę kombinował jak tutaj zrobić zrzut repozytorium i przenieść je na inny serwer (możliwe że dogadam się z dostawcami tego serwera i za 50 zł dokupię obsługę SVN). A jak nie to będę musiał szybko wymyślić jakiś sposób na tworzenie kopii zapasowych.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/10/19/assembla-smutny-koniec-darmowosci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPod Classic: Nie dla psa kiełbasa</title>
		<link>http://blog.migol.net/2008/09/18/ipod-classic-nie-dla-psa-kielbasa/</link>
		<comments>http://blog.migol.net/2008/09/18/ipod-classic-nie-dla-psa-kielbasa/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 19:02:20 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Muzyka]]></category>
		<category><![CDATA[Sprzęt]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[genius]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[itunes]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=30</guid>
		<description><![CDATA[No może nie do końca chodzi tutaj o głodzenie zwierzaków, ale zawiodłem się mocno na firmie Apple. Dlaczego? Wymaga to paru wyjaśnień odnoścnie tego co się aktualnie tam dzieje.

9 września 2008 roku Steve Jobs na &#8220;Apple Special Event&#8221; prezentował wiele ciekawostek jakie w ciągu ostatniego tygodnia pojawiły się na rynku. Jak zawsze nowe iPody: Nano [...]]]></description>
			<content:encoded><![CDATA[<p>No może nie do końca chodzi tutaj o głodzenie zwierzaków, ale zawiodłem się mocno na firmie Apple. Dlaczego? Wymaga to paru wyjaśnień odnoścnie tego co się aktualnie tam dzieje.</p>
<p><span id="more-30"></span></p>
<p>9 września 2008 roku Steve Jobs na &#8220;Apple Special Event&#8221; prezentował wiele ciekawostek jakie w ciągu ostatniego tygodnia pojawiły się na rynku. Jak zawsze nowe iPody: Nano generacji czwartej z akcelerometrem i paletą kolorów (btw: najcieńszy iPod w ofercie) i iPod Classic 2. generacji w jednym rozmiarze: 120 GB. Tak, era gigantycznego (nawet jak dla mnie) iPod&#8217;a z 160 GB dyskiem twardym się skończyła. Teraz dostępny będzie jedynie ten w uśrednionym rozmiarze. Wg. informacji na <a href="http://crave.cnet.co.uk/digitalmusic/0,39029432,49298843,00.htm">CNet.uk</a> Apple mógł opracować wersję 240 GB w obudowie rozmiarów wersji 160 GB (którą to posiadam).</p>
<p>Pojawiły się także informacje o nowym <a href="http://www.apple.com/itunes/">iTunes 8</a> który wprowadza seriale TV (nie wiem czy filmy nie były uż wcześniej dostępne) w rozdzielczości HD. Ponoć iPod Classic ma to obsługiwać, ale już nikt nie wie nic napewno. No ale nie to mnie wkurzyło. Otóż nowe dziecko Steve&#8217;a posiada ciekawą funkcję Genius. W założeniu ma ona na podstawie jednego utworu tworzyć listę 25, 50, 75 bądź 100 utworów które dobrze do niego pasują. Testowałem to na komputerze, efekt nie jest idealny, ale jest bardzo zadowalający.</p>
<p>W funkcję Genius został wyposarzony nowy iPod Nano, iPod Touch (w wersji z softem 2.1, update za darmo z 2.0, albo z 1.0 za $9,95), no i iPhone. Rozumiem, że na tej liście nie znalazł się malutki Shuffle, bo on i tak ma mało miejsca. No ale czemu nie ma na tej liście iPod&#8217;a Classic? Miejsca ma najwięcej na bazę Geniusa, moc obliczeniową też chyba nie najgorszą, a mimo to go nie ma.</p>
<p>Atmosferę podgrzeje kolejny fakt: wg pewnego reprezentanta firmy Apple, Genius miałby się pojawić w Classic&#8217;u w niedalekiej przyszłości. No ale się okazało, że to jednak bujda, przynajmniej wg <a href="http://crave.cnet.co.uk/digitalmusic/0,39029432,49298843,00.htm">CNet.uk</a>. Można tam wyczytać, że owszem, taka informacja była, ale została zdementowana przez Apple. Czyżby więc nadchodził koniec &#8220;dużych&#8221; iPodów?</p>
<p>Wszystko na to wskazuje. Tylko dwie odmiany kolorystyczne, spowolniony rozwój, brak nowych funkcji. Nowy iPod Classic został oczywiście odświerzony, ale co z tego jak tylko wymienili dysk twardy? Nic nowego w oprogramowaniu gwarantuje, że nadeszła późna starość. Jedyne co przemawia za tym, że pozostanie na rynku, to historyczne przywiązanie, gdyż jest to potomek ich pierwszej serii odtwarzaczy. Ale czy to wystarczy? [<a href="http://blog.andersonshatch.com/2008/09/10/is-the-ipod-classic-dead/">1</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/09/18/ipod-classic-nie-dla-psa-kielbasa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubiquity &#8211; rewolucja?</title>
		<link>http://blog.migol.net/2008/09/11/ubiquity-rewolucja/</link>
		<comments>http://blog.migol.net/2008/09/11/ubiquity-rewolucja/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 20:21:13 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Oprogramowanie]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=25</guid>
		<description><![CDATA[Ostatnio zaczęłem na powrót oglądać GeekBriefTV. Jest to jeden z moim zdaniem najciekawszych podcastów o technologicznych nowościach, głownie z zakresu elektroniki użytkowej. No ale nie o tym miałem pisać. W odcinku #414 oprócz aparatu który strasznie mi się podoba, Nikon&#8217;a D90, opisany jest także bardzo ciekawy dodatek do Firefox&#8217;a o nazwie Ubiquity. Jest on ciągle [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio zaczęłem na powrót oglądać <a href="http://www.geekbrief.tv">GeekBriefTV</a>. Jest to jeden z moim zdaniem najciekawszych <a href="http://en.wikipedia.org/wiki/Special:Search/podcast">podcastów</a> o technologicznych nowościach, głownie z zakresu elektroniki użytkowej. No ale nie o tym miałem pisać. W odcinku <a title="Obejrzyj odcinek" href="http://www.geekbrief.tv/gbtv-414-geekbrieftv">#414</a> oprócz aparatu który strasznie mi się podoba, Nikon&#8217;a D90, opisany jest także bardzo ciekawy dodatek do Firefox&#8217;a o nazwie <a href="https://wiki.mozilla.org/Labs/Ubiquity">Ubiquity</a>. Jest on ciągle w fazie alfa, ale wszelkie znaki na niebie i ziemi mówią, że będzie on dość przełomowym rozwiązaniem.</p>
<p>Cały jego bajer polega na tym w jaki sposób pracujemy z przeglądarką. Powiedzmy, że siedzę sobie na necie i widzę ciekawą stronę której fragment chciałbym przesłać kumplowi. Otwieram więc pocztę, kopiuję fragment do schowka&#8230; tylko czy nie da się szybciej? Tutaj z pomocą przychodzi Ubiquity. Wystarczy tylko zaznaczyć fragment który nas interesuje, nacisnąć Ctrl+Spacja żeby otworzyć konsolę Ubiquity i wpisać &#8220;email selection to migol@migol.net&#8221;. W tym momencie otwiera nam się konto na Gmail.com (warto je mieć!), w tytule wiadomości pojawia się tytuł strony, a w jej treści zaznaczony fragment. Proste i szybkie, przynajmniej jeśli umiemy w miare szybko klepać na klawiaturze.</p>
<p><span id="more-25"></span></p>
<p>Więcej możliwości Ubiquity zobaczycie na tym filmiku:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="397" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=1561578&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="397" src="http://vimeo.com/moogaloop.swf?clip_id=1561578&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<a href="http://vimeo.com/1561578?pg=embed&amp;sec=1561578">Ubiquity for Firefox</a> from <a href="http://vimeo.com/user532161?pg=embed&amp;sec=1561578">Aza Raskin</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1561578">Vimeo</a>.</p>
<p>Oczywiście jak dla każdego programisty ważne jest też jak łatwo się rozszerza taki plugin. No bo po co mi on, jak tak naprawdę nie współpracuje on za dobrze z moim Gmail&#8217;em a zamiast mapy Google przydałaby mi się raczej mapa z Zumi. No ale o pisaniu własnych komend już nie będę tutaj pisał, wszystko co trzeba wiedzieć zostało napisane <a title="Ubiquity Authoring tutorial" href="https://wiki.mozilla.org/Labs/Ubiquity/Ubiquity_0.1_Author_Tutorial">tutaj</a>. Jak dla mnie plugin jest świetny, i z pewnością napiszę kilka własnych funkcji do niego (pewnie gdzieś się na tym blogu znajdą.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/09/11/ubiquity-rewolucja/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox 3.0</title>
		<link>http://blog.migol.net/2008/06/18/firefox-30-bicie-rekordu-swiata/</link>
		<comments>http://blog.migol.net/2008/06/18/firefox-30-bicie-rekordu-swiata/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 14:15:30 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Oprogramowanie]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=20</guid>
		<description><![CDATA[Wczoraj wyszedł w końcu Firefox 3.0. Oprócz wielu zmian w backendzie, wiele nowego nie zaoferował. No ale jeszcze mamy bicie rekordu świata w ilości pobrań.

No więc co nowego? Przede wszystkim przechodzi w 100% test ACID 2. Cóż to takiego? Otóż ten test sprawdza w jakim stopniu przeglądarka spełnia wymaganie W3C w zakresie renderowania (czyli wyświetlania) [...]]]></description>
			<content:encoded><![CDATA[<p>Wczoraj wyszedł w końcu Firefox 3.0. Oprócz wielu zmian w backendzie, wiele nowego nie zaoferował. No ale jeszcze mamy bicie rekordu świata w ilości pobrań.</p>
<p><span id="more-20"></span></p>
<p>No więc co nowego? Przede wszystkim przechodzi w 100% test <a title="Test Acid 2" href="http://acid2.acidtests.org/">ACID 2</a>. Cóż to takiego? Otóż ten test sprawdza w jakim stopniu przeglądarka spełnia wymaganie W3C w zakresie renderowania (czyli wyświetlania) stron internetowych. Ten konkretny test jest nastawiony na HTML i CSS2. Niestety FF3 nie przechodzi testu ACID 3, który sprawdza masę innych elementów takich jak pełen ECMAScript, SVG i inne. Jak narazie żadna przeglądarka w wersji stabilnej go nie przechodzi (jedynie developerzy Opery i Safari zrobili wersję mającą pełną obsługę, ale nie jest ona stabilna).</p>
<p>Kolejną ważną rzeczą odnośnie nowej wersji FF jest DUŻO szybsze wykonywanie skryptów JavaScript. Najlepszym tego przykładem jest korzystanie z Gmail&#8217;a który jest niemal w 100% napisany w tym języku.</p>
<p>Trzecią rzeczą którą warto o nowym Firefox&#8217;ie wiedzieć jest to, iż duża część wtyczek może być niekompatybilna. Oczywiście z biegiem czasu to się zmieni, ale narazie z niektórymi musiałem się pożegnać.</p>
<p>A, pobieranie oczywiście z <a title="Firefox - pobieranie" href="http://www.getfirefox.com/">http://www.getfirefox.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/06/18/firefox-30-bicie-rekordu-swiata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails &#8211; jakość w standardzie</title>
		<link>http://blog.migol.net/2008/05/29/ror-jakosc-w-standardzie/</link>
		<comments>http://blog.migol.net/2008/05/29/ror-jakosc-w-standardzie/#comments</comments>
		<pubDate>Thu, 29 May 2008 14:40:00 +0000</pubDate>
		<dc:creator>Migol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.migol.net/?p=17</guid>
		<description><![CDATA[Dość dziwny tytuł mi wyszedł, ale do końca nie wiedziałem jak to napisać. No ale zacząć muszę od początku.
Ruby on Rails jest to platforma do tworzenia serwisów internetowych, na licencji MIT. Powstała ona w przeciwieństwie do większości tego typu oprogramowania nie jako idea rozpoczęta od początku, ale została wyciągnięta bezpośrednio z działającego produktu &#8211; Basecamp. [...]]]></description>
			<content:encoded><![CDATA[<p>Dość dziwny tytuł mi wyszedł, ale do końca nie wiedziałem jak to napisać. No ale zacząć muszę od początku.</p>
<p>Ruby on Rails jest to platforma do tworzenia serwisów internetowych, na licencji MIT. Powstała ona w przeciwieństwie do większości tego typu oprogramowania nie jako idea rozpoczęta od początku, ale została wyciągnięta bezpośrednio z działającego produktu &#8211; <a title="Basecamp" onclick="pageTracker._trackPageview('/outgoing/www.basecamphq.com/?referer=http://blog.migol.net/wp-admin/edit.php');pageTracker._trackPageview('/outgoing/www.basecamphq.com/?referer=http://blog.migol.net/wp-admin/post.php?action=edit&amp;post=17&amp;message=4');pageTracker._trackPageview('/outgoing/www.basecamphq.com/?referer=http://blog.migol.net/wp-admin/post.php?action=edit&amp;post=17&amp;message=4');pageTracker._trackPageview('/outgoing/www.basecamphq.com/?referer=http://blog.migol.net/wp-admin/post.php?action=edit&amp;post=17&amp;message=4');pageTracker._trackPageview('/outgoing/www.basecamphq.com/?referer=http://blog.migol.net/wp-admin/post.php?action=edit&amp;post=17');pageTracker._trackPageview('/outgoing/www.basecamphq.com/?referer=http://blog.migol.net/wp-admin/edit.php?post_status=draft');" href="http://www.basecamphq.com/">Basecamp</a>. Różnica jest znaczna, gdyż na start był to już dojrzały produkt. Aktualnie mamy wersję 2.0.2, na co radzę zwrócić uwagę szukając tutoriali (np nie istnieje już instrukcja <em>scaffold</em>).</p>
<p>Ruby on Rails (RoR) nie jest to coś podobnego do np. PHP, gdyż PHP to tylko język programowania, którym w wypadku RoR jest Ruby. O Ruby może napiszę jeszcze kiedyś. Bycie platformą oznacza więc, że RoR daje coś więcej.</p>
<p><span id="more-17"></span></p>
<p>Przede wszystkim Rails zmienia sposób spojrzenia na utrzymanie jakości w oprogramowaniu. Np. bardzo popularny i ważny model MVC (Model, View, Controller) czyli trójwarstwówka (model odpowiada za dane, view za to jak są one wyświetlane, a controller za logikę biznesową). W Ruby on Rails jest to właściwie jedyna metoda dodawania czegoś na stronę. Możliwe że istnieją inne metody, ale tworząc w RoR wydają się one cokolwiek nie na miejscu.</p>
<p>Kolejną ważną rzeczą we współczesnym podejściu do jakości oprogramowania jest automatyczne testowanie programów. Dlaczego jest ono ważne? Po pierwsze dzięki automatycznym testom nie musimy sprawdzać sami, czy coś działa czy nie. Nie jest to bardzo odkrywcze stwierdzenia, ale ważności nabiera w momencie w którym np. optymalizujemy kod, czy robimy</p>
<p><!--more--></p>
<p>&#8220;refactoring&#8221;. Wtedy chcemy, aby kod miał takie same efekty jak wcześniej, ale robił to w inny, lepszy sposób.</p>
<p>Następna interesująca sprawa to sposób zarządzania bazą danych. Tutaj RoR daje nam po pierwsze mechanizmy zarządzania trzema podstawowymi bazami danych: development na której tworzymy oprogramowanie, test na której je testujemy i production, czyli baza danych dla pracującego systemu. Dalej dostajemy piękny mechanizm migracji bazy danych.</p>
<p>Migracja baz danych do kolejnych wersji stanowi bardzo problematyczną sprawę dla większości systemów. Żaden ze znanych mi systemów bazodanowych nie wspomaga tego procesu. Tymczasem Rails rozwiązuje przepięknie ten problem poprzez system migracji bazy danych. Mówiąc z skrócie polega to na tym, że kodem w Ruby zmieniamy bazę danych. Tak, bez użycia SQLa. I to działa. A wygląda np. tak:</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> CreateBooks <span style="color:#006600; font-weight:bold;">&amp;</span>lt; <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Migration</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">up</span>
    create_table <span style="color:#ff3333; font-weight:bold;">:books</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>t<span style="color:#006600; font-weight:bold;">|</span>
      t.<span style="color:#9900CC;">column</span> <span style="color:#ff3333; font-weight:bold;">:title</span>, <span style="color:#ff3333; font-weight:bold;">:string</span>
      t.<span style="color:#9900CC;">column</span> <span style="color:#ff3333; font-weight:bold;">:author</span>, <span style="color:#ff3333; font-weight:bold;">:string</span>
      t.<span style="color:#9900CC;">column</span> <span style="color:#ff3333; font-weight:bold;">:rating</span>, <span style="color:#ff3333; font-weight:bold;">:int</span>
      t.<span style="color:#9900CC;">column</span> <span style="color:#ff3333; font-weight:bold;">:description</span>, <span style="color:#ff3333; font-weight:bold;">:text</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">down</span>
    drop_table <span style="color:#ff3333; font-weight:bold;">:books</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Metoda self.up służy do przeniesienia wersji bazy danych na aktualna, natomiast self.down wycofuje wprowadzone zmiany. Ten kod tworzy tablicę &#8220;books&#8221; z czterma polami (i dodatkowo piątym &#8211; id). Zasadniczo każdą podstawową operację na bazie danych można w ten sposób opisać. Prościej się juz chyba nie da.</p>
<p>Do tego wszystkiego Rails oferuje generatory &#8211; skrypty które tworzą nowe element strony takie jak modele, widoki, czy migracje bazy danych, razem z wszystkimi testami które wypadałoby zrobić. Jakby tego było mało, aplikację RoR można połączyć z SVNem, dzięki czemu pozbywamy się problemu ręcznego dodawania plików.</p>
<p>O Ruby on Rails i jego zaletach możnaby pisać godzinami, więc tym razem to już wszystko.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.migol.net/2008/05/29/ror-jakosc-w-standardzie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
