حازم خالد » PHP
مايو
08
2010
1

How to be senior ?

امس‏ ألقيت محاضرة في‏ الأجتماع الشهري لمجموعة EgyptIT (سابقاً Egypt web) بعنوان‏ “كيف تكون مطور محترف”، المحاضرة في الأصل لغازي إكرام في جدة جييكس بعنوان “How To Become A Php Geek”.

بعد إستأذنه أضفت‏ بعض العناصر والمزيد من التطبيق والمناقشة‏ أثناء‏ المحاضرة وألقيتها أمس، وهذه عناصر المحاضرة.

ما هي مميزات المبرمج المحترف Senior ؟

  • يمكنه انتاج عمل أكثر في وقت أقل
  • يمكنه العمل على المشاريع طويلة الأمد
  • يمكنه العمل مع فريق
  • يمكنه العمل على المشاريع الضخمة

لماذا أحدث نفسي لكي أكون مبرمج محترف ؟

  • للحصول على راتب أكبر
  • للبدئ في لتدرجك في مناسب مجالك (مدير فريق، مدير مشاريع … ألخ)
  • العمل في الشركات الكبيرة
  • العمل على مشاريع ناجحة تكون مفيدة لك في المستقبل

كيفية زيادة الكفائة البرمجية

  • أتبع المعايير القياسية في كتابة أكوادك ( معايير Zend ومعايير PEAR )
    • يجب أن يكون اكوادك سهلة القراءة
    • أهتم بالتعليقات
    • أهتم بكتابة توثيق للكود، وشرحنا كم هو كتابة التوثيقات أمر سهل ( PhpDocumentorDoxygen )
    • أهتم بعمل أصدارات لبرنامجك (قريباً سأتحدث أكثر عن أستخدام أنظمة الأصدارات الفرعية وفائدتها للفرد ولفرق العمل)
  • لا تخترع العجلة
    • لا تكتب فئة class أو دالة function وهي موجوده من قبل
    • حاول أن لا تعيد ما كتبته من قبل
    • أستعن بموقع PHPClasses.org و SF.net للحصول على المكتبات التي تريدها
  • طور من جودة أكوادك
    • أكتب اكواد بسيطة، كلما فكرت أكثر كتبت كود أقل، في نفس الوقت لا تحاول ان تكتب اكواد معقدة يصعب على فريقك فهمها
    • أكتب اكواد سهلة الصيانة
  • أستخدام أطر العمل العامة Public Frameworks
    • سهلة التطوير
    • هناك العديد من المكتبات
    • معظم المشاكل التي ستقابلك حلها غيرك من قبل
  • استخدم انظمة إدارة المحتوى
    • العديد من الأضافات متوفرة Plugins
    • كود سهل ومعروف للكثير
    • معظم متطلبات مشروعك ستجدها متوفرة به أفتراضياً او ببعض لأضافات البسيطة
  • أستخدم بيئات التطوير المتكاملة IDEs
    • توفير للوقت
    • تعطيك المزيد من الكفائة
    • تساعدك في تنقيح وتصحيح الكود Debug

التطوير الذاتي

  • تواصل مع غيرك من المبرمجين
  • أقرأ العديد من التدوينات
  • أكتب تدوينات فهي لا تقل أهمية عن القرائة بل ان هناك إفادة لا تحصل عليها إلا من الكتابة
  • قبل كتابتك للاكواد أبحث كيف كتبها غيرك اولاً
  • شاك في احد المشاريع مفتوحة المصدر
  • أستخدم أطار عمل جافا سكريبت (jQuery, MooTools …. ألخ)
  • أستخدم أكثر من قاعدة بيانات (MySql, SqLite, ….. ألخ)
  • أنشر معرفتك للغير

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

في PHP |
ديسمبر
13
2009
3

أحتاج مساعدتك في مقارنة عن ال IDEs

السلام عليكم

