ترفندهای برنامه‌نویسی
170 subscribers
27 photos
3 videos
22 files
614 links
Download Telegram
اول swap بود
توی لینوکس اینطوری دیدن که اطلاعاتی که توی رم میرن به صورت page درنظر گرفته میشن و خب ایده این بود که اگر ما کلی اطلاعات وارد رم کردیم و در واقع page ها زیاد شدن و رم داره به سمت پر شدن پیش می‌ره باید چیکار کرد؟ یک سری سرویس oom killer یا همچین چیزی درست کردن که نذازه رم پر بشه و سیستم هنگ کنه و از دست بره بلکه بیان در یک مرحله‌ی حساس و یک خط قرمز که رسید pageهای قدیمی‌تر که باز هستن رو کیل کنند
سوآپ چی شد؟ گفتن خب همون اول نیایم کیل کنیم، پیج‌های قدیمی رو میفرستیم روی هارد سیستم و پارتیشن سوآپ که یجوری رم مجازی هست. این برای مواقعی که رم خیلی زیادی لازم میشد اما همه‌ی اطلاعات رم رو نیازی نبود در سرعت بالا استفاده کنیم خیلی خوب جواب میداد ولی سرعتش وابسته به سرعت هارد دیسک هست که امروزه با اومدن SSD این سرعت خیلی سریع شده ولی اصلا قابل قیاس با سرعت رم نیست. بازم اگر اطلاعات زیاد بشه اون بحث کیلر مطرح میشه

بعدا zsawp اضافه شد، تو این یکی گفتن خب بیایم قبل از استفاده از پارتیشن سوآپ یک حرکتی بزنیم، اطلاعات یا همون پیج‌ها رو فشرده کنیم ولی نفرستیم روی هارد، اول توی همون رم نگهداری میکنیم و اگر دیدیم رم داره پر میشه میفرستیم روی سوآپ و البته فشرده شده هم میفرستیم روی سوآپ، اینطوری باز سرعت بهتره چراکه هنوز اطلاعات توی رم هستن و کمتر به پارتیشن سوآپ میرن اما یک هزینه‌ی کمپرس و دیکمپرس شدن اضافه شده که البته به اون سرعت بدست آمده کاملا میارزه این هزینه

و حالا zram چیه؟ یکی پیدا شد گفت آقا ما اصلا پارتیشن سوآپ نسازیم، هرچی هست توی همین رم باشه و همون فلسفه فشرده کردن pageهای بلا استفاده رو پیاده سازی کردن و نتیجه رو توی رم جاسازی میکنن فقط برای سیستم یک پارتیشن سوآپ مجازی میسازن که فکر کنه سوآپ داره

کرنل لینوکس در حالت پیشفرض (اکثر توزیع‌ها) روی حالت zsawp هست و این برای اکثر اوقات گزینه‌ی خوبی هست چون هم پارتیشن سوآپ داره که پشتیبانی بهتری از رم داشته باشه و هم در عمل خیلی کمتر از پارتیشن سوآپ داره استفاده می‌کنه و بیشتر اوقات با همون فشرده کردن و روی رم نگهداشتن کار حل میشه، اما خب بک‌آپ پارتیشن سوآپ رو داره و صرفا هم منطقش این نیست که خب تا رم زیادی پر نشده از سوآپ استفاده نمیکنم، نه! اگر اطلاعات فشرده شده روی رم مدت زیادی بلا استفاده بمونه فارغ از اینکه ممکنه رم خیلی فضای خالی زیادی داشته باشه، کرنل این پیج‌های فشرده و بی‌استفاده رو می‌فرسته روی پارتیشن سوآپ و در نتیجه مقداری io یا rw با هارد دیسک انجام میشه که یکم سرعت کند و البته اگر نگران SSD هستین اثر منفی روی طول عمرش داره.
fonts.conf
2.4 KB
دوستانی که از لینوکس استفاده می‌کنید فایل پیوست رو در آدرس زیر قرار بدین تا فونت‌های بهتری برای متنهای فارسی و انگلیسی روی سیستم تجربه کنید.
~/.config/fontconfig/fonts.conf
البته لازم به ذکر هست که این فونتهایی که داخل فایل هستن رو باید نصب داشته باشید روی سیستم.
۱- Vazirmatn fonts
۲- Noto Fonts
۳- Vazir Code WOL
۴- Hack Nerd Font Mono
۵- Noto Color Emoji

