یک وبلاگ دیگر از یک برنامه نویس دیگر
بایگانی برای فوریه, 2010
Reset CSS
بهمن ۲۹م
همیشه توضیح اینکه چطوری میشه که همه بروزرها یه سایت رو به یه شکل نشون ندن و همه اونها سایت رو یک دست نشون بدن عذاب آور بوده. در حقیقت من میخوام اینبار یه کم درباره این قضیه که اصولا بهش Reset CSS هم میگن توضیح بدم. یه سری مسایل دیگه هم هست که در مورد CSS میتونه کمک کنه، البته این مسایل شاید یه کم قدیمی باشن برای حرفه ای ها ولی قبلا هم تو یه کامنت، در جواب یه کامنت دیگه گفتم، اگه حرفه ای نیست و اصلا بدرد نمیخوره میتونید راحت چشمتونو ببندید و یه سایت دیگه رو باز کنید که حرفه ای تره :D.
اینکه هر بروزری یه تفسیری از استاندارد داره خودش به اندازه کافی بد هست. اما اینکه هر بروزر یه چیزی رو بعنوان پیشفرض در نظر میگیره دیگه قابل چشمپوشی نیست. مثلا اگه یه عنصر margin نداشته باشه، یعنی صریحا براش یه مقدار تو سی اس اس استفاده نشده باشه اونوقت چی؟ همینو در باره border یا padding در نظر بگیرید. یا مثلا تگهایی مثل abbr یا del و امثال اینها، پیشفرضشون چیه؟ تگهای منطقی چی؟ strong تو طراحی هر کسی میتونه یه معنی داشته باشه، البته اینکه تقریبا همه بروزرها strong رو به عنوان بولد تتفسیر میکنن چیزی رو عوض نمیکنه،strong, em یا همه این تگها منطقی هستن و طرز تلقی شما از اونها مهمه.
اینجاست که Reset کردن سی اس اس بداد میرسه. این قسمت رو در نظر بگیرید :
ادامه مطلب
MySQL , Menu قسمت دوم
بهمن ۲۵م
این پست رو برای اضافه کردن یه سری قابلیت جدید و رفع یه باگ ویرایش کردم. :D
قبل از شروع بگم اصل این ایده رو یکی از دوستام داد، اونم از وب خونده بود. منتها من هیچ چیز مدوّنی از این مطلب نتونستم پیدا کنم هنوز (نگشتم اگه راستشو بخواید) خواستم پیشاپیش بگم، چون حقیقتا به این مساله اهمیت میدم، احترام به حق دیگران.
توی پست قبل، روشی رو بررسی کردم که توی اون روش، از یه سری کوئری ساده استفاده میشد که یه جور منو از دیتابیس بارگذاری بشه (منظور نمایش نیست، فقط بارگذاری منو از دیتابیس به آرایه ، از MySQL به PHP ) ولی مشکل اساسی این بود که توی اون روش، زیادی قابلیت انعطافی وجود نداشت، درجه ها هم نمیشد از یه حدی بیشتر باشه و برای درجه های بالاتر باید کوئری تغییر میکرد که اینکار مستلزم زمان و کد بیشتره.
اما این دفعه روش طور دیگه ای هست. به جای روش قبلی، منو رو به این صورت در نظر بگیرید. (چیزی تغییر نکرده، فقط طرز نمایش عوض شده و به جای یه نمودار، یه سری آیتم تو در تو وجود داره)
جدولی که این دفعه قراره ساخته بشه، ساختار یه کم متفاوتی داره، به این صورت :
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`) ) ENGINE=MyISAM; INSERT INTO `adv_menu` (`id`, `name`, `data`, `lside`, `rside`) VALUES (1, 'Root', 'Root Data', 1, 24), (2, 'Home', 'Home Data', 2, 3), (3, 'Pages', 'Pages Data', 4, 13), (4, 'Articles', 'Articles Data', 14, 23), (5, 'PHP', 'PHP Data', 5, 10), (6, 'Delphi', 'Delphi Data', 11, 12), (7, 'SQL', 'SQL Data', 15, 16), (8, 'Ajax', 'Ajax Data', 17, 22), (9, 'Part2', 'Part2 Data', 18, 19), (10, 'Part1', 'Part1 Data', 20, 21), (11, 'OS', 'OS Data', 6, 7), (12, 'GTrans', 'GTrans Data', 8, 9);
Menu، MySQL و کلا هر چی با M شروع میشه
بهمن ۲۳م
اولین بار،برای ایجاد کردن یک منوی تو در تو، از یک روش ساده استفاده کردم. روشی که خیلی های دیگر هم از آن مطمئنا استفاده میکنند. (باز هم خیلی بی مقدمه شروع کردم !)
منظورم از منوهای تو در تو خیلی سادست، منوهای کناری سایتها. مثلا یه چیزی مثل شکل زیر:
با این فرض که این منوها قراره از دیتابیس خونده بشن (تو این مورد mysql) و نمایش داده بشن. دیشب یه دوستی هم همین رو پرسید ازم که من اگه باشم چیکار میکنم، و بعد من یه راهی به ذهنم رسید که تا همین الان هم یه کله دارم روش کار میکنم.(البته بگم که یه دوست دیگه هم این ایده رو بهم داد و قرار شد لینکی که اصل ایده از اونجا بوده رو برام بفرسته، ولی این دوست من خیلی بد قوله!!) اول از همه روش قدیمی مو میگم و بعد روش جدیدمو . یعنی قسمت اول روشیه که تا به امروز استفاده میکردم و قسمت دوم روش جدیدیه که مد نظرمه،احتمالا اینو تو دو تا پست سرو سامون بدم تا شاید اون لینکی که دوستم گفت رو تا اون موقع پیدا کردم چون من الان فقط طرح کلیشو میدونم و بقیش کار خودمه و شاید اون بهتر بود.
فرض کنید همون شکلی که بالا هست رو میخوام پیاده کنم. جدولی با یه ساختار ساده ایجاد میکنم :
CREATE TABLE IF NOT EXISTS `simple_menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(60) NOT NULL, `parent` int(11) NOT NULL, `data` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM;
این روش،خیلی ساده میتونه برای منوهای تو در توی محدود استفاده بشه. مثلا تا ۴ درجه.(مثل همین تصویر اگر که ریشه رو هم یک درجه حساب کنید)و البته قسمت دیتا هم اصلا استفاده ای توی مثال من نداره و مثلا میتونه لینکی باشه که این منو قراره به اون ما رو هدایت بکنه یا یه چیزی شبیه این. تو این مثال، ما زیاد اونو جدی نمیگیریم :)
مثلا برای این تصویر اطلاعات مورد نیاز من خواهد بود :
INSERT INTO `simple_menu` (`id`, `name`, `parent`, `data`) VALUES (1, 'Root', 0, 'Root Data'), (2, 'Home', 1, 'Home Data'), (3, 'Pages', 1, 'Pages Data'), (4, 'Articles', 1, 'Articles Data'), (5, 'PHP', 3, 'PHP Data'), (6, 'Delphi', 3, 'Delphi Data'), (7, 'SQL', 4, 'SQL Data'), (8, 'Ajax', 4, 'Ajax Data'), (9, 'OS', 5, 'OS Data'), (10, 'GTrans', 5, 'GTrans Data'), (11, 'Part1', 8, 'Part1 Data'), (12, 'Part2', 8, 'Part2 Data');
لینوکس و شوقی که گم کرده بودم
بهمن ۲۱م
خیلی سال پیش، وقتی برای اولین بار یک کامپیوتر دیدم،بلافاصله فهمیدم که کلا همه زندگی ام عوض شده. شاید قبل تر متوجه شده بودم، وقتی که اول ابتدایی بودم و آتاری را برای اولین بار دیدم و آن بازی هواپیمای معروف را! طوری بود که با اینکه به جای مدرسه در یک دژ نظامی بودیم من از مدرسه فرار میکردم و به این کلوپهای آتاری میرفتم. بچه اول ابتدایی وقتی گردن کلفتهای پنجم مثل سگ میترسیدند از ترکه ناظم و مدیر!! البته همیشه انقدر حواسم جمع بود که گیر نیفتم :) -ریزه میزه بودم، بر خلاف الان، وکلاسها هم که به برکت تئوری فرزند بیشتر کوپن بیشتر ۴۰-۵۰ نفره بودن و یک معلم بیچاره که اگه تا ظهر اسم خودشو یادش میموند شاهکار کرده بود و اصلا نمیفهمید کی هست کی نیست تو این میزای ۴ نفره! البته بگذریم از اون دفعاتی که رفقا زحمت لو دادن رو میکشیدن!
اولین بار،برادر بزرگترم در مورد الگوریتم و کشیدن فلوچارت کمی برایم توضیح داد و طوری شده بود که مثل یک مریض روانی شده بودم، برای هر چیزی الگوریتم مینوشتم ،هر چیزی!
تا بالاخره برنامه نویسی را شروع کردم،به صورت جدی.
کم کم ، غرق شدم. باز هم به صورت جدی.
کم کم معتاد شدم به صورت جدی! و آخر سر متوجه شدم که هیچ لذتی وجود ندارد، شوقی برای یاد گرفتن ندارم، چون خیلی بی معنی شده، چی باید یاد بگیرم؟ اینجا کلیک کن، اونجوری میشه، فلان Api فلان کارو میکنه،همینه که هست! اگه اضافه میخوای بشین ببین فلان کمپانی تغییری میده تو اصل این قضیه؟ به یه باگ برخوردی؟ خوب منتظر شو تا پچش بیاد.
آخرش؟ فلان زبان برنامه نویسی رو با بهمان IDE حرفه ای شدی؟ دمت گرم! ولی شرمندتم، کمپانی صاحبش تصمیم گرفته که کلا از بیخ و بن عوضش کنه! اگه میخوای به روز پیش بری همینه که هست!
اونوقت بود که تصمیم گرفتم! شاید همین بیهودگی بود که تصمیم گرفتم دست بردارم از اون چیزی که بهش میگن راحتی! بهش میکن فراوانی نرم افزار، بهش میگن راحتی نصب درایور، بهش میگن بهترین محیط برای بازی (بازی، شوقی که هنوز هم دارم! میترسم دخترم که بزرگتر شد عاقل اندر سفیه نگاهم کنه! کما اینکه الان خیلی ها اینکارو میکنن.)
آره،یه حقیقته که هنوز مشکل دارم با درایور کارت گرافیکم، هنوز نتونستم خیلی کارها رو به همون راحتی انجام بدم که قبلا انجام میدادم، خیلی چیزها نیست!! آره خیلی بازیها رو از دست دادم! ولی حالا انگار که دوباره دارم از مدرسه فرار میکنم که سری بزنم به کلوپ آتاری کوچه بالایی، انگار هنوز دارم رشوه میدم به هم میزی هام. انگار هنوز دارم واسه حل کردن یه تناسب ساده الگوریتم مینویسم.
نمیدونم شاید با مزه باشه ولی فقط نوشتن یه اسکریپت ساده، خیلی ساده واسه تغییر اسم یه سری فایل بر اساس یه الگوی خیلی ساده باعث شد که این پستو بنویسم. با مزه تر اینکه اینکارو تو ویندوز خیلی ساده با یه دستور ren انجام میدادم و اصلا حتی یک بار هم فکر نمیکردم که انجام چنین کاری، چنین شوقی را برایم ایجاد کند.
واسه خنده، ببینید این اسکریپتو :
#!/bin/sh
for i in *
do
if [ "${i##*.}" = "zip" ]
then
#echo $i appears to be a Zip.
ext=cbz
elif [ "${i##*.}" = "rar" ]
then
#echo $i appears to be a RAR.
ext=cbr
else
#echo $i appears to be a not supported.
continue
fi
j=`echo $i | cut -d . -f 1`
j=$j"."$ext
mv "$i" "$j"
done
حرفه ای ها نخندن! (دوست داری بخندی هم بخند، شاید خوشحال هم شدم!) فقط برای تغییر پسوند آرشیوهای کمیکم، کاری که قبلا اینطوری انجام میدادم :
ren *.zip *.cbz ren *.rar *.cbr
آره، من این سادگی رو نمیخوام. فقط همین!
متفرقه – ۱
بهمن ۱۴م
قصد نداشتم تا ۷-۸ روز دیگر پست جدیدی بنویسم. اما :(
اول از همه اینکه امروز متوجه شدم که SourceForge هم به جمع تحریم کنندگان ایران پیوست و بعد از شرکت های دیگر مثل گوگل، نوکیا و سان، سایت sf.net دیگر اجازه دانلود فایلهای خود را به کشور ایران نمیدهد. این یعنی فاجعه ! من یکی که تقریبا یکی از دوست داشتنی ترین سایتها را از دست دادم (البته اگر به امید این اینترنت لکنته ایران باشم :دی ) دلیل اصلی نوشتن این پست هم همین مطلب بود، که چون خیلی کوتاه بود دو تا مطلب کوتاه دیگر هم مینویسم.
دوم، هرگز از table برای فرمت دهی صفحات استفاده نکنید. دست کم من که اصلا از table برای اینکار استفاده نمیکنم و خواهش میکنم شما هم اینکار را انجام ندهید. خیلی جالب بود، چند وقت پیش برخوردم به سایت http://shouldiusetablesforlayout.com ! ببینیدش (اسم را ببینید و محتوا را).
سوم، من تا حد ممکن برنامه نویسی ویندوز را کنار گذاشتم. تقریبا این یک اعلام رسمی است! همین جا اعلام میکنم که فقط از نرم افزارهایی استفاده میکنم که مجاز به استفاده از آنها هستم (یعنی یا اینکه لیسانس آنها اجازه استفاده به من را میدهد،یا اینکه لیسانس آنها را خریده ام و به صورت قانونی در اختیار دارم) و به همین دلیل ساده، چون امکان خرید ویندوز برای من نیست (نه اینکه پول ندارم :دی حیفم می آید که پولم را صرف خرید ویندوز کنم خصوصا که دارم جمع میکنم که لیسانس Zend Studio را که نزدیک آخرش هست تمدید کنم!) بنابراین از ویندوز استفاده نمیکنم!






