كونك مطورًا حديثًا بالكامل


أنا أعيش على هامش التقاء تكنولوجي. وعلى الهامش بالمعنى الجغرافي. وهذا يعني أن:


  • لم أذهب قط إلى مؤتمرات مهنية. لمجرد أنها لم تُمنح مثل هذه الفرصة.
  • لم أشتر قط دورات تدريبية: من الغريب بالنسبة لي أن أدفع مقابل ما يمكنك تعلمه على هذه الإنترنت أو الكتب. من المغري ، بالطبع ، الحصول على معرفة مركزة ، مدعومة بمهام عملية ، للحصول على شهادة. ولكن لهذا لم يكن لدي المال أو الوقت.
  • أنا متمسك بالنسك الرقمي: ليس بإرادتي الحرة ، ولكن كنتيجة لإعادة الهيكلة الأبدية في بلدنا. في فترات قصيرة من الاستقرار المالي ، أقوم بتحديث الإلكترونيات على أساس متبقي. حتى الآن أنا أكتب هذا النص على Core2Duo قبل عشر سنوات. لا تزال تنتظر الهضبة المستقرة التالية على منحنى الأرباح.
  • ثلاث مرات في حياتي اشتريت الألعاب. في 90s. وكانت هذه أشرطة لطيف عفا عليها الزمن. إنني أنظر إلى شراء البرنامج على حين غرة: عندما استخدم الجميع البرامج المقرصنة ، فقد استخدمتها أيضًا دون أن أفهم جوهر المشكلة. وبعد ذلك ، في بداية العقد الأول من القرن العشرين ، انتقلت بالكامل إلى نظام Linux ولم يكن هناك شيء يمكن شراؤه.
  • والمثير للدهشة أنني لم أفقد أبدًا أي هاتف نقال ، منذ بداية ظهور GSM-communication. ولم يكسروا قط أو لم يتم إصلاحهما. جميع القطع الثلاث على الرف ، والرابع ، الهاتف الذكي ، يكمن في جيبك. عمره خمس سنوات. ليس لدي أي خبرة في شراء برنامج على Google Play ، ولا أعرف حتى كيفية القيام بذلك. الزوجة تعرف ، لكنني لا أعرف.
  • أتوسل إلى مقدمي القائمة السوداء وعدم الاتصال بي مع عروض "شراء الإنترنت" أو حزمة التلفزيون. لأنني لا أملك جهاز تلفزيون ، ولدي الإنترنت الحد الأدنى للسرعة الكافية. أنا أطلب منك ألا تخبرني عن التعريفات الجديدة للاتصالات المتنقلة ، لأنني اخترت أرخص المتاحة.
  • لم أر أبداً أجانب ناطقين باللغة الإنجليزية. ولم يتحدث أبداً مع الأجانب بصوت. لم تُمنح مثل هذه الفرصة في ركن الدببة ، رغم أنها ستكون مثيرة للاهتمام. أنا أضخط لغتي الإنجليزية ببطء ، لكنني أحتاجها فقط لقراءة الأدب.

ربما بما فيه الكفاية. من أنا ، وماذا أفعل في هبراهار؟ الحقيقة هي أنني ... أنا ناجٍ دائم. بمعنى آخر ، مطور مكدس كامل حديث. أوه ، أستطيع أن أتخيل كيف عبث المبرمجين الشخصي الآن! Fullstack ... ماذا يمكنني أن أقول لهم؟ يا رفاق ، سأكون سعيدًا بضخ المهارات في اتجاه واحد. سأكون سعيدًا ، مثلك ، لتغمر نفسك بالموضوع وتصبح معلمًا متخصصًا بدرجة عالية. ولكن لسوء الحظ ، فإن الواقع هو أنه في المناطق التي يتوجب على أي شخص في موقع بعيد أن يتشبث بها في أي وظيفة ، ليس فقط أن يغضب أو يصبح سائق سيارة أجرة.


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


