مقدمة إلى بايثون

Tuesday, December 22, 2009 | | 6 comments |

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


خضت في الفترة الماضية تجربة بسيطة مع python على ububto 11 ، وكانت تجربة جيدة ، لذا أحببت أن أشارككم بها هنا ، لمستخدمي لينكس الموضوع بسيط لكن بالنسبة لمستخدمي ويندوز هناك ironpython ولكن لم أجرب العمل عليه .


بداية :


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


كيف أحمل البايثون :


في اوبنتو ستجد أغلب البرامج التي تطلبها موجودة في System->Administration->Synaptic Package Manager :

الآن تحتاج لاضافة مكتبات البايثون ، يمكنك اختيارها من البرنامج أو يمكنك تحميلها من خلال ال Terminal بالأمر التالي :

sudo apt-get install python


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



برنامجي الأول :


بعد أن تكون قد قمت بتحميل مكتبات البايثون ، ومن خلال Terminal قم بكتابة الأمر التالي :


python

ثم جرب كتابة كودك الأول بالشكل التالي ثم اضغط انتر :

s='Welcome Ahmed';
print s

والنتيجة :




وللخروج اطبع exit().





احفظ ملفاتك :






يمكنك فتح ملف نصي جديد وكتابة نفس الأوامر فيه ، ومن ثم حفظه بامتداد .py .

في هذه الحالة ومن التيرمنال يمكنك الوصول للملف


cd /home/ahmed/Desktop


ومن ثم :


python a.py


وستؤدي نفس النتيجة ، فقط ستحصل على الأكواد ملونة



اللغة :

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

الشروط :

x = int(raw_input('Enter Number : '))
if x == 100:
print '100%'
elif x < 50:
print 'So bad :('
else:
print 'it is ok.'

حلقات التكرار :

# exit from loop if x=10
while running:
x = int(raw_input('Enter Number : '))
if x == 10:
print 'it is exit now'
running = False
else:
print 'The while loop is over.'

تعريف الدوال

   def funcHello():
‫‪print 'Hello'
‬‬
‫‪funcHello()

ماذا عن تصميم الواجهات :

يمكنك استخدام برامج خارجية لتصميم الواجهات ، هذا الرابط مفيد جداً :

http://arabicfoss.blogspot.com/2009/01/pyqt4.html


لكن لو احببت البدء بالموضوع من البداية ، فأول ما ستحتاج إليه هو استخدام مكتبة رسوميات مناسبة ، هذه المكتبة مثال pygtk .

الآن لنجرب هذا الكود مثلاً - منقول من كتاب لتصميم الواجهات - :

import pygtk;
pygtk.require('2.0');
import gtk;
def delete_event(widget,data):
False;
def destroy(widget,data=None):
gtk.main_quit();
window = gtk.Window(gtk.WINDOW_TOPLEVEL);
window.set_title("Hello");
window.connect('delete_event',delete_event);
window.connect('destroy',destroy);
hello_world_button = gtk.Button("Hello");
hello_world_button.show();
window.add(hello_world_button);
window.show();
gtk.main();


الآن جرب وطالع النتيجة .

يمكنك البدء لاحقاً ببرمجة الأحداث وربطها ، ربما نشرحها في مرات قادمة بالتفصل .

والويب :



تحتاج لاستخدام framework خاص بالويب ، أشهرها هو django ، يمكنك البدء من هنا :

http://wiki.python.org/moin/WebFrameworks


مصادر :

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

http://www.maastaar.com/books/pygtk/Building-Applications-With-PyGTK-and-SQLite.pdf

شكراً لكاتبه وجعل الله جهده في ميزان حسناته .

ختام :
كل الشكر لمحمد نبيل على تعبه معي الفترة الماضية


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



Read more ...

كتاب .net 2008 بصورة ورقية – تجربة النشر الحر

Friday, December 4, 2009 | | 3 comments |

منذ بضعة أسابيع ، قرأت كتاباً نشره الأستاذ رؤوف شبايك بعنوان ( انشر كتابك بنفسك ) والموجود على هذا الرابط ( انشر كتابك بنفسك )

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

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

