Category: التطوير

الحوسبة المتفائلة: مسار نحو برمجيات أفضل

2024-12-15

يستكشف هذا المقال مفهوم "الحوسبة المتفائلة"، ليس كتفاؤلاً أعمى، بل كتلاقي لعدة أفكار قوية: البساطة وسهولة الاستخدام ("boot to kill")، ومبادئ الأولوية المحلية، وتمكين المستخدم. يُجادل الكاتب بأنه من خلال الحد من التبعيات، وتبسيط سير العمل، وخلق تجربة سلسة "تعمل فقط"، ومنح المستخدمين المزيد من التحكم، يمكننا بناء برمجيات أكثر موثوقية وأمانًا وديمومة. تنطبق هذه الفلسفة على كل من المستخدمين الأفراد وتطوير برامج المؤسسات، وتهدف في النهاية إلى عالم رقمي يحترم خصوصية المستخدم و ملكية بياناته.

مقارنة أداء Spark وDuckDB وPolars: أفضل خيار لأحمال العمل الصغيرة والمتوسطة

2024-12-15
مقارنة أداء Spark وDuckDB وPolars: أفضل خيار لأحمال العمل الصغيرة والمتوسطة

تقارن هذه المقالة محركات معالجة البيانات Spark وDuckDB وPolars، وتقيّم أداءها وتكلفتها وسهولة تطويرها على مجموعات بيانات بحجم 10 جيجابايت و100 جيجابايت. تُظهر النتائج أنه بالنسبة لمجموعات البيانات الكبيرة ومهام ETL، لا يزال Spark مهيمناً نظرًا لقدراته على الحوسبة الموزعة ونظامه البيئي الناضج. أما DuckDB وPolars، فيتفوقان في الاستعلامات التفاعلية واستكشاف البيانات على مجموعات البيانات الأصغر. يوصي الكاتب باتباع نهج استراتيجي للمزج والمطابقة، باستخدام Spark لمهام ETL، وDuckDB للاستعلامات التفاعلية، وPolars للسيناريوهات المتخصصة، مع تكييف اختيار المحرك حسب الاحتياجات المحددة.

محرك استنتاج LLM سريع تم إنشاؤه من الصفر

2024-12-15

تتناول هذه المقالة رحلة الكاتب في بناء محرك استنتاج LLM من الصفر باستخدام C++ و CUDA، دون الاعتماد على أي مكتبات. وقد أتاحت هذه العملية غوصًا عميقًا في مجموعة استنتاج LLM الكاملة، من نواة CUDA إلى بنية النموذج، مما يُظهر كيف تؤثر عمليات التحسين على سرعة الاستنتاج. كان الهدف هو إنشاء برنامج قادر على تحميل أوزان النماذج مفتوحة المصدر الشائعة وإجراء استنتاج دفعة واحدة على خادم CPU + GPU واحد، مع تحسين معدل بيانات الرموز بشكل متكرر لتجاوز llama.cpp. وتوضح المقالة بعناية خطوات التحسين على كل من وحدة المعالجة المركزية ووحدة معالجة الرسومات، بما في ذلك تعدد الخيوط، وكمية الأوزان، و SIMD، ودمج النواة، وكمية ذاكرة التخزين المؤقت KV، مع تحليل الاختناقات والتحديات. وتحقق النتيجة النهائية أداءً قريبًا من الأداء الأمثل للاستنتاج المحلي لـ LLM.

التطوير استنتاج LLM

تفضيل الكود القابل للتصرف على وثائق التصميم: نهج أكثر كفاءة لتنمية البرمجيات

2024-12-15
تفضيل الكود القابل للتصرف على وثائق التصميم: نهج أكثر كفاءة لتنمية البرمجيات

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

سر فرق العمل عالية الأداء: أنظمة الذاكرة التفاعلية

2024-12-15
سر فرق العمل عالية الأداء: أنظمة الذاكرة التفاعلية

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

