گزیر

::گاهنوشتهای حمیدرضا محمدی::



مشترک شوید:

ایمیل خود را در جعبه زیر وارد کنید و دکمه اشتراک را بزنید.

جستجو:

Valid XHTML 1.0 Transitional RSS Feed

لیستهای مرتب با اعداد فارسی

۸۸/۱۰/۱۵

تگ ol (لیست مرتب) در html در CSS ویرایش ۲ توانایی نمایش اعداد به صورت فارسی را ندارد (از اعداد لاتین، رومی و ارمنی(!) پشتیبانی می‌کند اما اعداد را به صورت عربی یا فارسی نمی‌تواند نشان دهد). استایلهای انواع لیستها را در این استاندارد اینجا می‌توانید ببینید. در استاندارد جدیدتر گویا قرار است پشتیبانی از شکل اعداد فارسی هم اضافه شود.

چند وقتی است استقبالهای شاعران را از هم (حافظ از سعدی، حافظ از سلمان، سلمان ساوجی از سعدی و …) را با توجه به میزان مشابهت کلمات ابیات و همینطور با توجه به وزن و قافیهٔ اشعار استخراج کرده‌ام و در گنجور در دسترس قرار داده‌ام. دیروز به نظرم رسید بد نیست این فهرستها را با کمک تگ ol شماره‌گذاری کنم. اما با توجه به نکته‌ای که در پاراگراف قبل گفتم امکان نمایش درست اعداد در متن فارسی وجود نداشت. جستجویی کردم و به این صفحه رسیدم. نویسندهٔ مطلب به کمک جاوا اسکریپت مشکل را حل کرده. با کمک اسکریپت او، اسکریپت ساده‌ای نوشتم که امکان نمایش اعداد لیستهای مرتب را به صورت فارسی در اختیار می‌گذارد:

ادامه »

نوشته شده در ساعت ۲۲:۱۰

نوار لغزان با لغزندگی پایین

۸۸/۰۹/۲۰

یکی از ایرادهای گزارش شده برای ویرایشهای قدیمی‌تر گنجور رومیزی این بود که نوارهای لغزان آن با کمک کلیدهای جهتی نمی‌لغزد. در واقع اگر ویرایش ۱.۶۳ و پایین‌تر آن را آزمایش بکنید می‌بینید که مثلاً نوار لغزان عمودی آن را، اگر کلید جهتی پایین را همینطور فشار دهید، بعد از سه چهار ثانیه بالاخره تسلیم می‌شود و راه می‌افتد اما خوب! سخت راه می‌افتد (دلیلش از لحاظ برنامه‌نویسی احتمالاً این است که کلید جهتی مزبور در واقع فوکوس را دارد بین کنترلها جابجا می‌کند و به هر کدام چند میلی ثانیه اجازهٔ مالکیت آن را می‌دهد تا آخر سر نوبت به نوار لغزان می‌رسد). توی ویرایش جدیدتر این مشکل را حل کردم.

اما «چطورش» شاید به درد برنامه‌نویسهای (احتمالاً تازه‌کار یا کم‌سواد مثل خودم) ویندوز فرمز بخورد (چون راه حلش را با جستجو پیدا نکردم): کنترل اصلی گنجور رومیزی یک User Control ساده است که نشانی شعرها یا دسته‌های شعرها و همینطور شماره بیتها با استفاده از کنترلهای LinkLabel و مصرعها با استفاده از یک کنترل مشتق از Label روی آن تعبیه شده و ویژگی AutoScroll آن فعال است. به این ترتیب، با توجه به جای پایین‌ترین و سمت چپ‌ترین کنترل، نوارهای لغزندهٔ آن به طور خودکار ظاهر می‌شوند. من برای این که بتوانم کلیدهای جهتی را برای حرکت دادن نوارهای لغزان دریافت کنم رویداد PreviewKeyDown را برای این کنترل به صورت زیر نوشتم:

