کداکسپلور | CodeExplore
7.92K subscribers
2.01K photos
348 videos
103 files
1.83K links
با کد اکسپلور یاد بگیر، لذت ببر و بروز باش ⚡️😉

سایت:
CodeExplore.ir
👨🏻‍💻 ارتباط با ما :
@CodeExploreSup
گروه :
@CodeExplore_Gap
تبلیغات در کد اکسپلور :
@CodeExploreAds
Download Telegram
🚀 توابع Currying در Go — ساخت توابع مرحله‌ای و داینامیک با قدرت Closures
در 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
دوستان موقتا این پروکسی هارو قرار میدیم تا وقتی که اینترنت بهتر بشه.

📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy
📦 Proxy

☕️Telegram | Website | Discord
2🔥2
🚀 اتمیک در ++C — نجات داده‌ها در ازدحام فعالیت تردها!

وقتی در ++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
🚀 4 قسمت جدید از آموزش مقدماتی تا پیشرفته Django رایگان منتشر شد 💼🐍

اگه پایتون بلدی و می‌خوای وارد دنیای برنامه‌نویسی وب بشی، این دوره دقیقاً برای توئه!

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

📅 دوره به‌صورت سه روز یکبار آپدیت میشه و قسمت‌های جدید بهش اضافه میشه.

🔔 قسمت‌های منتشر شده:
- دیتابیس چیست؟
- ایجاد اولین مدل
- تمرین 4
- پنل مدیریت

🎬 دسترسی به دوره

#django #python #backend
☕️Telegram | Website | Discord
🔥10❤‍🔥2
توی روزای اخیر فعالیتتون توی فضای مجازی چطوره؟
و اگر کم هست علتش چیه؟
امیدواریم هرکجا که هستید سلامت باشید🧡
Anonymous Poll
22%
تغییری نداشته نسبت به همیشه و زیاد فعالم
57%
کم - بخاطر قطع و وصلی اینترنت
21%
کم - بخاطر شرایط فعلی و تمرکز نداشتن
❤‍🔥3
دوستان عزیز امیدواریم سلامت باشید هر کجا که هستید🧡
ریپازیتوری ها یا پروژه هایی که اخیرا روشون کار میکردید رو لینکشونو توی کامنت های این پست بزارید تا داخل چنل هم قرارشون بدیم و اینطوری بتونیم یه حمایتی از شما کرده باشیم.
1❤‍🔥20
کداکسپلور | CodeExplore pinned «دوستان عزیز امیدواریم سلامت باشید هر کجا که هستید🧡 ریپازیتوری ها یا پروژه هایی که اخیرا روشون کار میکردید رو لینکشونو توی کامنت های این پست بزارید تا داخل چنل هم قرارشون بدیم و اینطوری بتونیم یه حمایتی از شما کرده باشیم.»
کاتلین Kotlin) 2.2) منتشر شد 🔥

🔸️ جدیدترین نسخه‌ی Kotlin با ویژگی جذاب پارامترهای context اومده؛ یعنی وابستگی‌هارو می‌تونی تمیزتر و بدون پاس‌دادن دستی بین تابع‌ها مدیریت کنی.

🔹️ از طرفی، حالا با گزینه‌ی -Xwarning-level می‌تونی اخطارهای کامپایلر رو دقیق‌تر کنترل کنی؛ مثلاً بعضیاشو خاموش یا حتی تبدیل به ارور کنی.

🔸️ قابلیت Guard conditions هم به‌صورت پایدار اضافه شده که شرط‌گذاری‌هارو توی when‌ها راحت‌تر و خوندنی‌تر می‌کنه.

- زیرساخت‌ها هم آپدیت شدن:
✅️نسخه LLVM ۱۹
✅️ پشتیبانی از ویندوز ۷ حذف شده
✅️و wasm از جاوااسکریپت جدا شده

🔗 منبع