این پکیج زیر هم برای فونتهای چینی، ژاپنی و کره‌ای هست که خیلی هم سنگین هست اگر خیلی فونت اینا رو استفاده میکنید مفیده که نصب کنید. بعضی از توزیع‌ها از قبل پکیج‌های adobe source برای این زبانها رو نصب دارن که تا حدود زیادی هم پوشش میده (شایدم کامل)
*- noto fonts cjk

اگر از آرچ یا آرچ بیس‌ها استفاده می‌کنید به جای noto ها از noto nerd ها استفاده کنید بهتره چون کلی آیکون‌های powerline هم داخلشون هست و کامل‌تر هستن.
فاینلی پاسخ سوال فرق zram , zsawp رو در فروم جنتو یافتم.
میگه جفتشون میان دیتا(که اینجا بهش میگن page) رو کمپرس میکنن و روی رم یک بخشی رو به عنوان سوآپ-پول برای خودشون جدا میکنن و اون دیتای کمپرس شده رو میریزن اینجا تا وقتی که این پر بشه و بعدش هست که مهمه!
- وقتی این فضا پر بشه zsawp میاد و از روی این سوآپ‌پول پیج‌ها رو بر اساس LRU یا اونایی که کمتر بهشون نیاز بوده رو برمی داره دی‌کمپرس می‌کنه و می‌بره روی پارتیشن سوآپ یا سوآپ‌فایل ذخیره می‌کنه و پول رو یکم خالی میکنه
- ولی zram اولا نیازی به پارتیشن/فایل سوآپ نداره و این یعنی ممکنه اصلا همچین فضایی نداشته باشیم و خب اگر سوآپ‌پول zram پر بشه دیگه رم ما جا نداره و پرتکل oom برای کیل کردن چیزایی که رم میخورن شروع به کار می‌کنه! ولی اگر پارتیشن یا فایل سوآپ داشته باشیم اینجا zram ضعیف‌تر عمل می‌کنه و مثل zsawp نمیاد اون پیج های توی سوآپ‌پول که کمتر لازم بودن رو دی‌کمپرس کنه بفرسته روی سوآپ، بلکه سیستم از این لحظه شروع می‌کنه رندم پیج‌ها رو می‌فرسته روی سوآپ(فایل/پارتیشن) که این یعنی امکانش هست یک سری پیج‌هایی که دسترسی سریعتری بهشون نیاز هست رو می‌بره روی سوآپ که روی هارددیسک هست و کندتره تا سوآپ‌پول که روی رم هست و سریعتره!

اینم دلیل که چرا zsawp بای دیفالت فعال هست و اون یکی نیست.
#کاربردی
#file_transfer_using_pyth
یک روش باحال بین برای انتقال فایل بین اندروید و هرچی که روش یک مرورگر یا wget, curl و از اینا داشته باشه, توضیح بدم

برنامه‌ی termux که خب یک ترمینال کوچولو ولی کاربردی برای برنامه‌نویساست شاید معرف حضور باشه براتون
این برنامه قابلیت نصب برخی پکیج‌هایی که توی لینوکس هستن رو به اندروید اضافه میکنه، از جمله
vim, tor, ssh, ...

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

تو برنامه ترموکس اول کامند زیر رو اجرا کنید
termux-setup-storage

این دستور یک دایرکتوری storage توی هومِ ترموکس ایجاد میکنه و بعضی از دایکتوری‌های اینترنال استوریج یا اکسترنال استوریج رو لینک میکنه داخل این دایرکتوری مثلا downloads رو اینجا خواهید داشت

حالا وارد اون دایرکتوری که فایل مدنظر داخلش هست که بشین میتونید با استفاده از زبان دوست داشتنی پایتون یک سرور محلی ران کنید و درنتیجه‌ی اینکار با داشتن ادرس ip گوشیتون رو شبکه‌ی وای‌فایی که هر دو دستگاه بهش وصل هستن و استفاده از یک مرورگر روی اون یکی دستگاه میتونید این دایرکتوری رو روی مرورگر باز کنید و فایلهاش رو دانلود کنید!
-با wget و curl و دانلودمنیجرها هم میتونید


داخل ترموکس:
متأسفانه این سه مرحله نیاز به وی‌پی‌ان داره
apt update
apt upgrade
apt install python


termux-setup-storage
cd ~/storage/downloads
python -m http.server

روی اون یکی دستگاه
این ادرس رو باز کنید:
mobile_ip:8000


- برای دونستن ip وارد تنظیمات وای‌فای دستگاه بشین روی اتصال ضربه بزنید(کلیک) و توی مشخصات ادرس وای‌فای رو بخونید

