إرشيف شهر يوليو, 2008

انتهاء مؤتمر OSCON 2008

الخميس, 31 يوليو, 2008

انتهى المؤتمر الشهير OSCON الذي يعقد كل سنة برعاية دار النشر الشهيرة O’Reilly

وكان مؤتمر هذا العام حافلاً بالمواضيع المختلفة والغنية وقد شارك به العديد من الشخصيات الهامة من أكبر الشركات بمجال الويب.

ويناقش المؤتمر آخر وأهم أخبار البرامج المفتوحة المصدر وهذه هي السنة العاشرة له.

تميز المؤتمر بعدد كبير من المواضيع المختلفة:

http://en.oreilly.com/oscon2008

وأهم المحاضرات التي أعجبتني هي (يمكن تحميل معظمها كـ PDF أو PPT أو ODP):

An Introduction to Ruby Web Frameworks

Beyond Agile: Enabling the Next Wave of Software Development Methods

Building Compilers with the Parrot Compiler Toolkit

Cloud Computing with bigdata

Developers vs Designers: Expanding the Java Platform Beyond Programmers

Eclipse and the Parallel Tools Platform

Even Faster Web Sites

Extending Rails: Understanding and Building Plugins

Extending, Expanding, and Porting Mobile & Embedded Community Projects

Groovy vs. JRuby

Hack This App! PHP Security Workshop

How I Learned to Love Revision Control

How to be Normal: A Guide for Developers

How to Build and Launch a Successful Globalized App from Day One (or All the Crap You Forget to Do)

Hypertable: An Open Source, High Performance, Scalable Database

Integration Testing PHP Applications

Introduction to Django

Introduction to mod_perl 2

MySQL Proxy: from Architecture to Implementation

Open Source and Standards

Open Source Collaboration and Integration with MindTouch Deki

Open Source and the Education Community: A Report, and Some Suggestions

Open Source Community Antipatterns

Open Source in China

Open Source in the Enterprise

Open Source on the O’Reilly Radar

PDO: PHP Data Objects

PHP Taint Tool: It Ain’t a Parser

Porting to Python 3.0

Practical Test-driven Development

Pro PostgreSQL

Securing the PHP Environment with PHPSecInfo

Testing with PHPUnit and Selenium

The New Architecture of Collaboration

Trac: Project and Process Management for Developers and Sys Admins

Using Ubuntu, Virtualization, and Automation to Improve Your Web Development Workflow

Web Frameworks of the Future: Flex, GWT, Grail, and Rails

Who Wants a Faster Ruby?

وهذه صفحة لجميع المحاضرات:

http://en.oreilly.com/oscon2008/public/schedule/proceedings

ماهو إطار العمل Framwork؟

الخميس, 31 يوليو, 2008

درج في السنوات الاخيرة مصطلح جديد وهو إطار العمل (framework)، المصطلح قديم بعض الشيء ولكن حديثاً انتشرت هذه الموضة لتشمل أغلب اللغات البرمجية حيث أصبح لمعظم اللغات أطر عمل تساعدك على التطوير من خلالها.

فماهو إطار العمل وماذا يستطيع أن يفعل وما لايستطيع فعله؟

التعريف:
إطار العمل: مجموعة من الأدوات، المكاتب البرمجية، الاصطلاحات (conventions) وأفضل الممارسات البرمجية لمحاولة تجريد المهام التكرارية ووضعها ضمن وحدات برمجية كي يعاد استعمالها.

إذن مبدأ إطار العمل يقوم على عزل المهام البرمجية المتكررة ووضعها ضمن وحدة برمجية جاهزة، ومهمتك أن تقوم فقط باستدعاء التابع المناسب لك بدل كتابتها من جديد، وجعل تركيز المطور منكباً على المهام البرمجية الجديدة، عوضاً عن شغله بالمهام الروتينية المتكررة وكما يطلق عليه “إعادة اختراع العجلة”.

