Penguins🐧
شل یه برنامه است! (۴/۱۰) یکی از جذابترین و قدرتمندترین ویژگیهای شل، مفهومی به اسم Pipeline هستش. توی فلسفه یونیکس یه قانون معروف هست که میگه یه برنامه ساده ولی خوب بنویسید که فقط یک کار انجام بده ولی همون رو درست و به بهترین نحو ممکن انجام بده. و شل اینجا…
شل یه برنامه است! (۵/۱۰)
وقتی Enter میزنیم دقیقاً چه چیزی به شل میرسه؟
تا اینجا از ترمینال و خود شل گفتیم. حالا برسیم به لحظهای که واقعاً یه دستور مینویسیم و Enter میزنیم. از دید کاربر، انگار فقط یه خط متن برای شل فرستاده میشه، ولی پشت صحنه چند لایه درگیرند.
اول، ترمینال ورودی صفحهکلید را میگیره. این ورودی در نهایت از طریق TTY به برنامهای میرسه که در پیشزمینه(FG) اوه ترمینال قرار داره. اگر شل در FG باشد، این متن به شل میرسه. یعنی شل مستقیماً «کیبورد» را نمیخونه؛ بلکه از FD استاندارد ورودی خودش میخونه که معمولاً به همان ترمینال وصله.
پس وقتی مینویسیم:
چیزی که شل دریافت میکنه اول فقط یک رشته متنیه. هنوز هیچ برنامهای اجرا نشده، هیچ echo ای هم صدا زده نشده. شل باید اول این خط را بخونه بفهم، تکهتکه کنه و تصمیم بگیره اصلاً منظورمون چه بوده. اینجا شل فقط یک launcher نیست؛ یک مفسر زبان هم هست.
وقتی Enter میزنیم دقیقاً چه چیزی به شل میرسه؟
تا اینجا از ترمینال و خود شل گفتیم. حالا برسیم به لحظهای که واقعاً یه دستور مینویسیم و Enter میزنیم. از دید کاربر، انگار فقط یه خط متن برای شل فرستاده میشه، ولی پشت صحنه چند لایه درگیرند.
اول، ترمینال ورودی صفحهکلید را میگیره. این ورودی در نهایت از طریق TTY به برنامهای میرسه که در پیشزمینه(FG) اوه ترمینال قرار داره. اگر شل در FG باشد، این متن به شل میرسه. یعنی شل مستقیماً «کیبورد» را نمیخونه؛ بلکه از FD استاندارد ورودی خودش میخونه که معمولاً به همان ترمینال وصله.
پس وقتی مینویسیم:
% echo myfile
چیزی که شل دریافت میکنه اول فقط یک رشته متنیه. هنوز هیچ برنامهای اجرا نشده، هیچ echo ای هم صدا زده نشده. شل باید اول این خط را بخونه بفهم، تکهتکه کنه و تصمیم بگیره اصلاً منظورمون چه بوده. اینجا شل فقط یک launcher نیست؛ یک مفسر زبان هم هست.
❤8
Penguins🐧
شل یه برنامه است! (۵/۱۰) وقتی Enter میزنیم دقیقاً چه چیزی به شل میرسه؟ تا اینجا از ترمینال و خود شل گفتیم. حالا برسیم به لحظهای که واقعاً یه دستور مینویسیم و Enter میزنیم. از دید کاربر، انگار فقط یه خط متن برای شل فرستاده میشه، ولی پشت صحنه چند لایه…
شل یه برنامه است! (۶/۱۰)
شل اول حرف ما را parse میکنه، بعد از اون اجرا.
خیلیها ناخودآگاه فکر میکنن که شل فقط فاصلهها را نگاه میکنه و بعد برنامه را اجرا میکنه، ولی در واقع شل قبل از اجرا، روی خط فرمانمون یک مرحلهی کامل parsing و expansion انجام میده.
مثلاً این دستورها ظاهراً شبیه همان، ولی برای شل یکی نیستن:
در اینجا شل باید بفهمه کجا quote باز شده، کجا بسته شده، چه چیزی باید به عنوان متغیر expand شه. کدوم
این تفاوت خیلی مهمه. چون بسیاری از رفتارهای shell از همینجا شکل میگیره.
شل اول حرف ما را parse میکنه، بعد از اون اجرا.
خیلیها ناخودآگاه فکر میکنن که شل فقط فاصلهها را نگاه میکنه و بعد برنامه را اجرا میکنه، ولی در واقع شل قبل از اجرا، روی خط فرمانمون یک مرحلهی کامل parsing و expansion انجام میده.
مثلاً این دستورها ظاهراً شبیه همان، ولی برای شل یکی نیستن:
% echo $HOME
% echo "$HOME"
% echo '$HOME'
% echo *.txt
در اینجا شل باید بفهمه کجا quote باز شده، کجا بسته شده، چه چیزی باید به عنوان متغیر expand شه. کدوم
* باید به اسم فایلها تبدیل شن و کدوم بخش باید عیناً به برنامه تحویل داده بشه. یعنی چیزی که برنامه نهایی میبینه، الزاماً همون چیزی نیست که ما تایپ کردیم.این تفاوت خیلی مهمه. چون بسیاری از رفتارهای shell از همینجا شکل میگیره.
echo هیچ درکی از $HOME یا *.txt نداره؛ این خود شله که قبل از اجرا، این موارد رو به چیزی که باید باشن تبدیل میکنه. ودر عمل شل اول از متن خاممون یک چیز با «معنا» میسازه و بعدش تازه اونو اجرا میکنه.❤7
Penguins🐧
شل یه برنامه است! (۶/۱۰) شل اول حرف ما را parse میکنه، بعد از اون اجرا. خیلیها ناخودآگاه فکر میکنن که شل فقط فاصلهها را نگاه میکنه و بعد برنامه را اجرا میکنه، ولی در واقع شل قبل از اجرا، روی خط فرمانمون یک مرحلهی کامل parsing و expansion انجام میده.…
شل یه برنامه است! (۷/۱۰)
خب، تا اینجا دیدیم که شل چطور دستورات ما رو پیدا میکنه. اما بعد از پیدا کردنش چه اتفاقی میافته؟ چطوری اون برنامه رو اجرا میکنه؟
اینجاست که با دو تا از مهمترین مفاهیم سیستمعاملهای شبهیونیکس آشنا میشیم: fork و exec.
وقتی شما دستوری مثل ls یا هر برنامه دیگهای رو تایپ میکنید و اینتر میزنید، شل خودش رو کپی میکنه! به این کار میگن fork کردن. یعنی یه پروسه جدید (فرزند) از روی خودش میسازه. بعد، این پروسه فرزند با استفاده از سیستمی به اسم exec خودش رو با برنامه مورد نظر شما (مثلاً همون
توی این کد چه اتفاقی افتاد؟
۱. تابع
۲. شرط
۳. تابع
اما یه نکته ظریف وجود داره! همه دستورات اینطوری اجرا نمیشن. یه سری دستورات هستن که اصلاً فایل باینری خارجی ندارن و توی خود دل شل ساخته شدن. به اینها میگن Shell Builtins.
مثلاً دستور
خب، تا اینجا دیدیم که شل چطور دستورات ما رو پیدا میکنه. اما بعد از پیدا کردنش چه اتفاقی میافته؟ چطوری اون برنامه رو اجرا میکنه؟
اینجاست که با دو تا از مهمترین مفاهیم سیستمعاملهای شبهیونیکس آشنا میشیم: fork و exec.
وقتی شما دستوری مثل ls یا هر برنامه دیگهای رو تایپ میکنید و اینتر میزنید، شل خودش رو کپی میکنه! به این کار میگن fork کردن. یعنی یه پروسه جدید (فرزند) از روی خودش میسازه. بعد، این پروسه فرزند با استفاده از سیستمی به اسم exec خودش رو با برنامه مورد نظر شما (مثلاً همون
ls) جایگزین میکنه. در تمام این مدت، شل اصلی (والد) منتظر میمونه تا کار فرزند تموم بشه و بعد دوباره کنترل ترمینال رو به دست میگیره و منتظر دستور بعدی شما میمونه. برای اینکه قشنگ درک کنیم چه اتفاقی میافته، بیاید با هم یک کد ساده به زبان C بنویسیم که دقیقاً همین کار رو انجام میده:#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(void) {
pid_t pid = fork();
if (pid < 0) {
// Fork failed
perror("fork");
return 1;
} else if (pid == 0) {
// Child process: replace image with ls
execlp("ls", "ls", "-l", NULL);
// Exit if exec fails
exit(1);
} else {
// Parent process: wait for child to finish
wait(NULL);
printf("Parent: Child finished.\n");
}
return 0;
}
توی این کد چه اتفاقی افتاد؟
۱. تابع
fork کل فضای حافظه شل رو کپی میکنه (یا به اصطلاح ازش فورک میگیره)۲. شرط
pid == 0 مشخص میکنه کدوم بخش مربوط به فرزنده. توی این بخش، تابع execlp تمام حافظهی فرزند رو پاک میکنه و برنامه ls رو توش بارگذاری میکنه. برای همین برنامه ls اجرا میشه.۳. تابع
wait توی بخش والد باعث میشه شل اصلی (والد) تا زمانی که فرزند تموم نشده، دست از پا خطا نکنه و منتظر بمونه. دقیقاً برای همین وقتی شما ls رو میزنید، شل شما به اصطلاح «فریز» میشه تا لیست فایلها چاپ بشه و بعد دوباره افسار پرامپت به شما برمیگره.اما یه نکته ظریف وجود داره! همه دستورات اینطوری اجرا نمیشن. یه سری دستورات هستن که اصلاً فایل باینری خارجی ندارن و توی خود دل شل ساخته شدن. به اینها میگن Shell Builtins.
مثلاً دستور
cd رو در نظر بگیرین. چرا cd باید داخل خود شل باشه؟ چون اگه cd یه برنامه خارجی بود، طبق چیزی که گفتیم شل براش یه پروسس فرزند میساخت، پوشه کار اون فرزند عوض میشد، کارش تموم میشد و از بین میرفت؛ ولی پوشه کار شل اصلی شما هیچ تغییری نمیکرد! برای همین دستوراتی مثل cd یا pwd و alias مستقیماً توسط خود شل اجرا میشن و نیازی به رفتن سراغ دیسک و متغیر PATH ندارن.❤7👍1
Penguins🐧
شل یه برنامه است! (۷/۱۰) خب، تا اینجا دیدیم که شل چطور دستورات ما رو پیدا میکنه. اما بعد از پیدا کردنش چه اتفاقی میافته؟ چطوری اون برنامه رو اجرا میکنه؟ اینجاست که با دو تا از مهمترین مفاهیم سیستمعاملهای شبهیونیکس آشنا میشیم: fork و exec. وقتی شما…
شل یه برنامه است! (۸/۱۰)
شل فقط اجراکنندهی برنامهها نیست؛ خودش یک زبان هم هست
تا اینجا بیشتر درباره این حرف زدیم که شل چطور دستور ما رو میگیره و برنامهها را اجرا میکنه. ولی یه نکته مهم هم این وسط هست: همونطور که یکم پیش گفتیم، شل فقط یک launcher نیست. شل خودش یک زبان هم هست. یعنی وقتی توی شل چیزی مینویسیم همیشه قرار نیست فقط اسم یک برنامه و چند آرگومان باشه. خیلی وقتها داریم از امکانات خود زبان shell استفاده میکنیم. مثلاً این مثالها را ببینید:
یا مثلاً:
اینجا دیگه ماجرا فقط «اجرای یک برنامه» نیست. شل متغیر نگه میداره، شرط بررسی میکنه، حلقه اجرا میکنه و بر اساس syntax خودش تصمیم میگیره چیکار باید بکنه. برای همین shell script عملاً یک زبان اسکریپتنویسیه و نه فقط یک محیط برای زدن commandهای پراکنده. شما میتونید با استفاده از اون، چندین برنامه را کنار هم بگذارید، روی خروجیشان تصمیم بگیرید، شرط و حلقه بنویسید، و کارهای تکراری را خودکار کنید. شاید همینجاست که shell از یک command runner ساده جدا تمیز میده. چون shell فقط واسطه شما و برنامهها نیست؛ یک لایهی منطقی هم روی آنها میذاره و یعنی هم میتونه برنامه رو اجرا کند و هم میتواند به اجرای اونا ساختار بده.
شل فقط اجراکنندهی برنامهها نیست؛ خودش یک زبان هم هست
تا اینجا بیشتر درباره این حرف زدیم که شل چطور دستور ما رو میگیره و برنامهها را اجرا میکنه. ولی یه نکته مهم هم این وسط هست: همونطور که یکم پیش گفتیم، شل فقط یک launcher نیست. شل خودش یک زبان هم هست. یعنی وقتی توی شل چیزی مینویسیم همیشه قرار نیست فقط اسم یک برنامه و چند آرگومان باشه. خیلی وقتها داریم از امکانات خود زبان shell استفاده میکنیم. مثلاً این مثالها را ببینید:
name="Ali"
echo "$name"
if [ -f /etc/passwd ]; then
echo "exists"
fi
یا مثلاً:
for file in *.txt; do
echo "$file"
done
اینجا دیگه ماجرا فقط «اجرای یک برنامه» نیست. شل متغیر نگه میداره، شرط بررسی میکنه، حلقه اجرا میکنه و بر اساس syntax خودش تصمیم میگیره چیکار باید بکنه. برای همین shell script عملاً یک زبان اسکریپتنویسیه و نه فقط یک محیط برای زدن commandهای پراکنده. شما میتونید با استفاده از اون، چندین برنامه را کنار هم بگذارید، روی خروجیشان تصمیم بگیرید، شرط و حلقه بنویسید، و کارهای تکراری را خودکار کنید. شاید همینجاست که shell از یک command runner ساده جدا تمیز میده. چون shell فقط واسطه شما و برنامهها نیست؛ یک لایهی منطقی هم روی آنها میذاره و یعنی هم میتونه برنامه رو اجرا کند و هم میتواند به اجرای اونا ساختار بده.
❤7
Penguins🐧
شل یه برنامه است! (۸/۱۰) شل فقط اجراکنندهی برنامهها نیست؛ خودش یک زبان هم هست تا اینجا بیشتر درباره این حرف زدیم که شل چطور دستور ما رو میگیره و برنامهها را اجرا میکنه. ولی یه نکته مهم هم این وسط هست: همونطور که یکم پیش گفتیم، شل فقط یک launcher…
شل یه برنامه است! (۹/۱۰)
بعد از اجرا هم کار شل تمام نمیشود
ممکنه فکر کنیم شل فقط دستورات رو اجرا میکنه و بعدش می ره پی کارش. ولی در عمل، بعد از اجرا هم هنوز نقش مهمی داره.
اگر برنامه توی FG اجرا شده باشه، شل معمولاً صبر میکنه تا اون برنامه کارش تموم بشه. برای همینه که وقتی یه دستور زمانبر اجرا میکنیم تا وقتی کارش تموم نشده پرامپت برنمیگرده. شل فقط موقتاً کنترل را به اون برنامه میده و خودش منتظر مونده تا به اتمام برسه.
اگر هم وسط کار
وقتی هم برنامهای را با
پس شل فقط چیزی نیست که دستورات رو «اجرا» کنه؛ شل مدتی تا بعد از اجرا هم درگیر ماجرا میمونه و اجرای برنامهها را زیر نظر داره.
بعد از اجرا هم کار شل تمام نمیشود
ممکنه فکر کنیم شل فقط دستورات رو اجرا میکنه و بعدش می ره پی کارش. ولی در عمل، بعد از اجرا هم هنوز نقش مهمی داره.
اگر برنامه توی FG اجرا شده باشه، شل معمولاً صبر میکنه تا اون برنامه کارش تموم بشه. برای همینه که وقتی یه دستور زمانبر اجرا میکنیم تا وقتی کارش تموم نشده پرامپت برنمیگرده. شل فقط موقتاً کنترل را به اون برنامه میده و خودش منتظر مونده تا به اتمام برسه.
اگر هم وسط کار
Ctrl+C یا Ctrl+Z بزنیم، باز این شل هستش که وظیفه مدیریت اوضاع رو داره. باید بدونه کدوم پروسه در حال اجراست، کدوم job متوقف شده، کدوم یکی رفته توی پسزمینه و کِی باید دوباره کنترل ترمینال را پس بگیره.وقتی هم برنامهای را با
& در BG اجرا می کنیم، شل همچنان باید حواسش به اون باشه یعنی هم باید پرامپت را به شما برگردونه و هم وضعیت jobهای قبلی را نگه دارد، هم اگر لازم شد بهمون خبر بده که فلان job کارش تموم شده یا به دلیلی متوقف شده است.پس شل فقط چیزی نیست که دستورات رو «اجرا» کنه؛ شل مدتی تا بعد از اجرا هم درگیر ماجرا میمونه و اجرای برنامهها را زیر نظر داره.
❤7
Penguins🐧
شل یه برنامه است! (۹/۱۰) بعد از اجرا هم کار شل تمام نمیشود ممکنه فکر کنیم شل فقط دستورات رو اجرا میکنه و بعدش می ره پی کارش. ولی در عمل، بعد از اجرا هم هنوز نقش مهمی داره. اگر برنامه توی FG اجرا شده باشه، شل معمولاً صبر میکنه تا اون برنامه کارش تموم بشه.…
شل یه برنامه است! (۱۰/۱۰)
شل چرا بعد از این همه سال هنوز زنده است؟
اگر از اول این مسیر را نگاه کنیم، از ترمینال و TTY شروع کردیم؛ جایی که ورودی ما وارد سیستم میشه. بعد رسیدیم به شل؛ برنامهای که این ورودی را میخونه parse میکنه، معنیاش را میفهمه و تصمیم میگیره چه چیزی باید اجرا شود.
بعد دیدیم شل فقط دستورات را اجرا نمیکنه. بعضی چیزا رو خودش انجام میده و بعضی چیزها را به شکل یک برنامه جدا اجرا میکنه و حتی در خیلی از مواقع خودش با استفاده از متغیر، شرط، حلقه و دهها چیز دیگه، کار یه زبان برنامهنویسی واقعی رو انجام میده.
از طرفی کار شل با اجرای دستور هم تمام نمیشه. باید منتظر پروسهها بمونه، وضعیتشون رو مدیریت کنه و کنترل ترمینال را بین کاربر و برنامهها جابهجا کنده؛ یعنی چیزی که از بیرون فقط «یک خط دستور» به نظر میرسه، در واقع حاصل همکاری چند لایه مختلفه: از ترمینال، TTY، کرنل، شل گرفته تا پروسهها.
و شاید دلیل اینکه بعد از سالها مردم همچنان از شلها استفاده میکنن این باشه که شل فقط یک ابزار قدیمی نیست؛ یک راه ساده، مستقیم و قدرتمند برای کار با سیستمه. هم به ما اجازه میدهد برنامهها رو اجرا کنیم و هم میذاره اونا رو ترکیب کنیم و برایشون منطق بنویسیم. شاید به همین خاطر است که با وجود تمام محیطهای گرافیکی مدرن، هنوز هم خیلی وقتها دقیقترین راه حرف زدن با سیستم، همون خط فرمانی باشه که دههها پیش شکل گرفت.
- @MainPenguins
شل چرا بعد از این همه سال هنوز زنده است؟
اگر از اول این مسیر را نگاه کنیم، از ترمینال و TTY شروع کردیم؛ جایی که ورودی ما وارد سیستم میشه. بعد رسیدیم به شل؛ برنامهای که این ورودی را میخونه parse میکنه، معنیاش را میفهمه و تصمیم میگیره چه چیزی باید اجرا شود.
بعد دیدیم شل فقط دستورات را اجرا نمیکنه. بعضی چیزا رو خودش انجام میده و بعضی چیزها را به شکل یک برنامه جدا اجرا میکنه و حتی در خیلی از مواقع خودش با استفاده از متغیر، شرط، حلقه و دهها چیز دیگه، کار یه زبان برنامهنویسی واقعی رو انجام میده.
از طرفی کار شل با اجرای دستور هم تمام نمیشه. باید منتظر پروسهها بمونه، وضعیتشون رو مدیریت کنه و کنترل ترمینال را بین کاربر و برنامهها جابهجا کنده؛ یعنی چیزی که از بیرون فقط «یک خط دستور» به نظر میرسه، در واقع حاصل همکاری چند لایه مختلفه: از ترمینال، TTY، کرنل، شل گرفته تا پروسهها.
و شاید دلیل اینکه بعد از سالها مردم همچنان از شلها استفاده میکنن این باشه که شل فقط یک ابزار قدیمی نیست؛ یک راه ساده، مستقیم و قدرتمند برای کار با سیستمه. هم به ما اجازه میدهد برنامهها رو اجرا کنیم و هم میذاره اونا رو ترکیب کنیم و برایشون منطق بنویسیم. شاید به همین خاطر است که با وجود تمام محیطهای گرافیکی مدرن، هنوز هم خیلی وقتها دقیقترین راه حرف زدن با سیستم، همون خط فرمانی باشه که دههها پیش شکل گرفت.
- @MainPenguins
❤10👏1
صبح روشن
جزئیات بیشتری از خرابکاری در OpenMandriva منتشر شد
اطلاعات جدید نشان میدهد خرابکاری اخیر در پروژه OpenMandriva فقط به حذف چند مخزن GitHub محدود نبوده است. طبق گزارشها، یکی از مشارکتکنندگان پس از بروز اختلافات داخلی، از دسترسی مدیریتی خود سوءاستفاده کرده و علاوه بر حذف بخشی از مخازن، یک بسته خالی را هم به مخزن Cooker ارسال کرده بود. اگر این موضوع بهموقع شناسایی نمیشد، میتوانست باعث حذف یا از کار افتادن بستههای GNOME و COSMIC برای کاربران شود.
این اتفاق دوباره یادآوری میکند که امنیت پروژههای متنباز فقط به باگها و حملات خارجی محدود نمیشود؛ مدیریت دسترسیها و اعتماد به مشارکتکنندگان هم بخش مهمی از امنیت هر پروژه متنباز است.
- @MainPenguins | Source
جزئیات بیشتری از خرابکاری در OpenMandriva منتشر شد
اطلاعات جدید نشان میدهد خرابکاری اخیر در پروژه OpenMandriva فقط به حذف چند مخزن GitHub محدود نبوده است. طبق گزارشها، یکی از مشارکتکنندگان پس از بروز اختلافات داخلی، از دسترسی مدیریتی خود سوءاستفاده کرده و علاوه بر حذف بخشی از مخازن، یک بسته خالی را هم به مخزن Cooker ارسال کرده بود. اگر این موضوع بهموقع شناسایی نمیشد، میتوانست باعث حذف یا از کار افتادن بستههای GNOME و COSMIC برای کاربران شود.
تیم OpenMandriva اعلام کرده این اقدام بلافاصله شناسایی شد، مخازن در حال بازیابی هستند و بسته مخرب هم قبل از رسیدن به کاربران کنترل شده است. همچنین روند بررسی و محدود کردن دسترسیهای مدیریتی برای جلوگیری از تکرار چنین اتفاقی آغاز شده است.
این اتفاق دوباره یادآوری میکند که امنیت پروژههای متنباز فقط به باگها و حملات خارجی محدود نمیشود؛ مدیریت دسترسیها و اعتماد به مشارکتکنندگان هم بخش مهمی از امنیت هر پروژه متنباز است.
- @MainPenguins | Source
👍7❤2
Penguins🐧
سپیدهدم دلانگیز✨️ تیم Valve مشکل اجرای Diablo IV روی لینوکس و SteamOS را برطرف کرد بعد از انتشار آپدیت Season 14، بازی Diablo IV روی لینوکس و SteamOS دیگر اجرا نمیشد و کاربران Steam Deck هم با این مشکل روبهرو بودند. این باگ بهدلیل تغییرات جدید بازی به…
ظهر تابناک🔆
بلیزارد بالاخره مشکل اجرای Diablo IV روی لینوکس و SteamOS را برطرف کرد
بعد از انتشار آپدیت Season 14، بازی Diablo IV روی لینوکس، SteamOS و Steam Deck دیگر اجرا نمیشد و قبل از باز شدن پنجره بازی کرش میکرد. این مشکل باعث شد تعداد زیادی از کاربران در انجمنهای بلیزارد گزارش ثبت کنند.
- @MainPenguins | Source
بلیزارد بالاخره مشکل اجرای Diablo IV روی لینوکس و SteamOS را برطرف کرد
بعد از انتشار آپدیت Season 14، بازی Diablo IV روی لینوکس، SteamOS و Steam Deck دیگر اجرا نمیشد و قبل از باز شدن پنجره بازی کرش میکرد. این مشکل باعث شد تعداد زیادی از کاربران در انجمنهای بلیزارد گزارش ثبت کنند.
حالا بلیزارد یک Hotfix اضطراری منتشر کرده که این مشکل را برای نسخه Steam برطرف میکند و کاربران دوباره میتوانند بازی را روی لینوکس و Steam Deck اجرا کنند.این اتفاق دوباره یادآوری کرد که هرچند Proton وضعیت گیمینگ روی لینوکس را فوقالعاده کرده، اما یک آپدیت کوچک از سمت سازنده بازی هم میتواند همهچیز را از کار بیندازد؛ خوشبختانه این بار بلیزارد نسبتاً سریع واکنش نشان داد و مشکل را رفع کرد.
- @MainPenguins | Source
🔥4❤1
پسین نکو🌞
ابزار DLSS Updater 4.3.0 حالا به یک پنل کامل برای Upscalerهای Proton تبدیل شده
اگر روی لینوکس بازی میکنید، DLSS Updater دیگر فقط برای آپدیت کردن فایلهای DLSS نیست. نسخه 4.3.0 حالا به یک پنل کامل برای مدیریت DLSS، FSR 4 و XeSS در بازیهای Proton و Wine تبدیل شده است.
مهمترین قابلیتهای جدید:
اگر زیاد با Proton سر و کار دارید، این ابزار میتواند دردسر تنظیم دستی Launch Options و مدیریت نسخههای مختلف DLSS، FSR و XeSS را تا حد زیادی از بین ببرد.
- @MainPenguins | Source
ابزار DLSS Updater 4.3.0 حالا به یک پنل کامل برای Upscalerهای Proton تبدیل شده
اگر روی لینوکس بازی میکنید، DLSS Updater دیگر فقط برای آپدیت کردن فایلهای DLSS نیست. نسخه 4.3.0 حالا به یک پنل کامل برای مدیریت DLSS، FSR 4 و XeSS در بازیهای Proton و Wine تبدیل شده است.
مهمترین قابلیتهای جدید:
فعال یا غیرفعال کردن DLSS، FSR 4 و XeSS بدون نیاز به حفظ کردن متغیرهای محیطی (Environment Variables)
تشخیص خودکار نسخه Proton هر بازی و نمایش فقط گزینههای سازگار
پشتیبانی از Steam، Heroic و Lutris
امکان بهروزرسانی DLLهای Upscaler بدون دستکاری فایلهای خود بازی
پشتیبانی بهتر از کارتهای AMD، Intel و NVIDIA با رابط کاربری یکپارچه.
اگر زیاد با Proton سر و کار دارید، این ابزار میتواند دردسر تنظیم دستی Launch Options و مدیریت نسخههای مختلف DLSS، FSR و XeSS را تا حد زیادی از بین ببرد.
- @MainPenguins | Source
🔥3❤1
Penguins🐧
به نظر میرسه توسعهدهندههای COSMIC در حال Merge کردن قابلیت Frosted Blur (Frosted Glass) روی شاخه اصلی پروژه هستن و اگر همهچیز طبق برنامه پیش بره، نسخه بعدی COSMIC این افکت رو بهصورت رسمی دریافت میکنه. این تغییر فقط محدود به یک بخش نیست و Pull Requestهای…
افکت Frosted Glass بالاخره وارد COSMIC شد!
بعد از ماهها توسعه، قابلیت Frosted Glass بالاخره به شاخه اصلی COSMIC Desktop اضافه شد. این افکت ظاهر شیشهای و محو (Blur) را به پنجرهها، پنلها و اپلتها میآورد و یکی از بزرگترین تغییرات ظاهری COSMIC تا امروز محسوب میشود.
- @MainPenguins
بعد از ماهها توسعه، قابلیت Frosted Glass بالاخره به شاخه اصلی COSMIC Desktop اضافه شد. این افکت ظاهر شیشهای و محو (Blur) را به پنجرهها، پنلها و اپلتها میآورد و یکی از بزرگترین تغییرات ظاهری COSMIC تا امروز محسوب میشود.
نکته جالب اینجاست که این افکت کاملاً قابل شخصیسازی است؛ میتوانید میزان شفافیت و شدت Blur را تنظیم کنید یا اگر علاقهای ندارید، آن را بهطور کامل غیرفعال کنید. همه این قابلیتها مستقیماً از بخش تنظیمات ظاهری COSMIC قابل مدیریت هستند.
- @MainPenguins
🔥8❤2🤩1
میدونستین چند تا دستگاه هستن که میتونن لینوکس اجرا کتن؟ (ولی بهتره این کار رو نکنین)
لینوکس اونقدر انعطاف پذیره که روی دستگاههایی اجرا شده که شاید هیچوقت فکرشم نکنید.
چند نمونه جالب:
- @MainPenguins | Hub | Source
لینوکس اونقدر انعطاف پذیره که روی دستگاههایی اجرا شده که شاید هیچوقت فکرشم نکنید.
چند نمونه جالب:
موزیک پلیر ipod: برخی از ipod های سیب دهنی (apple) میتونن ipodLinux رو اجرا کنن؛ بله یه توزیع مخصوص همین موزیک پلیرها موجوده.
کنسول Nintendo DS: کنسول قدیمی Nintendo DS هم میتونین روش لینوکس نصب کنین و استفاده کنین، گفته شده که میتونین لینوکس دسکتاپ رو به راحتی روش نصب کنین و استفاده کنین (دیگه مثل کامپیوتر شخصیه)
کنسول Original Xbox: شاید باورتون نشه ولی Original Xbox هم میشه روش لینوکس نصب کرد و ازش به عنوان low-power Linux server استفاده کرد
کنسول PlayStation 3: روش به راحتی تونستن لینوکس دسکتاپ نصب کنن و برای استفاده های روزانه ازش استفاده کنن
کنسول Nintendo Switch: خودم شخصا روی Nintendo Switch توزیع Kubuntu نصب کردم و جویکان ها به راحتی کار دادن و تونستم ازش استفاده کنم و برخی گیمها رو هم پلی بدم
- @MainPenguins | Hub | Source
👍9❤2🔥1
آپدیت Debian 13.6 منتشر شد؛ ۱۲۰ اصلاح امنیتی و ۱۲۴ بهبود پایداری
تیم Debian نسخه 13.6 (Trixie) را منتشر کرد. این نسخه شامل ۱۲۰ اصلاح امنیتی و ۱۲۴ بهبود مربوط به باگها و پایداری سیستم است. اگر سیستم خود را مرتباً آپدیت میکنید، احتمالاً بیشتر این تغییرات را قبلاً دریافت کردهاید و این نسخه فقط آنها را در قالب یک Point Release یکجا ارائه میکند.
- @MainPenguins | Hub | Source
تیم Debian نسخه 13.6 (Trixie) را منتشر کرد. این نسخه شامل ۱۲۰ اصلاح امنیتی و ۱۲۴ بهبود مربوط به باگها و پایداری سیستم است. اگر سیستم خود را مرتباً آپدیت میکنید، احتمالاً بیشتر این تغییرات را قبلاً دریافت کردهاید و این نسخه فقط آنها را در قالب یک Point Release یکجا ارائه میکند.
در این بهروزرسانی، بستههای مهمی مثل Apache، Curl، LibreOffice، Mesa، Python 3.13، QEMU، Samba، Wireshark و بسیاری از نرمافزارهای دیگر بهروزرسانی شدهاند. همچنین پشتیبانی Secure Boot بهبود پیدا کرده و Installer جدید Debian هم با Linux 6.12.94 بازسازی شده است.همزمان با انتشار Debian 13.6، نسخه Debian 12.15 هم بهعنوان آخرین Point Release شاخه Bookworm منتشر شده و کاربران Debian 12 از این پس بهتر است برای مهاجرت به Debian 13 برنامهریزی کنند.
- @MainPenguins | Hub | Source
❤8
🚨 گوگل باز هم عقب کشید؛ Gemini 3.5 Pro دوباره به تعویق افتاد!
گوگل برای دومین بار متوالی، عرضه نسخه بعدی مدل Gemini Pro را عقب انداخت. بر اساس آخرین خبرها، هدفگذاری جدید غول فناوری برای رونمایی از این مدل، اواخر ماه جولای (اوایل مرداد) یا حتی دیرتر اعلام شده است.
چه قابلیتهای جدیدی در راه است؟
✅ بازنویسی کامل الگوریتم: اجرای یک پیشآموزش (Pre-training) کاملاً جدید روی مدل پایه.
✅ حافظه غولآسا: پشتیبانی از پنجره کانتکست فوقالعادهی ۲ میلیون توکنی.
✅ حالت استدلال پیشرفته: اضافه شدن قابلیت Deep Think برای تحلیلهای عمیقتر.
طبق اطلاعات درز کرده، این مدل در حال حاضر ارتقای چشمگیری در بخش فرانتاند داشته و در زمینه کدنویسی هم غوغا کرده است (حتی گفته میشود در برخی تستها مدل قدرتمند Fable 5 را شکست داده). اما پاشنه آشیل آن همچنان «استدلالهای طولانیمدت» است؛ نقطهضعفی که احتمالاً دلیل اصلی این تأخیرهای پیدرپی است. به نظر میرسد گوگل تا زمانی که از شکست دادن کامل رقبایی مثل Fable 5 مطمئن نشود، دست به انتشار عمومی نخواهد زد.
نظر شخصی:
گوگل باز هم یه مدل میده که تو تستها از Fable بهتره ولی تو عمل از نه
گوگل برای دومین بار متوالی، عرضه نسخه بعدی مدل Gemini Pro را عقب انداخت. بر اساس آخرین خبرها، هدفگذاری جدید غول فناوری برای رونمایی از این مدل، اواخر ماه جولای (اوایل مرداد) یا حتی دیرتر اعلام شده است.
چه قابلیتهای جدیدی در راه است؟
✅ بازنویسی کامل الگوریتم: اجرای یک پیشآموزش (Pre-training) کاملاً جدید روی مدل پایه.
✅ حافظه غولآسا: پشتیبانی از پنجره کانتکست فوقالعادهی ۲ میلیون توکنی.
✅ حالت استدلال پیشرفته: اضافه شدن قابلیت Deep Think برای تحلیلهای عمیقتر.
طبق اطلاعات درز کرده، این مدل در حال حاضر ارتقای چشمگیری در بخش فرانتاند داشته و در زمینه کدنویسی هم غوغا کرده است (حتی گفته میشود در برخی تستها مدل قدرتمند Fable 5 را شکست داده). اما پاشنه آشیل آن همچنان «استدلالهای طولانیمدت» است؛ نقطهضعفی که احتمالاً دلیل اصلی این تأخیرهای پیدرپی است. به نظر میرسد گوگل تا زمانی که از شکست دادن کامل رقبایی مثل Fable 5 مطمئن نشود، دست به انتشار عمومی نخواهد زد.
نظر شخصی:
گوگل باز هم یه مدل میده که تو تستها از Fable بهتره ولی تو عمل از نه
❤7
شب نکو✨️
هربار که وارد یک پوشه میشید، اون رو توی دیتابیس خودش ذخیره میکنه و دفعات بعد فقط با نوشتن بخشی از اسم پوشه، شمارو مستقیما به همون مسیر میبره؛ مثلا توی این تصویر که فرستادم کامند z ter رو ببینین.
خیلی ابزار خوب و باحالیه؛ امکانات جالبی هم داره که همشونو بهتون یاد میدم.
نصب خیلی سادهای هم داره توی مخازن اکثر توزیع ها به اسم zoxide موجوده میتونین با cargo یا brew هم نصبش کنید:
البته روشهای نصب دیگهای هم داره که توی مستنداتش بیان شده.
بعد از نصب باید فعالسازیش کنین
اگر از bash استفاده میکنید:
اگر از zsh استفاده میکنید:
اگر از fish استفاده میکنید:
حالا چطور کار میکنه؟
هربار که از "cd" یا "z" وارد پوشهای میشید، zoxide اون مسیر رو ذخیره میکنه.
هرچی بیشتر ازش ازش استفاده کنید بهتر یاد میگیره که معمولا منظور شما از اسم پوشه کدوم مسیر هست و سریع تر همون رو انتخاب میکنه.
نحوه استفاده:
مثلا به جای این
کافیه بنویسی
یا حتی
اگر قبلا چند بار وارد اون پوشه شده باشید، مستقیما میره همونجا.
مهم نیست کجا باشین، هرجا که باشین خودش مسیر پوشه مد نظرتون رو پیدا میکنه و میرین اونجا
یکی دیگه از ویژگیای باحالش اینه که جستجوی تعاملی داره (البته در صورت نصب بودن fzf)
اگر fzf نصب بود، میتونین از کامند zi استفاده کنین
مثلا:
لیستی از پوشههای مشابه رو بهتون نشون میده و میتونین یکیشونو انتخاب کنین.
ویژگیهای دیگه هم داره، مثلا
نمایش دیتابیس مسیرها:
پاک کردن دیتابیس:
نمایش راهنما:
خلاصه که میتونه جایگزین باحالی برای cd باشه و اینکه هماهنگی خوبی هم با fzf برای جستجوی تعاملی هم داره خیلی خوبه.
- @MainPenguins | Hub | Source
اگر توی طول روز زیاد از cd استفاده میکنین و بین مسیر های طولانی زیادی جابهجا میشید، تایپ کردن مسیرها با cd واقعا خسته کنندهست.ابزار zoxide یه جایگزین هوشمند برای cd هست که با زبان Rust نوشته شده و عادتهای شمارو یاد میگیره.
هربار که وارد یک پوشه میشید، اون رو توی دیتابیس خودش ذخیره میکنه و دفعات بعد فقط با نوشتن بخشی از اسم پوشه، شمارو مستقیما به همون مسیر میبره؛ مثلا توی این تصویر که فرستادم کامند z ter رو ببینین.
خیلی ابزار خوب و باحالیه؛ امکانات جالبی هم داره که همشونو بهتون یاد میدم.
نصب خیلی سادهای هم داره توی مخازن اکثر توزیع ها به اسم zoxide موجوده میتونین با cargo یا brew هم نصبش کنید:
cargo install zoxide
البته روشهای نصب دیگهای هم داره که توی مستنداتش بیان شده.
بعد از نصب باید فعالسازیش کنین
اگر از bash استفاده میکنید:
echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
اگر از zsh استفاده میکنید:
echo 'eval "$(zoxide init zsh)"' >> ~/.zshrc
اگر از fish استفاده میکنید:
echo 'zoxide init fish | source' >> ~/.config/fish/config.fish
حالا چطور کار میکنه؟
هربار که از "cd" یا "z" وارد پوشهای میشید، zoxide اون مسیر رو ذخیره میکنه.
هرچی بیشتر ازش ازش استفاده کنید بهتر یاد میگیره که معمولا منظور شما از اسم پوشه کدوم مسیر هست و سریع تر همون رو انتخاب میکنه.
نحوه استفاده:
مثلا به جای این
cd ~/Projects/MyAwesomeProject/backend/
کافیه بنویسی
z backend
یا حتی
z myawesome
اگر قبلا چند بار وارد اون پوشه شده باشید، مستقیما میره همونجا.
مهم نیست کجا باشین، هرجا که باشین خودش مسیر پوشه مد نظرتون رو پیدا میکنه و میرین اونجا
یکی دیگه از ویژگیای باحالش اینه که جستجوی تعاملی داره (البته در صورت نصب بودن fzf)
اگر fzf نصب بود، میتونین از کامند zi استفاده کنین
مثلا:
zi project
لیستی از پوشههای مشابه رو بهتون نشون میده و میتونین یکیشونو انتخاب کنین.
ویژگیهای دیگه هم داره، مثلا
نمایش دیتابیس مسیرها:
zoxide query -l
پاک کردن دیتابیس:
zoxide remove --all
نمایش راهنما:
zoxide --help
خلاصه که میتونه جایگزین باحالی برای cd باشه و اینکه هماهنگی خوبی هم با fzf برای جستجوی تعاملی هم داره خیلی خوبه.
- @MainPenguins | Hub | Source
👏9❤6🤔1👌1
درود بر پگاهتان🔆
آپدیت Linux 7.3-rc3 یک مشکل آزاردهنده سیستمهای چند GPU را برطرف میکند
در تغییرات جدید Linux 7.3-rc3، یک باگ قدیمی در شناسایی نمایشگرها روی سیستمهای چند GPU برطرف شده است. این مشکل باعث میشد در برخی سیستمها، کرنل نمایشگر را از روی GPU اشتباه تشخیص دهد و در نتیجه خروجی تصویر یا مدیریت مانیتورها با مشکل مواجه شود.
این تغییر بخشی از مجموعه اصلاحات x86 برای Linux 7.3 است و انتظار میرود همراه با نسخه نهایی کرنل در اختیار کاربران قرار بگیرد.
- @MainPenguins | Hub | Source
آپدیت Linux 7.3-rc3 یک مشکل آزاردهنده سیستمهای چند GPU را برطرف میکند
در تغییرات جدید Linux 7.3-rc3، یک باگ قدیمی در شناسایی نمایشگرها روی سیستمهای چند GPU برطرف شده است. این مشکل باعث میشد در برخی سیستمها، کرنل نمایشگر را از روی GPU اشتباه تشخیص دهد و در نتیجه خروجی تصویر یا مدیریت مانیتورها با مشکل مواجه شود.
این اصلاح بهویژه برای لپتاپهای دارای گرافیک هیبریدی (iGPU + dGPU) و ورکاستیشنهایی که چند کارت گرافیک دارند اهمیت دارد و میتواند از مشکلاتی مثل تشخیص نادرست مانیتور یا استفاده از GPU اشتباه جلوگیری کند.
این تغییر بخشی از مجموعه اصلاحات x86 برای Linux 7.3 است و انتظار میرود همراه با نسخه نهایی کرنل در اختیار کاربران قرار بگیرد.
- @MainPenguins | Hub | Source
❤4
بالاخره LLVM حالا از x86 LFI پشتیبانی میکند؛ یک قدم دیگر به سمت نرمافزارهای امنتر
جالبه بدونید LFI اولین بار توسط پژوهشگران دانشگاه استنفورد توسعه داده شد و گوگل هم در توسعه آن مشارکت داشته است. هدف این فناوری، افزایش امنیت برنامههای C و C++ بدون تحمیل افت محسوس عملکرد است؛ یعنی یک لایه محافظتی اضافه در برابر باگهای حافظه، بدون اینکه نیاز به بازنویسی کامل برنامه باشد.
پشتیبانی از AArch64 LFI قبلاً به LLVM اضافه شده بود و حالا با اضافه شدن نسخه x86، توسعهدهندگان میتوانند روی رایجترین معماریهای دسکتاپ و سرور هم از این قابلیت استفاده کنند. این تغییر میتواند در آینده راه را برای ساخت نرمافزارهای لینوکسی امنتر، مخصوصاً در پروژههای بزرگ، هموار کند.
- @MainPenguins | Hub | Source
پشتیبانی از Lightweight Fault Isolation (LFI) برای پردازندههای x86/x86_64 بهطور رسمی وارد LLVM شد. این قابلیت به کامپایلر اجازه میدهد برنامهها را به شکلی کامپایل کند که بخشهای مختلف کد در یک Sandbox داخلی (In-Process Sandbox) اجرا شوند و در صورت بروز باگهای حافظه، آسیب به سایر بخشهای برنامه محدود شود.
جالبه بدونید LFI اولین بار توسط پژوهشگران دانشگاه استنفورد توسعه داده شد و گوگل هم در توسعه آن مشارکت داشته است. هدف این فناوری، افزایش امنیت برنامههای C و C++ بدون تحمیل افت محسوس عملکرد است؛ یعنی یک لایه محافظتی اضافه در برابر باگهای حافظه، بدون اینکه نیاز به بازنویسی کامل برنامه باشد.
پشتیبانی از AArch64 LFI قبلاً به LLVM اضافه شده بود و حالا با اضافه شدن نسخه x86، توسعهدهندگان میتوانند روی رایجترین معماریهای دسکتاپ و سرور هم از این قابلیت استفاده کنند. این تغییر میتواند در آینده راه را برای ساخت نرمافزارهای لینوکسی امنتر، مخصوصاً در پروژههای بزرگ، هموار کند.
- @MainPenguins | Hub | Source
❤4🔥2
دسکتاپ Plasma 6.8 بالاخره ضبط صدا را به Spectacle اضافه میکند
اگر از Spectacle برای ضبط صفحه در KDE استفاده میکنید، بالاخره یک قابلیت مهم به آن اضافه شد.
در Plasma 6.8 هنگام Screen Recording میتوانید انتخاب کنید که:
این یعنی دیگر برای ضبط آموزش، گیمپلی یا جلسات آنلاین، در بیشتر موارد نیازی به ابزارهای جانبی نخواهید داشت.
علاوه بر این، توسعهدهندگان موفق شدهاند افکت Blur در Spectacle را بدون استفاده از OpenCV پیادهسازی کنند؛ در نتیجه این کتابخانه از وابستگیهای Spectacle حذف شده و برنامه سبکتر خواهد شد.
عجیبه که چرا این باگ هنوز فیکس نشده..
- @MainPenguins | Hub | Source
اگر از Spectacle برای ضبط صفحه در KDE استفاده میکنید، بالاخره یک قابلیت مهم به آن اضافه شد.
در Plasma 6.8 هنگام Screen Recording میتوانید انتخاب کنید که:
فقط صدای میکروفون ضبط شود
فقط صدای سیستم ضبط شود
یا هر دو همزمان ضبط شوند
این یعنی دیگر برای ضبط آموزش، گیمپلی یا جلسات آنلاین، در بیشتر موارد نیازی به ابزارهای جانبی نخواهید داشت.
علاوه بر این، توسعهدهندگان موفق شدهاند افکت Blur در Spectacle را بدون استفاده از OpenCV پیادهسازی کنند؛ در نتیجه این کتابخانه از وابستگیهای Spectacle حذف شده و برنامه سبکتر خواهد شد.
عجیبه که چرا این باگ هنوز فیکس نشده..
- @MainPenguins | Hub | Source
❤8
ظهر فرخنده🌞
فریمور 26.06 لپتاپهای Star Labs منتشر شد
شرکت Star Labs نسخه 26.06 از فریمور مبتنی بر coreboot را برای لپتاپهای لینوکسی خود منتشر کرد. این نسخه علاوه بر پشتیبانی از سیستمهای مبتنی بر AMD Cezanne، مجموعهای از بهبودهای کاربردی و رفع باگها را هم به همراه دارد.
مهمترین تغییرات:
اگر یکی از لپتاپهای Star Labs را دارید، این بهروزرسانی از طریق LVFS و ابزار fwupd قابل دریافت است و مثل همیشه میتوانید آن را مستقیماً از داخل لینوکس نصب کنید.
- @MainPenguins | Hub | Source
فریمور 26.06 لپتاپهای Star Labs منتشر شد
شرکت Star Labs نسخه 26.06 از فریمور مبتنی بر coreboot را برای لپتاپهای لینوکسی خود منتشر کرد. این نسخه علاوه بر پشتیبانی از سیستمهای مبتنی بر AMD Cezanne، مجموعهای از بهبودهای کاربردی و رفع باگها را هم به همراه دارد.
مهمترین تغییرات:
پشتیبانی از دستگاههای مبتنی بر AMD Cezanne مثل Byte Mk I و StarBook Mk VI
بهبود فرآیند بهروزرسانی Firmware و افزایش پایداری آن
اضافه شدن رمز عبور BIOS
پشتیبانی از TCG OPAL برای SSDهای NVMe سازگار
بهبود مقیاسبندی HiDPI، مدیریت توان، عملکرد باتری و رفع مشکلات Hibernate و بوت برخی SSDها
اگر یکی از لپتاپهای Star Labs را دارید، این بهروزرسانی از طریق LVFS و ابزار fwupd قابل دریافت است و مثل همیشه میتوانید آن را مستقیماً از داخل لینوکس نصب کنید.
- @MainPenguins | Hub | Source
❤3
دوست گرامی، لطفا روی لینوکستون با wine ابزار winrar رو نصب نکنید..
میتونین peazip نصب کنید
- @MainPenguins | Hub
میتونین peazip نصب کنید
- @MainPenguins | Hub
😁29❤3🤯3