مكونات ويب متماثلة: التقديم من جانب الخادم أصبح أسهل

2024-12-15
مكونات ويب متماثلة: التقديم من جانب الخادم أصبح أسهل

تم التشكيك في الاعتقاد الراسخ بأن تقديم مكونات الويب من جانب الخادم أمر صعب. توضح هذه المقالة كيفية تحقيق تقديم مكونات الويب الموجودة من جانب الخادم باستخدام Happy DOM بذكاء لمحاكاة بيئة المتصفح. تم تفصيل طريقتين: استخدام علامة `` للتنسيق المباشر، ومحاكاة DOM لتشغيل رمز المكون وإنشاء HTML. يشدد الكاتب على مزايا هذا النهج: التوافق مع جميع مكونات الويب، والمتانة في مواجهة فشل JavaScript، وتجنب الارتباط بإطار عمل محدد. هذا يحل مشكلة تقديم مكونات الويب من جانب الخادم، ويوفر حلاً مرنًا وقويًا.

SVC16: أبسط جهاز كمبيوتر افتراضي يتحدى المبرمجين

2024-12-15
SVC16: أبسط جهاز كمبيوتر افتراضي يتحدى المبرمجين

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

مختبرات Railgun تكشف النقاب عن مكتبة خوارزميات Unicode عالية الأداء: Unicorn

2024-12-15

أصدرت مختبرات Railgun مكتبة خوارزميات Unicode عالية السرعة تسمى Unicorn، والمعروفة بسرعتها، وإمكانية تضمينها، وتوافقها متعدد المنصات، وأمانها. تدعم Unicorn العديد من خوارزميات Unicode، بما في ذلك التطبيع، وتحويل الأحرف الكبيرة والصغيرة، والفرز، والتقسيم، وتوفر مُشفرات وفك تشفير ومُصدقين لترميزات UTF-8 وUTF-16 وUTF-32. المكتبة قابلة للتخصيص بالكامل وتم اختبارها على نطاق واسع من أجل الدقة والموثوقية. وهي متوافقة مع معيار MISRA C:2012، وهي آمنة للخيوط بشكل كبير.

ثغرة أمنية في إمكانية الوصول إلى الإنترنت من Home Assistant

2024-12-15

حاول فريدريك براون استخدام Home Assistant للتحكم عن بُعد في منزله الذكي، لكنه اكتشف ثغرة أمنية كبيرة. على الرغم من أن Home Assistant يوفر مصادقة اسم المستخدم/كلمة المرور والمصادقة ذات العاملين، إلا أن عدم قدرته على التعامل مع عناوين URL التي تحتوي على بيانات اعتماد مضمنة، ومتطلباته لنشرها في المسار الجذر، يمنع إضافة طبقات أمان إضافية، مثل مصادقة خادم الويب أو المسارات المُشفرة. هذا يجعل أمن Home Assistant يعتمد فقط على آلياته الداخلية، مما يخلق خطرًا أمنيًا. يناشد الكاتب مجتمع Home Assistant لتحسين مرونة تكوينه الأمني.

إصدار XFCE 4.20: دعم تجريبي لـ Wayland والعديد من التحسينات

2024-12-15

بعد ما يقرب من عامين من التطوير، تم إصدار XFCE 4.20 رسميًا! تركز هذه النسخة على إعداد قاعدة التعليمات البرمجية لـ Wayland، حيث توفر الآن دعمًا تجريبيًا لـ Wayland لمعظم المكونات، على الرغم من أنها لا تزال في مراحلها الأولى، موصى بها للمستخدمين المتقدمين. كما يضم XFCE 4.20 العديد من الميزات الجديدة، وإصلاحات الأخطاء، والتحسينات، بما في ذلك تحسين مقياس الرموز، وعرض الرموز المحسّن من حيث الأداء، ومدير الملفات Thunar المُحدّث. من المهم ملاحظة أن دعم Wayland لا يزال غير مكتمل، حيث لم يتم نقل بعض المكونات والوظائف بعد.

