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

لوحة المتصدرين

  1. Nabil Tayeh

    Nabil Tayeh

    الأعضاء


    • نقاط

      4

    • المساهمات

      421


  2. ايناس زيد

    ايناس زيد

    الأعضاء


    • نقاط

      2

    • المساهمات

      25


  3. محمد هاني صباغ

    • نقاط

      2

    • المساهمات

      95


  4. Youssef Mohamed5

    Youssef Mohamed5

    الأعضاء


    • نقاط

      2

    • المساهمات

      77


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 04/30/20 في كل الموقع

  1. تقدمت على عروض بسعر مناسب لكن هذه العروض لم يتم الموافقة عليها وهي الان معلقة لاكثر من اسبوع ونصف والان لا استطيع التقدم لعروض ما الحل 10عروض معلقة هل يمكنني الغاء العروض
    1 نقطة
  2. كذلك جميع الصور على هذا الموقع ليس لها حقوق ملكية وبإمكانك إستخدامها. https://unsplash.com
    1 نقطة
  3. هذه الطريقة يستخدمها اليوتيوبرز وصانعي المحتوى في إستخدام صور غير مخالفة.
    1 نقطة
  4. لا يمكنك إلغاء العروض وعليك الإنتظار إلى أن يتم إعطائها لأحد المستقلين أو يتم إغلاقها من قبل أصحابها.
    1 نقطة
  5. السلام عليكم ليس هناك قاعدة ثابتة لتصميم لوحة التحكم الخاصة بإدارة التطبيق, إنما بشكل عام بعد تصميم الواجهة الرئيسية لتسجيل الدخول يفضل أن يكون هناك Dashboard فيها إحصائيات عامة تظهر بالأرقام عدد الإبلاغات والأعضاء الجدد والرسائل الغير مقرؤة بعد نجاح عملية الدخول مباشرة أيضا بالنقر على أي واحدة منها التوجه مباشرة للقسم الخاص بها. أيضا يفضل أن يكون بجانب الأزرار بالقائمة الرئيسية عدد السجلات الجديدة, ليسهل عليك مراقبة التطبيق. كذلك أن تكون هناك فلترة للمحتوى بكل قسم حسب عدة معايير مثل الجنس, الدولة, المدينة, العمر, الإسم. كل قسم يحتوى على إمكانية تفعيل وتعطيل المحتوى إن أمكن. من قسم الإشعارات إمكانية إرسال إشعار لكل مستخدمي التطبيق أو لفئة معينة. من قسم المستخدمين بالإمكان إرسال إشعار لشخص معين. أن يكون هناك جدول في قاعدة البيانات تخزن فيه جميع الأقسام, وجدول آخر لتخزين صلاحيات كل مستخدم, وعمل Function تظهر الأزرار الخاصة بكل مستخدم حسب الصلاحيات المخولة له. مرفق هنا أيضا مجموعة من الصور لبعض أقسام لوحة التحكم
    1 نقطة
  6. أسعد الله أوقاتك و رمضان مبارك يمكنك تحميل الصور من البرنامج و تحميلها لا تخالف سياسة اليوتيوب من حيث حقوق الملكية , و لكن يجب أن يكون التعليق الصوتي أو الموسيقى المستخدمة خاصة فيك ولا تحمل حقوق الملكية .
    1 نقطة
  7. وعليكم السلام Class Diagram نتعلمه لمعرفة بناء نظام كامل و معرفة جميع العلاقات الموجودة في النظام , سواء كانت inheritance أو غيرها. توفر أكاديمية حسوب العديد من المصادر التعليمية يمكنك تصفحها: وهنا رابط لشرح الوراثة : https://harmash.com/java/java-inheritance/
    1 نقطة
  8. السلام عليكم أخ فادي، رمضان مبارك، بالتأكيد .. وظيفة الجرافيك ديزاين جدا جدا مطلوبه في عصرنا الحالي مع تطور التكنولوجيا و السوشل ميديا أصبح كل شركة أيا كان مجالها تحتاج الى مصمم جرافيك ليقوم بجميع الأعمال الخاصة بتفعيل الهوية البصرية للشركة ،، سواءً مطبوعات، موقع الكتروني، لوح خارجية، منصات التواصل الاجتماعي،، وكثيير من الاعمال التي يقوم بها مصمم الجرافيك. يتيح لك أيضا هذا لاتخصص الفرصه بالعمل كمستقل سواء على مشاريع لشركات عن بعد.. أو تصميمك لمنتج وبيعه في المواقع. مجالات هذا التخصص جدا كثيره ولكن لا ننسى انه تخصص يتطلب الاتطلاع المستمر و التطوير المستمر لبرامج التصميم و كل ماهو جديد في عالم التصاميم. من واقع تجربه ... انصح به الأشخاص الذين يحبون التصميم وعندهم صبر عالي لأنه يحتاج الكثير من الوقت والجهد.
    1 نقطة
  9. مكتبه الffmpeg الحل الافضل لبرمجه برنامج مثل البرامج المذكوره الffmpeg تم تطويرها بلغه C ولغه C++ هي تطوير للغه C وبالتالي يمكنك تطوير وإنشاء برامج تستخدم مكتبه الffmpeg لتحرير وانشاء الصوت والصوره بلغه C++ مكتبه الffmpeg خاصه بالStream فقط وليس لها علاقه بالواجه الرسوميه
    1 نقطة
  10. للاسف يا فادي المجال الخاص بالجرافيك ديزاين في طريقة للانحسار بسبب تطور الخدمات الالكترونية مثل Canva وغيرهم، سيظل دور المصمم موجود لكن العديد من المجالات هيبقي الكلاينت بنفسه قادر علي صنعها
    1 نقطة
  11. اهلا وسهلا بحضرتك استاذ فادي اصبح الان كل شخص يقوم بفتح متجر على الانترنت او محل او نشاط ما على ارض الواقع يحتاج الى من مطبعه على ارض الواقع او شخص يصمم له البنرات والاعلانات والبروشورات وكروت شخصيه مثلا واسم للنشاط الخاص به تخيل فقط في مدينتك كام مشروع يفتح جديد وكام شاب يحاول عمل مشروع له على الانترنت لو حابب تبدأ فعلا فى المجال دا عليه بالتعلم والبحث عن الدروس والفيديوهات والتطبيق المستمر واولا واخر الصبر ثم الصبر ولا تمل فانت ستتعلم وستظل تتعلم طول حياتك فى هذا المجال ولا سقف له ابدأ بعد ذاللك فى انشاء معرض لأعمالك الخاصه بك بعد الاطلاع على كثير من معارض المصمميم وتبدأ فى العمل واتمني لك التوفيق اخي
    1 نقطة
  12. السلام عليكم شكرا على الشرح تفعيل ميزة HAXM التي تأتي مع معالجات Intel، اين يمكن تفعيلها من فضلك
    1 نقطة
  13. sinatra من أطر العمل التي لا تلقى إقبالاً كبيراً في العالم العربي مع الأسف، لكن كمثيلتها Rails المبرمجة بلغة روبي، حيث يمكننا تشغيل التطبيق المبرمج بـ sinatra عن طريق الأمر التالي: thin -R config.ru start # قبل إنشاء المشروع ننفذ الأمر التالي monk add riblits git://github.com/Phrogz/riblits.git #داخل الملف الفارغ المنشأ monk init -s riblitsملف الواجهة: config.ru app.rb helpers/ init.rb partials.rb models/ init.rb user.rb routes/ init.rb login.rb main.rb views/ layout.haml login.haml main.hamlconfig.ru: root = ::File.dirname(__FILE__) require ::File.join( root, 'app' ) run MyApp.newapp.rb: # encoding: utf-8 require 'sinatra' require 'haml' class MyApp < Sinatra::Application enable :sessions configure :production do set :haml, { :ugly=>true } set :clean_trace, true end configure :development do # ... end helpers do include Rack::Utils alias_method :h, :escape_html end end require_relative 'models/init' require_relative 'helpers/init' require_relative 'routes/init' helpers/init.rb: # encoding: utf-8 require_relative 'partials' MyApp.helpers PartialPartials require_relative 'nicebytes' MyApp.helpers NiceByteshelpers/partials.rb: # encoding: utf-8 module PartialPartials def spoof_request(uri,env_modifications={}) call(env.merge("PATH_INFO" => uri).merge(env_modifications)).last.join end def partial( page, variables={} ) haml page, {layout:false}, variables end endhelpers/nicebytes.rb: # encoding: utf-8 module NiceBytes K = 2.0**10 M = 2.0**20 G = 2.0**30 T = 2.0**40 def nice_bytes( bytes, max_digits=3 ) value, suffix, precision = case bytes when 0...K [ bytes, 'B', 0 ] else value, suffix = case bytes when K...M then [ bytes / K, 'kiB' ] when M...G then [ bytes / M, 'MiB' ] when G...T then [ bytes / G, 'GiB' ] else [ bytes / T, 'TiB' ] end used_digits = case value when 0...10 then 1 when 10...100 then 2 when 100...1000 then 3 else 4 end leftover_digits = max_digits - used_digits [ value, suffix, leftover_digits > 0 ? leftover_digits : 0 ] end "%.#{precision}f#{suffix}" % value end module_function :nice_bytes # Allow NiceBytes.nice_bytes outside of Sinatra endmodels/init.rb: # encoding: utf-8 require 'sequel' DB = Sequel.postgres 'dbname', user:'bduser', password:'dbpass', host:'localhost' DB << "SET CLIENT_ENCODING TO 'UTF8';" require_relative 'users'models/user.rb: # encoding: utf-8 class User < Sequel::Model # ... endroutes/init.rb: # encoding: utf-8 require_relative 'login' require_relative 'main'routes/login.rb: # encoding: utf-8 class MyApp < Sinatra::Application get "/login" do @title = "Login" haml :login end post "/login" do # Define your own check_login if user = check_login session[ :user ] = user.pk redirect '/' else redirect '/login' end end get "/logout" do session[:user] = session[:pass] = nil redirect '/' end end routes/main.rb: # encoding: utf-8 class MyApp < Sinatra::Application get "/" do @title = "Welcome to MyApp" haml :main end endviews/layout.haml: !!! XML !!! 1.1 %html(xmlns="http://www.w3.org/1999/xhtml") %head %title= @title %link(rel="icon" type="image/png" href="/favicon.png") %meta(http-equiv="X-UA-Compatible" content="IE=8") %meta(http-equiv="Content-Script-Type" content="text/javascript" ) %meta(http-equiv="Content-Style-Type" content="text/css" ) %meta(http-equiv="Content-Type" content="text/html; charset=utf-8" ) %meta(http-equiv="expires" content="0" ) %meta(name="author" content="MeWho") %body{id:@action} %h1= @title #content= yield
    1 نقطة
  14. مقدّمةChef هو عبارة عن أداة مفتوحة المصدر مكتوبة بلغة Ruby، يُستخدم كإطار عمل يسمح لك بأتمتة مهام إدارة خواديم الوب الخاصة بك، كما يسمح لك بنشر خواديم افتراضية خاصة (VPS) مُعدّة مسبقًا دون الحاجة إلى تذكّر كيفية ضبطها بالضبط. هذا الأمر مهم للغاية وتزداد أهميته تدريجيًا خاصةً أنه من الشائع امتلاك خواديم خاصة للاختبار، التطوير وإدارة قواعد البيانات بالإضافة لخواديم بيئة العمل الإنتاجية. كل واحدٍ منها له موارده وإعداداته الخاصة. إنّ عملية تثبيت وإعداد وتحديث وصيانة خادوم افتراضي خاص (VPS) منفرد تُعتبر عملية مُستهلكة جدًا للوقت. Chef يسمح لك أن تقوم بسهولة بأتمتة هذه المهام وتعديلها بحيث تناسب كل خادومٍ على حدى أوتوماتيكيًا. باختصار، Chef يسمح لك أن توفر الوقت والمال عن طريق توفير نظام يسهُل إعادة استخدامه لاحقًا. مطوروا Chef قاموا بتوفير سكربت (Script) سهل الاستخدام لتثبيته على توزيعة Ubuntu، ولكن المشكلة هي أن السكربت الذي قاموا بصناعته ليس قابلًا للاستخدام جيدًا مع إطار عمل Ruby on Rails، هذا الدليل سيرشدك إلى طريقة تثبيت بيئة Ruby حقيقية كاملة. ربما تتوقع أن نقوم بتثبيت Ruby عن طريق هذا الأمر: sudo apt-get install rubyولكن هذه الطريقة ليست مُستحسنة في الواقع، لأنه حتّى وإن كنتَ لا تستخدم أكثر من إصدار Ruby على نفس الخادوم الافتراضي الخاص (VPS)، فستواجه مشاكل بالتعامل مع تعارض أحجار روبي (Ruby gems) أو بعض المشاكل بالتعامل مع المشاريع التي تتطلب إصدارًا معينًا من حجر روبي (gem). مدير إصدارات روبي (RVM) يستطيع أن يحلّ هذه المشاكل بسهولة. ملاحظة: يمكنك استخدام rbenv عوضًا عن RVM أيضًا. اُختيرَ RVM لهذا الدليل لأنهما يتساويان بكل الأشياء التي نحتاجها حاليًا، من الأفضل أن تمتلك قوة إضافية ولا تحتاجها بدلًا من أنّ تكتشف أنك بحاجتها ولكن لا تستطيع الحصول عليها. الخطوة الأولى - كيفية تثبيت روبي مع مدير إصدارات روبي (RVM)يعتمد RVM على ثلاث أمور: Bash, Curl و Git. صدفة Bash مثبّتة افتراضيًا على توزيعة أوبونتو، لذا فإنه يتوجب عليك تثبيت كلٍ من Git و Curl فقط حاليًا عن طريق تطبيق الأمر التالي في الطرفية (Terminal): sudo apt-get install git-core curl الآن يمكنك تثبيت مدير إصدارات روبي (RVM) عن طريق الأمر: sudo \curl -L https://get.rvm.io | bash -s stable --ruby=1.9.3ستستغرق هذه العملية حوالي 5 إلى 10 دقائق تقريبًا (اعتمادًا على سرعة اتصالك بالوب بالإضافة إلى الوقت المُستَغرَق ريثما يتم بناء الشفرة المصدرية لروبي). ملاحظة: Chef يتعارض مع روبي 1.9، ولهذا فإننا نقوم بتثبيت روبي 1.9.3. يجب أن ترى الرسالة التالية عندما تكتمل العملية: * To start using RVM you need to run `source /usr/local/rvm/scripts/rvm` in all your open shell windows, in rare cases you need to reopen all shell windows. افعل ما يطلبه منك، فقط طبّق الأمر: source /usr/local/rvm/scripts/rvmالآن، تأكد من أن روبي تم تثبيتها بشكلٍ صحيح عن طريق الأمر: ruby -vإذا كانت توزيعتك من معمارية 32 بت فيجب أن ترى: ruby 1.9.3p448 (2013-06-27 revision 41675) [i686-linux]إمّا إذا كانت من معمارية 64 بت، فيجب أن ترى شيئًا مثل: ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]الآن، تأكد من أنّ أحجار روبي (Ruby gems) مثبّتة بشكل صحيح عن طريق الأمر: gem -vيجب أن يتم عرض رقم الإصدار المثبّت مثل: 1.8.25إذا لم تكن مطور روبي أو إطار عمل Rails، فحينها قد ترغب بجعل الإصدار 1.9.3 من روبي هو الافتراضي حاليًا عن طريق الأمر: rvm use 1.9.3 --defaultملاحظة: هذا الأمر سيقوم بتجاهل أي إصدار مثبّت من قبل من روبي. الخطوة الثانية - كيفية تثبيت Chefتثبيت Chef الآن أصبح بالإمكان تنفيذه بسهولة وسرعة عن طريق الأمر: gem install chef --no-ri --no-rdoc وللتأكد من أنّ Chef مثبّت بالفعل طبّق: chef-solo -vوهو ما سيقوم بطباعة رقم الإصدار الحالي من Chef: Chef: 11.4.4 سنقوم أيضًا بتثبيت بعض الإضافات المفيدة ألا وهي: Knife-Solo, Berkshelf و Foodcritic. Knife-Solo هي مُلحق (plug-in) لأداة Knife الخاصة بـChef تجعل عملية إعداد الخواديم المفردة ممكنة باستخدام chef-solo. حيث أنّها تجعل عملية نشر الخواديم الصغيرة سهلة لأنها توفر عليك عناء تشغيل عميل Chef (يدعى chef-client) والذي بدوره يتطلب خادوم chef (يدعى chef-server). لتثبيته، طبّق الأمر التالي: gem install knife-solo --no-ri --no-rdoc Berkshelf هو مُلحَق يساعدك على كتابة وتحزيم كتب الطبخ (cookbooks وهي ملفات الإعداد الخاصة بإعدادات الخواديم) أو تحميلها باستخدام ملفاتٍ محلية أو مستودع Git أو خادوم Chef. عليكَ أولًا تثبيت بعض الاعتماديات التي يحتاجها Berkshelf ليتمكن من العمل: sudo apt-get install libxslt-dev libxml2-dev الآن لتثبيت Berkshelf، طبّق الأمر: gem install berkshelf --no-ri --no-rdoc وللتأكد من أنّ عملية التثبيت تمت بشكل صحيح، طبّق الأمر: berks -v وهو ما يجب أن يعطيك رقم الإصدار المثبّت مثل: Berkshelf (2.0.7) مُلحق Foodcritic يساعدك عن الكشف عن المشكلات في كتب الطهي الخاصة بـChef (تُدعى Chef Cookbooks). لتثبيته، طبّق الأمر: gem install foodcritic --no-ri --no-rdoc وكالمعتاد، للتأكد من عملية التثبيت: foodcritic -V ستحصل على: foodcritic 2.2.0ملاحظة: في حال كنتَ تتساءل، الخيارات --no-ri –no-rdoc هي ليتم تجنّب إنشاء الوثائق الخاصة بالمُلحقات. الخطوة التاليةهذا الدّرس شرحَ لك كيفية تثبيت Chef على بيئة روبي حقيقية لتكون مناسبة لعملية تطوير البرمجيات. كل شيء تقريبًا أصبحَ جاهزًا للبدء بعملية الأتمتة عن طريق إنشاء وصفاتِكَ الخاصة (recipes) أو باستخدام وصفاتٍ من طرفٍ ثالث (3rd party). ترجمة -وبتصرّف- للمقال: How To Install Chef and Ruby with RVM on a Ubuntu VPS
    1 نقطة
  15. مقدمةتوفّر أدوات إدارة الإعدادات وسيلةً سهلة لنشر إعدادات متوافقة لمجموعة من الحواسيب العميلة (client computers) عبر خادوم إدارة مركزي. Chef هو واحدٌ من أشهر أدوات إدارة الإعدادات. حيث أنه مكتوب بلغة روبي ويقرأ الإعدادات بناءً على ما يدعى بالوصفات (recipes). يوفر Chef وسيلة سريعة لنشر بيئات عمل كاملة عوضًا عن مجرد تطبيقات مفردة. في أي حالة تحتاج فيها إلى تثبيت أي قطعة برمجيات ثمّ تعديل ملفات إعداداتها، يمكن لـChef أن يقوم بأتمتة العملية. في هذا الدليل، سنقوم بإلقاء لمحة عامة على كيفية تنظيم Chef لملفاته وما الأدوات والأنظمة التي يستخدمها ليقوم بمهامه. مصطلحات Chefمن المهم فهم عمل مختلف المكونات التي تشكل Chef وتفاصيلها. بنية Chef التحتية التشغيليةسنبدأ بالحديث عن النماذج المختلفة التي تُشكل استراتيجية التطوير عالية المستوى لـChef. يتم تقسيم نظام Chef حسب الأدوار التي يلعبها كل حاسوب أو آلة: خادوم Chef: هذا هو المكان الرئيسي الذي يتم فيه تخزين إعدادات الوصفات، كتب الوصفات (cookbooks) وتعريفات العُقَد (nodes definitions) وتعريفات محطة العمل (workstation definitions). إنّه الآلة المركزية التي ستستخدمها كل الآلات الأخرى ضمن الشبكة للحصول على إعدادات نشر الخواديم (deployments). عُقَد Chef: وهي أهداف النشر التي سيتم ضبطها بواسطة Chef. كل عقدة تمثّل بيئة آلة منفصلة مُحتواة إمّا على خادوم حقيقي أو داخل آلة وهمية. يحتوي كلٌ من بيئات أنظمة التشغيل هذه على تطبيق عميل Chef لتتمكن من الاتصال مع خادوم Chef. محطات عمل Chef: هذه المحطات (workstations) هي المكان الذي يتم فيه إنشاء أو تعديل تفاصيل إعدادات Chef. يتم دفع ملفات الإعدادات بعدها إلى خادوم Chef الرئيسي، حيث ستكون متوفرة لنشر أي عقدة جديدة. يسمح لك إعداد مختلف هذه المكونات أن تمتلك محطات عمل أو عُقّد متعددة. يمكن أن يتم إعداد العُقَد مباشرةً عندما تكون على الشبكة وعندما تكون متصلة بالخادوم الرئيسي. قد تعطيك العناوين العريضة أعلاه انطباعًا عن أنّ مكونات Chef هي مكونات منفصلة يجب تشغيلها على أجهزة منفصلة، بينما في الواقع، يمكن لآلة واحدة فقط أن تقوم بدور اثنين من هذه المكونات أو حتى جميعها. هناك مشروع يدعى chef-solo يسمح لك بالتخلي عن استخدام الخادوم المركزي وضبط الحاسوب الذي يتم تثبيته عليه تلقائيًا دون الحاجة للخادوم. تفاصيل الخادومالخادوم هو نقطة التحكم المركزية التي يتم الوصول إليها من طرف جميع آلات Chef الأخرى، سواء كدور عميل أو مدير. يمكن القول أنّه عبارة عن مستودع كبير أو قاعدة بيانات لجميع تفاصيل الإعدادات. خادوم Chef يعالج الاتصالات والأذونات الواردة من العُقَد ومحطات العمل وينظم البيانات لتكون جاهزة ليتم طلبها من قبل العملاء (clients). يمكن للخادوم أن يتضمن أيضًا واجهة وب للتمكن من إدارة أو ضبط بعض التفاصيل. تفاصيل العُقَدكما ذُكر أعلاه، يمكن للعقدة أن تكون جهازًا فيزيائيًا أو آلةً وهمية. الشيء الوحيد الذي تحتاجه هو أن يكون لها اتصال بشبكة الويب وأن تكون قادرة على الاتصال بخادوم Chef المركزي. المُستخدم الذي يشغل تطبيق chef يجب أيضًا أن يكون قادرًا على تثبيت البرمجيات وتطبيق التغييرات على النظام. كل عقدة تتواصل مع الخادوم المركزي باستخدام تطبيق يُدعى chef-client. هذا التطبيق يعالج عملية طلب البيانات من الخادوم المركزي بالإضافة إلى تنفيذ خطوات الإعداد اللازمة لإيصال العقدة إلى حالتها النهائية. يتواصل كلٌ من برنامج chef-client وخادوم Chef عن طريق استيثاق بمفتاح RSA. يستخدم Chef-client أداة تدعى ohai لجلب الإحصائيات عن العقدة. هذه الإحصائيات يتم استخدامها بهدف تثبيت تفاصيل إعدادات معينة وتأهيل المتغيرات المُحتواة داخل الملفات للعمل. تفاصيل محطة العملمحطة العمل تمتلك الأدوات الضرورية لإنشاء وتعديل تفاصيل الإعدادات لأيٍّ من العُقَد المتوفرة كما أنها قادرة على التواصل مع خادوم Chef لجعلها متوفرة. تُعتبر أداة knife أداة مهمة لإدارة Chef على أي محطة عمل . تُستخدم هذه الأداة كبوابة يمكنك من خلالها إعداد أي شيء تريد تخزينه على الخادوم. يمكنها أن تدير العُقَد والإعدادات ويمكن أنّ يتم استخدامها بشكل عام للوصول إلى الخادوم باستخدام "طريقة Chef معينة". بينما من الممكن أن يتم تسجيل الدخول إلى الخادوم باستخدام SSH وعمل جميع التغييرات لكل البيانات المطلوبة يدويًا، فهذه ليست الطريقة المثلى التي ينصح نظام Chef باستخدامها. الإعدادات والتعريفات التي يتم إنشاؤها وتعديلها على محطة العمل يتم تلقائيًا إرسالها إلى نظام إدارة إصدارات معين (version control) ومن ثم يتم دفعها إلى الخادوم المركزي. يُدعى المستودع بـ"chef-repo”. وهو يقوم بإدارة كل البيانات المُحتَاجة لإعداد Chef. هيكلية ملفات مستودع Chefيعالج Chef إعداداته ومعلومات اعتمادياته على محطة العمل باستخدام هيكلية ملفات معيَنة، من المهم فهم هذه الهيكلية بهدف إنشاء وصفات فعالة ودفع التغييرات. كما ذكرنا أعلاه، يجب أن يتم إبقاء ملفات إعداد الخادوم تحت نظام إدارة إصدارات بمستودع يدعى "chef-repo”. وهو مجرد مسار (directory) عادي يحتوي على ملفات chef. في هذا المجلّد، يمكننا أن نجد هيكلية مشابهة للتالي: certificates/: يحتوي على شهادات SSL التي يمكن الوصول إليها من قبل العملاء (clients) للاستيثاق authentication chefignore: يحتوي على الملفات والمسارات التي تُعتبر من ملفات هيكلة Chef الأساسية والتي يجب ألّا يتم دفعها إلى الخادوم. config/: يحتوي على واحدٍ من ملفيّ إعدادات المستودع. rake.rb: يُعرّف بعض المتغيرات لإنشاء شهادات SSL وبعض الخيارات العامة. cookbooks/: يحتوي كتب الوصفات (cookbooks) التي تقوم بإعداد البنية التحتية لمنظمتك. data_bags/: يحتوي على حقائب بيانات مختلفة لإعداداتك. حقائب البيانات محمية بواسطة مسارات فرعية تحتوي تفاصيل إعدادات حساسة. وهي قابلة للوصول فقط من قبل العُقَد التي تمتلك شهادة SSL مطابقة وتحتوي على ملفات بصيغة JSON مع تفاصيل الإعدادات. environments/: يحتوي على تفاصيل الإعدادات لنشر بيئات العمل المختلفة. كلّ بيئة معدّلة عن البيئة الافتراضية يجب أن يتم تعريفها داخل هذا المجلد. Rakefile: هذا الملف يقوم بتعريف المهام التي يمكن لـchef القيام بها عبر إعداداته. roles/: يحتوي الملفات التي تقوم بتعريف الشروط التي يمكن إسنادها إلى العُقَد. هيكلية ملفات كتب التّحضير لـChefضمنَ مسار كتب الوصفات (cookbooks) في chef-repo, تقوم المسارات الفرعية بتعريف كتب وصفات معينة من أجل التطبيقات. ضمنَ كل مسار إعداد تطبيقٍ منفصل هناك هيكلية تعرّف كيف يجب أن يتم تثبيت هذه الخدمة ومالتغييرات التي يجب عملها لجعلها تعمل بصورة صحيحة. ضمنّ التطبيق، ستجد ملفاتٍ وتعريفاتٍ تعرّف كيف يجب أن يتم تثبيت وإعداد أي تطبيق جديد. يحتوي ملف metadata.rb أو metadata.json على معلومات البيانات الوصفية (metadata) حول الخدمة. هذا يتضمن معلوماتٍ أساسية كاسم كتاب الوصفات والإصدار، ولكنه أيضًا مكان حيث يتم تخزين معلومات الاعتماديات. إذا كان كتاب الوصفات هذا يعتمد على كتب وصفات أخرى ليتم تثبيته، فيمكن سردها ضمن هذا الملف وسيتكفل chef بعملية تثبيتها وإعدادها بالإضافة إلى كتاب الوصفات الحالي. يحتوي مسار attributes على تعريفات الخواص (attribute definitions) التي يمكن أن يتم استخدامها للكتابة فوق الإعدادات الموجودة أو تعريفها من جديد للعُقَد التي ستمتلك هذه الخدمة. يحتوي مسار definitions على الملفات التي تقوم بالإعلان عن الموارد المستخدمة. هذا يعني أنه بإمكانك تجميع تشكيلة من الوظائف تحت عنوانٍ واحد. يصف مسار files كيف يجب لـchef أن يقوم بتوزيع الملفات عبر العقدة التي يتم نشر كتاب الوصفات هذا عليها. يحتوي مسار recipes على الوصفات التي تقوم بتعريف كيف يجب أن يتم ضبط الخدمات. بشكلٍ عام، الخدمات هي عبارة عن ملفات صغيرة تقوم بضبط أمورٍ معينة ضمنَ النظام الأكبر. إذا كان يتم استخدام كتب وصفات لتثبيت وضبط خادوم ويب، فحينها فالوصفات يمكن أن تُستخدم لتفعيل وحدات إضافية أو لتثبيت جدار ناري افتراضي. يتم استخدام مسار templates لتوفير إدارة أكثر تطورًا وتعقيدًا للإعدادات. يمكنك توفير ملفات إعداد كاملة تحتوي بداخلها على أوامر روبي مضمّنة. يمكنك تعريف المتغيرات التي يتم طباعتها في ملفاتٍ أخرى كذلك. الخاتمةقد لا يكون هذا المقال مُساعدًا لك في كتابة إعدادات Chef الخاصة بك، إلّا أنه يجب أن يعطيكَ لمحةً عامة حول ماهية المكونات المستقلة التي تعمل ضمنَ بيئة نشر معقّدة. بمجرد أن تبدأ بفهم كيفية عمل العقد والخواديم ومحطات العمل بتناسق تامٍ فيما بينها فستكون قادرًا على إيجاد طريقك إلى chef-repo، يمكنك أن تبدأ بفهم كيفية عمل بعض كتب الوصفات المتوفرة. ترجمة -وبتصرّف- للمقال How To Understand the Chef Configuration Environment on a VPS
    1 نقطة
×
×
  • أضف...