meysampg

از چیزهایی که یاد می‌گیرم، می‌نویسم… :)

جمعه, ۱۵ خرداد ۱۳۹۴، ۰۱:۴۲ ب.ظ میثم پورگنجی
در دنیای تو ساعت چند است؟

در دنیای تو ساعت چند است؟

این پست نگاه من است به فیلم «در دنیای تو ساعت چند است». فارغ از اینکه درست باشد یا غلط. اساسا فیلم بهانه‌ای برای این پست است، این پست بهانه‌ای است برای نوشتن.
خطر لو رفتن ماجرای فیلم، در سرتاسر این پست وجود دارد.
در دنیای تو ساعت چند است را دوبار دیدم، به فاصله‌ی یک هفته. فیلم خوش‌ساختی است. رشت را جوری به نمایش می‌کشد که احساس می‌کنی پاریسِ فیلم‌های سینمایی است. نه اینکه رشت اینطور خوب نباشد، فیلم خوش‌ساخت است و از کلیشه‌های باران سیل‌آسا در رشت و شهری با یک بازار شلوغ و مردمی همواره در حال جنب و جوش به دور.
ادامه مطلب...
۱۵ خرداد ۹۴ ، ۱۳:۴۲ ۵ نظر موافقین ۳ مخالفین ۰
میثم پورگنجی
پنجشنبه, ۳۱ ارديبهشت ۱۳۹۴، ۰۲:۵۲ ب.ظ میثم پورگنجی
زمان‌بردار جلالی و چنتا نکته در جاوااسکریپت

زمان‌بردار جلالی و چنتا نکته در جاوااسکریپت

ز کجا آمده است…

تقریبا هر برنامه‌نویسی، برای یک بار در عمرش هم شده باشد، با تاریخ جلالی و ابزارهای مرتبط با آن سر و کله زده است. تازه احتمالا تقریبا هر برنامه‌نویسی، یک بار تلاش کرده است تا کلاس تاریخ جلالی را خودش بنویسد. من نیز به عنوان کسی که در این راه قدم برمیدارم، از این قاعده مستثنی نیستم. برای پروژه‌ای، چند وقت هست که درگیر تاریخ جلالی‌ئم و برای این امر نیاز شد تا یک ویدجت تاریخ را جلالیزه کنم.
ادامه مطلب...
۳۱ ارديبهشت ۹۴ ، ۱۴:۵۲ ۱ نظر موافقین ۱ مخالفین ۰
میثم پورگنجی
يكشنبه, ۱۶ فروردين ۱۳۹۴، ۰۳:۴۴ ب.ظ میثم پورگنجی
یک آموزش خیلی مقدماتی برای یکپارچه کردن گیت و وب‌سرور

یک آموزش خیلی مقدماتی برای یکپارچه کردن گیت و وب‌سرور

فرض کنید شما مدیر توسعه و نگهداری از یک سایت هستید که به صلاحدید کارفرما، می‌بایست تغییراتی را در کد سایت ایجاد کنید. طبیعی‌ترین راه برای این فرآیند اینگونه است: «انجام تغییرات بر روی کدها -> بارگذاری کدها بر روی وب‌سرور -> جایگزینی فایل‌های جدید با فایل‌های قبلی». این فرآیند تعداد تغییرات زیاد باشد و برای اعمال تغییرات مجبور به بالا پایین کردن پوشه‌های مختلف بر روی این وب‌سرور با ابزارهای تحت وب یا FTP باشید، طبیعی‌ترین نتیجه کلافه‌شدن و سردرگمی خواهد بود. چاره چیست؟
در این پست قرار است یک سرور گیت به عنوان ابزار مدیریت ورژن کدها و یک وب‌سرور را به صورتی یکپارچه کنیم که هرگونه بروزشدن در سرور گیت، باعث بروزشدن فایل‌های تغییریافته‌ی متناظر در وب‌سرور شود.
ادامه مطلب...
۱۶ فروردين ۹۴ ، ۱۵:۴۴ ۲ نظر موافقین ۲ مخالفین ۰
میثم پورگنجی
دوشنبه, ۴ اسفند ۱۳۹۳، ۰۱:۴۷ ب.ظ میثم پورگنجی
خدا یکی، یار یکی و یا «ساخت پدر تنها در php»

