Follow me on Twitter
‏إظهار الرسائل ذات التسميات programming. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات programming. إظهار كافة الرسائل

الثلاثاء، 25 أبريل 2017

5 دروس تعلمتها عند تطويرى أول تطبيق ويب [مترجم]

لقد قمت ببناء تطبيق ويب كجزء من مشروع تخرجى من الجامعة. وبدلا من تطويرى لتطبيق ويب بغرض إنهاء مشروعى، أخترت أن أطوّر تطبيقا يمكنه حل مشكلة واقعية. فاخترت أن أنشئ Cyber Manager وهو عبارة عن نظام إدارة لـمقهى انترنت cyber cafe أونلاين لـadministrators الخاصين بـ cyber cafe ، والذى تم حميله قرابة 3000 تحميل منذ رفعى إياه على SourceForge.net عام 2011.

فى هذه المقال سألقى نظرة على 5 دروس تعلّمتهم أثناء تلك الفترة والتى قد تساعدك أثناء وبعد تطوير تطبيق الويب الخاص بك.

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

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

الدرس الثالث : الأخذ بالاعتبار تطوير حلول باستخدام أدوات مفتوحة المصدر
عندما قررت ما الذى سأقوم بإنشائه، أحتجت أن أركز عن كيف أطور المشروع. كانت لغة البرمجة ASP.NET المشهوة خيارا بين طلاب الجامعة مثلما كانت جافا. كل خيار كله مميزات وعيوب. قررت أن أطور مشروعى باستخدام لغة PHP و Apache و MySQL. فلغة PHP لغة مشهورة، قابلة للتطور Scalable ،مفتوحة المصدر. لقد أخترت PHP لأنها سهلة وآمنة وتقدم دعم مجتمعى كبير للمطور. باستخدام تلك الأدوات أعطتنى الخبرة فى التعامل مع مجتمعاتها مفتوحة المصدر.

الدرس الرابع: التوجيه/الإرشاد Mentorship أهم من Technology Stack .
حينما تبدأ بالعمل فى مشروع تطبيق الويب الخاص بك، ضع فى أولوياتك إيجاد موجّه/مرشد mentor فعال فضلا عن التركيز على تكنولوجيا فعالة. إن التكنولوجيا شىء سوف يتعامل فقط مع المشروع، فى حين أن  الموجّه/المرشد mentor هو شخص سوف سيتعامل معك-سيساعدك لبناء تطبيق أفضل بينما يساعدك أيضا فى التحسن كمطوّر Developer وكمحترف. على الرغم من تقديم الجامعات للتوجيه من خلالها، لكن على الطلاب البحث عن مصادر خارجية لإيجاد موجّه/مرشد شخصى يساعدهم على اكتساب مهارات التخصص المطلوبة. لقد كنت محظوظا كون صديقى هو الموجّه Mentor لمشروع عامى الأخير. لقد كان مبرمج PHP ذا خبرة تحوّل إلى رائد أعمال entrepreneur ، ليطلق مشروع Startup تقنى صغير مؤخرا يقدم خدمات Web Development حول المدينة. جلست معه وعمل معه على مدى جدوى مشروعى، وقدّم لى النصيحة التى أضافت القيمة لمشروعى. فى بعض الأوقات كان يشرف على تقدّمى ويستخدم تطبيقى ويختبره فى حالات ير متوقعة وذلك ساعدنى فى تحديد الأخطاء bugs ومشاكل الأداء. هذا ساعدنى كثيرا فى تحسين تطبيقى وجعله قابل للتطور Scalable.


الدرس الخامس : أوجد مستخدمين حقيقين للاختبار، واستخدام التطبيق فى العالم الحقيقى
ليس هناك تطبيق تام حتى يتم اختباره ويستخدم من قبل المستخدمين المستهدفين. إذا أردت أن يكون مشروعك ذا جدوى feasible ،وذا اعتمادية reliable وقابل للاستخدام usable ، يجب أن تحصل على مستخدمين مستدفين لاختباره وتقديم تقييم feedback للمشروع. اختبار العالم الحقيقى والتقييم هو أمر بالغ الأهمية لتحسين جودة تطبيقك وأساسى لتطوير المشروع والمنتج الذى يريده المستخدم النهائى ليستمتع باستخدامه.

----------------
المصدر

الثلاثاء، 11 أبريل 2017

