تحلیل روانی برنامهنویسها بر اساس تعداد کامیتهای سالانه در GitHub
0 تا 10 کامیت
"یه بار VS Code رو باز کردم، ترسیدم، بستم."
رنک: راکی
11 تا 100 کامیت
"من بیشتر به جنبهی تئوریک برنامهنویسی علاقه دارم..."
📚 یعنی از دور نگاه میکنه که بقیه چی مینویسن
رنک: برونز
101 تا 500 کامیت
"بیشتر وقتا فقط یه نقطه اضافه میکنم، کامیت میزنم، بعد حس موفقیت میگیرم."
🧘♂️ راهب گیتهاب. تعادل در حد بودا، بازدهی در حد نخودچی.
رنک: پرو
501 تا 1000 کامیت
"روزایی هست که من کامیت میزنم… روزایی هم هست که کامیت منو میزنه."
رنک: مستر
1001 تا 2000 کامیت
"کاشی کاری شغل اول منه برنامه نویسی پوششه!"
رنک: لجند
2000+ کامیت
"سال پیش با گیت ازدواج کردم، ماه پیش با ریپوزیتوریم بچهدار شدیم."
🥴 کسی که هنوز بلد نیست درست کامیت بزنه
رنک: چیتر
#fun
@Syntax_fa
0 تا 10 کامیت
"یه بار VS Code رو باز کردم، ترسیدم، بستم."
رنک: راکی
11 تا 100 کامیت
"من بیشتر به جنبهی تئوریک برنامهنویسی علاقه دارم..."
📚 یعنی از دور نگاه میکنه که بقیه چی مینویسن
رنک: برونز
101 تا 500 کامیت
"بیشتر وقتا فقط یه نقطه اضافه میکنم، کامیت میزنم، بعد حس موفقیت میگیرم."
🧘♂️ راهب گیتهاب. تعادل در حد بودا، بازدهی در حد نخودچی.
رنک: پرو
501 تا 1000 کامیت
"روزایی هست که من کامیت میزنم… روزایی هم هست که کامیت منو میزنه."
رنک: مستر
1001 تا 2000 کامیت
"کاشی کاری شغل اول منه برنامه نویسی پوششه!"
رنک: لجند
2000+ کامیت
"سال پیش با گیت ازدواج کردم، ماه پیش با ریپوزیتوریم بچهدار شدیم."
🥴 کسی که هنوز بلد نیست درست کامیت بزنه
رنک: چیتر
#fun
@Syntax_fa
😁29💩3👍2👎2❤1
کابوس فراموشی در مغزهای دیجیتال!
تصور کنید هوش مصنوعی که کلی چیز یاد گرفته، ناگهان با یادگیری یک نکته جدید، تمام دانش قبلیاش زو از دست میده! دقیقا مثل اینکه شما هر بار که یک مهارت جدید یاد میگیرید، تمام مهارتهای قبلیتون رو فراموش کنید!
این پدیده ترسناک تو دنیای هوش مصنوعی، اسمش فراموشی فاجعهبار (Catastrophic Forgetting) است! 💀
چرا این یک فاجعه است؟
مدلهای هوش مصنوعی، بهویژه شبکههای عصبی عمیق، وقتی روی دادههای جدیدی آموزش می بینن، تمایل دارن که اطلاعاتی که قبلا یاد گرفتن رو بازنویسی کنن و از دست بدن. یعنی:
یک هوش مصنوعی نمیتونه هم استاد شطرنج باشه، هم یک پزشک عالی و هم راننده بینقص! چون هر بار که یک مهارت جدید یاد میگیره، بقیه رو فراموش میکنه!
این، مانعی بزرگی سر راه یادگیری مداوم و تکامل واقعی هوش مصنوعیه.
آینده AI بدون حل این مشکل چگونه خواهد بود؟
یک آلزایمر دیجیتال واقعی! ما به هوش مصنوعیهای چندکاره نیاز داریم که بتونن همزمان دانش و مهارتهای مختلفی رو در خود نگه دارن و به مرور زمان اون هارو افزایش بدن، نه اینکه هر بار حافظه خودشون رو ریست کنن!
آیا روزی میرسه که AIها واقعا حافظه داشته باشن؟
#ai
@Syntax_fa
تصور کنید هوش مصنوعی که کلی چیز یاد گرفته، ناگهان با یادگیری یک نکته جدید، تمام دانش قبلیاش زو از دست میده! دقیقا مثل اینکه شما هر بار که یک مهارت جدید یاد میگیرید، تمام مهارتهای قبلیتون رو فراموش کنید!
این پدیده ترسناک تو دنیای هوش مصنوعی، اسمش فراموشی فاجعهبار (Catastrophic Forgetting) است! 💀
چرا این یک فاجعه است؟
مدلهای هوش مصنوعی، بهویژه شبکههای عصبی عمیق، وقتی روی دادههای جدیدی آموزش می بینن، تمایل دارن که اطلاعاتی که قبلا یاد گرفتن رو بازنویسی کنن و از دست بدن. یعنی:
یک هوش مصنوعی نمیتونه هم استاد شطرنج باشه، هم یک پزشک عالی و هم راننده بینقص! چون هر بار که یک مهارت جدید یاد میگیره، بقیه رو فراموش میکنه!
این، مانعی بزرگی سر راه یادگیری مداوم و تکامل واقعی هوش مصنوعیه.
آینده AI بدون حل این مشکل چگونه خواهد بود؟
یک آلزایمر دیجیتال واقعی! ما به هوش مصنوعیهای چندکاره نیاز داریم که بتونن همزمان دانش و مهارتهای مختلفی رو در خود نگه دارن و به مرور زمان اون هارو افزایش بدن، نه اینکه هر بار حافظه خودشون رو ریست کنن!
آیا روزی میرسه که AIها واقعا حافظه داشته باشن؟
#ai
@Syntax_fa
👍13❤2👀2
تو پروژه ها اولش شبیه به اینه که داری یه سنگ گرد سنگین رو به سختی از یه تپه بالا می بری. انرژی زیادی میخواد تا راه بیوفته، ولی وقتی راه افتاد، ادامه دادنش خیلی راحته
اما اگه یه مدت رهاش کنی دوباره راه انداختنش به همون اندازه اول، یا حتی بیشتر، سخت میشه
حفظ momentum یعنی حتی اگه وقتت کمه، یا خسته ای، یا مغزت پره، یه حرکت کوچیک بزنی، یه باگ ریز، یه refactor ساده، یا حتی فقط باز کردن پروژه
چون وقتی فاصله می گیری، پروژه یه دفعه سنگین تر از چیزی که هست به نظر میرسه و اون وقت به جای یه خط کد، با یه کوه ناتموم طرفی
چرا momentum؟
1. انگیزه رو زنده نگه میداره
وقتی هر روز یه کار کوچیک انجام بدی، حس پیشرفت میگیری. ولی وقتی چند روز فاصله بیفته، مغز حس میکنه پروژه سنگینتر شده
2. یادگیری و درگیری ذهنی حفظ میشه
وقتی مدام با کدها درگیری، context توی ذهنت میمونه. ولی بعد از چند روز، باز کردن پروژه مثل روبهرو شدن با یه چیز ناآشنا میشه
3. بهت کمک میکنه با کمالگرایی کنار بیای
وقتی توی flow باشی، بیشتر عمل میکنی تا تحلیل. ولی فاصله گرفتن باعث میشه بیش از حد فکر کنی. از کجا شروع کنم؟ نکنه کدم خوب نباشه؟
@Syntax_fa
اما اگه یه مدت رهاش کنی دوباره راه انداختنش به همون اندازه اول، یا حتی بیشتر، سخت میشه
حفظ momentum یعنی حتی اگه وقتت کمه، یا خسته ای، یا مغزت پره، یه حرکت کوچیک بزنی، یه باگ ریز، یه refactor ساده، یا حتی فقط باز کردن پروژه
چون وقتی فاصله می گیری، پروژه یه دفعه سنگین تر از چیزی که هست به نظر میرسه و اون وقت به جای یه خط کد، با یه کوه ناتموم طرفی
چرا momentum؟
1. انگیزه رو زنده نگه میداره
وقتی هر روز یه کار کوچیک انجام بدی، حس پیشرفت میگیری. ولی وقتی چند روز فاصله بیفته، مغز حس میکنه پروژه سنگینتر شده
2. یادگیری و درگیری ذهنی حفظ میشه
وقتی مدام با کدها درگیری، context توی ذهنت میمونه. ولی بعد از چند روز، باز کردن پروژه مثل روبهرو شدن با یه چیز ناآشنا میشه
3. بهت کمک میکنه با کمالگرایی کنار بیای
وقتی توی flow باشی، بیشتر عمل میکنی تا تحلیل. ولی فاصله گرفتن باعث میشه بیش از حد فکر کنی. از کجا شروع کنم؟ نکنه کدم خوب نباشه؟
@Syntax_fa
👍26❤4🔥1
قابلیت ایمپورت کد های ریپوزیتوری گیتهاب تو Gemini ai
حالا که همتون شهروند آمریکا هستید و اشتراک pro جمنای رو دارید، می تونید اکانت گیتهابتون رو تو Gemini کانکت کنید و ریپوزیتوری رو مشخص کنید تا دقیقا بدونه ساختار کدتون چیه، کداتون رو بخونه و بهتر بتونه به سوالاتتون جواب بده.
برای اینکار کافیه:
1. وارد gemini ai بشید
2. رو settings کلیک کنید و وارد بخش Apps بشید
3. تو بخش Productivity گیت هاب رو مشاهده می کنید. روش کلیک کنید و اکانت گیتهابتون رو کانکت کنید.
حالا یه گفتگو جدید رو شروع کنید و روی add file کلیک کنید
سه گزینه داره روی import code کلیک کنید.
ازتون لینک ریپوزیتوری رو میخواد بهش لینکش رو بدید.
و تمام. حالا میتونه کد های شمارو ببینه و بهتر به شما کمک کنه
@gemini
@Syntax_fa
حالا که همتون شهروند آمریکا هستید و اشتراک pro جمنای رو دارید، می تونید اکانت گیتهابتون رو تو Gemini کانکت کنید و ریپوزیتوری رو مشخص کنید تا دقیقا بدونه ساختار کدتون چیه، کداتون رو بخونه و بهتر بتونه به سوالاتتون جواب بده.
برای اینکار کافیه:
1. وارد gemini ai بشید
2. رو settings کلیک کنید و وارد بخش Apps بشید
3. تو بخش Productivity گیت هاب رو مشاهده می کنید. روش کلیک کنید و اکانت گیتهابتون رو کانکت کنید.
حالا یه گفتگو جدید رو شروع کنید و روی add file کلیک کنید
سه گزینه داره روی import code کلیک کنید.
ازتون لینک ریپوزیتوری رو میخواد بهش لینکش رو بدید.
و تمام. حالا میتونه کد های شمارو ببینه و بهتر به شما کمک کنه
@gemini
@Syntax_fa
👍15🔥4❤3
Dispatching
تا حالا دیدی تو یه مرکز تماس، اپراتور تماس رو وصل میکنه به بخش مناسب؟ مثلاً مشکل فنی داری میری پشتیبانی، پولی باشه میری حسابداری؟ خب اون کاری که اپراتوره میکنه رو بهش میگن Dispatch
توی برنامهنویسی هم همینه:
یه درخواست میاد، سیستم نگاه میکنه، میفرستدش به جای درست
یه مثال ساده با GO
بسته به اینکه contactType چیه، میفرستیمش به تابع مناسب.
انواع Dispatch تو Go
1. Dynamic Dispatch با اینترفیس:
تو زمان اجرا تصمیم میگیریم کدوم متد رو صدا بزنیم:
2. Dispatch از طریق کانالها:
با select منتظریم ببینیم کدوم کانال زودتر پیام میده:
3. Static Dispatch با Map یا Switch:
چرا Dispatch
- نظم میده به کد.
- قابل گسترشه.
- بهینهتر میشه.
#Golang #Dispatching
@Syntax_fa
تا حالا دیدی تو یه مرکز تماس، اپراتور تماس رو وصل میکنه به بخش مناسب؟ مثلاً مشکل فنی داری میری پشتیبانی، پولی باشه میری حسابداری؟ خب اون کاری که اپراتوره میکنه رو بهش میگن Dispatch
توی برنامهنویسی هم همینه:
یه درخواست میاد، سیستم نگاه میکنه، میفرستدش به جای درست
یه مثال ساده با GO
switch contactType {
case "technical":
technicalSupport()
case "accounting":
accounting()
case "sales":
sales()
}بسته به اینکه contactType چیه، میفرستیمش به تابع مناسب.
انواع Dispatch تو Go
1. Dynamic Dispatch با اینترفیس:
تو زمان اجرا تصمیم میگیریم کدوم متد رو صدا بزنیم:
var s Speaker
s = Dog{} // Woof!
s = Cat{} // Meow!
2. Dispatch از طریق کانالها:
با select منتظریم ببینیم کدوم کانال زودتر پیام میده:
select {
case msg := <-ch1:
fmt.Println(msg)
case msg := <-ch2:
fmt.Println(msg)
}
3. Static Dispatch با Map یا Switch:
actions := map[string]func(){
"start": func() { fmt.Println("Starting...") },
}
چرا Dispatch
- نظم میده به کد.
- قابل گسترشه.
- بهینهتر میشه.
#Golang #Dispatching
@Syntax_fa
👍11❤4❤🔥1
صفحه بندی داده دادهها: Limit/Offset و Cursor-Based
وقتی صحبت از نمایش حجم زیادی از دادهها در صفحات مختلف میشه، استفاده از pagination ضروری میشه. دو روش رایج برای این کار وجود داره که هر کدوم سادگیها و چالشهای خاص خودشون رو دارن:
صفحه بندی با Limit و Offset سادگی ولی ...
صفحه بندی با Limit و Offset رو میشه سادهترین و اولین روشی دونست که به ذهن میرسه. شما به دیتابیس میگید "فقط Limit تا رکورد بهم بده" و "از Offset مشخصی شروع کن".
سادگی:
پیادهسازی خیلی آسونی داره.
برای صفحات اول که تعداد رکوردها کمه، عملکرد خوبی داره.
چالشها:
عملکرد ضعیف در صفحات بالا: با افزایش
مشکل تغییر دادهها: اگه در حین حرکت بین صفحات، دادهای اضافه یا حذف بشه، ممکنه رکوردهای تکراری ببینید یا بعضی از رکوردها رو از دست بدید.
مرتبسازی (Sorting): معمولاً نیازمند مرتبسازی روی یک فیلد ثابت هستید تا نتیجه قابل پیشبینی باشه.
مثال ساده (SQL):
برای گرفتن ۱۰ رکورد اول از جدول
برای گرفتن ۱۰ رکورد بعدی (صفحه ۲):
صفحه بندی با روش Cursor-Based Pagination: راه حلی برای مقیاسپذیری
صفحه بندی با Cursor-based pagination با استفاده از یک "نشانگر" (cursor) که معمولاً یک فیلد یکتا و مرتبسازی شده (مثل تاریخ ایجاد یا ID) هست، صفحه بعدی رو مشخص میکنه. به جای گفتن "صفحه N رو بیار"، میگیم "رکوردها رو از بعد از این نقطه مشخص بیار".
محدودیتها و نکتهها:
پیچیدگی پیادهسازی: نسبت به Limit/Offset کمی پیچیدهتره و نیازمند طراحی دقیقتر کوئریهاست.
مرتبسازی: باید همیشه بر اساس فیلد Cursor مرتبسازی انجام بشه. این یعنی نمیتونید هر جور دلتون خواست دادهها رو مرتب کنید.
پرش به صفحات دلخواه: معمولاً قابلیت "پرش به صفحه 5" رو نداره و فقط میتونید به صفحه بعدی یا قبلی برید (Next/Previous). مناسب برای فیدها و لیستهای طولانی: برای سیستمهایی مثل فید شبکههای اجتماعی که فقط به اسکرول کردن ادامه دار نیاز دارن و پرش به صفحه خاصی مطرح نیست، عالی عمل میکنه.
مثال ساده (SQL):
فرض کنید آخرین
#pagination #sql
@Syntax_fa
وقتی صحبت از نمایش حجم زیادی از دادهها در صفحات مختلف میشه، استفاده از pagination ضروری میشه. دو روش رایج برای این کار وجود داره که هر کدوم سادگیها و چالشهای خاص خودشون رو دارن:
صفحه بندی با Limit و Offset سادگی ولی ...
صفحه بندی با Limit و Offset رو میشه سادهترین و اولین روشی دونست که به ذهن میرسه. شما به دیتابیس میگید "فقط Limit تا رکورد بهم بده" و "از Offset مشخصی شروع کن".
سادگی:
پیادهسازی خیلی آسونی داره.
برای صفحات اول که تعداد رکوردها کمه، عملکرد خوبی داره.
چالشها:
عملکرد ضعیف در صفحات بالا: با افزایش
Offset، دیتابیس مجبور میشه تعداد زیادی از رکوردها رو اسکن کنه و بعد اونا رو دور بندازه که باعث کندی شدید میشه.مشکل تغییر دادهها: اگه در حین حرکت بین صفحات، دادهای اضافه یا حذف بشه، ممکنه رکوردهای تکراری ببینید یا بعضی از رکوردها رو از دست بدید.
مرتبسازی (Sorting): معمولاً نیازمند مرتبسازی روی یک فیلد ثابت هستید تا نتیجه قابل پیشبینی باشه.
مثال ساده (SQL):
برای گرفتن ۱۰ رکورد اول از جدول
products (صفحه ۱):SELECT *
FROM products
ORDER BY id
LIMIT 10 OFFSET 0;
برای گرفتن ۱۰ رکورد بعدی (صفحه ۲):
SELECT *
FROM products
ORDER BY id
LIMIT 10 OFFSET 10;
صفحه بندی با روش Cursor-Based Pagination: راه حلی برای مقیاسپذیری
صفحه بندی با Cursor-based pagination با استفاده از یک "نشانگر" (cursor) که معمولاً یک فیلد یکتا و مرتبسازی شده (مثل تاریخ ایجاد یا ID) هست، صفحه بعدی رو مشخص میکنه. به جای گفتن "صفحه N رو بیار"، میگیم "رکوردها رو از بعد از این نقطه مشخص بیار".
محدودیتها و نکتهها:
پیچیدگی پیادهسازی: نسبت به Limit/Offset کمی پیچیدهتره و نیازمند طراحی دقیقتر کوئریهاست.
مرتبسازی: باید همیشه بر اساس فیلد Cursor مرتبسازی انجام بشه. این یعنی نمیتونید هر جور دلتون خواست دادهها رو مرتب کنید.
پرش به صفحات دلخواه: معمولاً قابلیت "پرش به صفحه 5" رو نداره و فقط میتونید به صفحه بعدی یا قبلی برید (Next/Previous). مناسب برای فیدها و لیستهای طولانی: برای سیستمهایی مثل فید شبکههای اجتماعی که فقط به اسکرول کردن ادامه دار نیاز دارن و پرش به صفحه خاصی مطرح نیست، عالی عمل میکنه.
مثال ساده (SQL):
فرض کنید آخرین
id محصولی که در صفحه قبلی دیدهاید 1234 بوده:SELECT *
FROM products
WHERE id > 1234
ORDER BY id
LIMIT 10;
#pagination #sql
@Syntax_fa
👍10❤2😁1
در ردیس وقتی ttl یک کلید رو میگیریم، اگه کلید وجود نداشته باشه مقدار بازگشتی:
Anonymous Quiz
22%
مساوی با 0 هستش
44%
مساوی با null هستش
10%
مساوی با -2 هستش
24%
مساوی با -1 هستش
👍5👎1👏1
اگه حس میکنی توی زندگی گم شدی، شاید به این خاطره که داری از نقشه یه نفر دیگه استفاده میکنی!
خیلی از ما ناخودآگاه دنبال راه و رسم بقیه میریم؛ مثلا چون آقای X کارش گرفته و ایده خانم Y ترکیده، ما هم با تقلید همون راه رو میریم!!!
یه چنل یوتیوب بزنم مثل فلانی ... یه پیج اینستاگرام بزنم مثل بمانی ... پایه ای پادکست بزنیم پول پارو کنیم؟ حاجی ترید مثل آب خوردنه بزنیم تو کارش؟
این وسط یه سوال مهم فراموش میشه! ما واقعا مناسب این کارها هستیم؟ روحیاتمون و شرایط خانوادگیمون این اجازه رو میده؟
اکثر این نقشهها مال بقیه ست و مخصوص خودشونه. اگه بخوای راه خودت رو پیدا کنی، باید بشینی و ببینی با توجه به وضعیتت چه چیزی مناسبته!
این روزها همه دارن یوتیوبر میشن ولی قطعا بالای 90 درصدشون شکست میخورن. دلیل؟ تولیدمحتوای ویدیویی در یک بازه زمانی طولانی کار هرکسی نیست و با شرایط زندگی همه آدمها جور در نمیاد.
بهتره بریم سراغ ارزشهای غیرتحمیلی! چیزی که حاصل عشق و تفکر خودمونه نه تحمیل جامعه و سوشال مدیا ...
کولهبار شکستهامون رو با رفتارهای هیجانی سنگینتر نکنیم.
کانال منبع:
source
@Syntax_fa
خیلی از ما ناخودآگاه دنبال راه و رسم بقیه میریم؛ مثلا چون آقای X کارش گرفته و ایده خانم Y ترکیده، ما هم با تقلید همون راه رو میریم!!!
یه چنل یوتیوب بزنم مثل فلانی ... یه پیج اینستاگرام بزنم مثل بمانی ... پایه ای پادکست بزنیم پول پارو کنیم؟ حاجی ترید مثل آب خوردنه بزنیم تو کارش؟
این وسط یه سوال مهم فراموش میشه! ما واقعا مناسب این کارها هستیم؟ روحیاتمون و شرایط خانوادگیمون این اجازه رو میده؟
اکثر این نقشهها مال بقیه ست و مخصوص خودشونه. اگه بخوای راه خودت رو پیدا کنی، باید بشینی و ببینی با توجه به وضعیتت چه چیزی مناسبته!
این روزها همه دارن یوتیوبر میشن ولی قطعا بالای 90 درصدشون شکست میخورن. دلیل؟ تولیدمحتوای ویدیویی در یک بازه زمانی طولانی کار هرکسی نیست و با شرایط زندگی همه آدمها جور در نمیاد.
بهتره بریم سراغ ارزشهای غیرتحمیلی! چیزی که حاصل عشق و تفکر خودمونه نه تحمیل جامعه و سوشال مدیا ...
کولهبار شکستهامون رو با رفتارهای هیجانی سنگینتر نکنیم.
کانال منبع:
source
@Syntax_fa
👍23❤3
چند تا کامند داکر برای پاکسازی و آزاد کردن فضا
پاک کردن فضای بلا استفاده داکر هر چند وقت یبار نیازه وگرنه اگه مثل من از داکر زیاد استفاده کنید ممکنه کلی فضا بگیره.
1. حذف همه چیزهای استفاده نشده (Containers, Images, Networks, Volumes)
این دستور جامعترین راه برای آزاد کردن فضاست و تمام آبجکتهای داکر که در حال استفاده نیستن (کانتینرهای متوقف شده، ایمیجهای بدون استفاده، شبکههای بدون اتصال و والیوم های بدون کاربرد) رو حذف میکنه:
اگه میخواید والیوم های بدون استفاده هم حذف بشن، از فلگ —volumes استفاده کنید:
2. حذف کانتینرهای متوقف شده
این دستور فقط کانتینرهایی رو حذف میکنه که در حال اجرا نیستن:
3. حذف ایمیجهای بدون استفاده (Dangling Images)
ا. Dangling Images ایمیجهایی هستن که تگ ندارن و توسط هیچ کانتینری استفاده نمیشن:
برای حذف تمام ایمیجهای استفاده نشده (حتی اونایی که توسط کانتینری استفاده نمیشن ولی تگ دارن)، از سوییچ —all یا -a استفاده کنید:
4. حذف ولومهای بدون استفاده
این دستور ولومهایی رو حذف میکنه که به هیچ کانتینری متصل نیستن:
5. حذف شبکههای بدون استفاده
این دستور شبکههایی رو حذف میکنه که هیچ کانتینری بهشون متصل نیست:
حذف کش بیلد(این یکی ممکنه فضای زیادی گرفته باشه):
نمایش فضای اشغال شده:
برای مشاهده فضای کلی اشغال شده توسط داکر و جزئیات مربوط به ایمیجها، کانتینرها و والیوم ها، میتونید از دستور زیر استفاده کنید:
#docker
@Syntax_fa
پاک کردن فضای بلا استفاده داکر هر چند وقت یبار نیازه وگرنه اگه مثل من از داکر زیاد استفاده کنید ممکنه کلی فضا بگیره.
1. حذف همه چیزهای استفاده نشده (Containers, Images, Networks, Volumes)
این دستور جامعترین راه برای آزاد کردن فضاست و تمام آبجکتهای داکر که در حال استفاده نیستن (کانتینرهای متوقف شده، ایمیجهای بدون استفاده، شبکههای بدون اتصال و والیوم های بدون کاربرد) رو حذف میکنه:
docker system prune
اگه میخواید والیوم های بدون استفاده هم حذف بشن، از فلگ —volumes استفاده کنید:
docker system prune --volumes
2. حذف کانتینرهای متوقف شده
این دستور فقط کانتینرهایی رو حذف میکنه که در حال اجرا نیستن:
docker container prune
3. حذف ایمیجهای بدون استفاده (Dangling Images)
ا. Dangling Images ایمیجهایی هستن که تگ ندارن و توسط هیچ کانتینری استفاده نمیشن:
docker image prune
برای حذف تمام ایمیجهای استفاده نشده (حتی اونایی که توسط کانتینری استفاده نمیشن ولی تگ دارن)، از سوییچ —all یا -a استفاده کنید:
Bash
docker image prune -a
4. حذف ولومهای بدون استفاده
این دستور ولومهایی رو حذف میکنه که به هیچ کانتینری متصل نیستن:
docker volume prune
5. حذف شبکههای بدون استفاده
این دستور شبکههایی رو حذف میکنه که هیچ کانتینری بهشون متصل نیست:
docker network prune
حذف کش بیلد(این یکی ممکنه فضای زیادی گرفته باشه):
docker builder prune
نمایش فضای اشغال شده:
برای مشاهده فضای کلی اشغال شده توسط داکر و جزئیات مربوط به ایمیجها، کانتینرها و والیوم ها، میتونید از دستور زیر استفاده کنید:
docker system df
#docker
@Syntax_fa
👍8❤5
معرفی Redis Insight
یه ابزار گرافیکی خوشساخت و راحت برای Redis هست که باهاش میتونی خیلی راحت دیتابیست رو ببینی، مدیریت کنی و حتی از قابلیتهای حرفهای Redis هم استفاده کنی.
چیزایی که Redis Insight برات روون و آسون میکنه:
میتونی دادههات (کلید-مقدار) رو خیلی راحت مرور، فیلتر و حتی به شکلهای مختلف ببینی (مثل JSON، هگز، ASCII و …)
میتونی خیلی راحت روی انواع ساختار داده مثل لیست، هش، استرینگ، ست، ست مرتب و استریم CRUD انجام بدی
جیسان(JSON) هم پشتیبانی میکنه، میتونی مستقیم با دادههای ساختاریافته کار کنی
آموزشهای تعاملی داره که نشون میده چطور از JSON استفاده کنی، جستجوهای قوی انجام بدی و حتی برای پروژههای AI مثل سرچ برداری ازش کمک بگیری
خودش پیشنهادهایی برای بهتر شدن کارایی و مصرف حافظه بهت میده و این پیشنهادها بسته به کاری که میکنی تغییر میکنن
پروفایلر(Profiler) داره که همهی دستوراتی که میفرستی رو لحظهای بررسی میکنه
ا SlowLog هم داره تا ببینی چه چیزایی تو Redis کند اجرا شدن
سیستم Pub/Sub هم پشتیبانی میکنه؛ یعنی میتونی تو کانالها عضو شی و پیام رد و بدل کنی
قابلیت حذف گروهی کلیدها رو هم داره (وقتی با فیلتر دنبال یه سری کلید خاص میگردی)
ا Workbench یه خط فرمان باحال داره با تکمیل خودکار و نمایش گرافیکی دادهها
حتی میتونی نمایش گرافیکی نتایج سرچ و ایندکسها رو ببینی و اگه بخوای، پلاگین خودت رو هم برای نمایش دادهها بسازی
https://github.com/RedisInsight/RedisInsight
#redis
@Syntax_fa
یه ابزار گرافیکی خوشساخت و راحت برای Redis هست که باهاش میتونی خیلی راحت دیتابیست رو ببینی، مدیریت کنی و حتی از قابلیتهای حرفهای Redis هم استفاده کنی.
چیزایی که Redis Insight برات روون و آسون میکنه:
میتونی دادههات (کلید-مقدار) رو خیلی راحت مرور، فیلتر و حتی به شکلهای مختلف ببینی (مثل JSON، هگز، ASCII و …)
میتونی خیلی راحت روی انواع ساختار داده مثل لیست، هش، استرینگ، ست، ست مرتب و استریم CRUD انجام بدی
جیسان(JSON) هم پشتیبانی میکنه، میتونی مستقیم با دادههای ساختاریافته کار کنی
آموزشهای تعاملی داره که نشون میده چطور از JSON استفاده کنی، جستجوهای قوی انجام بدی و حتی برای پروژههای AI مثل سرچ برداری ازش کمک بگیری
خودش پیشنهادهایی برای بهتر شدن کارایی و مصرف حافظه بهت میده و این پیشنهادها بسته به کاری که میکنی تغییر میکنن
پروفایلر(Profiler) داره که همهی دستوراتی که میفرستی رو لحظهای بررسی میکنه
ا SlowLog هم داره تا ببینی چه چیزایی تو Redis کند اجرا شدن
سیستم Pub/Sub هم پشتیبانی میکنه؛ یعنی میتونی تو کانالها عضو شی و پیام رد و بدل کنی
قابلیت حذف گروهی کلیدها رو هم داره (وقتی با فیلتر دنبال یه سری کلید خاص میگردی)
ا Workbench یه خط فرمان باحال داره با تکمیل خودکار و نمایش گرافیکی دادهها
حتی میتونی نمایش گرافیکی نتایج سرچ و ایندکسها رو ببینی و اگه بخوای، پلاگین خودت رو هم برای نمایش دادهها بسازی
https://github.com/RedisInsight/RedisInsight
#redis
@Syntax_fa
❤8👍2
برای حذف کامل ادیتور zed تو لینوکس اینکارو کنید:
هیچ اثری ازش باقی نمیمونه انگار که هیچوقت سمتش نرفتید
#fun
@Syntax_fa
~/.local/bin/zed zed --uninstall
rm -rf ~/.local/zed.app
rm ~/.local/bin/zed
rm ~/.local/share/applications/dev.zed.Zed.desktop
rm -rf ~/.local/share/zed
rm -rf ~/.config/zed
rm -rf ~/.cache/zed
هیچ اثری ازش باقی نمیمونه انگار که هیچوقت سمتش نرفتید
#fun
@Syntax_fa
😁20👍4👎1
Syntax | سینتکس
ساختار پروژه های جنگویی تیم سینتکسفا در پروژههای نرمافزاری، به ویژه پروژههای بزرگ، ساختار مناسب کد نقش کلیدی داره. ساختار پروژه تأثیر مستقیمی به خوانایی، قابلیت نگهداری، و مقیاسپذیری کد داره. در جنگو، یک ساختار مناسب تضمین میکنه که تیم توسعهدهنده…
آپدیت شد:
احراز هویت JWT
مدیریت خطای پیشرفته
داکرایز
پردازش غیرهمزمان با استفاده از celery و تسک های زمانبندی با استفاده از celery beat
مستندسازی API با استفاده از drf-spectacular
هوکهای
با GitHub Actions یه CI ساده راه افتاده که روی Pull Requestها تستها و Lintها رو اجرا میکنه
#django
@Syntax_fa
احراز هویت JWT
مدیریت خطای پیشرفته
داکرایز
پردازش غیرهمزمان با استفاده از celery و تسک های زمانبندی با استفاده از celery beat
مستندسازی API با استفاده از drf-spectacular
هوکهای
pre-commit از قبل تنظیم شدن؛ شامل pylint برای بررسی کیفیت کد و gitlint برای استاندارد کردن پیامهای کامیت.با GitHub Actions یه CI ساده راه افتاده که روی Pull Requestها تستها و Lintها رو اجرا میکنه
#django
@Syntax_fa
👍6❤1
مامانم گفت کیس کامپیوترتو دادم به همسایهمون چون "فقط خاک میخورد". دارم میرم خونه اگه منظورش سرورم باشه... امیدوارم که اشتباه شده باشه.
#fun
@Syntax_fa
#fun
@Syntax_fa
😁49❤3
توضیح ساده مفهوم Anti-Corruption Layer (ACL):
فرض کن یه سیستم خیلی تمیز و مرتب ساختی، که از UILD برای IDها استفاده میکنه. حالا یه روز سرویسهای دیگهای میان که میخوان به سیستم تو وصل بشن. مثلاً یه اپلیکیشن که از INT برای user_id استفاده میکنه یا یکی دیگه که UUID استفاده میکنه.
حالا اگه تو مستقیماً اون INT یا UUID رو وارد سیستم خودت کنی، داری فساد رو وارد دنیای تمیزت میکنی، این میشه corruption.
Anti-Corruption Layer
یه لایه محافظه که جلوی این آلودگی رو میگیره. یعنی وقتی یه سرویس خارجی با مدل دیتا خودش با تو حرف میزنه، ACL میاد اون رو تبدیل میکنه به مدل خودت.
مثال از سرویس نوتیفیکیشن:
تو سرویس نوتیفیکیشن قراره از user_id توی بخشهای مختلف استفاده شه. ولی به این دلیل که سرویسهای خارجی ممکنه IDها با تایپ های مختلفی بفرستن (INT UUID و...)، نباید این تنوع رو بیاری داخل سرویست.
پس چی کار میشه کرد؟
1. اول چک میکنی که externalUserID ارسالی ULID هست یا نه.
2. اگه نیست، میره تو کش cache یا دیتابیس دنبال اینکه آیا قبلا برای این external ID یه ULID تولید شده یا نه.
3. اگه نیست، خودش یه ULID جدید میسازه و نگه میداره.
4. از اون به بعد، هر بار external ID بیاد، همون ULID رو برمیگردونه و تو هر کجا که به user_id نیاز داریم ازش استفاده میکنیم.
یعنی:
* سیستمهای خارجی میتونن هر جور ID بفرستن.
* سرویس نوتیفیکیشن همیشه با یک مدل استاندارد ULID کار میکنه.
مزایا:
* ساختار داخلی سیستم از تغییر و شلختگی سرویسهای خارجی مصون میمونه.
* یکپارچگی و استاندارد بودن دیتای داخلی حفظ میشه.
#anti_corruption_layer #ACL
@Syntax_fa
فرض کن یه سیستم خیلی تمیز و مرتب ساختی، که از UILD برای IDها استفاده میکنه. حالا یه روز سرویسهای دیگهای میان که میخوان به سیستم تو وصل بشن. مثلاً یه اپلیکیشن که از INT برای user_id استفاده میکنه یا یکی دیگه که UUID استفاده میکنه.
حالا اگه تو مستقیماً اون INT یا UUID رو وارد سیستم خودت کنی، داری فساد رو وارد دنیای تمیزت میکنی، این میشه corruption.
Anti-Corruption Layer
یه لایه محافظه که جلوی این آلودگی رو میگیره. یعنی وقتی یه سرویس خارجی با مدل دیتا خودش با تو حرف میزنه، ACL میاد اون رو تبدیل میکنه به مدل خودت.
مثال از سرویس نوتیفیکیشن:
تو سرویس نوتیفیکیشن قراره از user_id توی بخشهای مختلف استفاده شه. ولی به این دلیل که سرویسهای خارجی ممکنه IDها با تایپ های مختلفی بفرستن (INT UUID و...)، نباید این تنوع رو بیاری داخل سرویست.
پس چی کار میشه کرد؟
1. اول چک میکنی که externalUserID ارسالی ULID هست یا نه.
2. اگه نیست، میره تو کش cache یا دیتابیس دنبال اینکه آیا قبلا برای این external ID یه ULID تولید شده یا نه.
3. اگه نیست، خودش یه ULID جدید میسازه و نگه میداره.
4. از اون به بعد، هر بار external ID بیاد، همون ULID رو برمیگردونه و تو هر کجا که به user_id نیاز داریم ازش استفاده میکنیم.
یعنی:
* سیستمهای خارجی میتونن هر جور ID بفرستن.
* سرویس نوتیفیکیشن همیشه با یک مدل استاندارد ULID کار میکنه.
مزایا:
* ساختار داخلی سیستم از تغییر و شلختگی سرویسهای خارجی مصون میمونه.
* یکپارچگی و استاندارد بودن دیتای داخلی حفظ میشه.
#anti_corruption_layer #ACL
@Syntax_fa
👍9❤2👏2