اللغة والتكنولوجياموضوع المشروع
C & جامع x86للروح
FoxPro 2.6 ، Netwareالضرائب والمحاسبة
PHP4 & LAMPتطوير الويب
AnSYS و StarCD و MathCADتحليل القوة ، وحساب تدفق السوائل والغاز
1C v7مستودع المحاسبة ومسك الدفاتر
C ++ 98الإرساء والألعاب
PHP5 و LNMP و Codeigniterتطوير الويب
C ++ 03/11 & Qtالبرمجيات مفتوحة المصدر
1C v8 و PostgreSQL و Linuxالعمليات التجارية في المنشآت النووية
بيثون 2.7تنبيهات الرسائل القصيرة
PHP7 و LNMP و Yii2تطوير الويب
C ++ 11 & Qt & QML & Javaرسم الخرائط والملاحة ، وتطوير المحمول لالروبوت
PHP7 و LNMP و Laravel و SIPتطوير المواقع الإلكترونية والاتصالات الهاتفية

نعم ، أنا نفسي خائف من هذا hodgepodge. أي نوع من رمي ساحر؟ هل هذا صحيح؟ تحليل قوة الويب - محاسبة الأسهم - الألعاب ... محطات الطاقة النووية ، رسم الخرائط ، الاتصالات الهاتفية. المؤلف ، هل أنت جاد؟ Absolyutli! الحياة ستضغط - لا تستيقظ كثيرًا.


حافة الانتقال


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



ولإكمال الصورة ، هناك منشورات أخرى:



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




لذا ، فإن مشروعًا واعداً لتطبيق الهاتف المحمول لنظام Android لأجهزة الملاحة المخصصة يغلق بحدة. بالأمس ، كتب المطور الرمز الخلفي في C ++ والأمام في QML ، وربط الكود الأصلي إلى Java عبر JNI ، واليوم يجب عليه أن يبحث بشكل محموم عن شاغر مطور C ++ على الموقع البعيد. إن سوق C ++ الحديث هو أن العثور على صاحب عمل في روسيا باستخدام C ++ على موقع بعيد يعد نجاحًا كبيرًا. يريد جميع أصحاب العمل رؤية مبرمج C ++ في المكتب. الشهر في البحث صفر كامل. حان الوقت لإعادة التدريب ، تسمح ميزة الخلفية.


تعريف


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

الانتقال إلى مهمة جديدة


فجأة ، يأتي لي مستخدم haar من haar ويأخذه إلى فريقه. لديه العديد من المهام المعلقة ، وأنا أطبّق خدمة ويب نموذجية للاختبار. كما هو مخطط ، تقوم خدمة الويب بإخطار المستخدمين بأحداث مختلفة من خلال قنوات الاتصال المختلفة ، بما في ذلك المكالمات الهاتفية. نتيجة لذلك ، ظهر موقع QrCall.org ، والذي كُتب عنه بالفعل على موقع Habrahabr: اذهب إلى هناك - لا أعرف من أين .


في المستقبل ، سأكتب على الفور المواعيد النهائية: استغرقت مناقشة المهمة الفنية وكتابتها أسبوعين ، واستغرق الأمر شهرًا ونصف لإنشاء التطبيق الأول ووضعه قيد الإنتاج.


لفهم ، حتى الآن ، تبدو خدمة الويب هذه كما يلي (إصدار المطور):



لذلك ، نحن بحاجة إلى القفز من C ++ إلى PHP7 ومجموعة الأدوات المطابقة للحقائق الحديثة. لا يوجد وقت لتراكم بوتين. توجد Straustrup و Schildt و Gottschling و Salter و Klepper على الرف البعيد. بالتوازي مع كتابة المعارف التقليدية ، أتذكر أنها اخترعت ذلك في PHP7. يقدم الاستعلام "الجديد في PHP7" العديد من المقالات حول Habrahabr وفي برمجة المدونات. نعم ، مساحات الأسماء والواردات ، نوع جديد من المشغل الثلاثي وأي أنواع من السكر النحوي وأنواع العددية وغيرها مثلهم ، فصول مجهولة المصدر ، إنهاء الإغلاقات والمولدات ... بالنسبة للجزء الأكبر ، كل شيء مألوف. مرة أخرى ، ألاحظ بنفسي أن PHP هي متعة سماوية مقارنة بالمزايا الشديدة.


