Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Linuxor ?
یکی از مدل‌های فوق‌العاده تولید عکس از متن DALL-E هستش،
اما خیلی سنگینه و روی سیستم‌های معمولی جواب نمیده!
اینجا اومدن یه نسخه سبک‌ترش ساختن به اسم DALL-E Mini که باهاش می‌تونی فقط با یه جمله مثل "یک گربه ربات در باغ گل شبانه" یه تصویر زیبا بسازی

فقط کافیه ایمپورتش کنید و ازش استفاده کنید (می‌تونید اول توی colab تستش کنید)

github.com/borisdayma/dalle-mini


@Linuxor
Forwarded from محتوای آزاد سهراب (Sohrab)
البته اینجا یک چیزی گفته بود که من رد شده بودم ازش:

دستگاه‌های قدیمی

خبر بد در این بخش کمی گسترده‌تر است، هرچند نسبت به بخش‌های قبلی چندان تعجب‌آور نیست.

وابستگی بیشتر گوگل به قابلیت‌های جدید eBPF باعث شده پشتیبانی از دستگاه‌هایی با کرنل‌های قدیمی لینوکس به‌طور فزاینده‌ای دشوار شود. اندروید 16 «QPR0» «نیازمند لینوکس 5.4 و بالاتر است، و در زمان نگارش، ویژگی‌های لازم تنها تا نسخه 4.14 به‌طور کامل بازپورت شده‌اند.

متأسفانه، LineageOS 22.2 هنوز از بسیاری از دستگاه‌هایی که از نسخه‌های 4.4 و 4.9 استفاده می‌کنند، پشتیبانی می‌کند. تا کنون هیچ بازپورت کامل ویژگی‌های مورد نیاز برای این کرنل‌ها وجود ندارد. نکته مثبت این است که، برخلاف از دست دادن گسترده دستگاه‌هایی که هنگام مهاجرت از LineageOS 18.1 تجربه کردیم، این نسخه‌ها می‌توانند نجات پیدا کنند اگر کسی کار تطبیق بازپورت‌ها را برعهده بگیرد. اگر موفق شدید، لطفاً با devrel(at)lineageos.org تماس بگیرید، خوشحال می‌شویم آن را بررسی کنیم!

ما در حال حاضر تنها روی کرنل‌های عرضه‌شده تمرکز می‌کنیم که بازپورت‌های eBPF آن‌ها ۱:۱ انجام شده باشد تا از اینجا به بعد با لینوکس 5.4 ویژگی‌ها برابر شوند و مشکلات سازگاری پیش نیاید.



از لینیج ۲۳ (اندروید ۱۶) اگر دستگاهتون کرنلش از ۴.۱۴ قدیمی‌تر باشه و امکان بازپورت نداشته باشه، دیگه پشتیبانی نمیشه دستگاهتون.

البته تلاش‌هایی هم صورت گرفته برای دستگاه‌هایی که کرنل مین‌لاین دارن که بشه از اون استفاده کرد، مثل Pocophone f1 و یا x3 nfc.


به هرحال باید دید که چه خواهد شد، چون در نهایت اگر این هم رخ نده آخرین رام سفارشی اندروید پشتیبانی شده برای این دستگاه‌ها ۱۵ خواهد بود.



@SohrabContents
Forwarded from یه شعر (Poem Bot)
حافظ | غزلیات | غزل شمارهٔ ۳۶۵

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

#حافظ | گنجور
📍@iipoem
Forwarded from Linuxor ?
Media is too big
VIEW IN TELEGRAM
زندگی لینوس توروالدز خالق لینوکس و گیت ببینید چطوریه!

@Linuxor
این ریپوی گیت‌هاب مجموعه‌ای از Agentهای آماده در حوزه‌های مختلف داره که می‌تونید مستقیماً توی Claude Code ازشون استفاده کنید.

پوشش گسترده‌ای هم داره — از Full Stack و SEO گرفته تا Code Review، Database و Security.

https://github.com/wshobson/agents

@DevTwitter | <Mohammad/>
Forwarded from Code Module | کد ماژول (𔓙)
بدرود با نوشتن دستی API ها و تایپ هاشون ☃️

