Forwarded from LinFAQ (Reza)
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
#fzf #bash
خب بریم 5 تا فانکشن bash ردیف شده با fzf که به کار میاد ببینیم
این بخش رو به bashrc اضافه کنید تا با Ctrl r بتونید هیستوری بش رو ببینید یا...:
لیست فایل ها (از جمله فایل های پنهان به جز فایل های داخل .git)
ترکیب cd و fzf(از جمله دایرکتوری های پنهان به جز .git):
لیست فایل ها و باز کردنشون با fzf:
دستورات جهت حذف و نصب پکیج ها:
@LinAcademy | @LinFAQ
دستهبندی: #آموزشی #کاربردی
#fzf #bash
خب بریم 5 تا فانکشن bash ردیف شده با fzf که به کار میاد ببینیم
این بخش رو به bashrc اضافه کنید تا با Ctrl r بتونید هیستوری بش رو ببینید یا...:
eval "$(fzf --bash)"
لیست فایل ها (از جمله فایل های پنهان به جز فایل های داخل .git)
function ff() {
vim "$(fd --type f --hidden --exclude .git | fzf --preview 'cat {}' --select-1 --exit-0)"
}ترکیب cd و fzf(از جمله دایرکتوری های پنهان به جز .git):
function fcd() {
cd "$(fd --type d --hidden --exclude .git | fzf --preview 'ls -la {}' --select-1 --exit-0)" || exit
}لیست فایل ها و باز کردنشون با fzf:
open() {
xdg-open "$(fd --type f | fzf)"
}دستورات جهت حذف و نصب پکیج ها:
( البته در pacman )
install() {
pacman -Slq | fzf --multi --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S
}
uninstall() {
pacman -Qq | fzf --multi --preview 'pacman -Qi {1}' | xargs -ro sudo pacman -Rns
}Source
@LinAcademy | @LinFAQ
Forwarded from Gopher Academy
🔵 عنوان مقاله
Tokens for LLMs: Byte Pair Encoding in Go
🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی نقش توکنها در مدلهای زبانی بزرگ (LLMs) میپردازد و تاکید دارد که فهم نحوه کدگذاری و کدگشایی این توکنها به درک بهتر عملکرد LLMها کمک میکند. توکنها واحدهای اساسی دادهها هستند که در LLMها برای مدلسازی زبان استفاده میشوند. این مقاله اشارهای دارد به فرایند کاری LLMها که شامل دو مرحله عمدهی کدگذاری و کدگشایی است. در مرحله کدگذاری، توکنها به نمایشهای عددی تبدیل میشوند که قابلیت پردازش توسط مدل را دارند، و در مرحله کدگشایی، خروجیهای مدل به زبان طبیعی تبدیل میشوند که این امر امکان تولید متن به زبانی که برای انسانها قابل فهم است را فراهم میآورد. این فرآیندها بنیادی برای توانایی LLMها در درک و تولید زبان به شکلی که ما آن را تجربه میکنیم هستند. از این رو، فهم این توکنها و چگونگی کارکرد آنها کلیدی است تا بتوان به طور کامل قابلیتها و محدودیتهای مدلهای زبانی بزرگ را فهمید.
🟣لینک مقاله:
https://eli.thegreenplace.net/2024/tokens-for-llms-byte-pair-encoding-in-go/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Tokens for LLMs: Byte Pair Encoding in Go
🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی نقش توکنها در مدلهای زبانی بزرگ (LLMs) میپردازد و تاکید دارد که فهم نحوه کدگذاری و کدگشایی این توکنها به درک بهتر عملکرد LLMها کمک میکند. توکنها واحدهای اساسی دادهها هستند که در LLMها برای مدلسازی زبان استفاده میشوند. این مقاله اشارهای دارد به فرایند کاری LLMها که شامل دو مرحله عمدهی کدگذاری و کدگشایی است. در مرحله کدگذاری، توکنها به نمایشهای عددی تبدیل میشوند که قابلیت پردازش توسط مدل را دارند، و در مرحله کدگشایی، خروجیهای مدل به زبان طبیعی تبدیل میشوند که این امر امکان تولید متن به زبانی که برای انسانها قابل فهم است را فراهم میآورد. این فرآیندها بنیادی برای توانایی LLMها در درک و تولید زبان به شکلی که ما آن را تجربه میکنیم هستند. از این رو، فهم این توکنها و چگونگی کارکرد آنها کلیدی است تا بتوان به طور کامل قابلیتها و محدودیتهای مدلهای زبانی بزرگ را فهمید.
🟣لینک مقاله:
https://eli.thegreenplace.net/2024/tokens-for-llms-byte-pair-encoding-in-go/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Linuxor ?
چطور بدون سابقه کاری، رزومهای قوی بسازیم؟
مهم ترین چیزی که توی رزومه شما میشه پیدا کرد سابقه کاریتون توی جا های دیگس،
اما درست کردن سابقه برای شروع خیلی سخته، چون برای درست کردنش خودش نیاز به سابقه داره.
راحت ترین چیزی که میمونه گرفتن مدرک ها و سرتیفیکیت هاست، این ریپو اومده یه لیستی از کورس ها و سرتیفیکیت های رایگان که اتفاقا معتبر هم هستن رو جمع آوری کرده
https://github.com/cloudcommunity/Free-Certifications
مثلا بجای اینکه ساده بنویسید Network بلدم بنویسید فلان سرتیفیکیت Network رو از huawei دارم، خیلی خیلی توی رزومتون بولد تر دیده میشه.
🐧 @Linuxor
مهم ترین چیزی که توی رزومه شما میشه پیدا کرد سابقه کاریتون توی جا های دیگس،
اما درست کردن سابقه برای شروع خیلی سخته، چون برای درست کردنش خودش نیاز به سابقه داره.
راحت ترین چیزی که میمونه گرفتن مدرک ها و سرتیفیکیت هاست، این ریپو اومده یه لیستی از کورس ها و سرتیفیکیت های رایگان که اتفاقا معتبر هم هستن رو جمع آوری کرده
https://github.com/cloudcommunity/Free-Certifications
مثلا بجای اینکه ساده بنویسید Network بلدم بنویسید فلان سرتیفیکیت Network رو از huawei دارم، خیلی خیلی توی رزومتون بولد تر دیده میشه.
🐧 @Linuxor
Forwarded from Python BackendHub (Mani)
یک پست خیلییی خوب دیدم تو لینکدین حیفم اومد باهاتون به اشتراک نذارم!
لینک پست
تو پست بعدی ترجمه شدشو با chatgpt میذارم
@PyBackendHub
لینک پست
تو پست بعدی ترجمه شدشو با chatgpt میذارم
@PyBackendHub
Forwarded from Python BackendHub (Mani)
مدیرها، بیخیال تیمهاتون بشید! لازم نیست کارمندها رو مثل بچههایی که نیاز به مراقبت دائم دارن، کنترل کنید.
اونا نباید برای داشتن زندگی شخصی بیرون از کار معذرتخواهی کنن.
به تیمتون اعتماد کنید که کار رو تحویل بدن. اینجوری یه محیط مثبت و مولد میسازید که همه میتونن توش رشد کنن.
استخدام افراد درست فقط شروع کاره. جادوی واقعی زمانی اتفاق میافته که بهشون اعتماد کنید و قدرت بدید.
اعتماد یعنی اینکه به تیمتون آزادی بدید که کارشون رو بدون دخالت مستقیم شما مدیریت کنن. این نشون میده که بهشون بهعنوان آدمهای بالغی که میتونن هم زندگی کاری و هم زندگی شخصیشون رو مدیریت کنن، احترام میذارید.
این فقط محدود به مرخصی و تعطیلات نیست.
بحث اینه که یه فرهنگ بسازید که آدمها توش احساس کنن میتونن کارشون رو به بهترین شکل ممکن انجام بدن - چه توی دفتر باشن، چه از راه دور کار کنن، یا حتی وسط روز کارهای شخصیشون رو انجام بدن.
تمرکز باید روی نتیجه باشه، نه “micromanagement”.
Micromanagement خلاقیت رو میکشه و انگیزه رو نابود میکنه.
اعتماد، برعکس، آدمها رو به بهترین عملکردشون تشویق میکنه.
وقتی به تیمتون مالکیت کارهاشون رو میدید و بهشون فضا میدید که موفق بشن، میبینید که چطور رشد میکنن.
چطور این فرهنگ رو بسازیم:
- افراد درست رو استخدام کنید: مطمئن شید که مهارت دارن و با ارزشهای شرکت همسو هستن.
- به تیمتون اعتماد کنید: بذارید مالک کارهاشون باشن و خودتون رو از دخالت مستقیم دور نگه دارید.
- آزادی بدید: بهشون اجازه بدید تصمیم بگیرن و ابزارهای لازم رو فراهم کنید.
- رهبران قوی تربیت کنید: مدیرها رو طوری آموزش بدید که بتونن تیمها رو حمایت کنن بدون اینکه کنترل کنن.
- ارتباطات رو باز نگه دارید: فضایی ایجاد کنید که آدمها احساس امنیت کنن و بتونن ایدهها و فیدبکهاشون رو راحت به اشتراک بذارن.
- موفقیتها رو جشن بگیرید: دستاوردها رو بشناسید و انگیزه رو بالا نگه دارید.
- از تعادل بین کار و زندگی حمایت کنید: به تعادل سالم تشویق کنید تا رفاه و بهرهوری بهتر بشه.
♻️ Neha K Puri
@PyBackendHub
اونا نباید برای داشتن زندگی شخصی بیرون از کار معذرتخواهی کنن.
به تیمتون اعتماد کنید که کار رو تحویل بدن. اینجوری یه محیط مثبت و مولد میسازید که همه میتونن توش رشد کنن.
استخدام افراد درست فقط شروع کاره. جادوی واقعی زمانی اتفاق میافته که بهشون اعتماد کنید و قدرت بدید.
اعتماد یعنی اینکه به تیمتون آزادی بدید که کارشون رو بدون دخالت مستقیم شما مدیریت کنن. این نشون میده که بهشون بهعنوان آدمهای بالغی که میتونن هم زندگی کاری و هم زندگی شخصیشون رو مدیریت کنن، احترام میذارید.
این فقط محدود به مرخصی و تعطیلات نیست.
بحث اینه که یه فرهنگ بسازید که آدمها توش احساس کنن میتونن کارشون رو به بهترین شکل ممکن انجام بدن - چه توی دفتر باشن، چه از راه دور کار کنن، یا حتی وسط روز کارهای شخصیشون رو انجام بدن.
تمرکز باید روی نتیجه باشه، نه “micromanagement”.
Micromanagement خلاقیت رو میکشه و انگیزه رو نابود میکنه.
اعتماد، برعکس، آدمها رو به بهترین عملکردشون تشویق میکنه.
وقتی به تیمتون مالکیت کارهاشون رو میدید و بهشون فضا میدید که موفق بشن، میبینید که چطور رشد میکنن.
چطور این فرهنگ رو بسازیم:
- افراد درست رو استخدام کنید: مطمئن شید که مهارت دارن و با ارزشهای شرکت همسو هستن.
- به تیمتون اعتماد کنید: بذارید مالک کارهاشون باشن و خودتون رو از دخالت مستقیم دور نگه دارید.
- آزادی بدید: بهشون اجازه بدید تصمیم بگیرن و ابزارهای لازم رو فراهم کنید.
- رهبران قوی تربیت کنید: مدیرها رو طوری آموزش بدید که بتونن تیمها رو حمایت کنن بدون اینکه کنترل کنن.
- ارتباطات رو باز نگه دارید: فضایی ایجاد کنید که آدمها احساس امنیت کنن و بتونن ایدهها و فیدبکهاشون رو راحت به اشتراک بذارن.
- موفقیتها رو جشن بگیرید: دستاوردها رو بشناسید و انگیزه رو بالا نگه دارید.
- از تعادل بین کار و زندگی حمایت کنید: به تعادل سالم تشویق کنید تا رفاه و بهرهوری بهتر بشه.
♻️ Neha K Puri
@PyBackendHub
Forwarded from کانال اطلاعرسانی توزیع پارچ
Forwarded from LearnPOV | لرن پی او وی
●● دلایل ایجاد overflow در صفحات html ●●
🔸 احتمالا برای شما هم پیش اومده که در حال کار بر روی یک صفحه وب هستید و ناگهان متوجه اسکرول افقی در صفحه میشوید، توی این مطلب دلایل بروز این مشکل رو بررسی میکنیم
1️⃣ استفاده از واحدهای ثابت مانند px برای عرض
اگر از واحدهای ثابت مثل px برای عرض یک عنصر استفاده کنید و این عرض بیشتر از اندازه ویوپورت باشد، اسکرول ایجاد میشود.
راه حل ها :
2️⃣ عدم تنظیم صحیح box-sizing
به صورت پیشفرض، ویژگی padding و border به عرض یک عنصر اضافه میشوند، که ممکن است باعث شود عرض کلی عنصر از مقدار مورد انتظار بیشتر شود و اسکرول ایجاد کند و راه حل برطرف کردنش استفاده از box-sizing: border-box هستش.
راه حل :
3️⃣ استفاده از position: absolute یا position: fixed
اگر عنصری با استفاده از position: absolute یا position: fixed از ویوپورت خارج شود، میتواند اسکرول افقی ایجاد کند.
مثال :
4️⃣ عدم مدیریت صحیح کلمات بلند یا لینکها
متنها یا لینکهای بسیار بلند که در یک خط قرار میگیرند (مانند لینکهای طولانی یا کلمات بدون فاصله) میتوانند عرض صفحه را بشکنند و اسکرول افقی ایجاد کنند.
راه حل :
✅ راهحل جامع
برای جلوگیری از اسکرول افقی در کل صفحه میتونید از ویژگی overflow-x: hidden استفاده کنید، اگر نیازی به اسکرول افقی ندارید.
نحوه استفاده :
💎 توی این مطلب سعی کردم تمامی مواردی که میتونن باعث اسکرول افقی در صفحه بشن رو بهتون توضیح بدم
🔸 احتمالا برای شما هم پیش اومده که در حال کار بر روی یک صفحه وب هستید و ناگهان متوجه اسکرول افقی در صفحه میشوید، توی این مطلب دلایل بروز این مشکل رو بررسی میکنیم
1️⃣ استفاده از واحدهای ثابت مانند px برای عرض
اگر از واحدهای ثابت مثل px برای عرض یک عنصر استفاده کنید و این عرض بیشتر از اندازه ویوپورت باشد، اسکرول ایجاد میشود.
راه حل ها :
● ریسپانسیو کردن المنت ها و جلوگیری از بروز این مشکل در سایز های کوچک تر.
● استفاده از واحدهای نسبی مثل % یا vw این.
.element {
width: 100vw;
}2️⃣ عدم تنظیم صحیح box-sizing
به صورت پیشفرض، ویژگی padding و border به عرض یک عنصر اضافه میشوند، که ممکن است باعث شود عرض کلی عنصر از مقدار مورد انتظار بیشتر شود و اسکرول ایجاد کند و راه حل برطرف کردنش استفاده از box-sizing: border-box هستش.
راه حل :
* { box-sizing: border-box; }استفاده از box-sizing: border-box باعث میشود padding و border داخل عرض اصلی محاسبه شوند.
3️⃣ استفاده از position: absolute یا position: fixed
اگر عنصری با استفاده از position: absolute یا position: fixed از ویوپورت خارج شود، میتواند اسکرول افقی ایجاد کند.
مثال :
.out-of-bounds { position: absolute; left: 2000px; } 4️⃣ عدم مدیریت صحیح کلمات بلند یا لینکها
متنها یا لینکهای بسیار بلند که در یک خط قرار میگیرند (مانند لینکهای طولانی یا کلمات بدون فاصله) میتوانند عرض صفحه را بشکنند و اسکرول افقی ایجاد کنند.
راه حل :
استفاده ویژگیهای word-break و overflow-wrap باعث میشه تا مرورگر در صورت برخورد با کلمات بلند، اونها رو به صورت خودکار شکسته و در خطوط جدید قرار دهد.
.long-text {
word-break: break-all;
overflow-wrap: break-word;
}✅ راهحل جامع
برای جلوگیری از اسکرول افقی در کل صفحه میتونید از ویژگی overflow-x: hidden استفاده کنید، اگر نیازی به اسکرول افقی ندارید.
نحوه استفاده :
body { overflow-x: hidden; }این کد از ایجاد اسکرول افقی جلوگیری میکنه، حتی اگر برخی از عناصر به صورت پیشفرض از عرض ویوپورت خارج بشن.
💎 توی این مطلب سعی کردم تمامی مواردی که میتونن باعث اسکرول افقی در صفحه بشن رو بهتون توضیح بدم
اگر براتون کاربردی و مفید بود حمایت یادتون نره، برای رفقاتونم بفرستید تا استفاده کنن 🔥❤️
#️⃣ #overflow #css #webpage
🚀 @coolycode
Forwarded from DevTwitter | توییت برنامه نویسی
کمپایل کدهای C در آپدیت اخیر Bun
از الان پکیج فروش های جاوااسکریپت میتونن ادعا کنن میشه با جی اس، سیستم عامل نوشت :)
https://bun.sh/blog/compile-and-run-c-in-js
@DevTwitter | <hadi mirzaei/>
از الان پکیج فروش های جاوااسکریپت میتونن ادعا کنن میشه با جی اس، سیستم عامل نوشت :)
https://bun.sh/blog/compile-and-run-c-in-js
@DevTwitter | <hadi mirzaei/>
Forwarded from دستاوردهای یادگیری عمیق(InTec)
این بار برای تست مدل یک سری تغییرات دادم :
همونطور که قبلتر هم اشاره کردم Qwen2 جزو مدلهایی هست که من همیشه ازش استفاده میکنم؛ مخصوصا روی سیستم خودم و کنار مدلهای دیگهای که دارم (multi-model)
اینبار این مدل رو با qwen2 مقایسه کردم؛ اول روی تسکهای عادی از چندساعت قبل داشتم روی یک سورس کد
نکته دوم
توی این موارد که بیشتر سرچ و توضیح بخش از کد بود و با توجه به اینکه روی
برای مثال روی مفهوم مربوط به
البته بعد از ۲-۳ بار تکرار هم زمان پاسخ
سوالات بعدی هم این موارد بود که qwen2.5 تمام موارد رو به خوبی جواب داد:
۱- سوالاتی درمورد اتفاقات اخیر انتخابات آمریکا
۲- موضوع مربوط به انفجار پیجرها و ...
۳- سخنرانی اسنودن و خلاصه صحبتش درمورد انتخابات و انتخاب رئیس جمهور
این ۳ مورد کاملا جدید بود و میشد نحوه کارش برای استخراج اطلاعات رو تست کرد؛ متاسفانه
مشکلی که با
مشکل اصلی که با
سوالات حل ریاضی - تصویر و ... هم بهش ندادم؛ چون توی کاربردهایی نیست که استفاده میکنم ولی قطعا برنده این بخش
بعد رفتم سراغ
تقریبا تمام موارد رو بدون نیاز به گوگل کردن به جواب رسیدم؛ بهترین مورد در مورد هر ۲ مدل
شدیدا منتظر انتشار مدل
دارم به این فکر میکنم شاید باید به زودی سختافزار رو برای استفاده از مدلهای
همونطور که قبلتر هم اشاره کردم Qwen2 جزو مدلهایی هست که من همیشه ازش استفاده میکنم؛ مخصوصا روی سیستم خودم و کنار مدلهای دیگهای که دارم (multi-model)
اینبار این مدل رو با qwen2 مقایسه کردم؛ اول روی تسکهای عادی از چندساعت قبل داشتم روی یک سورس کد
Rust کار میکردم؛ البته بیشتر برای یادگیری داشتم میخوندم و این ۲ مدل رو با chatgpt مقایسه کردم؛ به همه مدلها دسترسی به اینترنت دادم برای سرچ زدن و البته برای مدلهای لوکل از duckduckgo استفاده میکردم.نکته دوم
context-length مدل رو روی همون 8K نگه داشتم.توی این موارد که بیشتر سرچ و توضیح بخش از کد بود و با توجه به اینکه روی
Rust هم آموزش دیده خیلی راحت جواب میداد؛ qwen2 جاهایی رو اشتباه میزد مخصوصا وقتی مثال نزدیک بهش توی داکیومنت یا سرچ پیدا نمیکرد. اما نسخه 2.5 موردی نبود که نشه جواب بده خیلی جالب بود که وقتی مثال خوبی هم پیدا نمیکرد بر اساس توضیحات میتونست خودش مثال هم بزنه (دسترسی به سرچ رو میبستم و ازش میخواستم مثال بزنه) مدل chatgpt هم همینکار رو میکرد اما مثالهای سختتری میزد برای مثال روی مفهوم مربوط به
lifetime ازش سوال پرسیدم اما مثالی که تحویل داد ترکیبی از lifetime, generic بود و وقتی گفتم با مفهوم دوم آشنا نیستم و مثالی بزنه که فقط lifetime توی حالت خاصی که پرسیدم رو توضیح بده؛ یک مثال ساده زد که دیگه اون قوانین lifetime رو نداشت.البته بعد از ۲-۳ بار تکرار هم زمان پاسخ
chatgpt کمتر میشد هم نتایج بهبود پیدا میکرد ولی بطور کلی من امتیاز این بخش رو به qwen2.5 میدم.سوالات بعدی هم این موارد بود که qwen2.5 تمام موارد رو به خوبی جواب داد:
۱- سوالاتی درمورد اتفاقات اخیر انتخابات آمریکا
۲- موضوع مربوط به انفجار پیجرها و ...
۳- سخنرانی اسنودن و خلاصه صحبتش درمورد انتخابات و انتخاب رئیس جمهور
این ۳ مورد کاملا جدید بود و میشد نحوه کارش برای استخراج اطلاعات رو تست کرد؛ متاسفانه
chatgpt کمی با احتیاط پاسخ میداد (یک سری سوالات جزئی دیگر هم پرسیدم که مجبورش کنم جواب دقیقتر و بیپرده بده ولی با اینکه با توجه به factها باید یک طرف رو انتخاب میکرد اینکار رو نکرد)مشکلی که با
qwen2.5 نبود و راحت تر میشد ازش جواب بر اساس دیتا گرفت (البته این مدل هم سانسور شده هست ولی به سوالات عمومی بر اساس دیتا راحتتر جواب میده)مشکل اصلی که با
qwen2.5 روی سوالات بالا داشتم کم بودن context-length بود؛ چون گزارش شده بود که مدل 32 میلیارد پارامتری عملکرد بهتری از chatgpt 4o-mini داره برای همین منم از 32b استفاده کردم بجای 7b و مجبور شدم روی 8K context بمونم.سوالات حل ریاضی - تصویر و ... هم بهش ندادم؛ چون توی کاربردهایی نیست که استفاده میکنم ولی قطعا برنده این بخش
chatgpt o1 خواهد بود بدون شک.بعد رفتم سراغ
qwen2.5-coder فعلا فقط مدل 7b منتشر شده؛ و منم مستقیم رفتم سر وقت باگهایی که توی کدهای Rust داشتم میگرفتم؛ خیلی سوالاتم سخت و پیچیده نبود شاید (چون تازهکار هستم توی Rust و نمیتونم ارزیابی کنم سطح کدها رو) و تمام موارد رو با روش ۵ مرحلهای که چندشب پیش گفتم ارزیابی کردم.تقریبا تمام موارد رو بدون نیاز به گوگل کردن به جواب رسیدم؛ بهترین مورد در مورد هر ۲ مدل
qwen2.5, qwen2.5-coder قدرتشون توی دنبال کردن دستورالعملها بود.شدیدا منتظر انتشار مدل
qwen2.5-coder 32b هستم برای استفاده روزمره.دارم به این فکر میکنم شاید باید به زودی سختافزار رو برای استفاده از مدلهای
70b آپگرید کنم 🧐Forwarded from ASafaeirad
React 19 Cheat Sheet
by Kent C. Dodds
https://res.cloudinary.com/epic-web/image/upload/v1725974609/react-19-cheat-sheet.pdf
#react
by Kent C. Dodds
https://res.cloudinary.com/epic-web/image/upload/v1725974609/react-19-cheat-sheet.pdf
#react
Forwarded from Laravel News
Fetch PHP is a Lightweight HTTP Library Inspired by JavaScript's fetch() https://laravel-news.com/fetch-php
Laravel News
Fetch PHP is a Lightweight HTTP Library Inspired by JavaScript's fetch() - Laravel News
Fetch PHP is a lightweight HTTP library inspired by JavaScript's fetch, bringing simplicity and flexibility to PHP HTTP requests.
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
دستوراتی برای مدیران سیستم لینوکس:
برای پشتیبان گیری از grub
برای بازیابی از grub
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt
https://seilany.ir
برای پشتیبان گیری از grub
sudo dd if=/dev/sd1 of=/mbr_backup.img bs=512 count=1
برای بازیابی از grub
sudo dd if=/mbr_backup.img of=/dev/sda bs=512 count=1
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt
https://seilany.ir
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
در نسخه 6.12 لینوکس، امکان نمایش کد QR در هنگام وقوع کرنل پنیک به صورت اختیاری اضافه شده است.
این ویژگی از طریق زیرساخت مدیریت خطای DRM Panic اضافه شده و در اواسط سپتامبر به هسته لینوکس اضافه خواهد شد.
این قابلیت به کاربران اجازه میدهد تا در صورت وقوع خطای “صفحه مرگ” در DRM، یک کد QR نمایش داده شود. این کد QR میتواند اطلاعات زیادی را که ممکن است در خروجی متنی ساده به سختی قابل دریافت باشد، به صورت کاربرپسندتری نمایش دهد.
این ویژگی با زبان برنامهنویسی Rust نوشته شده و برای استفاده از آن باید ساخت هسته با پشتیبانی از Rust فعال باشد. همچنین، این قابلیت توسط سوئیچ ساخت Kconfig به نام DRM_PANIC_SCREEN_QR_CODE کنترل میشود و امکان تنظیم URL پایه کد QR و نسخه کد QR برای مقدار دادههای اشکالزدایی که میتوان ذخیره کرد، وجود دارد.
——————-
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt
https://seilany.ir
این ویژگی از طریق زیرساخت مدیریت خطای DRM Panic اضافه شده و در اواسط سپتامبر به هسته لینوکس اضافه خواهد شد.
این قابلیت به کاربران اجازه میدهد تا در صورت وقوع خطای “صفحه مرگ” در DRM، یک کد QR نمایش داده شود. این کد QR میتواند اطلاعات زیادی را که ممکن است در خروجی متنی ساده به سختی قابل دریافت باشد، به صورت کاربرپسندتری نمایش دهد.
این ویژگی با زبان برنامهنویسی Rust نوشته شده و برای استفاده از آن باید ساخت هسته با پشتیبانی از Rust فعال باشد. همچنین، این قابلیت توسط سوئیچ ساخت Kconfig به نام DRM_PANIC_SCREEN_QR_CODE کنترل میشود و امکان تنظیم URL پایه کد QR و نسخه کد QR برای مقدار دادههای اشکالزدایی که میتوان ذخیره کرد، وجود دارد.
——————-
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt
https://seilany.ir
Forwarded from Ninja Learn | نینجا لرن
📕 کتاب REST API Design Rulebook
📌 فصل سوم: Interaction Design with HTTP
📍پارت: دوم
#کتاب
💎 استاتوس کدهای ریسپانس (Response Status Codes) 💎
REST API ها از قسمت Status-Line توی ریسپانس HTTP استفاده میکنن تا به کلاینتها نتیجه درخواستشون رو اعلام کنن. استاندارد RFC 2616، ساختار Status-Line رو به این شکل تعریف کرده:
HTTP حدود ۴۰ تا کد وضعیت استاندارد داره که برای بیان نتیجه درخواستهای کلاینت استفاده میشه. این کدها به ۵ دسته اصلی تقسیم میشن که توی جدول زیر توضیح دادم:
⭕️ دستهبندی کدهای وضعیت:
⭕️ قوانین استفاده از کدهای وضعیت:
⭕️ کد 200 (OK): برای موفقیت کلی
این کد معمولاً همون چیزیه که کلاینت انتظار داره ببینه. یعنی درخواست با موفقیت انجام شده و نیازی به استفاده از کد خاص دیگهای از سری ۲xx نیست. برعکس کد 204، وقتی 200 برگرده، باید یه بدنه پاسخ (response body) هم داشته باشه.
⭕️ کد 200 (OK) نباید برای اعلام خطا استفاده بشه
همیشه باید از کدهای وضعیت HTTP درست استفاده کنید. بهخصوص، نباید برای سازگار شدن با کلاینتهای سادهتر از قواعد استاندارد API صرفنظر کرد.
⭕️ کد 201 (Created): برای ایجاد موفقیتآمیز منابع جدید
هر وقت که یه API یه منبع جدید برای درخواست کلاینت ایجاد میکنه (مثلاً توی یه کالکشن یا فروشگاه)، باید از کد 201 استفاده کنه. حتی اگر منبع جدید از طریق یه عمل کنترلر ایجاد بشه، باز هم 201 کد درستی برای پاسخ هست.
⭕️ کد 202 ("Accepted") باید برای شروع موفقیتآمیز یک عملیات غیرهمزمان استفاده بشه
کد 202 یعنی درخواست کلاینت قراره به صورت غیرهمزمان (آسنکرون) پردازش بشه. این کد به کلاینت میگه که درخواستش معتبر به نظر میرسه، اما ممکنه بعداً موقع پردازش به مشکل بخوره. این کد معمولاً برای عملیاتهایی که زمان زیادی میبرن استفاده میشه.
کنترلرها میتونن 202 رو برگردونن، اما منابع دیگه نباید این کار رو بکنن.
⭕️ کد 204 ("No Content") باید زمانی استفاده بشه که بدنه پاسخ (response body) خالیه
کد 204 معمولاً وقتی استفاده میشه که API به درخواستهای PUT، POST یا DELETE پاسخ میده ولی قصد نداره که توی پاسخ، پیام یا دادهای برگردونه.
حتی در پاسخ به درخواست GET هم میشه از 204 استفاده کرد تا بگه منبع درخواستشده وجود داره، ولی چیزی برای نمایش نداره.
⭕️ کد 301 ("Moved Permanently") برای تغییر مکان دائمی منابع استفاده بشه
- کد 301 وقتی استفاده میشه که مدل منابع توی API تغییر بزرگی کرده و یه آدرس جدید برای منبع به کلاینت اختصاص داده شده. توی این حالت، آدرس جدید باید توی هدر "Location" به کلاینت اعلام بشه.
⭕️ از کد 302 ("Found") نباید استفاده بشه
کد 302 همیشه اشتباه فهمیده شده و برنامهنویسا توی پیادهسازیش اشتباه کردن. مشکل اصلی اینجاست که کلاینتها بهطور خودکار برای آدرس جدید یه درخواست GET میفرستن، حتی اگر روش اصلی درخواست چیز دیگهای بوده.
برای رفع این مشکل، توی HTTP 1.1 کدهای 303 ("See Other") و 307 ("Temporary Redirect") معرفی شدن که به جای 302 باید استفاده بشن.
⭕️ کد 303 ("See Other") باید برای ارجاع کلاینت به یه URI دیگه استفاده بشه
وقتی یه کنترلر کارش رو تموم کرده، به جای فرستادن پاسخ توی بدنهای که شاید کلاینت نمیخواد، میتونه با کد 303 یه URI جدید به کلاینت بده. این URI میتونه به یه پیام موقت یا یه منبع دائمیتر اشاره کنه.
این کد به API اجازه میده که به جای تحمیل دانلود اطلاعات به کلاینت، یه مرجع به منبع بده و کلاینت اگه بخواد میتونه با GET به URI جدید دسترسی پیدا کنه.
⭕️ کد 304 ("Not Modified") باید برای صرفهجویی در پهنای باند استفاده بشه
این کد شبیه کد 204 ("No Content") هست چون هیچ چیزی توی بدنه پاسخ نیست، اما تفاوت اصلی اینه که 204 وقتی استفاده میشه که هیچ دادهای برای فرستادن وجود نداره، ولی 304 وقتی استفاده میشه که منبع اطلاعات داره اما کلاینت قبلاً آخرین نسخهاش رو گرفته.
این کد بیشتر توی درخواستهای HTTP شرطی (conditional requests) کاربرد داره.
@ninja_learn_ir
📌 فصل سوم: Interaction Design with HTTP
📍پارت: دوم
#کتاب
💎 استاتوس کدهای ریسپانس (Response Status Codes) 💎
REST API ها از قسمت Status-Line توی ریسپانس HTTP استفاده میکنن تا به کلاینتها نتیجه درخواستشون رو اعلام کنن. استاندارد RFC 2616، ساختار Status-Line رو به این شکل تعریف کرده:
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
HTTP حدود ۴۰ تا کد وضعیت استاندارد داره که برای بیان نتیجه درخواستهای کلاینت استفاده میشه. این کدها به ۵ دسته اصلی تقسیم میشن که توی جدول زیر توضیح دادم:
⭕️ دستهبندی کدهای وضعیت:
1. 1xx: اطلاعاتی – اطلاعاتی در مورد سطح پروتکل انتقال میده.
2. 2xx: موفقیتآمیز – درخواست کلاینت با موفقیت قبول شده.
3. 3xx: تغییر مسیر – کلاینت باید یه کار اضافی انجام بده تا درخواست کامل بشه.
4. 4xx: خطای کلاینت – خطاهای این دسته مربوط به اشتباهات کلاینت هست.
5. 5xx: خطای سرور – سرور مسئولیت این خطاها رو قبول میکنه.
⭕️ قوانین استفاده از کدهای وضعیت:
⭕️ کد 200 (OK): برای موفقیت کلی
این کد معمولاً همون چیزیه که کلاینت انتظار داره ببینه. یعنی درخواست با موفقیت انجام شده و نیازی به استفاده از کد خاص دیگهای از سری ۲xx نیست. برعکس کد 204، وقتی 200 برگرده، باید یه بدنه پاسخ (response body) هم داشته باشه.
⭕️ کد 200 (OK) نباید برای اعلام خطا استفاده بشه
همیشه باید از کدهای وضعیت HTTP درست استفاده کنید. بهخصوص، نباید برای سازگار شدن با کلاینتهای سادهتر از قواعد استاندارد API صرفنظر کرد.
⭕️ کد 201 (Created): برای ایجاد موفقیتآمیز منابع جدید
هر وقت که یه API یه منبع جدید برای درخواست کلاینت ایجاد میکنه (مثلاً توی یه کالکشن یا فروشگاه)، باید از کد 201 استفاده کنه. حتی اگر منبع جدید از طریق یه عمل کنترلر ایجاد بشه، باز هم 201 کد درستی برای پاسخ هست.
⭕️ کد 202 ("Accepted") باید برای شروع موفقیتآمیز یک عملیات غیرهمزمان استفاده بشه
کد 202 یعنی درخواست کلاینت قراره به صورت غیرهمزمان (آسنکرون) پردازش بشه. این کد به کلاینت میگه که درخواستش معتبر به نظر میرسه، اما ممکنه بعداً موقع پردازش به مشکل بخوره. این کد معمولاً برای عملیاتهایی که زمان زیادی میبرن استفاده میشه.
کنترلرها میتونن 202 رو برگردونن، اما منابع دیگه نباید این کار رو بکنن.
⭕️ کد 204 ("No Content") باید زمانی استفاده بشه که بدنه پاسخ (response body) خالیه
کد 204 معمولاً وقتی استفاده میشه که API به درخواستهای PUT، POST یا DELETE پاسخ میده ولی قصد نداره که توی پاسخ، پیام یا دادهای برگردونه.
حتی در پاسخ به درخواست GET هم میشه از 204 استفاده کرد تا بگه منبع درخواستشده وجود داره، ولی چیزی برای نمایش نداره.
⭕️ کد 301 ("Moved Permanently") برای تغییر مکان دائمی منابع استفاده بشه
- کد 301 وقتی استفاده میشه که مدل منابع توی API تغییر بزرگی کرده و یه آدرس جدید برای منبع به کلاینت اختصاص داده شده. توی این حالت، آدرس جدید باید توی هدر "Location" به کلاینت اعلام بشه.
⭕️ از کد 302 ("Found") نباید استفاده بشه
کد 302 همیشه اشتباه فهمیده شده و برنامهنویسا توی پیادهسازیش اشتباه کردن. مشکل اصلی اینجاست که کلاینتها بهطور خودکار برای آدرس جدید یه درخواست GET میفرستن، حتی اگر روش اصلی درخواست چیز دیگهای بوده.
برای رفع این مشکل، توی HTTP 1.1 کدهای 303 ("See Other") و 307 ("Temporary Redirect") معرفی شدن که به جای 302 باید استفاده بشن.
⭕️ کد 303 ("See Other") باید برای ارجاع کلاینت به یه URI دیگه استفاده بشه
وقتی یه کنترلر کارش رو تموم کرده، به جای فرستادن پاسخ توی بدنهای که شاید کلاینت نمیخواد، میتونه با کد 303 یه URI جدید به کلاینت بده. این URI میتونه به یه پیام موقت یا یه منبع دائمیتر اشاره کنه.
این کد به API اجازه میده که به جای تحمیل دانلود اطلاعات به کلاینت، یه مرجع به منبع بده و کلاینت اگه بخواد میتونه با GET به URI جدید دسترسی پیدا کنه.
⭕️ کد 304 ("Not Modified") باید برای صرفهجویی در پهنای باند استفاده بشه
این کد شبیه کد 204 ("No Content") هست چون هیچ چیزی توی بدنه پاسخ نیست، اما تفاوت اصلی اینه که 204 وقتی استفاده میشه که هیچ دادهای برای فرستادن وجود نداره، ولی 304 وقتی استفاده میشه که منبع اطلاعات داره اما کلاینت قبلاً آخرین نسخهاش رو گرفته.
این کد بیشتر توی درخواستهای HTTP شرطی (conditional requests) کاربرد داره.
@ninja_learn_ir
Forwarded from Ninja Learn | نینجا لرن
⭕️ کد 307 ("Temporary Redirect") برای تغییر موقتی مکان درخواست کلاینت استفاده بشه
- HTTP/1.1 کد 307 رو معرفی کرد تا کاربرد درست کد 302 ("Found") رو مشخص کنه. وقتی کد 307 برگرده، یعنی API قراره درخواست رو پردازش نکنه و کلاینت باید درخواستش رو به یه URI دیگه که توی هدر "Location" داده شده، بفرسته.
- این کد معمولاً برای اختصاص یه آدرس موقت به درخواست منبع استفاده میشه. مثلاً میشه درخواست رو به یه سرور دیگه انتقال داد.
⭕️ کد 400 ("Bad Request") برای اعلام شکست عمومی درخواست کلاینت استفاده بشه
کد 400 یه خطای کلی سمت کلاینت هست و زمانی استفاده میشه که هیچ کد دیگهای از سری 4xx مناسب نباشه.
⭕️ کد 401 ("Unauthorized") باید زمانی استفاده بشه که مشکلی با اعتبارسنجی کلاینت وجود داره
این کد یعنی کلاینت سعی کرده به یه منبع محافظتشده دسترسی پیدا کنه ولی اعتبارنامه مناسب ارائه نداده. ممکنه اعتبارنامهها اشتباه باشن یا اصلاً وجود نداشته باشن.
⭕️ کد 403 ("Forbidden") باید زمانی استفاده بشه که دسترسی به منبع غیرممکنه، فارغ از وضعیت اعتبارسنجی
- این کد یعنی درخواست کلاینت درسته ولی API اجازه انجامش رو نمیده. این موضوع ربطی به مشکل اعتبارنامهها نداره (اون مورد 401 هست).
- APIهای REST از 403 برای مدیریت سطح دسترسیها استفاده میکنن. مثلاً ممکنه یه کلاینت اجازه دسترسی به بعضی منابع رو داشته باشه ولی نه به همه. اگه کلاینت سعی کنه خارج از محدوده مجازش به منبعی دسترسی پیدا کنه، API باید با 403 پاسخ بده.
⭕️ کد 404 ("Not Found") باید زمانی استفاده بشه که URI کلاینت به منبعی مرتبط نمیشه
کد 404 یعنی API نمیتونه URI درخواستشده رو به منبعی متصل کنه.
⭕️ کد 405 ("Method Not Allowed") باید زمانی استفاده بشه که روش HTTP پشتیبانی نمیشه
- API با کد 405 پاسخ میده تا به کلاینت بگه که از روشی استفاده کرده که برای اون منبع مجاز نیست. مثلاً یه منبع فقط قابل خواندن ممکنه فقط GET و HEAD رو پشتیبانی کنه، ولی یه کنترلر ممکنه GET و POST رو مجاز بدونه اما PUT یا DELETE رو نه.
- پاسخ 405 باید شامل هدر "Allow" باشه که روشهای مجاز برای اون منبع رو لیست کنه. مثلاً:
⭕️ کد 406 ("Not Acceptable") باید زمانی استفاده بشه که نوع دادهای که کلاینت درخواست داده قابل سرویسدهی نیست
- کد 406 یعنی API نمیتونه نوع مدیا (media type) درخواستی کلاینت رو ایجاد کنه. مثلاً اگه کلاینت درخواست داده به فرمت application/xml بده و API فقط با application/json کار کنه، کد 406 برمیگرده.
⭕️ کد 409 ("Conflict") باید زمانی استفاده بشه که درخواست کلاینت باعث نقض وضعیت منبع بشه
- کد 409 به کلاینت میگه که درخواستش باعث شده منبع API توی حالت ناسازگار یا غیرممکن قرار بگیره. مثلاً اگه کلاینت بخواد یه منبع پرشده رو حذف کنه و اون منبع هنوز داده داره، ممکنه API با 409 پاسخ بده.
⭕️ کد 412 ("Precondition Failed") باید برای پشتیبانی از عملیاتهای شرطی استفاده بشه
- این کد یعنی کلاینت یه سری شرایط رو توی هدر درخواستش مشخص کرده و به API گفته که فقط اگه اون شرایط برقرار باشه درخواستش رو انجام بده. اگه شرایط محقق نشه، API با کد 412 پاسخ میده.
⭕️ کد 415 ("Unsupported Media Type") باید زمانی استفاده بشه که نوع مدیا در payload درخواست قابل پردازش نباشه
- این کد یعنی API نمیتونه نوع مدیایی که کلاینت فرستاده رو پردازش کنه. مثلاً اگه کلاینت دادهها رو به فرمت application/xml بفرسته ولی API فقط با application/json کار کنه، کد 415 برگردونده میشه.
⭕️ کد 500 ("Internal Server Error") باید برای اعلام مشکل داخلی API استفاده بشه
- کد 500 یه خطای عمومی API هست که بیشتر فریمورکهای وب خودکار این کد رو برمیگردونن وقتی که درخواست کلاینت باعث ایجاد یه استثنا توی کد بشه.
- این خطا تقصیر کلاینت نیست، پس کلاینت میتونه همون درخواست رو دوباره امتحان کنه و امید داشته باشه که نتیجه متفاوتی بگیره.
@ninja_learn_ir
- HTTP/1.1 کد 307 رو معرفی کرد تا کاربرد درست کد 302 ("Found") رو مشخص کنه. وقتی کد 307 برگرده، یعنی API قراره درخواست رو پردازش نکنه و کلاینت باید درخواستش رو به یه URI دیگه که توی هدر "Location" داده شده، بفرسته.
- این کد معمولاً برای اختصاص یه آدرس موقت به درخواست منبع استفاده میشه. مثلاً میشه درخواست رو به یه سرور دیگه انتقال داد.
⭕️ کد 400 ("Bad Request") برای اعلام شکست عمومی درخواست کلاینت استفاده بشه
کد 400 یه خطای کلی سمت کلاینت هست و زمانی استفاده میشه که هیچ کد دیگهای از سری 4xx مناسب نباشه.
⭕️ کد 401 ("Unauthorized") باید زمانی استفاده بشه که مشکلی با اعتبارسنجی کلاینت وجود داره
این کد یعنی کلاینت سعی کرده به یه منبع محافظتشده دسترسی پیدا کنه ولی اعتبارنامه مناسب ارائه نداده. ممکنه اعتبارنامهها اشتباه باشن یا اصلاً وجود نداشته باشن.
⭕️ کد 403 ("Forbidden") باید زمانی استفاده بشه که دسترسی به منبع غیرممکنه، فارغ از وضعیت اعتبارسنجی
- این کد یعنی درخواست کلاینت درسته ولی API اجازه انجامش رو نمیده. این موضوع ربطی به مشکل اعتبارنامهها نداره (اون مورد 401 هست).
- APIهای REST از 403 برای مدیریت سطح دسترسیها استفاده میکنن. مثلاً ممکنه یه کلاینت اجازه دسترسی به بعضی منابع رو داشته باشه ولی نه به همه. اگه کلاینت سعی کنه خارج از محدوده مجازش به منبعی دسترسی پیدا کنه، API باید با 403 پاسخ بده.
⭕️ کد 404 ("Not Found") باید زمانی استفاده بشه که URI کلاینت به منبعی مرتبط نمیشه
کد 404 یعنی API نمیتونه URI درخواستشده رو به منبعی متصل کنه.
⭕️ کد 405 ("Method Not Allowed") باید زمانی استفاده بشه که روش HTTP پشتیبانی نمیشه
- API با کد 405 پاسخ میده تا به کلاینت بگه که از روشی استفاده کرده که برای اون منبع مجاز نیست. مثلاً یه منبع فقط قابل خواندن ممکنه فقط GET و HEAD رو پشتیبانی کنه، ولی یه کنترلر ممکنه GET و POST رو مجاز بدونه اما PUT یا DELETE رو نه.
- پاسخ 405 باید شامل هدر "Allow" باشه که روشهای مجاز برای اون منبع رو لیست کنه. مثلاً:
Allow: GET, POST
⭕️ کد 406 ("Not Acceptable") باید زمانی استفاده بشه که نوع دادهای که کلاینت درخواست داده قابل سرویسدهی نیست
- کد 406 یعنی API نمیتونه نوع مدیا (media type) درخواستی کلاینت رو ایجاد کنه. مثلاً اگه کلاینت درخواست داده به فرمت application/xml بده و API فقط با application/json کار کنه، کد 406 برمیگرده.
⭕️ کد 409 ("Conflict") باید زمانی استفاده بشه که درخواست کلاینت باعث نقض وضعیت منبع بشه
- کد 409 به کلاینت میگه که درخواستش باعث شده منبع API توی حالت ناسازگار یا غیرممکن قرار بگیره. مثلاً اگه کلاینت بخواد یه منبع پرشده رو حذف کنه و اون منبع هنوز داده داره، ممکنه API با 409 پاسخ بده.
⭕️ کد 412 ("Precondition Failed") باید برای پشتیبانی از عملیاتهای شرطی استفاده بشه
- این کد یعنی کلاینت یه سری شرایط رو توی هدر درخواستش مشخص کرده و به API گفته که فقط اگه اون شرایط برقرار باشه درخواستش رو انجام بده. اگه شرایط محقق نشه، API با کد 412 پاسخ میده.
⭕️ کد 415 ("Unsupported Media Type") باید زمانی استفاده بشه که نوع مدیا در payload درخواست قابل پردازش نباشه
- این کد یعنی API نمیتونه نوع مدیایی که کلاینت فرستاده رو پردازش کنه. مثلاً اگه کلاینت دادهها رو به فرمت application/xml بفرسته ولی API فقط با application/json کار کنه، کد 415 برگردونده میشه.
⭕️ کد 500 ("Internal Server Error") باید برای اعلام مشکل داخلی API استفاده بشه
- کد 500 یه خطای عمومی API هست که بیشتر فریمورکهای وب خودکار این کد رو برمیگردونن وقتی که درخواست کلاینت باعث ایجاد یه استثنا توی کد بشه.
- این خطا تقصیر کلاینت نیست، پس کلاینت میتونه همون درخواست رو دوباره امتحان کنه و امید داشته باشه که نتیجه متفاوتی بگیره.
@ninja_learn_ir
Forwarded from DevTwitter | توییت برنامه نویسی
یه بازی خیلی ساده تحت وب ساختم که بهت اسکرین شات بازیهای مختلف رو نمایش میده و باید عنوان بازی رو حدس بزنی.
هنوز کامل نیست. یعنی فقط ۲۰ تا بازی رو پوشش میده و دسته بندی ها کارکرد ندارن.
اگه دوست داشتی تست بزن.
دم شما گرم.
bardialatifi.github.io/Guessing-Game/
@DevTwitter | <Bear The Yara/>
هنوز کامل نیست. یعنی فقط ۲۰ تا بازی رو پوشش میده و دسته بندی ها کارکرد ندارن.
اگه دوست داشتی تست بزن.
دم شما گرم.
bardialatifi.github.io/Guessing-Game/
@DevTwitter | <Bear The Yara/>
Forwarded from DevAcademy
اون روزهایی که تازه داشتم React یاد میگرفتم خیلی سر درگم بودم و دنبال منابع خوب میگشتم!
به مرور از جاهای مختلف به یک سری newsletterهای مشتی دسترسی پیدا کردم و الان هر هفته کلی مقاله جذاب و جدید به دستم میرسه که باعث پیشرفت سریعترم میشن.
حالا که دارم Vue.js رو یاد میگیرم، میخوام این گنجینه رو به شما انتقال بدم. یه عالمه نیوزلتر خوب که مطمئنم بهتون کمک میکنه. میتونید برید موضوع هر newsletter رو ببینید و هرکدوم رو که دوست داشتید subscribe کنین.
بعضی از newsletterهای جذابی که دارم:
React Digest: یه گنجینهی واقعی از مقالات
https://reactdigest.net/
Kent C. Dodds: این آقا یه نابغه است و بلاگش پر از نکات کاربردیه.
https://lnkd.in/dVR4sTH9
This Week in React: هر هفته خلاصهای از مهمترین اخبار React رو براتون میفرسته.
https://lnkd.in/dny5aBdU
Large Apps: برای ساختن اپلیکیشنهای بزرگ، این newsletter عالیه.
https://lnkd.in/dArS4VK3
The T-Shaped Dev: اگه میخواید توسعهدهندهی همه کاره بشید، این newsletter رو از دست ندید.
https://lnkd.in/dzipuC9r
Daily.dev: یه پلتفرم جامع برای developerهاست که هر روز مقالههای جدید داره.
https://app.daily.dev/
Craft Better Software: برای اونایی که به تست نویسی علاقه دارن، این newsletter فوقالعادست.
https://lnkd.in/dPseSv4V
Cassidoo: یه newsletter فان و خندهدار با کلی نکتهی کاربردی.
https://lnkd.in/dBGGgfFW
System Design: اگه به معماری سیستم علاقهمندید، این newsletter براتون جذابه.
https://lnkd.in/d6gZXeqX
The Hustling Engineer: برای مهندسهایی که میخوان حرفه خودشون رو ارتقا بدن.
https://lnkd.in/dPWEsFgS
https://www.linkedin.com/posts/reihaneh-sadat-shokouhi-78b22a233_%D8%B3%D9%84%D8%A7%D9%85-%D8%A8%DA%86%D9%87%D9%87%D8%A7-%D8%A7%D9%85%D8%B1%D9%88%D8%B2-%D8%A8%D8%A7-%D8%AF%D8%B3%D8%AA-%D9%BE%D8%B1-%D8%A7%D9%88%D9%85%D8%AF%D9%85-%D8%A7%D9%88%D9%86-%D8%B1%D9%88%D8%B2%D9%87%D8%A7%DB%8C%DB%8C-activity-7241657143618088964-57Wm?utm_source=share&utm_medium=member_desktop
💻@DevAcaademy
💬@DevAcademyGroup
به مرور از جاهای مختلف به یک سری newsletterهای مشتی دسترسی پیدا کردم و الان هر هفته کلی مقاله جذاب و جدید به دستم میرسه که باعث پیشرفت سریعترم میشن.
حالا که دارم Vue.js رو یاد میگیرم، میخوام این گنجینه رو به شما انتقال بدم. یه عالمه نیوزلتر خوب که مطمئنم بهتون کمک میکنه. میتونید برید موضوع هر newsletter رو ببینید و هرکدوم رو که دوست داشتید subscribe کنین.
بعضی از newsletterهای جذابی که دارم:
React Digest: یه گنجینهی واقعی از مقالات
https://reactdigest.net/
Kent C. Dodds: این آقا یه نابغه است و بلاگش پر از نکات کاربردیه.
https://lnkd.in/dVR4sTH9
This Week in React: هر هفته خلاصهای از مهمترین اخبار React رو براتون میفرسته.
https://lnkd.in/dny5aBdU
Large Apps: برای ساختن اپلیکیشنهای بزرگ، این newsletter عالیه.
https://lnkd.in/dArS4VK3
The T-Shaped Dev: اگه میخواید توسعهدهندهی همه کاره بشید، این newsletter رو از دست ندید.
https://lnkd.in/dzipuC9r
Daily.dev: یه پلتفرم جامع برای developerهاست که هر روز مقالههای جدید داره.
https://app.daily.dev/
Craft Better Software: برای اونایی که به تست نویسی علاقه دارن، این newsletter فوقالعادست.
https://lnkd.in/dPseSv4V
Cassidoo: یه newsletter فان و خندهدار با کلی نکتهی کاربردی.
https://lnkd.in/dBGGgfFW
System Design: اگه به معماری سیستم علاقهمندید، این newsletter براتون جذابه.
https://lnkd.in/d6gZXeqX
The Hustling Engineer: برای مهندسهایی که میخوان حرفه خودشون رو ارتقا بدن.
https://lnkd.in/dPWEsFgS
https://www.linkedin.com/posts/reihaneh-sadat-shokouhi-78b22a233_%D8%B3%D9%84%D8%A7%D9%85-%D8%A8%DA%86%D9%87%D9%87%D8%A7-%D8%A7%D9%85%D8%B1%D9%88%D8%B2-%D8%A8%D8%A7-%D8%AF%D8%B3%D8%AA-%D9%BE%D8%B1-%D8%A7%D9%88%D9%85%D8%AF%D9%85-%D8%A7%D9%88%D9%86-%D8%B1%D9%88%D8%B2%D9%87%D8%A7%DB%8C%DB%8C-activity-7241657143618088964-57Wm?utm_source=share&utm_medium=member_desktop
💻@DevAcaademy
💬@DevAcademyGroup
reactdigest.net
React Digest: Email Newsletter
React Digest is a free curated weekly newsletter for React developers that want to improve their skills and keep up to date with JavaScript.
Forwarded from Anophel | آنوفل
آشنایی با Error Handling در Go : بررسی عمیق
🔺 مدیریت خطا (Error Handling) یک جنبه حیاتی در هر زبان برنامه نویسی است و Go نیز از این قاعده مستثنی نیست. در این مقاله از سری مقالات گولنگ در آنوفل، به بررسی اشتباهات معمولی که حتی توسعه دهندگان باتجربه مرتکب می شوند اختصاص یافته است، ما بر Error Hand...
🌐 : آشنایی با Error Handling در Go : بررسی عمیق
🔺 مدیریت خطا (Error Handling) یک جنبه حیاتی در هر زبان برنامه نویسی است و Go نیز از این قاعده مستثنی نیست. در این مقاله از سری مقالات گولنگ در آنوفل، به بررسی اشتباهات معمولی که حتی توسعه دهندگان باتجربه مرتکب می شوند اختصاص یافته است، ما بر Error Hand...
🌐 : آشنایی با Error Handling در Go : بررسی عمیق
Forwarded from Web Application Security
یه آسیب پذیری ظاهرا بی ارزش =
کد زیر رو در نظر بگیرین:
سناریو اینه که این فایل مربوط به یکی از فایل های پنل ادمینه که طبیعتا باید فقط ادمین دسترسی داشته باشه، از داخل sessionی که برای هر کاربر ست کرده چک میکنه ببینه اگه سطح دسترسی ای که به این کاربر داده ادمین نبود redirect کنه به صفحه home.
مشکلی که تو این کد هست اینه که درسته redirect میکنه ولی جلوی اجرا شدن کد رو نمیگیره بعد redirect و باعث میشه مابقی کد هم اجرا بشن بعد redirect. ولی چه تهدیدی داره؟
1⃣ افشا شدن response بعد از redirect :
اگه با دستور زیر به اون مسیر curl بزنیم میتونیم کل ریسپانس رو ببینیم:
نکته : ما فقط میتونیم response رو ببینیم نه سورس کد اپلیکیشن. ممکنه برنامه نویس از توابعی استفاده کرده باشه که اطلاعات مهمی رو روی صفحه چاپ کنه مثل echo. برای درک بهتر کد زیر رو در نظر بگیرید :
2⃣ تست آسیب پذیری های مختلف!
کد زیر رو در نظر بگیرین:
آسیب پذیری ای که این کد داره Command Injectionهست. ولی نکته ای که مهمه اینه که این صفحه چون redirect میکنه خیلیا اینجا parameter fuzz انجام نمیدن و آسیب پذیری های این صفحه فقط با دسترسی ادمین قابل دیدن و تست کردنه، ولی بخاطر اشتباه برنامه نویس مهاجم میتونه parameter fuzz انجام بده و آسیب پذیری های مختلفی رو تست کنه که بسته به logic برنامه ممکنه آسیب پذیری های مختلفی رو داشته باشه. اگه باگ هانترین حتما به این نکته توجه داشته باشین موقع مواجه شدن با redirect ها.
نمونه پیلود با curl برای تست آسیب پذیری :
نکته مهم : کد های نوشته شده با php رو اگه تو سیستمتون اجرا کنین به درستی کار نمیکنن چون باید خودتون session کاربر رو ست کنین.
⁉️روش جلوگیری چیه؟
بعد redirect باید جلوی اجرا شدن ادامه کد رو بگیریم که میتونیم با توابع زیر انجام بدیم:
اسم آسیب پذیری :
Execution After Redirect = EAR
#EAR
#parameter_fuzz
کد زیر رو در نظر بگیرین:
<?php
session_start();
if($_SESSION['is_admin'] != true)
{
header("Location: /home.php");
}
// Application code is here
?>
سناریو اینه که این فایل مربوط به یکی از فایل های پنل ادمینه که طبیعتا باید فقط ادمین دسترسی داشته باشه، از داخل sessionی که برای هر کاربر ست کرده چک میکنه ببینه اگه سطح دسترسی ای که به این کاربر داده ادمین نبود redirect کنه به صفحه home.
مشکلی که تو این کد هست اینه که درسته redirect میکنه ولی جلوی اجرا شدن کد رو نمیگیره بعد redirect و باعث میشه مابقی کد هم اجرا بشن بعد redirect. ولی چه تهدیدی داره؟
1⃣ افشا شدن response بعد از redirect :
اگه با دستور زیر به اون مسیر curl بزنیم میتونیم کل ریسپانس رو ببینیم:
curl https://target.com/admin_panel.php
نکته : ما فقط میتونیم response رو ببینیم نه سورس کد اپلیکیشن. ممکنه برنامه نویس از توابعی استفاده کرده باشه که اطلاعات مهمی رو روی صفحه چاپ کنه مثل echo. برای درک بهتر کد زیر رو در نظر بگیرید :
<?php
if($_SESSION['is_admin'] != true)
{
hedaer("Location : /home.php");
}
echo "username : adm2ish";
echo "password : pa19ehw";
?>
2⃣ تست آسیب پذیری های مختلف!
کد زیر رو در نظر بگیرین:
<?php
session_start();
if($_SESSION['is_admin'] != true)
{
header("Location: /home.php");
}
if (isset($_GET['cmd']) && !empty($_GET['cmd'])) {
$admin_input = $_GET['cmd'];
echo system("ping $admin_input");
} else {
echo "No command provided.";
}
?>
آسیب پذیری ای که این کد داره Command Injectionهست. ولی نکته ای که مهمه اینه که این صفحه چون redirect میکنه خیلیا اینجا parameter fuzz انجام نمیدن و آسیب پذیری های این صفحه فقط با دسترسی ادمین قابل دیدن و تست کردنه، ولی بخاطر اشتباه برنامه نویس مهاجم میتونه parameter fuzz انجام بده و آسیب پذیری های مختلفی رو تست کنه که بسته به logic برنامه ممکنه آسیب پذیری های مختلفی رو داشته باشه. اگه باگ هانترین حتما به این نکته توجه داشته باشین موقع مواجه شدن با redirect ها.
نمونه پیلود با curl برای تست آسیب پذیری :
curl "https://target.com/admin_panel.php?cmd=1.1.1.1|whoami"
curl "https://target.com/admin_panel.php?cmd=1.1.1.1||whoami||"
curl "https://target.com/admin_panel.php?cmd=1.1.1.1;whoami"
نکته مهم : کد های نوشته شده با php رو اگه تو سیستمتون اجرا کنین به درستی کار نمیکنن چون باید خودتون session کاربر رو ست کنین.
⁉️روش جلوگیری چیه؟
بعد redirect باید جلوی اجرا شدن ادامه کد رو بگیریم که میتونیم با توابع زیر انجام بدیم:
<?php
exit()
die()
?>
اسم آسیب پذیری :
Execution After Redirect = EAR
#EAR
#parameter_fuzz
Forwarded from 🎄 یک برنامه نویس تنبل (Raymond Dev)
Forwarded from Go Casts 🚀
سلام، پیشنهاد می کنم حتما پادکست «تفکر شفاف» بی پلاس رو گوش بدید. هم به مهارت های نرم شما کمک میکنه که ارتباط موثرتری با همکاراتون داشته باشید، هم بهتون کمک میکنه تحلیلگر و معمار و مهندس بهتری باشید، چون مهندسی همه ش فکر کردن و تصمیم گرفتنه، پس بهتر بستر مناسبی برای تفکر خودتون آماده کنید.
https://bpluspodcast.com/podcast/seventh-season/%D8%AA%D9%81%DA%A9%D8%B1-%D8%B4%D9%81%D8%A7%D9%81/
@gocasts
https://bpluspodcast.com/podcast/seventh-season/%D8%AA%D9%81%DA%A9%D8%B1-%D8%B4%D9%81%D8%A7%D9%81/
@gocasts