مایکروسافت یه دورهی رایگان و اوپنسورس منتشر کرده که بهصورت خودکار به ۳۰+ زبان دنیا ترجمه میشه (از جمله فارسی ):
AI Agents for Beginners
این دوره شامل ۱۱ درسه و همهچی برای شروع ساختن Agentهای هوش مصنوعی رو پوشش میده:
هر درس:
- مقالهی آموزشی
- ویدیوی کوتاه
- کد پایتون آماده در پوشهی code\_samples
- منابع تکمیلی برای یادگیری بیشتر
مفاهیم مهمی که توی دوره یاد میگیری:
- شروع با AI Agents و موارد استفادهشون
- آشنایی با Agentic Frameworks (مثل Semantic Kernel و AutoGen)
- دیزاین پترنها برای ساخت Agentها: Tool Use, Planning, Multi-Agent, Metacognition
- اتصال Agent به دیتای خارجی برای پاسخهای دقیقتر (Agentic RAG)
- Building Trustworthy AI Agents
- پیادهسازی Agent در محیط واقعی (Production)
- آشنایی با MCP (Model Context Protocol)
ابزارها و سرویسهایی که استفاده میشن:
- Azure AI Foundry
- GitHub Models
- Azure AI Agent Service
- Semantic Kernel
- AutoGen
ویژگیهای دیگه:
- اوپنسورس و قابل مشارکت (PR و Issue بازه)
- جامعه فعال روی Discord و فروم توسعهدهندگان Azure AI
اگر همیشه میخواستی بدونی از کجا باید وارد دنیای AI Agents بشی، این بهترین نقطهی شروعه: ساده، پروژهمحور و رایگان.
ریپازیتوری اینجاست:
https://github.com/microsoft/ai-agents-for-beginners
@DevTwitter | <Mohsen Rad\>
AI Agents for Beginners
این دوره شامل ۱۱ درسه و همهچی برای شروع ساختن Agentهای هوش مصنوعی رو پوشش میده:
هر درس:
- مقالهی آموزشی
- ویدیوی کوتاه
- کد پایتون آماده در پوشهی code\_samples
- منابع تکمیلی برای یادگیری بیشتر
مفاهیم مهمی که توی دوره یاد میگیری:
- شروع با AI Agents و موارد استفادهشون
- آشنایی با Agentic Frameworks (مثل Semantic Kernel و AutoGen)
- دیزاین پترنها برای ساخت Agentها: Tool Use, Planning, Multi-Agent, Metacognition
- اتصال Agent به دیتای خارجی برای پاسخهای دقیقتر (Agentic RAG)
- Building Trustworthy AI Agents
- پیادهسازی Agent در محیط واقعی (Production)
- آشنایی با MCP (Model Context Protocol)
ابزارها و سرویسهایی که استفاده میشن:
- Azure AI Foundry
- GitHub Models
- Azure AI Agent Service
- Semantic Kernel
- AutoGen
ویژگیهای دیگه:
- اوپنسورس و قابل مشارکت (PR و Issue بازه)
- جامعه فعال روی Discord و فروم توسعهدهندگان Azure AI
اگر همیشه میخواستی بدونی از کجا باید وارد دنیای AI Agents بشی، این بهترین نقطهی شروعه: ساده، پروژهمحور و رایگان.
ریپازیتوری اینجاست:
https://github.com/microsoft/ai-agents-for-beginners
@DevTwitter | <Mohsen Rad\>
👍23❤10👎1
بدافزار لینوکسی روی نام فایل
کافیه فایل آلوده را extract کنی یا اسکریپتها روی نام فایل پردازش بشه تا backdoor در حافظه بارگذاری بشه.
قبلا نگران بودی اجرا نکنی، الان باید اسم فایل هم چک کنی
ایده اش را دوست داشتم
@DevTwitter | <MehrdadLinux/>
کافیه فایل آلوده را extract کنی یا اسکریپتها روی نام فایل پردازش بشه تا backdoor در حافظه بارگذاری بشه.
قبلا نگران بودی اجرا نکنی، الان باید اسم فایل هم چک کنی
ایده اش را دوست داشتم
@DevTwitter | <MehrdadLinux/>
👍38🔥8
این الگوریتم Classification ما به نسخه ۰.۱.۴ رسید.
از نظر F1 Score در بعضی دیتاستهای معروف از XGBoost و LightGBM و CatBoost بهتره.
سرعت Train و Inferenceاش هم به خاطر طراحی سبکش بسیار بالاست. نوتبوک کار باهاش هم هست.
https://github.com/LinearBoost/linearboost-classifier
@DevTwitter | <Hamidreza Keshavarz/>
از نظر F1 Score در بعضی دیتاستهای معروف از XGBoost و LightGBM و CatBoost بهتره.
سرعت Train و Inferenceاش هم به خاطر طراحی سبکش بسیار بالاست. نوتبوک کار باهاش هم هست.
https://github.com/LinearBoost/linearboost-classifier
@DevTwitter | <Hamidreza Keshavarz/>
🔥30❤5👍2
دیدم این Solo Mining جدیدا مُد شده گفتم بنویسم:
زبان: Rust
https://github.com/therealaleph/rust-btc-solominer
@DevTwitter | <Shin/>
زبان: Rust
https://github.com/therealaleph/rust-btc-solominer
@DevTwitter | <Shin/>
❤12👎6🔥1
هفته رایگان DataCamp دوباره شروع شده!
از ۳ تا ۹ شهریور میتونید رایگان به همه دورهها دسترسی داشته باشید، مهارت یاد بگیرید و مدرک بگیرید. این فرصت رو از دست ندید!
https://www.datacamp.com/
@DevTwitter | <Reza Jafari/>
از ۳ تا ۹ شهریور میتونید رایگان به همه دورهها دسترسی داشته باشید، مهارت یاد بگیرید و مدرک بگیرید. این فرصت رو از دست ندید!
https://www.datacamp.com/
@DevTwitter | <Reza Jafari/>
🔥13❤2
از دستیار کدنویس تا همکار هوشمند؛ گام دوم: اتصال کدبیس دیوار به مدلهای زبانی
ما در دیوار این هدف رو برای خودمون گذاشتیم که با استفاده از هوش مصنوعی، بهرهوری مهندسی رو افزایش بدیم. در شروع سرویسهای مکالمهمحور مثل ChatGPT رو آوردیم و باهاشون کار کردیم. به مرور سرویسهایی مثل Copilot و Cursor رو هم امتحان کردیم. تجربهمون تا مدتی به این صورت بود که هر ابزار جدیدی که میومد تعدادی از مشکلات و اذیتهایی رو که با ورژنهای قدیمیتر داشتیم، برطرف میکرد. برای مثال در کار با ChatGPT باید توضیحات خیلی مفصلی از مسئله ارائه میدادیم و تمام کدهای مورد نیازشو کپی پیست میکردیم و کد خروجیش رو داخل محیط توسعهمون میآوردیم و مشکلات سینتکسی که داشت رو برطرف میکردیم. برای دیباگ هم لاگهای خروجیش رو باز به GPT میدادیم. این تجربهٔ کاربری رفت و برگشتی تا حد خوبی در محصولاتی مثل Cursor برطرف شد اما همچنان مشکلات بزرگ دیگری داشتیم.
برای خوندن ادامهٔ مطلب بلاگ پست جدید دیوار رو ببینید:
https://vrgl.ir/6JFvk
@DevTwitter | <Divar/>
ما در دیوار این هدف رو برای خودمون گذاشتیم که با استفاده از هوش مصنوعی، بهرهوری مهندسی رو افزایش بدیم. در شروع سرویسهای مکالمهمحور مثل ChatGPT رو آوردیم و باهاشون کار کردیم. به مرور سرویسهایی مثل Copilot و Cursor رو هم امتحان کردیم. تجربهمون تا مدتی به این صورت بود که هر ابزار جدیدی که میومد تعدادی از مشکلات و اذیتهایی رو که با ورژنهای قدیمیتر داشتیم، برطرف میکرد. برای مثال در کار با ChatGPT باید توضیحات خیلی مفصلی از مسئله ارائه میدادیم و تمام کدهای مورد نیازشو کپی پیست میکردیم و کد خروجیش رو داخل محیط توسعهمون میآوردیم و مشکلات سینتکسی که داشت رو برطرف میکردیم. برای دیباگ هم لاگهای خروجیش رو باز به GPT میدادیم. این تجربهٔ کاربری رفت و برگشتی تا حد خوبی در محصولاتی مثل Cursor برطرف شد اما همچنان مشکلات بزرگ دیگری داشتیم.
برای خوندن ادامهٔ مطلب بلاگ پست جدید دیوار رو ببینید:
https://vrgl.ir/6JFvk
@DevTwitter | <Divar/>
👎17❤11👍2🔥1
ریاکت فایبر (React Fiber) چیه؟
اگر تا حالا با React کار کردی، احتمالا اسم React Fiber به گوشت نخورده باشه، ولی همین چیزی که هر روز داری باهاش کد میزنی، داخلش به شدت وابسته به Fiberـه.
فایبر (Fiber) چیه؟
یه الگوریتم رندر هست که وظیفهش اینه:
- بفهمه کدوم بخش از UI باید آپدیت بشه
- تصمیم بگیره چطور و چه زمانی اون آپدیت انجام بشه
به زبان ساده: Fiber مغز Reactـه برای هماهنگ کردن Virtual DOM با DOM واقعی.
چرا مهمه و چی کار میکنه؟
۱. اولویتبندی آپدیتها
همه تغییرها به یک اندازه مهم نیستن. مثلا تایپ کاربر مهمتر از رندر شدن یه لیست طولانیه. Fiber اینو میفهمه و اول کارهای فوری رو انجام میده.
۲. توقف و ادامه رندر (Interruptible rendering)
رندر کردن UI میتونه سنگین باشه. Fiber اجازه میده وسط کار رندر متوقف بشه تا مرورگر بتونه کارهای مهمتر (مثل اسکرول یا کلیک) رو انجام بده، بعد دوباره ادامه بده.
۳.رندر همزمان (Concurrency)
پایهی قابلیتهای مدرن مثل Concurrent Rendering و Transitionهاست. یعنی React میتونه چند نسخهی مختلف از UI رو آماده کنه و روانترین تجربه رو به کاربر نشون بده.
۴. تجربه کاربری (UX) بهتر
رندر روانتر، بدون لگ، و حس سریعتر بودن اپلیکیشن.
اگه دوست داری بیشتر درمورد بدونی میتونی به این لینک سر بزنی:
https://github.com/acdlite/react-fiber-architecture?tab=readme-ov-file
@DevTwitter | <Reihaneh SadatShokouhi/>
اگر تا حالا با React کار کردی، احتمالا اسم React Fiber به گوشت نخورده باشه، ولی همین چیزی که هر روز داری باهاش کد میزنی، داخلش به شدت وابسته به Fiberـه.
فایبر (Fiber) چیه؟
یه الگوریتم رندر هست که وظیفهش اینه:
- بفهمه کدوم بخش از UI باید آپدیت بشه
- تصمیم بگیره چطور و چه زمانی اون آپدیت انجام بشه
به زبان ساده: Fiber مغز Reactـه برای هماهنگ کردن Virtual DOM با DOM واقعی.
چرا مهمه و چی کار میکنه؟
۱. اولویتبندی آپدیتها
همه تغییرها به یک اندازه مهم نیستن. مثلا تایپ کاربر مهمتر از رندر شدن یه لیست طولانیه. Fiber اینو میفهمه و اول کارهای فوری رو انجام میده.
۲. توقف و ادامه رندر (Interruptible rendering)
رندر کردن UI میتونه سنگین باشه. Fiber اجازه میده وسط کار رندر متوقف بشه تا مرورگر بتونه کارهای مهمتر (مثل اسکرول یا کلیک) رو انجام بده، بعد دوباره ادامه بده.
۳.رندر همزمان (Concurrency)
پایهی قابلیتهای مدرن مثل Concurrent Rendering و Transitionهاست. یعنی React میتونه چند نسخهی مختلف از UI رو آماده کنه و روانترین تجربه رو به کاربر نشون بده.
۴. تجربه کاربری (UX) بهتر
رندر روانتر، بدون لگ، و حس سریعتر بودن اپلیکیشن.
اگه دوست داری بیشتر درمورد بدونی میتونی به این لینک سر بزنی:
https://github.com/acdlite/react-fiber-architecture?tab=readme-ov-file
@DevTwitter | <Reihaneh SadatShokouhi/>
❤29👍9👎1🔥1
یه خبر فوقالعاده!
ترجمهی این کتاب به طور کامل به پایان رسید!
این کتاب به صورت تخصصی شما رو وارد دنیای Task و async/await در CSharp و .NET میکنه و منبع خیلی خوبی برای درک عمیق این مفاهیمه.
https://github.com/hheydarian/task-programming-in-csharp-dotnet-persian
@DevTwitter | <Hamed/>
ترجمهی این کتاب به طور کامل به پایان رسید!
این کتاب به صورت تخصصی شما رو وارد دنیای Task و async/await در CSharp و .NET میکنه و منبع خیلی خوبی برای درک عمیق این مفاهیمه.
https://github.com/hheydarian/task-programming-in-csharp-dotnet-persian
@DevTwitter | <Hamed/>
❤40🔥5👎4👍2
امروز دیدم اکستنشن محبوب Material Theme در VS Code که به گفته خودشون 9 میلیون نصب داشته و مدتی پیش بهخاطر موارد امنیتی پاک شده بود رو با اسم Vira Theme برگردوندن، اما این بار دیگه رایگان نیست و باید لایسنس خرید.
من همون اوایل که پاک شده بود پیگیر شدم و تونستم کدهای .json رو استخراج کنم و بصورت مستقیم میذارمشون روی تم VS Code و ازشون استفاده میکنم.
توی این ریپو فایل هارو همراه با یک راهنمای گام به گام در سیستم عامل های مختلف قرار دادم.
چون راهنما در README گام به گام و با جزئیات نوشته شده شاید طولانی و خسته کننده بنظر بیاد اما درواقع اجرا کردنش فقط چند ثانیه وقت میگیره.
github.com/a-partovii/relive-VSC-Material-Theme
@DevTwitter | <Ashkan/>
من همون اوایل که پاک شده بود پیگیر شدم و تونستم کدهای .json رو استخراج کنم و بصورت مستقیم میذارمشون روی تم VS Code و ازشون استفاده میکنم.
توی این ریپو فایل هارو همراه با یک راهنمای گام به گام در سیستم عامل های مختلف قرار دادم.
چون راهنما در README گام به گام و با جزئیات نوشته شده شاید طولانی و خسته کننده بنظر بیاد اما درواقع اجرا کردنش فقط چند ثانیه وقت میگیره.
github.com/a-partovii/relive-VSC-Material-Theme
@DevTwitter | <Ashkan/>
❤47👍10👎8🔥2
تگ گذاری روی پستهای چنل به کارتون میاد؟ اصلا میشه که با هشتگ جایی چیزی بگردید؟ هشتگ بذاریم رو پستا؟
Anonymous Poll
72%
yup
28%
!yup
👍36👎19❤1
این ریپو رو نوشتم جهت خروجی با کیفیت گرفتن از مدل های ollama با زبان فارسی و همچنین یک محیط گرافیکی خوب توضیحات بیشتر روکوت کردم.
https://github.com/sepy-dev/Persian-Ollama-LLm/
@DevTwitter | <سپهر/>
https://github.com/sepy-dev/Persian-Ollama-LLm/
@DevTwitter | <سپهر/>
👎9🔥6👍4❤2
کمپانی xAI مدل Grok 2.5 رو متنباز کرده؛ حالا همه میتونن به کدهاش دسترسی داشته باشن، تغییرش بدن یا نسخه شخصی بسازن. این حرکت یه گام مهم برای آزادتر شدن هوش مصنوعیه. همچنین اعلام شده تا شش ماه دیگه مدل قدرتمندتر Grok 3 هم متنباز میشه.
https://huggingface.co/xai-org/grok-2
@DevTwitter | <محمد زمانی/>
https://huggingface.co/xai-org/grok-2
@DevTwitter | <محمد زمانی/>
❤61👍8🔥1
برای نصب Cursor توی لینوکس این ریپو خیلی راحت کرده کار رو:
https://github.com/cursor-ide/getcursor
@DevTwitter | <Amir.local/>
https://github.com/cursor-ide/getcursor
@DevTwitter | <Amir.local/>
👎27🔥9👍5❤1
آقا ببینید چی پیدا کردم
https://github.com/PyO3/pyo3
میتونی توی پایتون، rust بنویسی و ران کنی برای وقتایی که performance نیاز داری :))))))))))))))))))))
@DevTwitter | <ali Joghataee/>
https://github.com/PyO3/pyo3
میتونی توی پایتون، rust بنویسی و ران کنی برای وقتایی که performance نیاز داری :))))))))))))))))))))
@DevTwitter | <ali Joghataee/>
👎43👍21🔥6❤1
استنفورد میگه هوشمصنوعی بیشتر نسل جدید یا همون دهه هشتادیهارو داره جایگزین میکنه، استخدامشون ۱۶ درصد کمتر شده. یه دلیلش اینه که اینها چون تازه شروع به کار میکنن معمولا کارهای ابتدایی یا روتین یه شغل رو انجام میدن که راحتتر با AI میشه جایگزین کرد.
با تجربهها که معمولا بالای ۳۰ سال هستن ولی اوضاعشون خوبه و ۶ تا ۹ درصد بازار کارشون بهتر شده.
کلا هوشمصنوعی ورود به بازار کار رو سختتر کرده، دهههای جدید باید بیشتر با واقعیتهاروبرو بشن.
@DevTwitter | <Soroush Ahmadi/>
با تجربهها که معمولا بالای ۳۰ سال هستن ولی اوضاعشون خوبه و ۶ تا ۹ درصد بازار کارشون بهتر شده.
کلا هوشمصنوعی ورود به بازار کار رو سختتر کرده، دهههای جدید باید بیشتر با واقعیتهاروبرو بشن.
@DevTwitter | <Soroush Ahmadi/>
👍80❤5👎4
کتابخانه FoxQL منتشر شد
یک کتابخانه سریع و آسون برای php
با پشتیبانی از اکثر دیتابیس های SQL
PostgreSQL, MySQL, SQLite, Sybase, Oracle, and MSSQL
یک سیستم ORM خفن داره
بر پایه pdo طراحی شده
تمامی متود های مورد نیاز رو داره
مستندات کامل برای هر متود داره
امکان ایجاد، حذف و مدیریت جداول رو با سیستم Migration مشابه لاراول داره
https://github.com/code3-dev/FoxQL
@DevTwitter | <Hossein Pira/>
یک کتابخانه سریع و آسون برای php
با پشتیبانی از اکثر دیتابیس های SQL
PostgreSQL, MySQL, SQLite, Sybase, Oracle, and MSSQL
یک سیستم ORM خفن داره
بر پایه pdo طراحی شده
تمامی متود های مورد نیاز رو داره
مستندات کامل برای هر متود داره
امکان ایجاد، حذف و مدیریت جداول رو با سیستم Migration مشابه لاراول داره
https://github.com/code3-dev/FoxQL
@DevTwitter | <Hossein Pira/>
❤34👎8👍6🔥4
ادیتور Zed
من تو این سالهایی که برنامهنویسی میکنم از ابزارها و ادیتورهای مختلفی استفاده کردم. هر زبان، ادیتور مخصوص خودش رو داشت. اما ۴ سال اخیر همیشه لایسنس اشتراکی JetBrains میخریدم. ابزارهای کامل و قدرتمندی بودن، ولی واقعاً سنگین.
دو ماه پیش اشتراک ۶ ماههم تموم شد. با توجه به دردسرهایی که تحریمها ایجاد کرده بودن، دیگه حوصله نداشتم درگیرش بشم. حتی لایسنس جدیدم رو هم فعال نکردم. اون موقع یادم افتاد چند وقت قبل Zed رو نصب کرده بودم اما خیلی جدی تستش نکردم. خلاصه کانفیگش کردم و از همون موقع تا الان ادیتور اصلی من شده.
باید بگم واقعاً لذت بردم! مخصوصاً اینکه اینقدر با keymapهای Vim سازگاره باعث شد سریعتر عادت کنم. سرعت کدنویسیم حتی از ابزارهای چند ده دلاری JetBrains هم بیشتر شد
به نظرم Zed خیلی سبک، سریع و سادهست. هم تجربه متفاوتی میده، هم سیستم رو سبک نگه میداره تا منابع برای سرویسهای در حال توسعه خودمون آزاد بمونه.
همیشه به نظرم زیبایی در سادگیه. Zed دقیقاً همین رو بهت نشون میده. امتحانش کنید، احتمال زیاد شما هم مثل من عاشقش میشید!
راستی میدونم ادیتور با IDE قابل مقایسه نیست ولی این نتیجه تجربه شخصی منه به عنوان یک توسعه دهنده نرم افزار
@DevTwitter | <Abolfazl Alizadeh/>
من تو این سالهایی که برنامهنویسی میکنم از ابزارها و ادیتورهای مختلفی استفاده کردم. هر زبان، ادیتور مخصوص خودش رو داشت. اما ۴ سال اخیر همیشه لایسنس اشتراکی JetBrains میخریدم. ابزارهای کامل و قدرتمندی بودن، ولی واقعاً سنگین.
دو ماه پیش اشتراک ۶ ماههم تموم شد. با توجه به دردسرهایی که تحریمها ایجاد کرده بودن، دیگه حوصله نداشتم درگیرش بشم. حتی لایسنس جدیدم رو هم فعال نکردم. اون موقع یادم افتاد چند وقت قبل Zed رو نصب کرده بودم اما خیلی جدی تستش نکردم. خلاصه کانفیگش کردم و از همون موقع تا الان ادیتور اصلی من شده.
باید بگم واقعاً لذت بردم! مخصوصاً اینکه اینقدر با keymapهای Vim سازگاره باعث شد سریعتر عادت کنم. سرعت کدنویسیم حتی از ابزارهای چند ده دلاری JetBrains هم بیشتر شد
به نظرم Zed خیلی سبک، سریع و سادهست. هم تجربه متفاوتی میده، هم سیستم رو سبک نگه میداره تا منابع برای سرویسهای در حال توسعه خودمون آزاد بمونه.
همیشه به نظرم زیبایی در سادگیه. Zed دقیقاً همین رو بهت نشون میده. امتحانش کنید، احتمال زیاد شما هم مثل من عاشقش میشید!
راستی میدونم ادیتور با IDE قابل مقایسه نیست ولی این نتیجه تجربه شخصی منه به عنوان یک توسعه دهنده نرم افزار
@DevTwitter | <Abolfazl Alizadeh/>
❤38👎12👍8🔥3
امروز اولین پکیج اوپنسورس خودم رو روی گیتهاب منتشر کردم:
GeoMeasure: https://github.com/donyatorabi/geo-measure
مشکل
خیلی وقتها برای پروژههای مختلف نیاز داریم فاصلهی بین دو نقطهی جغرافیایی (بر اساس مختصات lat/lon) رو حساب کنیم. اکثر مواقع فقط فرمول سادهی Haversine استفاده میشه که زمین رو کروی فرض میکنه و در مسافتهای طولانی یا محاسبات دقیق خطا ایجاد میکنه.
راهحل
در این کتابخانه علاوه بر Haversine، الگوریتم دقیقتر Vincenty (با در نظر گرفتن بیضوی بودن زمین طبق WGS-84) هم پیادهسازی شده. این یعنی هم سرعت (با Haversine) و هم دقت بالا (با Vincenty) رو در یک پکیج سبک و ساده دارید.
ویژگیها
پشتیبانی از واحدهای مختلف (متر، کیلومتر، مایل، مایل دریایی)
محاسبهی فاصله، زاویهی اولیه (bearing) و نقطهی میانی (midpoint)
طراحی ساده و قابل استفاده در هر فریمورک PHP
تست واحد کامل با PHPUnit
پشتیبانی از PHP 8.1 به بالا
نصب
composer require donyatorabi/geo-measure
@DevTwitter | <Donya Torabi/>
GeoMeasure: https://github.com/donyatorabi/geo-measure
مشکل
خیلی وقتها برای پروژههای مختلف نیاز داریم فاصلهی بین دو نقطهی جغرافیایی (بر اساس مختصات lat/lon) رو حساب کنیم. اکثر مواقع فقط فرمول سادهی Haversine استفاده میشه که زمین رو کروی فرض میکنه و در مسافتهای طولانی یا محاسبات دقیق خطا ایجاد میکنه.
راهحل
در این کتابخانه علاوه بر Haversine، الگوریتم دقیقتر Vincenty (با در نظر گرفتن بیضوی بودن زمین طبق WGS-84) هم پیادهسازی شده. این یعنی هم سرعت (با Haversine) و هم دقت بالا (با Vincenty) رو در یک پکیج سبک و ساده دارید.
ویژگیها
پشتیبانی از واحدهای مختلف (متر، کیلومتر، مایل، مایل دریایی)
محاسبهی فاصله، زاویهی اولیه (bearing) و نقطهی میانی (midpoint)
طراحی ساده و قابل استفاده در هر فریمورک PHP
تست واحد کامل با PHPUnit
پشتیبانی از PHP 8.1 به بالا
نصب
composer require donyatorabi/geo-measure
@DevTwitter | <Donya Torabi/>
👍55🔥12👎6❤5
یکی از مشکلات بزرگ کتب برنامهنویسی همیشه این بوده که موضوع Encapsulation رو به شکلی تدریس کردهاند که انگار موضوعی است که فقط و فقط مختص به OOP هست؛ و از اون بدتر، این موضوع رو جوری جا انداختن که افراد فکر میکنند Encapsulation یعنی همان Access modifiers ها (private,public).
برای همین هست که بیشتر افراد هیچگونه تصوری از این ندارند که Encapsulation خارج از OOP چگونه است، و حتی در همون پارادایم OOP هم بدرستی نمیتونن کپسوله سازی رو پیاده سازی کنن و اجزای مختلف کدهاشون درهم و برهم هست.
موضوع Encapsulation یک موضوع منطقی است و برعکس چیزی که بیشتر کتابها بهتون میگن ربطی به Access modifier ها ندارد. Access modifier ها صرفا یک برچسب هستند که به طور عمده دو وظیفه رو دنبال میکنن: یک اینکه کامپایلر بتواند جلوی اشتباهات سهوی شما در بکارگیری برخی فیلدها رو بگیره (که این مدل اشتباه فوق العاده نادر هست)؛ و دلیل دیگر اینکه سایر برنامهنویسها موقع خواندن کدها، متوجه منظور شما بشن. مثلا متوجه بشن که شما خواسته ات در هنگام نوشتن کد این بوده که خارج از فلان محدوده از فلان فیلد استفاده نشود.
صرفا چون تعدادی از فیلدها را پرایوت کرده اید و تعدادی دیگر را پابلیک، فکر نکنید که Encapsulation انجام داده اید. بود و نبود این برچسبها، هیچ تاثیری در روند پیاده سازی Encapsulation در کدهای شما ندارند. اگر دوست دارید تمام فیلدها را پابلیک کنید! چه کسی، و چگونه، میخواهد یواشکی از فیلدهای شما استفاده کند؟ مگر میشود بخشی از کد، همینطور سرخود بیاید و از فیلدهای فلان بخش استفاده کند؟ شما باید مشخصا چنین کدی رو تایپ کنید وگرنه کدها از خودشان ارادهای ندارند که بتوانند قسمتهای مختلف یکدیگر رو دستکاری کنند!
موضوع Encapsulation یک فرآیند منطقی در هنگام طراحی سیستم هست که طی اون اجزای مختلف سیستم در یونیتهای مستقل کپسوله سازی میشن؛ این فرآیند، پیش نیاز تولید کدهای ماژولار هست. در این فرآیند کدها به شکل منطقی از هم جدا میشن، و در فاز بعدی که به سیستم ماژول میرسید، کدها متناسب با این طراحی، به شکل فیزیکی از هم جدا میشن.
متاسفانه برخی زبانهای معروف OOP مثل جاوا یا سی پلاس پلاس، تا سالها یک سیستم ماژول درست حسابی نداشتند و باعث شدند Access modifier ها در ذهن برنامهنویسها مترادف با Encapsulation و کدهای ماژولار بشوند؛ به این شکل که در نبود اونها، اصلا هیچ تصوری از اینکه Encapsulation چیست و قرار است طی آن چه اتفاقی بیفتد ندارند!
در زبانی که دارای یک سیستم ماژول خوب است، موضوع Access modifier ها چیزی هست که جزو مکانیزمهای مربوط به سیستم ماژول اون زبان هستند. در این مدل زبانها این مکانیزمها جزو قابلیتهای کمکی در زمینه دسته بندی و طبقه بندی فیزیکی کدها هستند (در کنار کمک به سایر برنامهنویسان در زمینه خوانایی) و باعث میشن کمتر این شبهه در ذهن برنامهنویس پیش بیاد که به صرف استفاده از این برچسبها، داره عمل کپسوله سازی رو انجام میده.
@DevTwitter | <Amirreza Gh/>
برای همین هست که بیشتر افراد هیچگونه تصوری از این ندارند که Encapsulation خارج از OOP چگونه است، و حتی در همون پارادایم OOP هم بدرستی نمیتونن کپسوله سازی رو پیاده سازی کنن و اجزای مختلف کدهاشون درهم و برهم هست.
موضوع Encapsulation یک موضوع منطقی است و برعکس چیزی که بیشتر کتابها بهتون میگن ربطی به Access modifier ها ندارد. Access modifier ها صرفا یک برچسب هستند که به طور عمده دو وظیفه رو دنبال میکنن: یک اینکه کامپایلر بتواند جلوی اشتباهات سهوی شما در بکارگیری برخی فیلدها رو بگیره (که این مدل اشتباه فوق العاده نادر هست)؛ و دلیل دیگر اینکه سایر برنامهنویسها موقع خواندن کدها، متوجه منظور شما بشن. مثلا متوجه بشن که شما خواسته ات در هنگام نوشتن کد این بوده که خارج از فلان محدوده از فلان فیلد استفاده نشود.
صرفا چون تعدادی از فیلدها را پرایوت کرده اید و تعدادی دیگر را پابلیک، فکر نکنید که Encapsulation انجام داده اید. بود و نبود این برچسبها، هیچ تاثیری در روند پیاده سازی Encapsulation در کدهای شما ندارند. اگر دوست دارید تمام فیلدها را پابلیک کنید! چه کسی، و چگونه، میخواهد یواشکی از فیلدهای شما استفاده کند؟ مگر میشود بخشی از کد، همینطور سرخود بیاید و از فیلدهای فلان بخش استفاده کند؟ شما باید مشخصا چنین کدی رو تایپ کنید وگرنه کدها از خودشان ارادهای ندارند که بتوانند قسمتهای مختلف یکدیگر رو دستکاری کنند!
موضوع Encapsulation یک فرآیند منطقی در هنگام طراحی سیستم هست که طی اون اجزای مختلف سیستم در یونیتهای مستقل کپسوله سازی میشن؛ این فرآیند، پیش نیاز تولید کدهای ماژولار هست. در این فرآیند کدها به شکل منطقی از هم جدا میشن، و در فاز بعدی که به سیستم ماژول میرسید، کدها متناسب با این طراحی، به شکل فیزیکی از هم جدا میشن.
متاسفانه برخی زبانهای معروف OOP مثل جاوا یا سی پلاس پلاس، تا سالها یک سیستم ماژول درست حسابی نداشتند و باعث شدند Access modifier ها در ذهن برنامهنویسها مترادف با Encapsulation و کدهای ماژولار بشوند؛ به این شکل که در نبود اونها، اصلا هیچ تصوری از اینکه Encapsulation چیست و قرار است طی آن چه اتفاقی بیفتد ندارند!
در زبانی که دارای یک سیستم ماژول خوب است، موضوع Access modifier ها چیزی هست که جزو مکانیزمهای مربوط به سیستم ماژول اون زبان هستند. در این مدل زبانها این مکانیزمها جزو قابلیتهای کمکی در زمینه دسته بندی و طبقه بندی فیزیکی کدها هستند (در کنار کمک به سایر برنامهنویسان در زمینه خوانایی) و باعث میشن کمتر این شبهه در ذهن برنامهنویس پیش بیاد که به صرف استفاده از این برچسبها، داره عمل کپسوله سازی رو انجام میده.
@DevTwitter | <Amirreza Gh/>
👍52👎15❤12🔥1
دیدید داخل فرم های ورودی بعضی سایتا وقتی شماره تلفن یا مثلا شماره کارت وارد می کنید اونو برای خوانایی بیشتر چند رقم چند رقم جدا میکنه؟ این لایبری براتون اون کارو میکنه همه ورودی هارم ساپورت میکنه.
http://nosir.github.io/cleave.js
@DevTwitter | <Nimo/>
http://nosir.github.io/cleave.js
@DevTwitter | <Nimo/>
❤33👎8👍7🔥2