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

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
Audio
ساخت لوگو SVG با AI
رفقا این روشو خودم کشف کردم که واقعا جالب بود و جواب داده خودمم تست گرفتم و لوگوی جدیدی که نیاز داشتم رو تونستم با همین روش ایجاد کنم، استفاده کنید و لذت ببرید ؛)
#AI


خودم از Adobe استفاده کردم برای Convert به SVG که تو ویس توضیح دادم، خروجیش تمیزه واقعا 👌

🚀 @coolycode
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
This media is not supported in your browser
VIEW IN TELEGRAM
🔥دوست دارید شهر و محله خودتان را در Minecraft ببینید؟
قبلا گفتم Minecraft فقط یک بازی نیست

این بار پروژه Arnis با استفاده از اطلاعات OpenStreetMap
شهر ها را با Minecraft برای شما باز سازی میکنه

💠 با استفاده از داده های مکانی از OpenStreetMap و استفاده از قابلیت های قدرتمند زبان Rust ،نرم افزار Arnis یک راه حل کارآمد و قوی برای ایجاد جهان های پیچیده و دقیق در Minecraft ارائه می دهد که منعکس کننده جغرافیا و معماری دنیای واقعی است.

یادش بخیر یاد این جریان افتادم ..
سال ۱۳۸۱ با تعداد 1.5ميليون عکس از منطقه 6 تهران برای ساخت یک بازی به نام رانندگی در تهران با بودجه 2ميليارد تومان هزينه تحقيقاتي به سفارش نيروي انتظامي ساخته شد
یک شخصیتی بود به اسم داش سیا مجری معروف محمد حسيني.
نتیجه بازی هم فکر کنم قابل حدس باشه

فکر میکنید ارزش این پول امروز چقدره؟

❤️ ممنون از حمایت هاتون 💐🌺
Forwarded from Gopher Academy
رفتار متغیرهای حلقه در Go
در Go، وقتی یک حلقه مانند for تعریف می‌شود، متغیرهای حلقه (result در این مثال) به صورت متغیر مشترک (shared) در حافظه استفاده می‌شوند. این بدان معناست که همه goroutineها به یک مرجع (reference) از این متغیر دسترسی دارند، نه به یک کپی از مقدار فعلی آن.

مثال مشکل‌ساز:
فرض کنید کدی شبیه به زیر داریم:

for _, result := range collections {
go func() {
fmt.Println(result.Title) // از result استفاده می‌شود
}()
}



مشکل چیست؟
1. متغیر result به طور مداوم در طول حلقه تغییر می‌کند.
2. goroutineها به دلیل اجرای همزمان (asynchronous execution) ممکن است با تأخیر اجرا شوند.
3. زمانی که goroutine اجرا می‌شود، ممکن است مقدار result تغییر کرده باشد و goroutine به مقدار آخرین تغییر یافته دسترسی داشته باشد، نه مقداری که هنگام تعریف goroutine موجود بود.

نتیجه
تمام goroutineها ممکن است به جای مقادیر مختلف، فقط مقدار آخرین آیتم حلقه را چاپ کنند.

---

راه‌حل: ایجاد کپی مستقل از متغیر حلقه
برای جلوگیری از این مشکل، باید مطمئن شویم که هر goroutine به یک کپی مستقل از مقدار result دسترسی دارد. این کار را با تعریف یک متغیر محلی جدید در هر تکرار حلقه انجام می‌دهیم.

اصلاح کد:

for _, result := range collections {
m := result // یک کپی از `result` ایجاد می‌کنیم
go func() {
fmt.Println(m.Title) // حالا goroutine به کپی مستقل دسترسی دارد
}()
}




تابع ناشناس با پارامتر
یک روش دیگر برای ایجاد کپی، ارسال مقدار متغیر حلقه به تابع ناشناس به صورت پارامتر است.

کد شما:

go func(m articleapp.NewArticle) {
// کد داخل goroutine
}(m)



1. `m` به عنوان آرگومان: متغیر result کپی شده و به عنوان پارامتر m به تابع ناشناس ارسال می‌شود.
2. کپی مستقل: حالا تابع ناشناس داخل goroutine به یک کپی مجزا و مستقل از مقدار متغیر result دسترسی دارد.
3. مشکل حل می‌شود: هر goroutine مقدار درست متغیر مربوط به تکرار خودش را پردازش می‌کند.

---

چرا این کار به جلوگیری از مشکلات همزمانی کمک می‌کند؟

مشکلات همزمانی زمانی رخ می‌دهند که چندین goroutine به صورت همزمان به یک منبع مشترک دسترسی داشته باشند.
در اینجا:

- اگر از متغیر حلقه result مستقیماً استفاده شود، goroutineها به یک مرجع مشترک از این متغیر دسترسی دارند.
- با ایجاد کپی (از طریق m) و ارسال آن به تابع ناشناس، هر goroutine یک نسخه مستقل از مقدار را دارد.
- این جداسازی تضمین می‌کند که مقدار هر goroutine به حلقه وابسته نیست و دیگر دچار تداخل نخواهد شد.

---

مثال عملی
قبل از اصلاح:

collections := []articleapp.NewArticle{
{Title: "A"}, {Title: "B"}, {Title: "C"},
}

for _, result := range collections {
go func() {
fmt.Println(result.Title) // ممکن است همه goroutineها مقدار "C" را چاپ کنند
}()
}


#### بعد از اصلاح:
for _, result := range collections {
go func(m articleapp.NewArticle) {
fmt.Println(m.Title) // هر goroutine مقدار درست را چاپ می‌کند
}(result)
}


---


جمع‌بندی
خط (m):
1. یک کپی مستقل از مقدار result ایجاد می‌کند.
2. این کپی را به تابع ناشناس ارسال می‌کند.
3. به جلوگیری از مشکلات ناشی از استفاده همزمان از متغیرهای حلقه در goroutineها کمک می‌کند.


https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
نسخه Vite 6 منتشر شد!

ویت 6 با معرفی API محیطی جدید، انعطاف‌پذیری بیشتری را برای توسعه‌دهندگان فراهم می‌کند و امکان تجربه توسعه نزدیک‌تر به محیط تولید را میسر می‌سازد. همچنین، پشتیبانی از Node.js 18، 20 و 22+ حفظ شده و پشتیبانی از نسخه 21 حذف شده است.

https://code-news.com/p/vite-6-released

@DevTwitter | <Code News/>
اگه میخواین یه جایگزین بهتر از rm داشته باشید توصیه من به شما rm improved یا همون rip هست.

هم امکان recyclebin رو داره (یا به قول خودشون graveyard) هم خیلی ساده و سرراسته.

https://github.com/nivekuil/rip
۲۰۲۵تون مبارک!
توصیه اخلاقی مرتبط هم بخوام بکنم: سال جدید چیزای بد زندگیتون رو حذف کنید :)))
Forwarded from Go Casts 🚀
دوستان اگه اپلیکیشن رو بصورت مونولیت مینیوسید، کار خوبی میکنید، اما aggregation pattern رو جدی بگیرید، کمک بزرگی میکنه به حفظ loosely coupled بودن ماژول و سرویس هاتون.

یه اشتباه رایجی که باعث میشه خیلی راحت همه چیز در هم تنیده و coupled بشه نیازهای بیزینسی ای هست که دیتای aggregate شده از چند domain مختلف رو میخواد از شما. تو حالت مونولیت خیلی ساده ست که شما در هر domain به دیتابیس یه domain دیگه درخواست بزنی و یا حتی تو interactor/service دیگه یه متد جدید تعریف کنی که دیتای مد نظر رو بده. که معمولا باعث در هم تنیده شدن و چاق شدن سرویس هاتون میشه.

بهتره سرویس یا همون interactorهاتون کارهای خیلی کوچیک و well-definedی رو انجام بدن و اگه نیازمندی های aggregationطور دارید، یه سری service دیگه بسازید که وابستگی خواهد داشت به سرویس های مختلف و دیتاهای raw رو میگیره و پردازش میکنه که دیتای نهایی رو آماده کنه.

بعضی وقت ها از طریق gateway هم ممکنه بتونید aggregate کنید. بعضی وقت ها ممکنه تو همون لایه دلیوری (کنترلر) تون بتونید دو تا سرویس رو فراخوانی کنید و کار رو در بیارید، گاهی هم پیچیده تر میشه و لازمه یه سرویس(interactor) بنویسید که کار aggregation رو انجام بده
https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation

باز خود aggregate کردن حالت های مختلفی داره، اینجا میتونید بیشتر بخونید در موردش
https://medium.com/geekculture/design-patterns-for-microservices-aggregation-pattern-1b8994516fa2

@gocasts
This media is not supported in your browser
VIEW IN TELEGRAM
قدرت نمایی چین با شروع سال جدید

چین هر سال با شروع سال جدید قدرت خودش رو جوری به دنیا نشون داده که نشون بده تکنولوژی برتر دنیا در آینده کیه

@poinair پوینا
This media is not supported in your browser
VIEW IN TELEGRAM
قدرت نمایی چین با شروع سال جدید