#kotlom #wasm #llvm #kotlin2 #llvm19 #کاتلین
☕️Telegram | Website | Discord
❤‍🔥62🔥1😍1
کداکسپلور | CodeExplore
دوستان عزیز امیدواریم سلامت باشید هر کجا که هستید🧡 ریپازیتوری ها یا پروژه هایی که اخیرا روشون کار میکردید رو لینکشونو توی کامنت های این پست بزارید تا داخل چنل هم قرارشون بدیم و اینطوری بتونیم یه حمایتی از شما کرده باشیم.
یادتون نره دوستان
از امروز به بعد شروع میکنیم به گذاشتن لینک ریپو هاتون داخل چنل❤️
اگر فکر میکنید ریپازیتوری مفیدی دارید لینکشو بزارید حالا از خودتون یا دیگران یا...🔥
ولی هدف اصلی این کار یه حمایت کوچیک از شما عزیزان هستش.
🔥5
چهار قسمت پایانی دوره رایگان آشنایی با Tkinter در پایتون منتشر شد 🎨🐍

توی این دوره رایگان سعی کردیم خیلی ساده و کاربردی، شما رو با Tkinter آشنا کنیم؛ کتابخونه‌ای که باهاش می‌تونید رابط‌های گرافیکی (GUI) توی پایتون بسازید.

اگه دوست داری با پایتون برنامه‌هایی با پنجره، دکمه، فرم و کلی امکانات دیگه بسازی، این دوره مخصوص توئه!
این دوره به‌صورت هفتگی آپدیت میشه و قسمت‌های جدید بهش اضافه میشه 💡

🔔 قسمت‌های منتشر شده:
- ساخت منو بار و لیست های کشویی
- پنجره های فرعی Top level و کادر Message box
- مبحث Frame
- ساخت Form با Frame


🎬 دسترسی به دوره

#python #tkinter #gui #tutorial
☕️Telegram | Website | Discord
❤‍🔥7🔥2
همیشه می‌شنویم که می‌گن اگه برنامه‌نویسی، مهندسی یا ... باید توی لینکدین فعال باشی. ولی خیلی کم پیش میاد کسی واقعاً توضیح بده چطوری باید فعالیت کنی؟ یا اصلاً از کجا شروع کنی؟ 🤔

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

پروفایل لینکدین مثل ویترین مغازته. باید مرتب و شفاف باشه:

📸 عکس پروفایلت بهتره بک‌گراند ساده‌ای داشته باشه. عکس با پس‌زمینه‌ی شلوغ باعث میشه توجه از خودت برداشته بشه.

🧩 قسمت Headline می‌تونه ساده باشه. حتی اگر تازه‌کاری، راحت بنویس "علاقه‌مند به فرانت‌اند" یا "در مسیر یادگیری بک‌اند".

✍️ توی بخش About کامل و با حوصله بنویس. بگو چی بلدی، به چی علاقه داری و چی دنبالشی. بعد از توضیحات، حتماً چند تا تگ مهارتی مثل Python, React, HTML و... هم بذار.

🔗 آدرس URL پروفایلت رو از قسمت Edit Public Profile & URL کوتاه و مرتب کن. لینک پروفایلت مرتبط با اسم پروفایلت باشه و ساده باشه تا راحت تر قابل دسترسی باشه مثلا linkedin.com/in/john-doe

🛠 توی بخش Skills مهارت‌هات رو وارد کن، حتی اگه تعدادش کمه. مهم نیست اگر تازه‌کاری، مهم اینه که توی مسیر رشد باشی.

🎓 توی بخش Education دانشگاه یا دوره‌هایی که گذروندی رو بنویس. حتی دوره‌های آنلاین مفید.

📁 اگر پروژه‌ای داشتی، حتی کوچیک، توی بخش Projects ثبتش کن. نشون بده توی عمل هم دست‌به‌کارت خوبه.

اینا در مورد داشتن یه پروفایل مناسب و حرفه ایه پست بعدی در مورد چطور فعالیت کردن داخل لینکدین هستش💯