بناء نظام كائنات بسيط من الصفر في روبي

2024-12-15

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

إصدار TeaVM 0.11.0: واجهة خلفية جديدة لـ WebAssembly

2024-12-15

تم إصدار TeaVM 0.11.0، والذي يتميز بواجهة خلفية جديدة لـ WebAssembly. الواجهة الخلفية القديمة لـ WebAssembly، على الرغم من كونها وظيفية، إلا أنها لم تحظَ باعتماد واسع النطاق بسبب مكاسب الأداء غير المهمة وتجربة مطور سيئة. الواجهة الخلفية الجديدة، مستفيدة من اقتراح WebAssembly GC، تعالج هذه المشكلات، وتحسن التفاعل مع واجهات برمجة تطبيقات JS للمتصفح وتقلل من حجم الملف الثنائي. على الرغم من أنها حاليًا أقل ثراءً من حيث الميزات مقارنة بالواجهة الخلفية لـ JS، إلا أنها تدعم بالفعل JSO (واجهة برمجة تطبيقات التفاعل بين Java و JS)، بهدف تحقيق التكافؤ في الإصدار التالي. يتضمن هذا الإصدار أيضًا إصلاحات للأخطاء في تنفيذ BitSet ويضيف دعمًا لواجهات برمجة تطبيقات JS متعددة، مثل قراءة الملفات، وأحداث اللمس، وواجهة برمجة التطبيقات Popover، و Navigator.sendBeacon.

التطوير

وداعًا للاجتماعات التي لا تنتهي: نهج جديد لتطوير البرمجيات عالي السرعة

2024-12-15

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

Vim: لغة برمجة تتجاوز محرر النصوص

2024-12-15

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

التطوير محرر

لغات البرمجة: تحقيق التوازن بين الأمان والقوة

2024-12-15

تتناول هذه المقالة التوازن بين الأمان والقوة في لغات البرمجة. الرأي التقليدي هو أن اللغات القوية، مثل لغة C مع إدارتها اليدوية للذاكرة، غير آمنة بطبيعتها. ومع ذلك، يجادل الكاتب بأن هذا الرأي قديم. أظهرت الأبحاث الحديثة في لغات البرمجة أن التعبيرية الأكبر تسمح بكل من الأمان والقوة. تُجسد تطور وحدات ماكرو في Lisp و Scheme و Racket هذا، حيث تُظهر كيفية تحسين التصميم لتعزيز قدرات وحدات الماكرو مع الحفاظ على الأمان. يُقدم نظام وحدات ماكرو Racket كأفضل ممارسة، حيث يجمع بين التعليمات البرمجية الصحية وقدرات معالجة قوية. وتختتم المقالة بأن الأنظمة الآمنة والموثوقة تُنشئ برامج أكثر قوة وموثوقية، وتُوصي بموارد لمزيد من التعلم حول وحدات ماكرو Racket.

إدارة التبعيات في بايثون: حريق هائل

2024-12-15

تتناول هذه المقالة بعمق تعقيدات إدارة التبعيات في بايثون، وتشبهها بإشعال نار في غابة جافة. يقول الكاتب أن تبعيات بايثون ليست مجرد أمر `pip install`، بل تشمل حزم المشروع، وحزم النظام، ونظام التشغيل، والأجهزة، والبيئة نفسها. إدارة التبعيات الجيدة أمر بالغ الأهمية للتكرار – لضمان نتائج متسقة في بيئات مختلفة. تفصّل المقالة التحكم في الإصدار، وعزل البيئة، وملفات التعريف، وملفات القفل، ومفاهيم رئيسية أخرى. ثم تقدم مقارنة شاملة للعديد من الأدوات، بما في ذلك pip و venv و virtualenv و pip-tools و Pipenv و Poetry و PDM و pyenv و pipx و uv و Conda و Mamba و conda-lock و Pixi، وتحليل نقاط القوة والضعف وحالات الاستخدام. أخيرًا، يقدم الكاتب توصيات للأدوات بناءً على سيناريوهات مختلفة (امتيازات المسؤول، وأنواع التبعيات، وأنظمة التشغيل، إلخ) ويتطلع إلى الاتجاهات المستقبلية في إدارة التبعيات في بايثون.

