Woland's Linux Journal


Kanal geosi va tili: Eron, Forscha


همه‌چیز درباره لینوکس، برنامه‌نویسی، تکنولوژی و اخبار

Связанные каналы  |  Похожие каналы

Kanal geosi va tili
Eron, Forscha
Statistika
Postlar filtri


برای فهمیدن مدت زمان کلی یک پلی‌لیست یوتوب از دستور زیر استفاده کنید:

yt-dlp --flat-playlist -qJ "URL" | jq -r '.entries[].duration' | perl -nle '$s += $_; END { printf "%d hours, %d minutes\n", $s/3600, ($s%3600)/60 }'

برای مثال:

yt-dlp --flat-playlist -qJ "https://youtube.com/playlist?list=PLpPMD23DomFWXIGEGdvdsJjtgdAUEEML4&si=rLhJDwqCwNk3BJVi" | jq -r '.entries[].duration' | perl -nle '$s += $_; END { printf "%d hours, %d minutes\n", $s/3600, ($s%3600)/60 }'

نیازمندی‌ها:
- yt-dlp
- jq
- perl

توضیحات قسمت پرل (باقیش واضحه و توضیح نیاز نداره)

فلگ n- به معنی لوپ، مشابه while
فلگ l- برای پاک کردن New Line
فلگ e- برای اجرا مانند اسکریپت

متغیر s$ برای ذخیره مدت زمان
متغیر پیش‌فرض پرل _$ که همیشه مقدار خط فعلی رو ذخیره می‌کنه که در این مورد می‌شه زمان خروجی از jq

بلوک END بعد از اتمام Iteration اجرا می‌شه
قسمت printf مجموع دقایق رو به ساعت و در نهایت مقدار باقی‌مونده رو با عملیات پیمانه (Modulo) به دقیقه‌های بعد از محاسبه ساعت اختصاص می‌ده و در نهایت با فرمت H Hours, M Minutes اون رو چاپ می کنه.

از awk هم می‌شد استفاده کرد که در اون صورت دستور این شکلی می‌شد:
awk '{s+=$1} END {printf "%d hours, %d minutes\n", s/3600, (s%3600)/60}'

ولی پرل باحال‌تره 😎

#آموزش

384 0 14 14 13

💠کلید‌های ویم در همه‌جا💠

لیست کاملی از پلاکین‌هایی که کلید‌های ویم رو در برنامه‌های مختلف فراهم می‌کنند.

👉🔗 Vim Keys Everywhere

#معرفی #ویم


Pink Orca | پینک اورکا dan repost
3/3

مقایسه تکنیکال: Static Linking vs Dynamic Linking
- ویندوز (غالباً Static/خودمحور):
برنامه‌ها ترجیح میدن تا حد امکان از کتابخونه‌های اختصاصی یا Static-Linked استفاده کنن تا Dependencyها رو به حداقل برسونن. نتیجه؟ حجم بالای فایل‌های EXE و نصبِ تکراری کتابخونه‌ها (مثل چندین نسخه از VC++ Redistributable).
- لینوکس (غالباً Dynamic/متمرکز):
پکیج‌ها به کتابخونه‌های داینامیک وابسته می‌شن که فقط یک بار نصب می‌شن و بین همه برنامه‌ها به اشتراک گذاشته می‌شن. حجم نهایی سیستم کمتر می‌شه و آپدیت امنیتی یک کتابخونه، همه برنامه‌های وابسته رو تحت پوشش قرار میده.

آمار و فکت‌های کلیدی:
- توی ویندوز ۱۰، بیش از ۱۵ نسخه مختلف از Visual C++ Redistributable ممکنه نصب باشه که هر کدوم بین ۲۰MB تا ۱۰۰MB فضا اشغال می‌کنن.
- توی لینوکس، پکیج libc6 (کتابخونه استاندارد سی) فقط یک بار نصب می‌شه و بیش از ۸۵٪ از پکیج‌های موجود در ریپازیتوری‌های معتبر بهش وابسته‌ان. حجم این پکیج حدود ۴MB هستش.
- بر اساس مستندات فنی، سیستم‌های مدیریت پکیج لینوکس از الگوریتم‌های پیشرفته برای Dependency Resolution استفاده می‌کنن تا ناسازگاری نسخه‌ها رو حذف کنن.

