شروع برنامه‌نویسی در چهارچوب Qt ( کتاب فارسی – مهرداد مومنی )

سلام

قبلا در همین وبلاگ تاپیکی در مورد Qt ( بخوانید کیوت ، لطفا ! ) زده بودم در اون به معرفی کتاب رسمی آموزش Qt پرداختم و مورد علاقه‌ی خیلی از دوستان قرار گرفت. در همون تاپیک به دلیل انگلیسی بودن کتاب از بنده در مورد مرجع فارسی برای کیوت خیلی زیاد سوال کردند ( و البته فقط به همین تاپیک محدود نشد و سوالات مشابه دیگری با ایمیل دریافت کردم ) و من تنها راه رو خوندن مرجع ذکر کردم.

اما خبر خوب اینه که مهرداد مؤمنی که البته برای گنو/لینوکسی‌ها نیاز به معرفی نداره اما برای ویندوزی‌ها بگم که برنامه‌نویسی حرفه‌ای و با تجربه‌ی Qt و Cpp که چندین برنامه‌ی Choqok ( کلاینت میکروبلاگینگ ) ، Blogilo ( کلاینت بلاگینگ – همین کلاینتی که باهاش دارم این مطلب رو می‌نویسم ) و MDic ( دیکشنری چندزبانه ) که همگی تحت پلتفرم کیوت ویا KDE SC نوشته شده‌اند، چندی پیش یک کتاب فارسی بسیار خوب برای شروع ( و چه عرض کنم ادامه‌ی ! ) برنامه‌نویسی کیوت منتشر کردند و از لحاظ کیفیت بسیار عالی هست.

متن توضیح انتشار این کتاب رو از وبلاگ ایشون می‌تونید در اینجا ببینید. ( با عنوان « شروع برنامه‌نویسی در چهارچوب Qt » )

به قول خودش دیگه قصدش دادن یک برنامه ( یا همون ماهی ) در اختیار کاربران نیست بلکه می‌خواد به ما ماهی‌گیری رو آموزش بده و بیشتر از نیمی از این کتاب رو خوندم و چقدر خوب ماهی‌گیری رو آموزش میده. توصیه می‌کنم حتما همین الان دانلودش کنید و اگر می‌توانید برای توسعه‌اش مبلغی بپردازید. ( بعد از دانلود این کتاب می‌توانید اطلاعات لازم برای واریز مبلغ رو دریافت کنید )

این متن هم از پست وبلاگ خودش که توضیحی در مورد کتاب هست :

کتاب مذکور در ۶۷ صفحه و مشتمل بر ۸ فصل به شرح زیر در اختیار برنامه‌نویسان علاقه‌مند قرار می‌گیرد.

  1. راه و روش Qt
  2. سیگنال‌ها و اسلات‌ها در Qt
  3. Containers and Iterators
  4. استفاده از QMake
  5. آشنایی با برنامه طراح کیوت (Qt Designer)
  6. کار با پایگاه‌داده‌ها در Qt
  7. بررسی چند تکنولوژی دیگر Qt
  8. استفاده از مستندات مرجع Qt

همانطور که از نام فصول مشخص است، بیشتر یک آشنایی اولیه با ابزارها و توانمندیهای کیوت در سمت دسکتاپ است.

کاری ارزشمند که ارزش آن به هیچ‌وجه فقط با پول و مسائل مادی قابل جبران نیست.

آرزوی موفقیت برای همه‌ی کسانی که در راه آزادی نرم‌افزار و گسترش GNU تلاش می‌کنند.

خبر خوب برای دارندگان لپ‌تاپ‌های VAIO و یک هفته سر و کله زدن با openSUSE 11.3

سلام مجدد خدمت‌های دوستان عزیز. از اینکه این چند مدت نمی‌تونم پست بزنم عذرخواهی می‌کنم. شدیدا درگیر یک پروژه‌ی جدی هستم.

