رابط

الانبهار التقني

تم نقل التدوينة إلى المجلة التقنية على هذا الرابط:

http://www.it-scoop.com/2014/04/tech-wow/

إطلاق موقع Arabic Git

بحمد لله أطلقت يوم أمس الجمعة موقع Arabic Git

Arabic Git موقع يُعنى بجمع وتوفير المصادر العربية لتعلم نظام إدارة النسخ Git، يهتم أولا بتوفير محتوى للمبتدئين بالنظام دون إغفال المتقدمين.

نُحاول عبر هذا الموقع سد حاجة في المحتوى العربية عبر ترجمة أهم المصادر الأجنبية المتعلقة بالنظام، أو كتابة مقالات عربية أصيلة نحسبها على جودة عالية.

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

الموقع تحت إدارة وليد زيوش (01walid).

للمزيد حول الموقع راجع موضوع الافتتاحية.

لا تبخلوا بملاحظاتكم واقتراحاتكم حول الموقع.

إحصائيات المطورين الجزائريين على Github

اكتشفت موقع Github Archive، الذي هو عبارة عن قاعدة بيانات ضخمة للمسار الزمني لأحداث Github جميعها لغرض تسجيلها وإتاحة إمكانية عمل إحصائيات بها، الجميل أيضا هو تسهيل المهمة عبر ربط القاعدة مع خدمة Google BigQuery، القاعدة مهيئة على شكل كائن JSON يمكن التعرف على هيكلته من هنا. وهذا مثال عن النتيجة.

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

نبدأ مع أنشط المشاريع الجزائرية (أو أجنبية لكن يشارك فيها جزائريون):

الاستعلام الذي أجريته (Github يعرّف الأنشط تلك التي تملك أكثر عمليات pushes)

SELECT repository_name, COUNT(repository_name) AS pushes, repository_description, repository_url, actor_attributes_login AS username, actor_attributes_name AS full_name, actor_attributes_location AS country
FROM [githubarchive:github.timeline]
WHERE TYPE="PushEvent" AND
repository_fork == "false" AND (
LOWER(actor_attributes_location) CONTAINS "algeria" OR
LOWER(actor_attributes_location) CONTAINS "algérie" OR
actor_attributes_location CONTAINS "الجزائر"
)
GROUP BY repository_name, repository_description, repository_url, username, full_name, country
ORDER BY pushes DESC
LIMIT 100

النتيجة لأكثر 20 مشروع جزائري نشيط (كصورة)

Most active algerian githubers
تحميل النتيجة لكامل المشاريع على هيئة ملف cvs.

أنشط المطورين الجزائريين على Github:

كذلك وجدت أن الأنشط هم أولاءك الذين لديهم أكثر عدد من المشاريع المنشأة على Github وبالتالي قد لا تكون النتيجة دقيقة كفاية لكنها تقرب بشكل جيد الصورة العامة ﻷنشط المطورين.

الاستعلام

SELECT actor_attributes_location, actor_attributes_login, COUNT(repository_url) AS project_count
FROM [githubarchive:github.timeline]
WHERE repository_fork == "false" AND (
LOWER(actor_attributes_location) CONTAINS "algeria" OR
LOWER(actor_attributes_location) CONTAINS "algérie" OR
actor_attributes_location CONTAINS "الجزائر"
)
GROUP BY actor_attributes_location, actor_attributes_login
ORDER BY project_count DESC

النتيجة لأكثر 21 مطور نشط (العدد يؤخذ على حسب طول الشاشة لدي ﻷخذ الصورة)

Most active algerian githubers

تحميل كامل النتيجة 

نأتي إلى الصراع الأسطوري المفضل،

ما هي لغات البرمجة المشتهرة عند الجزائريين في Github ؟

النتيجة جميلة لحد ما :)

الاستعلام

SELECT repository_language, COUNT(repository_language) AS repos_by_lang
FROM [githubarchive:github.timeline]
WHERE repository_fork == "false" AND (
LOWER(actor_attributes_location) CONTAINS "algeria" OR
LOWER(actor_attributes_location) CONTAINS "algérie" OR
actor_attributes_location CONTAINS "الجزائر"
)
AND TYPE == "CreateEvent"
GROUP BY repository_language
ORDER BY repos_by_lang DESC
LIMIT 100