كتب لبرمجة تطبيقات الهواتف بواسطة python و kivy

السلام عليكم

تحدثت فى تدوينة سابقة عن تطبيقات الهواتف الذكية بواسطة لغة Python ومكتبة Kivy ،وفى لك التدوينة سأتحدث عن الكتب التى تشرح بناء تطبيقات الهواتف بواسطة Python ومكتبة Kivy.





 كتاب Creating Apps in Kivy
المؤلف : Dusty Phillips
يتحدث الكتاب عن أساسيات أداة kivy ك widgets و Events و Graphics وغير ذلك ويدمجها بالتدريج فى بناء تطبيق على مدى فصول الكتاب ليتطور مع كل معلومة تعرفها .. التطبيق لمعرفة درجة حرارة الطقس، ثم يختم بكيفية عمل حزمة APK لأندرويد أو حزمة لـ IOS. يعرفك أيضا بـ كيفية استدعاء GPS واستخدامه.
يمكنك الإطلاع على الكتاب أونلاين من خلال الرابط



كتاب Kivy: Interactive Applications in Python
المؤلف : Roberto Ulloa
لا يختلف هذا الكتاب فى تناول أساسيات أداة Kivy مثل الكتاب السابق سوى فى أسلوب العرض غير أنه يهتم كثيرا بالـ Graphics أو Canvas بالإضافة إلى التحريك Animation حيث يقوم ببناء لعبة يقوم ببرمجتها وتطويرها على مدى فصول الكتاب.



كتاب Kivy Blueprints
المؤلف : Mark Vasilkov
ستجد ان ذلك الكتاب يختلف عما ذكرته سابقا، فهو لا يشرح أساسيات أداة Kivy مثل الكتب السابقة لكنه يبرمج تطبيقا فى كل فصل ومن خلال تطوير التطبيق تتعلم معه بشكل عملى. ستجد برمجة تطبيقات كثيرة فلى مدى فصول الكتاب مثل تطبيق ساعة، تطبيق رسم، تطبيق تسجيل الصوت، تطبيق دردشة، تطبيق تحكم فى سطح المكتب، لعبة 2048، نسخة لعبة Flappy Bird ، ولعبة Shoot-Em-Up.
كما يوجد فصل يتحدث عن أساسيات مكتبة OpenGL وكيفية الاستفادة منها.



كتاب Kivy Cookbook
المؤلف : Hugo Solis
من الكتب التى أعجبتنى فهو يشرح أساسيات Kivy بشكل جميل بالإضافة لعرضه لكيفية التعامل مع accelerometer و  gyroscope والـ actions المختلفة. يتناول الكتاب أيضا API بالتفصيل نوعا ما. كما ستجد فصل لكيفية عمل حزمة لبرنامجك لأجهزة الكمبيوتر لينكس وماك وويندوز، بالإضافة لفصل لبناء التطبيقات للهواتف الذكية.
يمكنك الإطلاع على الكتاب أونلاين من خلال الرابط
فى النهاية لا أريد أن أذكركم بالإعتماد أيضا على Kivy Documentation ، فهى رائعة أيضا. يمكنكم تحميلها من موقع Kivy.

الأربعاء، 29 مارس 2017

لماذا لغة بايثون أفضل للمبتدئين فى البرمجة

فيديو أتحدث فيه عن لغة python ولماذا هى أفضل لغة للمبتدئين فى البرمجة.

يمكنكم عمل Subscribe للقناة لمتابعة الفيديوهات الجديدة.


الاثنين، 27 مارس 2017

تطوير لعبة Balls Gravity على Android بلغة Python

لعبة Balls Gravity على Android
لعبة قمت بتطويرها بلغة البرمجة Python ومكتبة Kivy التى تحدثت عنها وعن قدرتك على بناء تطبيقات لأندرويد بها فى تدوينة سابقة.
كيفية اللعب :
- اضغط على الكرات المجاورة لبعضها أفقيا أو رأسيا
- كلما زادت عدد الكرات التى تم ضربها فى المرة الواحدة كلما زادت النقاط التى تحصل عليها.
- لتنجح فى اجتياز كل مستوى يجب أن تحصل على 1100 نقطة

لتحميل اللعبة من Play Google





الأحد، 17 أغسطس 2014

بناء تطبيقات الهواتف الذكية باستخدام لغة Python وأداة SL4A


السلام عليكم



