7أبريل

عن GPS Week Rollover

الليلة في الساعة الثالثة فجراً سنكون أمام حدث تقني مهم يعرف بـ GPS Week Rollover. من الممكن بأن يتسبب في تعطل الكثير من الأنظمة، أو على الأقل عودة الزمن فيها لمدة 20 سنة!

نظام الـGPS يعتبر أحد المصادر الأساسية اللي تعرف أنظمتنا الوقت عن طريقها سواء بشكل مباشر أو غير مباشر، وهذا الشيء له علاقة أكثر مع بروتوكول NTP.

تعمل أنظمة NTP بشكل طبقي تسمى كل طبقه فيها Stratum، بحيث يكون نظام الـGPS يحمل الطبقة أو Stratum رقم 0، ومن ثم سيرفر الـNTP بـStratum 1، وهكذا حتى يحصل جهازك الشخصي على الوقت من السيرفر الخاص بمزود خدمات الانترنت الخاص بك، وتكون أنت الطبقة الخامسة مثلًا.

عودة إلى الستالايت وأنظمة GPS: فهي توفر بيانات الوقت والتاريخ كعدد الأسابيع منذ epoch + عدد الثواني التي انقضت في الأسبوع الحالي.

epoch هي عدد الثواني منذ تاريخ 1 يناير 1970.

أين تكمن المشكلة إذًا؟

أكمل القراءة »

7أكتوبر

أداة reboot الجديدة في نسخة Ansible 2.7

لفترة من الزمن، كانت الطريقة المثالية لإعادة تشغيل خوادم لينكس عبر آنسبل هي باستخدام تشكيلة من أداتي shell لتنفيذ أمر إعادة التشغيل، بالإضافة إلى استخدام wait_for لإيقاف تنفيذ باقي المهام وانتظار انتهاء إعادة تشغيل الخادم حتى تتم استعادة الإتصال معه. وبالمناسبة، هذه هي الطريقة الرسمية التي يتم تدريسها في مقرر آنسبل DO407 Automation with Ansible من شركة ريدهات (يتم استخدام نسخة آنسبل 2.3 حتى الآن في المقرر). هذه الطريقة تتم بالشكل التالي:

---
- name: Reboot and wait until the server is up
  hosts: server1
  tasks:

    - name: reboot machine
      shell: sleep 2 && shutdown -r now "Ansible triggered reboot"
      async: 1
      poll: 0
      ignore_errors: true

    - name: Wait for server to come back
      wait_for:
        host: "{{ inventory_hostname }}"
        state: started
        delay: 30
        timeout: 300
        port: 22
      delegate_to: localhost

أداة reboot الجديدة في نسخة آنسبل 2.7:

أكمل القراءة »

16يناير

المزامنة التلقائية للملفات بين الخوادم باستخدام Unison

ضمن تجربة قمت بها لإنشاء خادم ويب موزع بين جهازين أو أكثر، كانت واحدة من أهم الخطوات للوصول للهدف هو أن تكون محتويات مسار /var/www/html متزامنة بين الخوادم. يعود السبب في ذلك إلى أن الموقع يقدم خدمات كرفع الملفات واستعراضها، بالتالي فوجود نسخة متطابقة على جميع الخوادم خطوة أساسية للحصول على النتيجة. بالطبع هناك طرق بديلة لهذه المعضلة كاستخدام NFS أو رفع هذه الملفات على خدمة خارجية مثل Amazon S3، لكن هذه الحلول لم تكن متاحة في البيئة التي عملت عليها.

