Open smalinux opened 2 years ago
كان فيه برنامج BPF تحفه .. اتكلم عنه brendangregg مش فاكر اسمه دولقتى.. كان بيخليه يقدر يـ trace اى برنامج ويعرف ايه الـ files اللى فتحها.. وبكده اقدر بسهوله اوصل لكل الأماكن اللى الـ app ده بيقرأ او يكتب فيها...
أعذرني على التطفل لأني نوعاً ما حاسس أن دي حاجة خاصة بيك بس الفكرة شفتها عندك من فترة وبخطط أعملها كبرنامج كده بس المشكلة اللي قعدت أفكر فيها ووصلت لحل نوعاً ما مش سيء --كل ده في مخي ومبدأتش على أرض الواقع--
والمشكلة هي أن طبعاً زي ما أنت عارف الأغلب دلوقتي بيستعمل ssh-key ومتقدرش تعمل push غير بالkey ده ولازم تكتب الpassphrase في كل push تعمله
وده هيسبب عائق لأن الdaemon يشتغل فالحل اللي فكرت فيه هو إنه يكون في مثلا ملف بيتعمله generate عن طريق أن اليوزر يدي أمر معين للبرنامج ويديله الpasspharse كargument والبرنامج يشفره ويحطه في الملف ده وكل عملية push البرنامج هيفك التشفير ويستعمله وهكذا
معرفش الصراحة هل ده أحسن حل ولا لا لذلك كنت عاوزك تقول رأيك في الموضوع ده :)
سعيد انك اتحمست للفكره دى. @Hulxv اللى انا فهمته من كلامه انك بتتكلم بس عن فكره الـ daemon اظن دى مش مشكله كبيره اوى, انا بصراحه مافكرتش فى تفاصيل الـ daemon ده. بس انا عندى فى لينكس بقدر اعمل cache للـ ssh-key forever وبقدر اعمل push طول الوقت من غير اى مشكله ولا بيطلب منى user & password ممكن تراجع الـ .gitconfig بتاعى... شوف كمان اللينك ده: https://stackoverflow.com/a/5343146/5688267
المشكله الحقيقيه مش فى الـ daemon ,, لكن فى موضوع انك تعرف ملف الـ config لكل برنامج انت مهتم بيه ,,, تعرف strace ؟ ممكن بـ strace تقدر تحدد برنامج معين وتشوف البرنامج ده استخدم syscalls ايه... من ضمن الـ syscalls دى فى open syscall دى هتلاقى فى الـ params بتاعتها اسم وامتداد الملف اللى اتفتح.. وكذلك write syscall حاليا strace مش هو احسن حل, الـ bpf tools اسرع و optimal اكتر.. فيه اداة bpf انا مش فاكر اسمها بتقدر تديها اسم برنامج معين وليكن htop مثلا.. وهى بتقولك ايه كل الملفات اللى htop فتحها... وكمان كتب فيها.. كل اللى المفروض يحصل انك تاخد الـ output من الأداه دى وتاخد مسار الملفات دى وتعمله copy تحت backup dir وبعدين تعملها push
ده ملف بيسط جدا بيعمل push ,, لما بس بكتب make فى الـ terminal المفروض الـ deamon هو اللى يـ run ده اوتوماتك وينظم الموضوع اكتر ويكتب commit message محترمه. https://gist.github.com/smalinux/72249469e922f6963ae960151797539e#file-makefile
ممكن تفكر ان لو الـ deamon فشل انه يعمل push يبعتلك ايميل يقولك انه مش عارف يعمل push مثلا...
الاداة بتاعت الـ bpf اتذكرت فى الفديوه ده https://youtu.be/JRFNIKUROPE ممكن ابقى اتفرج تانى على الفديو ده واقولك بالضبط على اسم الاداه واصورلك فيديو ليك واشرحهالك بشكل مبسط فى المستقبل...
كمان حسب فلسفه unix اللى بتقول do one thing and do it good ممكن فعلا تفكر فى موضوع الـ daemon كحاجه abstract بعيداً على الـ configfiles ...
الصراحة انا موضوع الbpf مش فاهمه حبتين بعد حبة بحث لقيت أنه بيستخدم بطريقة ما لتحليل الأداء والصراحة عشان مكدبش عليك فأنا مفهمتش هو عبارة عن إيه بالضبط هل هو مكتبة او برنامج او حتى مفهوم بتتبني عليك برامج بس اللي فهمته أنه مستخدم في لينكس وفي شركات زي نتفليكس بتستخدمه
فياريت لو في شرح للموضوع ده سواء فيديو او مقالة هكون شاكر ليك
بس ليه أساساً ممكن نستخدمه في البرنامج ؟ هيفيدنا في ايه بالضبط ؟
اعتقد صعب نوعاً ما تفهم او تتخيل الـ bpf غير بعد ماتفهم اساسيات الكيرنال وتكتب كام kernel module لذلك نصيحتى انك تجاهل الجزء ده تماماً دلوقتى : ) وتركز على الاساسيات الأول...
لو في شرح للموضوع ده سواء فيديو او مقالة
كل حاجه كتبها Brendan Gregg وكل فيديو هو عمله حلوين كبدايه
بس ليه أساساً ممكن نستخدمه في البرنامج ؟
حاليا الـ bpf تعتبر زى المنظار الطبى, علشان تمسك برنامج وتتعامل معاه كـ blackbox من غير ماتقرأ ولا سطر كود وتشوف هو عمل بالضبط ايه فى النظام وغير ايه ...
تمام شكراً ليك جداً ولو حصل اي جديد أو تخطيط للبرنامج هبقى اكتبلك كومنت هنا 😄 وإن شاء الله هبقى أشوف موضوع الbpf ده وازاي ممكن أستفيد منه وشكراً تاني على كل اقتراحك ❤️
ملفات الـ config بالنسبالى بعتبرها ملفات قيمه جدا ومهمة ... زى مثلا htoprc فيه زى htroprc ملفات كتيره جدا لبرامج كتيره جدا.. وللأسف مش كلها موجوده تحت مكان واحد زى .config انا مثلا عندى config تحت /var/lib/pcp/pmdas//.conf لكن لأن دى ملفات نوعا ما حساسه لبرامج مش بشتغل غير بصلاحيات الروت. وبالتالى صعب اتابع كل الـ configs بتاعت كل البرامج .. غالبا هيكون عندى list كبيره لأماكن كتيره...
انا حابب اتابع تطور وتغير الملفات دى جوا النظام بتاعى... عايز اتابع الملفات دى واحط عليها مخبر يراقبها طول الوقت. ولو واحد فيهم اتغير ياخد منه backup ويحدثهولى... غالبا الناتج هيكون عندى عباره عن repo خاصه بنفسها زى الـ dotfiles هيكون اسمها مثلا configfiles
محتاج اعمل daemon يشتغل طول الوقت فى الـ background يصحى بعد ما افتح الجهاز مثلا بساعه... ويقارن الملفات دى ولو فيه تغيير حصل يعمل commit و push الـ commit هنا ماينفعش يكون فيه اكتر من ملف واحد بس.. واسم كل commit هيكون فيه اسم الملف اللى حصل فيه التغيير.
فائده الكلام ده كله.. لما اعمل نظام جديد.. هيكون عندى already كل ملفات الـ configs بتاعتى... واقدر آخر منها .. غير ان الموضوع مثير للفضول.. وانتى لو قدرت انظم الموضوع ده فعلا واعمل عليه control جامد جدا.. من غير ما اى ملف يقع منى هقدر بسهوله وقت لما يحصل خلل فى performance بتاع برنامج معين ارجع واشوف التاريخ بتاعه واشوف هل الـ configs بتاعته اتغيرت فى آخر كام شهر ولا لا. وكمان الـ version بتاع الـ app نفسه اتغير ولا لا... واقدر احدد الخلل حصل فين..