۷ مطلب با موضوع «include <tips>#» ثبت شده است
پنجشنبه, ۲۶ مرداد ۱۳۹۶، ۰۳:۰۶ ب.ظ
میثم پورگنجی
۱۸ اردیبهشت ۱۳۹۷: این پست برای اولین بار در ویرگول به این نشانی منتشر شده است.
دیو چنی توییت کرده که کد زیر چی چاپ میکنه؟
package main
import "fmt"
func f(u *uint) {*u++}
func main() {
i := 0
f(&(uint)(i))
fmt.Println(i)
}
بالطبع
احتمالا همه انتظار داریم حاصل ۱ باشه، ولی این کد اصلا کامپایل نمیشه
:)). دلیل خیلی سادهست: «در گو شما فقط میتونی آدرس چیزایی رو استفاده کنی
که آدرسپذیر باشن.». به بیان دیگه در گو فقط برای متغیرها، پوینترها،
اسلایسها، عناصر یک ساختار -=struct- و آرایهها میشه آدرس رو داشت و پر
واضح و مبرهنه که در کد فوق، پارامتر ورودی f هیچکدوم از اونها نیست. در
این مورد اینجا رو ببینید.
۲۶ مرداد ۹۶ ، ۱۵:۰۶
۰
۰
میثم پورگنجی
سه شنبه, ۲ تیر ۱۳۹۴، ۱۰:۱۰ ق.ظ
میثم پورگنجی
این یک آموزش سه نکتهای است برای افزودن قابلیت Infinite Scroll به صفحهی محصولات ووکامرس.
- افزونه http://www.infinite-scroll.com را بر روی وردپرس نصب کنید.
- به صفحهی تنظیمات افزونهی مذکور رفته و تنظیمات متناسب با قالب خود را بر روی آن انجام دهید:
برای یافتن ویژگیهای لازم در تصویر بالا میتوانید از یک ابزار مانند Firebug یا Inspector سوار بر مرورگر استفاده نمائید. برای مثال با توجه به تصویر زیر، احتمالا روشن است که چرا من برای مورد Next Selector مقدار .woocommerce-pagination .page-numbers li a.next
را وارد کردهام.
- صفحهی محصولات ووکامرس را بروز کنید ;).
۰۲ تیر ۹۴ ، ۱۰:۱۰
۱
۰
میثم پورگنجی
پنجشنبه, ۳۱ ارديبهشت ۱۳۹۴، ۰۲:۵۲ ب.ظ
میثم پورگنجی
ز کجا آمده است…
تقریبا هر برنامهنویسی، برای یک بار در عمرش هم شده باشد، با تاریخ جلالی و ابزارهای مرتبط با آن سر و کله زده است. تازه احتمالا تقریبا هر برنامهنویسی، یک بار تلاش کرده است تا کلاس تاریخ جلالی را خودش بنویسد. من نیز به عنوان کسی که در این راه قدم برمیدارم، از این قاعده مستثنی نیستم. برای پروژهای، چند وقت هست که درگیر تاریخ جلالیئم و برای این امر نیاز شد تا یک ویدجت تاریخ را جلالیزه کنم.
۳۱ ارديبهشت ۹۴ ، ۱۴:۵۲
۱
۰
میثم پورگنجی
يكشنبه, ۱۶ فروردين ۱۳۹۴، ۰۳:۴۴ ب.ظ
میثم پورگنجی
فرض کنید شما مدیر توسعه و نگهداری از یک سایت هستید که به صلاحدید کارفرما، میبایست تغییراتی را در کد سایت ایجاد کنید. طبیعیترین راه برای این فرآیند اینگونه است: «انجام تغییرات بر روی کدها -> بارگذاری کدها بر روی وبسرور -> جایگزینی فایلهای جدید با فایلهای قبلی». این فرآیند تعداد تغییرات زیاد باشد و برای اعمال تغییرات مجبور به بالا پایین کردن پوشههای مختلف بر روی این وبسرور با ابزارهای تحت وب یا FTP باشید، طبیعیترین نتیجه کلافهشدن و سردرگمی خواهد بود. چاره چیست؟
در این پست قرار است یک سرور گیت به عنوان ابزار مدیریت ورژن کدها و یک وبسرور را به صورتی یکپارچه کنیم که هرگونه بروزشدن در سرور گیت، باعث بروزشدن فایلهای تغییریافتهی متناظر در وبسرور شود.
۱۶ فروردين ۹۴ ، ۱۵:۴۴
۲
۰
میثم پورگنجی
دوشنبه, ۴ اسفند ۱۳۹۳، ۰۱:۴۷ ب.ظ
میثم پورگنجی
که چی؟
بعضی وقتها نیاز میشه که از کلاسی که استفاده میکنیم، در حال اجرا، فقط یه نمونه داشته باشیم. برای مثال:
- در حال نوشتن برنامهای هستیم که در اون در چند جای برنامه با پایگاه داده ارتباط برقرار میکنیم. در اینجا به جای اینکه هر بار که خواستیم با پایگاه داده ارتباط داشته باشیم، یک نمونه از کلاس پایگاه داده ایجاد کنیم، خوبه که یک نمونه ایجاد کنیم و هر بار از همون استفاده کنیم، اینطور در منابع صرفهجویی زیادی میشه.
- در حال نوشتن برنامهی جهان خلقت هستیم. در اینجا موقع نوشتن کلاس مربوط به خدا، باید توجه کنیم که اگه در آن واحد، دو نمونه از کلاس خدا ایجاد شه، ممکنه که هر کدوم از خداها روی کل برنامه تاثیر بذارن و آشفتگی به وجود بیاد. اینجا باید دقت کنیم که از روی کلاس خدا، در صورت نیاز، فقط یک نمونه باید داشته باشیم.
- در حال نوشتن برنامهای هستیم که در آن، برنامه چند زبانهست. یعنی با توجه به تنظیمات کاربر، ممکنه که محیط برنامه فارسی باشه و یا انگلیسی. در اینجا به جای اینکه هر بار که نیاز شد، فایل زبان رو باز کنیم و رشتههای مرتبط با زبان رو بخونیم و قسمت مورد نیاز رو جدا کنیم، میشه یک نمونه از کلاس مربوط به زبان ایجاد کرد و هر بار از همون برای گرفتن ترجمهها استفاده کرد.
- در حال نوشتن بازی ای هستیم که قراره زندگی واقعی رو شبیهسازی کنه و اون رو میخوایم برای تست به زوجهای جوان بدیم. اینجا باید دقت کنیم که برای هر فرد، فقط یک نمونه از کلاس همسر باید ساخته شه و اگه این مورد رو رعایت نکنیم، ممکنه در زندگی واقعی اون زوج، باعث یه طلاق شیم :دی.
در این نوشته، قرار بر اونه که ببینیم چطور میشه اینطور کلاسی رو داشت :).
۰۴ اسفند ۹۳ ، ۱۳:۴۷
۰
۰
میثم پورگنجی
جمعه, ۷ آذر ۱۳۹۳، ۰۶:۲۵ ب.ظ
میثم پورگنجی
من در هفتهای که گذشت به یه مشکل با متلب برخوردم، برنامهم با اینکه همه چیش درست به نظر میومد، جواب اشتباه میداد! مشکل هم این بود که من با هر حیله و مکری که خواستم بفهمم مشکل از کجاست، نتونستم! به نظرم مشکل از اینجا ناشی میشد که متلب بیش از حد حرفگوشکن و محجوبه و این وسط، اگه چیزی هم باشه به روم نمیاره! به هر حال این بهانهای بود که با اون من تصمیم گرفتم برنامه رو با پایتون
۱ بازنویسی کنم.
از اونجایی که من برنامهنویس حرفهای نیستم، در این پست فقط قصد معادلسازی خیلی سریع صحبت با زبان پایتون برای متلبزبانها دارم و به احتمال خیلی زیاد، برای یاد گرفتن این زبان، کتابهایی مثل
How to Think Like a Computer Scientist و
Dive into Python خیلی مفیدتر از این پست هستن!
۰۷ آذر ۹۳ ، ۱۸:۲۵
۰
۰
میثم پورگنجی
جمعه, ۳۰ آبان ۱۳۹۳، ۰۵:۱۸ ب.ظ
میثم پورگنجی
چند وقت پیش، در راستای پیادهسازی یه ایده، به الگوریتمی رسیدم که ایدهش به صورت بازگشتی پیادهسازی میشد، اما مشکلی که این وسط وجود داشت این بود که هزینهبر بودن پیادهسازی الگوریتم، بیش از حد تحمل من بود. یادم نمیاد از کجا ولی فهمیدم که میشه برنامهی بازگشتی رو با شبیهسازی اون کاری که CPU در پردازش این برنامهها انجام میده، به صورت یک برنامهی تکراری (استفاده از حلقهی تکرار به جای صدا زدن تابع) نوشت،
این لینک و یک سری آموزشی در
این لینک به خوبی ایده و شیوهی این تبدیل رو توضیح میدن. ایدهی کلی اینه: «CPU متغیرهای محلی و وضعیت فعلی تابع رو در یک استک ذخیره میکنه و این کار رو تا زمان رسیدن به نتیجهی نهایی تابع، در تکرارهای بعد ادامه میده.». بنابراین
- یه پشته بساز.
- صدا زدن تابع رو پوش۱ معنی کن.
- برگردوندن مقدار توسط تابع رو پاپ۲ معنی کن.
- محاسبات اصلی رو بذار داخل یه حلقه و اول هر حلقه، مقادیر مورد نیازت رو از پشته پاپ کن.
شروع داستان!
اما داستان این پست از اونجا شروع میشه که در متلب پشته نداریم! :)
۳۰ آبان ۹۳ ، ۱۷:۱۸
۰
۰
میثم پورگنجی