🎄 DevTwitter | توییت برنامه نویسی – Telegram
🎄 DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.37K photos
358 videos
6 files
4.11K 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
قالب Mason برای معماری Clean و BLoC در Flutter

معرفی قالب خفنی که برای پروژه‌های Flutter نوشتم.

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

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


معماری Clean و مقیاس‌پذیر
با این قالب، کدهای شما کاملاً ساختاریافته، تمیز و آینده‌نگر هستن. مدیریت منطق، داده‌ها و UI به ساده‌ترین شکل ممکن انجام می‌شه.

همه‌چیز آماده: BLoC، UseCase و Repository
لایه‌ها به صورت کاملاً جداگانه طراحی شدن تا کار روی پروژه برات ساده‌تر و ماژولار بشه.

پوشه‌بندی تمیز و منعطف
پروژه همیشه مرتب و خواناست، هر تغییری بخوای بدی، خیلی راحت انجام می‌دی.

پشتیبانی از چندزبانه بودن (Localization)
اگه می‌خوای برنامه‌ت رو برای کاربرهای مختلف دنیا ارائه بدی، با این قالب خیلی راحت می‌تونی ترجمه‌ها رو مدیریت کنی.

نوتیفیکیشن با Firebase Cloud Messaging
ارسال و دریافت نوتیفیکیشن با تنظیمات ساده و کامل. البته برای این بخش نیاز به تنظیمات Firebase داری.

ذخیره امن داده‌ها (FlutterSecureStorage)
اطلاعات حساس کاربرها مثل توکن‌ها رو به صورت امن ذخیره کن و خیالت از امنیت راحت باشه.

پشتیبانی از Flavor
برای مدیریت محیط‌های مختلف مثل Dev، Staging و Production، این قالب برات همه‌چیز رو آماده کرده.

ناوبری آسان (بدون نیاز به Context)
خیلی ساده بین صفحات جابه‌جا شو و حتی لاگ مسیرها رو داشته باش.

ریسپانسیو بودن با Flutter ScreenUtil
رابط کاربریت رو برای همه دستگاه‌ها به صورت کاملاً هماهنگ و ریسپانسیو طراحی کن.

ارتباط حرفه‌ای با سرور با Dio
مدیریت درخواست‌های HTTP با کتابخانه قدرتمند Dio انجام می‌شه. سریع، مطمئن و منعطف.

پشتیبانی از تاریخ شمسی (Jalali Date Support)

این قالب یه سری اکستنشن برا تاریخ شمسی رو داره کار با تاریخ شمسی رو برات راحت میکنه.

لاگ‌گیری زیبا با Pretty Dio Logger
لاگ‌های شبکه رو به صورت خوانا و حرفه‌ای مدیریت کن.

https://github.com/basicFlutter/mason_bricks

@DevTwitter | <Abbas Dehghani/>
🔥19👍52👎1
بعد از اینکه با مهندسی معکوس apiهای مکتب‌خونه و نحوه فراخوانی آن‌ها در پیاده‌سازی پکیج پایتونی maktab-dl آشنا شدم، چالش‌های زیادی در پیاده‌سازی توجهم را جلب کرد. در این مطلب به بررسی بعضی از چالش‌ها و راه حل آن‌ها می‌پردازیم.

https://virgool.io/@code/mvt-soa-lw0wep5b2agp

@DevTwitter | <Mohammadreza Shaghouzi/>
25👍3👎2
فست ای پی ای یه فریمورک وب برای توسعه API های restful تو پایتونه که توسط شخصی به نام سباستین تو سال ۲۰۱۸ تحت لایسنس mit منتشر شده، فست ای پی ای یه وب میکروفریمورک سریع و اپن سورسه

از اونجایی که Fastapi دوره‌ای نداره یا اگه هم داره پولی هستن من اومدم و قدم به قدم مثل خود داکیومنت سایت fastapi دوره ضبط کردم و گذاشتم یوتیوب
https://youtu.be/mDyu9ACl5Kg

@DevTwitter | <Shayan Heidari/>
👍99👎1611🔥3
دیپ‌سیک جیلبریک شد