وبالفعل بدأت في الإجراءات التي نصح الكاتب بالسير عليها ، والمحصلة النهائية ، ها هو كتابي جاهز للطبع :http://www.lulu.com/content/hardcove...y-step/8016570

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

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


لذا لو كنت تود الحصول على نسخة الكترونية فهذا رابط النسخة القديمة من الكتاب ذات الإخراج المتميز :http://www.4shared.com/zip/ietoeAMc/dotNet_2008_Old.html
أما لو كنت مصر على الحصول على النسخة بعد التعديلات فإليك هذه النسخة للتحميل :
http://www.4shared.com/file/164058191/5beddfb0/net_2008_2nd.html
وأخيراً ، هذا هو رابط الكتاب على موقع Lulu :
http://www.lulu.com/content/hardcove...y-step/8016570

كيف أشتري من موقع لولو ؟


باستخدام الرابط السابق ، أو من القائمة العلوية Buy والتي تتيح لك البحث بين الكتب واختيار الكتاب الأنسب لك .http://www.lulu.com/content/hardcove...y-step/8016570

إذا قمت بالضغط على الرابط السابق ، ستجد في الأعلى Add To Cart ، سعر الكتاب 30.10 دولار وهو تكلفة طباعة 604 ورقة مع غلاف من النوع الفاخر يتحصل عليها موقع لولو مقابل عملية الطباعة ، ستتم اضافتها لسلة التسوق ، بعد انتهائك من التسوق ستجد زر باسم Check out >>> ، سيطلب منك تسجيل ايميلك وكلمة مرور خاصة بك ليتم طلبك كعضو جديد أو سجل دخولك بعضويتك الحالية .

بعد ذلك سيخيرك بين نوعين من الشحن ، من حسابي في جدة - المملكة العربية السعودية يكلفني الشحن حوالي 11 دولار ، ومن المفترض أن يتم الشحن خلال 5-7 ايام ، إلا أن الأستاذ رؤوف ذكر في كتابة أن الأمر قد يطول بالشحن لاسبوعين أو ثلاث بالاضافة لأسبوع للطباعة ، عموماً انا ما زلت اجرب الطلب للمرة الأولى ولا أعرف كم سيستغرق الكتاب للوصول فعلياً .

بعد الضغط على save & continue سينقلك إلى شاشة الدفع الالكتروني ، ادخل بياناتك وسيتم التأكيد وانهاء العملية ، والآن عليك انتظار النسخة

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

يقدم الكتاب للنسخة الجديدة من فيجوال ستوديو من خلال C# و Vb.net عبر 22 باباً تتحدث عن الفيجوال ستوديو ابتداء باصدارته وطرق تحميله ، مروراً بعرض مفاهيم بيئة .net الرئيسية ، أساسيات كتابة الكود ولغة البرمجة ، Classes And Interfaces ، الأخطاء Debuginig ، المجموعات COLLECTIONS ، وسائل الادخال والاخرج IO ، واجهات Windows Forms ، عالم GDI+ و WPF ، قواعد البيانات من خلال ADO.net ، ثم LINQ و WWF و WCF وبرمجة ال Pocket PC ثم الانتهاء بالاطلاع على برمجة المواقع من خلال ASP.net .
تعقيب بعد استلام الكتاب :
للأسف بعد الانتهاء من كافة الخطوات واجهت مشكلة في دعم اللغة العربية عندهم ، حيث قاموا بطباعة الكتاب بالمقلوب برغم أني التزمت بارساله لهم معكوساً لكي تتم الطباعة بصورة صحيحة ، لكن برغم ذلك يبدو انهم اجتهدوا واعادوا ترتيب الكتاب حسب ارقام الصفحات ، وبعد عدة مراسلات توقف الدعم نسبياً منهم برغم اقرارهم بإن الخطأ من جهتهم . لذا وجب التنويه .

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

Read more ...

مدونة جديدة باللغة الإنجليزية

Saturday, October 31, 2009 | Labels: | 1 comments |

english

بسم الله الرحمن الرحيم

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

تم بحمد الله افتتاح مدونة أخرى تقنية باللغة الإنجليزية على هذا الرابط

http://ahmedgamal-net.blogspot.com/


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


ستظل هذه المدونة تعمل بالتوازي مع المدونة الإنجليزية