پکیج Orval یک ابزار هوشمنده که از روی فایل OpenAPI یا Swagger (که بک‌اند دولوپر برات می‌فرسته)، به صورت خودکار ریکوست‌ها و تایپ‌ مدل ها و رسپانس هارو برای کار با API می‌سازه.

تو پروژه‌های بزرگ که تعداد APIها زیاده (مثلاً ۵۰ تا endpoint یا بیشتر)، نوشتن دستی اون همه ریکوست و تایپ خیلی وقت‌گیره و امکان بروز اشتباه و باگ هست.

این پکیج ساخته شده تا:

سرعت توسعه رو بالا ببره.

هماهنگی با بک‌اند رو حفظ کنه.

خطاهای تایپی و ارتباطی رو از بین ببره.


ویژگی و مزیت های Orval

🌪تولید خودکار کد API: از روی فایل OpenAPI (.yaml) یا (json.) Swagger، به‌صورت خودکار توابع ریکوست (GET, POST, …) می‌سازه.

🌪تولید تایپ های TypeScript: تایپ مدل‌های داده و رسپانس هارو کامل جنریت میکنه.

🌪هماهنگی کامل با بک‌اند: وقتی بک‌اند تغییر می‌کنه، فقط نیازه یک بار کامند Orval رو اجرا کنی تا همه‌چی آپدیت بشه.

🌪پشتیبانی از کتابخونه‌های مختلف: بر اساس نیازتون میتونه خروجی رو برای Axios، Fetch API، React Query، SWR و … تولید کنه.

🌪امکان Mock کردن API: بدون نیاز به سرور واقعی، پاسخ‌های فیک Mock می‌سازه.

🌪 ساختار تمیز و سازمان‌یافته کدها: خروجی‌ها منظم، خوانا و آماده استفاده در پروژه هستن.

🔗 Document

#orval
@CodeModule @CodeModuleGap
Forwarded from Code Module | کد ماژول (𔓙)
حالا مگه بک اند دولوپر زیر بار سواگر type safe میره؟😞
Forwarded from Arvin
آموزش اندروید مقدماتی

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

فقط ۲۴ ساعت فرصت داری این دوره رو با ۴۰ درصد تخفیف اونم به صورت قسطی ثبت‌نام کنی!

🔗 https://quera.org/r/pi1sv
Forwarded from Shayan GeeDook🐧
درود دوستان چطورین، کسی در زمینه دیتا آنالیز و ویژوالایز کردن دیتا و همچنین در زمینه تبدیل محصول به سمت ابری ممنون میشم جهت مشاوره و چند سوال به من وقتشو بده ممنون می‌شم با تشکر🙏❤️
This media is not supported in your browser
VIEW IN TELEGRAM
در CSS سه واحد جدید برای Viewport معرفی شده که مشکل ارتفاع در موبایل را حل می‌کنند. پیش‌تر استفاده از ‎100vh‎ باعث می‌شد بخش‌های تمام‌صفحه دقیق نمایش داده نشوند، چون نوار ابزار مرورگر هنگام اسکرول ظاهر یا ناپدید می‌شود و ارتفاع واقعی تغییر می‌کند. حالا با سه واحد جدید این مشکل رفع شده است:

1. lvh (Large Viewport Height)
بیشترین ارتفاع زمانی که نوار ابزار پنهان است.
کاربرد: برای بخش‌های فول‌اسکرین.

height: 100lvh;


2. svh (Small Viewport Height)
کمترین ارتفاع زمانی که نوار ابزار دیده می‌شود.
کاربرد: برای اجزایی مثل هدر یا فوتر ثابت.

height: 100svh;


3. dvh (Dynamic Viewport Height)
ارتفاع پویا بین ‎lvh‎ و ‎svh‎.
کاربرد: برای بخش‌های تطبیقی.

height: 100dvh;


اگر چند بخش ‎100dvh‎ داشته باشید، با ظاهر شدن نوار ابزار ممکن است صفحه بپرد.

جمع‌بندی:

- نمایش ثابت: ‎svh‎
- فول‌اسکرین واقعی: ‎lvh‎
- رفتار تطبیقی: ‎dvh‎

این واحدها جایگزین ‎vh‎ نیستند، بلکه ابزارهایی برای کنترل دقیق‌تر در موبایل‌اند. CSS امروز هوشمندتر و دقیق‌تر شده و کنترل بیشتری بر طراحی رابط‌ها می‌دهد.

@DevTwitter | <Hesam Valizadeh/>
Forwarded from CleverDevs (CleverDevs Ads)
این یه چالشه که با مهارت های مختلفتون باید مرحله بعدی رو پیدا کنید . اگه دیدید جایی سخت شد میتونید از فایل راهنماش استفاده کنید

ببینید تا کدوم مرحله میتونید جلو برید

فقط اینکه اسپویل نکنید تو کامنتا

https://a.voorivex.academy

@CleverDevs - @CleverDevsGp
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی ابزار «قطره‌چکان» (Eyedropper) سایت‌ها از مرز مرورگر رد میشه!

​چند روز پیش داشتم از یک سایت آنلاین Shadow Generator استفاده می‌کردم که متوجه یک نکته عجیب شدم: ابزار قطره‌چکان رنگ اون سایت، علاوه بر فضای داخل مرورگر، به کل دسکتاپ و محیط سیستم عامل من هم دسترسی داشت!
​اولش شک کردم... مگه میشه؟ چطور یک وب‌سایت می‌تونه بدون نصب افزونه، اطلاعات پیکسل رو از خارج از پنجره مرورگر بخونه؟ این که کاملاً خلاف اصول امنیتی مرورگره!
​بعد از کمی تحقیق، متوجه شدم که این قابلیت به‌خاطر یک پیشرفت جدید در دنیای وب به نام EyeDropper API امکان‌پذیر شده.
​ ماجرا از این قراره:
که ​EyeDropper API یک رابط برنامه‌نویسی جدید برای مرورگرهای مبتنی بر کرومیوم (مثل کروم و اج) است.
​این API به سایت‌ها اجازه می‌ده که ابزار بومی (Native) انتخاب رنگ مرورگر رو فعال کنن.

​این قابلیت، مرز بین اپلیکیشن‌های تحت وب و نرم‌افزارهای دسکتاپ رو باریک‌تر کرده و برای ابزارهای طراحی وب (مثل انتخاب‌کننده‌های رنگ یا ویرایشگرهای عکس) واقعاً یک تحول محسوب میشه.
لینک سایت:
https://folge.me/tools/tailwind-shadow-generator

@DevTwitter | <Ali shabani/>
Forwarded from Armon technical logs (armon Taheri)
منتخب استان تهران برای مسابقات پردازش ابری شدم
Forwarded from محتوای آزاد سهراب (Sohrab)
#موقت

به نظر میاد محتوای کانال دیگه موردعلاقه عزیزان نیست :)



نظراتتون رو بگید
این متن

It took me nearly 1 year of full-time programming in Rust to become proficient and no longer
have to read the documentation every 5 lines of code


از کتاب
Black hat Rust

بنظرم خیلی درسته؛ حالا که درگیر کد زدن هستم واقعاً متوجه میشم خیلی پیش میاد یک مفهوم رو بفهمی و به راحتی کدهای دیگران رو بخونی و متوجه بشی!
اما اینکه خودت اون کد رو بنویسی و همه چیز درست و تا حد خوبی بهینه و idiomatic باشه خیلی چیز متفاوتی هست، اما

Favor getting things done rather than the perfect design that will never ship. It’s
far better to re-work an imperfect solution than to never ship a perfect system.


خیلی وقتا میزان خطاهایی که میگیرفتم، یا توضیحات clippy و ... باعث می‌شد پنیک کنم و هی تغییرات بیشتر بدم.

If you are fighting with the limits of the language, it may mean that you are doing something wrong. Stop what you are doing, take a break, and think about how you can do things differently.


بعضی وقتا دست کشیدن و فکر کردن مجدد باعث میشه کد بهتری بزنم، خیلی وقتا شده کد رو زدم و بعد از چندتا اجرا و ... برگشتم و refactor کردم و کد خیلی بهتر اجرا شده!
با اینکه کد اول خیلی خفن‌تر هم بوده شاید (چون از بچه‌ها شنیدم) اما ترجیح میدم کدم راحت‌تر خونده و درک بشه تا خفن‌تر بنظر بیاد.