ماجرا از این قراره: یه کاربر خلاق تو سایت ردیت تونسته هوش مصنوعی "دیپ‌سیک" رو به اصطلاح "جیلبریک" کنه. جیلبریک یعنی دور زدن محدودیت‌هایی تعیین شده.

این کاربر برای این کار از یه تکنیک به اسم "Prompt Injection" استفاده کرده.

پرامپت اینجکشن به این معناست که یه نفر می‌تونه (پرامپت) یه مدل زبانی رو طوری دستکاری کنه که مدل نتایج غیرمنتظره‌ای تولید کنه. این کار می‌تونه باعث بشه مدل دستوراتی رو اجرا کنه که معمولاً نمی‌خواستیم یا نمی‌باید انجام بشه، مثلاً دستوراتی که خلاف اصول ایمنی یا فیلترها هستند.

یکی از نتایج این جیلبریک این بوده که دیپ‌سیک تونسته درباره موضوعات حساس و ممنوعه حرف بزنه. مخصوصا موضوعاتی که توی چین سانسور میشن، مثل "حادثه میدان تیان‌آن‌من".

دیپ‌سیک طوری طراحی شده که به طور معمول درباره این موضوعات صحبتی نکنه، ولی این کاربر با تکنیک خودش تونسته این محدودیت رو دور بزنه.

برای اینکه ربات و فیلترهای سانسور متوجه موضوع حساس نشن، کاربر از روش پرامپت اینجکشن استفاده کرده. توی پرامپتی که به دیپ‌سیک داده، ازش خواسته موقع جواب به جای حروف معمولی از اعداد و کاراکترهای خاص استفاده کنه. مثلا عدد "4" رو به جای حرف "A" و عدد "3" رو به جای حرف "E" گذاشته.

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

@DevTwitter | <محمد زمانی/>
👍188🔥429👎2
آسیب پذیری typosquatting یا dangling domain آخرین چیزی است که آدم بخواهد در جایی مثل MasterCard ببیند!
آسیب پذیری که 5 سال وجود داشته.
داستان جالبی هست اگر حال داشتید بخوانید.
https://krebsonsecurity.com/2025/01/mastercard-dns-error-went-unnoticed-for-years/

@DevTwitter | <Vahid Nameni/>
👍21👎2
This media is not supported in your browser
VIEW IN TELEGRAM
من چند روزی بود که سر اجرای یه پروژه GitHub گیر کرده بودم که هیچ جوری نمیتونستم از ساختارش دید بگیرم.
بعد چند شب بیخوابی امروز یه ابزار خفن پیدا کردم که واقعاً خیلی کاربردیه. لینکشو پایین میزارم :)

پوینتش اینه که دیگه لازم نیست وقتتون رو برای تبدیل دستی ریپازیتوری هدر بدین. فقط کافیه تو آدرس گیتهاب، "hub" رو با "ingest" عوض کنید و بلافاصله یه متن مرتب و کامل دریافت کنید که می‌تونید مستقیماً به GPT بدید. مث آب خوردن :)
امکاناتش؟
- نمایش کامل ساختار دایرکتوری پروژه
- یه خلاصه کوتاه و مفید از پروژه
- کل کدها و محتوا به صورت متنی آماده برای استفاده در GPT
اکستنشن کروم و .. بقیه چیزارو هم داره.
https://github.com/cyclotruc/gitingest

@DevTwitter | <Ali Mikaeili/>
👍42👎63
اینکه یک دولوپر کدهای بلااستفاده (Dead Code) رو توی codebase نگه میداره هیچ جوره درک نمیکنم! از تنبلی هست یا ...

@DevTwitter | <Karim Mohammadi/>
👎94👍27
داستان هوشمندی هکرها همیشه جذاب بوده و البته ترسناک چون که اطلاعات ما ایرانی‌ها در سامانه‌هایی هست که گاهی اوقات نکات اولیه امنیت را نیز رعایت نمی کنند.

