سؤال

إليكم الموقف: الشركة التي أعمل فيها الآن منحتني حرية العمل مع Java أو Python لتطوير طلبي. لدى الشركة خبرة أساسا في جافا.

لقد قررت الذهاب مع Python ، لذلك يسعدهم أن يطلبوا مني تقديم صيانة لجميع مشاريع Python/البرامج النصية المتعلقة بصيانة قاعدة البيانات التي لديهم.

ليس من السيئ التعامل مع كل هذه الأشياء ونوعها من المرح لمعرفة مقدار وقت الفراغ الذي قارنته بمبرمجي Java. هناك واحد فقط ولكن تخطيط المشاريع هو فوضى.

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

أثناء التفكير في الأمر في الأمر ، أدركت أنني لا أعرف كيفية معالجة ذلك ، لذلك هنا 3 أسئلة.

  • أين أضع البرامج النصية المستقلة؟ نحن نستخدم GIT كنظام الإصدار لدينا.
  • كيف تقوم ببنية تخطيط المشروع بطريقة لا يحتاج المستخدم إلى البحث بعمق في المجلدات لتشغيل البرامج (في Java قمت بإنشاء جرة أو جرة ونصي Shell للتعامل مع بعض عمليات bootstrap.)
  • ما هي الطريقة القياسية لإنشاء الوحدات النمطية التي تسمح بسهولة لإعادة الاستخدام (myCompany.myapp.mymodule؟)
هل كانت مفيدة؟

المحلول

أين أضع البرامج النصية المستقلة؟

أنت تنظمها "وظيفيًا" - بناءً على ما يفعلونه ولماذا يستخدمها الناس.

اللغة (Python vs. Java) غير ذات صلة.

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

نحن نستخدم /opt/thisapp و /opt/thatapp. إذا كنت تريد نقطة تثبيت مشتركة ، فيمكنك استخدام مسار مختلف.

كيف تقوم ببنية تخطيط المشروع بطريقة لا يحتاج المستخدم إلى البحث بعمق في المجلدات لتشغيل البرامج

أنت تنظمها "وظيفيًا" - بناءً على ما يفعلونه ولماذا يستخدمها الناس. في المستوى العلوي من أ /opt/thisapp الدليل ، قد يكون لديك __init__.py (لأنها حزمة) وربما أ main.py السيناريو الذي يبدأ العمل الحقيقي.

في Python 2.7 و Python 3 ، لديك runpy وحدة. مع هذا ، يمكنك تسمية البرنامج النصي الرئيسي من المستوى الأعلى __main__.py

http://docs.python.org/library/runpy.html#module-runpy

ما هي الطريقة القياسية لإنشاء الوحدات النمطية التي تسمح بسهولة لإعادة الاستخدام (myCompany.myapp.mymodule؟)

أقرأ عن packages. http://docs.python.org/tutorial/modules.html#packages

نصائح أخرى

أ حزمة هي وسيلة لإنشاء تسلسل هرمي للوحدة: إذا قمت بعمل ملف يسمى __init__.py في الدليل ، سوف يعامل Python هذا الدليل كحزمة ويسمح لك باستيراد محتوياته باستخدام الواردات المنقطة:

spam \
       __init__.py
       ham.py
       eggs.py

import spam.ham

يمكن للوحدات داخل الحزمة الرجوع إلى بعضها البعض - انظر المستندات.

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

import ourDB.clean
ourDB.clean.transaction_logs( )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top