احتاج رأيك في مجموعة عناصر لتحضيري مقالتين عن ال IDEs الخاصة بالPHP وفوائد أستخدمها

  1. هل تعرف IDEs تدعم الPHP وتكون Cross-platform و مجانية غير eclipse وعائلته و netbeans ؟
  2. هل تأيد رأيي في ضرورة العمل بمحررات Cross-platform أي تعمل على أي نظام تشغيل، على الأقل تحسباً للانتقال من نظام تشغيل لأخر ؟
  3. هل تعتبر رغبتي في المقارنة بين ال IDEs المجانية يقلل من الأفادة المقدمة للقارئ ؟ ام انه لا يوجد مدفوع ينافس المجاني ؟ ام تريد ادخال IDEs مدفوعة مثل Zend Studio و Komodo و vs.php وغيرهم ؟
  4. هل تستخدم IDE ؟ ما هي الأمكانيات التي تعجبك به ؟ وإذا كنت لا تستخدمه فما هو السبب ؟

شاكر لك

في PHP | الأوسمة:,
أكتوبر
24
2009
0

حدث PHP على اوبنتو بنفسك عشان كونيكال مش ناوية

قالي أبو يوسف على حاجة في Overloading وانا بجربها لقيتها جديدة PHP 5.3 فقط، فدورت ازاي احدث PHP على اوبنتو لاني عارف انهم مش هيتحث لوحدو إلا مع النسخة الجديدة ولكن الغريب اني لقيت هنا انهم بيقولو مش هيحدثو PHP على اوبنتو لأن حتى الأن suhosin patch منزلش ل php 5.3.

طبعاً الكلام ده قديم فالأجتماع كان من أكثر من 3 شهور ودلوقتي suhosin patch متاحة ل php 5.3 وقبل ما أي حد يقولي ده فريق ubuntu server اديني قولتها ولكن أتوقع أن هما الي ليهم الأحقية في فرض قرار زي ده على باقي التوزيهات فاكيد أحنا بناخد بالنا أن التوزيعات متشابهة في أساياتها وفي كمالياتها كمان، على العموم دي الطريقة ونتمنى نلاقيها بعد 5 أيام لما تنزل النسخة الجديدة بإذن الله.

اكتب السطر ده في الترمينال
sudo gedit /etc/apt/sources.list

هيفتح ملف ضيف السورسات دول في اخره
deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all

وبعدها احفظ وأقفل، واكتب السطر ده في الترمينال عشان يسطب
apt-get update && apt-get dist-upgrade

تمام كده عندك PHP 5.3 ولو انت بتستخدم short tags فهي هتكون مقفولة تفتحها بانك تكتب السطر ده في الترمينال
sudo gedit /etc/php5/apache2/php.ini

هيفتح ملف أبحث فيه عن
short_open_tag = Off
وخليها
short_open_tag = On

وطبعاً لازم تعيد تشغيل الأباتشي عن طريق كتابة الأمر ده في الترمينال
sudo service apache2 restart

وياريت بلاش تستخدمها بعد كده لأني لسه قاري دلوقتي انها هتتقفل في PHP6

تحديث : لو ظهر معاك الخطا ده وانت بتسطب ال php5-mcrypt
php5-mcrypt: Depends: libltdl3 (>= 1.5.2-2) but it is not installable

فسطب ده الأول (64x86) وتتحل المشكلة بإذن الله

شكراً لصاحب المستودع

في PHP |
سبتمبر
09
2009
8

ORM مقدمة

من فترة لم أكتب درس عن شئ في لغة php ومنذ قليل وأنا أحضر ما سأقولو اليوم عن ORM في السحور التقني فقولت أضع هذا التحضير كنقاط أساسية لقلة المصادر العربية التي تتحدث عن هذا الموضوع.

ORM وهي أختصار لـ object-relational mapping يمكن يكون ترجمة للمصطلع هو “كائن رسم خرائط العلاقات” ولكنها ترجمه غير دقيقة بشكل كبير ولكني لم أحصل على بديل (أتمنى تصلحلي هذا المصطلح) وهو يعتبر كائن تمثيل العلاقات بين جداول قاعدة البيانات التي تعمل معها.

حتى الأن أعلم انك لم تستفيد … حسناً، بكل بساطة ما هي الأستفادة من تمثيل هذه العلاقات او البيانات بشكل أخص !! هي تمثلها على شكل كائنات وصفات .. نعم، كمثال تخيل أن هناك جدولين أحدهما للأقسام والأخر للمنتجت بداخله، والعلاقية بينهم many to one وأكيد ال one هو القسم، فبالتالي يكون عندنا تمثيلهم كفأتين 2 class ، أحدهما يمثل جدول القسم والأخر يمثل المنتجات، وبينهما method وسيطة وهي التي تمثل حقل الربط.