إطار العمل ليس نظاماً كاملاً للاستخدام الفوري مثل نظم إدارة المحتوى CMS، بل دعني أشبهه بأساسات البناء المتينة والثابتة وبعض أدوات البناء التي تساعدك بإكمال البناء (مثل الرافعة، الشاحنات وبعض الأدوات الآخرى) ومهمتك هي إكمال هذا البناء بتشييد الطوابق فوق تلك الأساسات المتينة والثابتة وباستخدام الأدوات التي تساعدك على سرعة إنجاز هذا البناء.

إذن إطار العمل يساعدك بـ:

  • تنفيذ المهام التي تتكرر في حياة المطور اليومية.
  • تسريع العمل البرمجي (RAD).
  • العمل وفق اصطلاحات (conventions) مما يساعدك على تنظيم الكود وفهمه.
  • مبدأ عدم التكرارية (DRY) شيء أساسي في أطر العمل، فإذا وجدت نفسك قد كتبت قطعة كود مرتين فاعرف أنك تسير إلى طريق الهاوية ;-) .
  • عزل المكونات: جديد بعض الشي ولكن في عالم الويب أصبح أساسي للتطوير وأشهر مبدأ هو MVC.

إطار العمل ليس:

  • نظام جاهز مثل CMS، ويكفي أن تضع المحتويات فقط.
  • حاوي Wizard أي بمجرد عدة ضغطات تحصل على النتيجة.
  • IDE أي بيئة تطوير متكاملة مثل Eclipse أو Visual Studio.

تنظيم الوقت البرمجي

الأربعاء, 30 يوليو, 2008

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

عودة قريبة ولكن مفيدة … لي ولكم بإذن الله

الموضوع باختصار هو كيف ينظم المطور أو المبرمج وقته؟

بعد وقت  طويل من عدم التنظيم في الوقت وهدر بعض الساعات في تصفح فارغ قررت أن أضع حداً لهذا كالتالي:

  1. عدم استخدام المسنجر لأنه عبارة عن استنزاف للوقت، أبقي تواصلك مع العملاء عن طريق البريد الإلكتروني فقط.
  2. تقيد دائماً بـالتالي: اهتم بالأمور المهمة أولاً، ولا تصرف وقتك على الأمور الغير مهمة.
  3. إذا أردت إنهاء مهمة مستعجلة، فنبه من حولك بألا يزعجوك.
  4. حدد وقتاً لمطالعة المدونات والمنتديات، فهي عبارة عن بالوعة للوقت، من مدونة لآخرى ومن موضوع لآخر وهكذا يضيع الوقت، حدد وقتاً معيناً لتصفح المدونات ولاتتجاوزه.
  5. إنشاء قائمة بالمهمات to do list.

سأطبق هذه القيود على نفسي وأتمنى أن يتحسن من خلاله نظامي اليومي وتقل ساعات الهدر.

أما الأن فالفكرة الجميلة التي طرأت على ذهني هي استغلال هذا الموضوع بتعلم بعض أساسيات الكيك CakePHP عن طريق تطوير الخطوة الخامسة (قائمة المهمات to do list) بالكيك. ستكون عبارة عن سلسلة من التدوينات نمشي بها خطوة خطوة، حتى نكمل التطبيق “قائمة المهمات”. فرصة لتحسين مستواي عن طريق ملاحظاتكم وتجاربكم.

ما رأيكم؟؟ وهل ببال أحدكم اسم جميل للتطبيق؟؟

معدل التدوين

الأربعاء, 30 يوليو, 2008

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

كما لاحظتم اليوم نشرت ثلاثة تدوينات، وباليومين السابقين لم أنشر شيئاً. هي ليست مسألة تعويض بل إن التدوين أصبح بمعدل غير ثابت. ففي يوم أجد نفسي مشغولاً جداً أو خارج المنزل معظم الوقت فلا أتفرغ ذهنياً للتدوين، أما اليوم فذهني صافي بعض الشيء فكان النتاج ثلاثة تدوينات وربما أكثر في بعض الأيام.

