29 مارس, 2010شرح Unix Cron jobs

السلام عليكم ,

اذا كنت مطور مواقع و خاصة بلغة PHP فقد تكون فكرت ” هل يمكن أن يتم تنفيذ ملف PHP أوتوماتيكيا ؟!!! ” ؟ .

الحل لتنفيذ ملفات php اوتوماتيكيا هو Cron jobs .


اذا كنت صاحب موقع و تود عمل استراتيجية لعمل backup  لقاعدة البيانات ( مثلا كل أسبوع ) , فالطبيعى أن تقوم

بتشغيل السكريبت بنفسك ( و هذا السكريبت يقوم بدوره و هو أخد نسخة backup من قاعدة البيانات ).

هل فكرت أن كل ذلك يمكن أن يتم أوتوماتيكيا بدون أى تدخل منك ؟!!!

بالإضافة لذلك سيتم ارسال رسالة إلى ايميلك لإعلامك أنه تم أخد نسخة احتياطى من قاعدة البيانات :)


الطبيعى أن ملف php  يحتاج لتدخل منك لكى يتم تنفيذه, و لكن مع cron jobs  يمكن أن يتم تنفيذ الملف أوتوماتيكيا !!


ماهى Cron Jobs  ؟
أفضل تعريف وجدته لـ Cron Jobs هو

A command on a server, executed at regular intervals. These commands are stored in a Unix configuration file called crontab.  [cPanel Glossary]

هى أداه فى اللينكس تسمح بعمل جدولة للمهام. بمعنى أنه يمكنك تنفيذ أمر معين كل فترة معينة.

و يرجع تسميتها الى الساعة الشهيرة Chronograph .

ببساطة يمكنك تنفيذ ملف php كل فترة معينة (مثلا كل يوم  الساعة 7 صباحا ). و بالتالى يمكن تنفيذ ملفات php  أوتوماتيكيا.


لتشغيل ملف php اوتوماتيكيا :

- ندخل على لوحة التحكم cPanel الخاصة بالموقع

- ثم من جزأ Advanced نختار Cron Jobs كما بالصورة

- نقوم بإدخال الايميل المراد ارسال تقرير إليه , ثم نقوم بتحديد الوقت (دقيقة, ساعة, يوم, شهر, أسبوع )

- ثم نقوم بتحديد المهمة أو الأمر و لتنفيذ ملف php  نستخدم الأمر

php http://www.eng-mmf.com/index.php

هنا نقوم بتشغيل الملف الموجود فى المسار  http://www.eng-mmf.com/index.php  كل يوم الساعة 12 صباحا.

cron jobs

ثم نضغط على Add New Cron Job , ستلاحظ ظهور التالى بعد عملية الإضافة

و بذلك يمكن تشغيل ملف php أوتوماتيكيا , كل مدة معينة

كل هذا بإستخدام  Cron Jobs

للمزيد عن Cron Jobs

تم بحمد الله :)


13 مارس, 2010HTTP Protocol

السلام عليكم,

اليوم سأتحدث شئ عظيم جداا ,  شئ عزيز إلى قلبى.
سأتحدث عن حبى و إعتزازى , بالطبع ليست غسالة كريازى :)
و انما البروتوكول الرائع
HTTP أو Hypertext Transfer Protocol



كانت بداية ظهور برتوكول HTTP لأول مرة عندما نجح Tim Berners-Lee (مخترع WWW) فى انشاء اتصال بين HTTP Client و HTTP Server من خلال الانترنت.

يعمل HTTP بطريقة Client/Server  فمثلا المتصفح يسمى HTTP Client  و هو الذى يقوم بإرسال الطلبات requests  إلى السيرفر HTTP Server  و الذى بدوره يقوم بإرسال الرد response  إلى المتصفح.


النسخة الحالية من بروتوكول HTTP  هى HTTP/1.1 و التى تم الإعلان عنها عام 1997. تعتبر هذه النسخة أسرع من النسخة الأولى HTTP/1.0 , لأنه فى النسخة القديمة HTTP/1.0 كان يتم عمل اتصال منفصل لكل جزأ من الصفحة. مثلا تطلب صفحة تحتوى على خمس صور , سيتم عمل اتصال منفصل لكل صورة !!! و بالتالى هذا يسبب بطئ فى التحميل.