- سرعت دانلود من ۴مگ بر ثانیه بود
اگر دسکتاپ کی‌دی‌ای داری
kdebugdialog5
این رو بزنی توی ترمینال یک پنجره باز میشه، داخلش تیک دکمه‌ی
disable all debug output
رو میزنی و دیگه انقدر چرت و پرت توی ترمینال از سمت پلاسما و دوستانش نمیاد.
اسکرپیت کاربردی برای حذف همه‌ی مایگریشن‌های پروژه در مرحله دولوپ و توسعه
find . -not -path "./.venv/*" -path "./*/migrations/*" \( -name "*.pyc" -or -name "*.py" \) -not -name "*__init__*"
دوستان سلام
داریم روی یک فیکس برای وی‌اس‌کد کار می‌کنیم که برای برنامه‌نویسی جنگو محیطش رو بهتر کنیم. دقیق‌تر بگم این فیکس باعث میشه تست‌هایی که برای جنگو می‌نویسیم توی وی‌اس‌کد بهتر شناسایی و ساپورت بشن
توی لینک زیر از جنگو دولوپرها خواستن درصورتی که از همچین فیکسی استقبال میکنن پست رو لایک کنن، دیگه هرچی لطف شماست
https://github.com/microsoft/vscode-python/issues/22206#issuecomment-1762512838
وقتی فیزیک ثابت می‌کنه دنبال کسی باشید که فرکانسش با شما یکی باشه!
اینطوریه که بعضی زوجها خیلی جفت هم میشن

https://www.instagram.com/reel/CzBxVOzNfKH/?igshid=MTc4MmM1YmI2Ng==
من مدتی هست دارم از لینوکس استفاده میکنم و خب واقعا پیر شدم 😄.
مدت زیادی هم دیسترو هوپر بودم و کلی وقت و انرژی پای توزیع‌های مختلف گذاشتم و در نهایت این شد که هرکاری کنیم توزیع بی‌دردسر پیدا نمیشه و همیشه باید دست به آچار باشی که یهو یه چیزی رو خودت درستش کنی حالا تو بعضیا این زیاد پیش میاد و تو بعضیا کمتر
بعد از یک سال تو لینوکس بودن دیگه با ویندوز نمیتونی کنار بیای و هی دلت برای اون کامند لاین یا حتی شورت‌کات‌های کیبورد اینها خیلی تنگ میشه (خلاصه برزخی بین این دوتا سیستم عامل) - الان دارم از کوبونتو استفاده میکنم و بنظرم درعین حالیکه برنامه‌ها و کاستومایزیشن اضافی و سلیقه‌ای نداشت اما ۹۹ درصد کانفیگ و برنامه‌های ضروری رو به صورت پیشفرض داشت و بهترین تجربه‌م با لینوکس بوده

-> مینت(برنامه‌هاش قدیمی بودن)
-> اوبونتو (بایوس لپتاپ آپدیت نبود و بعد از نصب دیگه بالا نمی‌آمد ولی هیچی هم از علتش نمیگفت)
-> مانجارو (به صورت خود جوش نهایتا تا ۴ ماه دوم داره و کرش میکنه)
->آرکولینوکس(یه نفر داره ۱۰۰ ایزو مختلف براش میسازه همه رو هم باهم قاتی میکنه)
-> آرچ(اون ازت استفاده میکنه نه تو از اون)
-> فدورا(اگر تو ایران و با این اینترنت نبودیم همینجا می‌موندم)
-> دبیان(برنامه‌هاش خیلی خیلی قدیمی بودن)
-> کوبونتو (نه زیاد قدیمی نه زیادی جدید مخصوصا که اکثر برنامه نسخه‌ی مخصوص نصب برای ابونتو دارن و نیازی به ppa یا aur و اینا نبود)

خلاصه کنم، به دلیل نصب بازی میخواستم ویندوز نصب کنم خب اینجا دیگه مثل لینوکس Tens of thousands of tons دیسترو نداریم ولی ناگفته هایی هم هست
اول اینکه ویندوز هوم برا دولوپرا کمه، نسخه‌ی ۳۲ اگرچه بنظر میرسه باید مصرف رمش کمتر باشه (برای سیستمی که مثلا ۴ گیگ رم داره بخوای بری سمتش) ولی زیاد فرقی نداره از طرفی الان اکثر برنامه‌ها رو فقط ۶۴ بیت میزنن و گیر میافتی.
انترپرایز برای استفاده شخصی نیست و الکی شلوغه و پرو-ورک‌استیشن هم برای سیستم‌های خونگی و لپتاپ‌های نه خیلی گرون و خفن نیست و زیادی سنگین میشه و فیچرهایی که داره فقط باعث اتلاف منابع سیستم میشن

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

