نتائج البحث

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

الصنف ‎‎Enum‎ في Kotlin

يعدُّ الصنف Enum الصنف الأساس لكل الأصناف القابلة للعد (enum classes). إن أردت الاطلاع على معلومات أوسع حول هذه الأصناف، فاقرأ هذا المرجع. abstract class Enum<E : Enum<E>> : Comparable<E> (source) الدوال البانية (Constructors) <init> يعدُّ الصنف Enum الصنف الأساس لكل أصناف الترقيم (enum classes). الخاصيات name تمثل اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن. ordinal تمثل ترتيب (ordinal) الثابت المعرف في الكائن enum الذي استُدعي معها. الدوال clone ترمي هذه الدالة استثناءً لأنّ ثوابت الصنف Enum لا يمكن أن ...

الصنف ‎‎Enum‎ في Kotlin

يعدُّ الصنف Enum الصنف الأساس لكل الأصناف القابلة للعد (enum classes). إن أردت الاطلاع على معلومات أوسع حول هذه الأصناف، فاقرأ هذا المرجع. abstract class Enum<E : Enum<E>> : Comparable<E> (source) الدوال البانية (Constructors) <init> يعدُّ الصنف Enum الصنف الأساس لكل أصناف الترقيم (enum classes). الخاصيات name تمثل اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن. ordinal تمثل ترتيب (ordinal) الثابت المعرف في الكائن enum الذي استُدعي معها. الدوال clone ترمي هذه الدالة استثناءً لأنّ ثوابت الصنف Enum لا يمكن أن ...

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

(PHP 4, PHP 5, PHP 7) تطابق الدالة preg_match_all()‎‎ تعبيرًا نمطيًا بشكل شامل. الوصف int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] ) تبحث هذه الدالة في الموضوع subject عن جميع المتطابقات للتعبير النمطي المُعطى pattern وتضعهم في المصفوفة matches بالترتيب المحدد بواسطة flags. بعد العثور على أول متطابقة، ستستمر عمليات البحث التالية من نهاية المتطابقة الأخيرة. المعاملات pattern النمط المراد البحث عنه، كسلسلة نصية. subject السلسلة ...

المعامل ~= في الصنف Object‎ في روبي

يتحقّق المعامل ~= من تطابق نمطي كائنين (Pattern Match). استُبدِل في الأصناف السليلة (descendants، خاصةً الصنفين Regexp و String) لتوفير دلالاتِ مطابقةِ نمطٍ واضحةٍ وذات معنى. البنية العامة obj =~ other → nil المعاملات obj الكائن المراد التحقق من تطابق نمطه مع الكائن other. other الكائن الآخر الذي سيُتحقَق من تطابق نمطه مع الكائن obj. القيم المعادة تُعاد القيمة العدمية nil إذا كان لكل كائن من الكائنين obj و ohter نمطًا مختلفًا. انظر أيضًا المعامل ~!: يتحقق من عدم تساوي ...

المعامل ==‎ الخاص بالصنف Regexp في روبي

يتحقق المعامل == من تساوي تعبيران نمطيان. تتحقق عملية التساوي من كون نمطاهما (patterns) متطابقين، وكان لهما نفس رمز مجموعة الحروف (character set code)، وكانت لهما نفس القيمة casefold?‎. البنية العامة rxp == other_rxp→ true or false‎ القيمة المعادة تُعاد القيمة true في حال كان التعبيران النمطيان متساويان، وإلا فستُعاد القيمة false. أمثلة مثال على استخدام المعامل ==‎: /abc/ == /abc/x #=> false /abc/ == /abc/i #=> false /abc/ == /abc/u #=> false /abc/u ...

المُنشِئ الحافظ للنوع (Type-Safe Builder) في لغة Kotlin

المُنشِئ الحافظ للنوع (Type-Safe Builder) يُتاح بناءُ المُنشِئ الستاتيكيّ الحافظ للنوع في لغة Kotlin باستخدام الدوال ذات التسمية المعبِّرة كمُنشِئ (builder) بالإضافة إلى قيم حرفية (literals) للدوال مع المستقبِل (receiver)، إذ يسمح المُنشِئ الحافظ للنوع ببناء لغات مُخصَّصة المجال (DSL) بالاعتماد على Kotlin بما يتناسب مع إنشاء بُنى البيانات الهرميّة المعقَّدة بطريقةٍ نصف تصريحية (semi-declarative)، وهذه بعض الأمثلة من حالات استخدامه: توليد ترميزٍ (markup) باستخدام شيفرة Kotlin مثل HTML أو XML تصميم أجزاء واجهات المستخدم (UI) برمجيًا مثل Anko ضبط ...

كائنات UserString في بايثون

يعدّ UserString صنفًا يغلّف السلاسل النصية في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف str، ولكن التعامل مع هذا الصنف أسهل بسبب إمكانية الوصول إلى السلسلة النصية الضمنية كخاصية. البنية العامة class collections.UserString(seq) يحاكي هذا الصنف السلاسل النصية العادية في بايثون، ويجري الاحتفاظ بمحتويات النسخة في سلسلة نصية عادية يمكن الوصول إليها عن طريق خصائص نسخ الصنف UserString. تُسند محتويات النسخة بادئ الأمر إلى نسخة من المعامل seq. يمكن أن يكون المعامل seq ...

الدالة re.sub()‎ في بايثون‎

تبدل الدالة حالات التطابق غير المتداخلة في أقصى اليسار -والناتجة عن تطبيق التعبير النمطي المعطى على السلسلة النصية المعطاة- بسلسلة نصية أو بالقيمة المعادة من دالة. البنية العامة re.sub(pattern, repl, string, count=0, flags=0) المعاملات pattern التعبير النمطي المستخدم لإجراء عملية المطابقة. يمكن للنمط أن يكون سلسلة نصية أو كائن نمط pattern object. repl يمكن للبديل repl أن يكون سلسلة نصية أو دالة، وإن كان سلسلة نصية، فإنّ الدالة تعالج جميع المحارف المهرّبة فيها. بمعنى أنّ ‎\n تحوّل إلى محرف سطر ...

العمليات على المتغيرات في Bash

