اذهب إلى المحتوى

عبدالهادي الديوري

الأعضاء
  • المساهمات

    368
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    22

كل منشورات العضو عبدالهادي الديوري

  1. يُمكن الاعتماد على مُخطّط بيانات الكائنات (object data mappers) لاستخدام الوحدات مع MongoDB في سيناترا. هناك العديد من الـODM المُتوفّرة والتّي تُساعدك على استخدام MongoDB في تطبيق سيناترا. سأسرد في إجابتي هذه بعضا من الـODM ويُمكنك اختيار أحدها والاعتماد عليه. MongoMapperتنصيبه: gem install mongo_mapper# استدعاءه require 'mongo_mapper' #إنشاء فئة النّموذج (Model class) class Link include MongoMapper::Document key :title, String key :link, String end # أنشئ المُوجّه get '/' do @links = Link.all haml :links end Mongoidتنصيبه: gem install mongoid# استدعاءه require 'mongoid' #إنشاء فئة النّموذج (Model class) class Link include Mongoid::Document field :title, :type => String field :link, :type => String end # أنشئ المُوجّه get '/' do @links = Link.all haml :links endCandyتنصيبه: gem install candy # استدعاءه require 'candy' #إنشاء فئة النّموذج (Model class) class Link include Candy::Piece end class Links include Candy::Collection collects :link # Declares the Mongo collection is 'Link' end Link.connection # => Defaults to localhost port 27017 Link.db # => Defaults to your username, or 'candy' if unknown Link.collection # => Defaults to the class name ('Link') # أنشئ المُوجّه get '/' do @links = Links.all haml :links end Mongomaticتنصيبه: gem install mongomatic # استدعاءه require 'mongomatic' #إنشاء فئة النّموذج (Model class) class Link < Mongomatic::Base def validate self.errors.add "title", "blank" if self["title"].blank? self.errors.add "link", "blank" if self["link"].blank? end end # أنشئ المُوجّه get '/' do @links = Link.all haml :links end def validate self.errors.add "name", "blank" if self["name"].blank? self.errors.add "email", "blank" if self["email"].blank? self.errors.add "address.zip", "blank" if (self["address"] || {})["zip"].blank? end MongoODM تنصيبه: gem install mongo_odm # استدعاءه require 'mongo_odm' #إنشاء فئة النّموذج (Model class) class Link include MongoODM::Document field :title field :link end # أنشئ المُوجّه get '/' do @links = Link.find.to_a haml :links end
  2. أولا قم بتنصيب DataMapper على جهازك بالأمر: gem install data_mapperسيأخذ الأمر بعض الوقت لينتهي، بعد التّنصيب يجب أن تستدعيّه في تطبيقك، بالسّطر: وهذا مثال على استخدامه: require 'rubygems' require 'sinatra' require 'data_mapper' DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/blog.db") class Post include DataMapper::Resource property :id, Serial property :title, String property :body, Text property :created_at, DateTime end # استدعي هذا التّابع بعد الانتهاء من إنشاء الوحدات DataMapper.finalize # إنشاء الجدول post Post.auto_upgrade!بعد الانتهاء من الإجراءات أعلاه، أصبح بالإمكان تطوير تطبيقك: get '/' do # get the latest 20 posts @posts = Post.all(:order => [ :id.desc ], :limit => 20) erb :index endفي ملفّ العرض views/index.erb: <% @posts.each do |post| %> <h3><%= post.title %></h3> <p><%= post.body %></p> <% end %>
  3. يُمكن أن تستعمل CouchDB مع تطبيقات سيناترا بالاستعانة بالوحدة CouchRest Model وذلك باتّباع الخطوات التّاليّة. أولا، قم بتنصيب جوهرة couchrest_model بالأمر التّالي: gem install couchrest_modelثّم بعد ذلك يجب عليك استدعاء الجوهرة في ملفّ التّطبيق بالأمر التّالي: require 'couchrest_model'بعد ذلك عيّن معلومات قاعدة البيانات كالتّالي: configure do $COUCH = CouchRest.new ENV["COUCHDB_URL"] $COUCH.default_database = ENV["COUCHDB_DEFAULT_DB"] $COUCHDB = $COUCH.default_database endبعد ذلك أنشئ فئة النّموذج (الفئة Post في هذه الحالة): class Post < CouchRest::Model::Base use_database $COUCHDB property :title, String property :body, String design do view :by_title end endاحصل على البيانات : post '/post' do @post = Post.create :title => params[:title], :body => params[:body] redirect "/posts/#{@post.title}" endابحث وأرجع البيانات: get '/posts/:title' do @posts = Post.by_title(:key => params[:title]) erb :posts endيجب أن يكون ملفّ العرض views/posts.erb كما يلي: <% @posts.each do |post| %> <div> <h1><%= post.title %></h1> <p><%= post.body %></p> </div> <% end %>
  4. أولا يجب أن تقوم بتنصيب جوهرة مع ActiveRecord على جهازك وذلك بالأمر: gem install activerecord وطريقة استعمالها تكون كالتّالي: require 'rubygems' require 'sinatra' require 'active_record' ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', :database => 'sinatra_application.sqlite3.db' )في الشيفرة أعلاه، قمنا باستدعاء كل من الجواهر rubygems و sinatra و active_record، ثمّ قُمنا بالاتّصال بقاعدة البيانات sqlite3، عبر ملفّ sinatra_application.sqlite3.db إليك مثال على طريقة العمل، ستلاحظ أنّها نفسها طريقة العمل في ريلز: class Post < ActiveRecord::Base end get '/' do @posts = Post.all() erb :index end مع ملاحظة أنّ جدول posts يجب أن يكون مُتواجدا بقاعدة بيانات التّطبيق. ويُمكن العمل مع ActiveRecord في ملفّات العرض على النّحو التّالي: <% @posts.each do |post| %> <h1><%= post.title %></h1> <% end %>
  5. يُمكن الحصول على النّتيجة المرغوبة بعدّة طرق منها: 1. استعمال التّابع size.times.with_object مع جملة شرطيّة كالتّالي: a.size.times.with_object([]) { |i,b| b << i if a[i] < 21 } 2. استعمال size.times.map: a.size.times.map { |i| a[i] < 21 ? i : nil }.compact 3. استعمال التّابع zip: a.zip( Array(0...a.size) ).select { |e,_| e < 21 }.map(&:last) 4. استعمال التّابع reduce a.reduce([[],0]) { |(b,i),e| [e < 21 ? b << i : b, i + 1] }.first 5. استخدام each_with_object a.each_with_object([]) {|e,a| a << (e.to_i < 21 ? a.size : nil) }.compact 6. استخدام التّعابير القيّاسية مع توابع المصفوفات: a.join(',').gsub(/(\d+)/) { |e| (e.to_i < 21) ? $`.count(',') : nil } \ .gsub(',,',',').split(',').map(&:to_i) جميع الطّرق أعلاه ترجع نفس القيمة: [0, 1, 3, 4, 5]
  6. يُمكن استخدام CoffeeScript مع تطبيقات سيناترا وذلك باتّباع الخطوات التّاليّة: أوّلا يجب عليك تنصيب الجوهرة "coffee-script” لكي تستدعيّها في تطبيقك، ولتنصيبها نفّذ الأمر التّالي في الطّرفيّة: gem install coffee-script إذا كان مُخرج الأمر كالتّالي: Successfully installed coffee-script-2.4.1 Parsing documentation for coffee-script-2.4.1 Installing ri documentation for coffee-script-2.4.1 Done installing documentation for coffee-script after 0 seconds 1 gem installedفقد نُصّبت الجوهرة بنجاح. بعد تنصيب الجوهرة "coffee-script” يُمكن استدعاءها في ملفّات تطبيق سيناترا بالسّطر التّالي: require 'coffee-script' ولاستدعاء ملفّ coffee-script عليك بكتابة ما يلي: get '/application.js' do coffee :application endالشّيفرة أعلاه تُقدّم الملفّ application.coffee داخل مجلّد views: ./views/application.coffee إذا واجهتك أي مشاكل فتأكّد من أنّ Nodejs منصّب على جهازك، إذا لم يكن الأمر كذلك فعليك بتنصيبه بالطّريقة التّالية حسب نظام التّشغيل لديك: Ubuntu : sudo apt-get install nodejs التّوزيعات التّي تستخدم مدير الحزم yum: yum -y install nodejs قد تحتاج أيضا إلى جوهرة therubyracer ولتنصيبها يكفي تنفيذ الأمر التّالي: gem install therubyracer
  7. يُمكن حذف نسخة مُعيّنة من جوهرة روبي بالأمر : gem uninstall minitest --version 5.4.3 ويُمكن لك كذلك أن تحذف جميع النّسخ الأقدم من نسخة ما بالعامل > . gem uninstall minitest --version '<5.8.2' ويُمكن كذلك أن تحذف جميع النّسخ القديمة والإبقاء على أحدث نُسخة بالأمر: gem cleanup minitest إذا أردت أن تقوم بحذف جميع النّسخ القديمة لجميع الجواهر المُثبّتة، فيُمكنك الاستعانة بالأمر: gem cleanup --dryrun
  8. يُمكن أن تنشئ وحدة ثمّ تقوم باستدعائها في ملفّات روبي داخل نفس المُجلّد. مثلا لنفرض أنّك ترغب بالحصول على رقم الإصدار في ملفّ y.rb. يجب عليك إنشاء وحدة داخل الملفّ x.rb ثمّ بعد ذلك تقوم باستدعائها في الملفّ y.rb، بحيث مُحتويات الملفّ x.rb : module X VERSION = "1.0.0" endمُحتويات الملفّ y.rb : require_relative 'x' module X puts VERSION endلا حظ بأنّنا استعنّا بـrequire_relative للاستدعاء. مُخرجات الملفّ y.rb: 1.0.0
  9. التّواصل المُباشر مع العملاء من أهمّ الوسائل المُساعدة على إخراج منتجٍ جيّد، فالتّواصل المُباشر ليس كاستطلاع للرأي، ففي استطلاعات الرأي يكون العميل مُقيّدا بالإجابة على أسئلة مُحدّدة فقط، أما التّواصل المُباشر فيترك للعميل كامل الحريّة للحديث حول المُنتج كيفما شاء، ويُمكن له ذكر ما يروقه في المنتج وما لا يُعجبه، أمّا طرق التّواصل فمتعدّدة وأفضلها الهاتف والبريد الإلكتروني، ومن المُفضّل وضع جدول للأوقات التّي تكون فيها مُتوفّرا، فمثلا يُمكنك إرسال رسالة إلى جميع عملائك وإخبارهم بنيّتك في التواصل معهم مُباشرة بحيث تمنح بضع دقائق من التّواصل لكل عميل، لا تعطهم الكثير من الأسئلة ومن المُفضّل أن لا تكون أسئلة يُمكن الإجابة عليها بنعم أو لا. حاول تغطية أكبر عدد ممكن من المواضيع في كلّ جلسة، اكتب ملاحظاتك في ورقة أو على هاتفك بحيث يكون الوصول إليها سهلا. ولا تنس أن تشكر العملاء على الوقت الذي منحوه لك، وأخبرهم بأنّك سعيد بالتّواصل معهم.
  10. إنّ للتواصل مع العملاء أهمية كبيرة جدّا، فبه تدرس مدى سعادة العملاء باستخدام منتجك، ويُساعد التّواصل على توطيد العلاقات ويُعرّف على الجوانب اللازم تعديلها وتطويرها للحصول على منتج أفضل، فمثلا إن كنت تمتلك مُنتجا عبارة عن تطبيق فسيساعدك التّواصل مع العملاء على التّعرف على أخطاء (Bugs) لم تكن على علم بها، إمّا لأنّ الدّعم الفنّي لا يقوم بعمله على أكمل وجه أو لأنّ أحدا لم يُبلّغ عنها، وسيخبرك عملاءك عمّا يروق لهم لكي تقوم بدراسته جيّدا ومعرفة الجوانب التّي يحبّونها في مُنتجاتك، وكيف سيكون مُنتجك التّالي إن كنت تُفكّر في الأمر، كما سيُخبرك العملاء بما يُزعجهم في مُنتجك لتعديله وإزالة كلّ العوائق التّي تمنع العملاء من الحصول على تجربة مُستخدم جيّدة.
  11. يحتفظ git بجميع الملفّات في مُجلّد مخفي باسم .git إذا قُمت بحذف ذلك المجلّد فستتمكّن من حذف كامل المُستودع. إلا أنك لن تتمكن من إيجاده، لأنّه مخفي لذلك عليك اتّباع الخطوات التّاليّة في نظام Windows لإظهاره أولًا: Organize > Folder and search options, > View > Show hidden files, folders and drives أمّا في نظام لينكس فيُمكنك ببساطة الضّغط على تركيبة المفاتيح Ctrl+h لإظهار الملفّات المخفيّة. بعد أن تجد المجلّد يكفي أن تقوم بحذفه. أمّا إذا أردت أن تقوم بالأمر من الطّرفيّة على لينكس فيُمكنك تنفيذ الأمر التّالي، فقط تأكّد من أنّ سطر الأوامر في نفس مجلّد المشروع الذي أنشأت به المُستودع: rm -rf .git
  12. يُمكن تعليق عدّة أسطر بتظليل أوّل كلّ سطر بنمط -- VISUAL BLOCK -- وذلك بالضّغط على Ctrl+V ثمّ الضّغط على الأسهم أعلى-أسفل بحيث يُظلّل أول حرف فقط من كل سطر. بعد ذلك اتّبع الخطوات التّاليّة: - اضغط على Shift+I - اضغط على رمز التّعليق (الرّمز # في حالة بايثون) - اضغط على الزرّ ESC أمّا لإزالة التّعليقات والعودة إلى الشيفرة العاديّة. ادخل مُجدّدا لنمط -- VISUAL BLOCK -- وذلك بالضّغط على Ctrl+V ثمّ الضّغط على الأسهم أعلى-أسفل بحيث يُظلّل رمز التّعليق. - اضغط على x أو d لإزالة الرّموز.
  13. يُمكن إضافة تعليقات في ملفّات ماركداون باتّباع الطريقة التّقليديّة للتعليقات في ملفّات HTML كالتّالي: <!--- التّعليقات هنا هذا التّعليق مُتجاهل ولا يُمكن أن يظهر في الصّفحات -->إذا أردت أن تكتب تعليقا لا يُمكن قراءته حتى ولو بعد فحص مصدر صفحة HTML، فيُمكنك أن تقوم بذلك عبر وضع التّعليق مكان رابط URL، انظر المثال التّالي: [comment]: <> (هذا تعليق لا يُمكن أن تُشاهده في صفحة HTML) [c]: # (هذا أيضا تعليق لا يُظهر في الـHTML) [comment]: <> (a reference style link.) يُمكن كذلك وضع التّعليق داخل وسم HTML وتعطيل عرضه باستخدام CSS كالتّالي: .comment { display: none; }ولكتابة التّعليق، كلّ ما عليك فعله هو كتابته داخل وسم بالفئة "comment”. <p class="comment"> هنا تعليق في ملفّ ماركداون يُمكن كتابته في عدّة أسطر </p> يُمكن إضافة تعليقات في ملفّات ماركداون باتّباع الطريقة التّقليديّة للتعليقات في ملفّات HTML كالتّالي: <!--- التّعليقات هنا هذا التّعليق مُتجاهل ولا يُمكن أن يظهر في الصّفحات -->إذا أردت أن تكتب تعليقا لا يُمكن قراءته حتى ولو بعد فحص مصدر صفحة HTML، فيُمكنك أن تقوم بذلك عبر وضع التّعليق مكان رابط URL، انظر المثال التّالي: [comment]: <> (هذا تعليق لا يُمكن أن تُشاهده في صفحة HTML) [c]: # (هذا أيضا تعليق لا يُظهر في الـHTML) [comment]: <> (a reference style link.) يُمكن كذلك وضع التّعليق داخل وسم HTML وتعطيل عرضه باستخدام CSS كالتّالي: .comment { display: none; }ولكتابة التّعليق، كلّ ما عليك فعله هو كتابته داخل وسم بالفئة "comment”. <p class="comment"> هنا تعليق في ملفّ ماركداون يُمكن كتابته في عدّة أسطر </p>
  14. أولا عليك أن تدوّن جميع الأفكار في مكان ما سواء على ورقة أو على هاتفك. ويجبُ أن تعلم بأنه ليست جميع الأفكار قابلة للتّطبيق، لذلك فعليك أن تُحاول جمع الأفكار التّي تراها غير جيّدة كفاية في ورقة وتُحدّد طريقة للجمع بين فكرتين أو أكثر وتحويلها لمقال واحد، إذا لم تكن تملك الخبرة الكافيّة لفعل ذلك فعليك أن تبحث جيّدا سواء في مصادر عربيّة في نفس مجالك، أو اطّلع على المصادر الأجنبيّة وهذا ما أنصح به لغنى هذه الأخيرة وامتلائها بالمعلومات. لا حرج في التّخلّص من بعض الأفكار التي تراها غير ملائمة.
  15. التّعليقات في البرمجة مهمّة جدّا، والحرص على شرح الشيفرات التّي تكتبها من صفات المُبرمجين ذوي الخبرة، فقط احرص على ألّا تُفرط في كتابة التّعليقات بحيث يصعب التّمييز بينها وبين الشيفرة ذاتها. هناك العديد من الطّرق لكتابة التّعليقات في لغة روبي، أكثرها شيوعا كتابة التّعليق بعد علامة #: #هذا تعليق مُتجاهل، لا يؤثّر على عمل البرنامج puts 'Hello World!' ويُمكنك تكرار العمليّة كلّما أردت أن تكتب المزيد من الأسطر: #هذا تعليق مُتجاهل، لا يؤثّر على عمل البرنامج #هذا تعليق مُتجاهل، لا يؤثّر على عمل البرنامج #هذا تعليق مُتجاهل، لا يؤثّر على عمل البرنامج puts 'Hello World!'تُعتبر الطّريقة أعلاه مُتعبة قليلا، خاصّة إذا كُنت تمتلك العديد من الأقوال لوضعها في تعليقاتك. لذلك يُمكنك الاعتماد على الطّريقة التّالية لكتابة تعليقات مُتعدّدة الأسطر، ولكن تذكر بأنّ الطّريقة تعمل فقط إذا وضعت التّعليق في بداية البرنامج وستحصل على خطأ في حال وضعت التّعليق وسط البرنامج: =begin هذا النوع من التّعليقات خاص ببداية البرنامج وسيعطي خطأ إذا حاولت وضعه في وسط الشّيفرة =end لكن لا تقلق يُمكنك أن تضع تعليقات وسط البرنامج دون أخطاء ودون الحاجة لكتابة العلامة # كلّ مرّة، وإليك الطّريقة الأكثر استعمالا: <←DOC هذا النّوع من التّعليقات لا يسبّب أي مشاكل ويُمكنك أن تكتبه في أكثر من سطر DOC puts "Hello world!" هذه طريقة أخرى للتّعليق: " هذا النّوع من التّعليقات لا يسبّب أي مشاكل ويُمكنك أن تكتبه في أكثر من سطر " puts "Hello world!"
  16. الطّريقة التّقليديّة لكتابة التّعليقات في باثون تكون بكتابتها بعد العلامة "#”، وأمّا إن أردت أن تكتب تعليقات مُتعدّدة في عدّة أسطر فيُمكن اتّباع الطّريقة التّالية: # التّعليق الأول في السّطر الأول # التّعليق الثّاني في السّطر الثّاني # التّعليق الثّالث في السّطر الثّالث print "Hello world!"لكن فكّر في الأمر، إنّه مُتعب أليس كذلك، لكن لا تقلق يُمكن تجنّب كتابة العلامة # قبل كلّ سطر، وذلك بكتابة التعليق مُحاطا بثلاث علامات تنصيص ''' أو "””. ''' يُمكن كتابة تعليق مُتعدّد الأسطر دون الإضطرار إلى كتابة كلّ سطر على حدى فقط أكتب التّعليقات داخل علامات تنصيص ثلاث. بسيط أليس كذلك؟ ''' print Hello
  17. يُمكن لك أن تجد المُستقلّين الذين يُمكن أن تتعاون معهم بعدّة طرق أهمّها: - مواقع التوظيف عن بعد مثل موقع مُستقل، فإذا افترضنا بأنّك مُصمّم مستقل يرغب في تسويق أعماله بمُساعدة مُدوّن مُستقل، فابحث أوّلا عن الشّخص المناسب للأمر، ويُمكن اختيّار الشخص بناء على تقييمه وأخلاقه، فبعد أن تجد المُستقل الذي ترغب في التّعاون معه يُمكنك توظيفه لمُساعدتك في شيء ما ككتابة تدوينة عنك في مُدونّته كطريقة للتّرويج لك، وعند انتهاء المشروع يُمكنك أن تقترح عليه فكرة التّعاون بينكما وما سيحصل عليه كلّ منكما من فوائد. - مواقع التّواصل الاجتماعي، يُمكنك أن تجد كذلك كمّا هائلاً من المُستقلّين على مواقع التّواصل سواء في تجمّعات خاصّة أو في مجموعات عامّة، والخطوة الأولى للحصول على موافقة المُستقلّ تكمن في مراسلته واقتراح الفكرة مع شرحها شرحا تامّا ويُمكن أيضاً أن تشارك الجميع فكرتك علّها تلقى استحسان الآخرين. - موقع حسوب I/O: يحتوي هذا الموقع الخاص بالنّقاشات والمشاركات الهادفة على أعضاء يعدّون من خيرة المُستقلّين العرب ، كما يعتبر هذا الموقع منجماً للموهوبين الذين لا يزالون ينتظرون فرصة للبدء في العمل الحر، فإن أعجبتك أخلاق ومهارات أحد الأعضاء فلا تتردّد في اقتراح فكرة التّعاون معه.
  18. أفترض بأنّ هناك حالتان لرفضك العرض. إمّا أن المقابل المالي لم يُعجبك أو أنّ الوقت لا يكفيك للقيّام بالعمل. 1/ فإذا كان المبلغ المعروض قليل ولم يعجبك، إليك بعض النّصائح قبل رفض العمل: - حاول التّفاوض، واشرح للعميل بأنّك لا تستطيع أداء هذه المُهمّة مقابل المبلغ المذكور، حاول اقتراح المبلغ الذي يناسبك مع الحرص على تذكيره بأنّ الأمر يخصّ العرض فقط وأنّ الرفض لا يعني عدم الرغبة في العمل معه مجدّداً. - حاول الاعتذار بأسلوب لائق عن القيّام بالعمل في حالة لم يقبل العميل بدفع الثمن الذي حدّدته. 2/ أما إذا لم يُناسبك العرض بسبب ما يتوقّعه العميل كمدّة لإنجاز العمل، فعليك شرح جميع التّفاصيل له ومن المُفضّل تقسيم التّفاصيل إلى أجزاء وتحديد وقت مُتوقّع لإنهاء كل جزء، أمّا إن كان يُصرّ على المُدّة التّي حدّدها فانصحه بالحذر من المُستقلين الذين يقدّمون وقتاً قصيرا جدّا لإنهاء هكذا مشروع، فقد يحصل بالمُقابل على عمل ذو جودة سيّئة، فمثلا إن كنت تعلمُ يقينا بأنّ العمل سيتطلب شهرا - مع مراعاة الوقت الذّي تستغرقه الالتزامات اليوميّة، ومن المُفضّل افتراض أنّ المُستقل لديه وقت فراغ ويستطيع العمل لأكثر من 6 ساعات يوميّا- وأعلَمَكَ العميل بأنّ أحد المُستقلّين قد عرض عليه أداء العمل في أقلّ من أسبوعين مثلا، فمن واجبك أن تُحذر العميل في هذه الحالة وبما أنّه عميل دائم فسيتفهّم الأمر.
  19. لا شكّ أنّك قارنت بين آخر الإصدارات من كلّ من لغة روبي ولغة بايثون، وهذا خطأ، فالمقولة التّي ذكرتها صحيحة فقط إذا عدنا إلى سنة 1993 وهي السّنة التّي فكّر فيها ماتز بإنشاء لغة روبي وقارنّا بين لغة بايثون في ذلك الوقت مع أي لغة كائنية التوجه، ستجد العديد من العيوب بايثون، لكنّ الأمر لم يعد صحيحا في أيّامنا هذه، فقد تطوّرت لغة بايثون لتُصبح من بين أفضل اللغات التي تعتمد على نظام البرمجة كائنيّة التوجه. يُمكن أن تقارن بين بايثون وروبي من حيث الدّوال والتّوابع فمثلا التّابع .length في لغة روبي يُطبّق على الكائنات بطريقة أفضل من طريقة تطبيق الدّالة len() في بايثون، لكن رغم ذلك فالشيء نفسه يحدث على مُستوى التّفسير. خلاصة الأمر أنّ لغة بايثون أصبحت الآن أفضل بكثير من ناحيّة البرمجة كائنيّة التوجه ولا يُمكن المُقارنة بينها وبين روبي أو القول بأنّ واحدة أفضل من الأخرى. ففي النّهاية لكلّ منّا ذوقه في اختيّار اللغة التّي تُناسبه
  20. من الطّبيعي أن تُفسّر العلامات "<%>" لأنّها أساس كتابة شيفرات روبي في ملفّات erb ولا يُمكن توقّع العكس أبدا، ويُمكنك أن تعرض العلامات <%> بدون أن تُفسّر بوضعها داخل علامتي تنصيص بداخل جملة العرض <=%>: هنا نقوم بعرض جملة مرحبا بالعالم داخل ملفّ erb <%= '<%= مرحبا بالعالم %>' %> أو يُمكنك أن تعتمد على الرمزين "&lt;” و "&gt” لعرض الرّمزين < و > في العرض الخاص بالـHTML : هنا نقوم بعرض جملة مرحبا بالعالم داخل ملفّ erb <%= '&lt;%= مرحبا بالعالم %&gt' %>
  21. يُمكن كتابة تعليق في سطر واحد بالعلامة # تماما كما في ملفّات ruby (.rb)، والفرق هنا أنّها تكون مُحاطة بعلامتي <% %>. إليك هذا المثال: <%# هذا تعليق داخل ملفّ %>أمّا إذا أردت أن تكتب العديد من الأسطر في التّعليق، فالطّريقة الأفضل تكون باستعمال جملة if مع الشّرط false بحيث لا تؤثّر التّعليقات على عمل الشّيفرة: <% if false %> هذا تعليق داخل ملفّ هذا تعليق داخل ملفّ هذا تعليق داخل ملفّ هذا تعليق داخل ملفّ <% end %> مع ملاحظة أنّك تستطيع التّعليق على الملفّات التّي تحتوي على شيفرات HTML بالطريقة الاعتيّاديّة: <!--التّعليق هنا-->وعليك أن تحرص على أن تكون التّعليقات مُفيدة وملخصة لكي لا تُشتّتك عن الشّيفرات، كما يُستحسن استعمال مُحرّر يلوّن الشّيفرات لتظهر التّعليقات مفصولة عن غيرها.
  22. في الإصدار الثّاني (روبي 2.0 ) أصبح بالإمكان كتابة سلاسل نصيّة متعدّدة الأسطر بعلامة النّسبة المئويّة ثم كتابة الأسطر داخل علامتي {}، انظر المثال: var = %{ SELECT user, name FROM users WHERE users.id = user_id } print varأنشئنا في السطر أعلاه مُتغيّرا يحمل قيمة نصيّة مُتعدّدة الأسطر، بحيث سيكون المُخرج عند طباعة المُتغيّر نفس الشيء: SELECT user, name FROM users WHERE users.id = user_idمع ملاحظة أنّك تستطيع تنظيم طريقة إنشاء السلاسل النصيّة التّي تعتمد عليها بالرجوع إلى السّطر بعد الرّمز \n : var = "SELECT user, name \nFROM users \nWHERE users.id = user_id”
  23. يُمكنك الاعتماد على each للدّوران على مكوّنات المجلّد باستعمال Dir مع تمرير قيمة بين علامتي [] تكون عبارة عن مسار الملف: Dir['/home/user/folder/*'].each do |filename| # يُمكنك اجراء مختلف العمليّات على جميع الملفّات في هذا المجلّد. endمع تغيير القيمة "user" إلى اسم المُستخدم الخاص بك، مثلا إذا كنت ترغب بعرض أسماء الملفّات، فيُمكنك الاستعانة بـ puts: Dir['/home/user/folder/*'].each do |filename| puts filename endالأمر السّابق سيعرض جميع أسماء الملفّات مهما كان عددها وامتدادها، وفي حالتك سيكون المخرج: 1.txt 2.txt 3.txt 4.txt
  24. يُمكنك الحصول على اسم الملف دون امتداده باستعمال File.basename، الذي يقوم بإرجاع آخر مكّون من مسار الملف (وهو اسم الملف مع الامتداد) ويُمكن حذف الامتداد بتمريره كقيمة نصيّة مكان العامل الثّاني: # إرجاع اسم الملفّ مع امتداده File.basename("/home/aati/a.txt") #=> "a.txt" #ارجاع اسم الملف دون امتداد File.basename("/home/aati/a.txt", ".rb") #=> "a"يُمكنك القيام بُمختلف العمليّات على الملفّ بعد حصولك على اسمه (مع امتداده طبعا) كالقراءة والكتابة عليه. استثناء لمُستخدمي نظام Windows: تُستخدم File.basename كالتّالي: File.basename("C:\\Folder\\file.txt", ".txt") #=> "file"
  25. يُمكنك معرفة الأوقات التّي تحتاج إلى الجدّ وأوقات المزاح بطرق عديدة: - الفرز بين العملاء الودودين والعملاء الصّارمين، حلّل شخصيّة العميل، فغالبا ما يكون العميل الودود سبّاقاً إلى المزاح وقد تظهر لك شخصيّته في بداية العمل، وهذا النوع من العملاء عادة ما يتقبّل المزاح ما لم يزد عن حدّه، فمثلا يُمكن أن ترميّ كلمة عاميّة بين الحين والآخر، ويُمكن أن ترسل له مزحة تتعلّق بالمشروع كذلك، وخذ التّصميم كمثال على ذلك، فقد يطلب منك العميل إنجاز تصميم ما، ويُمكنك أن ترفق له تصميمين واحد جديّاً والآخر بغرض المزاح. أمّا إذا كان العميل من النّوع الذي يُحبّ البقاء في دائرة الجدّ فحاول أن تُسيطر على رغبتك في المزاح وتُقلّل منه قدر المُستطاع، وهذا لا يمنع كلمات رقيقة على سبيل المزاح بين الحين والآخر، فإن لاحظت بأنّ العميل لا يحبّ مزاحك فتوقف عنه وركّز في مهامك وأخبره بسير المشروع بجديّة تامّة. - لا تمزح عندما تواجهك مشكلة ما تعيق سير المشروع، ففي حال حدوث أي مُشكلة فإنّ الغالب هو استيّاء العميل وتعكّر مزاجه، ولأنّك لن تستطيع رؤية ملامح وجهه فلن تتمكّن من معرفة الأمر، لذلك فمن الأفضل أن تضع المُزاح جانباً وتركّز على حلّ المُشكلة. الخلاصة أن تحرص على المُزاح في أوقات قليلة بحيث يغلب الجدّ على تواصلكما، وأن لا تمسّ بمزاحك العميل بأي إساءة.
×
×
  • أضف...