این هفته دیگه ترس رو کنار گذاشتم و تصمیم گرفتم که یک نصب از اول openSUSE 11.3 رو انجام بدم. اما طبق معمول نمایشگر DFP یا همون Default Flat Panel لپ‌تاپ VAIOی من رو نشناخت و صفحه کلا سیاه شد. بعد از کلی بیچارگی و غیرفعال کردن nouveau ( یا همون درایور آزاد انویدیا – بوسیله‌ی اضافه کردن خط nouveau.blacklist=true به راه‌اندازی کرنل ) اون رو نصب کردم و بعد خواستم که درایور پرینترم رو نصب کنم ( Canon LBP2900 ). با وجود اینکه درایور رو برای سیستم ۶۴ بیتی کامپایل کردم و در openSUSE 11.2 هیچ مشکلی نداشت اما در این نسخه کار نکرد ( حالا بعدا میگم که چرا !! )

به هر حال این مسائل باعث شد که برم به سمت Fedora 13 و اون رو امتحان کنم. نتیجه بسیار امید بخش بود. درایور nouveau که در فدورا ۱۳ بود به خوبی DFP من رو شناخت و حتی تونستم با نصب mese-dri-drivers-experimental به خوبی در گنوم کامپیز رو فعال کنم. البته جای ذکر هست که این درایور در KDE کار نکرد و نتونست Compositing رو فعال کنه. در مورد این درایور بگم که هنوز جای کار داره. در طی تست چند ساعته که در گنوم ( البته با کامپیز فعال ) انجام دادم، مثل پخش موسیقی و یک فیلم بسیار با کیفیت ( مثل BigBuckBunny بعدا حتما یک پست در مورد این فیلم جالب خواهم نوشت ) و یکی دو بازی، بیشتر از ۳ بار کل X کرش کرد و حتی نمی‌تونستم وارد شل بشم ! پس فدورا ۱۳ رو هم بیخیال شدم.

اما از این فدورا ۱۳ یک نتیجه خیلی جالب گرفتم : اگر فدورا ۱۳ بتونه DFP من رو شناسایی کنه و چون nouveau کدباز هست پس حتما در nvidia استفاده میشه. و خیلی سریع به یاد درایورهای جدید انویدیا یعنی ۲۵۶ برای لینوکس افتادم ! البته من قبلا هم از این درایور استفاده می‌کردم اما چون عادت کرده بودم که به صورت دستی DFP رو به xorg.conf بدم ، اصلا بدون CustomEDID امتحانش نکرده بودم و حالا وقتش رسیده بود. فدورا رو پاک کردم و openSUSE 11.3 amd64 رو نصب کردم.

و حالا خبر خوب برای دارندگان لپ‌تاپ‌های VAIO اینکه DFP من در درایور رسمی nVidia نسخه‌ی ۲۵۶٫۴۴ بدون هیچ مشکلی شناسایی شد ! تنها مشکلی که وجود داره ( البته فعلا ) عدم تنظیم backlight هست که شاید برای بسیاری این مشکل هم حل شده باشد. این برای اولین بار هست که می‌تونم از طریق کنترل پنل انویدیا لپ‌تاپ وصل شده به یک پروژکتور رو تنظیم و فعال کنم ! ( خیلی هیجان انگیزه !! :D ) البته قبلا با دردسر زیاد با استفاده از sax2 این کار رو انجام می‌دادم !

» ادامه مطلب

نسخه‌ی آزمایشی ITLPoll 3.1.0 با اسم رمز «دیوانه‌ساز» منتشر شد

خوب دوستان بالاخره کار اصلی بر روی این نسخه رو هم تموم کردم و آماده‌ی تست هست تا اشکالات احتمالی اون برطرف بشه.

از مهم‌ترین ویژگی‌ها و تغییرات این نسخه می‌توان به موارد زیر اشاره کرد :

  • امکان فعال‌کردن بیش از یک نظرسنجی : با این ویژگی یک سیستم نظرخواهی تمام‌عیار را خواهید داشت.
  • قرار گرفتن نظرسنجی‌ها در وضعیت‌های مختلفی که در عکس می‌بینید.
  • تغییرات اساسی در ساختار پایگاه اطلاعاتی و قالب‌ها و کدهای اصلی : بطوری که با نسخه‌های قبلی به هیچ وجه سازگار نیست.

واقعا تبدیل یک نظرسنجی ساده به یک سیستم نظرخواهی کامل ، کار بسیار سخت و طاقت‌فرسایی بود که بیش از ۳ روز وقت من رو به خودش به طور کامل گرفت.

