وبلاگ محسن

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

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

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

 

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

 

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

زبان برنامه‏‎نویسی لیسپ توسط جان مک کارتی در سال ۱۹۵۸ در حالی که در مؤسسهٔ فناوری ماساچوست (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

  • ۹۲/۰۳/۲۰

ایمکس

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی