نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

الأصناف الخاملة (Lazy Classes)

توصيف المشكلة وجود بعض الأصناف (classes) قليلة الاستخدام ولا أهمية لها في البرنامج، ويجدر التخلُّص منها إذ إنّ فهم وصيانة الأصناف يكلِّفان الوقت والجهد. أسبابها يكون تصميم الصنف بدايةً لأداء مهامٍ (functionality) معيّنة، ولكنّه قد يصبح صغيرًا لا أهميّة له من بعد الكثير من عمليات إعادة التصميم (refactoring). قد تُخصَّص بعض الأصناف لدعم التطوير المستقبلي للبرنامج (كالتخطيط المُسبق لميّزاتٍ ستُضاف لاحقًا)، وتصبح تلك الأصناف خاملةً عندما لا يحدث أيُّ تطويرٍ فيما بعد. وما الحل؟ تضمين الأصناف (inline classes) للعناصر (components) ...

الدالة func_get_arg()‎ في PHP

(PHP 4, PHP 5, PHP 7) تُعيد الدالّة func_get_arg()‎ وسيطًا من قائمة الوسطاء. الوصف mixed func_get_arg ( int $arg_num ) تحصل الدالّة func_get_arg()‎ على وسيط من قائمة وسطاء الدّالة المعرّفة من قبل المستخدم. من الممكن أن تُستخدم هذه الدّالة بالتزامن مع الدالّة func_get_args()‎ والدالّة func_num_args()‎ للسماح للدالات المعرّفة من قبل المستخدم بقبول قوائم وسطاء متغيرة الطول. المعاملات arg_num فهرس الوسيط المُراد الحصول على قيمته. لاحظ أنَّه تُعَدّ وسائط الدّالة بدءًا من الصفر. القيم المعادة تُعيد الدالّة func_get_arg()‎ الوسيط المحدّد، أو تُعيد ...

الشيفرة النظيفة (Clean Code)

تهدف عملية إعادة التصميم (refactoring) للتخلُّص من المتطلَّبات التقنيّة الزائدة، إذ تحوِّل كلَّ الفوضى المنتشرة في الشيفرة إلى شيفرةٍ نظيفةٍ (clean code) ذات تصميمٍ مُبسَّط، وهذا -لا بُدَّ- أمرٌ رائعٌ ولكن بالبداية؛ ما معنى أن تكون الشيفرة نظيفةً؟ مميزات الشيفرة النظيفة فيما يأتي بعضٌ مما يميز الشيفرة النظيفة: واضحةٌ ومقروءةٌ للمبرمجين الآخرين إنّ ما يجعل الشيفرات أكثر تعقيدًا (بعيدَا عن الخوارزميّات فائقة التعقيد) هو اعتمادها على تسمية المتغيِّرات تسميةً ضعيفةً (غير منطقيّةٍ أو بدون معنى) أو احتوائها على أصناف (classes) ...

تهجيرات Active Record في ريلز

التهجيرات (Migrations) هي ميزة من Active Record التي تمكّنك من تحديث مخطط قاعدة البيانات على مر الوقت. بدلًا من كتابة تعديلات قاعدة البيانات باستخدام SQL، تمكّنك التهجيرات من كتابة تعليمات DSL باستخدام روبي لتحديث جداولك. بعد قراءة هذا الدليل، ستتعرَّف على: المولِّدات التي تستطيع استعمالها لإنشاء التهجيرات. التوابع التي يوفرها Active Record لتعديل قاعدة البيانات. المهام bin/rails التي تعدِّل وتتحكم بالتهجيرات والمخطط (schema) الخاص بك. العلاقة بين التهجيرات والملف schema.rb. نظرة عامة على التهجيرات إن التهجيرات هي طريقة مناسبة وسلسة ...

الأعباء التقنية (Technical Debt)

يبذل المبرمج عادةً ما بوسعه لكتابة شيفرةٍ جيدةٍ، ولا ينوي أبدًا -أيًّا كان المبرمج- الحصولَ على شيفرةٍ رديئةٍ تكون السبب في فشل مشروعه البرمجيّ، لذا فلنطرح السؤال: ما هو الحدُّ الذي تصبح عنده الشيفرةُ النظيفةُ رديئةً؟ فخ الأعباء التقنية اقتُرح مصطلح "الأعباء أو الالتزامات التقنيّة" (ويقابله بالانكليزيّة Technical Debt) للمرّة الأولى من قِبل Ward Cunningham، فإنه لدى اقتراضك مبلغًا ماليًا من أحد المصارف تكبُر أمامك فرصة الشراء بشكلٍ أسرع، ويحدث أن تدفعَ علاوةً (وأيّ إضافات أخرى) لتسريع الأمر والحصول على ...

