Woland's Linux Journal
همهچیز درباره لینوکس، برنامهنویسی، تکنولوژی و اخبار
Show more1 896
Subscribers
-624 hours
-167 days
-2630 days
Posting time distributions
Data loading in progress...
Find out who reads your channel
This graph will show you who besides your subscribers reads your channel and learn about other sources of traffic.Publication analysis
Posts | Views | Shares | Views dynamics |
01 فری بیاسدی ۱۴.۱، جدیدترین نسخه باثبات(استیبل) از فری بیاسدی، با تغییرات و بهینهسازیهای فراوان در زمینه OpenZFS, OpenSSH، C Compiler، صدا و شناخت سخت افزار و... منتشر شد.
اطلاعات بیشتر:
👉🔗 FBSD
#خبر | 273 | 2 | Loading... |
02 زندگی برای تایپ کردن دستورهای طولانی خیلی کوتاهه
mkdir -p weight/of/sound/stick | mkdir -p weight/of/sound/figure ❌
mkdir -p weight/of/sound/{stick,figure} ✅
#لینوکس #آموزش #بش #bash | 387 | 12 | Loading... |
03 💠HN-text💠
کلاینت ترمینالی هکرنیوز
دانلود باینریهای کامپایل شده برای تمام سیستمهای عامل:
👉🔗 Download
نصب از طریق گولنگ:
go install github.com/piqoni/hn-text@latest
👉🔗 GitHub
#معرفی | 422 | 15 | Loading... |
04 Dungeon Crawl Stone Soup
یکی از روگلایکهای کلاسیک و فوقالعاده که در تمام سیستمها اجرا میشه
دارای تایلسِت گرافیکی و محیط اَسکی کنسول
داستان بسیار جذاب
دارای پکیجهای اپایمیج، فلتپک یا اسنپ برای لینوکس
پشتیبانی از مک و ویندوز
قابلیت نصب برای اندروید از افدروید یا گوگلپلی
بازی آنلاین
و سورسکد
همه از طریق سایت اصلی از لینک زیر
👉🔗 Website
#game #nethack | 383 | 9 | Loading... |
05 💠typioca💠
برنامه تمرین تایپ ۱۰ انگشتی در ترمینال
- نوشتهشده با گولنگ
- دارای قابلیت استفاده از متن کاربر برای تمرین
- سنجش بر اساس زمان، تعداد کلمات یا جملات تایپ شده
- پشتیبانی C-w
- پشتیبانی از لینوکس، مک و ویندوز
نصب:
AUR
yay -S typioca-git
Go
go install github.com/bloznelis/typioca@latest
Scoop
scoop bucket add extras
scoop install typioca
لینک مخزن:
👉🔗 Github
#معرفی | 434 | 39 | Loading... |
06 آموزش کامپایل کردن Nethack 3.6.7 نسخه QT در لینوکس
ابتدا تاربال سورس را دریافت کنید:
curl -O https://www.nethack.org/download/3.6.7/nethack-367-src.tgz
سپس وابستگیهای مورد نیاز را نصب میکنیم:
در سیستمهای دبیان build-essentials و در آرچ base-devel را نصب میکنیم
برای کامپایل کردن نسخه QT، هدرها و پکیجهای dev مربوطه را نصب میکنیم.
برای مثال:
sudo pacman -S qt5-base qt5-declarative qt5-tools qt5-translations
همچنین پکیجهای bdftopcf mkfontscale برای کامپایل در آرچ ضروری هستند:
sudo pacman -S xorg-bdftopcf xorg-mkfontscale
سپس به مخزن وارد میشویم
cd Nethack-3*
سیستم بیلد جدید نتهک براساس فایلهای hint طراحی شده.
برای نصب نسخه QT:
sys/unix/setup.sh sys/unix/hints/linux-qt5
برای نصب نسخه X11:
sys/unix/setup.sh sys/unix/hints/linux-x11
برای نصب نسخه مینیمال برای tty:
sys/unix/setup.sh sys/unix/hints/linux-minimal
سپس به سادگی دستور make را اجرا میکنیم:
make -j$(nproc)
اگر اروری دریافت کردیم که روند بیلد را متوقف کرد، حتما یکی یا برخی از وابستگیها در سیستم موجود نیست.
در صورت عدم دریافت ارور، پکیج را نصب میکنیم
make install
نیازی به سودو نیست، چراکه نتهک در هوم در دایرکتوری nh نصب میشود.
#آموزش
#nethack | 501 | 7 | Loading... |
07 نِتهَک
در کتاب آنو آمده است:
پس از آفرینش، خدایِ شریر مولوک، به سلطهی مردوکِ خالق طغیان کرد.
مولوک قدرتمندترین شی خدایان، که حرز یَندور باشد، را از مردوک ربود و آن را در تاریکی های غارهای گِهِنوم، در دنیای زیرین، پنهان کرد.
هماکنون او، جایی در جهان زیرین سَر میکند.
خدای شما، آنو، به دنبال تصاحب حرز است تا با آن برتری برحق خویش را بر سایر خدایان محقق سازد.
شما، یک جنگجوی تازه نفس هستید، و از بدو تولد خود به عنوان وسیله آنو، وقف او شدهاید.
برای شما مقدر شده که برای خدای خود حرز را بازیابی کنید یا در راه آن بمیرید.
ساعت سرنوشت تو فرا رسیده است.
برای سرنوشت همه ما: دلیرانه با دعای خیر آنو، به سیاهچالهای جهان زیرین بتاز!
~~~~
نتهک یک بازی رایانهای در سبک بازیهای نقشآفرینی و ماجراجویی است.
این بازی در سال ۱۹۸۷ توسط گروهی از توسعهدهندگان ساخته شد و تا به امروز به عنوان یکی از بازیهای کلاسیک و محبوب در این سبک شناخته میشود.
هدف اصلی در نتهک، کشف و پیمودن یک سیاهچال پر از خطر و موانع است.
شما در نقش یک قهرمان قرار میگیرید که باید با استفاده از مهارتها، تجهیزات و قدرتهای خود به دنبال گنجینهها و موجودات خطرناک بگردید.
بازی دارای محیط گرافیکی ساده و کاراکترهای ثابت است و تصمیمگیریهای شما در طول بازی تاثیر زیادی بر جریان داستان خواهد داشت. نتهک یک بازی بسیار پیچیده و چالشبرانگیز است که نیازمند استراتژی، تعقل و آگاهی از جزئیات است.
سیاهچالها در نتهک بصورت procedurally generated ساخته میشوند.
تمام کلیدهای کیبورد به دستورات بازی اختصاص داده شدهاند و برای یک بازی واقعی نتهک، به تمام کیبورد خود به علاوهی چندین دستور نیاز دارید.
بصورت تاریخی ( و اِلیتیستی) نتهک در محیط اَسکی یا کرسس بازی میشود. با این حال امکان بازی کردن نتهک با تایلست در محیط x11 یا qt نیز وجود دارد. هرچند که قطعا از لطف بازی و فضای خاص آن میکاهد.
نتهک بازی فوقالعاده پیچیده و سختی است، اما در پس ظاهر زمخت و بدوی آن، ماجراهای فراوان و امکانات فراوانتری پنهان شده است.
در پست بعدی آموزش کامپایل کردن نتهک در محیط qt رو خواهیم داشت.
#معرفی
#game #nethack | 458 | 12 | Loading... |
08 Media files | 471 | 4 | Loading... |
09 مراحل یادگیری جاوااسکریپت:
سینتکس رو یاد بگیرید
۱۰ سال تمرین و ممارست به خرج بدین
بعد جاوااسکریپت رو فراموش کنید و PHP یاد بگیرید، دقیقا همان کاری که باید ۱۰ سال پیش میکردید.
#fun | 570 | 19 | Loading... |
10 [ $foo = "bar" ]
در مثال بالا، نقل قولها در جای اشتباه قرار دارند.
شما نیازی به نقل قول کردن یک رشته ثابت در bash ندارید (مگر اینکه شامل کاراکترهای خاص باشد). اما شما باید متغیرهای خود را نقل قول کنید
این مثال میتواند به چند دلیل بریک شود:
اگر متغیری که در [ قرار داده شده وجود نداشته باشد، یا خالی باشد، آنگاه دستور [ به شکل زیر در میآید:
[ = "bar" ] # اشتباه
سپس خطای unary operator expected اتفاق میافتد. (عملگر = یک عملگر binary است، نه unary، بنابراین دستور [ از دیدن آن تعجب میکند.)
اگر متغیر شامل فضای خالی باشد،:
آنگاه قبل از اینکه دستور [ متغیر را ببیند، آن متفیر به کلمات جداگانه تقسیم میشود. بنابراین:
[ multiple words here = "bar" ]
این رفتار ممکن است خوب به نظر برسد، اما از نظر [ یک خطای دستوری است. روش صحیح نوشتن آن به این شکل است:
# POSIX
[ "$foo" = bar ] # درست
مثال بالا در شلهای POSIX حتی اگر foo$ با - شروع شود، درست کار میکند، زیرا دستور [ عملکرد خود را بر اساس تعداد آرگومانهای آن تعیین میکند. فقط شلهای باستانی با این سینتکس مشکل دارند. نیازی نیست هنگام نوشتن کد جدید نگران آن باشید.
(راهحل x"$foo" را در زیر ببینید).
در Bash و بسیاری از شلهای شبیه به ksh، یک جایگزین برتر وجود دارد که از کلمه کلیدی [[ استفاده میکند.
# Bash / Ksh
[[ $foo == bar ]] # درست
در این مورد نیازی به نقل قول کردن متغیر در سمت چپ = در [[ ]] ندارید زیرا آنها دچار تقسیم کلمه یا گلوبینگ نمیشوند،
و حتی متغیرهای خالی نیز به درستی کار میکنند.
از طرف دیگر، نقل قول کردن آنها هم ضرری ندارد. بر خلاف [ و test، شما همچنین میتوانید از == نیز استفاده کنید.
با این حال توجه داشته باشید که مقایسههایی که با [[ انجام میشوند، الگوی مطابقت را دربرابر رشته در سمت راست، انجام میدهند. برای اینکه رشته در سمت راست را literal کنید، باید آن را نقل قول کنید.
# Bash / Ksh
match=b*r
[[ $foo == "$match" ]]
دزست! بدون نقل قول نیز با الگوی b*r مطابقت میکند.
ممکن است کدی مانند این دیده باشید:
# POSIX / Bourne
[ x"$foo" = xbar ] # خوب، اما معمولاً غیر ضروری.
هک x"$foo" برای کدی که باید در شلهای بسیار قدیمی اجرا شود که [[ را ندارند و [ ابتداییتری دارند ضروری است.
توجه داشته باشید که شلهایی که به این راهحل نیاز دارند، مطابق با POSIX نیستند. چنین قابلیت portability شدیدی به ندرت یک ضرورت است و کد شما را ناخوانا (و زشت) میکند.
#آموزش #لینوکس #بش #الپیک
#bash #linux #lpic | 503 | 8 | Loading... |
11 [ $foo = "bar" ]
در مثال بالا، نقل قولها در جای اشتباه قرار دارند.
شما نیازی به نقل قول کردن یک رشته ثابت در bash ندارید (مگر اینکه شامل کاراکترهای خاص باشد). اما شما باید متغیرهای خود را نقل قول کنید
این مثال میتواند به چند دلیل بریک شود:
اگر متغیری که در [ قرار داده شده وجود نداشته باشد، یا خالی باشد، آنگاه دستور [ به شکل زیر در میآید:
[ = "bar" ] # اشتباه!
سپس خطای unary operator expected اتفاق میافتد. (عملگر = یک عملگر binary است، نه unary، بنابراین دستور [ از دیدن آن تعجب میکند.)
اگر متغیر شامل فضای خالی باشد،:
آنگاه قبل از اینکه دستور [ متغیر را ببیند، آن متفیر به کلمات جداگانه تقسیم میشود. بنابراین:
[ multiple words here = "bar" ]
در حالی که این رفتار ممکن است خوب به نظر برسد، اما از نظر [ یک خطای دستوری است. روش صحیح نوشتن آن به این شکل است:
# POSIX
[ "$foo" = bar ] # درست
مثال بالا در شلهای POSIX حتی اگر foo$ با - شروع شود، درست کار میکند، زیرا دستور [ عملکرد خود را بر اساس تعداد آرگومانهای آن تعیین میکند. فقط شلهای باستانی با این سینتکس مشکل دارند. نیازی نیست هنگام نوشتن کد جدید نگران آنها باشید
(راهحل x"$foo" را در زیر ببینید).
در Bash و بسیاری از شلهای شبیه به ksh، یک جایگزین برتر وجود دارد که از کلمه کلیدی [[ استفاده میکند.
# Bash / Ksh
[[ $foo == bar ]] # درست!
شما نیازی به نقل قول کردن مراجع متغیر در سمت چپ = در [[ ]] ندارید زیرا آنها دچار تقسیم کلمه یا گلوبینگ نمیشوند، و حتی متغیرهای خالی نیز به درستی کار میکنند. از طرف دیگر، نقل قول کردن آنها هم آسیبی نمیزند. بر خلاف [ و test، شما همچنین میتوانید از == یکسان استفاده کنید. با این حال توجه داشته باشید که مقایسههایی که با [[ انجام میشوند، علیه رشته در سمت راست، الگوی مطابقت را انجام میدهند، نه فقط مقایسه ساده رشته. برای اینکه رشته در سمت راست را حرفی کنید، باید آن را نقل قول کنید اگر هر کاراکتری که معنای ویژهای در زمینههای مطابقت الگو دارد، استفاده شود.
# Bash / Ksh
match=b*r
[[ $foo == "$match" ]] # خوب! بدون نقل قول نیز با الگوی b*r مطابقت میکند.
شما ممکن است کدی مانند این دیده باشید:
# POSIX / Bourne
[ x"$foo" = xbar ] # خوب، اما معمولاً غیر ضروری.
هک x"$foo" برای کدی که باید در شلهای بسیار قدیمی که [[ را ندارند و [ ابتداییتری دارند که اگر $foo با - شروع شود یا ! یا ( باشد، گیج میشود، لازم است. در سیستمهای قدیمیتر گفته شده، [ فقط برای توکن در سمت چپ = احتیاط اضافی میخواهد؛ آن به درستی توکن سمت راست را مدیریت میکند.
توجه داشته باشید که شلهایی که به این راهحل نیاز دارند، مطابق با POSIX نیستند. چنین قابلیت حمل و نقل شدیدی به ندرت یک الزام است و کد شما را کمخوانا (و زشتتر) میکند.
۵. cd $(dirname "$f")
این یک خطای نقل قول دیگر است. همانند یک توسعه متغیر، نتیجه یک CommandSubstitution دچار WordSplitting و گسترش مسیر میشود. بنابراین شما باید آن را نقل قول کنید:
cd -P -- "$(dirname -- "$f")"
آنچه که در اینجا واضح نیست این است که نقل قولها چگونه تو در تو هستند. یک برنامهنویس C که این را میخواند انتظار دارد که اولین و دومین نقل قولها با هم گروهبندی شوند؛ و سپس سومین و چهارمین. اما این مورد در Bash صدق نمیکند. Bash نقل قولهای داخل جایگزینی دستور را به عنوان یک ج | 1 | 0 | Loading... |
12 Media files | 719 | 1 | Loading... |
13 دوستانی که PHP کار میکنند و برای تمرینهاشون با نصب XAMPP روی آرچ از AUR مشکل دارند. میتونن از این اسکریپت فوقساده برای نصب XAMPP روی آرچ استفاده کنند.
#!/bin/bash
required_packages=(
"libxcrypt-compat"
"net-tools"
"inetutils"
)
for package in "${required_packages[@]}"; do
if ! pacman -Q "$package" &> /dev/null; then
echo "Package '$package' is not installed. Installing..."
sudo pacman -Sy "$package"
else
echo "Package '$package' is already installed."
fi
done
echo "All required packages have been installed."
PkgName="xampp-linux-x64-8.2.12-0-installer.run"
PkgURL="https://altushost-swe.dl.sourceforge.net/project/xampp/XAMPP%20Linux/8.2.12/xampp-linux-x64-8.2.12-0-installer.run?viasf=1"
curl -o "$PkgName" "$PkgURL"
if [[ -f "$PkgName" ]]; then
chmod +x "$PkgName"
sudo ./"$PkgName"
else
echo "xampp.run file not found"
fi
با رجوع به Arch Wiki میتونین همین مراحل رو بصورت دستی هم انجام بدین.
👉🔗 ArchWiki XAMPP
#لینوکس #آموزش #بش #php #پی_اچ_پی | 881 | 9 | Loading... |
14 ادامه از پست قبل
اگر به مقدار بازگشتی (recursive) نیاز دارید، راه حل استاندارد، استفاده از find است.
هنگام استفاده از find، برای سازگاری با POSIX sh، از گزینه -exec استفاده کنید:
find . -type f -name '*.mp3' -exec some command {} \;
# یا، اگر فرمان ورودی چندین نام فایل را میپذیرد:
find . -type f -name '*.mp3' -exec some command {} +
اگر از bash استفاده میکنید، دو گزینه اضافیتر نیز دارید.
یکی استفاده از گزینه print0- در دستور find، همراه با گزینه read -d در bash و ProcessSubstitution:
while IFS= read -r -d '' file; do
some command "$file"
done < <(find . -type f -name '*.mp3' -print0)
مزیت این شیوه این است که "some command" (در واقع، کل بدنه حلقه while) در شل فعلی اجرا میشود. در نتیجه میتوانید متغیرها را تنظیم کنید و آنها را بعد از پایان حلقه حفظ کنید. | 683 | 6 | Loading... |
15 for f in $(ls *.mp3)
یکی از رایجترین اشتباهاتی که برنامهنویسان BASH مرتکب میشوند نوشتن یک حلقه به این صورت است:
for f in $(ls *.mp3); do # اشتباه!
some command $f # اشتباه!
done
for f in $(ls) # اشتباه!
for f in `ls` # اشتباه!
for f in $(find . -type f) # اشتباه!
for f in `find . -type f` # اشتباه!
files=($(find . -type f)) # اشتباه!
for f in ${files[@]} # اشتباه!
بله، خوب میشد اگر میتوانستید به سادگی خروجی ls یا find را به عنوان یک لیست از نام فایلها در نظر بگیرید و روی آن عملیات تکراری انجام دهید، اما نمیتوانید!
این روش کاملاً اشتباه است و هیچ ترفندی نمیتواند آن را درست کند. باید از یک روش کاملاً متفاوت استفاده کنید.
حداقل ۶ مشکل با این روش وجود دارد:
اگر نام فایل حاوی فاصله (یا هر کاراکتری در مقدار فعلی $IFS) باشد، دچار WordSplitting میشود. فرض کنیم فایلی با نام 01 - my new index.php در دایرکتوری فعلی داریم، حلقه for روی هر کلمه در نام فایل تکرار میشود.
اگر نام فایل حاوی کاراکترهای glob باشد، دچار گسترش نام فایل (globbing) میشود. اگر ls خروجی حاوی کاراکتر * داشته باشد، کلمه حاوی آن به عنوان یک الگو شناخته میشود و با لیستی از تمام نام فایلهایی که با آن مطابقت دارند جایگزین میشود.
اگر جایگزینی، چندین نام فایل بازگرداند، هیچ راهی برای تشخیص اینکه اول نام کجا پایان مییابد و دومین کجا شروع میشود وجود ندارد. مسیرها میتوانند هر کاراکتری به جز NUL را شامل شوند. این شامل خطوط جدید نیز میشود.
ابزار ls ممکن است نام فایلها را خراب کند. بسته به پلتفرمی که روی آن هستید، آرگومانهایی که استفاده کردهاید (یا نکردهاید) و اینکه خروجی استاندارد آن به یک ترمینال اشاره میکند یا نه، ls ممکن است به طور تصادفی تصمیم بگیرد برخی کاراکترها در نام فایل را با "?" جایگزین کند، یا اصلاً آنها را چاپ نکند. هرگز سعی نکنید خروجی ls را تجزیه کنید. ls کاملا غیرضروری است. ls یک فرمان خارجی است که خروجی آن به طور خاص برای خواندن توسط انسان طراحی شده است، نه تجزیه توسط یک اسکریپت!
فرمان جایگزینی همه کاراکترهای خط جدید را از خروجی خود حذف میکند. این ممکن است مطلوب به نظر برسد چون ls یک خط جدید اضافه میکند، اما اگر آخرین نام فایل در لیست با یک خط جدید پایان یابد، یا … یا ()$، اینها نیز حذف میشوند.
در مثالهای ls، اگر نام اولین فایل با یک خط تیره شروع شود، ممکن است منجر به مشکل شماره ۳ شود.
همچنین نمیتوانید به سادگی جایگزینی را با نقل قول گول بزنید:
for f in "$(ls *.mp3)"; do # اشتباه!
این باعث میشود که تمام خروجی ls به عنوان یک کلمه واحد در نظر گرفته شود. به جای تکرار بر روی هر نام فایل، حلقه فقط یک بار اجرا میشود و به f رشتهای با تمام نام فایلهای با هم ترکیب شده اضافه میکند.
نمیتوانید به سادگی IFS را به یک خط جدید(n\) تغییر دهید. نام فایلها میتوانند خطوط جدید نیز داشته باشند.
یک واریاسیون دیگر این خطا استفاده نادرست از Word Splitting و یک حلقه for برای خواندن نادرست خطوط یک فایل است. به عنوان مثال:
IFS=$'\n'
for line in $(cat file); do … # اشتباه!
پس، روش صحیح چیست؟
بسته به اینکه به گسترش بازگشتی (recursive expansion) نیاز دارید یا نه، چندین راه وجود دارد.
اگر به بازگشتی نیاز ندارید، میتوانید از یک glob ساده استفاده کنید. به جای ls:
for file in ./*.mp3; do # بهتر! و…
some command "$file" # …همیشه گسترشها را درون علامت نقل قول دوبل قرار دهید!
done
شلهای POSIX مانند Bash ویژگی globbing را به طور خاص برای این منظور دارند — اجازه دادن به شل برای گسترش الگوها به لیستی از نام فایلهای مطابقت یافته.
درنتیجه نیازی به تفسیر نتایج یک ابزار خارجی نیست. چون globbing آخرین مرحله گسترش است، هر تطابق با الگوی ./*.mp3 به درستی به یک کلمه جداگانه گسترش مییابد و تحت تأثیر گسترش بدون نقل قول قرار نمیگیرد.
سوال: چه اتفاقی میافتد اگر هیچ فایل .mp3 در دایرکتوری فعلی وجود نداشته باشد؟ سپس حلقه for یک بار اجرا میشود، با file="./.mp3"، که رفتار مورد انتظار نیست! راه حل این است که بررسی کنید آیا فایلی مطابقت دارد یا نه:
# POSIX
for file in ./*.mp3; do
[ -e "$file" ] || continue
some command "$file"
done
یک راه حل دیگر استفاده از ویژگی nullglob در Bash با دستور shopt -s است، اگرچه این کار فقط بعد از خواندن مستندات و با دقت در نظر گرفتن اثر این تنظیم بر روی سایر globs در اسکریپت باید انجام شود.
در پست بعدی شیوه recursive رو هم مینویسم.
شایدم شما زودتر توی کامنت نوشتید 😉
#لینوکس #آموزش #بش | 816 | 16 | Loading... |
16 💠 Asmi Linux 💠
اوبونتو بدون اسنپ و فلتپک
👉🔗 Asmi Linux 24.04
#لینوکس #معرفی #اوبونتو | 1 297 | 14 | Loading... |
17 خبر شراکت و همکاری Stack Overflow و OpenAI برای توسعه مدلهای زبانی جهت پیشبرد هوشمصنوعی
#خبر | 1 965 | 8 | Loading... |
Photo unavailableShow in Telegram
فری بیاسدی ۱۴.۱، جدیدترین نسخه باثبات(استیبل) از فری بیاسدی، با تغییرات و بهینهسازیهای فراوان در زمینه OpenZFS, OpenSSH، C Compiler، صدا و شناخت سخت افزار و... منتشر شد.
اطلاعات بیشتر:
👉🔗 FBSD
#خبر
❤ 4🔥 1🤯 1
زندگی برای تایپ کردن دستورهای طولانی خیلی کوتاهه
mkdir -p weight/of/sound/stick | mkdir -p weight/of/sound/figure
❌
mkdir -p weight/of/sound/{stick,figure}
✅
#لینوکس #آموزش #بش #bash👍 21🔥 8👏 1
Show all...
👍 5❤ 3🤔 1
Dungeon Crawl Stone Soup
یکی از روگلایکهای کلاسیک و فوقالعاده که در تمام سیستمها اجرا میشه
دارای تایلسِت گرافیکی و محیط اَسکی کنسول
داستان بسیار جذاب
دارای پکیجهای اپایمیج، فلتپک یا اسنپ برای لینوکس
پشتیبانی از مک و ویندوز
قابلیت نصب برای اندروید از افدروید یا گوگلپلی
بازی آنلاین
و سورسکد
همه از طریق سایت اصلی از لینک زیر
👉🔗 Website
#game #nethack
❤ 6
💠typioca💠
برنامه تمرین تایپ ۱۰ انگشتی در ترمینال
- نوشتهشده با گولنگ
- دارای قابلیت استفاده از متن کاربر برای تمرین
- سنجش بر اساس زمان، تعداد کلمات یا جملات تایپ شده
- پشتیبانی C-w
- پشتیبانی از لینوکس، مک و ویندوز
نصب:
AUR
yay -S typioca-git
Go
go install github.com/bloznelis/typioca@latest
Scoop
scoop bucket add extras
scoop install typioca
لینک مخزن:
👉🔗 Github
#معرفیtype.gif2.39 KB
🔥 10👍 4😍 1🤨 1
آموزش کامپایل کردن Nethack 3.6.7 نسخه QT در لینوکس
ابتدا تاربال سورس را دریافت کنید:
curl -O https://www.nethack.org/download/3.6.7/nethack-367-src.tgz
سپس وابستگیهای مورد نیاز را نصب میکنیم:
در سیستمهای دبیان build-essentials و در آرچ base-devel را نصب میکنیم
برای کامپایل کردن نسخه QT، هدرها و پکیجهای dev مربوطه را نصب میکنیم.
برای مثال:
sudo pacman -S qt5-base qt5-declarative qt5-tools qt5-translations
همچنین پکیجهای bdftopcf mkfontscale برای کامپایل در آرچ ضروری هستند:
sudo pacman -S xorg-bdftopcf xorg-mkfontscale
سپس به مخزن وارد میشویم
cd Nethack-3*
سیستم بیلد جدید نتهک براساس فایلهای hint طراحی شده.
برای نصب نسخه QT:
sys/unix/setup.sh sys/unix/hints/linux-qt5
برای نصب نسخه X11:
sys/unix/setup.sh sys/unix/hints/linux-x11
برای نصب نسخه مینیمال برای tty:
sys/unix/setup.sh sys/unix/hints/linux-minimal
سپس به سادگی دستور make را اجرا میکنیم:
make -j$(nproc)
اگر اروری دریافت کردیم که روند بیلد را متوقف کرد، حتما یکی یا برخی از وابستگیها در سیستم موجود نیست.
در صورت عدم دریافت ارور، پکیج را نصب میکنیم
make install
نیازی به سودو نیست، چراکه نتهک در هوم در دایرکتوری nh نصب میشود.
#آموزش
#nethack👍 3🔥 2
نِتهَک
در کتاب آنو آمده است:
پس از آفرینش، خدایِ شریر مولوک، به سلطهی مردوکِ خالق طغیان کرد.
مولوک قدرتمندترین شی خدایان، که حرز یَندور باشد، را از مردوک ربود و آن را در تاریکی های غارهای گِهِنوم، در دنیای زیرین، پنهان کرد.
هماکنون او، جایی در جهان زیرین سَر میکند.
خدای شما، آنو، به دنبال تصاحب حرز است تا با آن برتری برحق خویش را بر سایر خدایان محقق سازد.
شما، یک جنگجوی تازه نفس هستید، و از بدو تولد خود به عنوان وسیله آنو، وقف او شدهاید.
برای شما مقدر شده که برای خدای خود حرز را بازیابی کنید یا در راه آن بمیرید.
ساعت سرنوشت تو فرا رسیده است.
برای سرنوشت همه ما: دلیرانه با دعای خیر آنو، به سیاهچالهای جهان زیرین بتاز!
~~~~
نتهک یک بازی رایانهای در سبک بازیهای نقشآفرینی و ماجراجویی است.
این بازی در سال ۱۹۸۷ توسط گروهی از توسعهدهندگان ساخته شد و تا به امروز به عنوان یکی از بازیهای کلاسیک و محبوب در این سبک شناخته میشود.
هدف اصلی در نتهک، کشف و پیمودن یک سیاهچال پر از خطر و موانع است.
شما در نقش یک قهرمان قرار میگیرید که باید با استفاده از مهارتها، تجهیزات و قدرتهای خود به دنبال گنجینهها و موجودات خطرناک بگردید.
بازی دارای محیط گرافیکی ساده و کاراکترهای ثابت است و تصمیمگیریهای شما در طول بازی تاثیر زیادی بر جریان داستان خواهد داشت. نتهک یک بازی بسیار پیچیده و چالشبرانگیز است که نیازمند استراتژی، تعقل و آگاهی از جزئیات است.
سیاهچالها در نتهک بصورت procedurally generated ساخته میشوند.
تمام کلیدهای کیبورد به دستورات بازی اختصاص داده شدهاند و برای یک بازی واقعی نتهک، به تمام کیبورد خود به علاوهی چندین دستور نیاز دارید.
بصورت تاریخی ( و اِلیتیستی) نتهک در محیط اَسکی یا کرسس بازی میشود. با این حال امکان بازی کردن نتهک با تایلست در محیط x11 یا qt نیز وجود دارد. هرچند که قطعا از لطف بازی و فضای خاص آن میکاهد.
نتهک بازی فوقالعاده پیچیده و سختی است، اما در پس ظاهر زمخت و بدوی آن، ماجراهای فراوان و امکانات فراوانتری پنهان شده است.
در پست بعدی آموزش کامپایل کردن نتهک در محیط qt رو خواهیم داشت.
#معرفی
#game #nethack
🔥 3👍 2❤ 1
00:28
Video unavailableShow in Telegram
مراحل یادگیری جاوااسکریپت:
سینتکس رو یاد بگیرید
۱۰ سال تمرین و ممارست به خرج بدین
بعد جاوااسکریپت رو فراموش کنید و PHP یاد بگیرید، دقیقا همان کاری که باید ۱۰ سال پیش میکردید.
#fun
1.09 MB
😁 26👍 3💊 1
[ $foo = "bar" ]
در مثال بالا، نقل قولها در جای اشتباه قرار دارند.
شما نیازی به نقل قول کردن یک رشته ثابت در bash ندارید (مگر اینکه شامل کاراکترهای خاص باشد). اما شما باید متغیرهای خود را نقل قول کنید
این مثال میتواند به چند دلیل بریک شود:
اگر متغیری که در
[
قرار داده شده وجود نداشته باشد، یا خالی باشد، آنگاه دستور [
به شکل زیر در میآید:
[ = "bar" ] # اشتباهسپس خطای unary operator expected اتفاق میافتد. (عملگر
=
یک عملگر binary است، نه unary، بنابراین دستور [
از دیدن آن تعجب میکند.)
اگر متغیر شامل فضای خالی باشد،:
آنگاه قبل از اینکه دستور [
متغیر را ببیند، آن متفیر به کلمات جداگانه تقسیم میشود. بنابراین:
[ multiple words here = "bar" ]این رفتار ممکن است خوب به نظر برسد، اما از نظر
[
یک خطای دستوری است. روش صحیح نوشتن آن به این شکل است:
# POSIX [ "$foo" = bar ] # درستمثال بالا در شلهای POSIX حتی اگر
foo$
با -
شروع شود، درست کار میکند، زیرا دستور [
عملکرد خود را بر اساس تعداد آرگومانهای آن تعیین میکند. فقط شلهای باستانی با این سینتکس مشکل دارند. نیازی نیست هنگام نوشتن کد جدید نگران آن باشید.
(راهحل x"$foo" را در زیر ببینید).
در Bash و بسیاری از شلهای شبیه به ksh، یک جایگزین برتر وجود دارد که از کلمه کلیدی [[
استفاده میکند.
# Bash / Ksh [[ $foo == bar ]] # درستدر این مورد نیازی به نقل قول کردن متغیر در سمت چپ
=
در [[ ]]
ندارید زیرا آنها دچار تقسیم کلمه یا گلوبینگ نمیشوند،
و حتی متغیرهای خالی نیز به درستی کار میکنند.
از طرف دیگر، نقل قول کردن آنها هم ضرری ندارد. بر خلاف [
و test
، شما همچنین میتوانید از ==
نیز استفاده کنید.
با این حال توجه داشته باشید که مقایسههایی که با [[
انجام میشوند، الگوی مطابقت را دربرابر رشته در سمت راست، انجام میدهند. برای اینکه رشته در سمت راست را literal کنید، باید آن را نقل قول کنید.
# Bash / Ksh
match=b*r
[[ $foo == "$match" ]]
دزست! بدون نقل قول نیز با الگوی b*r مطابقت میکند.
ممکن است کدی مانند این دیده باشید:
# POSIX / Bourne [ x"$foo" = xbar ] # خوب، اما معمولاً غیر ضروری.هک
x"$foo"
برای کدی که باید در شلهای بسیار قدیمی اجرا شود که [[
را ندارند و [
ابتداییتری دارند ضروری است.
توجه داشته باشید که شلهایی که به این راهحل نیاز دارند، مطابق با POSIX نیستند. چنین قابلیت portability شدیدی به ندرت یک ضرورت است و کد شما را ناخوانا (و زشت) میکند.
#آموزش #لینوکس #بش #الپیک
#bash #linux #lpic😭 8👍 3❤ 1🔥 1😨 1