یک وبلاگ دیگر از یک برنامه نویس دیگر
بایگانی برای مارس, 2010
فایلهای CHM و لینوکس
اسفند ۲۵م
یکی از مشکلات من برای مهاجرت به لینوکس، فایلهای CHM بود. فایلهایی که به این صورت هستن،در حقیقت خیلی زیادن. کلی e-Book بود و راهنمای خیلیی از ابزارهایی که استفاده میکنم هم به این فرمت هست. مثلا PHP، البته مثلا برای این یکی میشه یه جور دیگه هم دانلود کرد مثلا به فرمت HTML معمولی (تعداد زیادی فایل) که باب طبع من نیست. مدیریت این خیلی راحت تره، معمولا امکان جستجوش که خیلی مهمه و عنوانبندی هم میتونه مفید باشه. حالا ایندکس زیاد مهم نیست.
البته میشه ازwine هم استفاده کرد، ولی این رو اصلا به عنوان یه راه حل در نظر نمیگیرم چون اصولا ترجیح میدم که از خود لینوکس استفاده کنم، اگه ویندوز میخواستم که مهاجرت نمیکردم!!! توی برنامه های لینوکس نمایشگرهای مناسبی هست. همه رو امتحان کردم، بد نبودن (غیر از kchmviewer که امتحان نکردم و نمیدونم) اما باز هم همه مشکل داشتن. مهمترین مشکل این بود که بی دلیل یهو میپریدن بیرون. همین!! نمیدونم چه مرگشون بود! علاوه بر این با بوکمارکهای وسط صفحه مشکل داشتن (دست کم اونی که من ازش خوشم اومد مشکل داشت CHM Viewer ). یعنی لینک به وسط صفحه رو میرفت به اول صفحه که خوب این خیلی بد بود :) این شد که بازم گشتم دنبال یه راه حل مناسب تر.
آخر سر به این نتیجه رسیدم که بهتره یه راهی پیدا کنم که فرمت CHM رو با یه فرمتی تو لینوکس عوض کنم. انتخابم هم DevHelp بود. بعد از کلی گشتن راهشو پیدا کردم. یه برنامه مناسب برای تبدیل فایل های CHM به DevHelp و نصب اونها توی DevHelp.
ادامه مطلب
عطا و لقای برنامه نویس
اسفند ۲۳م
یه کتاب داره اخوان ثالث (روحش شاد) به اسم عطا و لقای نیما یوشیج. این کتاب و کتاب دیگه اون بدعت ها و بدایع نیما یوشیج یه جورایی مهر تاییدی بود تو زمان خودش بر شعر نو که خیلی ها داشتن متهمش میکردن به اینکه شعر نیست و از این حرفها. البته منظورم کتاب اوله، همون عطا و لقا.
تو اون کتاب یه چیزایی رو توضیح داده در مورد شاعرهای قدیمی و در آخر در مورد نیمای بزرگ، و گفته اینها، عطای این شاعر هاست. میخوای شعرشونو بخون، نمیخوای عطاشونو ببخش به لقاشون و برو. نخون شعرشونو و به همین سادگی از کنارشون رد شو.
حالا این چه ربطی داره به من که مسلما شاعر نیستم؟ (گرچه خیلی شعر میخونم و یا کلا اینکه خیلی میخونم) آنچنان بی ربط هم نیست.
این روزها همه چی تو عالم برنامه نویسی عذاب آور شده و برنامه نویسها عذابی میکشن گاهی که مپرس!!! علت؟ خدا لعنتشون کنه کمپانی های بزرگ برنامه نویسی رو! مثلا اگه آفیس ورداشته و این حالت استارت منو رو ایجاد کرده (همین ست ریبون توی دلفی جدید) من هم باید واسه یه برنامه ساده و کوچیک یه همچین کاری رو انجام بدم.
اگه مثلا تو Gmail یه امکانی اضافه بشه اونوقت منم باید همون کار رو انجام بدم تو یه سایت ساده که روزانه ۱۰ تا بازدید داشته باشه باید هزار بار خدا رو شکر کنه! آقا من نمیخوام شبیه اونا بنویسم. منم واسه خودم یه روشی دارم. یه جور کار میکنم. اینکه فلان سایت اینطوریه یا بهمان برنامه اونطوری کار میکنه به من چه؟
گاهی وقتها بدتر هم میشه! مثلا یه کاری هست باید سه تا کلیک بکنی تا انجام شه. یه کلیک که یه لیست بیاد، اگه نیازه یه قسمت از اسم کاربرها رو بزنه و بعد یه کاربرو با یه کلیک (یا دوبار کلیک) انتخاب کنی بعد هم تایید و تمام. حالا طرف اومده میگه این سخته!!! کاربر خیلی سختشه!! ۳ تا کلیک!!! (انگار داره از ۳ تن بار یا ساختن اهرام ثلاثه صحبت میکنه!!!) یه کلیک بکنه، اول اسمو تایپ کنه و بعد از یه لیست افتادنی یه کاربر رو انتخاب کنه (مسلما با یه کلیک :o ) یه Enter بزنه و تمام. بابا من نمیفهمم؟ چه فرقی داره؟ این بالش از اون بالش مساوی تره لابد! یه کاربر به این تنبلی اصلا چرا میاد سر کار؟ بشینه یه گوشه تا از گشنگی بمیره خوب!!! من که زیر بار حرف زور نمیرم!
یا اینکه چپ و راست شروع میکنه گیر دادنای بنی اسرائیلی و تازه میگه که من Tester خوبی هستم! یکی نیست بگه که به جای ۱۰۰ تا ایراد الکی ۱ ایراد درست و حسابی بگیر. حرف هم که بزنی میشی غر غرو! (گیرم که باشم، مهم نیست من اینجوریم نمیخوای؟ غلط کردی!!!)
مثلا وسط کار میاد میگه این قسمتو یه کاری کن که Drag & Drop بشه فایل و تو لیست اضافه بشه (به جای دیالوگ معمولی انتخاب فایل، یا در حقیقت در کنار همون) میگن معلمی به شاگردش گفت بنویس الف. ننوشت. کتکش زد ننوشت التماس کرد ننوشت. آخرش پرسید چرا؟ شاگرده گفت اگه بنویسم الف اونوقت تا ی باید بنویسم. قضیه ای تو مایه های همین که میگه Darg & Drop بذار. اینو بذاری فردا میگه خوب حالا یه کاری کن که پنجره بالای همه پنجره ها وایسه. اینکارو که بکنی میگه حالا میگه نه، این مشکل ایجاد میکنه، یه دکمه بذار هر دفعه خواست پنجره رو همه پنجره ها وایسه هر وقت نخواست عادی شه. بعد میگه نه،اینطوری هم نمیشه، یه پنجره کوچیک اضافه کن، تا توی اون که انداخت فایلو خودش اضافه بشه. بعد میگه این پنجره کوچیکه هست، رنگش زیاد جالب نیست چشم (کور شه) کاربر خسته میشه، آبی کن رنگشو. بعد میگه ای وای!!! فلان نرم افزار هم همینو داره اونم آبیه اگه احیانا کاربر اونم نصب کنه ممکنه قاطی بشه سبزش کن. بعد میاد میگه بابا رنگ سبزو از پرچم هم دارن حذف میکنن، قرمزش کن و…. بگذریم از مشکلات و باگهایی که ممکنه به خاطر این قابلیت بدرد نخور پیش بیاد!
بعد از همه این حرفها یواشکی یه کد میذاری که بشمره تعداد دفعاتی که از این قابلیت استفاده شده و بعد میبینی ۳ دفعه استفاده شده که اونم طرف اشتباهی My Computer رو کشیده توش دو دفعه دیگه هم مربوط بوده به Recycle Bin !
خوب بابا جان من اینطوری بهتر میبینم. من، من، نکنم؟ پس بگم چی؟ کاربر کاربر کنم؟ فلان فلان کاربر!! بابا کاربر ها تو ایران نوبرن!! پشت تلفن به یکی گفتم سمت چپ فرم یه دکمه هست، گفت سمت چپ من یا تو!!!!!! حالا اینه که میگم ما برنامه نویسها هم عطا و لقا داریم خوب. بابا هر کی یه روشی داره دلیلی هم نداره روش من با روش فلانی یا فلان کمپانی بزرگ یکی باشه. اینه که هست. میخوای بفرما نمیخوای به سلامت!!
سال نو نزدیکه ولی با این کار و این مشتری که من دارم بعیده برسم پست بزنم، اگه زدم که این تبریک رو میزنم به حسابتون وگرنه سال نو مبارک (پیشاپیش)
فوت کوزه گری!
اسفند ۱۳م
گاهی یک فوت کوزه گری رو دونستن میتونه کلی بدادت برسه و از کلی دردسر نجاتت بده! یه قابلیت که توی فایلهای PHP هست اینه که اگه فایل PHP شما قرار نیست که ادامه داشته باشه یعنی قرار نیست بعد از اینکه کد تموم شد،ادامه فایل به صورت HTML باشه، اونوقت میتونید از گذاشتن علامت ?> در انتهای کد خودداری کنید. راستشو بخواید اول که این قابلیت رو دیدم کلا نفهمیدم به چه دردی میخوره یا اگه بیشتر راستشو بخواید به خودم گفتم این قابلیت اصلا احمقانه و به درد نخوره (نتیجه اخلاقی این پست اینه که زود قضاوت نکنید! ) ولی امشب فهمیدم که نخیر! اینطورا هم نیست!
قضیه اینطوریه که یه کدی دارم مینویسم که قراره یه تصویر رو از یه فایل بخونه و به خروجی بده (تابع readfile() از اون توابعیه که بعضیا کمتر میشناسنش!!) همه چی درست بود (البته در ظاهر) اما فایرفاکس خروجی رو نشون نمیداد. نتیجه رو که بررسی میکردم متوجه شدم که Content-Type هم درست ارسال میشه، ولی نمایش داده نمیشه. بارها و بارها کد رو بررسی کردم و هرچه بیشتر چک کردم کمتر نتیجه گرفتم.
تا بالاخره خروجی رو با یه ویرایشگر باینری (HexEditor ) چک کردم. نتیجه دو تا کاراکتر Space در ابتدای فایل تصویر بود. صفحات دیگه رو هم چک کردم. اونجا ها هم این دو تا کاراکتر اضافه بود، ولی خوب html مشکلی نداره با این فااصله های اضافی. فایلهای include شده رو یکی یکی بررسی کردم و آخر سر هم خرابکار، پروژه jDate خودم بود. توی یکی از فایلها بعد از پایان کد و تگ پایان PHP (یا همون ?> ) دو تا فاصله خورده بود. این فایل بعد از آغاز session و ارسال header ها استفاده شده بود و به همین دلیل مشکل خودشو توی اونها نشون نداده بود. جالبتر اینکه یه فایل دیگه هم پیدا کردم که دقیقا این مشکل رو داشت و یه Enter اضافه داشت، که خیلی پیش میاد تو یه ویرایشگر این اتفاق بیفته. تو همه فایلهای دوره ویندوزم هم این مشکل کم و بیش بود :) نتیجه گیری اینکه من از این به بعد کل فایلهایی که با کد PHP تموم میشن رو وقتی بنویسم، خصوصا فایلهایی که قرار نیست خروجی داشته باشن مثل همین کتابخونه ها، به همین صورت و بدون بستن کد PHP مینویسم، توصیه میکنم شما هم همین کارو بکنید. به دردسرش نمیرزه،این یه دفعه دقیقا ۴۵ دقیقه وقتمو گرفت!!
نکته دوم هم اینکه این پست اولین پست من با عینکه! دو سه روز پیش عینکی شدم!! :)
PHP و توابعی که کمتر استفاده میکنیم
اسفند ۵م
چند تا تابع هست که ممکنه شما ندیده باشیدشون. منم یه چند تایی رو میشناختم که هر کدوم یه وقتایی نجاتم داده بودن از کلی کد نویسی زاید. این شد که تصمیم گرفتم یه چند تایی رو معرفی کنم:
pack()
این تابع یک بار منو نجات داد. PHP برای عملیات بیتی مخصوصا روی فایلها کار چندانی انجام نداده. یعنی تمام توابع برخلاف زبانهای دیگه هستند. مثلا تابع fwrite یه رشته (string )رو توی فایل مینویسه و این یعنی یه مشکل :).
یه زمانی میخواستم برنامه ای بنویسم که یه فایلی ایجاد کنه که توی دلفی بخونمش،اونجا قضیه برعکسه. توی دلفی باینری یه انتخاب ساده تره. اینجا بود که تابع pack رو پیدا کردم این تابع برای ایجاد یک رشته باینری استفاده میشه. یعنی اگه این رشته رو توی یه فایل بنویسی خیلی راحت میتونی مثلا توی دلفی یا سی اونو از فایل بخونی. مثلا برای ایجاد کردن یه خط حاوی دو تا کاراکتر،یه int اینجوری میشه عمل کرد :
ادامه مطلب
CSS Messages
اسفند ۲م