مشروع Unison لطيف جدًا ويفي بجميع الشروط التي أبحث عنها. من أهم هذه الشروط هو أنه في حال حدوث تغيير على ملف في أي من الخادمين، فإن التغيير يتم بثه إلى الخادم الآخر “Bi-Directional” وليس محددًا من مصدر واحد. عبر يونيسون تستطيع تحديد أي من الخادمين هو من يقوم بعملية الفحص والتأكيد على وجود ملفات بحاجة للمزامنة. إذا كانت لديك عشرة خوادم على سبيل المثال، فتستطيع وضع سيرفر واحد كخادم أساسي، وتسعة خوادم ثانوية ترتبط معه وتقوم بعملية المزامنة (وهو ماسنقوم به في هذه التدوينة). طريقة أخرى تستطيع القيام بها هو أن يقوم الخادم رقم عشرة بالمزامنة من الخادم التاسع، والتاسع من الثامن، وهكذا حتى يكون الخادم الثاني مرتبط مع الخادم الأول الأساسي. تسمية “أساسي” في هذه التدوينة لا تعني سوى أن الخادم الأساسي لا يقوم بنفسه بالاتصال بالخوادم الأخرى للمزامنة والمقارنة، بل ينتظر الاتصال من الخوادم الأخرى للمزامنة، وتستطيع القيام بالمزامنة دون تنصيب يونيسون عليه أصلًا. بالمناسبة، يحتوى مشروع يونيسون على مميزات أخرى منها دعمه لأنظمة ويندوز أو أي مختلف نكهات *nix، وبإمكانك الاطلاع على المزيد من هنا.

إعداد يونيسون

الخطوات التالية ستشرح كيفية إعداد يونيسون بين خادمين لمزامنة ملفات أباتشي على مسار /var/www/html. سنقوم بتسمية الخادمين بالخادم الأساسي والثانوي.

أكمل القراءة »

29سبتمبر

مقدمة بسيطة للغة bash

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

السطر الأول من البرنامج هو رمز Shebang والذي يخبر النظام كيف يقوم بتشغيل المحتوى. مثال بسيط لطباعة hello world:
#!/bin/bash
echo Hello world!

كل أمر يبدأ في سطر جديد، أو بعد فاصلة منقوطة:
echo 'This is the first line'; echo 'This is the second line'

تعريف المتغيرات يتم بالشكل التالي: أكمل القراءة »

9سبتمبر

مشروع تانجو، ومخططات جوجل لغزو العالم

هذا المقال من أرشيف ماكتبته في موقع ون هاز، بتاريخ 4 مارس، 2014

في حين انشغال الناس والشركات بما حدث في مؤتمر الجوالات العالمي MWC في برشلونة، كانت لدى جوجل خطط مختلفة تمامًا. فأعلنت عن مشروع تقني مستقبلي جديد منها هو مشروع تانجو. دعنا نتخيل قليلًا بأنك تريد الذهاب لشراء بعض قطع الأثاث لبيتك الجديد، ولكنك تريد أن تتخيل: كيف سيكون ترتيب هذه القطع قبل شرائها؟ تصوير غرفتك ومحاولة التصّور عبر أحد برامج معالجة الصور كفوتوشوب وما شابه ليست خيارًا سهلًا لا للمستخدم البسيط ولا حتى أولائك الذين يملكون خلفية كافية في معالجة الصور. إذًا لِمَ لا نقوم بصنع عالمٍ افتراضي من بيتك وتجربة ترتيب الأثاث على هاتفك بطريقة أكثر واقعية؟ هذه إحدى الأفكار من مشروع تانجو. مشروع جديد وغريب من نوعه على مستخدمي الهواتف الذكية تحديدًا والذين قد لا يستوعبوا مغزاه في البداية، ولكن جوجل تعدهم بأنّه المستقبل.

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

5سبتمبر

حل مشكلة كتابة ملفات النطاقات Zone Files في خوادم DNS الثانوية

قمت بتجهيز سيرفرين يقومون بالعمل كـDNS، أحدهما أساسي Master، والآخر ثانوي Slave (سيد وخادم إن ترجمناهما حرفيًا). السيرفرين يستخدمان bind لتشغيل خدمة الدي إن اس. لاحظت ظهور رسالة الخطأ التالية في سجلات السيرفر الثانوي:

Error: dumping master file: tmp-g5x9Gx6CFq: open: permission denied

ولنفهم الخطأ سأتحدث قليلًا عن كيفية عمل الـDNS:

توجد في السيرفر الاساسي Master ملفات للنطاقات Zone Files يتم فيها تعريف جميع الأجهزة أو السيرفرات التابعة للنطاق، ولها صيغة معينة تتبعها. وعند القيام على سبيل المثال بطلب موقع mail.google.com، يذهب خادم الدي إن اس الأساسي لقوقل بالذهاب لملف النطاق Zone File الخاص بدومين google.com، ومن ثم البحث عن تعريف mail وتحويل المستخدم إلى الآي بي الخاص بهذه الخدمة، مثلما ترى في الصورة الخاصة بالتدوينة.