private void GanjoorViewer_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            bool isInputKey = true;
            switch (e.KeyCode)
            {
                case Keys.Down:
                    if (VerticalScroll.Value + VerticalScroll.SmallChange <= VerticalScroll.Maximum)
                        VerticalScroll.Value += VerticalScroll.SmallChange;
                    break;
                case Keys.Up:
                    if (VerticalScroll.Value – VerticalScroll.SmallChange >= VerticalScroll.Minimum)
                        VerticalScroll.Value -= VerticalScroll.SmallChange;
                    break;                   
                case Keys.PageDown:                   
                    for(int i=0; i<2; i++)//!?
                    if (VerticalScroll.Value + VerticalScroll.LargeChange <= VerticalScroll.Maximum)                       
                        VerticalScroll.Value += VerticalScroll.LargeChange;
                    else
                        VerticalScroll.Value = VerticalScroll.Maximum;
                    break;
                case Keys.PageUp:
                    for (int i = 0; i < 2; i++)//!?
                    if (VerticalScroll.Value – VerticalScroll.LargeChange >= VerticalScroll.Minimum)
                        VerticalScroll.Value -= VerticalScroll.LargeChange;
                    else
                        VerticalScroll.Value = VerticalScroll.Minimum;
                    break;               
                case Keys.Right:
                    if (HorizontalScroll.Value + HorizontalScroll.SmallChange <= HorizontalScroll.Maximum)
                        HorizontalScroll.Value += HorizontalScroll.SmallChange;
                    break;
                case Keys.Left:
                    if (HorizontalScroll.Value – HorizontalScroll.SmallChange >= HorizontalScroll.Minimum)
                        HorizontalScroll.Value -= HorizontalScroll.SmallChange;
                    break;
                default:
                    isInputKey = false;
                    break;
            }
            if (isInputKey)
                e.IsInputKey = true;
        }

در مورد حلقهٔ دوتایی کلیدهای PageDown و PageUp، دلیلش را نمی‌دانم ولی بدون اصرار ;) کار نمی‌کرد! بعد این رویداد را علاوه بر UserControl اصلی، همه جا، پس از ایجاد و اضافه کردن زیرکنترلهایش به آنها هم نسبت دادم:

private void AssignPreviewKeyDownEventToControls()
        {
            foreach (Control ctl in this.Controls)
                ctl.PreviewKeyDown += GanjoorViewer_PreviewKeyDown;
        }

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

نوشته شده در ساعت ۱۲:۲۲

گنجور رومیزی تحت لینوکس

۸۸/۰۷/۱۷

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

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

ناسازگاریهای گنجور رومیزی با مونو

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

در هر صورت، امروز فرصتی شد تا به کمک دیسک زنده‌ی مونو (قابل دریافت از اینجا) نظریه‌ی امکان اجرای برنامه را تحت لینوکس آزمایش کنم.

نتیجه آن که با جایگزینی اسمبلی مربوط به ارتباط با پایگاه داده‌های SQLite با نسخه‌ی کاملاً Managed (من نسخه‌ی جاری آن را از اینجا گرفتم) بدون نیاز به تغییر کد و در محیط مونو دِوِلپ می‌توان پروژه را باز و کامپایل کرد (جالب آن که یک خط کد زاید را مونودولپ پیدا می‌کند و در موردش هشدار می‌دهد که فکر می‌کنم ویژوال استودیو در موردش هشدار نمی‌دهد) و نهایتاً آن را از طریق این محیط یا به کمک خط فرمان اجرا کرد.

محیط برنامه‌نویسی مونو

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

صفحه‌ی اول گنجور رومیزی تحت دیسک زنده‌ی مونو
ترجیع بند معروف سعدی در گنجور رومیزی تحت لینوکس

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

خطای برنامه بعد از خروج ناخواسته

با این وصف، احتمالاً می‌توان به زودی مستقل بودن از سیستم عامل را به ویژگیهای برنامه‌های دات‌نتی اضافه کرد که پیش از این از جمله خاصیتهای منحصر به فرد برنامه‌های مبتنی بر جاوا بوده (و البته به دلیل نقائصش یا احتمالاً به دلیل حسادت برنامه‌نویسان سایر سکوها برایش جُکهایی مثل این ساخته‌اند: جاوا: یک بار بنویسید، همه جا اشکالش را بیابید!، یا این یکی).

پی‌نوشت: با لینوکس OpenSUSE نگارش ۱۱.۱ به صورت نصب کامل (که امکان تایپ عربی داشت) هم امتحان کردم. نتیجه همینی است که در تصاویر مشخص است. ضمن آن که برای اجرای برنامه‌ی دات‌نتی تحت مونو نیازی به کامپایل مجدد آن نیست و من بدون کامپایل مجدد و با استفاده از فایل اجرایی تولید شده توسط ویژوال استودیو، پس از جایگزینی اسمبلی مربوط به SQLite توانستم برنامه را به کمک فرمان mono اجرا کنم.

