نتائج البحث

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

التابع String.sub في روبي

يعيد التابع sub نسخة من السلسلة النصية التي استدعي معها مع تبديل قيمة محدَّدة مع أول تطابق للنمط المعطى. البنية العامة sub(pattern, replacement) → new_str sub(pattern, hash) → new_str sub(pattern) {|match| block } → new_str إن أعطيت كتلة block إلى التابع، فستُمرَّر السلسلة الحالية المتطابقة إليها وستعيَّن قيم متغيرات مثل ‎$1، و ‎$2، و ‎$`‎، و ‎$&‎، و ‎$'‎ بشكل مناسب. ستحل القيم التي تعيدها الكتلة مكان القيمة المتطابقة في كل استدعاء. المعاملات pattern يكون عادةً تعبيرًا نمطيًّا. إن كان سلسلة نصية، فستُفسَّر أية محارف ...

الكلمة goto المفتاحية في أردوينو

تنقل الكلمة goto المفتاحية البرنامج إلى موضع معين ضمن الشيفرة. البنية العامة goto label; // إرسال البرنامج لتنفيذ الكتلة البرمجية // label الموجودة عند التسمية أمثلة مثالٌ على استعمال التعبير goto: for(byte r = 0; r < 255; r++){ for(byte g = 255; g > 0; g--){ for(byte b = 0; b < 255; b++){ ...

if...else في JavaScript

التعبير البرمجي الشرطي (if statement) يُستخدَم لتنفيذ تعبير برمجي معيّن عندما يكون الشرط محققًا، وإذا كان الشرط غير محققٍ فسيُنفِّذ تعبيرًا برمجيًا آخر. البنية العامة if (condition) statement1 [else statement2] condition تعبيرٌ يمكن أن يكون محققًا (true) أو غير محقق (false). statement1 التعبير البرمجي الذي سيُنفَّذ عندما يكون الشرط condition محققًا، ويمكن أن يكون هذا التعبير أيّ تعبيرٍ صالحٍ بما في ذلك تعابير if المتشعبة، ويمكن إنشاء قسم كتلي { ... } لتجميع أكثر من تعبير برمجي ...

تعريف أحداث التنظيف clean-up actions

تمتلك عبارة try جزءًا اختياريًا آخر، والهدف منه هو تعريف أحداث تنظيف (clean-up actions) يجب تنفيذها في جميع الظروف، فعلى سبيل المثال: >>> try: ...     raise KeyboardInterrupt ... finally: ...     print('Goodbye, world!') ... Goodbye, world! KeyboardInterrupt Traceback (most recent call last):   File "<stdin>", line 2, in <module> تُنفّذ عبارة finally دائمًا قبل الخروج من عبارة try، سواء أحدث الاستثناء أم لم يحدث. وعند حدوث استثناء في عبارة try ولم تجر معالجته بواسطة عبارة except (أو أنّه حدث في عبارة except أو else) فإنّه يعاد إطلاق ذلك ...

التعبير switch...case في أردوينو

يتحقَّق التعبير switch...case -كما في if- من قيمة محدَّدة بطريقة تسمح للمبرمج بتحديد عدة شيفرات تُنفَّذ إحداها بناءً على تلك القيمة المفحوصة. بتفصيلٍ أوسعٍ، يوازن التعبير switch...case قيمة متغير مع القيم المحددة ضمنه؛ عند مطابقة قيمة ذلك المتغير مع إحدى القيم أو التعابير الموجودة ضمنه، فستُنفَّذ الكتلة البرمجية المرتبطة بتلك القيمة أو التعبير. تستخدم عادةً الكلمة المفتاحية break في نهاية كل حالة من حالات التعبير switch...case للخروج منه بعد مطابقة الحالة وتنفيذ الكتلة المرتبطة بها. إن لم تُستعمَل الكلمة break ...

الكلمة else المفتاحية في أردوينو

يسمح التعبير if...else الشرطي بالتحكم بشكل أوسع بتسلسل عملية التحقق من عدة شروط معينة عند تنفيذ الشيفرة عوضًا عن التحقق من شرط وحيد عند استعمال التعبير if. ستُنفَّذ العبارة else (إن وجدت) إن لم يتحقق الشرط المعطى في العبارة if ( أي أعطى القيمة false). يمكن أيضًا استعمال العبارة else مع العبارة if بالشكل else if لإضافة شرط آخر للتحقق منه وبذلك يمكن إجراء عدة عمليات تحقق متتابعة في الوقت نفسه. في حال وجود عدة شروط يراد التحقُّق منها، سيُتحقَّق ...

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

jQuery.each( array, callback )‎ القيم المعادة تعيد كائنًا من النوع Object. الوصف هذه الدالة هي دالة تكرار عامة تستعمل لتكرار تنفيذ دالة بسلاسة تامة عبر الكائنات والمصفوفات. عدد مرات تكرار تنفيذ الدالة على المصفوفات والكائنات الشبيهة بالمصفوفات التي لها الخاصِّيَّة length (مثل الكائن الذي يحوي وسائط دالةٍ) تنحصر بالمجال من 0 إلى length-1، إذ length هو عدد العناصر. أمَّا عدد مرات تكرار الكائنات الأخرى تتعلق بالخصائص المسماة للكائن. jQuery.each( array, callback )‎ أُضيف مع الإصدار: 1.0. array مصفوفةٌ أو كائنٌ ...

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

jQuery.each( array, callback )‎ القيم المعادة تعيد كائنًا من النوع Object. الوصف هذه الدالة هي دالة تكرار عامة تستعمل لتكرار تنفيذ دالة بسلاسة تامة عبر الكائنات والمصفوفات. عدد مرات تكرار تنفيذ الدالة على المصفوفات والكائنات الشبيهة بالمصفوفات التي لها الخاصِّيَّة length (مثل الكائن الذي يحوي وسائط دالةٍ) تنحصر بالمجال من 0 إلى length-1، إذ length هو عدد العناصر. أمَّا عدد مرات تكرار الكائنات الأخرى تتعلق بالخصائص المسماة للكائن. jQuery.each( array, callback )‎ أُضيف مع الإصدار: 1.0. array مصفوفةٌ أو كائنٌ ...

تعريف أحداث التنظيف clean-up actions

تمتلك عبارة try جزءًا اختياريًا آخر، والهدف منه هو تعريف أحداث تنظيف (clean-up actions) يجب تنفيذها في جميع الظروف، فعلى سبيل المثال: >>> try: ...     raise KeyboardInterrupt ... finally: ...     print('Goodbye, world!') ... Goodbye, world! KeyboardInterrupt Traceback (most recent call last):   File "<stdin>", line 2, in <module> تُنفّذ عبارة finally دائمًا قبل الخروج من عبارة try، سواء أحدث الاستثناء أم لم يحدث. وعند حدوث استثناء في عبارة try ولم تجر معالجته بواسطة عبارة except (أو أنّه حدث في عبارة except أو else) فإنّه يعاد إطلاق ذلك ...

التعبير switch...case في أردوينو

يتحقَّق التعبير switch...case -كما في if- من قيمة محدَّدة بطريقة تسمح للمبرمج بتحديد عدة شيفرات تُنفَّذ إحداها بناءً على تلك القيمة المفحوصة. بتفصيلٍ أوسعٍ، يوازن التعبير switch...case قيمة متغير مع القيم المحددة ضمنه؛ عند مطابقة قيمة ذلك المتغير مع إحدى القيم أو التعابير الموجودة ضمنه، فستُنفَّذ الكتلة البرمجية المرتبطة بتلك القيمة أو التعبير. تستخدم عادةً الكلمة المفتاحية break في نهاية كل حالة من حالات التعبير switch...case للخروج منه بعد مطابقة الحالة وتنفيذ الكتلة المرتبطة بها. إن لم تُستعمَل الكلمة break ...

التعبير if الشرطي في أردوينو

يتحقَّق التعبير if الشرطي من شرط معيَّن وينفِّذ الكتلة البرمجية المكتوبة ضمنه إن كان محقَّقًا (أي كانت قيمته true). البنية العامة if (condition) { // الكتلة البرمجية المراد تنفيذها عند تحقق الشرط } إنَّ الشرط condition هو تعبيرٌ منطقيٌّ أي قيمته إمَّا true أو false. أمثلة مثالٌ على استعمال التعبير if الشرطي بصيغ متعددة: if (x > 120) digitalWrite(LEDpin, HIGH); if (x > 120) digitalWrite(LEDpin, HIGH); if (x > 120){ digitalWrite(LEDpin, HIGH); } if (x > 120){ digitalWrite(LEDpin1, HIGH); digitalWrite(LEDpin2, HIGH); } ملاحظات وتحذيرات قد ...

استنتاج الأنواع في TypeScript

مقدمة سنُغطّي في هذا القسم آلية استنتاج الأنواع في TypeScript، خاصّةً أين وكيف تُستنتَج الأنواع. الأساسيات هناك العديد من الأماكن في TypeScript التي يُستعمَل فيها استنتاج الأنواع لتوفير معلومات النوع عندما لا تكون هناك حاشية نوع (type annotation) صريحة. على سبيل المثال، في الشيفرة التالية let x = 3; سيُستَنتَجُ نوع المتغيّر ‎x‎ على أنّه النوعُ ‎number‎. استنتاج الأنواع هذا يكون عند تهيئة (initializing) المتغيرات والعناصر، أو عند ضبط قيم افتراضيّة للمعاملات، أو عند تحديد النوع المُعادِ لدالةٍ ما. يكون ...

الروتينات المساعدة (Coroutines) في لغة Kotlin

ملاحظة: ما تزال الروتينات المساعدة تجريبيةً في الإصدار Kotlin 1.1. الروتينات المساعدة (Coroutines) تُنشِئ بعض الواجهات API عملياتٍ طويلة التنفيذ (مثل عمليات الدخل والخرج للشبكة أو الدخل والخرج للملفات أو الأعمال المُعقَّدة في الوحدتين CPU أو GPU)، وهذا سيجبر المُستدعي على تجميد تنفيذه (block) إلى حين إتمامها، ولذا توفِّر الروتينات المساعدة طريقةً لمنع تجميد الخيوط (threads) وإجراء عمليةٍ أقلَّ كلفةً (بالنسبة لزمن المعالجة) وأكثر قابليةً للتحكم، ألا وهي الإيقاف المؤقت (suspension) للروتينات المساعدة. تبسّط الروتينات المساعدة البرمجة غير المتزامنة (asynchronous ...

الحلقة for التكرارية في أردوينو

تُستعمَل الحلقة for لتكرار كتلة برمجية معينة من الشيفرة عددًا محدَّدًا من المرات. يُستعمَل في هذه الحلقة عادةً عدادٌ لتتبع عدد مرات تكرار الشيفرة ومقاطعتها عند الوصول إلى عدد محدَّد. يمكن استعمال الحلقة for مع أية عملية تكرارٍ، وتُستعمَل بكثرة مع المصفوفات لتنفيذ عملية معينة على عناصرها التي قد تكون بيانات عادية أو أرجل معينة. البنية العامة for (خطوة ;الشرط ;التهيئة الأولية) { // الكتلة البرمجية المراد تكرارها; } تنفَّذ عملية التهيئة الأولية مرةً واحدةً فقط في بداية تنفيذ الحلقة. يُتحقَّق من الشرط ...

اختبارات المتصفح (Laravel Dusk) في Laravel

مقدمة يوفّر لك Laravel Dusk أتمتة للمتصفّح واختبار للواجهات البرمجيّة بطريقة سهلة الاستخدام. بشكلٍ افتراضي، لا يتطلّب Dusk تنصيب JDK أو Selenium على جهازك، حيث يستعمل تثبيت مستقل (standalone) لبرمجية ChromeDriver. بأي حال، يمكنك استخدام أي برنامج تشغيل متوافق مع Selenium إذا أردت. التثبيت للبدء، أضف الاعتمادية laravel/dusk إلى مشروعك: composer require --dev laravel/dusk بعد تثبيت Dusk، سجّل مزوّد الخدمة الذي يتبع إلى Dusk، وهو Laravel\Dusk\DuskServiceProvider. بشكل عام، يكون هذا تلقائيًّا باستخدام التسجيل التلقائي لمزوّدات خدمة Laravel. تنبيه: إذا قمت بتسجيل ...

Python/Examples

هذه الصفحة هي تجميع منظم ومرتب لأمثلة بلغة بايثون الاستثناءات تحتوي هذه الفقرة على أمثلة يصدر فيها استثناءات. الاستثناء FileNotFoundError تُصدره بعض التوابع القارئة للملفات عند عدم وجود الملف >>> f=open('D:\\file.txt') Traceback (most recent call last): File "<pyshell#123>", line 1, in <module> f=open('D:\\file.txt') FileNotFoundError: [Errno 2] No such file or directory: 'D:\\file.txt' الاستثناء KeyError  يصدر عند محاولة الوصول إلى عنصر عن طريق مفتاح غير موجود في القاموس >>> a=dict() >>> a["test"]="good" >>> print(a["no key"]) Traceback ...

الوحدة HTTP في Node.js

مؤشر الاستقرار: 2 - مستقر لاستخدام خادم وعميل HTTP يجب استدعاء require('http')‎. صُمِمت واجهات HTTP في Node.js لدعم العديد من ميزات البروتوكول التي كانت صعبة الاستخدام تقليديًا. على وجه الخصوص، الرسائل الكبيرة، التي قد تكون مرمّزة كقطع ضخمة. وتكون الواجهة حريصة على عدم تخزين الطلبات أو الاستجابات بأكملها مؤقتًا، بحيث يكون المستخدم قادرًا على دفق البيانات (stream data). تُمثَّل ترويسات رسائل HTTP بواسطة كائن مثل التالي: { 'content-length': '123', 'content-type': 'text/plain', 'connection': 'keep-alive', 'host': 'mysite.com', 'accept': ...

المعاملات الافتراضية للدوال في JavaScript

معاملات الدالة الافتراضية (default function parameters) تسمح بتهيئة معاملات الدالة مع قيم افتراضية إن لم تُمرَّر لها قيمة أثناء استدعاء الدالة أو كانت القيمة المُمرَّرة هي undefined. البنية العامة function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { statements } الوصف تكون قيمة المعاملات الافتراضية في JavaScript هي undefined، لكن في بعض الحالات يكون من المفيد ضبط قيمة تلك المعاملات إلى قيمةٍ أخرى، وهنا تلعب المعاملات الافتراضية دورها. في الماضي كانت الاستراتيجية العامة المتبعة لضبط قيم افتراضية ...

let في JavaScript

تعبير let يُصرِّح عن متغير محلي للقسم الكتلي، ويمكن تهيئة قيمته الابتدائية اختياريًا. البنية العامة let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]; varnameN اسم المتغير، ويمكن أن يكون أيّ معرِّف صالح في JavaScript. valueN القيمة الابتدائية للمتغير، ويمكن استخدام أيّ تعبير (expression) صالح في JavaScript. الوصف التعبير let يسمح بالتصريح عن متغيرات يكون مجالها (scope) محدودًا إلى القسم الكتلي (block statement)، أو إلى التعبير (expression) الذي اُستخدِمَ فيه؛ وهو على النقيض من الكلمة المحجوزة ...

النوع float في أردوينو

يستعمل النوع float مع الأعداد العشرية، وهي الأعداد الكسرية التي تُستعمَل فاصلةٌ عشريَّةٌ في تمثيلها. تُستعمَل الأعداد العشرية غالبًا لتقريب القيم التشابهية والمستمرة (continuous) لأنَّها تملك دقة أكبر من تلك التي تملكها الأعداد الصحيحة. يمكن أن تكون الأعداد العشرية كبيرة بكبر العدد 3.4028235E+38 وصغيرة بصغر العدد 3.4028235E+38-. يحجز النوع float أربعة بايتات (32 بت) من الذاكرة لتخزين عدد عشري فيها. تملك الأعداد العشرية التي من النوع float دقة صغيرة تصل إلى 6-7 منازل عشرية بعد الفاصلة. في لوحات أردوينو Uno ...

Kotlin/Topics

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

مشغّل المهام Envoy في Laravel

مقدمة يوفّر Laravel Envoy صياغة نظيفة ومختزلة لتعريف المهام الشائعة وتشغيلها على الخوادم البعيدة (remote servers)، ويمكنك إعداد المهام بسهولة باستخدام صياغة نمط Blade للنشر، أوامر Artisan وغيرها. ويدعم Envoy في الوقت الحالي أنظمة تشغيل لينكس و ماك فقط. التثبيت ثبّت أولًا Envoy باستخدام أمر global require الخاص بالأمر Composer: composer global require laravel/envoy قد تتسبب مكتبات Composer العامة (global) في بعض الأحيان في حدوث تعارضات في الحزم، يمكنك في هذه الحالة استخدام مكتبة cgr والذي يعد بديلًا للأمر composer global ...

مشغّل المهام Envoy في Laravel

مقدمة يوفّر Laravel Envoy صياغة نظيفة ومختزلة لتعريف المهام الشائعة وتشغيلها على الخوادم البعيدة (remote servers)، ويمكنك إعداد المهام بسهولة باستخدام صياغة نمط Blade للنشر، أوامر Artisan وغيرها. ويدعم Envoy في الوقت الحالي أنظمة تشغيل لينكس و ماك فقط. التثبيت ثبّت أولًا Envoy باستخدام أمر global require الخاص بالأمر Composer: composer global require laravel/envoy قد تتسبب مكتبات Composer العامة (global) في بعض الأحيان في حدوث تعارضات في الحزم، يمكنك في هذه الحالة استخدام مكتبة cgr والذي يعد بديلًا للأمر composer global ...

مفسر بايثون

تشغيل المفسر عادة ما يُنصَّب مفسِّر بايثون في المسار ‎/usr/local/bin/python3.6 في أنظمة يونكس، ويؤدّي وضع هذا المسار ضمن مسار البحث الخاصّ بصدفة يونكس (Unix shell) إلى إمكانية استدعاء مفسّر بايثون عن طريق كتابة الأمر التالي في الصدفة: python3.6 ملاحظة: في أنظمة يونكس، لا يستخدم الاسم python افتراضيًا لاستدعاء مفسّر بايثون في الإصدارات ‎3.x‎ من اللغة، وذلك لتجنّب حدوث أي تضارب مع مفسّر الإصدارات ‎2.x من اللغة. يمكن تحديد مسار مفسِّر بايثون أثناء عملية التثبيت، وعادة ما يُستخدم المسار التالي: ‎/usr/local/python كمسار ...

Ruby/Topics

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

Arduino/Topics

بنية لغة أردوينو تخضع الشيفرة في لغة أردوينو إلى بعض التعديلات البسيطة ثم تمرَّر إلى مفسِّر ++C/C. يمكن استعمال جميع البنى والتعابير القياسية في لغة C أو ++C التي يدعمها المفسِّر في أردوينو. لن تجد في شيفرة أردوينو الدالة main()‎ المعتادة ولكن ستجد عوضًا عنها دالتين رئيسين هما: الدالة setup()‎ والدالة loop()‎ اللتان تفسران وتوصلان بالدالة الرئيسيةmain() ‎ لإنشاء البرنامج التنفيذي التكراري (cyclic executive program) عبر استعمال سلسلة أدوات GNU. يُستعمَل البرنامج avrdude المضمن ضمن أردوينو IDE لتحويل الشيفرة التنفيذية ...

الدوال المباشرة (Inline Functions) في لغة Kotlin

الدوال المباشرة (Inline Functions) ينتُج عن استخدام الدوال من المرتبة الأعلى (higher-order functions) بعض التأثيرات السلبيّة أثناء التنفيذ (runtime)، إذ تُعدُّ كل دالة كائنًا (object) ضمن نطاقٍ مغلقٍ (closure) يشمل المتغيِّرات التي يمكن الوصول إليها في بُنية الدالة، كما ويتطلَّب ذلك تكلفةً إضافيّةً عند تخصيص جزءٍ من الذاكرة (لكلٍ من كائنات الدوال والأصناف [classes]) وعند الاستدعاءات الوهمية (virtual calls) أثناء التنفيذ. وقد يُحدُّ من هذه المشاكل باللجوء إلى تعابير lambda المباشرة، إذ تُعدُّ الدالة lock()‎ مثالًا جيدًا لمثل هذه الحالات التي ...

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

تُضمَّن الوحدة Kernel من طرف الصنف Object، لذلك فتوابعها متاحة في كل كائنات روبي. توابع نسخ الصنف Kernel مُوثّقة في صفحة الصنف Object، أما توابع الوحدة Kernel فهي مُوثقة هنا. تستدعى هذه التوابع بدون مستقبل (receiver)، وبالتالي يمكن استدعاؤها وفق الشكل الدالي: sprintf "%.1f", 1.234 #=> "1.2" توابع الصنف العامة (Public Class Methods) Array يعيد المعامل الممرَّر إليه على شكل مصفوفة (Array). Complex يعيد ناتج التعبير x + i * y؛ حيث i هو الوحدة التخيلية للعدد العقدي. Float Hash يعيد ناتج التعبير x + ...

قوالب Blade في Laravel

مقدمة يقدم Laravel محرّك قولبةٍ بسيطاً لكن قويٌّ و فعّال هو Blade. على خلاف محرّكات PHP أخرى، لا يمنع Blade المستخدم من استعمال شيفرات PHP في الواجهة، بل إنّه يحوِِّل صفحات Blade إلى شيفرة PHP ويخزِّنها تخزينًا مؤقتًا إلى حين تغييرها. ممّا يعني أنّ Blade لا يتطلب أيّ جهد أو وقت إضافي من التطبيق. تنتهي صفحات Blade بالامتداد blade.php. وتوجد عادة في مجلد resources/views. توريث القوالب تعريف التخطيط إنّ من الفوائد الأساسية لاستخدام Blade هي توريث القوالب (template inheritance) واستخدام ...

قوالب Blade في Laravel

مقدمة يقدم Laravel محرّك قولبةٍ بسيطاً لكن قويٌّ و فعّال هو Blade. على خلاف محرّكات PHP أخرى، لا يمنع Blade المستخدم من استعمال شيفرات PHP في الواجهة، بل إنّه يحوِِّل صفحات Blade إلى شيفرة PHP ويخزِّنها تخزينًا مؤقتًا إلى حين تغييرها. ممّا يعني أنّ Blade لا يتطلب أيّ جهد أو وقت إضافي من التطبيق. تنتهي صفحات Blade بالامتداد blade.php. وتوجد عادة في مجلد resources/views. توريث القوالب تعريف التخطيط إنّ من الفوائد الأساسية لاستخدام Blade هي توريث القوالب (template inheritance) واستخدام ...

الوحدة re في بايثون

تقّدم الوحدة re مجموعة من العمليات الخاصة بمطابقة التعابير النمطية (Regular Expressions) وهي مشابهة إلى حدّ كبير للعمليات الموجودة في لغة Perl. يمكن أن تكون الأنماط والسلاسل النصية المراد العثور عليها سلاسل نصية بترميز Unicode من نوع (str) أو سلاسل نصية ذات 8 بتات من نوع (bytes)، ولكن لا يجوز المزج بين النوعين، بمعنى أنّه لا يمكن مطابقة سلسلة نصية مع نمط من نوع البايتات والعكس صحيح أيضًا، وبنفس الطريقة، عند الرغبة في إجراء عملية استبدال يجب أن تكون سلسلة ...

تنسيق المخرجات في بايثون

تقدّم بايثون عددًا من الطرائق التي تساعد في تنسيق مخرجات البرامج، فيمكن طباعة البيانات بصيغة سهلة القراءة، أو يمكن كتابة البيانات في ملف لاستخدامه في المستقبل.  استخدمنا في هذا التوثيق طريقتين لكتابة القيم: الأول هي العبارات expression statements والدالة print()‎. (هناك طريقة ثالثة وهي استخدام التابع write()‎ الخاص بالكائنات file، ويعرف ملف المخرجات القياسي بـ sys.stdout).  تظهر الحاجة في كثير من الأحيان إلى التحكم في تنسيق المخرجات وإظهارها بأشكال مختلفة وليس كقيم مفصولة بفراغات وحسب. وهناك طريقتان لتنسيق المخرجات، الأولى ...

تنسيق المخرجات في بايثون

تقدّم بايثون عددًا من الطرائق التي تساعد في تنسيق مخرجات البرامج، فيمكن طباعة البيانات بصيغة سهلة القراءة، أو يمكن كتابة البيانات في ملف لاستخدامه في المستقبل.  استخدمنا في هذا التوثيق طريقتين لكتابة القيم: الأول هي العبارات expression statements والدالة print()‎. (هناك طريقة ثالثة وهي استخدام التابع write()‎ الخاص بالكائنات file، ويعرف ملف المخرجات القياسي بـ sys.stdout).  تظهر الحاجة في كثير من الأحيان إلى التحكم في تنسيق المخرجات وإظهارها بأشكال مختلفة وليس كقيم مفصولة بفراغات وحسب. وهناك طريقتان لتنسيق المخرجات، الأولى ...

SQL/Topics

أنواع البيانات أنواع البيانات التي يمكن استخدامها مع محركات قواعد البيانات المختلفة (البيانات العددية، والبيانات النصية، والوقت والتاريخ، والبيانات الثنائية ...إلخ.). أساسيات لغة SQL القيمة NULL يستخدم التعبير IS NULL للتأكد من خلو القيمة (أي لا توجد قيمة في الحقل المحدد). التعليقات Comments تضاف التعليقات إلى الشيفرة بهدف تسهيل قراءتها أو كتابة ملاحظات جانبية مساعدة. SELECT count(*); -- This comment continues to the end of line SELECT count(*); /* This is an inline ...

الصنف 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. في ...

الدالة eval()‎ في JavaScript

الدالة eval()‎ تُقدِّر قيمة شيفرة JavaScript المُمثَّلة في سلسلة نصية. البنية العامة eval(string) string سلسلة نصية تُمثِّل أحد التعبيرات أو التعبيرات البرمجية أو سلسلة من التعبيرات البرمجية في JavaScript، ويمكن أن يحتوي التعبير أيضًا على متغيرات وخاصيات لكائنات موجودة مسبقًا. القيمة المعادة ستُعيد الدالة eval()‎ قيمة آخر تعبير قد قُدِّرَت قيمته، وإذا كانت قيمته فارغةً فستُعاد القيمة undefined. الوصف الدالة eval()‎ هي خاصيةٌ للكائن العام (global object)، وتقبل وسيطًا هو سلسلة نصية، وإذا كانت هذه السلسلة النصية تُمثِّل تعبيرًا (expression ...

PHP/Topics

الضبط كيفية ضبط لغة PHP عبر مختلف أنواع ملفات الضبط، وطرائق تعديلها. بنية اللغة تبيان أنواع وسوم لغة PHP، وطريقة دمجها مع HTML، وشرح بعض خصائصها البنيوية (ومن بينها التعليقات). أنواع البيانات لا يعيّن المبرمج نوع المتغير عادةً، بل تُعيِّنُه لغة PHP أثناء التنفيذ بالاعتماد على محتوى المتغير المستخدم. القيم المنطقية (boolean) القيم المنطقية (boolean) من أبسط الأنواع، فالتعبير المنطقي يُعبِّر عن صحّة تعبيرٍ ما، فإما أن تكون قيمة التعبير صحيحةً TRUE أو خطأً FALSE. الأعداد الصحيحة (integer) العدد الصحيح هو عدد من ...

بنية اللغة

تُقرأ شيفرات بايثون بواسطة المحلّل parser. مدخلات المحلّل هي تدفّق من العلامات tokens التي ينشئها محلل المفردات lexical analyzer. يصف هذا القسم طريقة تقسيم ملفات بايثون إلى علامات بواسطة محلل المفردات. بنية السطر تقسم شيفرة بايثون إلى نوعين من الأسطر هما الأسطر المنطقية والأسطر الفيزيائية. الأسطر المنطقية Logical lines ينتهي السطر المنطقي بعلامة السطر الجديد NEWLINE، ولا يمكن للعبارات أن تتجاوز حدود السطر المنطقي إلا إذا كانت صيغتها تسمح بذلك. ويتألف السطر المنطقي من سطر فيزيائي واحد أو أكثر وبالاعتماد ...

debugger في JavaScript

التعبير البرمجي debugger يؤدي إلى تفعيل وظيفة التنقيح (debugging functionality) المتاحة، مثل بداية نقطة المقاطعة (breakpoint)؛ لكن إن لم يكن هنالك منقِّح أو وظيفة تنقيح متاحة فلن يكون لهذا التعبير أي أثر. البنية العامة debugger; أمثلة الشيفرة الآتية فيها التعبير البرمجي debugger الذي يؤدي إلى استدعاء المنقِّح (إن كان موجودًا) عند تنفيذ الدالة function potentiallyBuggyCode() { debugger; // شيفرة غير مستقرة فيها علل يجب تنقيحها } دعم المتصفحات الميزة Chrome Firefox Internet Explorer Opera Safari ...

class في JavaScript

التصريح عن الصنف (class declaration) يؤدي إلى إنشاء صنف جديد له اسمٌ معيّن يستخدم الوراثة عبر سلسلة prototype. يمكنك أيضًا تعريف الأصناف عبر تعابير تعريف الأصناف (class expression)، لكن التصريح عن الصنف بهذه الطريقة يختلف عن استخدام تعابير تعريف الأصناف في أنَّه لا يسمح بإعادة التصريح عن الصنف مرةً أخرى، وسيرمي (throw) خطأً إن حاولنا ذلك. البنية العامة class name [extends] { // محتويات الصنف } الوصف كما في تعابير تعريف الأصناف، ستُنفَّذ التعابر البرمجية الموجودة ضمن الصنف في نمط ...

switch في JavaScript

التعبير البرمجي switch يُستخدَم لمطابقة قيمة تعبير برمجي باستخدام عبارة case، ثم يُنفِّذ التعابير البرمجية المرتبطة معها. البنية العامة switch (expression) { case value1: // التعابير البرمجية التي ستُطبِّق // عندما تُطابِق قيمةُ التعبير قيمةَ الحالة [break;] case value2: // التعابير البرمجية التي ستُطبِّق // عندما تُطابِق قيمةُ التعبير قيمةَ الحالة [break;] ... case valueN: ...

throw في JavaScript

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

const في JavaScript

الثوابت (constants) تكون تابعةً للمجال الكتلي (block scope) بما يُشبه المتغيرات المُعرَّفة عبر التعبير let، لكن قيمة الثوابت لا يمكن أن تتغير عبر إعادة إسناد القيمة، ولا يمكن إعادة تصريحها. البنية العامة const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]]; nameN اسم الثابت، ويمكن أن يكون أيّ معرِّف صالح في JavaScript. valueN قيمة الثابت، ويمكن استخدام أيّ تعبير (expression) صالح في JavaScript بما في ذلك الدوال. الوصف تكون الثوابت إما عامةً أو محليةً وتابعةً ...

try...catch في JavaScript

التعبير البرمجي try...catch يُستخدَم لتجربة قسم من التعابير البرمجية، ويُحدِّد طريقةً لمعالجة الاستثناءات إن رُمِيَت. البنية العامة try { try_statements } [catch (exception_var_1) { catch_statements_1 }] ... [catch (exception_var_2) { catch_statements_2 }] [finally { finally_statements }] try_statements التعابير البرمجية التي ستُنفَّذ والتي قد ترمي استثناءً. catch_statements_1 و catch_statements_2 التعابير البرمجية التي ستُنفَّذ إذا رُمي استثناءٌ في قسم try. exception_var_1 و exception_var_2 مُعرِّف يُستخدَم لتخزين قيمة كائن الاستثناء (exception object) المرتبط مع قسم catch. finally_statements التعابير البرمجية التي ستُنفَّذ بعد إكمال ...

for...in في JavaScript

التعبير البرمجي for...in يُنشِئ حلقة تكرار تمر على الخاصيات القابلة للإحصاء (enumerable properties) التابعة لأحد الكائنات، ويمكن تنفيذ تعابير برمجية لكل خاصية من خاصيات الكائن. البنية العامة for (variable in object) { //... } variable ستُنسَد قيمة الخاصية مختلفة لهذا المتغير في كل دورة. object الكائن الذي سنمر على الخاصيات القابلة للإحصاء (enumerable properties) التابعة له. الوصف حلقة التكرار for...in تمر على الخاصيات القابلة للإحصاء (enumerable properties) فقط، فالكائنات المُنشَأة من الدوال البانية المُضمَّنة في اللغة مثل Array و Object ...

break في JavaScript

التعبير البرمجي break يؤدي إلى إنهاء حلقة التكرار الحالية أو التعبير switch أو label، وستنقل تنفيذ البرنامج إلى التعبير البرمجي الذي يلي التعبير الذي انتهى. البنية العامة break [label]; label مُعرِّفٌ اختياريٌ مرتبطٌ بلافتة التعبير البرمجي، وإذا كان التعبير ليس حلقةً تكراريةً أو switch فسيصبح هذا المُعرِّف مطلوبًا وليس اختياريًا. الوصف يتضمن التعبير break إمكانية توفير لافتة اختيارية تسمح للبرنامج بالخروج من التعبير المُسمى؛ ويجب أن يكون التعبير break موجودًا ضمن ذاك التعبير المسمى. أمثلة استخدام break مع حلقة while ...

import

التعبير البرمجي import يُستخدَم لاستيراد ما صُدِّر من وحدة (module) أخرى. لاحظ أنَّ دعم هذه الميزة ما يزال محدودًا، لذا انظر إلى قسم «دعم المتصفحات» قبل استخدامها. البنية العامة import defaultExport from "module-name"; import * as name from "module-name"; import { export } from "module-name"; import { export as alias } from "module-name"; import { export1 , export2 } from "module-name"; import { export1 , export2 as alias2 , [...] } from "module-name"; import defaultExport, { export [ , [...] ] } from "module-name"; import defaultExport, * ...

var في JavaScript

تعبير variable يُصرِّح عن متغير، ويمكن تهيئة قيمته الابتدائية اختياريًا. البنية العامة var varname1 [= value1] [, varname2 [= value2] ... [, varnameN [= valueN]]]; varnameN اسم المتغير، ويمكن أن يكون أيّ معرِّف صالح في JavaScript. valueN القيمة الابتدائية للمتغير، ويمكن استخدام أيّ تعبير (expression) صالح في JavaScript، والقيمة الافتراضية هي undefined. الوصف التصريح عن المتغيرات سيُعالَج قبل تنفيذ أيّة شيفرات أينما وقعت، ومجال (scope) المتغيرات المُصرَّح عنا عبر var هو سياق التنفيذ الحالي (execution context)، كمجال الدوال، أو المجال ...

export

التعبير البرمجي export يمكن أن يُستخدَم عند إنشاء وحدات JavaScript (أي JavaScript modules) لتصدير الدوال أو الكائنات أو القيم الأوليّة (primitive values) من وحدة (module) لكي يمكن استخدامها من برنامج آخر باستخدام التعبير البرمجي import. لاحظ أنَّ دعم هذه الميزة ما يزال محدودًا، لذا انظر إلى قسم «دعم المتصفحات» قبل استخدامها. البنية العامة export { name1, name2, …, nameN }; export { variable1 as name1, variable2 as name2, …, nameN }; export let name1, name2, …, nameN; // also var, function export let ...

الكلمات المفتاحية (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 ...

الأمر Artisan console) Artisan) في Laravel

مقدمة Artisan هي واجهة الأوامر المُرفقة ب Laravel. وهي تُوفّر عددًا من الأوامر المفيدة والتي ستساعدك في بناء التطبيق. لإظهار جميع الأوامر التي يوفّرها Artisan، يمكنك استعمال الأمر list php artisan list يحتوي كل أمر على صفحة مساعدة "help" تعرّف وتوضّح الأمر كما تُقدّم قائمة المعاملات والخيارات لكل أمر. يُستعمل الأمر مسبوقًا بالكلمة help لإظهار صفحة المساعدة: php artisan help migrate Laravel REPL تأتي كل تطبيقات Laravel مُرفَقَةً ب Tinker، وهي REPL مشغّلة بواسطة حُزمة PsySH. يسمح Tinker بالتفاعل مع ...

تنقيح تطبيقات ريلز

يقدّم هذا الدليل التقنيات اللازمة لتنقيح تطبيقات ريلز. بعد قراءة هذا الدليل، ستتعلّم: الغرض من التنقيح. كيفة تتبّع العلل والأخطاء التي لا تتعرّف عليها الاختبارات في تطبيقك. طرقًا مختلفة للتنقيح. كيفيّة تحليل أثر المكدس. مساعدي العرض للتنقيح احدى المهام الشائعة في التنقيح هي فحص محتويات متغيّر معيّن، لذا يوفر ريلز ثلاثة طرائق لفعل ذلك: Debug To_yaml Inspect debug سيعيد المساعد debug الوسم <pre> الذي يصدّر الكائن باستخدام تنسيق YAML، وسيؤدي هذا إلى توليد بيانات يمكن للإنسان قراءتها من أي كائن. ...

أنماط الشيفرات المُتعارَف عليها ما بين مبرمجي 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 ...

نظرة عامة على Action Cable في ريلز

ستتعرف في هذا الدليل على كيفية عمل Action Cable وكيفية استخدام WebSockets لدمج ميزات الوقت الفعلي في تطبيق ريلز. بعد قراءة هذا الدليل، ستتلعم: ماهية Action Cable وكيفية دمج الواجهة الخلفية والأمامية الخاصة به. كيفية إعداد Action Cable. كيفية إعداد القنوات. النشر وإعداد المعمارية لتشغيل Action Cable. المقدمة يدمج Action Cable مقابس الويب WebSockets مع باقي تطبيق ريلز بسلاسة. يسمح ذلك بكتابة الميزات في الوقت الحقيقي في روبي بنفس الأسلوب والشكل كبقية تطبيقات ريلز، مع الاستمرار في الأداء وقابلية التطوير. ...

الكائن Process

يكون الكائن process عامًا (global) والذي يزود معلومات عن عملية Node.js الحالية ورقابةً عليها، كونه كائنًا عامًا فهو متوافر دومًا لتطبيقات Node.js دون استخدام ()require. أحداث Process الكائن process هو نسخة من EventEmitter. الحدث 'beforeExit' أُضيف في الإصدار: 0.11.12. يُطلَق الحدث 'beforeExit' عندما تفرغ Node.js من حلقة الأحداث (event loop) ولا يوجد عمل إضافي لجدولته. بشكل طبيعي، عملية Node.js سوف تنتهي عندما لا يكون هناك عمل مجدولٌ، لكن المُنصِت المسجِّل لحدث 'beforeExit' يمكن أن يعمل استدعاءات غير متزامنة، وبذلك يسبب ...

منشئ الاستعلامات في Laravel

مقدمة يوفّر منشئ استعلامات قاعدة بيانات Laravel واجهة ملائمة وسلسة لإنشاء وإدارة استعلامات قاعدة البيانات. يمكن استخدامه لتنفيذ معظم عمليات قاعدة البيانات بتطبيقك كما أنه يعمل على جميع أنظمة قواعد البيانات المدعومة. يستخدم منشئ استعلامات Laravel ارتباط المعاملة PDO لحماية تطبيقك من هجمات حقن SQL. لا حاجة لتنظيف السلاسل النصيّة التي تُمرّر كارتباطات. استرداد النتائج استرداد جميع الصفوف من الجدول تستطيع استخدام التابع table على الواجهة الساكنة DB لبدء استعلام. يرد التابع table نسخة منشئ استعلامات فصيحة (fluent) للجدول المحدد، ...

الوحدات (Modules) في Node.js

مؤشر الاستقرار: 2 - مستقر يعامل كل ملف في نظام الوحدات في بيئة Node.js كوحدة منفصلة. على سبيل المثال، فليكن ملف اسمه foo.js: const circle = require('./circle.js'); console.log(`The area of a circle of radius 4 is ${circle.area(4)}`); في السطر الأول، يُحمِّل foo.js الوحدة circle.js الموجودة في نفس المجلد مع foo.js. وإليك محتويات circle.js: const { PI } = Math; exports.area = (r) => PI * r ** 2; exports.circumference = (r) => 2 * PI * r; صدَّرت الوحدة circle.js الدالتين area()‎ و circumference()‎. وتُضاف ...

الوحدات في TypeScript

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

تخطيط الصفحات والتصيير في ريلز

يغطي هذا الدليل ميزات التخطيط الأساسية لوحدتي التحكم والعرض. بعد قراءة هذا الدليل، ستتعلم: كيفية استخدام توابع التصيير المختلفة المضمنة ‎في ريلز. كيفية إنشاء تخطيطات (layouts) تحتوي على أقسام محتوى متعددة. كيفية استخدام الأجزاء مع واجهات العرض. كيفية استخدام تخطيطات متداخلة (قوالب فرعية). نظرة عامة: كيف تتراكب قطع الأحجية معًا يركز هذا الدليل على التفاعل بين المتحكم والعرض في نمط التصميم Model-View-Controller. كما تعلم، فإنَّ المتحكم مسؤول عن تنظيم العملية الكاملة للتعامل مع الطلب في ريلز، على الرغم من أنه ...

ضبط تطبيقات ريلز

يغطي هذا الدليل ميزات الضبط والتهيئة المتاحة لتطبيقات ريلز. بعد قراءة هذا الدليل، ستتعلم: كيفية ضبط سلوك تطبيقات ريلز. كيفية إضافة شيفرة مصدريّة إضافية لتنفيذها وقت بدء تشغيل التطبيق. مواقع شيفرة التهيئة والضبط يوفر ريلز أربعة مواضع رئيسيّة لوضع الشيفرة المصدريّة للتهيئة: config/application.rb ملفات الضبط (configuration) الخاصة بالبيئة المهيآت (Initializers) ما بعد المهيآت (After-initializers) تشغيل شيفرة برمجية قبل ريلز في أحيان نادرة، يحتاج تطبيقك لتشغيل بعض الشيفرات البرمجية قبل تحميل ريلز نفسه، ذا ضعها آنذاك قبل استدعاء require 'rails/all'‎ في ...

البدء مع ريلز

يغطي هذا الدليل بدء وتشغيل ريلز. بعد قراءة هذا الدليل، ستتعلم: كيف تثبّت ريلز وتُنشئ تطبيق ريلز جديد وتربط تطبيق ريلز بقاعدة بيانات. التخطيط العام لتطبيق ريلز. المبادئ الأساسية للنمط MVC (النموذج [Model]، والواجهة [View]، ووحدة التحكم [Controller]) والتصميم RESTful. كيف تولد سريعًا أجزاء البداية لتطبيق ريلز. افتراضات الدليل صُمِّم هذا الدليل للمبتدئين الراغبين ببدء استعمال إطار العمل ريلز من الصفر. ولا يفترض أن لك سابق خبرة بريلز. إنَّ ريلز هو إطار عمل لتطبيقات الويب يعمل على لغة البرمجة روبي. ...

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