وبلاگ محسن

دیروز به ابزاری احتیاج داشتم که کل سیستم عامل رو برام بگرده و فایل های 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/ منتقلش می کنم و از این به بعد هر وقت همچین چیزی خواستم فقط از ترمینال صداش می کنم.


چطور از ورود جیمیل ناخواسته جلوگیری کنیم

| يكشنبه, ۲۲ دی ۱۳۹۲، ۰۲:۰۵ ب.ظ

اگر برای شما هم پیش اومده که از ایمیل های یه فرستنده سیریش عاصی شده باشید و حاضر باشید برای خلاصی از شرش هر کاری بکنید، آموزش زیر مخصوص شماست :-) (البته اگر از جیمیل استفاده می کنید)

      1-وارد جیمیلتون بشید و در قسمت سرچ، روی اون مثلث کوچیک کلیک کنید

      2-در قسمت From آدرس ایمیلی که می خواین بلاک بشه رو وارد کنید و بعد روی  create filter with this search کلیک کنید

توجه: اگر می خواین فقط یه آدرس بلاگ بشه اینطور وارد وارد کنید: username@example.com اما اگر می خواین تمام ایمیل هایی که با یوزرنیم های مختلف و دامنه واحد فرستاده می شن بلاک بشن از این الگو استفاده کنید: example.com@


      3-و در آخر باکس کنار Delete it  رو علامت دار کنید و دکمه Create Filter رو فشار بدید.


      

اسکریپت اعداد ابجد با پایتون

| پنجشنبه, ۱۹ دی ۱۳۹۲، ۰۷:۳۶ ب.ظ

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

قبل از دیدن کد شاید بد نباشه از طرز کار ابجد سر در بیاریم.

در سیستم ابجد حرکات حروف،فاصله بین کلمات و همینطور تشدید ارزشی ندارن؛ یعنی محاسبه نمیشن. برای محاسبه ارزش ابجدی هم به این صورت عمل می کنیم که حروف یه کلمه رو جدا میکنیم و ارزش هر حرف رو با ارزش حرف بعدی جمع می کنیم. برای  مثال کلمه مقدس علی، ابجدش به این صورت حساب میشه:

ع ل ی : ۷۰ +‌ ۳۰ + ۱۰ = ۱۱۰

حالا با چیری که فهمیدیم نگاه کردن به کد زیر خیلی راحتره : 

#!/usr/bin/python3
d = {}

abjad1 = 'ابجدهوزحط'
value1 = 1

abjad2 = 'یکلمنسعفص'
value2 = 10

abjad3 = 'قرشتثخذضظ'
value3 = 100

for i in abjad1:
    d[i] = value1
    value1 += 1
for i in abjad2:
    d[i] = value2
    value2 += 10
for i in abjad3:
    d[i] = value3
    value3 += 100
d['غ'] = 1000
while True:
    name = str(input('enter arabic name: '))
    abjad = 0
    for i in name:
        if d.__contains__(i):
            abjad += d[i]
        else:
            print('Please enter Arabic letters')
            continue
    print('The Result = ',abjad)
    if name == '0':
        break

چیزی که یادم رفت زودتر بگم اینه که حروف در سیستم ابجد به سه گروه تقسیم میشن. ارزش حروف گروه اول یکی یکی، ارزش حروف گروه دوم ده تا ده تا و ارزش حروف گروه سوم صد تا صد تا بالا میره و در نهایت حرف «غ» رو داریم که ارزشی معادل ۱۰۰۰ داره.

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

حالا برای اینکه از کار تکراری نکنیم با چند تا حلقه for یکی یکی ارزش حروف رو بهشون می دیم و تو دیکشنری ذخیره می کنیم.

در قسمت پایانی هم یه اسم رو می گیریم و با همون الگوریتم محاسبه اعداد ابجد، خروجی رو نشون می دیم.

چطور از اندروید به کامپیوتر لینوکسیمون 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

قانون اول: یک گیک هیچ وقت کار تکراری نمی‌کند!

| پنجشنبه, ۹ آبان ۱۳۹۲، ۱۰:۰۹ ب.ظ

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

