Pink Orca | پینک اورکا – Telegram
Pink Orca | پینک اورکا
2.42K subscribers
414 photos
118 videos
45 files
318 links
درود به همه.
به کانال من خوش اومدین :)

🔗 دسته‌بندی پست‌ها: t.me/PinkOrca/5

انجمن: برای عضویت پیام بفرستید.

ادمین: @Pink0rca
اگر پستی ایراد علمی داره حتما بگید.

دونیت: Daramet.com/PinkOrca
💥 دربارهٔ من: PinkOrca.net
Download Telegram
~> دامنهٔ رایگان

⚡️ تو namecheap.com که نیاز به معرفی نداره، می‌تونید با کد تخفیف freedom24 به شکل کاملا رایگان دامنه .news برای یک‌سال تهیه کنید که تو حالت عادی تقریبا ۳۰ دلار قیمتش بود...

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

پ.ن:
این خبر بمب رو دوستمون آقا امین تو گروه فرستاد و گفتم شما رو هم در جریان بذارم🔥
#شبکه #معرفی #ترفند
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍3👎1
~> Gapless 🎵
چند وقت پیشا یه پخش‌کنندهٔ موسیقی معرفی کرده بودم که با وجود زیبایی و صرفا داشتن امکانات مورد نیاز و نه اضافه، یه سری ایرادات داشت... که پستش رو پاک کردم. همون روز سهراب این پلیر Gapless رو بهم معرفی کرده بود و امتحانش کردم و خلاصه راضی بودم و هنوز هم استفادش می‌کنم ازش.

⚙️ راستی من از AUR نصبش کردم (پکیج g4music-git )
🔗 صفحهٔ گیت‌هاب

#معرفی #لینوکس
~> @PinkOrca 🩷
👍92
Pink Orca | پینک اورکا
با Telemetrio به بزرگترین کاتالوگ کانال‌های تلگرام دسترسی داشته باشید و از امکانات جذابی که در اختیارتون می‌ذاره، از جمله تحلیل دقیق چنل‌ها استفاده کنید. 🔗 Telemetr.io پ.ن: گاهی وقتا هم هست که برای هدف خاصی نیاز به گشتن در تاریخچهٔ یک چنل دارید، این ابزار…
ظاهرا به طور میانگین افت داشتیم💀
بیشتر بخاطر کم‌کاریای خودمه... خلاصه مرسی که تو ۲۰۲۴ هم همراه من بودین
#telemetrio2024

پ.ن: تعداد پست‌هایی که گذاشتم تو یک سال گذشته از این رقم کمتره احتمالا و این آمار با توجه به crawl کردن تمام فعالیت‌ها از جمله پست‌های موقت و ... بوده.
#حرف_با_شما
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
163👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🤷‍♂️🤷‍♂️🤷‍♂️ خواستم میانگین مدت زمان تمام ویدیوهای دایرکتوری رو که مربوط به درس ریاضی عمومی می‌شدن بدست بیارم و برای این کار مثل همیشه رفتم سراغ کامندلاین (و کامندش هم از یه AI خواستم برای صرفه‌جویی در زمان) :
parallel -k ffprobe -v quiet -select_streams v:0 -show_entries format=duration -of csv=p=0 ::: *.mp4 | awk '{sum+=$1} END {printf "Average duration: %.2f seconds (%.2f minutes)\n", sum/NR, (sum/NR)/60}'

به همین سادگی😁

پ.ن:
چند وقت یه‌بار اینطور چیزا رو پست می‌کنم که فراموش نکنیم کارا چقدر تو کامندلاین می‌تونن ساده‌تر باشن💥
#ترفند #لینوکس
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
11🍾5👍4
درگیریِ مگنس و FIDE سر شلوار جین!

مگنس کارلسن، قهرمان پنج دوره شطرنج جهان، توی مسابقات قهرمانی شطرنج رپید و بلیتز جهان ۲۰۲۴ با یه اتفاق عجیب روبرو شد. داستان از اونجا شروع شد که کارلسن روز دوم مسابقات با شلوار جین اومد نیویورک و این خلاف قوانین FIDE بود.