نوشته شده در ساعت ۱۷:۵۵

میانبر مزاحم

۸۸/۰۶/۱۳

اگر مثل من با Ctrl+Shift+2 نیم‌فاصله می‌زنید، با ویژوال استودیو کار دارید و نهایتاً باید هر از چند گاه در محیط این نرم‌افزار فارسی تایپ کنید احتمالاً متوجه شده‌اید که تایپ نیم‌فاصله در محیط این نرم‌افزار در حالت پیش‌فرض ممکن نیست (من تا به حال با کپی مشکل را حل می‌کردم!). علت هم مشخص است: این کلید ترکیبی با یکی از میانبرهای ویژوال استودیو تداخل می‌کند. چند روز پیش یکی از همکاران میانبر متداخل ;) را پیدا کرد (View.BrowsePrevious). برای حل مشکل از طریق پنجره‌ی Options این نرم‌افزار آن را غیرفعال کنید یا تغییر دهید (تصویر را ببینید).

Ctrl+Shift+2 یکی از میانبرهای پیش‌فرض ویژوال استودیو است

نوشته شده در ساعت ۱۶:۱۷

رومیزی نو

۸۸/۰۵/۰۲

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

گنجور رومیزی

دوستانی که آن فایل ۲۱ مگابایتی پیشین را دریافت کرده‌اند کافی است فقط این فایل اجرایی را دریافت کنند و آن را در پوشه‌ای که برنامه را در آن باز کرده‌اند جایگزین فایل قبلی کنند. باقی دوستان، در صورت تمایل برنامه را از اینجا دریافت کنند.

نوشته شده در ساعت ۱۵:۲۶

خوراکی برای فیلمها

۸۷/۱۱/۲۸

می‌دانید؟! شبها پیش از این که بخوابم، بیشتر وقتها، -دیگر فکر می‌کنم برایم عادت شده-، به طور ناخودآگاه یک لحظه چشمم را باز می‌کنم و تاریکی روبه‌رو را نگاه می‌کنم. فکر می‌کنم به این که الان کجا هستم، پارسال کجا بودم، چند سال پیش کجا بودم و آن وقتها دوست داشتم الان کجا باشم. می‌دانید؟! مثل برق دارد می‌گذرد روزها و ساعتها. نه این که واقعاً هدف مهمی داشته باشم و از نرسیدن به آن حسرت بخورم، نه! فقط دوست دارم این روزها و ساعتهایی را که پشت سر می‌گذارم ازشان یک خروجی، یک یادگاری داشته باشم. بدانم که این ساعتها را تلف نکرده‌ام. می‌دانید؟! گاهی فکر می‌کنم به این که اگر من، فردا، دیگر بیدار نشوم از دنیا چه چیزی کم می‌شود. آیا اصلاً اگر کل من و زندگی من را از فهرست آدمهایی که تا به حال آمده‌اند و رفته‌اند حذف کنند اتفاق مهمی می‌افتد؟! جواب تأسف‌آوری را که به آن می‌رسم احتمالاً خودتان می‌توانید حدس بزنید.

بگذریم! روی همان حساب پاراگراف اول دوست دارم خیلی از کارهایی را که می‌کنم -هر چند اهمیت چندانی نداشته باشند- مستند کنم. کارهایی با حداقل ارزش دیدن یک عکس خوب و دیدن یک فیلم. در راستای فعالیت دوم، افزونه‌ای را بر روی وردپرس نصب کرده‌ام که به من امکان ثبت فهرست فیلمهایی را که دیده‌ام می‌دهد (نشانی این افزونه). به کمک این افزونه می‌توان به کمک یک نشانک (بوکمارکلت) به آسانی دیدن فیلمها را ثبت کرد، علاوه بر آن، به آنها امتیاز داد و یک توضیح یا نقد کوچک راجع به آنها نوشت. نهایتاً فهرست فیلمها را در قالب یک صفحه‌ی مجزا و یک ابزارک وردپرس منتشر کرد. فهرست فیلمهایی را که تا به حال به کمک این افزونه دیده شدنشان را ثبت کرده‌ام اینجا ببینید.