جریان از این قراره که به تازگی، یه رام جدید رو گوشی arc s عزیزم نصب کردم. برای همین چند روزی سرگرم دستکاری گوشیم بودم تا متوجه شدم به خاطر همین انگولک کردن ها، کل دفترچه تلفنم، چهار بار از سیم کارت import شده. یعنی هر نفر چهار بار اسمش تکرار شده بود و به عبارت دیگه کانتکتی که باید ۱۰۹ شماره می داشت الان ۴۳۶ تا داره و این یعنی سر درد! و حتی برتر از اون: یه نمای زشت در کنج سیستم من.

پس باید از شرش خلاص شد. اولین چیزی  که به ذهنم رسید حذفِ دونه به دونه ی شماره ها و اسم های اضافی بود که خوشبختانه خیلی زود پشیمون شدم. میدونید چرا؟ چون با یه حساب سر انگشتی معلوم شد باید نهصد و هشتاد و یک بار روی صفحه گوشیم ضربه بزنم(109*3*3). و باور کنید مشاهده پرز های موکت برام لذت بخش تر از همچین کار مزخرفیه.

پس تصمیم گرفتم یه ایده خوب به ذهنم برسه ؛ و چون با یه سیستم لینوکسی طرفیم امکان خلاقیت وجود داره!

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

باید یه شبیه ساز ترمینال و نرم افزار Busybox هم رو گوشیتون نصب باشه(بیزی باکس نرم افزاریِ که مجموعه ایی از نرم افزارهای بومی لینوکس رُ، روی اندرویدِ نصب می‌کنه .مثل: ls, grep, cd, sed و غیره)

پس برای شروع کار وارد  Terminal Emulator میشیم و با استفاده از دستور su سطحمونو به کاربر ریشه ارتقا میدیم:


مکان فعلی ما دایرکتوری روتِ و از همینجا باید اون فایل مورد نظرمونو پیدا کنیم. اما چه جوری؟ ما نه میدونیم کجاست و نه اسم دقیقی ازش داریم و نه هیچ چیز قطعی دیگه. شاید بشه با cd به دایرکتوری های مختلف پیداش کرد، اما این هیچ فرقی با دونه دونه پاک کردن شماره ها نداره.

اینجاست که دو تا از ابزار های جادویی لینوکس به کار ما میان و با یه خط دستور اون چیزی رو که می خوایم نشونمون میدن: find و grep:

lما با دستور زیر به find میگیم که تمام دایرکتوری های موجود رو برای پیدا کردن فایل ها بگرد و خروجیتو انتقال بده به grep و اونجا به گرپ می گیم خطوطی رو که عبارت contact درشون هست رو نشون بده:

# find / -type f | grep contact

بعد از چند ثانیه کوتاه، خروجی زیر به دست میاد:


ظاهرا خط هفتم، آدرس همون فایلیِ که دنبالشیم :-). به دایرکتوریش cd می‌کنیم و با rm فایل contacts2.db رو حذف می کنیم:



تنها کاری که می مونه یه بار ریبوت کردن گوشی و یه بار import شماره ها از روی سیم کارته.


زیبا بود نه؟!

کار خودمو نمی گم؛فلسفه  گنو لینوکسو می گم.

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

ایدئولوژی منحصر به فردی که کاربراشو خلاق تربیت میکنه و به اونها یاد می ده هر چیزی که یاد میگیرید متعلق به خودتون نیست، بلکه باید با دیگران هم یاد بدید بذارید.

و معلم عجیبی که دائم به شاگرداش می‌گه «خودت انجامش بده»  ;-)

یادش به خیر...

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

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


 
راستی یه سوال
چرا هر چی جلو تر میریم می بینیم که قدیما اوضاع بهتر بود؟

ایده برنامه نویسی از سایت اوبونتو

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

دیروز تو بخش برنامه سازی انجمن اوبونتو، یکی از کاربرا پستی زده بود راجع به اسکریپت تبدیل اعداد به حروف( مثلا۱۲ -> دوازده) به زبان php. منم اول فکر کردم این کاربر عزیز دنبال همچین سورسی می گرده، برای همین فکر نوشتنش به سرم زد (البته به زبون پایتون چون php بلد نیستم) و گفتم هم تمرینی برای خودم و هم شاید کار این بنده خدا راه بیوفته. واسه همین آستینا رو بالا زدم و شروع به نوشتنش کردم. 

به آخرای برنامه رسیده بودم که دوباره سری به پست مذکور زدم و دیدم ای دل غافل؛ این رفیق ما از همون اول برنامه رو گذاشته بود تو انجمن تا اگه کسی به درد خورد استفاده کنه! و من پست رو از اول اشتباه خوندم.

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