النتيجة:

most famous PL in Algerian githubersتحميل النتيجة الكاملة

بسبب الحدود التي تفرضها Google BigQuery وهي 100GB للشهر فقط مجانا، وبسبب ضخامة قاعدة بيانات Github لم أتمكن من عمل المزيد من الإحصاءات، لكنها ستأتي إن شاء الله (سأحمل القاعدة وأجري عليها  الاستعلامات محليا) وقد أحدث هذا الموضوع لاحقا.

هذه بعض الإحصائيات الأخرى التي أجريتها بناءا على النتائج السابقة (يعني ليس شرطا أني أجريت استعلام SQL).

  • العدد المقدّر للمستودعات -repositories- الجزائرية هو 159 وهو عدد المستودعات الجزائرية التي تم مسحها والإحصاء عليها.
  • العدد المقدر للمطورين الجزائريين الذين وضعوا الجزائر كبلد لهم هو 99 (فقط!) لو نفرض أن نصفهم لا يضع البلد فيعني أن المطورين الجزائريين حوالي 200 فقط على Github وهو لا يزال رقما محتشما.
  • أكثر المشاريع التي عمل لها الجزائريون Fork هو Twitter Bootstrap :)

الإحصائيات القادمة ستضم:

  • أكثر المطورين متابعة
  • أكثر المشاريع متابعة Watched
  • أكثر المشاريع المفضلة Starred
  • المشاريع التي تُعنى باللغة العربية
  • أنشط المشاريع الجزائرية التي أصحابها جزائريون فقط

وغير ذلك إن شاء الله.

تنصل

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

نصيحة لك إن كنت مطورا جزائريا:

  • افتح حسابا على Github وشارك ما تقوم به من مشاريع تطوعية، الشركات الآن أصبحت تضيف Github كمعيار لتقييم المبرمج، طبعا لا أتحدث عن الجزائرية منها :) لكن من يدري؟ ألا نريد أن نغيّر من الوضع؟
  • إذا كان لديك حساب في Github ففضلا لا أمرا، ضع بلدك الجزائر في وصف حسابك
  • يفضل أن تضع البلد + الولاية مثلا: Annaba, Algeria، هذا سيسمح لي مستقبلا بدراسة توزيع المطورين الجزائريين عبر مختلف الولايات وما هي أشهر لغات البرمجة في كل ولاية :)
  • إذا كنت متاحا لفرص العمل فضع Available for hire في حسابك.
  • شارك بصدق ولا تبحث عن الشهرة :) (لا تخف فمشاريعك وشفرتك هي التي تتلكم عوضا عنك)

وشكرا :)

لا تتردوا في ترك التعليقات والاقتراحات :)

مزامنة ملفات المشروع عبر الـ FTP باستخدام Git

إذا كنت من مستعملي المنصات السحابية الخدماتية (PAAS) مثل Heroku أو غيرها، فعلى الأرجح جربت متعة وإنتاجية الـ Git-based deployment/development، لكن قد تصادفك مواقع أو مشاريع أين يجب عليك العمل على استضافة عادية محدودة، أو بحساب محدود الصلاحيات، أين قد لا تملك حتى حساب ssh بل فقط نفاذا عبر FTP.

بينما كنت أعمل على أحد المشاريع في استضافة من هذا النوع، كان علي رفع الملفات لتجريب المشروع على بيئة الخادم الحقيقية وليس البيئة المحلية، المشكل أنه كان علي تفقّد أيّ من الملفات قمت بتعديلها لرفعها لوحدها، قافزا بين المجلدات، أرفعُ هذا الملف في مجلد الـ Views وهناك آخر في Controllers أو Models، آه ولا تنس الملف الفلاني في مجلد الصور الموجود في مكان آخر،….  وإن كنت في وضع “الكسول” فكان يجب علي رفع مجلد المشروع بأكمله مما يتطلب وقتنا لانتهاء الرفع.

أكمل قراءة الموضوع

مائة مقالة على المجلة التقنية