می‌مونه ۱۰ و ۱۱ پرو که خب اگر سیستم جوابگو هست ۱۱ بریزید و اگر نه ۱۰ ولی بعد از نصب با برنامه‌ای مثل revo uninstaller خرت و پرتها رو از روش پاک کنید و سرویس‌ها و برنامه‌هایی که تو استارت‌آپ هستن رو مدیریت کنید. این بهترین تجربه ویندوز از نظر من میشه

کلا نسبت به ویندوز بدگویی میشنویم ولی اینو نوشتم اگر کسی ویندوز لازم داره الکی کلی وقت و اینترنت هدر نده هرچیزی رو امتحان کنه.
To split a PDF from page 369 to page 385 inclusive using Ghostscript in Linux, you can use the following command:
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=369 -dLastPage=385 -sOutputFile=output.pdf input.pdf
This command uses Ghostscript to create a new PDF file (output.pdf) containing pages 369 to 385 from the original PDF file (input.pdf).
ترفندهای برنامه‌نویسی
من مدتی هست دارم از لینوکس استفاده میکنم و خب واقعا پیر شدم 😄. مدت زیادی هم دیسترو هوپر بودم و کلی وقت و انرژی پای توزیع‌های مختلف گذاشتم و در نهایت این شد که هرکاری کنیم توزیع بی‌دردسر پیدا نمیشه و همیشه باید دست به آچار باشی که یهو یه چیزی رو خودت درستش…
پیرو این جریان درمورد توزیع‌های لینوکس هم مطلبی بنویسم

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

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

توزیع‌های مختلف فلسفه مختلف پشتشون هست و این یعنی شما باید بدونی هر توزیعی چه چیزی بهت میده یا نمیده!
آرچ -» خودتی و خودت اگر سواد انگلیسی و حوصله و وقت کافی داری از بیخ یک سیستم برای خودت بساز و تا ابد هم هی احتمال اینکه نیاز باشه یک چیزی رو تازه براش درست کنی وجود داره + آپدیت های تند و مکرر میتونه باعث ایجاد اشکال هم بشه!

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

دبیان کی‌دی‌ای خیلی بد کانفیگ شده و سایر توزیعها هم فلسفه‌ای که دارن برای هر آدمی مناسب نیست
فدورا هم ایران رو تحریم کرده و هم کلا چون ساخته شده تا تست بیس برای ردهت باشه قابل اعتماد نست، دولوپر پکیجی روی گیت‌هاب کامیت بزنه فدورا توی ریپوی خودش آپدیتش رو می‌ذاره!! اینقدر روی لبه تکنولوژی بودنم خوب نیست!

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

توزیعش هم خوب کانفیگ شده و نیازی نیست شما چیزی رو خودت دستکاری کنی تا سیستم درست کار کنه
هرچند که اگر خواستی میتونی کلی تغییرات از تم گرفته تا ... انجام بدی
Mojo CSS · The Atomic CSS Framework for crafting gorgeous UIs without shipping any CSS.
https://mojocss.com/
با این اسکریپت ساده، متن‌های انتخاب‌شده خود را در لینوکس به راحتی ترجمه کنید! کافی است یک میانبر صفحه کلید به این اسکریپت اختصاص دهید تا فوراً متن را ترجمه و نتایج را مشاهده کنید. با این راهکار سریع و کاربردی، مهارت‌های زبانی خود را بهبود دهید! 🌐📝

As a non-native English speaker, I often find myself needing to verify spelling, pronunciation, and translations quickly and conveniently. To address this, I've developed a custom script that integrates with my Linux desktop, allowing me to translate and hear the pronunciation of selected text with just a keyboard shortcut.
ابزار zsh یک شل جایگزین برای bash هست که در محیط ترمینال لینوکس استفاده میشه و مزیتش در داشتن پلاگین‌ها و کانفیگ پذیری ساده‌ش هست.
از جمله مزیت‌هاش:
- اتوکامپلیت کردن دستورات
- سینتکس هایلایت
- هیستوری از دستورات قبلی و البته ساجسشن با تایپ ابتدای دستور
- اطلاعاتی درمورد وضعیت گیت (اگه تو دایرکتوری فعلی گیت فعال باشه)

من یک کانفیگ از مانجارو رو کپی کردم و با تغییراتی که ایجاد کردم حالا این کانفیگ و پلاگینهاش برای هر توزیعی قابل استفاده هست و حتی روی دبیان wsl هم استفاده کردم.
آدرسش اینه و اگه خوشتون اومد یک ستاره بهش بدین.
https://github.com/mh-firouzjah/zsh-config