🚀 4 قسمت جدید از آموزش مقدماتی تا پیشرفته Django رایگان منتشر شد 💼🐍
اگه پایتون بلدی و میخوای وارد دنیای برنامهنویسی وب بشی، این دوره دقیقاً برای توئه!
تو مسیر آموزش یاد میگیری چطوری بکاند یک سایت رو طراحی کنی، پایگاه داده بسازی، صفحات داینامیک داشته باشی و در نهایت یه اپلیکیشن تحتوب واقعی رو کامل پیادهسازی کنی.
📅 دوره بهصورت سه روز یکبار آپدیت میشه و قسمتهای جدید بهش اضافه میشه.
🔔 قسمتهای منتشر شده:
- تمرین 2
- تمپلیت ها
- تمپلیت تگ ها
- تمرین 3
🎬 دسترسی به دوره
#django #python #backend
☕️Telegram | Website | Discord
اگه پایتون بلدی و میخوای وارد دنیای برنامهنویسی وب بشی، این دوره دقیقاً برای توئه!
تو مسیر آموزش یاد میگیری چطوری بکاند یک سایت رو طراحی کنی، پایگاه داده بسازی، صفحات داینامیک داشته باشی و در نهایت یه اپلیکیشن تحتوب واقعی رو کامل پیادهسازی کنی.
📅 دوره بهصورت سه روز یکبار آپدیت میشه و قسمتهای جدید بهش اضافه میشه.
🔔 قسمتهای منتشر شده:
- تمرین 2
- تمپلیت ها
- تمپلیت تگ ها
- تمرین 3
🎬 دسترسی به دوره
#django #python #backend
☕️Telegram | Website | Discord
🔥6💔2
یک مقاله خوب گوگل به نام Attention Is All You Need توسط گوگل در سال 2017 به انتشار رسیده. این مقاله، مدل Transformer را معرفی میکند که بهجای استفاده از ساختارهای بازگشتی مانند RNN، تنها با بهرهگیری از مکانیزم Self-Attention قادر است وابستگیهای معنایی بین کلمات را در جمله تشخیص دهد.
این رویکرد باعث بهبود چشمگیر در سرعت آموزش، قابلیت پردازش موازی و دقت مدلهای ترجمه ماشینی و سایر وظایف پردازش زبان طبیعی شد و پایهگذار نسل جدیدی از مدلهای زبانی مانند BERT و GPT شد.
قابل ذکره تا به حال نزدیک 185 هزار بار به این مقاله رفرنس داده شده.
متن چکیده به فارسی:
مدلهای غالب در تبدیل توالی (Sequence Transduction) معمولاً بر پایهی شبکههای عصبی بازگشتی (RNN) یا پیچشی (CNN) پیچیده هستند که شامل یک رمزگذار (Encoder) و یک رمزگشا (Decoder) میباشند. بهترین مدلها همچنین از یک مکانیزم توجه (Attention) برای اتصال بین رمزگذار و رمزگشا استفاده میکنند. ما یک معماری ساده و جدید به نام Transformer پیشنهاد میدهیم که تنها بر پایهی مکانیزمهای توجه طراحی شده و بهطور کامل از بازگشت (Recurrence) و پیچش (Convolution) صرفنظر میکند. آزمایشها روی دو وظیفهی ترجمه ماشینی نشان میدهند که این مدلها از نظر کیفیت عملکرد بهتری دارند، در عین حال امکان پردازش موازی بیشتری دارند و زمان آموزش کمتری نیاز دارند.
مدل ما به امتیاز 28.4 BLEU در وظیفهی ترجمهی انگلیسی به آلمانی (WMT 2014) دست یافته است، که بیش از ۲ واحد BLEU بهتر از بهترین نتایج پیشین (حتی مدلهای ترکیبی) است. همچنین در وظیفهی ترجمهی انگلیسی به فرانسوی (WMT 2014)، مدل ما با امتیاز 41.8 BLEU یک رکورد جدید برای مدلهای تکی ثبت میکند، آن هم تنها پس از ۳.۵ روز آموزش با ۸ کارت گرافیک، که بخش کوچکی از هزینهی آموزشی مدلهای پیشرفتهی موجود در ادبیات علمی است. ما همچنین نشان میدهیم که Transformer قابلیت تعمیم خوبی به وظایف دیگر دارد، چرا که آن را با موفقیت روی تجزیهی نحوی انگلیسی (English constituency parsing) هم با دادهی زیاد و هم محدود به کار گرفتیم.
#paper #AI #transformers #ml #dl
این رویکرد باعث بهبود چشمگیر در سرعت آموزش، قابلیت پردازش موازی و دقت مدلهای ترجمه ماشینی و سایر وظایف پردازش زبان طبیعی شد و پایهگذار نسل جدیدی از مدلهای زبانی مانند BERT و GPT شد.
قابل ذکره تا به حال نزدیک 185 هزار بار به این مقاله رفرنس داده شده.
متن چکیده به فارسی:
مدلهای غالب در تبدیل توالی (Sequence Transduction) معمولاً بر پایهی شبکههای عصبی بازگشتی (RNN) یا پیچشی (CNN) پیچیده هستند که شامل یک رمزگذار (Encoder) و یک رمزگشا (Decoder) میباشند. بهترین مدلها همچنین از یک مکانیزم توجه (Attention) برای اتصال بین رمزگذار و رمزگشا استفاده میکنند. ما یک معماری ساده و جدید به نام Transformer پیشنهاد میدهیم که تنها بر پایهی مکانیزمهای توجه طراحی شده و بهطور کامل از بازگشت (Recurrence) و پیچش (Convolution) صرفنظر میکند. آزمایشها روی دو وظیفهی ترجمه ماشینی نشان میدهند که این مدلها از نظر کیفیت عملکرد بهتری دارند، در عین حال امکان پردازش موازی بیشتری دارند و زمان آموزش کمتری نیاز دارند.
مدل ما به امتیاز 28.4 BLEU در وظیفهی ترجمهی انگلیسی به آلمانی (WMT 2014) دست یافته است، که بیش از ۲ واحد BLEU بهتر از بهترین نتایج پیشین (حتی مدلهای ترکیبی) است. همچنین در وظیفهی ترجمهی انگلیسی به فرانسوی (WMT 2014)، مدل ما با امتیاز 41.8 BLEU یک رکورد جدید برای مدلهای تکی ثبت میکند، آن هم تنها پس از ۳.۵ روز آموزش با ۸ کارت گرافیک، که بخش کوچکی از هزینهی آموزشی مدلهای پیشرفتهی موجود در ادبیات علمی است. ما همچنین نشان میدهیم که Transformer قابلیت تعمیم خوبی به وظایف دیگر دارد، چرا که آن را با موفقیت روی تجزیهی نحوی انگلیسی (English constituency parsing) هم با دادهی زیاد و هم محدود به کار گرفتیم.
#paper #AI #transformers #ml #dl
🔥7💔2
کداکسپلور | CodeExplore
🚀 ۳ ابزار کاربردی برای کار با API و JSON 🔸 Postman ابزاری قدرتمند برای تست و مدیریت APIهای REST و GraphQL با محیط گرافیکی حرفهای. ✅ پشتیبانی از انواع متد، مدیریت Token و ساخت کالکشن تست. 🔗 postman.com 🔸 Insomnia جایگزینی سبک، سریع و ساده برای Postman…
🚀 تفاوت Anonymous Struct و Named Struct در Go + کاربرد واقعی در ساخت API
در زبان Go، دو نوع ساختار (struct) پرکاربرد داریم که بسته به نیاز، استفاده از یکی نسبت به دیگری بهتره. اینجا با یه مثال واقعی از دنیای API برات توضیح میدیم که چرا و کجا از هر کدوم استفاده کنیم:
🔸 ساختار نامدار (Named Struct)
ساختاری با اسم مشخص که میتونه چندینبار در بخشهای مختلف پروژه استفاده بشه. برای مدلسازی دیتاهایی مثل کاربر، محصول یا درخواست لاگین خیلی مفیده.
✅ مزایا:
• قابل استفاده مجدد
• خوانایی بالا
• سازماندهی بهتر کد
🔸 ساختار بینام (Anonymous Struct)
وقتی فقط یکبار قراره از یه ساختار ساده استفاده کنی و نمیخوای struct جداگانه تعریف کنی، این روش خیلی سریع و کارآمده. مخصوصاً توی پارس کردن سریع کوئریها یا تستهای سبک.
✅ مزایا:
• کد سریعتر و تمیزتر
• بدون نیاز به تعریف نوع جدا
• مناسب برای موارد موقتی یا کوچک
func SearchHandler(c *gin.Context) {
var query struct {
Q string
Page int
}
if err := c.ShouldBindQuery(&query); err != nil {
c.JSON(400, gin.H{"error": "bad query"})
return
}
// استفاده از query.Q و query.Page
}
🎯 جمعبندی:
اگر ساختار رو در چند جای پروژه استفاده میکنی ➡️ ساختار نامدار (Named Struct)
اگر فقط برای یکبار یا در یک فانکشن خاص استفاده داری ➡️ ساختار بینام (Anonymous Struct)
#GoLang #Struct #Gin #API #Backend #برنامهنویسی #گو
☕️Telegram | Website | Discord
در زبان Go، دو نوع ساختار (struct) پرکاربرد داریم که بسته به نیاز، استفاده از یکی نسبت به دیگری بهتره. اینجا با یه مثال واقعی از دنیای API برات توضیح میدیم که چرا و کجا از هر کدوم استفاده کنیم:
🔸 ساختار نامدار (Named Struct)
ساختاری با اسم مشخص که میتونه چندینبار در بخشهای مختلف پروژه استفاده بشه. برای مدلسازی دیتاهایی مثل کاربر، محصول یا درخواست لاگین خیلی مفیده.
✅ مزایا:
• قابل استفاده مجدد
• خوانایی بالا
• سازماندهی بهتر کد
type LoginRequest struct {
Username string `json:"username"`
Password string `json:"password"`
}
func LoginHandler(c *gin.Context) {
var req LoginRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(400, gin.H{"error": "invalid request"})
return
}
// استفاده از req.Username و req.Password
}🔸 ساختار بینام (Anonymous Struct)
وقتی فقط یکبار قراره از یه ساختار ساده استفاده کنی و نمیخوای struct جداگانه تعریف کنی، این روش خیلی سریع و کارآمده. مخصوصاً توی پارس کردن سریع کوئریها یا تستهای سبک.
✅ مزایا:
• کد سریعتر و تمیزتر
• بدون نیاز به تعریف نوع جدا
• مناسب برای موارد موقتی یا کوچک
func SearchHandler(c *gin.Context) {
var query struct {
Q string
form:"q"Page int
form:"page"}
if err := c.ShouldBindQuery(&query); err != nil {
c.JSON(400, gin.H{"error": "bad query"})
return
}
// استفاده از query.Q و query.Page
}
🎯 جمعبندی:
اگر ساختار رو در چند جای پروژه استفاده میکنی ➡️ ساختار نامدار (Named Struct)
اگر فقط برای یکبار یا در یک فانکشن خاص استفاده داری ➡️ ساختار بینام (Anonymous Struct)
#GoLang #Struct #Gin #API #Backend #برنامهنویسی #گو
☕️Telegram | Website | Discord
❤🔥6🔥3💔2
🚀 5 قسمت جدید از دوره رایگان و جامع CSS منتشر شد! 💻💚
میخوای صفحات وب رو حرفهای استایل بدی ولی نمیدونی از کجا شروع کنی؟
ما یه دورهی رایگان و پروژهمحور برات آماده کردیم که باهاش خیلی راحت و قدمبهقدم CSS رو یاد میگیری! 😎📘
🆕 قسمتهای جدید منتشر شده:
- اولویت بندی در CSS
- توابع ریاضی
- رنگ های ترکیبی یا Gradient
- Box Shadow
- Text Effect در CSS
دسترسی به دوره
#css #tutorial
☕️ Telegram | Website | Discord
میخوای صفحات وب رو حرفهای استایل بدی ولی نمیدونی از کجا شروع کنی؟
ما یه دورهی رایگان و پروژهمحور برات آماده کردیم که باهاش خیلی راحت و قدمبهقدم CSS رو یاد میگیری! 😎📘
🆕 قسمتهای جدید منتشر شده:
- اولویت بندی در CSS
- توابع ریاضی
- رنگ های ترکیبی یا Gradient
- Box Shadow
- Text Effect در CSS
دسترسی به دوره
#css #tutorial
☕️ Telegram | Website | Discord
🔥3⚡2❤🔥1💔1
سایت boot dev ، یادگیری با شروع کد نویسی 🔥
🔸️ سایت Boot.dev یه پلتفرم آموزش آنلاینه که با تمرکز روی کدنویسی عملی و بازیوار، بهت کمک میکنه از همون اول با نوشتن کد، برنامهنویسی رو تو مغزت حک کنی! بیشتر از 100 هزار نفر تا حالا از دورههاش استفاده کردن.
🔹️ دوره هاش شامل Python، JavaScript، Go، ساخت API، دیتابیس و مفاهیم پایهای علوم کامپیوتره، اونم بدون ویدیوهای طولانی و خستهکننده — فقط تمرینهای مرحلهبهمرحله و بازخورد فوری! اگه دنبال یادگیری واقعیای، Boot.dev یه گزینه جدیه.
#bootdev #site #python #go #golang #programming
☕️Telegram | Website | Discord
🔸️ سایت Boot.dev یه پلتفرم آموزش آنلاینه که با تمرکز روی کدنویسی عملی و بازیوار، بهت کمک میکنه از همون اول با نوشتن کد، برنامهنویسی رو تو مغزت حک کنی! بیشتر از 100 هزار نفر تا حالا از دورههاش استفاده کردن.
🔹️ دوره هاش شامل Python، JavaScript، Go، ساخت API، دیتابیس و مفاهیم پایهای علوم کامپیوتره، اونم بدون ویدیوهای طولانی و خستهکننده — فقط تمرینهای مرحلهبهمرحله و بازخورد فوری! اگه دنبال یادگیری واقعیای، Boot.dev یه گزینه جدیه.
#bootdev #site #python #go #golang #programming
☕️Telegram | Website | Discord
❤🔥10🔥3💔3
💬 سلام دوستان عزیز
امیدواریم سلامت باشید هرجا که هستید... 💔 خیلی مراقب خودتون باشید🙏
مایلید تو این روزها مطالب برنامهنویسی و آموزشی براتون بذاریم؟ یا ترجیح میدید فعلاً یه مدتی فعالیت کانال متوقف بشه تا شرایط بهتر بشه؟
هر تصمیمی که بگیریم، با هم میگیریم ❤️
امیدواریم سلامت باشید هرجا که هستید... 💔 خیلی مراقب خودتون باشید🙏
مایلید تو این روزها مطالب برنامهنویسی و آموزشی براتون بذاریم؟ یا ترجیح میدید فعلاً یه مدتی فعالیت کانال متوقف بشه تا شرایط بهتر بشه؟
هر تصمیمی که بگیریم، با هم میگیریم ❤️
❤🔥33💔13
کداکسپلور | CodeExplore pinned «💬 سلام دوستان عزیز امیدواریم سلامت باشید هرجا که هستید... 💔 خیلی مراقب خودتون باشید🙏 مایلید تو این روزها مطالب برنامهنویسی و آموزشی براتون بذاریم؟ یا ترجیح میدید فعلاً یه مدتی فعالیت کانال متوقف بشه تا شرایط بهتر بشه؟ هر تصمیمی که بگیریم، با هم میگیریم…»
به علت اینکه خیلی از شما دوستان کامنتی برای فعالیت کردن یا نکردن چنل توی شرایط کنونی نذاشتید تصمیم گرفتیم توی این نظرسنجی نظر شما رو بپرسیم🙏🌹
Final Results
52%
فعالیت بشه بهتره
48%
فعلا فعالیت نشه
⚡7💔7
" با احترام به نظرات شما عزیزان تا جایی که اینترنت همراهی کنه تصمیم به ادامه فعالیت گرفتیم؛ هرچند میدونیم شرایط و اوضاع این روز ها خوب نیست اما امیدواریم همه شما سلامت باشید و هرچی زودتر این شرایط به پایان برسه و همه بتونن زندگی نرمال خودشون رو داشته باشن🧡"
تیم کداکسپلور
تیم کداکسپلور
❤🔥23💔7
خواستتو بنویس، کدشو بگیر ⚡️
🔥 سایت useblackbox.io یک هوش مصنوعی مخصوص برنامه نویساس، یه چیزی شبیه Github Copilot . طبق آمار و توضیحات خودشون...
🔹 بیش از ۵۰۰ هزار برنامهنویس از Blackbox استفاده میکنن.
🔹 پشتیبانی از ۲۰+ زبان برنامهنویسی مثل Python، JS، C++ و...
🔹 قابلیت استخراج کد از ویدیوهای یوتیوب
🔹 افزونه برای VS Code و مرورگر
🔹 تولید و پیشنهاد کد فقط با تایپ توضیح!
#useblackbox #ai #site #blackbox
☕️Telegram | Website | Discord
🔥 سایت useblackbox.io یک هوش مصنوعی مخصوص برنامه نویساس، یه چیزی شبیه Github Copilot . طبق آمار و توضیحات خودشون...
🔹 بیش از ۵۰۰ هزار برنامهنویس از Blackbox استفاده میکنن.
🔹 پشتیبانی از ۲۰+ زبان برنامهنویسی مثل Python، JS، C++ و...
🔹 قابلیت استخراج کد از ویدیوهای یوتیوب
🔹 افزونه برای VS Code و مرورگر
🔹 تولید و پیشنهاد کد فقط با تایپ توضیح!
#useblackbox #ai #site #blackbox
☕️Telegram | Website | Discord
❤🔥6🔥3
🚀توضیح Closure Function در Go — ابزار قدرتمند برای نگهداری وضعیت (State)
در زبان Go، توابع میتونن داخل خودشون توابع دیگه تعریف و برگردونن. اگر اون تابع داخلی به متغیرهای خارج از خودش دسترسی داشته باشه، بهش میگیم Closure.
یعنی توابعی که محیط اطرافشون رو بهخاطر میسپارن حتی بعد از خروج از اون محیط.
✅ مثال واقعی: شمارنده با Closure
📌 هر بار که تابع ()c اجرا میشه، مقدار count رو یکی زیاد میکنه، چون اون تابع داخلی به count دسترسی داره و وضعیتش رو حفظ کرده.
🎯 کاربردهای واقعی Closure در Go:
✅ نگهداری وضعیت بدون استفاده از struct
✅ تولید توابع سفارشیشده با دادهی خاص
✅ ساختن توابع داینامیک مثل Middleware، Filter و Validator
✅ پیادهسازی رفتارهای فانکشنال (مثل map، reduce، chain)
🧠 چرا مهمه؟
Closureها بهت این امکان رو میدن که کد تمیزتر، ماژولارتر و با قابلیت ترکیبپذیری بالا بنویسی — بدون نیاز به تعریف نوع یا ساختارهای پیچیده.
#GoLang #Struct #Gin #API #Backend #برنامهنویسی #گو
☕️Telegram | Website | Discord
در زبان Go، توابع میتونن داخل خودشون توابع دیگه تعریف و برگردونن. اگر اون تابع داخلی به متغیرهای خارج از خودش دسترسی داشته باشه، بهش میگیم Closure.
یعنی توابعی که محیط اطرافشون رو بهخاطر میسپارن حتی بعد از خروج از اون محیط.
✅ مثال واقعی: شمارنده با Closure
func counter() func() int {
count := 0
return func() int {
count++
return count
}
}
func main() {
c := counter()
fmt.Println(c()) // 1
fmt.Println(c()) // 2
fmt.Println(c()) // 3
}📌 هر بار که تابع ()c اجرا میشه، مقدار count رو یکی زیاد میکنه، چون اون تابع داخلی به count دسترسی داره و وضعیتش رو حفظ کرده.
🎯 کاربردهای واقعی Closure در Go:
✅ نگهداری وضعیت بدون استفاده از struct
✅ تولید توابع سفارشیشده با دادهی خاص
✅ ساختن توابع داینامیک مثل Middleware، Filter و Validator
✅ پیادهسازی رفتارهای فانکشنال (مثل map، reduce، chain)
🧠 چرا مهمه؟
Closureها بهت این امکان رو میدن که کد تمیزتر، ماژولارتر و با قابلیت ترکیبپذیری بالا بنویسی — بدون نیاز به تعریف نوع یا ساختارهای پیچیده.
#GoLang #Struct #Gin #API #Backend #برنامهنویسی #گو
☕️Telegram | Website | Discord
❤🔥5💔3⚡1🔥1
مثل اینکه صرافی نوبیتکس توسط تیم گنجشک درنده هک شده!
🔹️ طبق اخبار منتشر شده در مجموع به ارزش حدود ۴۷ میلیون دلار از صرافی نوبیتکس ، سرقت شده و کاربران پیام هایی مبنی بر این قضیه دریافت کردند.
🔸️طبق منابع نوبیتکس بیانیه ای صادر کرده:
طبق گفته بعضی منابع، دارایی ها به این آدرس منتقل شدن:
☕️Telegram | Website | Discord
🔹️ طبق اخبار منتشر شده در مجموع به ارزش حدود ۴۷ میلیون دلار از صرافی نوبیتکس ، سرقت شده و کاربران پیام هایی مبنی بر این قضیه دریافت کردند.
🔸️طبق منابع نوبیتکس بیانیه ای صادر کرده:
اطلاعیه در خصوص حادثه امنیتی
صبح امروز ۲۸ خرداد، تیم فنی ما نشانههایی از دسترسی غیرمجاز به بخشی از زیرساختهای اطلاعرسانی و کیف پول گرم را شناسایی کرده است. بلافاصله پس از تشخیص، تمام دسترسیها متوقف شد و تیمهای امنیتی داخلی ما در حال بررسی دقیق ابعاد این حادثه هستند.
یادآور میشویم دارایی کاربران مطابق استانداردهای ذخیره سرد در امنیت کامل است و حادثه فوق فقط بخشی از دارایی کیفپولهای گرم را تحت تاثیر قرار داده است.
نوبیتکس مسئولیت کامل این حادثه را پذیرفته و به کاربران اطمینان میدهیم که تمام خسارات احتمالی از طریق صندوق بیمه و منابع نوبیتکس جبران خواهد شد.
تا زمان بررسی کامل، به طور موقت، دسترسی وبسایت و اپلیکیشن وجود ندارد.
همچنین جزئیات بیشتر ، پس از تکمیل بررسیها، منتشر خواهد شد.
از اعتماد و صبوری شما سپاسگزاریم.طبق گفته بعضی منابع، دارایی ها به این آدرس منتقل شدن:
TKFuckiRGCTerroristsNoBiTEXy2r7mNX
☕️Telegram | Website | Discord
💔10
🚀 توابع Currying در Go — ساخت توابع مرحلهای و داینامیک با قدرت Closures
در Go، مثل زبانهای فانکشنال، میتونی توابعی بسازی که به جای گرفتن همه آرگومانها یکجا، هر آرگومان رو در یک مرحله بگیرن. به این تکنیک میگیم:
🎯 Currying
یعنی تبدیل تابعی با چند آرگومان به توابع تو در تو، که هر کدوم فقط یک آرگومان میگیرن.
✅ مثال واقعی: ضرب با عدد ثابت
📌 اینجا تابع multiply(10) خودش یه تابع جدید میسازه (times10) که همیشه با ۱۰ ضرب میکنه.
🧠 به چه دردی میخوره؟
✅ ساخت توابع با پارامترهای پیشفرض
✅ پیادهسازی سادهتر توابع داینامیک
✅ خوانایی و تستپذیری بهتر
✅ کمک به معماری فانکشنال در Go با ترکیبپذیری بالا
🧩 حتی میتونی با Genericها توابع کلی بسازی:
حالا میتونی توابع ۲ پارامتری رو به صورت مرحلهای صدا بزنی:
#GoLang #Currying #Closure #Functions #Backend #برنامه_نویسی #گو
☕️Telegram | Website | Discord
در Go، مثل زبانهای فانکشنال، میتونی توابعی بسازی که به جای گرفتن همه آرگومانها یکجا، هر آرگومان رو در یک مرحله بگیرن. به این تکنیک میگیم:
🎯 Currying
یعنی تبدیل تابعی با چند آرگومان به توابع تو در تو، که هر کدوم فقط یک آرگومان میگیرن.
✅ مثال واقعی: ضرب با عدد ثابت
func multiply(x int) func(int) int {
return func(y int) int {
return x * y
}
}
func main() {
times10 := multiply(10)
fmt.Println(times10(3)) // 30
fmt.Println(times10(7)) // 70
}📌 اینجا تابع multiply(10) خودش یه تابع جدید میسازه (times10) که همیشه با ۱۰ ضرب میکنه.
🧠 به چه دردی میخوره؟
✅ ساخت توابع با پارامترهای پیشفرض
✅ پیادهسازی سادهتر توابع داینامیک
✅ خوانایی و تستپذیری بهتر
✅ کمک به معماری فانکشنال در Go با ترکیبپذیری بالا
🧩 حتی میتونی با Genericها توابع کلی بسازی:
func curry2[A, B, C any](f func(A, B) C) func(A) func(B) C {
return func(a A) func(B) C {
return func(b B) C {
return f(a, b)
}
}
}حالا میتونی توابع ۲ پارامتری رو به صورت مرحلهای صدا بزنی:
add := func(x, y int) int { return x + y }
curriedAdd := curry2(add)
fmt.Println(curriedAdd(2)(3)) // 5#GoLang #Currying #Closure #Functions #Backend #برنامه_نویسی #گو
☕️Telegram | Website | Discord
🔥7
کداکسپلور | CodeExplore
دوستان موقتا این پروکسی هارو قرار میدیم تا وقتی که اینترنت بهتر بشه. 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy 📦 Proxy ☕️Telegram | Website | Discord
ایرانسل :
پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی
همراه اول :
پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پردکسی - پروکسی
☕️Telegram | Website | Discord
پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی
همراه اول :
پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پروکسی - پردکسی - پروکسی
☕️Telegram | Website | Discord
❤🔥5💔2
🚀 اتمیک در ++C — نجات دادهها در ازدحام فعالیت تردها!
وقتی در ++C با چند تا ترد همزمان کار میکنی، مراقب باش! چون اگر چند تا ترد همزمان به یه متغیر دست بزنن بدون هماهنگی، همهچی به هم میریزه. اینجاست که std::atomic به دادت میرسه.
🎯 سناریو: شمارش همزمان با تردها
در تابع()f، هر ترد داره ۱۰,۰۰۰ بار یه شمارنده رو زیاد میکنه. ولی تفاوت بزرگ اینه که acnt از نوع std::atomic_int هست، ولی cnt یه int معمولیه.
خروجی احتمالی( چون شمارنده معمولی رفتار ثابتی نداره):
چرا اینطوریه؟ چون cnt++ایمن نیست و وقتی چند تا ترد با هم بهش دست میزنن، مقدار نهایی اشتباه میشه. این یعنی Race Condition.
معنی Race Condition:
حالت Race conditionها (شرایط مسابقه) بیشتر در زمینهی علوم کامپیوتر و برنامهنویسی مطرح میشن. این مشکل زمانی به وجود میاد که دو پردازه (process) یا ترد (thread) در یک برنامهی کامپیوتری همزمان تلاش میکنن به یک منبع مشترک دسترسی پیدا کنن و این باعث بروز اختلال در سیستم میشه. Race conditionها یکی از مشکلات رایج در برنامههای چندتردی (multithreaded) به شمار میان.
🔍 تفاوت اتمیک و غیراتمیک چیه؟
هر cnt++ در واقع ۳ مرحله داره:
1_خوندن مقدار از RAM
2_اضافه کردن ۱
3_نوشتن مقدار جدید
وقتی چند تا ترد با هم این کارو انجام بدن، ممکنه دو ترد همزمان مقدار رو بخونن، هر دو ۱ اضافه کنن، و هر دو همون مقدار جدید رو ذخیره کنن — یعنی یه شمارش گم میشه!
ولی با std::atomic_int، این عملیات به صورت اتمی و همزمانیامن (Thread-Safe) انجام میشه.
بحثش مفصله. حتی میتونید از سطحهای مختلف memory_order استفاده کنید، مخصوصاً وقتی بین تردها قراره داده به اشتراک گذاشته بشه.
یه راهکار دیگه هم استفاده از std::mutex هست؛ با این روش، یک ترد بخشی از کد رو قفل میکنه و بقیه تردها تا زمانی که این قفل باز نشه، اجازه ورود به اون بخش رو ندارن.
منبع: https://en.cppreference.com/w/cpp/atomic/atomic.html
#Cpp #Threads #Atomic #RaceCondition #MultiThreading #Concurrency #برنامهنویسی #سی_پلاس_پلاس
☕️Telegram | Website | Discord
وقتی در ++C با چند تا ترد همزمان کار میکنی، مراقب باش! چون اگر چند تا ترد همزمان به یه متغیر دست بزنن بدون هماهنگی، همهچی به هم میریزه. اینجاست که std::atomic به دادت میرسه.
🎯 سناریو: شمارش همزمان با تردها
std::atomic_int acnt;
int cnt;
void f() {
for (auto n{10000}; n; --n) {
++acnt; // امن!
++cnt; // خطرناک!
}
}
int main()
{
{
std::vector<std::jthread> pool;
for (int n = 0; n < 10; ++n)
pool.emplace_back(f);
}
std::cout << "The atomic counter is " << acnt << '\n'
<< "The non-atomic counter is " << cnt << '\n';
}
در تابع()f، هر ترد داره ۱۰,۰۰۰ بار یه شمارنده رو زیاد میکنه. ولی تفاوت بزرگ اینه که acnt از نوع std::atomic_int هست، ولی cnt یه int معمولیه.
خروجی احتمالی( چون شمارنده معمولی رفتار ثابتی نداره):
The atomic counter is 100000
The non-atomic counter is 69696
چرا اینطوریه؟ چون cnt++ایمن نیست و وقتی چند تا ترد با هم بهش دست میزنن، مقدار نهایی اشتباه میشه. این یعنی Race Condition.
معنی Race Condition:
حالت Race conditionها (شرایط مسابقه) بیشتر در زمینهی علوم کامپیوتر و برنامهنویسی مطرح میشن. این مشکل زمانی به وجود میاد که دو پردازه (process) یا ترد (thread) در یک برنامهی کامپیوتری همزمان تلاش میکنن به یک منبع مشترک دسترسی پیدا کنن و این باعث بروز اختلال در سیستم میشه. Race conditionها یکی از مشکلات رایج در برنامههای چندتردی (multithreaded) به شمار میان.
🔍 تفاوت اتمیک و غیراتمیک چیه؟
هر cnt++ در واقع ۳ مرحله داره:
1_خوندن مقدار از RAM
2_اضافه کردن ۱
3_نوشتن مقدار جدید
وقتی چند تا ترد با هم این کارو انجام بدن، ممکنه دو ترد همزمان مقدار رو بخونن، هر دو ۱ اضافه کنن، و هر دو همون مقدار جدید رو ذخیره کنن — یعنی یه شمارش گم میشه!
ولی با std::atomic_int، این عملیات به صورت اتمی و همزمانیامن (Thread-Safe) انجام میشه.
بحثش مفصله. حتی میتونید از سطحهای مختلف memory_order استفاده کنید، مخصوصاً وقتی بین تردها قراره داده به اشتراک گذاشته بشه.
یه راهکار دیگه هم استفاده از std::mutex هست؛ با این روش، یک ترد بخشی از کد رو قفل میکنه و بقیه تردها تا زمانی که این قفل باز نشه، اجازه ورود به اون بخش رو ندارن.
منبع: https://en.cppreference.com/w/cpp/atomic/atomic.html
#Cpp #Threads #Atomic #RaceCondition #MultiThreading #Concurrency #برنامهنویسی #سی_پلاس_پلاس
☕️Telegram | Website | Discord
❤🔥2💔2
سلام دوستان امیدواریم حالتون خوب باشه.
وضعیتتون در چه حاله؟
یه پیام بزارید ببینیم وصل شدید یا نه🧡
وضعیتتون در چه حاله؟
یه پیام بزارید ببینیم وصل شدید یا نه🧡
❤🔥8🔥1
1❤🔥7
دوستان این چند تا کانفیگ رو هم میزاریم وصل بشید.
vless://[email protected]:443?path=%2FegFIvRfmDaCdL5Uk%2FODQuMjM1LjE2OS4yMzQ%3D%3Fed%3D2560%2F%3F%40V2ray_Alpha&security=tls&encryption=none&alpn=h2,http/1.1&host=UuhUHYygESDfgh.uYhJhGVgfCjgujhbUiLbVFdXDXM.XyZ&fp=randomized&type=ws&sni=UUHuhyYgESDfgh.UyHjhgvgFCjgujhBuILbVFDXdxM.xYZ#WiFi-%40V2ray_Alpha-19
vless://[email protected]:443?path=%2FRklUHeautH5uvnSB%2FNTQuMTY5LjIyOS4xODg&security=tls&encryption=none&host=hOZori.iR&type=ws&sni=hOZori.iR#WiFi-%40V2ray_Alpha-18
vless://[email protected]:80?path=%2F&security=none&encryption=none&host=mail.ski1plag.ir&type=ws#WiFi-%40V2ray_Alpha-4
❤🔥20