فیلمهایی که دیده‌ام

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

امروز به نظرم رسید که خروجی خوراکی برای این افزونه درست کنم و آن را به حساب کاربری فرندفیدم اضافه کنم. کمی جستجو کردم و کدی که در ادامه می‌بینید نتیجه‌ی این جستجوهاست. اگر بخواهید برای وردپرس خروجی خوراک بدلخواه درست کنید باید از چنین ساختاری استفاده کنید. خروجی نهایی یک افزونه‌ی ساده است. با امید این که نویسنده‌ی اصلی این افزونه بالاخره روزی خروجی خوراک را به آن اضافه خواهد کرد تمام چیزهایی را که می‌توانستند «انتخابی» باشند در متن کد گذاشته‌ام (عنوان خوراک، نشانی، تعداد و …) و اگر خواستید از آن استفاده کنید باید این موارد را ویرایش کنید. ضمن آن که افزونه‌ی امتیازدهی به فیلمها در وبلاگ من در پوشه‌ی wp_movie_ratings نصب شده و افزونه‌ی نوشته شده توسط من برای این که درست کار کند باید در ریشه‌ی پوشه‌ی افزونه‌ها قرار گیرد و اگر غیر از این می‌خواهید باشد باید آن را ویرایش کنید.

ادامه »

نوشته شده در ساعت ۲۱:۳۳

این برنامه‏نویسهای بامزه

۸۷/۱۰/۲۴

پیغام اکیسمت

«گوشت خوک» توی وبلاگ من چه غلطی می‌کنه؟ من گیاهخوارم!

وردپرس وبلاگم را به‌روز کردم، داشتم دوری در محیط جدید می‌زدم که در قسمت آمارهای اکیسمت این جمله را دیدم (وردپرس -قابل دریافت از این نشانی- سیستم مدیریت وبلاگ من است و اکیسمت افزونه‌ای برای وردپرس است که جلوی نظرات هرز را می‌گیرد). طراحان اکیسمت در برابر «اسپم» (=نظرات هرز که اتفاقاً نام نوعی خوراکی هم هست) واژه‌ی «هم» (=گوشت خوک) را برای نظرات واقعی و غیرهرز گذاشته‌اند و خوب! در متن کوتاهی با عنوان بامزه‌ی بالایی جریان را توضیح داده‌اند.

برنامه‌نویسها -حتی اگر ذاتاً آدمهای بامزه‌ای نباشند- معمولاً مجال زیادی برای کارهای -ظاهراً- بامزه دارند که متأسفانه – یا خوشبختانه- خیلی از این مزه‌پراکنیها را کاربر نهایی نرم‌افزار نمی‌بیند و در سطح کد باقی می‌ماند. اگر برنامه‌نویس ویژوال سی بوده باشید -از نوع قدیمی‌ترهایش- احتمالاً مقالات و نمونه‌کدهای پل دیلاسیا را دیده‌اید و خوانده‌اید و با توضیحات توأم با شوخیش برخورد کرده‌اید (تلفظ درست اسم این آقا را -اگر کسی می‌داند- بگوید، بیشتر از این آبرویمان نرود). امضای او در میان فایلهای برنامه‌هایش این است: «اگر این کد کار کرد پل دیلاسیا آن را نوشته و اگر نه، من نمی‌دانم چه کسی آن را نوشته!» خوب! ممکن است چندان بامزه به نظر نرسد، اما قبول کنید که وقتی چند ده دقیقه به صفحه‌ی مانیتور خیره شده‌اید و کلی کد مزخرف بی‌ربط به اتفاقی که نهایتاً قرار است بیفتد را خوانده‌اید و هنوز هیچ چی نفهمیده‌اید دیدن جمله‌ی

Stop beating your head, you might hurt yourself!

از هر جوکی که ممکن است فکرش را بکنید خنده‌دارتر به نظر می‌رسد (و البته واقعاً کمک می‌کند که به خودتان کمتر صدمه بزنید). بعضی جملات بامزه‌ی معروف دیلاسیا را اینجا بخوانید.

البته بعضی وقتها کارهای بامزه‌ی برنامه‌نویسها عمداً یا اشتباهاً در دیدرس کاربر نهایی قرار می‌گیرد. مثلاً این یکی از پیغامهای یکی از ویرایشهای وین‌امپ است که زمانی معروف شده بود و حرفش در اینترنت پیچیده بود (منبع عکس):