و درنهایت، اگر Error handling رو درست انجام داده باشید unwrap, expect همه جا نداشته باشید توی پروداکشن هیچ موقع کد کرش نمی‌کنه و این خیلی چیز جذابی هست.

چندتا توضیح:
پروژه jsedit استثنا بود چون می‌خواستم بعنوان cookbook نگهش دارم؛ که چیزای پر تکرار توی سخت‌ترین حالتش همیشه دمه دستم باشه.

دلیل خوندن این کتاب هم این نیست که می‌خوام به دنیای امنیت برگردم (گذشته‌ها گذشته) فقط چون کتابی برای optimization پیدا نکردم دارم این کتاب رو می‌خونم.

توی همه‌ی زبان‌های برنامه‌نویسی کتاب‌های مربوط به امنیت و نفوذ و توسعه ابزارهای نفوذ معمولاً کدهای بهینه‌تری دارند.
اینم از من به شما

خلاصه‌ای از نکات مهم.
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
⭐️ مدیریت حافظه‌های کش در کرنل لینوکس

🔹سیستم‌عامل لینوکس به‌صورت هوشمند از حافظه‌ی RAM نه‌فقط برای اجرای برنامه‌ها، بلکه برای افزایش کارایی I/O از طریق مکانیزم‌های Cache و Buffer استفاده می‌کند.

🔹کرنل لینوکس برای آزادسازی حافظه‌ی کش، از الگوریتم معروف LRU (Least Recently Used) بهره می‌برد.
وقتی سیستم با کمبود RAM روبه‌رو می‌شود، کرنل صفحاتی را که کمتر استفاده شده‌اند (مثل *Page Cache* یا *Dentry Cache*) آزاد می‌کند تا فضای بیشتری برای پردازش‌ها فراهم شود.


🔻 سه سطح آزادسازی حافظه در کرنل:
🔻 Drop Clean Pages → صفحات کش تمیز که نیاز به نوشتن مجدد ندارند.
🔻 Write Back Dirty Pages → صفحاتی که تغییر کرده‌اند، ابتدا روی دیسک نوشته می‌شوند.
🔻 Shrink Slab Objects → پاک‌سازی ساختارهای کرنلی مانند *inode* و *dentry cache*.

🔹 مشاهده وضعیت Cache
برای بررسی وضعیت کش، از دستورات زیر استفاده کنید:

$ free -h
$ cat /proc/meminfo | grep -E "Cached|Buffers|Slab"
$ vmstat -s | grep cache


📘 انواع حافظه‌های Cache در لینوکس

🔹 Page Cache
داده‌های فایل‌هایی که از دیسک خوانده می‌شوند، در حافظه نگهداری می‌شوند.
🎯 هدف: افزایش سرعت خواندن فایل‌ها.

🔹 Buffer Cache
شامل اطلاعات متادیتا (metadata) مربوط به بلاک‌های دیسک است.
🎯 هدف: بهبود عملکرد نوشتن روی دیسک.

🔹 Dentry Cache
مسیرها و نام فایل‌ها (directory entries) را در حافظه ذخیره می‌کند.
🎯 هدف: افزایش سرعت دسترسی به فایل‌ها و دایرکتوری‌ها.

🔹 Inode Cache
ساختارهای *inode* فایل‌ها را در حافظه نگه می‌دارد.
🎯 هدف: کاهش بار روی فایل‌سیستم و تسریع عملیات فایل.

نویسنده: حسین سیلانی.اموزش بیشتر در:
https://learninghive.ir
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
نکته #لینوکس_پیشرفته 2
⭐️ مدیریت حافظه‌های کش در کرنل لینوکس

🔹سیستم‌عامل لینوکس به‌صورت هوشمند از حافظه‌ی RAM نه‌فقط برای اجرای برنامه‌ها، بلکه برای افزایش کارایی I/O از طریق مکانیزم‌های Cache و Buffer استفاده می‌کند. در کرنل‌های مدرن لینوکس (از حدود سال ۲۰۰۱ به بعد)، Page Cache و Buffer Cache ادغام شده‌اند