ما هى SL4A .. وما دورها فى مجال تطبيقات الهواتف بلغة بايثون ..


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



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



أولى الأدوات التى سنتحدث عنها هى Scripting Layer for Android أو ما تعرف اختصارا بـ SL4A



أداة SL4A هى عبارة عن تطبيق مفتوح المصدر تمكنك من كتابة برامج بلغات برمجة مفسرة Interpreted Languages لتعمل على أندرويد، فهى بمثابة الوسيط و"Layer" بينك وبين أجهزة أندرويد بما تملكه من API تسهل عليك التعامل والتفاعل مع أجهزة أندرويد.



تعتبر SL4A سهلة التنصيب .. ولا تحتاج لأن يكون الجهاز فى حالة root لاستخدامها



اللغات التى تدعمها SL4A هى بايثون Python ، روبى Ruby، بيرل Perl، جافاسكربت JavaScript، Lua ،BeanShell ،و Tcl .



ما الذى يجعل SL4A مختلف "مترجمة من المقال":



لكى تكتب تطبيقات تعمل على أندرويد فلن تجد أفضل من SL4a لما تقدمه لك من مميزات ومرونة، فالبدائل تركز على كتابة تطبيقاتك كـ native Apps -بعضها يفعل ذلك جيدا- .

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



تسمح لك أداة SL4A بتحزيم برنامجك كملف Apk ونشره على متاجر أندرويد .. لكنه يظل خيارا لك .. فمسألة التحزيم تم تقديمه كخيار فضلا على أن يكون هدفا .. فأغلب ما يُكتب بلغة بايثون عبارة عن سكربتات تستخدم لأغراض محددة وعادة لا يتم نشرها فى المتاجر .. فما تحتاجه -الهدف- هو تمكينك من كتابة عدة أسطر من الأكواد بلغة بايثون لأداء غرض محدد وحفظها وتشغيله متى أردت.



لبدء التعامل مع SL4A ولغة البرمجة التى تريدها -بايثون فى حالتنا-:

قم بالدخول على صفحة Downloads ،وقم بتحميل آخر إصدار لـ :

1- SL4A

2- Python for Android "Py4A"

تفتح Python for Android لتضغط على Install وتقوم بتحميل نسخة البايثون، ثم تفتح SL4A لتعرض قائمة Interpreted الخاصة باللغات المضافة وتتأكد من تواجد حزمة بايثون ورقم إصدارها









رأيى : تحدث الكاتب -فى الفقرة المترجمة- عن إطار kivy الذى يستخدم فى عمل Native Apps موجهة لمنصات متعددة، وتعامل معها وكأنها عيب لكن من ينسى أن جافا تعمل على JVM وتستطيع أن تكتب بها برنامج احترافى موجه لمنصات متعددة .. إذن الأمر يجب أن يُنظر له من وجهة نظر هل تم استيفاء متطلبات المبرمج من خلال تلك الأدوات ليكتب برنامج احترافى أم لا !!



الاثنين، 7 أكتوبر 2013

برنامج عدّاد 3.0 Addad الإصدار الثالث - من برمجتى

السلام عليكم
هذا هو الإصدار الثالث من برنامج عدّاد Addad 3.0
البرنامج موجه لمستخدمى توزيعة أوبونتو و Linux Mint والتوزيعات المنبثقة منهما الذى تستخدم حزم Deb
رخصة البرنامج GPL V3

مميزات برنامج "عدّاد" :

  • ساعة إيقافStopWatch .
  • عدّاد زمنى تنازلى Time CountDown، مع الإمكانية لاختيار أوقات شهيرة Popular Timers .
  • تقنية البومودورو Pomodoro Technique، ويمكنك القراءة عنها عبر هذا الرابط .إشعارات notifications تظهر حين انتهاء الوقت المحدد للعداد التنازلى Time CountDown و Pomodoro Technique .
  • مؤشر Indicator يحمل شعار البرنامج به خيارات عدة منها إخفاء وإظهار نافذة البرنامج، وإظهار أو إخفاء التوقيت الزمنى لأى من الثلاث (ساعة الايقاف – العداد الزمنى التنازلى – تقنية البومودورو ) بجانب indicator.
صفحة البرنامج على Launchpad لتحميل حزمة الـ Deb او الكود المصدرى.
لتنصيب البرنامج ،قم بتطبيق الأوامر التالية :
sudo add-apt-repository ppa:ahmed-linuxawy/ppas
sudo apt-get update
sudo apt-get install addad 


