نتائج البحث

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

كتابة برامج Bash تفاعلية

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

عرض رسائل المستخدم في Bash

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

الحصول على مُدخلات المستخدم في Bash

استخدام أمر read أمر read هو الأمر المتمم لأمريْ echo و printf، وبنيته اللغوية كالتالي: read [options] NAME1 NAME2 ... NAMEN يُقرأ سطر واحد من المُدخل القياسي (standard input) أو من واصف ملف (file descriptor) أُدخِل كوسيط لخيار u-، وتُعيَّن أول كلمة من السطر لأول اسم NAME1، والثانية للاسم الثاني NAME2 وهكذا، ثم تُعيَّن الكلمات المتبقية وفاصلاتها المتداخلة (intervening seperators) إلى الاسم الأخير NAMEN، أما إن كانت الكلمات المقروءة من مجرى الدخل أقل من الأسماء فتعيَّن قيم فارغة لتلك الأسماء. تُستخدم ...

إعادة التوجيه والحلقات في Bash

إعادة توجيه المُدخلات يمكن تحديد ملف به تعليمات تُستخدم للتحكم في حلقة تكرارية بدلًا من التحكم فيها عن طريق تفقد نتيجة أمر ما أو عن طريق تدخل المستخدم يدويًا، وعادة ما يُستخدم أمر read في هذه الحالة كأمر متحكِّم، ويستمر تنفيذ الحلقة طالما تُغذَّى الحلقة التكرارية بأسطر مدخلات من ذلك الملف، وبمجرد قراءة جميع الأسطر فإن الحلقة تتوقف وتخرج. وبما أن بنية الحلقة التكرارية تُعد بنية لأمر واحد (مثل while TEST-COMMAND; do CONSEQUENT-COMMANDS; done) فإن إعادة التوجيه يجب أن تحدث ...

إنشاء وتشغيل برنامج Bash