اختيار الأداة


مهاتفة


الأكثر قلقا بشأن تنفيذ الاتصالات الهاتفية في المستقبل. هل اتقن؟ من الواضح على الفور أنه عليك العمل مع SIP ، لكن كيف؟ هناك ذاكرة معلقة في ذهني اعتدت أن ألعبها مع بعض عملاء SIP console ، بل ويمكنني أن أطلب رقم هاتف وإجراء مكالمة. لحل المشكلة سيكون هذا كافيا. في الحالة القصوى ، عليك أن تشعر بالارتباك مع النجمة. أنا أتصل بإشارة مألوفة ، وأصف جوهر المشكلة ، وأطلب منك تذكيرني بنوع عميل وحدة التحكم الذي يمكن أن أشعر به. الحكم لا لبس فيه - وهذا هو Linphone و linphonec وحدة التحكم الخاصة به . لكن الاتصال برقم في وحدة التحكم لا يكفي. لا يزال يتعين عليك تشغيل ملف الصوت في الهاتف الظاهري. قم بتثبيت Linphone ، انتقل إلى وحدة التحكم الخاصة به ، وانظر إلى الاحتمالات. لذلك ، من الممكن التبديل من جهاز صوتي إلى ملف. هذا جيد وفي وحدة التحكم ، يوجد أمر تشغيل يقوم بتشغيل ملف صوتي لتشغيله. من حيث المبدأ ، لا شيء أكثر حاجة.


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


إطار PHP ومدير الحزمة


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


التالي هو السؤال عن الإطار. أجد أنه في عام 2019 ، لم تعد Yii2 ذات صلة ، وعلقت Yii3 في حالة متوسطة. ما تبقى؟ بالنسبة إلى Zend و Symfony ، لم أنضج بعد ، لذلك لا يوجد عملياً أي خيارات - فقط Laravel . قرأت الوثائق ، أنظر الكتيبات ، أطلب كتابًا من مؤلف ناطق بالروسية (اتضح أنه معقول للغاية ، ما هو المطلوب للبدء). بعد Codeigniter القديم و Yii غير ذي صلة ، من السهل فهم إطار Laravel ، يمكنك أن ترى على الفور كيف تطورت فكرة البرمجة في تصميم تطبيقات الويب. كل ما كان يحلم به قد تم تنفيذه بالفعل وتشغيله وتضخيمه مع الأساليب القياسية. نعم ، لم يتم تحميل المشروع ، لذا أستطيع تحمل بعض الانحناء النوبي في التنفيذ.


لقد وضعت Laravel "افتراضيًا" ، وأقترح على الملحن أن يقرر بنفسه أي إصدار من Laravel مناسب حاليًا. انه يضع 5.5. حسنًا ، دع هذا الإصدار يكون أكثر من 5.8 ، لذلك سيكون حل المشكلات أسهل. نحن لا نسعى الابتكار.


الآلية الوقائية الوطنية


لكي تعمل بعض مكونات Laravel ، على سبيل المثال ، نظام التجميع والتصغير Mix CSS (الوظيفة الإضافية لـ Webpack) ، يتطلب الخادم وقت تشغيل JavaScript Node.Js و npm إدارة حزم JavaScript المكتوبة بلغة JavaScript. يحتوي تطبيق Debian Linux Stable الذي أستخدمه بالفعل على حزمة npm . ومع ذلك ، فهو إصدار قديم إلى حد ما ، وغير مناسب للبنية التحتية Laravel 5.5. اكتشفت كيفية التثبيت من مصادر خارجية ، أجد deb.nodesource.com ، أقوم بالتثبيت منه. هم ، غريبة ، في نفس الحزمة ، يتم تثبيت npm مع Node.Js. هذه ليست طريقة يونكس على الإطلاق ، ولكن حسنا. الشيء الرئيسي الذي يعمل.


ماكياج