وبالله التوفيق

Read more ...

عمل تطبيق Asp.net من البداية وحتى رفع الموقع - ملف فيديو

Thursday, September 17, 2009 | Labels: , , , | 1 comments |



بسم الله الرحمن الرحيم .


بالاشارة إلى الإعلان السابق ، وضمن فعاليات اليوم المميز الذي اختتم في المنتدى على هذا الرابط :http://vb4arab.com/vb/forumdisplay.php?f=122


تم تجهيز خطوة بخطوة عمل تطبيق Asp.net ، التطبيق لموقع قديم على شكل مستعرض منتجات بسيط .

لغة الموقع : Asp.net من خلال .net 2008 .


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

http://vb4arab.com/vb/showthread.php?t=18391 - http://vb4arab.com/vb/showthread.php?t=18397 - http://vb4arab.com/vb/showthread.php?t=18454 - http://vb4arab.com/vb/showthread.php?t=18528 - http://vb4arab.com/vb/showthread.php?t=18573 - http://vb4arab.com/vb/showthread.php?t=18586


النقاط التي تم شرحها في الفيديو :


1- انشاء قواعد البيانات والعلاقات .

2- انشاء Stored Procedure.

3- انشاء طبقات البيانات .

4- انشاء الماستر بيدج .

5- البدء بانشاء الصفحات .

6- انشاء Custom Control.

7- التعامل مع بعض الادوات .

8- نشر الموقع على مستضيف مجاني .


الفيديو التعليمي هنا :

http://vb4arab.com/vb/popup/Final.html

وذلك على مدار ساعة كاملة ، من المفترض بعدها أن تكون قادراً على تصميم تطبيق Asp.net متكامل .


التطبيق النهائي هنا :

http://aspspider.info/ahmedgamal2/


لتحميل المشروع النهائي - سورس كود - :

http://www.vb4arab.com/vb/uploaded/3/01250221571.rar

ملف قاعدة البيانات :

http://www.vb4arab.com/vb/uploaded/3/01250583424.rar


** هناك بعض المشاكل في التسجيل الصوتي لذا هذا التسجيل الصوتي مؤقت ، وسيتم اعادة التسجيل قريباً إن شاء الله .


خطوات رفع الموقع على مستضيف مجاني Aspspider بعد الإنتهاء :


- ادخل إلى موقع Aspspider.net .

- قم بانشاء حساب جديد .

- سيتم تفعيل اشتراكك بعدها بحدود الساعة أو الساعتين .

- عند تسجيل الدخول بعد هذه الفترة ، ستجد لديك الصورة التالية :




- اختر مركز لوحة التحكم ، رفع الملفات ، ثم webroot ، وقم برفع ملفاتك واحد تلو الآخر .

- بعد الإنتهاء ، عد مرة أخرى إلى مركز رفع الملفات ، ثم Database ، ومن ثم قم برفع ملف قاعدة البيانات mdf فقط لو سكول أو mdb لو أكسيس .

- بعد الانتهاء عد مرة أخرى إلى لوحة التحكم ، واختر Database Manager .- ستجد قاعدة بياناتك التي قمت برفعها موجودة ، اضغط Attach Database ، واتبع الخطوات .

- بعد الانتهاء ، ادخل على الرابط التالي ، قم بتعديل ال Connection String الخاصة بك في web.config للطريقة الموضحة في هذه الصفحة :


- مبروك ، جرب الدخول إلى موقعك :)

بالتوفيق للجميع ...

Read more ...

الجديد في C# 4.0

| Labels: | 2 comments |


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

ما الجديد في C# 4.0 ؟

في الوقت الذي لا زلنا نحارب من أجل انتقال البعض إلى تقنية الدوت نت ، ما زالت عجلة التطور مستمرة ، وكل يوم نجد تقنية جديدة واصدار جديد ، سنحاول في هذه المقالة السريعة التعرف على بعض النقاط التي سنجدها مع C# 4.0 .
الخصائص الاضافية مقسمة لاربع اقسام رئيسية هي :

1- البارميترات الاختيارية Optional Parameters.
2- استخدام Dynamic - Dynamic Support
3- التعامل مع COM - COM interop.
4- Variance.