أشكر إسلام مصطفى، وإسلام ممدوح، وأنس عماد ،وبهاء سلامة على مساعدتهم واقتراحاتهم
 

الأحد، 18 نوفمبر 2012

برنامج عدّاد 1.0 Addad - من برمجتى



برنامج عدّاد Addad هو تطبيق قمت ببرمجته يستخدم كساعة ايقاف StopWatch و عدّاد تنازلى للوقت Time Countdown

البرنامج موجّه للينكس وخاصة أوبونتو و linux mint ،ويمكنك تحميل الشفرة واستخدامه على أى توزيعة لينكس أخرى
رخصة البرنامج هى رخصة Gpl v3 الحرة ،وهو مبنى بـ بايثون ،والمكتبة الرسومية Gtk .

لتحميل البرنامج من مستخدمى أوبونتو و linux mint :
نفتح ملف sources.list عن طريق الأمر التالى :

gksudo gedit /etc/apt/sources.list

ثم نضيف السطريين التاليين فى آخر الملف وهما مستودعات برنامج عدّاد :

deb http://ppa.launchpad.net/ahmed-linuxawy/ppas/ubuntu precise main
deb-src http://ppa.launchpad.net/ahmed-linuxawy/ppas/ubuntu precise main

يمكنك اضافة السطريين بواسطة Software Sources كما تحب بالخطوات الموجودة هنا


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

sudo apt-get update

ثم قم بتنصيب برنامج عدّاد بالأمر :

sudo apt-get install addad

لمن يريد تحميل شفرة أو حزمة deb للبرنامج لتشغيله على أى توزيعة لينكس أخرى أو للاطلاع عليها ،يمكنك التحميل من هنا



الأحد، 17 يونيو 2012

سكربت بايثون: عمل backup للمجلدات الرئيسية باللينكس


سكربت بلغة بايثون _لنظام اللينكس_ يستخدم لعمل backup للمجلدات والملفات الموجودة داخل مسارات home الهامة (
'Downloads', 'Music', 'Documents', 'Pictures', 'Videos') .
المكان الافتراضى لنسخ ملفاتك /media/DATA/Backup ،قم بتغيير DATA إلى اسم partition الخاص بك الذى تريد انشاء backup به.

لست أعتمد فى السكربت على أوامر من سطر الأوامر لينكس بل أعتمد على الدوال الموجودة فى Modules بايثون مثل os ، shutile .

رخصة السكربت GPL


الأحد، 27 مايو 2012

كيف تغيير خط موقعك - لمحات من CSS3 -


يتمنى البعض أن يتحكم فى نوع خط موقع أو مدونته بحيث يظهر بصورة جميلة وبخط مميز ،ويجد الصعوبة فى ذلك إن كان الموقع يعتمد على خطوط نظام التشغيل -لمشاهد الموقع- ،ولكن CSS3 استطاعت معالجة ذلك وذلك عن طريق @font-face ،حيث إنها تحدد مسار الخط الذى يوجد على السيرفر -الخادم- وبالتالى لا يتم استدعاء خطوط من نظام التشغيل

يتم ذلك كالآتى :

@font-face {
font-family: Font-name;
src: url('/directory/font-file.ttf');
}


السطر الثانى يقوم بتحديد مسار الخط على السيرفر -الخادم- فيستدعى الخط من الخادم وليس من نظام التشغيل
أما السطر الأول فمع font-family تحدد اسم الخط _أى اسم أريد أن أسمّى به الخط _ والذى يمكنك استدعاءه بعد ذلك كالتالى

#content{
font-family: Font-name;
}

الآن استمتع بأن تختار خط موقعك بحرية ^_^


الجمعة، 2 مارس 2012

سكربت php : توليد captcha بسيطة

السلام عليكم

هذا سكربت php قمت بكتابته منذ فترة لـتوليد captcha بسيط ..أرجو أن تستفيدوا منه.

فى البداية قمت بانشاء ملف سمّيته captcha.php ،هذا الملف سيقوم بتوليد captcha ،ثم كتبت به الآتى:
$image = imagecreatetruecolor(70, 35);
$background_color = imagecolorallocate($image, 88, 158, 239);
$text_color = imagecolorallocate($image, 255, 255, 255);


