نتائج البحث

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

استخدام التعليمة Switch

توصيف المشكلة وجود تركيبٍ معقَّدٍ لتعليمة switch أو عدّة تعليمات if متسلسلة. أسبابها ما يميِّز البرمجة كائنيّة التوجّه (OO) هو اعتمادها النادر على المعاملين switch و case، إذ تُوزَّع شيفرة switch بمواقع مختلفة من البرنامج بدلًا من تجمعيها في تعليمة switch واحدةٍ، وعند إضافة شرطٍ جديدٍ عليك إيجاد كافّة شيفرات switch لتعديلها، وكقاعدة عامّة: وجود تعليمة switch يعني أن عليك البدء بالتفكير بمبدأ التعدديّة الشكليّة (polymorphism). وما الحل؟ عزل تعليمة switch ووضعها بالصنف الصحيح عبر إنشاء صنفٍ (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 ...

مُعدِّلات النمط Pattern Modifiers‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

فيما يلي مُعدِّلات PCRE الحالية الممكنة. وتشير الأسماء الموجودة بين قوسين إلى أسماء PCRE الداخلية لها. وتُتَجاهل المسافات والسطور الجديدة في المعدّلات، بينما تتسبب الأحرف الأخرى في حدوث خطأ. i (PCRE_CASELESS)‎ إذا ضُبِط هذا المُعدِّل، تتطابق الحروف في النمط مع الحروف الكبيرة والصغيرة. m (PCRE_MULTILINE)‎ تعامل PCRE سلسلةَ الهدف افتراضيًا كما لو كانت مكونة من "سطر" واحد من الحروف (حتى إذا كان يحتوي بالفعل على عدة سطور جديدة). ويتطابق الحرف الخاص "بداية السطر" ورمزه ^ فقط في بداية السلسلة النصية، ...

الوسيط (Middle Man)

توصيف المشكلة عندما يكون للصنف (class) مهمةٌ واحدةٌ فقط وهي تفويض المهام (delegation) لصنفٍ آخر، فما أهمية وجوده بالأصل؟ أسبابها قد تنتج المشكلة عن التخلُّص المفرط من الاستدعاءات المتسلسلة كعلاجٍ لمشكلة سلاسل الرسائل (message chains). أو قد تنتُج عن النقل التدريجيّ للصنف (class) إلى أصناف أخرى ليبقى الصنف الأصليّ فارغًا إلا من أوامر التفويض (delegation). وما الحل؟ حذف الوسيط (remove middle man) إن كانت معظم أصناف التابع (method's classes) تفوِّض المهام (delegate) إلى صنفٍ آخر. إليك المزيد ستحصل بحلِّ المشكلة ...

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

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

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

يتم إنشاء كائنات الصنف Method بواسطة التابع Object.method، وترتبط بكائن معين (وليس بالصنف وحسب). ويمكن استخدامها لاستدعاء التابع داخل الكائن، أو ككتلة (block) مرتبطة بمكرر (iterator). كما يمكن فك ارتباطها (unbound) من كائن محدد (سيؤدي ذلك إلى إنشاء الكائن UnboundMethod) ثم ربطها بآخر. class Thing def square(n) n*n end end thing = Thing.new meth = thing.method(:square) meth.call(9) #=> 81 [ 1, 2, 3 ...

اختبارات قواعد البيانات في Laravel

مقدمة يزوّدك Laravel بمجموعة من الأدوات المفيدة لتسهيل اختبار تطبيقاتك المقادة بواسطة قواعد البيانات. أولاً، يمكنك استخدام التابع المساعد assertDatabaseHas للتأكد من أن البيانات موجودة ضمن قاعدة البيانات ضمن مجموعة الشروط المعطاة. على سبيل المثال، إن أردت التأكد من أن سجلًا ما موجود ضمن جدول users ببريد مطابق لـ sally@example.com، يمكنك فعل التالي: public function testDatabase() { // القيام بمناداة التطبيق... $this->assertDatabaseHas('users', [ 'email' => 'sally@example.com' ...

الربط بين الجداول

تخزن البيانات عادةً في قواعد البيانات بأكثر من جدول لتسهيل تنظيمها وإدارتها، وتُربط هذه الجداول فيما بينها من خلال الأعمدة المترابطة فيما بينها، وذلك بالاعتماد على مفهومي المفتاح الأولي Primary Key والمفتاح الثانوي Foreign Key، وله عدة أنواع ستُذكر تباعًا. أنواع ربط الجداول توجد عدة أنواع للربط بين جدولين (أو أكثر)، إذ يسمى الجدول الأول يساريًا والجدول الثاني يمينًا: الربط الداخلي INNER JOIN: تحديد بعض السجلات من الجدول اليساري والجدول اليميني بحيث تحقق شرط الربط. الربط اليساري LEFT JOIN: تحديد ...

تبديل التابع إلى كائن التابع (Replace Method with Method Object)

المشكلة وجود تابعٍ طويلٍ بالكثير من المتغيِّرات المحليّة (local variables) المتداخلة والتي تحول دون تطبيق تقنية الحل باستخراج التابع (extract method). الحل نقل التابع إلى صنفٍ (class) مستقلٍ بحيث تصبح متغيِّراته المحليّة حقولًا (fields) لهذا الصنف، وتقسيم التابع بعد ذلك إلى عدّة توابع أصغر في الصنف ذاته. مثال قبل إعادة التصميم نلاحظ وجود العديد من المتغيِّرات المحليّة في التابع price()‎ بالإضافة إلى عملياتٍ أخرى قد تكون طويلةً ومعقَّدة: في لغة Java: class Order { //... public double price() ...

المعامل EXISTS

يستخدم المعامل EXISTS للتأكد من وجود سجلات ناتجة عن الاستعلام الفرعي المستخدم في الاستعلام الرئيسي. مثال إن كان في قاعدة البيانات الجدولان الآتيان: الجدول الأول: جدول الطلاب students RegDate CourseID LastName FirstName StudentID ‎07-JUL-2017‎ 0206 Najjar Rama 1147 ‎08-NOV-2017‎ 0604 Kordi Jenan 1148 ‎07-JUL-2017 0206 Bitar Rahaf 1149 ‎20-AUG-2017 0607 Taweel Farah 1150 ‎08-NOV-2017 0610 Arab Rami 1151 ‎24-OCT-2017 0803 Akkad Aya 1152 ‎08-NOV-2017 0504 Haddad Abed 1153 ‎20-AUG-2017 0801 Fares Tasneem 1154 ‎24-OCT-2017 0607 Hamsho Monther 1155 ‎30-SEP-2017 0607 ...

الربط اليساري LEFT JOIN

يُستخدم هذا النوع من الربط ما بين جدولين (أو أكثر) وذلك لتحديد كافة السجلات من الجدول اليساري وبعض السجلات من الجدول اليميني التي تحقق شرط الربط، وتكون له البنية العامّة الآتية: SELECT col_names FROM tbl_name1 LEFT [OUTER] JOIN tbl_name2 ON col_name1 = col_name2 مثال إن كانت قاعدة بيانات أحد المراكز التعليمية تحتوي على الجداول الآتية: الجدول الأول: جدول الطلاب students (المفتاح الأولي فيه هو عمود StudentID والمفتاح الثانوي هو عمود CourseID للربط مع جدول الدورات التدريبية) RegDate CourseID LastName FirstName StudentID ...

الربط الداخلي INNER JOIN

يُستخدم هذا النوع من الربط ما بين جدولين (أو أكثر) وذلك لتحديد بعض السجلات من الجدول اليساري والجدول اليميني بحيث تحقق شرط الربط، وتكون له البنية العامّة الآتية: SELECT col_names FROM tbl_name1 [INNER] JOIN tbl_name2 ON col_name1 = col_name2 وكما يُلاحظ أن وجود كلمة INNER اختياريّ لأن الربط الداخلي هو الحالة الافتراضية في الربط. مثال إن كانت قاعدة بيانات أحد المراكز التعليمية تحتوي على الجداول الآتية: الجدول الأول: جدول الطلاب students (المفتاح الأولي فيه هو عمود StudentID والمفتاح الثانوي هو عمود CourseID ...

إنشاء التوابع (Composing Methods)

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

نقل التابع (Move Method)

المشكلة استخدام التابع (method) في صنفٍ (class) ما أكثر من استخدامه في صنفه الأساسيّ. الحل إنشاء تابعٍ جديدٍ في الصنف الأكثر استخدامًا لذلك التابع ونقل شيفرته إلى التابع الجديد، ثم تحويل الشيفرة في التابع الأصليّ إلى مرجعيّةٍ للتابع الجديد في الصنف الآخر أو حذفه كليَّا. مثال قبل إعادة التصميم يستخدِم الصنفُ Class2 التابعَ aMethod()‎ أكثر مما يستخدمه صنفه الأساسيّ Class1: يستخدِم الصنفُ Class2 التابعَ aMethod()‎ أكثر مما يستخدمه صنفه الأساسيّ Class1. بعد إعادة التصميم نُقِل التابع aMethod()‎ إلى الصنف ذي ...

إخفاء التابع (Hide Method)

المشكلة لا يُستخدم التابع من قِبل الأصناف الأخرى أو يستخدم فقط داخل التسلسل الهرمي للصنف الخاص به. الحل جعل التابع خاصًا أو محميًا. مثال قبل إعادة التصميم لا يستخدم التابع ()aMethod من قبل أصناف أخرى غير الصنف Employee المعرف فيه: لا يُستخدم التابع من قِبل الأصناف الأخرى أو يستخدم فقط داخل التسلسل الهرمي للصنف الخاص به. بعد إعادة التصميم جعل التابع ()aMethod خاصًّا ومحميًّا بإخفائه عن الأصناف الأخرى: جعل التابع خاصًا أو محميًا. لم إعادة التصميم؟ في كثير من الأحيان، ...

إنشاء التوابع (Composing Methods)

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

استخراج التوابع (Extract Methods)

المشكلة وجود أجزاء من الشيفرة يُمكن عزلها وتجميعها سويةً. الحل نقل الشيفرة إلى تابعٍ (method) أو دالةٍ (function) جديدة والاستعاضة عن الجزء (بمكانه السابق) باستدعاءٍ لهذا التابع الجديد. مثال قبل إعادة التصميم نلاحظ وجود جزء من الشيفرة لطباعة بعض البيانات (التفاصيل)، والتي يمكن عزلها بتابعٍ جديد، الشيفرة قبل إعادة التصميم بالشكل: في لغة Java: void printOwing() { printBanner(); // طباعة التفاصيل System.out.println("name: " + name); System.out.println("amount: " + getOutstanding()); } في لغة #C: void PrintOwing() { PrintBanner(); ...

دمج التوابع (Inline Methods)

المشكلة أن يكون محتوى التابع (method body) بسيطًا وواضحًا أكثر من التابع بحدِّ ذاته، ويمكن عندئذٍ الاستغناء عنه. الحل نقل الشيفرة الموجودة في التابع (محتوى التابع) إلى مواقع استدعائه، وحذف التابع برمته إذ لا داعي له. مثال قبل إعادة التصميم نلاحظ أن محتوى التابع moreThanFiveLateDeliveries()‎ واضحٌ وبسيطٌ لدرجةٍ تجعل الاستغناء عنه ممكنًا: في لغة Java: class PizzaDelivery { //... int getRating() { return moreThanFiveLateDeliveries() ? 2 : 1; } boolean moreThanFiveLateDeliveries() { ...

التوابع الطويلة (Long Methods)

توصيف المشكلة تنتُج هذه المشكلة عن احتواء شيفرة التابع على الكثير من الأسطر؛ فهو أمرٌ يدعو للتساؤل حقًا إن كان التابع بأكثر من 10 أسطر! لِمَ؟ أسبابها إنَّ ما يحدث دائمًا أنْ يُضاف للتابع لا أن يُحذَف منه! وذلك لسهولة كتابة الإضافات للشيفرة مقارنةً مع قراءتها، ولن تظهر هذه المشكلة واضحةً إلا بعد تفاقمها ووصولها لحدِ لا يُحتمَل، وكذلك يجد المبرمج أنَّ كتابة تابعٍ جديدٍ أكثرُ مشقّةً من الإضافة لتابعٍ موجودٍ مسبقًا، إذ يفكر: "هما سطران وحسب، ولا داعي لتخصيص ...

العقود (Contracts) في Laravel

مقدمة عقود Laravel هي مجموعة من الواجهات (interfaces) التي تعرِّف الخدمات المركزية التي يوفرها إطار العمل. على سبيل المثال، يعرِّف العقد Illuminate\Contracts\Queue\Queue  الدوال اللازمة لصف الأعمال في الطوابير، بينما يعرِّف عقد Illuminate\Contracts\Mail \Mailer الدوال اللازمة لإرسال رسائل البريد الإلكتروني. لكل عقد تعريف استخدام (implementation) يوفره إطار العمل. على سبيل المثال، يوفِّر Laravel تعريف استخدام للطابور لعدة أنواع من المشغلات (drivers) كما يوفِّر تعريف استخدام للمُرسِل مشغل بواسطة SwiftMailer. توجد كل عقود Laravel في مستودعات في GitHub. هذا يوفر نقطة مرجعية سريعة لكل ...

هياكل المكتبات في TypeScript

مقدمة طريقة هيكلة ملفّ التصريحات الخاص بك تعتمد عمومًا على كيفيّة اعتماد المستخدمين على المكتبة. هناك عدّة طرق يُمكن بها توفير المكتبة ليستخدمها الآخرون في JavaScript. وستحتاج إلى كتابة ملفّ تصريحاتٍ ملائم حسب هيكل المكتبة التي ترغب بكتابة ملفّ تصريحات لها. يغطي هذا الدليل كيفيّة التعرّف على أنماط المكتبات الشائعة، وكيفيّة كتابة ملف تصريحاتٍ مناسب لنمط المكتبة. يوجد لكل نمط من أنماط هيكلة المكتبات الشائعة ملفٌّ ملائم له في قسم القوالب. يمكنك البدء بهذه القوالب لكتابة ملف التصريحات بشكل أسرع. ...

الدالة sqlite3.connect()‎ في بايثون

تفتح هذه الدالة اتصالًا مع قاعدة بيانات SQLite عبر الملف المعطى، وتعيد افتراضيًا كائن اتصال ما لم تحدد قيمة أخرى في المعاملات. البنية العامة sqlite3.connect(database[, timeout, detect_types, isolation_level, check_same_thread, factory, cached_statements, uri]) المعاملات database كائن شبيه بالمسار path-like يمثّل مسار ملف قاعدة البيانات (المسار المطلق أو النسبي للمجلد الحالي) الذي سيتم الاتصال به. يمكن استخدام القيمة ":memory:" لفتح اتصال مع قاعدة بيانات تخزّن في ذاكرة الوصول العشوائي RAM بدلًا من القرص الصلب. إذا أجريت عدة اتصالات بقاعدة بيانات واحدة، وأجرى ...

تعبير تعريف الدوال

الكلمة المحجوزة function تُستخدَم لتعريف دالة داخل تعبير (expression). يمكنك أيضًا تعريف الدوال عبر التصريح عنها function declaration أو عبر الدالة البانية Function. البنية العامة var myFunction = function [name]([param1[, param2[, ..., paramN]]]) { statements }; name اسم الدالة، ويمكن حذفه وحينئذٍ ستسمى الدالة بالدالة المجهولة؛ واسم الدالة لن يكون متاحًا إلا داخل الدالة نفسها (يمكن أن يستعمل لتنفيذها تعاوديًا [recursively]). param اسم الوسيط المُرَّر إلى الدالة، العدد الأقصى للوسائط التي يمكن تمريرها إلى الدالة يختلف حسب المحرِّك الذي ...

تحويل التوابع إلى معاملات (Parameterize Method)

المشكلة تؤدي توابع متعددة أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها. الحل تجميع هذه التوابع باستخدام معامل يُمرر القيمة الخاصة الضرورية. مثال قبل إعادة التصميم يؤدي التابعان ()fivePercentRaise و ()tenPercentRaise الغرض ذاته باختلاف النسبة المئوية المراد زيادتها للموظف Employee: يؤدي التابعان أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها. بعد إعادة التصميم تجميع التابعان السابقان في تابع واحد يدعى ()raise مع تمرير النسبة المئوية المتغيرة إليه: يجمع التابعين باستخدام معامل يُمرر ...

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

يستدعي المعامل === كتلة التابع مع تمرير الكائن الواقع على يمينه كوسيط إلى المعامل الواقع على يساره كما هو الحال في Proc.call. هذا يَسمح لكائنٍ من النوع proc أن يكون هدفًا للكتلة when في التعليمة case. البنية العامة proc === obj→ result_of_proc‎ القيمة المعادة تعاد نتيجة الوسيط proc. انظر أيضا التابع ==: يتحقق من تساوي كائنين من النوع Method. مصادر قسم التابع ===‎ في الصنف Method‎ في توثيق روبي الرسمي.

إعادة تسمية التوابع (Rename Method)

المشكلة لا يعبِّر اسم التابع عن ما يقوم به. الحل إعادة تسمية التابع. مثال قبل إعادة التصميم لا يفسر اسم التابع ()getsnm في الصنف Customer ما يقوم به. لا يفسر اسم التابع ما يقوم به. بعد إعادة التصميم إعادة تسمية التابع ()getsnm إلى ()getSecondName الذي يصف ما يقوم به. يفسر اسم التابع ما يقوم به. لم إعادة التصميم؟ ربما كانت تسمية تابعٍ ما سيئة من البداية - على سبيل المثال، أنشأ شخصٌ ما التابع في عجلة ولم يهتم كفاية بتسميته ...

المعامل ‎[]‎‎ الخاص بالصنف Method في روبي

يستدعي معامل الفهرسة [] الكتلة البرمجية للتابع، ويضبط قيم معاملات الكتلة عند القيم المعطاة ضمنه باستخدام صياغة مشابهة لاستدعاء التوابع ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة. لاحظ أنَّ ‎prc.()‎ يستدعي prc.call()‎ مع تمرير الوسائط المعطاة. وهي صياغة مختصرة لإخفاء التابع "call". بالنسبة للكائنات procs التي تم إنشاؤها باستخدام lambda أو ‎->()‎‎‎، سيُطلق خطأ إذا كان عدد المعاملات الممررة إلى proc غير صحيح. بالنسبة للكائنات proc التي تم إنشاؤها باستخدام Proc.new أو Kernel.proc، سيتم تجاهل المعاملات الإضافية بصمت، ...

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

يتحقق المعامل == من تساوي كائنين من النوع Method. يكون كائنان من النوع Method متساويين إن كانا مرتبطين بنفس الكائن، وكانا لهما نفس التعريف، وكان لهما نفس الصنف أو الوحدة (module) المالكة. البنية العامة meth == other_meth → true or false‎ القيمة المعادة تُعاد القيمة true إن كان الكائنان متساويين، وإلا فستُعاد القيمة false. انظر أيضا التابع ===: يستدعي كتلة التابع مع تمرير الكائن الواقع على يمينه كوسيط إلى المعامل الواقع على يساره كما هو الحال في Proc.call. مصادر قسم ...

طريقة الاستعمال وتشغيل الأمثلة في Node.js

البنية العامة node [options] [V8 options] [script.js | -e "script" | - ] [arguments] راجع رجاءً توثيق خيارات سطر الأوامر للمزيد من المعلومات عن الخيارات والطرائق التي يمكن استعمالها لتشغيل السكربتات وتنفيذها مع Node.js. تشغيل الأمثلة سنشرح مثالًا عن إنشاء خادم ويب باستعمال Node.js يُظهِر العبارة 'مرحبًا بالعالم!' في المتصفح. تبدأ الأوامر المستعملة في هذا المثال بالمحرف $ أو < وذلك لمحاكاة كيفيَّة ظهورها في طرفيَّة المستخدم، لذا لا تضف هذين المحرفين إلى الأوامر عند نسخها واستعمالها. توجد الكثير من الدروس ...

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

(PHP 4 >= 4.3.0,PHP 5, PHP 7) تتحقَّق الدالة fnmatch()‎ من تطابق اسم ملف محدَّد مع نمط معيّن. الوصف bool fnmatch ( string $pattern , string $string [, int $flags = 0 ] ) تتحقَّق هذه الدالة من تطابق السلسلة النصيَّة string المُمرَّرة مع النمط pattern الذي يمكن أن يُستعمل معه محارف البدل الخاصة (wildcard) المُستخدمة في الصدفة. المعاملات pattern النمط المراد مُطابقته مع السلسلة النصيَّة string. يمكن استعمال محارف الصدفة الخاصة (wildcard ويشار إليها أيضًا meta characters) لإنشاء النمط. string ...

التابع Connection.cursor()‎ في بايثون

يعيد التابع نسخة من صنف Cursor أو أحد أصنافه الفرعية. البنية العامة cursor(factory=Cursor) ‎المعاملات factory يأخذ هذا التابع معاملًا اختياريًا واحدًا، وعند تعيينه يجب أن يكون كائنًا قابلًا للاستدعاء callable يعيد نسخة من صنف Cursor أو أحد أصنافه الفرعية. القيمة المعادة يعيد التابع نسخة من صنف Cursor أو أحد أصنافه الفرعية. أمثلة يبين المثال التالي آلية عمل التابع: import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() مصادر صفحة DB-API 2.0 interface for SQLite databases في توثيق بايثون الرسمي.

التابع Connection.cursor()‎ في بايثون

يعيد التابع نسخة من صنف Cursor أو أحد أصنافه الفرعية. البنية العامة cursor(factory=Cursor) ‎المعاملات factory يأخذ هذا التابع معاملًا اختياريًا واحدًا، وعند تعيينه يجب أن يكون كائنًا قابلًا للاستدعاء callable يعيد نسخة من صنف Cursor أو أحد أصنافه الفرعية. القيمة المعادة يعيد التابع نسخة من صنف Cursor أو أحد أصنافه الفرعية. أمثلة يبين المثال التالي آلية عمل التابع: import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() مصادر صفحة DB-API 2.0 interface for SQLite databases في توثيق بايثون الرسمي.

RegExp.prototype.[@@replace]()‎

الدالة RegExp.prototype.[@@replace]()‎ تُعيد سلسلةً نصيةً جديدةً فيها بعض أو جميع الأجزاء المُطابَقة عبر النمط this قد استبدلتها السلسلة النصية replacement. لاحظ أنَّ النمط pattern يمكن أن يكون سلسلةً نصيةً أو كائن RegExp، ويمكن أن يكون الوسيط replacement سلسلةً نصيةً أو دالةً التي ستُستدعى لكل مُطابَقة. البنية العامة regexp[Symbol.replace](str, newSubStr|function) str السلسلة النصية التي سنبحث عن مُطابَقة للتعبير النمطي فيها لاستبداله. newSubStr السلسلة النصية String التي ستستبدل السلسلة الفرعية، وهنالك عددٌ من الأنماط الفرعية المدعومة فيها، انظر قسم «تحديد سلسلة نصية كوسيط» في صفحة الدالة String.prototype.replace()‎ للتفاصيل. function الدالة ...

مفاتيح الجداول

تستخدم المفاتيح بهدف الربط ما بين الجداول في قواعد البيانات. المفتاح الأوليّ PRIMARY KEY هو عمود (أو أكثر) من الجدول والذي يميّز السجلات عن بعضها، تكون القيم فيه فريدة (غير مكررة) ولا يمكن ألّا يحتوي قيمة (قيمته NULL)، ويكون للجدول مفتاح أولي وحيد. المفتاح الثانويّ FOREIGN KEY هو عمود (أو أكثر) من الجدول والذي يمكن عدّه مرجعيةً (reference) لعمود آخر في جدول ثانٍ (وغالبًا ما يكون هذا العمود هو المفتاح الأولي للجدول الثاني). مثال تحتوي قاعدة بيانات أحد المراكز التعليمية ...

الوحدة copyreg‎ في بايثون

تقدّم وحدة copyreg طريقة لتعريف دوال تستخدم أثناء سلسلة كائنات معيّنة في بايثون. تستخدم وحدتا pickle و copy هذه الدوال عند سلسلة أو نسخ تلك الكائنات. تقدّم الوحدة كذلك معلومات إعدادات حول الدوال البانية للكائنات التي ليست أصنافًا. يمكن لهذه الدوال البانية أن تكون دوال منشئة للكائنات factory functions أو نسخًا للأصناف. دوال الوحدة copyreg تقدّم الوحدة copyreg الدوال التالية: الدالة ‎copyreg.constructor()‎ تصرّح هذه الدالة عن كون الكائن المعطى دالة بانية صحيحة. إن كان الكائن المعطى غير قابل للاستدعاء (وهكذا ...

Python/pathlib/Path/glob

التابع Path.glob في بايثون تعيد جميع الملفات التي تحقق نمط glob المعطى، مهما كان نوع الملف البنية العامة glob(pattern) المعاملات الوسيط pattern نمط glob المُراد مُطابقته. القيمة المعادة يُعيد قائمة عناصرها كائنات مسار، تُمثّل جميع الملفات التي تحقق نمط glob المعطى. أمثلة يبين المثال التالي طريقة استخدام التابع: >>> sorted(Path('.').glob('*.py')) [PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')] >>> sorted(Path('.').glob('*/*.py')) [PosixPath('docs/conf.py')] استخدام النمط "**" يعني النمط "**" تحديد المجلد الحالي وجميه المجلدات الفرعية في داخله بشكل عودي (recursively)، وهو ما يسمّى recursive globbing >>> sorted(Path('.').glob('**/*.py')) [PosixPath('build/lib/pathlib.py'), PosixPath('docs/conf.py'), PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')] ملاحظة: احذر من ...

بذر قواعد البيانات بالبيانات الاختبارية Seeding في Laravel

مقدمة يتضمّن Laravel تابع بسيط لملء قاعدة البيانات الخاصة بك مع بيانات للتجربة باستخدام أصناف البذر. ستجد جميع أصناف البذر في مجلّد database/seeds، وقد تحتوي أصناف البذر على أي اسم تريده، لكن ربما يجب عليك اتباع بعض المعايير المعقولة مثل UsersTableSeeder ...إلخ. وبشكل افتراضي، سيكون صنف DatabaseSeeder معرّف لك، ومن خلال هذا الصنف يمكنك استخدام أسلوب call لتشغيل بقيّة أصناف البذر، مما يسمح لك بالتحكم بترتيب البذر. كتابة منشئات البذور لتوليد منشئ البذرة (seeder)، نفّذ أمر make:seeder Artisan وستجد جميع ...

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

يجري هذا التابع عملية استبدال التسلسلات المسبوقة بالخط المائل العكسي بالاعتماد على قالب متمثّلٍ بسلسلة نصية. البنية العامة match.expand(template) المعاملات template سلسلة نصية تتضمّن تسلسلات مسبوقة بالخط المائل العكسي تمثّل القالب الذي سيستخدمه التابع لإجراء عمليات الاستبدال. القيمة المعادة يعيد التابع السلسلة النصية الناتجة عن إجراء عمليات عملية استبدال التسلسلات المسبوقة بالخط المائل العكسي بالاعتماد على قالب متمثّلٍ بسلسلة نصية، وبنفس طريقة عمل التابع regex.sub()‎. إذ تُحوّل تسلسلات التهريب مثل ‎\n إلى المحارف المقابلة، وتحوّل الإشارات الخلفية الرقمية مثل (‎\2، ...

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

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

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

تفحص الدالة السلسلة النصية بحثًا عن أول موقع يحصل فيه تطابق مع التعبير النمطي المعطى، وتعيد كائن match المقابل. البنية العامة re.search(pattern, string, flags=0) المعاملات pattern التعبير النمطي المستخدم لإجراء عملية المطابقة. string السلسلة النصية التي ستبحث فيها الدالة عن حالات التطابق. flags الرايات المستخدمة لضبط عملية البحث. يأخذ هذا المعامل القيمة 0 كقيمة افتراضية. راجع قسم المعاملات في توثيق الدالة ()re.compile للمزيد من المعلومات. القيمة المعادة تعيد الدالة كائن match عند العثور على حالة تطابق بين التعبير النمطي والسلسلة ...

ازالة توابع الإعدادات (Remove Setting Method)

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

تعريف التوابع الدخيلة (Introduce Foreign Methods)

المشكلة الحاجة إلى تابعٍ غير موجودٍ في الصنف المساعد (utility class) ومن غير الممكن إضافته إلى ذلك الصنف. الحل إضافة التابع المطلوب إلى صنف العميل (client class) وتمرير كائنٍ (object) من الصنف المساعد إليه كوسيط (argument). مثال قبل إعادة التصميم يحتوي الصنف Report تابعًا باسم sendReport والذي يستخدم الصنف المساعد Date لإنشاء تاريخ اليوم التالي عبر إضافة القيمة 1 إلى اليوم الحالي، كما يلي: في لغة Java: class Report { //... void sendReport() { Date ...

دفع التابع لأسفل (Push Down Method)

المشكلة هل السلوك المُنفَّذ في الصنف الأب مُستخدمٌ في صنف فرعي واحد فقط (أو أكثر)؟ الحل نقل هذا السلوك إلى الأصناف الفرعية. مثال قبل إعادة التصميم التابع ()getFuel الموجود في الصنف Unit الأب مُستخدم في صنف فرعي واحد فقط الذي هو Tank: التابع الموجود في الصنف الأب مُستخدم في صنف فرعي واحد فقط. بعد إعادة التصميم نقل التابع ()getFuel من الصنف الأب إلى الصنف الفرعي المستخدم فيه: نقل هذا التابع إلى الصنف الفرعي الذي يُستخدم فيه. لم إعادة التصميم؟ في ...

سحب التابع لأعلى (Pull Up Method)

المشكلة تحتوي الأصناف الفرعية على توابع تؤدي نفس العمل. الحل جعل التوابع متطابقة ثم نقلها إلى الصنف الأعلى ذي الصلة. مثال قبل إعادة التصميم يحتوي الصنفان الفرعيان Soldier و Tank على التابع ()getHealth الذي يؤدي نفس العمل: تحتوي الأصناف الفرعية على التابع ()getHealth تؤدي نفس العمل. بعد إعادة التصميم نقل التابع ()getHealth إلى الصنف Unit الأب وإزالته من الأصناف الفرعية: نقل التابع ()getHealth إلى الصنف الأعلى. لم إعادة التصميم؟ تنمو الأصناف الفرعية وتتطور بشكل مستقل عن بعضها البعض، مما يتسبب ...

التابع call‎ الخاص بالصنف Method في روبي

يستدعي call كتلة التابع الذي استٌدعي معه، ويضبط وسائط الكتلة عند القيم المُمرَّرة إليه باستخدام صياغة مشابهة لصياغة استدعاء التوابع ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة. لاحظ أن ‎prc.()‎ يستدعي prc.call()‎ مع تمرير المعاملات المعطاة. وهي صياغة مختصرة لإخفاء التابع "call". بالنسبة للكائنات procs التي تم إنشاؤها باستخدام lambda أو ‎->()‎‎‎، سيُطلق خطأ إذا كان عدد المعاملات الممررة إلى proc غير صحيح. بالنسبة للكائنات proc التي تم إنشاؤها باستخدام Proc.new أو Kernel.proc ، سيتم تجاهل المعاملات الإضافية ...

التابع Symbol.match?‎‎ في روبي

يعيد التابع match?‎ ناتج التعبير sym.to_s.match?‎. البنية العامة match?(pattern) → true or false match?(pattern, pos)→ true or false‎ المعاملات pattern النمط المراد التحقق من مطابقته للرمز المعطى. القيمة المعادة تعاد القيمة true إن طابق النمط pattern الرمز المعطى. خلا ذلك، تعاد القيمة false. انظر أيضا التابع match: يعيد ناتج التعبير sym.to_s.match. مصادر قسم التابع match?‎ في الصنف Symbol‎ في توثيق روبي الرسمي.

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

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

Python/pathlib/Path/rglob

التابع PurePath.rglob في بايثون مشابه لاستدعاء التابع glob عند إضافة '**' في بداية النمط المُعطى البنية العامة >>> sorted(Path().rglob("*.py")) [PosixPath('build/lib/pathlib.py'), PosixPath('docs/conf.py'), PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')] المعاملات الوسيط pattern النمط المُراد مطابقته. القيمة المعادة مشابه لاستدعاء التابع glob عند إضافة '**' في بداية النمط المُعطى أمثلة يبين المثال التالي طريقة استخدام التابع: >>> sorted(Path().rglob("*.py")) [PosixPath('build/lib/pathlib.py'), PosixPath('docs/conf.py'), PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')] انظر أيضًا مصادر

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

(PHP 4 >= 4.3.0, PHP 5, PHP 7) تبحث الدالة glob()‎ عن مسارات محدَّدة لملفات أو مجلَّدات والتي تتطابق مع نمط مُعطى. الوصف array glob ( string $pattern [, int $flags = 0 ] ) تبحث هذه الدالة عن جميع المسارات التي تُطابق النمط pattern وفقًا للقواعد التي تستخدمها المكتبة libc للدالة glob()‎، والتي تشبه نظيرتها المستخدمة من قبل أشهر الصدفات (shells). المعاملات pattern التعبير النمطي المُعطى. الرمز ~ (المَدَّة [tilde]) غير مدعوم، كما أنَّه لا يُجرى أي عملية استبدال للمعاملات. ...

التابع File.fnmatch في روبي

يتحقق التابع fnmatch من تطابق مسار مع نمط محدَّد. هذا النمط ليس تعبيرًا نظاميًّا بل يتبع قواعد مشابهة لتعميم أسماء الملفات في الصدفة. البنية العامة fnmatch( pattern, path, [flags] ) → (true or false) fnmatch?( pattern, path, [flags] ) → (true or false) المعاملات pattern النمط المراد منه مطابقة المسار path المعطى. يمكن أن يحتوي على المحارف الخاصَّة (metacharacters، أو تدعى محارف الصدفة أيضًا) التالية: المحرف الخاص الوصف * يطابق أي ملف. يمكن أن يُقيَّد بقيم أخرى في النطاق العام (glob). هذا ...

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