تم بحمد الله وفضله، الوصول إلى 100 مقالة لي على المجلة التقنية، وذلك يوم أمس ليلة الجمعة.
يمكن الوصول إليها من هنا.

it-scoop100news

صراحة، ولو أن التجربة متواضعة، لكني استفدت منها الكثير في مجال الكتابة التقنية باللغة العربية على مدار أكثر من عامين أو ثلاثة. قد أكتب عن هذه التجربة وعن الكتابة التقنية العربية لاحقا، لكن ضيق الوقت حاليا يمنعني من الكتابة عنها الآن.

إذا أردت كلمة تلخص الأمر، فإليك التالي:

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

أشكر القراء المتابعين، المعلقين، وكل من صحح لي كلمة.

عندما كنت مبتدئا

هذه التدوينة ترجمة لمقال رياض من الفرنسية، لما وجدت فيها من عبر في مجال تطوير الويب.

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

ماذا كنت أفعل عندما كنت مبتدئا ؟ أكمل قراءة الموضوع

البرمجة الدفاعية Defensive programming ومفاهيم عامة.

ملاحظة: تنقسم هذه التدوينة إلى جزئين، بسيط وآخر متقدم -نوعا ما- في آخرها.

هدفها: التعريف ببعض المفاهيم المغيبة.

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

البرمجة الدفاعية Defensive programming: هي باختصار أن تمتلك حس الشك والاحتياط عند كتابتك لمقاطع الشفرة المصدرية حتى لا تكون مدعاةً للغلط error-prone، من ذلك: التحقق من فاعلية المدخلات وتمحيصها قبل تمريرها أو استعمالها Validation، مراعاة الاستثناءات Exception Handling، التحقق من المدخلات والمخرجات Secure IO Handling، التحرز من فيض الذاكرة، وحتى، تصيير أنواع المتغيرات/الكائنات إلى النوع الصحيح/الأصح Type casting. أكمل قراءة الموضوع

حل مشاكل ظهور الحروف العربية على منصة Qt

يتساءل الكثير من الاخوة عن اللغة العربية في ++Qt/C، لذا قررت أن أفرد هذا في تدوينة، الأمر بسيط، Qt مكتبة تدعم الـ Unicode بشكل جيد وغيرها من الترميزات، قبل أن تكمل القراءة يفضل أن تقرأ هذا أولا:

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!).

أكمل قراءة الموضوع

عن نبراس، وحكاية قصيرة عن واقع الدراسة الأليم.

هذه تدوينة صغيرة على السريع، حول برنامج نبراس،…

يبدو أداةً صغيره لاتزال في بدايتها حتى الآن، لكن أعلم أن الجبال من الحصى، ما زاد دفعي لكتابته هو القصة التالية:

أذكر في السنة الثانية جامعي تخصص إعلام آلي، في جامعة باجي مختار عنابة، تم تعويض المادة الاختيارية Developpement web بالمادة Systèmes multi-agents، يبدو عاديا لدى القارئ، لكن الطلاب من زملائي ذاك الوقت عانوا كثيرا، لما؟ أولا لا يوجد ممن درس هذه المادة ممن سبقهم من طلاب السنوات الفارطة، وبالتالي لا يوجد مرجع قريب، ثانيا… عن ماذا تتحدث؟ من الطلاب من لم يفهم ولاحرف من المادة مع أنه مواظب على حضور دروسها، فهناك مشكل عويص في اللغة الفرنسية (لا يحس له كثيرا سكان وطلاب العاصمة الجزائرية)، ناهيك عن استعمال المادة لمصطلحات تقنية جديدة.

أكمل قراءة الموضوع

هل قتل وقتنا “الخبيش” ؟

يبدو أني مدوّن مناسبات، فهذه ثاني تدوينة لي بعد تدوينة TEDxAlger ، والتي ستكون حول DzBlogDay أو بالأحرى حول موضوعه (من أجل الجزائر نبادر) .

نُبَادِر؟ … كلمة جميلة لكن قد يختلف في تفسيرها إثنان، لهذا أرى أنها الكلمة المفتاحية في موضوع DzBlogDay

أكمل قراءة الموضوع