چین هر سال با شروع سال جدید قدرت خودش رو جوری به دنیا نشون داده که نشون بده تکنولوژی برتر دنیا در آینده کیه

@poinair پوینا
فردا در آخرین جلسه‌ی کلاس نظریه‌ی زبان‌ها و ماشین‌ها که به صورت مجازی برگزار خواهد شد، برای گفت‌وگو درخصوص مطالب پیشرفته‌تر و پژوهش در حوزه‌ی روش‌های صوری و ارتباط آن با دیگر حوزه‌های علوم کامپیوتر، میزبان خانم دکتر مرجان سیرجانی، پژوهشگر و استاد برجسته‌ی علوم کامپیوتر دانشگاه Mälardalens سوئد خواهیم بود.

بخشی از دیگر سوابق ایشان:

- استاد دانشکده‌ی مهندسی برق و کامپیوتر، دانشکده‌ی فنی دانشگاه تهران
- پژوهشگر ارشد، پژوهشگاه دانش‌های بنیادی (IPM)
- پژوهشگر مهمان، دانشگاه California, Berkeley
- پژوهشگر مهمان، دانشگاه Illinois at Urbana-Champaign
- موسس و رئیس کمیته‌ی راهبری کنفرانس FSEN
- رئیس کمیته‌ی برنامه‌ریزی کنفرانس‌های SEFM و COORDINATION

این جلسه فردا پنج‌شنبه ۱۳ دی‌ماه از ساعت 10:30 صبح تا 12 در لینک زیر برگزار خواهد شد.

https://vc.sharif.edu/ch/pdl

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

با آرزوی سلامتی و موفقیت
معینی‌جم
شاید تعجب کرده باشید که چرا در خیلی از کنفرانس های JavaScript جای این عبارت از js و ecmanoscript استفاده میکنن..
دلیلش اینه که آقای oracle که sun microsystems رو خرید تریدمارک JavaScript رو هم در نتیجه ش صاحب شد.
حالا آقای ryan dahl که سازنده nodejs و deno هست چند وقتی هست گیر داده به oracle که تریدمارک JavaScript رو کنسل کنه که دیگه به عنوان یه کلمه عمومی همه بتونن ازش استفاده کنن. سفت و سخت پیگیره..

@DevTwitter | <Hossein Nazari/>
Forwarded from Linuxor ?
یه صفحه محصول دیجی کالا رو تصور کنید، برای اینکه اون صفحه از بکند ساخته شه باید کلی Join توی دیتابیس و کلی اطلاعات از جدول های مختلف جمع آوری شه و کلی زمان بای لود صفحه گرفته می‌شه.

حالا بیاین یه کاری کنیم همه اطلاعات رو توی یه سطر (داکیومنت) یه جدول (کالکشن) ذخیره کنیم، حتی برای کامنت ها هم جدول جداگونه نسازیم.

سرعت لود صفحه به شدت زیاد می‌شه اینجا ما ریداندنسی و افزایش حافظه رو فدای CPU کردیم.
حتی کوئری های Update هم از بهینگی در اومد و اینم اصلا مهم نیست مگه چند وقت یه بار اون صفحه آپدیت میشه؟

به این حرکت میگن denormalization که توی NoSQL ها خیلی استفاده می‌شه.

@Linuxor
Forwarded from Linuxor ?
اگه می‌خواین NoSQL یاد بگیرین و نمیدونین کجا از SQL استفاده کنید یا NoSQL این ریپو اومده کلی از منابع خوب رو جمع آوری کرده باهاش می‌تونین به درک درستی از NoSQL برسین

https://github.com/erictleung/awesome-nosql-guides

@Linuxor
ساختار داده‌ای جدول هش (Hash Table Data Structure):

هشینگ (Hashing) یکی از ساختارهای داده‌ای مهم و کارآمد است که برای انتساب یک مقدار به یک کلید خاص استفاده می‌شود. این فرآیند از طریق یک تابع هش انجام می‌شود. هدف اصلی این ساختار، دسترسی سریع‌تر به عناصر با استفاده از این کلیدها است. کارایی هشینگ به شدت به طراحی و کارایی تابع هش وابسته است، به طوری که تابع هش باید برخوردها (Collisions) را به حداقل برساند و داده‌ها را به صورت یکنواخت در جدول توزیع کند.

فرض کنید یک تابع هش H(x) مقدار x را در شاخص x % 10 در یک آرایه ذخیره می‌کند.
به عنوان مثال، اگر لیست مقادیر [11,12,13,14,15] باشد، این مقادیر در موقعیت‌های {1,2,3,4,5} در جدول هش ذخیره خواهند شد.

