شهادة A plus الفصل 15 : العمل مع واجهة سطر الأوامر (Working with the Command-Line Interface) الجزء 6 والأخير

sparrow
0

 



الفصل : 15

الجزء : 6

العنوان : العمل مع واجهة سطر الأوامر (Working with the Command-Line Interface)




اداة vi


سيكون عليك في بعض الأحيان تحرير ملفات نصية خام في macOS و Linux، و vi هو محرر النص الافتراضي المضمن في macOS ومعظم توزيعات Linux. يعتبر فهم كيفية تحرير ملف (أو حتى الخروج فقط) باستخدام vi نوعًا من الانتقال إلى مرحلة جديدة. فقط بعد أن تتقن واجهة vi غير المباشرة وربما حتى الغريبة يمكنك بالفعل أن تبدأ في التفكير في نفسك كسيد جيداي لـ UNIX Terminal. حسنًا، ربما ليس كسيد جيداي، ولكن الحقيقة أن vi متوفر دائمًا تقريبًا سيجعلك ترغب في معرفة كيفية استخدامه. دعنا نبدأ مع vi بإنشاء ملف نصي جديد يُسمى "فريد":

```

mike@server:~$ vi fred

```

الآن ستكون في محرر النص vi، تحدق في ملف فارغ كما هو موضح في الشكل1


الشكل 1


يستخدم محرر النص vi مفهوم "mode" الذي لا يتناسب مع التوجيه السهل حيث يكون المحرر دائمًا في وضع الإدخال أو وضع الأوامر. يتيح لك وضع الإدخال إدراج وتحرير النص. بينما يتيح لك وضع الأوامر إعطاء الأوامر مثل القص واللصق وحذف السطر أو الأحرف، وحفظ الملف. افتراضيًا، أنت في وضع الأوامر، لذا اضغط على مفتاح i للانتقال إلى وضع الإدخال. أدخل عدة أسطر نصية، مثلما هو موضح في الشكل 2 ، واضغط على مفتاح ENTER في نهاية كل سطر، واستخدم مفتاح BACKSPACE إذا ارتكبت خطأً. لا يعمل أي من المفاتيح الأخرى التي أنت معتاد عليها في أي محرر نص آخر (مثل Notepad في Windows) هنا! اضغط على مفتاح esc للخروج من وضع الإدخال والعودة إلى وضع الأوامر.

الشكل 2


لحفظ الملف الجديد والخروج من vi، اكتب ZZ (لاحظ الأحرف الكبيرة) واضغط على مفتاح ENTER. لتحرير ملف موجود بالفعل، ما عليك سوى كتابة vi تليه اسم الملف الذي ترغب في تحريره. على سبيل المثال، إذا كنت ترغب في تحرير الملف fred، فستكتب:


mike@server:~$ vi fred


أكبر خدعة في استخدام vi هو التأكد من المعرفة بالوضع الذي تتواجد فيه وكيفية التبديل بين الوضعين. اضغط على ESC للوصول إلى وضع الأوامر واضغط على i للوصول إلى وضع الإدخال. كن مستعدًا لارتكاب الكثير من الأخطاء في أول مرات استخدامك لـ vi!




مجموعة أوامر vi قديمة الطراز، ولكنها قوية إذا قمت بالوقت الكافي لتعلمها. فيما يلي قائمة ببعض المفاتيح في وضع الأوامر التي ستجدها مفيدة:



من المهم معرفة كيفية استخدام vi، ولكن معظم مستخدمي Linux يجدون أنفسهم بسرعة يتجهون إلى أحد البدائل العديدة. تحقق من أحد المحررات المعتمدة على الطرفية مثل vim أو joe أو emacs، أو أحد المحررات الرسومية مثل gedit أو gVim.




امر dd


يُستخدم الأمر dd بشكل أساسي لإنشاء صورة مطابقة تمامًا، بت لكل بت، لأي نوع من التخزين الكتلي، مما يعني أجهزة التخزين الكبيرة مثل وحدات الأقراص الصلبة، ومحركات الأقراص المحمولة، والوسائط البصرية. في أبسط أشكاله، يكون الأمر dd كما يلي:


$ dd if=<source block device> of=<destination image file location>


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