فكرة مشروع QrCall.org هي دعوة المستخدم من خلال رمز الاستجابة السريعة . وهذا يعني أن الزوار سوف يدخلون الموقع من الأجهزة المحمولة ، وذلك باستخدام الكاميرات التي سيتم فحص رمز QR الخاص بها. في الوقت نفسه ، من المحتمل أن يتم تسجيل المستخدم وإعداد التنبيهات وطباعة رموز QR من أجهزة كمبيوتر سطح المكتب. لذلك ، لا غنى عن تخطيط التكيف.


لاحظت على الفور إنشاء محتوى للجوال / سطح المكتب على الخادم من خلال تحليل برنامج UserAgent. هذا ليس نهجنا لعام 2019. هنا سوف يساعدنا إطار Bootstrap CSS بالتأكيد. بشكل عام ، يعد تخطيط تطبيقات الويب موضوعًا منفصلاً وعملاقًا وواسعًا ، ينبغي معالجته بواسطة متخصص منفصل. بالنسبة لي في تطوير الويب ، لا يوجد شيء أكثر تعقيدًا من الانتقاء بالتخطيط. لقد فهمت منذ فترة طويلة أنني فرضت الطقوس الدينية. أقضي قدراً هائلاً من الوقت لوضع مسافة بادئة أخرى منتظمة ، أو لمحاذاة العديد من العناصر. لكن ليس لدينا موارد للمبرمج ، لذا عليك أن تفعل ما تستطيع ، فمن المستحسن أن تكون النتيجة سلسة وجميلة.


السؤال هو: ما هو إصدار Bootstrap الذي يجب استخدامه؟ 3 أو 4؟ اتضح أن Bootstrap يأتي فوراً مع لارافيل 5.5 ، وهذا هو الإصدار 3.x. لا يوجد وقت لمعرفة كيفية إعادة تشكيل البيئة في Bootstrap 4 ، لذلك أترك الإصدار 3. في النهاية ، يستخدم مئات الآلاف من المواقع Bootstrap 3 على الإنترنت ، مما يعني أنها تقنية لائقة لاستخدامها.


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


إليك ما تبدو عليه الصفحة في إصدار سطح المكتب:



وها هي في عرض الجوال:



تصميم


كيف سيتم استخدام الإطار؟ لدي هذا النهج: إلى أقصى حد استخدام جميع مكونات الجاهزة من freverka ، ولكن مع شرط واحد: إذا كان هناك فهم جيد لكيفية عمل هذا المكون. وكما قال أحد الأشخاص الذين يعرفون Zen Laravel بالفعل ، "لا يتعلق الأمر بكون الوثائق مكتوبة بلغة غير روسية ، ولكن حول حقيقة أنه حتى في اللغة الإنجليزية الأصلية للإطار ، فإنها ليست دلالة دائمًا." لذلك ، أعتقد أنه إذا لم تتمكن من اكتشاف مكون أو طريقة بسرعة ، فمن الأفضل أن تفعل شيئًا أكثر بساطة باستخدام طرقك الخاصة بدلاً من كتابة التعليمات البرمجية التي تفهمها بنفسك.


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


التكنولوجيا


لذلك ، لتلخيص ما سبق ، حصلت على كومة التكنولوجيا التقليدية التالية:


  • نظام التشغيل: Linux (اخترت Debian Stable)
  • اللغة: PHP7
  • الإطار: لارافيل
  • صفارات الواجهة الأمامية: Bootstrap 3 + Vue.js
  • قاعدة البيانات: MariaDB (ويعرف أيضا باسم MySQL)
  • خادم الويب: NGinx
  • الاتصال الهاتفي: SIP + linphonec / linphonecsh
  • VCS: بوابة

نعم ، ليس المكدس الأكثر عصرية وتقدماً. لكننا نحتاج إلى القيام بالأعمال التجارية ، وعدم ممارسة التفاف البيئة في حاويات Docker وعدم الترويج لفكرة تطوير JS-only.


تحويل


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


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


الخدمات المدفوعة