أما مع برتوكول HTTP/1.1 فيتم استخدام اتصال دائم , و عن طريق استخدام تكنيك Keep-Alive يمكن استخدام نفس الاتصال لتحميل الخمس صور , وبالتالى فإن HTTP/1.1 أسرع من HTTP/1.0 .


من المسؤل عن تطوير HTTP ؟
المسؤال عن تطوير بروتوكول  HTTP مؤسستين هما رابط الشبكة العالمية  W3C - World Wide Web Consortium و اللجنة الخاصة لنظام الانترنت IETF - Internet Engineering Task Force .
قامت المؤسستين بنشر التفاصيل الخاصة ب HTTP/1.1  فى
RFC2616.



كيف يتم الاتصال بين HTTP Client و HTTP Server  ؟
عندما تقوم بطلب صفحة ما من موقع و ليكن www.eng-mmf.com

يقوم المتصفح بإنشاء طلب HTTP Request

و عندما يصل هذا الطلب إلى السيرفر يقوم بالرد على المتصفح بـ HTTP Response.


ماهى طرق عمل HTTP Request ؟
توجد ثمان طرق لإرسال الطلب من المتصفح (تحدد هذه الطرق مالذى ستفعله مع المصدر الذى تطلبه سواء كان ملف أو صورة ..
GET, HEAD, PUT, DELETE, POST, TRACE, CONNECT OPTIONS
أشهرهم على الإطلاق هى GET و التى تعنى أنك تتطلب مصدر (صفحة , صورة , ملف , …الخ) من السيرفر.


مثال على استخدام GET :

GET /icons/rss.png HTTP/1.1
Host: www.eng-mmf.com

و التى تعنى أنك تطلب الصورة الموجودة فى المسار التالى icons/rss.png و أنك تستعمل بروتوكول HTTP النسخة 1.1


السؤال هنا : لماذا تم كتابة اسم الدومين بدلا من الأى بى فى جزأ الـ Host ؟

ببساطة شديدة جداا, لأن السيرفر قد يحتوى على أكثر من موقع
و بالتالى يجب أن يقوم المتصفح بإرسال اسم الموقع الى السيرفر .

عندما يصل الطلب إلى السيرفر , يقوم السيرفر بعمل رد HTTP Response و يحتوى هذا الرد على كود الحالة Status Code

يحتوى كود الحالى على شكل رقمى و نصى للحالة مثلا :
  • 200 OK أكواد الحالة التى بتبدأ بـ 2 تعنى أنه تم استلام الطلب و تم فهمه و التعامل معه بنجاح
  • 304 Not Modifiedأكود الحالة التى تبدأ ب 3  تعنى أنه يجب على المتصفح عمل شيئا ما لإكمال الطلب
  • 404 Not Foundأكواد الحالة التى تبدأ ب 4 تعنى أنه هناك خطأ ما من جانب المتصفح
  • 500 Internal Server Errorأكواد الحالة التى تبدأ ب 5 تعنى وجود خطأ من جانب السيرفر
نفهم من السابق أنه يتم تقسيم أكواد الحالة إلى عدة أصناف بناءً على الرقم الأول على الشمال Xxx , و يمكنك مشاهدة المزيد عن أكواد الحالة و ماتعنيه من هذه الصفحة.

مثال على Server Response

HTTP/1.1 200 OK
Server: Apache/1.3.3.7 (Unix)  (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Content-Length: 438
مContent-Type: text/html; charset=UTF-8
الجدير بالذكر أن السيرفر لايمكنه معرفة معلومات سرية جدا عنك أثناء تصفح المواقع الموجودة عليه ,
مثلا يمكنه معرفه نوع المتصفح , نظام التشغيل , اللغة الافتراضية , IP  ولا يمكنه معرفه ماتحفظه على الهاردديسك.

مع ظهور HTTP/1.1 ظهرت عدة تقنيات لتحسين التعامل مع bandwidth , مثلا
  • Chunked Transfer Encoding و التى تعنى تقسيم رسائل HTTP  إلى عدة اقسام صغيرة ثم ارسالها.
  • HTTP Pipelining و التى تمكنك من ارسال أكثر من طلب لنفس السيرفر حتى قبل الحصول على الرد للطلب الأول.
  • Byte Serving امكانية طلب جزأ معين من الصفحة و ليس الصفحة بأكملها. (مفيد جدا فى حالة الملفات الكبيرة)

نظرا لأن HTTP يعتبر بروتوكول عديم الحالة Stateless  بمعنى أنه يتعامل مع كل طلب Request كأنه

طلب مستقل ولا يتعلق بأى طلب أخر . و كثير مايحتاج مبرمجوا المواقع تتبع حالة المستخدم من صفحة
لأخرى , لذا يتم استخدام احدى الطرق التالية:
  • HTTP Cookie , و قد تم التحدث عنها فى تدوينة سابقة
  • Server Side Session
  • Hiding Variables فى حالة التعامل مع HTML Forms
  • URL Encoded Parameters

كنتم مع دردشة سريعة عن بروتوكول الويب الأول HTTP , و ان شاء الله سيكون لنا حديث مفصل عن تقنيات HTTP  المهمة مثل :

HTTP Caching, HTTP Compression, HTTPS

بالتوفيق ان شاء الله.

سلام عليكم.

10 مارس, 2010regular expressions in PHP

السلام عليكم :) ,

كنا قد تحدثنا فى التدوينة السابقة عن regular expression بشكل عام,

و قمنا بإستخدام صفحة regular expression helper للتطبيق على الأمثلة ,

و الأن حان الوقت للتحدث عن كيفية استخدام regular expressions فى لغة PHP.

يوجد نوعين من الـ regular expressions  فى PHP :

  1. POSIX Extended و نستخدم معه الدوال ereg , eregi
  2. Perl Compatible و نستخدم معه الدوال perl_match, perl_replace

و الجدير بالذكر أنه يجب وضع الـ regular expression بين علامتين forward slash /  فى حالة استخدام Perl Compitable, و أيضا يجب ذكر أن Perl Compatible أقوى و أسرع من POSIX Extended .  و إليكم الأمثلة:

Regular Expression to check email using Perl compatible

$email = 'anyone@yahoo.com';
$pattern = '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/';
if( preg_match( $pattern, $email ) ) {
    echo 'good one';
} else {
    echo "Bad email!, doesn't match";
}

Regular Expression to check email using POSIX Extended

$email = 'anyone@yahoo.com';
$pattern = '^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$';
if( ereg( $pattern, $email ) ) {
    echo 'good one';
} else {
    echo "Bad email!, doesn't match";
}

و هكذا يمكنك استخدام regular expressions داخل PHP.

بالتوفيق ان شاء الرحمن :)