اسم این نسخه رو « دیوانه‌ساز یا Dementor » به یاد داستان‌های زیبای هری‌پاتر گذاشتم.

از همه‌ی دوستان عزیز درخواست می‌کنم که این نسخه رو تست کنند و در صورت امکان اشکالات رو برای بنده بفرستند. ( پیشاپیش سپاسگزارم )

نکته : فعلا این نسخه رو برای آپلود در سرور سایت شما مناسب نیست. برای این منظور بایستی منتظر نسخه‌ی نهایی باشید.

برای دانلود این نسخه اینجا را کلیک کنیذ.

برای تست این نسخه : قسمت کاربریقسمت مدیریت ( نام‌کاربری و رمز عبور : demo )

=-=-=-=-=
Powered by Blogilo

ITLPoll Version 3.1 Snapshot

خوب دوستان وقتی من کمتر پست می‌زنم یا در حال درس خوندنم و یا در حال توسعه‌ی ITLPoll.

همون‌طور که قول داده بودم ، سعی کردم تا امکان فعال کردن بیش از چند نظرسنجی به طور همزمان رو برای سیستم فراهم کنم. در ابتدا واقعا غیرممکن به نظر می‌رسید. چون در ابتدای نوشتن این برنامه اصلا همچین هدفی رو نداشتم. ولی این کار رو کردم و این نسخه در مراحل بسیار ابتدایی هست و کار زیادی برای رسیدن به مرحله‌ی نهایی داره. ولی سعی می‌کنم که نسخه‌ی آلفا یا نهایتا بتا رو برای تست براتون بزارم :

EndUser

» ادامه مطلب

نسخه نهایی OpenSUSE 11.3 منتشر شد

خوب دوستان عزیز پس از ۶ ماه انتظار نسخه‌ی نهایی OpenSUSE یعنی ۱۱.۳ هم منتشر شد.

از مهم‌ترین ویژگی‌های این نسخه می‌توان به پشتیبانی از NetBook ( البته قبلا هم وجود داشت ! ) با استفاده از KDE 4.4.4 و پشتیبانی از گوشی‌های هوشمند موجود مثل iPhone و Android و BlackBerry و پردازش ابری قوی و سریعتر اشاره کرد. برای دیدن کامل ویژگی‌ها به اینجا مراجعه کنید.

و توصیه می‌کنم حتما نسخه‌ی DVD را دانلود کنید ( و یا سفارش دهید ) چون همزمان هر ۴ محیط گرافیکی دسکتاپ رو خواهید داشت ( GNOME, KDE, Xfce, LXDE )

و من در انتظار آماده شدن DVD ها در فروشگاه‌های گنو/لینوکس فارسی …. ;)

MySQL, MYSQL, mysql این‌ها یکسان نیستند !

بنده شخصا به به‌کار بردن لغات به‌صورت درست و پایه‌ای اعتقاد زیادی دارم. بعد از برگشت به خونه برای تعطیلات تابستان ، کتاب مبانی کار با MySQL نوشته‌ی Matthew Stucky و ترجمه‌ی مهندس سعید هراتیان از گروه مهندسی پژوهشی ساحر و انتشارات روزنه ( به این میگن یک معرفی کتاب خوب ! ;) ) رو از میان کتابای قدیمی پیدا کردم.

MySQL Logo

در این کتاب به طور خوب و اصولی به بررسی MySQL و نحوه‌ی برنامه‌نویسی با زبان C و طراحی محیط گرافیکی با +GTK پرداخته است. در واقع می‌تونم بگم که تنها کتاب ترجمه شده‌ای بوده که تا حالا دیدم و به طور کامل به بررسی طراحی GTK پرداخته و در اون به توضیح Glade در گنوم هم پرداخته. ( اگرچه اصل هدف کتاب کار با MySQL هست )