خدا یکی، یار یکی و یا «ساخت پدر تنها در php»

که چی؟

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

در این نوشته، قرار بر اون‌ه که ببینیم چطور میشه اینطور کلاسی رو داشت :).

ادامه مطلب...
۰۴ اسفند ۹۳ ، ۱۳:۴۷ ۴ نظر موافقین ۰ مخالفین ۰
میثم پورگنجی
جمعه, ۱ اسفند ۱۳۹۳، ۰۳:۲۱ ب.ظ میثم پورگنجی
داستان تاریخ اعداد برای کودکان ۳۰ سال به بالا

داستان تاریخ اعداد برای کودکان ۳۰ سال به بالا

«عدد چیه؟ از کجا اومده؟ میشه به یه حالت مجرد تعمیم‌ش داد و یا حداقل تعریفی مجرد ازش ارائه داد؟ مگه فقط اعداد مثبت زیر رادیکال نمیرفتن؟ پس  قضیه‌ش چیه؟». اینها نمونه سوالاتی هستند که در مورد اعداد به ذهن می‌رسند. در این نوشته، قرار است تا با قرائتی طنزگونه و تخیلی، با چگونگی تکامل اعداد آشنا شویم. مطالب این نوشته، «فقط» برداشت‌ها و خیالبافی‌های ذهنی نویسنده است و لزوما در واقعیت وجود نداشته‌اند و یا وجود ندارند.
ادامه مطلب...
۰۱ اسفند ۹۳ ، ۱۵:۲۱ ۲ نظر موافقین ۰ مخالفین ۰
میثم پورگنجی
جمعه, ۲۴ بهمن ۱۳۹۳، ۰۸:۵۸ ق.ظ میثم پورگنجی
«سرنوشت» یا تصمیم سختی که باید گرفت

«سرنوشت» یا تصمیم سختی که باید گرفت

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

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

ادامه مطلب...
۲۴ بهمن ۹۳ ، ۰۸:۵۸ ۰ نظر موافقین ۰ مخالفین ۰
میثم پورگنجی
جمعه, ۱۹ دی ۱۳۹۳، ۱۱:۱۷ ق.ظ میثم پورگنجی
ویدجت تاریخ شمسی برای تقویم گوگل اندروید

ویدجت تاریخ شمسی برای تقویم گوگل اندروید

من برای انجام منظم کارهایی که در آینده قراره انجام بدم، از گوشیم و علی‌الخصوص تقویمش استفاده میکنم. این سنت حدودا از زمانی که کا۷۵۰آی داشتم تا امروز ادامه داشته است. برای سیمبین یا سونی‌اریکسون که کلا لاجرم با تقویم انگلیسی سر میکردم و «چون نور امیدی نیست، شکایتم چرا؟»، اما با شروع استفاده‌م از اندروید این مشکل حدودا برطرف شد. از بازار تقویم خیام رو نصب کردم که هم تقویم فارسی بود، هم ویدجت مناسبی داشت و هم با گوگل سینک میشد. این ویژگی‌ها، پاسخگوی تمام نیاز من بودند، تا اینکه تقویم خیام شروع به هنگ کردن بعد از آپدیت تلفن من کرد.
ادامه مطلب...
۱۹ دی ۹۳ ، ۱۱:۱۷ ۳ نظر موافقین ۱ مخالفین ۰
میثم پورگنجی
جمعه, ۱۴ آذر ۱۳۹۳، ۰۶:۰۹ ب.ظ میثم پورگنجی
ماک، هنوز ماک است!

ماک، هنوز ماک است!

من از اون وقتی که دیگه کنتور سنم فنرش در رفت و بی حساب شروع کرد به بالا رفتن، روز به روز عادت کردم به کمتر و کمتر حرف زدن۱ و این عادت در جاده، جایی که میشه در هر ثانیه مناظر متفاوت برای دیدن داشت، تشدید میشه.

سلامِ من به تو ای یار قدیمی!

در این دو سه ماه اخیر، بنا بر شرایطم، روزهای خیلی زیادی رو داشتم که حداقل ۳ ساعت در روز رو در جاده‌های بین‌راهی سپری کنم. یکی از چیزهایی که طبیعتا در این مکان‌ها میشه دید، ماشین سنگین‌ه و به خاطر شرایط جغرافیایی شهر من، یکی از طبیعی‌ترین ماشین سنگین‌ها: «ماک».
ادامه مطلب...
۱۴ آذر ۹۳ ، ۱۸:۰۹ ۵ نظر موافقین ۰ مخالفین ۰
میثم پورگنجی
جمعه, ۷ آذر ۱۳۹۳، ۰۶:۲۵ ب.ظ میثم پورگنجی
چطوری با پایتون ۳ شروع کنیم؟ یا «یک راهنمای خیلی خیلی مبتدیانه برای پایتون»

چطوری با پایتون ۳ شروع کنیم؟ یا «یک راهنمای خیلی خیلی مبتدیانه برای پایتون»

من در هفته‌ای که گذشت به یه مشکل با متلب برخوردم، برنامه‌م با اینکه همه چیش درست به نظر میومد، جواب اشتباه میداد! مشکل هم این بود که من با هر حیله و مکری که خواستم بفهم‌م مشکل از کجاست، نتونستم! به نظرم مشکل از اینجا ناشی میشد که متلب بیش از حد حرف‌گوش‌کن و محجوب‌ه و این وسط، اگه چیزی هم باشه به روم نمیاره! به هر حال این بهانه‌ای بود که با اون من تصمیم گرفتم برنامه رو با پایتون۱‍ بازنویسی کنم.
از اونجایی که من برنامه‌نویس حرفه‌ای نیستم، در این پست فقط قصد معادل‌سازی خیلی سریع صحبت با زبان پایتون برای متلب‌زبان‌ها دارم و به احتمال خیلی زیاد، برای یاد گرفتن این زبان، کتاب‌هایی مثل How to Think Like a Computer Scientist و Dive into Python خیلی مفیدتر از این پست هستن!
ادامه مطلب...
۰۷ آذر ۹۳ ، ۱۸:۲۵ ۲ نظر موافقین ۰ مخالفین ۰
میثم پورگنجی
جمعه, ۳۰ آبان ۱۳۹۳، ۰۵:۱۸ ب.ظ میثم پورگنجی
ساخت پشته در متلب یا «چگونه با سلول‌ها کار کنیم؟»

ساخت پشته در متلب یا «چگونه با سلول‌ها کار کنیم؟»

چند وقت پیش، در راستای پیاده‌سازی یه ایده، به الگوریتمی رسیدم که ایده‌ش به صورت بازگشتی پیاده‌سازی میشد، اما مشکلی که این وسط وجود داشت این بود که هزینه‌بر بودن پیاده‌سازی الگوریتم، بیش از حد تحمل من بود. یادم نمیاد از کجا ولی فهمیدم که میشه برنامه‌ی بازگشتی رو با شبیه‌سازی اون کاری که CPU در پردازش این برنامه‌ها انجام میده، به صورت یک برنامه‌ی تکراری (استفاده از حلقه‌ی تکرار به جای صدا زدن تابع) نوشت، این لینک و یک سری آموزشی در این لینک به خوبی ایده و شیوه‌ی این تبدیل رو توضیح میدن. ایده‌ی کلی اینه: «CPU متغیر‌های محلی و وضعیت فعلی تابع رو در یک استک ذخیره میکنه و این کار رو تا زمان رسیدن به نتیجه‌ی نهایی تابع، در تکرارهای بعد ادامه میده.». بنابراین
  1. یه پشته بساز.
  2. صدا زدن تابع رو پوش۱ معنی کن.
  3. برگردوندن مقدار توسط تابع رو پاپ۲ معنی کن.
  4. محاسبات اصلی رو بذار داخل یه حلقه و اول هر حلقه، مقادیر مورد نیازت رو از پشته پاپ کن.

شروع داستان!

اما داستان این پست از اونجا شروع میشه که در متلب پشته نداریم! :)

ادامه مطلب...
۳۰ آبان ۹۳ ، ۱۷:۱۸ ۷ نظر موافقین ۰ مخالفین ۰
میثم پورگنجی