این هفته ها ظاهرا اصلی ترین اخبار جهانی، درگیری پلیس ها و باج بگیرها است. از برگشت پول زور تا اولین حمله به حلقه های باج افزار نویسی یا چک و چونه بایدن و پوتین. از عملیات سپر تروجان می گیم و سری می زنیم به هر سه سیستم عامل تا ببینیم هر کدوم چه خبر تازه ای دارن. با ما باشین که جهان هکرهای بیشتری لازم داره!
یا توی برنامه های پادکست دنبال «کیبرد آزاد» یا «جادی» یا «رادیوگیک» یا jadi یا radiogeek بگردین. هر کسی رادیوگیک رو پیدا نمی کنه، شانس می خواد و البته آنتی فیلتر خوب (: چون فیلترچی به طور خاص رادیوگیک رو دوست نداره (:
و البته ایده جدید که اگر توشون سابسکرایب کنین / مشترک بشین یا هر چی بهش میگن، خوشحال می شم:
1:07 پس گرفتن باج های کولونیال پایپ لاین https://www.wsj.com/articles/how-the-fbi-got-colonial-pipelines-ransom-money-back-11623403981
8:38 دستگیری گروه باج گیر در اوکراین https://arstechnica.com/information-technology/2021/06/ukraine-arrests-ransomware-gang-in-global-cybercriminal-crackdown/
10:43 هشتاد درصد باج دهنده ها، دوباره مورد حمله قرار میگیرن https://it.slashdot.org/story/21/06/18/1933233/80-of-orgs-that-paid-the-ransom-were-hit-again-report-finds
12:46 چت امنی که اف بی آی در اختیار خلافکارها قرار داده بود https://www.cbsnews.com/news/anom-app-fbi-criminals-messaging-app/
18:23 واکسن ام.آر.ان.ای. برای مالاریا https://medicalxpress.com/news/2021-06-mrna-vaccine-yields-full-malaria.html
20:51 بزرگترین دامپ فایل پسورد در تاریخ https://cybernews.com/security/rockyou2021-alltime-largest-password-compilation-leaked/
23:50 در اعماق
23:58 پذیرش رسمی بیت کوین در السالوادور https://www.bbc.com/news/world-latin-america-57373058
28:40 امکان خرید تینک پد ایکس وان نسل ۱۱ با فدورا و اوبونتو https://9to5linux.com/lenovos-thinkpad-x1-carbon-gen-9-laptop-now-comes-with-fedora-linux-or-ubuntu
31:45 پرداخت میلیون دلاری اپل به زنی که عکس هاش رو فیسبوکش آپلود شده بود https://www.theguardian.com/technology/2021/jun/07/apple-settles-iphone-explicit-images
سایت دیسترو تست دات نت هم ایده جالبی داره و هم اجرای جالبی. کافیه وارد سایت بشین تا با فهرست بسیار عظیمی از تعداد زیادی توزیع گنو / لینوکس (و البته یونیکس هایی مثل بی اس دی ها یا چیزهایی مثل پلن ۹) بشین و با کلیک روی هر کدوم وارد صفحه اون توزیع خاص بشین. در این صفحه یک دگمه برای استارت هست که اگر فشارش بدین، سرور هر وقت نوبت شما شد (ممکنه دقایقی طول بکشه ولی معمولا خالیه ولی اگر درست بعد از انتشار این مطلب برین سراغش ممکنه پر باشه!) یه ماشین مجازی مبتنی بر اون سیستم رو برای شما اجرا میکنه و بعد شما رو به شکل ریموت بهش وصل میکنه و میتونین به شکل ریموت باهاش کار کنین. معلومه که از ایران به کندی و فلاکت (:
این نشست برای ۳۰ دقیقه تعریف شده مگر اینکه هر وقت لازم داشتین، دگمه اضافه کرن ۱۵ دقیقه دیگه رو فشار بدین. در این نشست شما میتونین حتی فایل هم به سیستم آپلود کنین. البته با محدودیت ۱۰ مگ. منطقا به خاطر سوء استفاده بعضی ها، دسترسی سیستمها به اینترنت قطعه.
در نهایت به نظر من این سرویس فانی است. حداقل برای من که هنوزم به شکل هفتگی توزیع های مختلف رو تست می کنم و استفاده. گاهی ممکنه فقط بخوابم ببینم مثلا سیستم عامل هایکو در چه وضعیتی است توی آپدیت آخر ولی مطمئن هستم چیزی نیست که من حتی بخوام توی ماشین مجازی هم نصب / تستش کنم. اگر براتون جالبه، هایکو پروژه ای است برای تکرار بی.او.اس. که تلاش میکرد در کنار ویندوز و مک، تبدیل به یک سیستم عامل تجاری برای کامپیوترها بشه و طرفدارهاش الان دارن اونو تحت پروژه هایکو پیش میبرن.
این کتاب رو برام فرستاده بودن و خوندم و بررسی کردم و بعدش هم گفتم که اگر کسی میخواد صاحب بعدیاش باشه که درخت کمتری قطع کرده باشیم و خوشحالی بیشتری هم تولید کرده باشیم، فرمی رو پر کنه و حالا فرم پر شده و وقت قرعهکشی است. فرم روی گوگل بود و من csvش رو دانلود کردم:
➜ /tmp wc -l book.csv
115 book.csv
خب ۱۱۵ نفر شرکت کنندهداریم پس نیازمند یه عدد رندم بین ۱ تا ۱۱۵ هستیم. چیزی که خیلیها توش بش بهش برنخوردن، متغیر RANDOM$ است که به شما یه عدد رندم بین ۰ تا ۳۲۷۶۷ میده. ما عددی بین ۱ تا ۱۱۵ نیاز داریم پس کافیه باقیموندهاش به ۱۱۵ رو بگیریم (که می شه عددی بین صفر تا ۱۱۴) و بعد یکی بهش اضافه کنیم. سه بار اجراش میکنم و سومین عدد رو برنده اعلام میکنم. اینطوری تا حدی مطمئنتر هستم که درست کار میکنه:
رفتگر دبیان یا همون دبیان جنیتور سیستم اتوماتیکی است برای حل مشکلات ریز در بستههایی که برای مدیر بسته دبیان درست می شن؛ یعنی همون dpkg. این رفتگر به شکل خودکار پیشنهادهای اصلاح رو بررسی میکرد و اونهایی که برای نرم افزار هم واضح بودن رو قبول میکرد اما حالا یه قدم جلوتر رفته: شخصا مشکلات رو پیدا میکنه و بعدش هم اصلاح (:
این سیستم برای بررسی اینکه باید روی کدوم پکیجها کار کنه، اول خروجی lintian رو میبینه و بستههایی رو انتخاب میکنه که مشکلات بیشتر و حادتری دارن که حلش از عهده خودش برمیاد. وقتی پکیج انتخاب شد، اونو توی رپوزیتوری کلون میکنه و بعد لینتین براش رو روش اجرا میکنه. این سیستم شامل یکسری اصلاح کننده است که میتونن برای مشکلات مختلفی نوشته و اجرا بشن.
این اصلاح کننده ها یا فیکسرها، در واقع یکسری کد هستن که روی یک چک آوت تمیز بسته اجرا میشن و میتونن توش تغییر ایجاد کنن. اکثرا با شل یا پایتون نوشته شدن ولی چون فایل اجرایی هستن، می تونن هر چیزی باشن. اگر فیکسر با استتوس غیرصفر بیرون اومد، حساب می کنه که به مشکل خورده ولی اگر خروجی اش صفر بود، باید گزارشش رو روی خروجی بنویسه. به عنوان یک نمونه از فیکسر این رو ببینین:
#!/usr/bin/python3
from debmutate.control import ControlEditor
from lintian_brush.fixer import report_result, fixed_lintian_tag
with ControlEditor() as updater:
for para in updater.paragraphs:
if para.get("Priority") == "extra":
para["Priority"] = "optional"
fixed_lintian_tag(
para, 'priority-extra-is-replaced-by-priority-optional')
report_result("Change priority extra to priority optional.")
این سیستم تا حالا حدود ۶۰هزار اصلاح روی پکیج های دبیان زده که به نوبه خودش اتفاق خیلی بزرگی است که قبلا با دست و در مقیاسی بسیار کمتر و کندتر و پر خطاتر انجام میشد. این نمونهای است از اینکه چطوری می شه کدها رو اتوماتیک کرد و کارهای دستی رو به ماشین ها سپرد. نگرانی خاصی هم برای «از دست رفتن شغل برنامه نویسی» نیست چون همیشه با اینجور پیشرفت ها، افق های جدیدی باز می شن که ما هنوز توشون لازمه کار کنیم. در واقع در اینجور موارد همون اتفاقی میافته که با اختراع تراکتور افتاد. آدم ها بیکار نشدن بلکه کشاورزی راحتتر شدن و بقیه رفتن سراغ چیزهای دیگه (:
البته بذارین دو نکته رو هم بگم:
۱. این توضیح در مورد همه اختراعات نیست. واقعا شاید برسیم به جایی که ماشین ها کار کنن ما بخوابیم یا صاحب هامون بخوابن و ما تو خرابه ها دنبال غذا بگردیم (:
۲. اصطلاح رفتگر اصطلاح قشنگی است. الان مد شده بعضی ها می گن «پاکبان» چون ظاهرا احساس می کنن رفتگر توهین آمیزه. رفتگری هم یه شغله و لازم نیست اگر فکر می کنیم تحقیر کننده است، اسمش رو عوض کنیم که راحت بشیم. اگر فکر می کنین رفتگرها زندگی سختی دارن، بهتره آشغال کمتری روی زمین بریزین، بهشون خوراکی های باحال بدین، باهاشون سلام علیک کنین و … عوض کردن اسم چیزها مشکلی رو حل نمی کنه (: مگر اینکه بخوایم بگیم پاکبان شمول بیشتری از رفتگر داره (: که قبوله.
برای سالهای طولانی، لپتاپهای لنوویی که آی بی ام میساخت، بهترین گزینههای نصب لینوکس بودن. اون هم در دورانی که کاملا احتمال داشت لینوکس بعضی از سختافزارها رو نشناسه و با دردسرهای زیادی مواجه باشین. اما بعدا که کمپانی چینی، لنوو رو خرید، وضع تا حدی تغییر کرد. البته لینوکس هم پیش اومده بود و دیگه تفاوت حادی بین خریدن لنوو و لپتاپهای دیگه برای بچههای لینوکسی وجود نداشت.
اما حالا وضع دوباره در حال اصلاح است. لنوو اعلام کرده که که سری های تینک پد و تینک استیشنش رو به طول کامل برای لینوکس سرتیفای میکنه – یعنی از شرکتهای ردهت و اوبونتو تاییدیهای میگیره که این سخت افزارها روی لینوکس اونها به درستی کار میکنن. البته راستش رو بخواین به جز بحث کارت گرافیک دوم و استفاده کامل از کارت گرافیکی، من هیچ وقت در این سال ها مشکلی با هیچ کدوم از لپ تاپ هایی که روشون لینوکس نصب کرده ام نداشتم.
بازم خبر خوب؟ (: لنوو لپتاپهای ThinkpPad P53 و P1 Gen 2 رو با فدورا هم عرضه خواهد کرد و البته خب هر لینوکس دیگه ای که مبتنی بر اوبونتوی LTS باشه هم به شکل منطقی باید کاملا درست کار کنه. همچنین لنوو برای سازگاری کامل احتمالا مجبوره بعضی درایورها رو هم به کرنل اضافه کنه که اینکار آپ استریم خواهد بود، یعنی درایورها به کرنل اصلی اضافه می شن نه به عنوان یه پچ مخصوص لنوو. اینکار بهترین گزینه است برای ما و دنیای لینوکس.
عجیبه که اینو من ندیده بودم. یه لپ تاپ مبتنی بر پروسسور آرم که لینوکس ران میکنه، بدنه اش فلزی است و بسیار ارزونه – البته به پول یه آدم عضو جهان. این کامپیتر ۱۴ اینچی، صفحه 1080p داره. دیسکش ۶۴ یا ۱۲۸ است و ۴ گیگ هم رم داره. این کامپیوتر همچنین یه باتری ۱۰هزار میلی آمپری داره که بین ۴ تا ۶ ساعت روشنش نگه میداره و پورتهای یو اس بی ۲ و ۳ و همینطور یه یو اس بی سی که اجازه میده کامپیوتر رو به مانیتور اکسترنال ۴کی خودتون وصل کنین و از اون باحالتر، قابل شارژ از این پورت هم هست، درنتیجه می تونین با هر کلهگی مرسومی که دارین، این رو هم شارژ کنین (: و البته جک مثل آدم ۳.۵ اینچ هم داره (:
اما معلومه که اینها مشخصههای اصلی ای نیستن که این لپ تاپ جمع و جور و متوسط رو خیلی باحال میکنه. چیزی که این لپ تاپ رو خیلی باحال میکنه، اینه که لینوکس ران میکنه و فقط ۱۹۹ دلاره این پول یعنی یه نفر که توی مثلا آمریکا حداقل حقوق ممکن ساعتی رو می گیره، با ۳ یا ۴ روز کار میتونه اینو بخره. همینطور برای کسی مثل من و شما این میتونست یه فان خیلی باحال باشه یا یه لپ تاپ دوم دم دستی برای مواقعی که نمی خواین کامپیوتری اصلی تون رو ببرین یا حتی برای خیلی ها، یه کامپیوتر اول.
البته در نهایت با پول خسته ما، همین در این لحظه می شه تقریبا سه میلیون و چهارصد ولی خب بازم دیدنش بامزه است، بخصوص اگر درآمد دلاری دارین و امکان خرید. راستی.. اگر تا اینجا اومدین که مطمئنا خوبه با خود کمپانی پاین هم آشنا بشین. یه شرکت مبتنی بر مصرف کننده ها که سعی می کنه ابزارهای لینوکسی باحالی بده؛ از جمله این تلفن لینوکسی.
توی قسمت های اول و دوم گفتم چرا ویم خوبه و به چه دلایلی ازش استفاده میکنیم. شاید برای بعضی ها یه اجبار گاه گداری باشه، برای بعضی ها شبیه من یه فان باحال و یکی از ادیتورهای برنامه نویسی و برای بعضی ها بهترین ادیتور دنیا. توی این قسمت سعی می کنیم با استفاده از پلاگین ها و دیدن چند ترفند باحال ادیتور ویم، سیستم رو بهینه کنیم برای برنامه نویسی، بخصوص پایتون. پایه اصلی این نوشته این مطلب است با تغییراتی و اضافهها و کم هایی بر اساس چیزی که من باهاش راحتم و استفاده میکنم.
توی قسمت های قبلی که با ویم کار کردیم پس منطقا نصب شده (: اما بحث اینه که انتظار می ره ویم شما نسبتا جدید باشه، حداقل بالاتر از ۷.۳.
➜ ~ vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Apr 12 2020 17:46:58)
اگر روی مک هستین و ورژن شما پایینتر است، شاید با brew update و brew install vim بتونی وضع رو بهتر کنین. روی لینوکس ها احتمالا به اندازه کافی به روز هستین.
پلاگینهای ویم
ویم الان یه شبیه یه پلتفرم شده که روش کلی پلاگین نصب می کنین و کارهایی رو می کنه که شما دوست دارین. نصب پلاگینهای از طریق مدیراکستنشها انجام میشه که یکی از مرسومهاش Vundle است. نصبش ساده است. واندل رو کلون می کنینش توی تنظیمات پلاگین های ویم؛ یه چنین چیزی:
حالا برای شروع تنظیمات کافیه یه فایل به اسم .vimrc توی هوم درست کنین:
touch ~/.vimrc
و توش تنظیمات واندل رو اضافه کنین:
set nocompatible " required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" add all your plugins here (note older versions of Vundle
" used Bundle instead of Plugin)
" ...
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
set encoding=utf-8
بقیه کارها واضحه: اضافه کردن پلاگین ها و تنظیم کردن چیزها و یاد گرفتن شورتکات ها.. الان اگر برین توی ویم و این دستور رو اجرا کنین، واندل پلاگین هایی که بهش گفتین رو براتون نصب یا به روز می کنه.
:PluginInstall
حالا وقتشه که قدم به قدم پیش بریم.
استفاده خوب
قبلا هم گفتم. خوبه فیچرهای چیزهایی که ازشون استفاده می کنین رو بگیریم. معمولا آدم ها به شکل تجربی یکسری فیچر اولیه رو یاد می گیرن تا کارشون راه بیافته و بعد حرفه ای تر نمی شن. خوبه اگر از چیزی استفاده می کنین، کم کم فیچرهای مناسبش رو یاد بگیرین. مثلا در مورد ویم، استفاده کمتر از ماوس یا استفاده بیشتر از :sp و :vs و کامندهایی که حرفشون رو زدیم مثل بافرها و ..
تا کردن کد
تا کردن؟ انگلیسی ها می گن fold. در حالت عادی با za فولد می شد ولی خیلی ها می ذارن روی space.
" Enable folding
set foldmethod=indent
set foldlevel=99
البته دقت کنین که فولد بر اساس ایندنت انجام می شه. برای پیشرفتهتر کردن با درک زبان و … SimpylFold رو سرچ کنین.
فرمت بهتر فایل برای پایتون
برای ایندنت کردن بر اساس پپ۸، اینها رو اضافه کنین:
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/
highlight BadWhitespace ctermbg=red guibg=darkred
اتوکامپلیت
اتوکامپلیت ایده ها و شکل های مختلفی داره. مثلا ممکنه فانکشن های اصلی رو بدونه یا ممکنه متغیرها رو زیر نظر بگیره و … گزینه اصلی خیلی ها برای مجموعه ای از زبانها ِYouCompleteMe است که باید مستقل نصبش رو پیش برین. با این به واندل اضافه اش کنید:
Bundle 'Valloric/YouCompleteMe'
و بعد از نصبش چند تا تغییر ریز هم بدیم:
let g:ycm_autoclose_preview_window_after_completion=1
map g :YcmCompleter GoToDefinitionElseDeclaration
ویرچوال انوها
معلومه که ویم درکی از ویرچوال انوها نداره. برای ایجاد کردن این درک می تونیم اینکار رو بکنیم:
"python with virtualenv support
py << EOF
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
project_base_dir = os.environ['VIRTUAL_ENV']
activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
EOF
چک کردن سینتکس
پلاگین داریم دیگه...
Plugin 'vim-syntastic/syntastic'
Plugin 'nvie/vim-flake8'
let python_highlight_all=1
syntax on
تنظیم رنگ ها
یک نگاه خودتون بندازین... سخته انتخاب کرده و من هی عوض می کنم. ولی در نهایت با
colorscheme desert
درخت فایل ها
اوه اوه.. بعضی ها عاشق اینن بعضی ها نمی دونن اصلا چرا هست! نرد تری مرسمترین است:
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree
می تونین با :NERDTree فعالش کنین ، با o در بافر جدید باز کنین. با t در تب جدید، با i در اسپلیت افقی و با s در معودی. p می ره دایرکتوری بالا و r ریفرش می کنه. بقیه اش؟ ? (: بستن؟ :NERDTreeClose
قرتی بازی های آخر
مثلا
set number
set showmatch
set history=1000
set undolevels=1000
set wildignore=*.swp,*.bak,*.pyc
set visualbell
set noerrorbells
کرنل اصلی ترین بخش سیستم عامل است. در واقع پروسه ای که کنترل کلیت سیستم و بقیه برنامه ها رو بر عهده داره. توی دنیای گنو/لینوکس، هسته سیستم عامل ما همون لینوکس است. یک کرنل آزاد که در کنار مجموعه ای از ابزارهای گنو و بقیه چیزها، توزیع های لینوکس رو ساختن.
معمولا توزیع شما، کرنل خیلی خوبی رو تنظیم کرده تا روی همه کامپیوترها کار کنه. اما گاهی ما دوست داریم کرنل های خودمون رو کمپایل و استفاده کنیم. دلایلش هم می تونه از تفریح و سرگرمی باشه تا چیز یاد گرفتن و بهینه کردن و تجربه کردن و حتی استفاده ازش به عنوان دروازه ای برای شناخت دقیق تر کرنل و اجزاش.
توی این ویدئو، به روش سنتی کرنل لینوکس رو از سایت کرنل دات اورگ میگیریم، یه وری باهاش می ریم و بعد کمپایلش می کنیم و کامپیوترمون رو باهاشون بوت می کنیم. حین کار گپی هم در مورد کل ماجرا می زنیم.
به نظرم تجربه خوبیه برای روزهای کم کاری و منطقا می تونه کلی چیز به شما یاد بده. البته حواستون باشه که در صورت اشتباه احتمالا کامپیوتر شما بوت نمی شه و باید بتونین با گراب ور برین یا از گزینه های دیگه کامپیوتر رو بالا بیارین (: پس احتیاط رو هم فراموش نکنین؛ البته در کنار اینکه آدم با اشتباه کردن چیز یاد می گیره. اگر هیچ وقت اشتباه نکنین یعنی احتمالا در حال کشف چیزهای جدید نیستین.