imagecreatetruecolor(70, 35) // سيقوم بانشاء صورة بأبعاد عرض 70 بيكسل ،وطول 35 بيكسل

imagecolorallocate($image, $red, $green, $blue)
دالة تقوم بتعيين الألوان التى ستسخدم فى الخلفية وخط الكتابة حيث image$ هى متغير الصورة ،أما اللون فيتم تحديده عن طريق النوع RGB حيث R : أحمر،و G : أخضر ، و B : أزرق ،وقيمة كل منهم تكون بين 0 و 255 . يمكنك اختيار لونك المفضل أو توليد اللون عشوائيا.

إذا أردت أن تظهر خطوط عشوائية فى خلفية الصورة ،يمكنك كتابة الكود الآتى:
$line_color = imagecolorallocate($image,233,239,239); // لتوليد لون للخطوط
imageline($image,0,0,35,25, $line_color);
imageline($image,12,29,70,5, $line_color);


imageline($image, $x1, $y1, $x2, $y2, $color) // تلك الدالة تمثل خط واحد
حيث x1 $ و y1 $ هى الاحداثى y , x لبداية الخط ، وx2 $ و y2 $ هى الاحداثى y , x لنهاية الخط.

الآن نقوم بتلوين الخلفية باللون الذين قمنا بتعيينه سابقا للخلفية ،وذلك بالسطر الآتى :
imagefill($image, 5, 6, $background_color);

إن أردت كتابة كلمة ثابتة فى captcha لكى تظهر كل مرة فيمكنك كتابة الكود الآتى:
$string = 'asdfbhy';
imagestring($image, 5, 10, 10, $string, $text_color);


imagestring($image, $font, $x, $y, $string, $color) // وهذه دالة تعيين لون وخط ومكان الكلمة
حيث x$ هى احداثى x من النقطة العلوية فى اليسار ، و y$ هى احداثى y من النقطة العلوية فى اليسار

أما إذا أردت أن تولّد كلمة عشوائية كل مرة ،فيمكنك استخدام الكود الآتى ،حيث كتبته لتوليد مجموعة من الحروف والأرقام مجموعها 6 دون ترتيب.
$string = '';
for ($i=1; $i<=6; $i++){
$array = array(chr(rand(48, 57)),chr(rand(97, 122)));
$string .= $array[rand(0,1)];
}
imagestring($image, 5, 10, 10, $string, $text_color);

rand($min, $max ) // تقوم بتوليد رقم عشوائى بين القيمتين الصغرى والكبرى
دالة chr() تقوم بإعادة الحرف المقابل للرقم الموجود بداخل الأقواس من جدول ASCI

هناك أنواع كثيرة لتوليد صورة captcha منها png و jpg ،ولكننا سنستخدم png :
header("Content-Type: image/png");
imagepng($image);

ثم نقوم بازالتها بعد توليدها وتصديرها :
imagedestroy($image);

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

عذرا للاطالة ،وأرجو أن أكون قد أفدتكم :)

الاثنين، 1 نوفمبر 2010

مقدمة عن لغات البرمجة وخرائط التدفق والخوارزميات

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

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

بين أيديكم ملفا يحتوى على مقدمة جميلة ومبسطة عن البرمجة فيشمل:
*شرح مبسط لأنواع لغات البرمجة للحاسب الآلى.
*ما هى الخوارزميات Algorithms ؟
*ما هى خرائط التدفق ،أهميتها،الأنواع الرئيسية منها ؟
*شرح عن تحليل المشكلة وتخطيط الحل لهذه المشكلة باستخدام خرائط التدفق والخوارزميات.

الملف هو عبارة عن مادة تعليمية من المؤسسة العامة للتدريب التقنى والمهنى بالسعودية
وماذكرته لكم هو الفصل الأول والثانى منها أما الباقى فجزء من شرح لغة الجافا

لتحميل الملف من هنا أو هنا


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

الأربعاء، 27 أكتوبر 2010

كتاب لغة C الشامل

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

لكل محبى تعلم لغة السى ،إليكم كتاب "لغة C الشامل"
أول كتاب عربي مجاني يتحدث عن البرمجة على لغة C
الكتاب للأخ الكريم / خليل أونيس

الكتاب رائع وجميل ،وقد استفدت منه شخصيا فى دراستى خاصة فى باب المؤشرات (Pointers)