وبلاگ محسن

وبلاگ محسن



۹ مطلب با کلمه‌ی کلیدی «گیک» ثبت شده است

چه جوری با لینوکس فیلم دانلود می‌کنم

| پنجشنبه, ۱۰ مهر ۱۳۹۳، ۰۴:۴۶ ب.ظ

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

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

 

علاقه اول من کامپیوتر (البته کامپیوتر لینوکسیlaugh) و علاقه دومم سینماست! پس فیلم زیاد دانلود می‌کنم.

یکی از ایراداتی که به لینوکس گرفته می‌شه، نبود دانلود منیجر قدرتمند مثل idm ئه. من در جواب می گم خب شما هنوز بلد نیستید از لینوکس استفاده کنید! شما در این پست می‌بینید که چطور با چند تا از ساده ترین ابزار های لینوکس و یه اینترنت ۵۱۲(اسمی) محدود، هر شب حدود سه گیگابایت دانلود می‌کنم.

 

aria2، at و rtcwake تمام چیزی که ما احتیاج داریم. at و rtcwake اوت آو د باکس رو خود سیستم نصبن.

 

at، نرم افزار بسیار مفیدیِ که دستورات رو واسمون زمانبندی می کنه. مثلا می‌تونیم بهش بگیم یک ساعت بعد سیستم رو خاموش کن. با استفاده از at دانلود رو ساعت ۲ صبح شروع و ساعت ۷  متوقف می‌کنیم. (ساعات رایگان در isp پارس آنلاین).

ضمنا برای اینکه at کار کنه باید دیمونش رو فعال کنیم و کامند زیر برای همیشه فعالش می کنه (فدورا و توزیع هایی که از systemd استفاده می کنن)

sudo systemctl enable atd.service

 

قدم دوم تنظیم aria2 ست. روش من به این صورت که url فیلما رو تو یه فایل ذخیره می‌کنم و با آپشن i- به aria2 می‌گم لینک ها رو از اون فایل استخراج کنه. اسکلت aria2  من به شک زیرِ:

aria2c -i .downloads.txt -j1 -s16 -x16 -k70M --http-user='myusername' --http-passwd='mypassword'

آپشن j تعداد دانلود موازی رو مشخص می کنه که من گفتم در آن واحد فقط یه دانلود انجام بده.

با s می‌گیم که فایل چند قسمت بشه و x حداکثر تعداد کانکشن به سرور رو تعیین می‌کنه.

k می‌گه که هر پارت، چند مگابایت دانلود کنه.

http-user و http-passwd  هم برای مواقع اییِ که از سایتی اکانت خریدید و با وارد کردن اطلاعات این آپشن ها می‌تونید به طور ویژه دانلود بکنید.

 

دانلود ما با استفاده از این کامند ساعت ۲ و ۵ دقیقه صبح شروع می‌شه:

$ at 2:05am
at> aria2c -i .downloads.txt -j1 -s16 -x16 -k70M --http-user='myusername' --http-passwd='mypassword'

و با کامند زیر ساعت ۶ و ۵۵ دقیقه تموم و کامپیوتر خاموش میشه:

$ sudo at 6:55am
at> killall -2 aria2c
at> poweroff

 

اما من معمولا ساعت یازده به تخت خواب می رم و مطمئنا نمی خوام کامپیوتر تا ساعت دو نصفه شب بدون استفاده روشن باشه و صدای فن مغزمو بخوره!

با rtcwake  می‌تونیم به کامپیوتر بگیم که الان خاموش، ولی فلان ثانیه بعد روشن شو. فوق العاده نیست؟ برای من که یکی از هیجان انگیز ترین نرم افزار های لینوکسِ. 

rtcwake برای کار کردن به دو تا ورودی احتیاج داره. اول اینکه مشخص بشه کامپیوتر به چه حالتی بره؟ شات دون، اسلیپ و یا لاک اسکرین که من شات دون رو همیشه انتخاب می کنم و دوم این که چه مدت بعد از الآن کامپیوتر روشن بشه؟ دقت کنید که زمان باید به ثانیه وارد بشه.

sudo rtcwake -m off -s somenumber

به محض وارد کردن پسورد روت، کامپیوتر خاموش میشه.

 

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

#!/usr/bin/python3

import time, datetime

midnight = datetime.timedelta(0, 0, 0, 0, 0, 2, 0)
current_time = datetime.timedelta(0, 0, 0, 0, int(time.strftime('%M')), int(time.strftime('%H')), 0)

if current_time.__lt__(midnight):
    dst_time = datetime.timedelta(0, 0, 0, 0, 10, 2, 0)
else:
    dst_time = datetime.timedelta(1, 0, 0, 0, 10, 2, 0)

print('\nremaining time in seconds: ', int(dst_time.total_seconds() - current_time.total_seconds()), '\n')

به این می گن دانلود هوشمندwink

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

 

اطلاعات بیشتر درباره at

 

پاورقی:

 

 

پدر خوانده (1974)

ستوده شده به عنوان بزرگ ترین شاهکار تاریخ سینما

اثر فرانسیس فورد کاپولا

 

توصیفی از Mega + خبر انتشار MEGAsync برای لینوکس

| سه شنبه, ۱۸ شهریور ۱۳۹۳، ۱۲:۱۵ ق.ظ

کیم داتکام یکی از بامزه ترین و تخس ترین کارکتر های دنیای اینترنتِ. مدتها قبل، مگاآپلود رو ساخت که در سال 2012، به دلیل نقص قوانین کپی رایت بسته شد و برای خود کیم چندتا پرونده حقوقی درست کرد. اما از اونجایی که آدم با حالیه یک سال بعد Megaupload Ltd رو به Mega تبدیل و با اختصاص 50GB فضای رایگان به کاربرانش همه رو متعجب کرد.

 

 

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

 

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

 

اما خبر انتشار کلاینت مگا به اسم MEGAsync برای لینوکس باعث شد این پست رو بزنم. با ارائه این نرم افزار، ملزومات یک سرویس کلود که شامل اپلیکیشن موبایل، کلاینت سیستم عامل و اکستنشن مرورگرِ برای مگا کامل شد. 

 

از منظر من، سرویس ذخیره سازی ابری Mega برای کاربران لینوکس، که یکی از بزرگترین تفاوت هاشون با سایر در مهم دونستن امنیتِ، بهترین گزینه ایی که وجود داره.

 

دانلود کلاینت MEGAsync

 

دانلود اپلیکیشن Mega برای اندروید، آی‌او اس و بلک بری

 

دانلود اکستنشن Mega  برای مرورگر های فایرفاکس و کروم

موفقیت گنولینوکس

| دوشنبه, ۲۷ مرداد ۱۳۹۳، ۰۹:۱۳ ق.ظ

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

 

 

 

عاشق اون قسمتم که استالمن می‌گه ...We made it possible heart

فقط برای تفریح :-)

| شنبه, ۲۵ مرداد ۱۳۹۳، ۰۵:۱۱ ب.ظ

Just For Fun کتابیِ که سالها پیش لینوس توروالدز اونو نوشت تا گیک های دنیا رو از جزئیات تولد و توسعه سیستم عامل و فرهنگ محبوبشون با خبر کنه .

باید ببخشید؛ چون هنوز خودم کتابو نخوندم بیشتر از این نمی‌تونم توضیح بدم.

 

اما می‌تونم بگم اگر گیک هستید؛ اگر هکر هستید؛ اگر به دنیای گنولینوکس تعلق دارید؛ اگر این سیستم عامل و فرهنگش جزئی از وجودتونِ؛ خوندنش یه جورایی براتون واجبِ. چون علاوه بر اینکه کلی به اطلاعاتمون اضافه می کنه، می‌تونه یه محرک قوی و وسیله ایی برای انگیزه دادن بهمون باشه.

 

حالا اگر مثل من مشتاق هر چه زودتر خوندن کتاب شدید، خوشحال باشید. چون با تلاش جادی Just For Fun ترجمه شده و می‌تونیم خیلی راحت تر با کتاب ارتباط برقرار کنیم.

 

LinuxStory.ir

یک octet دقیقا 8 بیت است!