جایی از کتاب وجود داره که یادم میاد هربار که این کتاب رو می‌خوندم توجهم بهش جلب میشد و تا حالا هر وقت خواستم که از این پایگاه داده نام ببرم بین این ۳ تا طرز نوشتن تفاوت قایل شدم و پیشنهاد می‌کنم شما هم درنظرشون بگیرید :

  1. MySQL یک پایگاه داده‌ی عمومی است. یعنی کل بسته‌ی نرم‌افزاری ( یعنی وقتی می‌خواهید از کل نرم‌افزار نام ببرید از طرز نوشتن استفاده می‌کنیم )
  2. MYSQL یک ساختار API در C است که برای اداره‌ی یک اتصال به یک پایگاه داده استفاده می‌شود. ( یعنی وقتی که تابع mysql_connect رو فراخوانی می‌کنید از این نوع متغیر در C استفاده می‌کنیم )
  3. mysql یک بسته‌ی سرویس‌گیرنده است. ابزاری که برای برقراری ارتباط با یک سرویس‌دهنده MySQL از طریق خط فرمان بکار می‌برید. mysql همچنین نام پایگاه‌داده‌ای است که اطلاعات سیستم را ذخیره می‌کند ( آنچه در پایگاه داده‌های دیگر sysobject یا systables نامیده می‌شوند )

پس همان‌طور که می‌بینید وقتی که با یک برنامه‌نویس با تجربه از طریق متن حرف می‌زنید ممکنه از حرف شما برداشت کاملا متفاوتی داشته باشد. مثلا mysql server کاملا غلطه ! و بایستی به صورت MySQL Server نوشته بشه تا معنای درست رو منتقل بکنه. یا وقتی که می‌گویید « mysql را راه‌اندازی کرده‌ام » ، ممکن است فردی به اینکه دستور mysql در خط فرمان را اجرا کرده باشید ، متوجه شده باشد ، در حالی که منظور شما راه‌اندازی پایگاه داده‌ی MySQL بوده است.

امیدوارم اگه تا حالا از این طرز نوشتن درست استفاده نکرده‌اید ، از این به بعد ازش استفاده کنید.

آرزوی موفقیت.

=-=-=-=-=
Powered by Blogilo

PHP-GTK آن روی دیگر PHP ( شدیدا به‌روز شد ! به همراه معرفی Site Fusion )

اگر تا حالا فکر می‌کردید که PHP فقط یک زبان سمت سرور ساده ( و نهایتا پیچیده !! ) هست ، اشتباه کردید. اشتباه شما در قسمت «سمت سرور یا Server Side» فرض کردن PHP بوده است. PHP برخلاف هدف خود ( که همون اسکریپت‌نویسی سمت سرور باشه ) میتونه به خوبی در سمت کلاینت کاربرد داشته باشه.

اگر با GTK آشنا نیستید ، حتما این صفحه‌ی ویکیپدیا رو بخونید. اگر حوصله ندارید ، من کار رو براتون آسون می‌کنم یه توضیحاتی میدم. GTK مخفف کلمات GIMP ToolKit می‌باشد ( به همین راحتی !! ). خوب اگر کاربر گنو/لینوکس باشید ، امکان نداره با برنامه‌ی دستکاری تصاویر GIMP آشنا نباشید. ( برای توضیح ویندوزی‌ها یه چیزی شبیه فتوشاپ. البته فتوشاپ باید بره جلو و بوق بزنه !! :دی ) یعنی درواقع GTK برای نوشتن GIMP توسعه داده شد که البته بوسیله‌ی Glib و دیگر کتابخانه‌هایی که با C نوشته شدند فریم‌ورک قوی +GTK یا جی‌تی‌کی‌پلاس رو بوجود آوردند.

معمولا برنامه‌های مبتنی بر +GTK رو با C می‌نویسن ولی به سایر زبان‌های برنامه‌نویسی هم Bindingهایی انجام شده که یکی از اون‌ها PHP است. شما می‌تونید با استفاده از PHP برنامه‌های گرافیکی سمت کاربر بنویسید. که البته بسیار راحت‌تر و ساده‌تر از C خواهد بود چرا که اولا با توابع غنی و بسیار راحت PHP می‌تونید کد بزنید و ثانیا دیگه قواعد دست و پا گیر C مثل اشاره‌گرها و حتی مشخص کردن انواع متغیرها رو ندارید !

البته خودم هم تازه دارم شروع می‌کنم که با PHP در GTK برنامه بنویسم ولی برای تست دو نمونه رو در گنو/لینوکس و ویندوز اجرا کردم که براتون میزارم.