العمليات الحسابية على المتغيرات ناقشنا العمليات الحسابية من قبل في التوسعات في Bash، انظر التوسع الحسابي. طول المتغير استخدم صيغة {VAR#}$ لحساب عدد المحارف في متغير ما، وإن كان VAR هو أحد المحرفيْن * أو @ فإن القيمة يحل محلها عدد المعامِلات الموضعية أو عدد العناصر داخل المصفوفة بشكل عام، انظر المثال التالي: [hsoub in ~] echo $SHELL /bin/bash [hsoub in ~] echo ${#SHELL} 9 [hsoub in ~] ARRAY=(one two three) [hsoub in ~] echo ${#ARRAY} 3 عمليات التحول في المتغيرات الإحلال Substitution {VAR:-WORD}$ إن لم ...

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

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

الدالة MatchResult.next()‎ في Kotlin

تعيد الدالة next()‎ كائنًا من النوع MatchResult يحوي ناتج المطابقة التالية لتعبير نمطي محدد والذي يبدأ عند الفهرس الذي انتهت عنده آخر عملية مطابقة (أي يبدأ عن المحرف الذي يلي آخر محرف تمت مطابقته). البنية العامة abstract fun next(): MatchResult? القيمة المعادة يعاد كائنٌ من النوع MatchResult يحوي نتائج المطابقة التالية لتعبير نمطي محدد التي تبدأ من الفهرس الذي انتهت عنده آخر عملية مطابقة. أمثلة ينشِئ التابع Regex()‎ في الشيفرة التالية تعبيرًا نمطيًا باسم reg لمطابقة التعابير العددية، ثم يستدعي معه الدالة find()‎ للحصول على مطابقات التعبير النمطي reg ...

التابع Regexp.eql?‎‎ في روبي

يتحقق التابع eql?‎ إن كان التعبير النمطي المعطى مساويًا للتعبير النمطي الذي استُدعي معه؛ عملية التحقق من التساوي تشمل التحقق إن كان نمطاهما (patterns) متطابقان، وكان لهما نفس رمز مجموعة الحروف (character set code)، وكانت لهما نفس القيمة casefold?‎ لحالة الأحرف. البنية العامة eql?(other_rxp)→ true or false‎ المعاملات other_rxp‎ تعبير نمطي يراد التحقق من تساويه مع تعبير نمطي آخر. القيمة المعادة تعاد القيمة true إن كان التعبير النمطي other_rxp‎ مساويًا للتعبير النمطي المعطى، وإلا فستعاد القيمة false. أمثلة مثال على استخدام ...

الدالة re.compile()‎ في بايثون

تصرّف الدالة التعبير النمطي إلى كائن تعبير نمطي regex يمكن استخدامه للمطابقة بواسطة توابعه الخاصّة match()‎ و search()‎ وغيرها. البنية العامة re.compile(pattern, flag=0) المعاملات pattern التعبير النمطي المراد تصريفه. flags يمكن تحديد طريقة التعامل مع التعبير النمطي باستخدام قيم الرايات، ويمكن استخدام أكثر من راية وذلك بفصلها بعامل OR الخاص بالأعداد الثنائية (العامل |). يمكن استخدام المتغيرات التالية كقيم للمعامل flags: re.A re.ASCII يؤدي استخدام هذه الراية إلى جعل عملية المطابقة الخاصة بالتسلسلات ‎\w ،\W ،\b ،\B ،\d ،\D ،\s ...

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

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

أنماط الشيفرات المُتعارَف عليها ما بين مبرمجي Kotlin

تعرِض هذه الصفحة أنماط كتابة الشيفرات المُتعارَف عليها (conventions) من قِبل مبرمجي لغة Kotlin. تطبيق دليل التنسيق (Applying the Style Guide) لضبط المُنسِّق IntelliJ formatter بما يتوافق مع هذا الدليل يُنصَح بتثبيت إضافة Kotlin بالإصدار 1.2.20 (أو أي إصدارٍ أحدث) وضبط المّحرِّر بالانتقال إلى الإعدادات (Settings) ثمّ المُحرِّر (Editor) ثم نمط الشيفرة (Code Style) ثم Kotlin واختر "ضبط من..." Set from…"‎" في الزاوية اليمنى العُلويَّة ومن القائمة اختر الخيار Predefined style/Kotlin style guide. وللتأكد من تنسيق الشيفرة وفقًا لدليل Kotlin ...

أنماط الشيفرات المُتعارَف عليها ما بين مبرمجي Kotlin

تعرِض هذه الصفحة أنماط كتابة الشيفرات المُتعارَف عليها (conventions) من قِبل مبرمجي لغة Kotlin. تطبيق دليل التنسيق (Applying the Style Guide) لضبط المُنسِّق IntelliJ formatter بما يتوافق مع هذا الدليل يُنصَح بتثبيت إضافة Kotlin بالإصدار 1.2.20 (أو أي إصدارٍ أحدث) وضبط المّحرِّر بالانتقال إلى الإعدادات (Settings) ثمّ المُحرِّر (Editor) ثم نمط الشيفرة (Code Style) ثم Kotlin واختر "ضبط من..." Set from…"‎" في الزاوية اليمنى العُلويَّة ومن القائمة اختر الخيار Predefined style/Kotlin style guide. وللتأكد من تنسيق الشيفرة وفقًا لدليل Kotlin ...

الحقل email

عناصر <input> ذات النوع email تسمح للمستخدم بإدخال وتعديل عنوان بريد إلكتروني، أو قائمةً بعناوين البريد الإلكتروني إذا كانت الخاصية multiple مضبوطةً. سيتم التحقق من صحة المدخلات تلقائيًا للتأكد أنَّها ليست فارغة وأنَّها تُمثِّل عنوان (أو عناوين) بريد إلكتروني صالح قبل إرسال النموذج. إذا لم يكن المتصفح يدعم الحقل email فسيستخدم المتصفح الحقل text الافتراضي. <input type="email" name="email"> الخاصية value تحتوي الخاصية value في الحقل email على سلسلة نصية (DOMString) التي سيتم التحقق من صحتها تلقائيًا، وهنالك ثلاث صيغ سليمة ...

التعابير النمطية في Bash

يلقي هذا الباب الضوء على المزايا المُضمَّنة في Bash لمطابقة الأنماط (patterns) والتعرف على فئات المحارف ومداها. إضافة إلى تفصيل للتعابير النمطية (Regular Expressions)، إذ هي أدوات قوية لاختيار أسطر بعينها من ملفات أو من مُخرج ما، وتستخدمها أوامر كثيرة في يونكس مثل vim و perl وقاعدة بيانات PotgreSQL وغيرها، كما يمكن إضافتها في أي لغة أو تطبيق باستخدام مكتبات خارجية، بل قد تجدها في أنظمة غير أنظمة يونكس، إذ يستخدمها برنامج Excel للجداول الذي يأتي في حزمة مكتب ويندوز. ...

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

(PHP 4 >= 4.0.5, PHP 5, PHP 7) تبحث الدالة preg_replace_callback()‎‎ عن تعبير نمطي وتستبدله باستخدام دالة مُعرَّفة من المستخدم. الوصف mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit= -1 [, int &$count ]] ) يتطابق سلوك هذه الوظيفة تقريبًا مع الدالة preg_replace()‎‎، باستثناء أنه يجب تحديد الدالة المُعرَّفة من المستخدم callback بدلاً من المعامل replacement. المعاملات pattern النمط المراد البحث عنه. ويمكن أن يكون إما سلسلةً نصيةً أو مصفوفةً من السلاسل النصية. callback الدالة ...

الأصناف المتداخلة (Nested) والداخلية (Inner) في لغة Kotlin

الأصناف المتداخلة (Nested) يُمكن للأصناف أن تتداخل فيما بينها، ويتَّضح ذلك عبر المثال الآتي: class Outer {    private val bar: Int = 1    class Nested {        fun foo() = 2    } } val demo = Outer.Nested().foo() // == 2 إذ يتوضَّع الصنف باسم Nested داخل الصنف Outer ، وعند تعريف المتغيِّر demo فهو سيأخذ القيمة من الدالة foo والموجودة في الصنف Nested المُعرَّف بالصنف Outer والتي هي القيمة 2. الأصناف الداخليَّة (Inner Classes) يُمكن تحديد الصنف كصنفٍ داخليٍّ بالكلمة المفتاحيّة inner وذلك بهدف إتاحة الوصول لكافّة عناصر ...

Python/pathlib/PurePath/match

 التابع PurePath.match يختبر هذا التابع مطابقة المسار لنمط اختبار المطابقة glob المعطى. البنية العامة تبدأ المطابقة من اليمين، ويمكن أن يكون النمط المعطى نسبيًّا وعندها بُمكن أن يكون المسار نسبيًّا أو مُطلقًا >>> PurePath('a/b.py').match('*.py') True >>> PurePath('/a/b/c.py').match('b/*.py') True >>> PurePath('/a/b/c.py').match('a/*.py') False أما إذا كان النمط مُطلقًا، فلا بد أن يكون المسار مُطلقًا أيضًا وأن يتطابق كامل المسار مع النمط >>> PurePath('/a.py').match('/*.py') True >>> PurePath('a/b.py').match('/*.py') False كما أن نكهة الصنف الخاصة بويندوز لا تهتم بحالة الحروف، على عكس النكهة الخاصة بباقي الأنظمة. >>> PureWindowsPath('b.py').match('*.PY') True >>> PurePosixPath('b.py').match('*.PY') False المعاملات الوسيط pattern هو النمط المطلوب مطابقته مع ...

التابع Enumerable.chunk في روبي

يُمرِّر التابع chunk كل عنصر من عناصر المجموعة التي استدعيت معه إلى الكتلة المعطاة ثمَّ يُقطِّعها إلى أجزاء (قطع صغيرة) بحسب القيمة المعادة من الكتلة. العناصر المتتالية التي يكون لها نفس القيمة المعادة من الكتلة هي التي تُجمَّع سويةً. القيم المفتاحية التالية لها معنًى خاص: nil و ‎:_separator: يحدِّدان بأنَّه يجب على العناصر أن تُحذَف. يمكن استعمالهما لتجاهل بعض العناصر. ‎:_alone: يحدِّد بأنه يجب على العنصر أن يُجمَّع لوحده. أية رموز أخرى تبدأ بخط سفلي (underscore) سيؤدي استعمالها إلى رمي خطأ. البنية ...

الصنف Dir في روبي

كائنات الصنف Dir هي مجاري مجلدات (directory streams) تمثِّل الجلدات في نظام الملفات الأساسي لنظام التشغيل. فهي توفر طرائق متعددة لعرض المجلدات ومحتوياتها. انظر أيضًا صفحة الصنف File لمزيد من المعلومات. يحوي المجلد المستخدم في الأمثلة الموجودة في صفحات التوابع ملفين عاديين هما: config.h و main.rb، بالإضافة إلى المجلد الأب (..) ، والمجلد نفسه (.). توابع الصنف العامة (Public Class Methods) المعامل [] يكافئ استدعاء Dir.glob([string,...], 0)‎.  chdir‎ يغيِّر مجلد العمل (working directory) الحالي للعملية الحالية إلى مجلَّدٍ محدَّدٍ. children ...

الخاصية Regex.options في Kotlin