| سه شنبه, ۲۴ تیر ۱۳۹۳، ۱۱:۰۳ ب.ظ

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


چیزی که کتابها و کلاس ها تو مغز ما فرو کردن اینه که بیت 8 = بایت 1؛ ولی خب حقیقت چیز دیگست. واقعیت اینه که یک بایت می تونه ۸ بیت باشه و می تونه نباشه. مقدار بایت همیشه در طول تاریخ کامپیوتر بین 7 تا 36 بیت در رفت و آمد بوده و اگر امروز معتقدیم که قطعا یک بایت هشت بیتِ به این خاطره که سازنده های معماری های کامپیوتری تصمیم گرفتن که اینطور باشه. اما octet بر خلاف بایت همیشه هشت بیتِ که نشون دهنده استاندارد بودن این واحد از حافظه ست.


از octet وقتی استفاده میشه که بایت باعث ابهام بشه، مثلا در IPv4. استفاده از octet در IPv4 باعث شده که ما هیچ وقت انتظار عددی بالاتر از 255 نداشته باشیم و همین به تنهایی دنیا رو خیلی راحتتر کرده.

 

 


ضمنا جالبه که بدونید تو فرانسه،‌ کانادا و رومانیا از octet به جای بایت برای کارای روزمره استفاده می کنن.

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

دیروز بود که به طور کاملا اتفاقی به یه مقاله مفید در انجمن فارسی اوبونتو راجع به دانلود منیجر aria2c برخوردم که طرز استفاده بهینه ش رو آموزش میداد.

 

من از همون ماه های اول ورودم به دنیای گنولینوکس با aria2c آشنا بودم اما هیچ وقت کار باهاش رو یاد نگرفتم(البته بالاخره دیروز یاد گرفتم yes ) و دیشب وقتی که یه فایل نهصد مگی رو زود تر از انتظار برام دانلود کردم به قدرتش پی بردم و راستشو بخواین الآن خیلی خوشحالم. چون یکی دیگه از معدود وابستگیای من به ویندوز کم شد.

 

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

 

 

مشکلترین قسمت ماجرا اونجایی که ما باید حجم فایلی رو که می خوایم دانلود کنیم بدست بیاریم و باور کنید اون لحظه کوچکترین ایده برای حلش نداشتم. اما میدونستم که کتابخونه پایتون ماژولی داره به اسم urllib.request که یه ربطی به مسئله ما داره. با رفتن به کانال آی آر سی python# و چند بار پرسش و پاسخ متوجه شدم که هر فایل موجود در اینترنت خاصیتی به نام header داره که خصوصیات فایل رو که شامل سایز فایل هم میشه اونجا دخیره می کنن و با یه متد ساده از کلاس urllib.request میشه بهش دسترسی پیدا کرد.

 

با این اطلاعات اسکریپت زیر رو نوشتم:

#!/usr/bin/python3
import urllib.request
import os
import sys
def get(url):
    file_url = urllib.request.urlopen(url)
    size = int(file_url.getheader("Content-Length"))
    conn = (size / 1000000) / 16
    if conn < 1:
        conn = 1
    os.system('aria2c -s16 -x16 -k' + str(round(conn)) + 'M \"' + url + '\"')
if len(sys.argv) > 1:
    get(url=sys.argv[1])
else:
    print('Usage: download FileUrl')
در مورد خط شیشم باید بگم برای کار با url ها در پایتون باید اول به وسیله این متد بازش کنید.
متغییر conn هم سایز فایل رو که مقدارش به octet! هست رو  به مگ تبدیل می کنه و بقیه چیزا هم که واضحه :)
(اگر نمی دونید octet چیه غصه نخورید چون منم تازه فهمیدم همچین واحد حافظه ایی هست!)

اگر فکر می‌کنید این اسکریپت به دردتون می‌خوره، اونو تو یه فایل متنی ذخیره کنید و  به یکی از دایرکتوری هایی که خروجی زیر تولید می‌کنه منتقل کنید:

 

echo $PATH

توصیه میشه اسکریپت هایی که خودتون می‌نویسید رو به local/bin./~ منتقل کنید.

پ.ن: می‌دونید که؛ ~ یا همون تیلدا به معنی home/ 

