<?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>Marcin Kłeczek &#187; projekty</title>
	<atom:link href="http://marcin.kleczek.com/category/projekty/feed" rel="self" type="application/rss+xml" />
	<link>http://marcin.kleczek.com</link>
	<description>Szaro na białym</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:08:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Dlaczego uwielbiam być programistą&#8230; i kocham linuksa ;)</title>
		<link>http://marcin.kleczek.com/dlaczego-uwielbiam-byc-programista-i-kocham-linuksa_projekty.html</link>
		<comments>http://marcin.kleczek.com/dlaczego-uwielbiam-byc-programista-i-kocham-linuksa_projekty.html#comments</comments>
		<pubDate>Wed, 24 Sep 2008 07:16:54 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[półżartem]]></category>
		<category><![CDATA[projekty]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php/db]]></category>
		<category><![CDATA[pobieranie obrazków]]></category>
		<category><![CDATA[templatemonster]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/?p=156</guid>
		<description><![CDATA[Rozmawiałem wczoraj ze znajomym handlowcem (współpracujemy przy różnych projektach) na temat wyboru designu dla jego klienta. Przeglądał szablony na różnych serwisach i doszedł do wniosku, że najciekawsze są na templatemonsterze, ale przeglądanie ich jest co najmniej niewygodne. Niestety nie miał pomysłu jak sobie ułatwić to przeglądanie. Ja natomiast dość szybko znalazłem ułatwienie dla siebie: &#60;?php [...]]]></description>
			<content:encoded><![CDATA[<p>Rozmawiałem wczoraj ze znajomym handlowcem (współpracujemy przy różnych projektach) na temat wyboru designu dla jego klienta. Przeglądał szablony na różnych serwisach i doszedł do wniosku, że najciekawsze są na templatemonsterze, ale przeglądanie ich jest co najmniej niewygodne. Niestety nie miał pomysłu jak sobie ułatwić to przeglądanie.</p>
<p><span id="more-156"></span>Ja natomiast dość szybko znalazłem ułatwienie dla siebie:</p>
<p>&lt;?php<br />
for( $i = 11000; $i &lt; 12000; $i++ )<br />
echo &#8220;http://images.templatemonster.com/screenshots/&#8221; . floor( $i / 100 ) .&#8217;00/&#8217; . $i . &#8220;-b.jpg\n&#8221;;<br />
?&gt;</p>
<p>następnie<br />
makaron@laptop:~/workspace/temp8$ php generate.php &gt; files.txt<br />
makaron@laptop:~/workspace/temp8$ wget -i files.txt</p>
<p>&#8230;i po kilku minutach mam wszystkie szablony z &#8220;grupy 11k&#8221; w katalogu, przeglądane szybko i wygodnie, z kasowaniem badziewnych i zapamiętywaniem (kopiowaniem do innego katalogu) wybranych.</p>
<p>Pomyślałem &#8211; przeglądanie jest OK, ale wyszukiwanie &#8220;podobnych&#8221; by się przydało&#8230; po 15 minutach był prosty skrypt, który analizował natężenie kolorów we wszystkich obrazkach i dane ich zapisywał do bazy. Po następnych 15 minutach była przeglądarka obrazków wyświetlająca od razu &#8220;pasek kolorów&#8221; (długość koloru w pasku odpowiada natężeniu [%udziałowi danego koloru w całym obrazku] koloru). Bardzo łatwo mogę znaleźć podobne obrazki, bądź obrazki o wybranych kolorach.</p>
<p>Dobrze, co dalej? Przydałaby się możliwość wybrania &#8220;układu&#8221; (nie mylić z grupą trzymającą władzę)&#8230; strony. Ale to niestety wymagałoby już ręcznego określenia na pewnym etapie (wszystkie metody automatyczne, które przyszły mi do głowy, niestety będą zawodne, a co najmniej niepewne).</p>
<p>Może ktoś z was ma pomysł, jak z obrazka odczytać układ (2kolumny / 3kolumny / nagłówek+2kolumny itd)?</p>
<p>notatka: poprawiłem błąd zer (powstały przy przepisywaniu)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/dlaczego-uwielbiam-byc-programista-i-kocham-linuksa_projekty.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Podcast downloader</title>
		<link>http://marcin.kleczek.com/podcast-downloader_projekty.html</link>
		<comments>http://marcin.kleczek.com/podcast-downloader_projekty.html#comments</comments>
		<pubDate>Sat, 23 Aug 2008 10:06:50 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/podcast-downloader_projekty.html</guid>
		<description><![CDATA[Dziś publikacja następnego skryptu &#8220;automatyzującego&#8221; i ułatwiającego życie. Podcast_downloader ma w prosty sposób pobierać nowe mp3ki publikowane w RSSach podcastowych. Ja używam go do pobierania angielskich nagrań, którymi chcę podszlifować moją wiedzę (lista podcastów w paczce).  Pobierz. Działanie skryptu jest bardzo proste (bash only), ale wymaga kilku narzędzi (dostępnych chyba w każdym uniksie): wget, sed, [...]]]></description>
			<content:encoded><![CDATA[<p>Dziś publikacja następnego skryptu &#8220;automatyzującego&#8221; i ułatwiającego życie. Podcast_downloader ma w prosty sposób pobierać nowe mp3ki publikowane w RSSach podcastowych. Ja używam go do pobierania angielskich nagrań, którymi chcę podszlifować moją wiedzę (lista podcastów w paczce).  <a href="http://marcin.kleczek.com/stuff/podcast_downloader.tar.gz" title="Pobierz skrypt">Pobierz</a>. <span id="more-147"></span></p>
<p>Działanie skryptu jest bardzo proste (bash only), ale wymaga kilku narzędzi (dostępnych chyba w każdym uniksie): wget, sed, find. Wszystkie RSSy znajdujących się w &#8220;channels.txt&#8221; są pobierane do tmp/$num, następnie sedem każdy tag zawierający string &#8220;mp3&#8243; przenosimy do nowej lini, grepujemy tylko linijki zawierające &#8220;mp3&#8243;. Pobieramy wszystkie http://.*mp3, których pliki nie są znalezione (przy użyciu find/basename). Proste, krórkie, logiczne :-) Dodatkowo pliki mp3 są przechowywane w katalogach &#8220;dziennych&#8221; (mp3/2008-08-23/), dzięki czemu możemy posłuchać wyłącznie nowo pobranych plików.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/podcast-downloader_projekty.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rapidshare downloader</title>
		<link>http://marcin.kleczek.com/rapidshare-downloader_projekty.html</link>
		<comments>http://marcin.kleczek.com/rapidshare-downloader_projekty.html#comments</comments>
		<pubDate>Thu, 21 Aug 2008 06:00:25 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/rapidshare-downloader_projekty.html</guid>
		<description><![CDATA[Jakiś czas temu wykupiłem konto na rapidshare &#8211; miałem potrzebę uzupełnienia listy &#8220;plików&#8221; ;) [nikt nie przyzna się do piracenia]. Konto premium ma wiele zalet &#8211; i jedną wadę &#8211; trzeba za nie płacić. Ponieważ jestem typowym &#8220;centusiem&#8221; ograniczyłem się do jednego miesiąca. Niestety nie uzupełniłem kolekcji i pozostałe pliki musiałem ściągać z &#8220;free&#8221; &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu wykupiłem konto na rapidshare &#8211; miałem potrzebę uzupełnienia listy &#8220;plików&#8221; ;) [nikt nie przyzna się do piracenia]. Konto premium ma wiele zalet &#8211; i jedną wadę &#8211; trzeba za nie płacić. Ponieważ jestem typowym &#8220;centusiem&#8221; ograniczyłem się do jednego miesiąca. Niestety nie uzupełniłem kolekcji i pozostałe pliki musiałem ściągać z &#8220;free&#8221; &#8211; ono ma więcej wad, ale największa jest taka, że można pobierać tylko 1 plik jednocześnie. Powoduje to niepotrzebną stratę czasu przy pobieraniu kolejnych elementów większych kolekcji. Rozwiązanie? Skrypty :) Tylko jak pobierać pliki z radpishare?</p>
<p><span id="more-144"></span>Nie znalazłem nic prostego i szybkiego na sieci (a pewnie za mało szukałem). Siadłem do pisania i po 30 minutach otrzymałem gotowe rozwiązanie <a title="Skrypty pobierani plików z rapidshare" href="http://marcin.kleczek.com/stuff/RS.get.txt">pobierania plików z rapidshare</a>. Uwaga: ponieważ skrypt pobierania był pisany na szybko i wyłącznie do momentu pierwszego poprawnego pobrania jest on dość chaotyczny i niepotrzebnie skomplikowany (obiecywałem sobie, że go uprzątnę, ale póki działa nie będę tego robił). Drugi plik jest &#8220;launcherem&#8221; pobierającym wszystkie pliki z listy zawartej w files.txt. Tyle o paczce, teraz o samym pobieraniu.</p>
<p>Skrypt jest chaotyczny, ale działający &#8211; przede wszystkim obawiałem się, że rapidshare będzie miał jakieś zabezpieczenia przed pobieraniem &#8211; ukryte javascript&#8217;y, ukryte obrazki, kombinacje i inne elementy utrudniające pobieranie &#8220;automatem&#8221;. Niestety nic takiego nie ma! &#8230;na szczęście :-) Skrypt używa zewnętrznego curl (/usr/bin/curl) do pobrania &#8220;ostatecznego&#8221; pliku, gdyż pobieranie w PHP nie ma sensu &#8211; a ja jestem zwolennikiem zasady, że należy wszystko robić najprościej jak się da. Pobieranie &#8220;stron&#8221; i symulowanie użytkownika jest wykonywane przy użyciu curl w PHP. Cały proces ma trzy etapy: pobranie strony z wyborem sposobu pobierania pliku, wywołanie formularza &#8220;Free&#8221;, i ostateczne pobranie pliku (po odczekaniu 92 sekund [max czasu odczekania jaki znalazłem na rs]).</p>
<p>To chyba wszystko co warto napisać o pobieraniu &#8211; w razie problemów/sugestii/nowych wersji plików proszę pisać w komentarzach :)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/rapidshare-downloader_projekty.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>OCR &#8211; zrobię to sam&#8230;</title>
		<link>http://marcin.kleczek.com/ocr-zrobie-to-sam_projekty.html</link>
		<comments>http://marcin.kleczek.com/ocr-zrobie-to-sam_projekty.html#comments</comments>
		<pubDate>Tue, 17 Jun 2008 09:30:20 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/ocr-zrobie-to-sam_projekty.html</guid>
		<description><![CDATA[Jak część z was zapewne wie, bawię się w czytanie różnego rodzaju obrazków, popularnie nazywanych captcha &#8211; takie niegroźne hobby (nigdzie nie publikowane, bez robienia szkód serwisom, które mają &#8220;słabe&#8221; captcha). W przypadku niektórych używałem gocr do ostatecznego odczytania tekstu (przez lenistwo) &#8211; niestety ostatnio gocr mnie zawodził, więc&#8230; &#8230;postanowiłem napisać swój system rozpoznawania znaków. [...]]]></description>
			<content:encoded><![CDATA[<p>Jak część z was zapewne wie, bawię się w czytanie różnego rodzaju obrazków, popularnie nazywanych captcha &#8211; takie niegroźne hobby (nigdzie nie publikowane, bez robienia szkód serwisom, które mają &#8220;słabe&#8221; captcha). W przypadku niektórych używałem gocr do ostatecznego odczytania tekstu (przez lenistwo) &#8211; niestety ostatnio gocr mnie zawodził, więc&#8230;</p>
<p><span id="more-140"></span> &#8230;postanowiłem napisać swój system rozpoznawania znaków. System bardzo prosty, ale jednocześnie bardzo skuteczny &#8211; opierający się na rozpoznawaniu wybranych elementów charakterystycznych dla znaków. Nie pozwala on co prawda na czytanie skanów, ale bez problemu rozpozna teksty drukowane na obrazkach.</p>
<p>W pierwszym etapie filtruję obrazki (usuwając wszelkie śmieci, które mogą zniekształcić obrazek), pozostałość (kiedy zostają już tylko litery)  robię cz/b, rozbijam na pojedyncze litery (zapomniałem dodać, że sprawdzam, czy litera nie jest przekręcona),  a te litery parsuję moim &#8220;OCR&#8221; (doszedłem do wniosku, że gdybym miał z miesiąc wolnego, mógłbym napisać &#8220;poważny&#8221; OCR, ale z pracy 3 dniowej też jestem zadowolony).</p>
<p>W pojedynczych literkach skupiam się na kilku charakterysytycznych cechach (ATM mówimy jedynie o literach drukowanych, małe literki pojawią się w wersji 2.0) &#8211; liniach prostych, skosach i zaokrągleniach &#8211; ścięciach. Okazuje się, że wcale nie jest ich tak dużo, oraz że litery różnią się znacząco od siebie. Po pierwszym filtrze zostaje nam ~2-6 liter, które trzeba dokładniej sprawdzić, po drugim zostaje max 3 (zazwyczaj 1), dla których porównujemy zapisane różnice (np. między D a O różnice są w prawym górnym i lewym dolnym rogu, różnica między F i E jest na dolnej kresce i dolnym prawym rogu &#8211; ale te różnice powinny zostać wychwycone już w pierwszych 2 etapcach i jedna z nich powinna zostać wykluczona).</p>
<p>System doskonale sprawdza się w przypadku liter drukowanych i &#8220;prostych&#8221; znaków &#8211; choć zapewne, jeśli sprecyzować dokładność sprawdzania (np. dla rogów mam sprawdzanie, czy jest prostokąt w pełni wypełniony, czy wypełniony &#8220;po skosie prawym (slash)&#8221;, &#8220;skosie lewym (backslash)&#8221; i która część skosu jest zapełniona.</p>
<p>Docelowo planuję jeszcze dodać (w przypadku, jeśli zostaną jakieś niepewności (G vs 6 &#8211; sprawdzenie, czy jest połączenie między kreseczką w środku) sposób porównywania właśnie typowych &#8220;niepewnych&#8221;.</p>
<p>System jeszcze nie dokończony, a już pojawił się nowy model sprawdzania litery &#8211; opływanie. Dla pojedynczej litery sprawdzamy jak wygląda jej kształt zamieniony na proste, w przypadku których koniec jednej jest początkiem drugiej (trudno to opisać, łatwo zobaczyć na rysunku, ale takowego akurat nie posiadam). Proste krótkie są później zamieniane na dłuższe (3 proste, których X zmienł się o 4px, a Y o 30 można śmiało zamienić na jedną długą z X początkowym pierwszego punktu, i końcowym ostatniego) &#8211; i te proste byłyby później porównywane. System ten, jest dużo bardziej skomplikowany, ale osiągnięty efekt może być dużo lepszy.</p>
<p>&#8230;a w trakcie pisania powyższego paragrafu, doszedłem do wniosku, że potrzebny mi będzie jeszcze system usuwania kapitalików przed parsowaniem liter&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/ocr-zrobie-to-sam_projekty.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Wersje językowe</title>
		<link>http://marcin.kleczek.com/wersje-jezykowe_projekty.html</link>
		<comments>http://marcin.kleczek.com/wersje-jezykowe_projekty.html#comments</comments>
		<pubDate>Mon, 24 Mar 2008 10:05:16 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/wersje-jezykowe_projekty.html</guid>
		<description><![CDATA[Zmagam się ze znajomym od wielu lat problemem &#8211; wersjami językowymi. Niedawno pisał o tym Zyx, sam zrobiłem już nie jedną stronę dwujęzyczną &#8211; ale problem w przypadku danceshaker&#8216;a jest bardziej złożony. Docelowo planuję trzy wersje językowe (jako, że mam dostęp do 2 tłumaczy, którzy będą mogli mi teksty tłumaczyć w miarę możliwości &#8220;na bieżąco&#8221;) [...]]]></description>
			<content:encoded><![CDATA[<p>Zmagam się ze znajomym od wielu lat problemem &#8211; wersjami językowymi. Niedawno pisał o tym <a href="http://www.zyxist.com/" title="Zyx blog" target="_blank">Zyx</a>, sam zrobiłem już nie jedną stronę <a href="http://www.elboxrf.com" target="_blank">dwujęzyczną</a> &#8211; ale problem w przypadku <a href="http://www.danceshaker.com" title="DanceShaker.com" target="_blank">danceshaker</a>&#8216;a jest bardziej złożony.</p>
<p><span id="more-134"></span> Docelowo planuję trzy wersje językowe (jako, że mam dostęp do 2 tłumaczy, którzy będą mogli mi teksty tłumaczyć w miarę możliwości &#8220;na bieżąco&#8221;) &#8211; PL, EN i DE. Prócz komunikatów serwisu (interface&#8217;u), chciałem żeby serwisy były w miarę możliwości niezależne językowo (komentarze, tagi) a jednocześnie zsynchronizowane (skoro na jednym z nich zostaną podane określone tagi, to zapewne dla pozostałych te tagi również będą sensowne &#8211; część z nich będzie trzeba przetłumaczyć, to wszystko)&#8230; i tu się sprawa komplikuje. O ile napisanie takiego mechanizmu nie byłoby wielkim problemem, o tyle synchronizacja &#8211; panowanie nad wszystkim &#8211; na pewno będzie nastręczać problemów.</p>
<p>Jeśli do tego dodać &#8220;codzienną&#8221; pracę nad serwisem, może się okazać, że rewolucja językowa zjadła własnego webmastera i nic sensownego z niej nie wynikło. Oczywiści prócz problemów czasowych dojdą pytania/problemy techniczne &#8211; czy wersje językowe rozwiązać na subdomenach, czy na podkatalogach (serwisu, nie fizycznych &#8211; wszystko musi chodzić na jednym kodzie, jeszcze by tego brakowało, żebym musiał synchronizować pliki&#8230; albo bazy danych :D). Najlepiej rokującym jest rozwiązanie subdomenowe en.danceshaker.com, pl.danceshaker.com, de.danceshaker.com &#8211; tylko wtedy trzeba zrezygnować z ew subdomen dla tematów (jak to planowałem) &#8211; można to oczywiście obejść temat.en.danceshaker.com &#8211; tylko czy warto? Jestem przeciwnikiem stu tysięcy domen dla serwisów, których i tak nikt nie zapamięta, tylko po to żeby lepiej wyglądało w wyszukiwarce &#8211; wiem, efekt psychologiczny, ale prócz pieniędzy liczy się zdrowy rozsądek (dla mnie) &#8211; dlatego chcę tego uniknąć.</p>
<p>Zakładając, że decyduję się na subdomeny, nada pozostaje kilka problemów &#8211; jak choćby ocenianie, wyszukiwanie i inne &#8211; o których na razie nie będę wspominał.</p>
<p>Rozwiązanie &#8211; jak zawsze, przyjdzie w swoim czasie &#8211; przeglądajcie bloga, postaram się opisać.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/wersje-jezykowe_projekty.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rewizje SVN w plikach</title>
		<link>http://marcin.kleczek.com/rewizje-svn-w-plikach_projekty.html</link>
		<comments>http://marcin.kleczek.com/rewizje-svn-w-plikach_projekty.html#comments</comments>
		<pubDate>Mon, 11 Feb 2008 14:37:50 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/rewizje-svn-w-plikach_php.html</guid>
		<description><![CDATA[Po dłuższej przerwie wróciłem do korzystania z svn&#8217;a (przerwa wymuszona brakiem czasu) &#8211; przygotowuję się na rozszerzenie składu firmy, od porządków zacząć najlepiej. W międzyczasie przemyślałem system automatycznego updat&#8217;u aplikacji. System nie jest prosty, bo mam dość spore wymagania w tej kwestii. W najbliższym czasie powinien pojawić się odpowiedni wpis. Jednym z problemów jakie się [...]]]></description>
			<content:encoded><![CDATA[<p>Po dłuższej przerwie wróciłem do korzystania z svn&#8217;a (przerwa wymuszona brakiem czasu) &#8211; przygotowuję się na rozszerzenie składu firmy, od porządków zacząć najlepiej. W międzyczasie przemyślałem system automatycznego updat&#8217;u aplikacji. System nie jest prosty, bo mam dość spore wymagania w tej kwestii. W najbliższym czasie powinien pojawić się odpowiedni wpis.  Jednym z problemów jakie się pojawiły jest wersjonowanie plików &#8211; po co bawić się w numerowanie ręczne, md5 i inne problematyczne rozwiązania, skoro korzysta się z SVNa.</p>
<p><span id="more-125"></span>Dodałem do każdego pliku odpowiednie svn:keywords &#8211; Revision, ale ręcznie nie zmodyfikowałem (jeszcze) wszystkich plików &#8211; jest ich zbyt dużo, a zanim powstanie system update&#8217;ów (którego pisanie zajmie min. miesiąc &#8211; po godzinach) zdążę wszystko uzupełnić. Tylko.. gdzie uzupełniłem, a gdzie nie? Oto jest pytanie! <a href="http://marcin.kleczek.com/stuff/check_revision.sh" title="Check for revision string in files">Skrypt</a> zna odpowiedź :-)</p>
<p>Uruchamiamy z linii poleceń (jeśli występuje parametr, to musi być katalogiem) a na wyjściu otrzymujemy listę plików (katalogi są sprawdzane rekurencyjnie [DIR ]) z zaznaczeniem, czy posiadają Revision: (co będzie automatycznie zastąpione przez SVN) [ OK ], lub oznaczeniem, że nie posiadają [----].</p>
<p>Prosty i skuteczny sposób na upewnienie się, że pliki posiadają odpowiednie &#8220;stringi&#8221;. Można przemyśleć, czy nie sprawdzać w ten sposób innych rzeczy &#8211; nagłówków (GPL?), @package, @author? Istnieje dużo ciekawych pomysłów na wykorzystanie.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/rewizje-svn-w-plikach_projekty.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem plecakowy.. drużyny harcerskiej</title>
		<link>http://marcin.kleczek.com/problem-plecakowy-druzyny-harcerskiej_projekty.html</link>
		<comments>http://marcin.kleczek.com/problem-plecakowy-druzyny-harcerskiej_projekty.html#comments</comments>
		<pubDate>Tue, 13 Nov 2007 11:51:07 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/problem-plecakowy-druzyny-harcerskiej_php.html</guid>
		<description><![CDATA[W trakcie prac nad Systemem Zarządzania Produkcją dla firmy Krespol Sp. z o.o. dostałem zadania wykonania podsystemu planowania pracy wtryskarek na podstawie planów miesięcznych. Problem początkowo wydaje się prosty &#8211; im głębiej w las, tym.. więcej problemów. Planowanie pojedynczej wtryskarki przypomina problem plecakowy (uwzględnić maksymalnie długą produkcję, która daje najwyższą marżę netto), jednak problem główny [...]]]></description>
			<content:encoded><![CDATA[<p>W trakcie prac nad Systemem Zarządzania Produkcją dla firmy Krespol Sp. z o.o. dostałem zadania wykonania podsystemu planowania pracy wtryskarek na podstawie planów miesięcznych. Problem początkowo wydaje się prosty &#8211; im głębiej w las, tym.. więcej problemów.</p>
<p><span id="more-114"></span> Planowanie pojedynczej wtryskarki przypomina problem plecakowy (uwzględnić maksymalnie długą produkcję, która daje najwyższą marżę netto), jednak problem główny polega nie tylko na upchaniu produkcji na każdą wtryskarkę, ale również najsensowniejsze ułożenie produktów na wtryskarkach, maksymalizację MN na każdej wtryskarce, jak również na całym zakładzie.</p>
<p>Mam za mało czasu, żeby wszystko opisać tutaj (teraz) &#8211; jeśli masz pomysł, jak zaplanować upchnięcie (prawie) wszystkich rzeczy w plecakach drużyny harcerskiej&#8230; napisz do mnie :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/problem-plecakowy-druzyny-harcerskiej_projekty.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OLE z mdb</title>
		<link>http://marcin.kleczek.com/ole-z-mdb_projekty.html</link>
		<comments>http://marcin.kleczek.com/ole-z-mdb_projekty.html#comments</comments>
		<pubDate>Sat, 22 Sep 2007 15:02:29 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/ole-z-mdb_projekty.html</guid>
		<description><![CDATA[Zazwyczaj przy pisaniu nowej aplikacji dla firm, &#8220;góra&#8221; chce, żeby przenieść informacje z aktualnych programów (exceli, plików tekstowych, innych śmieci). Zdarzało mi się już pobierać dane z baz danych mysql, postgres, pobierać informacje z excelli (po &#8220;zcsvowaniu&#8221; [cóż za słopotwór!]), plików tekstowych, HTMLi, XMLi &#8211; ostanio również z mdb (format accessa). O ile pobieranie danych [...]]]></description>
			<content:encoded><![CDATA[<p>Zazwyczaj przy pisaniu nowej aplikacji dla firm, &#8220;góra&#8221; chce, żeby przenieść informacje z aktualnych programów (exceli, plików tekstowych, innych śmieci). Zdarzało mi się już pobierać dane z baz danych mysql, postgres, pobierać informacje z excelli (po &#8220;zcsvowaniu&#8221; [cóż za słopotwór!]), plików tekstowych, HTMLi, XMLi &#8211; ostanio również z mdb (format accessa).</p>
<p><span id="more-110"></span> O ile pobieranie danych z accessa nie stanowi większego problemu (export z M$ acessa, lub mdb-tools), nie bardzo wiedziałem jak zabrać się za obiekty OLE (z drugiej strony, to dość poroniony pomysł, żeby pliki binarne trzymać w bazie danych &#8211; i nikt mnie nie przekona, że jest inaczej). Zapisywanie ręcznie nie ma większego sensu &#8211; jest czasochłonne i pracochłonne (czasochłonność maszyny jestem w stanie czasem zaakceptować &#8211; po to nakupowałem różnego rodzaju komputerów, żeby na siebie pracowały). Jak zawsze &#8211; o pomoc poprosiłem google &#8211; dość szybko dostałem sensowną odpowiedź: <a href="http://www.lebans.com/oletodisk.htm" title="OLE to disk writer" target="_blank">OLEtoDisk</a>. Szybko i bezboleśnie eksportuje dane z tabel do plików &#8211; używając jako nazwy wybranej kolumny, pobierając informacje dotyczące typu przechowywanego obiektu. Szybkie i raczej bezproblemowe.</p>
<p>Niestety (miałem napisać na szczęście, bo cieszę się, że nie musiałem tracić czasu)  nie poznałem narzędzia dokładnie, nie mniej jednak &#8211; polecam wszystkim, którzy muszą męczyć się z wyciąganiem danych z mdb.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/ole-z-mdb_projekty.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mantis zmiana favicon przy zmianie projektu</title>
		<link>http://marcin.kleczek.com/mantis-zmiana-favicon-przy-zmianie-projektu_projekty.html</link>
		<comments>http://marcin.kleczek.com/mantis-zmiana-favicon-przy-zmianie-projektu_projekty.html#comments</comments>
		<pubDate>Sat, 28 Jul 2007 08:40:09 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/mantis-zmiana-favicon-przy-zmianie-projektu_projekty.html</guid>
		<description><![CDATA[Pierwsza mini poprawka do mantisa (docelowo będzie ich duuużo więcej), powstała w zasadzie bez powodu i bez większego sensu ;-) Wodotryski są jednak częścią użyteczności i jeśli używasz mantisa do więcej niż jednego projektu, to dodatek będzie użyteczny. Opis znajduje się na forum mantisa.]]></description>
			<content:encoded><![CDATA[<p>Pierwsza <a HREF="/stuff/custom_favicon.patch">mini poprawka</a> do <a TITLE="Mantis system kontroli zgłoszeń i błędów" HREF="http://www.mantisbt.org/">mantisa</a> (docelowo będzie ich duuużo więcej), powstała w zasadzie bez powodu i bez większego sensu ;-) Wodotryski są jednak częścią użyteczności i jeśli używasz mantisa do więcej niż jednego projektu, to dodatek będzie użyteczny. Opis znajduje się na <a TITLE="Opis użycia na forum mantisa" HREF="http://www.mantisbt.org/forums/viewtopic.php?t=3516">forum mantisa</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/mantis-zmiana-favicon-przy-zmianie-projektu_projekty.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN Clear</title>
		<link>http://marcin.kleczek.com/svn-clear_projekty.html</link>
		<comments>http://marcin.kleczek.com/svn-clear_projekty.html#comments</comments>
		<pubDate>Wed, 11 Apr 2007 10:51:51 +0000</pubDate>
		<dc:creator>MaKARON</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://marcin.kleczek.com/svn-clear_projekty.html</guid>
		<description><![CDATA[SVN jest bardzo przydatne w codziennej pracy. Jest jednak jedna rzecz, która nie do końca mi pasuje, w katalogach .svn trzymane są oryginalne wersje plików. Jest to o tyle problematyczne, że wyszukiwanie w plikach zwraca podwójną listę wyników i utrudnia ich odczytanie. Przy niewielkich projektach, albo tych, które dokładnie znam, to żaden problem. Przy dużych [...]]]></description>
			<content:encoded><![CDATA[<p>SVN jest bardzo przydatne w codziennej pracy. Jest jednak jedna rzecz, która nie do końca mi pasuje, w katalogach .svn trzymane są oryginalne wersje plików. Jest to o tyle problematyczne, że wyszukiwanie w plikach zwraca podwójną listę wyników i utrudnia ich odczytanie. Przy niewielkich projektach, albo tych, które dokładnie znam, to żaden problem. Przy dużych OS aplikacjach, które dopiero poznaję sprawia mi to duży problem.</p>
<p><span id="more-74"></span>Napisałem więc prosty <a TITLE="skrypt svn clear/recover" TARGET="_blank" HREF="http://marcin.kleczek.com/stuff/svn-clear.tar.gz">skrypt</a>, który rozwiązuje mój problem. W zasadzie to jeden plik, który został skopiowany pod inną nazwą. Pierwszy przenosi wszystkie .svn (rekursywnie) do ../SVN/project/ (project zostaje zastąpione aktualnym katalogiem), drugi wykonuje operację odwrotną. Przywraca pliki na odpowiednie miejsce.</p>
<p>W ten prosty sposób pozbywamy się kopii, i możemy pracować nad aplikacją, a kiedy potrzebujemy &#8220;skomitować&#8221; zmiany, sprawdzić zmiany lub wykonać inną operację na svn, przywracamy je jednym poleceniem.</p>
<p>Skrypt jest na GPL. Jeśli wprowadzicie w nim zmiany, proszę o kontakt.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.kleczek.com/svn-clear_projekty.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