نکته فنی:
مکانیزم کش (Cache) پکیج منیجرها در دایرکتوری‌های خاصی (مثل /var/lib/apt/lists یا /var/cache/dnf) لیستی از تمام پکیج‌ها و وابستگی‌هاشون رو نگه می‌داره. وقتی دستور آپدیت میدی، این کش با ریپازیتوری همگام‌سازی می‌شه و Dependencyها روی آخرین نسخه‌ها چک می‌شن. توی ویندوز، چنین سیستمی به صورت مرکزی وجود نداره و هر برنامه جداگانه چک می‌کنه آپدیت جدیدی واسه DLLهای خاص خودش هست یا نه.

مسئله Checksum و امنیت:
پکیج منیجرهای لینوکس به صورت پیش‌فرض از الگوریتم‌های هشینگ مثل SHA-256 برای تأیید یکپارچگی پکیج‌ها استفاده می‌کنن. هر پکیج قبل از نصب، بررسی می‌شه تا مطمئن شه با نسخه موجود در ریپازیتوری مطابقت داره. توی ویندوز، اگرچه امضای دیجیتال برای فایل‌های اجرایی وجود داره، اما هیچ سیستم متمرکزی برای بررسی یکپارچگی DLLهای سیستمی تعریف نشده.

~> @PinkOrca 🩷


Pink Orca | پینک اورکا dan repost
2/3

پکیج منیجرها در لینوکس: داینامیک ریپازیتوری و بهینگی Dependencyها
در اکوسیستم لینوکس، سیستم‌های مدیریت پکیج (مثل apt، ‏dnf، ‏pacman) با مکانیزمی متمرکز و بهینه عمل می‌کنن. هر پکیج به شکل صریح لیست وابستگی‌هاش رو توی متادیتای خودش تعریف می‌کنه. وقتی دستور نصب اجرا می‌شه، پکیج منیجر به شکل خودکار:
‏1. Dependencyهای لازم رو از ریپازیتوری‌های مرکزی پیدا می‌کنه.
2. بررسی می‌کنه که آیا نسخه‌های نصب‌شده فعلی با نیازمندی‌های پکیج جدید Compatible (سازگار) هستن یا نه.
3. در صورت نیاز، آپگرید یا دانگرید کتابخونه‌ها رو انجام میده تا تضمین کنه همه چیز بدون Conflict (تداخل) کار می‌کنه.

مثلاً نصب یک وب‌سرور مثل nginx روی لینوکس باعث می‌شه پکیج منیجر به شکل خودکار کتابخونه‌های ضروری مثل libpcre،‏ openssl و zlib رو نصب کنه. اگر نسخه‌های موجود قدیمی باشن، پکیج منیجر نسخه‌های آپدیت شده رو از ریپازیتوری میاره. این فرایندها روی پکیج‌های باینری و متادیتاهای Precompiled (ازپیش-کامپایل‌شده) تکیه دارن که Dependency Resolution رو سریع و قابل پیش‌بینی می‌کنه.

چرا تداخل نسخه‌ها به ندرت پیش میاد؟
- کتابخونه‌ها در لینوکس معمولاً با Semantic Versioning نام‌گذاری می‌شن. مثلاً libfoo1.2 و libfoo2.0 می‌تونن همزمان نصب باشن بدون تداخل، چون اسم پکیج‌ها متفاوته.
- سیستم مدیریت پکیج از Symbolic Links و SONAME‏ (Shared Object Name) استفاده می‌کنه تا مطمئن شه برنامه‌ها به نسخه صحیح لینک می‌شن. مثلاً اگر برنامه به libc.so.6 نیاز داره، لینک سمبولیک /lib/libc.so.6 به فایل واقعی مثل libc-‌2.31‌.s‌o اشاره می‌کنه.

