code

  • مشكلة list() function في PHP على macOS

    تتعلق مشكلتك بعدم عمل وظيفة list() في PHP على نظام تشغيل macOS بينما تعمل بشكل صحيح على نظام Windows. يبدو أن هذا السلوك غير المتوقع يتعلق بالفرق في التنفيذ بين النظامين. على الرغم من أن list() هي وظيفة مدعومة في PHP، إلا أنه يجب أن نتأكد من أن الاستخدام الصحيح لها يتم تطبيقه بشكل صحيح على كل منصة.

    قبل كل شيء، يجب التأكد من أن البيانات التي تحاول فصلها باستخدام list() متوفرة بالفعل وفي التنسيق الصحيح. يجب عليك التحقق من محتوى المتغير $data والتأكد من أنه يحتوي على البيانات المتوقعة، وأنها مفصولة بالفاصلة المناسبة.

    على الرغم من أن الكود الذي قدمته يستخدم الوظيفة split()، التي تمت إزالتها من PHP 7.0.0 وما بعدها، فإنه من المفترض أن يعمل مع تحديثات PHP الحديثة. يمكنك ببساطة استبدال استخدام split() بـ explode()، والذي يعتبر أسلوبًا أكثر شيوعًا لفصل السلاسل في PHP.

    قم بتغيير السطر:

    php
    list($songAuthor, $songName, $songDate, $songSummary, $songPic, $songLyrics) = split(";", $data, 6);

    إلى:

    php
    list($songAuthor, $songName, $songDate, $songSummary, $songPic, $songLyrics) = explode(";", $data, 6);

    بهذه الطريقة، سيتم استخدام explode() بدلاً من split() لفصل السلسلة $data باستخدام الفاصلة.

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

    php -v

    تأكد من أن الإصدار المثبت هو 7.0.8 كما ذكرت. قد يكون هناك اختلافات أخرى بين إصدارات PHP على macOS وWindows تسبب هذه المشكلة.

    إذا استمرت المشكلة، يمكنك المحاولة باستخدام حلول بديلة مثل استخدام فصل السلسلة بشكل يدوي باستخدام دالة explode() بدلاً من استخدام list(). قد تكون هذه الطريقة أكثر ملاءمة وتوافقًا عبر المنصات.

    المزيد من المعلومات

    بالطبع، سأواصل القسم التالي من المقال:

    بعد التحقق من الإصدار المثبت لـ PHP وتغيير الوظيفة split() إلى explode()، قد تظل المشكلة قائمة. في هذه الحالة، يمكن أن يكون هناك عوامل أخرى تؤثر على تنفيذ الكود على macOS بطريقة مختلفة عن Windows.

    واحدة من الأسباب الشائعة لحدوث مشكلات في تشغيل الكود على macOS هي الفروق في الإعدادات البيئية والتكوين بين النظامين. قد تؤثر اختلافات في المسارات المستخدمة أو الإعدادات الافتراضية للخوادم أو حتى الصلاحيات على تنفيذ الكود بشكل صحيح.

    لذا، يجب التحقق من الأمور التالية:

    1. الصلاحيات والتصاريح: تأكد من أن لديك الصلاحيات الكافية للوصول إلى الملفات وتنفيذ الكود على نظام macOS. في بعض الأحيان، قد تكون هناك اختلافات في تصاريح الملفات بين النظامين، مما يمكن أن يؤدي إلى عدم قدرة PHP على الوصول إلى الملفات المطلوبة.

    2. المسارات والمتغيرات البيئية: تأكد من أن المسارات والمتغيرات البيئية مثل PATH مضبوطة بشكل صحيح على macOS. قد تؤثر الفروق في هذه المتغيرات على قدرة PHP على العثور على الملفات أو الوصول إلى الخوادم بشكل صحيح.

    3. التكوين الخاص بـ PHP: يمكن أن تكون هناك اختلافات في ملفات التكوين الخاصة بـ PHP بين النظامين. تحقق من أن جميع الإعدادات اللازمة مثل مسارات الوحدات الإضافية والتحكم في الأخطاء مضبوطة بشكل صحيح.

    4. تحديثات النظام: تأكد من أن نظام macOS الخاص بك محدث بأحدث التصحيحات والإصدارات. قد تقدم التحديثات الجديدة حلولاً لمشكلات الأداء أو التوافق.

    باختبار الكود على macOS بعد التحقق من هذه النقاط ومقارنته مع سلوكه على Windows، يمكنك تحديد المشكلة بشكل أكبر والبحث عن الحل المناسب لها. في بعض الحالات، قد يتعين عليك اللجوء إلى استشارة المجتمع أو المطورين ذوي الخبرة في منتديات الدعم الفني للحصول على مساعدة إضافية في حل المشكلة.

  • فهم Method Overloading في جافا

    البرنامج الذي قمت بكتابته يعاني من بعض المشاكل في حساب حجم الصندوق وفي فهم مفهوم “Method Overloading” في جافا. لنقم بمراجعة الكود وتصحيحه:

    1. المشكلة الأولى تكمن في أن الطرق volume و vol تعود بقيمة 0.0 لأنه لم يتم تعيين قيم لمتغيرات height، width، و depth في كلا الحالتين. يجب تعيين القيم في طريقتي Dimension التي تأخذ المتغيرات من نوع double.

    2. بالنسبة لسؤالك حول فهم مفهوم “Method Overloading”، يمكنني شرح ذلك لك. في جافا، يُسمح لك بتعريف طرق بنفس الاسم ولكن مع مجموعات مختلفة من المعلمات. عندما تقوم بذلك، تكون الطرق تحتل مساحة في الذاكرة باسمها ويتم استدعاؤها بناءً على المعلمات التي تمررها إليها. وهذا يُعرف بـ “Method Overloading”.

    الآن، دعنا نقوم بتصحيح الكود. قم بتعديله كما يلي:

    java
    package arunjava; public class Sample3 { public static void main(String[] args) { Box25 b1 = new Box25(); Box25 b2 = new Box25(); b1.dimension(25, 32, 65); b2.dimension(25, 45, 62); System.out.println("Volume is " + b1.volume()); System.out.println("Volume is " + b2.volume()); b1.dimension(4, 6, 8); b2.dimension(6, 8, 4); System.out.println("Volume is " + b1.volume()); System.out.println("Volume is " + b2.volume()); } } class Box25 { double height, width, depth; // طريقة لضبط الأبعاد بنوع double public void dimension(double height, double width, double depth) { this.height = height; this.width = width; this.depth = depth; } // طريقة لضبط الأبعاد بنوع int public void dimension(int height, int width, int depth) { this.height = height; this.width = width; this.depth = depth; } // حساب الحجم بنوع double double volume() { return height * depth * width; } // حساب الحجم بنوع int int volume() { return height * depth * width; } }

    بعد التعديلات، يجب أن يكون لديك الآن البرنامج الذي يعمل بشكل صحيح ويحسب الحجم بنجاح بغض النظر عن نوع البيانات. وأيضًا، تم فهم مفهوم “Method Overloading” بشكل صحيح. إذا كان لديك أي أسئلة أخرى، فلا تتردد في طرحها.

    المزيد من المعلومات

    بالطبع، سأوفّر لك المزيد من المعلومات لتعميق فهمك وتعزيز معرفتك بلغة البرمجة جافا ومفهوم “Method Overloading”.

    1. تصحيح الكود:
      في الكود المصحح، قمنا بتغيير أسماء الطرق Dimension إلى dimension لمتابعة التعليمات المتبعة في جافا بشأن تسمية الطرق بالحروف الصغيرة في بداية الكلمة. هذا يعتبر معيارًا جيدًا لتحسين قراءة الكود وصيانته في المستقبل.

    2. التعامل مع الأنواع المختلفة:
      في الكود الأصلي، قمت بتعريف طريقتين منفصلتين لحساب الحجم، إحداها تُعيد قيمة بنوع double والأخرى تُعيد قيمة بنوع int. هذا يُعد مثالًا جيدًا على كيفية تطبيق “Method Overloading” في جافا، حيث يمكنك استخدام نفس اسم الطريقة مع أنواع مختلفة من المعلمات لتوفير مرونة أكبر في استخدام الكود.

    3. تفسير Method Overloading:
      في جافا، يتيح “Method Overloading” لك تعريف طرق بنفس الاسم ولكن مع مجموعات مختلفة من المعلمات. عندما تقوم بذلك، تحتل الطرق مساحة في الذاكرة باسمها ويتم استدعاؤها بناءً على المعلمات التي تمررها إليها. هذا يتيح لك إنشاء واجهات مرنة لتفادي تكرار الكود وتحسين إعادة استخدام الأجزاء المشتركة من البرنامج.

    4. التوثيق والتعليقات:
      يُعتبر وضع توثيق جيد وتعليقات في الكود ممارسة جيدة لضمان فهم الكود بشكل أفضل وتسهيل عملية صيانته في المستقبل. يمكنك إضافة تعليقات لشرح ما تقوم بفعله في كل جزء من الكود، وكذلك لتوثيق الطرق والمتغيرات.

    مع مواصلة تطوير مهاراتك في جافا واستكشاف المفاهيم الأساسية مثل “Method Overloading”، ستكتسب مزيدًا من الثقة والخبرة في البرمجة بلغة جافا. إذا كان لديك أي أسئلة أخرى أو تحتاج إلى مزيد من التوضيح، فلا تتردد في طرحها.

  • حل مشكلة اختلاف مظهر شريط التقدم في تطبيق Android

    الفرق في المظهر بين الشريطين التقدميين قد يكون ناجمًا عن عوامل عدة، ومنها:

    1. نسخة الأندرويد والثيم المستخدم: بعض النسخ القديمة من الأندرويد قد تظهر العناصر بتصاميم مختلفة حتى مع استخدام نفس الثيم. يفضل استخدام أحدث نسخة من الأندرويد واختبار التطبيق على أكثر من جهاز لضمان التوافق.

    2. الثيم والأنماط المخصصة: إذا كان هناك أي تعديلات على الثيم الافتراضي للتطبيق أو تعريف أنماط مخصصة، فقد تؤثر هذه التغييرات على شكل العناصر.

    3. تكوين الشريط التقدمي: ربما يكون هناك اختلاف في كيفية تكوين الشريط التقدمي، مثل الألوان والحجم والحدود والرموز المستخدمة. يمكنك محاولة ضبط هذه العوامل لجعل الشريطين يبدوان متطابقين.

    4. المكتبة المستخدمة: بعض المكتبات الخارجية قد تحدد تصميمًا محددًا للعناصر التي تنشئها، وقد يكون هذا التصميم مختلفًا عن التصميم الافتراضي للأندرويد. يمكن البحث في مستندات المكتبة لمعرفة كيفية تخصيص تصميم العناصر.

    5. تحديد النوع الصحيح للشريط التقدمي: تأكد من استخدام نوع الشريط التقدمي الصحيح، فقد تكون هناك أنواع مختلفة مثل الشريط الدائري والخطي والشريط المتقدم.

    المزيد من المعلومات

    بالطبع، إليك المزيد من المعلومات التي قد تساعد في تحديد سبب الاختلاف في المظهر بين الشريطين التقدميين:

    1. استخدام الثيمات المخصصة: إذا كنت تستخدم ثيمات مخصصة في تطبيقك، فقد تؤثر هذه الثيمات على مظهر العناصر المختلفة في التطبيق. تأكد من أن الثيمات المخصصة لديك تطابق الثيم الافتراضي للتطبيق.

    2. التوجيه الصحيح للعناصر: تأكد من أن الشريط التقدمي الذي تقوم بإنشائه بالكود أو بواسطة ملف XML موجود في نفس الوضعية (orientation) والتوجيه (gravity) مثل الشريط التقدمي الآخر.

    3. استخدام نسخة محدثة من المكتبة: تأكد من استخدام أحدث نسخة من المكتبة الخارجية التي تستخدمها في التطبيق، فقد تحتوي النسخ الأحدث على إصلاحات لمشاكل تتعلق بالمظهر والسلوك.

    4. اختلافات الأجهزة: بعض الأجهزة قد تظهر العناصر بتصاميم مختلفة حتى مع نفس الثيم ونفس الكود. يمكن أن تكون هذه الاختلافات ناتجة عن دقة الشاشة أو إعدادات الثيمات المحلية على الجهاز.

    5. الأخطاء البرمجية: قد تكون هناك أخطاء في كود إنشاء الشريط التقدمي الخاص بك تؤدي إلى تغييرات غير متوقعة في المظهر. يجب التأكد من صحة ودقة الكود الخاص بك.

    6. استخدام المحاكاة الافتراضية: يمكن استخدام المحاكاة الافتراضية في Android Studio لمحاكاة تطبيقك على أجهزة مختلفة ومنصات مختلفة لرؤية كيف يبدو التطبيق على أجهزة مختلفة وتحديد أي اختلافات في المظهر.

  • فارق بين Arrays.stream() و Arrays.asList().stream() في Java

    في عالم لغة البرمجة جافا، يثير استخدام تعبيري “Arrays.stream(array)” و”Arrays.asList(array).stream()” تساؤلات حول الفارق الواضح بينهما، رغم أن الاعتقاد الشائع هو أن هذين التعبيرين يقومان بنفس العملية. إن المشهد البرمجي يتسم بالتفرد والتفاصيل الدقيقة التي يجب فهمها بعمق لتحديد تفوق الأول على الثاني.

    في البداية، يبدو أن كلا التعبيرين يقومان بتحويل المصفوفة إلى تيار (Stream)، ولكن الفارق يكمن في كيفية تعاملهما مع النوع الذي يتم إنشاءه. عند كتابة “Arrays.stream(scores)”، يتم تحويل المصفوفة مباشرة إلى تيار من الأنواع الأساسية (primitives) مثل IntStream. وهذا يعني أنه يمكن استخدام العديد من العمليات المتقدمة مباشرة على هذا التيار دون الحاجة إلى تحويل أخر.

    أما “Arrays.asList(scores).stream()”، فيعتبر تعبيرًا أكثر تعقيدًا. بمجرد استخدام “Arrays.asList(scores)”، يتم إنشاء قائمة (List) والتي تكون من نوع List (أو List حسب السياق). عند استخدام “stream()” على هذه القائمة، يتم إنشاء تيار من أنواع الكائنات (Objects) بدلاً من الأنواع الأساسية. هذا الفارق يمكن أن يؤدي إلى تأثيرات غير متوقعة عند استخدام بعض العمليات الخاصة بتدفقات الأنواع الأساسية.

    من هنا، يظهر السبب وراء عدم عمل الكود الثاني كما هو متوقع. حيث ينتج عنه تيار من نوع Stream بدلاً من Stream أو IntStream. لذا، عند محاولة طباعة العناصر باستخدام “System.out::println” يتم طباعة مرجع إلى الكائن (object reference) بدلاً من قيم العناصر.

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

    المزيد من المعلومات

    في البرمجة بلغة Java، يعتبر الفرق بين Arrays.stream(array) و Arrays.asList(array).stream() مهمًا للغاية ويعود ذلك إلى الفروق في الأنواع التي يتعاملون معها. دعونا نلقي نظرة أعمق على السبب وراء هذا السلوك المختلف.

    أولًا وقبل كل شيء، يقوم Arrays.stream(array) بتحويل المصفوفة إلى تيار من العناصر المباشرة. يتيح لك هذا الأسلوب القيام بعمليات تحويل وتحليل على العناصر بسهولة باستخدام واجهة Stream API المتقدمة. هذا يعني أنك تتعامل مع العناصر نفسها، وليس مع مجرد هيكل البيان (المصفوفة).

    على الجانب الآخر، Arrays.asList(array).stream() يقوم بتحويل المصفوفة إلى قائمة (List) ثم يحصل على تيار من هذه القائمة. لكن هنا يكمن الفارق الرئيسي، وهو أن Arrays.asList() تقوم بإنشاء قائمة واجهة List ثابتة الحجم وتقوم بربط هذه القائمة بالمصفوفة نفسها. وبالتالي، عند تغيير المحتوى في المصفوفة، ستظل القائمة مقيدة بحجم المصفوفة الأصلية.

    في المثال الخاص بك، عند استخدام Arrays.asList(scores).stream()، يتم الحصول على تيار للقائمة المحددة بحجم المصفوفة. ولكن عند استخدام .forEach(System.out::println)، يتم تطبيق الدالة println على القائمة ككل وليس على عناصرها الفردية، وبالتالي تحصل على إخراج غير متوقع يتضمن عنوان الذاكرة الرئيسي للقائمة.

    بالمقابل، Arrays.stream(scores) يأخذ المصفوفة ويقوم بتحويلها إلى تيار من العناصر الفردية، وبالتالي تستطيع تنفيذ .forEach(System.out::println) بطريقة تتيح لك طباعة كل عنصر على حدة.

    لحل هذه المشكلة عند استخدام Arrays.asList()، يمكنك استخدام Arrays.stream() مباشرة على المصفوفة، مما يجعل الشيفرة تعمل كالتالي:

    java
    Arrays.stream(scores) .forEach(System.out::println);

    هذا يضمن أنك تتعامل مع تيار العناصر الفردية بشكل صحيح دون القلق بشأن السلوك غير المتوقع الناتج عن Arrays.asList().

    باختصار، الفرق الرئيسي هو في كيفية تحويل الهيكل والتعامل مع العناصر، وهذا يلعب دورًا هامًا في سلوك الشيفرة والنتائج المتوقعة.

  • فهم استخدام فئات Enum في لغة Java

    في الواقع، يوجد خطأ صغير في تعريف الثوابت في الفئة Enum Constants. يجب أن يكون لديك فاصلة منقوطة (;) بين قيم الثوابت. في الوقت الحالي، يظهر الكود بهذا الشكل:

    java
    public enum Constants { YES("y"), NO("N") private String value; Constants(String value) { this.value = value; } }

    يجب تعديله إلى:

    java
    public enum Constants { YES("y"), NO("N"); private String value; Constants(String value) { this.value = value; } }

    بعد إجراء هذا التصحيح، ستحصل على النتائج المتوقعة عند تشغيل الكود. الفاصلة المنقوطة بين YES(“y”) و NO(“N”) تعتبر مفتاحية لتحديد انتهاء تعريف كل ثابت.

    إضافة إلى ذلك، إذا كنت ترغب في الحصول على القيم Y و N عوضًا عن YES و NO عند استدعاء toString()، يمكنك تغيير دالة toString() في فئة Constants. يمكن تحديدها بالشكل التالي:

    java
    public enum Constants { YES("y"), NO("N"); private String value; Constants(String value) { this.value = value; } @Override public String toString() { return this.value; } }

    بهذه الطريقة، ستحصل على النتائج التي ترغب فيها:

    java
    public class TestConstants { public static void main(String[] args) { System.out.println(Constants.YES.toString()); // سيظهر "y" System.out.println(Constants.NO.toString()); // سيظهر "N" } }

    بهذا الشكل، سيتم استدعاء دالة toString() المعدلة لتعيد القيم المرادة.

    المزيد من المعلومات

    إذا كنت تبحث عن توسيع المعلومات حول كيفية استخدام وفهم فئات Enum في لغة Java، يمكنني توفير مزيد من السياق.

    فئات Enum في Java تسمح لك بتعريف مجموعة محددة من القيم الثابتة. في المثال السابق، فئة Constants هي فئة Enum تحتوي على القيم YES و NO. تستخدم هذه الفئات لتمثيل متغير ذي قيمة محددة تقوم بتعيينها في الوقت الرنان. في هذا السياق، يُظهر Enum Constants كيف يمكن استخدام قيم Enum لتمثيل مفاهيم الثوابت بشكل أكثر وضوحًا وتنظيمًا في الشيفرة.

    تعد فئات Enum في Java أيضًا قوية لأنها توفر أساليب مفيدة مثل values() التي تعيد مصفوفة تحتوي على جميع قيم الثابت في الترتيب الذي تم تعريفه. على سبيل المثال:

    java
    for (Constants constant : Constants.values()) { System.out.println(constant.toString()); }

    ستطبع هذه الحلقة عبر جميع القيم في الفئة Enum Constants، مما يمكنك من فحص جميع القيم بشكل ديناميكي.

    يمكن أن يكون الفهم الجيد لفئات Enum مفيدًا في البرمجة لتحسين الوضوح والصيانة وتحسين أداء الشيفرة.

  • C# Code: Count Word Occurrences in RichTextBox

    في عالم البرمجة باستخدام لغة C#، يُعتبر سؤال العد من المصفوفات أحد التحديات الشائعة التي يواجهها المبتدئون. يظهر ذلك بوضوح في حالتك، حيث تبحث عن كود C# يمكنه عد مرات ظهور كلمة محددة في RichTextBox ومن ثم عرض النتيجة في Label.

    للقيام بذلك، يمكنك استخدام الكود التالي:

    csharp
    // يتم استدعاء هذه الوظيفة لعد الكلمات في RichTextBox وعرض النتيجة في Label private void CountAndDisplayWordOccurrences() { // الكلمة التي تريد عد مرات ظهورها string targetWord = "house"; // النص في RichTextBox string richTextBoxText = richTextBox1.Text; // يتم تقسيم النص إلى مصفوفة من الكلمات باستخدام فراغ كفاصل string[] words = richTextBoxText.Split(' '); // يتم حساب عدد مرات ظهور الكلمة المستهدفة int occurrences = 0; foreach (string word in words) { // يتم تجاوز الفراغات الفارغة if (!string.IsNullOrWhiteSpace(word)) { // يتم تحويل الكلمة إلى حالة صغيرة لضمان المطابقة string normalizedWord = word.ToLower(); // يتم زيادة العدد إذا تم العثور على كلمة مستهدفة if (normalizedWord.Equals(targetWord.ToLower())) { occurrences++; } } } // يتم عرض النتيجة في Label label1.Text = $"عدد مرات ظهور كلمة '{targetWord}' في RichTextBox هو: {occurrences}"; }

    هذا الكود يقوم بعد كم مرة تظهر الكلمة المحددة في RichTextBox ومن ثم يقوم بعرض النتيجة في Label1. يجب استدعاء هذه الوظيفة في المكان المناسب، على سبيل المثال، في استجابة حدث زر أو أي حدث آخر يحفز عملية العد والعرض.

    عند تشغيل التطبيق وإدخال نص في RichTextBox، ستظهر النتيجة في Label1 بشكل تلقائي. يمكنك تعديل الكود حسب احتياجاتك وإضافة المزيد من الطرق لتحسين أداء التطبيق.

    المزيد من المعلومات

    في ما يلي توضيح للكود المزيد من المعلومات، بما في ذلك التفاصيل حول كيفية عمل الكود وبعض التفسيرات حول الخطوات المستخدمة:

    1. تحديد الكلمة المستهدفة:
      في البداية، يتم تعريف الكلمة المستهدفة التي ترغب في عد مرات ظهورها في RichTextBox. في الكود المقدم، تم استخدام الكلمة “house” كمثال.

      csharp
      string targetWord = "house";
    2. استخراج نص RichTextBox:
      يتم استخراج نص RichTextBox باستخدام richTextBox1.Text وتخزينه في متغير نصي.

      csharp
      string richTextBoxText = richTextBox1.Text;
    3. تقسيم النص إلى مصفوفة من الكلمات:
      يتم تقسيم النص إلى مصفوفة من الكلمات باستخدام فراغ كفاصل بين الكلمات.

      csharp
      string[] words = richTextBoxText.Split(' ');
    4. عد الظهور:
      يتم استخدام حلقة foreach لتحليل كل كلمة في المصفوفة وزيادة العدد عند العثور على الكلمة المستهدفة.

      csharp
      foreach (string word in words) { // ... (تفاصيل الكود) }
    5. تحسين الكفاءة:
      يتم تحسين الكود لتجاوز الفراغات الفارغة وضمان المطابقة بغض النظر عن حالة الحروف (أي أنها غير حساسة لحالة الأحرف).

      csharp
      if (!string.IsNullOrWhiteSpace(word)) { // ... (تفاصيل الكود) }
    6. عرض النتيجة في Label:
      يتم عرض نتيجة العد في Label1 باستخدام تنسيق نص مناسب.

      csharp
      label1.Text = $"عدد مرات ظهور كلمة '{targetWord}' في RichTextBox هو: {occurrences}";

    هذا الكود يمثل مثالًا بسيطًا على كيفية القيام بعملية العد في C# باستخدام RichTextBox و Label. يمكن تخصيص الكود وتطويره بحسب احتياجات المشروع الخاص بك، مثل إضافة التعامل مع علامات الترقيم أو توسيعه لدعم البحث في الكلمات بشكل دقيق أكبر.

  • مصطلحات أساسية في البرمجة

    ما هي المصطلحات التي تتكر كثيرا عند كل مبرمج ؟

    كما هو الحال بالنسبة لأي مهارة ، من الضروري تعلم المصطلحات الأساسية المستخدمة في هذا المجال قبل الانتقال إلى وضع الممارسة بشكل كامل.حيث انه تساعدك معرفة المصطلحات على فهم مجالك بشكل أفضل وأسرع. إذا كنت تتعلم البرمجة أو كنت حديث العهد بعلوم الكمبيوتر ، فنحن نقدم لك بعض المصطلحات الهامة في علوم الكمبيوتر والبرمجة والتي يمكن أن تكون بمثابة دليل التعلم الخاص بك 101

    🔸 المتغيرات Variables

    المتغيرات هي عبارة عن مواقع في الذاكرة تخزن البيانات بشكل مؤقت ويمكن تغيير قيمتها أثناء تنفيذ البرنامج. فمثلا يمكن للبرنامج أن يُخزن في المتغير Var1 القيمة 1 ثم يخزن القيمة 2، والقيمة التي سترجع من المتغير
    هي آخر قيمة تم تخزينها.

    ‏🔸 الثوابت Constant

    هي عبارة عن مواقع في الذاكرة تُخزن فيها البيانات بشكل مؤقت ولكن لا يمكن تغيير قيمتها أثناء تنفيذ البرنامج. فمثلا يُمكن للبرنامج أن يخزن في الثابت Con1 القيمة 1 لكنه لا يستطيع تغييرها وإن حاول تغييرها فإن المترجم يُرسل رسالة خاطئة أثناء تنفيذ البرنامج.

    ‏🔸 الحدث Event

    هو عبارة عن فعل يقوم به المستخدم للبرنامج المصمم كالنقر على أداة “الزر Button” أو تغيير نص في مربع نص “Text Box” أو حتى تحريك الماوس أو الفأرة ويرافقه تنفيذ الإجراء المتعلق به.

    ‏🔸 الإجراء Procedure

    هو عملية أو عمليات ينفذها البرنامج عند تحقق حدث معين كالنقر على أداة الزر “Button” في البرنامج.

    🔸 الكائن object

    قد يكون تعريف لكود أداة تحكم مثل الزر “Button” ويكون له عدة إجراءات.

    🔸 الكود أو “الشفرة البرمجية” Code

    هو عبارة عن أوامر برمجية تعطى للكمبيوتر على شكل نص تُكتب بواسطة لغة من لغات البرمجة كلغة “الفيجوال بيسك” والتي يفسرها مترجم يسمى ليفهمها الكمبيوتر ولكل وحدة نمطية أو أداة تحكم كود
    خاص به في الفيجوال بيسك. وقد يكون الكود مقسما إلى ‏كائنات “Objects”،
    ودالات أو توابع “Functions”، وإجراءات “Procedures”، و أحداث “Events”.

    🔸 المترجم Compiler

    هو أداة تقوم بترجمة البرنامج دفعة واحدة إلى لغة الآلة وتُنتج ملف تنفيذى بامتداد “exe –> executable file”، يعمل مباشرة بدون وسيط، وهذا يعنى أن لغات البرمجة المترجمة تقوم بتحويل النص البرمجى المكتوب بها إلى لغة الآلة مباشرة وتُنتج ملف تنفيذي، ‏

    🔸 المفسر Interpreter

    هو أداة تقوم بترجمة البرنامج إلى لغة الآلة سطر سطر، وهذا يعنى أن البرنامج المكتوب بلغات برمجة تفسيرية يتم ترجمته إلى نص برمجى وسيط بلغة منخفضة المستوى ( لغة وسيطة )، ويُنتَج ملف للبرنامج وبداخله هذا الكود, لذا لا يمكن تنفيذه على هذه الصورة مباشرة حيث يحتاج إلى ‏برنامج آخر يقوم بترجمة الأكواد المكتوبة بداخله إلى لغة الآلة، هذا البرنامج يسمى “المفسر”، ففي لغة الــJava مثلاً يُترجم النص البرمجى إلى كود وسيط يسمى “Byte code”، وتُنتج ملف بامتداد jar، هذا الكود البرمجي لا يُمكن تشغيله وتنفيذه على أي جهاز مباشرة حيث يحتاج إلى ما ‏يسمى “آلة جافا الافتراضية”، والتى تعمل كمفسر للبرنامج الناتج حتى يتم تنفيذه.
    تطبيقات الدوت نت أيضا تعتمد على نفس الأسلوب بحيث يتم تحويل الكود البرمجى المكتوب بلغة من لغات الدوت
    إلى لغة وسيطة منخفضة المستوى تسمى لغة “مايكروسوفت Visual Basic نت”.

  • Visual Studio Code من أفضل إضافات فيجوال ستديو كود على الاطلاق

    أصبح محرر الأكواد Visual Studio Code من أشهر المحررات استخداماً بين المطورين، فهو محرر مجاني ومتعدد المنصات قامت شركة Microsoft بتطويره. إليكم بعض أفضل الإضافات التي بإمكانك إضافتها لمحرر الأكواد هذا:


    1. Settings Sync
    يعد Settings Sync واحدًا من أفضل البرامج التي يجب أن يمتلكها كل مستخدم ويجب أن يكون له امتداد VS Code. السبب في ذلك هو أن Settings Sync ستقوم بمزامنة جميع إعدادات VS Code الخاصة بك، وربط المفاتيح، والقوالب، وقائمة اللواحق مع GitHub. هذا يلغي الحاجة إلى إعادة تثبيت كافة الملحقات والثيمات وإعادة تكوينها في كل مرة تقوم فيها بتثبيت VS Code أو عند استخدام VS Code على أنظمة متعددة.
    أفضل شيء عن Settings Sync هو أنه من السهل جدا للاستخدام. في الواقع، بعد ربطه بـ GitHub، يمكنك تحميل أو مزامنة الإعدادات باستخدام اختصار لوحة مفاتيح واحد فقط. إذا لزم الأمر، يمكنك تهيئته لتحميل أو تنزيل الإعدادات تلقائيًا.


    2. Live Server
    إذا كنت من مطوري الويب أو مجرد شخص يعمل مع تقنيات الويب مثل CSS، و JavaScript، و PHP، و HTML، وما إلى ذلك، فستكون خدمة Live Server ضرورية بالنسبة لك.
    ما يفعله Live Server هو أنه سيقوم بإنشاء خادم محلي داخل VS Code ويتيح لك فتح صفحات التطوير بنقرتين فقط في أي متصفح من اختيارك. لا حاجة للذهاب يدويا إلى موقع الملف وفتحه من هناك. ناهيك، عندما يكون Live Server نشطاً وعاملاً، ستتم إعادة تحميل الصفحة تلقائياً في كل مرة تقوم فيها بحفظ المستند. لذلك، إذا كنت من مطوري الويب، فأنصحك أن تجرّبها.


    3. Open in Browser
    كما يمكنك أن تعرف من الاسم نفسه، يسمح لك إضافة Open in Browser بفتح أي ملفات مدعومة في المتصفح الافتراضي أو في المتصفح الذي تختاره بنقرة واحدة. على الرغم من أنها ليست قوية أو غنية كامتداد Live Server، إلا أن Open in Browser يساعدك على معاينة مستند الويب بسرعة دون إنشاء مثيل للخادم في الخلفية. كما أنه خفيف الحجم إلى حد ما ويفعل ما ستفعله دون حدوث أي خلل.


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


    5. Color Info
    إضافة Color Info عبارة عن ملحق بسيط للغاية، لكنه فعال يعرض معاينة كبيرة ومعلومات إضافية حول الألوان التي تستخدمها في CSS. في حال كنت تتساءل، نعم، يظهر رمز VS معاينة صغيرة من اللون الذي تستخدمه. ومع ذلك ، فإنه ليس من المفيد، لا سيما في ثيمات الظلام. تتضمن المعلومات الإضافية التي تظهرها Color Info على سبيل المثال لا الحصر قيم HSL وقيم RGB وقيمة alpha والعديد من معاينات الألوان، إلخ. معلومات الألوان تدعم CSS و SASS و SCSS و LESS.


    6. Todo Highlighter
    هل سبق لك أن أردت إجراء بعض التغييرات أو التحديث أو إضافة شفرة ولكن نسيت؟ ثبّت Todo Highlighter ولا يجب أن تمر بهذه المحنة مجددًا. إذا سبق لك استخدام ميزة Todo في أي بيئة تطوير متكاملة (IDE)، تعمل إضافة Todo Highlighter في VS Code بنفس الطريقة. كل ما عليك فعله هو إضافة Todo كما تفعل عادة وستكون مميزة من الشفرة العادية وتلفت انتباهك إليها.


    7. Regex Preview
    بصرف النظر عن عدد المرات التي أستخدم فيها التعبيرات العادية، لا أزال أرتبك معها. بصراحة، لا أستطيع كتابة التعبير العادي الخاص بي بشكل صحيح. أحد أسباب ذلك هو أنني لا أستطيع التحقق من تعامدي على الفور. وهنا يأتي دور Regex Preview لتشغيله. بعد تثبيت Regex Preview ، سيعرض Regex Preview جنباً إلى جنب. إذا كنت تلعب مع الكثير من التعبيرات العادية، فقم بتجربة Regex Preview ومعرفة ما إذا كانت تناسب احتياجاتك.


    8. Git Lens
    يحتوي VS Code على دعم مدمج مناسب لـ Git ويجعل استخدامه سهلاً. تلتقط Git Lens هذه الشقّة وتعزز قدرات Git المدمجة في VS Code. ما يجعل Git Lens خاص هو أنه يسهل استكشاف المستودعات واستكشاف سجل الملفات وتصور تأليف الشفرة باستخدام شرح Git Lens وعدسة الكود، يسلط الضوء على التغييرات الحديثة، إجراء البحث، مقارنة الفروع المختلفة، إلخ.. إذا كنت تستخدم Git على نطاق واسع ثم جرب Git Lens، إنه يجعل عالماً مختلفاً في سير عملك.


    9. Path Intellisense
    في تطوير الويب، من الشائع جدًا ربط أنواع مختلفة من الملفات مثل CSS و JS في مستندات مثل HTML و PHP. على الرغم من أنه ليس من الصعب كتابة مسار الملف، إلا أن القليل من المساعدة في شكل الإكمال التلقائي يمكن أن تقطع شوطا طويلا. Path Intellisense يفعل ذلك بالضبط. بمعنى، إنه يُكمل تلقائياً اسم الملف ومساره بحيث لا تضطر إلى التفكير مرتين في مسار الملف أو اسمه.


    10. CSS Peek
    يحتوي رمز VS على ميزة أنيقة تسمى Go To Definition و Go To Type Definition التي تأخذك إلى تعريف الأسلوب أو نوع الرمز. يأخذ CSS Peek الأمر إلى أعلى ويظهر لك معاينة للغة CSS تستخدم في وثيقتك. يعد هذا مفيداً تماماً حيث لا يلزمك مغادرة المستند الحالي لمجرد معرفة ما تفعله بفئة أو معرف CSS المحدد. إذا كنت مصمم ويب، فإن CSS Peek هي واحدة من تلك الإضافات التي لا بد من امتلاكها لـ VS Code.


    11. Markdown All in One
    يتيح لك Markdown All in One إنشاء ملفات readme أو نص منسق وتحريره بسرعة باستخدام Markdown مباشرة داخل رمز VS. أفضل شيء عن Markdown All in One هو أنه يمكن أن تظهر معاينة حية ويكون الاستخدام بديهي جداً.


    12. Bookmarks
    إذا كنت تكتب الكثير من التعليمات البرمجية، فمن الطبيعي أن تنتقل بين بعض الأجزاء المهمة مراراً وتكراراً. على الرغم من أن رمز VS يحتوي على أرقام خطية، إلا أنه يجعل حياتك أسهل إذا كنت تستطيع تمييز هذه الخطوط المهمة. تعمل إضافة Bookmarks بالضبط بحيث يمكنك بسهولة تمييز المواضع المهمة والتنقل بينها بسرعة وسهولة.


    13. Bracket Pair Colorize
    كما يمكنك أن تستخلص من الاسم نفسه، يجعل Color Color Pair Colorizer من السهل تحديد الأقواس المتطابقة. ليس فقط أنها ستطابق الأقواس مع الألوان بل ستسلط الضوء أيضاً على كتلة الشفرة بأكملها داخل الأقواس حتى تعرف مكانك. عندما تقوم بإنشاء حلقات متداخلة أو إذا كانت عبارات، فسيساعدك Bracket Pair Colorizer كثيراً.


    14 – VSCode Great Icons
    إضافة تقوم بتنصيبها لتقوم بدورها في تغيير شكل الأيقونات الخاصة بالملفات الموجودة على يسار المحرر.


    15 – Auto Rename Tag
    تساعد هذه الإضافة مبرمجين لغة HTML تحديداً وذلك من خلال تطبيق أي تغييرات على أسماء الوسوم وتطبيقها على كل من وسم الفتح والإغلاق تلقائياً.


    16 – Autoprefixer
    تقوم هذه الإضافة بإضافة دعم المتصفحات الأخرى للكود الذي كتبته بلغة الـ CSS وذلك من خلال اكتشاف الأسطر التي تحتاج إلى هذه العملية من أجل أن تعمل بشكل سليم في المتصفحات الأخرى.


    17 – Auto Close Tag
    تساعد هذه الإضافة الأشخاص الذين يعملون بلغة البرمجة HTML حيث تقوم بإغلاق الوسم الذي تقوم بفتحه تلقائياً دون الحاجة لإغلاقه بالطريقة اليدوية التي تكون في بعض الأحيان مزعجة على كل مبرمج.


    18 – One Monokai Theme
    تتيح لك هذه الإضافة إمكانية تغيير ألوان المحرر بالكامل، بما في ذلك ألوان الأكواد.


    19 – Apache conf
    تساعدك هذه الإضافة على تلوين ملفات الـ htaccess الخاصة بسيرفرات الـ Apache حيث يظهر هذا النوع من الأكواد على شكل نص عادي باللون الرمادي وجاءت هذه الإضافة لجعله شبيه بباقي الأكواد من ناحية التلوين.


    20 – CSS Formatter
    إن الوضيفة الأساسية لهذه الإضافة هي عملية ترتيب أكواد الـ CSS من خلال إضافة مسافات لجعل الكود أجمل وقابل للقراءة.


    21 – PHP Formatter
    تعمل هذه الإضافة نفس عمل الإضافة التي قبلها، حيث تقوم بترتيب الأكواد المكتوبة بلغة البرمجة PHP من أجل جعلها تبدو أجمل وقابلة للقراءة.


    22 – JS & CSS Minifier
    تقوم هذه الأداة بضغط ملفات الـ CSS والـ JavaScript لجعلها أصغر حجماً لكي يتم إستخدامها في مشاريعك التي تحتاج فيها تحميل ملفات أصغر حجماً من ما هي عليه.


    23 – VScode-icons
    واحدة من الأدوات التي تضيف لمسة رائعة إلى برنامج visual studio code، نعلم أن إضافة الأيقونات لا تحدث فرقاً كبيراً، لكن إضافة مجموعة من الألوان والأيقونات الصغيرة اللطيفة إلى واجهة المحرّر الذي تستخدمه تضفي بعض الراحة على بيئة العمل وتساعد على التنقّل بين الملفات والمجلدات بشكل أسرع.


    24 – Icon Fonts
    إذا كنت تستخدم الرموز والأيقونات في عملك البرمجي، فإنّ أداة Icon Fonts تقدّم مجموعة متنوّعة من الأيقونات، بما في ذلك حزمة أيقونات Font Awesome v5 الشهيرة، أي لن تحتاج إلى البحث في موقع Font Awesome لاستخراج الرمز الخاص بأيقونة معينة، وأيضاً بالنسبة لأولئك الذين لا يستخدمون VS Code، تتوفّر هذه الإضافة في كل من Atom و Sublime Text.


    25 – Remote – SSH
    تتيح لك أداة Remote SSH إمكانية استخدام أي جهاز بعيد مع خادم SSH كبيئة تطوير، تساعد هذه الأداة في اكتشاف الأخطاء وإصلاحها في مجموعة متنوعة من السيناريوهات، لن تحتاج كذلك إلى إضافة الكود الأساسي على جهازك، فالأداة تقوم بتشغيل الأوامر والإضافات الأخرى مباشرةً على الجهاز الآخر بعد الاتصال عن بعد.


    26 – JavaScript Code Snippets
    بينما يشتمل VSCode على JS IntelliSense باعتبارها أداة مدمجة مع التطبيق، فإن JS Code Snippets تعزّز هذه التجربة عن طريق إضافة عدد كبير من الميّزات الرائعة والمفيدة، وقد قام بتثبيت هذه الإضافة أكثر من 5 ملايين مستخدم وتملك تصنيف 5 من 5 على متجر ملحقات VSCode، تدعم هذه الإضافة كلاَ من JS و TypeScript و JS React و TS React و HTML و Vue.


    27 – ESLint
    كانت JSLint أول أداة Linter خاصّة بلغة JavaScript ولكن أصبحت تلك الأداة قديمة ولم تدعم تطورات JavaScript بعد ES5 كما أنها تحتوي على العديد من العيوب والأخطاء، الآن ظهرت أداة ESLint وهي نسخة مطوّرة مع المزيد من الميّزات الرائعة، هذه الأداة ببساطة تقوم بتحليل الكود البرمجي باستعمال مجموعة من القواعد لتقديم اقتراحات تهدف إلى تحسين الكود.


    28 – Peacock
    هي أداة رائعة ولطيفة تتيح لك تغيير لون بيئة العمل على برنامج Visual Studio Code، بحيث يمكنك بسرعة تحديد واجهة العمل أو المشروع الذي قمت بالانتقال منه للتو، تعتبر الأداة مثالية عندما يكون لديك مشاريع متعددة على VS Code أو تستخدم VS Live Share وتريد الوصول إلى المحرّر الذي تعمل عليه بسرعة.


    29 – SQL Server
    من الأدوات والإضافات المفيدة بالنسبة لجميع المبرمجين الذين يتعاملون مع قواعد البيانات SQL، تقوم الأداة بمساعدتك في تجربة الاستفسارات Queries والتحقّق من صحتها قبل إدراجها في البرنامج الذي تعمل عليه، ويمكن اعتبار هذه الأداة من أفضل الأدوات التي يحتاجها جميع المبرمجين الذين يعملون في تطوير المواقع التي تعتمد على قواعد البيانات حيث تسمح بإدارة قواعد البيانات وتحويل محرّر VS Code إلى سيرفر قواعد بيانات متكامل.


    30 – Debugger for Chrome
    يساعد Debugger for Chrome المطورين الذين يفضلون استكشاف أخطاء الشيفرة في أثناء وقت التشغيل. هناك عدد من المزايا المفيدة، بما فيها القدرة على ضبط نقاط توقف (breakpoints) في الشيفرة ونقاط المراقبة والطرفية. بالإضافة إلى ذلك، يمكنك اختيار تشغيل نسخة من متصفح Chrome من داخل VS Code أو إلحاق المصحّح بنسخة من المتصفح تعمل بصورة منفصلة.


    31 – React Native Tools
    أداة React هي من أكثر مكتبات JavaScript المثيرة للاهتمام، لدرجة أن محرِّر ووردبريس الجديد Gutenberg مؤسس عليه. إضافة React Native Tools تعتبر ضرورية بالنسبة لك. فهي تعطيك القدرة على تشغيل أوامر React Native وتساعدك على اكتشاف أخطاء البرامج.


    32 – One Dark Pro
    حين تتعامل مع الشيفرة، من المفيد أن يكون لديك محرّر ذو مظهر جذاب ومريح في آنٍ واحد. الشيفرة قد تستمر لساعات متواصلة. يُحضر One Dark Pro قالب “One Dark” الشهير من محرّر Atom إلى VS Code. وبذلك تحصل على هذا المظهر المألوف الرائع مع مميزات تطبيق Microsoft مفتوح المصدر.


    33 – Quokka
    إضافة Quokka تساعدك لعمل Debugging بشكل سهل ومباشر على الكود الذي تكتبه. فهي تُظهر لك نتيجة المتغيرات وخرج الدوال. فهذه الإضافة سهلت الإعدادت وتشتغل مع JSX و TypeScript.


    34 – Faker
    أداة Faker هي أداة تتيح لك إضافة بيانات تجريبية –وهمية- بشكل سريع، فتستطيتع توليد الأسماء، العنواين، الصور، أرقام الهواتف، وكذلك جمل إنشائية بشكل عشوائي. وتحتوي على تصنيفات متعددة مع إمكانية التحكم في البيانات حسب الحاجة.


    35 – HTML Boilerplate
    إضافة HTML Boilerplate ستختصر الوقت أثناء كتابة وسم head و body، فبعد تثبيت هذه الإضافة يكفيك كتابة html والضغط على زر Tab وسيتم توليد هيكلة لصفحة HTML كاملة.


    36 – Color Info
    إضافة صغيرة تمكنك من عرض المعلومات الخاصة بالألوان في CSS. يكفي فقط تمرر الفأرة على رمز الكود الخاص باللون لتظهر لك نافذة بها كافة المعلومات المتعلقة بهذا اللون.


    37 – SVG Viewer
    ستتيح لك هذه الإضافة فتح صيغ الصور SVG بشكل مباشر بدون الاستعانة ببرنامج خارجي. مع إمكانية تحويلها إلى صيغة PNG وإنشاء رابط URI لها.


    38 – Minify
    إضافة مهمة ستحتاجها أثناء عملية الإنتاج، فهي تمكنك من إنتاج ملفات مصغرة minify لملفاتك، هذه الإضافة تدعم JavaScript، CSS، وكذلك HTML.


    39 – Change Case
    يُخول لك VSCode تحويل النصوص من النصوص ذات الأحرف الصغيرة lowercase إلى الأحرف الكبيرة uppercase أو العكس. لكنه لا يتوفر على أي تحويل متقدم للنصوص، لكن إضافة Change Case سيمكنك عمل تغييرات أكثر على النصوص، كعمل camelCase، kebab-case، snake_case وغيرها من الأنماط الأخرى.


    40 – Regex Previewer
    إضافة رائعة للتعابير القياسية Regex، فهي تمكنك من تجربة التعبير القياسي بشكل مباشر على النصوص، مع تحديد كل النصوص التي ينطبق عليها هذا التعبير القياسي Regex .

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر