<?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>YouthDev - More than outsourcing in Vietnam &#187; UncategorizedYouthDev - More than outsourcing in Vietnam</title>
	<atom:link href="https://youthdev.net/en/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>https://youthdev.net/en</link>
	<description>Good services or no service at all</description>
	<lastBuildDate>Wed, 25 Nov 2020 07:25:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Looking for Python Engineer with FFMPEG experience up to 1500$</title>
		<link>https://youthdev.net/en/looking-for-python-engineer-with-ffmpeg-experience-up-to-1500/</link>
		<comments>https://youthdev.net/en/looking-for-python-engineer-with-ffmpeg-experience-up-to-1500/#comments</comments>
		<pubDate>Wed, 25 Nov 2020 07:22:15 +0000</pubDate>
		<dc:creator><![CDATA[Truong Hua]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://youthdev.net/?p=5071</guid>
		<description><![CDATA[We are looking for a Python Engineer responsible for managing back-end services and the interchange of data between the server and [&#8230;]]]></description>
				<content:encoded><![CDATA[<!-- Start Shortcoder content --><p><!-- Widget Shortcode --><style type="text/css">
.qtranxs_widget ul { margin: 0; }
.qtranxs_widget ul li
{
display: inline; /* horizontal list, use "list-item" or other appropriate value for vertical list */
list-style-type: none; /* use "initial" or other to enable bullets */
margin: 0 5px 0 0; /* adjust spacing between items */
opacity: 0.5;
-o-transition: 1s ease opacity;
-moz-transition: 1s ease opacity;
-webkit-transition: 1s ease opacity;
transition: 1s ease opacity;
}
/* .qtranxs_widget ul li span { margin: 0 5px 0 0; } */ /* other way to control spacing */
.qtranxs_widget ul li.active { opacity: 0.8; }
.qtranxs_widget ul li:hover { opacity: 1; }
.qtranxs_widget img { box-shadow: none; vertical-align: middle; display: initial; }
.qtranxs_flag { height:12px; width:18px; display:block; }
.qtranxs_flag_and_text { padding-left:20px; }
.qtranxs_flag span { display:none; }
#qtranslate-2 h2 {font-size:18px; display: inline-block; margin-right: 20px}
#qtranslate-2 .select2-container {width: auto}
</style>
<div id="qtranslate-2" class="widget-1 widget-first widget qtranxs_widget widget-shortcode area-arbitrary"><h2 class="widgettitle">Ngôn ngữ</h2>
<ul class="language-chooser language-chooser-dropdown qtranxs_language_chooser" id="qtranslate--1-chooser">
<li class="lang-en active"><a href="https://youthdev.net/en/category/uncategorized/feed/" hreflang="en" title="English (en)"><span>English</span></a></li>
<li class="lang-vi"><a href="https://youthdev.net/vi/category/uncategorized/feed/" hreflang="vi" title="Tiếng Việt (vi)"><span>Tiếng Việt</span></a></li>
<script type="text/javascript">
// <![CDATA[
var lc = document.getElementById('qtranslate--1-chooser');
var s = document.createElement('select');
s.id = 'qtranxs_select_qtranslate--1-chooser';
lc.parentNode.insertBefore(s,lc);

		var sb = document.getElementById('qtranxs_select_qtranslate--1-chooser');
		var o = document.createElement('option');
		var l = document.createTextNode('English');
		o.selected = 'selected';
		o.value = 'https://youthdev.net/en/category/uncategorized/feed/';
		o.appendChild(l);
		sb.appendChild(o);
		
		var sb = document.getElementById('qtranxs_select_qtranslate--1-chooser');
		var o = document.createElement('option');
		var l = document.createTextNode('Tiếng Việt');
		
		o.value = 'https://youthdev.net/vi/category/uncategorized/feed/';
		o.appendChild(l);
		sb.appendChild(o);
		s.onchange = function() { document.location.href = this.value;}
lc.style.display='none';
// ]]&gt;
</script>
</ul><div class="qtranxs_widget_end"></div>
</div><!-- /Widget Shortcode --></p>
<p>Applying by sending us your CV to: <a href="mailto:hr+engineer+web@youthdev.net">hr+engineer+web@youthdev.net</a></p>
<p>Working at Vietnam office: Lv5 - No 06 La Bonita Building, 06 - 08 D2 (Nguyen Gia Tri), Binh Thanh, Ho Chi Minh</p>
<div class="ct-googleMap--accordion" >
                <div class="ct-googleMap-header ct-u-backgroundDarkGray3 ct-u-paddingBoth40 ct-js-mapToogle text-center text-lowercase"  data-ct_collapsed_label="show map of Vietnam Office" data-ct_expanded_label="hide map of Vietnam Office" >
                <i class='fa fa-map-marker'></i> show map of Vietnam Office
                </div>
                <div class="ct-googleMap-container">
                <div  class="ct-googleMap" data-height="500" data-offset="0" data-location="Lv5, La Bonita Building, No 8, D2 street, Binh Thanh District, Ho Chi Minh City, Ho Chi Minh, Vietnam" data-map_draggable="true" data-map_type="HYBRID" data-zoom="17" id="gmap881"></div>
                </div>
            </div><!--END HIDEMAP!-->            </p>
<h3 class="title">Top 3 Reasons To Join Us</h3>
<div class="top-3-reasons">
<ul>
<li>A chance for you to take your ideas into effect as we are young and open to talk about your problems.</li>
<li>A chance for your limitless growing day by day due to working in the environment with more than 95% of people are technical engineers in which the remains roles have been automatic (open/closing door is automatic, turning off aircon, light, infrastructure is automatic...).</li>
<li>We are one of the few real technology companies in which engineers can focus to only logic developing instead of planning unplanable  or unreasonable business requirements from customers, or doing stuffs/boring works such as writing text reports or taking responsibility of everything even lacking of management that cause overnight releasing day by day.</li>
</ul>
</div><!-- End Shortcoder content -->
<p>We are looking for a Python Engineer responsible for managing back-end services and the interchange of data between the server and the users. Your primary focus will be the development of all server-side logic, definition and maintenance of the central database, and ensuring high performance and responsiveness to requests from the client sides. Therefore, a basic understanding of API technologies is necessary as well. Currently, our back-end system need some knowledge about using FFMPEG for video processing and understanding about running long processing processes and keep it stable, even few minutes downtime or interruption may not be acceptable.</p>
<h3 class="title">Your Skills and Experience</h3>
<div class="experience">
<p><strong>Must haves:</strong></p>
<ul>
<li>Strong knowledge of at least one Python web frameworks<strong>(especially Django is a plus)</strong></li>
<li>Understanding the fully synchronous behavior of Python</li>
<li>Understanding of at least few Python design patterns</li>
<li>Understanding of front-end technologies, such as JavaScript, HTML5, and CSS3</li>
<li>Knowledge of object oriented Python programming</li>
<li>Familiarity with SQL databases and their declarative query languages</li>
<li>Proficient understanding of code versioning tools, such as Git</li>
<li>Experience working with FFMPEG in Linux.</li>
</ul>
<p><strong>Nice to haves:</strong></p>
<ul>
<li>Understanding fundamental design principles behind a scalable application</li>
<li>Creating database schemes that represent and support business processes</li>
<li>Understanding CI/CD is a plus.</li>
<li>Understanding Agile process is a plus.</li>
<li>Deeply understanding about video codec or video streaming is a very big advantage.</li>
<li>Understanding Docker Swarm or Kubernetes is a plus.</li>
</ul>
<!-- Start Shortcoder content --><h3 class="title">Why You'll Love Working Here</h3>
<div class="culture_description">
<ul>
<li>A successful qualified candidate will work with YouthDev team, develop and scale current business. We are using outsourcing and solution to make revenue and reinvest into our team ideas to break the world.</li>
<li>We are looking for people who is ambitious in developing a perfect product or building perfect solutions.</li>
<li>Remember, working at YouthDev means that you are also developing a chain for your development and roadmap also.</li>
</ul>
<h3 class="title">How to apply?</h3>
<p>Please send your CV to our email at: <a href="mailto:hr+engineer+web@youthdev.net">hr+engineer+web@youthdev.net</a></p>
<h3 class="title">Still concern?</h3>
<p>Feel free to ask us some questions on our fanpage <a href="http://fb.com/youthdevinc">fb.com/youthdevinc</a> or shoot us an email at <a href="mailto:info@youthdev.net">info@youthdev.net</a>.</p>
<h3 class="title">This post is still valid?</h3>
<p>You can read it which means it is still valid!</p>
</div><!-- End Shortcoder content -->
</div>
]]></content:encoded>
			<wfw:commentRss>https://youthdev.net/en/looking-for-python-engineer-with-ffmpeg-experience-up-to-1500/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Tiếng Việt) Tuyển vị trí kỹ sư QC &amp; QA Engineer (All Level) lương tới 28 triệu</title>
		<link>https://youthdev.net/en/tieng-viet-tuyen-vi-tri-ky-su-qc-qa-engineer-all-level-luong-toi-28-trieu/</link>
		<comments>https://youthdev.net/en/tieng-viet-tuyen-vi-tri-ky-su-qc-qa-engineer-all-level-luong-toi-28-trieu/#comments</comments>
		<pubDate>Thu, 09 Jul 2020 08:48:12 +0000</pubDate>
		<dc:creator><![CDATA[Lâm Lê Tường]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://youthdev.net/?p=5065</guid>
		<description><![CDATA[Sorry, this entry is only available in Vietnamese.]]></description>
				<content:encoded><![CDATA[<p class="qtranxs-available-languages-message qtranxs-available-languages-message-en">Sorry, this entry is only available in <a href="https://youthdev.net/vi/category/uncategorized/feed/" class="qtranxs-available-language-link qtranxs-available-language-link-vi" title="Tiếng Việt">Vietnamese</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://youthdev.net/en/tieng-viet-tuyen-vi-tri-ky-su-qc-qa-engineer-all-level-luong-toi-28-trieu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance of array vs linked-list on modern computers</title>
		<link>https://youthdev.net/en/performance-of-array-vs-linked-list-on-modern-computers/</link>
		<comments>https://youthdev.net/en/performance-of-array-vs-linked-list-on-modern-computers/#comments</comments>
		<pubDate>Fri, 04 Aug 2017 10:05:29 +0000</pubDate>
		<dc:creator><![CDATA[Dat Hoang]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[cpu-cache]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[low-level]]></category>

		<guid isPermaLink="false">https://youthdev.net/?p=4844</guid>
		<description><![CDATA[Few notes The array mentioned here is automatically-reallocated array (vector in C++, ArrayList in Java or List in C#). The benchmark [&#8230;]]]></description>
				<content:encoded><![CDATA[<h4>Few notes</h4>
<p>The array mentioned here is automatically-reallocated array (vector in C++, ArrayList in Java or List in C#).</p>
<p>The benchmark graph between vector &amp; list I showed in this post belongs to &#8220;Baptiste Wicht&#8221; in <a href="http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html" target="_blank" rel="nofollow noopener">http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html</a> (Thanks for saving my time for the benchmarking stuff).</p>
<h4>From theory</h4>
<p>People say Linked-list has much better performance than array when it comes to random-insertion &amp; random-deletion. That&#8217;s what we&#8217;ve learn in theory, too.</p>
<p>And I&#8217;ve seen many people around the internet suggest to use linked-list when we need to do a lots of random-insertion &amp; random-deletion.</p>
<h4>To practice</h4>
<p><img class="center" src="https://media.licdn.com/mpr/mpr/shrinknp_800_800/AAEAAQAAAAAAAAO1AAAAJDg0NGViZmM4LWIzZDgtNDQwNS05NDc3LTgwZGUzNTUwOTg4OQ.jpg" alt="" width="489" height="316" /></p>
<p class="center"><em>&#8220;How could it be?&#8221;</em></p>
<p><img class="center" src="https://media.licdn.com/mpr/mpr/shrinknp_800_800/AAEAAQAAAAAAAAYDAAAAJGIxMTUyM2QwLTcwYmMtNDQyMC04YjlhLTQwOGZkMGQ0NjBlYw.jpg" alt="" width="510" height="322" /></p>
<p class="center">&#8220;Impossible!&#8221;</p>
<p><em>Note: The &#8220;list&#8221; above is implemented as doubly linked-list in C++. And the &#8220;vector&#8221; is implemented as automatically-reallocated array in C++.</em></p>
<p>It&#8217;s not that what people say is not true. It was once true in theory, and in those old days &#8211; when the CPU speed was too slow. But now, the context has changed, and the architecture of computers have changed. Therefore, it might not be true anymore in some situations.</p>
<p>The CPU speed on modern computers are too fast, much faster than RAM-access speed. It would take about several hundreds of CPU cycles to read from RAM (Way too slow!!!). If that&#8217;s the case, then most of the time, what the CPU do is just to sit there, drink tea, and wait for its best friend &#8211; RAM.</p>
<h4>And then, CPU caches come into play</h4>
<p>The RAM-access speed is too slow that if CPU processes data directly on RAM, 99% of CPU speed will become a waste, and we can just make use of 1% of its power. Therefore, they invented CPU cache to solve this problem. The cache memory is very fast, and is integrated directly on CPU. Its access speed is near the CPU speed. So now, instead of accessing data directly on RAM, CPU will access data on RAM indirectly through L1 cache (There are usually three levels of caches, and L1 cache is the fastest among them).</p>
<p>However, the CPU cache does not solve the problem completely. Because memory cache size is much smaller than RAM. We still need RAM as our main memory. And the CPU caches will just hold small pieces of data that is most likely to be needed by the CPU in the near future. Sometimes, the data that the CPU need to access next is not already in L1 cache (not in L2 or L3 cache, too), and it must be fetched from RAM, then the CPU will have to wait for several hundreds cycles for the data to become available (This is what we call <strong>cache miss</strong>).</p>
<p>Therefore, to reduce <strong>cache miss</strong>, when the CPU wants to access data at address <strong>x</strong> in RAM, it will not only fetch the data at address <strong>x</strong>, but also <strong>neighborhood</strong> of address <strong>x</strong>. Because we assume &#8220;if a particular memory location is referenced at a particular time, then it is likely that nearby memory locations will be referenced in the near future.&#8221;[3] (This is what we call <strong>locality of reference</strong>). So, if the data to be processed by CPU is placed right next to each others, we can make use of <strong>locality of reference</strong> and reduce <strong>cache miss</strong> (Which might cause huge performance overhead if occurs often).</p>
<h4>The problem of linked-list</h4>
<p>Unlike array which is a cache-friendly data structure because its elements are placed right next to each other, elements of linked-list can be placed anywhere in the memory. So when iterating through linked-list, it will cause a lots of <strong>cache miss</strong> (since we can&#8217;t make use of locality of reference), and introduce a lots of performance overheads.</p>
<h4>Performance of array vs linked list</h4>
<p>When we perform random-insertion or random-deletion on array, the subsequent elements needs to be moved.</p>
<p>However, when it come to a list of small elements (list of POD type, or list of pointers), the cost of moving elements around is so cheap, and much cheaper than the cost of <strong>cache misses</strong>. Therefore, most of the time, when working with a list of small data types (whatever type of operations it is: from iterating, random-insertion, random deletion to number crunching), performance of array will be much better than linked-list.</p>
<p>But when we need to work with a list of large elements ( &gt; 32 bytes), the cost of moving elements around grows up to be higher than the cost of linked-list&#8217;s &#8220;usually-happened&#8221; cache misses. Then the linked list will have better performance than array.</p>
<h4>Conclusion</h4>
<p>We should prefer array over linked-list when working with a list of small elements (a list of POD type, a list of pointers in C++ or a list of references in Java/C#).</p>
<p>And nearly most of the time, we will use array because:</p>
<ul>
<li>In C++, we don&#8217;t often store a list of large data type, but a list of pointers that point to large data type. (If we do need to store a list of large-sized class/struct and need to do a lots of random-insertion and random-deletion, then linked-list would be a better choice)</li>
<li>In Java, we&#8217;re forced to use a list of references that point to object in the heap, instead of a list of objects, because reference type are placed on the heap by default and we can just make a reference to it. (Since reference is just a managed pointer, its size is no more than 8 bytes)</li>
<li>In C#, we often use class instead of struct, so we also often have to deal with a list of references that point to object in the heap. (And if we do use struct, we don&#8217;t often create large struct since creating struct that has large size is a bad practice in C#)</li>
</ul>
<p>CPU cache plays a very important role in performance improvement of programs on modern computers.</p>
<h4>References</h4>
<ul>
<li>[1] vector vs list performance benchmark, Baptiste Wicht: <a href="http://baptiste-wicht.com/posts/2012/11/cpp-benchmark-vector-vs-list.html" target="_blank" rel="nofollow noopener">http://baptiste-wicht.com/posts/2012/11/cpp-benchmark-vector-vs-list.html</a></li>
<li>[2] C++ vector, list, deque performance benchmark, Baptiste Wicht: <a href="http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html" target="_blank" rel="nofollow noopener">http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html</a></li>
<li>[3] Locality of reference: <a href="https://en.wikipedia.org/wiki/Locality_of_reference" target="_blank" rel="nofollow noopener">https://en.wikipedia.org/wiki/Locality_of_reference</a></li>
<li>[4] Understanding CPU caching and performance, Jon Stokes: <a href="http://arstechnica.com/gadgets/2002/07/caching/" target="_blank" rel="nofollow noopener">http://arstechnica.com/gadgets/2002/07/caching/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://youthdev.net/en/performance-of-array-vs-linked-list-on-modern-computers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connect Oracle database on Eclipse Linux using OCCI</title>
		<link>https://youthdev.net/en/connect-oracle-database-on-eclipse-linux-using-occi/</link>
		<comments>https://youthdev.net/en/connect-oracle-database-on-eclipse-linux-using-occi/#comments</comments>
		<pubDate>Mon, 27 Apr 2015 02:09:15 +0000</pubDate>
		<dc:creator><![CDATA[Truong Hua]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://youthdev.net/?p=4312</guid>
		<description><![CDATA[To develop database application that use Oracle. Of course with Oracle database installed, programer must prepaire two packages provided by [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>To develop database application that use Oracle. Of course with Oracle database installed, programer must prepaire two packages provided by Oracle. One use to provide share library (*.so files) for application to run under Linux, another one is provide class header (*.h files) that programer can include in their application. We could download that two packages at <a href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html">http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html</a>, it&#8217;s called Instant Client.</p>
<p>I&#8217;m using CentOS 6.2 64 bit, so I will download <a href="http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html">Instant Client for Linux x86-64</a><span style="color: #000000; font-family: arial, helvetica, sans-serif;">, there any many packages, however, only two package we need:</span></p>
<ol>
<li>Instant Client Package &#8211; Basic: All files required to run OCI, OCCI, and JDBC-OCI applications.</li>
<li>*Instant Client Package &#8211; Basic Lite: Smaller version of the Basic, with only English error messages and Unicode, ASCII, and Western European character set support.</li>
<li>*Instant Client Package &#8211; SDK: Additional header files and an example makefile for developing Oracle applications with Instant Client.</li>
</ol>
<p>The first and second is the same, Basic Lite is smaller than Basic with fewer language support. Everyone need to choose between one of them. In my opinion, I install the first and the last packages.</p>
<ul>
<li><span style="color: #000000; font-family: arial, helvetica, sans-serif;">Instant Client Package &#8211; Basic for Linux 64 bit provide share library at <strong>/usr/lib/oracle/11.2/client64/lib</strong>, this is required libraries to run OCCI program.</span></li>
<li><span style="color: #000000; font-family: arial, helvetica, sans-serif;">Instance Client Package &#8211; SDK for Linux 64 bit provide additional header files at <strong>/usr/include/oracle/11.2/client64</strong>, this is c++ header files that we need to include in our program.</span></li>
</ul>
<p><span style="color: #000000; font-family: arial, helvetica, sans-serif;">Next step, we must tell Eclipse the path to the share libraries and the header files by: on Eclipse top menu, go to <span style="text-decoration: underline;"><em>Project/Properties/C++ General/Path and Symbols</em></span></span></p>
<p class="rtecenter"><span style="color: #000000; font-family: arial, helvetica, sans-serif;"><em><img src="https://dl.dropbox.com/s/7cl1dhlxq1qi94z/eclipse_properties_oracle_project.gif?dl=1" alt="Add Oracle OCCI  header files and libraries into eclipse" /><br />
Eclipse Path and Symbols properties.</em></span></p>
<p><span style="color: #000000; font-family: arial, helvetica, sans-serif;">To-do list:</span></p>
<ul>
<li><span style="color: #000000; font-family: arial, helvetica, sans-serif;">Add header files directory into Include tab.</span><br />
(Add <strong>/usr/include/oracle/11.2/client64</strong> into GNU C++)</li>
<li><span style="color: #000000; font-family: arial, helvetica, sans-serif;">Add libraries directory into Library Path tab.</span><br />
(Add<strong> /usr/lib/oracle/11.2/client64/lib</strong>)</li>
<li><span style="color: #000000; font-family: arial, helvetica, sans-serif;">Tell Eclipse which library that you want to link with your application by add needed libraries name into Libraries tab.<br />
In my situation, I need to add <strong>nnz11 </strong>(libnnz11.so in libraries directory), <strong>clntsh </strong>(libclntsh.so), <strong>occi </strong>(libocci.so).</span></li>
</ul>
<p class="rtecenter"><img src="https://www.dropbox.com/sh/1dxd0ef9zpewtth/DtQvmZHB_f/eclipse_libraries_oracle_occi.gif?dl=1" alt="Add OCCI libraries to Eclipse" /><br />
<em>Required OCCI libraries</em></p>
<p>We need only <strong>occi</strong> library but <strong>nnz11</strong> and <strong>clntsh</strong> is required by <strong>occi</strong>, so we need to add them first. If not, Console may be throw an error the same as:</p>
<div class="geshifilter-title">Console</div>
<div class="geshifilter">
<ol class="xml geshifilter-xml">
<li class="li1">
<div class="de1">Invoking: GCC C++ Linker</div>
</li>
<li class="li1">
<div class="de1">g++ -L&#8221;/media/Data/workspace/zie/lib/curl/lib&#8221; -L/usr/lib/oracle/11.2/client64/lib -o&#8221;zie&#8221;  ./src/zie.o  ./src/db/db.o   -locci</div>
</li>
<li class="li1">
<div class="de1">/usr/lib/oracle/11.2/client64/lib/libocci.so: undefined reference to `OCISubscriptionDisable&#8217;</div>
</li>
<li class="li1">
<div class="de1">/usr/lib/oracle/11.2/client64/lib/libocci.so: undefined reference to `ldxend&#8217;</div>
</li>
<li class="li1">
<div class="de1">/usr/lib/oracle/11.2/client64/lib/libocci.so: undefined reference to `OCIPConvertRowidToUb1&#8242;</div>
</li>
<li class="li1">
<div class="de1">&#8230;</div>
</li>
</ol>
<p><a class="hidelinenum">Hide/show line number</a></p>
</div>
<p>Additional, we need to set enviroment LD_LIBRARY_PATH = /usr/lib/oracle/11.2/client64/lib. It&#8217;s important to let our library know another. We can set this environment by append two line into <strong>~/.bash_profile</strong> file (you may need to logout and relogin after changing this file):</p>
<div class="geshifilter">
<ol class="xml geshifilter-xml">
<li class="li1">
<div class="de1">LD_LIBRARY_PATH = /usr/lib/oracle/11.2/client64/lib</div>
</li>
<li class="li1">
<div class="de1">export LD_LIBRARY_PATH</div>
</li>
</ol>
<p><a class="hidelinenum">Hide/show line number</a></p>
</div>
<p>Remember, libraries is require to run our application and header file is require for development. If we have already finish all steps, we can create a demo project that connect to oracle database.</p>
<div class="geshifilter-title">demo.cpp</div>
<div class="geshifilter">
<ol class="cpp geshifilter-cpp">
<li class="li1">
<div class="de1"><span class="co2">#include </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &#8220;occi.h&#8221;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include </span></div>
</li>
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">using</span> <span class="kw2">namespace</span> std<span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">using</span> <span class="kw2">namespace</span> oracle<span class="sy4">::</span><span class="me2">occi</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="co1">//Create new environment</span></div>
</li>
<li class="li1">
<div class="de1">        Environment <span class="sy2">*</span>env <span class="sy1">=</span> Environment<span class="sy4">::</span><span class="me2">createEnvironment</span><span class="br0">(</span>Environment<span class="sy4">::</span><span class="me2">DEFAULT</span><span class="br0">)</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">        Connection <span class="sy2">*</span>conn <span class="sy1">=</span> <span class="kw2">NULL</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1">        <span class="kw2">try</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">                string user     <span class="sy1">=</span> <span class="st0">&#8220;username&#8221;</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">                string passwd   <span class="sy1">=</span> <span class="st0">&#8220;password&#8221;</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">                string host     <span class="sy1">=</span> <span class="st0">&#8220;localhost&#8221;</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="co1">//Create new connection</span></div>
</li>
<li class="li1">
<div class="de1">                conn <span class="sy1">=</span> env<span class="sy2">-</span><span class="sy1">&gt;</span>createConnection<span class="br0">(</span>user, passwd, host<span class="br0">)</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="br0">}</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="kw2">catch</span><span class="br0">(</span>SQLException <span class="sy3">&amp;</span>e<span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="kw3">cout</span> <span class="sy1">&lt;&lt;</span> e.<span class="me1">getMessage</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="br0">}</span></div>
</li>
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1">        <span class="kw2">try</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">                Statement <span class="sy2">*</span>stmt <span class="sy1">=</span> conn<span class="sy2">-</span><span class="sy1">&gt;</span>createStatement<span class="br0">(</span><span class="st0">&#8220;SELECT * FROM my_table&#8221;</span><span class="br0">)</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">                stmt<span class="sy2">-</span><span class="sy1">&gt;</span>setPrefetchRowCount<span class="br0">(</span><span class="nu0">32</span><span class="br0">)</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">                ResultSet <span class="sy2">*</span>rs <span class="sy1">=</span> stmt<span class="sy2">-</span><span class="sy1">&gt;</span>executeQuery<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="kw1">while</span><span class="br0">(</span>rs<span class="sy2">-</span><span class="sy1">&gt;</span>next<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">                        <span class="kw3">cout</span> <span class="sy1">&lt;&lt;</span> rs<span class="sy2">-</span><span class="sy1">&gt;</span>getString<span class="br0">(</span><span class="nu0">2</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> endl<span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="br0">}</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="br0">}</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="kw2">catch</span><span class="br0">(</span>SQLException <span class="sy3">&amp;</span>e<span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1">        <span class="br0">}</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">}</span></div>
</li>
</ol>
<p><a class="hidelinenum">Hide/show line number</a></p>
</div>
<p>If build successfully, we can sure that adding libraries and header step are ok. This demo project will execute query &#8220;SELECT * FROOM my_table&#8221;.</p>
<p>Hope that help!</p>
]]></content:encoded>
			<wfw:commentRss>https://youthdev.net/en/connect-oracle-database-on-eclipse-linux-using-occi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Develop &#8220;Hello world&#8221; Magento extension</title>
		<link>https://youthdev.net/en/develop-hello-world-magento-extension/</link>
		<comments>https://youthdev.net/en/develop-hello-world-magento-extension/#comments</comments>
		<pubDate>Mon, 27 Apr 2015 02:05:37 +0000</pubDate>
		<dc:creator><![CDATA[Truong Hua]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://youthdev.net/?p=4309</guid>
		<description><![CDATA[To develop magento extension, first of all, we must understand about Magento Folder Structure. It you are doing some update [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>To develop magento extension, first of all, we must understand about Magento Folder Structure. It you are doing some update but no changing, try to disable Magento cache at <span style="text-decoration: underline;">System/Cache Management</span>.<br />
All magento extension should be place in <strong>/app/code/community</strong>. In <strong>/app/code</strong> you also see <strong>core</strong> folder, sometime may be <strong>local</strong> folder which is created by other extension. The <strong>community</strong> or <strong>local</strong> called C<em>ode Pool</em>.</p>
<p>Begining, we create our extension folder structure, if my company named Bb, and my extension name is Product, I will create the folder structure <strong>/app/code/community/Bb/Product</strong>. It&#8217;s mean our extension stay in <strong>community</strong> Code Pool and our extension is Bb_Product.</p>
<p>Store your extension information in <strong>/app/code/community/Bb/Product/etc/config.xml</strong>. The simple extension config file may be follow:</p>
<div class="geshifilter-title">config.xml</div>
<div class="geshifilter">
<ol class="xml geshifilter-xml">
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;config<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&lt;modules<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&lt;bb_product<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1">&lt;version<span class="re2">&gt;</span></span></span>1.0<span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
</ol>
<p><a class="hidelinenum">Hide/show line number</a></p>
</div>
<p>Now, our extension has it own profile, to let Magento load and control your extension, you must tell it &#8220;Heyx, load my extension please, my extension is <strong>Bb_Product</strong> in <strong>community</strong> <em>Code Pool</em>!&#8221;, so just create <strong>/app/code/etc/modules/Bb_Product.xml</strong> file:</p>
<div class="geshifilter-title">Bb_Product.xml</div>
<div class="geshifilter">
<ol class="xml geshifilter-xml">
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;config<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&lt;modules<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&lt;Bb_Product<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1">&lt;active<span class="re2">&gt;</span></span></span>true<span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1">&lt;codePool<span class="re2">&gt;</span></span></span>community<span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
</ol>
<p><a class="hidelinenum">Hide/show line number</a></p>
</div>
<p>That enough, our extension now can be loaded by Magento and you can enable or disable our extension in Admin Control Panel at <span style="text-decoration: underline;">System/Configuration/Advanced</span>.</p>
<p>The next mission is create a page that output &#8220;Hello world&#8221;. Magento is base on Zend, so Magento is MVC base. If you don&#8217;t know anything about MVC, you should try to understand it first!</p>
<p>Create IndexControler.php file in <strong>/app/code/community/Bb/Product/controllers</strong> (offcourse, create <strong>/app/code/community/Bb/Product/controllers </strong>first)</p>
<div class="geshifilter-title">IndexController.php</div>
<div class="geshifilter">
<p><a class="hidelinenum">Hide/show line number</a></p>
</div>
<p>Tell Magento know when should it use our controller, append some code into <strong>/app/code/community/Bb/Product/etc/config.xml</strong>.</p>
<div class="geshifilter-title">config.xml</div>
<div class="geshifilter">
<ol class="xml geshifilter-xml">
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;config<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&lt;modules<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&lt;Bb_Product<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1">&lt;version<span class="re2">&gt;</span></span></span>1.0<span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&lt;frontend<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&lt;routers<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">                <span class="sc3"><span class="re1">&lt;bbproduct<span class="re2">&gt;</span></span></span> <span class="sc-1"><!-- this is url path we use --></span></div>
</li>
<li class="li1">
<div class="de1">                        <span class="sc3"><span class="re1">&lt;use<span class="re2">&gt;</span></span></span>standard<span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">                        <span class="sc3"><span class="re1">&lt;args<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">                                <span class="sc3"><span class="re1">&lt;module<span class="re2">&gt;</span></span></span>Bb_Product<span class="sc3"><span class="re1">&gt;</span></span> <span class="sc-1"><!-- this is our extension name --></span></div>
</li>
<li class="li1">
<div class="de1">                                <span class="sc3"><span class="re1">&lt;frontName<span class="re2">&gt;</span></span></span>bbproduct<span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">                        <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">                <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&gt;</span></span></div>
</li>
</ol>
<p><a class="hidelinenum">Hide/show line number</a></p>
</div>
<p>You have already created Hello world magento extension. Visit our extension at:</p>
<ul>
<li>http://yourdomain.com/index.php/bbproduct/index/index (it is the same with http://yourdomain.com/index.php/bbproduct/index or http://yourdomain.com/index.php/bbproduct).<br />
You should see &#8220;Hello world&#8221; text.</li>
<li>http://yourdomain.com/index.php/bbproduct/index/myaction.<br />
This output &#8220;Hello world, this is myaction&#8221;</li>
<li>http://yourdomain.com/index.php/bbproduct/index/myaction2<br />
This action will output default Magento page template.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://youthdev.net/en/develop-hello-world-magento-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