هنا عند التعامل مع record في جدول المنتجات فهو سيكون عبارة عن كائن مورث من كائن المنتجات المورث من كائن القسم، طبعاً وراثته من كائن القسم تكون في خصائص الربط فقط.

بماذا تيفيديني كل هذه العمليات !! عندما تتعامل مع قاعدة البيانات عن طريق ال ORM فأنت تربح الكثير من الأمكانيات الأخرى ككونه وسيط بينك وبين أي نوع قاعدة بيانات، كما أنه سيقوم بعمل معظم ما تحتاجه في الـ model إذا كنت تعمل على MVC مثلاً، كما أنه …. هناك الكثير ولكن هذا ليس وقته.

ORM لا يقتصر تعامله على لغة بعينها أو برنامج معين بل أنه مصطلع برمجي عام كالـ MVC مثلاً ويمكنك التعامل به بشكل منفصل او داخل إطار عمل معين تحب أستخدامه.

في PHP يمكنك أستخدامع مع أي أطار عمل عام كـ CI أو ZFM أو symfony أو …. ألخ، او حتى إطار عمل خاص بك، وحتى لو لم تستعمل إطار عمل أو كان طريقة برمجتك بدائية جداً من وجهة نظرك فإن الـ ORM سيفيدك التعامل معه وسيوفر عليك الكثير ويضمن لك المزيد من الجودة  في العمل.

نبدأ … أكيد PHP

في PHP يوجد هناك cakephp والذي يحتوى على ORM مدمج ولكني لم أستخدمه، أما أي أطار عمل أخر فمنهم من يعتمد على كائنات عامة وتأتي بشكل مدمج بداخله كـ symfony ومنهم من يحتاج لدمجه معهم كـ CI أو ZFM وبطريقى سهلة جداً وموجود أمثلة كثيرة عملية على الأنترنت.

إذا ما هي كائنات ORM الموجودة والتي من الممكن أستخدامها في PHP ؟
أشهر الموجود هو Doctraine وPropel، وعن نفسي أستخدمت الأولى أكثر في أطار عمل symfony عندما كنت اعمل في إمارة مكة، رغم اني أستخدمت الأثنين للتجربة لكن كان اختيار زميل العمل صدري صحراوي لي هو Doctraine ولهذا أستخدمته أكثر.

البداية بكل بساطة أن عليك تكوين قاعدة بيناتك في ملف بصيغة yml لتكوين جداولك وعلاقاتها ببعض، وهذا مثال بسيط من موقع Doctraine

User:
  columns:
    id:
      primary: true
      autoincrement: true
      type: integer(4)
    username: string(255)
    password: string(255)
  relations:
    Groups:
      class: Group
      refClass: UserGroup
      foreignAlias: Users
 
Group:
  tableName: groups
  columns:
    id:
      primary: true
      autoincrement: true
      type: integer(4)
    name: string(255)
 
UserGroup:
  columns:
    user_id: integer(4)
    group_id: integer(4)
  relations:
    User:
      onDelete: CASCADE
    Group:
      onDelete: CASCADE

وهنا بكل بساطة أصبح لدينا 3 كائنات و3جداول، وكل كائن هو لجدول  بنفس الأسم عدا جدول groups سيكون الكائن الخاص به بأسن Group وطبعاً هذا من السطر tableName: groups. طبعاً لا يحتاج أي سطر لشرحه لمن لديه معرفة في العلاقات داخل قواعد البيانات، وطبعاً هذا غير قائم في قواعد بيانات MySql من نوع MyIsam والمعتاد أستخدامها ولكن MySql توفرها في قواعد بيانات من نوع InnoDBوهي لا تحتاج غير تغير نوع الجدول عن أنشائه فقط ثم عليك أضافة بعض الأسطر الخاصة بالعلاقات المطلوبة أثناء إنشائك لجداول قاعدة البيانات. طبعاً هذه العلاقات موجوده في أي قاعدة بيانات اخرى أفتراضياً أي كان نوعها.

أيضاً كان اكمال المثال ببيانات أفتراضية يمكنك وضعها في قاعدة البيانات عند أنشائك للكائنات اول مرة، وهذا مثال للملف بصيغة yml أيضاً