قبل از هر چیز بایستی PHP-GTK رو روی سیستم‌عامل خودتون نصب کنید. روی گنو/لینوکس کافیه که بسته‌ی php-gtk یا php5-gtk رو نصب کنید ( ممکنه یه‌سری dependency داشته باشه ) و یا اگه می‌خواید از سورس نصب کنید ، اینجا رو ببینید. برای نصب در ویندوز خیلی راحته. فقط کافیه فایل باینری رو از اینجا بگیرید. بعد فایل رو Extract کنید و داخل یکی از درایوهاتون بریزید. حتی نیازی به دانلود خود PHP هم ندارید و یک نسخه به صورت پیشفرض داخلش هست. کافیه مثالی که در ادامه بحث می‌کنم رو داخل این پوشه بریزید و php filename.php رو بزنید. برای نصب در MacOSX اینجا رو ببینید.

(بقیه در ادامه‌ی مطلب)

» ادامه مطلب

بروزرسانی ITLPoll نسخه‌ی ۳٫۰٫۴ منتشر شد

خوب دوستان عزیز همون‌طور که قول داده بودم ، بیشتر از ۱ روز بر روی ITLPoll کار کردم و باگ Session Hijack که در قسمت مدیریت ITLPoll وجود داشت رو درست کردم. متاسفانه این باگ خیلی خیلی بچه‌گانه‌یی بود که نمی‌دونم چطور همچین اشتباه عجیبی مرتکب شده بودم. این باگ از اونجا ناشی می‌شد که برای جلسه‌ی مدیریت فقط نام‌کاربری رو ذخیره می‌کردم و خوب یک کاربر شرور (!) می‌تونه یک جلسه‌ی قلابی بفرسته و وارد مدیریت بشه.

البته مهم‌ترین کار این نسخه رفع این مشکل هست ولی یک سری مشکلات در SQLها و کدهای HTML قالب‌ها در جاهای مختلف وجود داشت که درستشون کردم.

همچنین کل سیستم رو از جاهای مختلف که قبلا روی itlpoll.sourceforge.net و itlpoll.trilexnet.com بودند ، به itlpoll.com منتقل کردم و منبع اصلی چک کردن آخرین نسخه هم وب‌سایت رسمی شد.

نکته‌ی مهم دیگه اینکه ، یک ستون به جدول prefix_users (که prefix رو خودتون قبلا هنگام نصب انتخاب کردید ) با نام last_session برای جلوگیری از باگ اضافه کردم که ID جلسه‌ی جاری کاربر رو ذخیره می‌کنه تا از دسترسی غیرمجاز کاربران دیگه جلوگیری کنه. پس برای بروزرسانی یا بایستی به صورت دستی یک ستون با نام last_session از نوع char 40 درست کنید. و یا اینکه بانک اطلاعاتی قبلی رو بیخیال بشید و دوباره نصب کنید.

در نهایت ، این نسخه رو می‌تونید از اینجا دانلود کنید.

برای تست رابط کاربر نهایی اینجا و برای تست رابط مدیران اینجا را کلیک کنید.
(نام‌کاربری: demo رمز عبور : demo)

————————————————————

تست دموی آخرین نسخه‌ی فارسی :

به لینک‌های آخر این صفحه مراجعه کنید.

ـــــــــــــــــــــــــــــــــــــــــ

پ.ن: بعد از آخرین امتحانم بر روی نسخه‌ی ۳٫۱ کار خواهم کرد. که قول می‌دم چیز خیلی جالبی در بیاد. از مهم‌ترین ویژگی‌هاش امکان فعال‌کردن بیشتر از یک نظرسنجی به طور همزمان هست که می‌تونید یک نظرخواهی تمام‌عیار رو داشته باشید. پس فعلا ;)

=-=-=-=-=
Powered by Blogilo

بدون شرح ! (به‌روز شد)

به‌روز رسانی : دوستان عزیز ، امتحاناتم تقریبا تموم شده و از امروز به بعد نوشتن رو دوباره شروع می‌کنم. از فردا بر روی ITLPoll کار خواهم کرد. در همین ابتدا یک باگ Session Hijack در قسمت مدیریت پیدا کردم که اون رو رفع می‌کنم و احتمالا چند قابلیت دیگه بهش اضافه خواهم کرد. پس فعلا ! ;)

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