این خبر را بخوانید تا متوجه منظورم شوید:
محققان امنیتی یک backdoor کاملاً جدید، که پیش‌تر شبیه آن وجود نداشته را کشف کردند که به‌طور مخفیانه کنترل ده‌ها VPN سازمانی را که بر روی سیستم‌عامل Junos شرکت Juniper Networks اجرا می‌شدند، در اختیار گرفته است.

این درب‌پشتی که با نام J-Magic شناخته می‌شود، یک گام فراتر می‌رود تا از دسترسی غیرمجاز جلوگیری کند. پس از دریافت یک magic packet که در flow عادی ترافیک TCP پنهان شده است، یک چالش امنیتی را به دستگاه ارسال‌کننده بازمی‌گرداند.
این چالش شامل یک رشته متنی است که با استفاده از بخش عمومی یک کلید RSA رمزگذاری شده است. طرف آغازکننده برای اثبات دسترسی به کلید خصوصی، باید متن رمزگشایی‌شده صحیح را ارسال کند.

این درب‌پشتی سبک و کم‌حجم از جنبه دیگری نیز قابل توجه است چون فقط در RAM بارگذاری می‌شود و هیچ ردی در دیسک باقی نمی‌گذارد، که این ویژگی، شناسایی آن را برای مدافعان دشوارتر می‌کند.
منبع:
https://arstechnica.com/security/2025/01/backdoor-infecting-vpns-used-magic-packets-for-stealth-and-security/

@DevTwitter | <Vahid Nameni/>
👍30👎31
بلاخره، اولین Open Source پروژه‌ام را منتشر کردم؛ یک بات تلگرامی که با استفاده از مدل‌های زبانی پیشرفته متون را ترجمه می‌کند. این اولین گام هر چند کوچک در مسیر توسعه ابزارهای هوشمند است.

https://github.com/Ho3seinTork/Translator-Telegram-Bot-with-LLMs

@DevTwitter | <Diss Obedience/>
👍8511👎6
وقتی به ریکت 19 و هوک های جدیدش نگاه کردم، دیدم الان چنتا هوک داریم که داخلشون میشه با API ها ارتباط برقرار کرد.
و برام سوال شد که چه فرقی دارن پس؟
برای همین تصمییم گرفتم خیلی خلاصه نتیجه ی سوال خودم رو اینجا بنویسم.

1-useEffect
هدف: ارسال درخواست های API بعد از رندر کامپوننت.
کاربرد: برای انجام عملیات های async مثل ارسال درخواست های GET به API در سمت کلاینت.

2-use
هدف: ارسال درخواست های API پیش از رندر در Server Components.
کاربرد: برای دریافت داده ها از API در سرور پیش از رندر کردن کامپوننت ها.(این ویژگی مخصوص Server-Side Rendering است.)

3- useActionState
هدف: مدیریت وضعیت های مختلف یک عملیات async مانند لودینگ، موفقیت، و خطا.
کاربرد: برای مدیریت عملیات هایی که داده ها را تغییر می دهند (مثل ارسال *فرم* ها یا تغییر اطلاعات در سرور).

4- useTransition
هدف: انجام درخواست های async طولانی بدون مسدود کردن UI.
کاربرد: زمانی که می خواهید درخواست های زمان بر (مانند API هایی که داده های زیادی برمی گردانند) را به صورت غیر مسدودکننده ارسال کنید تا UI همچنان پاسخگو باقی بماند.

@DevTwitter | <Hossein Mohammadzadeh/>
👍43🔥5👎1
اینقدر پیر شدین که Clippy را یادتون بیاد ؟
اگر دوست دارید یک محیط مدیریت SQLite تحت وب شبیه ویندوز 2000 و خاطره Clippy را زنده کنه
sqlook.com
تجربه خوبی است

@DevTwitter | <MehrdadLinux/>
👍26👎62
یه مدت سرم خلوت بود، تصمیم گرفتم یه تابع ساده بنویسم برای تشخیص نوع فایل‌ها و دسته‌بندی‌شون بر اساس پسوند یا URL. این تابع رو برای کاتلین، جاوا، پایتون و تایپ‌اسکریپت نوشتم. به درد اونایی می‌خوره که با فایل‌های مختلف سروکار دارن