كن حذرًا هنا! يُقال مازحًا أن اسم الأمر dd يعني "مدمر الأقراص" Disk Destroyer. يمكن لهذه الأداة القوية أن تسبب دمارًا في بياناتك إذا لم تُستخدم بشكل صحيح. هناك عدد من القضايا التي لم أغطها هنا والتي يمكن أن تؤثر بشكل كبير على نجاح تشغيل الأمر dd. في حين أن جميع الأوامر التالية صالحة، فإن تشغيلها على أنظمتك دون فهم هذه التفاصيل يمكن أن يمحو الأقراص. لقد تم تحذيرك!


نسخ قرص صلب


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


dd if=/dev/sda of=/dev/sdb


نسخ احتياطي لمحرك أقراص USB


لنفترض أن لديك محرك أقراص USB مليء بملفات مهمة تريد حقًا نسخها احتياطيًا. باستخدام dd كما يلي، يمكنك نسخ كامل محرك USB وإنشاء ملف image (اخترت تسميته thumbBackup.bak) ووضع هذا الملف على سطح المكتب الخاص بك:


dd if=/dev/sdc of=/home/mike/Desktop/thumbBackup.bak


محو قرص

لدي قرص (sdb) أريد مسحه تمامًا. يمكن للأمر dd أخذ المدخلات من أي مكان، ولكن في هذه الحالة سأستخدم مولد الأرقام العشوائية في Linux، /dev/urandom، لكتابة سلسلة من البتات العشوائية تمامًا على كامل القرص بحيث هيكون من الصعب جدا انه يقوم باسترجاع البيانات من القرص ان لم يكن مستحيلا اساسا . ليس محوًا مثاليًا، لكنه سيوقف جميع الأدوات إلا الأكثر تقدمًا.


dd if=/dev/urandom of=/dev/sdb


امر shutdown


كما في Windows، يمكنك إيقاف تشغيل النظام أو إعادة تشغيله من الطرفية باستخدام الأمر shutdown. قم بتشغيل الأمر كما يلي:


shutdown <options> <time>


بلا شك، الأكثر شيوعًا هو now. لإيقاف النظام فورًا، اكتب ما يلي:


shutdown now


لإعادة تشغيل النظام، شغل shutdown مع الخيار –r:


shutdown –r now


امر passwd


يتيح لك الأمر passwd تغيير كلمة المرور الخاصة بك أو، إذا كنت مسجلًا الدخول كمستخدم root (المستخدم الفائق)، تغيير كلمة مرور أي مستخدم آخر. لتغيير كلمة مرورك الخاصة، اكتب ما يلي:



ال Scripting


حتى الآن، قمنا بإدخال الأوامر في موجه الأوامر واحدًا تلو الآخر. في معظم الأوقات، كل ما تحتاجه هو إدخال أمر أو أمرين، ولكن في بعض الأحيان قد تجد نفسك تكرر نفس سلسلة الأوامر مرارًا وتكرارًا. عندما تجد نفسك في هذا الموقف، قد يكون من الجيد كتابة Script لتشغيل تلك السلسلة من الأوامر. الScript هو برنامج صغير يُستخدم للمساعدة في أتمتة المهام الحاسوبية.


في الواقع، يمكنك إنشاء Script بسيط جدًا عن طريق نسخ بعض أوامر shell إلى ملف جديد وحفظه. انتظر، Script للـ shell وأمر shell؟ عندما تعمل في سطر الأوامر في Windows، فأنت تعمل في موجه الأوامر Command shell. في كل مرة تكتب فيها أمر Windows عند موجه الأوامر، فأنت تستخدم أمر shell. لقد كنت تعمل مع أوامر shell طوال هذا الفصل!


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




كتابة هذه الأوامر واحدًا تلو الآخر كل أسبوع هي عملية مملة، وقد تخطئ في كتابتها أو تتذكرها بشكل غير صحيح. بدلاً من ذلك، يمكنك وضعها في ملف نصي—باستخدام Notepad، على سبيل المثال—وحفظ ذلك الملف النصي بامتداد ملف—مثل wklyrestart.bat في هذه الحالة—حتى يعرف نظام التشغيل أنه Script للـ shell.