User:
  zyne:
    username: zYne-
    password: changeme
    Groups: [founder, lead, documentation]
  jwage:
    username: jwage
    password: changeme
    Groups: [lead, documentation]
 
Group:
  founder:
    name: Founder
  lead:
    name: Lead
  documentation:
    name: Documentation

طبعاً هنا تم أدخال سجلين في جدول الأعضاء وثلاثة في جدول المجموعات و5 سجلات بجدول UserGroup، اتمنى تكون الموضوع واضح ويمكنك طلب النزضيح في التعليقات أيضاً.

الأن لنبدا العمل، بعد هذا سنقوم بكتابة الأمر المسؤل عن بناء الكائنات والتي سيقوم بأنشاء جداول قاعدة البيانات في السرفر الذي ستعطيه بيناته، ثم أدخال البيانات ثم توليد ملفات PHP التي بها اكواد الفئات classes التي ستتعامل مع كائنتها فيما بعد. هذا مثال للتعامل مع السجل بطريقة “active record pattern” أو يعني ممكن نسميها نمط السجل النشط :D لا هو من رأيي يعتبر ترجمة مناسبة، أنظر المثال.

 $user = new User();
 $user->username = "Tohamy";
 $user->password = "Hiall2468";
 $user->save();
 echo "The user with id $user->id has been saved.";

هذه بكل بساطة طريقة للتعامل مع جدول User او الكائن User لأدخال سجل جديد.

هذا المقال فقط لتوضيح ما هو ORM يمكنك تجربة Doctraine من هذا المثال البسيط، كما ستجد في باقي المثال طريقة دمجه من CI وأيضاً يمكنك البحث عن طرق لدمجه مع أي أطار عمل أخر.

مصادر

  • بود كاست عن الـ ORM وأستخدامها في .NET من مدونة دوت نت عربي
في ORM,PHP | الأوسمة:,
أغسطس
21
2008
3

CakePHP .. php framework

CakePHP .. php  framework framework تعني بيئة عمل، وهي تقال لأي نظام عمل متكامل يمكنك أستخدامه لتوفير وقت وجهد بأعتمادك على بعض المكتبات التي من برمجتك أو برمجة أي أحد أخر.

من وجهة نظري إذا أي أسلوب عمل مع بعض المكتبات البسيطة (class أو functions) تعتبر هي بيئة العمل الخاصة بك.

يوجد العديد من بيئات العمل التي تساعدك على أنتاج ناتج أكبر بكود أقل ومجهود قليل، كذلك يمكنهم handling errors و التعامل مع قواعد البيانات وفلترة المدخلات التي تأتي من العميل و …. ألخ، مما يوفر عليك الوقت والجهد كما سبقت القول.

تعلم الكيك وتطوير المواقع بالبيت سبق وتعاملت مع CackePHP ولكني لم أعجب به، أعتقد هذا في أواخر 2005 تقريباً، ولهذا سأطلع عليه مرة أخرى هذه الفترة خاصتاً مع بدأ هذه السلسلة التي تسمى تعلم الكيك وتطوير المواقع بالبيت بالأضافة أني وجدت موقعهم قد تغير كثيراً وهناك نسخة تسمى 1.2 أعتقد أنها جديدة.

إذاً فخطوات العمل كالتالي :-

  1. حمل بيئة العمل من موقعهك الرئيسي
  2. سأطلع بإذن الله على Changelog لأنه أكثر شئ يسخني لأكمال هذه المراحل
  3. أبدأ بتصفح التوثيق الخاص ببيئة العمل، وكذلك من الجيد لبعض الأخوة وجود نسخة عربي من التوثيق
  4. لا تنسى متابعة السلسلة الموضحة بالأعلى
  5. يمكنك الدخول على CakeForge.org للأطلاع على المذيد من البرمجيات المستخدمة CakePHP والمفتوحة المصدر

مقارنات بين أشهر بيئات العمل الخاصة بال PHP

http://www.phpit.net/demo/framework%20comparison/chart.php

http://ava.vereinsportal.ch/index/1169/file/php-framework-comparison.html

http://www.thecredence.com/php-frameworks-which-one-is-most-suitable-for-you/

في PHP | الأوسمة:, , ,


حازم خالد تعمل على ورد بريس المعرب | تصميم TheBuckmaker.com