Archive for the 'روبي' Category

مبرمجين روبي قم بمتابعتهم عبر تويتر

ديسمبر 16, 2008
سلام من الله عليكم ورحمته وبركاته ومغفرته ورضوانه
–  من فتره بسيطه وانا أستخدم خدمه تويتر وقد اعجبتني واسترعت انتباهي و قمت بأضافه العديد من الأصدقاء اليها , واثناء البحث عن مبرمجين روبي لأضافتهم الي القائمه وجدت موضوع في مدونة RubyLearning -انصح كل من يهتم بالروبي بمتابعة هذه المدونه – يحتوي علي 50 شخصيه تبرمج بالروبي , فقمت بأضافة العديد منهم لــدي وهم :
Peter Cooper : مؤلف كتاب Ruby from Novice To Professional
Dave Thomas : مؤلف كتاب Programming Ruby The Pragmatic Programmer’s Guide
Jeremy McAnally : مؤلف كتاب Humble Little Ruby Book
Staish Talim : مطور محترف بالروبي ومدرب وخبير في تقنيه المعلومات -أحب هذا الرجل لا أعرف لماذا 😀 –
Dr Nic Williams : مدرب و مطور محترف بـ الروبي والروبي اون ريلز
– تستطيع ايضاً متابعه كل من :   RubyInside , Rails , Fiveruns , Engineyard , RubyLearning وهي مجموعه من المواقع التي تهتم بكل جديد في عالم الروبي والريلز .

Emptyfolders.rb

أغسطس 31, 2008
سلام من الله عليكم ورحمته وبركاته ومغفرته ورضوانه
#!/usr/bin/env ruby 
# Emptyfolders V0.2
# Written by Mutati0N
def delete_empty_folders(path= ARGV[0]) 
  Dir.glob(File.join(path,"**","**")).each do |all_dirs|
 next if File.file?(all_dirs)  
next if !"#{Dir.entries(all_dirs)-["..","."]}".empty?
puts File.expand_path(all_dirs)
 Dir.delete(all_dirs)
  end
end
begin
delete_empty_folders
rescue
  puts "-You forget somthing!!\n* Usage: ruby Emptyfolders.rb path_of_the_directory"
end
– سكربت مفيد , وظيفته حذف المجلدات الفارغه بداخل بارتشن تقوم بتحديده ; الاسكربت موجود مع شرح لكيفيه استخدامه في صفحه مشاريع بالروبي

ls.rb -V0.1

أغسطس 22, 2008
سلام من الله عليكم ورحمته وبركاته ومغفرته ورضوانه
– سكربت بسيط , وظيفته عرض المحتوي الموجود في ديريكتوري معين بتحدده ويبظهرلك نوع كل ملف جواه .
 
#!/usr/bin/env ruby
# Written By Mutati0N
def list_files(path= ARGV[0])
  if File.directory?(path)
   Dir.foreach(path) do |results|
     next if results == ".." ||  results == "."
      puts "#{results} -> #{File.ftype("#{path}" + '/' +  "#{results}")}"
   end
 end  
end  
  list_files
تجد الاسكربت مع شرح لطريقه استخدامه من صفحه مشاريع بالروبي

كتاب الروبي الصغير – الإصدار الثاني

يوليو 13, 2008
سـلام من الله عليكم ورحمته وبركاته ومغفرته ورضوانه
منذ فتره طويلـه حوالي ما يقرب من عام وضعت تدوينه عن هـذا الكتاب المجاني , ولمن لا يعرف الكتـاب فهو عباره عن كتاب مجاني يشرح اساسيات لغـه الـRuby بصـوره بسيطـه , حيث نجـد ان الكتاب يعرض طريقـه كتابه الشفـرات فيهـا بصوره عامه , وقد يفيد الذين لديهم معرفه بلغـات اخري كـPython , في التعرف علي الطريقه التي تُكتب بهـا شفرات الـروبي , ولكن المبتدئين لا يستطيعوا الاعتماد عليه كتاب شامل لتعليم اللغه , لكن يُمكن الاعتماد عليه في اخذ لمحه عن اللغه فقط .
– صـدر من الكتاب اصداره ثانيه , تأتي في 87 صفحـه كعشره فصـول تشرح اساسيات اللغه .
بامكانك زيـاره الصفحه الرئيسيه الخـاصه بالكتاب , لمتابعه الاصدارات الجديده منه .
من هنـــــــا تستطيع تحميـل الاصداره الثانيه من الكتاب .
لتحميـل الامثلـه الموجوده في الكتاب من هنـــا .