يمكنك تشغيل النص البرمجي wklyrestart.bat من موجه الأوامر. لقد كتبت النص في برنامج منفصل، Notepad. تشغيل النص يتيح لك أتمتة الأوامر، حيث يخبر موجه الأوامر بتنفيذ سلسلة من الإجراءات. فهمت؟


يستخدم الفنيون المحترفون الScripting طوال الوقت لأتمتة عدد لا يحصى من المهام. مكتبي صغير نسبيًا، لكنه يحتوي على الكثير من أجهزة الكمبيوتر التي تقوم بمهام طوال الوقت. يقوم مسؤول النظام الخاص بي، مايكل، كجزء من روتينه الصباحي، بفحص حالة كل جهاز من تلك الأجهزة، باحثًا عن الأخطاء وضمان التشغيل السليم وما إلى ذلك. هذه الكثير من المهام. إذا كان عليه الذهاب إلى كل جهاز—حتى عبر الشبكة—وفحص الحالة، فسيستغرق الأمر طوال اليوم. قام مايكل بإنشاء Script يتيح له أتمتة هذه المهمة. يجلس عند جهازه Mac مع قهوته الصباحية، يفتح Terminal، ويشغل بضعة Scripts تفحص جميع الأجهزة وتقدم له تقارير مفصلة. رائع!


لنوضح عملية كتابة الScript بشكل واضح هنا. يمكنك تشغيل الScript من موجه الأوامر، ولكنك تنشئ النصوص البرمجية في محرر نصوص. Notepad هو محرر نصوص بسيط يأتي مع Windows. لقد تعلمت عن vi وvim في وقت سابق من الفصل—محررات نصوص تُستخدم كثيرًا في Linux. النص البرمجي wklyrestart.bat الذي أنشأناه للتو يستخدم لغة برمجة نصوص محدودة جدًا تُسمى batch file، مع الامتداد .bat. لكن النصوص البرمجية ليست مقتصرة على هذه الأوامر البسيطة وملفات batch. يمكن للفنيين المحترفين استخدام مجموعة متنوعة من محررات النصوص لإنشاء نصوص برمجية رائعة في العديد من اللغات المختلفة.



ملحوظة :

كلمة " النصوص البرمجية" اعني بها ال Scripts

 


أنواع الScripts واللغات


كتابة النصوص البرمجية هي نوع من البرمجة؛ ولغة النصوص البرمجية هي نوع من لغات البرمجة المحسنة لكتابة النصوص. كما هو الحال مع أي نوع من البرمجة، هناك العديد من لغات النصوص البرمجية المختلفة المصممة لأغراض متنوعة. تتوقع أهداف CompTIA A+ أن تكون قادرًا على تحديد أنواع الملفات لست لغات نصوص برمجية مختلفة.


يوضح الجدول1 اللغات الشائعة وامتدادات ملفاتها.


الجدول 1


هذه اللغات والامتدادات تساعد في أتمتة المهام المختلفة على أنظمة التشغيل المتنوعة، مما يجعل عمل الفنيين أكثر كفاءة وسهولة.




ملاحظة :

أول ثلاث لغات برمجية في الجدول1 هي لغات نصوص برمجية شل، لكن الثلاثة الأخرى هي لغات نصوص برمجية عامة أكثر. في لغة نصوص شل، أي أمر عادي يمكنك كتابته في الprompt هو جزء صالح من اللغة. هذا ليس صحيحًا في اللغات النصوص البرمجية العامة (لكن لديها العديد من الميزات المفيدة الأخرى).

 


تشريح النص البرمجي


في جوهرها، لغات البرمجة يمكنها أن تقول للحاسوب أن يقوم بشيء ما لقطعة معينة من البيانات. لقد حللت مسائل الرياضيات، لذا أنت بالفعل في منتصف الطريق لفهم هذا. في مسألة رياضية بسيطة مثل 3 + 4، لديك رقمين، ورمز يخبرك بالعملية التي يجب تنفيذها. في هذه الحالة، الجمع.


لإجراء هذه المسألة الرياضية، تحتاج إلى معرفة القواعد. لقد تعلمت قواعد الحساب في المدرسة الابتدائية، صحيح؟ في الحساب، كل من هذه الأرقام هو قيمة؛ القواعد تخبرك بإضافة رقمين عندما ترى علامة +.