7 مارس, 2010شرح Regular Expressions

السلام عليكم ورحمه الله ,

إليكم شرح regular expressions أو مايطلق عليها التعابير القياسية ,

الشرح باللغة العربية , كما يمكن التطبيق عن طريق استخدم الصفحة التالية:

Regular Expression Helper

الشرح يعتبر مقدمة جيدة فى regular expressions و مفيدة ان شاء الله

و قت سعيد مع  regular expressions :)

للتحميل اضغط هنا

تحديث: تم اضافة الكتاب فى موقع كتب kutub.info .
بالتوفيق ان شاء الله.


السلام عليكم :)

ماهو Social bookmarking
- ترجمة حرفيةالمفضلات الأجتماعية
عبارة عن طريقة تساعد مستخدمى الأنترنت انهم يحفظوا و ينظموا و يصنفوا و يبحثوا و يديروا المواقع المفضلة لديهم و لكن على الأنترنت .

طبعا كلنا عارفين المفضلة اللى موجودة فى المتصفح , بس دى بتكون على جهازك انت بس
انما فى social bookmarking بتكون على الأنترنت , يعنى تقدر تشوفها من اى مكان

بمعنى اخر
social bookmarking عبارة عن نسخة اون لاين من المواقع المفضلة لديك  , ولكن بأمكانيات اكثر

تاريخ الخدمة :
بدأت سنة 1996 و لكن ظهورها الحقيقى بدأ عام 2003 مع ظهور موقع del.icio.us
و ظهور مواقع اخرى مثل furl و simpy