کارلسن که روز اول عملکرد خوبی نداشت، روز دوم تونست ۵ امتیاز از ۸ بازی به دست بیاره. ولی داوران بهش تذکر دادن که شلوار جین مجاز نیست. اول بهش جریمه دادن و بعد گفتن باید همون موقع شلوارش رو عوض کنه، وگرنه نمی‌تونه بازی کنه. کارلسن که ظاهراً حتی کفش‌هاش رو عوض کرده بود ولی به شلوار جین توجه نکرده بود، گفت فردا شلوارش رو عوض می‌کنه. ولی داورها قبول نکردن.

این قضیه باعث شد کارلسن از دور نهم مسابقات کنار گذاشته بشه. کارلسن که از این برخورد FIDE عصبانی شده بود، تصمیم گرفت از مسابقات بلیتز که قرار بود یکشنبه برگزار بشه هم انصراف بده. حتی توی توییتر عکس شلوار جینش رو گذاشت و به FIDE گفت "به درک که قوانین‌تون رو اجرا می‌کنین".

امیل سوتوفسکی، مدیرعامل FIDE توضیح داد که کارلسن اخراج نشده و فقط از دور نهم کنار گذاشته شده. یعنی می‌تونست برگرده و بازی کنه، ولی خودش نخواست. جالبه که فقط کارلسن نبود که درگیر این قضیه شد. ایان نپومنیاچی، نایب قهرمان دو دوره جهان هم ۲۰۰ دلار جریمه شد ولی برخوردش با قضیه متفاوت بود و حتی شوخی کرد که امیدواره این پول صرف تحقیقات مد شطرنج بشه!

این اتفاق توی تاریخ شطرنج کم‌سابقه بوده. مگنس کارلسن که از ۲۰۱۳ تا ۲۰۲۳ قهرمان شطرنج کلاسیک جهان بود و هنوز هم بالاترین ریتینگ تاریخ شطرنج رو داره (۲۸۸۲)، همیشه منتقد FIDE بوده. این اتفاق باعث شد رابطه‌ش با FIDE بدتر بشه. البته قوانین FIDE درباره لباس خیلی واضحه و جین رو ممنوع کرده، ولی سخت‌گیری درباره عوض کردن فوری شلوار چیزی بود که کارلسن رو عصبانی کرد.

#شطرنج #نوشته
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
صرفا یک یادآوری که الکامپ گیلان از ۱۱ تا ۱۴ دی‌ماه خواهد بود، اگه دوست داشتین تشریف بیارید.
#رویداد
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
✖️ دوستان از اونجایی که دیدم خیلیاتون برای حساب کردن چیزا از ماشین‌حساب‌های GUI استفاده می‌کنید و حواستون نیست که می‌تونید به همین راحتی تو شل اینطوری انجامش بدید، تصمیم گرفتم این پست رو بذارم😂
echo $((اینجا عبارت رو بذارید))


پ.ن:
ماشین‌حساب‌های CLI و GUI جالب زیادی هم وجود داره ولی بدرد اکثرمون نمی‌خورن، می‌تونیم با همینا کارمون رو راه بندازیم.
#ترفند #لینوکس
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141🔥1🤣1
~> qalc

‏qalc یک ابزار قدرتمند محاسباتی هستش که به عنوان یک پروژه اپن‌سورس توسط Hanna Knutsson توسعه داده شده. این برنامه بخشی از کتابخونه libqalculate هستش که از سال ۲۰۰۳ شروع به توسعه شده و تا امروز به طور مداوم آپدیت می‌شه.

برخلاف ماشین‌حساب‌های معمولی، qalc از یک موتور محاسباتی پیشرفته استفاده می‌کنه که می‌تونه عملیات‌های پیچیده ریاضی رو انجام بده. این برنامه از CAS‏ (Computer Algebra System) برای محاسبات نمادین استفاده می‌کنه که باعث می‌شه بتونه معادلات پیچیده رو حل کنه و با متغیرها کار کنه.

یکی از ویژگی‌های کلیدی qalc، پشتیبانی از بیش از ۱۰۰۰ واحد اندازه‌گیری و توانایی تبدیل اتوماتیک بین اون‌هاست. این برنامه همچنین می‌تونه نرخ ارزها رو به صورت آنلاین آپدیت کنه و محاسبات مالی انجام بده.

از نظر تکنیکی، qalc از یک پارسر پیشرفته استفاده می‌کنه که می‌تونه عبارت‌های ریاضی رو به صورت طبیعی تشخیص بده. مثلاً می‌تونید عبارت "five meters plus two centimeters" رو وارد کنید و برنامه اون رو می‌فهمه و محاسبه می‌کنه.

قابلیت‌های پیشرفته qalc شامل:
- محاسبات برداری و ماتریسی
- کار با اعداد مختلط
- توابع مثلثاتی و هایپربولیک
- محاسبات با دقت بالا (arbitrary-precision)
- تشخیص هوشمند واحدها و تبدیل خودکار
- پشتیبانی از توابع RPN ‏(Reverse Polish Notation)
- کار با فاکتوریل‌ها و ترکیبیات
- محاسبات آماری و احتمالات

این برنامه قابلیت کانفیگ گسترده‌ای داره و می‌شه تنظیمات مختلفی مثل دقت اعشار، فرمت نمایش اعداد، واحدهای پیش‌فرض و حتی متغیرهای کاربری رو تغییر داد. همه این تنظیمات در فایل‌های کانفیگ ذخیره می‌شن و می‌شه اون‌ها رو بین سیستم‌های مختلف منتقل کرد.

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

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

⚙️ برای داشتنش هم کافیه با پکیج منیجرتون libqalculate رو نصب کنید.

مرسی از علیرضا برای پیشنهادش
#معرفی #لینوکس #ریاضی
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥21
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2👎1😢1
سال خوبی داشته باشید❤️
2025/01/01 CE
پ.ن: ایده بهتری ندارم، پارسال هم همینطوری تبریک گفتم😂
#متفرقه #حرف_با_شما
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣126👎1
👩‍💻👩‍💻👩‍💻👩‍💻👩‍💻👩‍💻👩‍💻
مرورگرهای وب چطور کار می‌کنن؟

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

وقتی یک URL رو وارد می‌کنی، مرورگر اول باید IP سرور رو پیدا کنه. برای این کار از DNS استفاده می‌کنه که مثل یک دفترچه تلفن می‌مونه و آدرس‌های وب رو به IP تبدیل می‌کنه. مثلاً وقتی example.com رو می‌نویسی، مرورگر از DNS می‌پرسه که IP این دامنه چنده.

بعد از پیدا کردن IP، مرورگر یک درخواست HTTP یا HTTPS به سرور می‌فرسته. این درخواست شامل اطلاعات مختلفی مثل نوع مرورگر، سیستم‌عامل و هدرهای دیگه هستش. اگه از HTTPS استفاده بشه، یک لایه امنیتی SSL/TLS هم اضافه می‌شه که اطلاعات رو رمزنگاری می‌کنه.

سرور جواب می‌ده و فایل‌های HTML‌‏، ‎CSS و JavaScript رو می‌فرسته. حالا مرورگر باید این فایل‌ها رو پردازش کنه. اول HTML رو می‌خونه و یک DOM Tree می‌سازه. DOM Tree در واقع ساختار صفحه رو نشون می‌ده. همزمان CSS رو هم پردازش می‌کنه و CSSOM می‌سازه که استایل‌های صفحه رو مشخص می‌کنه.

موتور رندر مرورگر (مثلاً Blink در کروم یا Gecko در فایرفاکس) DOM و CSSOM رو با هم ترکیب می‌کنه و Render Tree می‌سازه. Render Tree فقط المان‌هایی رو شامل می‌شه که باید نمایش داده بشن. مثلاً المان‌های display: none توش نیستن.

بعد از ساخت Render Tree، مرورگر Layout رو انجام می‌ده که مشخص می‌کنه هر المان کجای صفحه قرار بگیره و چقدر فضا اشغال کنه. آخرین مرحله هم Paint هستش که المان‌ها رو روی صفحه می‌کشه.

‏JavaScript هم توی این بین اجرا می‌شه و می‌تونه DOM رو تغییر بده. موتور JavaScript (مثل V8 در کروم) کد رو اجرا می‌کنه و تغییرات رو اعمال می‌کنه. هر تغییری در DOM ممکنه باعث بشه مرورگر دوباره Layout و Paint رو انجام بده که به این فرآیند Reflow می‌گن.

مرورگرها برای سریع‌تر کار کردن از تکنیک‌های مختلفی استفاده می‌کنن. مثلاً کروم برای هر تب یک پراسس جدا می‌سازه تا اگه یک تب کرش کرد، بقیه تب‌ها کار کنن. همچنین از GPU برای شتاب‌دهی گرافیکی استفاده می‌کنن و فایل‌های استاتیک رو توی کش ذخیره می‌کنن تا سریع‌تر لود بشن.

آخرین بخش مهم، وب APIs هستن که به جاوااسکریپت اجازه می‌دن با سیستم‌عامل و دستگاه تعامل داشته باشه. مثلاً WebRTC برای تماس تصویری، WebGL برای گرافیک ۳ بعدی و WebAssembly برای اجرای کد با سرعت بالا استفاده می‌شن.

#علوم_کامپیوتر #نوشته #شبکه
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥54
~> Oh Shit, Git!?!

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

بنابراین اینجا چند مورد از موقعیت‌های بدی که نویسنده دچارش شده بود رو براتون گذاشته، و روش اینکه چطوری در نهایت از پس اونا بر اومده، به زبان فارسی.

🔗 مطالعه نوشته
🔗 صفحه گیت‌هاب

پ.ن:
توضیحات کپشن از خود وب‌سایت OhShitGit کپی شده...
#گیت #ترفند #میم #فان #راهنما #معرفی
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162👎2🤣2💔1
چشم‌انداز سال ۲۰۲۵ در حوزه تکنولوژی و نرم‌افزار

سال ۲۰۲۵ قراره تغییرات جالبی رو در دنیای تکنولوژی شاهد باشیم. یکی از مهم‌ترین این تغییرات، استفاده گسترده از sched-ext در لینوکس هستش. این کلاس جدید اسکجولینگ که از سال ۲۰۲۴ معرفی شده، به برنامه‌نویس‌ها اجازه می‌ده تا اسکجولر CPU رو با استفاده از برنامه‌های BPF به صورت یوزراسپیس لود کنن. این قابلیت باعث می‌شه خلاقیت‌های زیادی در زمینه اسکجولینگ شکل بگیره و اسکجولرهای تخصصی برای کاربردهای مختل مثل گیمینگ توسعه پیدا کنه.

زبان Rust هم در سال ۲۰۲۵ حضور پررنگ‌تری در کرنل لینوکس خواهد داشت. با اینکه تا الان بیشتر کدهای Rust در کرنل زیرساختی و مفهومی بودن، ولی در ۲۰۲۵ کدهایی که کاربرها مستقیماً باهاشون سروکار دارن هم با Rust نوشته می‌شه. همچنین تعداد فیچرهای ناپایدار زبان که کرنل بهشون نیاز داره، با پایدار شدن این فیچرها توسط کامیونیتی Rust کاهش پیدا می‌کنه.

یکی از نگرانی‌های جدی در ۲۰۲۵، احتمال تلاش‌های جدید برای نفوذ به کدبیس‌های مهم، مشابه اتفاقی که برای XZ افتاد، هستش. با وجود بررسی‌های گسترده کدهای موجود، احتمال وجود تکنیک‌های جدید برای حمله همچنان بالاست. به خصوص که سازمان‌های دولتی و گروه‌های با منابع مالی قوی انگیزه زیادی برای این کار دارن.