Ruby 1.8.7

مايو 31, 2008
سـلام من الله عليكم ورحمه وبركاته ومغفرته ورضوانه
صـدرت اليـوم النسخه رقم 1.8.7 من الـ Ruby ,اللغه في هذه الاصداره تم تحسين العديد من الثغرات بهـا , بجانب تحسين
العديد من المميزات باللغه حيث تمت اضافه العديد من الـ Methods الدوال واضافه مكتبات جديده للغـه Libraries والتحسين من عمل بعض الدوال في اللغه للخروج بنتيجه افضل .
وتتوافر هـذه الاصداره من اللغـه بالعديد من الامتدادات المضغوطـه للتحميـل :
tar.bz2
3.9 MB
tar.gz
4.6 MB
tar.zip
5.6 MB
وبـامكانك زياره الصفحـه الرئيسيه للخبــر من هنــــــــــــــــــــــا .
ولرؤيــه تقـرير كـامل عن التغييــرات التي تمت في هذه الاصداره من اللغــه من هنـــــــــــا .

مقدمة في روبي -أول كتاب عربي يهتم بالروبي

مايو 23, 2008
سـلام من الله عليكم ورحمته وبركاته ومغفرته ورضـوانه
صـدر اول كتاب عربي يختص بلغـه الـ Ruby كتعاون بين احمـد “StrikerX ” و “وادي اخبـار التقنيه” –فهـد السعيدي– , الكتاب كمقدمه يعتبر جيـد حيث يعمـل علي عرض الاساسيـات من طريقه كتابه الـ Variables , والـ Arrays و الـ Hashes بطريقه مبسطـه وسهلـه ويساعد المبتدئين في اللغه علي فهمها بسهوله .
ايضـا يعرض الكتـاب فصل  عن كيفيه التعامل مع الـ XML وقاعده بيـانات SQlite ومقدمه عن الـ Rails .
ولتحميـل الكتـاب  من هنـــــــــــــا بصيغه pdf .
لينــك اخــر للتحميـــل من SourceForge بصيغتي Pdf و odt .
ونتمني ان نرى المزيـد من تلـك الأعمـال العربيـة الجميلة دائمًا.
شكـر : شكر خاص لــ “سـامي” Snix علي تصميم غـلاف الكتـاب

ماذا تعرف عن روبي جيمس