مكتبة LLVM C تسرّع من سرعة وحدات معالجة الرسومات: تشغيل رمز C على وحدات معالجة الرسومات

2024-12-14

أصدر مشروع LLVM مكتبة C لوحدات معالجة الرسومات مثيرة للاهتمام تتيح للمطورين تشغيل دوال libc و libm مباشرة على وحدة معالجة الرسومات ضمن رمز C/C++. تدعم المكتبة وضعين رئيسيين: كمكتبة تكميلية للغات نقل مثل OpenMP و CUDA أو HIP؛ وعن طريق تجميع رمز C/C++ مباشرة لوحدة معالجة الرسومات. وتفصل المقالة كيفية استخدام كلا الوضعين، بما في ذلك خيارات التجميع والربط والإصدارات الخاصة بوحدات معالجة رسومات AMD و NVIDIA. تتيح هذه المكتبة للمطورين الاستفادة من قوة المعالجة المتوازية لوحدات معالجة الرسومات، مما يحسن الأداء بشكل كبير دون الحاجة إلى معرفة متعمقة بنماذج برمجة وحدات معالجة الرسومات المعقدة.

Buzee: تطبيق بحث نصوص كامل مفتوح المصدر تم إصداره

2024-12-14
Buzee: تطبيق بحث نصوص كامل مفتوح المصدر تم إصداره

Buzee هو تطبيق بحث نصوص كامل متعدد المنصات تم إنشاؤه باستخدام Rust و Svelte. يسمح بالبحث السريع عن الملفات المحلية والمجلدات وسجل متصفح الويب وأكثر من ذلك، حتى أنه يستخرج النص من ملفات PDF والصور باستخدام OCR. تم تطوير هذا المشروع على مدار عامين، وهو يعرض بنية قوية باستخدام Tauri لتحسين الأداء، و SQLite و Tantivy للفهارس، وواجهة أمامية نظيفة من Svelte. على الرغم من أنه غني بالمميزات، إلا أنه لا يزال هناك بعض المجالات للتطوير في المستقبل، ويقوم المؤلف بإصداره كمصدر مفتوح حتى يتمكن الآخرون من المساهمة.

التطوير بحث نصوص كامل

موجهات الشبكات الفرعية Tailscale: حل بسيط للاتصالات الشبكية المعقدة

2024-12-14
موجهات الشبكات الفرعية Tailscale: حل بسيط للاتصالات الشبكية المعقدة

يتطلب Tailscale عادةً تثبيت عميل على كل جهاز، لكن هذا ليس ممكنًا دائمًا للأجهزة المضمنة أو VPCs الموجودة. هنا يأتي دور موجهات الشبكات الفرعية. فهي تمكن الأجهزة من التواصل باستخدام تقنية اختراق NAT القوية من Tailscale، بغض النظر عما إذا كانت تعمل على Tailscale أم لا. تشرح هذه المقالة كيفية عمل موجهات الشبكات الفرعية Tailscale، بما في ذلك التثبيت والتكوين على Windows و Linux. بالنسبة لعمليات نقل الشبكات الكبيرة أو توصيل VPCs AWS، توفر موجهات الشبكات الفرعية طريقة سريعة وسهلة للبدء. الاستخدام الشخصي مجاني ولا يُحسب ضمن حدود الأجهزة.

هجوم سلسلة التوريد يستهدف Ultralytics: تحليل لحادث أمني في PyPI