پروژه‌هایی که فقط یک نگهدارنده (maintainer) دارن، در سال ۲۰۲۵ به عنوان پروژه‌های پرریسک شناخته می‌شن. این موضوع فقط به خاطر مسائل امنیتی نیست، بلکه مشکلاتی مثل خستگی مفرط و کمبود وقت برای رسیدگی درست به پروژه هم در این موضوع نقش دارن.

یکی دیگه از چالش‌های ۲۰۲۵، استفاده از کدهای تولید شده توسط هوش مصنوعی هستش. احتمالاً یک پروژه بزرگ متوجه می‌شه که مقدار زیادی کد AI-generated رو مرج کرده و این موضوع زمانی مشخص می‌شه که نویسنده کد نتونه توضیح بده کد دقیقاً چطور کار می‌کنه. همزمان، تلاش‌هایی برای ساخت سیستم‌های AI آزاد و اپن‌سورس شکل می‌گیره که روی کاهش منابع مورد نیاز این سیستم‌ها تمرکز دارن.

در حوزه سخت‌افزار، محصولات Cloud-base بیشتری به خاطر ورشکستگی یا بی‌توجهی سازنده‌هاشون از کار می‌افتن. مشکلات مربوط به نشت اطلاعات و مانیتورینگ غیرمجاز هم ادامه پیدا می‌کنه - مثل ماجرای نشت اطلاعات خودروهای برقی فولکس‌واگن یا جمع‌آوری داده توسط ایرفرایرها. این موضوع می‌تونه فرصت خوبی برای راهکارهای اپن‌سورس مثل Home Assistant باشه تا روش بهتری برای مدیریت داده‌های شخصی ارائه بدن.

همچنین در ۲۰۲۵، علاقه به توزیع‌های لینوکس برای موبایل دوباره افزایش پیدا می‌کنه. در روزهای اولیه اندروید، نصب ROM‌های کاستوم مثل CyanogenMod خیلی رایج بود و به نظر می‌رسه این روند با توجه به نگرانی‌های امنیتی و حریم خصوصی، دوباره شکل می‌گیره.

سخت‌افزارهای کاملاً اپن‌سورس در سال ۲۰۲۵ بیشتر در دسترس قرار می‌گیرن. مثلاً OpenWrt One که در سال ۲۰۲۴ عرضه شد، تمام نسخه‌های تولید شده‌اش خیلی سریع فروش رفت. این نشون می‌ده که کاربرها علاقه زیادی به سخت‌افزارهایی دارن که به طور کامل مالکیتش دست خودشون باشه. کامیونیتی اپن‌سورس هم دانش و ابزارهای لازم برای ساخت این سخت‌افزارها رو داره و احتمالاً پروژه‌های جالبی در این زمینه در سال ۲۰۲۵ راه‌اندازی می‌شه.

یکی از چالش‌های جدی در سال ۲۰۲۵، مشکلات مالی فاندیشن‌هایی هستش که از پروژه‌های اوپن‌سورس حمایت می‌کنن. این روند از سال ۲۰۲۴ شروع شده و به نظر می‌رسه با توجه به شرایط اقتصادی، سال ۲۰۲۵ هم برای این سازمان‌ها که به کمک‌های مالی وابسته هستن، سال سختی باشه.

البته احتمالاً در سال ۲۰۲۵ فاندیشن‌های جدیدی شکل می‌گیرن که هدفشون حمایت از maintainer‌ها هستش. با اینکه شرکت‌های زیادی به پروژه‌های اوپن‌سورس کمک می‌کنن، ولی معمولاً برای حمایت از نقش maintainer تمایل کمتری نشون می‌دن. شاید بشه این شرکت‌ها رو تشویق کرد که از یک نهاد مستقل حمایت کنن که هدفش بهبود وضعیت maintainer‌ها در پروژه‌های خاص هستش. با این حال، به نظر نمی‌رسه تا پایان سال ۲۰۲۵ مشکل کمبود حمایت از maintainer‌ها به طور کامل حل بشه.