عند وضع موقع على شبكة الإنترنت ، يجب عليك أن تدفع على الخدمات المختلفة. استضافة واسم المجال هي دائما مدفوعات إلزامية تقريبا. أخذنا الاستضافة بتكلفة منخفضة ، مدفوعة مقابل 2 غيغابايت من ذاكرة الوصول العشوائي ، بمعدل 1 غيغابايت لقاعدة البيانات ، والباقي - لنظام التشغيل وتنفيذ البرنامج النصي. كان هناك 2 من النوى المعالج في التعريفة ، على الرغم من أنني أعتقد أن واحدة من شأنه أن يفعل ما يرام مع الأحمال لدينا. مساحة القرص في 20 جيجابايت أكثر من كافية لمشروعنا. أثناء عملية النشر ، كانت هناك حاجة إلى تجميع linphonec ، لأنه كان يوجد على سطح مكتب مطوري نظام Linux ديبيان قديم أكثر من صورة الجهاز الظاهري النهائية المقدمة من قبل المضيف ، وكانت الحزمة القياسية من المستودع تحتوي على إصدار قديم من هذا البرنامج مع العديد من "الميزات" غير السارة. وهكذا ، لتجميع linphonec ، لم يكن 2 جيجا بايت كافيًا بالنسبة لي. سحر القوالب في C ++ يستهلك الذاكرة كما لو أنها لم تكن بداخلها ، لذلك اضطررت إلى إعداد مبادلة ، وبعدها تم التجميع بنجاح.


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


في واقعنا الحديث ، لا يمكنك الاعتماد على وجود خدمات بريد إلكتروني مجانية. وفي حالتنا ، هناك حاجة إلى نشرة البريد الإلكتروني لإرسال تنبيهات مختلفة. في تجربتي ، كل المحاولات لتنظيم إرسال العديد من الرسائل عبر Yandex.Mail أو من خلال Google.Mail تؤدي فقط إلى حقيقة أن خوادم البريد المستقبلة ، بعد ثلاثة أو أربعة أحرف ، تحدد الرسائل كرسائل غير مرغوب فيها. وهذا هو ، تنشأ مشاكل بالفعل في مرحلة التصحيح ، ناهيك عن الإنتاج. لذلك ، كان علي أن أزعج خدمة Mailgun ، التي يتم من خلالها تسليم الرسائل بسرعة ودون مشاكل. لا يوجد سوى سوء فهم واحد مع Mailgun: في بعض المقالات يكتبون أنهم يقدمون مجانًا إرسال 10000 رسالة شهريًا. وعلى موقع Mailgun نفسه ، إنه مكتوب بطريقة زلقة وأنا أفهمه على أنه 10000 خطاب من لحظة التسجيل. , , .


Mailgun . , , . , , SMTP. Laravel Mailgun, .



, . INPUT . . , SSH, . — DROP INPUT. , , .


SIP-, SIP- , , nf_conntrack_sip . , NAT, nf_nat_sip , , .



, . . — , , MySQL. — , . zip-, , , . — . rsync.


, — , borg . , .



GIT , , . . , , , ( ), - ( git , artisan ). /etc/sudoers , , .


, Laravel , . , , . , .


, ! — . ? : ! , CI . , , CI-, -.



. , ? ! - ? , ! . , .


, Laravel, CSS- Bootstrap 3 Bootstrap 4. - Bootstrap 4 Bootstrap 3, flex- , Bootstrap 3 , . Bootstrap 4, , .


, , HTTPS. , , . HTTP HTTPS, Let's Encrypt HTTPS - NGinx , .


, . , , . , , logrotate , .


. , , . -, . , . , , . , Laravel , , , . , , , .


يؤدي


, " " " ". , . , , , , : , , , ( , , ).


? "". ? -, , . , , , , . , .


, , " , , " , . . ++ , . : , " ", , , , , . -. - , . , , . - : , - , , , .


— , - , , , . , proof-of-concept, , , , . , — , .


, - . , , . , - , , -. , , , ...


? : -, , , , , .

Source: https://habr.com/ru/post/ar457618/


All Articles