يكشنبه, ۱۶ فروردين ۱۳۹۴، ۰۳:۴۴ ب.ظ
میثم پورگنجی
فرض کنید شما مدیر توسعه و نگهداری از یک سایت هستید که به صلاحدید کارفرما، میبایست تغییراتی را در کد سایت ایجاد کنید. طبیعیترین راه برای این فرآیند اینگونه است: «انجام تغییرات بر روی کدها -> بارگذاری کدها بر روی وبسرور -> جایگزینی فایلهای جدید با فایلهای قبلی». این فرآیند تعداد تغییرات زیاد باشد و برای اعمال تغییرات مجبور به بالا پایین کردن پوشههای مختلف بر روی این وبسرور با ابزارهای تحت وب یا FTP باشید، طبیعیترین نتیجه کلافهشدن و سردرگمی خواهد بود. چاره چیست؟
در این پست قرار است یک سرور گیت به عنوان ابزار مدیریت ورژن کدها و یک وبسرور را به صورتی یکپارچه کنیم که هرگونه بروزشدن در سرور گیت، باعث بروزشدن فایلهای تغییریافتهی متناظر در وبسرور شود.
۱۶ فروردين ۹۴ ، ۱۵:۴۴
۲
۰
میثم پورگنجی
دوشنبه, ۴ اسفند ۱۳۹۳، ۰۱:۴۷ ب.ظ
میثم پورگنجی
که چی؟
بعضی وقتها نیاز میشه که از کلاسی که استفاده میکنیم، در حال اجرا، فقط یه نمونه داشته باشیم. برای مثال:
- در حال نوشتن برنامهای هستیم که در اون در چند جای برنامه با پایگاه داده ارتباط برقرار میکنیم. در اینجا به جای اینکه هر بار که خواستیم با پایگاه داده ارتباط داشته باشیم، یک نمونه از کلاس پایگاه داده ایجاد کنیم، خوبه که یک نمونه ایجاد کنیم و هر بار از همون استفاده کنیم، اینطور در منابع صرفهجویی زیادی میشه.
- در حال نوشتن برنامهی جهان خلقت هستیم. در اینجا موقع نوشتن کلاس مربوط به خدا، باید توجه کنیم که اگه در آن واحد، دو نمونه از کلاس خدا ایجاد شه، ممکنه که هر کدوم از خداها روی کل برنامه تاثیر بذارن و آشفتگی به وجود بیاد. اینجا باید دقت کنیم که از روی کلاس خدا، در صورت نیاز، فقط یک نمونه باید داشته باشیم.
- در حال نوشتن برنامهای هستیم که در آن، برنامه چند زبانهست. یعنی با توجه به تنظیمات کاربر، ممکنه که محیط برنامه فارسی باشه و یا انگلیسی. در اینجا به جای اینکه هر بار که نیاز شد، فایل زبان رو باز کنیم و رشتههای مرتبط با زبان رو بخونیم و قسمت مورد نیاز رو جدا کنیم، میشه یک نمونه از کلاس مربوط به زبان ایجاد کرد و هر بار از همون برای گرفتن ترجمهها استفاده کرد.
- در حال نوشتن بازی ای هستیم که قراره زندگی واقعی رو شبیهسازی کنه و اون رو میخوایم برای تست به زوجهای جوان بدیم. اینجا باید دقت کنیم که برای هر فرد، فقط یک نمونه از کلاس همسر باید ساخته شه و اگه این مورد رو رعایت نکنیم، ممکنه در زندگی واقعی اون زوج، باعث یه طلاق شیم :دی.
در این نوشته، قرار بر اونه که ببینیم چطور میشه اینطور کلاسی رو داشت :).
۰۴ اسفند ۹۳ ، ۱۳:۴۷
۰
۰
میثم پورگنجی
جمعه, ۱ اسفند ۱۳۹۳، ۰۳:۲۱ ب.ظ
میثم پورگنجی
«عدد چیه؟ از کجا اومده؟ میشه به یه حالت مجرد تعمیمش داد و یا حداقل تعریفی مجرد ازش ارائه داد؟ مگه فقط اعداد مثبت زیر رادیکال نمیرفتن؟ پس
قضیهش چیه؟». اینها نمونه سوالاتی هستند که در مورد اعداد به ذهن میرسند. در این نوشته، قرار است تا با قرائتی طنزگونه و تخیلی، با چگونگی تکامل اعداد آشنا شویم. مطالب این نوشته، «فقط» برداشتها و خیالبافیهای ذهنی نویسنده است و لزوما در واقعیت وجود نداشتهاند و یا وجود ندارند.
۰۱ اسفند ۹۳ ، ۱۵:۲۱
۰
۰
میثم پورگنجی
جمعه, ۲۴ بهمن ۱۳۹۳، ۰۸:۵۸ ق.ظ
میثم پورگنجی
این پست حاصل ساعتی زندگی، در عالم فیلم Predestination است. جزئیات این فیلم را میتوان از این مدخل ویکیپدیا دید و نقد آنرا اینجا خواند، هدف از این پست، نه تشریح فیلم است و نه نقد آن.
متن این پست، حاصل سوالاتی است که در حین تماشای فیلم به ذهن من خطور کرده است. سوالات خاماند، همانطور که بر کاغذ، در هنگام تماشای فیلم نوشتهام، به اینجا انتقال داده شدهاند. این سوالات ممکن است از ریشه غلط باشند و شاید احمقانه، اما هر کدام ممکن است بتوانند برای چند دقیقه، خوراکی باشند برای فکر و یا خیال.
۲۴ بهمن ۹۳ ، ۰۸:۵۸
۰
۰
میثم پورگنجی
جمعه, ۱۹ دی ۱۳۹۳، ۱۱:۱۷ ق.ظ
میثم پورگنجی
من برای انجام منظم کارهایی که در آینده قراره انجام بدم، از گوشیم و علیالخصوص تقویمش استفاده میکنم. این سنت حدودا از زمانی که کا۷۵۰آی داشتم تا امروز ادامه داشته است. برای سیمبین یا سونیاریکسون که کلا لاجرم با تقویم انگلیسی سر میکردم و «چون نور امیدی نیست، شکایتم چرا؟»، اما با شروع استفادهم از اندروید این مشکل حدودا برطرف شد. از بازار تقویم خیام رو نصب کردم که هم تقویم فارسی بود، هم ویدجت مناسبی داشت و هم با گوگل سینک میشد. این ویژگیها، پاسخگوی تمام نیاز من بودند، تا اینکه تقویم خیام شروع به هنگ کردن بعد از آپدیت تلفن من کرد.
۱۹ دی ۹۳ ، ۱۱:۱۷
۱
۰
میثم پورگنجی
جمعه, ۱۴ آذر ۱۳۹۳، ۰۶:۰۹ ب.ظ
میثم پورگنجی
من از اون وقتی که دیگه کنتور سنم فنرش در رفت و بی حساب شروع کرد به بالا رفتن، روز به روز عادت کردم به کمتر و کمتر حرف زدن۱ و این عادت در جاده، جایی که میشه در هر ثانیه مناظر متفاوت برای دیدن داشت، تشدید میشه.
سلامِ من به تو ای یار قدیمی!
در این دو سه ماه اخیر، بنا بر شرایطم، روزهای خیلی زیادی رو داشتم که حداقل ۳ ساعت در روز رو در جادههای بینراهی سپری کنم. یکی از چیزهایی که طبیعتا در این مکانها میشه دید، ماشین سنگینه و به خاطر شرایط جغرافیایی شهر من، یکی از طبیعیترین ماشین سنگینها: «ماک».
۱۴ آذر ۹۳ ، ۱۸:۰۹
۰
۰
میثم پورگنجی
جمعه, ۷ آذر ۱۳۹۳، ۰۶:۲۵ ب.ظ
میثم پورگنجی
من در هفتهای که گذشت به یه مشکل با متلب برخوردم، برنامهم با اینکه همه چیش درست به نظر میومد، جواب اشتباه میداد! مشکل هم این بود که من با هر حیله و مکری که خواستم بفهمم مشکل از کجاست، نتونستم! به نظرم مشکل از اینجا ناشی میشد که متلب بیش از حد حرفگوشکن و محجوبه و این وسط، اگه چیزی هم باشه به روم نمیاره! به هر حال این بهانهای بود که با اون من تصمیم گرفتم برنامه رو با پایتون
۱ بازنویسی کنم.
از اونجایی که من برنامهنویس حرفهای نیستم، در این پست فقط قصد معادلسازی خیلی سریع صحبت با زبان پایتون برای متلبزبانها دارم و به احتمال خیلی زیاد، برای یاد گرفتن این زبان، کتابهایی مثل
How to Think Like a Computer Scientist و
Dive into Python خیلی مفیدتر از این پست هستن!
۰۷ آذر ۹۳ ، ۱۸:۲۵
۰
۰
میثم پورگنجی
جمعه, ۳۰ آبان ۱۳۹۳، ۰۵:۱۸ ب.ظ
میثم پورگنجی
چند وقت پیش، در راستای پیادهسازی یه ایده، به الگوریتمی رسیدم که ایدهش به صورت بازگشتی پیادهسازی میشد، اما مشکلی که این وسط وجود داشت این بود که هزینهبر بودن پیادهسازی الگوریتم، بیش از حد تحمل من بود. یادم نمیاد از کجا ولی فهمیدم که میشه برنامهی بازگشتی رو با شبیهسازی اون کاری که CPU در پردازش این برنامهها انجام میده، به صورت یک برنامهی تکراری (استفاده از حلقهی تکرار به جای صدا زدن تابع) نوشت،
این لینک و یک سری آموزشی در
این لینک به خوبی ایده و شیوهی این تبدیل رو توضیح میدن. ایدهی کلی اینه: «CPU متغیرهای محلی و وضعیت فعلی تابع رو در یک استک ذخیره میکنه و این کار رو تا زمان رسیدن به نتیجهی نهایی تابع، در تکرارهای بعد ادامه میده.». بنابراین
- یه پشته بساز.
- صدا زدن تابع رو پوش۱ معنی کن.
- برگردوندن مقدار توسط تابع رو پاپ۲ معنی کن.
- محاسبات اصلی رو بذار داخل یه حلقه و اول هر حلقه، مقادیر مورد نیازت رو از پشته پاپ کن.
شروع داستان!
اما داستان این پست از اونجا شروع میشه که در متلب پشته نداریم! :)
۳۰ آبان ۹۳ ، ۱۷:۱۸
۰
۰
میثم پورگنجی
جمعه, ۲۳ آبان ۱۳۹۳، ۰۲:۱۵ ب.ظ
میثم پورگنجی
عنوان اول قرار بود «pomodoro یا چگونه کمتر گشاد باشیم؟» باشه، ولی چندتا دلیل باعث شد این کار رو انجام ندم! اول اینکه مرز «من ِ در این وبلاگ» با من برام روشن نیست، اینجا جزئی از رسمی بودن منه یا محاورهای بودن من؟ دوم اینکه بحث فراتر از گشادیه، این پست یه تکنیک مدیریت زمانه و احتمالا به درد تنگها هم میخوره! این شد که ترجیح دادم به جای اون کلمه، هر کی هر چی میخواد بذاره.
ایدهی اصلی تکنیک مدیریت زمان Pomodoro از این دوتا گزاره میاد: الف) «هر چیزی که کران بالا نداشته باشه، یحتمل کار رو به کران پایین میرسونه.» و ب) «اگه سر میز غذا، لقمهها رو به صورت مناسب، کوچک برداری، شاید ابتدا تصور کنی سرعت خوردنت پایینه، ولی در نهایت بیشتر میتونی بخوری!». با استفاده از این دوتا ایده، زمان رو اینطور مدیریت میکنیم: «من نباید برای انجام کاری، تصور کنم که به اندازهی کاملا کافی زمان دارم، پس کارهام رو به جای اینکه در طول x ساعت متمادی انجام بدم، در طول y زیربازهی z دقیقهای از x انجام میدم.». فارسی ِ خودمونیش اینکه «به جای دو ساعت پشت سر هم کار کردن، کارهام رو در ۴تا ۲۵ دقیقه انجام میدم.».
۲۳ آبان ۹۳ ، ۱۴:۱۵
۱
۰
میثم پورگنجی
جمعه, ۱۶ آبان ۱۳۹۳، ۰۵:۳۶ ب.ظ
میثم پورگنجی
عنوان میتونه این سوال رو ایجاد کنه که مگه پکیج غیرکاربردی هم داریم؟ جوابش احتمالا «نه» هست، ولی منظور من هم، پکیج کاربردی لاتک برای منه، همهی پکیجهای لاتک که به درد من نمیخورن، هوم؟
۱- زیپرشین: شاید کاربردیترین پکیج لاتک که برای یک فارسینویس در حال حاضر موجوده، زیپرشین (XePersian) باشه. لاتک بصورت پیشفرض از زبانهای غیر اسکی پشتیبانی نمیکنه و این زبانها، برای استفاده از امکانات لاتک، مجبورن اون رو با وصله پینه استفاده کنن. با این توضیح، زیپرشین مجموعهای از ماکروهای آمادهست که امکانات خوب لاتک رو به خدمت فارسینویسی در میاره. این بسته رو آقای دکتر وفا کارنپهلو در سال ؟ تحت مجوز LPPL منتشر کردند. توضیحات بیشتر، طریقهی استفاده از این بسته و یک جامعهی کاربری خوب از لاتک کاران فارسیزبان رو میشه در سایت پارسیلاتک دید.
۲- listings: این بسته برای وارد کردن کد به فایل لاتک و هایلایت کردن اون در متن استفاده میشه. برای استفاده از اون پکیج رو لود کنید:
۱۶ آبان ۹۳ ، ۱۷:۳۶
۰
۰
میثم پورگنجی