التخطي إلى المحتوى الرئيسي

تحميل نظم التشغيل على عدد كبير من الأجهزة في نفس الوقت..

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

كان الحل هو Network booting، أي تحميل النظام عبر الشبكة، كل الأجهزة تتصل بجهاز واحد عن طريق شبكة بسيطة ويتم التحميل من خلالها، كان حلاً سريعاً وفعالاً جداً، بحثت لك على الانترنت ووجدت هذا الرابط:

How to install OS through Network boot (step by step)

هل يمكن أتمتة الخطوات ببايثون؟..غالباً، لكن هذا شئ لم أجربه..

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

انتبه، ليس كل أردوينو سيناسب هذه المهمة..انما فقط النماذج المذكورة هنا. (Leonardo, Esplora, Zero, Due and MKR Family)

الاجابة على كورا

تعليقات

المشاركات الشائعة من هذه المدونة

كيف تضع المتغيرات في جملة SQL داخل البرنامج؟

من الأخطاء التي تبدو لي شائعة هي كيفية تكوين جمل SQL داخل البرامج، أصادف سطورا يكتبها بعض المبرمجين كالتالي:

"select * from users where UPPER(uname)= UPPER('".$uname."')"
هذه الطريقة في ادخال القيم إلى جملة SQL هي طريقة خطرة للغاية، فهي أولا تعيق عمل البرنامج عند ادخال أحرف معينة (أحد من عرفتهم حل المشكلة باخبار المستخدم بأن ادخال هذه الحروف ممنوع!)، وثانيا، وهو الأهم: أنها تترك قاعدة بياناتك عرضة للاختراق، أو التدمير، إذ يمكن للمخترق، وبمجرد اكتشافه للثغرة أن يقوم باغلاق جملة SQL الخاصة بك واضافة جملة جديدة كما يشاء، افترض مثلا أن قيمة المتغير uname (المدخلة بواسطة المستخدم) كالتالي:
');DROP TABLE users; -- في تلك الحالة تصبح جملة SQL الكاملة المنفذة بواسطة البرنامج هي: "select * from users where UPPER(uname)= UPPER('');DROP TABLE users; --')"
وبالطبع، تكون النتيجة هي محو بيانات المستخدمين "إن كان البرنامج يملك صلاحية تنفيذ الأمر".
تسمى هذه الطريقة SQL Injection وهي دائما فعالة مع البرامج المكتوبة بهذه الطريقة، فكتابة الك…

أوراكل وتحديد عدد الصفوف الناتجة

لم أعتد العمل على ORACLE، كانت قاعدة البيانات التي أستخدمها عادة هي mysql، لكن في وظيفتي الجديدة كان علي أن أعمل على جلب البيانات لبرنامجي من قاعدة أوراكل، كانت المشكلة هي في تحديد عدد الصفوف الناتجة عن عملية البحث، وهي ما يفترض بها أن تتم ببساطة عن طريق كلمة limit في نهاية جملة SQL.

إلا أنها لم تعمل اطلاقا، بقليل من البحث (ومساعدة من مدير قواعد البيانات) وجدت التالي:
في أوراكل تجعل جملتك بالكامل جملة فرعية داخل الجملة الأكبر التي تقوم بالتحديد، خذ باعتبارك أن كل صف في أوراكل يسبقه حقل ROWNUM المشير لرقم الحقل، قم بتضمينه في الجدول وأعطه اسما بديلا لتتمكن من التعاطي معه في جملة التحديد الخارجية.

مثلا، إذا كانت جملتك هي:
SELECT f1,f2,f3 FROM my_table
عليك أولا أن تقوم باضافة حقل يحمل أرقام الصفوف كالتالي: SELECT ROWNUM rn, f1, f2, f3 FROM my_tableالآن صارت الجملة السابقة جدولا يمكنك وضعه كجملة فرعية في جملة تحديد أكبر، كالتالي: SELECT * FROM (SELECT ROWNUM rn, f1, f2, f3 FROM my_table) WHERE rn BETWEEN :Min AND :Max وهذه الطريقة ليست الأسرع وإن كانت الأوضح منطقيا في كتابتها، بهذه الطري…

ما هو متصفح تور؟ TOR

كتبت هذه الإجابة لموقع كورا العربي..

متصفح تور، هو مشروع مفتوح المصدر، مشتق من فايرفوكس، ويعمل على شبكة بتقنية تسمى (The Onion Routing) TOR، وهي شبكة تواصل عبر الانترنت تأسست في البدء لأغراض عسكرية، ثم أصبحت الشبكة تستخدم من عامة الناس بغرض السرية والخصوصية. فكرة العملالفكرة من شبكة تور، هو تفادي وجود نقطة ضعف وحيدة في الاتصال، بمعنى، أنك أثناء الاتصال العادي بانترنت، تكون نقطة ضعفك هي مقدم الخدمة، فهو يستطيع معرفة الكثير عنك أثناء تصفحك، لماذا؟..طبعاً لأن كل اتصالاتك تمر من خلاله ولا مفر من ذلك، فعند طلبك لموقع كورا، مثلاً، يطلب المتصفح (العادي) من خلال مقدم الخدمة أولاً عنوان الآيبي المرتبط بعنوان http://quora.com، وهكذا يستطيع القائم على تقديم الخدمة لك أن يتتبع اتصالك وان يراقب كثيراً من البيانات..كذلك في حالة شبكات VPN، فمن غير الأكيد أن مقدم خدمة VPN لا يسجل اتصالاتك ووجهتها أثناء استخدامك للخدمة؟هذه ليست الحال في شبكة تور، في شبكة تور، تطلب مبدئياً انشاء دائرة من نقاط التحويل، تتكون عادة من 3 سيرفرات عشوائية مختلفة يديرها متطوعين من مختلف بقاع الأرض، وهذه النقاط تق…