اگر مثل من با Ctrl+Shift+2 نیمفاصله میزنید، با ویژوال استودیو کار دارید و نهایتاً باید هر از چند گاه در محیط این نرمافزار فارسی تایپ کنید احتمالاً متوجه شدهاید که تایپ نیمفاصله در محیط این نرمافزار در حالت پیشفرض ممکن نیست (من تا به حال با کپی مشکل را حل میکردم!). علت هم مشخص است: این کلید ترکیبی با یکی از میانبرهای ویژوال استودیو تداخل میکند. چند روز پیش یکی از همکاران میانبر متداخل 😉 را پیدا کرد (View.BrowsePrevious). برای حل مشکل از طریق پنجرهی Options این نرمافزار آن را غیرفعال کنید یا تغییر دهید (تصویر را ببینید).
Category: برنامهنویسی
رومیزی نو
کمی روی گنجور رومیزی کار کردم. حالا بالایش یک نوار ابزار دارد با چند دکمه، پایینش یک نوار وضعیت و خوب! یک کارهایی هم میکند 😉 . برایش یک نصاب ساختم و پروژه را به سایت سورس فورج منتقل کردم. تصویری از آن را ببینید:
دوستانی که آن فایل ۲۱ مگابایتی پیشین را دریافت کردهاند کافی است فقط این فایل اجرایی را دریافت کنند و آن را در پوشهای که برنامه را در آن باز کردهاند جایگزین فایل قبلی کنند. باقی دوستان، در صورت تمایل برنامه را از اینجا دریافت کنند.
خوراکی برای فیلمها
میدانید؟! شبها پیش از این که بخوابم، بیشتر وقتها، -دیگر فکر میکنم برایم عادت شده-، به طور ناخودآگاه یک لحظه چشمم را باز میکنم و تاریکی روبهرو را نگاه میکنم. فکر میکنم به این که الان کجا هستم، پارسال کجا بودم، چند سال پیش کجا بودم و آن وقتها دوست داشتم الان کجا باشم. میدانید؟! مثل برق دارد میگذرد روزها و ساعتها. نه این که واقعاً هدف مهمی داشته باشم و از نرسیدن به آن حسرت بخورم، نه! فقط دوست دارم این روزها و ساعتهایی را که پشت سر میگذارم ازشان یک خروجی، یک یادگاری داشته باشم. بدانم که این ساعتها را تلف نکردهام. میدانید؟! گاهی فکر میکنم به این که اگر من، فردا، دیگر بیدار نشوم از دنیا چه چیزی کم میشود. آیا اصلاً اگر کل من و زندگی من را از فهرست آدمهایی که تا به حال آمدهاند و رفتهاند حذف کنند اتفاق مهمی میافتد؟! جواب تأسفآوری را که به آن میرسم احتمالاً خودتان میتوانید حدس بزنید.
بگذریم! روی همان حساب پاراگراف اول دوست دارم خیلی از کارهایی را که میکنم -هر چند اهمیت چندانی نداشته باشند- مستند کنم. کارهایی با حداقل ارزش دیدن یک عکس خوب و دیدن یک فیلم. در راستای فعالیت دوم، افزونهای را بر روی وردپرس نصب کردهام که به من امکان ثبت فهرست فیلمهایی را که دیدهام میدهد (نشانی این افزونه). به کمک این افزونه میتوان به کمک یک نشانک (بوکمارکلت) به آسانی دیدن فیلمها را ثبت کرد، علاوه بر آن، به آنها امتیاز داد و یک توضیح یا نقد کوچک راجع به آنها نوشت. نهایتاً فهرست فیلمها را در قالب یک صفحهی مجزا و یک ابزارک وردپرس منتشر کرد. فهرست فیلمهایی را که تا به حال به کمک این افزونه دیده شدنشان را ثبت کردهام اینجا ببینید.
فکر میکنم یک سال و نیمی هست که من این افزونه را نصب کردهام و از آن زمان تا حالا این افزونه چندان تغییری نکرده و بهروزرسانی عمدهای برای آن ارائه نشده. به همین لحاظ این افزونه نقصهایی هم دارد. یکی از نقصهای آن عدم ارائهی خروجی آر.اس.اس (خوراک) است.
امروز به نظرم رسید که خروجی خوراکی برای این افزونه درست کنم و آن را به حساب کاربری فرندفیدم اضافه کنم. کمی جستجو کردم و کدی که در ادامه میبینید نتیجهی این جستجوهاست. اگر بخواهید برای وردپرس خروجی خوراک بدلخواه درست کنید باید از چنین ساختاری استفاده کنید. خروجی نهایی یک افزونهی ساده است. با امید این که نویسندهی اصلی این افزونه بالاخره روزی خروجی خوراک را به آن اضافه خواهد کرد تمام چیزهایی را که میتوانستند «انتخابی» باشند در متن کد گذاشتهام (عنوان خوراک، نشانی، تعداد و …) و اگر خواستید از آن استفاده کنید باید این موارد را ویرایش کنید. ضمن آن که افزونهی امتیازدهی به فیلمها در وبلاگ من در پوشهی wp_movie_ratings نصب شده و افزونهی نوشته شده توسط من برای این که درست کار کند باید در ریشهی پوشهی افزونهها قرار گیرد و اگر غیر از این میخواهید باشد باید آن را ویرایش کنید.
این برنامهنویسهای بامزه
«گوشت خوک» توی وبلاگ من چه غلطی میکنه؟ من گیاهخوارم!
وردپرس وبلاگم را بهروز کردم، داشتم دوری در محیط جدید میزدم که در قسمت آمارهای اکیسمت این جمله را دیدم (وردپرس -قابل دریافت از این نشانی– سیستم مدیریت وبلاگ من است و اکیسمت افزونهای برای وردپرس است که جلوی نظرات هرز را میگیرد). طراحان اکیسمت در برابر «اسپم» (=نظرات هرز که اتفاقاً نام نوعی خوراکی هم هست) واژهی «هم» (=گوشت خوک) را برای نظرات واقعی و غیرهرز گذاشتهاند و خوب! در متن کوتاهی با عنوان بامزهی بالایی جریان را توضیح دادهاند.
برنامهنویسها -حتی اگر ذاتاً آدمهای بامزهای نباشند- معمولاً مجال زیادی برای کارهای -ظاهراً- بامزه دارند که متأسفانه – یا خوشبختانه- خیلی از این مزهپراکنیها را کاربر نهایی نرمافزار نمیبیند و در سطح کد باقی میماند. اگر برنامهنویس ویژوال سی بوده باشید -از نوع قدیمیترهایش- احتمالاً مقالات و نمونهکدهای پل دیلاسیا را دیدهاید و خواندهاید و با توضیحات توأم با شوخیش برخورد کردهاید (تلفظ درست اسم این آقا را -اگر کسی میداند- بگوید، بیشتر از این آبرویمان نرود). امضای او در میان فایلهای برنامههایش این است: «اگر این کد کار کرد پل دیلاسیا آن را نوشته و اگر نه، من نمیدانم چه کسی آن را نوشته!» خوب! ممکن است چندان بامزه به نظر نرسد، اما قبول کنید که وقتی چند ده دقیقه به صفحهی مانیتور خیره شدهاید و کلی کد مزخرف بیربط به اتفاقی که نهایتاً قرار است بیفتد را خواندهاید و هنوز هیچ چی نفهمیدهاید دیدن جملهی
Stop beating your head, you might hurt yourself!
از هر جوکی که ممکن است فکرش را بکنید خندهدارتر به نظر میرسد (و البته واقعاً کمک میکند که به خودتان کمتر صدمه بزنید). بعضی جملات بامزهی معروف دیلاسیا را اینجا بخوانید.
البته بعضی وقتها کارهای بامزهی برنامهنویسها عمداً یا اشتباهاً در دیدرس کاربر نهایی قرار میگیرد. مثلاً این یکی از پیغامهای یکی از ویرایشهای وینامپ است که زمانی معروف شده بود و حرفش در اینترنت پیچیده بود (منبع عکس):
«… . این اتفاق در واقع هرگز نباید بیفتد!»
برنامهنویسان وردپرس پیش از این هم کارهای بامزه -و این یکی واقعاً بامزه- کردهاند. اگر وبلاگ مبتنی بر وردپرس دارید (ویرایش ۲.۶ یا ۲.۷)، صفحهی ویرایش یک مطلب قدیمی را بیاورید. از کادر «Post Revisions» (بازنگریهای نوشته) موردی را انتخاب کنید و سپس آن مطلب را با خودش مقایسه کنید. تصاویر زیر نشان دهندهی بخشی از اتفاقی است که بعد از این کار میافتد:
وقت میگذرانیم!
۱) تنبلی مفید و تنبلی مضر
میدانید؟! آدم تنبل دو جور داریم، درستتر بگویم «آدم» دو جور تنبلی میکند. یک جور تنبلی، «تنبلی مضر» است و یک جور دیگر «تنبلی مفید». فرض کنیم «شما قرار است کاری را انجام دهید»، و فارغ از این که چقدر تنبلید و چقدر میخواهید تنبلی کنید، چون «خودتان میخواهید آن کار را انجام دهید» یا خدای نکرده (که در مورد من مصداق ندارد) «مجبورید» آن کار را انجام دهید، «آن کار را انجام میدهید». فهمیدید که؟!
سه گانه
۱) دلفی را از بورلند خریدند
بالاخره شرکتی پیدا شد که دلفی و مجموعهی محصولات برنامهنویسی شرکت بورلند را -که پیشتر در قالب بخشی به نام کدگیر از آن جدا شده بود- از این شرکت بخرد. مالک جدید دلفی و برادرخواندههایش، شرکت امبرکدرو (Embarcadero) است (اعلام رسمی این خبر در سایت این شرکت). مبلغ فروش ۲۳ میلیون دلار اعلام شده که به نظر من باورنکردنی و بسیار پایینتر از حداقلهایی است که میشد برای قیمت مالکیت این محصولات در نظر گرفت (البته فقط محصولات نیست، در متن خبر رسمی امبرکدرو آمده که این شرکت زیرمجموعهی کدگیر را از بورلند خریداری کرده، این مبلغ را مقایسه کنید با یک میلیارد دلاری که اخیراً شرکت سان برای خرید شرکت مایاسکیو (ارائهدهندهی محصولات کدباز پایگاه داده) پرداخت کرد). منبع اولیهی خبر من اینجاست.
۲) کاراگاه پروندههای خرابی ویندوز
اگر تا به حال پیش آمده باشد که بخواهید از نحوهی عملکرد داخلی برنامههای ویندوزی سر در بیاورید (خدای نکرده نیت سوئی نسبت به یک نرمافزار محافظت شده با قفل 😉 داشته باشید یا …) به احتمال زیاد از برنامههایی همانند Process Explorer، Process Monitor و مانند آنها استفاده کردهاید. خالق این برنامههای سودمند شخصی است به نام مارک راسینویچ که پیشتر در قالب شرکتی به نام وینترنالز یک دوجین از برنامههای عیبیابی و نظارت بر عملکرد برنامههای ویندوزی را تهیه کرد و پس از آن که مایکروسافت شرکتش را خریداری کرد کارمند مایکروسافت شد.
یافتهی او دربارهی نحوهی عملکرد فناوری محافظتی به کار گرفته شده در سیدیهای صوتی عرضه شده توسط شرکت سونی بی.ام.جی در سال ۲۰۰۵، باعث طرح دعواهای حقوقی بر علیه این شرکت به جرم تجاوز به حریم خصوصی خریداران شد. راسینویچ فهمید که فناوری مزبور متکی به نصب روتکیت بر روی سیستم عامل کاربران است. روتکیت برنامه یا مجموعهای از برنامههاست که کنترل یک سیستم عامل را بدون اخذ مجوز از کاربر به دست میگیرد، بسیاری از برنامههای مخرب (خاصه تروجانها) با استفاده از سازوکار نصب روتکیت توانایی انتقال اطلاعات ذخیره شده بر روی کامپیوترها را بدون اطلاع کاربر به دست میآورند. اعلام این یافته توسط راسینویچ و پیامدهای بعدی آن باعث شد شرکت سونی بی.ام.جی مجبور شود فناوری محافظتی مزبور را کنار بگذارد.
آقای راسینویچ وبلاگی دارد که در آن با زبانی کاراگاه گونه و شیرین موارد خرابی ویندوز و برنامههای مبتنی بر آن و روش یافتن عامل این گونه مشکلات را شرح میدهد. برای او هر خرابی نرمافزاری یک پرونده است که در آن جرمی اتفاق افتاده (خراب شدن ویندوز). این وسط، یکی از برنامهها یا کتابخانههای پویای نصب شده بر روی ویندوز مجرم است. راسینویچ با دنبال کردن سرنخهای به جا مانده مظنونها را یکی یکی تبرئه میکند یا در فهرست مطنونین نگه میدارد تا به مجرم اصلی برسد.
وبلاگ فنی راسینویچ را اینجا بخوانید. پروندهی خرابیهای گاه به گاه مدیا پلیر و اینترنت اکسپلورر، پروندهی کپی ناموفق فایل و پروندهی نرمافزار امنیتی ناامن نمونههایی از نوشتههای راسینویچ هستند که با مطالعهی آنها میتوانیم چیزهایی مثل روش بررسی فایلهای گزارش خطای ویندوز، روشهای گام به گام عیبیابی برنامهها و رفع آنها و … را بیاموزیم.
۳) بازیی که تقلب در آن شیرین است
این روزها مشکلاتی دارم (از این دست: +، +) که حلشان مستلزم پذیرش مشکلات دیگری است و از آنجا که من آدمی هستم که خیلی راحت با مشکلاتم کنار میآیم، به نحوی که سعی میکنم اصلاً به راه حل آنها فکر نکنم 😉 ، این روزها توجهم به تفریحات کامپیوتری بیشتر شده، هر چند نرخ فیلم دیدنم پایین آمده، اما میزان وقتی که برای بازی کردن صرف میکنم دو چندان شده. فعلاً در بازیهای دووم ۳ و کماندوز : مقصد برلین به بنبست خوردهام، اما با یک دور تکرار شاهزادهی ایرانی ۱ (شنهای زمان) پیش میروم و مهمتر از آن بازی وارکرفت ۳ بیشتر وقتم را پر میکند. در مورد این آخری، چیزی که برایم جالب است این است که این بازی مثال نقض قاعدهای است که پیشتر به آن معتقد بودم. قبلاً فکر میکردم که استفاده از کدهای تقلب کمک میکند به این که راحت بشود اعتیاد به بازیها را کنار گذاشت. اما در مورد این یکی به نظر میرسد که این راه حل جواب نمیدهد و کدهای تقلب این بازی اثر معکوس دارند و بازی را بعضی وقتها شیرینتر میکنند. وارکرفت یک بازی استراتژیکی (شهرسازی، جنگ تمدنها، داستانهای از پیش آماده) به حساب میآید که داستان و شخصیتهایی در مایههای کتاب تالکین و فیلم ارباب حلقهها دارد، البته فکر میکنم با تفاوتهایی از قبیل این که در این بازی ارکها همیشه آن موجودات خبیث و شیطانی ارباب حلقهها نیستند و مانند آن.
برنامهنویسان فضانورد
زندگینامه میخوانیم
میدانید؟! احتمالاً من فقط نیستم، همه اینطوری هستند: همهی ما توی زندگیمان احتیاج به قهرمان، سرمشق یا الگو داریم. به هر حال من یکی که علاقهی عجیبی دارم به این که اسم هر آدم جالبی را که در حین وبگردیهایم به آن میخورم یک بار توی ویکیپدیا دنبالش بگردم و زندگینامهاش را بخوانم.
راحتتر بگردیم
گفتم گشتن، میدانید که فایرفاکس یک جعبهی جستجو دارد که به کمک آن میتوانید از طریق موتورهای جستجوی عمومی یا تخصصی دنبال مطالب مورد نظرتان بگردید (شماره ۲ این نوشته را ببینید). آخرین نگارش اینترنت اکسپلورر (نگارش ۷) هم نظیر همین جعبه را اضافه کرده و هر دوی این مرورگرها از استاندارد مشابهی برای این کار استفاده میکنند.
چیزی که من اخیراً متوجه آن شدهام این است که در صورتی که سایتی که در آن قرار دارید از استاندارد باز جستجو پشتیبانی کند میتوانید با باز کردن منوی جعبهی جستجوی مرورگر از این قابلیت مطلع شوید و با یک کلیک امکان جستجو در سایت مورد نظر را به کمک مرورگرتان فراهم کنید (اکثر سایتهای بزرگ و معروف از این استاندارد پشتیبانی میکنند، اضافه کردن پشتیبانی آن به سایت هم کار آسانی است و حتی ابزارهایی هم برای آسانتر کردن این کار وجود دارد).
قابلیت توکاری که فایرفاکس دارد و اینترنت اکسپلورر ۷ ندارد
گفتم اینترنت اکسپلورر یکی از قابلیتهای پراستفادهی فایرفاکس را اضافه کرده، بد ندیدم به یک قابلیت توکار به درد بخور (در واقع ضروری!) فایرفاکس -که فکر میکنم اینترنت اکسپلورر آن را ندارد- اشاره کنم (توکار یعنی نیازی به نصب افزونهی خاصی ندارد).
اینترنت اکسپلورر ۷ مثل فایرفاکس از برگه یا تب پشتیبانی میکند (میشود چند سایت یا صفحهی وب را همزمان در یک پنجرهی مرورگر باز داشت و از طریق همان پنجره بین آنها جابهجا شد). این کار وبگردی را خیلی آسان میکند و باعث میشود بتوانیم به راحتی مطالب مرتبط از چندین سایت مختلف را در یک برگه داشته باشیم. اگر کاربر تازهکار فایرفاکس هستید به شما توصیه میکنم دکمهی برگهی جدید را به نوار ابزارتان اضافه کنید تا راحتتر بتوانید سایتها را در برگههای جدید باز کنید:
علاوه بر این بد نیست بدانید که با کلیک وسط بر روی هر لینک میتوانید آن را در یک برگهی جدید باز کنید. اما در صورتی که از کلیک وسط برای دستیابی به نرمافزاری مثل دیکشنری ببیلون استفاده میکنید با کلید ترکیبی کنترل+کلیک چپ هم میتوانید لینکها را در برگهی جدید باز کنید.
داشتم میگفتم: بعضی وقتها پیش میآید که اشتباهی برگهای را میبندیم یا اصلاً بعد از آن که برگهای را بستیم پشیمان میشویم (در واقع به قول یکی از دوستان، نیاز به دکمهی غلط کردم 😉 داریم). در این حالت میتوانیم با کلیک راست روی نوار برگههای فایرفاکس و انتخاب عنوان Undo Close Tab آخرین برگهی بسته شده را باز کنیم و این کار را به تعداد لازم تکرار کنیم تا به برگهی مورد نظر برسیم. قابلیتی که اینترنت اکسپلورر آن را ندارد:
فناوری جستجو در سال ۲۰۱۹؟!
باز هم در مورد جستجو: دیروز داشتم فیلم جزیره را نگاه میکردم، یک چیز جالبی در مورد فناوری جستجو در این فیلم هست. داستان فیلم در سال ۲۰۱۹ میلادی اتفاق میافتد. در آن سال طبق روایت این فیلم یک سری کیوسک جستجوی اطلاعات در شهرها قرار داده شده که قهرمانان فیلم میتوانند با استفاده از یکی از آنها مشخصات و محل زندگی فرد مورد نظرشان را پیدا کنند. فکر میکنید فناوری این کیوسکها مال چه شرکتی است؟ گوگل؟! اشتباه میکنید:
فناوری جستجوی ام.اس.ان است که به یاری قهرمانان فیلم میآید. اما یک لحظه صبر کنید! به نظر میرسد که این فناوری حتی در سال ۲۰۰۷ دیگر حضور جدی ندارد و حداقل نامش عوض شده (شده لایو سرچ) و احتمال آن که در دههی دوم قرن بیست و یکم فناوری غالب باشد خیلی کمتر شده. به هر حال، فیلم در سال ۲۰۰۵ ساخته شده و علاوه بر مایکروسافت، شرکتهایی مثل سیسکو، نوکیا و اپل نیز جزء پشتیبانان مالی آن بودهاند (منبع).
یک چیز جالب دیگر هم در این فیلم دیدم و آن وجود دستگاهی شبیه مایکروسافت سرفیس در یکی از صحنههای فیلم است. ببینید:
داشتیم زندگینامه میخواندیم … 😉
چند روز پیش، در مطلبی، اشارهای دیدم به نام جان کارماک، یکی از طراحان اولیه و برنامهنویسان بازی دووم. از جمله ویژگیهای جالب زندگی این آقا این است که علاوه بر برنامهنویسی و کامپیوتر و بازی، یک علاقه و فعالیت جانبی دارد در مورد هوانوردی و ساخت سفینهی فضایی برای سفر توریستی به فضا (اینجا و اینجا را ببینید).
امروز هم در مطلب دیگری اشارهای دیدم به نام مارک شاتلورث راهبر تیم برنامهنویسی لینوکس اوبونتو، که او هم (جدا از این که اصلاً توی اسمش «شاتل» دارد 😉 ) در کنار علاقههای کامپیوتریش، آنقدر به فضا و سفرهای فضایی علاقمند بوده که در سال ۲۰۰۲ دومین نفری بوده که به خرج خودش و به صورت توریستی راهی فضا شده.
این تشابهها به نظرم جالب آمدند!
استانداردهای رابط کاربری برای نرمافزارهای فارسی
(۱)
تا به حال شده احساس کنید ویرایش جدید نرمافزاری که معمولاً از آن استفاده میکنید ظاهری عجیب، غیر متعارف یا حتی آزاردهنده پیدا کرده است؟! ظاهری که استفاده از آن را سخت کرده و شما نمیتوانید به راحتی گزینههای لازم برای کار با نرمافزار را پیدا کنید؟! به عنوان نمونه اگر کاربر اینترنت اکسپلورر ۶ بوده باشید احتمالاً در اولین مواجهه با ظاهر ویرایش جدید آن (۷) از این که منوی اصلی آن حذف شده (در واقع پنهان شده) تعجب خواهید کرد و مدتی طول میکشد تا بتوانید جای گزینههای نرمافزار را در ویرایش جدید پیدا کنید.
ادامه خواندن “استانداردهای رابط کاربری برای نرمافزارهای فارسی”
پرل
پرل (واژهای بر گرفته از حروف اوّل عبارت انگليسی به معنای زبان استخراج و گزارشگيری کاربردی) در اواسط دههی ۸۰ به وسيلهی لری وال که پيش از آن نيز معرّف چندين برنامهی مهم برای يونيکس بود ايجاد شد. با ظهور وب در اوايل دههی ۹۰ پرل به يکی از زبانهای محبوب برای برنامهنويسی سی.جی.آی تبديل شد.
هدف اصلی پرل به گفتهی خالق آن “آسان کردن کارهای آسان و امکانپذير نمودن کارهای مشکل” است. زبانهای برنامهنويسی زيادی شما را وادار میکنند پيش از آن که به مسألهای که میخواهيد آن را حل کنيد بپردازيد زمان غيرضروری زيادی را صرف انجام کارهايی بکنيد تا زبان را راضی نگه داريد. پرل به شما اجازه میدهد که بدون نگرانی در مورد چيزهايی مثل اختصاص حافظه و تعيين نوع متغيّرها کار خود را به انجام برسانيد.
چطور شد که شد؟
دیروز «گنج ادب» را به یکی از همکارانم نشان دادم و قرار شد پایگاه دادههای آن را در اختیارش بگذارم تا از آن برای دستیابی به تخمینهای آماری مورد نیازش در طراحی یک نرمافزار بازشناسی نوری نویسههای فارسی (OCR) استفاده کند. بد ندیدم -با توجه به این که در آیندهی اینجا به عنوان وبلاگ و سایت شخصی، جایی برای چنین برنامهای نمیبینم- در مورد این که چطور این اطلاعات را استخراج کردم و چطور از وردپرس برای راهاندازی این مجموعه کمک گرفتم توضیحاتی بدهم، ممکن است این توضیحات کمکی باشد برای کسانی که میخواهند در کمترین زمان ممکن و با استفاده از سیستمهای مدیریت محتوای آماده چنین کارهایی را انجام دهند.