مقابلة مع شركة Lionite

الإثنين 12 أكتوبر 2009

عن Lionite، وماذا يعني الاسم؟

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

نبذة عن فريق الشركة؟

نواة الفريق مكونة من 3 أفراد:

  • Adam Benayoun الرئيس التنفيذي CEO ل Lionite، والمسؤول عن تمويل وتسويق المشاريع، كذلك هو مسؤول عن سيرفرات الشركة وبنيتها التحتية.
  • Tal Zubalsky مسؤول عن التصاميم وأعمال الغرافيكس، بارع في تصميم الرسوم المتحركة وتحرير الأفلام أيضا.
  • Eran Galperin بمسمى CTO والمسؤول عن التطوير Development وأشارك بكثافة في تصميم واجهات الاستخدام UI وكذلك UX.

أدوات العمل (Tools, Framework .. )؟

عدة العمل الأساسية لدينا هي إطار العمل Zend framework مع حزمة LAMP، نستعمل Jquery على نطاق واسع، ونستعين بمجموعة من مكتبات PHP في إنجاز بعض المشاريع، ك (phpimage, HTML purifier  … ) وللتطوير نستعمل Zend Studio والذي يدعم إطار العمل ZF بشكل رائع.

لماذا ZF؟

قبل سنتين من الان، وعندما بدأنا بالاستعانة ب Framework في التطوير، لم تكن هناك الكثير من الخيارات كما هي الان، ZF أظهر الكثير من الآمال، وبما أنه مدعوم من قبل Zend نفسها فهذا بالتاكيد كان نقطة قوة كبيرة، لذلك لم ننظر للوراء، أنا فعلا أعتبر ZF زبدة أطر العمل الخاصة ب PHP وهم يطورون ويضيفون إليه باستمرار. مع هذا لدي بعض الهواجس حول بعض المكونات components في ZF، لكن نواة الإطار قوية جدا، وقد تعلمت الكثير من العمل اليومي بها، في قراءة وتعديل المصدر وحتى المساهمة أحيانا.

يوم عمل في Lionite؟

يبدأ اليوم في Lionite بجولة من المراجعات لبعض الأمور الصغيرة من اليوم السابق، حتى يكون الجميع مستعدا لأعمال اليوم، بعد ذلك نعقد اجتماعا لتبادل الأفكار وقد يستمر ذلك حتى موعد الغذاء، ثم تتبعها ساعات عمل جادة من البرمجة والتطوير، في بعض الأيام نعقد اجتماعات مع (زبناء/رجال أعمال) ونعتبر ذلك تغييرا جميلا في روتين العمل.

Workplace؟

نعمل من غرفة صغيرة، لدينا مكتب ضمن مجموعه مكاتب، مع قاعة محاضرات مشتركة (تحجز حسب Schedule)، فقرب مكتبنا هناك شركتان: Nuconomy و Save an Alien.

مشروع Octabox؟

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

عن Princing؟

حاليا، متوسط سعر إنجاز المشاريع هو 20 ألف دولار أمريكي، والذي يعد مناسبا لكثير من تطبيقات الويب الحالية، المشاريع الكبيرة لها سعر مرتفع حسب الحجم.

نصائح لمن هو مقبل على تأسيس شركة 2.0؟

نصيحتي الأولى بأن لا تفكر أنك ستؤسس شركة ويب 2.0، المصطلح 2.0 اشتهر بفضل وسائل الإعلام، لكنه في الحقيقة لا يحمل أي فحوى أو قيمة حقيقة، ستؤسس شركة ويب Web فقط. وما يجب أن تهتم وتركز عليه هو بناء علامتك التجارية بالإضافة الى أعمال شركتك Portfolio، تعاون مع الأفراد الموهوبين لتنمية مهاراتك، عليك في البداية بتخفيض الأسعار والقبول ببعض المشاريع لملء Portfolio، واعتبره استثمارا لبناء قاعدة عملاء. حالما تحقق ذلك يمكنك رفع الأسعار حسب ما هو موجود في السوق. اختر عملاءك بعناية إن أردت أن لا تحرق أعصابك لاحقا، وحاول التوصل الى عقد عمل جيد، يحميك من الأخطار المحتملة.

إخفاء icons بـ CSS

الإثنين 21 سبتمبر 2009

هناك طريقة طريفة لإخفاء icons – المستعملة في تطبيقاتك – من أعين الفضوليين، علماً أنه يمكن الوصول إليها من ملف CSS، فعند الضغط بالزر الأيمن للفأرة لحفظ الإيقونة ستظهر صورة بيضاء فارغة.

اضغط هنا للتجربة:

قم بوضع صورة صغيرة بحجم الإيقونات الأصلية:

<img src="spacer.gif" class="icon" alt="" />

واستخدم الكلاس icon لاظهار الصورة الأصلية:

img.icon {
	background: url(folder.png) no-repeat 0 0
}

يمكنك جمع كل الإيقونات في صورة واحدة واستعمال background-position سيكون أفضل بالتأكيد .

تنسيق بيانات عضوية CSS

