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

بيثون النوبة
مكتبة من ثاني أكبر شركة جيدة في العالم - Facebook. لقد سئم المهندسون المحليون من الفوضى في تطبيقات وحدة التحكم ، لذلك قرروا تزويدهم بواجهة تفاعلية. بالطبع ، النصية.

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

أو أكثر تعقيدا

باستخدام شريط بسيط ، يمكنك إظهار تقدم البرنامج في شكل شريط جميل - وسيكون هذا رائعًا وممتعًا للغاية لطباعة قيم غير مفهومة.
قماش
البرامج النصية لتشغيلها على الأجهزة البعيدة هي ألم منفصل. بالطبع ، نحن نعيش في عصر DevOps ، عندما يتم حل أكوام من المهام باستخدام الملح و Ansible. ولكن يحدث أيضًا أنك تحتاج إلى تسجيل الدخول بانتظام إلى مجموعة من عربات اليد عن بُعد وتنفيذ مجموعات من الأوامر هناك. لهذا ، هناك النسيج
- دعم قوائم المضيف المختلفة - يمكنك تنفيذ الأوامر على خوادم قاعدة البيانات ، في كتلة التطبيق - فقط اكتب السيارات البعيدة في البرنامج النصي.
- سياسات ترخيص مختلفة لعربات اليد - يمكنك استخدام كل من المفاتيح وكلمات المرور.
- تقسيم البرنامج النصي إلى أوامر فرعية ، وتجميع الأوامر الفرعية في فرق أكبر - يمكنك إنشاء بنية منطقية معقدة بشكل تعسفي للرمز الذي تريد تشغيله.
- وبطبيعة الحال ، يمكنك أن تتداخل مع رمز الأمر الطرفي في الكود أيضًا!
تم بناء Fabric حول Paramiko وبصفة عامة يمكنك تنفيذ الأوامر باستخدام مكتبة الاتصال SSH المنخفضة المستوى هذه. لكن Fabric يوفر المستوى اللازم من التجريد ، مما يجعله واضحًا وسهل الاستخدام.
يقوم هذا lib بتحويل برنامج نصي بسيط إلى تطبيق وحدة تحكم قوي بالفعل.
على سبيل المثال ، يمكنك إضافة سطر موجه الأوامر إلى واجهة النص.
from prompt_toolkit import prompt while 1: user_input = prompt('>') print(user_input)
وبعد ذلك ، يمكنك إضافة تاريخ الأوامر المستخدمة ، تمامًا كما في الجهاز الطرفي.
from prompt_toolkit import prompt from prompt_toolkit.history import FileHistory while 1: user_input = prompt('>', history=FileHistory('history.txt'), ) print(user_input)
ويمكنك إنشاء مطالبات تلقائية للخطوط من سجل الإدخال.
from prompt_toolkit import prompt from prompt_toolkit.history import FileHistory from prompt_toolkit.auto_suggest import AutoSuggestFromHistory while 1: user_input = prompt('>', history=FileHistory('history.txt'), auto_suggest=AutoSuggestFromHistory(), ) print(user_input)
وقم بتعليم المطالبات التلقائية لبعض الأوامر المحددة مسبقًا.
from prompt_toolkit import prompt from prompt_toolkit.history import FileHistory from prompt_toolkit.auto_suggest import AutoSuggestFromHistory from prompt_toolkit.contrib.completers import WordCompleter SQLCompleter = WordCompleter(['select', 'from', 'insert', 'update', 'delete', 'drop'], ignore_case=True) while 1: user_input = prompt('SQL>', history=FileHistory('history.txt'), auto_suggest=AutoSuggestFromHistory(), completer=SQLCompleter, ) print(user_input)
Liba بسيط للغاية ويجعل من الممكن إنشاء واجهة رائعة وقابلة للتخصيص بالكامل.
لماذا هذا؟
سيسمح لك الاهتمام ببرامج لمرة واحدة ، على ما يبدو ، بكتابة التعليمات البرمجية لا للطرد ، ولكن أدوات وحدة التحكم التي يمكن إعادة استخدامها بسهولة لاحقًا. هذا يوفر الوقت ، وبالطبع ، يجعل العمل مع البرامج النصية أكثر متعة.