دوستان عزیز همون طور که می‌دونید امتحانات پایان ترم شروع شده و تا حدودای ۱۵ تیر امتحان داریم و کمتر پیش میاد که پست بزنم. بعد از امتحانات حتما دوباره شروع می‌کنم و البته روی یک نسخه‌ی جدید از ITLPoll کار خواهم کرد و بعد از اون هم که درس خوندن جدی برای ارشد شروع میشه.
دو تا عکس بدون شرح که برای ترم گذشته هستند.

مقاله : معرفی AppleTalk

فکر کنم این ترم بیشترین تعداد مقاله‌ها و تحقیق‌ها رو داشتم. ( البته جای ذکر هست که هیچ کدوم از این نوشته‌ها رو نمیشه به عنوان یک مقاله‌ی علمی و تحقیقاتی به حساب آورد و اینها فقط مقاله‌های آموزشی هستند )

مقاله‌ای که می‌خواهم معرفی کنم ، کاملا ترجمه‌ی مقاله‌ای در این آدرس از سایت سیسکو است. ( با عنوان Internetworking Technology Handbook – AppleTalk )

داستان ترجمه‌ی این مقاله جالب هست. حدودا نیمه‌ی ترم ، استاد شبکه‌ی ۲ ما به دلیل داشتن سمت معاون دانشکده ، کلاس ما رو نتونست ادامه بده و یک استاد دیگه برامون آوردن که البته بسیار بسیار مسلط هستند. سر کلاس نمی‌دونم چطوری شد که چشمم افتاد به جمله‌ای که در کتاب تنن باوم بود که نوشته بود : «در TCP/IP هم همانند دیگر پروتکل‌های AppleTalk و IPX قابلیت اطمینان در لایه‌های بالاتر بررسی می‌شود» که البته این دو پروتکل AppleTalk و IPX رو خیلی جاهای دیگه از همین کتاب دیده بودم ولی جایی توضیح داده نشده بود. همین طوری پرسیدم که استاد اگه ممکنه در مورد AppleTalk و IPX اگه وقت کلاس رو نمیگیره توضیحی بدید. که بعد از چندبار تکرار کردن اسم این دو پروتکل گفتند که نمی‌دونم !!

جلسه‌ی بعد در کمال ناباوری گفتند که شما باید برای هفته‌ی بعد ارائه‌ی AppleTalk رو آماده کنید و بیایید برای بجه‌ها ارائه بدید و برای امتحان هم مطرح می‌شود (!) به هر حال بعد از تحقیق فهمیدم که افتادم توی یک پروتکل اختصاصی فقط برای کامپیوترهای Mac و تجهیزات Apple . راه برون رفت هم نبود.

به هر حال هرچند این مقاله زیاد باب طبع خودم نبود، اما مقاله رو ترجمه کردم و با یک سری اطلاعات که از ویکی‌پدیا و جاهای مختلف دیگه جمع آوری کرده بودم سر کلاس ارائه دادم و بد هم نبود. جالب اینکه بر طبق گفته‌ی ویکی‌پدیا از AppleTalk دیگر حتی در سیستم‌عامل اختصاصی Mac یعنی Mac OS X از سال ۲۰۰۹ پشتیبانی به عمل نمی‌آید ( یعنی از نسخه‌ی Mac OS X v10.6 به بعد )

از این داستان که بگذریم ، در این مقاله ابتدا به بررسی اجزای هر شبکه‌ی AppleTalk پرداخته شده و به طور مؤکدی نگاشت هر پروتکل در AppleTalk به مدل مرجع OSI بررسی شده است. به بررسی پیاده‌سازی‌های مختلف به طور مثال در لایه‌ی پیوند داده برای انواع شبکه‌های رایج به صورت معادل آن‌ها با نام EtherTalk برای Ethernet و TokenTalk برای Token Ring و FDDITalk برای ANSI FDDI و LocalTalk برای شبکه‌های لوکال تجهیزات اختصاصی اپل پرداخته شده است. سپس به بررسی پیاده‌سازی‌های مختلف در لایه‌های شبکه (Datagram Delivery Protocol ) و لایه‌ی انتقال ، جلسه و ارائه و کاربرد پرداخته شده و در هر مرحله نگاشت آن‌ها به مدل مرجع OSI نشان داده شده است.

» ادامه مطلب