#!/usr/bin/python3
#######################
def num_counting(num):
	c = 0
	while (num >=10):
		num /= 10
		c+=1
	return c+1
#######################
def two_numbers(num):
	F = num // 10
	M = num % 10
	for i in range(1,10):
		if i == F:
			for j in range(1,10):
				if j == M:
					return do[i],'va',yek[j]
def three_numbers(num):
	F = num // 100
	for i in range(1,10):
		if  i == F:	
			return se[i],"va",two_numbers(NUM % 100) 
yek = {1 : 'yek',
	2 : 'do',
	3 : 'se',
	4 : 'chahar',
	5 : 'pang',
	6 : 'shesh',
	7 : 'haft',
	8 : 'hasht',
	9 : 'noh',
}
do = { 1 : 'dah',
	2 : 'bist',
	3 : 'si',
	4 : 'chehel',
	5 : 'panjah',
	6 : 'shast',
	7 : 'haftad',
	8 : 'hashtad',
	9 : 'navad',
}
se = { 1 : 'sad',
	2 : 'devist',
	3 : 'sisad',
	4 : 'chaharsad',
	5 : 'pansad',
	6 : 'sheshsad',
	7 : 'haftsad',
	8 : 'hashtsad',
	9 : 'nohsad',
}
################

NUM = int(input("enter the number: "))
if (num_counting(NUM) == 1):
	for i in range(1,10):
		if i == NUM:
			print(yek[i])
elif (num_counting(NUM) == 2):
	print(two_numbers(NUM))
elif (num_counting(NUM) == 3):
	print(three_numbers(NUM))
elif (num_counting(NUM) == 4):
	F = NUM // 1000
	for i in range(1,10):
		if i == F:
			print(yek[i],'hezar va',three_numbers(NUM % 1000))

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


ضمنا اگر برنامه نویس حرفه ایی هستید لطفا به من بد و بیراه نگید. ما هنوز تازه کاریم ;-)

سیر و سیاحت من در فدورا ۱۹

| يكشنبه, ۱۶ تیر ۱۳۹۲، ۱۰:۲۲ ق.ظ

گربه شرودینگر!
تا قبل از امروز فقط فیزیکدان ها حق داشتن  راجع بهش حرف بزدن؛ اما از امروز به بعد نوبت لینوکسی هاست!

بعد از مشکلاتی که فدورا ۱۸ به وجود آورد، میشه گفت تمام کاربران فدورا چشم انتظار این نسخه بودن و برای رسیدنش روزشماری می کردند.من هم از این قاعده مستثنی نبودم و هر روز به اینکه فدورا۱۹ چه خواهد بود فکر می کردم تا اینکه بالاخره سه شنبه شب از طریق تورنت، نسخه گنومی و ۳۲ بیتش رو دانلود کردم.

فدورا جدید رو اول رو نت بوکم نصب کردم و چون گنوم شل، به دلیل سخت افزار ضعیف، یه کندی اجرا می شد، اول با دستور:
sudo yum -y groupremove gnome

گنوم رو از رو سیستمم پاک و xfce رو نصب کردم

sudo yum -y groupinstall xfce

و باید بگم که نسخه  xfce از هر نظر عالی بود و توی این یه هفته به بهترین نحو کار می‌کرد. و چیزی که بیشتر از همه منو خوشحال کرد، فیچر جدیدی بود که بهمون امکان کم و زیاد کردن نور مونیتور رو می‌داد که در فدورا ۱۸ وجود نداشت.


فدورای گنومی هم رو دسکتاپم نصب کردم.

اولین چیزی که توجه منو جلب کرد، یه پنجره بود که ازم خواست اطلاعات اکانت هامو بهش بدم تا سیستمو برام تنظیم کنه. مثلا با دادن یوزر و پسورد اکانت گوگل، evolution ایمیل هامو مدیریت می‌کنه،برنامه contact و calender با کانتکت و کلندر اکانتم سینک میشه و از طریق برنامه document میتونم اسنادی رو که در google drive آپلود کردم ببینم.

امکان تغییر لایوت های کیبورد با استفاده از شورتکات دوباره فعال شده که به صورت پیشفرض باید کلید های super+space رو فشار بدید تا این اتفاق بیوفته و امکان تغییر به alt+shift معروف نیست؛البته با نصب بسته gnome-tweak-tool و مرور به سربرگ typing می تونید این به alt+shift تغییرش بدید.


