<?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>Od Informacji do Wiedzy</title>
	<atom:link href="http://profind.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://profind.pl</link>
	<description>Blog o informacjach na temat informacji i wiedzy</description>
	<lastBuildDate>Sun, 13 May 2012 09:03:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>R i Hadoop</title>
		<link>http://profind.pl/2012/05/13/r-i-hadoop/</link>
		<comments>http://profind.pl/2012/05/13/r-i-hadoop/#comments</comments>
		<pubDate>Sun, 13 May 2012 09:03:36 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Dziennik badań]]></category>
		<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>
		<category><![CDATA[R project]]></category>
		<category><![CDATA[R hadoop]]></category>
		<category><![CDATA[R map-reduce]]></category>
		<category><![CDATA[r project hadoop]]></category>
		<category><![CDATA[R project map reduce]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1134</guid>
		<description><![CDATA[Aktualnie podsyłam jeszcze jeden interesujący link do projektu związanego z opisem połączenia rozwiązania w postaci R project i Hadoop. Informacje można znaleźć w prezentacji http://blog.revolutionanalytics.com/2011/11/marriage-hadoop-r.html.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Aktualnie podsyłam jeszcze jeden interesujący link do projektu związanego z opisem połączenia rozwiązania w postaci R project i Hadoop. Informacje można znaleźć w prezentacji <a href="http://blog.revolutionanalytics.com/2011/11/marriage-hadoop-r.html">http://blog.revolutionanalytics.com/2011/11/marriage-hadoop-r.html</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2012/05/13/r-i-hadoop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R hadoop</title>
		<link>http://profind.pl/2012/04/18/r-hadoop/</link>
		<comments>http://profind.pl/2012/04/18/r-hadoop/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 05:49:14 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Dziennik badań]]></category>
		<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>
		<category><![CDATA[R project]]></category>
		<category><![CDATA[hadoop r]]></category>
		<category><![CDATA[obliczenia rozproszone w R]]></category>
		<category><![CDATA[r project hadoop]]></category>
		<category><![CDATA[R project obliczenia rozproszone]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1131</guid>
		<description><![CDATA[Dzisiaj krótki wpis na temat możliwości zastosowania Hadoopa w swoich programach napisanych w R project. Poniżej podaje kilka ciekawych linków: - How to program MapReduce jobs in Hadoop with R - RevolutionAnalytics / RHadoop Życzę jak zawsze miłej lektury.]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj krótki wpis na temat możliwości zastosowania Hadoopa w swoich programach napisanych w R project. Poniżej podaje kilka ciekawych linków:</p>
<p>- <a href="http://www.r-bloggers.com/how-to-program-mapreduce-jobs-in-hadoop-with-r/">How to program MapReduce jobs in Hadoop with R</a></p>
<p>- <a href="https://github.com/RevolutionAnalytics/RHadoop/wiki/Tutorial">RevolutionAnalytics / <strong>RHadoop</strong></a></p>
<p>Życzę jak zawsze miłej lektury.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2012/04/18/r-hadoop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wydane artykuły na temat segmentacji tekstu i przeglądu metod jego przetwarzania</title>
		<link>http://profind.pl/2012/03/29/wydane-artykuly-na-temat-segmentacji-tekstu-i-przegladu-metod-jego-przetwarzania/</link>
		<comments>http://profind.pl/2012/03/29/wydane-artykuly-na-temat-segmentacji-tekstu-i-przegladu-metod-jego-przetwarzania/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 20:08:53 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Dziennik badań]]></category>
		<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>
		<category><![CDATA[analiza raportów PSP]]></category>
		<category><![CDATA[eksploracja danych tekstowych]]></category>
		<category><![CDATA[eksploracyjna analiza danych tekstowych]]></category>
		<category><![CDATA[metody i techniki analizy tekstu]]></category>
		<category><![CDATA[podział tekstu na segmenty]]></category>
		<category><![CDATA[podział tekstu na zdania]]></category>
		<category><![CDATA[przegląd metod analizy danych tekstowych]]></category>
		<category><![CDATA[segmentacja tekstu]]></category>
		<category><![CDATA[text mining]]></category>
		<category><![CDATA[text mining review]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1123</guid>
		<description><![CDATA[Po dłuższej przerwie i oczekiwaniu ukazały się nowe artykuły. Ostatnio ukazał się artykuł – Marcin Mirończuk, Tadeusz Maciak Proces i metody eksploracji danych tekstowych do przetwarzania raportów z akcji ratowniczo-gaśniczych. Metody Informatyki Stosowanej, 4/2011 oraz artykuł tych samych autorów pt.  System informacyjny na temat sieci hydrantów dla krajowego systemu ratowniczo-gaśniczego: metoda segmentacji tekstu i jej ocena także w czasopiśmie Metody Informatyki [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Po dłuższej przerwie i oczekiwaniu ukazały się nowe artykuły. Ostatnio ukazał się artykuł – Marcin Mirończuk, Tadeusz Maciak <em>Proces i metody eksploracji danych tekstowych do przetwarzania raportów z akcji ratowniczo-gaśniczych. Metody Informatyki Stosowanej, 4/2011</em> oraz artykuł tych samych autorów pt.  <em>System informacyjny na temat sieci hydrantów dla krajowego systemu ratowniczo-gaśniczego: metoda segmentacji tekstu i jej ocena </em>także w czasopiśmie <em>Metody Informatyki Stosowanej, 4/2011. </em>Zainteresowanych tematyką zapraszam do działu <a title="Abstrakty" href="http://profind.pl/publikacje/abstrakty/">Abstrakty</a> lub <a title="Publikacje…" href="http://profind.pl/publikacje/">Publikacje</a>, gdzie znajdują się streszczenia oraz linki do wersji elektronicznych ww. artykułów.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2012/03/29/wydane-artykuly-na-temat-segmentacji-tekstu-i-przegladu-metod-jego-przetwarzania/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Artykuły</title>
		<link>http://profind.pl/2012/02/17/artykuly-2/</link>
		<comments>http://profind.pl/2012/02/17/artykuly-2/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 12:22:28 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Dziennik badań]]></category>
		<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>
		<category><![CDATA[analiza danych tekstowych]]></category>
		<category><![CDATA[analiza raportów]]></category>
		<category><![CDATA[artykuły]]></category>
		<category><![CDATA[dzielenie tekstu na segmenty]]></category>
		<category><![CDATA[dzielenie tekstu na zdania]]></category>
		<category><![CDATA[eksplroacja danych tekstowych]]></category>
		<category><![CDATA[ekstrakcja informacji]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[HSWD]]></category>
		<category><![CDATA[information extraction]]></category>
		<category><![CDATA[segmentacja tekstu]]></category>
		<category><![CDATA[segmentator regułowy]]></category>
		<category><![CDATA[segmentator regułowy tekstu]]></category>
		<category><![CDATA[SWD]]></category>
		<category><![CDATA[systemu planowania zasobów]]></category>
		<category><![CDATA[systemy wspomagania decyzji i ERP]]></category>
		<category><![CDATA[text mining]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1119</guid>
		<description><![CDATA[Ostatnio większość czasu spędzam nad szlifowaniem rozprawy i opisem rezultatów badań. Uzbierało się trochę tego. W między czasie widzę, że spływają recenzje wysłanych artykułów do wydawnictw. Ostatnio ukazał się artykuł &#8211; Marcin Mirończuk, Tadeusz Maciak Wykorzystanie komponentów platformy ERP do budowy drugiej generacji hybrydowego systemu wspomagania decyzji dla PSP. Metody Informatyki Stosowanej, 3/2011. Zainteresowanych tematyką zapraszam do działu Abstrakty [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Ostatnio większość czasu spędzam nad szlifowaniem rozprawy i opisem rezultatów badań. Uzbierało się trochę tego. W między czasie widzę, że spływają recenzje wysłanych artykułów do wydawnictw. Ostatnio ukazał się artykuł &#8211; Marcin Mirończuk, Tadeusz Maciak <em>Wykorzystanie komponentów platformy ERP do budowy drugiej generacji hybrydowego systemu wspomagania decyzji dla PSP<em>.</em> Metody Informatyki Stosowanej, 3/2011. </em>Zainteresowanych tematyką zapraszam do działu <a title="Abstrakty" href="http://profind.pl/publikacje/abstrakty/">Abstrakty</a> lub <a title="Publikacje…" href="http://profind.pl/publikacje/">Publikacje</a>, gdzie znajdują się streszczenia oraz linki do wersji elektronicznych ww. artykułów.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2012/02/17/artykuly-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laboratoria nr 16 program nr 1</title>
		<link>http://profind.pl/2012/01/12/laboratoria-nr-16-program-nr-1/</link>
		<comments>http://profind.pl/2012/01/12/laboratoria-nr-16-program-nr-1/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 17:21:55 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[c++ tamplate]]></category>
		<category><![CDATA[c/c++]]></category>
		<category><![CDATA[inteligentne wskaźniki]]></category>
		<category><![CDATA[programowanie w c]]></category>
		<category><![CDATA[przykładowe programy]]></category>
		<category><![CDATA[smart pointer]]></category>

		<guid isPermaLink="false">http://profind.pl/2012/01/12/laboratoria-nr-16-program-nr-1/</guid>
		<description><![CDATA[Poniżej przedstawiam zrefaktoryzwoany, przedstawiony wcześniej szkielet kodu aplikacji do przetwarzania tekstów (Labolatorium nr 15) . Aktualnie zaprezentowane zostały tematy związane z takimi zagadnieniami jak: - biblioteka boost i wykorzystanie inteligentnych wskaźników (rozwiązanie problemów z ewentualnymi wyciekami pamięci np. przy wywoływaniu wyjątków), - biblioteka standardowa STL, - modyfikator const. W miarę czasu postaram przedstawić zagadnienia związane [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Poniżej przedstawiam zrefaktoryzwoany, przedstawiony wcześniej szkielet kodu aplikacji do przetwarzania tekstów (Labolatorium nr 15) . Aktualnie zaprezentowane zostały tematy związane z takimi zagadnieniami jak:</p>
<p align="justify">- biblioteka boost i wykorzystanie inteligentnych wskaźników (rozwiązanie problemów z ewentualnymi wyciekami pamięci np. przy wywoływaniu wyjątków),</p>
<p align="justify">- biblioteka standardowa STL,</p>
<p align="justify">- modyfikator const.</p>
<p align="justify">W miarę czasu postaram przedstawić zagadnienia związane z tampletami (<em>ang. tamplates</em>) stosowanymi do programowania ogólnego oraz wykorzystanie wyrażeń regularnych w budowaniu macierzy wyrażeń (<em>ang. term matrix</em>). Dobre wprowadzenie do biblioteki boost i wyrażeń regularnych zawiera <a href="http://www.wykop.pl/ramka/93516/boost-regex-czyli-regexpy-dla-programistow-c/">Przemoc&#8217;s wiki</a>. W dalszej kolejności planowane jest też pokazanie sposobów testowania kodu (<em>ang. test unity</em>) zamiast stosowania testów wewnątrz funkcji <em>main()</em>.</p>
<p align="justify">Na koniec, a może nawet w następnym poście dotyczącym C/C++, chciałbym przedstawić zagadnienie związane z łączeniem PHP z C++. Maszyna zenda jest dość ciężka do opanowania (wiele pośrednich makr, dokumentacji etc.). Opanowanie jej zajmuje trochę czasu. Powstało jednakże bardziej elastyczne narzędzie w postaci <a href="www.swig.org/Doc1.3/Php.html">SWIG</a> w którym na pierwszy rzut oka zadanie to wydaje się o wiele elastyczniejsze i łatwiejsze niż poprzez hackowanie bezpośrednio zenda. Z rozwiązaniem tym pierwszy raz spotkałem się w <a href="http://www.linux-magazine.pl/index.php/layout/set/print/issues/92">Linux Magazine</a> (artykuł pt. “PHP z C++”)<strong> </strong>a następnie na blogu IBMa&#160; Build <a href="http://www.ibm.com/developerworks/opensource/library/os-php-swig/">PHP extensions with SWIG</a>, gdzie <a href="http://www.ibm.com/developerworks/opensource/library/os-php-swig/#author1">Martin Streicher</a>wyjaśnia w bardzo przystępny sposób jak pisać rozszerzenia używając C/C++ do PHP.</p>
<p><span id="more-1101"></span>
<p align="justify">Kod zrefaktoryzwoanej aplikacji wykorzystujący utworzone interfejsy przedstawia listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:738d76c8-380b-41d3-b1cf-9c0f8ca630ed" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">//============================================================================
// Name        : agencyText.cpp
// Author      : Marcin Mirończuk
// Version     : 1.0
// Copyright   : GPL
// Description : The agency to text retrive
//============================================================================

/**
 * Rejestracja bibliotek
 */
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &quot;textAgent.h&quot;

#include &quot;boost/scoped_ptr.hpp&quot;

/**
 * Rejestracja przestrzeni nazw
 */
using namespace std;
using namespace ta;
using namespace boost;

/**
 * Definicja typ&#243;w
 * Wstep do tworzenia szablonow @see http://pl.wikibooks.org/wiki/C++/Szablony_klas
 */
typedef ta::textAgent agentInt;

/**
 * Program glowny
 */
int main(int argc, char** argv) {

	/**
	 * Wystartowanie kilku agentow dynamicznych oraz statycznych, nazwanych jak i nienazwanych (anonimowych)
         * Zastosowanie inteligentnych wskaznikow z biblioteki boost do zarzadzania czasem zycia obiektow
	 */
	agentInt agentStatyczny(1220, 1, &quot;przetwarzacz tekstu 1&quot;, &quot;Agent T1&quot;);
	agentInt niezweryfikowanyAgentStatyczny;

	boost::scoped_ptr&lt;agentInt&gt; agentDynamiczny(new agentInt(12330, 2, &quot;przetwarzacz tekstu 2&quot;, &quot;Agnet T2&quot;));
	boost::scoped_ptr&lt;agentInt&gt; niezweryfikowanyAgentDynamiczny(new agentInt());

	try {

		/**
		 * Pokazanie informacji o rezydujacych agentach
		 */
		cout &lt;&lt; &quot;Zarejestrowany agent i jego dane:&quot; &lt;&lt; endl;
		agentStatyczny.showData();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Agent oczekujacy na rejestracje:&quot; &lt;&lt; endl;
		niezweryfikowanyAgentStatyczny.showData();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Agent dynamiczny zarejstrowany:&quot; &lt;&lt; endl;
		agentDynamiczny-&gt;showData();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Agent dynamiczny niezweryfikowany:&quot; &lt;&lt; endl;
		niezweryfikowanyAgentDynamiczny-&gt;showData();

		cout &lt;&lt; endl;

		/**
		 * Rejestracja modulu (przybornika) do przetwarzania tekstow
                 * Dodatkowe testy przybornika
		 */
		tt::textTool tt;
                tt::textTool ttTest;

                cout &lt;&lt; &quot;Testowanie tollboksa do przetwarzania tekstu: &quot; &lt;&lt; endl;

                ttTest.extractSegments(&quot;A ja mam kota. I wiecej tekstu.&quot;);
                ttTest.showSegments();

                cout &lt;&lt; endl;

		/**
		 * Rejestracja przybornika dla agenta dynamicznego
		 */
		agentDynamiczny-&gt;rejestrTextTool(tt);
		agentDynamiczny-&gt;rejestrTextTool().extractSegments(&quot;Ala ma kota.&quot;);

		cout &lt;&lt; &quot;Ilosc zliczonych segmentow: &quot; &lt;&lt;  agentDynamiczny-&gt;rejestrTextTool().getCountSegments() &lt;&lt; endl;
		cout &lt;&lt; &quot;Pokaz jakie segmenty zliczyles: &quot; &lt;&lt; endl;
		agentDynamiczny-&gt;rejestrTextTool().showSegments();

		cout &lt;&lt; endl;

		/**
		 * Rejestracja przybornika dla agenta statycznego
		 */
                agentStatyczny.rejestrTextTool(tt);
		agentStatyczny.rejestrTextTool().extractSegments(&quot;A ja mam kota. I wiecej tekstu.&quot;);

                cout &lt;&lt; &quot;Ilosc zliczonych segmentow: &quot; &lt;&lt; agentStatyczny.rejestrTextTool().getCountSegments() &lt;&lt; endl;
		cout &lt;&lt; &quot;Pokaz jakie segmenty zliczyles: &quot; &lt;&lt; endl;
		agentStatyczny.rejestrTextTool().showSegments();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Testowanie usowania spacji:&quot; &lt;&lt; endl;

		std::string testString1 = &quot; kota &quot;;
		cout &lt;&lt; &quot;- Tekst przed filtracja: &quot; &lt;&lt; testString1 &lt;&lt; endl;
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst odfiltrowany: &quot; &lt;&lt; agentStatyczny.rejestrTextTool().stripWhiteSpace(testString1) &lt;&lt; endl;
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst pierwotny &quot; &lt;&lt; testString1 &lt;&lt; endl;

		std::string *pTestString1 = &amp;testString1;
		cout &lt;&lt; &quot;- Tekst przed filtracja wskaznik / zmienna: &quot; &lt;&lt; *pTestString1 &lt;&lt; &quot; / &quot; &lt;&lt; testString1 &lt;&lt; endl;
		agentStatyczny.rejestrTextTool().stripWhiteSpace(pTestString1);
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst odfiltrowany &quot; &lt;&lt; *pTestString1 &lt;&lt; endl;
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst pierwotny &quot; &lt;&lt; testString1 &lt;&lt; endl;

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Testowanie tokenizacji:&quot; &lt;&lt; endl;
		std::string testString2 = &quot;Ala ma kota. A kot ma na imie Ala.&quot;;
		cout &lt;&lt; &quot;- Tekst podlegajacy tokenizacji: &quot; &lt;&lt; testString2 &lt;&lt; endl;
		agentStatyczny.rejestrTextTool().tokenize(testString2);
		cout &lt;&lt; &quot;- Ilosc tokenow: &quot; &lt;&lt;  agentStatyczny.rejestrTextTool().getCountTokens() &lt;&lt; endl;
		cout &lt;&lt; &quot;- Ilosc unikatowych tokenow: &quot; &lt;&lt;  agentStatyczny.rejestrTextTool().getCountUniqueTokens();

                cout &lt;&lt; endl;

                niezweryfikowanyAgentDynamiczny-&gt;rejestrTextTool();

	} catch (std::string exception) {
                cout &lt;&lt; endl;
		cout&lt;&lt;&quot;Wyjatek: &quot;&lt;&lt; exception;
	}

	return 0;
}
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Interfejs agenta który rejestruje moduł do przetwarzania tekstu i za pośrednictwem którego odbywają się wszelkie modyfikacja przedstawia listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:3bd32f71-482b-463d-b866-d3b1658caa1a" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textAgent.h
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Klas modelujaca podstawowe elementy agenta do przetwarzania tekstu.
 *  Agent ma mozliwosc rejestrowania u siebie modulu do przetwarzania tekstu za omoca ktorego przetwarza tekst.
 *
 * @note::
 * + Metody [nazwaMetody]get() const nie zmieniaja stanu obiektow na zecz ktorych sa wywolywane.
 *   (pola tylko do odczytu)
 * + Czesc metod [nazwaMetody]get() moze byc wywolana inline
 *
 */

#include &lt;string&gt;
#include &quot;textTool.h&quot;

#ifndef TA_H_
#define TA_H_

/**
 * Definicja przestrzeni nazw
 */
namespace ta {

	/**
	 *  Definicja klasy
	 */
	class textAgent {

		/**
		 * Skladowe i metody prywatne klasy
		 */
		private:

			/**
			 * @type int timeCreate Czas w sekundach  Unix timestamp
			 */
			int timeCreate;

			/**
			 * @type float priority Priorytet agebta
			 */
			int priority;

			/**
			 * @type string task Zadanie/praca do wykonania przez agebta
			 */
			std::string task;

			/**
			 * @type string name Nazwa agenta
			 */
			std::string name;

			/**
			 * @type bool isTextTool Flaga rejestracji modulu tekstu
			 */
			bool isTextTool;

			/**
			 * @type textTool textTool Uchwyt do modulu przetwarzajacego tekst
			 */
			tt::textTool textTool;

		/**
		 * Skladowe i metody publiczne klasy
		 */
		public:

			/**
			 * Konstruktor podstawowy domyslny
			 */
			textAgent();

			/**
			 * Konstruktor rozszerzony
			 */
			textAgent(int ptimeCreate, int ppriority, std::string ptask, std::string pname);

			/**
			 * Pobranie wieku agenta
			 *
			 * @return float
			 */
			int getTimeCreate() const;

			/**
			 * Pobranie wagi agenta
			 *
			 * @return float
			 */
			int getPriority() const;

			/**
			 * Pobranie zadania agenta
			 *
			 * @return string
			 */
			std::string getTask() const;

			/*
			 * Pobranie nazwy agenta
			 *
			 * @return string
			 */
			std::string getName() const;

			/**
			 * Pokazanie danych o agencie
			 *
			 * @return void
			 */
			void showData() const;

			/**
			 * Rejestracja modulu do przetwarzania tekstu
			 *
			 * @return tt::textTool
			 */
			const tt::textTool &amp; rejestrTextTool(tt::textTool tt);

			/**
			 * Rejestracja, pobranie modulu do przetwarzania tekstu.
			 *
			 * @return tt::textTool
			 * @thorw exception
			 */
			tt::textTool &amp; rejestrTextTool() throw(std::string);

                        /**
                         * @see ta::textAgent::rejestrTextTool()
                         *
			 * @return tt::textTool
			 * @thorw exception
                         */
                        tt::textTool &amp; getTextTool();

			/**
			 * Destruktor
			 */
			virtual ~textAgent();
	};

} /* namespace textagent */
#endif /* TA_H_ */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Interfejs programu (modułu) do przetwarzania strumienia danych tekstowych przedstawia listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:ee8afcff-5691-4d3e-b541-e65060fcdafd" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textAgent.cpp
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Implementacja interfejsu agenta do przetwarzania tekstu @see textAgent.h
 *
 */

#include &lt;iostream&gt;
#include &quot;textAgent.h&quot;
#include &quot;textTool.h&quot;

namespace ta {

	textAgent::textAgent() {
		this-&gt;timeCreate = 0;
		this-&gt;priority = 0;
		this-&gt;task = &quot;unknown&quot;;
		this-&gt;name = &quot;inkognito&quot;;

		this-&gt;isTextTool = false;
	}

	textAgent::textAgent(int ptimeCreate, int ppriority, std::string ptask, std::string pname) {
		this-&gt;timeCreate = ptimeCreate;
		this-&gt;priority = ppriority;
		this-&gt;task = ptask;
		this-&gt;name = pname;

		this-&gt;isTextTool = false;
	}

	int textAgent::getTimeCreate() const {
		return this-&gt;timeCreate;
	}

	int textAgent::getPriority() const {
		return this-&gt;priority;
	}

	std::string textAgent::getTask() const {
		return this-&gt;task;
	}

	std::string textAgent::getName() const {
		return this-&gt;name;
	}

	void textAgent::showData() const {
		std::cout &lt;&lt; &quot;Time create: &quot; &lt;&lt; this-&gt;timeCreate &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;Priority: &quot; &lt;&lt; this-&gt;priority &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;Name: &quot; &lt;&lt; this-&gt;name &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;Task: &quot; &lt;&lt; this-&gt;task &lt;&lt; std::endl;
	}

	const tt::textTool &amp; textAgent::rejestrTextTool(tt::textTool tt) {
		if(this-&gt;isTextTool == false) {
			this-&gt;textTool = tt;

			this-&gt;isTextTool = true;

			return this-&gt;textTool;
		} else {
			return this-&gt;textTool;
		}
	}

	tt::textTool &amp; textAgent::rejestrTextTool() throw(std::string) {
		if(this-&gt;isTextTool == false) {
			std::string exception = &quot;Unregister text tool!&quot;;

			throw exception;
		} else {
			return this-&gt;textTool;
		}
	}

        tt::textTool &amp; textAgent::getTextTool() {
            return this-&gt;rejestrTextTool();
        }

	textAgent::~textAgent() {
	}

} /* namespace ta */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Implementację interfejsu programu do przetwarzania tekstu zawiera listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:ebd7f99d-caf3-4f5b-a8b3-1f17a4f58386" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textTool.h
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Klas modelujaca modul (przybornik) do przetwarzania tekstu.
 *
 * @note::
 * + Metody [nazwaMetody]get() const nie zmieniaja stanu obiektow na rzecz ktorych sa wywolywane.
 *   (pola tylko do odczytu)
 * + Czesc metod [nazwaMetody]get() moze byc wywolana inline
 * + Zabezpieczenie funkcji zwracajacych referencje modyfikatorem const tj.
 *   Uniemozliwienie wywolan typu ttTest.extractSegments(&quot;&quot;) = temp;
 *   @see http://rab.ict.pwr.wroc.pl/~kreczmer/po/materialy/referencje.pdf
 *
 */

#include &lt;map&gt;
#include &lt;vector&gt;
#include &lt;string&gt;

#ifndef TT_H_
#define TT_H_

/**
 * Definicja przestrzeni nazw
 */
namespace tt {

	/**
	 *  Definicja klasy
	 */
	class textTool {

		/**
		 * Skladowe i metody prywatne klasy
		 */
		private:

			/**
			 * @type vector&lt;string&gt; segment Wektor segmentow
			 */
			std::vector&lt;std::string&gt; segments;

			/**
			 * @type vector&lt;string&gt; tokens Wektor tokenow (wyrazen)
			 */
			std::vector&lt;std::string&gt; tokens;

			/**
			 * @type vector&lt;string&gt; uniqueTokens Wektor unikalnych tokenow (wyrazen)
			 */
			std::vector&lt;std::string&gt; uniqueTokens;

			/**
			 * @type vector&lt;string, int&gt; tokensFrequ Tablica klucz=wartosc czestotliwosci wyrazen
			 */
			std::map&lt;std::string, int&gt; tokensFrequ;

			/**
			 * Usowanie duplikatow wyrazen z wektora wyrazen
			 *
			 * @see http://learningcppisfun.blogspot.com/2008/04/remove-duplicates-from-vector.html
			 * @see http://stackoverflow.com/questions/1041620/most-efficient-way-to-erase-duplicates-and-sort-a-c-vector
			 *
			 * @param vector&lt;string&gt; vec
			 *
			 * @return vector&lt;string&gt;
			 */
			const std::vector&lt;std::string&gt; &amp; removeDuplicates(std::vector&lt;std::string&gt; vec);

		public:

			/**
			 * Domyslny konstruktor
			 */
			textTool();

			/**
			 * Wydobywanie segmentow z tekstu.
			 *
			 * @param string &amp;text
			 *
			 * @return vector&lt;string&gt;
			 */
			const std::vector&lt;std::string&gt; &amp; extractSegments(const std::string &amp;text);

			/**
			 * Pobranie ilosci wydobytych segmentow z tekstu.
                         *
			 * @return int
			 */
			int getCountSegments() const;

			/**
			 * Pokazanie wydobytych segmentow z tekstu.
			 *
			 * @return void
			 */
			void showSegments() const;

			/**
			 * Usuniecie spacji z poczatku jak i z konca lancucha znakow.
			 *
			 * @param string text
			 *
			 * @return string
			 */
			std::string stripWhiteSpace(std::string text);

			/**
			 * Przeciazona wersja usuniecia spacji z poczatku jak i z konca lancucha znakow.
			 *
			 * @param string *text
			 *
			 * @return void
			 */
			void stripWhiteSpace(std::string *text);

			/**
			 * Kalkulacja, wyznaczanie macierzy czetotliwosci wystepowania wyrazen w pojedynczym dokumencie tekstowym.
			 *
			 * @param string &amp;text
			 *
			 * @return map&lt;string, int&gt;
			 */
			const std::map&lt;std::string, int&gt; &amp; computeTokensFrequ(const std::string &amp;text);

			/**
			 * Tokenizacja tekstu tj. rozbicie tekstu na wektor wyrazen.
			 * @see http://oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html
			 *
			 * @param string &amp;text
			 *
			 * @return vector&lt;string&gt;
			 */
			const std::vector&lt;std::string&gt; &amp; tokenize(const std::string &amp;text);

			/**
			 * Pobranie ilosci wyrazen.
			 *
			 * @return int
			 */
			int getCountTokens() const;

			/**
			 * Pobranie ilosci unikalnych wyrazen.
			 *
			 * @return int
			 */
			int getCountUniqueTokens();

			/**
			 * Domyslny destruktor
			 */
			virtual ~textTool();
		};

	} /* namespace tt */
#endif /* TT_H_ */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Implementację powyżej zaprezentowanego interfejsu programu do przetwarzania tekstu zawiera listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:4f576022-a68a-4456-a41a-b88736a07019" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textTool.cpp
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Implementacja interfejsu modulu do przetwarzania tekstu @see textTool.h
 *
 */

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;algorithm&gt;
#include &quot;textTool.h&quot;

namespace tt {

	textTool::textTool() {
	}

	/**
	 * Bardzo naiwna, prezentacyja wersji algorytmu do rozbijania tekstu na segmenty (zdania)
	 */
	const std::vector&lt;std::string&gt; &amp; textTool::extractSegments(const std::string &amp;text) {

                std::string tempSegment;

		for(int i = 0; i &lt; text.length(); i++) {
			if(text[i] == '.' || text[i] == '?' || text[i] == '!') {
				tempSegment = (std::string) tempSegment;
				this-&gt;segments.push_back(this-&gt;stripWhiteSpace(tempSegment));
				tempSegment.clear();
			} else {
				tempSegment += text[i];
			}
		}

		return this-&gt;segments;
	}

	int textTool::getCountSegments() const {
		return this-&gt;segments.size();
	}

	std::string textTool::stripWhiteSpace(std::string text) {

		if(text[0] == ' ') {
			text.replace(0, 1, &quot;&quot;);
		}

		if(text[text.length()-1] == ' ') {
			text.replace(text.length()-1, 1, &quot;&quot;);
		}

		return text;
	}

	void textTool::stripWhiteSpace(std::string *text) {
		std::string::iterator it;

		it = text-&gt;begin();

		if(*it == ' ') {
			text-&gt;replace(0, 1, &quot;&quot;);
		}

		it = text-&gt;end();

		if(*(it-1) == ' ') {
			text-&gt;replace(text-&gt;length()-1, 1, &quot;&quot;);
		}
	}

	void textTool::showSegments() const {
		for(int i = 0; i &lt; this-&gt;segments.size(); i++) {
			std::cout &lt;&lt; this-&gt;segments[i] &lt;&lt; std::endl;
		}
	}

	const std::map&lt;std::string, int&gt; &amp; textTool::computeTokensFrequ(const std::string &amp;text) {
		this-&gt;tokenize(text);
		this-&gt;removeDuplicates(this-&gt;tokens);

		std::vector&lt;std::string&gt;::iterator it;

                //@todo :: Zaimplementowac algorytm do tworzenia macierzy wyrazen (term matrix, tm)
		for (it = this-&gt;uniqueTokens.begin(); it &lt; this-&gt;uniqueTokens.end(); it++) {
		    std::cout &lt;&lt; &quot; &quot; &lt;&lt; *it;
		}

		return this-&gt;tokensFrequ;
	}

	const std::vector&lt;std::string&gt; &amp; textTool::tokenize(const std::string &amp;text) {

            // Buforowany string
	    std::string buf;

	    // Wstawienie stringu z potoku
	    std::stringstream ss(text);

	    while (ss &gt;&gt; buf) {
	    	this-&gt;tokens.push_back(buf);
		}

		return this-&gt;tokens;
	}

	int textTool::getCountTokens() const {
		return this-&gt;tokens.size();
	}

	int textTool::getCountUniqueTokens() {
		if(this-&gt;tokens.size() != 0 &amp;&amp; this-&gt;uniqueTokens.size() == 0) {
			this-&gt;removeDuplicates(this-&gt;tokens);

			return this-&gt;uniqueTokens.size();
		} else {
			return this-&gt;uniqueTokens.size();
		}
	}

	const std::vector&lt;std::string&gt; &amp; textTool::removeDuplicates(std::vector&lt;std::string&gt; vec) {

            std::sort(vec.begin(), vec.end());
	    vec.erase(std::unique(vec.begin(), vec.end()), vec.end());

	    this-&gt;uniqueTokens = vec;

            return this-&gt;uniqueTokens;
	 }

	textTool::~textTool() {

	}

} /* namespace tt */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2012/01/12/laboratoria-nr-16-program-nr-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laboratoria nr 15 program nr 1</title>
		<link>http://profind.pl/2012/01/03/laboratoria-nr-15-program-nr-1/</link>
		<comments>http://profind.pl/2012/01/03/laboratoria-nr-15-program-nr-1/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 16:16:35 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c/c++]]></category>
		<category><![CDATA[programowanie w c]]></category>
		<category><![CDATA[przykładowe programy]]></category>

		<guid isPermaLink="false">http://profind.pl/2012/01/03/laboratoria-nr-15-program-nr-1/</guid>
		<description><![CDATA[Projektowanie klas i programowanie obiektowe na przykładzie aplikacji do przetwarzanie tekstu. Poniżej został zaprezentowany szkielet aplikacji do przetwarzania tekstu, który będzie rozbudowywany i omawiany wraz z nowymi laboratoriami. Przedstawiane zagadnienia będą obejmowały zawansowane aspekty programowania w c++. Czytelnicy nabiorą biegłości w wykorzystaniu biblioteki standardowej STL oraz Boost. Zapoznają się z szablonami oraz metodami projektowania klas. [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Projektowanie klas i programowanie obiektowe na przykładzie aplikacji do przetwarzanie tekstu.</p>
<p align="justify">Poniżej został zaprezentowany szkielet aplikacji do przetwarzania tekstu, który będzie rozbudowywany i omawiany wraz z nowymi laboratoriami. Przedstawiane zagadnienia będą obejmowały zawansowane aspekty programowania w c++. Czytelnicy nabiorą biegłości w wykorzystaniu biblioteki standardowej STL oraz Boost. Zapoznają się z szablonami oraz metodami projektowania klas. Wszytko zostanie przedstawione na podstawie projektowania i implementacji programu do przetwarzania tekstu.</p>
<p align="justify">Poniżej zaprezentowano interfejsy jak i ich implementacja klas które będą omawiane, refaktoryzowane i stosowane podczas omawiania ww. materiału. Podstawowy szkielet aplikacji składa się z następujących plików:</p>
<p align="justify">- agencyText.cpp – zawiera kod wykonawczy programu oraz testy zaprojektowanych i zaimplementowanych interfejsów,</p>
<p align="justify">- textAgent.h oraz textAgent.cpp – interfejs oraz jego implementacja do rejestrowania i użytkowania modułu do przetwarzania tekstu,</p>
<p align="justify">- textTool.h oraz textTool.cpp – interfejs oraz jego implementacja do przetwarzania strumienia tekstowego.</p>
<p align="justify">Kod aplikacji wykorzystujący utworzone interfejsy przedstawia listing poniżej:</p>
<p><span id="more-1081"></span>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:41fb1403-7afd-4a5d-b547-7df84bad9b03" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">agencyText.cpp 

//============================================================================
// Name        : agencyText.cpp
// Author      : Marcin Mirończuk
// Version     : 1.0
// Copyright   : GPL
// Description : The agency to text retrive
//============================================================================

/**
 * Rejestracja bibliotek
 */
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &quot;textAgent.h&quot;

/**
 * Rejestracja przestrzeni nazw
 */
using namespace std;
using namespace ta;

/**
 * Program glowny
 */
int main() {

	/**
	 * Wystartowanie kilku agentow dynamicznych oraz statycznych, nazwanych jak i nienazwanych (anonimowych)
	 */
	ta::textAgent agentStatyczny(1220, 1, &quot;przetwarzacz tekstu 1&quot;, &quot;Agent T1&quot;);
	ta::textAgent niezweryfikowanyAgentStatyczny;

	textAgent *agentDynamiczny = new textAgent(12330, 2, &quot;przetwarzacz tekstu 2&quot;, &quot;Agnet T2&quot;);
	textAgent *niezweryfikowanyAgentDynamiczny = new textAgent();

	try {

		/**
		 * Pokazanie informacji o rezydujacych agentach
		 */
		cout &lt;&lt; &quot;Zarejestrowany agent i jego dane:&quot; &lt;&lt; endl;
		agentStatyczny.showData();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Agent oczekujacy na rejestracje:&quot; &lt;&lt; endl;
		niezweryfikowanyAgentStatyczny.showData();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Agent dynamiczny zarejstrowany:&quot; &lt;&lt; endl;
		agentDynamiczny-&gt;showData();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Agent dynamiczny niezweryfikowany:&quot; &lt;&lt; endl;
		niezweryfikowanyAgentDynamiczny-&gt;showData();

		cout &lt;&lt; endl;

		/**
		 * Rejestracja modulu (przybornika) do przetwarzania tekstow
		 */
		tt::textTool tt;

		/**
		 * Rejestracja przybornika dla agenta dynamicznego
		 */
		agentDynamiczny-&gt;rejestrTextTool(tt);
		agentDynamiczny-&gt;rejestrTextTool().extractSegments(&quot;Ala ma kota.&quot;);

		cout &lt;&lt; &quot;Ilosc zliczonych segmentow: &quot; &lt;&lt;  agentDynamiczny-&gt;rejestrTextTool().getCountSegments() &lt;&lt; endl;
		cout &lt;&lt; &quot;Pokaz jakie segmenty zliczyles: &quot; &lt;&lt; endl;
		agentDynamiczny-&gt;rejestrTextTool().showSegments();

		cout &lt;&lt; endl;

		/**
		 * Rejestracja przybornika dla agenta statycznego
		 */
		agentStatyczny.rejestrTextTool(tt);
		agentStatyczny.rejestrTextTool().extractSegments(&quot;A ja mam kota. I wiecej tekstu.&quot;);

		cout &lt;&lt; &quot;Ilosc zliczonych segmentow: &quot; &lt;&lt; agentStatyczny.rejestrTextTool().getCountSegments() &lt;&lt; endl;
		cout &lt;&lt; &quot;Pokaz jakie segmenty zliczyles: &quot; &lt;&lt; endl;
		agentStatyczny.rejestrTextTool().showSegments();

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Testowanie usowania spacji:&quot; &lt;&lt; endl;

		std::string testString1 = &quot; kota &quot;;
		cout &lt;&lt; &quot;- Tekst przed filtracja: &quot; &lt;&lt; testString1 &lt;&lt; endl;
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst odfiltrowany: &quot; &lt;&lt; agentStatyczny.rejestrTextTool().stripWhiteSpace(testString1) &lt;&lt; endl;
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst pierwotny &quot; &lt;&lt; testString1 &lt;&lt; endl;

		std::string *pTestString1 = &amp;testString1;
		cout &lt;&lt; &quot;- Tekst przed filtracja wskaznik / zmienna: &quot; &lt;&lt; *pTestString1 &lt;&lt; &quot; / &quot; &lt;&lt; testString1 &lt;&lt; endl;
		agentStatyczny.rejestrTextTool().stripWhiteSpace(pTestString1);
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst odfiltrowany &quot; &lt;&lt; *pTestString1 &lt;&lt; endl;
		cout &lt;&lt; &quot;- Filtracja: &quot; &lt;&lt; &quot;Tekst pierwotny &quot; &lt;&lt; testString1 &lt;&lt; endl;

		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Testowanie tokenizacji:&quot; &lt;&lt; endl;
		std::string testString2 = &quot;Ala ma kota. A kot ma na imie Ala.&quot;;
		cout &lt;&lt; &quot;- Tekst podlegajacy tokenizacji: &quot; &lt;&lt; testString2 &lt;&lt; endl;
		agentStatyczny.rejestrTextTool().tokenize(testString2);
		cout &lt;&lt; &quot;- Ilosc tokenow: &quot; &lt;&lt;  agentStatyczny.rejestrTextTool().getCountTokens() &lt;&lt; endl;
		cout &lt;&lt; &quot;- Ilosc unikatowych tokenow: &quot; &lt;&lt;  agentStatyczny.rejestrTextTool().getCountUniqueTokens();

		delete niezweryfikowanyAgentDynamiczny;
		delete agentDynamiczny;

	} catch (std::string exception) {
		cout&lt;&lt;&quot;Wyjatek: &quot;&lt;&lt; exception;

		delete niezweryfikowanyAgentDynamiczny;
		delete agentDynamiczny;
	}

	return 0;
}
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p align="justify">Interfejs agenta który rejestruje moduł do przetwarzania tekstu i za pośrednictwem którego odbywają się wszelkie modyfikacja przedstawia listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:725a234c-a108-402e-9dc0-187dcf12c1fc" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textAgent.h
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Klas modelujaca podstawowe elementy agenta do przetwarzania tekstu.
 *  Agent ma mozliwosc rejestrowania u siebie modulu do przetwarzania tekstu za omoca ktorego przetwarza tekst.
 *
 */

#include &lt;string&gt;
#include &quot;textTool.h&quot;

#ifndef TA_H_
#define TA_H_

/**
 * Definicja przestrzeni nazw
 */
namespace ta {

	/**
	 *  Definicja klasy
	 */
	class textAgent {

		/**
		 * Skladowe i metody prywatne klasy
		 */
		private:

			/**
			 * @type int timeCreate Czas w sekundach  Unix timestamp
			 */
			int timeCreate;

			/**
			 * @type float priority Priorytet agebta
			 */
			int priority;

			/**
			 * @type string task Zadanie/praca do wykonania przez agebta
			 */
			std::string task;

			/**
			 * @type string name Nazwa agenta
			 */
			std::string name;

			/**
			 * @type bool isTextTool Flaga rejestracji modulu tekstu
			 */
			bool isTextTool;

			/**
			 * @type textTool textTool Uchwyt do modulu przetwarzajacego tekst
			 */
			tt::textTool textTool;

		/**
		 * Skladowe i metody publiczne klasy
		 */
		public:

			/**
			 * Konstruktor podstawowy domyslny
			 */
			textAgent();

			/**
			 * Konstruktor rozszerzony
			 */
			textAgent(float ptimeCreate, float ppriority, std::string ptask, std::string pname);

			/**
			 * Pobranie wieku agenta
			 *
			 * @return float
			 */
			int getTimeCreate();

			/**
			 * Pobranie wagi agenta
			 *
			 * @return float
			 */
			int getPriority();

			/**
			 * Pobranie zadania agenta
			 *
			 * @return string
			 */
			std::string getTask();

			/*
			 * Pobranie nazwy agenta
			 *
			 * @return string
			 */
			std::string getName();

			/**
			 * Pokazanie danych o agencie
			 *
			 * @return void
			 */
			void showData();

			/**
			 * Rejestracja modulu do przetwarzania tekstu
			 *
			 * @return tt::textTool
			 */
			const tt::textTool &amp; rejestrTextTool(tt::textTool tt);

			/**
			 * Rejestracja, pobranie modulu do przetwarzania tekstu
			 *
			 * @return tt::textTool
			 * @thorw exception
			 */
			tt::textTool &amp; rejestrTextTool();

			/**
			 * Destruktor
			 */
			virtual ~textAgent();
	};

} /* namespace textagent */
#endif /* TA_H_ */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p align="justify">Interfejs programu (modułu) do przetwarzania strumienia danych tekstowych przedstawia listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:35864ad0-f3de-411d-9264-82aeedaee369" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textAgent.cpp
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Implementacja interfejsu agenta do przetwarzania tekstu @see textAgent.h
 *
 */

#include &lt;iostream&gt;
#include &quot;textAgent.h&quot;
#include &quot;textTool.h&quot;

namespace ta {

	textAgent::textAgent() {
		this-&gt;timeCreate = 0;
		this-&gt;priority = 0;
		this-&gt;task = &quot;unknown&quot;;
		this-&gt;name = &quot;inkognito&quot;;

		this-&gt;isTextTool = false;
	}

	textAgent::textAgent(float ptimeCreate, float ppriority, std::string ptask, std::string pname) {
		this-&gt;timeCreate = ptimeCreate;
		this-&gt;priority = ppriority;
		this-&gt;task = ptask;
		this-&gt;name = pname;

		this-&gt;isTextTool = false;
	}

	int textAgent::getTimeCreate() {
		return this-&gt;timeCreate;
	}

	int textAgent::getPriority() {
		return this-&gt;priority;
	}

	std::string textAgent::getTask() {
		return this-&gt;task;
	}

	std::string textAgent::getName() {
		return this-&gt;name;
	}

	void textAgent::showData() {
		std::cout &lt;&lt; &quot;Time create: &quot; &lt;&lt; this-&gt;timeCreate &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;Priority: &quot; &lt;&lt; this-&gt;priority &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;Name: &quot; &lt;&lt; this-&gt;name &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;Task: &quot; &lt;&lt; this-&gt;task &lt;&lt; std::endl;
	}

	const tt::textTool &amp; textAgent::rejestrTextTool(tt::textTool tt) {
		if(this-&gt;isTextTool == false) {
			this-&gt;textTool = tt;

			this-&gt;isTextTool = true;

			return this-&gt;textTool;
		} else {
			return this-&gt;textTool;
		}
	}

	tt::textTool &amp; textAgent::rejestrTextTool() {
		if(this-&gt;isTextTool == false) {
			std::string exception = &quot;Unregister text tool!&quot;;

			throw exception;
		} else {
			return this-&gt;textTool;
		}
	}

	textAgent::~textAgent() {

	}

} /* namespace ta */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p align="justify">Implementację interfejsu programu do przetwarzania tekstu zawiera listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:c82d827e-8da6-4ab1-b69c-02ae0c80cef6" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textTool.h
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Klas modelujaca modul (przybornik) do przetwarzania tekstu.
 *
 */

#include &lt;map&gt;
#include &lt;vector&gt;
#include &lt;string&gt;

#ifndef TT_H_
#define TT_H_

/**
 * Definicja przestrzeni nazw
 */
namespace tt {

	/**
	 *  Definicja klasy
	 */
	class textTool {

		/**
		 * Skladowe i metody prywatne klasy
		 */
		private:

			/**
			 * @type vector&lt;string&gt; segment Wektor segmentow
			 */
			std::vector&lt;std::string&gt; segments;

			/**
			 * @type vector&lt;string&gt; tokens Wektor tokenow (wyrazen)
			 */
			std::vector&lt;std::string&gt; tokens;

			/**
			 * @type vector&lt;string&gt; uniqueTokens Wektor unikalnych tokenow (wyrazen)
			 */
			std::vector&lt;std::string&gt; uniqueTokens;

			/**
			 * @type vector&lt;string, int&gt; tokensFrequ Tablica klucz=wartosc czestotliwosci wyrazen
			 */
			std::map&lt;std::string, int&gt; tokensFrequ;

			/**
			 * Usowanie duplikatow wyrazen z wektora wyrazen
			 *
			 * @see http://learningcppisfun.blogspot.com/2008/04/remove-duplicates-from-vector.html
			 * @see http://stackoverflow.com/questions/1041620/most-efficient-way-to-erase-duplicates-and-sort-a-c-vector
			 *
			 * @param vector&lt;string&gt; vec
			 *
			 * @return vector&lt;string&gt;
			 */
			std::vector&lt;std::string&gt; removeDuplicates(std::vector&lt;std::string&gt; vec);

		public:

			/**
			 * Domyslny konstruktor
			 */
			textTool();

			/**
			 * Wydobywanie segmentow z tekstu.
			 *
			 * @param string &amp;text
			 *
			 * @return vector&lt;string&gt;
			 */
			std::vector&lt;std::string&gt; extractSegments(const std::string &amp;text);

			/**
			 * Pobranie ilosci wydobytych segmentow z tekstu.
			 *
			 * @return int
			 */
			int getCountSegments();

			/**
			 * Pokazanie wydobytych segmentow z tekstu.
			 *
			 * @return void
			 */
			void showSegments();

			/**
			 * Usuniecie spacji z poczatku jak i z konca lancucha znakow.
			 *
			 * @param string text
			 *
			 * @return string
			 */
			std::string stripWhiteSpace(std::string text);

			/**
			 * Przeciazona wersja usuniecia spacji z poczatku jak i z konca lancucha znakow.
			 *
			 * @param string *text
			 *
			 * @return void
			 */
			void stripWhiteSpace(std::string *text);

			/**
			 * Kalkulacja, wyznaczanie macierzy czetotliwosci wystepowania wyrazen w pojedynczym dokumencie tekstowym.
			 *
			 * @param string &amp;text
			 *
			 * @return map&lt;string, int&gt;
			 */
			std::map&lt;std::string, int&gt; computeTokensFrequ(const std::string &amp;text);

			/**
			 * Tokenizacja tekstu tj. rozbicie tekstu na wektor wyrazen.
			 * @see http://oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html
			 *
			 * @param string &amp;text
			 *
			 * @return vector&lt;string&gt;
			 */
			std::vector&lt;std::string&gt; tokenize(const std::string &amp;text);

			/**
			 * Pobranie ilosci wyrazen.
			 *
			 * @return int
			 */
			int textTool::getCountTokens();

			/**
			 * Pobranie ilosci unikalnych wyrazen.
			 *
			 * @return int
			 */
			int textTool::getCountUniqueTokens();

			/**
			 * Domyslny destruktor
			 */
			virtual ~textTool();
		};

	} /* namespace tt */
#endif /* TT_H_ */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p align="justify">Implementację powyżej zaprezentowanego interfejsu programu do przetwarzania tekstu zawiera listing poniżej:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:4f751e80-2284-41fd-83cd-0e73f90c907b" class="wlWriterEditableSmartContent">
<pre class="brush: cpp; gutter: true; first-line: 1; tab-size: 4;  toolbar: false;  width: 518px; height: 439px;" style=" width: 518px; height: 439px;overflow: auto;">/*
 * textTool.cpp
 *
 *  Created on: 21-12-2011
 *  Author: Marcin Mirończuk
 *  Licenc: GPL
 *
 *  Implementacja interfejsu modulu do przetwarzania tekstu @see textTool.h
 *
 */

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;algorithm&gt;
#include &quot;textTool.h&quot;

namespace tt {

	textTool::textTool() {
	}

	/**
	 * Bardzo naiwna, prezentacyja wersji algorytmu do rozbijania tekstu na segmenty (zdania)
	 */
	std::vector&lt;std::string&gt; textTool::extractSegments(const std::string &amp;text) {

		std::string tempSegment;

		for(int i = 0; i &lt; text.length(); i++) {
			if(text[i] == '.' || text[i] == '?' || text[i] == '!') {
				tempSegment = (std::string) tempSegment;
				this-&gt;segments.push_back(this-&gt;stripWhiteSpace(tempSegment));
				tempSegment.clear();
			} else {
				tempSegment += text[i];
			}
		}

		return this-&gt;segments;
	}

	int textTool::getCountSegments() {
		return this-&gt;segments.size();
	}

	std::string textTool::stripWhiteSpace(std::string text) {

		if(text[0] == ' ') {
			text.replace(0, 1, &quot;&quot;);
		}

		if(text[text.length()-1] == ' ') {
			text.replace(text.length()-1, 1, &quot;&quot;);
		}

		return text;
	}

	void textTool::stripWhiteSpace(std::string *text) {
		std::string::iterator it;

		it = text-&gt;begin();

		if(*it == ' ') {
			text-&gt;replace(0, 1, &quot;&quot;);
		}

		it = text-&gt;end();

		if(*(it-1) == ' ') {
			text-&gt;replace(text-&gt;length()-1, 1, &quot;&quot;);
		}
	}

	void textTool::showSegments() {
		for(int i = 0; i &lt; this-&gt;segments.size(); i++) {
			std::cout &lt;&lt; this-&gt;segments[i] &lt;&lt; std::endl;
		}
	}

	std::map&lt;std::string, int&gt; textTool::computeTokensFrequ(const std::string &amp;text) {
		this-&gt;tokenize(text);
		this-&gt;removeDuplicates(this-&gt;tokens);

		std::vector&lt;std::string&gt;::iterator it;

		for (it = this-&gt;uniqueTokens.begin(); it &lt; this-&gt;uniqueTokens.end(); it++) {
		    std::cout &lt;&lt; &quot; &quot; &lt;&lt; *it;
		}

		return this-&gt;tokensFrequ;
	}

	std::vector&lt;std::string&gt; textTool::tokenize(const std::string &amp;text) {

		// Buforowany string
	    std::string buf;

	    // Wstawienie stringu z potoku
	    std::stringstream ss(text);

	    while (ss &gt;&gt; buf) {
	    	this-&gt;tokens.push_back(buf);
		}

		return this-&gt;tokens;
	}

	int textTool::getCountTokens() {
		return this-&gt;tokens.size();
	}

	int textTool::getCountUniqueTokens() {
		if(this-&gt;tokens.size() != 0 &amp;&amp; this-&gt;uniqueTokens.size() == 0) {
			this-&gt;removeDuplicates(this-&gt;tokens);

			return this-&gt;uniqueTokens.size();
		} else {
			return this-&gt;uniqueTokens.size();
		}
	}

	std::vector&lt;std::string&gt; textTool::removeDuplicates(std::vector&lt;std::string&gt; vec) {
		 std::sort(vec.begin(), vec.end());
	     vec.erase(std::unique(vec.begin(), vec.end()), vec.end());

	     this-&gt;uniqueTokens = vec;

	     return this-&gt;uniqueTokens;
	 }

	textTool::~textTool() {

	}

} /* namespace tt */
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2012/01/03/laboratoria-nr-15-program-nr-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R rozszerzenia i R paczki</title>
		<link>http://profind.pl/2011/12/15/r-rozszerzenia-i-r-paczki/</link>
		<comments>http://profind.pl/2011/12/15/r-rozszerzenia-i-r-paczki/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 18:54:08 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1075</guid>
		<description><![CDATA[Osoby zainteresowane opublikowaniem swego kodu utworzonego w R project, zarówno w czystym R jak i w postaci rozszerzeń w innych językach, na pewno zainteresują materiały na stronie http://cran.r-project.org/doc/manuals/R-exts.html. Materiały tam zebrane omawiają szczegółowo i wyczerpująco temat tworzenia własnych dodatków do R. Osobom które początkują w tym temacie polecam nieco bardziej &#8222;lżejsze&#8221; lektóry w postaci: - opracowania krok po kroku [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Osoby zainteresowane opublikowaniem swego kodu utworzonego w R project, zarówno w czystym R jak i w postaci rozszerzeń w innych językach, na pewno zainteresują materiały na stronie <a href="http://cran.r-project.org/doc/manuals/R-exts.html">http://cran.r-project.org/doc/manuals/R-exts.html</a>. Materiały tam zebrane omawiają szczegółowo i wyczerpująco temat tworzenia własnych dodatków do R. Osobom które początkują w tym temacie polecam nieco bardziej &#8222;lżejsze&#8221; lektóry w postaci:</p>
<p style="text-align: justify;">- opracowania krok po kroku jak tworzyć paczki w R <a href="http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf">http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf</a></p>
<p style="text-align: justify;">- w googlu albo <a href="http://search.carrot2.org/stable/search">http://search.carrot2.org/stable/search</a> wstukać frazę <em>Writing R Extensions </em></p>
<p style="text-align: justify;">Osobiście korzystałem z pierwszego jak i drugiego linku. Natomiast projekt który utworzyłem związany z implementacją softu do kalsyfikacji umieściłem na platformie <a href="http://r-forge.r-project.org/">http://r-forge.r-project.org/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2011/12/15/r-rozszerzenia-i-r-paczki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Artykuły</title>
		<link>http://profind.pl/2011/12/09/artykuly/</link>
		<comments>http://profind.pl/2011/12/09/artykuly/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 09:51:56 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Dziennik badań]]></category>
		<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>
		<category><![CDATA[analiza danych tekstowych]]></category>
		<category><![CDATA[analiza raportów]]></category>
		<category><![CDATA[artykuły]]></category>
		<category><![CDATA[dzielenie tekstu na segmenty]]></category>
		<category><![CDATA[dzielenie tekstu na zdania]]></category>
		<category><![CDATA[eksplroacja danych tekstowych]]></category>
		<category><![CDATA[ekstrakcja informacji]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[HSWD]]></category>
		<category><![CDATA[information extraction]]></category>
		<category><![CDATA[segmentacja tekstu]]></category>
		<category><![CDATA[segmentator regułowy]]></category>
		<category><![CDATA[segmentator regułowy tekstu]]></category>
		<category><![CDATA[SWD]]></category>
		<category><![CDATA[systemu planowania zasobów]]></category>
		<category><![CDATA[systemy wspomagania decyzji i ERP]]></category>
		<category><![CDATA[text mining]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1040</guid>
		<description><![CDATA[Na koniec roku spłynęły recenzje artykułów oddanych do czasopism. Trochę się tego nazbierało a sam rok był bardzo owocny w badania i eksperymenty, przynoszące dość zaskakujące rezultaty. Zainteresowane osoby tematyką eksploracji danych a dokładniej eksploracją danych tekstowych miło mi jest poinformować, że na ten temat będą mogły poczytać w czasopiśmie Metod Informatyki Stosowanej (http://www.pan.wi.zut.edu.pl/). Artykuł [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Na koniec roku spłynęły recenzje artykułów oddanych do czasopism. Trochę się tego nazbierało a sam rok był bardzo owocny w badania i eksperymenty, przynoszące dość zaskakujące rezultaty.</p>
<p style="text-align: justify;">Zainteresowane osoby tematyką eksploracji danych a dokładniej eksploracją danych tekstowych miło mi jest poinformować, że na ten temat będą mogły poczytać w czasopiśmie Metod Informatyki Stosowanej<em> </em>(<a href="http://www.pan.wi.zut.edu.pl/">http://www.pan.wi.zut.edu.pl/</a>). Artykuł opisujący dziedzinę eksploracji danych tekstowych wraz z jej zastosowaniem w Państwowej Straży Pożarnej PSP nosi tytuł<em> Proces i metody eksploracji danych tekstowych do przetwarzania raportów z akcji ratowniczo-gaśniczych</em> i ukarze się w numerze 4/2011 ww. czasopisma. Z tematyką tą związany jest też następny artykuł pt. <em>System informacyjny na temat sieci hydrantów dla krajowego systemu ratowniczo-gaśniczego: metoda segmentacji tekstu i jej ocena,</em> który także zostanie wydany w tym czasopiśmie i ukaże się w numerze 1/2012. W artykule tym opisano szczegółową realizację eksperymentu opisującą podział tekstu na segmenty. Zajawka tego jak i poprzedniego artykułu w postaci abstraktów dostępne są w dziale <a href="http://profind.pl/publikacje/abstrakty/">Abstrakty</a>, życzę miłej lektury.</p>
<p style="text-align: justify;">Ostatnim nadesłanym do ww. czasopisma artykuł stanowił opis projektu związanego z rozwijaną koncepcją Systemu Wspomagania Decyzji dla PSP z wykorzystaniem komponentów platformy do planowania zasobów przedsiębiorstwa ERP. Artykuł ten ukaże się pod tytułem <em>Wykorzystanie komponentów platformy ERP do budowy drugiej generacji hybrydowego systemu wspomagania decyzji dla PSP, </em>w numerze 3/2011. Również jego zajawkę można zobaczyć w dziale <a href="http://profind.pl/publikacje/abstrakty/">Abstrakty</a>.</p>
<p style="text-align: justify;">Aktualnie cały czas oczekuje na decyzje z wydawnictwa CNBOP „Bezpieczeństwo i Technika Pożarnicza” w którym umieściłem dość interesujące przemyślenia i badania z zakresu inżynierii oprogramowania jak i eksploracji i segmentacji raportów. Niestety na ich ukazanie jak i recenzje jeszcze widać trochę będzie trzeba poczekać.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2011/12/09/artykuly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R stronki</title>
		<link>http://profind.pl/2011/11/30/r-stronki/</link>
		<comments>http://profind.pl/2011/11/30/r-stronki/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 10:18:18 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>
		<category><![CDATA[R project]]></category>
		<category><![CDATA[grupowanie danych R project]]></category>
		<category><![CDATA[Pareto chart]]></category>
		<category><![CDATA[profilowanie pamięci]]></category>
		<category><![CDATA[r project]]></category>
		<category><![CDATA[R project grupowanie danych]]></category>
		<category><![CDATA[R project sorotwanie]]></category>
		<category><![CDATA[sortowanie danych R project]]></category>
		<category><![CDATA[wykres Pareto]]></category>
		<category><![CDATA[wykresy Pareto]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1014</guid>
		<description><![CDATA[Poniżej umieszczam kilka przydatnych linków do stron internetowych opisujących pewne zagadnienia które często wymagają rozwiązania lub zastosowania podczas badań wspieranych pakietem R project. Na stronach tych można uzyskać informacje na temat: - sortowania oraz grupowania danych (http://www.ats.ucla.edu/stat/r/faq/sort.htm, http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r). Przy czym pierwszy link jest także krótkim kursem wprowadzającym do R, - profilowania aplikacji napisanych w R, w [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Poniżej umieszczam kilka przydatnych linków do stron internetowych opisujących pewne zagadnienia które często wymagają rozwiązania lub zastosowania podczas badań wspieranych pakietem R project. Na stronach tych można uzyskać informacje na temat:</p>
<p style="text-align: justify;">- sortowania oraz grupowania danych (<a href="http://www.ats.ucla.edu/stat/r/faq/sort.htm">http://www.ats.ucla.edu/stat/r/faq/sort.htm</a>, <a href="http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r">http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r</a>). Przy czym pierwszy link jest także krótkim kursem wprowadzającym do R,</p>
<p style="text-align: justify;">- profilowania aplikacji napisanych w R, w szczególności tych które wymagają użycia dużych zasobów pamięci. Czasami warto wiedzieć co aktualnie rezyduje na stosie pamięci (<a href="http://developer.r-project.org/memory-profiling.html">http://developer.r-project.org/memory-profiling.html</a>, <a href="http://heuristically.wordpress.com/2010/01/04/r-memory-usage-statistics-variable/">http://heuristically.wordpress.com/2010/01/04/r-memory-usage-statistics-variable/</a>),</p>
<p style="text-align: justify;">- tworzenia wykresów Pareto informacje można znaleźć na stronie <a href="http://www.oga-lab.net/RGM2/func.php?rd_id=qcc:pareto.chart">http://www.oga-lab.net/RGM2/func.php?rd_id=qcc:pareto.chart</a> opisującej pakiet i metody które służą do tego celu.</p>
<p style="text-align: justify;">Życzę miłego korzystania z wyżej przedstawionych rozwiązań.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2011/11/30/r-stronki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R mapy i R geotagowanie</title>
		<link>http://profind.pl/2011/11/20/r-mapy-i-r-geotagowanie/</link>
		<comments>http://profind.pl/2011/11/20/r-mapy-i-r-geotagowanie/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 20:20:04 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Dziennik badań]]></category>
		<category><![CDATA[Ogólne zapiski kusownika it-yka]]></category>
		<category><![CDATA[R project]]></category>
		<category><![CDATA[geotagowanie]]></category>
		<category><![CDATA[geotagowanie r]]></category>
		<category><![CDATA[geotagowanie r project]]></category>
		<category><![CDATA[r geotagowanie]]></category>
		<category><![CDATA[r project geotagowanie]]></category>

		<guid isPermaLink="false">http://profind.pl/?p=1010</guid>
		<description><![CDATA[Ostatnio poszukiwałem rozwiązania do geotagowania. Proces ten chciałem wykonać za pomocą nie API google map dla java scriptu lecz web serwisów i r project. Podyktowane to było tym aby utrzymać jednolite rozwiązanie programistyczne tj. jednolitą platformę eksperymentalną do przetwarzania tekstów w postaci raportów zaimplementowaną w jednym języku, bez różnego rodzaju miksów. Na początku rozpatrywałem użycie PHP i Java Scriptu [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Ostatnio poszukiwałem rozwiązania do geotagowania. Proces ten chciałem wykonać za pomocą nie API google map dla java scriptu lecz web serwisów i r project. Podyktowane to było tym aby utrzymać jednolite rozwiązanie programistyczne tj. jednolitą platformę eksperymentalną do przetwarzania tekstów w postaci raportów zaimplementowaną w jednym języku, bez różnego rodzaju miksów. Na początku rozpatrywałem użycie PHP i Java Scriptu niemniej po przeszperaniu internetu natknąłem się dość ciekawe rozwiązanie dla r project. Poniżej prezentuje listę linków związanych z zastosowaniem API google map w połączeniu z r project:</p>
<p style="text-align: justify;">- <a href="http://www.r-chart.com/2010/07/maps-geocoding-and-r-user-conference.html">http://www.r-chart.com/2010/07/maps-geocoding-and-r-user-conference.html</a></p>
<p style="text-align: justify;">- <a href="http://cran.r-project.org/web/packages/RgoogleMaps/vignettes/RgoogleMaps-intro.pdf">http://cran.r-project.org/web/packages/RgoogleMaps/vignettes/RgoogleMaps-intro.pdf</a></p>
<p style="text-align: justify;">- <a href="http://cran.r-project.org/web/packages/RgoogleMaps/RgoogleMaps.pdf">http://cran.r-project.org/web/packages/RgoogleMaps/RgoogleMaps.pdf</a></p>
<p style="text-align: justify;">- <a href="http://cran.r-project.org/web/packages/RgoogleMaps/index.html">http://cran.r-project.org/web/packages/RgoogleMaps/index.html</a></p>
<p style="text-align: justify;">- <a href="http://cran.r-project.org/web/packages/gooJSON/gooJSON.pdf">http://cran.r-project.org/web/packages/gooJSON/gooJSON.pdf</a></p>
<p style="text-align: justify;">- <a href="http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf">http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf</a></p>
<p style="text-align: justify;">- <a href="http://cran.r-project.org/web/packages/plotGoogleMaps/plotGoogleMaps.pdf">http://cran.r-project.org/web/packages/plotGoogleMaps/plotGoogleMaps.pdf</a></p>
<p style="text-align: justify;">Powodzenia w stosowaniu ww. rozwiązań.</p>
]]></content:encoded>
			<wfw:commentRss>http://profind.pl/2011/11/20/r-mapy-i-r-geotagowanie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

