برنامه ریزی

hamster-applet

خلاصه

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

برای رهایی از این وضعیت هم روش‌های بسیاری را آزمایش کرده بودم ولی نتیجه‌ی دلخواهم را نگرفته بودم. با دیگر دوستانم هم صحبت کردم و بیش‌ترشان نیز همین مشکل را داشتند اما نارسیس و اشکان راه حل‌های خوبی پیشنهاد کردند و با کمی تغییر روش‌هایی که پیشنهاد کرده بودند به وضعیت بهتری نسبت به قبل رسیدم. البته از آنجایی که انسان کمالگرایی هستم هنوز راضی نیستم. در هر عکس زیر خلاصه‌ی ساعت‌هایی است که از ۲۹ فروردین تا ۱۱ اردیبهشت (دیروز) با استفاده از Hamster applet ثبت کرده‌ام. البته تعداد زیادی از جلسه‌ها را فراموش کرده‌ام ثبت کنم و روزانه ۲-۳ ساعت ورزش را نیز به آن اضافه کنید.

روش‌ها/راه‌حل‌‌های من را در این مطلب بخوانید.

دیدگاه‌ها(۸)

استفاده‌ی ترکیبی از دستور find

دستور find در سیستم عامل‌های یونیکس و شبه یونیکس یکی از قدرتمند ترین دستورها‌ست. با استفاده‌ی ترکیبی از این دستور می‌توان کار‌ جست‌و‌جو در محتوای فایل‌ها و تغییر در آن‌ها را با سرعت بالایی انجام داد. قصد ندارم این دستور را با همه‌ی جزئیات معرفی کنم زیرا برای مطالعه‌ی بیش‌تر می‌توانید از دستور man find استفاده کنید یا از نسخه‌ی آنلاین آن استفاده کنید. اولین موردی که می‌خواهم به آن اشاره کنم قابلیت شرط‌های منطقی است. به عنوان مثال شما به دنبال فایل‌هایی با پسوند php هستید اما می‌خواهید آن فایل‌ها در شاخه‌ی testing نباشند. به سادگی می‌توانید این عمل را با find انجام دهید:

find -iname "*.php" -and -not -path "./testing/*"

پس از پیدا کردن فایل‌ها و پوشه‌ها می‌توانید از سوییچ‌های exec و execdir استفاده کنید تا دستور مورد نیاز را روی پرونده‌ها و پوشه‌ها اعمال کنید. به عنوان مثال شما می‌خواهید تعدادی مقاله آماده کنید. نوشته‌های مربوط به مقاله‌ی «موزیک» را در پوشه‌ی music و نوشته‌های مقاله‌ی «ادبیات» را در پوشه‌ی literature قرار می‌دهید که آن دو در پوشه‌ی Articles هستند و متن‌ها را با پسوند txt ذخیره کرده‌اید. اما متوجه می‌شوید کلمه‌ای را در همه‌ی آن‌ها اشتباه نوشته‌اید و می‌خواهید آن را درست کنید. پس شما قصد دارید عمل find & replace را در همه‌ی فایل‌های txt که در پوشه‌ی Articles هستند، انجام دهید:

find /path/to/Article/ -iname "*.txt" -exec sed -i "s/find/replace/g" {} \;

می‌دانید با ذخیره‌ی فایل‌ها بیش‌تر ویرایش‌گر‌های گنو/لینوکس نسخه‌ی پشتیبان تهیه می‌کنند که نام فایل پشتیبان همان نام فایل اصلی است که به انتهای آن ~ اضافه می‌شود (البته قابل تغییر است). برای پاک کردن این فایل‌ها نیز می‌توانید از find و سوییچ delete استفاده کنید:

find -name "*~" -delete

منبع: صفحه‌ی راهنمای دستور find

دیدگاه‌ها(۸)

از mono در free software استفاده کنیم یا نه؟

می‌دانید mono یکی از پیاده‌سازی‌های آزاد از Microsoft .NET است که توسط Miguel de Icaza از گسترش دهنده‌های اولیه‌ی GNOME و کارمند کنونی Novell پایه گذاری شده است. از طرفی حتما تذکر‌های Richard Stallman را خوانده‌اید که گفته است بهتر است از C# استفاده نکنید. آیا تا به حال این سوال برایتان پیش نیامده که چرا نباید از Mono استفاده کنیم/نکنیم؟

ساختار Microsoft .NET را اگر ساده کنیم به این صورت خواهد بود که کد‌های نوشته شده با زبان‌های پشتیبانی شده (مثل C#/VB) به زبان میانه یا Common Language Infrastructure کامپایل می‌شوند و زمان اجرا با استفاده از اجرا کننده‌ی زبان میانه یا Common Language Runtime اجرا می‌شوند. این ساختار توسط Microsoft به صورت استاندارد در آمد و قول داد که از ثبت مالکیت خود علیه کسانی که بر اساس این استاندارد، نرم‌افزار جایگزین برای Microsoft .NET درست می‌کنند استفاده نکند که شامل Mono نیز می‌شود. بر این اساس تا زمانی که Mono فقط به پیاده سازی لایه‌های کامپایلی/اجرایی دات نت بپردازد استفاده از آن مشکلی ندارد. برای نمونه استفاده از C# به همراه GTK# هیچ مشکلی ندارد.

اما mono از دیگر تکنولوژی‌های Microsoft که مجوز پیاده سازی آن‌ها در دست نیست نیز پشتیبانی می‌کند؛ مثل ADO.NET، ASP.NET یا winforms. پس تا زمانی که از این تکنولوژی‌ها استفاده نکنید و بر اساس قول ماکروسافت شما در حاشیه‌ی امن قرار دارید. اما به این نکته نیز توجه کنید که بر اساس گفته‌ی بنیاد نرم‌افزار آزاد ممکن است کتابخانه‌هایی وجود داشته باشند که مربوط به ویندوز باشد اما در دات نت نیز استفاده شده باشند پس شامل قول ماکروسافت نمی‌شوند و احتمال استفاده از آن‌ها برای ضربه به جنبش نرم‌افزار آزاد وجود دارد.

منابع: Mono and Microsoft’s patents و Common Language Infrastructure

دیدگاه‌ها(۶)