المدونة

مقالات وملاحظات وروابط. برمجيات وذكاء اصطناعي وخط وسياسة — بهذا الترتيب تقريبًا.

مقالة31 دقيقة قراءة

لماذا يُخطئ الذكاء الاصطناعيّ في الخطّ العربيّ

نموذجٌ واحد يقرأ الخطَّ اليدويَّ العربيَّ بنسبة خطأٍ أقلّ من 1%، وأفضلُ نتيجةٍ في الخطّ الكلاسيكيّ 45%. بحثتُ عن البيانات الناقصة التي تفسّر هذه الفجوة، فوجدتُ عكس ما توقّعت. خطٌّ دُوّنت قواعده في القرن العاشر، ثمّ دُوّنت ثانيةً في برمجيّةٍ في الثمانينيّات.

مقالة24 دقيقة قراءة

ربط libVLC مباشرةً من Swift 6

احتاج تطبيق IPTV إلى «صورة داخل صورة»، وخطُّ VLCKit الذي كان يقوم عليه لا يملكها. ملاحظات في امتلاك محرّك C بدل استهلاكه — عزلُ المؤشّرات، وأعمارٌ لا يفحصها شيء، ومجموعةُ رقعٍ مرتّبة على شيفرة VLC نفسها، وما كلّفه ذلك.

مقالة5 دقائق قراءة

اجعل لإضافاتك في Swift فضاء أسماء

تجاوزت SwifterSwift خمسمئة إضافة فبدأت تصطدم بمكتباتٍ أخرى. فالعضو الذي تضيفه إلى نوعٍ لا تملكه ليس محصورًا في مكتبتك — بل هو عامٌّ في المشروع كلّه، ولا يبلغه اسم وحدتك.

ملاحظة5 دقائق قراءة

استخدم SSH بدل HTTPS مع Git

أوقفت GitHub قبول كلمات المرور مع Git عبر HTTPS في آب 2021. و‏credential helper يريحك من الكتابة لا من انتهاء الصلاحية؛ أما المفتاح فيريحك منهما معًا، ويطال روابط HTTPS التي لم تكتبها أنت.

ملاحظةدقيقتا قراءة

الـ typealias يقبل وسيطًا نوعيًّا

تسمّي معالج الإكمال مرةً واحدة ثم تكتبه Handler<Post> في كل موضع. يعطيك ذلك وضوحًا وموضعًا واحدًا تغيّر فيه التوقيع. ولا يعطيك أمانًا نوعيًّا.

ملاحظةدقيقتا قراءة

متى تستعمل subscript آمنًا للمجموعات

الإضافة تحوّل انهيار الخروج عن الحدود إلى nil. وهذا مفيد حين يأتي الفهرس من خارج شيفرتك، ويخفي خطأً منطقيًّا حين لا يكون كذلك.

المواضيع