تمثل الخاصية Regex.options مجموعةَ الخيارات التي استُخدمت في إنشاء التعبير النمطي الذي استُدعي معها. البنية العامة actual val options: Set<RegexOption> القيمة المعادة تعاد مجموعةٌ تحوي جميع الخيارات التي استعملت في ضبط التعبير النمطي المعطى أثناء إنشائه. أمثلة استعمال الخاصية options مع تعبير نمطي لمعرفة الخيارات التي استعملت في ضبطه عند إنشائه -باستعمال الدالة Regex()‎-: fun main(args: Array<String>) { val reg = Regex("""-?\d+(\.\d+)?""", RegexOption.UNIX_LINES) print(reg.options) // [UNIX_LINES] } انظر أيضًا الخاصية Regex.pattern: تمثل النمط الأولي الذي ...

كائنات UserList في بايثون

يعدّ UserList صنفًا يغلّف القوائم في بايثون، ويعدّ صنفًا أساسيًا مفيدًا لإنشاء أصناف شبيهة بالقوائم خاصّة بالمستخدم، والتي يمكن الوراثة منها وإعادة تعريف توابعها وإضافة توابع أخرى جديدة، وهكذا يمكن إضافة عمليات جديدة على القوائم. أصبحت الحاجة إلى هذا الصنف محدودة نظرًا لإمكانية التفريع المباشر من القوائم في بايثون، لكن التعامل مع هذا الصنف أسهل بسبب كون إمكانية الوصول إلى القائمة الضمنية كخاصية. البنية العامة class collections.UserList([list]) يحاكي هذا الصنف القوائم العادية في بايثون، ويجري الاحتفاظ بمحتويات النسخة في قائمة ...

throw في JavaScript

التعبير البرمجي throw يؤدي إلى رمي استثناء (exception) يُعرِّفه المستخدم، وسيؤدي ذلك إلى توقف تنفيذ الدالة الحالية (أي أنَّ التعابير البرمجية بعد throw لن تُنفَّذ) وسينتقل التنفيذ إلى أوّل catch، وإذا لم تكن موجودةً فسينتهي تنفيذ البرنامج. البنية العامة throw expression; expression التعبير الذي سيُرمى. الوصف يُستخدَم التعبير throw لرمي استثناء، وعندما ترمي استثناءً فإنَّ قيمة expression تُحدِّد ما هي قيمة الاستثناء. أمثلة: throw 'Error2'; // توليد استثناء له قيمة نصية throw 42; // توليد استثناء ...

الصنف datetime.tzinfo()‎ في بايثون

هذا الصنف هو صنف أساسي مجرّد abstract base class، وهذا يعني أنّه لا يمكن إنشاء نسخة منه بصورة مباشرة، بل يجب اشتقاق صنف فرعي منه يتضمّن (على الأقل) توابع tzinfo القياسية التي ستُستخدم من طرف توابع الصنف datetime. تقدّم وحدة datetime الصنف timezone وهو صنف فرعي محدّد concrete بسيط من الصنف tzinfo، يمكن عن طريقه تمثيل المناطق الزمنية باستخدام مقدار إزاحة ثابت عن التوقيت العالمي المنسّق، مثل التوقيت العالمي المنسّق نفسه، أو توقيتي EST و EDT في أمريكا الشمالية. يمكن ...

التابع Enumerable.count في روبي

يعيد التابع count عدد العناصر الموجودة في المُعدِّد الذي استدعي معه. إن مُمرَّر معامل إلى التابع، فسيحسب عدد العناصر الموجود في المُعدِّد المساوية إلى قيمة هذا المعامل. أمَّا إن أعطيت كتلة، فسيحسب عدد العناصر المحقِّقة لتلك الكتلة. البنية العامة count → int count(item) → int count { |obj| block } → int المعاملات item الكائن المراد حساب عدد العناصر الموجودة في المُعدِّد المساوية له. القيمة المعادة يعاد عدد صحيح يمثِّل عدد العناصر الموجودة في المُعدِّد المعطى. إن مُمرَّر المعامل item، فسيُحسَب عدد العناصر الموجود ...

الدالة Regex.matchEntire()‎ في Kotlin

تحاول الدالة matchEntire()‎ مطابقة جميع محارف السلسلة الممررة إليها مع التعبير النمطي الذي استدعي معها. البنية العامة actual fun matchEntire(input: CharSequence): MatchResult? المعاملات input سلسلة المحارف التي يراد تطابق جميع محارفها مع التعبير النمطي المعطى. القيمة المعادة تعاد نسخةٌ من الصنف MatchResult تحتوي على جميع محارف المعامل input إن تطابقت جميع تلك المحارف مع التعبير النمطي المعطى، أو تعاد القيمة null خلاف ذلك. أمثلة استعمال الدالة matchEntire()‎ لمعرفة سلسلة المحارف المطابقة للتعبير النمطي ‎-?\d+(\.\d+)?‎ بشكل كامل: fun main(args: Array<String>) { ...

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

(PHP 5 >= 5.3.0, PHP 7) تبحث الدالة preg_filter()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ عن تعبير نمطي وتستبدله. الوصف mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) تشبه الدالة preg_filter()‎‎ الدالة preg_replace()‎‎ باستثناء أنها تعيد فقط السلاسل النصية (التي يمكن تحويلها) إذا كانت مطابقة. لمزيد من التفاصيل حول كيفية عمل هذه الدالة، اقرأ توثيق preg_replace()‎‎. القيم المعادة تُعيد هذه الدالة مصفوفة إذا كان المعامل subject عبارة عن مصفوفة، أو سلسلة نصية إذا كان ...

الكائن المؤجل (Deferred Object)

قُدِّم الكائن المؤجل في الإصدار jQuery 1.5، وهو كائن أداة قابل للتسلسل ينشأ عن طريق استدعاء التابع jQuery.Deferred()‎‎‎. ويمكنه تسجيل عدة دوال رد اتصال في صفوف رد الاتصال، واستدعاء هذه الصفوف، ونقل حالة النجاح أو الفشل لأي دالة متزامنة أو غير متزامنة. يكون الكائن المؤجل قابلاً للتسلسل، مماثلاً للطريقة التي يكون فيها كائن jQuery قابلاً للتسلسل، ولكن له توابعه الخاصة. بعد إنشاء كائن مؤجل، يمكنك استخدام أي من التوابع المذكورة أدناه إما بالتسلسل مباشرة من إنشاء الكائن، أو حفظ الكائن ...

الانعكاس (Reflection) في لغة Kotlin

الانعكاس هو مجموعةٌ من مميّزات اللغة والمكتبات التي تسمح بمراقبة بُنية البرنامج أثناء التنفيذ، إذ تولي لغة Kotlin أهميةً كبرى لكلٍّ من الدوال (functions) والخاصّيّات (properties) وتستمر بتتبُّعها (مثل معرفة اسم أو نوع الخاصّيّة والدالة أثناء التنفيذ) وهذا يرتبط ارتباطًا وثيقًا مع استخدام النمط الوظائفيّ (functional) أو التفاعليّ (reactive). ملاحظة: إن الجزء التنفيذيّ (runtime component) المطلوب في منصّة العمل Java لاستخدام ميزات الانعكاس يُوزَّع كملف ‎.jar مستقلٍّ (kotlin-reflect.jar) وذلك بهدف تخفيض حجم التخزين المطلوب لمكتبة التنفيذ (runtime library) للتطبيقات غير ...

أصناف الثوابت المُتعدِّدة (Enum Classes) في لغة Kotlin

يتلخَّصُ الاستخدام الرئيسيّ لأصناف الثوابت المتعدَّدة في قدرتها على تعريف الاستخدام (implementing) للثوابت المتعدًّدة الحافظة للنوع (type-safe)، ويُصرَّح عنها بالشكل: enum class Direction { NORTH, SOUTH, WEST, EAST } إذ يُعدُّ كلُّ ثابتٍ فيها كائنًا (object)، ويُفصل فيما بينها بالفاصلة , . التهيئة (Initialization) لمّا كان كلّ ثابتٍ في صنف الثوابت المتعدِّدة (enum) يُعدُّ كائنًا فيمكن إجراء التهيئة كما يلي: enum class Color(val rgb: Int) { RED(0xFF0000), ...

الحقل password

عناصر <input> ذات النوع password تسمح للمستخدم بإدخال كلمة مرور بأمان، فهذا الحقل يبدو كحقل الإدخال النصي لكن النص الموجود داخله مشوش ولا يمكن قراءته، ويتم ذلك باستبدال كل محرف برمز آخر مثل رمز النجمة * أو النقطة • وسيختلف المحرف المستخدم بين المتصفحات وأنظمة التشغيل. تفاصيل طريقة الإدخال تختلف من متصفح إلى متصفح، ففي الأجهزة المحمولة سيُعرَض عادةً الحرف المكتوب لبرهة من الزمن قبل تشويشه، مما يسمح للمستخدم أن يتأكد أنَّه ضغط على الزر الصحيح، وهذا مفيدٌ إذا وضعنا ...

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

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

الدالة Regex.matches()‎ في Kotlin

تتحقق الدالة matches()‎ من مطابقة جميع محارف السلسلة الممررة إليها مع التعبير النمطي الذي استدعي معها. البنية العامة infix actual fun matches(input: CharSequence): Boolean وجود الكلمة المفتاحية infix يدل على إمكانية استدعاء الدالة بنمط التدوين الداخلي (Infix notation)؛ أي من خلال حذف المعامل . والأقواس () المُستخدَمَين في الاستدعاء عادةً. المعاملات input سلسلة من المحارف التي يراد أن يُتحقَق من مطابقتها كلِّيًا لتعبير نمطي معين. القيمة المعادة تعاد القيمة true إن تطابقت جميع محارف السلسلة input مع التعبير النمطي المعطى. أمثلة استعمال الدالة matches()‎ للتحقق من مطابقة ...

الأصناف في TypeScript

مقدمة تعتمد لغة JavaScript التقليدية على الدوال والوراثة المعتمدة على سلسلة Prototype لبناء مكونات قابلة لإعادة الاستعمال، وقد يجد بعض المبرمجين هذه الطريقة غريبة ومرهقة، خاصّة الذين ألِفوا البرمجة كائنيّة التوجه التي تعتمد على الأصناف التي ترث وظيفة (functionality) الأصناف الأساس (base classes) وتُبنَى فيها الكائنات من هذه الأصناف. بدايةً من الإصدار ECMAScript 2015 المعروف كذلك بالإصدار ECMAScript 6، يُمكن لمبرمجي JavaScript بناء التطبيقات باستخدام البرمجة كائنيّة التوجّه المعتمِدة على الأصناف. وتسمح TypeScript للمطورين باستعمال هذه التقنيات الآن، وتُترجِمها إلى ...

تتبع الأحداث (Trace Events) في Node.js

مؤشر الاستقرار: 1 - تجريبي يوفر تتبع الأحداث آلية لتركيز معلومات التتبع التي  تولدت بواسطة V8، ونواه Node.js، وبرمجية مساحة المستخدم (userspace code). يمكن تفعيل التتبع بواسطة راية سطر الأوامر ‎--trace-event-categories أو باستخدام وحدة trace_events. وتقبل راية ‎‎--‎trace-event-categories قائمة بأسماء الفئات المفصولة بفاصلات. والفئات المتاحة هي:     • node - عنصر نائب (placeholder) فارغ.     • node.async_hooks - يتيح التقاط بيانات التتبع async_hooks المُفصَّلة. أحداث async_hooks لها asyncId فريد وخاصيتا triggerId و triggerAsyncId الخاصة.     • node.bootstrap ...

الحقل url

عناصر <input> ذات النوع url تستخدم للسماح للمستخدم بإدخال وتعديل رابط URL، وسيتحقق المتصفح تلقائيًا من المدخلات للحرص على أنها فارغة أو رابط URL بصيغة سليمة. <input type="url" name="url"> إذا لم يكن المتصفح يدعم الحقل url فسيستخدم المتصفح الحقل text الافتراضي. الخاصية value تحتوي الخاصية value في الحقل url على سلسلة نصية (DOMString) التي تمثل المحتوى الحالي النصي الموجود في حقل الإدخال والذي جرى التحقق من صيغته على أنه رابط URL صحيح. هنالك ثلاث صيغ صحيحة لقيمة هذا الحقل: سلسلة نصية فارغة "" تشير إلى أنَّ المستخدم لم يدخل ...

التابع regex.search()‎ في بايثون‎

يفحص هذا التابع السلسلة النصية المعطاة بحثًا عن أول موقع يحصل فيه تطابق مع التعبير النمطي المصرّف، ويعيد كائن التطابق المقابل. البنية العامة regex.search(string[, pos[, endpos]]) المعاملات string السلسلة النصية التي ستبحث فيها الدالة عن حالات التطابق. pos يحدّد هذا المعامل الاختياري الموقع الذي يبدأ منه التابع البحث في السلسلة النصية، ويأخذ القيمة الافتراضية 0. إن تحديد موقع بدء عملية البحث ليس مطابقًا تمامًا لعملية تقطيع السلسلة النصية، فالمحرف '^' يطابق في بداية السلسلة النصية وفي المواقع التي تأتي بعد ...

تقنيات إعادة التصميم (Refactoring Techniques)

إنشاء التوابع تستهدف إعادة التصميم بشكل رئيسيٍّ إنشاء التوابع الصحيحة المناسبة، إذ تكون التوابع الطويلة سببًا للمشاكل في كثيرٍ من الحالات، وتجعل شيفرات بعض التوابع منطق التنفيذ (execution logic) غامضًا ويصبح التابع بهذا عصيَّ الفهم من جهةٍ وصعب التغييرٍ من جهة ثانية. يشمل هذا القسم من الحلول كلَّ ما يتعلق بالتوابع وإزالة التكرار (duplicates) في الشيفرة ليسمح بإجراء التطويرات المستقبليّة، وهذه التقنيات هي: استخراج التوابع (Extract Methods): والتي تتمثل بوجود أجزاء من الشيفرة يُمكن عزلها وتجميعها سويةً. دمج التوابع (Inline ...

Kotlin/Topics

بُنية لغة Kotlin مشابهةٌ لبنية لغة البرمجة Java بوصفها كائنيّة التوجه (OOP)، وبالتالي فهي تعتمد أساسًا على وجود الأصناف (classes) التي تحتوي بدورها على الخاصّيّات (properties) والدوال (functions)، كما وتدعم Kotlin العلاقات فيما بينها مثل الوراثة (inheritance) من صنفٍ أعلى (superclass) أو التداخل فيما بينها (nesting classes)، وتمتاز بوجود مُحدِّدات الوصول (visibility modifiers) للتحكم بعمليات الوصول للبيانات المُخزَّنة، وكذلك فهي تعتمد في بُنيتها على الحزم (packages) والمكتبات (libraries) التي تحتوي على الدوال المساعدة عند الحاجة إليها، أمّا عن بُنية التعليمات ...

الدالة jQuery.Deferred()‎‎ في jQuery

jQuery.Deferred( [beforeStart ] )‎ القيم المعادة تعيد كائنًا مؤجلًا من النوع Deferred. الوصف هذه الدالة هي دالةٌ منتجة (factory function) تعيد كائن أداةٍ قابل للتسلسل (chainable utility object) يمكن استعمال مجموعة من التوابع مع هذا الكائن لتسجيل عدَّة دوال رد نداءٍ في طوابير ردود النداء (callback queues)، واستدعاء هذه الطوابير فيما بعد، ونقل حالة النجاح (success state) أو الفشل (failure state) لأي دالة متزامنة (synchronous) أو غير متزامنة (asynchronous). jQuery.Deferred( [beforeStart ] )‎ أُضيف مع الإصدار: 1.5. beforeStart دالة من ...

الدالة jQuery.Deferred()‎‎ في jQuery

jQuery.Deferred( [beforeStart ] )‎ القيم المعادة تعيد كائنًا مؤجلًا من النوع Deferred. الوصف هذه الدالة هي دالةٌ منتجة (factory function) تعيد كائن أداةٍ قابل للتسلسل (chainable utility object) يمكن استعمال مجموعة من التوابع مع هذا الكائن لتسجيل عدَّة دوال رد نداءٍ في طوابير ردود النداء (callback queues)، واستدعاء هذه الطوابير فيما بعد، ونقل حالة النجاح (success state) أو الفشل (failure state) لأي دالة متزامنة (synchronous) أو غير متزامنة (asynchronous). jQuery.Deferred( [beforeStart ] )‎ أُضيف مع الإصدار: 1.5. beforeStart دالة من ...

التابع regex.fullmatch()‎ في بايثون‎

يتحقّق هذا التابع من تطابق التعبير النمطي المصرّف مع السلسلة النصية المعطاة كاملة، ويعيد كائن التطابق المقابل. البنية العامة regex.fullmatch(string[, pos[, endpos]]) المعاملات string السلسلة النصية التي ستبحث فيها الدالة عن حالات التطابق. pos يحدّد هذا المعامل الاختياري الموقع الذي يبدأ منه التابع البحث في السلسلة النصية، ويأخذ القيمة الافتراضية 0. إن تحديد موقع بدء عملية البحث ليس مطابقًا تمامًا لعملية تقطيع السلسلة النصية، فالمحرف '^' يطابق في بداية السلسلة النصية وفي المواقع التي تأتي بعد محرف السطر الجديد، ولكن ...

مدخل إلى ملفات التصريحات في TypeScript

مقدمة هذا الدليل مصمَّم لإرشادك إلى كيفيّة كتابة ملفّات تصريحاتٍ (Declaration Files) عاليّة الجودة في TypeScript. يفترض هذا الدليل أنّ لك معرفةً بأساسيّات لغة TypeScript. اقرأ توثيق لغة TypeScript لتفهم مبادئ اللغة الأساسيّة، خاصّة الأنواع ومجالات الأسماء. الأقسام ينقسم هذا الدليل إلى الأقسام التالية: هياكل المكتبات يُساعد دليل هياكل المكتبات على فهم أشكال المكتبات الشائعة وكيفيّة كتابة ملفّ تصريحٍ سليمٍ لكلّ شكل. إذا كنت تُحرّر ملفّ تصريحات موجودٍ أصلًا (كُتِب من طرف مبرمج آخر مثلًا)، فالغالب أنّك لا تحتاج إلى ...

التابع regex.match()‎ في بايثون‎

يفحص هذا التابع بداية السلسلة النصية المعطاة بحثًا عن حالة تطابق مع التعبير النمطي المصرّف، ويعيد كائن التطابق المقابل. البنية العامة regex.match(string[, pos[, endpos]]) المعاملات string السلسلة النصية التي ستبحث فيها الدالة عن حالات التطابق. pos يحدّد هذا المعامل الاختياري الموقع الذي يبدأ منه التابع البحث في السلسلة النصية، ويأخذ القيمة الافتراضية 0. إن تحديد موقع بدء عملية البحث ليس مطابقًا تمامًا لعملية تقطيع السلسلة النصية، فالمحرف '^' يطابق في بداية السلسلة النصية وفي المواقع التي تأتي بعد محرف السطر ...

التعامل مع التعميم (Dealing with Generalization)

يملك التجريد (Abstraction) تقنيات إعادة التصميم الخاصة به والمرتبطة بشكل أساسي بوظيفة النقل على طول التسلسل الهرمي لوراثة الصنف (class inheritance hierarchy)، وبإنشاء أصناف وواجهات جديدة، وبتبديل التفويض مكان الوراثة أو العكس. تقنيات هذا القسم هي: استخراج الأصناف الفرعية (Extract Subclass) المشكلة: يكون للصنف ميزات تستعمل فقط في حالات معينة. الحل: إنشاء صنف فرعي واستخدامه في هذه الحالات. استخراج الأصناف الفائقة (Extract Superclass) المشكلة: وجود صنفين لهما حقول وتوابع مشتركة. الحل: إنشاء صنف أب مشترك لهما ونقل جميع الحقول والتوابع ...

الأعداد الكسرية في بايثون

تتيح وحدة fractions التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها. يمكن إنشاء نسخة من الكائن Fraction باستخدام زوج من الأعداد الصحيحة أو من عدد كسري آخر أو من سلسلة نصية. class fractions.Fraction(numerator=0, denominator=1) class fractions.Fraction(other_fraction) class fractions.Fraction(float) class fractions.Fraction(decimal) class fractions.Fraction(string) في السطر الأول من المثال السابق جرى استخدام زوج من الأعداد الصحيحة لإنشاء نسخة جديدة من الصنف Fraction. يجب أن يكون كلّ من البسط numerator والمقام denominator نسخًا من الصنف numbers.Rational ونحصل بذلك على نسخة جديدة من الصنف Fraction تحمل القيمة (البسط/المقام). ...

الأعداد الكسرية في بايثون

تتيح وحدة fractions التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها. يمكن إنشاء نسخة من الكائن Fraction باستخدام زوج من الأعداد الصحيحة أو من عدد كسري آخر أو من سلسلة نصية. class fractions.Fraction(numerator=0, denominator=1) class fractions.Fraction(other_fraction) class fractions.Fraction(float) class fractions.Fraction(decimal) class fractions.Fraction(string) في السطر الأول من المثال السابق جرى استخدام زوج من الأعداد الصحيحة لإنشاء نسخة جديدة من الصنف Fraction. يجب أن يكون كلّ من البسط numerator والمقام denominator نسخًا من الصنف numbers.Rational ونحصل بذلك على نسخة جديدة من الصنف Fraction تحمل القيمة (البسط/المقام). ...

خيارات المترجم في TypeScript

يوضح الجدول التالي جميع الخيارات التي يمكن استعمالها مع مترجم TypeScript للتحكم بسير عمله والتعديل على سلوكه أثناء ترجمة الشيفرات. الخيار النوع القيمة الافتراضية الوصف ‎--allowJs‎ ‎boolean‎ ‎false‎ السماح بترجمة ملفّات JavaScript. ‎--allowSyntheticDefaultImports‎ ‎boolean‎ ‎module === "system" ‎ أو أنّ الخيار ‎--esModuleInterop‎ مضبوط وقيمة ‎module‎ ليست ‎es2015‎ أو ‎esnext‎ السماح للاستيرادات الافتراضية من الوحدات التي لا تحتوي على تصديرات افتراضيّة. هذا لا يؤثر على الشيفرة المولَّدة، ويؤثر فقط على آلية التحقق من الأنواع. ‎--allowUnreachableCode‎ ‎boolean‎ ‎false‎ لا تُخبِر عن الأخطاء ...

صياغة التعبيرات النمطية في PHP

فيما يلي وصف لصياغة ودلالات التعبيرات النمطية التي يدعمها PCRE. وتوصف أيضًا التعبيرات النمطية في توثيق Perl وفي عدد من الكتب الأخرى، وبعضها يحتوي على أمثلة كثيرة. ويغطيها كتاب "Mastering Regular Expressions"، لجيفري فريدل Jeffrey Friedl الذي نشرته دار نشر O'Reilly ‏(ISBN 1-56592-257-3)، بتفصيل كبير. الوصف هنا غرضه التوثيق المرجعي. التعبير النمطي هو نمط يطابق سلسلة موضوع البحث من اليسار إلى اليمين. وتصطف معظم الأحرف لأنفسها بنمطٍ ما، وتطابق الأحرف المقابلة في موضوع البحث. كمثال صغير، يتطابق النمط The quick ...

تبديل رموز الأنواع بالحالة/الاستراتيجية (Replace Type Code with State/Strategy)

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

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

تقتطع الدالة split()‎ المحارف الموجودة بين الأجزاء المتطابقة مع تعبير نمطي معين أو بين سلاسل نصية أو محارف معينة في سلسلة المحارف الممررة إليها وتعيدها في قائمة. البنية العامة fun CharSequence.split( regex: Pattern, limit: Int = 0 ): List<String> inline fun CharSequence.split( regex: Regex, limit: Int = 0 ): List<String> fun CharSequence.split( vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0 ): List<String> fun CharSequence.split( ...

الوحدات في TypeScript

ملاحظة حول المصطلحات تغيّرت طريقة استخدام المصطلحات في النسخة TypeScript 1.5، إذ كانت مجالات الأسماء (namespaces) تُسمّى قديمًا بمصطلح "الوحدات الداخليّة (internal modules)"، وما كان يُسمّى بالوحدات الخارجيّة (External modules) أصبح يُسمّى ببساطة بمصطلح "الوحدات (modules)" وهو ما سنغطّيه في هذه الصفحة. ويجب استخدام الكلمة المفتاحية ‎namespace‎ في الأماكن التي كانت تُستخدَم فيها الكلمة المفتاحية ‎module‎ للتصريح عن وحدة داخليّة في النسخ التي سبقت TypeScript 1.5، أي أنّ عليك استخدام ‎namespace X {‎ عوضًا عن ‎module X {‎ (انظر صفحة ...

اختبارات HTTP في Laravel

مقدمة يزوّدك Laravel بـواجهة برمجيّة سلسة للقيام بطلبات HTTP لتطبيقك وتحليل الناتج. على سبيل المثال، القِ نظرة على الاختبار التالي: <?php namespace Tests\Feature; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithoutMiddleware; class ExampleTest extends TestCase {    /**     * مثال اختبار بسيط.     *     * @return void     */    public function testBasicTest()    {        $response = $this->get('/');        $response->assertStatus(200);    } } ينشئ التابع get طلب GET للتطبيق، بينما يتأكد التابع assertStatus من أنّ الرد المُعاد يحتوي على رمز حالة HTTP المعطى. إضافةً إلى هذا التأكد البسيط، يحتوي Laravel على مجموعة من توابع التأكيد لفحص المعلومات المتعلقة بالرد، كترويسات الرد (response headers)‎، ومحتوى الرد، وبنية ...

الوحدة collections.abc‎ في بايثون

تقدّم هذه الوحدة مجموعة من الأصناف الأساسية المجرّدة abstract base calsses (يرمز لها ABC اختصارًا) والتي يمكن استخدامها للتأكد ممّا إذا كان صنف معيّن يقدّم واجهة interface معينة، كأن يكون الصنف قابلًا للتقطيع hashable أو أنّه صنف ربط mapping. ملاحظة: قبل الإصدار 3.3 من اللغة كانت هذه الوحدة جزءًا من وحدة collections. الأصناف الأساسية المجرّدة في الوحدة collections تقدّم وحدة collections الأصناف الأساسية المجرّدة التالية: الصنف الأساسي المجرد يرث من التوابع المجرّدة توابع mixin Container   __contains__   Hashable   ...

التوجيه (Routing) في Laravel

التوجيه الأساسي تقبل أغلب مسارات Laravel الأساسيّة مُتغّيرين: رابط URI  و نطاق مغلق Closure مما يُوفّر طريقة بسيطة ومعبّرة جدّا لتعريف المسارات (routes): Route::get('foo', function () { return 'Hello World'; }); ملفات المسار الإفتراضيّة كل مسارات Laravel مُعرّفة في ملفات مساراتك الموجودة في المجلّد routes. يُحمّل إطار العمل كل هذه الملفّات تلقائيًا. يعرّف الملف routes/web.php كل المسارات المُخصّصة لواجهة الويب. مجموعة البرمجيّات الوسيطة web معيّنة على كل المسارات وتوفّر خاصيّات مثل حالة الجلسة (session state) والحماية CSRF. المسارات ...

التابع regex.split()‎ في بايثون‎

يقسم التابع السلسلة النصية عند كل مكان تحدث فيه عملية مطابقة للنمط المصرّف. هذا التابع مطابق تمامًا للدالة re.split()‎. البنية العامة regex.split(string, maxsplit=0) المعاملات string السلسلة النصية التي سيبحث فيها التابع عن حالات التطابق. maxsplit العدد الأقصى من التقسيمات التي سيجريها التابع على السلسلة النصية. في حال كان العدد الأقصى من التقسيمات أقل من عدد حالات المطابقة فإنّ التابع يعيد ما يبقى من السلسلة النصية ليكون العنصر الأخير في القائمة المعادة. يأخذ هذا المعامل القيمة الافتراضية 0. القيمة المعادة يقسم ...

الكائن match في بايثون

ينشأ الكائن match كنتيجة لتطبيق التابعين regex.match()‎ و regex.search()‎ على التعبير النمطي المصرّف. تمتلك كائنات match القيمة المنطقية True دائمًا، ولما كان التابعان match()‎ و search()‎ يعيدان القيمة None عندما لا يكون هناك حالات تطابق، يمكن التحقق من وجود التطابق باستخدام عبارة if بسيطة: match = re.search(pattern, string) if match: process(match) تدعم كائنات match التوابع والخصائص التالية: خصائص الكائن match match.pos قيمة المعامل pos الممرّر إلى التابعين regex.search()‎ و regex.match()‎. تمثّل هذه الخاصية الموقع الذي تبدأ فيه عملية البحث ...

المزخرفات في TypeScript

مقدمة مع إضافة الأصناف إلى TypeScript ونسخة ES6، فقد ظهرت كذلك حاجةٌ إلى ميزات إضافية لدعم تعديل الأصناف وعناصر الأصناف أو توصيفها (annotating). توفّر المزخرفات (Decorators) طريقة لإضافة توصيفات وبنية برمجة وصفيّة (meta-programming) لتصريحات الأصناف وعناصرها. المزخرفات حاليًّا اقتراح في المرحلة 2 (stage 2 proposal) في JavaScript وهي متوفّرة كميّزة تجريبيّة في TypeScript. ملاحظة: المزخرفات ميّزة تجريبيّة قد تتغيّر في النسخ الجديدة مستقبلًا. لتفعيل الدعم التجريبي للمزخرفات، عليك تفعيل خيار المترجم ‎experimentalDecorators‎ إما على سطر الأوامر أو في ملفّ ‎tsconfig.json‎ ...

كائنات OrderedDict‎ في بايثون

القواميس المرتّبة OrderedDict مطابقة للقواميس العادية باستثناء أنّها تتذكر ترتيب العناصر لحظة إدراجها فيها، بمعنى أنّه عند إضافة العناصر إلى قاموس مرتب، تعاد العناصر حسب ترتيب مفاتيحها عند إضافتها أول مرّة. البنية العامة class collections.OrderedDict([items]) تعيد الدالة البانية نسخة من صنف متفرّع عن الصنف dict تدعم جميع توابعه. كائن OrderedDict هو قاموس يتذكّر ترتيب مفاتيحه عند إدخالها أوّل مرة. وإن جرى كتابة عنصر جديد فوق عنصر موجود في القاموس المرتّب، فإنّ موضع الإدخال الأصلي لا يتغيّر، أما حذف عنصر معيّن ...

استخدام لغة Kotlin في تطوير تطبيقات الخادم (Server)

تُعدّ لغة Kotlin أداةً قويةً في تطوير تطبيقات الخادم (server)؛ إذ تكون الشيفرات فيها دقيقةً ومعبِّرة، وتمتاز بالتوافقيّة التامّة مع لغة Java ومن السهل تعلُّمها بسرعة. ميزات استخدام لغة Kotlin لتطوير تطبيقات الخادم (Server) القدرة على التعبير (Expressiveness): تساعد مميّزات لغة Kotlin المبتكرَة (مثل دعمها للمنشِئ الحافظ للنوع (type-safe builder) والخاصّيات المُعمّمة (delegated properties)) على إنشاء البنى التجريديّة (abstraction) سهلةِ الاستخدام. قابلية التوسّع (Scalability): تدعم لغة Kotlin ميّزة الروتينات المساعدة (coroutines)، وهي بهذا تتيح -في تطبيقات الخادم- إمكانيّة التوسّع لعددٍ ...

كائنات defaultdict‎ في بايثون

صنف متفرّع من الصنف الداخلي dict يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة. البنية العامة ‎class collections.defaultdict([default_factory[, ...]]) تعيد الدالة البانية لهذا الصنف كائنًا جديدًا شبيهًا بالقاموس، وdefaultdict هو صنف متفرّع من الصنف الداخلي dict يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة. أما بقية التوابع فهي مماثلة للصنف الرئيسي ولن توثّق هنا. يحدّد المعامل الأول القيمة الابتدائية للخاصية default_factory ويأخذ هذا المعامل القيمة الافتراضية None. أما بقية المعاملات (ومن ضمنها المعاملات المفتاحية) ...

الكائن RegExp في JavaScript

الكائن RegExp هو دالةٌ بانيةٌ تُنشِئ تعابير نمطيةً (regular expressions) لمُطابَقة النص مع نمط. البنية العامة يمكن أن تأخذ التعابير النمطية الشكل الآتي (الشكل المختصر، ثم الدالة البانية، ثم الدالة RegExp): /pattern/flags new RegExp(pattern[, flags]) RegExp(pattern[, flags]) pattern التعبير النمطي. flags إذا حُدِّدَت قيمة هذا الوسيط، فستحتوي على تجميعة من الرايات الآتية. g المطابقة في كامل السلسلة النصية، أي العثور على جميع المطابقات بدل التوقف عند أوّل مطابقة. i تجاهل حالة الأحرف. m تعدد الأسطر، أي معاملة محرف البداية والنهاية (أي ^ ...

المكتبة Active Record في ريلز

إنَّ Active Record هو مكتبة تربط أصنافًا بجداول قاعدة بيانات علائقية لتأسيس طبقة ثابتة لا تحتاج إلى ضبط للتطبيقات. توفر المكتبة صنفًا أساسيًّا يضبط - عند تفريع أصناف منه - العلاقة الرابطة بين الصنف الجديد وجدول موجود مسبقًا في قاعدة البيانات. في سياق أي تطبيق، يشار إلى هذه الأصناف عادةً على أنها «نماذج» (models). يمكن ربط النماذج Models أيضًا بنماذج أخرى عبر تعريف ارتباطات. يعتمد Active Record كل الاعتماد على التسمية، إذ يستعمل أسماء الصنف والارتباط لتأسيس علاقة رابطة (mapping) ...

أصناف البيانات (Data Classes) في لغة Kotlin

تُنشَأ بعض الأصناف بهدف تخزين البيانات فيها بشكلٍ أساسيّ، وبالتالي فإنّ كلّ ما تقوم به هذه الأصناف من وظائف يرتبط بالبيانات، وهذا ما يُسمى بأصناف البيانات في لغة Kotlin وتُعرَّف بالمُحدِّد data كما يلي: data class User(val name: String, val age: Int) قواعد عامّة يقوم المُترجِم في الأصناف من هذه النوع باشتقاق العناصر (deriving members) الآتية من كلِّ الخاصّيّات المُعرَّفة في الباني الأساسيّ (primary constructor): كلًا من equals()‎ و hashCode()‎ الدالة toString()‎ بشكلها ‎"User(name=John, age=42‎)‎"‎ الدوال بالصيغة componentN() functions بما ...

المخلوط Enumerable في روبي

يوفر المخلوط Enumerable مجموعة من الأصناف مع توابع بحث ونقل (traversal) عديدة قادرة على ترتيب عناصر مجموعة مع بعضها بعضًا. يجب أن يوفر الصنف التابع each الذي يعيد العضو التالي من المجموعة. إن استعمل التابع max، أو mix، أو sort، فيجب أن يُوازَن بين الكائنات في المجموعة باستعمال المعامل <=> الذي تعتمد عليه تلك التوابع في ترتيب عناصر المجموعة الواحدة مع بعضها بعضًا. توابع النسخة العامة all?‎ يتحقق إن كان كل عنصر من عناصر المجموعة التي استدعيت معه محقَّقًا للكتلة ...

سلاسل القوالب في بايثون

تقدّم القوالب طريقة أبسط لإجراء عمليات الاستبدال في السلاسل النصية الموصوفة في PEP 292. حيث يمكن إجراء عمليات الاستبدال باستخدام الرمز $ بدلًا من الرمز %، وباتباع القواعد التالية: يعتبر التسلسل $$ تسلسل تهريب، ويجري استبداله بعلامة $ واحدة. تسمّي الصيغة ‎$identifier معرّفًا يحدّد موضعًا للاستبدال يطابق مفتاح ربط يحمل الاسم "identifier". المعرّفات الصالحة هي تلك التي تتضمّن حروفًا وأرقامًا بترميز ASCII وتكون غير حساسة لحالة الأحرف، وتبدأ بشرطة سفلية أو أحد حروف الترميز ASCII. وينتهي اسم المحرّف عند أوّل ...

التابع Enumerable.slice_when في روبي

يقطِّع التابع slice_when عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد بدايتها عبر كتلةٍ معطاةٍ ثم يعيد مُعدِّد لكل جزء من الأجزاء الناتجة. البنية العامة slice_when {|elt_before, elt_after| bool } → an_enumerator يُقطِّع هذا التابع كل جزء باستعمال مفهوم العناصر المتجاورة - elt_before و elt_after - في المُعدِّد المستقبل. أي تُقطِّع هذه الدالة الأجزاء الواقعة بين elt_before و elt_after حيث تعيد الكتلة القيمة true. تُستدعَى الكتلة بعدد يساوي إلى طول المُعدِّد المستقبل مطروحًا من الواحد. يُنتِج المُعدِّد المعاد العناصر المُجزَّأة كمصفوفة. لذلك، ...

Object.defineProperty()‎

الدالة Object.defineProperty()‎ تُعرِّف خاصيةً جديدةً على كائنٍ مباشرةً، أو تُعدِّل خاصية موجودةً مسبقًا في كائنٍ ثم تُعيد هذا الكائن. البنية العامة Object.defineProperty(obj, prop, descriptor) obj الكائن الذي نريد تعريف الخاصية فيه. prop اسم الخاصية التي نريد تعريفها أو تعديلها. descriptor واصف الخاصية (property descriptor) التي ستُضاف أو تُعدَّل. القيمة المعادة الكائن الذي مُرِّرَ إلى الدالة. الوصف هذه الدالة تسمح بإضافة أو تعديل خاصية من خاصيات كائنٍ ما بدقة، إذ إنَّ إضافة الخاصيات عبر معامل الإسناد سيُنشِئ خاصياتٍ تظهر عند إحصاء ...

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

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

JSX في TypeScript

مقدمة JSX بنيةٌ (syntax) مشابهةٌ للغة XML يُمكن تضمينها وتحويلها إلى شيفرة JavaScript صالحة، لكن آلية عملية التحويل تختلف من تطبيق (implementation) إلى آخر. اشتهرت JSX باستخدامها مع مكتبة React، لكنها تملك تطبيقات أخرى غير React. تدعم لغة TypeScript تضمين JSX، وتدقيق الأنواع فيها، وكذا ترجمة JSX إلى JavaScript مباشرةً. ملاحظة حول المصطلحات: نستخدم في هذه الصّفحة كلمة "صِفَة" للإشارة إلى الكلمة الإنجليزيّة "attribute" وكلمة "خاصيّة" للإشارة إلى كلمة "property"، كلاهما يُترجَم إلى كلمة "خاصيّة" ولهما نفس المعنى في معظم ...

التخزين المؤقت (Cache) في Laravel

الضبط يوفر Laravel واجهة برمجيّة معبّرة وموحّدة لكل التخزين المؤقت. يوجد ملف ضبط التخزين في config/cache.php. في هذا الملف، يمكن تحديد مشغّل التخزين الذي سيُستعمل تلقائيًّا في كامل التطبيق. يدعم Laravel العديد من الواجهات الخلفيّة الشائعة مثل Memcached و Redis من البداية. يحتوي ملف ضبط التخزين أيضًا على خيارات متعدّدة مفصّلة في الملف ذاته لذا تأكد من قراءته جيدا. تلقائيًّا، يستعمل Laravel برنامج التشغيل file للتخزبن المؤقت، يسجل هذا المشغل الكائنات المخزّنة بطريقة متسلسلة في نظام الملفات. بالنسبة للتطبيقات الكبيرة، ...

الواجهات (Views) في Laravel

إنشاء الواجهات ملاحظة: هل تبحث عن مزيد من المعلومات حول كيفية كتابة قوالب Blade؟ ألق نظرة على توثيق Blade الكامل للبدء. تحتوي الواجهات على HTML الذي يُقدّمه تطبيقك وتفصل منطق وحدة التحكّم/منطق التطبيق من منطق عرضك التقديمي (presentation logic). تُخزّن الواجهات في المُجلّد resources/views. قد تشبه الواجهة البسيطة المثال التالي: <! - الواجهات مُخزّنة في resources/views/greeting.blade.php -> <html> <body> <h1>Hello, {{ $name }}</h1> </body> </html> كما ترى، يُوافق المّتغيّر الوسيط ...

كائنات ChainMap‎ في بايثون

يقدّم الصنف Chainmap طريقة سريعة لربط عدد من عمليات الربط mappings ليصبح بالإمكان التعامل معها كوحدة واحدة. وعادة ما تكون هذه الطريقة أسرع من إنشاء قاموس جديد واستدعاء التابع update()‎ مرّات عدة. يمكن استخدام هذا الصنف لمحاكاة النطاقات المتشعّبة وهو مفيد في عملية القولبة templating. البنية العامة class collections.ChainMap(*maps) يجمع الصنف CmainMap عددًا من القواميس أو وسائل الربط الأخرى لإنشاء عرض مفرد قابل للتحديث. في حال تعيين قيمة المعامل maps، فإنّ الصنف يقدّم قاموسًا واحدًا فارغًا، وبهذا ستمتلك السلسلة الجديدة كائن ...

الحقل text

عناصر <input> ذات النوع text تسمح بإنشاء حقول إدخال نصية بسيطة ذات سطرٍ وحيد. <input type="text" name="name"> الخاصية value تحتوي الخاصية value في الحقل text على سلسلة نصية (DOMString) التي تمثل المحتوى الحالي النصي الموجود في حقل الإدخال. يمكن الحصول على قيمة هذه الخاصية باستخدام الخاصية HTMLInputElement.value عبر JavaScript: let theText = myTextInput.value; لا توجد شروط للتحقق من صحة هذا الحقل (راجع قسم «التحقق من الحقل» لمزيدٍ من التفاصيل)، يمكن أن تكون القيمة سلسلةً نصيةً أو قيمةً فارغةً. استخدام حقل الإدخال النصي عناصر ...

معاملات المقارنة في JavaScript

تملك JavaScript نوعين من المقارنة: نوع المقارنة الصارم (strict comparison) مثل المعامل === الذي تكون نتيجة المقارنة معه هي true إذا كانت كلا القيمتان من النوع نفسه ومحتوياتهما متطابقة؛ ونوع المقارنة الذي يحوِّل أنواع البيانات لتتوافق مع بعضها (type–converting comparison) مثل المعامل == الذي يحوِّل القيمتين إلى النوع نفسه قبل إجراء عملية المقارنة؛ أما لعمليات المقارنة النسبية (مثل ‎>=‎) فستحوَّل القيم المُقارَنة إلى قيم أوليّة ثم إلى نوع البيانات نفسه وذلك قبل إجراء عملية المقارنة. تُقارَن السلاسل النصية بناءً على ...

الحقل search

عناصر <input> ذات النوع search هي حقول نصية مُصمَّمة لكي يُدخِل المستخدم عبارات البحث فيها. <input type="search" name="search"> الخاصية value تحتوي الخاصية value في الحقل search على سلسلة نصية (DOMString) التي تُمثِّل القيمة الموجودة في حقل البحث. يمكن الحصول على قيمة هذه الخاصية باستخدام الخاصية HTMLInputElement.value عبر JavaScript: mySearch.value; لا توجد شروط للتحقق من صحة هذا الحقل (راجع قسم «التحقق من الحقل» لمزيدٍ من التفاصيل)، يمكن أن تكون القيمة سلسلةً نصيةً أو قيمةً فارغةً. استخدام حقل البحث عناصر <input> ذات النوع ...

العدادات Counters‎ في بايثون

تقدم كائنات Counter (العدادات) أداة سريعة ومريحة لإجراء عمليات العدّ والحصول على المجموع. العدّاد هو صنف متفرع من الصنف dict وظيفته عدّ الكائنات القابلة للتقطيع hashable. وهو عبارة عن مجموعة غير مرتّبة تكون فيها العناصر مخزّنة على هيئة مفاتيح قاموس ويخزّن تعداد هذه العناصر كقيم لتلك المفاتيح. يمكن للتعداد أن يكون عددًا صحيحًا وأن يكون صفرًا أو عددًا سالبًا. جدير بالذكر أن الصنف Counter مشابه للـ bags أو multisets في لغات البرمجة الأخرى. البنية العامة ‎class collections.Counter([iterable-or-mapping]) يمكن عدّ العناصر ...

كائنات deque‎ في بايثون

تعدّ deques صورة عامة للأكداس والطوابير stacks and queues (يقرأ الاسم هكذا "deck" وهو اختصار للعبارة "double-ended queue"). تدعم deques عمليات الإضافة والحذف من طرفي الطابور مع ضمان سلامة الخيوط thread-safe ودون استهلاك كبير للذاكرة وبأداء مقارب لأداء O(1)‎ في كلا الاتجاهين. صحيح أن القوائم تدعم مثل هذه العمليات، إلا أنّها مصمّمة للعمليات السريعة ذات الطول الثابت وتكلّف الذاكرة بمقدار O(n)‎ للعمليتين pop(0)‎ و insert(0, v)‎ واللتان تغيران حجم وموقع البيانات الضمنية الممثلة. البنية العامة ‎class collections.deque([iterable[, maxlen]]) تعيد الدالة ...

مدخل إلى TypeScript

يُشار إلى TypeScript على أنّها مجموعة عليا (superset) من JavaScript وتُترجم (compile) إليها. وهذا يعني بأن البرامج المكتوبة بلغة JavaScript هي برامج TypeScript صالحة كذلك، ولأنّها تُترجم إلى لغة JavaScript عاديّة، فيُمكن كتابة برامج بلغة TypeScript وترجمتها وتشغيلها في أي مكان يقبل تشغيل برمجيات JavaScript مثل المتصفّح، أو منصّة Node.js، أو أي مُحرّكٍ (engine) يدعم الإصدار ECMAScript 3 من لغة JavaScript أو أي إصدار أحدث منه. تدعم TypeScript مزايا JavaScript الجديدة والتي قيد التطوير، ما يشمل مزايا الإصدار ECMAScript 2015 ...

الحقل tel

عناصر <input> ذات النوع tel تستخدم للسماح للمستخدمين بإدخال وتعديل رقم هاتف. وعلى النقيض من الحقل email والحقل url، فلن يتحقق المتصفح من مطابقة قيمة هذا الحقل لصيغةٍ معينةٍ قبل السماح بإرسال النموذج، وذلك لأنَّ صيغ أرقام الهواتف تختلف كثيرًا حول العالم. <input type="tel" name="tel"> على الرغم من أنَّ وظيفة الحقل tel مماثلة تقريبًا لوظيفة الحقل text، إلا أنَّه يساعد في تسهيل عملية إدخال أرقام الهواتف في الهواتف المحمولة، إذ تُخصَّص لوحة المفاتيح لإدخال أرقام الهواتف؛ أضف إلى أنَّ استخدام نوع ...

العنصر

يُستخدَم العنصر <input> لإنشاء عناصر تفاعلية للنماذج في صفحات الويب التي تقبل معطيات من المستخدم، ثم تُرسَل إلى الخادوم. لتأخذ فكرة عن طريقة عمل (وشكل) مختلف أنواع العنصر <input>، فجرّب تعديل قيمة الخاصية type في المثال الحي الآتي، وسترى الناتج يُحدَّث أثناء كتابتك. وستُمثِّل القيمة الابتدائية (text) حقل إدخال نصيّ عادي، لكنك يمكنك تجربة قيم أخرى مثل number و color و checkbox و radio و date و file و month و password و range و time. مثال عن حقل نصي ...

التوسعات في Bash

بعد تقسيم الأمر في Bash إلى وحدات (Tokens) -انظر وحدات البناء الأساسية في Bash، البنية اللغوية للصدفة- فإن تلك الوحدات توسَّع (expanded) أو تُستبيَن (resolved)، وسنفصّل الآن تلك التوسعات وفقًا لترتيب كل منها، ثم بعد إتمام جميع التوسعات تُنفّذ عملية حذف الاقتباسات. توسُّع القوس المعقوف {} توسع القوس المعقوف هو آلية يمكن من خلالها إنشاء نصوص عشوائية (arbitrary strings)، إذ تأخذ الأنماط (patterns) التي سيُنفَّذ عليها توسع القوس المعقوف باستهلال اختياري (optional preamble) متبوع بسلسلة من النصوص تفصل بين كل ...

الحقل range

عناصر <input> ذات النوع range تسمح للمستخدم بتحديد قيمة عددية ليست أقل من قيمة معيّنة وليست أكبر من قيمة أخرى، ولا تعتبر القيمة الدقيقة لمدخلات المستخدم مهمةً. يُمثَّل هذا العنصر عادةً باستخدام مزلاج عوضًا عن حقل نصي (الذي يُمثِّل الحقل number)، ولأنَّ هذا الحقل لا يوفِّر تحكمًا دقيقًا فستكون القيمة الدقيقة التي أدخلها المستخدم غير مهمة. إذا لم يكن المتصفح يدعم الحقل range فسيستخدم المتصفح الحقل text الافتراضي. <input type="range" name="range"> الخاصية value تحتوي الخاصية value في الحقل range على سلسلة نصية (DOMString) التي ...

التسجيل (Logging) في Laravel

مقدمة يوفر Laravel خدمات تسجيل صلبة (robust) تسمح لك بتسجيل الرسائل في ملفّات، و سجّل أخطاء النظام، وحتى بتطبيق Slack لإعلام فريقك بأكمله وذلك لمساعدتك على معرفة المزيد حول ما يحدث داخل تطبيقك. يستخدم Laravel وراء الكواليس مكتبة Monolog التي توفر الدعم لمجموعة متنوعة من معالجات السجل القوية. يجعل Laravel إعداد هذه المُعالجات سهلة للغاية، ممّا يسمح لك بالتنسيق بينهم لتخصيص معالجة سجل تطبيقك. الضبط توجد كل إعدادات نظام تسجيل تطبيقك في ملف الإعدادات config/logging.php. يتيح لك هذا الملف إعداد ...

التحقق من الأنواع (Type Check) والتحويل بينها (Casting) في لغة Kotlin

المعاملين is و ‎!is تدعم لغة Kotlin ميّزة التحقُّق من توافق الكائن مع أحد الأنواع أثناء التنفيذ، وذلك بالاعتماد على المُعامِل is أو صيغته المنفيّة ‎!is كما في الشيفرة: if (obj is String) { print(obj.length) } if (obj !is String) { // !(obj is String) مكافئ للصيغة print("Not a String") } else { print(obj.length) } التحويلات الذكية (Smart Casts) لا حاجة في كثيرٍ من الأحيان لجعل التحويل صريحًا (explicit) في لغة Kotlin لأنّ المترجم (compiler) يتتبَّع ...

الصنف urllib.request.Request‎‎ في بايثون

يعدّ هذا الصنف تجريدًا abstraction لطلب URL. البنية العامة urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None) المعاملات ‎url يجب أن يكون سلسلة نصية تحتوي على عنوان URL صالح للاستخدام. data يجب أن يكون كائنًا يحدّد المعلومات الإضافية التي ستُرسل إلى المخدّم، أو يحمل القيمة None في حال انتفاء الحاجة إلى إرسال مثل هذه المعلومات. يستخدم هذا المعامل من قبل طلبات HTTP فقط في الوقت الحاضر. أنواع الكائنات المدعومة هي كائنات bytes، والكائنات الشبيهة بالملفات file-like objects، والكائنات القابلة للتكرار iterables. في ...

تزييف الأحداث لأغراض الاختبار Mocking في Laravel

مقدمة عند اختبار تطبيقات Laravel، قد تحتاج إلى "تقليد الأصل" لبعض جوانب تطبيقك، حتى لا يتم تنفيذها بشكل فعلي في اختباراتك. على سبيل المثال، عند اختبار متحكم ما يقوم بإرسال حدث، قد تحتاج إلى تقليد الأصل لمنصت الأحداث حتى لا تشغّل فعليًا أثناء الاختبار. يساعدك ذلك على اختبار رد المتحكم فقط دون الحاجة للقلق حيال تنفيذ منصتي الأحداث، نظرًا لكونها مستقلة في حالات اختباراتها. يزوّد Laravel بمجموعة من المساعدات لتقليد أصل الأحداث والأعمال ‎(Jobs)‎ والواجهات الساكنة ‎(Facades‎)‎. تزود هذه المساعدات ...

بنية المجلدات في Laravel

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

الصنف Object في روبي

يعدُّ الصنف Object الجذر الافتراضي لكل كائنات روبي. يَرِث الصنف Object من الصنف BasicObject ما يسمح بإنشاء تسلسلات هرمية بديلة للكائن. تُتاح توابع الكائن لكل الأصناف ما لم يتم تجاهلها (overridden) صراحةً. تندمج الوحدة Kernel ضمن الصنف Object ما يعطي الوصول العام (global) للدّوال المبنية ضمنيًّا في الوحدة. رغم أنَّ توابع النسخة المنشأة من الصنف Object معرَّفةٌ عن طريق الوحدة Kernel، رأينا أن نوثّقهم هنا لمزيد من الوضوح. عند الإشارة (referencing) إلى الثوابت في الأصناف الوارثة من الصنف Object، لا ...

دمج التصريحات في TypeScript

مقدمة تصِف بعض المبادئ الفريدة الموجودة في لغة TypeScript شكل كائنات JavaScript على مستوى الأنواع. مبدأ دمج التصريحات (declaration merging) من المزايا التي تنفرد بها TypeScript. سيُساعد فهم هذا المبدأ على العمل مع شيفرة JavaScript الموجودة مسبقًا. إضافة إلى أنّها توفّر قدرة على إعمال مبادئ تجريد (abstraction concepts) أكثر تقدّمًا. نعني بدمج التصريحات في هذه الصفحة بأنّ المترجم يدمج تصريحين مختلفين لهما نفس الاسم في تعريف واحد. يمتلك هذا التعريف المندمج مزايا التصريحين الأصليّين. يُمكن دمج أي عدد من التصريحات، ...

الحقل month

عناصر <input> ذات النوع month تُنشِئ حقل إدخال يسمح بانتقاء السنة والشهر بسهولة. شكل هذا الحقل يختلف من متصفح إلى متصفح، فالدعم الحالي ليس مثاليًا (راجع قسم دعم المتصفحات لمزيدٍ من المعلومات)، لكن هذا الحقل سيُعرَض كحقل نصي في المتصفحات التي لا تدعمه: <input type="month" name="month"> سيبدو هذا الحقل كما في الصورة الآتية في متصفحَي Chrome و Opera: لقطة لكيفية عرض الحقل month في متصفحَي Chrome و Opera. أما في متصفح Edge فسيبدو الحقل كما يلي: لقطة لكيفية عرض الحقل month ...

الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin

 الكلمات المفتاحيّة الثابتة (Hard Keywords) تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً في لغة Kotlin وليس ممكنًا استخدامها كمُعرِّفات (identifiers): as تُستخدَم في التحويلات ما بين الأنواع (typecasts) تُحدِّد تسميةً بديلةً (alias) عند عملية الاستيراد (import) as?‎ للتحويلات الحافظة للنوع (safe type casts) break لإنهاء تنفيذ الحلقات (loops) class للتصريح عن الأصناف continue  للاستمرار بالخطوة التالية لأقرب حلقة محيطة (enclosing) do للبدء بحلقة do/while (والتي يُختبَر الشرط فيها لاحقًا) else لتعريف فرعٍ (branch) من تعبير الشرط if والذي سيُنفَّذ عندما يكون الشرط بالقيمة false false ...

الخاصّيّات المُعمَّمة (Delegated Properties) في لغة Kotlin

 استخدام الخاصّيّات المُعمَّمة تستطيع في لغة Kotlin تعريف استخدام (implement) الخاصّيّات يدويًا مرارًا وتكرارًا بكل مرةٍ تحتاجها، ولكن من الأسهل تعريف استخدامها مرةً واحدةً وتخزين هذا التعريف في المكتبة (library) للاستفادة منه كلما دعت الحاجة، وهذا يشمل: الخاصّيّات الكسولة (Lazy property): تُحسب قيمتها مرةً واحدةً فقط وذلك عند الوصول إليها للمرّة الأولى. الخاصّيّات المُراقَبة (observable property): إذ يُستدعَى مسؤول الانتظار (listener) عند حدوث أي تغييرٍ في الخاصّيّة. تخزين الخاصّيّات في map بدلًا من حقلٍ منفصلٍ لكلِّ منها. وتشمل لغة Kotlin ...

الحقل time

عناصر <input> ذات النوع time تُنشِئ حقل إدخال يسمح بإدخال الوقت بسهولة. شكل هذا الحقل يختلف من متصفح إلى متصفح، فالدعم الحالي ليس مثاليًا، فالوضع الحالي لهذا الحقل في متصفحات Chrome و Opera و Edge ومتصفحات الهواتف المحمولة لا بأس به، وسيُعرَض كحقل نصي في المتصفحات التي لا تدعمه: <input type="time" name="time"> سيبدو هذا الحقل كما في الصورة الآتية في متصفحَي Chrome و Opera، إذ يظهر سهم علوي وسفلي إضافةً إلى زر لحذف قيمة الحقل، وسيُدخَل الوقت بصيغة 12 ساعة، أي ...

الصنف Regexp في روبي

تمثل كائنات الصنف Regexp التعابير النمطية التي تُستخدم لمطابقة نمط (pattern) معيّن في سلسلة نصية. تُنشَأ التعابير النمطية باستخدام الصياغتين /.../ و ‎%r{...}‎، أو باستعمال الباني new. التعابير النمطية هي أنماط تصف محتويات السلسلة النصية. يمكن استخدامها للتحقق من أنّ سلسلة نصية تحتوي على نمط معين، أو لاستخراج الأجزاء المُطابقة منها. عادةً ما يتم تحديد التعبير النمطي بخط مائل (/) كما يوضح المثال التالي: /hay/ =~ 'haystack' #=> 0 /y/.match('haystack') #=> #<MatchData "y"> ‎ إذا احتوت سلسلة نصية على النمط، فسيقال ...

خيارات سطر الأوامر في Node.js

يتوافر العديد من خيارات سطر الأوامر التي يمكن استعمالها مع Node.js. تُستعمَل هذه الخيارات في تنقيح أخطاء الشيفرة، والتحكم في كيفيَّة تنفيذ الشيفرة، وغيرها من الأمور المفيدة. يمكن عرض هذا التوثيق في الطرفيَّة عبر استعمال الأمر man node. البنية العامة node [options] [V8 options] [script.js | -e "script" | -] [--] [arguments] node debug [script.js | -e "script" | <host>:<port>] … node --v8-options إنَّ تنفيذ node دون أيَّة وسائط يؤدي إلى بدئها مع الوحدة REPL. لمزيدٍ من المعلومات حول node debug، راجع رجاءً ...

الحقل number

عناصر <input> ذات النوع number تسمح للمستخدم بإدخال قيمة عددية. سيتم التحقق من صحة المدخلات تلقائيًا للتأكد أنَّها أعداد وسيرفض المتصفح أيّة قيم غير رقمية، ويمكن أن يوفر المتصفح أسهمًا بجوار هذا الحقل للسماح للمستخدم بزيادة أو إنقاص القيمة باستخدام الفأرة أو بالضغط عليها بأصبعه. إذا لم يكن المتصفح يدعم الحقل number فسيستخدم المتصفح الحقل text الافتراضي. <input type="number" name="number"> الخاصية value تُمثَّل قيمة الخاصية value بكائن Number. يمكنك ضبط القيمة الافتراضية في هذا الحقل بإسناد رقم للخاصية value كما ...

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