جستوجو در گنوم ۳.۸ قوی تر شده و علاوه بر پیدا کردن نرم افزار ها، تو دایرکتوری Home هم سرک می کشه و نتایج رو نشون میده.

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

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


yum -y install wget axel gimp deluge vim gvim gcc gcc-c++ fpc vlc gnome-tweak-tool xchat

و در پایان یکبار آپدیت کل سیستم:

yum -y update

امیدوار شیش ماه آینده، اوقات خوشی با این گربه  پر سر و صدا داشته باشیم :)

ایمکس؛یک کلاینت ایمیل

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

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

 

نرم افزار ایمکس بیش از اینکه یک ادیتور باشه، یک مفسر زبان برنامه نویسی لیسپ به حساب میاد. اگر با این زبان تابعی آشنا نیستید، نقل قول زیر از ویکیپدیا برای شماست :

 

لیسپ یک زبان برنامه‌نویسی رایانه است که در سال ۱۹۵۸ به وسیلهٔ جان مک‌کارتی ابداع شده‌است. این زبان، مانند زبان برنامه‌نویسی پرولوگ، بیشتر برای برنامه‌نویسی هوش مصنوعی مورد استفاده قرار می‌گیرد. با توجه به اینکه زبان لیسپ از نحو ساده‌ای برخوردار است، تجزیه و پیاده‌سازی آن نسبتاً با سهولت انجام می‌شود.

زبان برنامه‏‎نویسی لیسپ توسط جان مک کارتی در سال ۱۹۵۸ در حالی که در مؤسسهٔ فناوری ماساچوست (MIT) بود ابداع شد. مک کارتی طرح خودش را در یک مقالهٔ مرتبط با انجمن ماشین آلات کامپیوتری در سال ۱۹۶۰ منتشر کرد. طرح وی در ابتدا به صورت «بخش اول:توابع بازگشتی از دید عبارت‌های نمادین و محاسبهٔ آنها توسط ماشین» ارائه شد و بخش دوم آن هیچگاه منتشر نشد. وی نشان داد که با یک تعداد ساده و کمی از عملگرها و علمتگذاری توابع می‌توان یک زبان تورینگ کامل برای الگوریتم‌ها ایجاد کرد. زبان پردازش اطلاعات اولین زبان هوش مصنوعی بود. از سال ۱۹۵۵ یا ۱۹۵۶ و پیش از آن ایده‌های بسیاری بر زبان لیسپ وارد شد از جمله پردازش لیست و توابع بازگشتی که در زبان لیسپ به کار برده شد. ثبت‌های اصلی مک کارتی به صورت عبارت‌های غیر نمادین که خواستار تفسیر کردن و برگرداندن به عبارت‌های نمادین بود. به عنوان مثال عبارت غیر نمادین car[consA,Bمعادل عبارت نمادین (car (cons A B)بود که در زبان لیسپ به کار گرفته شده بود. برنامه نویسان به سرعت عبارت نمادین را انتخاب و عبارت‌های غیر نمادین را ترک کردند. لیسپ برای اولین بار توسط استفان راسل روی یک کامپیوتر IBM 704 اجرا شد. راسل مقالهٔ مک کارتی را مطالعه کرد و دریافت که توابع لیسپ می‌توانند در کد ماشین اجرا شوند. این نتیجه از مطالعه و دریافت راسل نشان می‌دهد که مفسر لیسپ می‌توانست برای اجرای برنامه‌های لیسپ و ارزیابی صحیح عبارت لیسپ استفاده شود. دو زبان اسمبلی به عنوان دو عملیات اصلی و ابتدائی تجزیه و جدا کردن عناصر اصلی لیست برای IBM 704 شد. این دو زبان اسمبلی car (مضمون آدرس ثبات) و cdr (محتوای کاهش میزان ثبات‌ها) نسخهٔ لیسپ هنوز ازcar وcdr برای عملیاتی که اولین عنصر در یک لیست و باقی‌ماندهٔ لیست را برمی‌گرداند، استفاده می‌کند. اولین کامپایلر تکمیل شدهٔ لیسپ، در سال ۱۹۶۲توسط تام هارت و مایک لوین در MIT اجرا شد، این کامپالر معرفی شده مدل لیسپ با کامپایلر نحوی در هر کامپایل و ترجمهٔ توابع می‌تواند به طور رایگان در هم بیامیزد. زبان به کار گرفته شده در ثبت هارت و لوین نسبت به کدهای ابتدائی مک کارتی به شیوهٔ لیسپ مدرن و جدید نزدیک تر می‌باشد.

 

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

 

این راز انعطاف پذیریه خارق العاده ایمکسه.

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

و خلاصه با ای لیسپ چه کار ها که نمی‌شه انجام داد.

و حالا میدونید زیبایی ایمکس کجاست؟

میخواین زبان elisp‌ رو یاد بگیرید؟ بسیار خوب؛هیج جا بهتر از خود ایمکس برای یادگیری نیست.

این دستورو وارد کنید:

C-h i d m emacs lisp intro RET

(دکمه Ctrl رو نگه دارید و کلید h رو فشار بدید، بعد اونا رو رها کنید و اول کلی i و بعد کلید d و بعد کلید m رو فشار بدید و سپس عبارت emacs lisp intro رو تایپ کنید و بعد دکمه اینترو مرقوم بفرمایید)

 

خب، مقدمه بسه.بریم سر اصل مطلب.

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

ما برای اتصال به میل سرورمون از کلاینت پیشفرض ایمکس به نام gnus استفاده می کنیم.کلاینت های دیکه ایی هم وجود داره که در صورت تمایل با اندکی جستوجو می تونید اونها رو هم پیاده سازی کنید.

 

فایل gnus.el./~ رو باز کنید و این خطوط رو داخلش کپی کنید:

(setq gnus-select-method '(nnimap "gmail"
				  (nnimap-address "imap.gmail.com")
				  (nnimap-server-port 993)
				  (nnimap-stream ssl)))

 

و برای استفاده از سرویس SMTP که برای ارسال ایمیل به کار می ره خطوط زیر رو هم اضافه کنید:

(setq message-send-mail-function 'smtpmail-send-it
      smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))
      smtpmail-auth-credentials '(("smtp.gmail.com" 587 "username@gmail.com" nil))
      smtpmail-default-smtp-server "smtp.gmail.com"
      smtpmail-smtp-server "smtp.gmail.com"
      smtpmail-smtp-service 587)