~> @PinkOrca 🩷


Pink Orca | پینک اورکا dan repost
1/3

‏DLL Hell در ویندوز: چالش Dependencyهای غیرمتمرکز
در سیستم‌عامل ویندوز، مسئله DLL Hell به یکی از معضلات تاریخی مدیریت وابستگی‌ها (Dependencies) تبدیل شده. DLLها (Dynamic-Link Libraries) فایل‌های کتابخونه‌ای مشترک هستن که برنامه‌های مختلف می‌تونن ازشون استفاده کنن. مشکل اصلی وقتی شروع می‌شه که دو یا چند برنامه، نسخه‌های متفاوتی از یک DLL رو نیاز دارن. مثلاً برنامه A نیاز به msvcrt.dll نسخه 1.0 داره و برنامه B به همان DLL اما نسخه 2.0 وابسته هستش. در ویندوزهای قدیمی (مثل ۹۸ یا XP)، این DLLها در مسیرهای سیستمی مشترک (مثل System32) کپی می‌شدن و نصب یک برنامه جدید می‌تونست نسخه قدیمی رو بازنویسی کنه. نتیجه؟ برنامه A با خطای Missing DLL یا Crash مواجه می‌شد.

مکانیزم Side-by-Side Assembly ‏(SxS)
در ویندوز ویستا و بعدتر معرفی شد تا این مشکل رو کاهش بده. توی این روش، هر برنامه می‌تونه نسخه خاصی از DLL رو در پوشه محلی خودش (مثل Program Files/AppName) ذخیره کنه یا از Manifest Files استفاده کنه تا نسخه دقیق DLL موردنیازش رو به سیستم معرفی کنه. اما این راهکار هم کامل نیست چون:
- حجم دیسک افزایش پیدا می‌کنه چون چندین نسخه از یک DLL توی سیستم ذخیره می‌شه.
- برنامه‌های قدیمی که از SxS پیروی نمی‌کنن هنوز می‌تونن باعث تداخل بشن.
- توسعه‌دهندگان گاهی ترجیح میدن از Static Linking استفاده کنن (کتابخونه‌ها رو مستقیماً داخل EXE برنامه کامپایل کنن) که اینم حجم فایل اجرایی رو بیشتر می‌کنه.

~> @PinkOrca 🩷


Pink Orca | پینک اورکا dan repost
فاجعهٔ Dependencyهای تکراری در ویندوز در مقابل بهینگی پکیج منیجرهای لینوکس

🤓 چرا ویندوز همیشه مجبوره یه چیز رو هزار بار نصب کنه، اما لینوکس با یه بار نصبِ هوشمند، همه چی رو تو سیستم قفل می‌کنه؟ تو این نوشته (در ۳ پارت کوتاه) می‌خونید که چجوری لینوکس با یه ترفند ساده، ۸۵٪ از دردسر Dependencyها رو حذف کرده، ولی ویندوز هنوز تو باتلاق DLLها گیر کرده!

با من همراه باشید⬇️
#لینوکس #ویندوز #سیستم_عامل #نوشته
~> @PinkOrca 🩷

400 0 13 3 13

💠اولین پلتفرم مالی کاملا آزاد و منبع باز OpenBB💠

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

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

👉🔗 OpenBB

#معرفی


یک فانکشن ساده برای ذخیره‌سازی اتوماتیک فایل در ویم


function! AutoSave()
if &modified
update
endif

call timer_start(300000, {-> AutoSave()})
endfunction

call timer_start(300000, {-> AutoSave()})



می‌تونین این کد رو در ویم‌آرسی یا بهتر از اون در ftplugin قرار بدین تا روی فایل‌هایی که می‌خواین اعمال بشه. مقدار ۳۰۰۰۰۰ با میلی‌ثانیه‌ست که می‌تونین به دلخواه تغییر بدین.

