Mysql Menu قسمت سوم
مرداد ۱۲م, ۱۳۸۹
چند وقت پیش در باره منو و طریقه ایجاد آن با mysql نوشتم. منظورم بیشتر روش دومی بود که معرفی کردم. خودم تا همین روزها نیاز نشده بود که از این منو استفاده کنم، تا امروز برای کاری ار همان پست استفاده کردم. (این وبلاگ بیشتر از هر کسی گویا به درد خودم میخورد) میخواستم از همان کوئری ها استفاده کنم و یک ساختار تشکیل شده از ul و li های تو در تو درست کنم. اول سعی کردم اطلاعات را داخل آرایه بریزم که بعد به صورت html دربیاورم که متوجه شدم دارم لقمه دور سر میچرخانم.
با توجه به اینکه ساختار منو (لطفا پست MySQL , Menu قسمت دوم رو حتما بخونید) دقیقا شبیه ساحتار تو در توی html هست میشه از این خاصیت استفاده کرد :) یعنی اونجا همه منو های یه سمت چپ داشتن یه سمت راست، تو html هم هر تگی یه سمت چپ داره یه سمت راست. من میخوام یه ساختار منوی ساده با ul و li به وجود بیارم طوری که :
- عنصر دور تا دور فقط یه ul داره.
- عناصری که زیر مجموعه ندارن دورشون li میفته
- عناصری که زیر مجموعه دارن هم li میخوان هم ul .
- اگه آیتمی هیچ زیر منو نداشت اونوقت متن اون آیتم هم نشون داده بشه (شما اینو خودتون میتونید گسترش بدید، یا برای همه منوها آیتم رو نشون بدید، من ترجیح دادم سادهتر کار کنم.)
نتیجه خیلی سادست. فقط باید حالات مختلف رو بنویسم.ساختار دیتابیس اینه (مثل مثال قبلی ، فقط فیلد name به صورت unique در اومده برای اینکه توی کد باید به یه چیزی تکیه کرد ;) )
CREATE TABLE IF NOT EXISTS `adv_menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(60) NOT NULL, `data` varchar(255) NOT NULL, `lside` int(11) NOT NULL, `rside` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=MyISAM;
اینبار میخوام از PDO استفاده کنم برای اتصال به mysql . ایده خیلی سادست. فقط در نظر بگیرید که همونطور که قبلا گفتم (تو پست قبلی در این مورد) هر منو یه چپ داره یه راست.
خوب چی میشه اگه سمت چپ رو شروع تگ در نظر بگیریم و سمت راست رو پایان تگ؟ چی میشه اگه یه آرایه ایجاد کنیم به تعداد دو برابر آیتمها، با ایندکس ۱ تا دوبرابر آیتمها، بعد تو آرایه ایندکس سمت چپ تگ شروع html رو بذاریم (مثلا یه li یا یه ul بعد یه li یا هر چیز دیگه ای) و در ایندکس سمت راست هم دقیقا پایان همون تگ سمت راست رو (مثلا اینبار /li )، فقط کافیه بدونیم که مثلا آیتم اگه زیر مجموعه نداشت فقط li میخواد (که این فقط در صورتیه که سمت چپی یکی کمتر از سمت راستی باشه) اگه منوی دور تا دوره فقط یه ul میخواد (که خوب این هم سمت چپش همیشه ۱ میشه) و در غیر این صورت ul و li با هم.
خوب این خیلی ساده ایتمهای توی دیتابیس رو تبدیل میکنه به یه ساختار html و کافیه که اینبار فقط این آرایه رو به هم بچسبونیم و در خروجی نشون بدیم.
کد زیر کل این کارها رو به ساده ترین وجهی انجام میده، ولی باز هم جای کار داره، خیلی زیاد هم جای کار داره.
خواندن ادامه این مطلب »
دانلود از SourceForge بدون مشکل
تیر ۲۹م, ۱۳۸۹
اسکریپت رو اگه نصب کردید دوباره آپدیت کنید، چون sf یه تغییراتی تو لینک دانلود داده بود که حالا آپدیت شد
چند وقتی هست که SourceForge در یک اقدام “ناجوانمردانه” :D دانلود رو برای چند تا کشور به خصوص محدود کرده. البته این امکان هست که مدیر پروژه این محدودیت رو غیر فعال کنه ولی در صورتی که اینکار انجام نشده باشه مشکل پابرجاست.
این اسکریپتی که نوشتم (با فایرفاکس و Greasemonkey کار میکنه) به شما امکان میده بدون نیاز به هیچ وب سرویس یا برنامه ای با خود فایرفاکس یا هر دانلود منجری که روی فایرفاکس نصبه فایلها رو دانلود کنید. این اسکریپت مستقیما فایل رو از همون Mirror که توی SF استفاده میکنید دانلود میکنه.
برای اینکار به این چند تا گزینه احتیاجه :
اول فایرفاکس!!!
بعد از اون باید یک addon رو نصب کنید. این Addon اسمش Greasemonkey هست و به شما امکان اجرای userscripts رو میده.
بعد از نصب این addon حالا وقتشه که گام آخر رو انجام بدید. روی این لینک کلیک کنید
بعد از کلیک اگر Greasemonkey درست نصب باشه یه دیالوگ میاد و میپرسه که میخواید این اسکریپت نصب بشه؟ بزنید Install و تمام.
حالا هر فایل رو میخوایید میتونید از SourceForge بگیرید. خیلی ساده از صفحه پروژه دکمه دانلود رو بزنید اینبار دیگه مشکلی پیش نمیاد، دقیقا مثل قبل که ایران تحریم نبود میرید برای دانلود.
اگه میخواید توضیحات بیشتر این اسکریپت رو بخونید یا اینکه خدای ناکرده خدای ناکرده در بارش نظری بدید!!! به این آدرس رجوع کنید. اونجا هم دکمه Install هست که البته مثل لینک بالایی عمل میکنه و فرقی نداره.
فقط اینکه هنوز مشکل استفاده از GIT یا SVN و یا … هنوز وجود داره متاسفانه و تنها راهش اینه که مدیر پروژه دست به کار بشه و این مساله رو حل کنه. این هم حل نمیشه مگه اینکه ما خودمون از مدیر پروژه ها درخواست کنیم. برای پروژه Ubuntuzilla من درخواست دادم و مدیر پروژه محدودیت رو برداشت. بعید میدونم هیچکدوم از برنامه نویسهایی که تو SF فعالیت میکنن با این قضیه مشکلی داشته باشن.
zenity بخش اول
تیر ۲۶م, ۱۳۸۹
زنیتی (zenity) یک برنامه کوچک برای نمایش دیالوگ GTK+ از طریق خط فرمانه. این برنامه مجموعه کاملی از دیالوگها رو ارایه میده که میتونه برای نوشتن یک اسکریپت که دیگه از خط فرمان خارج بشه خیلی مفیده. به ترتیب دیالوگهای اون و انتخابهای (Options ) مربوط به هر دیالوگ رو توضیح میدم.
پیشنیار :
طبیعیه که zenity باید نصب بشه. برای نصبش :
# For ubuntu : apt-get install zenity # For Archlinux pacman -S zenity # Fedora yum install zenity
برای اجرای اون :
zenity [options...]
اما دیالوگهایی که zenity پشتیبانی میکنه.
- تقویم
- ورودی متن
- نمایش پنجره خطا
- انتخاب فایل
- نمایش پنجره اطلاعات
- لیست قابل انتخاب
- آیکون در System Tray
- دیالوگ پروگرس
- پنجره سوال
- پنجره حاوی متن بلند (مثل لیسانس)
- هشدار
- انتخاب عدد توسط اسلایدر
بعد از یک توضیح مختصر درباره انتخابهای عمومی یکی به یکی همه اینها رو معرفی میکنم (البته بیشتر از یک پست نیازه)
خواندن ادامه این مطلب »
ارسال mail از طریق Zend Framework
تیر ۲۲م, ۱۳۸۹
لطفا کامنتهای داخل کدها رو هم بخونید!! بعضیاشون واقعا ضروری هستن!
Zend Framework انتخاب من برای یک فریم ورک برای کار با PHP هستش. اینبار میخوام درباره چگونگی ارسال ایمیل به صورتی که بشه براش قالب ایجاد کرد بنویسم. این کد رو من خیلی وقت نیست که نوشتم. اگه مشکل داشت خوشحال میشم برام بنویسید تا بدونم.
برای استفاده باید چند تا کار انجام بدید. اول اینکه توی فایل تنظیمات برنامه خودتون یه سری اطلاعات اضافه کنید. اگه از ini استفاده میکنید اینو به فایل تنظیمات اضافه کنید :
mail.from= "you@yoursite.com" mail.name= "Your name" mail.templatePath=APPLICATION_PATH "/../../layouts/mails" mail.host=imap.yoursite.com mail.port=25 mail.param.auth=login mail.param.username=you@yoursite.com mail.param.password=yourpassword
اینو توی بخش مناسب بنویسید مثلا برای development توی بخش development و… فقط مساله templatePath هست که اونم آدرس رو عوض کنید با آدرسی که میخواید view های مربوط به ایمیل قرار بگیره. (این رو قطعا باید بر اساس پروژه خودتون عوض کنید)
گام بعدی اینه که تنظیمات رو بخونید. اینجوری (معمولا توی bootstrap):
//Load yor config CHANGE PATH TO YOUR CONFIG FILE!!!!!!
$config=new Zend_Config_Ini(APPLICATION_PATH . '/../../configs/application.ini',APPLICATION_ENV);
Zend_Registry::set('config',$config);
//Do your stuff......
//Now its time to setup mail system :D
$config=Zend_Registry::get('config');
$mailParams=$config->mail->toArray();
Zend_Registry::set('mail_params',$mailParams);
شکه نشید ولی تا الان هیچ کاری انجام نشده :) حالا وقت ایجاد Cybits_Utils_View_Helper_SendMail هستش. توی فولدر library چند تا فولدر باید درست شه :
خواندن ادامه این مطلب »
آرچ لینوکس، دیسترویی که میشناسمش
تیر ۱۸م, ۱۳۸۹
چند روزی هست که درگیر لینوکس بودم و نصب آرچ لینوکس. نسبت به نصب اوبونتو، نصب سخت تری داره ولی در نهایت میارزه که نصبش کنی چون به هر صورت یه لینوکس خام داری که خودت اونجوری که دوستش داری میسازیش نه اونجوری که دیگران ساختن.
در حقیقت این از همه بیشتر به اون چیزی که من میخواستم نزدیک بود، دوست داشتم لینوکسی داشته باشم که خودم همه چیز رو براش نصب کرده باشم، یا اگه دقیقتر بگم خودم انتخاب کرده باشم. الان هم دارم از همون لینوکس استفاده میکنم.
این قضیه که وقتی سیستم عامل رو نصب میکنیی هیچ چیزی نداره جز یه هسته و یک سری پکیج که واقعا لازم هستن، تو نظر اول ممکنه بد به نظر برسه ولی به نظر من بهتر از این نمیشه. میتونی از اول میز کارتو خودت انتخاب کنی و نصب کنی. فقط هم گنوم یا KDE نیست، میزکارهایی مثل Awesome یا OpenBox هم خوبن (OpenBox انتخاب منه) ساده و خوب. دیگه لازم نیست درگیر جزئیاتی بشی که کلی از وقتت رو میگیره.
دومین چیزی که از آرچ من خیلی پسندیدم، قضیه pacman یا همون مدیر پکیج های این دیسترو هستش. خیلی قدرتمنده و خیلی ساده. بیش از اندازه ساده. AUR هم یکی از نکات قدرت آرچه. خیلی ساده پکیج میسازی، بدون اینکه نیازی باشه که کل پکیج رو توی یک فایل جا بدی، یه فایل کوچیکه که باقیش همه به عهده makepkg و pacman هستش.
انقدر خوش دست و ساده، که من تو همون روزهای اول، پکیجهای خودم رو برای آرچ ایجاد کردم.
اولیش، Zend Server CE بزای آرچ و دومی هم phpmyadmin برای پکیج قبلی.
الان لینوکسی دارم که میشناسمش. همه چیزایی که روی سیستمم هست رو میشناسم. میدونم چی به چیه. واو به واو خودم سر همش کردم، از Splash وقت بالا اومدن تا میز کار و … با این لینوکس به خوبی یاد گرفتم که با گراب کار کنم و ………