2024-12-14
هجوم سلسلة التوريد يستهدف Ultralytics: تحليل لحادث أمني في PyPI

تعرض مشروع Python Ultralytics مؤخرًا لهجوم سلسلة توريد. قام المُهاجمون باختراق سير عمل GitHub Actions الخاصة بالمشروع وسرقة رمز API الخاص بـ PyPI، مما أدى إلى تلويث الإصدارات 8.3.41 و 8.3.42 و 8.3.45 و 8.3.46. لم يستغل الهجوم ثغرة أمنية في PyPI، بل استهدف ذاكرة التخزين المؤقت لـ GitHub Actions. استخدم PyPI النشر الموثوق وسجلات الشفافية Sigstore لتحديد وإزالة البرامج الضارة بسرعة. سلط الحادث الضوء على أوجه القصور في تكوين رموز API وبيئات GitHub. تؤكد المقالة على أهمية تأمين منصات البرمجيات وسير عمل البناء/النشر، وتقدم توصيات أمنية للمطورين: استخدام الناشرين الموثوقين، وقفل التبعيات، وتجنب الأنماط غير الآمنة، وتمكين المصادقة متعددة العوامل.

Rust غير متزامن على وحدات تحكم Cortex-M: غوص عميق

2024-12-14
Rust غير متزامن على وحدات تحكم Cortex-M: غوص عميق

تتناول هذه المقالة عالم البرمجة غير المتزامنة بلغة Rust على وحدات تحكم Cortex-M. تشرح آلية Futures والجدولة التعاونية ومنفذي Rust غير المتزامنين، مع تسليط الضوء على كفاءتها في إدارة الموارد. يتم تقديم إطار عمل Embassy المبتكر، المصمم لتمكين البرمجة غير المتزامنة على وحدات التحكم الدقيقة. من خلال أمثلة عملية مثل برنامج Blinky وبرنامج الزر، يوضح المقال تطبيق Rust غير المتزامن في الأنظمة المضمنة، مقارنةً بمزاياه وعيوبه مقارنةً بأساليب RTOS التقليدية. يبرز الاستنتاج الفوائد الكبيرة لـ Rust غير المتزامن من حيث استخدام الموارد والتزامن.

Fern، وهي شركة ناشئة مدعومة من YC، توظف مهندس واجهة أمامية أول

2024-12-14
Fern، وهي شركة ناشئة مدعومة من YC، توظف مهندس واجهة أمامية أول

تبحث شركة Fern، وهي شركة ناشئة تدعمها Y Combinator، عن مهندس واجهة أمامية أول براتب يتراوح بين 168,000 و 192,000 دولار أمريكي بالإضافة إلى أسهم. يقع المقر في ويليامزبرغ، بروكلين، نيويورك، ويتطلب هذا المنصب حضورًا شخصيًا وخبرة 4 سنوات فأكثر في تطوير الواجهة الأمامية، وإتقان JavaScript/TypeScript وReact وNext.js. وتشمل المسؤوليات تبسيط تجربة المطور، وإدارة البنية التحتية للواجهة الأمامية، وإنشاء ميزات موجهة للمستخدم، وبناء علاقات قوية مع العملاء. تعمل Fern على تبسيط استخدام واجهات برمجة التطبيقات، وتضم بين عملائها Cohere وElevenLabs وWebflow وMerge.dev.

Svader: مكتبة Svelte للمكونات المُرسَّمة بواسطة وحدة معالجة الرسومات

2024-12-14
Svader: مكتبة Svelte للمكونات المُرسَّمة بواسطة وحدة معالجة الرسومات

