DevTwitter | توییت برنامه نویسی – Telegram
DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 videos
6 files
4.1K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
استنفورد میگه هوش‌مصنوعی بیشتر نسل جدید یا همون دهه هشتادی‌هارو داره جایگزین میکنه، استخدامشون ۱۶ درصد کمتر شده. یه دلیلش اینه که این‌ها چون تازه شروع به کار میکنن معمولا کارهای ابتدایی یا روتین یه شغل رو انجام میدن که راحت‌تر با AI میشه جایگزین کرد.
با تجربه‌ها که معمولا بالای ۳۰ سال هستن ولی اوضاعشون خوبه و ۶ تا ۹ درصد بازار کارشون بهتر شده.
کلا هوش‌مصنوعی ورود به بازار کار رو سخت‌تر کرده، دهه‌های جدید باید بیشتر با واقعیت‌هاروبرو بشن.

@DevTwitter | <Soroush Ahmadi/>
👍805👎4
کتابخانه FoxQL منتشر شد

یک کتابخانه سریع و آسون برای 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/>
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/>
👍55🔥12👎65
یکی از مشکلات بزرگ کتب برنامه‌نویسی همیشه این بوده که موضوع 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/>
👍52👎1512🔥1
دیدید داخل فرم های ورودی بعضی سایتا وقتی شماره تلفن یا مثلا شماره کارت وارد می کنید اونو برای خوانایی بیشتر چند رقم چند رقم جدا می‌کنه؟ این لایبری براتون اون کارو می‌کنه همه ورودی هارم ساپورت می‌کنه.

http://nosir.github.io/cleave.js

@DevTwitter | <Nimo/>
33👎8👍7🔥2
دو تا توصیه "قبل از هر چیزی" دارم برای دوستانی که احتمالا بعد از ابلاغ لایحه اصلاح واحد پولی (حذف چهار صفر) ناچار به اعمال تغییرات تو سامانه‌هاشون خواهند بود:

۱. اعمال تغییرات روی دیتابیس رو کلا فراموش کنید

بسیاری از دوستان تا می‌شنون واحد پولی جدید دو رقم اعشار داره، فوری به تغییر تایپ ستون‌های مبالغ از integer به float فکر می‌کنن؛ نکنید دوستان! بذارید همه چیز intrger باقی بمونه و اعمال exponent و اعشار رو به اینترفیس‌ها (چه در ui و چه در apiها) واگذار کنید. خیلی از ماها هیچوقت با داده‌های اعشاری تو موضوعات مالی کار نکردیم و نهایتا مختصات نقطه‌ها و امتیاز (rating) رو اعشاری ذخیره کردیم که تو این مدل کاربردها هم خطاهای رندینگ و floating point error خیلی خودشون رو نشون نمیدن. برای از دست دادن شغلتون، کافیه تو یه سیستم مالی حاصل جمع 0.1 و 0.2 رو 0.3 فرض کنید، یا تصور کنید حاصل ده بار جمع زدن 0.1 میشه یک! (که متاسفانه نمیشه!)

۲. از همین امروز دو رقم آخر مبالغ ریالی رو صفر کنید
حذف چهار صفر و اضافه شدن دو رقم اعشار، تو عمل یعنی فقط حذف دو رقم آخر (یکان و دهگان). از همین امروز از پذیرفتن ورودی‌های ریالی جدیدی که به ۱۰۰ بخش‌پذیر نیستن جلوگیری کنید و اگه لازمه مجوز‌های لازم برای این کار رو بگیرید. این کار باعث میشه بعدا که خواستید ۶۹۹۰۰ ریال قدیم رو به ۶.۹۹ تومان جدید تغییر بدید دیگه بابت از دست رفتن اون دو صفر آخر تو مقدار ریالی نگران نباشید و با آمادگی قبلی به استقبال تغییرات برین.

@DevTwitter | <Hossein Pourbahrami/>
👎47👍249🔥2
#browser_extension

ما یک افزونه به اسم امگا هوش توسعه دادبم که یک Ai برای دستیار برنامه نویسی شما هست. بدون محدودیت میتونید توی کد نویسیتون استفاده کنی.
کاربردشم این هست که کد رو براتون کامل میکنه، کد رو براتون توضیح میده و توی کد نویسی کمکتون میکنه.
برای نصبش هم میتونید از طریق لینک زیر نصبش کنید.
https://marketplace.visualstudio.com/items?itemName=PouriaHosseini.omga-ai

@DevTwitter | <Pouria Hosseini/>
39👎10👍3🔥1
اگه AI Agent درست میکنید حتما این دوتا تکنولوژی را یاد بگیرید:
۱- ابزار google ADK که یک فریمورک بسیار قوی برای ساختن ایجنت هست. الان به سرعت داره تو صنعت فراگیر میشه.
۲- پروتکل Agent2Agent (A2A).که برای ارتباط ایجنتها با همدیگه است.
خود ریپوهای این ابزارها کلی مثال عالی داره که میتونید سریع یاد بگیرید.
-A2A: https://github.com/a2aproject/A2A
- ADK: https://google.github.io/adk-docs/

@DevTwitter | <Mehdi Allahyari/>
👍196👎1
دیتابیس Chroma، یه دیتابیس برای برنامه های مرتبط با ai هست که با زبان راست نوشته شده و با اون میتونید قدرت LLM ها رو خیلی بیشتر کنید

این دیتابیس میتونه سند ها و داکیومنت ها رو به‌ راحتی و با سرعت ذخیره و بازیابی کنه

برای پروژه‌های AI و RAG عالیه!

لینک ریپوش
https://github.com/chroma-core/chroma

@DevTwitter | <ixAbolfazl/>
👍166👎2
ی اسکنر داریم که شما url رو وارد میکنی + لیست تست خودت(ی تعداد محدودی رو دیفالت چک میکنه خودش ولی پیشنهاد میکنم لیست خودتونم بدید بهش) و براتون end-point های سایت مورد نظرتون رو نمایش میده. برای کسانی که توی حوزه امنیت و تست نفوذ فعالیت دارن.
https://github.com/manirazii/end-point-finder

@DevTwitter | <پسر لوسیفر/>
👍20👎5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
اولین مدل vision language model (VLM) ساخته‌شده روی OpenAI gpt-oss تازه منتشر شد! InternVL3.5 با ۳۲ مدل مختلف میاد که هم pretrain شدند هم fine tune.
برای بخش LLM هم یا از gpt-oss استفاده می‌کنه یا از Qwen3.
مدلها از ۱ میلیارد تا ۲۴۱ میلیارد پارامتر دارند.
HuggingFace: https://huggingface.co/collections/OpenGVLab/internvl35-68ac87bd52ebe953485927fb

@DevTwitter | <Mehdi Allahyari/>
4👍4🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
شرکت چینی Moonshot AI یه قابلیت تازه به Kimi اضافه کرده به اسم «PPT Assistant». باهاش می‌تونی فقط با یه متن ساده یا حتی فایل PDF و Word، درجا یه پاورپوینت شیک بسازی. خبر خوب؟ فارسی رو کامل ساپورت می‌کنه و کاملاً رایگانه، بدون هیچ محدودیتی!

https://kimi.com/kimiplus/cvvm7bkheutnihqi2100

@DevTwitter | <محمد زمانی/>
🔥315👍4👎4
مستند پایتون منتشر شده و به نظرم برای هر کسی که بخش زیادی از کارش رو با پایتون انجام می‌ده، تماشاش می‌تونه خیلی جذاب باشه. پیشنهاد می‌کنم از دستش ندید!

https://www.youtube.com/watch?v=GfH4QL4VqJ0&feature=youtu.be

@DevTwitter | <Reza Jafari/>
29👍5👎5🔥2
قبلا سایت ایرنیک لیست دامنه هایی که تازه آزاد شده بود رو تو سایتش میذاشت اما خیلی وقته که لیستشو نمی‌ذاره
بجاش میتونید از سایت زیر لیست دامنه های تازه آزاد شده رو ببینید

http://free-domains.ir

پ.ن: اگه دنبال ایده برای اسم دامنه هستید میتونه کاربردی باشه

@DevTwitter | <ixAbolfazl/>
24👍7👎2🔥1
رفقا برنامه‌ای چیزی برای اندروید سراغ دارید که بشه توش کارها رو track کرد؟

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

سینک هم بشه
🔥37👍9👎31
توی دنیای لاراول همیشه یه قلب تپنده وجود داره که خیلی وقتا مخفی می‌مونه، ولی همه‌چی بهش وصله:
Service Container (یا همون IoC Container)

حالا Service Container چیه؟
فرض کن توی یه پروژه بزرگ، کلی سرویس داری:‌ مثل PaymentService، UserRepository، Logger و ...
اگه بخوای همه رو با new بسازی و دستی بهم وصل کنی، خیلی زود پروژه میشه یه باتلاق
اینجاست که Service Container وارد میشه:
تو فقط میگی "من به یه PaymentService نیاز دارم"،
لاراول خودش میره اون رو می‌سازه و وابستگی‌هاش رو هم تزریق می‌کنه.
به این جادوی قشنگ میگن Inversion of Control: یعنی به جای اینکه خودت کنترل ساخت اشیا رو بگیری، این کارو به Container می‌سپری.

چی شد که از لاراول 8 تا 12 تکامل پیدا کرد؟
بیایم مثل یه خط زمان نگاه کنیم:
* لاراول 8 - Auto-Resolution: لاراول خودش می‌فهمید چی رو باید resolve کنه.
نیاز کمتر به ثبت دستی سرویس‌ها.