تدويناتي لن تكون مجرد نسخ ولصق من مدونة ما، بقدر ماهي تجارب شخصية والاستعانة بعدة مصادر لكتابة التدوينة.

إذن لاتنتظروا مني تدوينة كل يوم فالتحدي قد انتهى :D ولكن اشتركوا بالمدونة عن طريق Google Reader أو أي برنامج آخر أو اشتركوا بنشرة البريد الإلكتروني في أعلى الموقع باليسار، كي تصلكم التدوينات إلى صندوق بريدكم.

أرجو من الله تعالى أن تكون التدوينات بالمستوى المطلوب لانطلاق الشباب العربي نحو الويب 2.0 والاستفادة من كل ميزاته.

ميزات النسخة 1.2 من الكيك CakePHP

الأربعاء, 30 يوليو, 2008

النسخة 1.2 حملت معها العديد من الخصائص المفيدة والجديدة فبماذا تميزت عن النسخة السابقة 1.1

أولاً: سأقوم باستعراض الميزات الأهم في النسخة 1.2:

  1. حزمة Integrated test … التجريب الآلي شيء أساسي في التطوير سواء كان موقعاً أم برنامجاً. سأحاول في المستقبل التحدث عن التجريب وأنواعه (ذكروني إن نسيت ;-) ).
  2. إضافات جديدة (Components) وهي Auth, Cookie, و Email. هي عبارة عن أصناف لتسهيل التعامل مه هذه الأمور.
  3. دعم قواعد البيانات التالية (DB2, Oracle و Sybase).
  4. لاحقة جديدة لملفات العرض وهي (ctp) بدلاً من (thtml) في النسخة 1.1، تغيرت اللاحقة لأسباب منطقية وهي أن ملف العرض يمكن أن يكون ملف PDF أو Excel لذلك تسمية (thtml) لن تكون صحيحة.
  5. دعم الكاش لأنظمة معروفة ( APC, memcache, xcache).
  6. حذف بعض التوابع القديمة وإضافة توابع كثيرة جديدة.
  7. التوسع بميزة التحقق من المعطيات لتعطيك مرونة أكبر وخيارات أوسع.
  8. دعم السمات (themes).
  9. أربع مساعدات جديدة (Js, Paginator, Rss, و Xml).

بالإضافة إلى الكثير من الميزات الآخرى التي لايتسع المجال لذكرها وللمزيد عليك بقراءة الدليل الجديد للنسخة 1.2.

( اكمل قراءة التدوينة )

ميزات الكيك CakePHP

الأربعاء, 30 يوليو, 2008