1- البارميترات الاختيارية Optional Parameters :

أخيراً في سي شارب ، أصبح بامكانك وضع قيم افتراضية للبارميترات بعد أن كانت هذه الخاصية متاحة فقط في vb.net :

public void functionname( string param1="Ahmed", bool param2 = false, int param3 = 24 ){
}

*** تسمية المتغيرات عند الإرسال Named Parameters :
في المثال السابق ، لنفترض اننا نريد الاستفادة من الخاصية الافتراضية للمتغير المنطقي param2 ولكننا نريد ارسال قيمة رقمية ل param3 بالشكل التالي
functionname("Ali",25);


الجملة السابقة للاسف خاطئة ، لإنها سترسل 25 في البارميتر الثاني وتفترض أن البارميتر الثالث هو من لم يتم تمريره .
لحل هذه المشكلة ، يمكننا كتابة اسم البارميتر حالة الإرسال بالشكل التالي :

functionname("Ali",param3: 25);


2- استخدام Dynamic - Dynamic Support

لنفترض أن لدينا دالة نرسل لها متغير معين فتعين لنا إما كائن من نوع طالب ، أو كائن من نوع مدرس ، بالشكل التالي مثلاً :

public object functionname(param a){if(a==0) return new Student();else return new teacher();}


الآن ، لو كان لهما خاصية مشتركة FirstName ونريد تعديلها بناء على الدالة التي تمت اعادتها ، فلدينا الحل التالي :
if(condition==0){Student s=functionname(condition) as Student;s.FirstName="Ahmed";}else{Teacher s=functionname(condition) as Teacher s.FirstName="Ahmed";}


الحل البديل الآن مع dynamic ، يمكنك كتابة الكود السابق بالشكل التالي :

dynamic s=functionname(condition) s.FirstName="Ahmed";


وفي حالة عدم وجود الخاصية بصورة مشتركة ، فسيتم رمي الاستثناء RuntimeBinderException
كما يمكنك لاحقاً اعادة تعيينها إلى Class معين بالشكل التالي :

Student newone=s;


*** أي قيمة byref عائدة من dynamic سيكون نوعها dynamic أيضاً .

3- التعامل مع COM - COM interop.

باستخدام نفس الميزة الجديدة dynamic ، اصبح التعامل مع ال COM Components أسهل وأسرع .
ابسط مثال على ال Com Components هي ادوات التعامل مع مجموعة برامج الاوفيس Ofice ، سابقاً كنا نكتب كود كالتالي للقراءة من خلية اكسل :
((Excel.Range)excel.Cells[1, 1]).Value2 = "Hello";

الجديد الآن ، هذا السطر كافي :

excel.Cells[1, 1].Value = "Hello";4- Variance


لو فرضنا أن لدينا الكود التالي :

IList strings = new List();IList<object> objects = strings;


في الواقع وعلى الرغم من ان أي String هو Object ، إلا أن الجملة السابقة ليست صحيحة بسبب أن String لا يحتوي على نفس عناصر ال Objects . مثال ذلك :

objects[0] = 5;string s = strings[0];


هذه الجملة خاطئة ، وادخالنا ل 5 كرقم واعادتها كنص يعد خرقاً لقواعد الأمان ، فقط باستخدامنا الانترفيس Interface التالي في C# 4.0 يمكن أن نمنع المستخدم من ادخال بيانات خاطئة :


IEnumerable<object> objects = strings;


والذي يتم تعريفه في C# 4.0 بالشكل التالي :


public interface IEnumerable : IEnumerable{ IEnumerator GetEnumerator();}public interface IEnumerator : IEnumerator{ bool MoveNext(); T Current { get; }}


أخيراً : العلاقة مع فيجوال بيسك - التحديثات الجديدة - :

1- خاصية القيم الافتراضية للبارميترات موجودة منذ زمن في الفيجوال بيسك .
2- بالنسبة لـ Variance و dynamic فتم تطبيقهم في نفس الوقت للغتين .

للاستزادة :
http://code.msdn.microsoft.com/Proje...ownloadId=3550

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

Read more ...

تم تحديث جميع الروابط

| Labels: | 0 comments |

تم تحديث جميع الروابط ، ومعذرة على التأخير .

Read more ...