سپس قسمت زیر رو برای اتو ران شدنش استفاده کنید:

augroup AutoSave
autocmd!
augroup END


#آموزش #ویم


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
💠افزونه‌ای برای Github Cli💠

داشبورد pull requests و issues براساس فیلتر‌های دلخواه برای Github CLI (gh)

👉🔗 Github

#معرفی


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
💠آموزش ساخت بازی ماین‌سوییپ با بش💠

توی این مقاله ساخت نسخه‌ی ساده‌ای از بازی ماین‌سوییپ رو یاد خواهید گرفت.

این مطلب مباحث مهمی ازجمله کار با کدهای انسی، مدیریت وضعیت (state)، دنبال کردن پوزیشن کاربر در ترمینال، گرفتن ورودی از کاربر و استفاده از لوپ برای ساخت و ترسیم شکل‌ها در ترمینال رو پوشش می‌ده.

پ.ن: من فکر می‌کردم که این مطلب رو خیلی وقت پیش آپلود کردم، ولی آپلود نشده بود.
گیف‌های با کیفیت‌تری هم در سایت قرار گرفته.


👉🔗 Bash-Notes

#آموزش #bash #بش


یکی از اولین نسخه‌های ویم برای آمیگا

کار از آتاری شروع شد. پیشرو ویم، استیوی (ویرایشگر اس تی برای علاقه‌مندان به وی آی)، توسط تیم تامپسون برای آتاری اس تی در سال ۱۹۸۷ ایجاد شد و توسط تونی اندروز و جی.آر. (فرد) والتر توسعه یافت.

بر اساس نسخه‌ی موجود استیوی، برام مولنار در سال ۱۹۸۸ کار بر روی ویم برای کامپیوتر آمیگا را آغاز کرد، و اولین انتشار عمومی (ویم نسخه ۱.۱۴) در سال ۱۹۹۱ انجام شد.

#ویم


💠Qman💠

برنامه‌ای جدید برای خواندن صفحات راهنمای یونیکس

ویژگی‌ها:

صفحه نمایه که تمام صفحات راهنمای موجود در سیستم را به ترتیب الفبایی و سازماندهی شده بر اساس بخش نمایش می‌دهد.

صفحات برای نتایج apropos و whatis

پیوندهای متنی به صفحات راهنمای دیگر

پیوندهای متنی برای URLها و آدرس‌های ایمیل (به طور پیش‌فرض با xdg-open مدیریت می‌شود)

پیوندهای متنی درون صفحه

فهرست مطالب برای هر صفحه راهنما

نصب:
git clone -b main https://github.com/plp13/qman qman

پیش‌نیاز‌ها:

sudo pacman -S base-devel git meson libinih python-cogapp pandoc man-db man-pages

کامپایل:
cd qman
meson setup build/ src/
cd build/
meson compile
sudo meson install

👉🔗 Github

#معرفی


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
💠JNV💠

فیلتر کردن تعاملی جیسون

👉🔗 JNV

#معرفی


محتوای آزاد سهراب dan repost
امروز تولد لینوس توروالدز، توسعه دهنده کرنل لینوکس هستش.

🥳

@SohrabContents


🔹تبدیل گفتار به نوشتار🔹

نرد دیکتیشن، برنامه ساده‌ای که با استفاده از Xdotool و مدل‌های Vosk سروری برای تبدیل گفتار به نوشتار و تایپ خودکار آن در هر محیطی را فراهم می‌کند.

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

🔸نصب:

ابتدا Xdotool را نصب کنید.

سپس یک محیط مجازی برای پایتون ایجاد کنید.

python3 -m venv Dictation
cd Dictation
source bin/activate

سپس مراحل زیر را انجام دهید:
pip3 install vosk