الإثنين 21 سبتمبر 2009

إن كنت تبرمج تطبيقات للويب، وتحتاج لعرض بعض البيانات على هيئة Grid، فهذا الدرس يعطيك طريقة سهلة وسريعة لعرض بيانات عضوية على شكل جدول .. كالمستعملة في موقع Youtube

الطريقة بسيطة وأكثر احترافية من الطريقة المستعملة في Youtube حيث استعمل الموقع وسوم div بكثرة.

استعمال Bulleted List:

<h2></h2>
<ul>
	<li> <span></span></li>
	<li> <span></span></li>
	<li> <span></span></li>
	<li> <span></span></li>
	<li> <span></span></li>
</ul>

طبع البيانات:

<h2>Profile</h2>
<ul>
	<li>name: <span>cssbit</span></li>
	<li>channel views: <span>158</span></li>
	<li>age: <span>54</span></li>
	<li>joined: <span>february 12, 2007</span></li>
	<li>last sign in: <span>1 week ago</span></li>
	<li>videos watched <span>1,505</span></li>
	<li>subscribers: <span>5</span></li>
	<li>country: <span>morocco</span></li>
</ul>

ما ستضيفه الان في CSS:

ul {
	position: relative;
}
ul li {
	border-bottom:1px dotted #ccc
}
ul li span {
	position: absolute;
	right:05px
}

من المهم جدا أن تعطي الخاصية: relative للقائمة UL كي تستطيع تحريك القائمة او تغيير العرض والمكان وستبقى البيانات دائما في صندوق UL كذلك هذا مهم كي يتم احتساب المسافة في Right من يمين UL وليس من يمين الصفحة Body

الان استعمل مهارتك في CSS لتنسيق البيانات بخط جميل ولون مناسب ..

my CSS Framework

الخميس 10 سبتمبر 2009

Paginator:

في عملي أقوم بتوفير خاصية pagination سواء في لوحة التحكم أو في واجهة الموقع Front End كي يسهل على المدير تحرير البيانات والتنقل بينها بسلاسة.

وجدت أنني أعيد كتابة نفس الأسطر في كل عمل جديد، وفي الأخير طورت أكواد CSS وحسنتها ثم احتفظت بها في ملف ك Snippet لأقوم فقط بتغيير: الحجم، لون الخلفية أو الإطار، نوع الخط، الاتجاه (عربي / انجليزي) ..

كما يتضح في هذا المثال، حيث قمت بتغيير اللون من الرمادي الى الأخضر وكذلك عدلت نوع الخط وحجمه:

اختبرت الملف على IE6, IE7, Chrome, Safari, Opera, Firefox وكتبت Fix عبارة عن سطر واحد لمتصفح IE وبالتالي أصبح لدي ملف pagination جاهز لادراجه في أي مشروع جديد. وكي يسهل علي إجراء أي تعديلات او تحسينات رفعت الملف على  GitHub

لتحميل الملف من GitHub

Form:

النماذج البريدية جزء أساسي من عملي اليومي، فلا يوجد تطبيق لا يحتوي على أكثر من 3 أو 4 نماذج بريدية، ونفس الشيء وجدته يتكرر في النماذج فأنا أقضي بل أضيع وقتا ثمينا في كتابة نفس الأسطر كل مرة، فأنشأت ملفا لتنسيق النماذج، يمكنني تعديله وتغيير أي شيء فيه بسهولة وسرعة كبيرة جدا، إذ يمكن تغيير شكل النموذج 360 درجة بتعديل 4 أو 5 أسطر، كما في المثال الآتي:

لتحميل الملف من GitHub

ملاحظات:

  • الملفان يستعملان reset لتصفير الإعدادات، لذلك لم أضف list-style .. وبعض الخصائص إليهما.
  • لاستعمال الملفين بالعربية يجب تعديل الاتجاه: float, padding, margin .. من اليسار الى اليمين.
  • يمكن حذف بعض الأوامر الخاصة بالحروف الاتينية مثل text-transform.

إنشاء إطار عمل جعلني أربح الكثير من الوقت، وأنصح كل مطور ويب أن ينشئ ملفا Common يحتوي على الخصائص التي يكررها باستمرار .. من هنا جاءت الحاجة لإنشاء أطر العمل المختلفة في PHP, Ruby .. إلخ، وبفضل التحسينات والتعديلات تحولت من أطر عمل شخصية إلى أطر عمل جماعية.

Inspired Workplace

الثلاثاء 8 سبتمبر 2009

13 صورة لأماكن عمل Workplace من مفضلتي Flickr

1


2


3


4


5


6


7


8


9

للشركة المبدعة kyanmedia


10


11


12


13


اعجبتني الصورة رقم 12 .. مكان ملهم وغير عادي.

عادات مطور ويب

الجمعة 4 سبتمبر 2009

أبدأ دوما ببرمجة لوحة التحكم Admin, Dashboard, Wp-admin لأي موقع أو تطبيق، إن كان الموقع يحتوي على: نظام عضويات، تعليقات، مقالات .. أبرمج هذه Modules وأشغلها بحيث يمكنني الإضافة والحذف وإجراء باقي Query على قواعد البيانات.

بعد الانتهاء من ملفات CSS أعود إليها لتنسيقها وحذف الاكواد الزائدة واختصار أخرى واستبدال Class لتكون أكثر فهما ووضوحا للزائر الفضولي الذي سيستعرض ملفات Source ، نفس الأمر أقوم به على مستوى XHTML لدي رغبة ملحة لأن يكون Semantic Code حتى وان كان العمل بدون مقابل مادي، فأنا لا أقوم بهذا لمن يدفع أكثر ..

في CSS كنت أستعمل عرضا محددا للصفحة لا يقل عن 769 بيكسل، بحيث تكون الصفحة Fixed، حاليا أصبحت أستعمل اي قياس أرغب به 800 او 900 px مع امكانية أن تكون الصفحة Fluid

أستعمل بعض الايقونات بأحجام مختلفة، لتنسيق بعض الصفحات UI وجميع لوحات التحكم التي برمجتها حتى الان استعملت فيها ألوانا متناسقة وايقونات جميلة لتسهيل وتوضيح العمل لصاحب الموقع، طوال الفترة الماضية كنت أقتبس أفكارا من لوحات تحكم المواقع الأجنبية مثل Drupal, Joomla ولوحة تحكم WordPress وتطبيقات ويب 2.0 كثيرة مررت عليها، وكنت أسجل فيها لتجربة لوحة التحكم والانتباه الى التفاصيل، وشيئا فشيئا صبحت تتكون لدي افكار شخصية أطبقها في عملي ..

لا استعمل إطار عمل Framework، وأكتب كل شيء من البداية، بدءا من تصميم جدول table ب Sql ثم كتابة الاستعلامات Suery ومرورا بانشاء صفحات HTML لهذا Module: لتعديل وحذف وعرض المحتويات: page_list.tp, page_edit.tpl, page_add.tpl هذا الامتداد اختياري واحيانا أضع امتداد .html

لم أعد أصمم لوحة التحكم بنفس النسق، أصبحت متمردا – إن صح التعبير – في توزيع المحتويات وقد أستغني عن header و footer او sidebar واظهر الاقسام بطريقة مختلفة، Flickr 1 و Flickr 2 و Flickr 3

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

روابط ذات صلة:

10 صور من مشروعي الأخير

الثلاثاء 25 أغسطس 2009

screen

screen

screen

screen

screen

screen

screen

screen

screen

screen

الأدوات:

  • CSS & XHTML
  • PHP OOP
  • MySQL
  • JQUERY
  • IE6, IE7, FF, Opera, Safari

تهنئة

السبت 22 أغسطس 2009

رمضان كريم وكل عام وأنتم بخير

HTML5

الجمعة 21 أغسطس 2009

النماذج البريدية .. نصائح مطور

الأربعاء 19 أغسطس 2009

Captcah لكن بطريقة بسيطة:

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

قدم يد المساعدة:

مع أن المواقع الحديثة، تتجه إلى تقليل عدد الحقول (input, checkbox, textarea) ما أمكن، (أنظر صفحة الاشتراك في writeboard) إلا أنه يحدث أن يتطلب الاشتراك في خدمة معينة، تعبئة صفحة طويلة من هذه الحقول .. في هذه الحالة، من الضروري أن تحدد الأخطاء للمستخدم، فعبارة: حدثت أخطاء أثناء التسجيل، عبارة عامة مبهمة، حدد أماكن الخطأ بنجمة حمراء أو بتغيير لون Border الخاص بكل حقل، أو حتى بإظهار العبارة الملائمة (كلمة المرور قصيرة، اسم المستخدم محجوز ..) ودائما يمكنك الاستعانة بإحدى Frameworks لاظهار الأخطاء في الحين وأثناء انتقال المستخدم من حقل لآخر حتى قبل الضغط على زر الإرسال، جرب خدمة التسجيل في موقع mint.

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

الخطأ ليس جريمة، نبه بأسلوب لطيف:

اختر رسائل أخطاء لطيفة، إنسانية، وتخاطب المستخدم مباشرة .. احرص أن تكون كلماتك مركزة،  وتصف الخطأ بدقة، ذلك يشجع المستخدم على الاستمرار في التسجيل، في حين قد تفقد مستخدما جديدا بعبارة: حدثت أخطاء /  لا تملك الصلاحيات لولوج هذه الصفحة.

لا تحضرني هنا كل رسائل الأخطاء التي رأيتها في مواقع عديدة ..

Password Input:

إظهار حقول Password، نعم هناك أوساط تنادي بإظهار كلمة المرور في حقل Input، لأسباب عديدة .. فالناس غالبا ما تخطئ في كلمة المرور، خصوصا إن كانت لوحة المفاتيح بلغة أخرى، كأن تكتب Symbols بدل Letters، شخصيا لم أقتنع بهذه الفكرة بعد، وما زلت أستعمل type = password

.. إلى النهاية

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