یازده هزار ایمیل را با نُه خط کد پایتون پاک کنید!

| چهارشنبه, ۲۸ خرداد ۱۳۹۳، ۱۰:۲۰ ق.ظ
تقریبا دوازده سال پیش من اولین اکانت ایمیلمو تو سایت یاهو باز کردم و بعد از یه مدت استفاده رهاش کردم. حالا بعد از این همه سال به یه اکانت یاهو احنیاج دارم و وقتی به اینباکسم نگاه می‌کنم، می‌بینم که پر شده از ایمیل های مزخرف و تبلیغاتی. اونم نه یکی دوتا،‌ یازده هزار!
 
 
مشخصه که با این اینباکس شلوغ نمی تونم کار کنم. از طرفی دوست ندارم یه اکانت جدید باز کنم پس تنها راهی که باقی میمونه پاک کردنِ. در پاک کردن دستی، سرویس یاهو اجازه حذف فقط پنجاه ایمیل رو میده که با یه حساب کوچیک معلوم میشه باید بیش از ۴۴۰ کلیک موس کنم تا همه ی ایمیل ها پاک بشن و امکان نداره من همچین کار احمقانه ی انجام بدمangry
 
و خدا رو شکر که ما سیستم عاملی به نام گنو لینوکس داریم که پایتون out of the box روش نصبه و تمام این هرزنامه ها رو برامون پاک می کنه. اونم با نُه خط:
 
#!/usr/bin/python3 
import imaplib
connection = imaplib.IMAP4_SSL('imap.mail.yahoo.com')
connection.login('mohsen_rashidi2002@yahoo.com', 'password')
connection.select()
trash, emails = connection.search(None, 'all')
for i in emails[0].split():
    connection.store(i, '+FLAGS', '\\Deleted')
connection.expunge()

 

همون طور که می‌بینید، اسکریپت خیلی ساده ست و چیزی بیشتر از استفاده از چند تا متد ماژول imaplib نیست.

در خط سوم یه شیء به اسم connection از کلاس imaplib.IMAP4 درست کردیم و آدرس imap سرور یاهو رو بهش دادیم. در خط چهارم مشخصات اکانت رو برای لاگین وارد کردیم.

 

در توضیح پنجمین خط باید بگم هر اکانت ایمیل از تعدادی دایرکتوری تشکیل شده. مثل دایرکتوری inbox, sent, draft و ... . و کد ما در آن واحد میتونه رو یکی از اینا اجرا بشه. پس حالا که می خوایم با دایرکتوری اینباکس کار کنیم باید مسیرمون رو بهش تغییر بدیم و متد select همین کار رو انجام میده و اگر می‌بینید که بهش آرگومان ندادم به این خاطره که پارامتر پیشفرضش مقدار inbox رو داره.

 

تو خط بعدی دو تا متغیر به اسم trash و email می بینیم که به متد search نسبت داده شدن. متد سرچ کارش پیدا کردن ایمیل های موجود بر اساس الگوی داده شده ست که ما اینجا الگو رو None دادیم و آرگومان دوم مشخص می کنه که چه تعداد ایمیل رو بگرده که ما همه اونها رو خواستیم. مقداری که این متد بر می گردونه شامل یه لیست با دو عنصره که عنصر اول برابر رشته ok و عنصر دوم شماره و یا در اصل کد مربوط به هر ایمیل موجودِ. با استفاده از یه متغیر اضافی به اسم trash ما رشته ok رو از لیست جدا می کنیم و ادامه میدیم.

 

خط هفتم هم یه حلقه for برای پیمایش شماره ایمیل هاست که هر بار i رو به یکی از اونها نسبت میده. اما داخل حلقه از متد store استفاده کردم که کارش نشانه گذاری (flag) روی ایمیل هاست. و همون طور که می بینید نشانه delete رو روی تمام ایمیل ها قرار میده.

 

و خط آخر می گه همشون رو برای همیشه پاک کنlaugh

 

 

اجرای این اسکریپت حدود یک ساعت و نیم زمان برد که من به جای خیره شدن به مانیتور و ۴۴۰ بار کلیک روی چکباس و دکمه دیلیت یه فیلم خوب دیدم;-)

 

پ.ن: مستندات ماژول imaplib

دیروز به ابزاری احتیاج داشتم که کل سیستم عامل رو برام بگرده و فایل های jpg رو تو یه دایرکتوری کپی کنه.
راستش برنامه خط فرمانی به خصوصی براش سراغ نداشتم، البته اگر یکم می گشتم حتما پیدا می کردم اما تصمیم گرفتم وقتی رو که برای پیدا کردن می خوام بذارم برای ساختن صرف کنم که نتیجش شد اسکریپت زیر:
#!/usr/bin/python3
import os, sys


def gather(src=None, dis=None, file_type=None):
    if not os.path.exists(dis):
        os.mkdir(dis)


    for i in os.popen('find ' + str(src) + ' -type f | grep '+ str(file_type) + '$'):
        os.system('cp  \"' + i.strip() + '\" ' + str(dis))


if len(sys.argv) > 1:
	gather(src=sys.argv[1], dis=sys.argv[2], file_type=sys.argv[3])
else:
    print('Usage: gather sourcepath destinationpath filetype')
    exit()


اسم اسکریپت رو gather می ذارم و با دستور chmod +x gather اگزکیوتیبلش میکنم و به دایرکتوری usr/bin/ منتقلش می کنم و از این به بعد هر وقت همچین چیزی خواستم فقط از ترمینال صداش می کنم.


چطور از اندروید به کامپیوتر لینوکسیمون ssh کنیم

| دوشنبه, ۱۳ آبان ۱۳۹۲، ۰۷:۱۸ ق.ظ

اگر نمیدونید SSH چیه باید به طور خلاصه بگم که یه پروتکل برای ارتباط دو دیوایس درون شبکه ست. به این معنی که من میتونم در حالی که طبقه پایین خونمون هستم، با لپ تاپم به کامپیوترم که طبقه بالاست، از طریق SSH وصل بشم و هر دستوری که بخوام روی کامپیوترم با یه پروتکل بسیار امن اجرا کنم.

علاوه بر این چیزی که SSH رو خیلی برای ما خاص می کنه اینکه این سرویس اصالت یونیکسی داره، پس یاد گرفتنش برای هر کاربر لینوکسی تا حدی واجبهsmiley
 
اما چیزی که اخیرا خیلی باعث جذاب تر شدن SSH شده اینه که شما با گوشی اندرویدیتون هم می تونید این ارتباط رو برقرار کنید!
خب مسلما اولین ابزاری که احتیاج داریم Connectbot. یه اپ خیلی با حال که از طریق اون روند اتصال ssh رو طی می کنیم.
تنها کاری هم که لازمه با کامپیوتر انجام بدید فعال کردن دیمون ssh به اسم sshd و بعد فهمیدن آی پی آدرسِ.
برای فعال کردن دیمون در سیستم فدورا از این دستور رو وارد می کنیم:
sudo systemctl start sshd.service

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

ip addr show

که یه همچین خروجی به ما میده:

(آی پی آدرس سیستم با رنگ آبی مشخص شده)

 

البته من خودم Fing استفاده می کنم؛ یه اپ جالب دیگه برای دیدن آی پی تمام دیوایس های متصل به شبکه.

حالا به سراغ connectbot می ریم که در نگاه اول با هم چین شکلی رو به رو می شیم:

همون طور که می بینید، در فیلد پایین، باید اطلاعات اتصال رو وارد کنیم که شامل سه بخشه: username که یه اسم دلخواهِ، hostname که همون آی پی سیستمِ و port که برابر عدد 22 ست.(درگاه 22 پورت پیش فرض ssh در سیستم های یونیکسی سی)

 

با فشردن دکمه done وارد قسمتی میشید که ازتون پسورد روت رو می خواد و بعد از وارد کردن پسورد اتصال شما برقرار میشه:

 

پ.ن: اگر می خواین دیمون sshd هر بار که کامپیوتر رو روشن می کنید فعال بشه، یا به قول معروف startup باشه، این کامند رو اجرا کنید:

sudo chkconfig sshd on