<?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>دست نوشته‌های یک دانشجوی آی‌تی &#187; گنو/لینوکس</title>
	<atom:link href="http://blog.itnotes.info/archives/category/gnulinux/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.itnotes.info</link>
	<description>مطالبی که ترجیح می‌دهم شما هم از آن‌ها باخبر باشید</description>
	<lastBuildDate>Thu, 09 Sep 2010 06:35:39 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>شروع برنامه‌نویسی در چهارچوب Qt ( کتاب فارسی &#8211; مهرداد مومنی )</title>
		<link>http://blog.itnotes.info/archives/434</link>
		<comments>http://blog.itnotes.info/archives/434#comments</comments>
		<pubDate>Fri, 03 Sep 2010 13:01:29 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[اخبار جدید]]></category>
		<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[پاسخ به سوالات]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/?p=434</guid>
		<description><![CDATA[سلام قبلا در همین وبلاگ تاپیکی در مورد Qt ( بخوانید کیوت ، لطفا ! ) زده بودم در اون به معرفی کتاب رسمی آموزش Qt پرداختم و مورد علاقه‌ی خیلی از دوستان قرار گرفت. در همون تاپیک به دلیل انگلیسی بودن کتاب از بنده در مورد مرجع فارسی برای کیوت خیلی زیاد سوال کردند [...]]]></description>
			<content:encoded><![CDATA[<p>سلام</p>
<p>قبلا در همین وبلاگ <a href="http://blog.itnotes.info/archives/333" target="_blank">تاپیکی در مورد Qt</a> ( بخوانید کیوت ، لطفا ! ) زده بودم در اون به معرفی کتاب رسمی آموزش Qt پرداختم و مورد علاقه‌ی خیلی از دوستان قرار گرفت. در همون تاپیک به دلیل انگلیسی بودن کتاب از بنده در مورد مرجع فارسی برای کیوت خیلی زیاد سوال کردند ( و البته فقط به همین تاپیک محدود نشد و سوالات مشابه دیگری با ایمیل دریافت کردم ) و من تنها راه رو خوندن مرجع ذکر کردم.</p>
<p>اما خبر خوب اینه که <strong>مهرداد مؤمنی</strong> که البته برای گنو/لینوکسی‌ها نیاز به معرفی نداره اما برای ویندوزی‌ها بگم که برنامه‌نویسی حرفه‌ای و با تجربه‌ی Qt و Cpp که چندین برنامه‌ی <a href="http://choqok.gnufolks.org/" target="_blank">Choqok</a> ( کلاینت میکروبلاگینگ ) ، <a href="http://blogilo.gnufolks.org/" target="_blank">Blogilo</a> ( کلاینت بلاگینگ &#8211; همین کلاینتی که باهاش دارم این مطلب رو می‌نویسم ) و <a href="http://mdic.gnufolks.org/" target="_blank">MDic</a> ( دیکشنری چندزبانه ) که همگی تحت پلتفرم کیوت ویا KDE SC نوشته شده‌اند، چندی پیش یک کتاب فارسی بسیار خوب برای شروع ( و چه عرض کنم ادامه‌ی ! ) برنامه‌نویسی کیوت منتشر کردند و از لحاظ کیفیت بسیار عالی هست.</p>
<p>متن توضیح انتشار این کتاب رو از وبلاگ ایشون می‌تونید <a href="http://mtux.wordpress.com/2010/08/31/%D8%B4%D8%B1%D9%88%D8%B9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%DA%86%D8%A7%D8%B1%DA%86%D9%88%D8%A8-qt/" target="_blank">در اینجا ببینید</a>. ( با عنوان « شروع برنامه‌نویسی در چهارچوب Qt » )</p>
<p>به قول خودش دیگه قصدش دادن یک برنامه ( یا همون ماهی ) در اختیار کاربران نیست بلکه می‌خواد به ما ماهی‌گیری رو آموزش بده و بیشتر از نیمی از این کتاب رو خوندم و چقدر خوب ماهی‌گیری رو آموزش میده. توصیه می‌کنم حتما <a href="http://linuxfm.com/book/index.php?url=Qt_Development_ver1.pdf&amp;id=1" target="_blank"><strong>همین الان دانلودش کنید</strong></a> و اگر می‌توانید برای توسعه‌اش مبلغی بپردازید. ( بعد از دانلود این کتاب می‌توانید اطلاعات لازم برای واریز مبلغ رو دریافت کنید )</p>
<p>این متن هم از پست وبلاگ خودش که توضیحی در مورد کتاب هست :</p>
<blockquote><p>کتاب مذکور در ۶۷ صفحه و مشتمل بر ۸ فصل به شرح زیر در اختیار برنامه‌نویسان علاقه‌مند قرار می‌گیرد.</p>
<ol>
<li>راه و روش Qt</li>
<li>سیگنال‌ها و اسلات‌ها در Qt</li>
<li>Containers and Iterators</li>
<li>استفاده از QMake</li>
<li>آشنایی با برنامه طراح کیوت (Qt Designer)</li>
<li>کار با پایگاه‌داده‌ها در Qt</li>
<li>بررسی چند تکنولوژی دیگر Qt</li>
<li>استفاده از مستندات مرجع Qt</li>
</ol>
<p dir="rtl">همانطور که از نام فصول مشخص است، بیشتر یک آشنایی اولیه با ابزارها و توانمندیهای کیوت در سمت دسکتاپ است.</p>
</blockquote>
<p dir="rtl">کاری ارزشمند که ارزش آن به هیچ‌وجه فقط با پول و مسائل مادی قابل جبران نیست.</p>
<p dir="rtl">آرزوی موفقیت برای همه‌ی کسانی که در راه آزادی نرم‌افزار و گسترش <a href="http://en.wikipedia.org/wiki/GNU" target="_blank">GNU</a> تلاش می‌کنند.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/434/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>خبر خوب برای دارندگان لپ‌تاپ‌های VAIO و یک هفته سر و کله زدن با openSUSE 11.3</title>
		<link>http://blog.itnotes.info/archives/427</link>
		<comments>http://blog.itnotes.info/archives/427#comments</comments>
		<pubDate>Tue, 17 Aug 2010 05:44:38 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[اخبار جدید]]></category>
		<category><![CDATA[روزنوشت]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/?p=427</guid>
		<description><![CDATA[سلام مجدد خدمت‌های دوستان عزیز. از اینکه این چند مدت نمی‌تونم پست بزنم عذرخواهی می‌کنم. شدیدا درگیر یک پروژه‌ی جدی هستم. این هفته دیگه ترس رو کنار گذاشتم و تصمیم گرفتم که یک نصب از اول openSUSE 11.3 رو انجام بدم. اما طبق معمول نمایشگر DFP یا همون Default Flat Panel لپ‌تاپ VAIOی من رو [...]]]></description>
			<content:encoded><![CDATA[<p>سلام مجدد خدمت‌های دوستان عزیز. از اینکه این چند مدت نمی‌تونم پست بزنم عذرخواهی می‌کنم. شدیدا درگیر یک پروژه‌ی جدی هستم. <a href="../wp-content/uploads/2010/08/nvidia.jpg"><img class="alignleft" title="nvidia" src="../wp-content/uploads/2010/08/nvidia.jpg" alt="" width="188" height="188" /></a></p>
<p>این هفته دیگه ترس رو کنار گذاشتم و تصمیم گرفتم که یک نصب از اول openSUSE 11.3 رو انجام بدم. اما طبق معمول نمایشگر DFP یا همون Default Flat Panel لپ‌تاپ VAIOی من رو نشناخت و صفحه کلا سیاه شد. بعد از کلی بیچارگی و غیرفعال کردن <a href="http://nouveau.freedesktop.org" target="_blank">nouveau</a> ( یا همون درایور آزاد انویدیا &#8211; بوسیله‌ی اضافه کردن خط nouveau.blacklist=true به راه‌اندازی کرنل ) اون رو نصب کردم و بعد خواستم که درایور پرینترم رو نصب کنم ( Canon LBP2900 ). با وجود اینکه درایور رو برای سیستم ۶۴ بیتی کامپایل کردم و در openSUSE 11.2 هیچ مشکلی نداشت اما در این نسخه کار نکرد ( حالا بعدا میگم که چرا !! )</p>
<p>به هر حال این مسائل باعث شد که برم به سمت <a href="http://fedoraproject.org/" target="_blank">Fedora 13</a> و اون رو امتحان کنم. نتیجه بسیار امید بخش بود. درایور nouveau که در فدورا ۱۳ بود به خوبی DFP من رو شناخت و حتی تونستم با نصب mese-dri-drivers-experimental به خوبی در گنوم کامپیز رو فعال کنم. البته جای ذکر هست که این درایور در KDE کار نکرد و نتونست Compositing رو فعال کنه. در مورد این درایور بگم که هنوز جای کار داره. در طی تست چند ساعته که در گنوم ( البته با کامپیز فعال ) انجام دادم، مثل پخش موسیقی و یک فیلم بسیار با کیفیت ( مثل <a href="http://www.bigbuckbunny.org" target="_blank">BigBuckBunny</a> بعدا حتما یک پست در مورد این فیلم جالب خواهم نوشت ) و یکی دو بازی، بیشتر از ۳ بار کل X کرش کرد و حتی نمی‌تونستم وارد شل بشم ! پس فدورا ۱۳ رو هم بیخیال شدم.</p>
<p>اما از این فدورا ۱۳ یک نتیجه خیلی جالب گرفتم : اگر فدورا ۱۳ بتونه DFP من رو شناسایی کنه و چون nouveau کدباز هست پس حتما در nvidia استفاده میشه. و خیلی سریع به یاد درایورهای جدید انویدیا یعنی ۲۵۶ برای لینوکس افتادم ! البته من قبلا هم از این درایور استفاده می‌کردم اما چون عادت کرده بودم که به صورت دستی DFP رو به xorg.conf بدم ، اصلا بدون CustomEDID امتحانش نکرده بودم و حالا وقتش رسیده بود. فدورا رو پاک کردم و openSUSE 11.3 amd64 رو نصب کردم.</p>
<p>و حالا <strong>خبر خوب برای دارندگان لپ‌تاپ‌های VAIO اینکه DFP من در درایور رسمی nVidia نسخه‌ی ۲۵۶٫۴۴ بدون هیچ مشکلی شناسایی شد ! </strong>تنها مشکلی که وجود داره ( البته فعلا ) عدم تنظیم backlight هست که شاید برای بسیاری این مشکل هم حل شده باشد. این برای اولین بار هست که می‌تونم از طریق کنترل پنل انویدیا لپ‌تاپ وصل شده به یک پروژکتور رو تنظیم و فعال کنم ! ( خیلی هیجان انگیزه !! <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ) البته قبلا با دردسر زیاد با استفاده از sax2 این کار رو انجام می‌دادم !</p>
<p><span id="more-427"></span></p>
<p>و اما در مورد درایور پرینتر ، درایور رو در فدورا ۱۳ قبلا امتحان کردم و به خوبی جواب داد و چون نسخه‌ی CUPS اون با openSUSE 11.3 باهم تفاوت زیادی نداشت ( یه نسخه‌ی کوچک ! ) پس مطمئن شدم که مشکل از توزیع من نیست بلکه من دارم بد کامپایل می‌کنم و یا makefile اون یه مشکلی داره. و با نگاه کردن به مسیر /usr/lib/cups دیدم که backend موردنیاز درایور کانن ( که ccp است ) در اونجا قرار نداره ( چون بقیه‌ی backendهای HP و غیره اونجا بودن ! )‌ و اشتباها به مسیر /usr/lib64/cups کپی شدن. و CUPS برای دیدن محتویات Libraryها و Backendها این پوشه رو اصلا نگاه نمی‌کنه ( هر چند عجیبه چون ناسلامتی من توزیع ۶۴ بیتی دارم ) و با کپی دایرکتوری‌های filter و backend که در lib64/cups بودند به lib/cups مشکل درایورهای کانن هم به خوبی حل شد.</p>
<p>و اکنون بهترین توزیعی که تجربه کردم رو دارم !</p>
<p>امیدوارم تجربه‌ی من براتون مفید بوده باشه.</p>
<p>ــــــــــــــــــــــــــــــــــــــــــــــ</p>
<p>پ.ن۱ : درایور جدید Canon یعنی CAPT 1.90 برای پرینترهای LBP منتشر شده و می‌تونید <a href="http://software.canon-europe.com/products/0010177.asp" target="_blank">از این آدرس دانلود کنید</a>.</p>
<p>پ.ن۲ : من هم‌اکنون درایورهای ۶۴ بیتی کامپایل شده توسط خودم رو دارم. اگر کسی خواست ، براتون تو همین پست می‌زارم.</p>
<p style="text-align: right;">آرزوی موفقیت.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/427/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ITLPoll Version 3.1 Snapshot</title>
		<link>http://blog.itnotes.info/archives/420</link>
		<comments>http://blog.itnotes.info/archives/420#comments</comments>
		<pubDate>Fri, 23 Jul 2010 06:02:48 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[ITLPoll]]></category>
		<category><![CDATA[اخبار جدید]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/?p=420</guid>
		<description><![CDATA[خوب دوستان وقتی من کمتر پست می‌زنم یا در حال درس خوندنم و یا در حال توسعه‌ی ITLPoll. همون‌طور که قول داده بودم ، سعی کردم تا امکان فعال کردن بیش از چند نظرسنجی به طور همزمان رو برای سیستم فراهم کنم. در ابتدا واقعا غیرممکن به نظر می‌رسید. چون در ابتدای نوشتن این برنامه [...]]]></description>
			<content:encoded><![CDATA[<p>خوب دوستان وقتی من کمتر پست می‌زنم یا در حال درس خوندنم و یا در حال توسعه‌ی ITLPoll. </p>
<p>همون‌طور که <a href="http://blog.itnotes.info/archives/387" target="_blank">قول داده بودم</a> ، سعی کردم تا امکان فعال کردن بیش از چند نظرسنجی به طور همزمان رو برای سیستم فراهم کنم. در ابتدا واقعا غیرممکن به نظر می‌رسید. چون در ابتدای نوشتن این برنامه اصلا همچین هدفی رو نداشتم. ولی این کار رو کردم و این نسخه در مراحل بسیار ابتدایی هست و کار زیادی برای رسیدن به مرحله‌ی نهایی داره. ولی سعی می‌کنم که نسخه‌ی آلفا یا نهایتا بتا رو برای تست براتون بزارم : </p>
<p><img src="http://blog.itnotes.info/wp-content/uploads/2010/07/end_user-ITLPoll-3.1.png" alt="EndUser" /></p>
<p><span id="more-420"></span>
<p><img src="http://blog.itnotes.info/wp-content/uploads/2010/07/end_user-image-ITLPoll-3.2.png" alt="EndUser-Image" /></p>
<p>از دوستانی که که پیشنهادهایی برای ویژگی‌های بهتر دارن ، درخواست می‌کنم که در این پست مطرح کنند و یا برام میل کنند. </p>
<p>موفق باشید.</p>
<p>=-=-=-=-=<br/><i>Powered by <b><a href='http://blogilo.gnufolks.org/'>Blogilo</a></b></i></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/420/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>نسخه نهایی OpenSUSE 11.3 منتشر شد</title>
		<link>http://blog.itnotes.info/archives/412</link>
		<comments>http://blog.itnotes.info/archives/412#comments</comments>
		<pubDate>Thu, 15 Jul 2010 19:13:12 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[اخبار جدید]]></category>
		<category><![CDATA[روزنوشت]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/archives/412</guid>
		<description><![CDATA[خوب دوستان عزیز پس از ۶ ماه انتظار نسخه‌ی نهایی OpenSUSE یعنی ۱۱.۳ هم منتشر شد. از مهم‌ترین ویژگی‌های این نسخه می‌توان به پشتیبانی از NetBook ( البته قبلا هم وجود داشت ! ) با استفاده از KDE 4.4.4 و پشتیبانی از گوشی‌های هوشمند موجود مثل iPhone و Android و BlackBerry و پردازش ابری قوی [...]]]></description>
			<content:encoded><![CDATA[<p>خوب دوستان عزیز پس از ۶ ماه انتظار نسخه‌ی نهایی OpenSUSE یعنی ۱۱.۳ هم <a href="http://news.opensuse.org/2010/07/15/opensuse-11-3-is-here/" target="_blank">منتشر شد</a>.</p>
<p style="text-align: center;"><a href="http://blog.itnotes.info/wp-content/uploads/2010/07/opensuse-113-is-here.jpg"><img class="size-medium wp-image-413 aligncenter" title="opensuse-113-is-here" src="http://blog.itnotes.info/wp-content/uploads/2010/07/opensuse-113-is-here-300x150.jpg" alt="" width="300" height="150" /></a></p>
<p>از مهم‌ترین ویژگی‌های این نسخه می‌توان به پشتیبانی از NetBook ( البته قبلا هم وجود داشت ! ) با استفاده از KDE 4.4.4 و پشتیبانی از گوشی‌های هوشمند موجود مثل iPhone و Android و BlackBerry و پردازش ابری قوی و سریعتر اشاره کرد. برای دیدن کامل ویژگی‌ها <a href="http://wiki.opensuse.org/Product_highlights" target="_blank">به اینجا</a> مراجعه کنید.</p>
<p>و توصیه می‌کنم حتما نسخه‌ی DVD را <a href="http://software.opensuse.org/" target="_blank">دانلود کنید</a> ( و یا سفارش دهید ) چون همزمان هر ۴ محیط گرافیکی دسکتاپ رو خواهید داشت ( GNOME, KDE, Xfce, LXDE )</p>
<p>و من در انتظار آماده شدن DVD ها در فروشگاه‌های گنو/لینوکس فارسی &#8230;. <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/412/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL, MYSQL, mysql این‌ها یکسان نیستند !</title>
		<link>http://blog.itnotes.info/archives/409</link>
		<comments>http://blog.itnotes.info/archives/409#comments</comments>
		<pubDate>Wed, 07 Jul 2010 12:58:41 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[پایگاه داده‌ها]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/?p=409</guid>
		<description><![CDATA[بنده شخصا به به‌کار بردن لغات به‌صورت درست و پایه‌ای اعتقاد زیادی دارم. بعد از برگشت به خونه برای تعطیلات تابستان ، کتاب مبانی کار با MySQL نوشته‌ی Matthew Stucky و ترجمه‌ی مهندس سعید هراتیان از گروه مهندسی پژوهشی ساحر و انتشارات روزنه ( به این میگن یک معرفی کتاب خوب ! ) رو از [...]]]></description>
			<content:encoded><![CDATA[<p>بنده شخصا به به‌کار بردن لغات به‌صورت درست و پایه‌ای اعتقاد زیادی دارم. بعد از برگشت به خونه برای تعطیلات تابستان ، کتاب مبانی کار با MySQL نوشته‌ی Matthew Stucky و ترجمه‌ی مهندس سعید هراتیان از گروه مهندسی پژوهشی ساحر و انتشارات روزنه ( به این میگن یک معرفی کتاب خوب ! <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) رو از میان کتابای قدیمی پیدا کردم.</p>
<p><img class="alignleft" src="http://blog.itnotes.info/wp-content/uploads/2010/07/mysql_logo.jpg" alt="MySQL Logo" /></p>
<p>در این کتاب به طور خوب و اصولی به بررسی MySQL و نحوه‌ی برنامه‌نویسی با زبان C و طراحی محیط گرافیکی با +GTK پرداخته است. در واقع می‌تونم بگم که تنها کتاب ترجمه شده‌ای بوده که تا حالا دیدم و به طور کامل به بررسی طراحی GTK پرداخته و در اون به توضیح Glade در گنوم هم پرداخته. ( اگرچه اصل هدف کتاب کار با MySQL هست )</p>
<p>جایی از کتاب وجود داره که یادم میاد هربار که این کتاب رو می‌خوندم توجهم بهش جلب میشد و تا حالا هر وقت خواستم که از این پایگاه داده نام ببرم بین این ۳ تا طرز نوشتن تفاوت قایل شدم و پیشنهاد می‌کنم شما هم درنظرشون بگیرید :</p>
<ol>
<li>MySQL یک پایگاه داده‌ی عمومی است. یعنی کل بسته‌ی نرم‌افزاری ( یعنی وقتی می‌خواهید از کل نرم‌افزار نام ببرید از طرز نوشتن استفاده می‌کنیم )</li>
<li>MYSQL یک ساختار API در C است که برای اداره‌ی یک اتصال به یک پایگاه داده استفاده می‌شود. ( یعنی وقتی که تابع mysql_connect رو فراخوانی می‌کنید از این نوع متغیر در C استفاده می‌کنیم )</li>
<li>mysql یک بسته‌ی سرویس‌گیرنده است. ابزاری که برای برقراری ارتباط با یک سرویس‌دهنده MySQL از طریق خط فرمان بکار می‌برید. mysql همچنین نام پایگاه‌داده‌ای است که اطلاعات سیستم را ذخیره می‌کند ( آنچه در پایگاه داده‌های دیگر sysobject یا systables نامیده می‌شوند )</li>
</ol>
<p>پس همان‌طور که می‌بینید وقتی که با یک برنامه‌نویس با تجربه از طریق متن حرف می‌زنید ممکنه از حرف شما برداشت کاملا متفاوتی داشته باشد. مثلا mysql server کاملا غلطه ! و بایستی به صورت MySQL Server نوشته بشه تا معنای درست رو منتقل بکنه. یا وقتی که می‌گویید « mysql را راه‌اندازی کرده‌ام » ، ممکن است فردی به اینکه دستور mysql در خط فرمان را اجرا کرده باشید ، متوجه شده باشد ، در حالی که منظور شما راه‌اندازی پایگاه داده‌ی MySQL بوده است.</p>
<p>امیدوارم اگه تا حالا از این طرز نوشتن درست استفاده نکرده‌اید ، از این به بعد ازش استفاده کنید.</p>
<p>آرزوی موفقیت.</p>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/409/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP-GTK آن روی دیگر PHP ( شدیدا به‌روز شد ! به همراه معرفی Site Fusion )</title>
		<link>http://blog.itnotes.info/archives/394</link>
		<comments>http://blog.itnotes.info/archives/394#comments</comments>
		<pubDate>Sat, 03 Jul 2010 14:08:55 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/archives/394</guid>
		<description><![CDATA[اگر تا حالا فکر می‌کردید که PHP فقط یک زبان سمت سرور ساده ( و نهایتا پیچیده !! ) هست ، اشتباه کردید. اشتباه شما در قسمت «سمت سرور یا Server Side» فرض کردن PHP بوده است. PHP برخلاف هدف خود ( که همون اسکریپت‌نویسی سمت سرور باشه ) میتونه به خوبی در سمت کلاینت [...]]]></description>
			<content:encoded><![CDATA[<p>اگر تا حالا فکر می‌کردید که PHP فقط یک زبان سمت سرور ساده ( و نهایتا پیچیده !! ) هست ، اشتباه کردید. اشتباه شما در قسمت «سمت سرور یا Server Side» فرض کردن PHP بوده است. PHP برخلاف هدف خود ( که همون اسکریپت‌نویسی سمت سرور باشه ) میتونه به خوبی در سمت کلاینت کاربرد داشته باشه.</p>
<p>اگر با GTK آشنا نیستید ، حتما <a href="http://en.wikipedia.org/wiki/GTK%2B" target="_blank">این صفحه‌ی ویکیپدیا</a> رو بخونید. اگر حوصله ندارید ، من کار رو براتون آسون می‌کنم یه توضیحاتی میدم. GTK مخفف کلمات GIMP ToolKit می‌باشد ( به همین راحتی !! ). خوب اگر کاربر گنو/لینوکس باشید ، امکان نداره با برنامه‌ی دستکاری تصاویر <a href="http://www.gimp.org/" target="_blank">GIMP</a> آشنا نباشید. ( برای توضیح ویندوزی‌ها یه چیزی شبیه فتوشاپ. البته فتوشاپ باید بره جلو و بوق بزنه !! :دی ) یعنی درواقع GTK برای نوشتن GIMP توسعه داده شد که البته بوسیله‌ی <a href="http://library.gnome.org/devel/glib/" target="_blank">Glib</a> و دیگر کتابخانه‌هایی که با C نوشته شدند فریم‌ورک قوی +GTK یا جی‌تی‌کی‌پلاس رو بوجود آوردند.</p>
<p>معمولا برنامه‌های مبتنی بر +GTK رو با C می‌نویسن ولی به سایر زبان‌های برنامه‌نویسی هم Bindingهایی انجام شده که یکی از اون‌ها <a href="http://www.php.net" target="_blank">PHP</a> است. شما می‌تونید با استفاده از PHP برنامه‌های گرافیکی سمت کاربر بنویسید. که البته بسیار راحت‌تر و ساده‌تر از C خواهد بود چرا که اولا با توابع غنی و بسیار راحت PHP می‌تونید کد بزنید و ثانیا دیگه قواعد دست و پا گیر C مثل اشاره‌گرها و حتی مشخص کردن انواع متغیرها رو ندارید !</p>
<p>البته خودم هم تازه دارم شروع می‌کنم که با PHP در GTK برنامه بنویسم ولی برای تست دو نمونه رو در گنو/لینوکس و ویندوز اجرا کردم که براتون میزارم.</p>
<p>قبل از هر چیز بایستی <a href="http://gtk.php.net" target="_blank">PHP-GTK</a> رو روی سیستم‌عامل خودتون نصب کنید. روی <strong>گنو/لینوکس</strong> کافیه که بسته‌ی php-gtk یا php5-gtk رو نصب کنید ( ممکنه یه‌سری dependency داشته باشه ) و یا اگه می‌خواید از سورس نصب کنید ، <a href="http://gtk.php.net/manual/en/tutorials.installation.linux.php" target="_blank">اینجا رو ببینید</a>. برای نصب در <strong>ویندوز</strong> خیلی راحته. فقط کافیه <a href="http://gtk.php.net/do_download.php?download_file=php-gtk-2.0.1-win32-nts.zip" target="_blank">فایل باینری</a> رو از اینجا بگیرید. بعد فایل رو Extract کنید و داخل یکی از درایوهاتون بریزید. حتی نیازی به دانلود خود PHP هم ندارید و یک نسخه به صورت پیشفرض داخلش هست. کافیه مثالی که در ادامه بحث می‌کنم رو داخل این پوشه بریزید و php filename.php رو بزنید. برای نصب در MacOSX <a href="http://gtk.php.net/manual/en/tutorials.installation.macosx-stepbystep.php" target="_blank">اینجا رو ببینید</a>.</p>
<p>(بقیه در ادامه‌ی مطلب)</p>
<p><span id="more-394"></span></p>
<p>و اما یک مثال ساده :</p>
<p>من به هیچ وجه بر روی GTK Design مسلط نیستم پس به بررسی کدهای GTK نمی‌پردازم و فقط می‌خوام یک نمونه بهتون نشون بدم که علاقه‌مند بشید. احتمالا در آینده سعی می‌کنم کدهای بیشتری براتون بزارم و البته همراه با توضیح کامل.</p>
<p style="text-align: right;">البته این مثال از Documentation خود PHP-GTK گرفته شده است. اسم مثال هست Hello World Advanced :</p>
<blockquote>
<p style="text-align: left; direction: ltr;">#! /usr/bin/php<br />
&lt;?php<br />
/**<br />
*   Here we create a login window.<br />
*   It has a username and a password field, and a<br />
*   Cancel and Login button. Some error checking<br />
*   is being done when the user clicks &#8220;Login&#8221;.<br />
*/<br />
if (!class_exists(&#8216;gtk&#8217;)) {<br />
die(&#8220;Please load the php-gtk2 module in your php.ini\r\n&#8221;);<br />
}<br />
/**<br />
*   This function gets called as soon as the user<br />
*   clicks on the Login button.<br />
*<br />
*   @param GtkWindow $wnd           The login window, needed to close it<br />
*                                    when all is ok<br />
*   @param GtkEntry $txtUsername    The username text field, used to get<br />
*                                    the username<br />
*   @param GtkEntry $txtPassword    The password widget to retrieve the<br />
*                                    password<br />
*/<br />
function login(GtkWindow $wnd, GtkEntry $txtUsername, GtkEntry $txtPassword)<br />
{<br />
//fetch the values from the widgets into variables<br />
$strUsername = $txtUsername-&gt;get_text();<br />
$strPassword = $txtPassword-&gt;get_text();<br />
//Do some error checking<br />
$errors = null;<br />
if (strlen($strUsername) == 0) {<br />
$errors .= &#8220;Username is missing.\r\n&#8221;;<br />
}<br />
if (strlen($strPassword) == 0) {<br />
$errors .= &#8220;No password given.\r\n&#8221;;<br />
}<br />
if ($errors !== null) {<br />
//There was at least one error.<br />
//We show a message box with the errors<br />
$dialog = new GtkMessageDialog($wnd, Gtk::DIALOG_MODAL,<br />
Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, $errors);<br />
$dialog-&gt;set_markup(<br />
&#8220;The following errors occured:\r\n&#8221;<br />
. &#8220;&lt;span foreground=&#8217;red&#8217;&gt;&#8221; . $errors . &#8220;&lt;/span&gt;&#8221;<br />
);<br />
$dialog-&gt;run();<br />
$dialog-&gt;destroy();<br />
} else {<br />
//No error. You would need to hide the dialog now<br />
//instead of destroying it (because when you destroy it,<br />
//Gtk::main_quit() gets called) and show the main window<br />
$wnd-&gt;destroy();<br />
}<br />
}<br />
//Create the login window<br />
$wnd = new GtkWindow();<br />
$wnd-&gt;set_title(&#8216;Login&#8217;);<br />
//Close the main loop when the window is destroyed<br />
$wnd-&gt;connect_simple(&#8216;destroy&#8217;, array(&#8216;gtk&#8217;, &#8216;main_quit&#8217;));<br />
//Set up all the widgets we need<br />
$lblCredit   = new GtkLabel(&#8216;Please provide your data&#8217;);<br />
//The second parameter says that the underscore should be parsed as underline<br />
$lblUsername = new GtkLabel(&#8216;_Username&#8217;, true);<br />
$lblPassword = new GtkLabel(&#8216;_Password&#8217;, true);<br />
$txtUsername = new GtkEntry();<br />
$txtPassword = new GtkEntry();<br />
$btnLogin    = new GtkButton(&#8216;_Login&#8217;);<br />
$btnCancel   = new GtkButton(&#8216;_Cancel&#8217;);<br />
//Which widget should be activated when the<br />
// mnemonic (Alt+U or Alt+P) is pressed?<br />
$lblUsername-&gt;set_mnemonic_widget($txtUsername);<br />
$lblPassword-&gt;set_mnemonic_widget($txtPassword);<br />
//Hide the password<br />
//$txtPassword-&gt;set_invisible_char(&#8216;*&#8217;);<br />
//Destroy the window when the user clicks Cancel<br />
$btnCancel-&gt;connect_simple(&#8216;clicked&#8217;, array($wnd, &#8216;destroy&#8217;));<br />
//Call the login function when the user clicks on Login<br />
$btnLogin-&gt;connect_simple(&#8216;clicked&#8217;, &#8216;login&#8217;, $wnd, $txtUsername, $txtPassword);<br />
//Lay out all the widgets in the table<br />
$tbl = new GtkTable(3, 2);<br />
$tbl-&gt;attach($lblCredit, 0, 2, 0, 1);<br />
$tbl-&gt;attach($lblUsername, 0, 1, 1, 2);<br />
$tbl-&gt;attach($txtUsername, 1, 2, 1, 2);<br />
$tbl-&gt;attach($lblPassword, 0, 1, 2, 3);<br />
$tbl-&gt;attach($txtPassword, 1, 2, 2, 3);<br />
//Add the buttons to a button box<br />
$bbox = new GtkHButtonBox();<br />
$bbox-&gt;set_layout(Gtk::BUTTONBOX_EDGE);<br />
$bbox-&gt;add($btnCancel);<br />
$bbox-&gt;add($btnLogin);<br />
//Add the table and the button box to a vbox<br />
$vbox = new GtkVBox();<br />
$vbox-&gt;pack_start($tbl);<br />
$vbox-&gt;pack_start($bbox);<br />
//Add the vbox to the window<br />
$wnd-&gt;add($vbox);<br />
//Show all widgets<br />
$wnd-&gt;show_all();<br />
//Start the main loop<br />
Gtk::main();<br />
?&gt;</p>
</blockquote>
<p>البته من Mac OS X نداشتم که روش اجرا کنم. ولی اجرای این برنامه رو در شکل زیر می‌بینید :</p>
<p>در گنو/لینوکس :</p>
<p style="text-align: center;"><img class="aligncenter" src="http://blog.itnotes.info/wp-content/uploads/2010/07/php-gtk_Linux.png" alt="PHP-GTK in GNU/Linux" /></p>
<p>در ویندوز :</p>
<p style="text-align: center;"><img class="aligncenter" src="http://blog.itnotes.info/wp-content/uploads/2010/07/php-gtk_windows.png" alt="PHP-GTK in Windows" /></p>
<p>یه توضیح کوچیک در مورد کد ( که بعدا نگید چیزی بلد نبود !! :دی ) :</p>
<p>هر چند داخل کد توضیح کامل داده شده است ( یا داخل documentation ) ولی قبل از هرچیز شما باید یک GtkWindow درست کنید و بعد GtkLabel و یا GtkButtonیی که می‌خواید رو به اون اضافه کنید. و همون طور که احتمالا متوجه شده‌اید ، GTK هم مانند <a href="http://blog.itnotes.info/archives/333" target="_blank">Qt</a> از متد Signal و Slot استفاده می‌کنه . البته تا جایی که من فهمیدم دیگه Slot نداریم و خود تابعی که Signal رو می‌گیره همه‌ی کارها رو انجام میده. طبعا با استفاده از متد connect_simple هم می‌تونیم شی مورد نظر رو به تابع گیرنده متصل کنیم.</p>
<p><strong>نکته‌ی جالب</strong> دیگه اینکه کار به اینجا ختم نمی‌شود بلکه شما می‌توانید فایل‌های طراحی محیط گرافیکی رو با <a href="http://glade.gnome.org/" target="_blank">GLADE</a> انجام بدید و فایل XML رو به خورد PHP بدید تا اون براتون درست کنه ! با استفاده از شی GladeXML و فراخوانی فایل.</p>
<p><strong>&#8212; به روز رسانی &#8211;</strong> :</p>
<p>خوب من با Glade هم تست کردم. البته قبلش یک متن فارسی توی کد اصلی نوشتم ولی یکم نگران شدم چون فارسی رو نمایش نمی‌داد ( با یونیکد مشکل داشت ). ولی وقتی با Glade یه نمونه درست کنید خودش کارها رو درست می‌کنه.</p>
<p>برای مثال من <a href="http://pastebin.com/4Qv50v7Q" target="_blank">این فایل</a> رو با Glade درست کردم ( از درهم و برهم بودن معذرت می‌خوام ! :دی ) و بعد در لینوکس بدون هیچ‌گونه مشکلی به صورت زیر اجرا شد ( البته ممکنه توزیع شما شامل LibGlade نباشه پس باید نصبش کنید ! ) :</p>
<p style="text-align: center;"><a href="http://blog.itnotes.info/wp-content/uploads/2010/07/php-gtk-glade_Linux.png"><img class="size-medium wp-image-399 aligncenter" title="php-gtk-glade_Linux" src="http://blog.itnotes.info/wp-content/uploads/2010/07/php-gtk-glade_Linux-300x231.png" alt="" width="300" height="231" /></a></p>
<p>ولی در ویندوز یه مقدار مشکل وجود داره. و اونم PHP-GTK Extensionها رو باید نصب کنید. <a href="http://gtk.php.net/do_download.php?download_file=php-gtk-2.0.1-win32-extensions.zip" target="_blank">از این آدرس</a> بگیرید. بعدا Extract کنید و در همون پوشه‌ی قبلی که php-gtk رو Extract کرده‌بودید ، کپی کنید و احیانا فایل‌های مشابه رو overrride کنید. حالا باید فایل php-cli.ini رو ویرایش کنید و PHP-GTK Extension رو از حالت غیرفعال دربیارید ( سمی کالون اولش رو بردارید ). و بعد به راحتی برنامه اجرا میشه ! به صورت زیر :</p>
<p style="text-align: center;"><a href="http://blog.itnotes.info/wp-content/uploads/2010/07/php-gtk-glade_Windows.png"><img class="size-medium wp-image-400 aligncenter" title="php-gtk-glade_Windows" src="http://blog.itnotes.info/wp-content/uploads/2010/07/php-gtk-glade_Windows-300x231.png" alt="" width="300" height="231" /></a></p>
<p>فایل PHP که استفاده می‌کنید خیلی خیلی راحته. فقط دو خط ساده است !</p>
<blockquote>
<p style="text-align: left; direction: ltr;">#! /usr/bin/php<br />
&lt;?php<br />
$glade = new GladeXML(&#8216;./test2.glade&#8217;);<br />
Gtk::main();<br />
?&gt;</p>
</blockquote>
<p>فایل تصویری که استفاده کردم <a href="http://blog.itnotes.info/wp-content/uploads/2009/12/funny_tux.png" target="_blank">اینه.</a> پس می‌بینید که خیلی خیلی راحته. من بیشتر هم بر روش کار می‌کنم !</p>
<p>پس فعلا ! <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>&#8212; به روز رسانی دوم &#8212; : </strong></p>
<p>با توجه به مطلبی که حسن عزیز <a href="http://blog.itnotes.info/archives/394#comment-446" target="_self">در قسمت نظرات همین مطلب</a> نوشتند ، برنامه‌ای به نام <a href="http://www.sitefusion.org/" target="_blank">Site Fusion</a> معرفی گردید. که علاقه‌مند شدم تستش کنم. این برنامه در دو قسمت Server و Client اجرا می‌شود به شکلی که در سرور دایمن SiteFusion ( برای ویندوزی‌ها همون سرویس ! ) راه‌اندازی می‌شود و در قسمت Client با برنامه‌ی Connector به اون وصل میشید. نکته‌ی جالب این برنامه اینه که رابط گرافیکی با استفاده از XUL طراحی می‌شود و برنامه‌نویسی هم توسط PHP انجام می‌شود. نکته‌ی مهم دیگه اینکه پردازش بر روی سرور انجام می‌شود. یعنی کاربر بر روی Client برنامه را انجام داده و پاسخ به رویدادهای کاربر در سمت سرور انجام گرفته و نتیجه به کلاینت برگردانده می‌شود.</p>
<p><a href="http://sourceforge.net/projects/sitefusion/files/Server/SiteFusion-5.2.2.tar.gz/download" target="_blank">برنامه‌ی سمت سرور</a> فقط بر روی گنو/لینوکس و با کمی‌تغییرات بر روی MacOSX هم اجرا می‌شود. نحوه‌ی نصب بر روی گنو/لینوکس <a href="http://www.sitefusion.org/10" target="_blank">در اینجا</a> کامل توضیح داده شده است. ( خودم عقیده دارم که با کمی تغییرات میشه بر روی ویندوز هم اجراش کرد )</p>
<p>بعد از نصب بایستی یک دایمن با استفاده از برنامه‌ی PHP نوشته شده اجرا کنید ( این اولین باریه که می‌بینم یک دایمن با php راه‌اندازی میشه ! ) یعنی وارد مسیر اصلی میشیم و php sitefusiond -f رو می‌زنیم و دایمن بر روی گنو/لینوکس راه‌اندازی میشه.</p>
<p>حالا باید در یکی از کلاینت‌های شبکه ( سیستم‌عاملشون فرق نمی‌کنه ) یکی از برنامه‌های <a href="http://sourceforge.net/projects/sitefusion/files/Client/Linux/SiteFusion-Connector%20Linux-1.2.2.tar.gz/download" target="_blank">برای لینوکس</a> ، <a href="http://sourceforge.net/projects/sitefusion/files/Client/Windows/SiteFusion-Connector%20Windows-1.2.2.msi/download" target="_blank">برای ویندوز</a> و برای <a href="http://sourceforge.net/projects/sitefusion/files/Client/Mac%20OS%20X/SiteFusion-Connector%20MacOSX-1.2.2.pkg/download" target="_blank">MacOSX</a> رو دانلود کنید. برای لینوکس باید فایل sitefusion که اجرایی هست رو اجرا کنید ( البته برای من اجرا نشد و با استفاده از xulrunner خود لینوکس اجرا کردم که کافیه application.ini رو به xulrunner بدید ) و برای ویندوز هم کافیه نصب کنید و فایلی در دسکتاپتون ایجاد میشه که کافیه اون رو کلیک کنید.</p>
<p>یک پنجره‌ی لاگین براتون ظاهر میشه که در قسمت Server URL آدرس کامل sitefusion و آی‌پی سرور رو وارد می‌کنید ( البته قبلا باید یک هاست مجازی بر روی Apache راه‌اندازی کنید ! ) و در قسمت Application اسم یکی از Applicationهای موجود در پوشه‌ی app رو وارد می‌کنید مثلا sitefusion/admin رو بعد username هم admin و پسورد sercret هست و بایستی با موفقیت لاگین کنید.</p>
<p>خلاصه اینکه خیلی خیلی متد جالب و عالی‌ای هست. چند نمونه از اجرای این برنامه رو می‌بینید که سرور گنو/لینوکس هست و کلاینت ویندوز ایکس‌پی :</p>
<p style="text-align: center;"><a href="http://blog.itnotes.info/wp-content/uploads/2010/07/Site_Fusion-Administration-Windows1.png"><img class="size-medium wp-image-402 aligncenter" title="Site_Fusion-Administration-Windows1" src="http://blog.itnotes.info/wp-content/uploads/2010/07/Site_Fusion-Administration-Windows1-300x159.png" alt="" width="300" height="159" /></a><a href="http://blog.itnotes.info/wp-content/uploads/2010/07/Site_Fusion-Dialog_Test-Windows.png"></a></p>
<p style="text-align: center;"><a href="http://blog.itnotes.info/wp-content/uploads/2010/07/Site_Fusion-Dialog_Test-Windows.png"><img class="alignnone size-medium wp-image-403" title="Site_Fusion-Dialog_Test-Windows" src="http://blog.itnotes.info/wp-content/uploads/2010/07/Site_Fusion-Dialog_Test-Windows-300x85.png" alt="" width="300" height="85" /></a></p>
<p style="text-align: center;"><a href="http://blog.itnotes.info/wp-content/uploads/2010/07/Site_Fusion-Preferences-Windows.png"><img class="alignnone size-medium wp-image-404" title="Site_Fusion-Preferences-Windows" src="http://blog.itnotes.info/wp-content/uploads/2010/07/Site_Fusion-Preferences-Windows-300x182.png" alt="" width="300" height="182" /></a></p>
<p>توضیح : دو عکس آخری مال پوشه‌ی testapp هستن.</p>
<p>بازم با تشکر از آقا حسن عزیز ! <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/394/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>مقاله : شروعی برای JSP در گنو/لینوکس</title>
		<link>http://blog.itnotes.info/archives/364</link>
		<comments>http://blog.itnotes.info/archives/364#comments</comments>
		<pubDate>Sat, 08 May 2010 13:20:40 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/archives/364</guid>
		<description><![CDATA[در این پست می‌خواهم مقاله‌ای با نام «شروعی برای JSP» رو که حاصل کار بنده هست معرفی کنم. این مقاله حاصل بیش از ۲ ماه کار بر روی JSP و بیشتر از ۴ روز تمام بر روی نگارش مقاله است. امیدوارم این مقاله بتواند شروعی برای کسانی باشد که می‌خواهند آزادی در نرم‌افزار را با [...]]]></description>
			<content:encoded><![CDATA[<p>در این پست می‌خواهم مقاله‌ای با نام «شروعی برای JSP» رو که حاصل کار بنده هست معرفی کنم. این مقاله حاصل بیش از ۲ ماه کار بر روی JSP و بیشتر از ۴ روز تمام بر روی نگارش مقاله است. امیدوارم این مقاله بتواند شروعی برای کسانی باشد که می‌خواهند آزادی در نرم‌افزار را با زبان برنامه‌نویسی زیبای جاوا ترکیب کنند.</p>
<p><img class="alignleft" title="JSP_Article" src="http://blog.itnotes.info/wp-content/uploads/2010/05/jsp.jpg" alt="" width="151" height="199" /></p>
<p>از همه‌ی شما خواهش می‌کنم همان طور که بنده حاصل پروژه‌های دانشجویی خودم را بی کم و کاست در اختیار شما قرار می‌دهم ، شما هم در نقل مطلب و منبع آن کوتاهی نکرده و هرجایی که آن را نقل می‌کنید ، منبع آن را ذکر کنید.</p>
<p>در این مقاله ابتدا به مقدمه‌ای در مورد JSP پرداخته شده و سپس <strong>به مقایسه‌ای مفصل بین سه زبان رقیب سمت سرور</strong> ( یعنی PHP ، JSP و ASP ) پرداخته شده است. بعد از آن سعی کرده‌ام تا به بررسی مختصری از سرولت (Servlet) در جاوا بپردازم. پس از بررسی سرولت که پیش نیاز ، JSP است به ورود به JSP پرداخته‌ام.</p>
<p>بعد از آن به بررسی قواعد JSP مانند موارد زیر پرداخته‌ام :</p>
<p>Directives -۱</p>
<p>۲- تعاریف (Declarations)</p>
<p>۳- عبارات (Expressions)</p>
<p>۴- Scriptlets</p>
<p>۵- توضیحات (Comments)</p>
<p>سپس به بحث مهم محدوده‌ی عملکرد اشیا پرداخته‌ام که امکان دستیابی به شیء‌های مختلف JSP در مناطق مختلف را مشخص می‌کند.</p>
<p>سپس <strong>بحث زیبای Beanهای جاوا</strong> مطرح شده است. با استفاده از Beanهای جاوا شما می‌توانید برنامه‌نویسی با استفاده از عناصر از قبل تولید شده را در واقع تجربه کنید. در این مقاله چندین مثال با استفاده از Java Beans بررسی شده مانند نحوه‌ی گرفتن عناصر فرم‌ها و مقداردهی آن‌ها.</p>
<p><span id="more-364"></span>نحوه‌ی پردازش خطاها در JSP و استفاده از جلسات کاری در JSP موارد بعدی مورد بحث در این مقاله هستند. در انتهای این بخش دو مثال کاربردی از Manualهای وب سایت جاوا همراه با توضیح کد مطرح شده اند.</p>
<p>در انتهای این بخش به بررسی <strong>ویژگی‌های جدید JSP نسخه‌ی ۲</strong> پرداخته شده است. ویژگی‌های جدید در JSP2 را می‌توان به صورت زیر بیان کرد :</p>
<p>۱- یک EL (زبان بیان – Expression Language) ساده‌تر برای دسترسی ساده‌تر به داده‌ها در صفحات JSP به صورتی که نیاز به نوشتن Scriptlet یا عبارت‌های زبان جاوا نباشد (Scriptless)</p>
<p>۲- ساختار قواعدی جدید برای تعریف actionهای قابل استفاده‌ی مجدد به طور مستقیم بوسیله‌ی تکنولوژی JSP . این قواعد در فایل‌های با پسوند tag و یا tagx ذخیره می‌شوند که می‌توانند بوسیله‌ی توسعه‌دهندگان یا برنامه‌نویسان صفحات نوشته شوند.</p>
<p>۳- ساختار XML به طور قابل توجهی بهبود یافته است. استانداردهای جدید برای نام فایل‌ها به صورت (tagx برای tagها و jspx برای jsp) اضافه شده‌اند.</p>
<p>مثال‌های کاربردی هم برای بررسی این بخش‌ها ارائه شده‌اند.</p>
<p>به خاطر اینکه این مقاله با استفاده از Eclipse IDE و در سیستم‌عامل گنو/لینوکس به طور کامل توضیح داده شده است. لذا در پیوست ۱ برای کاربران ویندوز نحوه‌ی نصب Eclipse و Tomcat در ویندوز را توضیح داده‌ام.</p>
<p>در پیوست دوم هم تعدادی سوال و جواب که ممکن است در حین خواندن مقاله برایتان پیش آمده باشد را جواب داده‌ام.</p>
<h2 style="text-align: center;"><a title="برای دانلود کلیک کنید" href="http://blog.itnotes.info/JSP_Article.zip" target="_blank"><strong>دانلود مقاله به همراه سورس کدها</strong></a></h2>
<p style="text-align: center;">(با حجم ۶٫۴ مگابایت)</p>
<p>ــــــــــــــــــــــــــــــــــــ</p>
<p>پ.ن۱ : پوشه‌ی Server در قسمت codes می‌تواند به عنوان سرور آماده برای تست صفحات شما مورد استفاده قرار بگیرد.</p>
<p>پ.ن۲: پوشه‌ی codes در پکیج قرار داده شده همان workspaceای است که Eclipse IDE تولید کرده است.</p>
<p>پ.ن۳: برای نوشتن این مقاله از هیچ منبع فارسی‌ای استفاده نشده است پس نگرانی دزدی مطلب به خود راه ندهید !!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/364/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>حل مشکل Ubuntu 10.04 با لپ‌تاپ‌های VAIO دارای کارت گرافیک انویدیا</title>
		<link>http://blog.itnotes.info/archives/361</link>
		<comments>http://blog.itnotes.info/archives/361#comments</comments>
		<pubDate>Sat, 01 May 2010 06:38:53 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[روزنوشت]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/?p=361</guid>
		<description><![CDATA[دیروز ابونتو رو دانلود کردم. با VirtualBox یه تست زدم ، بد نبود. گفتم مستقیم هم یه تستی بزنم. دیدم که بعد از بوت به صورت Live اصلا خروجی روی نمایشگر نداشتم. این مشکل ، مشکلی جدید با لپ‌تاپ‌های سونی و کارت گرافیک Nvidia نیست. این مشکل به خاطر وجود درایور اوپن سورس انویدیا در [...]]]></description>
			<content:encoded><![CDATA[<p>دیروز ابونتو رو دانلود کردم. با VirtualBox یه تست زدم ، بد نبود. گفتم مستقیم هم یه تستی بزنم. دیدم که بعد از بوت به صورت Live اصلا خروجی روی نمایشگر نداشتم. این مشکل ، مشکلی جدید با لپ‌تاپ‌های سونی و کارت گرافیک Nvidia نیست. این مشکل به خاطر وجود درایور اوپن سورس انویدیا در این نسخه از ابونتو هست. شما باید قبل از بوت در GRUB گزینه‌ی زیر رو وارد کنید تا به صورت موقتی درایور اوپن سورس انویدیا غیرقعال بشه : </p>
<blockquote><p dir="ltr">nouveau.blacklist=true</p>
</blockquote>
<p>برای اضافه کردن این گزینه وقتی سیستم رو با CD اوبونتو بالا میارید قبل از زدن Try Ubuntu Without Any change دکمه‌ی (فکر کنم ) F6 رو بزنید ( یعنی همون Other Options ) حالا دکمه‌ی ESC رو بزنید و در انتهای مکان‌نما خط بالا رو اضافه کنید. و حالا اینتر بزنید.</p>
<p>حالا می‌تونید سیستم رو نصب کنید و البته دقت کنید باید بعد از نصب مراحلی رو که من <a href="http://blog.itnotes.info/archives/288" target="_blank">در اینجا متحمل (!) شدم</a> رو انجام بدید. یا اینکه <a href="http://www.ubuntugeek.com/howto-install-nvidia-drivers-manually-on-ubuntu-10-04-lucid-lynx.html" target="_blank">این پست رو ببینید</a>. </p>
<p>ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ</p>
<p>پ.ن: ولی خداییش این نسخه‌ی اوبونتو زیاد هم قشنگ نشده. مثلا یه صفحه مثلا OOo Writer رو باز کنید و Full Screen کنید. ( اصلا ترسناکه !! <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ) </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/361/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>چرا گذاشتن رمز بر روی GRUB در سیستم‌های عمومی ضروری است ؟!</title>
		<link>http://blog.itnotes.info/archives/337</link>
		<comments>http://blog.itnotes.info/archives/337#comments</comments>
		<pubDate>Sat, 17 Apr 2010 17:02:41 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[امنیت]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/?p=337</guid>
		<description><![CDATA[یادش بخیر وقتی بچه بودیم و بحث رمز و این مسائل پیش می‌اومد همه سعی می‌کردن یاد بگیرن و به کسی هم یاد ندن! بزرگتر که شدیم ، فهمیدیم دنیایی وجود داره که در اون هرکسی هر چیزی می‌دونه به دیگری میگه و همه از همدیگه یاد می‌گیرن و اون دنیایی نیست جز گنو. حالا [...]]]></description>
			<content:encoded><![CDATA[<p>یادش بخیر وقتی بچه بودیم و بحث رمز و این مسائل پیش می‌اومد همه سعی می‌کردن یاد بگیرن و به کسی هم یاد ندن! بزرگتر که شدیم ، فهمیدیم دنیایی وجود داره که در اون هرکسی هر چیزی می‌دونه به دیگری میگه و همه از همدیگه یاد می‌گیرن و اون دنیایی نیست جز گنو.</p>
<p><img class="alignleft" src="http://blog.itnotes.info/wp-content/uploads/2010/04/linux_security1.jpg" alt="Linux Security" /></p>
<p>حالا بحث من با دوستانی هست که می‌خوان کافی‌نت یا حتی در دانشگاه به صورت گنو/لینوکسی راه‌اندازی کنند. اگه تا حالا بر روی GRUB خودتون رمز نگذاشتید همین الان این کار رو بکنید. برای چی ؟! خوب برای اینکه یک از خدا بی‌خبری ( مثل بنده ! <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ) میاد و به راحتی با همین گراب شما دست به هر کاری که دلش می‌خواد میزنه.</p>
<p>حالا قبل از اینکه بدونید چطوری بر روی گراب رمز بگذارید ببینید مهاجم (!) چطوری میتونه سیستم شما رو در اختیار خودش بگیره ؟!</p>
<p>وقتی که BIOS گراب رو اجرا می‌کنه و منو رو ظاهر می‌کنه ( اگه ظاهر نشد بوسیله‌ی کلید شیفت سمت راست این کار رو بکنید ) کلید e رو بر روی صفحه‌کلید بزنید ( بعضی از توزیع‌ها مثل اوپن سوزه به صورت پیشفرض در حالت edit قرار دارن ) و حالا خطی که شامل kernel هست رو پیدا کنید بازم e رو بزنید. حالا در انتهای این خط اضافه کنید :</p>
<blockquote>
<p dir="ltr">init=/bin/sh</p>
</blockquote>
<p>و کلید ESC رو بزنید و حالا b رو بزنید تا با این تغییرات بوت انجام بشه. اگه این کارها رو درست انجام داده باشید بایستی بدون رمز هم اکنون در محیط شل باشید. اما هنوز در سیستم اصلی قرار ندارید. باید سیستم اصلی خودتون رو پیدا کنید. این کار رو کافیه با زدن دستور fdisk -l و مشخص کردن اینکه در چه پارتیشنی قرار گرفته بکنید. ( مثلا مال من /dev/sda3 هست )</p>
<p><span id="more-337"></span></p>
<p>بعد نوع سیستم فایلش رو هم باید بدونید ( برای من ext4 هست ) پس اون رو mount می‌کنیم :</p>
<blockquote>
<p dir="ltr">mount -t ext4 -o rw /dev/sda3 /mnt</p>
</blockquote>
<p>به همین راحتی کافیه وارد دایرکتوری mnt بشم و همه‌ی سیستم بدون هیچ محدودیتی در دستمونه ! ( با passwd می‌تونید رمز عوض کنید و یا حتی /etc/shadow رو به صورت دستی ویرایش کنید )</p>
<p>یعنی تمامی اطلاعات ( به خصوص اگه سرور باشه ) از دستتون رفته و مهاجم ( که حتما خودیه !! <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ) می‌تونه همه‌ی اطلاعات شما رو با یک دستور ساده پاک کنه ( البته این دیگه میشه روانی نه مهاجم <img src='http://blog.itnotes.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p>حتی بعضی وقت‌ها در بعضی توزیع‌هایی که امنیتشون پایینه بدون این دردسر به جای اضافه کردن خطی که در بالا اشاره کردم ( به خط kernel ) کافیه که یک single اضافه کنید و دیگه ماونت کردن هم نیاز نیست.</p>
<p>حالا که متوجه ریسک و خطر شدید اون شدید بایستی تصمیم بگیرید (از تصمیم کبری هم مهم‌تره ! :دی) و رمز بر روی GRUB خودتون بگذارید. برای این کار باید اول رشته‌ای که می‌خواید رو با الگوریتم غیرقابل برگشت md5 درهم ریزی(!) کنید. برای این کار از ابزارهای مختلفی استفاده میشه که یکیشون grub-md5-crypt هست که کافیه دوبار رمزتون رو بزنید تا اون رو صورت encrypt شده تحویلتون بده. یا اینکه در PHP هم می‌تونید با تابع md5 این کار رو انجام بدید.</p>
<p>حالا اگه از grub نسخه ۱ استفاده می‌کنید فایل /boot/grub/grub.conf و اگه از grub نسخه دوم استفاده می‌کنید /etc/default/grub رو باز کنید. و قبل از جایی که اولین title شروع میشه خط زیر رو اضافه کنید :</p>
<blockquote>
<p dir="ltr">password &#8211;md5 &lt;<strong>password-hash</strong>&gt;</p>
</blockquote>
<p>در قسمت password-hash رمزتون رو بزارید. و به همین راحتی می‌تونید از حمله‌ی مهاجمان جلوگیری کنید.</p>
<p><strong>به‌روز رسانی :</strong> برای اینکه کاربران عادی مجبور نباشند که هر بار برای روشن کردن سیستم دوباره رمز عبور را وارد کنند ( فقط در گراب ۲ ) می‌توانید برای هر مدخل GRUB ، سوپرکاربر (SuperUser) تعریف کنید. بدین صورت که آیا برای بوت رمز نیاز باشد و یا برای ویرایش اون مدخل. بسیاری از توزیع‌ها ( مانند اوبونتو ) یک مدخل با نام Recovery Mode دارند که کاربران عادی می‌توانند از آن سوء استفاده کنند پس اون‌ها رو به صورت بوت برای SuperUser و مدخل عادی ( کرنل فعلی ) رو برای بوت برای همه‌ی کاربران تنظیم می‌کنیم.</p>
<p>برای اینکه بوت فقط برای SuperUser فعال باشد کافی است که در اون مدخل به صورت زیر ( قبلا باید اونها رو به همراه رمزشون تعریف کرده باشیم ) فعال کنیم :</p>
<blockquote>
<pre style="text-align: left;">set superusers="user1"
password user1 password1
password user2 password2

menuentry "GNU/Linux" {
        set root=(hd0,1)
        linux /vmlinuz
}

menuentry "Windows" --users user2 {
        set root=(hd0,2)
        chainloader +1
}
</pre>
</blockquote>
<p>که در این مثال دو کاربر تعریف شده‌اند که مدخل ویندوز فقط برای کاربر user2 و کاربر user1 که superuser هست <strong>قابل بوت</strong> است. اما مدخل «GNU/Linux» برای همه‌ی کاربران قابل بوت است اما edit کردن آن فقط برای کاربر user1 امکان‌پذیر است. در ضمن برای گراب ۲ از برنامه‌ی grub-mkpasswd-pbkdf2 استفاده کنید.</p>
<p>با تشکر از الیاد عزیز &#8211; برداشت شده <a href="http://grub.enbug.org/Authentication" target="_blank">از اینجا</a>.</p>
<p>ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ</p>
<p>پ.ن۱: برای اژدهای سبز ( اوپن سوزه ) کانفیگ گراب در مسیر /etc/grub.conf قرار داره.</p>
<p>پ.ن۲: البته هنوز خطر بوت از طریق سی‌دی یا فلش بوسیله‌ی BIOS هست ( پس باید این امکان رو هم غیرفعال کنید )</p>
<p>پ.ن۳: کاربران ویندوز منتظر باشن می‌خوام یک پست در مورد عوض کردن رمز ویندوز از طریق لینوکس بزنم ( فعلا در حال تست و در مرحله آلفا !! )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/337/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>معرفی کتاب رسمی آموزش برنامه‌نویسی کیوت (Qt) با سی‌پلاس‌پلاس</title>
		<link>http://blog.itnotes.info/archives/333</link>
		<comments>http://blog.itnotes.info/archives/333#comments</comments>
		<pubDate>Tue, 13 Apr 2010 15:37:22 +0000</pubDate>
		<dc:creator>بهرام</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[گنو/لینوکس]]></category>

		<guid isPermaLink="false">http://blog.itnotes.info/archives/333</guid>
		<description><![CDATA[وقتی صحبت از فریم‌ورکی با این قدرت و عظمت می‌شود بنده و امثال بنده توانایی گفتن حتی قسمتی از اون رو نخواهیم داشت. اما کسانی که علاقه به KDE داشته باشن امکان نداره که با Qt ( بخوانید کیوت ) آشنا نباشند. کیوت یکی از چندین فریم‌ورک قدرتمندی است که محصول دنیای گنو/لینوکس ( و [...]]]></description>
			<content:encoded><![CDATA[<p>وقتی صحبت از فریم‌ورکی با این قدرت و عظمت می‌شود بنده و امثال بنده توانایی گفتن حتی قسمتی از اون رو نخواهیم داشت. اما کسانی که علاقه به KDE داشته باشن امکان نداره که با <a href="http://en.wikipedia.org/wiki/Qt_%28framework%29" target="_blank">Qt</a> ( بخوانید کیوت ) آشنا نباشند. کیوت یکی از چندین فریم‌ورک قدرتمندی است که محصول دنیای گنو/لینوکس ( و قبلا یونیکس) هستند. ( محصولات دیگری مانند <a href="http://en.wikipedia.org/wiki/GTK%2B" target="_blank">+GTK</a> و <a href="http://en.wikipedia.org/wiki/WxWidgets" target="_blank">wxWidgets</a> و چیزای دیگه که نمی‌دونم ! )</p>
<p><img class="alignleft" src="http://blog.itnotes.info/wp-content/uploads/2010/04/Qt-logo.png" alt="QtLogo" /></p>
<p>تعطیلات امسال خیلی برام مفید بود. چون کتاب بسیار قوی به‌نام «<strong>C++ GUI Programming Using Qt</strong>» رو در پشته‌ی (!) مطالعات آزادم داشتم و عید امسال وقتش رسیده بود. باور کنید حتی وقتی که فقط ۸-۷ فصل این کتاب رو بخونید از این ملت تعجب خواهید کرد که چرا این ملت به سراغ چیزهایی مثل محصولات ویژیوال مایکروسافت میرن ؟!</p>
<p>Qt علاوه بر اینکه وابسته به محیطی که در اون برنامه‌نویسی می‌کنید نیست بلکه به شما امکان استفاده از کتابخانه‌های بسیار وسیعی رو میده که حتی به فکرتون هم خطور نمی‌کنه. به خصوص اینکه با <a href="http://qt.nokia.com/" target="_blank">پشتیبانی خوب شرکت نوکیا از Qt </a>هم اکنون <a href="http://qt.nokia.com/downloads" target="_blank">محیط مجتمع برنامه‌نویسی کیوت</a> برای هرسه سیستم‌عامل محبوب ویندوز ، گنو/لینوکس و مک‌او‌اس از محیط‌های ویژوال مایکروسافت خیلی خیلی بهتره.</p>
<p>در طول این تعطیلات هم برنامه‌های فصل‌های ۱ تا ۵ رو تک به تک نوشتم و از لحظه-لحظه‌ی نوشتن کدهام لذت می‌بردم. به خصوص اینکه کدها رو با بدون تغییرات روی کامپیوتر دیگه‌ای که نزدیکم بود و روی ویندوزش تست می‌کردم. البته شروع یه مقدار سخته چون در این کتاب از SDK استفاده نشده و فقط از Qt Designer استفاده شده و ارتباط بین فایل‌های UI و کدهای CPP به صورت دستی برقرار شده.</p>
<p>در این کتاب به صورت کامل کامپایل و استفاده از برنامه‌های نوشته شده برای هرکدام از سیستم‌عامل‌های محبوب رو توضیح داده و تنها به یک OS تکیه نکرده.</p>
<p><span id="more-333"></span></p>
<p>البته این کتاب تنها کتاب آموزشی کیوت نیست بلکه چندین کتاب آموزشی دیگر مربوط به کیوت رو <a href="http://qt.nokia.com/developer/books" target="_blank">از این آدرس رسمی</a> می‌تونید پیدا کنید که البته پولی هستن و برای ما ایرانیان زیاد کاربرد نداره. همچنین در این آدرس <a href="http://qt.nokia.com/developer/books/cpp-gui-programming-with-qt-4-2nd-edition" target="_blank">آخرین نسخه‌ی این کتاب</a> وجود داره ( ویرایش دوم که کتابی که براتون قرار داده‌ام ویرایش اول هست )</p>
<p>این مطلب از صفحه‌ی <a href="http://fa.wikipedia.org/wiki/%DA%A9%DB%8C%D9%88%D8%AA" target="_blank">کیوت ویکیپدیای فارسی</a> که وسعت قابلیت انتقال کیوت رو نشان می‌دهد :</p>
<p>۱٫ Qt/X11 – Qt برای خانواده x (Unix / Linux)</p>
<p>2. Qt/Mac – Qt for برای MacOSX</p>
<p>3. Qt/Windows – Qt برای ویندوز</p>
<p>۴٫ Qt/Embedded – Qt وسائل همراه (PDA, Smartphone و غیره)</p>
<p>۵٫ Qt/WinCE – Qt برای Windows CE[3]</p>
<p>6. Qt Jambi – Qt برای Java</p>
<p>7. Qt Extended &#8211; Qt برای سیستم عامل لینوکس نسخه وسائل همراه</p>
<p>شاید براتون جالب باشه که مرورگر محبوب Opera با Qt خالص نوشته شده ( منظور این هست که از کتابخانه‌های KDE استفاده نشده ) و همچنین هستند برنامه‌های مشهور دیگری مثل <a href="http://www.videolan.org/vlc/" target="_blank">VLC</a> ، <a href="http://www.virtualbox.org" target="_blank">VirtualBox</a> و خیلی برنامه‌های دیگر.</p>
<p>البته اگر جسارت به پلتفرم بزرگ و قوی <a href="http://www.kde.org" target="_blank">KDE SC</a> نباشه و اون رو در رده‌ی سایر برنامه‌ها قرار بدیم ، اون هم بر مبنای Qt هست.</p>
<p>کاملا مسلم هست که Qt وابسته به یک زبان برنامه‌نویسی خاص نباشد و Bindingهایی به اغلب زبان‌های برنامه‌نویسی رایج انجام شده باشه. مثلا برای جاوا <a href="http://qt.nokia.com/doc/qtjambi-4.4/html/com/trolltech/qt/qtjambi-index.html" target="_blank">Jambi</a> رو داریم که شرکت <a href="http://www.adobe.com" target="_blank">Adobe</a> در بسیاری از محصولاتش از اون استفاده می‌کنه. همچنین برای زبان محبوب Python هم <a href="http://wiki.python.org/moin/PyQt" target="_blank">PyQt</a> رو داریم که خیلی هم داره توی گنو/لینوکس کاربرد پیدا می‌کنه. و بسیاری از زبان‌های دیگر &#8230;</p>
<p>و در نهایت اینکه بحث مجوز کیوت داستان جالبی داره که گفتنش فکر کنم خیلی تکراری میشه و اینکه دلیل پیدایش محیط دسکتاپ GNOME شده که امروزه کمتر توزیعی رو میشه بدون اون پیدا کرد. البته بعد از این تهدید Qt در لایسنس LGPL ارائه شد &#8230;</p>
<p>و بفرمایید کتاب (<strong>با حجم ۵۰ مگابایت</strong>) :</p>
<h2><a href="http://www.4shared.com/document/feTWYvWy/C-GUI-Programming-with-Qt-4-1s.html" target="_blank"><strong>C++ GUI Programming Using Qt</strong></a></h2>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.itnotes.info/archives/333/feed</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
	</channel>
</rss>