ولكن ماذا لو كانت المعادلة تبدو مختلفة قليلاً؟ ماذا ستفعل إذا كانت 3 + COW؟ هذا لا معنى له! البقرة ليست رقماً، إنها كلمة لحيوان كبير يأكل العشب. أنت وأنا نعلم ذلك، لكن الحاسوب يرى الحرف C والرقم 3 كأحرف فقط. كيف يعرف أنه لا يمكنه إضافتهما؟


أنواع البيانات


لكي تكون قادراً على التعامل مع الأرقام والكلمات بشكل مختلف، يحتاج الحاسوب إلى مفهوم جديد - أنواع البيانات. نوع البيانات هو فئة محددة، مثل الرقم أو الكلمة. في العديد من لغات البرمجة، هذه القواعد تملي تفاصيل هامة، مثل أنك لا يمكنك إضافة الرقم 3 والكلمة بقرة لأن القيمتين لديهما أنواع بيانات مختلفة. الرقم 3 هو نوع بيانات integer (أي رقم كامل)، والبقرة (أي الكلمة) هو ما يسميه المبرمجون نوع بيانات string .


هنا يصبح الأمر أكثر تعقيدًا قليلاً، لكن استمر معي وسيصبح الأمر أكثر وضوحًا!


طريقة التفكير في السلسلة هي كمتتالية من الأحرف، مثل C – O – W. تتطلب معظم لغات البرمجة تحديد ال string بـ ‘علامات اقتباس فردية’ أو “علامات اقتباس مزدوجة”، لذا ‘بقرة’ أو “بقرة” في هذا المثال. بينما بعض الأحرف فقط صالحة كأعداد صحيحة، كل الأحرف صالحة في الstring . تملي كل لغة برمجة الإجراءات التي يمكن للحاسوب تنفيذها على ال string (مثل ضم اثنين من string معًا، تقسيم string إلى قطع، التحقق من عدد الأحرف في string، وهكذا). بينما الحساب يملي أنك لا تستطيع إضافة 3 + بقرة (ربما لأن هذا سيزعج البقرة)، يمكنك دمج “بني” + “بقرة” وإنشاء “بقرة بنية” (وسيكون لديك بقرة أكثر سعادة).



المفهوم الرائع التالي هو الأرقام هي أيضاً أحرف، مثل الكلمات. يمكن للأرقام، بالتالي، أن تظهر في الstring ، ولغات البرمجة يجب أن تتعامل مع أحرف الأرقام بشكل مختلف عندما تكون بين علامات اقتباس أو بدونها. تحدد لغة البرمجة ما يجب فعله مع رقم هاتف بدون علامات اقتباس ومع علامات اقتباس، على سبيل المثال، مثل هذه:


- 281 - 922 - 4166

- "281 - 922 - 4166"


في الحالة الأولى، لن يكون لدى الحاسوب أي خيار سوى حساب نتيجة 281 ناقص 922 ناقص 4166، مما يؤدي إلى –4807 (نوع بيانات عدد صحيح). في الحالة الثانية، سيحتفظ الحاسوب بسلسلة تحتوي على رقم الهاتف لمكتبي.





المتغيرات (Variables)


بمجرد أن يعتقد الحاسوب أنه انتهى من هذه القيمة (سواء كانت –4807 أو "281-922-4166")، سينساها. إذا كنت بحاجة إلى استخدامها أكثر من مرة، عليك إخبار الحاسوب بحفظها. تخبر معظم لغات البرمجة الحاسوب بتذكر القيمة عن طريق تسميتها؛ نسمي هذه القيم المسماة متغيرات. يتم حفظ رقم هاتفي في المكتب كمتغير باسم phone_number:


```python

phone_number = "281-922-4166"

```


المتغير في لغة البرمجة أو النص البرمجي هو قيمة أو شيء مسمى. تشير أهداف CompTIA A+ إلى المتغير كهيكل نصي أساسي، مما يعني، أعتقد، مفهوم.


العبارات الشرطية والحلقات الأساسية (Conditionals and Basic Loops)