https://github.com/MJavadSF/getFileType

@DevTwitter | <آقا محمد جواد آقا/>
🔥37👍9👎62
دیدم اکانت Codecrafters با ماهی ۳۰ دلار برای ما ایرانیا به‌صرفه نیست، دست‌به‌کار شدم و Build Your Own X رو ساختم! حالا می‌تونی کامپایلر، دیتابیس، ردیس و کلی چیز دیگه رو خودت از صفر بسازی و یاد بگیری چطور کار می‌کنن!بیاید یه سر بزنید، نظرتون برام مهمه!
https://github.com/abolfazl-moeini/build-your-own-x

@DevTwitter | <Abolfazl Moeini/>
👍6014👎6🔥4
گولنگ شی‌گرا هست یا نه؟
تو یه سری آگهی‌های شغلی دیدم که جزو نیازمندی‌ها، پیاده‌سازی OOP در گولنگ ذکر شده. یه سری جاها هم نوشتن پیاده‌سازی مفاهیم OOP در گولنگ که خب منطقی‌تر به نظر می‌رسه.

برای جواب دادن به این سوال، اول ببینیم اصلاً OOP چیه؟

برنامه‌نویسی شی‌گرا یه پارادایم برنامه‌نویسیه که بر اساس یه مفهوم به اسم شی (Object) کار می‌کنه. هر شی یه سری دیتا داره و رفتارش رو هم درون خودش کپسوله می‌کنه.

چهار اصل مهم OOP هم ایناست:

- Encapsulation
- Abstraction
- Inheritance
- Polymorphism

حالا این اصول از کجا اومدن؟
آیا فقط مخصوص OOP هستن؟

نه، اینا جز اصول پایه‌ای طراحی نرم‌افزارن و توی بقیه پارادایم‌ها مثل Functional Programming هم وجود دارن. OOP اومده این اصول رو به سبک خودش پیاده‌سازی کرده.

حالا بریم سراغ گولنگ...

گولنگ بعضی از این مفاهیم رو با سبک و روش خودش پیاده‌سازی کرده، مثلاً Encapsulation رو از طریق Package-level Visibility داره، یا Polymorphism رو با Interfaceها پیاده‌سازی کرده. اما بعضی چیزا رو هم عمداً حذف کرده، مثل Class-based Inheritance، چون فلسفه Go بیشتر روی سادگی و ترکیب‌پذیری (Composition) تمرکز داره.

مشکل کجاست؟

خیلی جاها میان گولنگ رو مثل یه زبان OOP استفاده می‌کنن که بعضی وقتا تبدیل به Anti-pattern میشه. مثلاً پیاده‌سازی Factory Pattern به روش کلاسیک OOP یا Singleton به سبک جاوا و سی‌شارپ توی Go باعث پیچیدگی اضافی میشه. اینجور کدها معمولاً کار می‌کنن، ولی خوانایی و سادگی Go رو از بین می‌برن.

پس اگه توی آگهی‌ها دیدین که نوشتن پیاده‌سازی OOP در گولنگ، بهتره بیشتر تحقیق کنین که دقیقاً منظورشون چیه. Go زبان شی‌گرا به سبک کلاسیک نیست، اما مفاهیم OOP رو به روش خودش داره.

@DevTwitter | <Ali Farhadnia/>
🔥47👍32👎1
وقتی Cache بیشتر از این که کمک کنه، دردسر می سازه!

چند وقت پیش روی یه پروژه بزرگ کار می کردم که توش Redis برای کشینگ استفاده می کردیم. همه چیز خوب پیش می رفت تا اینکه یه روز، یه تغییر ظاهرا بی ضرر تو کد باعث شد کش درست Invalid نشه. نتیجه چی شد؟ کاربرا داده های قدیمی رو می دیدن، بعضیا نمی تونستن اطلاعاتشون رو آپدیت کنن، و پشتیبانی حسابی شلوغ شد!