git clone https://github.com/ideasman42/nerd-dictation.git
cd nerd-dictation
wget https://alphacephei.com/kaldi/models/vosk-model-small-en-us-0.15.zip
unzip vosk-model-small-en-us-0.15.zip
mv vosk-model-small-en-us-0.15 model

برای استفاده از برنامه به شیوه‌ی زیر عمل کنید:
./nerd-dictation begin --vosk-model-dir=./model

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

برای توقف برنامه SIGINT یا دستور زیر را وارد کنید:

./nerd-dictation end

برای تبدیل گفتار فارسی به نوشتار یک مدل فارسی دانلود کنید و مشابه مراحل بالا از آن استفاده کنید.

همچنین از این برنامه می‌تونین در توسعه برنامه‌های خود استفاده کنید. هر زبان دو مدل حجیم و کم حجم برای استفاده در محیط موبایل داره.

👉🔗 Github

#آموزش #معرفی


💠Ghostty Terminal💠


پس از مدت‌ها انتظار یک نسخه نایتلی از ترمینال گوستی منتشر شده.

این ترمینال که با زبان زیگ نوشته شده، قابلیت native os integration رو داره که به معنی استفاده‌ی ترمینال از کتابخانه‌های و sdk های سیستم‌عامل است.

سرعت بسیار بالا نکته‌ی اصلی این ترمیناله، همون‌طور که سازنده ردیس گفته، میلیون‌ها خط دیباگینگ رو در یک آن رندر می‌کنه.

این ترمینال همچنین یک پنجره‌ی inspector مشابه مرورگر‌ها ایجاد کرده که بهتون کمک می‌کنه برنامه‌های ترمینالی رو دیباگ کنین.

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

👉🔗 Download
#معرفی


#fun #meme


💠کلاینت اختصاصی V2rayN برای لینوکس💠

👉🔗 Github

#معرفی

1.9k 1 65 16 24

Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
💠FlowLauncher💠


فلولانچر ناجی کاربران لینوکس که در ویندوز گرفتار دکمه استارت شده‌اند!


لانچر برای ویندوز، مشابه روفی و دی‌منیو

برخی از قابلیت‌های فلولانچر:
🔹جستجوی سریع برنامه‌ها
🔸فایل‌ها
🔹جستجوی وب
🔸بوکمارک‌ها
🔹دستورات سیستمی
🔸دستورات شل
🔹کنترل پنل
♦️و بسیاری دیگر است.

نصب:

winget install "Flow Launcher"


یا

scoop install Flow-Launcher


یا دریافت exe از سایت یا مخزن گیتهاب


لینک:

👉🔗 FlowLauncher
👉🔗 Github

#معرفی


💠WaveTerm💠

ترمینالی جدید که می تواند ویجت های گرافیکی را در پنجره‌ی خود میزبانی کند.


وِیو‌ترم شامل یک ترمینال پایه، فایل‌منیجر، نمایش فایل (تصاویر، فیلم و ... )، یک ویرایشگر گرافیکی (برای فایل های کد/متن)، یک مرورگر وب، و چت هوش مصنوعی یکپارچه است.

🔹از ریدمی گیتهاب:
ویوترم فقط یک شبیه ساز ترمینال نیست بلکه یک تجدید نظر در مورد چگونگی ساخت ترمینال است.
برای مدت طولانی شکافی عظیم بین CLI و وب وجود داشته است.

اگر برنامه‌های سریع، قابل دسترسی با صفحه‌کلید از CLI استفاده می‌کنید، اما اگر می‌خواهید رابط‌های گرافیکی، ویجت‌های لوکال، کپی/پیست، اندازه‌های قلم متغیر و ... را داشته باشید، باید از وب استفاده کنید. هدف ویو‌ترم پر کردن این شکاف است.

ویوترم برای لینوکس، ویندوز و مک قابل دانلود است.

🔹دانلود:

👉🔗 WaveTerm Download

#معرفی

1.4k 1 58 15 21
20 ta oxirgi post ko‘rsatilgan.