مالذى يقدمه :
مش بس تقدر تحفظ مواقعك المفضلة ع النت وتبعتها لأصدقائك – ممكن كمان تشوف المواقع المفضلة لأشخاص اخرين و كمان تقدر تصنف مواقعك كل مواقع تحت تصنيف او اكتر و ممكن تشوف اخر المواقع المضافة من قبل الأخرين و تقدر تبحث كمان
ده معناه ان social bookmarking عبارة عن محرك بحث ذكى intelligent search engines .

المميزات :
1) محرك بحث ذكى
بما ان المواقع المضافة كلها تمت اضافتها بواسطة اشخاص يفهمون المحتوى وليس برنامج كمبيوتر
فعند البحث تحصل على النتائج بدقة عالية , ده غير انه بيتم تقييم الموقع بعدد الناس اللى حفظوه الى مفضلتهم
2) ممكن تشوف المواقع المفضلة لأشخاص اخرين (لو هما سامحين بكده او عاملين share)
3) ممكن تشوف اخر المواقع المضافة او المواقع الشعبية ( الأكثر اضافة ) ز
4) ممكن تحصل على جميع المواقع تحت تصنيف معين

العيوب :

  1. سوء التصنيف , نتيجة اخطاء اللغة او غيره .
  2. اسم غير ثابت للتصنيف الواحد , بمعنى ممكن واحد يضيف الموقع تحت تصنيف ويب واخر يضيف نفس الموقع تحت تصنيف انترنت واخر يضيفه تحت تصنيف مواقعى وهكذااا
  3. سوء الأستغلال , بمعنى ان فى ناس بتستغل المواقع اللى بتقدم خدمة social bookmarking علشان تشهر موقعها , فتضيفه اكتر من مرة و تحت اكتر من تصنيف و هكذا

ده فيديو بيشرح الموضوع بكل بساطة :

بالنسبة لأصحاب المواقع , ممكن تضيف زر عندك فى الموقع علشان يسهل على الزوار انهم يضيفوا موقعك لأى موقع بيقدم خدمة social bookmarking
من هنا :
http://www.addthis.com

دى مجموعة من المواقع اللى بتقدم الخدمة :

وكمان مجموعة من ويكيبيديا

http://en.wikipedia.org/wiki/List_of_social_software#Social_bookmarking

المصادر الأجنبية التى استخدمتها (لمزيد من المعلومات عن الموضوع او للقراءة بتوسع):


, السلام عليكم :)


6 نوفمبر, 2009ماهى الكوكيز Cookies

السلام عليكم ورحمة الله وبركــاته Smile

مقدمة :
اكيد سمعنا عن الكوكيز و أكيد فى ناس كتير عارفاها كويس .
و اكيد كلنا لما بندخل موقع ونعمل تسجيل الدخول ( وتعمل صح على تذكرنى ) ,, لما تدخل الموقع تانى بيكون عارفك 
و اكيد برده , لما بتحول جوجل من العربى للأنجليش او العكس , تدخل مرة تانية تلاقى جوجل على حسب ماانت اخترت اخر مرة ( سواء عربى او انجليش )
الموضوع كله متعلق بالـ كوكيز .


ماهى ال Cookie ؟
هى عبارة عن ملفات نصية ( يعنى مش برامج او باتشات ) بيرسلها الموقع اللى بتدخل عليه للمتصفح بتاعك علشان يحفظها عندك ع الجهاز .
الملفات دى بيكون فيها معلومات عنك . المعلومات دى لما الموقع بيحتاجها بيطلبها من المتصفح .

مثلا جوجل :
لما تحول جول من انجليش لعربى , ايه اللى بيحصل ؟ 
جوجل يبعت ملف كوكيز للمتصفح بتاعك , الملف ده بيحتوى على شوية معلومات منها انك اخترت ان جوجل يبقى عربى 
لما تدخل تانى على جوجل بعد كده , جوجل بيطلب ملف الكوكيز من المتصفح و يقرأ اللى جواه فيلاقى انك كنت عاوز جوجل عربى فيعرضه ليك كده
.