#linkedin #programming #skills #activity
☕️Telegram | Website | Discord
❤‍🔥11🔥3
🚀 4 قسمت جدید از آموزش مقدماتی تا پیشرفته Django رایگان منتشر شد 💼🐍

اگه پایتون بلدی و می‌خوای وارد دنیای برنامه‌نویسی وب بشی، این دوره دقیقاً برای توئه!

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

📅 دوره به‌صورت سه روز یکبار آپدیت میشه و قسمت‌های جدید بهش اضافه میشه.

🔔 قسمت‌های منتشر شده:
- کار با پنل مدیریت
- دریافت اطلاعات از دیتابیس
- فیلترها در دیتابیس
- تمرین 5

🎬 دسترسی به دوره

#django #python #backend
☕️Telegram | Website | Discord
🔥8❤‍🔥6😍21
💡اگه می‌خوای یاد بگیری چطور می‌شه مفاهیم Trait و Static Dispatch زبان Rust رو توی Zig با ساختارهایی مثل enum و function شبیه‌سازی کرد، این ریپو یه نمونه‌ی خیلی ساده و قابل فهمه.
‏barazzesh بهت کمک می‌کنه قابلیت تعریف Trait و بررسی الزامات type رو در Zig اجرا کنی — حتی بدون نیاز به ویژگی‌های پیشرفته زبانی.

GitHub: https://github.com/MahdiGMK/barazzesh

#github #repo
☕️Telegram | Website | Discord
❤‍🔥4🔥4😍2
توی این ریپو قراره CPP .رو از صفر تا هر جا حال داد یاد بگیریم. نه خبری از اصطلاحات عجیب غریبه، نه خشکی درسنامه‌ای 😃😎

GitHub: https://github.com/yasnaask/cpp-learning

#github #repo
☕️Telegram | Website | Discord
❤‍🔥6😍4🔥2
خب توی این پست بحث لینکدین رو ادامه میدیم و مواردی رو که نتیجه تحقیق و بررسی نحوه فعالیت افراد با تجربه بوده رو بهتون میگم. چطور توی لینکدین فعالیت کنیم؟

🎬 1. ارائه نمونه کارها
نمونه‌کارهات رو به این شکل به اشتراک بزار:
- ویدئوهای کوتاه معرفی پروژت به همراه توضیح و لینک به پروژه

- لینک پروژه های آنلاین مثل گیت‌هاب

- عکس و اسکرین‌شات از کارهات همراه با توضیح مختصر


📚 2. اشتراک‌گذاری چیزی که یاد می‌گیری

- مقاله‌ها یا داکیومنت‌هایی که خوندی رو خلاصه کن و توی لینکدین منتشر کن با این کار، هم خودت بهتر یاد می‌گیری و هم دیگران از تجربیاتت استفاده می‌کنن.
مثلاً اگه یه مفهوم خاص یا یه ترفند توی برنامه‌نویسی رو فهمیدی، با زبون ساده براش پست بذار.


🧠 3. مطالب علمی و تخصصی به صورت متن یا ویدئو
می‌تونی یه ویدئوی کوتاه ضبط کنی و نکات مهم یه موضوع رو بگی یا یه پست متنی علمی بنویسی.
این باعث میشه افراد حرفه‌ای توی حوزه تو جذب بشن و اعتبارت بیشتر بشه.

🔗 4. اشتراک‌گذاری ریپازیتوری‌های مفید
اگر ریپازیتوری‌های کاربردی، کتابخانه‌ها یا ابزارهای خوبی توی گیت‌هاب پیدا کردی، لینک‌شون رو با توضیح کوتاه توی لینکدین به اشتراک بذار.

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

توی پست بعدی در مورد نحوه کانکشن زدن مفید و رفتن به سمت پروژه گرفتن و... صحبت میکنیم.

#linkedin #programming #skills #activity #part_2
☕️Telegram | Website | Discord
❤‍🔥4😍2