الكتابة والتسمية إن كان لديك سلسلة أوامر تنفذها بشكل متكرر وتريد اختصار وقت تنفيذها أو تنفيذها بشكل آلي، فيمكنك وضعها في ملف فارغ يكتب بصيغة معينة وتقرؤه الصدفة على أنه برنامج تنفذه عند استدعاءه بكتابة اسم الملف الذي يحويه، وتسمى تلك البرامج ببرامج الصدفة أو شيفرات الصدفة النصية (Shell Scripts). ويمكن استخدام تلك البرامج لأتمتة المهام باستخدام أداة cron أو في إجراءات الإقلاع وإيقاف التشغيل في أنظمة يونكس، حيث يُحدَّد أسلوب عمل العفاريت (daemons) والخدمات في شيفرات init النصية (init ...

إنشاء قوائم باستخدام الأمر المُضمَّن select في Bash

عام استخدام أمر select البُنية اللغوية لأمر select تشبه بُنية حلقة for: select WORD [in LIST]; do RESPECTIVE-COMMANDS; done ويُستخدم أمر select من أجل إنشاء قوائم بسهولة عبر اتباع ما يلي: تُوسّع القائمة LIST مولِّدة قائمة من العناصر ويطبع التوسع في خطأ قياسي (standard error)، كما يُسبق كل عنصر من القائمة برقم. وإن لم تكن in LIST موجودة فتُطبع المعامِلات الموضعية كما لو تم تحديد @$ in. أيضًا، تُطبع قائمة LIST مرة واحدة فقط. يُطبع محث PS3 عند طباعة كل العناصر، ...

استخدام البُنية case

حالات مُبسطة قد يكون من السهل اللجوء إلى استخدام عبارات if لبداهة أسلوبها، لكن تلك السهولة تنقلب إلى حيرة حين تواجه بضعة اختيارات مختلفة لإجراءات محتملة يجب اتخاذها، ولمثل تلك الحالات نستخدم عبارة case، وبنيتها اللغوية هي كما يلي: case EXPRESSION in CASE1) COMMAND-LIST;; CASE2) COMMAND-LIST;; ... CASEN) COMMAND-LIST;; esac وتطابق كل حالة في التعبير السابق نمطًا (pattern)، وتُنفَّذ الأوامر التي في قائمة COMMAND-LIST لأول تطابق، ويُستخدم محرف الأنبوب | لفصل الأنماط المتعددة، وينهي معامِل ( قائمة الأنماط، ويُطلق اسم البند ...

تبديل المعاملات باستدعاءات التوابع (Replace Parameter with Method Call)

المشكلة استدعاء تابع استعلام (query method) وتمرير نتائجه كمعاملات لتابع آخر، في حين أنه يمكن لهذا التابع استدعاء الاستعلام مباشرة. الحل بدلًا من تمرير القيمة من خلال المعامل، حاول وضع استدعاء الاستعلام داخل متن التابع. مثال قبل إعادة التصميم تخزين القيمة التي يعيدها كلٌّ من التابعين ()getSeasonalDiscount و ()getFees في متغير ثم تمريرها إلى التابع ()discountedPrice: في لغة Java: int basePrice = quantity * itemPrice; double seasonDiscount = this.getSeasonalDiscount(); double fees = this.getFees(); double finalPrice = discountedPrice(basePrice, seasonDiscount, fees); في لغة C#‎: int basePrice ...

استبدال المعامل بتوابع صريحة (Replace Parameter with Explicit Methods)

المشكلة ينقسم التابع إلى أجزاء، كل منها يتم تشغيله اعتمادًا على قيمة المعامل. الحل استخراج الأجزاء الفردية من التابع إلى توابعها الخاصة واستدعائها بدلًا من استدعاء التابع الأصلي. مثال قبل إعادة التصميم وجود تابع يدعى ()setValue يضبط قيمة الارتفاع والعرض بناءً على تمرير سلسلة نصية صريحة بذلك: في لغة Java: void setValue(String name, int value) { if (name.equals("height")) { height = value; return; } if (name.equals("width")) { width ...

التعابير النمطية وأمثلة عن استخدام grep

التعابير النمطية Regular Expressions التعبير النمطي (Regular Expression) هو أسلوب يصف مجموعة من النصوص (strings)، وتُبنى تلك التعابير النمطية بشكل تناظري للتعابير الحسابية (arithmetic expressions) باستخدام عدة معامِلات لدمج التعابير الأصغر. وأصغر وحدة بنائية للتعابير النمطية هي تلك التي تطابق محرفًا واحدًا، ذلك أن أغلب المحارف -بما في ذلك كل الحروف والأرقام- ما هي إلا تعابير نمطية تطابق أنفسها، ويمكن اقتباس أي محرف خاص (metacharacter) له معنىً خاص بسبْقِه بشرطة مائلة خلفية \. المحارف الخاصة للتعابير النمطية يمكن إتْباع التعبير ...

مطابقة الأنماط باستخدام ميزات Bash

مدى المحارف Character Ranges خلافًا لأمر grep والتعابير النمطية (regular expressions) فإن لدينا حالات كثيرة لمطابقة الأنماط التي يمكنك إجراؤها في الصدفة مباشرة دون الحاجة إلى استخدام برنامج خارجي، فلعلك تعلم أن محرفي * و ? يطابقان أي نص أو محرف وحيد -على الترتيب-، ومن أجل مطابقة هذين المحرفيْن تحديدًا، ضع حول كل منهما علامات اقتباس مزدوجة: hsoub ~> touch "*" hsoub ~> ls "*" * يمكنك استخدام الأقواس المربعة لمطابقة أي محرف أو مجموعة محارف بداخل تلك الأقواس إن فُصلت أزواج المحارف ...

الأمران Break و Continue

أمر Break تُستخدم عبارة Break للخروج من الحلقة التكرارية الحالية قبل موعد خروجها الأصلي، ويحدث هذا في الحالات التي لا تعرف فيها عدد المرات التي يجب أن تنفذها الحلقة، كأن تعتمد على إدخال المستخدم مثلًا. يوضح المثال التالي حلقة while يمكن مقاطعتها، وهو مثال مُطوَّر من برنامج wisdom.sh من المثال المشروح في استخدام مُدخلات لوحة المفاتيح للتحكم في حلقة while : #!/bin/bash # هذا البرنامج يطبع أمثالًا ونصائح # يمكنك الخروج الآن بطريقة أفضل. FORTUNE=/usr/games/fortune while true; do echo "On which topic do you want advice?" echo ...

التابع Method.parameters‎ في روبي

يعيد التابع parameters معلومات عن معاملات الكائن Method الذي استُدعي معه. البنية العامة parameters → array‎ القيمة المعادة تعاد مصفوفة تحوي معلومات عن وسائط الكائن Method المعطى. أمثلة مثال على استخدام التابع parameters‎: def foo(bar); end method(:foo).parameters #=> [[:req, :bar]] def foo(bar, baz, bat, &blk); end method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:req, :bat], [:block, :blk]] def foo(bar, *args); end method(:foo).parameters #=> [[:req, :bar], [:rest, :args]] def foo(bar, baz, *args, &blk); end method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:rest, :args], [:block, :blk]]‎ انظر أيضا التابع owner: يعيد الصنف ...

التابع UnboundMethod.parameters‎ في روبي

يعيد التابع parameters معلومات عن معاملات التابع الحر الذي استُدعي معه على شكل مصفوفة. البنية العامة parameters → array‎ القيمة المعادة تعاد مصفوفة تحوي معلومات عن معاملات التابع الحر الذي استُدعي معه على شكل مصفوفة. أمثلة مثال على استخدام التابع parameters‎: def foo(bar); end method(:foo).parameters #=> [[:req, :bar]] def foo(bar, baz, bat, &blk); end method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:req, :bat], [:block, :blk]] def foo(bar, *args); end method(:foo).parameters #=> [[:req, :bar], [:rest, :args]] def foo(bar, baz, *args, &blk); end method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:rest, ...

الخاصية right

الخاصية right في CSS تساهم في تحديد الموضع الأفقي لأحد العناصر التي يمكن أن يتغير مكانها (positioned elements)، وليس لهذه الخاصية تأثير في العناصر التي لا يمكن أن يتغير مكانها (non-positioned elements). بطاقة الخاصية القيمة الابتدائية auto تُطبَّق على العناصر التي يمكن أن يتغير مكانها (positioned elements). قابلة للوراثة لا قابلة للتحريك نعم القيمة المحسوبة كما حُدِّدَت، لكن مع تحويل الأطوال النسبية إلى مطلقة. /* <length> قيم */ right: 3px; right: 2.4em; /* <percentages> قيم نسبية */ /* تؤخذ نسبةً إلى عرض الكتلة الحاوية ...

الخاصية top

الخاصية top في CSS تساهم في تحديد الموضع الرأسي لأحد العناصر التي يمكن أن يتغير مكانها (positioned elements)، وليس لهذه الخاصية تأثير في العناصر التي لا يمكن أن يتغير مكانها (non-positioned elements). بطاقة الخاصية القيمة الابتدائية auto تُطبَّق على العناصر التي يمكن أن يتغير مكانها (positioned elements). قابلة للوراثة لا قابلة للتحريك نعم القيمة المحسوبة كما حُدِّدَت، لكن مع تحويل الأطوال النسبية إلى مطلقة. /* <length> قيم */ top: 3px; top: 2.4em; /* <percentages> قيم نسبية */ /* تؤخذ نسبةً إلى ارتفاع الكتلة الحاوية ...

الخاصية left

الخاصية left في CSS تساهم في تحديد الموضع الأفقي لأحد العناصر التي يمكن أن يتغير مكانها (positioned elements)، وليس لهذه الخاصية تأثير في العناصر التي لا يمكن أن يتغير مكانها (non-positioned elements). بطاقة الخاصية القيمة الابتدائية auto تُطبَّق على العناصر التي يمكن أن يتغير مكانها (positioned elements). قابلة للوراثة لا قابلة للتحريك نعم القيمة المحسوبة كما حُدِّدَت، لكن مع تحويل الأطوال النسبية إلى مطلقة. /* <length> قيم */ left: 3px; left: 2.4em; /* <percentages> قيم نسبية */ /* تؤخذ نسبةً إلى عرض الكتلة الحاوية ...

الخاصية bottom

الخاصية bottom في CSS تساهم في تحديد الموضع الرأسي لأحد العناصر التي يمكن أن يتغير مكانها (positioned elements)، وليس لهذه الخاصية تأثير في العناصر التي لا يمكن أن يتغير مكانها (non-positioned elements). بطاقة الخاصية القيمة الابتدائية auto تُطبَّق على العناصر التي يمكن أن يتغير مكانها (positioned elements). قابلة للوراثة لا قابلة للتحريك نعم القيمة المحسوبة كما حُدِّدَت، لكن مع تحويل الأطوال النسبية إلى مطلقة. /* <length> قيم */ bottom: 3px; bottom: 2.4em; /* <percentages> قيم نسبية */ /* تؤخذ نسبةً إلى ارتفاع الكتلة الحاوية ...

التابع Proc.parameters في روبي

يُعيد التابع parameters معلوماتٍ عن معاملات كتلة محدَّدة من النوع proc. البنية العامة parameters → array القيم المعادة تُعاد مصفوفةٌ تتضمَّن معلوماتٍ عن معاملات الكتلة proc المعطاة. أمثلة مثالٌ عن استخدام التابع parameters: prc = lambda{|x, y=42, *other|} prc.parameters #=> [[:req, :x], [:opt, :y], [:rest, :other]] انظر أيضًا التابع arity: يُعيد عدد الوسائط الإلزاميَّة في الكائن proc الذي استدعي معه. التابع binding: يُعيد الرَّبط الموافق للكائن Proc الذي استدعي معه. التابع curry: يُعيد كتلة proc مقسَّمة. التابع to_s: يُعيد المُعرِّف ...

الخاصية list-style

الخاصية list-style في CSS هي خاصية مختصرة تؤدي إلى ضبط قيم الخاصيات list-style-type و list-style-image و list-style-position. بطاقة الخاصية القيمة الابتدائية لكل قيمة مختصرة: list-style-type: disc list-style-position: outside list-style-image: none تُطبَّق على عناصر القوائم. قابلة للوراثة نعم قابلة للتحريك لا القيمة المحسوبة لكل قيمة مختصرة: list-style-image: القيمة none أو رابط URI مطلق للصورة. list-style-position: كما حُدِّدَت. list-style-type: كما حُدِّدَت. /* type */ list-style: square; /* image */ list-style: url('../img/shape.png'); /* position */ list-style: inside; /* type | position */ list-style: georgian inside; /* type | image | position */ list-style: lower-roman url('../img/shape.png') outside; /* ...

الدالة any()‎ في Kotlin

يختلف سلوك الدالة any()‎ بحسب طريقة استدعائها، وسنناقش هذه الحالات تباعًا. حالات استدعاء الدالة any()‎ في حال استدعاء الدالة any()‎ مع مصفوفة (array) أو مجموعة (collection) دون تمرير أيّ معامل (parameter) لها، فستعيد القيمة true إن كانت المصفوفة أو المجموعة تحتوي على عنصر ٍ واحدٍ على الأقل (أي أنها غير فارغة)، وتعيد القيمة false بخلاف ذلك. في حال تمرير دالةٍ ما كوسيطٍ (parameter) في الدالة any()‎ فستعيد القيمة true إن كان هناك واحدٌ على الأقل من عناصر المصفوفة أو المجموعة ...

البنية المختصرة لتعريف الدوال في JavaScript

بدءًا من ECMAScript 2015 (أي ES6)، يمكن تعريف الدوال التابعة للكائن بطريقة مختصرة عند تهيئة الكائنات. البنية العامة var obj = { property( parameters… ) {}, *generator( parameters… ) {}, async property( parameters… ) {}, async* generator( parameters… ) {}, // مع مفاتيح محسوبة [property]( parameters… ) {}, *[generator]( parameters… ) {}, async [property]( parameters… ) {}, // قارن مع شكل getter/setter get property() {}, set property(value) {} }; الوصف ...

التابع Rational.positive?‎‎ في روبي

يتحقق التابع positive?‎ إن كان العدد الجذري الذي استدعي معه أكبر من 0. البنية العامة positive? → true or false‎ القيمة المعادة تعاد القيمة true إن كان العدد الجذري المعطى أكبر من 0، وإلا فستُعاد القيمة false. انظر أيضًا التابع negative?‎: يتحقق إن كان العدد الجذري الذي استدعي معه أصغر من 0. مصادر قسم التابع positive?‎ في الصنف Rational‎ في توثيق روبي الرسمي.

التابع Numeric.positive?‎‎ في روبي

يتحقق التابع positive?‎ إن كان العدد الذي استُدعي معه عددًا موجبًا. البنية العامة positive? → true or false‎ القيمة المعادة تعاد القيمة true إن كان العدد المعطى عددًا موجبًا. انظر أيضا التابع negative?‎: يتحقق إن كان العدد الذي استُدعي معه عددًا سالبًا. التابع nonzero?‎: يعيد العدد الذي استُدعي معه إن كان غير صفري، أو يعيد القيمة nil خلاف ذلك. مصادر قسم التابع positive?‎ في الصنف Numeric‎ في توثيق روبي الرسمي.

التعابير الاصطلاحية (Idioms) في لغة Kotlin

تعرِض هذه الصفحة عددًا من التعابير الاصطلاحيّة المستخدَمة بكثرةٍ في لغة Kotlin، ولأيّ اصطلاحٍ جديدٍ لم يُذكَر فيمكنك تعديل هذه الصفحة لإضافته. إنشاء كائنات نقل البيانات DTO:‏ Data Transfer Objects (الكائنات POJO/POCO) ليكن الصنف (class) الآتي باسم Customer: data class Customer(val name: String, val email: String) وله التوابع الوظيفيّة (functional methods) الآتية: توابع getter (وتوابع setter في حالة المتحولات من النوع var) لكافة الخاصّيّات (properties) equals()‎ hashCode()‎ toString()‎ copy()‎ component1()‎ و component2()‎ ...إلخ. وذلك لكافة الخاصّيّات (properties) في الصنف (راجع أصناف البيانات ...

 التابع ENV.to_a في روبي

يحول التابع to_a متغيرات البيئة إلى مصفوفة مكونة من مصفوفات فرعية تضم أسماء وقيم تلك المتغيرات. البنية العامة to_a → Array القيمة المعادة تُعاد مصفوفة مكونة من مصفوفات فرعية تضم أسماء وقيم متغيرات البيئة. أمثلة مثال عن استخدام التابع to_a: ENV.to_a # => [["TERM", "xterm-color"], ["SHELL", "/bin/bash"], ...] انظر أيضًا التابع to_h: ينشئ جدولًا من النوع Hash يحوي نسخةً من متغيرات البيئة.  التابع to_s: يعيد السلسلة النصية “ENV”. مصادر قسم التابع to_a في الصنف ENV في توثيق روبي الرسمي.

الخاصية z-index

الخاصية z-index في CSS تُحدِّد ترتيب العناصر التي يمكن أن يتغير مكانها (positioned elements) على المحور Z، فعندما تتداخل العناصر فستُحدِّد قيمة هذه الخاصية ما هو العنصر الذي سيظهر أعلى بقية العناصر، والعنصر الذي له قيمة z-index أكبر ما يمكن سيظهر في الأعلى. بطاقة الخاصية القيمة الابتدائية auto تُطبَّق على العناصر التي يمكن أن يتغير مكانها (positioned elements). قابلة للوراثة لا قابلة للتحريك نعم القيمة المحسوبة كما حُدِّدَت. /* كلمة محجوزة */ z-index: auto; /* <integer> قيم عددية */ z-index: 0; z-index: 3; z-index: 289; z-index: ...

التابع Float.positive?‎‎ في روبي

يتحقق التابع positive?‎ إن كان العدد العشري الذي استُدعي معه عددًا موجبًا. البنية العامة positive? → true or false‎ القيمة المعادة تعاد القيمة true إن كان العدد العشري المعطى عددًا موجبًا. انظر أيضا التابع ?finite: يتحقق إذا كان العدد العشري الذي استدعي معه عددًا عشريًّا صالحًا وفقًا لمعيار IEEE؛ أي أنه ليس عددٌ لا نهائي ويعيد التابع ‎nan?‎ القيمة false معه. التابع nan?‎: يتحقق إذا كان العدد العشري الذي استدعي معه عددًا عشريًّا غير صالح وفقًا لمعيارIEEE. التابع negative?‎: يتحقق إن كان العدد الذي استُدعي ...

الشيفرة الميتة (Dead Code)

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

البيانات المُجمَّعة (Data Clumps)

توصيف المشكلة تكرار مجموعةٍ من المتغيِّرات (variables) (كتلك المُستخدَمة كمعاملاتٍ [parameters] للربط مع قاعدة البيانات مثلًا) بشكلٍ متطابقٍ تمامًا في عدّة أجزاء من الشيفرة، إذ يجب تحويل تلك المجموعات إلى أصنافها (classes) الخاصّة بها. أسبابها تُعزى المشكلة عمومًا للبُنية (structure) البرمجيّة الضعيفة (أو ما يُعرف بمصطلح copypasta programming)، وللتحقُّقِ من وجود هذه المشكلة بالشيفرة احذف إحدى القيم، فإنْ حدث خللٌ نتيجة الحذف فالمشكلة قائمة ويجب علاجها، وإلّا فتلك إشارةٌ حسنةٌ ومن المحبَّذ تجميعُ هذه المتغيِّرات في كائنٍ واحدٍ. وما الحل؟ ...

الخاصية background

الخاصية background المختصرة في CSS تسمح لنا بتعديل خيارات تنسيق الخلفية كلها دفعةً واحدةً، بما في ذلك اللون أو الصورة، والمبدأ والحجم، وطريقة التكرار، وغير ذلك من الميزات. يمكن استخدام الخاصية background لضبط قيم خاصية أو أكثر من الخاصيات الآتية: background-clip، و background-color، و background-image، و background-origin، و background-position، و background-repeat، و background-size، و background-attachment. بطاقة الخاصية القيمة الابتدائية ستُضبَط قيم الخاصيات غير المختصرة إلى قيمها الابتدائية: background-image: none background-position: 0% 0% background-size: auto auto background-repeat: repeat background-origin: padding-box background-clip: border-box background-attachment: scroll background-color: transparent تُطبَّق على جميع ...

تبسيط استدعاءات التوابع (Simplifying Method Calls)

تجعل التقنيات التي سيشار إليها في هذا القسم استدعاءات التوابع أبسط وأسهل للفهم والاستيعاب. سيؤدي ذلك بدوره إلى تبسيط الواجهات للتفاعل بين الأصناف. هذه التقنيات هي: إعادة تسمية التوابع (Rename Method) المشكلة: لا يعبِّر اسم التابع عن ما يقوم به. الحل: إعادة تسمية التابع. إضافة المعاملات (Add Parameter) المشكلة: لا يملك التابع بيانات كافية لتنفيذ بعض الإجراءات. الحل: إنشاء معامل جديد لتمرير البيانات الضرورية. حذف المعاملات (Remove Parameter) المشكلة: لا يُستخدم معاملٌ ما في متن التابع. الحل: إزالة المعامل غير ...

التخطيط الشمولي المفرط (Speculative Generality)

توصيف المشكلة وجود أصنافٍ (classes) أو توابعَ (methods) أو حقولٍ (fields) أو معاملاتٍ (parameters) غير مُستخدَمة في الشيفرة. أسبابها إنشاء عناصرَ إضافيّةٍ "قد" يحتاجها المبرمج مستقبلًا لميّزات يُخطِّط لها (وقد لا تُنفَّذ أصلًا)، وغير مستخدمةٍ بالوقت الحاليّ، مما يجعل الشيفرة أكثر صعوبةً بالفهم والدعم. وما الحل؟ هدم الهيكليّة الهرميّة (collapse hierarchy) لإزالة الأصناف المُجرَّدة (abstract classes) غير المُستخدَمة. دمج الأصناف (inline classes) للحدُّ من عمليات تفويض المهامّ (delegation) غير الضروريّة لصنفٍ آخر. دمج التوابع (inline methods) للتخلُّص من التوابع عديمة ...

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

‎.offsetParent()‎ القيم المعادة يعيد كائنًا من النوع Object. الوصف يعيد أقرب عنصر جد (ancestor) متموضع (positioned) للعنصر المطابق. ‎.offsetParent()‎ أُضيف مع الإصدار: 1.2.6. ولا يقبل هذا الشكل أي وسائط. إن كان لدينا كائن jQuery يمثِّل مجموعة عناصر DOM، فسيسمح لنا التابع ‎.offsetParent()‎ بالبحث في العناصر الأجداد (ancestors) لهذه العناصر في شجرة DOM ثمَّ ينشئ كائن jQuery جديد ويضع فيه أقرب عنصر جد متموضع عثر عليه. يكون العنصر متموضعًا (positioned) إذا كانت قيمة الخاصِّيَّة position له هي إمَّا relative أو absolute ...

الصنف ‎:target‎

الصنف الزائف ‎:target‎ في CSS (أي pseudo-class) يُمثِّل عنصرًا فريدًا يُطابِق مُعرِّفه id قسمًا من رابط URL. :target { border: 2px solid black; } فمثلًا الرابط الآتي له قسم (الذي يلي رمز #) يُشير إلى العنصر المسمى section2: http://www.example.com/index.html#section2 وسيُحدَّد العنصر الآتي عبر الصنف الزائف ‎:target‎ عندما يكون رابط الصفحة مساويًا للرابط السابق: <section id="section2">Example</section> الشكل العام لهذا المحدد: :target أمثلة مثال عن استخدام الصنف الزائف ‎:target‎ للإشارة إلى جزء من الصفحة جرى الانتقال إليه من جدول المحتويات: <h3>جدول المحتويات</h3> <ol> <li><a href="#p1">انتقل ...

التابع String.concat()‎ في أردوينو

يضيف التابع concat()‎ المعامل المُمرَّر إليه إلى السلسلة النصية التي استدعيت معه. البنية العامة string.concat(parameter) تمثِّل string السلسلة النصية المراد إضافة قيمة المعامل parameter إليها. المعاملات parameter القيمة المراد إضافتها إلى السلسلة النصية المعطاة. أنواع البيانات المسموح بها هي: الكائن String، وسلسلة نصية، ومحرف، وبايت، وعدد صحيح، وعدد صحيح عديم الإشارة، وعدد طويل، وعدد طويل عديم الإشارة، وعدد عشري، وعدد عشري مضاعف، و ‎__FlashStringHelper(F() macro)‎. القيم المعادة تعاد القيمة true المنطقية إن نجحت العملية، أو القيمة false إن فشلت العملية ولم ...

Function.length

الخاصية Function.length تُحدِّد عدد الوسائط الذي تتوقعه الدالة. سمات الخاصية Function.length قابلة للكتابة لا قابلة للإحصاء لا قابلة للضبط نعم الوصف الخاصية length التابعة لكائنات Function تُشير إلى عدد الوسائط الذي تتوقعه الدالة، أي عدد المعاملات الرسمية (formal parameters)، وهذا العدد يستثني معامل البقية (rest parameter)، وسيتضمن المعاملات التي قبل أوّل معامل له قيمة افتراضية. وفي المقابل، الخاصية arguments.length تابعة للدالة محليًّا، وتوفِّر عدد الوسائط التي مُرِّرَت فعليًا إلى الدالة. قيمة هذه الخاصية على الدالة البانية Function الدالة البانية Function ...

التابع String.concat()‎ في أردوينو

يضيف التابع concat()‎ المعامل المُمرَّر إليه إلى السلسلة النصية التي استدعيت معه. البنية العامة string.concat(parameter) تمثِّل string السلسلة النصية المراد إضافة قيمة المعامل parameter إليها. المعاملات parameter القيمة المراد إضافتها إلى السلسلة النصية المعطاة. أنواع البيانات المسموح بها هي: الكائن String، وسلسلة نصية، ومحرف، وبايت، وعدد صحيح، وعدد صحيح عديم الإشارة، وعدد طويل، وعدد طويل عديم الإشارة، وعدد عشري، وعدد عشري مضاعف، و ‎__FlashStringHelper(F() macro)‎. القيم المعادة تعاد القيمة true المنطقية إن نجحت العملية، أو القيمة false إن فشلت العملية ولم ...

الاستثناء re.error()‎ في بايثون‎

تطلق اللغة هذا الاستثناء عند تمرير سلسلة نصية غير صالحة كتعبير نمطي إلى إحدى الدوال السابقة (كأن تتضمن السلسلة أقواسًا غير متطابقة)، أو عند حدوث أخطاء أخرى أثناء عملية التصريف أو المطابقة. لا يعد خلوّ السلسلة النصية من التطابقات خطأً على الإطلاق. البنية العامة re.error(msg, pattern=None, pos=None) الخاصيات تمتلك نسخة الخطأ الخصائص الإضافية التالية: msg رسالة الخطأ غير المنسّقة. pattern التعبير النمطي. pos موقع حدوث الخطأ في تصريف التعبير النمطي (قد يأخذ القيمة None). lineno السطر الحاوي على قيمة الخاصية ...

الخاصية background-repeat

الخاصية background-position في CSS تُعرِّف كيف ستتكرر صورة الخلفية؛ إذ يمكن أن تتكرر صورة الخلفية على المحور الأفقي، أو على المحور الرأسي، أو على كلا المحوري، ويمكن ألّا تتكرر أبدًا. افتراضيًا، ستُقصّ الصورة إلى أبعاد العنصر، لكن يمكن أن تغيير أبعادها لتتسع داخله (باستخدام القيمة round) أو توزيعها بانتظام بين أطراف العنصر (باستخدام القيمة space). بطاقة الخاصية القيمة الابتدائية repeat تُطبَّق على جميع العناصر. قابلة للوراثة لا قابلة للتحريك لا القيمة المحسوبة قائمة فيها أكثر من عنصر، وكل عنصر يتألف ...

CSS/Topics/List

الخاصية الوصف counter-increment تُزيد أو تُنقِص قيمة أحد عدّادات CSS بقيمة معيّنة، ويمكن إعادة تعيين العدّاد إلى رقم معيّن باستخدام الخاصية counter-reset. counter-reset تُعيد ضبط قيمة أحد عدّادات CSS إلى قيمة معيّنة، ويمكن زيادة أو إنقاص قيمة العداد باستخدام الخاصية counter-increment. list-style الخاصية list-style في CSS هي خاصية مختصرة تؤدي إلى ضبط قيم الخاصياتlist-style-type و list-style-image و list-style-position. list-style-image تُحدِّد صورةً لتُستخدَم للإشارة إلى عناصر القائمة. من المستحسن عادةً استخدام الخاصية المختصرة list-style لضبط قيمة هذه الخاصية. list-style-position تُحدِّد مكان إشارة عناصر القائمة. ومن المستحسن عادةً استخدام الخاصية المختصرة list-style. list-style-type ...

الدوال (Functions) في لغة Kotlin

التصريح عن الدوال (Function Declarations) يُصرَّح عن الدوال في لغة Kotlin باستخدام الكلمة المفتاحيّة fun كما يلي: fun double(x: Int): Int { return 2 * x } استخدام الدوال (Function Usage) يكون استدعاء الدوال كما في أيّ لغة برمجةٍ أخرى بالشكل: val result = double(2) أمّا استدعاء الدوال من الأصناف فيعتمد على المعامل . كما في الشيفرة: Sample().foo() // إنشاء كائنٍ من الصنف واستدعاء الدالة عبره المعاملات (Parameters) تُعرَّف المعاملات بالصيغة المُعتمدَة في لغة Pascal وهي name: type ، ...

String.prototype.codePointAt()‎

الدالة String.prototype.codePointAt()‎ تُعيد عددًا صحيحًا موجبًا الذي يُمثِّل رمز يونيكود للمحرف الموجود في الموضع المعيّن. البنية العامة str.codePointAt(index) index موضع العنصر من السلسلة النصية التي نريد معرفة رمز يونيكود الخاص بها. القيمة المعادة قيمة عددية تُمثِّل رمز المحرف الموجود عند الفهرس المُحدَّد، وإذا كانت قيمة الوسيط index غير محددة فستُعاد القيمة undefined. أمثلة استخدام الدالة codePointAt()‎ 'ABC'.codePointAt(1); // 66 '\uD800\uDC00'.codePointAt(0); // 65536 'XYZ'.codePointAt(42); // undefined تعويض نقص دعم المتصفحات الشيفرة الآتية تُضيف على ...

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

(PHP 5 >= 5.3.0, PHP 7) تستدعي الدّالة forward_static_call()‎ دالةً ساكنةً (static) تابعةً لصنف (method). الوصف mixed forward_static_call ( callable $function [, mixed $parameter [, mixed $... ]] ) تستدعي الدّالة forward_static_call()‎ دالةً معرّفةً من قبل المستخدم أو دالةً تابعةً لصنفٍ ممرّرة بالمُعامل function، مع الوسطاء التاليين. يجب أن تُستدعى هذه الدّالة داخل سياق دالةٍ تابعةٍ لصنف، ولا يمكن استخدامها خارج الصنف. إذ تستخدم الروابط الساكنة المتأخرة. المعاملات function الدّالة أو الدّالة التابعة لصنف التي نريد استدعائها. parameter صفر أو أكثر ...

Math.sign()‎

الدالة Math.sign()‎ تعيد إشارة العدد، التي تُشير إلى أنَّ العدد موجبٌ أم سالبٌ أم صفر. البنية العامة Math.sign(x) x العدد التي ستُجرى عليه العملية. القيمة المعادة عدد يُمثِّل إشارة الوسيط المُمرَّر إلى الدالة. فلو كان الوسيط عددًا موجبًا أو عددًا سالبًا أو صفرًا موجبًا أو صفرًا سالبًا فستعيد هذه الدالة القيم 1 أو -1 أو 0 أو -0 على التوالي وبالترتيب؛ وإلا فستُعاد القيمة NaN. الوصف لمّا كانت الدالة sign هي دالةٌ ساكنة (static method) تابعةٌ للكائن Math، فيجب عليك ...

التابع ARGF.rewind في روبي

يُرجِع التابع rewind المؤشر إلى بداية الملف الحالي عند بداية المدخلات (input) ويعيد تعيين رقم السطر ARGF.lineno إلى القيمة 0. البنية العامة rewind → 0 القيم المعادة يعاد العدد 0 عند نجاح العملية. أمثلة مثالٌ على استخدام التابع rewind: ARGF.readline #=> "This is line one\n" ARGF.rewind #=> 0 ARGF.lineno #=> 0 ARGF.readline #=> "This is line one\n" انظر أيضًا التابع pos: يعيد موضع المؤشِّر الحالي في الملف الحالي في المجرى ARGF. ...

التابع ARGF.tell في روبي

يعيد التابع tell موضع المؤشِّر الحالي في الملف الحالي في ARGF. البنية العامة tell → Integer القيم المعادة يعاد عدد صحيح (integer) يمثِّل موضع المؤشِّر الحالي بالبايت. أمثلة مثالٌ على استعمال التابع tell: ARGF.pos #=> 0 ARGF.gets #=> "This is line one\n" ARGF.pos #=> 17 انظر أيضًا التابع pos: يعيد موضع المؤشِّر الحالي في الملف الحالي في المجرى ARGF. التابع pos: ينقل عند استدعائه بالشكل pos = position المؤشِّر إلى المكان position (المعطى بالبايت) ...

التابع ARGF.pos في روبي

يعيد التابع pos موضع المؤشِّر الحالي في الملف الحالي في المجرى ARGF. البنية العامة pos → Integer القيمة المعادة يعاد عددٌ صحيحٌ (integer) يمثل موضع المؤشِّر الحالي (بالبايت) في الملف الحالي في المجرى ARGF. أمثلة مثال على استخدام التابع pos: ARGF.pos #=> 0 ARGF.gets #=> "This is line one\n" ARGF.pos #=> 17 انظر أيضًا التابع pos: ينقل عند استدعائه بالشكل pos = position المؤشِّر إلى المكان position (المعطى بالبايت) في المجرى ARGF. التابع fileno: ...

الحفاظ على الكائن كاملًا (Preserve Whole Object)

المشكلة جلب عدة قيم من أحد الكائنات، ثم تمريرها كمعاملات إلى أحد التوابع. الحل حاول تمرير الكائن بالكامل بدلًا من ذلك. مثال قبل إعادة التصميم جلب قيمة درجة الحرارة المنخفضة low والمرتفعة high من الكائن daysTempRange ثم تمريرهما إلى التابع ()withinTange: في لغة Java: int low = daysTempRange.getLow(); int high = daysTempRange.getHigh(); boolean withinPlan = plan.withinRange(low, high); في لغة C#‎: int low = daysTempRange.GetLow(); int high = daysTempRange.GetHigh(); bool withinPlan = plan.WithinRange(low, high); في لغة PHP: $low = $daysTempRange->getLow(); $high = $daysTempRange->getHigh(); $withinPlan = $plan->withinRange($low, $high); في لغة Python: ...

الأصناف البديلة (alternative) ذات الواجهات (interfaces) المختلفة

توصيف المشكلة التطابق بالمهام (function) ما بين صنفين (classes) ولكن بأسماءٍ مختلفةٍ لتوابعهما (methods). أسبابها عدم دراية المبرمج بوجود صنفٍ آخر يكافِئ بمهامّه مهامّ الصنف الحالي الذي ينشِئه. وما الحل؟ حذف أحد الصنفين بعد تنفيذ إحدى الحلول الآتية: إعادة تسمية التوابع (methods) لتصبح متطابقةً بكافّة الأصناف البديلة (alternative) (أي الأصناف المتكافئة بالمهام). توحيد التوقيع (signature) وتعريف الاستخدام ما بين التوابع، وذلك إمّا بنقل التابع (move method) أو إضافة المعاملات (add parameters) أو دمج التوابع عبر المعاملات (parameterize method). إن كان ...

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