<?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/vi/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>https://youthdev.net/vi</link>
	<description>Good services or no service at all</description>
	<lastBuildDate>Wed, 25 Nov 2020 07:25:43 +0000</lastBuildDate>
	<language>vi</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Tuyển dụng kỹ sư Python có kinh nghiệm sử dụng FFMPEG thu nhập đến 1500$</title>
		<link>https://youthdev.net/vi/looking-for-python-engineer-with-ffmpeg-experience-up-to-1500/</link>
		<comments>https://youthdev.net/vi/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">Language</h2>
<ul class="language-chooser language-chooser-dropdown qtranxs_language_chooser" id="qtranslate--1-chooser">
<li class="lang-en"><a href="https://youthdev.net/en/category/uncategorized/feed/" hreflang="en" title="English (en)"><span>English</span></a></li>
<li class="lang-vi active"><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.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.selected = 'selected';
		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="gmap107"></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/vi/looking-for-python-engineer-with-ffmpeg-experience-up-to-1500/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tuyển vị trí kỹ sư QC &amp; QA Engineer (All Level) lương tới 28 triệu</title>
		<link>https://youthdev.net/vi/tieng-viet-tuyen-vi-tri-ky-su-qc-qa-engineer-all-level-luong-toi-28-trieu/</link>
		<comments>https://youthdev.net/vi/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[Chúng tôi đang tìm kiếm kỹ sư QC &#38; QA chịu trách nhiệm cho việc kiểm tra chất lượng của [&#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-2 widget qtranxs_widget widget-shortcode area-arbitrary"><h2 class="widgettitle">Language</h2>
<ul class="language-chooser language-chooser-dropdown qtranxs_language_chooser" id="qtranslate--1-chooser">
<li class="lang-en"><a href="https://youthdev.net/en/category/uncategorized/feed/" hreflang="en" title="English (en)"><span>English</span></a></li>
<li class="lang-vi active"><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.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.selected = 'selected';
		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>Ứng viên vui lòng gửi CV tới email: <a href="mailto:hr+engineer+web@youthdev.net">hr+engineer+web@youthdev.net</a></p>
<p>Làm việc tại Vietnam: Lầu 5 - Số 06 Tòa nhà La Bonita, 06 - 08 đường Nguyễn Gia Trí, Bình Thạnh, Hồ Chí 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="xem bản đồ" data-ct_expanded_label="ẩn bản đồ" >
                <i class='fa fa-map-marker'></i> xem bản đồ
                </div>
                <div class="ct-googleMap-container">
                <div  class="ct-googleMap" data-height="500" data-offset="0" data-location="YouthDev, lầu 5, Tòa nhà La Bonita, Số 6-8, đường Nguyễn Gia Trí, Quận Bình Thạnh, Thành phố Hồ Chí Minh, Việt Nam" data-map_draggable="true" data-map_type="HYBRID" data-zoom="17" id="gmap791"></div>
                </div>
            </div><!--END HIDEMAP!-->            </p>