طبعا المعلومات داخل ملفات الكوكيز , بتختلف من موقع لأخر .
و طبعا كل موقع مش ليه الحق غير انه يطلب الملف بتاعه بس , يعنى مينفعش موقع يشوف الكوكيز بتاع موقع تانى. 
و الاجمل من كده , ان كل متصفح ليه مكان بيحفظ فيه الكوكيز بتاعته , ازاى ؟
يعنى انت ممكن تدخل على منتدى بأكثر من مستخدم عن طريق اكثر من متصفح , و كل متصفح فى كوكىز من نفس المنتدى بس الأختلاف فى البيانات اللى فيها.


كيف تعمل الكوكيز ؟
لما بتطلب تشوف موقع معين , المتصفح بتاعك بيرسل بيانات الى الموقع ( الآى بى بتاعك , نوع المتصفح , نظام التشغييل , ويبحث المتصفح عن ملفات الكوكيز الخاصة بالموقع وان وجد يرسلها له مع الطلب.
- يستطيع الموقع عند استلامه الطلب انه يستفيد من الكوكيز المرسلة ( مثلا عرض وقت اخر زيارة لك , تظبيط الخيارات المفضلة لديك , تسجيل الدخول التلقائى ,….. الخ) و بإمكان الموقع التعديل فى الكوكيز الخاصة به
او حتى حذفها .


ملحوظات:

  • ملف الكوكيز بيكون مرتبط بوقت معين , و ده اللى بيحدده الموقع او بمعنى اصح مبرمج الموقع ( يعنى بيحدد ان ملف الكوكيز ينتهى صلاحيته بعد يوم , اسبوع , سنة , براحته )
  • و طبعا بما ان الملف بتاع الكويكز ده عندك فممكن بكل بساطة تمسحه.
  • طبعا بكل بساطة ممكن تخلى المتصفح بتاعك يرفض الكوكيز خالص او يرفضها من مواقع معينة.


هل الكوكيز آمنـــــة ؟

  • لو حد دخل عندك ع الجهاز وسرق الكوكيز او اخد ملف الكوكيز و نقله عنده فى مكان الكوكيز بتاع المتصفح بتاعه , هيدخل كأنه أنت Smile
  • لو حد بيتجسس ع الشبكة و بيراقب البيانات المارة ع الشبكة ,, ممكن بكل سهولة يشوف القيم بتاع الكوكيز و ينقلها و يعمل ملف عنده ع الجهاز ويدخل ع الموقع كأنه أنت Smile ودى ممكن تتحل عن طريف عمل اتصال مشفر.
  • او عن طريق حركة جامد جدااا , وهى ان شخص مثلا على منتدى يعمل لينك ظريف برئ و بيقولك اضغط هنا ( ويقول ده موقعى او موقع جميل و كده ) , اللينك ده بكل بساطه فيه كود جافا سكريبت بياخد البيانات اللى فى الكوكيز و يبعتها لموقع تانى علشان يحفظها عنده و ده بنسميه XSS او Cross Site Scripting
  • طبعا لو انت عامل ( تذكرنى ) لمنتدى معين , المنتدى بينزل عندك كوكيز ( عادة بيكون فيها الاسم والباص المشفر ) , وبما ان الكوكيز عندك ممكن تغير الأسم مثلا و تدخل ع الموقع , هتلاقى الموقع عمل تسجيل دخول عادى ويقولك أهلا فلان ( الأسم الجديد اللى غيرته ) , وده بيكون عيب من المبرمج .
  • وبما ان مدير المنتدى مستخدم عادى برده زى اى حد بس بصلاحيات اكبر , فممكن تعدل ملف الكوكيز بتاعك و تغير الأسم لإسم مدير المنتدى , و الباص المشفر لو عرفت تخمنها بطريقة ما فهتدخل المنتدى كأنك المدير و بصلاحيات المدير و مبروك عليك المنتدى Smile

# وطبعا خليك فاكر ان مفيش نظام أمنى خالى من الثغرااااات Smile

لمزيد من المعلومات :
http://en.wikipedia.org/wiki/HTTP_cookie
http://tech.spmmf.com/2009/06/session-vs-cookie/

و شكراااا :)



© M.M.F Blog | تصميم TextNData | تعريب قياسي | يستخدم وورد بريس