مارس 20, 2008
سـلام من الله عليكم ورحمه وبركاته ومغفرته ورضوانه
تشتمل هـذه المقالة على عـده نقـاط وهي :
• تعريف بسيـط بـ ماهية الـ Package Management System .
• مقـدمة تعريفية بالــ RubyGems .
• متطلبات تنزيـل وتثبيت الـ RubyGems .
• الاوامر المستخدمة في الـ RubyGems .
• مشـروع تطبيقي بسيـط .
• روابط تفيد الموضوع
* الشـرح والتوضيح الموجود في هـذه المقالة يخدم بصورة أسـاسية مستخدمي اللينوكس .
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
– الـ Package Management System ببسـاطه عباره عن نظــام لاداره الحـزم فهـو تطبيق يسـاعدك علي تنزيـل,تحديث,ترقيـه وحـذف البرامج المختلفـه ,فهنـاك اوامر مختلفـه لتنفيـذ هـذه العمليـات.وتـوجـد البرامج علي سيرفرات التوزيعـه في شئ يسمي بمستودعـات البرامج repositories . وبعــد اختيار البرنـامج المراد تحميله, تقـوم بكتابه الامر المسئول عن تحميـل البرنامج في الـ Terminal-برنامج سطر الاوامر- يتبعه اسم البرنامج ,فيقـوم نظام اداره الحـزم بجلب البرنـامج ومن ثـم عمل Install لـه علي النظـام فيصبـح جاهز للاستخـدام مباشره .
ومن امثلـه الـ Package Management System برنـامج apt – اختصـارا لـAdvanced Packaging Tool – الموجـود علي التوزيعـه العريقـه Debian وابنائهـا -اقصـد بالابناء هي التوزيعـات المبنيه عليهـا – ,وبرنـامج yum -اختصـارا لـ Yellowdog Updater Modified – الموجـوده علي توزيعـه Redhat وابنائهـا .
– ويعتبر الـ RubyGems نظـام لاداره الحـزم Package Management System وهـو تطبيق تمت كتابته بالـ Ruby ليعمــل علي تنزيــل تطبيقات جـاهزه او مكتبات تمت كتابتهـا بالـ Ruby لتـساعدك علي اداء وظيفـه معينـه – تطلق علي تلك التطبيقـات والمكتبات اسـم Gems – . فعلي سبيـل المثـال :
اذا كـان لديك ملف صوتي وتريد ان تقوم بكتابه اسكربت ليقـوم بعرض اسم المغني واسـم الالبوم لهذا المـلف الصوتي ,فلا حـاجه لاعـاده كتباته لان هنـاك مكتبه تدعي id3lib
تقـوم بتمرير ملف صوتي لهـا -بامتداد Mp3 – فتقوم بعرض اسـم المغني مع الالبـوم وتستطيـع تنزيلهـا باستخـدام الـ RubyGems بكـل سهـوله بـامر واحـد .
طـورت الـ RubyGems عن طريق عـده اشخـاص منهم شخص يدعي Jim Weirich واخـر يدعي Chad Fowler ,وكـانت اول اصـداره متـاحه للتحميـل في عـام 2004 .
– البـرمجيـات التي تقـوم بتحميلهـا عبر نظـام اداره الحـزم سـواء كان apt او yum او غيـره تحمـل امتداد معيـن فعلي سبيـل المثـال: تحمـل البرمجيـات الخـاصه بـ Debian وابنائه امثـال Ubuntu الامتداد deb امـا Redhat وابنائـه امثـال Fedora فيحملـوا الامتداد rpm ,وبناء علي تلـك القـاعده فـان البرمجيـات المحملـه عبر الـ RubyGems تحمـل الامتداد gem .
ملحوظــه :انـا لا اقصـد في المثـال السابق ان كـل برنـامج مسئـول عن تنزيـل نوع من الحـزم يحمـل امتداد معين فابمكانك استخـدام apt علي توزيعـه Fedora والاستغناء عن مدير الحـزم الذي ياتي بصوره افتراضيه وهـوyum و لـك كـامل الحـريه في ذلـك ,بينمـا انا اقـصد ان نـوع الحـزم يرجـع الي المستودعـات المخزنـه بهـا الحـزم فالمستودع الخـاص بـ الـRubyGems يحمـل حزم بامتداد gem .
ويعتبـر المستودع الرئيسي الذي يحمـل جميـع الـ Gems المختلفـه هـو موقع RubyForge -في فتره كتابه هـذه المقـاله – حيـث يتـم تحميــل جميــع التطبيقـات والمكتبات المختلفه من رابـط فرعي يتبع الموقـع وهـو RubyGems Repositories ,فعندمـا تقـوم بطلب تطبيق معين يقـوم الـ RubyGems بالبحـث عن ذلـك التطبيق في هـذا المستودع الرئيسي ويرجـع لـك النتـائج سواء ايجـابيه او سلبيـه .
ملحوظـه : بامكانك تغيـر المستودع الرئيسي باي سايت اخـر تريـده وسوف اوضـح ذلـك في مقاله قادمه باذن الله .
من مميـزات الـ RubyGems انـه عندمـا تطلب تطبيق معين يقـوم بعرض اصدارات مختلفـه من نفس التطبيق-اذا توافرت علي السيرفر- سـواء قـديمـه او جـديده وتقـوم باختيار الاصـداره التي تناسبـك من القـائمـه التي امـامـك , ايضـا بـامكان الـ RubyGems ان يحـدد اذا كـان الـ gem الذي قمت بتحميلـه يحتـاج الي gems اخري لكي يعمـل ويقـوم باخبارك اذا كنت تريد ان تقـوم بتحميلهـم ام لا . وتستطيـع بناء الـ gems المختلفه الخـاصه بـك -سـواء كان تطبيق او مكتبه – ومن ثـم تقوم برفعهـا علي الـ RubyForg ليقـوم الجميـع باستخـدامهـا .وكخاتمـه لهـذه المقدمـه البسيطـه استطيـع القـول ان الـ RubyGems يـوفرعليـك عنـاء البحث عن المكتبات والتطبيقـات المختلفه ومن ثـم تركيبهـا علي الجهـاز فهـو يقـوم بكـل ذلك اوتوماتيكـا .
# تثبيت الـ RubyGems #
اولا قبـل تثبيت الـRubyGems يجب عليـك اولا ان تقـوم بتثبيت الـ Ruby ولكن قبـل ان تقوم بعمـل بتثبيت الـ Ruby يجب عليك أن تتاكد من وجود كومبيلر للغه الـ C علي جهـازك واذا لـم تكن تملك فبامكانك تحميـل الـ – gcc – Gnu C Compiler وذلـك عبر كتابه الامر :
sudo apt-get install gcc
وبعـد تنزليـه بـامكانك عمـل عمليه الـ Compile للـ Ruby .
ولفعـل ذلـك اتجــه الي المـوقع الرسمي للغـه من هنـــا
سـوف تجـد الاصداره الاخيـره من اللغه في اعلي الصفحـه -الكـود المصدري Source Code- وتحتهـا كلمـه Stable قـم بتحميلهـا ثم بعد ذلـك قم بتثبيتهـا وذلـك عن طريق فك الضغـط اولا ثـم قم بالدخول الي الديريكتوري بعد فـك ضغـط وقم بعمـل:
configure/.
make
sudo make install
ملحوظـه : بـامكانك استخـدام سطـر الاوامر لتنزيل الـRuby عن طريق كتابه :
– بالنسبه لـ Debian وابنائـه-
sudo apt-get install ruby
ولكـن هـذا الامر لا يضمـن لـك ان تكـون النسخـه في اخـر تحديث لهـا فمن الممكن ان تكـون المستودعـات لا يتوافر بهـا اخر اصداره , لذا نحن نقـوم بالتثبيت من الكـود المصدري لنتاكد انهـا الاصداره الاخيـره من اللغــه .
وبعـد تثبيتـك للـ Ruby بـامكـانك بعـد ذلـك تنزيـل الـ RubyGems وتثبيتهـا ,وذلـك بـ:
* قـم بالدخـول الي صفحـه المشـروع الرئيسيـه من هنــا
* قـم بتحميـل الاصداره الاخيـره للمشروع ,وبعـد تنزيلـه قم بفـك الضغـط وقم بالدخـول الي الديريكتوري بعد فك الضغـط ثم قـم بتنفيذ :
ruby setup.rb
وبعــد التثبيت بنجـاح ودون اي مشـاكل بامكـانك الان استخــدام الـ RubyGems .
ولمعـرفه رقـم اصداره الـ RubyGems المثبته علي جهـازك قـم بكتابه هـذا الامر :
gem --version
او gem -v
وبطبـاعه الامـر:
which gem
تتمكن من معـرفه مكـان الـgems التي يتـم تحميلها الي جهـازك بداخل ملفات النظـام .
ملحوظـه : هـذه المقـاله استخـدم فيها الاصـداره التي تحمـل الـرقم 1.0.1 من الـ RubyGems .
– وكمـا ان لاي Package Management System اوامر كمـا ذكرنـا سابقـا – لتنزيل وحذف وتحديث للبرامج – , فـان الـ RubyGems ايضـا تحتوي علي اوامر للتنزيل وتحديث وحذف الـ Gems وغيرها من الاوامرالمختلفـه .
بالنسبه لاوامر الـ RubyGems المختلفـه ,فهي كثيـره ولكن هنـاك اوامر اساسيـه يحتـاجهـا المستخـدم للاستخـدام الدوري نعـرض بعـض منهـا.
ملحوظـه: بالنسبـه لامر التنزيل والتحديث والحذف والاوامر التي عموما تغير من ملفات الـ System سواء بالاضافه او الحـذف فيجب ان يكون لديك صـلاحيات لذلك لذا يفضل كتابه sudo في بادي الامر يتبعه الامر او ان تدخـل بحساب root .
دائمــا عندمــا نود استخـدام الـ RubyGems فاننا نسبق اي امـر بكلمه gem ثـم نتبعـها بالامر الذي نـود استخدامـه .
* الامـر الخاص بـ التنزيـل install :
gem install name_of_gem
مثـال:
gem install hpricot
النتيجـه:

Bulk updating Gem source index for: http://gems.rubyforge.org
Building native extensions. This could take a while...
Successfully installed hpricot-0.6
1 gem installed
Installing ri documentation for hpricot-0.6...
Installing RDoc documentation for hpricot-0.6...

والنتيجـه هنـا انـه تم تنزيـل الـ gem بنجـاح ,ولكن في حـال ان الـ gem الذي اعتطيت امر بتنزيله غير موجود فسـوف يعطي لـك هـذه النتيجـه :
ERROR: could not find file_name locally or in a repository
وتفيـد هـذه الرسـاله انه لم يتم العثـور علي الgem الذي قمت بكتابه اسمـه .
* الامـر الخـاص بالحذف uninstall :
gem uninstall hpricot
سـوف هـذه النتيجـه اذا تم الحذف بنجـاح :
Successfully uninstalled hpricot-0.6
* الامـر الخـاص بالبحـث search :
gem search rails
النتيجـه :
*** LOCAL GEMS ***
rails 2.0.2
وهـو يعـرض لـك نتيجـه بحثك عن gem معين في الجهـاز فهو يرجع لك اسـم الـ gem اذا كان موجود .
* الامـر update :
gem update
لعمـل تحديث للـ gems الموجوده في جهـازك .
* الامر gem update --system
لعمـل تحديث للـ RubyGems نفسـه لاخـر اصـداره موجوده علي السيرفر .
* الامر cleanup :
gem cleanup
لعمـل حذف لملفات الـgems الاصداره القديمـه بعـد تحديثهـا .
وبالطبـع يمكنك معـرفه جميـع اوامر الـ RubyGems وذلـكعن طريق كتابه gem -h , والتي ستعرض لـك مجموعه من الاوامر منهـا :
gem help commands
والتي تعرض جميع اوامر الـ RubyGems مع نبذه مختصره عن كل واحده منهـا .
وبعـد الحديث في هـذا المقـال المبسـط عن الـ RubyGems قـد يتسال البعض منـا “كيف يمكنني استخـدام الـ gems بعـد تنزيلهـا ؟”
الاجابه بكـل سهـوله هو ان تقـوم باستخـدام العباره require يتبعهـا اسـم الـ gem الذي قمت بتنزيله وكانه مكتبه عاديـه من مكتبات اللغـه , كمـا ساوضـح في المثـال القـادم .
– في البدايه نقـوم بتحميـل المكتبه id3 والتي كمـا ذكرنا سابقـا تعمل علي عرض اسم المغني واسم الالبوم واسم الاغنيه وسنه الانتاج لملف بامتداد Mp3 , وذلك عبر كتابه امر التنزيـل :
sudo gem install id3lib-ruby
وبعـد تنزيل المكتبه بنجـاح نقـوم بكتابه اسكربت صغيـر ليعمـل علي توضيـح كيفيه عمـل تلك المكتبه .
#!/usr/bin/env ruby
require "id3lib"
artist_album = ID3Lib::Tag.new('3.mp3')puts <<-ARTISTArtist--(#{artist_album.artist}) Title--(#{artist_album.title})
Album--(#{artist_album.album}) Year--(#{artist_album.year})
ARTIST
نلاحظ اننـا قمنـا باستدعاء الـمكتبه id3lib باستخدام الامر require في بادي الامـر وكانهـا مكتبه عاديه من مكتبات اللغـه ثـم يليها بعـد ذلـك انشـاء object ثم استدعـاء الدوال مع الامر puts ليعرض لنـا النتيجـه .
– وعندمـا تقـوم بتنزيل الـ gems المختلفه يحمل معهـا اوتوماتيكيا الـDocumentaion الخـاص بهـا او بمعني اخـر يحمل معهـا بينات عن الدوال الموجوده بهـا وامثله لتمكنك من فهم كيفيه عمل تلك المكتبات ,والتي بامكانك عرضهـا وكانها سـايت انترنت امـامك وذلـك عن طريق كتابه الامـر :
gem server
والتي ستقـوم بعمـل سيرفر علي جهـازك للتمكن من عرض الـDocumentaion للـ gems المختلفه الموجوده علي جهازك علي هيئه صفحـه انترنت وذلك عن طريق كتابه هـذا
اللينك في المتصفـح الخاص بـك:http://localhost:8808
وفي نهايـه المقـاله البسيطـه دي اتمني ان اكـون قـد وفقت في توضيـح ما هي الـ RubyGems وجـزء من اوامرهـا الكثيره .
-وبامكانـك الحصـول علي المزيد من اللينكـات التي تخص الموضوع وبعضهـا يحتوي علي بعض المشاكل التي قـد تواجهك مع كيفيه حلهـا وهي :
http://www.rubygems.org/#الموقع الرسمي
http://www.linuxjournal.com/article/8967
http://webnuwan.blogspot.com/2008/01/fixing-broken-rubygems-while-upgrading.html

http://bparanj.blogspot.com/2007/12/upgrading-rubygems-to-101.html

http://blog.jason-palmer.com/blog/2008/01/26/top-five-most-useful-ruby-gems/
http://pupeno.com/2008/02/01/playing-with-ruby/
http://21croissants.blogspot.com/2008/01/update-rubygems-to-latest-version.html
http://www.lunawebs.com/blog/2008/01/31/problems-with-ruby-gems-after-rails-upgrade/
وفي النهايـه انصـح الجميـع بكتاب Apress.Practical.Ruby Gems