الدالة func_get_args()‎ في PHP

(PHP 4, PHP 5, PHP7) تعيد الدالة func_get_args()‎ بعد استدعائها مصفوفةً عناصرها هي جميع المعاملات التي مُرِّرت للدالة المعرَّفة من طرف المستخدم. الوصف array func_get_args ( void ) تستعمل هذه الدالة غالبًا بالتزامن مع الدالة func_get_arg()‎ والدالة func_num_args()‎ وذلك للسماح للدوال المعرفة من طرف المستخدم بقبول عدد متغيّر من المعاملات. القيم المعادة عند استدعاء هذه الدالة ضمن دالة معرفة من قبل المستخدم، فإنَّها تعيد مصفوفة عناصرها هي جميع المعاملات التي مُرِّرت إلى تلك الدالة آنذاك. سجل التغييرات الإصدار الوصف 5.3.0 يمكن ...

الأصناف الواسعة (Large Classes)

توصيف المشكلة احتواء الصنف (class) العديدَ من الحقول (fields) والتوابع (methods) وشيفرةً بأسطرَ كثيرةٍ. أسبابها تبدأ الأصناف صغيرةً ليزداد حجمها مع استمرار تطوُّر البرنامج (كما الحال بالتوابع الطويلة) لأنَّ المبرمج يرى أنَّ إضافة ميِّزاتٍ (features) جديدةٍ في صنفٍ موجودٍ مسبقًا أكثر سهولةً من إنشاء أصنافٍ جديدةٍ مخصَّصةٍ لها. وما الحل؟ الحل بسيطٌ جدًا؛ وهو تقسيم الصنف، وذلك بإحدى الوسائل الآتية: إنشاء صنفٍ جديدٍ (Extract Class) إن كان من الممكن فصلُ بعض مهامّ الصنف الحاليّ ونقلها للصنف الجديد. إنشاء صنفٍ فرعيٍّ ...

استبدال المُنشئ بتابع التصميم (Replace Constructor with Factory Method)

المشكلة لديك مُنشئ (constructor) معقد يقوم بما هو أكثر من مجرد وضع قيم المعامل في حقول الكائن. الحل إنشاء تابع تصميم واستخدامه لاستبدال استدعاءات المُنشئ. مثال قبل إعادة التصميم وجود منشئ معقد للصنف Employee: في لغة Java: class Employee { Employee(int type) { this.type = type; } //... } في لغة C#‎: public class Employee { public Employee(int type) { this.type = type; } //... } في لغة PHP: class ...

الصنف ‎:disabled

الصنف الزائف ‎:disabled في CSS (أي pseudo-class) يُمثِّل أي عنصر مُعطَّل، ولا يمكن اختيار أو النقر على العنصر المعطَّل ولا الكتابة فيه، ولا يقبل التركيز (focus)، ويمكن أن يكون العنصر مُفعَّلًا (enabled) أي يمكن اختياره أو النقر عليه أو الكتابة فيه. input:disabled { background: #ccc; } الشكل العام لهذا المحدد: :disabled أمثلة هذا المثال يستعرض نموذجًا بسيطًا لشحن المشتريات، ويستخدم الحدث change في JavaScript للسماح للمستخدم بتفعيل أو تعطيل بعض حقول النموذج: <form action="#"> <fieldset id="shipping"> <legend>عنوان ...

CSS/Topics/Misc

العنصر الوصف ‎--*‎ أسماء الخاصيات التي تُسبَق بشرطتين --، مثل ‎--example-name، تُمثِّل الخاصيات المخصصة (custom properties) التي تُسنَد لها قيمة يمكن إعادة استخدامها في المستند عبر الدالة var()‎. attr()‎ الدالة attr()‎ في CSS تُستعمَل للحصول على قيمة إحدى خاصيات العنصر المُحدَّد واستخدامها في أنماط CSS، ويمكن استعمالها أيضًا على العناصر الزائفة (pseudo-elements) وفي هذه الحالة ستُستخدَم قيمة خاصية العنصر الأصل. calc()‎ الدالة calc()‎ في CSS تسمح بإجراء عمليات حسابية عند تحديد قيم خاصيات CSS، ويمكن استخدامها في أي موضع يُسمَح فيه باستخدام أنواع البيانات<length> و <percentage> و <angle> و <time> و <number> و<integer>. inherit الكلمة المحجوزة inherit في ...

الدالة change_color()‎ في Sass

تغيّر الدالة ()change_color خاصِّيَّة واحدة أو أكثر من خاصِّيَّات اللون المعطى وهي: الأحمر والأخضر والأزرق والتشبُّع (saturation) والصبغة (hue) والشفافيَّة. تُحدَّد الخاصِّيَّات على شكل وسائط مُسمّاة، وتُعوَِّض القيم الممرَّرة مكان القيم الحاليَّة لتلك الخاصِّيَّات في اللون. جميع الخاصِّيَّات اختياريَّة. مع ذلك، لا يمكنك تغيير خاصِّيَّات RGB (أي الخاصِّيَّة ‎ $redو ‎$green و ‎$blue) و خاصّيَّات HSL (أي الخاصِّيَّة ‎$hue و ‎$saturation و ‎$lightness و ‎$alpha) في نفس الوقت. البنية العامة scale_color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])‎ المعاملات ‎$color اللون المراد ...