یکی دیگه از چالش‌های سال ۲۰۲۵، تأثیر تنش‌های جهانی روی کامیونیتی اپن‌سورس هستش. به نظر می‌رسه دنیا در مسیر صلح‌آمیزی حرکت نمی‌کنه و حتی اگه درگیری جدیدی هم شروع نشه، همین درگیری‌های موجود روی کامیونیتی توسعه‌دهنده‌ها تأثیر می‌ذاره. ممکنه توسعه‌دهنده‌هایی که از مناطق درگیر می‌آن، بدون اینکه مسئولیت مستقیمی در اقدامات دولت‌ها یا کارفرماهاشون داشته باشن، از کامیونیتی کنار گذاشته بشن.


🔗 Source
#تکنولوژی #اخبار_تکنولوژی #نوشته
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🤣2
This media is not supported in your browser
VIEW IN TELEGRAM
شما می‌دونستید همچین فیچری تو کیبوردهای گوشیا وجود داره؟!
#ترفند
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28😁10🤯5👎21
بهترین ریپازیتوریِ گیت‌هاب که تو این چند وقته دیدم!

احتمالا خیلیاتون g4f رو بشناسید، باهاش می‌تونید به کمک منابع مختلف از انواع مدل‌های مولد متنی و تصویری هوش مصنوعی مثل GPT-4o یا 3.5 sonnet و... به شکل کاملا رایگان استفاده کنید

من اینطوری نصبش کردم رو آرتیکس:
pipx install "g4f[all]" --include-deps --force

شما با توجه به سیستم‌عامل خودتون هرطوری که دوست داشتید نصبش کنید، می‌تونید یه سر به گیت‌هابش بزنید واسه اطلاعات بیشتر...
https://github.com/xtekky/gpt4free

برای استفادش تو مرورگرتون بعد از نصب کافیه کامند زیر رو وارد کنید:
g4f gui

#معرفی #هوش_مصنوعی
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍4🔥3👎1
فاجعهٔ Dependencyهای تکراری در ویندوز در مقابل بهینگی پکیج منیجرهای لینوکس

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

با من همراه باشید⬇️
#لینوکس #ویندوز #سیستم_عامل #نوشته
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍65
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 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍144😁1
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 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍107
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 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
👍167
چرا مسیحی نیستم (برتراند راسل).pdf
2.4 MB
~> Why I Am Not a Christian (پیشنهادی)
"چرا من مسیحی نیستم" کتابی هستش که برتراند راسل در سال ۱۹۲۷ نوشته. این کتاب در اصل یک سخنرانی بوده که راسل توی انجمن ملی سکولار لندن ارائه کرده و بعدا تبدیل به کتاب شده.
راسل توی این کتاب به صورت سیستماتیک دلایلی که باعث شدن مسیحیت رو رد کنه توضیح می‌ده. یکی از مهم‌ترین بخش‌های کتاب، نقد برهان علیت هستش که توسط توماس آکویناس مطرح شده بود. راسل می‌گه که این برهان منطقی نیست چون اگه هر چیزی باید علتی داشته باشه، پس خود خدا هم باید علتی داشته باشه.

توی بخش دیگه‌ای از کتاب، راسل به مسئله رنج و درد در جهان می‌پردازه. اون می‌گه چطور ممکنه خدایی که می‌گن مهربون و قادر مطلق هستش، اجازه بده این‌همه درد و رنج توی دنیا وجود داشته باشه؟

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

کتاب با زبان ساده و در عین حال دقیق نوشته شده و تاثیر زیادی روی جنبش‌های آتئیستی قرن بیستم گذاشته. جالبه بدونید که این کتاب توی زمان انتشارش خیلی جنجالی شد و حتی باعث شد راسل از تدریس توی کالج City College of New York محروم بشه.

راسل توی این کتاب به مسائل اخلاقی هم می‌پردازه و می‌گه که می‌شه بدون دین هم اخلاق‌مدار بود. اون معتقد بود که اخلاق مبتنی بر عقل و همدلی انسانی می‌تونه جایگزین اخلاق دینی بشه.