پیغام با مزه‌ی وین امپ

«… . این اتفاق در واقع هرگز نباید بیفتد!»

برنامه‌نویسان وردپرس پیش از این هم کارهای بامزه -و این یکی واقعاً بامزه- کرده‌اند. اگر وبلاگ مبتنی بر وردپرس دارید (ویرایش ۲.۶ یا ۲.۷)، صفحه‌ی ویرایش یک مطلب قدیمی را بیاورید. از کادر «Post Revisions» (بازنگریهای نوشته) موردی را انتخاب کنید و سپس آن مطلب را با خودش مقایسه کنید. تصاویر زیر نشان دهنده‌ی بخشی از اتفاقی است که بعد از این کار می‌افتد:

ماتریکس وردپرس

نوشته شده در ساعت ۲۲:۳۳

وقت می‌گذرانیم!

۸۷/۰۳/۱۸

۱) تنبلی مفید و تنبلی مضر

می‌دانید؟! آدم تنبل دو جور داریم، درست‌تر بگویم «آدم» دو جور تنبلی می‌کند. یک جور تنبلی، «تنبلی مضر» است و یک جور دیگر «تنبلی مفید». فرض کنیم «شما قرار است کاری را انجام دهید»، و فارغ از این که چقدر تنبلید و چقدر می‌خواهید تنبلی کنید، چون «خودتان می‌خواهید آن کار را انجام دهید» یا خدای نکرده (که در مورد من مصداق ندارد) «مجبورید» آن کار را انجام دهید، «آن کار را انجام می‌دهید». فهمیدید که؟!

ادامه »

نوشته شده در ساعت ۱۹:۰۱

سه گانه

۸۷/۰۳/۱۳

۱) دلفی را از بورلند خریدند

بالاخره شرکتی پیدا شد که دلفی و مجموعه‌ی محصولات برنامه‌نویسی شرکت بورلند را -که پیش‌تر در قالب بخشی به نام کدگیر از آن جدا شده بود- از این شرکت بخرد. مالک جدید دلفی و برادرخوانده‌هایش، شرکت امبرکدرو (Embarcadero) است (اعلام رسمی این خبر در سایت این شرکت). مبلغ فروش ۲۳ میلیون دلار اعلام شده که به نظر من باورنکردنی و بسیار پایین‌تر از حداقلهایی است که می‌شد برای قیمت مالکیت این محصولات در نظر گرفت (البته فقط محصولات نیست، در متن خبر رسمی امبرکدرو آمده که این شرکت زیرمجموعه‌ی کدگیر را از بورلند خریداری کرده، این مبلغ را مقایسه کنید با یک میلیارد دلاری که اخیراً شرکت سان برای خرید شرکت مای‌اس‌کیو (ارائه‌دهنده‌ی محصولات کدباز پایگاه داده‌) پرداخت کرد). منبع اولیه‌ی خبر من اینجاست.

۲) کاراگاه پرونده‌های خرابی ویندوز

اگر تا به حال پیش آمده باشد که بخواهید از نحوه‌ی عملکرد داخلی برنامه‌های ویندوزی سر در بیاورید (خدای نکرده نیت سوئی نسبت به یک نرم‌افزار محافظت شده با قفل ;) داشته باشید یا …) به احتمال زیاد از برنامه‌هایی همانند Process Explorer، Process Monitor و مانند آنها استفاده کرده‌اید. خالق این برنامه‌های سودمند شخصی است به نام مارک راسینویچ که پیش‌تر در قالب شرکتی به نام وینترنالز یک دوجین از برنامه‌های عیب‌یابی و نظارت بر عملکرد برنامه‌های ویندوزی را تهیه کرد و پس از آن که مایکروسافت شرکتش را خریداری کرد کارمند مایکروسافت شد.