<h3 class="title">Ba lý do để bạn tham gia với YouthDev</h3>
<div class="top-3-reasons">
<ul>
<li>Cơ hội để bạn có thể hiện thực hóa và ứng dụng những ý tưởng của bạn bởi vì YouthDev trẻ và luôn luôn cởi mở để lắng nghe.</li>
<li>Cơ hội làm việc ở môi trường với hơn 95% con người là kỹ sư công nghệ thông tin, nơi mà phần lớn những nhiệm vụ khác đã được tự động hóa (mở khóa cửa cũng tự động, tắt mở máy lạnh, đèn, hạ tầng cũng tự động luôn...).</li>
<li>Chúng tôi tự tin là một trong số ít những doanh nghiệp công nghệ thông tin thực thụ mà tại đó kỹ sư lập trình có thể chuyên tâm vào công việc viết logic cho mã nguồn thay gì phải giải quyết và tiếp nhận những vấn đề vô lý từ khách hàng hay phải làm những công việc nhàm chán như viết báo cáo thường nhật hoặc phải chịu trách nhiệm cho những sự yếu kém trong quá trình release sản phẩm dẫn tới những lúc làm việc xuyên đêm liên tục.</li>
</ul>
</div><!-- End Shortcoder content -->
<p>Chúng tôi đang tìm kiếm kỹ sư QC &amp; QA chịu trách nhiệm cho việc kiểm tra chất lượng của sản phẩm. Công việc ưu tiên của bạn sẽ là tập trung vào phát triển bộ test case, xây dựng test plan và thực hiện/quản lý các test suite cho mỗi version sản phẩm được release. Bạn cũng sẽ là người chịu trách nhiệm giao tiếp giữa đội ngũ phát triển sản phẩm với PO và khách hàng về kết quả của từng test suite cho mỗi phiên bản sản phẩm được công bố.</p>
<h3 class="title">KỸ NĂNG VÀ KINH NGHIỆM</h3>
<div class="experience">
<p><b>PHẢI CÓ:</b></p>
<ul>
<li>Nắm vững kiến thức về các giai đoạn kiểm thử của sản phẩm công nghệ như: Unit Test, Integration Test, Functional Test, System Test…</li>
<li>Có khả năng viết test case, test plan, quản lý các test suite và viết mô tả bug hoặc defect sau khi test.</li>
<li>Có khả năng nghiên cứu, tìm hiểu các tài liệu bằng tiếng Anh.</li>
<li>Có thể sử dụng (chúng tôi sẽ hướng dẫn) các công cụ hỗ trợ kiểm thử phần mền cho Manual test và Automation Test như Cognizant, Snaptest, selenium,&#8230;</li>
<li>Có thể sử dụng được ít nhất một ngôn ngữ lập trình để có thể vận hành automation test như: Nodejs, Java, Javascript, Python,&#8230;</li>
<li>Giao tiếp tốt với đội ngũ phát triển sản phẩm, PO và khách hàng.</li>
<li>Hiểu về cơ sở dữ liệu SQL và viết được các hàm truy vấn.</li>
</ul>
<p><b>Ưu tiên</b></p>
<ul>
<li>Có kinh nghiệm làm việc ở trị trí tương đương.</li>
<li>Có kiến thức về versioning của Gitflow.</li>
<li>Có kiến thức về phương pháp làm việc XP (Agile)</li>
<li>Có kiến thức về phần mềm quản lý công việc như là Jira, Redmine,..</li>
</ul>
<!-- Start Shortcoder content --><h3 class="title">Tại sao bạn sẽ thích nơi này</h3>
<div class="culture_description">
<ul>
<li>Ứng viên phù hợp sẽ làm việc với YouthDev để cùng phát triển các sản phẩm. Tại thời điểm hiện tại, YouthDev kết hợp giữa nhận dự án gia công và phát triển sản phẩm riêng.</li>
<li>Chúng tôi có tham vọng tìm kiếm và mong muốn được làm việc với những con người có tham vọng về phát triển sản phẩm, phát triển giải pháp kỹ thuật.</li>
<li>Làm việc tại YouthDev cũng là cơ hội để bạn có thể có cơ hội phát triển sản phẩm của chính mình.</li>
</ul>
<h3 class="title">Ứng tuyển</h3>
<p>Ứng viên vui lòng gửi CV về địa chỉ email: <a href="mailto:hr+engineer+web@youthdev.net">hr+engineer+web@youthdev.net</a></p>
<h3 class="title">Bạn vẫn còn thắc mắc?</h3>
<p>Bạn hay đặt bất cứ câu hỏi nào cho YouthDev tại fanpage <a href="http://fb.com/youthdevinc">fb.com/youthdevinc</a> hoặc gửi chúng tôi một email cho bất cứ vấn đề gì <a href="mailto:info@youthdev.net">info@youthdev.net</a>.</p>
<h3 class="title">Tin tuyển dụng vẫn còn giá trị?</h3>
<p>Bạn vẫn còn đọc được tin này tức là vẫn đang tuyển dụng nhé!</p>
</div><!-- End Shortcoder content -->
</div>
]]></content:encoded>
			<wfw:commentRss>https://youthdev.net/vi/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>(English) Performance of array vs linked-list on modern computers</title>
		<link>https://youthdev.net/vi/performance-of-array-vs-linked-list-on-modern-computers/</link>
		<comments>https://youthdev.net/vi/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[Rất tiếc, mục này chỉ tồn tại ở Tiếng Anh (Mỹ).]]></description>
				<content:encoded><![CDATA[<p class="qtranxs-available-languages-message qtranxs-available-languages-message-vi">Rất tiếc, mục này chỉ tồn tại ở <a href="https://youthdev.net/en/category/uncategorized/feed/" class="qtranxs-available-language-link qtranxs-available-language-link-en" title="English">Tiếng Anh (Mỹ)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://youthdev.net/vi/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/vi/connect-oracle-database-on-eclipse-linux-using-occi/</link>
		<comments>https://youthdev.net/vi/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 <iostream></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 <string></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">></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">&#038;</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"><<</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">></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">></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">></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">></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"><<</span> rs<span class="sy2">-</span><span class="sy1">></span>getString<span class="br0">(</span><span class="nu0">2</span><span class="br0">)</span> <span class="sy1"><<</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">&#038;</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/vi/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/vi/develop-hello-world-magento-extension/</link>
		<comments>https://youthdev.net/vi/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"><span class="sc3"><span class="re1"><?xml</span> <span class="re0">version</span>=<span class="st0">&#8220;1.0&#8221;</span><span class="re2">?></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1"><config<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"><modules<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"><bb_product<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1"><version<span class="re2">></span></span></span>1.0<span class="sc3"><span class="re1"></version<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"></bb_product<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"></modules<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1"></config<span class="re2">></span></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"><span class="sc3"><span class="re1"><?xml</span> <span class="re0">version</span>=<span class="st0">&#8220;1.0&#8221;</span><span class="re2">?></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1"><config<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"><modules<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"><Bb_Product<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1"><active<span class="re2">></span></span></span>true<span class="sc3"><span class="re1"></active<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1"><codePool<span class="re2">></span></span></span>community<span class="sc3"><span class="re1"></codePool<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"></Bb_Product<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"></modules<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1"></config<span class="re2">></span></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">
<ol class="php geshifilter-php">
<li class="li1">
<div class="de1"><span class="kw2"><?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Bb_Product_IndexController <span class="kw2">extends</span> Mage_Core_Controller_Front_Action <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1"></div>
</li>
<li class="li1">
<div class="de1">        <span class="kw2">public</span> <span class="kw2">function</span> indexAction<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="kw1">echo</span> <span class="st_h">&#8216;Hello world&#8217;</span><span class="sy0">;</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">public</span> <span class="kw2">function</span> myactionAction<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="kw1">echo</span> <span class="st_h">&#8216;Hello world, this is myaction&#8217;</span><span class="sy0">;</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">public</span> <span class="kw2">function</span> myaction2Action<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="re0">$this</span><span class="sy0">-></span><span class="me1">loadLayout</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">                <span class="re0">$this</span><span class="sy0">-></span><span class="me1">renderLayout</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</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="sy1">?></span></div>
</li>
</ol>
<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"><span class="sc3"><span class="re1"><?xml</span> <span class="re0">version</span>=<span class="st0">&#8220;1.0&#8221;</span><span class="re2">?></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1"><config<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"><modules<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"><Bb_Product<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">            <span class="sc3"><span class="re1"><version<span class="re2">></span></span></span>1.0<span class="sc3"><span class="re1"></version<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"></Bb_Product<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"></modules<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"><frontend<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"><routers<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">                <span class="sc3"><span class="re1"><bbproduct<span class="re2">></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"><use<span class="re2">></span></span></span>standard<span class="sc3"><span class="re1"></use<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">                        <span class="sc3"><span class="re1"><args<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">                                <span class="sc3"><span class="re1"><module<span class="re2">></span></span></span>Bb_Product<span class="sc3"><span class="re1"></module<span class="re2">></span></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"><frontName<span class="re2">></span></span></span>bbproduct<span class="sc3"><span class="re1"></frontName<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">                        <span class="sc3"><span class="re1"></args<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">                <span class="sc3"><span class="re1"></bbproduct<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">        <span class="sc3"><span class="re1"></routers<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1">    <span class="sc3"><span class="re1"></frontend<span class="re2">></span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1"></config<span class="re2">></span></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/vi/develop-hello-world-magento-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
