مكتبة الموارد: مستودع jc - اختصار رهيب للمبرمجين


💎 مورد تقني مميز: jc

يا جماعة الخير، كم مرة صار معاك السيناريو ده؟ تكون شغال على سكريبت أتمتة بسيط، أو يمكن بتحاول تاخد معلومة معينة من مخرجات أمر في Terminal. مثلاً، `ls -l` عشان تشوف تفاصيل ملفاتك، أو `df -h` عشان تعرف مساحة القرص، أو `ps aux` عشان تراقب العمليات.

الناتج اللي بيطلعلك؟ كله نص (text). مجرد سطور ورا بعض. حلو لعين البشر عشان تقراه وتفهمه، لكن لو عاوز السكريبت بتاعك يفهمها ويحللها، هنا تبدأ المشكلة.

تبدأ بعدها رحلة العذاب مع `grep` و`awk` و`sed`، أو يمكن لو بتكتب بايثون، بتغوص في بحر الـ `.split()` والـ Regular Expressions (اللي بناديهم اختصاراً "ريجيكس"). وتفضل تجرب وتعدل، ومرات السكريبت يتكسر لو سطر واحد بس من ناتج الأمر اتغير. يا الله، وجع راس وتضييع وقت! كأنك بتحاول تاكل شوربة بشوكة. محتاج حاجة تمسك السطور دي وتفهمها كبيانات حقيقية، مش مجرد حروف ورا بعض.

هنا يجي دور بطلنا الخفي اللي اسمه **`jc`**.

تخيل كده، لو ناتج أي أمر في الـ Terminal - أو حتى أي نوع ملفات مشهور زي `csv`، `ini`، أو حتى مجرد نص عادي - يتحول بلمح البصر لـ JSON أو YAML أو حتى Dictionary في بايثون! يا سلام! بدل ما أقعد أحاول أحلل نص معقد، أقدر أتعامل معاه كبيانات منظمة.

**`jc`** بيعمل بالضبط كده. هو أداة سطر أوامر (CLI tool) وفي نفس الوقت مكتبة بايثون. بتاخد ناتج الأوامر الشائعة زي `ls` و`df` و`ps` وغيرهم كتير، وتحوله مباشرة لـ JSON أو YAML. ده معناه إيه؟

1. **لو بتحب `jq`:** تقدر ببساطة تعمل `ls -l | jc | jq '.[] | select(.size > 1000) | .name'` وتطلع أسماء الملفات اللي حجمها أكبر من كيلوبايت واحد، بكل سهولة وبدون حركات بهلوانية.
2. **لو بتكتب سكريبتات بايثون:** بدل ما تعمل `subprocess.run` وبعدها تبدأ `.splitlines()` و`.split()` وتتوه، ممكن تستخدم مكتبة `jc` في بايثون، تعطيه النص، ويرجعلك قائمة من الـ Dictionaries جاهزة للاستخدام. تتعامل معاها كأنها بيانات طبيعية، مش نص محتاج تفكير.
3. **تبسيط الأتمتة:** أي سكريبت أتمتة بيعتمد على تحليل ناتج الأوامر هيصير أبسط وأقوى وأقل عرضة للكسر. البيانات منظمة، سهل جداً توصل لأي جزء منها.
4. **تنوع المدخلات:** مش بس أوامر Terminal. لو عندك ملف `CSV` وعاوز تحوله لـ JSON، أو ملف `INI`، أو حتى `fstab` أو `passwd`، `jc` عنده parsers مخصصة كتير تقدر تحول كل ده لـ JSON بكل بساطة.

خلاصة القول، `jc` ده مش مجرد أداة، ده مغير قواعد اللعبة. بيحول الكابوس بتاع تحليل ناتج الأوامر والنصوص العادية لأمر ممتع ومنظم. بيخليك تركز على المنطق اللي تبنيه على البيانات، بدل ما تضيع وقتك وجهدك في محاولة استخراج البيانات نفسها.

لو مريت بنفس السيناريو اللي حكيته ده، جرب `jc`. صدقني، راح تكتشف إنك كنت عايش في العصر الحجري قبل ما تعرفه. فعلاً، أداة لا غنى عنها في صندوق أدوات أي مبرمج أو مهندس DevOps.
// GitHub Link > https://github.com/kellyjonbrazil/jc