یافته‌ی او درباره‌ی نحوه‌ی عملکرد فناوری محافظتی به کار گرفته شده در سی‌دی‌های صوتی عرضه شده توسط شرکت سونی بی.ام.جی در سال ۲۰۰۵، باعث طرح دعواهای حقوقی بر علیه این شرکت به جرم تجاوز به حریم خصوصی خریداران شد. راسینویچ فهمید که فناوری مزبور متکی به نصب روتکیت بر روی سیستم عامل کاربران است. روتکیت برنامه یا مجموعه‌ای از برنامه‌هاست که کنترل یک سیستم عامل را بدون اخذ مجوز از کاربر به دست می‌گیرد، بسیاری از برنامه‌های مخرب (خاصه تروجانها) با استفاده از سازوکار نصب روتکیت توانایی انتقال اطلاعات ذخیره شده بر روی کامپیوترها را بدون اطلاع کاربر به دست می‌آورند. اعلام این یافته توسط راسینویچ و پیامدهای بعدی آن باعث شد شرکت سونی بی.ام.جی مجبور شود فناوری محافظتی مزبور را کنار بگذارد.

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

وبلاگ فنی راسینویچ را اینجا بخوانید. پرونده‌ی خرابیهای گاه به گاه مدیا پلیر و اینترنت اکسپلورر، پرونده‌ی کپی ناموفق فایل و پرونده‌ی نرم‌افزار امنیتی ناامن نمونه‌هایی از نوشته‌های راسینویچ هستند که با مطالعه‌ی آنها می‌توانیم چیزهایی مثل روش بررسی فایلهای گزارش خطای ویندوز، روشهای گام به گام عیب‌یابی برنامه‌ها و رفع آنها و … را بیاموزیم.

۳) بازیی که تقلب در آن شیرین است

این روزها مشکلاتی دارم (از این دست: +، +) که حلشان مستلزم پذیرش مشکلات دیگری است و از آنجا که من آدمی هستم که خیلی راحت با مشکلاتم کنار می‌آیم، به نحوی که سعی می‌کنم اصلاً به راه حل آنها فکر نکنم ;) ، این روزها توجهم به تفریحات کامپیوتری بیشتر شده، هر چند نرخ فیلم دیدنم پایین آمده، اما میزان وقتی که برای بازی کردن صرف می‌کنم دو چندان شده. فعلاً در بازیهای دووم ۳ و کماندوز : مقصد برلین به بن‌بست خورده‌ام، اما با یک دور تکرار شاهزاده‌ی ایرانی ۱ (شنهای زمان) پیش می‌روم و مهمتر از آن بازی وارکرفت ۳ بیشتر وقتم را پر می‌کند. در مورد این آخری، چیزی که برایم جالب است این است که این بازی مثال نقض قاعده‌ای است که پیش‌تر به آن معتقد بودم. قبلاً فکر می‌کردم که استفاده از کدهای تقلب کمک می‌کند به این که راحت بشود اعتیاد به بازیها را کنار گذاشت. اما در مورد این یکی به نظر می‌رسد که این راه حل جواب نمی‌دهد و کدهای تقلب این بازی اثر معکوس دارند و بازی را بعضی وقتها شیرین‌تر می‌کنند. وارکرفت یک بازی استراتژیکی (شهرسازی، جنگ تمدنها، داستانهای از پیش آماده) به حساب می‌آید که داستان و شخصیتهایی در مایه‌های کتاب تالکین و فیلم ارباب حلقه‌ها دارد، البته فکر می‌کنم با تفاوتهایی از قبیل این که در این بازی ارک‌ها همیشه آن موجودات خبیث و شیطانی ارباب حلقه‌ها نیستند و مانند آن.

نوشته شده در ساعت ۲۳:۵۰

کدهای منبع نرم‌افزار کنتورخوانی گاز

۸۷/۰۳/۰۴

دوستان یادآوری کرده‌اند که من قرار بود کد منبع نرم‌افزارهای تولید شده در شرکت سابق منحل شده‌ام را آزاد کنم. ضمن تشکر از عنایت دوستان کدها را فعلاً در این صفحه در دسترس گذاشتم. این کدها نیاز به بازنگری و سازماندهی مجدد و ارائه‌ی توضیحاتی جهت نحوه‌ی کامپایل، نصب و استفاده دارند که در فرصت مناسب این کار را انجام خواهم داد. در هر صورت فکر می‌کنم کد برنامه‌ها به صورت حاضر هم می‌تواند برای برخی دوستان درگیر با سیستمهای جمع‌آوری اطلاعات بارکدی و حتی مبتنی بر برچسبهای آر.اف.آی.دی مفید باشد.

نوشته شده در ساعت ۲۱:۳۸