کش توزیع شده یه شمشیر دولبه ست!
از یه طرف، می تونه فشار روی دیتابیس رو کم کنه و سرعت پاسخ گویی رو بالا ببره، ولی از طرف دیگه، اگه درست مدیریت نشه، مشکلاتی مثل:

مشکل Cache Inconsistency – وقتی دیتا تو کش و دیتابیس ناهماهنگ می شه و بعضی کاربرا داده های قدیمی می بینن.

مشکل Cache Stampede – همه درخواست ها همزمان به کش می رسن و فشار زیادی ایجاد می کنن.

مشکل TTL Misconfiguration – تنظیم اشتباه زمان اعتبار کش که باعث می شه یا دیتا زودتر از حد لازم حذف بشه یا تا مدت زیادی به روز نشه.


اون تجربه یه درس مهم بهم داد: کش چیزی نیست که فقط یه بار تنظیمش کنیم و فراموشش کنیم. باید یه استراتژی کش هوشمند داشته باشیم که همیشه بهینه بمونه.

@DevTwitter | <Hamed Farzanefar/>
👍741👎1
تو تلگرام برای گرفتن api_id و api_hash مشکل داریم و فقط پیام ERROR رو نشون میده

اگر کسی میدونه مسئله کجاست پیام بده لطفا

ویرایش:
راه حل‌های زیادی ارائه شد و اکثرشون رو تست کردم و جواب نگرفتم، اما یکی از دوستان گفتن با warp امتحان کن مشکلت حل میشه.
و همین مشکلم رو حل کرد.

(توضیح فنی هم این بود که شماره با آی پی یکی نباشه ارور میده)

گفتم شاید شما هم بخواید استفاده کنید.
2👍608👎3
حدود یک ماه پیش، پس از انتشار نسخه اولیه مدل تقویم شمسی در متابیس، به یکباره لینک آن همه جا پخش شد و تعداد زیادی از کاربران متابیس از آن استفاده کردند و بازخوردهای بسیار خوبی دادند. حتی اکانت رسمی متابیس هم این ابزار را به کاربرانی که به دنبال راهکاری برای تحلیل داده‌ها بر اساس تاریخ شمسی بودند معرفی کرد.

حالا، بر اساس این بازخوردها و نیازهای کسب‌وکارهای ایرانی، نسخه جدید این مدل را توسعه دادم که شامل بهبودهای قابل‌توجهی است:

پشتیبانی از چندین دیتابیس – در این نسخه، ساختار مدل بازطراحی شده تا امکان پشتیبانی از چندین دیتابیس فراهم شود. در حال حاضر از PostgreSQL پشتیبانی می‌کند و نسخه‌ای برای MySQL و MariaDB نیز به زودی منتشر خواهد شد.

بهبود دقت تحلیل‌های فصلی – روش محاسبه‌ی فصل‌ها بر اساس ماه‌های شمسی بازبینی شده تا گزارش‌های فصلی ساده‌تر، دقیق‌تر و مطابق با واقعیت کسب‌وکارهای ایرانی باشد.

اصلاح مرزهای هفته شمسی – اکنون هفته‌های شمسی در شرایط مختلف به‌طور دقیق از شنبه شروع می‌شوند که دقت گزارش‌های هفتگی را بهبود می‌بخشد.

این مدل همچنان به شما امکان می‌دهد تا تاریخ میلادی را به شمسی تبدیل کنید و تحلیل‌های خود را بر اساس سال، ماه، هفته و فصل شمسی انجام دهید.

نسخه جدید در گیت‌هاب منتشر شده است و نسخه‌ای که از MySQL و MariaDB پشتیبانی کند، به زودی در دسترس خواهد بود.

لینک پروژه:
https://github.com/navidb/metabase-persian-calendar

https://github.com/navidb/metabase-persian-calendar/blob/main/CHANGELOG.md

@DevTwitter | <Navid Behrangi/>
👍23🔥5
اگه دنبال یه نمونه عملی و کاربردی برای یادگیری Vue 3، Tailwind 4 و کار با API هستی، این پروژه می‌تونه برات مفید باشه.