السيرفرات الثانوية تعمل بطريقة مشابهة، ولكنها في الأساس لا تحتوي على ملفات Zone Files الخاصة بالنطاقات، فتقوم بإجراء نقل لملفات النطاقات Zone Transfer من السيرفر الأساسي وتخزينها لديها لكي تقوم بتنفيذ طلبات المستخدمين. وهنا بالضبط – أثناء تخزين ملفات النطاقات – يحدث الخطأ المذكور في بداية التدوينة.

الحلول المقترحة للمشكلة:

أكمل القراءة »

16أغسطس

إعادة توجيه الروابط بين مدونات ووردبريس عبر htaccess

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

ameenali.com/blog/
www.ameenali.com/blog/2014/12/difference-between-thick-and-thin-provisioning/

أريد أن يتم تحويل الزائر بشكل تلقائي إلى الروابط التالية:

ameen.io/blog/
ameen.io/blog/2014/12/difference-between-thick-and-thin-provisioning/

تبدو المهمة سهلة جدًا، ومن الممكن أن تتم في غضون دقائق عبر بعض التعديلات على ملف أكمل القراءة »

10ديسمبر

سلسلة مراقبة أداء أنظمة لينكس 3: أداة iostat

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

أداة iostat قد لا تأتي مثبتة على نظامك. قم بتثبيت حزمة sysstat للحصول عليها (شكرًا حسين على التنبيه)
وتستطيع تشغيلها عن طريق الأمر:

# iostat

للحصول على معلومات أكثر، سنستخدم الأمر مع هذه الخصائص:

# iostat -xm 5 2

شرح الأمر:

  • iostat: اسم الأداة
  • -x: عرض النتائج بالتفصيل (Expaneded)
  • -m: عرض الوحدة بالميقابايت، وتستطيع استبدالها بـk للكيلوبايت
  • 5: القيام بتشغيل الأداة كل 5 ثواني
  • 2: تشغيل الأداة مرتين فقط

فبالتالي سنحصل على عينتين نستطيع المقارنة بينهما، مثال على النتيجة:
أكمل القراءة »

18نوفمبر

مزامنة مدير مواقع FILEZILLA لأكثر من جهاز عبر دروب بوكس

من أكثر الأمور المزعجة التي يعاني منها جميع من يتعامل مع التقنية هو مزامنة الملفات والإعدادات بين الأجهزة الشخصية. أغلبنا إن لم يكن كلنا يعمل على جهازين على الأقل (كمبيوتر العمل، لابتوب شخصي، كمبيوتر مكتبي في البيت أحيانا، إلخ). وكشخص مسؤول عن أنظمة أو حتى مطور تطبيقات، فستحتاج إلى طريقة تزامن فيها ملفاتك بين الأجهزة. ظهرت خدمات كثيرة ساعدت وبشكل كبير جدًا في حل مشكلة مزامنة الملفات مثل دروب بوكس وجوجل درايف وغيرها، حلّت هذه الخدمات الجزء الأكبر من المشكلة وهو الخاص بالملفات التي تعمل عليها، ولكن ماذا عن مزامنة إعدادات البرامج؟ FileZilla هو أحد أعرق وأشهر البرامج التي يستخدمها مدراء الأنظمة ومطوري المواقع والمصممين وغيرهم لرفع وتحميل الملفات من وإلى السيرفر. المشكلة الأكبر التي يعاني منها من يستخدم هذه الأداة على أكثر من جهاز هي مزامنة المواقع وبياناتها. فعندما تقوم بإضافة موقع جديد أثناء استخدامك للبرنامج على اللابتوب، فلن تظهر هذه الاعدادات على أجهزتك الأخرى التي تحتاج للأداة عليها. سنتعرف اليوم على طريقة بسيطة وسهلة لمزامنة مدير مواقع FileZilla الخاصة بك بين الأجهزة المختلفة عن طريق دروب بوكس.

تعمل خاصية Site Manager في FileZilla على حفظ جميع البيانات الخاصة بمواقعك في ملف sitemanager.xml. ولكي نستطيع تحقيق هدفنا في المزامنة بين الأجهزة فيجب علينا أكمل القراءة »

كُتِبَتْ بِحُب ♥