Woland's Linux Journal


Гео и язык канала: Иран, Фарси
Категория: Технологии


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

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

Гео и язык канала
Иран, Фарси
Категория
Технологии
Статистика
Фильтр публикаций


درآمدی به ابزارهای یونیکس

این برنامه‌ی آموزشی با زبان بش نوشته شده و کار با شل و ابزارهای اون رو به شما یاد می‌ده.

👉🔗 Github

#آموزش #bash $بش


پنجره‌های چسبان در i3wn

از نسخه 4.11 به بعد امکان چسبان Sticky کردن یک پنجره وجود دارد. به این معنی که آن پنجره در هنگام تعویض WorkSpace شما را دنبال خواهد کرد.

bindsym $mod+s sticky toggle

#آموزش #i3wm

1k 0 12 3 17

💠آموزش نصب ‌Sql Server در Docker روی لینوکس💠

نخست نگاره (ایمیج) داکر را دریافت می‌کنیم:
docker pull mcr.microsoft.com/mssql/server:2022-latest

سپس با بهره‌گیری از نگاره، یک آوند (کانتینر) می‌سازیم:
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2022-latest

قسمت گذرواژه را با گزاره دلخواه خود جایگزین کنید.

حالا می‌توانیم به آوند وارد شویم:
docker exec -it sql1 "bash"

وارد پوسته‌ی SQL شویم:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U -P ""

و یک پایگاه‌داده و میز نوین بسازیم:
CREATE DATABASE TestDB;
GO

USE TestDB;

CREATE TABLE Inventory
(
id INT,
name NVARCHAR (50),
quantity INT
);

INSERT INTO Inventory
VALUES (1, 'banana', 150);

INSERT INTO Inventory
VALUES (2, 'orange', 154);

SELECT *
FROM Inventory
WHERE quantity > 152;
GO

حالا Sql Server به درستی روی سامانه‌ی لینوکس شما برنشانده شده و می‌توانید با به‌کارگیری برنامه‌های گردانش دلخواه خود از آن بهرمند شوید.

در نویسه‌ای دیگر به ADS خواهیم پرداخت.

#آموزش

987 0 19 14 16

متعصبان راست قربانی دیگری گرفتند!

این هفتهُ هکتور مارتین، توسعه‌دهنده‌ی ارشد آساهی لینوکس و نگه‌دارنده‌ی کرنل لینوکس برای پردازنده‌ی اپل آرم، به علت تعصبات و جدل‌های بی‌پایان درباره‌ی استفاده از راست، از سمت خود کناره‌گیری کرد!

به نظر شما علت این همه تعصب و مداخله در میان طرفداران راست چیه؟

#خبر

910 0 14 8 28

💠به زودی مایکروسافت WSL از آرچ لینوکس میزبانی خواهد کرد💠

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

مایکروسافت که یک بار لینوکس را «سرطان» نامیده بود، اکنون آن را با لبخندی دوستانه و با منافع میلیارد دلاری در سر پذیرفته است. و نشانه واضح این دوستی، بدون شک، WSL است.

👉🔗 Link
#خبر

1.6k 0 23 12 34

کن تامپسون سازنده یونیکس ۸۲ ساله شد.

کن تامپسون خالق یونیکس، کسی که به همراه دنیس ریچی خالق زبان سی، جهان را برای همیشه عوض کرد امروز ۸۲ سالگی خود را جشن گرفت.
🎉🥳

#خبر

2.7k 1 30 18 59

Репост из: محتوای آزاد سهراب
همینطور برگردیم به اخبار تکنولوژی خودمون

شما شاید نشنیده باشید ولی یک ساعت هوشمندی بود به اسم Pebble سال ۲۰۱۳ معرفی شد که یک سیستم عامل انحصاری داشت و بنا به دلایلی در سال ۲۰۱۶ شرکت Pebble به شرکت Fitbit فروخته شد و ساخت این ساعت ها به پایان رسید.


حالا از تاریخچه که رد بشیم، گوگل ۳ روز پیش سیستم‌عامل این ساعت هوشمند رو اوپن سورس کرده و الان سورس کدش در دسترسه و چند نفر گفتن که قراره دوباره این ساعت رو به زندگی برگردونن.



سورس‌کد سیستم‌عاملش


#Foss
@SohrabContents


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

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}'

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

#آموزش

1.5k 0 18 14 16

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

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

👉🔗 Vim Keys Everywhere

#معرفی #ویم


Репост из: Pink Orca | پینک اورکا
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 | پینک اورکا
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 | پینک اورکا
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 | پینک اورکا
فاجعهٔ Dependencyهای تکراری در ویندوز در مقابل بهینگی پکیج منیجرهای لینوکس

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

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

927 0 20 3 16

💠اولین پلتفرم مالی کاملا آزاد و منبع باز 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


#آموزش #ویم


Видео недоступно для предпросмотра
Смотреть в Telegram
💠افزونه‌ای برای Github Cli💠

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

👉🔗 Github

#معرفی


Видео недоступно для предпросмотра
Смотреть в Telegram
💠آموزش ساخت بازی ماین‌سوییپ با بش💠

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

این مطلب مباحث مهمی ازجمله کار با کدهای انسی، مدیریت وضعیت (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

#معرفی


Видео недоступно для предпросмотра
Смотреть в Telegram
💠JNV💠

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

👉🔗 JNV

#معرفی

Показано 20 последних публикаций.