یه موتور جست‌وجوی تصاویر متصل به Unsplash API که با ساختاری تمیز و اصولی پیاده‌سازی شده. این پروژه هم برای تمرین و یادگیری مناسبه و هم می‌تونی ازش توی پروژه‌های واقعی الگو بگیری.

توی این پروژه از چی استفاده کردم؟

- Vue 3 & Composition API برای ساختار بهتر و قابل نگهداری
- Tailwind 4 برای طراحی سبک، مدرن و سریع
- اتصال به Unsplash API برای دریافت تصاویر
- Pinia برای مدیریت تاریخچه جستجو
- اسکرول بی‌نهایت برای بارگذاری تصاویر به شکل بهینه

https://github.com/esmaeilbahrani/unsplash-gallery

@DevTwitter | <Esmaeil Bahrani Fard/>
👍247🔥3
یه برنامه نوشتم برای مدیریت اکانت‌های تلگرام. اگر اکانت‌های زیادی دارید و میخواید مثلاً توی برنامه دیگه nodejs یا python استفاده کنید یا به شخص دیگری دسترسی بدید. اکانتها رو اضافه میکنید و فایل JSON تولید شده قابل انتقاله.
اوپن‌سورس با مجوز GPL3 اینجاست:
https://github.com/NabiKAZ/telegram-login-manager

@DevTwitter | <Nabi/>
👍42👎4
آیا معماری Serverless رو میشناسید؟

فرض کنید که برنامه ها رو بدون دغدغه ای در مورد سرور ها اجرا کنید و درگیر نگه‌داری، مقیاس پذیری و تامین منابع نشوید.

در معماری Serverless تامین کننده ابری مثلا AWS Lambda زیرساخت را مدیریت می کند و ما بر روی نوشتن کد تمرکز می کنید.

چه مزایایی دارد؟
۱. مقیاس پذیری خودکار - با افزایش ترافیک منابع بیشتری استفاده می‌کند.

۲. پرداخت به ازای مصرف - به جای هزینه سرور کامل فقط هزینه زمان اجرا را می‌دهیم.

۳. سریع تر deploy می‌شود.

۴. رویداد محور: با تغییرات دیتابیس یا رویداد ها مثلا ثبت نام کاربر توابع اجرا می‌شوند.

۵. منابع بیکار نیستند: نیازی نیست که سرور با ظرفیت بالا از قبل بیکار و منتظر درخواست کاربر باشند.


مثال واقعی:
ما در شرکتمان برای پردازش ویدیوهایی که کاربر آپلود می‌کرد و اضافه کردن watermark از AWS Lambda استفاده کردیم.

قبل از این نیاز به یک CPU قوی داشتیم که در اکثر اوقات بیکار بود اما با AWS Lambda فقط در زمانی که کاربر ویدیو رو آپلود می کند تابع اجرا می‌شود و خروجی را در S3 ذخیره می‌کند.

با AWS Lambda هم هزینه سرور کاهش پیدا کرد و هم هیچ منبعی بیکار نماند.

اما همیشه Serverless بهترین انتخاب نیست
معایبی هم دارد
۱. شروع سرد: اگر تابع چند وقت است که اجرا نشده است مدتی طول میکشد تا اجرا شود.

۲. زمان اجرای محدود: در AWS هر تابع بیشتر از ۱۵ دقیقه نمی تواند اجرا شود.

۳. محدود شدن به شرکت خاص: کد AWS با Azure و GCP فرق دارد و اگر مهاجرت کنیم نیاز است کد ها رو از نو بنویسیم.

۴. نداشتن State: اگر نیاز به فضای ذخیره سازی in-memory مانا داریم، این معماری بهترین انتخاب نیست.

برای پروسه های long running و high performance computing و persistent connections معماری های سنتی یا معماری های کانتینرایز شده مناسب تر هستند.

برای کارهای رویداد محور و بهینه سازی هزینه و برنامه های مقیاس پذیر AWS Lambda بسیار مناسب است.


@DevTwitter | <Pouria Jahandideh/>
👍45