🔹کرنل لینوکس برای مدیریت و آزادسازی این حافظه‌های کش، از الگوریتم‌های پیشرفته‌ای مانند LRU/Active و Inactive بهره می‌برد. وقتی سیستم با کمبود RAM روبه‌رو می‌شود، کرنل ابتدا صفحات کم‌استفاده‌تر (غیرفعال) را از کش‌هایی مانند Page Cache یا Slab آزاد می‌کند.

🔻 مراحل کلی آزادسازی حافظه کش توسط کرنل:
🔻آزاد کردن صفحات تمیز (Clean Pages): این صفحات یک کپی معتبر در دیسک دارند و می‌توانند بلافاصله دور ریخته شوند.
🔻نوشتن صفحات کثیف (Dirty Pages): صفحاتی که تغییر کرده‌اند، ابتدا باید روی دیسک نوشته (Sync) شوند تا پس از آن به عنوان صفحه تمیز آزاد گردند.
🔻کوچک کردن حافظه Slab: در این مرحله ساختارهای کرنلی کم‌استفاده مانند dentry و inode cache آزاد می‌شوند.

🔹 مشاهده وضعیت Cache
برای بررسی وضعیت کش، از دستورات زیر استفاده کنید:
$ free -h
$ cat /proc/meminfo | grep -E "Cached|Buffers|SReclaimable"
$ vmstat -s | grep cache


📘 انواع حافظه‌های کش در لینوکس

🔹 Page Cache
داده‌های فایل‌ها و داده‌های خوانده شده از دیسک در این حافظه نگهداری می‌شوند.
🎯 هدف: افزایش سرعت عملیات خواندن و نوشتن (از طریق به‌تعویق انداختن نوشتن).

🔹 Dentry Cache
ساختارهای مربوط به مسیرها و نام فایل‌ها (directory entries) را در حافظه ذخیره می‌کند.
🎯 هدف: افزایش سرعت دسترسی به فایل‌ها و دایرکتوری‌ها.

🔹 Inode Cache
ساختارهای *inode* فایل‌های باز شده را در حافظه نگه می‌دارد.
🎯 هدف: کاهش بار روی فایل‌سیستم و تسریع عملیات فایل.

*(توضیح: در کرنل‌های مدرن، "Buffers" عمدتاً به متادیتای فایل‌سیستم و داده‌های بلاک‌دیوایس در حال انتقال اشاره دارد).*

نویسنده: حسین سیلانی. آموزش بیشتر در:
https://learninghive.ir
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
نکته #لینوکس_پیشرفته 1
⭐️ مفهوم Namespaces در لینوکس


🔹در سیستم‌عامل لینوکس، مکانیزم Namespace یکی از بنیادی‌ترین قابلیت‌های ایزولاسیون (Isolation) است که به هر گروه از پردازه‌ها اجازه می‌دهد دیدگاه جداگانه‌ای نسبت به منابع سیستم داشته باشند.
به بیان ساده‌تر، هر Namespace مثل یک “جهان کوچک” درون کرنل است که قوانین خودش را برای منابعی مانند پردازه‌ها (PIDs)، شبکه (Network)، سیستم فایل (Mounts)، کاربران (Users) و فضای بین‌پردازه‌ای (IPC) دارد.

🔹وقتی یک پردازه درون Namespace خاصی ایجاد می‌شود، فقط منابع همان Namespace را می‌بیند؛ به‌عنوان مثال، اگر دو container روی یک ماشین در حال اجرا باشند، هر دو می‌توانند پردازه‌ای با PID=1 داشته باشند، بدون اینکه تداخلی بین آن‌ها پیش بیاید.

🔹این ویژگی، یکی از پایه‌های اصلی فناوری‌های Containerization مانند Docker و LXC (Linux Containers) است. Namespaceها با استفاده از پرچم‌های clone() یا فراخوان سیستمی unshare() ساخته می‌شوند و از طریق ترکیب چند نوع Namespace، می‌توان محیط‌های کاملاً ایزوله (مانند container) ایجاد کرد.

مطالعه پست کامل
Forwarded from Linuxor ?
وایب کدینگ خوبه مخصوصا بعدش که مجبور میشی شبو بیدار بمونی وایب دیباگینگ کنی


@Linuxor