Svader هي مكتبة لإنشاء مكونات Svelte مُرسَّمة بواسطة وحدة معالجة الرسومات باستخدام ظلال التجزئة WebGL و WebGPU. يمكن للمطورين كتابة برامج في ظلال التجزئة لتخصيص ألوان وحدات البكسل والتحكم في تأثيرات العرض من خلال تمرير المعلمات. تدعم المكتبة Svelte 4 و 5، وتوفر أوضاع عرض WebGL و WebGPU مع معلمات مدمجة مثل الدقة، والمقياس، والوقت. تعمل Svader على تبسيط عرض وحدة معالجة الرسومات من خلال مكونات سهلة الاستخدام، وتوفر عرضًا احتياطيًا في البيئات التي لا تدعم WebGL أو WebGPU.

التطوير

علم توجيه طلبات الطباعة في Canva

2024-12-14
علم توجيه طلبات الطباعة في Canva

بنى فريق الهندسة في Canva نظام قواعد قابل للتكوين لعبور الرسوم البيانية لتحسين توجيه طلبات الطباعة. إن فصل بناء الرسم البياني والعبور وعملية صنع القرار يضمن توافرًا عاليًا وقابلية للتوسع. يستخدم قواعد بيانات علائقية لإدارة البيانات، ويولد رسمًا بيانيًا مخزّنًا مؤقتًا بشكل غير متزامن للاستعلامات السريعة. تجد آلية القواعد وخوارزمية تدفق التكلفة الدنيا المُعدّلة المسار الأمثل في ميلي ثانية، مما يُقلل من مسافة النقل وانبعاثات الكربون، ويعزز تجربة المستخدم والكفاءة التشغيلية.

Go: متى يجب أن تقول لا

2024-12-14
Go: متى يجب أن تقول لا

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

التطوير تطوير

نقاش الكتابة الثابتة في PHP: مرونة وكفاءة اللغات الديناميكية

2024-12-14

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

uv: أداة إدارة حزم ومشاريع بايثون فائقة السرعة

2024-12-14

uv هي أداة لإدارة حزم ومشاريع بايثون فائقة السرعة، مكتوبة بلغة Rust، تحل محل أدوات مثل pip و pip-tools و pipx و poetry و pyenv و twine و virtualenv. مع تحسين سرعة من 10 إلى 100 مرة، توفر uv إدارة المشاريع، وإدارة الأدوات، وإدارة إصدارات بايثون، ودعم البرامج النصية، وواجهة متوافقة مع pip. ميزات مثل ذاكرة التخزين المؤقت العالمية ودعم مساحات العمل تعمل على تبسيط سير العمل. من إنشاء المشاريع وإدارة التبعيات إلى تشغيل البرامج النصية وإنشاء التوزيعات، توفر uv حلولاً فعالة ومريحة لجميع احتياجات تطوير بايثون الخاصة بك.

من خريج جديد إلى مهندس فريق في ميتا خلال 3 سنوات: قصة نجاح إيفان كينغ

2024-12-14
من خريج جديد إلى مهندس فريق في ميتا خلال 3 سنوات: قصة نجاح إيفان كينغ

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

معالجة الأخطاء في كلوجر: لا توجد حلول سحرية، فقط خيارات

2024-12-14

يوفر كلوجر مجموعة متنوعة من أساليب معالجة الأخطاء، بدون أفضل ممارسة واحدة. تتناول المقالة عدة طرق: رمي الاستثناءات الأصلية، واستخدام `ex-info` لحمل البيانات مع الاستثناءات، وإرجاع خرائط الأخطاء، واستخدام مكتبات متنوعة لسير عمل معالجة الأخطاء الأكثر تعقيدًا، مثل مكتبة `anomalies` أو خيارات مثل `pact` و `failjure`. يشدد الكاتب على أن الاختيار يعتمد على السياق المحدد، وأن مزيجًا من الأساليب يمكن أن يتعايش في مشروع واحد. يتم تمكين المطورين لاختيار الحل الأنسب لاحتياجاتهم؛ يحتضن كلوجر هذه الحرية.

1 2 206 207 208 209 210 212 214