سأقوم باستعراض أهم الميزات الموجود في الكيك، والتي تساعدك أيما مساعدة في عملك التطويري.

  1. مرخصة برخصة MIT مما يعطيك حرية أكثر من GPL، مما يسمح لك باستعمال الكيك لمشاريع تجارية بعكس الرخصة العمومية GPL.
  2. متوافقة مع النسخة 4 و 5 من PHP (مستقبلاً سيتم التنازل عن هذه الميزة ليصبح الكيك يعمل فقط على النسخة 5 بسبب وجود العديد من التعقيدات في النسخة 4).
  3. تضمين طبقة للتعامل مع أغلب أنواع قواعد البيانات المعروفة (MySQL, Postgre, SQL Server, Oracle, DB2)، وتوفير توابع كاملة للتعامل مع الخصائص الأربعة الأساسية لقواعد البيانات (CRUD) بدون أن تكتب طلب واحد (query).
  4. الرافعة (scaffolding): مهمتها باختصار توفير المهام الرئيسية (CRUD) بكتابة كلمة واحدة فقط، هي تشبه (Grid) في تطبيقات الويندوز.
  5. بنية MVC، سأتكلم عنها باستفاضة في تدوينة قادمة وحالياً أجهز هذه التدوينة.
  6. العناوين النظيفة (clean URL).
  7. التحقق من البيانات، يوجد بنية كاملة فيها للتحقق من البيانات (البريد الإلكتروني صحيح، الاسم يحوي أحرف فقط، الماستر والفيزا كارد والكثير).
  8. نظام قوالب سريع وسهل.
  9. المساعدات (Helpers) وهي أصناف جاهزة للتعامل معها وأشهرها أصناف (AJAX, JavaScript و HTML).
  10. (Access Control List) أي نظام التحكم بالمستخدمين ويختصر بـ (ACL)، مهتمه توفير بنية كاملة لحل مشاكل تعددية المستخدمين وصلاحياتهم بكل سهولة وأمان.
  11. الكاش (Cashing)، الخيار الأنسب للمواقع التي تعاني من الضغط، ويوجد نوعين في الكيك إما كاش باستخدام قاعدة البيانات أو كاش باستخدام الملفات.
  12. تعددي اللغات، بناء موقع متعدد اللغات بخطوات بسيطة وبدون تعقيدات.
  13. لا تحتاج لإعدادات خاصة بها في المخدم عدا (mod_rewrite).

مشكلة تسليم المحتويات!

الأربعاء, 30 يوليو, 2008

مشاكل كثيرة تحدث مع مطوري المواقع، ولكن أكثر مشكلة خطيرة هي تسليم المحتويات من قبل العميل (أفضل كلمة العميل بدل الزبون).

تتسلم مهامك التطويرية وتبدأ بالموقع وتنهيه وتفاجأ بأن الموقع مازال فارغاً بمحتواه والعميل لم يكتب به شيئاً! غالباً ماتستمر هذه الحالة لأشهر أو لسنوات، إذن الموقع لم ينتهي بعد ولن تتسلم أموالك!

هل حدثت هذه المشكلة معكم من قبل؟ بالتأكيد أغلبكم سيجيب بنعم.

إذن ماهي الحلول المقترحة لهذه المشكلة؟

- الاتفاق مع العميل شفهياً أو كتابياً (بالعقد) على أن أي تأخير بتسليمه للمحتويات لا يؤثر على تطوير الموقع، فمتى انتهيت أنت وجربت الموقع كاملاً يجب أن تأخذ المبلغ المتفق عليه كاملاً وليس لك علاقة بالمحتويات. لاتدخل نفسك بمتاهات معقدة حيث يظن أغلب العملاء أنك أنت من يجب أن يكتب المحتويات في الموقع، انتبه لهذا جيداً ومن البداية اتفق مع العميل على ذلك.

- نصح العميل عند البدء بالعمل إما باستئجار كاتب محترف لهذه المهمة (مثل الأخ سردال و الأخ سعيد :D ) ومن الأفضل أن يكون هذا الكاتب ملماً بتقنيات الويب مثل الفاعلية (usability) وصداقة محركات البحث (SEO)، هذا الشيء يتيح للعميل بأن يحسب كلفة المحرر من بداية العمل ويضعها بالحسبان حتى لايفاجأ بمصاريف إضافية في نهاية العمل، أو تكليف أحد الموظفين لديه أو أحد من اهله أو هو بنفسه بكتابة المحتويات بشكل منسق وواضح.

متى نستخدم دروبال drupal ومتى نستخدم وورد بريس wordpress؟

الإثنين, 28 يوليو, 2008

تدوينة على السريع :D

متى نستخدم وورد بريس؟

- للمدونات الشخصية

- للمواقع الشخصية أو موقع للسيرة الذاتية

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

- لأخبار الشركات …. فمعظم مواقع الشركات تستعمل مدونة لكي تضع فيها آخر أخبار الشركة مثل مدونة الغوغل.