* لاراول 9 - Contextual Binding: می‌تونستی بگی "وقتی فلان کلاس خواست PaymentGateway رو، بهش Stripe بده؛ ولی برای یه کلاس دیگه Paypal بده".
انعطاف بیشتر توی پروژه‌های پیچیده.
* لاراول 10 - تست‌پذیری قوی‌تر: راحت‌تر می‌شد سرویس‌ها رو mock کرد.
هماهنگی بیشتر با PHP 8 و type hintها.
* لاراول 11 و 12 - ساختار بوت‌استرپ ساده‌تر شد (دیگه لازم نیست هر چیزی رو دستی تو ServiceProvider ثبت کنی).
Container سریع‌تر و هوشمندتره؛ خیلی وقتا قبل از اینکه بفهمی نیاز داری، خودش resolve می‌کنه

چرا باید اهمیت بدیم ؟
1- کدی که می‌نویسی loosely coupled میشه (یعنی بخش‌ها کمتر به هم وابسته‌ان).
2- تست‌نویسی آسون‌تر میشه.
3- هر وقت خواستی یه سرویس رو عوض کنی (مثلاً از Stripe بری روی Paypal)، فقط کافیه binding رو تغییر بدی.
4- توی پروژه‌های بزرگ، این ویژگی واقعاً مثل اکسیژنه
5- برای پروژه های میکوسرویس خیلی کاربرد داره : )

@DevTwitter | <amirreza raadi/>
👍23👎1610🔥1
انقلابی برای UIهای پیچیده!
Parallel Routing در Next.js

خیلی خلاصه بگم میاد همزمان چند روت (صفحه) رو در یک صفحه لود میکنه و چون نمیخوای به عنوان کامپوننت باشه و قابلیت یک روت رو در بخش های مختلف یک صفحه داشته باشی میای سراغ روت همزمان.

مثلا تو یک صفحه یک تب داری ، سایدبار داری و یک بخش چت داری میخوای با این بخش ها مثل یک روت رفتار کنی کاربر یک صفحه میبینه اما پشت کار هر بخش یک صفحه ی مجزاست یعنی قابلیت های روت رو بهت میده مثل :

1 URL مستقل برای هر بخش (Route Independence)
2 Data Fetching جدا برای هر Slot (SSR/SSG جداگانه)
3 Streaming جداگانه (React Server Components Streaming)
4 Error Boundaries مستقل
5 Loading States مستقل
6 Prefetching و Caching جداگانه
7 Optional Routes / Default UI برای هر بخش
8 Dynamic Parallel Routing (Slotهای داینامیک)
9 Separation of Concerns بهبود ساختار کد و ماژولار بودن
10 SEO بهتر برای بخش‌های مستقل

2 بهترین جا برای استفاده:
داشبوردها، اپ‌های چت و ایمیل، UIهای چندبخشی، و اپلیکیشن‌های SaaS با صفحه‌های پیچیده.
3 برای پروژه‌های ساده ، استفاده از Parallel Routing غیرضروریه و فقط کد رو پیچیده می‌کنه. همون کامپوننت بهتره.

یوز کیس های خیلی قشنگی براش میتونید دربیارید البته برای اپ های بزرگ که سرعت و پرفورمنس یو آی براشون خیلی مهمه مثل اپ های جامع . فروشگاه های چند وجهی و ...

اینجا مفصل تر توضیح داده شده
https://vrgl.ir/tyjGD

@DevTwitter | <Ahmad Safari/>
👎19👍166🔥4
کاهش حجم باندل نهایی پروژه ها با Vite

خیلی از پروژه‌های فرانت‌اند بعد از Build حجم بالایی دارن و این باعث کندی لود اولیه (TTFB و FCP بالا) میشه.
یکی از بهترین راهکارها برای حل این مشکل، استفاده از فشرده‌سازی (Compression) هست.

معرفی پکیج
پکیج vite-plugin-compression یک پلاگین ساده و کارآمد برای Vite هست که فایل‌های خروجی پروژه رو با الگوریتم‌های مختلف فشرده می‌کنه:
gzip
brotli
deflate

مزایا
کاهش حجم فایل‌های استاتیک (CSS, JS, HTML)
بهبود سرعت بارگذاری صفحات (Load Time)
سازگاری با اکثر مرورگرها
پیکربندی ساده
با فعال کردن این پلاگین میشه تا ۶۰٪ کاهش حجم فایل‌ها داشت

@DevTwitter | <Mohsen Karimvand/>
👍296👎2🔥1
فکر کنم هر کسی با خوندن این مقاله کاملا داکر رو درک نه ! به زبان خیلی خیلی ساده !

لینک مقاله

@DevTwitter | <Mohammad Nasiri/>
👎2111👍2