موارد استفاده از ساختار داده‌ای جدول هش(Hash Table Data Structure):

1-ساختارهای داده‌ای برای جستجو و بازیابی سریع:
به طور گسترده در پیاده‌سازی دیکشنری‌ها (مثل Dictionary در Python یا HashMap در Java و C#) استفاده می‌شود.

2-مدیریت پایگاه داده‌ها:
برای نگهداری ایندکس‌ها در پایگاه داده‌ها، جدول‌های هش به منظور دسترسی سریع به رکوردها استفاده می‌شود.

3-سیستم‌های کش (Caching):
برای ذخیره و بازیابی داده‌ها در سیستم‌های کش با سرعت بالا، مانند Memcached.

4-سیستم‌های تشخیص کلمات تکراری:
در پردازش زبان طبیعی (NLP) و بررسی متون برای ذخیره مجموعه‌ای از کلمات و بررسی وجود یا عدم وجود آن‌ها.

5-مدیریت حافظه:
برای مدیریت سریع تخصیص و آزادسازی حافظه.

6-حل مسائل با زمان‌بندی مناسب:
مانند تشخیص مقادیر تکراری در یک آرایه یا نگاشت یک مقدار به کلید برای مرتب‌سازی و جستجو سریع.

7-شبکه‌های کامپیوتری:
در مسیریابی و کش DNS برای ذخیره آدرس‌های IP و نام دامنه‌ها.

مزایا:

1-سرعت بالا در جستجو و بازیابی.
2-کارایی مناسب برای داده‌های بزرگ.
3-انعطاف‌پذیری در ذخیره‌سازی جفت‌های کلید-مقدار.
4-پیاده‌سازی ساده و گسترده در زبان‌های برنامه‌نویسی.

چالش‌ها:

1-مدیریت برخوردها (Collisions).
2-طراحی مناسب و کارآمد تابع هش.
3-هزینه افزایش اندازه جدول هش (Resizing).
4-مصرف بیشتر حافظه برای کاهش برخوردها.
5-حساسیت به کیفیت کلیدهای ورودی.

@DevTwitter | <Hossein Vaezzadeh/>
Forwarded from Syntax | سینتکس (Daimon)
دوستان اگه اپلیکیشن رو بصورت مونولیت مینیوسید، کار خوبی میکنید، اما aggregation pattern رو جدی بگیرید، کمک بزرگی میکنه به حفظ loosely coupled بودن ماژول و سرویس هاتون.

یه اشتباه رایجی که باعث میشه خیلی راحت همه چیز در هم تنیده و coupled بشه نیازهای بیزینسی ای هست که دیتای aggregate شده از چند domain مختلف رو میخواد از شما. تو حالت مونولیت خیلی ساده ست که شما در هر domain به دیتابیس یه domain دیگه درخواست بزنی و یا حتی تو interactor/service دیگه یه متد جدید تعریف کنی که دیتای مد نظر رو بده. که معمولا باعث در هم تنیده شدن و چاق شدن سرویس هاتون میشه.

بهتره سرویس یا همون interactorهاتون کارهای خیلی کوچیک و well-definedی رو انجام بدن و اگه نیازمندی های aggregationطور دارید، یه سری service دیگه بسازید که وابستگی خواهد داشت به سرویس های مختلف و دیتاهای raw رو میگیره و پردازش میکنه که دیتای نهایی رو آماده کنه.

بعضی وقت ها از طریق gateway هم ممکنه بتونید aggregate کنید. بعضی وقت ها ممکنه تو همون لایه دلیوری (کنترلر) تون بتونید دو تا سرویس رو فراخوانی کنید و کار رو در بیارید، گاهی هم پیچیده تر میشه و لازمه یه سرویس(interactor) بنویسید که کار aggregation رو انجام بده
https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation

باز خود aggregate کردن حالت های مختلفی داره، اینجا میتونید بیشتر بخونید در موردش
https://medium.com/geekculture/design-patterns-for-microservices-aggregation-pattern-1b8994516fa2

Source:
https://news.1rj.ru/str/gocasts

@Syntax_fa
Forwarded from Linuxor ?
الگوریتم Shor's یکی از الگوریتم‌های مشهور کوانتومی هست که می‌تونه اعداد رو به عوامل اولشون تجزیه کنه. این الگوریتم پتانسیل داره که رمزنگاری‌های کلاسیک مثل RSA رو بشکنه.

کامپیوتر 127-کیوبیتی IBM یکی از پیشرفته‌ترین کامپیوترهای کوانتومی فعلیه.
اما تجزیه کردن عدد 15 به 3 و 5 (که عوامل اولش هستن)، کاری بسیار ساده است و حتی یه دانش‌آموز ابتدایی هم می‌تونه این کار رو انجام بده.

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

@Linuxor
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
نيما يوشيج در تولد يك سالگي فرزندش نوشت:
فرزندم يك بهار
يك تابستان
يك پائيز
و يك زمستان را ديدي
از اين پس همه چيز تكراري است
به جز مهرباني
پس تا مي توانی مهربان باش
یه مقاله جذاب در مورد نوشتن کد سریع از Shopify
درسته که درباره Ruby on Rails نوشته شده اما اکثر نکاتش به خیلی از زبان و فریمورک های دیگه از جمله گولنگ هم قابل تعمیم دادن هست.

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

کدی که با Ruby on Rails نوشته میشه معروفه به کند بودن

اما در Shopify در مقیاس میلیون درخواست در دقیقه داره از Ruby on Rails استفاده میشه

تو این مقاله نکات جالبی رو اشاره میکنه برای اینکه کد سریعتری نوشته بشه

اولین نکته ش در مورد ORM یا همون ActiveRecord هست که باید درک کنید توابع مختلف orm چه رفتاری با دیتابیس دارند.

تو گولنگ همین مشکل با gorm وجود داره که به شدت میتونه لود زیادی روی دیتابیس بندازه بدون اینکه برنامه نویس متوجه این قضیه بشه.

دومین نکته ش باز در مورد دیتابیس هست که میگه از select * پرهیز کنید و فقط ستون هایی که لازم دارید رو انتخاب کنید.


نکته دیگه پرهیز از کوئری زدن به ستون هایی هست که index ندارن و در مقیاس بالا باعث میشه که full scan رخ بده
البته ایندکس اضافه کردن باعث lock شدن دیتابیس ممکنه بشه برای writeها و باید مواظب مایگریشن ایندکس باشیم

نکته بعدی کش کردن همه چیز هست…
Cache All The Things
If you can’t make something faster, a good alternative is to cache it. Things like complex view compilation and external API calls benefit greatly from caching. Especially if the resultant data doesn’t change often.

یه سری چیزارو میشه throttle کرد
Throttle Bottlenecks
But what about operations you can’t cache? Things like delivering an email, sending a webhook, or even logging in can be abused by users of an application. Essentially, any expensive operation that can’t be cached should be throttled.

برای یه سری پروسه ها هم میشه job queue و مکانیزم های async در نظر گرفت
Do It Later (In a Job)
Jobs allow us to defer work to another process through queueing systems often backed by Redis. Exporting a dataset, activating a subnoscription, or processing a payment are all great examples of job-worthy work

پرهیز از متاپروگرمینگ
Use Metaprogramming Sparingly
Changing a program’s structure at runtime is a powerful feature. In a highly dynamic language like Ruby, there are significant performance costs associated to metaprogramming.

دونستن تفاوت O(1) و O(n) برای مقیاس پذیر بودن خیلی مهمه
Know the difference between O(n) and O(1)
What O(n) and O(1) mean is that there are two kinds of operations. O(n) is an operation that scales in time with size, and O(1) is one that is constant in time regardless of size.

مثلا جای آرایه بهتره از hash استفاده بشه چون lookup کردن تو hash فارغ از اندازه O(1) هست


Allocate Less
استفاده و مدیریت Garbage Collector
If used improperly, dangerous methods can lead to unwanted side effects in your code. A best practice to follow is to avoid mutating global state while leveraging mutation on local state.

https://shopify.engineering/write-fast-code-ruby-rails

@DevTwitter | <Hossein Nazari/>
Forwarded from Sadra Codes
هرچی بیشتر یاد می‌گیری، بیشتر احساس پوچی و نادانی می‌کنی. بنظرم این زمانی خوبه که این حس تو رو حریص‌تر کنه.

در مسیری قدم گذاشتی که دوست داشتی شبیه کسی بشی که آخر این مسیره. پس نباید صفحه اول خودت رو با فصل آخر اون شخص مقایسه کنی. :)
Forwarded from Bardiaism
Media is too big
VIEW IN TELEGRAM
آموزش Qt6 - قسمت پانزدهم - مقدمه QML

این قسمت مقدمه‌ای بر QML است و تو این قسمت توضیح میدیم که QML چیه و چطوری کار میکنه و کجاها بدردمون میخوره و برای یادگیریش بهتره چه دانش‌هایی داشته باشیم.
در این قسمت درباره سینتکس و قوانین کدنویسی با QML خیلی توضیح خاصی نمیدیم.

لینک ویدیو در یوتیوب:
https://youtu.be/1hojf1CMd3A

@Bardiaism