- للمجلات الإلكترونية.

ما الشيء الذي يجمع هذه الاستخدامات للوورد بريس؟

- عدم وجود نظام تسجيل للمستخدمين.

- سهولة الموقع وبساطته وهذا مايوفره الوورد بريس خاصة لوحة تحكمه.

متى نستخدم دروبال؟

- موقع كبير يحتوي على أقسام متعددة ومختلفة.

-موقع يحتوي على نظام تسجيل مستخدمين حيث يوجد لكل مستخدم حسابه الخاص وصلاحياته.

- موقع يحتوي على منتدى.

- موقع يحتوي على مدونة شخصية لكل مستخدم.

- موقع يحتوي على العديد من المدراء ولكل مدير منطقته وسماحياته الخاصة.

استخدامات الوورد بريس التي ذكرتها ليست حصرية عليه ولكن هي الأنسب له وكذلك بالنسبة لاستخدامات الدروبال فبالدروبال تستطيع فعل ماتشاء ولكن لماذا تستخدمها لموقع بسيط إذا توفر البديل الأسهل وهو الوورد بريس.

ملاحظة: الوورد بريس يتجه بخطوات سريعة كل يتحول إلى CMS

وبالمناسبة موقع نظام التشغيل الشهير أوبنتو مطور بواسطة الدروبال :D

نصائح للبرمجة الحرة

الجمعة, 25 يوليو, 2008

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

من خلال خبرتي المتواضعة في البرمجة الحرة للمواقع المشهورة سأنقل لكم بعض النصائح:
1- لاتستلم مشروعاً مالم تكن تلم به جيداً … أي لاتستلم شيء وتقول سأحاول أن أحققه … رحم الله أمرىء عرف قدر نفسه … فالمدة غالباً تكون قصيرة ولاتكفي كي تتعلم هذه الأشياء الجديدة.
2- لاتستلم مشروعاً مبهماً أو غير واضح المعالم
3- لاتستلم مشروع تكون فيه المهمة تعديل سكربت ما … فغالب هذه المشاريع تنتهي بفشلك بسبب انتهاء المدة المتفق عليها لأنه بأغلب الأحيان تكون السكربت أكثر من 100 ملف !!
4- لاتقم بتخفيض السعر عن باقي العروض فهكذا تضر نفسك … وتضر الآخرين
5- اصبر ثم اصبر ثم اصبر حتى لو مر عليك شهر ولم يخترك أحد الزبائن فلا تقلق، الأمر عادي فأنت عضو جديد ولن يتقبلك الزبائن بسرعة أمام المبرمجين ذوو السمعة الكبيرة في الموقع.
6- حاول استلام مشاريع صغيرة بادىء الأمر ومنها تنتقل للكبيرة فالمشاريع الكبيرة تذهب للمبرمجين ذوو السمعة وليس للجدد على الموقع مثلك
7- إن وجدت صعوبة خلال سير المشروع  ولن تستطع إكماله فتكلم مع الزبون لتمديد المدة أو إلغائه بدون أية مشاكل معه حتى لايضر سمعتك.
8- أبق الزبون دائماً على إطلاع بتقارير يومية عما تم إنجازه فالزبون يحب أن يعلم ماذا يجري.
9- لاتكذب على الزبون أبداً
10- يجب أن يكون لديك عدد من المواقع التي طورتها فأغلب الزبائن يطلب منك موقع طورته حتى يرى مصداقيتك من خلاله

لماذا لم أكتب ملف css للطباعة؟

الخميس, 24 يوليو, 2008

السلام عليكم،

أخبرتكم أني لن أكتب ملف css للمدونة … وسأجيبكم لماذا؟

لأني بعد فترة سأقوم بجمع كل المقالات في كتاب وطرحه للتنزيل كاملاً وسأحاول طبع نسخة ورقية وطرحها للشراء.

ما رأيكم؟؟