بمجرد الانتقال إلى نصوص برمجية أكثر تعقيدًا من تلك الأساسية التي هي مجرد قائمة من الأوامر، غالبًا ما تحتاج إلى التحكم في متى وكيفية تشغيل الأوامر المختلفة. ليس من المستغرب أن اللغات النصوص البرمجية والبرمجة الأكثر تعقيدًا تمنحك أدوات ممتازة، تسمى هياكل التحكم، للتحكم في الأوامر.


ملاحظة:

لقد قمت بتضمين بعض أمثلة النصوص البرمجية في هذا القسم. كل منها يستخدم لغة Python. إذا حاولت نسخها إلى ملف نصي للغة أخرى، فقد لا تعمل!

 


أبسط هياكل التحكم هي العبارات الشرطية. تتيح لك العبارات الشرطية تحديد الكود الذي يجب تشغيله فقط عندما يتم استيفاء شرط معين (أو لا يتم استيفاؤه). تحتوي معظم اللغات على كلمات رئيسية، مثل عبارة "if". تحدد عبارة "if" شرطًا، وما الكود الذي يجب تشغيله إذا تم استيفاء الشرط. إليك مثال بسيط:



إليك ما يعنيه كل سطر:

1. متغير **animal** يحمل string تسمى "cow".

2. **عبارة if** تتحقق لمعرفة ما إذا كان متغير **animal** يحتوي على قيمة "cat".

3. إذا كان هذا هو الحال، سيقوم الحاسوب بطباعة الكلمة "meow" إلى موجه الأوامر. إذا لم يكن كذلك، فلن يحدث شيء.


في هذه الحالة، لن يقوم النص البرمجي أبدًا بطباعة "meow" لأن الشرط لم يتحقق.


العبارات الشرطية هي لبنة أساسية في معظم النصوص البرمجية والبرامج

إحدى الأسباب الرئيسية لكتابة نص برمجي في المقام الأول هي أنك تحتاج إلى القيام بشيء ما عدة مرات. في البرمجة، طريقة جيدة لتحقيق ذلك هي باستخدام حلقة تكرارية. الحلقات الأساسية هي نوع آخر من العبارات الشرطية، ولكنها تخبر الحاسوب بتشغيل الكود مرارًا وتكرارًا حتى يتم (أو لا يتم) تحقيق الشرط. بناءً على اللغة، ستجد عادة الحلقات التكرارية مشيرة إلى كلمات رئيسية مثل **for** و**while**. إليك مثال:


هذه الحلقة ستعمل حتى يصبح عدد الأبقار 4، لذا ستطبع "moo" أربع مرات—مرة لكل بقرة. نظرًا لأن المتغير **cows** له قيمة صحيحة، يمكننا إجراء العمليات الحسابية عليه. في كل مرة تعمل فيها الحلقة، تطبع "moo" مرة واحدة، وتضيف واحدًا إلى عدد الأبقار.


التعليقات


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


التعليقات هي طريقة رائعة لوصف المشكلة التي يوجد النص البرمجي لحلها. يجب عليك أيضًا استخدامها لوصف كيفية، ومتى، وأين يتم استخدام النص البرمجي. لكل لغة صيغة تعليق خاصة بها، على الرغم من أن معظم اللغات تشترك في صيغتين شائعتين. ثلاث من اللغات (PowerShell، Python، وUNIX shell) التي يجب أن تكون قادرًا على التعرف عليها من أجل أهداف CompTIA A+ تستخدم صيغة واحدة، والتي تبدأ التعليق برمز #. يمكن لرمز التعليق أن يبدأ سطرًا أو يتبع عبارات على نفس السطر. دعنا نلقي نظرة:


ا لتعليقات في هذا المثال تصف هدف النص البرمجي—جعل جميع الأبقار تقول "moo"—وتحذر مستخدم النص البرمجي. تلاحظ أن النص يبدأ بدون أبقار ويحدد العدد الإجمالي للأبقار بأربع؛ وهكذا.

اللغات الثلاث الأخرى كلها مختلفة قليلاً، لذلك سيكون من السهل التمييز بينها. جافا سكريبت:


في ال Batch File :



في ال Visual Basic Script:


' Visual Basic Script's comments start with a single quote.