این کتاب تا امروز به بیش از ۴۰ زبان ترجمه شده و یکی از تاثیرگذارترین آثار در زمینه نقد دین به حساب میاد. نسخه اصلی کتاب حدود ۶۰ صفحه هستش و توی اون راسل با دقت و ظرافت خاصی استدلال‌هاش رو مطرح می‌کنه.

#متفرقه #کتاب
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
16👎11👍6🤣3
~> Fuzzy Search

قبل از اینکه از جستجوی فازی بگیم، لازمه یکم از منطق فازی بدونیم...
منطق فازی که در سال ۱۹۶۵ توسط پروفسور لطفی‌زاده معرفی شد، یک رویکرد ریاضی برای مدل‌سازی عدم قطعیت هستش. برخلاف منطق کلاسیک که فقط صفر و یک رو می‌شناسه، منطق فازی می‌تونه مقادیر بین این دو رو هم در نظر بگیره.

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

‏۱. Levenshtein Distance ‏(Edit Distance):
این الگوریتم تعداد تغییراتی که لازمه تا یک رشته به رشته دیگه تبدیل بشه رو محاسبه می‌کنه. مثلاً فاصله "سلام" و "سلم" برابر ۱ هستش چون فقط یک حرف حذف شده.

def levenshtein(s1, s2):
if len(s1) < len(s2):
return levenshtein(s2, s1)
if len(s2) == 0:
return len(s1)
previous_row = range(len(s2) + 1)
for i, c1 in enumerate(s1):
current_row = [i + 1]
for j, c2 in enumerate(s2):
insertions = previous_row[j + 1] + 1
deletions = current_row[j] + 1
substitutions = previous_row[j] + (c1 != c2)
current_row.append(min(insertions, deletions, substitutions))
previous_row = current_row
return previous_row[-1]


‏۲. Soundex:
این الگوریتم کلمات رو براساس تلفظشون کد‌گذاری می‌کنه. مثلاً "Smith" و "Smythe" کد یکسانی می‌گیرن چون تلفظ مشابهی دارن. این الگوریتم خیلی توی سیستم‌های CRM استفاده می‌شه.

‏۳. N-gram:
این تکنیک رشته‌ها رو به قطعه‌های n حرفی تقسیم می‌کنه و شباهت‌شون رو می‌سنجه. مثلاً برای کلمه "hello" با n=2 داریم: "he", "el", "ll", "lo"

یک نمونه کاربردی از جستجوی فازی توی Elasticsearch هستش که از تکنیک‌های مختلفی مثل Fuzzy Query استفاده می‌کنه:

{
"query": {
"fuzzy": {
"noscript": {
"value": "تهرن",
"fuzziness": "AUTO"
}
}
}
}


شرکت‌های بزرگ از ترکیب این الگوریتم‌ها استفاده می‌کنن. مثلاً اسپاتیفای از الگوریتم‌های فازی برای جستجوی موزیک استفاده می‌کنه که حتی اگه اسم آهنگ رو اشتباه بنویسی، می‌تونه نتیجه درست رو پیدا کنه.

یکی از چالش‌های اصلی جستجوی فازی، تنظیم threshold هستش. اگه خیلی پایین باشه نتایج نامرتبط زیاد می‌شن و اگه خیلی بالا باشه ممکنه نتایج مفید رو از دست بدیم. معمولاً مقدار ۰.۸ یا ۸۰٪ نقطه شروع خوبی هستش.

برای زبان‌های غیرانگلیسی مثل فارسی، باید ملاحظات خاصی در نظر گرفته بشه. مثلاً حروف مشابه مثل "ک" و "گ" یا تشخیص کلمات مرکب. کتابخونه‌هایی مثل hazm برای فارسی این قابلیت‌ها رو فراهم می‌کنن.

#برنامه_نویسی #علوم_کامپیوتر #نرم_افزار #ریاضی #نوشته
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
26👍10🔥3🍾1