الحياة قصيرة اذن انت بحاجة لبايثون
برمجة بايثون تطوير مواقع و أشياء أخرى
اعزف ترنيمة ماريو بالبايثون !!!
Posted by على 19 سبتمبر 2011
اليوم أحببت أن اشارككم بسكريبت جميل ، صغير و ممتع ـ في الحقيقة كنت أشاهد مقطع تعليمي في اليوتيوب لأساسيات BASH فإذا بي ألمح مقطع جميل أخر و هو كيفية العزف باستعمال Beeps (التلميحات الصوتية أو صفارات الانذار)
فقمت بالبحث عن نوتة صديق الطفولة Mario ، وكتبت السكريبت التالي ،
import winsound
nota = ( (659, 125),(659, 125),(32400, 125),(659, 125),(32400, 167),(523, 125), (659, 125),(32400, 125),(784, 125),(32400, 375),(392, 125),(32400, 375), (523, 125),(32400, 250),(392, 125),(32400, 250),(330, 125),(32400, 250), (440, 125),(32400, 125),(494, 125),(32400, 125),(466, 125),(32400, 42), (440, 125),(32400, 125),(392, 125),(32400, 125),(659, 125),(32400, 125), (784, 125),(32400, 125),(880, 125),(32400, 125),(698, 125),(784, 125),(32400, 125) ,(659, 125),(32400, 125),(523, 125),(32400, 125),(587, 125),(494, 125),(32400, 125), (523, 125),(32400, 250),(392, 125),(32400, 250),(330, 125),(32400, 250),(440, 125), (32400, 125),(494, 125),(32400, 125),(466, 125),(32400, 42),(440, 125),(32400, 125), (392, 125),(32400, 125),(659, 125),(32400, 125),(784, 125),(32400, 125),(880, 125), (32400, 125),(698, 125),(784, 125),(32400, 125),(659, 125),(32400, 125),(523, 125), (32400, 125),(587, 125),(494, 125),(32400, 375),(784, 125),(740, 125),(698, 125),(32400, 42) ,(622, 125),(32400, 125),(659, 125),(32400, 167),(415, 125),(440, 125),(523, 125),(32400, 125) ,(440, 125),(523, 125),(587, 125),(32400, 250),(784, 125),(740, 125),(698, 125),(32400, 42),(622, 125) ,(32400, 125),(659, 125),(32400, 167),(698, 125),(32400, 125),(698, 125),(698, 125),(32400, 625),(784, 125) ,(740, 125),(698, 125),(32400, 42),(622, 125),(32400, 125),(659, 125),(32400, 167),(415, 125),(440, 125),(523, 125) ,(32400, 125),(440, 125),(523, 125),(587, 125),(32400, 250),(622, 125),(32400, 250),(587, 125),(32400, 250),(523, 125) ,(32400, 1125),(784, 125),(740, 125),(698, 125),(32400, 42),(622, 125),(32400, 125),(659, 125),(32400, 167),(415, 125) ,(440, 125),(523, 125),(32400, 125),(440, 125),(523, 125),(587, 125),(32400, 250),(784, 125),(740, 125),(698, 125),(32400, 42) ,(622, 125),(32400, 125),(659, 125),(32400, 167),(698, 125),(32400, 125),(698, 125),(698, 125),(32400, 625),(784, 125),(740, 125) ,(698, 125),(32400, 42),(622, 125),(32400, 125),(659, 125),(32400, 167),(415, 125),(440, 125),(523, 125),(32400, 125),(440, 125), (523, 125),(587, 125),(32400, 250),(622, 125),(32400, 250),(587, 125),(32400, 250),(523, 125) )
for i in nota :
winsound.Beep(i[0],i[1])
دالة العزف Beep تقع في موديول winsound تأخذ كمدخلات ، تردد الصوت بالهرتز ، و مدة تنفيذ الصوت بالملي ثانية ,
بالنسبة للنوتة مأخوذة من هنا
معلومات أكثر عن winsound
مايجب أن تعرفه عن الوقت في بايثون
Posted by على 23 يوليو 2011
من المهام الاعتيادية للمبرمج التعامل مع الوقت ، تحويل بين صيغ الوقت ، البحث عن اليوم المرادف لتاريخ معين ، حساب الزمن أو عدد الأيام بين تاريخين و ما الى ذلك من الأمور الروتينية ، ولهذا يطرح بايثون بين أيدينا العديد من الوحدات (modules) الخاصة بالوقت و الـتأريخ و الرزنامة .
منها وحدة time التي سنتناول بعض دوالها (functions) بالشرح .
قبل هذا يتوجب علينا الإحاطة ببعض المصطلحات لنتمكن من اتقان استعمال دوال الوقت ، هذه المصطلحات لا تتعلق بلغة برمجة بعينها و انما هي تعريفات عامة .
1- بداية التأريخ “epoch “ :بالطبع لا نقصد بها ميلاد المسيح و لا الهجرة النبوية ، بل هي بداية التأريخ لأنظمة الحاسوب أو التاريخ الذي يساوي الزمن عنده الصفر بالنسبة لنظام يونيكس epoch = 1 jan 1970 12 :00 am
قد تتسائل عن كيفية التعامل مع التواريخ قبل هذا التاريخ أو للمستقبل البعيد ، لا تخف فهناك مكتبة خارجية غير مضمنة مع بايثون تمكننا من ذلك اسمها mxDateTime ,
2-UTC أو GMT : باختصار هو الوقت عند خط طول 0 درجة المار بغرينيتش ، و يستعمل كمرجع للوقت فمثلا الوقت في الجزائر عند لحظة ما هو GMT+1 :00
3-التوقيت الصيفي DST Daylight saving هو تغيير التوقبت الرسمي في بلاد ما لعدة أشهر من كل سنة .(معمول به في الدول المتقدمة) يتم إعادة ضبط الساعات الرسمية في بداية الربيع , حيث تقدَّم عقارب الساعة بساعة كاملة. أما الرجوع إلى التوقيت العادي, أي التوقيت الشتوي, فيتم في موسم الخريف ، الهدف من زيادة ساعة للتوقيت الرسمي هو تبكير أوقات العمل لأن النهار يطلع مبكرا أثناء فصل الصيف
بالنسبة لوحدة الوقت في بايثون يجب علينا معرفة ما يلي :
ان قيمة الوقت تمثل بطريقتين على حسب الدالة المستعملة :
1- سلسلة من تسعة أرقام على الشكل التالي أو مايسمي بهيكلية الزمن struct_time
(2000, 11, 30, 0, 0, 0, 3, 335, -1)
كما تلاحظ فهي تعني على التوالي
(دعم التوقيت الصيفي ، رقم اليوم من السنة ، رقم اليوم من الأسبوع ، الثواني ، الدقائق،الساعة،اليوم،الشهر، السنة)
2-رقم عشري (بالفاصلة ) يمثل عدد الثواني منذ بداية الزمن(epoch)
أهم دوال هذه الوحدة هي
time.time() لمعرفة الزمن بالثواني ،
time.gmtime(): تستعمل هذه الدالة لتحويل الوقت بصيغة الثواني الى صيغة هيكلية الزمن المذكورة انفا ، حسب توقيت غرينيتش
لمعرفة بداية الـتأريخ في نظامك استعمل الدالة (time.gmtime(0
time.localtime() :تستعمل هذه الدالة لتحويل الوقت بصيغة الثواني الى صيغة هيكلية الزمن المذكورة انفا ، حسب التوقيت المحلي
أما لمعرفة الوقت المحلي time.localtime() بدون بارامترات
مثلا الوقت المحلي في الجزائر يساوي غرينيتش زائد ساعة فالدوال السابقة ستعمل كالتالي
>>> time.localtime()
(2011, 7, 15, 17, 16, 24, 4, 196, 1)
>>> time.gmtime()
(2011, 7, 15, 15, 16, 31, 4, 196, 0)
أما المتغير time.timezone فيعطينا الفرق بين الزمن المحلي و غرينيتش بالثواني في مثالنا السابق ستعطينا ناقص 3600 ثانية أي يلزمنا الرجوع ساعة كاملة الى الغرب لنوافق خط غرينيتش
لمعرفة ان كان نظامك يعمل وفق التوقيت الصيفي استعمل المتغير time.daylight الذي لن يساوي الصفر في حالة الايجاب
maketime() تعمل هذه الدالة عكس الدالة localtime() يعني انها تأخذ الوقت بصيغة struct_time وتحوله لصيخة الثواني .
بايثون و البريد الالكتروني
Posted by على 15 يونيو 2010
من منا لا يملك بريدا الكترونيا ، سواءا كان استعماله للتراسل والتواصل أو للتسجيل في شتى خدمات الإنترنت و الويب .
غالبا ما يكون تصفحنا للبريد الإلكتروني عبر موقع المستضيف ، ولكن كم منا من يرغب في استخدام برنامج لسطح المكتب لتصفحه ؟ ما رأيك في أن يكون هذا البرنامج من صنعك أو تعديلك ، حسب رغبنك و متطلباتك .
نعم يمكنك ذلك بسهولة و في وقت قصير ، طبعا باستخدام بايثون و بعض المعرفة السطحية عن بروتوكولات البريد الإلكتروني.
في الحقيقة توجد عدة بروتوكولات للتعامل مع خوادم البريد الإلكتروني ولكن أشهرها
1- الأول لقراءة البريد ويسمى POP
2- اما الثاني فهو لارسال البريد و يسمى SMTP
بروتوكول مكتب البريد ، أو Post Office Protocol ، POPاختصارا هو بروتوكول (طريقة تواصل بين خادم و عميل Client and Server) يستخدم لقراءة البريد الإلكتروني من خادم بريد الكتروني ، سيرفر ،
توجد منه عدة نسخ: POP1,POP2,POP3,POP3S.
يهمنا منها الأخيرين فقط ، POP3 و POP3S حيث يختلف هذا الأخير عن الأول أنه يوفر الحماية للاتصال باستخدام خوارزمية SSL
شرح البروتوكول : كما اسلفنا الذكر أن البروتوكول في مجال الانترنت يعني طريقة تواصل بين خادم و عميل ،
أما خادمنا هنا فهو أي خادم بريد الكتروني يدعم بروتوكول POP (Hotmail , Gmail,yahoo,، مكتوب ، …) و اليك الخطوات التي يقوم بها العميل
(Ms Outlook ; MailSender , …) :
1- يقوم العميل بالاتصال
2- يتلقى رسالة ترحيب من السيرفر
3- يقوم العميل بتعريف نفسه USER;PASS
4- بعد الولوج يستطيع العميل استعمال أوامر POP لقراءة ، حذف أو عرض الرسائل
5- الخروج و إنهاء الجلسة
مجموعة أوامر POP المهمة :
|
الأمر |
شرح الأمر |
|
STAT |
يعطينا عدد الرسائل و حجم مجموع الرسائل بالبايت |
|
LIST |
يعطينا قائمة تتكون من رقم الرسالة و حجم الرسالة بالبايت |
|
RETR n |
يعطينا نص الرسالة رقم n |
|
DELE n |
يقوم بحذف الرسالة رقم n |
|
QUIT |
انهاء جلسة pop باغلاق الاتصال مع السيرفر |
مثال تطبيقي باستخدام Python :
من اجل التعامل مع بروتوكول POP يوفرلن بايثون مكتبة رائعة لهذا الغرض تسمى poplib .
ستحتاج لاعدادات خادم pop الذي تملك حسابا عنده ، و لنأخذ Gmail كمثال :
1- عنوان الخادم :pop.gmail.com
2- اسم المستخدم : you_account_name@gmail.com
3- كلمة المرور : your_pass
اما الان اليك البرنامج التالي :
import poplib
pop = poplib.POP3_SSL(‘pop.gmail.com’)
pop.user(‘you_account_name@gmail.com’)
pop.pass_(‘your_pass’)
message_count, mailbox_size = pop.stat()
pop.quit()
print message_count, mailbox_size
كل مايقوم به هذا البرنامج هو الولوج لحسابك ثم تنفيذ أمر STAT للحصول على عدد الرسائل و الحجم الكلى للرسائل بالبايت ثم طباعة هذين الأخيرين .