به جای عبارت username@gmail.com، آدرس جیمل خودتون رو قرار بدید.

و برای اینکه ایمیل هایی که از طریق ‌gnus ارسال میکنید، در سرور گوگل ذخیره بشه این کد ها رو هم وارد کنید:

(setq gnus-posting-styles
      '((".*"
	 ("CC" "username@gmail.com")
         (address "username@gmail.com"))))

و حالا فایل gnus.el. رو ذخیره کنید و ببندید.

 

 

اکنون فایل authinfo./~ رو باز کنید و و کد های زیر رو درونش وارد کنید :

 

machine imap.gmail.com login username@gmail.com password secret port 993
machine smtp.gmail.com login username@gmail.com password secret port 587

به جای password secret هم کلمه عبور حسابتون رو وارد کنید.

با ذخیره و بستن این فایل کار کانفیگ gnus تموم میشه و می تونید با باز کردن ایمکس و تایپ دستور M-x gnus از زندگی گیکی خودتون لذت ببرید.

در مورد خود gnus هم باید بگم که تنظیمات خیلی خیلی خیلی زیادی داره که باید خودتون یاد بگیرید.من این آموزشو از لینک زیر آوردم که همون جا یه سری توضیح برای استفاده مقدماتی از gnus آورده که برای شروع مفیده.

http://www.emacswiki.org/emacs/GnusGmail#toc23

 

 

 

 

 

 

اینم لینکی که قولشو داده بودم : http://www.emacswiki.org/emacs/CategoryGnus

پوسته ایی نو برای ایمکس

| جمعه, ۱۷ خرداد ۱۳۹۲، ۱۰:۲۷ ب.ظ

چیزی که امروز تو ایمکس پیدا کردم و باعث خوشحالیم شد این بود که دیدم میشه پوستشو تغییر داد. با رفتن به منوی options و بعد customize emacs و بعد custom theme.

با انتخاب هر کدوم از تم های موجود ظاهر ایمکس به اون تم تغییر میکنه و با فشردن دکمه save theme setting پوسته ی محبوبتون رو به حالت پیش فرض میاره.




اسم پوسته ایی که من انتخاب کردم tango-dark ئه.

شاد باشین و ایمکسی