التابع Encoding::Converter.primitive_errinfo في روبي

يُعيد التّابع primitive_errinfo معلوماتٍ مهمّةً حول آخر خطأٍ حدث في مصفوفة مكونة من خمسة عناصر مثل: [result, enc1, enc2, error_bytes, readagain_bytes] تكون result هي آخر نتيجة تحويل للتّابع primitive_convert. تكون العناصر الأخرى ذات معنى فقط عندما تكون result هي invalid_byte_sequence:، أو incomplete_input:، أو undefined_conversion:. تدلُّ القيمتان enc1 و enc2 على خطوة التحويل على شكل زوجٍ من السلاسل النصيّة. على سبيل المثال، يحول محولٌ (converter) من التّرميز EUC-JP إلى الترميز ISO-8859-1 سلسلة نصية بالشكل التالي: EUC-JP -> UTF-8 -> ISO-8859-1. إذًا، تكون ...

اختلال الشيفرات ومشاكلها (Code Smells)

قد تعاني الشيفرات الكثير من الاختلالات والمشاكل الشكلية؛ فبمجرد اكتشاف تلك الاختلالات الظاهرية، يسهل علينا معرفة العلاج (التقنيات) وتطبيقه (إعادة التصميم) للحصول على شيفرة سليمة نظيفة. من هذه الاختلالات: المبالغة والإطالة قد يزداد حجم الشيفرات والتوابع (methods) والأصناف (classes) ازديادًا كبيرًا ليصل لمرحلةٍ يصعُب التعامل معها، ولا يحدث هذا بشكلٍ فجائيِّ دفعةً واحدةً، بل يكون ناتجًا عن تراكم الإضافات أثناء تطوير البرنامج (وخاصةً عندما لا يبذل أحدٌ جهدًا للحدِّ من ذلك التشعب)، ويبدو هذا التضخم واضحًا التوابع الطويلة (long methods): ...

المحدد ‎‎‎:selected‎ في jQuery

المحدد ‎:selected الوصف يحدِّد جميع العناصر المُحدَّدة. ‎jQuery( ":selected" )‎ أُضيف مع الإصدار: 1.0. يُستعمَل المحدِّد ‎:selected خصِّيصًا مع العناصر <option>، ولا يعمل مع مربعات الاختيار (checkboxes) أو أزرار الانتقاء (radio buttons)، لذا استعمل معهم المحدِّد ‎:checked. ملاحظات إضافية لمَّا كان المحدِّد ‎:selected هو ملحق في مكتبة jQuery  وليس جزءًا من مواصفة CSS، فإنَّ الاستعلامات التي تستعمل ‎:selected لا يمكنها الاستفادة من سرعة الأداء الذي يوفره تابع DOM الأصلي querySelectorAll()‎. للحصول على أداء أفضل في المتصفحات الحديثة، حدِّد العناصر باستعمال ...

إضافة اتجاه الشاشة في كوردوفا

تُستخدَم إضافة اتجاه الشاشة (cordova-plugin-screen-orientation) للتحكم باتجاه الشاشة (عبر ضبطها إلى اتجاه محدَّد أو منع تغيير الاتجاه) بشكل موحَّد في المنصات iOS وأندرويد و windows-uwp. تعتمد هذه الإضافة على الواجهة البرمجية لاتجاه الشاشة، حتى تتطابق مع المواصفات الحالية. تضيف هذه الإضافة العناصر التالية إلى كائن الشاشة window.screen: // منع تغيير اتجاه الشاشة .orientation.lock('portrait') // السماح بتغيير اتجاه الشاشة .orientation.unlock() // الاتجاه الحالي .orientation‎ التثبيت يمكن تثبيت هذه الإضافة عبر الأمر التالي: cordova plugin add cordova-plugin-screen-orientation‎ الاتجاهات المدعومة portrait-primary يمثل هذا الاتجاه الوضع العمودي الأولي (primary ...

