Follow me on Twitter

الثلاثاء، 19 مايو، 2015

تأثير فلسفة لينكس linux philosophy

جميع أنظمة التشغيل لها فلسفة تسير عليها بما فيها نظام جنو/لينكس، كما أن لتلك الفلسفة تأثير على المجتمع الذى يستخدم ذلك النظام.بل ويؤثر على تطوير البرمجيات له.

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

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

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

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

كما أن نظام التشغيل MAC لا يختلف كثيرا، فكونه هو ونظام التشغيل ويندوز Windows يوفر GUI لسطح المكتب، في رأي الكثيرين، يوفر للمستخدم تجربة أكثر اتساقا وتكاملا، وأكثر سلاسة لتجربة المستخدم User Experience. كلا النظامين يوفران أيضا سطر أوامر Command Line Interface 'CLI' للتفاعل على مستوى منخفض بين المستخدم ونظام التشغيل لكنها بالتأكيد محدودة بعدد معين من الأوامر خاصة حين تُقارن بأنظمة لينكس ويونكس.

لكن الجدير بالذكر أن سطر الاوامر CLI لنظام التشغيل MAC وهو عبارة  Bash Shell يمدك بقدر كبير من القوة كما فى لينكس لكنه يعتبر مدفون داخل النظام تجعل من الصعب العثور عليه إلا إذا كنت تعرف بكونه موجود فى مكان ما.

المفهوم الجذرى Radical concept

أثناء قيام تطوير أنظمة يونكس UNIX في أواخر الستينات وأوائل السبعينات، عزم المطورين على بناء نظام تشغيل مختلفا إلى حد كبير عن أنظمة التشغيل التي سبقته. كانت فلسفة يونكس UNIX مختلفة اختلافا كبيرا عن أنظمة التشغيل الأخرى. وتم استمداد فلسفة لينكس Linux مباشرة من فلسفة يونكس UNIX.

لقد وجدت النص التالى فى فصل مقدمة عن فلسفة يومكس بكتاب Linux and the Unix Philosophy للكاتب Mike Gancarz يقول فيها :
"إن نظام التشغيل بطبيعته يجسد فلسفه صانعوه، فصانعى نظام التشغيل يونكس UNIX بدأوا بمفهوم جذرى وهو: أنهم أفترضوا أن مستخدم نظامهم ذو ثقافة جيدة بالكمبيوتر من البداية، ففلسفة يونكس UNIX تدور حول فكرة أن السمتخدم يعرف ما يفعل."

حقا.. هل قالوا ذلك !! لكنها ليست الحقيقة، فالعكس تماما هو الصحيح فى الواقع.
 أحد العبارات المفضلة لدى عن يونكس والتى تنطبق أيضا على لينكس وتنسب إلى شخص يدعى Doug Gwyn وهى جملة رائعة :
"لم يُصمم يونكس ليوقف مستخدميه من القيام بأشياء غبية، لأن ذلك أيضا سيمنعهم من القيام بأشياء ذكية"

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

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

التنوير Enlightenment

حاول العديد من الأشخاص على مر سنوات فى تنوير البقية منا  بتدوين جوانب مختلفة من فلسفة لينكس، فقد كتب Mike Gancarz أولا  فلسفة يونكس "The Unix Philosophy" ثم تبعها بفلسفة لينكس ويونكس Linux and the Unix Philosophy حيث تسرد هذه الكتب 9 مبادئ رئيسية و 10 معتقدات تقريبا.

كما قام Eric Raymond بكتابة 17 قاعدة ليونكس فى كتابه "The Art of Unix Programming"

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

الطرفية Terminal 

تتلخص فلسفة لينكس فى سهولة الوصول إلى سطر الأوامر CLI وذلك عن طريق محاكى يسمح لك بذلك لتستخدم سطر الأوامر بقوته. هناك العديد من اوجه سطح المكتب GUI Desktop يختار من بينها المستخدم ما يحبه ويتناسب مع استخدامه وعمله. ستجد لكل واجهة سطح مكتب الطرفية Terminal الخاصة به والتى يسمح الكثير منها بفتح أكثر من Tab لتنتقل بينها وكل منها تستخدمها فى أداء عملية معينة بصلاحيات مختلفة عن الأخرى كما تريد.

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

التحكم الكامل Complete control

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


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

التوجّه الأساسى للينكس The Linux prime directive

لقد وصلت إلى قناعة بالنظر إلى كل الحديث عن فلسفة لينكس إلى كلمة بسيطة :

معاملة كل المستخدمين باحترام
Treat all users with respect


المراجع :
1- كتاب The Art of Unix Programming للمبرمج Eric Raymond
2- كتاب Linux and the Unix Philosophy لـ Mike Gancarz .. معلومات عن الكتاب : Digital Press, 2003, ISBN 1-55558-273-7

-------------------

السبت، 13 ديسمبر، 2014

لغة Python وأداة Kivy فى مجال تطبيقات الهواتف 2



السلام عليكم

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

ثم بعد فترة وفقنى الله فى معرفة إطار Kivy وهو الذى وفّر لى تلك المزية التى ذكرتها، فإطار Kivy استطاع أن يوفر لى القدرة على بناء برامج بلغة بايثون ويمكن استخدامه فى بناء حزم بامتداد APK ليتم تنصيبها على الهواتف الذكية بما فيها بناء تطبيقات متعددة اللمس multi-touch.

وكون Kivy يتم وصفها كإطار  لكن ذلك لا يمنع وصفها بأنها مكتبة مثل مكتبات بايثون يمكنك أن تستدعيها وتستدعى أدواتها باستخدام import.

توفر لك Kivy لغة جديدة تسمى kv Language وهى تستخدم فى تصميم واجهة التطبيقات وكيفية التفاعل معها وهى تتميز بالسهولة والاعتمادية، فهى تسمح لك بإنشاء واجهة رسومية تطبيقك بشكل وواضح ومنفصل عن logic الخاص بتطبيقك مع الربط بين الواجهة الرسومية و logic الخاص بالتطبيق، وسيساعد ذلك فى سرعة تطوير التطبيق وسهولة صيانته.

موقع kivy

للبدء مع kivy .. من خلال Getting Started :

لتحميل Documentation :

صفحة لألعاب وبرامج تم تنفيذها بواسطة kivy :

كما يوجد كتابان يتناولان إطار kivy وكيفية استخدامها لإنشاء تطبيقك من الصفر مع أمثلة متقدمة ومفصلة . اسم الكتابين :
Creating Apps in Kivy, Dusty Phillips 
Kivy: Interactive Applications in Python, Roberto Ulloa

أتمنى أن تستمتعوا بإستكشاف kivy ^_^

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

لغة Python وأداة SL4A فى مجال تطبيقات الهواتف 1


السلام عليكم

ما هى 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 وتستطيع أن تكتب بها برنامج احترافى موجه لمنصات متعددة .. إذن الأمر يجب أن يُنظر له من وجهة نظر هل تم استيفاء متطلبات المبرمج من خلال تلك الأدوات ليكتب برنامج احترافى أم لا !!



الثلاثاء، 29 يوليو، 2014

لغة البرمجة بايثون python فى تطبيقات الويب

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

تستطيع أن تستخم بايثون فى بناء مواقع ويب قوية عن طريق Frameworks كتيرة منها Django و Pyramid و Flask (تعرف على الباقى عن طريق ويكيبديا ) ولكن أشهرها هو Django أو جانجو بالعربى.

Django عبارة عن إطار ويب مفتوح المصدر ومكتوب بالبايثون، ويعتبر من أقوى أطر الويب للغة بايثون .. تم تنفيذ مواقع عديدة بواسطته يمكنك تصفحها عن ذلك الموقع ( ستجد بعض المواقع تقدم الشفرة المصدرية الخاصة بها )
https://www.djangosites.org

يمكن أن تبدأ الآن فى تعلّم Django من خلال وثائق الموقع الرسمى (النسخة 1.6 هى النسخة الرسمية حاليا ، والنسخة 1.7 لسه بيتا )
https://docs.djangoproject.com/en/1.6/

موقع كتاب THe Django Book

http://www.djangobook.com

ودروس أخرى من موقع Tutsplus
http://code.tutsplus.com/categories/django http://code.tutsplus.com/articles/diving-into-django--net-2969

صفحة Django resources
  ttps://code.djangoproject.com/wiki/DjangoResources

وأكيد الانترنت عبارة عن مصدر مفتوح لك يمكنك البحث فيه كما تشاء .. استخدمه فى البحث عن مشكلتك وزيادة معلومتك..

يمكن معرفة أيضا Frameworks أخرى للبايثون وذلك من خلال صفحة الويكيبديا ..
  http://en.wikipedia.org/wiki/Python_%28programming_language%29#Use

‫#‏اتعلم‬ ‫#‏بايثون‬ ‪#‎Python‬ ‪#‎Django‬

الأربعاء، 30 أكتوبر، 2013

فلسفة يونكس فى تطوير البرمجيات Unix philosophy


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

Do one thing and do it well - Write programs that do one thing and do it well. Write programs to work together.
Write programs to handle text streams, because that is a universal interface.
 

Everything is file - Ease of use and security is offered by treating hardware as a file.
 

 Small is beautiful.
 

 Store data and configuration in flat text files - Text file is a universal interface. Easy to create, backup and move to another system.
 

 Use shell scripts to increase leverage and portability - Use shell script to automate common tasks across various UNIX / Linux installations.
 

 Chain programs together to complete complex task - Use shell pipes and filters to chain small utilities that perform one task at time.
 

 Choose portability over efficiency.
 

 Keep it Simple, Stupid (KISS).

رائعة بحق ^_^

من كتاب Linux shell scripting
نقلتها كما هى بالإنجليزية خوفا من أن تكون الترجمة لا توفيها حقها 


الأحد، 27 أكتوبر، 2013

اختصارات مفيدة عند إستخدام الترمينال Terminal



هذه عدة إختصارات توفّر وقتك وتسهل عملك عند استخدام سطر الأوامر :
 
-----------------------------




- إذا قمت بتنفيذ عدة أوامر وامتلأت الشاشة بالأسطر ،يمكنك تنظيفها بالضغط على CTRL + L

- إذا كتبت سطر طويلا وأردت مسحه ،لست مجبرا على الضغط على Backspace لمسحه ،بل يكفيك الضغط على CTRL + U

- للبحث عن أمر كنت قد كتبته قبل ذلك ولا تتذكر تفاصيله فما عليك إلا الضغط CTRL + R ثم اكتب كلمة أو مقطع لتبحث به فى الأوامر السابقة

- إن أردت إيقاف أمر أثناء وقت تنفيذه ،تذكر أن تضغط CTRL + C

- يمكن استخدام السهم لأعلى للرجوع للأوامر السابقة


- إذا كتبت أمر طويلا وأردت الذهاب لأوله يمكنك استخدام Ctrl + A وإن أردت الذهاب لآخر الأمر فما عليك إلا الضغط على Ctrl + E .

- لإيقاف أو تعليق تنفيذ الأمر يمكنك الضغط على Ctrl + Z

- لمسح الكلمة قبل علامة الكتابة ،اضغط Ctrl + W

- للإنتقال بعلامة الكتابة بين حروف بداية كلمات الأمر الذى كتبته ،تقوم بالضغط على Ctrl + right/left arrow



الاثنين، 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 


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