التعليقات ضرورية للغاية في البرمجة والبرمجة النصية للبشر الذين يحتاجون للعمل على النصوص والبرامج. لا شيء أسوأ من محاولة تذكر عدد الأبقار التي ستصدر صوت "موو" بعد عام واحد من كتابة النص البرمجي!


المتغيرات البيئية (Environment Variables):


أي نظام تقوم بالوصول إليه يحتوي على قيم هامة مخزنة في متغيرات تشكل ما نسميه ببيئة البرنامج أثناء التشغيل. بعض هذه القيم تم تعيينها على مستوى النظام، ولكن يمكن أيضًا تعيين هذه القيم من قبل المستخدم، النص البرمجي/البرنامج، أو حتى الshell التي يعمل فيها. تخبرنا هذه القيم، التي نسميها متغيرات البيئة، البرامج أثناء التشغيل بجميع أنواع المعلومات، مثل ما هو الدليل الحالي أو المستخدم، أو أين تخزن الملفات المؤقتة. يوضح الشكل 3 المتغيرات البيئية الافتراضية للبرنامج الذي يعمل تحت حساب المستخدم scottj.

الشكل 3


نستخدم أيضًا متغيرات البيئة لتكوين النصوص لأنها تجعل من السهل على العديد من المستخدمين تخصيص كيفية سلوك نفس النص البرمجي على نظام معين دون الحاجة إلى تحرير النص البرمجي نفسه. فيما يلي مثال على متغيرات بيئة سطر الأوامر في Windows Command في ملف batch (لاحظ أن REM هنا يعني تعليقًا):




النص المحاط بعلامات النسبة المئوية (على سبيل المثال، %username%) هو متغير بيئي في batch يتغير اعتمادًا على المستخدم الذي يشغل النص البرمجي. إذا قمت بتشغيل النص البرمجي، سيظهر اسم "Mike" في كل مكان. إذا قام محرري بتشغيله، ستظهر "Scott" في كل مكان.


تحتوي نظم Linux و macOS على مجموعة من المتغيرات البيئية المشابهة لتلك الموجودة في Windows، لكنها تبدو بشكل مختلف قليلًا. فيما يلي نفس النص البرمجي الذي سبق ولكن مكتوبًا لنظام macOS:


كل فني متقدم يعتمد على النصوص البرمجية لإنجاز العديد من المهام الروتينية بسرعة وكفاءة. تمتحنك امتحانات CompTIA A+ 1002 في بضعة مفاهيم برمجية تم تغطيتها في هذا الفصل، ولكن سحر البرمجة قد يجذبك إلى عالم آخر!




■ النهاية 


نكون هنا انتهينا من الفصل 15 تماما من شهادة A plus المقدمة من CompTIA نتقدم الأن تقدم سريع وواضح ولكن المشوار ما زال النصف بعد ولكن سيكون ممتع جدا جدا لذلك احرص على قرائة كل فصل سريعا


و لا بد وانت تقرا ان تكون مركز جيدا لكل معلومة ومعك ورقة وقلم , لانك بالتاكيد ستحتاجها 


واذا واجهتك اي مشكلة في الفهم او ما شابه , يمكنك على الفور الذهاب الى المجتمع الخاص بنا في Telegram للمناقشة والتواصل معنا من هنا  


او اذا واجهتك مشكلة في الموقع او تريد اجابة سريعة يمكنك الذهاب الى اخر صفحة في الموقع ستجد صفحة اتصل بنا موجودة يمكنك ارسالة لنا مشكلتك , وسيتم الرد عليها بسرعة جدا ان شاء الله 


ويمكنك الأنضمام الى المجتمع Hidden Lock بالكامل مع جميع قنواته للأستفادة في اخر الأخبار في عالم التقنية وايضا الكتب بالمجان والكورسات والمقالات من خلال الرابط التالي لمجموعة القنوات من     هنا 


يمكنك ايضا متابعتنا في منصات X او Twitter سابقا , لمشاهدة الاخبار والمقالات السريعة والمهمة من  

هنا


وفقط كان معكم sparrow مقدم هذه الشهادة من فريق Hidden Lock

 




 








إرسال تعليق

0تعليقات

إرسال تعليق (0)

#buttons=(موافق!) #days=(20)

يستخدم موقعنا ملفات تعريف الارتباط لتحسين تجربتك. تاكد الان
Ok, Go it!