نقل الميزات ما بين الكائنات (Moving Features between Objects)

تساعد عملية إعادة التصميم (refactoring) في توزيع المهام بشكل مثاليّ على الأصناف (classes) المختلفة في الشيفرة، وتضمن تقنيات الحل هذه طريقةً آمنةً لنقل المهام (functionality) ما بين الأصناف، وإنشاء أصناف جديدة وحماية تفاصيل عملية التنفيذ (implementation) من الوصول العام (public access)، وهذه التقنيات تشمل: نقل التابع (Move Method) المشكلة: استخدام التابع (method) في صنفٍ (class) ما أكثر من استخدامه في صنفه الأساسيّ. الحل: إنشاء تابعٍ جديدٍ في الصنف الأكثر استخدامًا لذلك التابع ونقل شيفرته إلى التابع الجديد، ثم تحويل الشيفرة ...

نقل الميزات ما بين الكائنات (Moving Features between Objects)

تساعد عملية إعادة التصميم (refactoring) في توزيع المهام بشكل مثاليّ على الأصناف (classes) المختلفة في الشيفرة، وتضمن تقنيات الحل هذه طريقةً آمنةً لنقل المهام (functionality) ما بين الأصناف، وإنشاء أصناف جديدة وحماية تفاصيل عملية التنفيذ (implementation) من الوصول العام (public access)، وهذه التقنيات تشمل: نقل التابع (Move Method) المشكلة: استخدام التابع (method) في صنفٍ (class) ما أكثر من استخدامه في صنفه الأساسيّ. الحل: إنشاء تابعٍ جديدٍ في الصنف الأكثر استخدامًا لذلك التابع ونقل شيفرته إلى التابع الجديد، ثم تحويل الشيفرة ...

التابع ‎.val()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

إعادة القيمة الحالية للعنصر الأول في مجموعة العناصر المُطابقة أو تعيين قيمة (value) كل عنصر مُطابق. ‎.val()‎ القيمة المعادة يُعيد كائنًا من النوع String أو Number أو Array. الوصف إعادة القيمة الحالية للعنصر الأول في مجموعة العناصر المُطابقة. ‎.val()‎ أُضيف مع الإصدار: 1.0. لا يقبل هذا الشكل أي وسائط. يستخدم التابع ‎.val()‎ في المقام الأول للحصول على قيم عناصر النماذج مثل <input> و <select> و <textarea>. عند استدعائها على مجموعة فارغة، فإنها تُعيد undefined. عندما يكون العنصر الأول في المجموعة ...

Python/pathlib/Path/mkdir

التابع Path.mkdir في بايثون يُنشئ هذا التابع مجلّدًا في المسار المُعطى بالخصائص التي يتم تحديدها في باقي الوسطاء. Create a new directory at this given path. If mode is given, it is combined with the process’ umask value to determine the file mode and access flags. If the path already exists, FileExistsError is raised. If parents is true, any missing parents of this path are created as needed; they are created with the default permissions without taking mode into account ...

الدالة attachInterrupt()‎ في أردوينو

تفعِّل الدالة attachInterrupt()‎ مقاطعة خارجية معيَّنة على إحدى الأرجل في لوحة أردينو. المعامل الأول المُمرَّر إليها هو رقم المقاطعة. عمومًا، يجب استدعاء الدالة digitalPinToInterrupt(pin)‎ لتفسير الرجل الرقمية الفعلية إلى رقم مقاطعة محدَّدة. على سبيل المثال، إن أردت تهيئة مقاطعة على الرجل 3، فاستعمل digitalPinToInterrupt(3)‎ بتمريرها كأول معامل إلى الدالة attachInterrupt()‎. اللوحة الأرجل الرقمية القابلة للاستخدام مع المقاطعات Uno, Nano, Mini, other 328-based 2، 3 Uno WiFi Rev.2 جميع الأرجل الرقمية Mega, Mega2560, MegaADK 2، 3، 18، 19، 20، 21 Micro, ...

عرض (20 السابقة | 20 التالية) (20 | 50 | 100 | 250 | 500).