اذهب إلى المحتوى

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. وعليكم السلام ورحمة الله وبركاته . نظام التشغيل هو الطبقة الوسيطة بين الهاردوير والسوفتوير وهو المتحكم الاساسى والرئيسى فى الهاردوير الخاص بالجهاز . فهو من يقوم بتوصيل الاوامر من اجهزة الادخال الى اجهزة الاخراج و الى ايضا الهاردوير . فعند الضغط على زر الفأرة او حتى على زر من ازرار لوحة المفاتيح فانه يقوم بارسال هذا الامر الى البرنامج او السوفتير المطلوب ويخبره بحدث الضغط او تحريك الفأرة ثم مثلا يرسل البرنامج الامر الى نظام التشغيل مثلا بطباعة الحرف على الشاشة او تحريك الفأرة ثم ياخذ نظام التشغيل الامر ويرسله الى كارت الشاشة مثلا او اللى الهاردوير المطلوب ويظهر الحرف او يتم المهمة المطلوبة . اما عملك كمبرمج فهو يعتمد على الوظيفة التى تقوم بها . فان مهندسين نظم التشغيل والكومبايلرز هم من اقوى و اذكى المهندسين فهو من يقوم بهندسة نظام التشغيل كاملا و التحكم فى الهاردوير . اما مهندسين البرمجيات فانت فقط تقوم بكتابة البرنامج على حسب اللغه التى تعمل عليها والكومبايلر هو المسؤل عن تحويل الكود الخاص بك الى اوامر يستطيع نظام التشغيل فهمها والتعامل معها ومن ثم نظام التشغيل هو من يقوم باعطاء هذه الاوامر الى الهاردوير الصحيح . وبدون نظام التشغيل فان الهاردوير لا قيمة له فسيصبح عبارة عن قطعة لا قيمة لها فنظام التشغيل هو مثل العقل المسئول عن الجسم من تحريكه الى التحكم فيه بشكل كامل . ويمكنك قراءة هذه المقالات لتتعرف اكثر عن نظم التشغيل .
  3. أنت تقوم بكتابة الأوامر البرمجية لنظام التشغيل بشكل عام، و نظام التشغيل هو الوسيط بين البرمجيات والهاردوير في الحاسوب، يتعامل مع إدارة الموارد مثل المعالج والذاكرة والتخزين، ويوفر واجهة لتشغيل التطبيقات وتنفيذ البرامج، فعندما تقوم بكتابة برنامج، فإنك تكتبه بطريقة تفاعلية مع نظام التشغيل، و عندما تقوم بتشغيل التطبيق، يتم إرسال أوامر من قبل نظام التشغيل إلى الهاردوير لتنفيذها. عندما تقوم بعمل event معين في التطبيق، فإن البرنامج يرسل إشارة (signal) إلى نظام التشغيل ليتعامل معها، بعدها يمكن لنظام التشغيل أن يتفاعل مع هذا الحدث على النحو المناسب، مثل تحديث واجهة المستخدم أو التفاعل مع الأجهزة الخارجية، إذا لم يكن هناك نظام تشغيل، فإن البرامج والتطبيقات لن تتمكن من العمل. يعتبر نظام التشغيل جزءا أساسيا من عملية تشغيل البرامج على الحاسوب. و في السنوات الأولى لتطوير أنظمة التشغيل، كانت تعتمد على واجهات نصية وتشتغل بالأوامر، حيث يتم التفاعل مع النظام عبر إدخال الأوامر مباشرة في سطر الأوامر، في ذلك الوقت كانت التطبيقات محدودة وغير متطورة مقارنة بما نراه اليوم. وكانت غالبا ما تكون تطبيقات مخصصة لأغراض محددة مثل معالجة النصوص أو إدارة البيانات و فقط. و يمكنك أن تطلع أكثر على مهام أنظمة التشغيل من خلال المقالة التالية:
  4. اليوم
  5. السلام عليكم , هل أنا كمبرمج أقوم بكتابة الأوامر البرمجية لنظام التشغيل أم للهاردوير مباشرة و لماذا يتدخل نظام التشغيل بين الكومبايلر و الهاردوير هل نظام التشغيل هو من يعطي الأمر بتشغيل البرنامج أو التطبيق المثبت عندي على الحاسوب عندما أقوم بالضغط عليه, و هل عندما أقوم بعمل event معين في التطبيق يقوم بإرسال أمر إلى نظام التشغيل و نظام التشغيل يقوم بإرسالها إلى الهاردوير وهل لو لم يكن هناك نظام تشغيل لما اشتغلت البرامج و التطبيقات
  6. هل Godot أفضل من Unity من ناحية تطوير الألعاب؟
  7. المشكلة مع مرور الوقت ستنسى كيفية كتابة الكود لوحدك و في حالة حدث خلل في أدوات الذكاء الإصطناعي ستجد صعوبة في العودة لما كنت عليه، يمكنك إستخدامه بين الحين و الآخر بشرط أن تكون قادرا على فهم كل سطر تقوم بكتابته، و أيضا فليس دائما تكون النتيجة من الذكاء الإصطناعي صحيحة، فهو يستخدم إصدارات قديمة لذا يجب عليك تحديثها لما يتناسب مع مشروعك.
  8. السلام عليكم انا اعتمد على الذكاء الاصطناعي في كتابة الكود بناءاً على تفكيري فهل هذا جيد ؟ مع العلم انني افهم كل سطر يكتبه !
  9. ربما كوّنت فكرة بعد قراءتك للمقالات السابقة حول أساسيات جافا سكريبت عما يمكن لهذه اللغة فعله، وكيفية استعمالها مع بقية تقنيات الويب، وكيف تبدو ميزاتها من منظور عام. لهذا نحاول في هذا المقال الاقتراب قليلًا من اﻷساسيات ونتعلم المزيد حول العمل مع المتغيرات وهي الكتل البرمجية اﻷبسط في جافا سكريبت. ننصحك قبل المتابعة في قراءة هذا المقال بالاطلاع على بعض المقالات السابقة مثل: أساسيات علوم الحاسوب. أساسيات HTML. أساسيات عمل CSS. الأدوات التي تحتاجها سنطلب إليك مع تقدم مقالنا كتابة بعض أسطر الشيفرة لنختر فهمك لما شرحناه. فإن كنت تستخدم متصفح حاسوب مكتبي، ستجد أن أفضل مكان لكتابة الشيفرة هو طرفية جافا سكريبت في المتصفح Web Console التي تمكّنك من التفاعل مع صفحة الويب عن طريق تنفيذ تعبيرات جافا سكريبت في سياق الصفحة (اضغط اﻷزرار "Ctrl" + "Shift" + "K" معًا لفتحها في متصفح فايرفوكس). المتغيّرات في جافا سكريبت يُعرّف المتغير بأنه حاوية تضم قيمة قد تكون عددًا يمكن أن نستخدمه لاحقًا في عملية جمع، أو سلسلة نصية يمكن أن نستخدمها كجزء من جملة. أمثلة عن المتغيرات لنلق نظرة على هذا المثال البسيط: <button id="button_A">Press me</button> <h3 id="heading_A"></h3> const buttonA = document.querySelector("#button_A"); const headingA = document.querySelector("#heading_A"); buttonA.onclick = () => { const name = prompt("What is your name?"); alert(`Hello ${name}, nice to see you!`); headingA.textContent = `Welcome ${name}`; }; See the Pen js-variables 1 by Hsoub Academy (@HsoubAcademy) on CodePen. عند النقر على الزر في هذا المثال سينفذ المتصفح بعض الشيفرة. إذ يعرض السطر اﻷول صندوقًا على الشاشة يطلب من المستخدم إدخال اسمه ومن ثم يخزّن الاسم كقيمة ضمن متغيّر. ويعرض السطر الثاني رسالة ترحيب تتضمن اسم المستخدم وقد أُخذ من المتغيّر في السطر السابق. أما السطر الثالث فيعرض الاسم على الصفحة. كيف سيكون الوضع دون متغيّرات؟ لكي نفهم الفائدة الكبيرة من استخدام المتغيرات، دعونا نفكّر بطريقة لكتابة شيفرة المثال السابق دون استعمال المتغيرات. سينتهي بنا اﻷمر إلى شيفرة من هذا القبيل: <button id="button_B">Press me</button> <h3 id="heading_B"></h3> const buttonB = document.querySelector("#button_B"); const headingB = document.querySelector("#heading_B"); buttonB.onclick = () => { alert(`Hello ${prompt("What is your name?")}, nice to see you!`); headingB.textContent = `Welcome ${prompt("What is your name?")}`; }; See the Pen js-variables 2 by Hsoub Academy (@HsoubAcademy) on CodePen. ربما لن تدرك جيدًا الصياغة التي استخدمناها حاليًا، لكن لا بد وأن تكون قد استوعبت الفكرة. فإن لم يكن لديك متغيرات، ستسأل المستخدم كل مرة عن اسمه إن احتجته في الشيفرة. إذًا من المنطقي استخدام المتغيرات، وستألفها مع تقدمك في تعلم جافا سكريبت. ومن المهم أن تعرف أنك قادر على تخزين أي شيء تقريبًا في المتغيرات وليس فقط النصوص والأرقام. فقد تضم المتغيرات بنى مركّبة من البيانات وحتى دالة بأكملها، وهذا ما ستتعلمه خلال تعلم لغة جافا سكريبت. ملاحظة: لقد أشرنا أن المتغيرات تضم قيمًا أي أن المتغيرات ليست قيمًا بحد ذاتها بل حاويات للقيم. يمكن أن تشبهها بعلبة من الكرتون تضع اﻷغراض بداخلها. التصريح عن المتغيرات لا بد من إنشاء المتغير قبل استخدامه، ندعو هذه العملية "تصريحًا عن المتغيّر". وكي نفعل ذلك في جافا سكريبت، نكتب الكلمة let يليها الاسم الذي تريده للمتغير كما يلي: let myName; let myAge; أنشأنا في الشيفرة السابقة متغيرين وأسميناهما myName و myAge. جرّب أن تكتب هذين السطرين في طرفية المتصفح ثم صرّح عن متغير أو أكثر وسمِّهما بالاسم الذي تريده. ملاحظة: يجب أن تنتهي جميع التعليمات في جافا سكريبت بفاصلة منقوطة (;)، فقد تعمل شيفرتك إن أهملتها سطرًا واحدًا لكنها لن تعمل إن حاولت كتابة عدة أسطر من الشيفرة دونها. لهذا تعود على استخدامها في نهاية كل تعليمة. بإمكانك اختبار وجود المتغيّر في بيئة التنفيذ أم لا بكتابة اسمه: myName; myAge; لا قيم حاليًا للمتغيرين السابقين، بل يمثلان حاويتان فارغتان. وعندما تضغط الزر "Enter" في الطرفية ستحصل على النتيجة undefined، لكن إن لم يكن المتغير موجودًا فستحصل على رسالة خطأ. جرّب أن تكتب: name; ملاحظة: لا تخلط بين متغيّر مصرّح عنه ولم تُسند له قيمة، ومتغير غير موجود أصلًا فهما أمران مختلفان تمامًا. فلو عدنا لمثال الصندوق، سيكون عدم وجود المتغير عدم وجود الصندوق، أما التصريح عن المتغير وعدم إسناد قيمة له فيعني أن الصندوق موجود لكنه فارغ. تهيئة المتغيّر حالما تصرح عن المتغير يمكنك تهيئته بإسناد قيمة له. نفّذ ذلك بكتابة اسم المتغيّر تليه إشارة المساواة (=) ثم القيمة التي تريدها. إليك مثالًا: myName = "Chris"; myAge = 37; جرّب أن تعود إلى طرفية المتصفح واكتب الشيفرة السابقة، ومن المفترض أن ترى بعدها كيف تعيد الطرفية القيمة التي أسندتها إلى المتغير. ونذكرّك بإمكانية عرض قيمة المتغير بمجرد كتابة اسمه في الطرفية. جرّب مجددًا الشيفرة التالية: myName; myAge; باﻹمكان أيضًا التصريح عن المتغير وتهيئته في نفس الوقت كالتالي: let myDog = "Rover"; وهذا ما ستفعله غالبًا لأنها طريقة أسرع. ملاحظة حول المتغيرات قد تصادف أيضًا طريقة مختلفة في التصريح عن المتغيرات وذلك باستخدام التعليمة var كما يلي: var myName; var myAge; لقد كانت هذه الطريقة هي الطريقة الوحيدة للتصريح عن المتغيرات في بدايات جافا سكريبت، وقد وجدت أنها طريقة مربكة أثناء الممارسة لهذا استبدلت لاحقًا بالتعليمة letفي النسخ الأحدث من جافا سكريبت، وهي تعليمة ﻹنشاء المتغيرات بشكل مختلف نوعًا ما عن var وتحل بعض المشاكل التي نتجت عنها. سنشرح تاليًا بعض نقاط الاختلاف بين التعليمتين لكننا لن نخوض بها جميعًا في الوقت الراهن، بل ستكتشف ذلك أثناء تقدمك في تعلم جافا سكريبت. لو كتبنا برنامج جافا سكريبت مكوّن من عدة أسطر تصرّح وتهيئ متغيرًا، بإمكانك استخدام التعليمة var للتصريح عن المتغيّر حتى بعد تهيئته وسيعمل! إليك مثالًا: myName = "Chris"; //تصريح وتهيئة متحول function logName() { console.log(myName); } logName(); var myName; //التصريح عن نفس المتحول من جديد ملاحظة: لن يعمل هذا المثال إن كتبت اﻷسطر السابقة سطرًا سطرًا في الطرفية، بل فقط إن نفذتها معًا في صفحة ويب. تعمل الشيفرة السابقة بسبب عملية تقديم أو رفع الكائن hoisting، لكنها لن تنفع مع التعليمة let. جرّب تبديل var بالتعليمة let في الشيفرة السابقة وستخفق العملية مع رسالة خطأ، وهذا أمر جيد، لأن تصريح متغير بعد تهيئته سابقًا مربك كثيرًا ويولد شيفرة صعبة الفهم. ومن ناحية ثانية، يمكن التصريح عن المتحول نفسه عدة مرات باستخدام var لكنك لن تستطيع ذلك مع let.ستعمل مثلًا الشيفرة التالية: var myName = "Chris"; var myName = "Bob"; لكن الشيفرة التالية ستعطي خطأً في السطر الثاني: let myName = "Chris"; let myName = "Bob"; وعليك أن تعيد كتابة الشيفرة لتصبح بالشكل: let myName = "Chris"; myName = "Bob"; ونؤكد أن وجود letهو قرار لغوي معقول، فلا معنى لتعريف المتغيرات مرة أخرى لأنها تربك القارئ. لهذه اﻷسباب وغيرها ننصحك باستخدام let في الشيفرة إلا إن كنت ستكتب صراحة شيفرة تدعم المتصفحات القديمة لأن جميع المتصفحات الحديثة تدعمها منذ عام 2015. ملاحظة: إن كنت ستجرّب الشيفرة التالية ضمن طرفية المتصفح فانسخها والصقها ككتلة واحدة. وفي متصفح كروم هنالك ميزة تسمح لك بإعادة تصريح المتغيرات باستخدام let وconst. > let myName = "Chris"; let myName = "Bob"; // SyntaxError: Identifier 'myName' has already been declared إن أدخلت الشيفرة سطرًا سطرًا: ستحصل على الخطأ > let myName = "Chris"; > let myName = "Bob"; // As two inputs: both succeed إن أدخلتهما معًا ستنجح العملية تحديث متغيّر بمجرّد أن تهيئ المتغير يمكنك تغيير قيمته مجددًا (تحديثها) بإسناد قيمة أخرى له. جرّب إدخال الأسطر التالية في طرفية المتصفح: Name = "Bob"; myAge = 40; نظرة إلى قواعد تسمية المتغيرات يمكنك أن تسمي متغيرك بأي اسم تريد مع وجود بعض القيود. وعمومًا التزم باستخدام المحارف اللاتينية (0-9, a-z, A-Z) ومحرف الشرطة السفلية (_). لا تستخدم محارف أخرى لأنها قد تسبب أخطاءً أو تجعل الشيفرة صعبة الفهم للقارئين حول العالم. لا تستخدم الشرطة السفلية في بداية اسم المتغيّر لأنه أسلوب مستخدم في بعض بنى جافا سكريبت وله دلالة خاصة. لا تستخدم أرقامًا في بداية الاسم، فهذا غير مسموح ويسبب خطأ. من العادات الآمنة أن تلتزم بحرف صغير في بداية الاسم، وإن أردت ضم عدة كلمات لتعيين اسم المتغير اكتب أحرف الكلمة اﻷولى جمعها بأحرف صغيرة ثم اجعل بدايات الكلمات التالية بأحرف كبيرة. وهذا ما استخدمناه في مقالنا حتى اﻵن. اجعل أسماء المتغيرات واضحة وتصف البيانات التي تخزّنها، ولا تستخدم أحرفًا مفردة أو عبارات طويلة. انتبه إلى أن المتغيرات حساسة لحالة اﻷحرف فالمتغير myAge مختلف عن myage. نقطة أخيرة: تجنب استخدام كلمات جافا سكريبت المحجوزة (التعليمات) كأسماء متغيرات مثل var و function و letو for، فلن يميزها المتصفح كمتغيرات وستظهر اﻷخطاء مباشرة. ملاحظة: إليك قائمة بالكلمات المحجوزة التي لا ينبغي استخدامها كأسماء متغيرات. وإليك بعض اﻷمثلة عن التسمية الجيدة للمتغيرات: age myAge init initialColor finalOutputValue audio1 audio2 وأمثلة عن التسمية السيئة: 1 a _12 myage MYAGE var Document skjfndskjfnbdskjfb thisisareallylongvariablenameman جرّب أن تسمي بعض المتغيرات وفقًا للنقاط التي ناقشناها سابقًا. أنواع المتغيرات توجد عدة أنواع للبيانات التي يمكن أن نخزنها ضمن المتغيرات، وسنناقشها باختصار في هذا القسم ونتعمق بها في مقالات لاحقة. لهذا سنلقي نظرة على أول نوعين. اﻷعداد بإمكانك تخزين اﻷعداد ضمن المتغيرات كاﻷعداد الصحيحة مثل (30) أو الأعداد العشرية مثل (2.234) وتُدعى أيضًا (أعداد عائمة float أو أعداد ذات فاصلة عائمة). ولا حاجة للتصريح عن نوع المتغير في جافا سكريبت على عكس العديد من لغات البرمجة اﻷخرى. وعندما تُخزّن أعدادًا ضمن المتغير لا داعي لإحاطة العدد بعلامتي تنصيص. let myAge = 17; النصوص (السلاسل النصية) السلاسل النصية هي مقاطع من نصوص، وعندما تخزّنها ضمن متغيّر لا بد من إحاطتها بعلامتي تنصيص مفردتين '' أو مزدوجتين "". فإن لم تفعل ذلك، تحاول جافا سكريبت تفسيرها كأسماء لمتغيرات أخرى. let dolphinGoodbye = "So long and thanks for all the fish"; القيم المنطقية وهي إحدى القيمتين true أو false( صحيح أو خاطئ). وتستخدمان عادة في اختبار تحقق شرط ما، ثم تنفيذ شيفرة بناءً على نتيجة الشرط. إليك مثالًا: let iAmAlive = true; لكن ما ستراه في الواقع شيفرة كهذه: let test = 6 < 3; وقد استخدم العامل (<) لاختبار إن كان الرقم 6 أصغر من 3 ثم خُزنت النتيجة false في المتغيّر. سترى ذلك بتفاصيل أكثر لاحقًا. المصفوفات تُعرّف المصفوفة بأنها كائن في جافا سكريبت يضم عدة قيم تفصل بينها فاصلة , ضمن قوسين مرّبعين []. جرّب إدخال الأسطر التالية في الطرفية: let myNameArray = ["Chris", "Bob", "Jim"]; let myNumberArray = [10, 15, 40]; بمجرّد أن تعرّف المصفوفات، تستطيع الوصول إلى أي قيمة من القيم المخزنة ضمنها باﻹشارة إلى موقعها. جرّب ما يلي: myNameArray[0]; //'Chris' تعيد myNumberArray[2]; // 40 تعيد تحدد اﻷقواس المربعة بعد اسم المصفوفة ترتيب القيمة الموافق لموقعها في المصفوفة، وانتبه إلى أن المصفوفات في جافا سكريبت تبدأ من الصفر. الكائنات تمثل الكائنات في لغات البرمجة بنية من الشيفرة تنمذج شيئًا في الواقع. فقد تنمذج كائنًا بسيطًا مثل صندوق يتضمن معلومات مثل طوله وعرضه وارتفاعه، أو قد يمثل الكائن شخصًا ويتضمن اسمه وطوله ووزنه واللغات التي يتكلمها وكيف ستقول "مرحبًا" له وهكذا. جرّب الشيفرة التالية في الطرفية: let dog = { name: "Spot", breed: "Dalmatian" }; وكي تسترجع المعلومات المخزنة في كائن، يمكنك استخدام الصياغة التالية: dog.name; لن نشرح أكثر عن الكائنات هنا، بل سنترك اﻷمر لمقالات أخرى. التحديد التلقائي للنوع تُحدد جافا سكريبت النوع تلقائيًا dynamically typed language ويعني ذلك أنك لن تحتاج إلى تحديد نوع البيانات التي تخزنها (أعداد، سلاسل نصية، مصفوفات) في متغير على عكس لغات أخرى. فإن صرحت عن متغير وأسندت إليه قيمة ضمن إشارتي تنصيص سيفهم المتصفح أن المتغير هو سلسلة نصية. let myString = "Hello"; وحتى لو كان ما داخل إشارتي التنصيص مجرد أرقام سيبقى نوع المتغير نصيًا فانتبه إلى ذلك: let myNumber = "500"; // المتغير من النوع النصي هنا typeof myNumber; myNumber = 500; // اﻵن يصبح المتغير عددًا typeof myNumber; جرّب أن تدخل الأسطر اﻷربعة السابقة في الطرفية سطرًا تلو اﻵخر وراقب النتيجة. لاحظ أننا نستخدم عامل خاص هو typeofيعيد نوع المتغيّر الذي تذكره بعده. فعندما استُدعي لأول مرة أعاد القيمة string لأن المتغير myNumber حتى لحظة كتابته كان نصيًا، لكن عندما استدعيته في المرة الثانية إعادة القيمة number. الثوابت في جافا سكريبت يمكن التصريح عن الثوابت constants في جافا سكريبت كما تصرّح عن المتغيرات لكن باستخدام التعليمة const مع بعض الاستثناءات: عليك تهيئة الثابت عندما تعرّفه. لا يمكن أن تسند لها قيمة أخرى بعد تهيئتها. إذ يمكنك مثلًا التصريح عن المتغير باستخدام letدون أن تهيئه: let count; لكن إن حاولت أن تفعل ذلك باستخدام const سترى رسالة خطأ: const count; يمكنك بعد التصريح عن متغير باستخدام let أن تهيئه في خطوة منفصلة (تُدعى بعملية إعادة اﻹسناد re-assigning): let count = 1; count = 2; لكن إن حاولت ذلك عند استخدام const سترى رسالة خطأ أيضًا: const count = 1; count = 2; وعلى الرغم من أن الثوابت في جافا سكريبت تشير دائمًا إلى نفس القيمة إلا أنه يمكن تغيير محتوى هذه الثوابت في بعض اﻷنواع مثل الكائنات. إليك مثالًا: const bird = { species: "Kestrel" }; console.log(bird.species); // "Kestrel" بإمكانك تحديث أو إضافة أو إزالة خاصيات من كائن حتى لو كان مصرّحًا عنه باستخدام const، فحتى لو تغير المحتوى في هذه الحالة، فسوف يشير الثابت دائمًا إلى نفس الكائن. bird.species = "Striated Caracara"; console.log(bird.species); // "Striated Caracara" متى نستخدم الثوابت والمتغيرات؟ لماذا نستخدم const إن لم تكن تفعل الكثير موازنة بالتعليمة let؟ لكن الواقع يقول أنها ذات فائدة كبيرة. فلو اطلع أي قارئ على شيفرة عُرّف فيها ثابت باستخدام const سيعرف بالتأكيد أن هذه القيمة لن تتغير لاحقًا وسيرتبط اسم هذا الثابت بقيمة ثابتة دائمًا. نتبنى في سلسلة مقالاتنا القاعدة التالية بخصوص let و const: استخدم const عندما تستطيع و let عندما يجب عليك ذلك. أي إن كنت تستطيع إسناد قيمة للمتغير عند التصريح عنه ولن تحتاج لتغييرها فصرّح عنه كثابت وإلا صرّح عنه كمتغير. الخلاصة تعرفنا في هذا المقال على المتغيرات والثوابت في لغة جافا سكريبت وأصبحت تمتلك معرفة لا بأس بها حول إنشائها واستخدامها، وسنكمل في مقالات أخرى تفصيل أنواع هذه المتغيرات وطرق استخدامها والتعامل معها. ترجمة -وبتصرف- لمقال Storing the information you need-Variables
  10. كحد أدنى يجب إتمام 4 مسارات كاملةً ثم تستطيع التقدم للإختبار والإمتحان بها فقط وليس كامل الدورة، ويتم التقدم للإختبار مرة واحدة فقط والحصول على الشهادة مرة واحدة. لكن لا أنصحك بدراسة 4 مسارات فقط، فالشهادة ليست مهمة المهم هي مهاراتك البرمجية، وبالتالي من الأفضل إنهاء كامل مسارات الدورة. ستجد تفصيل هنا:
  11. وعليكم السلام لا انه ليس مقتصر فقط بنظام mac حيث انه يمكنك استخدامه في Unix/Linux ايضا وحتى في windows ولكن مع بعض الاختلافات الطفيفة في طريقة الاستخدام وهذا الامر هو عبارة عن اداة تقوم بتتبع مسار الحزم عبر الانترنت من جهازك لجهاز اخر ويمكنك استخدامه في نظامي mac و Unix/Linux كالتالي: افتح ال Terminal اكتب الأمر التالي في ال Terminal واضغط على Enter traceroute [عنوان الويب أو عنوان IP] تضع مكان [عنوان الويب أو عنوان IP] العنوان الذي تريد تتبع مساره للتوضيح : عنوان الويب مثل google.com ال IP مثل 172.217.7.206 اما بالنسبة لنظام التشغيل ويندوز فأنه كالتالي افتح Command Prompt اكتب الأمر التالي في Command Prompt واضغط على Enter tracert [عنوان الويب أو عنوان IP] اذا في النهاية وباختصار لاحظ ان الامر traceroute يستخدم مع mac و Unix/Linux اما بالنسبة للويندوز فاننا نستخدم الامر tracert وبكلا الحالتين سنحصل على نفس النتيجة و بالتوفيق لك ...
  12. السلام عليكم اي هو الامر Traceroute الا بيكتب في النافذ الكمبيوتر وهل هو خاصه بنظام الMac
  13. مرحبا , في حال تطوير برنامج ديسك توب فلا يوجد خوف من تلك النقطة لأن البيانات تكون مخزنة في كل جهاز على حدى و ليس على سيرفر . و من أشهر قواعد البيانات المستخدمة في ذلك السياق هي قاعدة بيانات sqLite و هي شائعة الإستعمال في تطبيقات الديسكتوب و تطبيقات الهاتف أيضا . ___ في حال ما إذا كانت البيانات يتم تسجيلها على سيرفر و لا يريد المطور أن يكون وصول لتلك البيانات فمن الممكن تسجيل البيانات encrypted او hashed و يكون المفتاح الخاص لأسترجاع البيانات مع صاحب المشروع .
  14. هل يمكناني ان اختبر كل وحده لحالها ولا لازم كلها مع بعض
  15. ذلك ممكن من خلال مكتبة PHP Desktop والفكرة الخاصة بها هي تشغيل المشروع من خلال محرك chromium أي تشغيل التطبيق في واجهة تشبه تطبيقات سطح المكتب لكنها تعتمد على المحرك الخاص بالمتصفح، فكر بالأمر على أنه مثل إطار Electrone.js الخاص بجافاسكريبت. ستجد تفصيل هنا: https://github.com/cztomczak/phpdesktop وتوجد طريقة أخرى وهي عن طريق منصة todesktop لكنها ليست مجانية إذا أردت نشر التطبيق. https://www.todesktop.com/works-with/laravel
  16. تم إزالة أمر "next export" في إصدارات Next.js الحديثة، وعليك استخدام "output: export" في ملف next.config.js. module.exports = { reactStrictMode: true, output: 'export', }; ثم تشغيل أمر npm run build https://nextjs.org/docs/pages/building-your-application/deploying/static-exports
  17. السلام عليكم ورحمة الله وبركاته. هل يمكن تحويل مشروع لارافيل الى تطبيق سطح مكتب يعمل على انظمة التشغيل لينكس وماك وايضا ويندوز.؟ وهل تطبيق سطح المكتب هذا يعمل بنفس كفاءة تطبيق الويب؟
  18. البارحة
  19. ليس هناك مشكلة إذا قمت بالتسجيل من الهاتف ومحاولة تسجيل الدخول من خلال الحاسوب فيجب أن أن يتم تسجيل الدخول بدون أي مشكلة لذلك حاول التأكد من كلمة المرور مرة أخرى وإذا لم تستطع فتح الحساب يمكنك تغيير كلمة المرور من خلال الضغط على " فقدت كلمة المرور " وفي النهاية إذا أحتجت مساعدة بخصوص ذلك الأمر يمكنك التحدث مع مركز المساعدة وسيتم حل المشكلة من خلال هذا الرابط https://support.academy.hsoub.com/conversations
  20. عنصر الـ Target يشير إلى العنصر الذي تم تنفيذ حدث عليه، أي عنصر DOM الذي بادر الحدث، مثل النقر أو الضغط على مفتاح أو تغيير قيمة. ونصل إلى عنصر الـ Target من خلال خاصية event.target داخل معالج الحدث، والأمر بحاجة إلى توضيح بالكود: لنفترض أن لدينا زرًا مع معالج حدث onclick: function handleClick(event) { // سيُشير event.target إلى عنصر الزر الذي تم النقر عليه console.log(event.target.textContent); } عند النقر على الزر، سيُطبع النص الموجود داخل الزر على شاشة التوجيه. وعنصر الـ Target لا يتغير أثناء عملية التدفق (bubbling) و الالتقاط (capturing)، ونستطيع الوصول إلى عنصر الـ Target من أي معالج حدث لحدث معين، سواء كان على العنصر نفسه أو على أحد أسلافه. ونستفيد من ذلك بتطبيق منطق معين على العنصر الذي تم الحدث عليه مثل التالي: function handleMouseOver(event) { event.target.style.backgroundColor = "red"; } function handleMouseOut(event) { event.target.style.backgroundColor = ""; }
  21. العنصر Target هو العنصر الذي سيتم تطبيق حدث ما عليه. يستخدم العنصر Target عادة مع أحداث مثل click أو submit حتى يتم تحديد العنصر المستهدف الذي سيتم تطبيق الحدث عليه. عندما يحدث حدث على عنصر مثل النقر على زر، فإن العنصر المستهدف سيكون الزر نفسه. مثل function handleClick(event) { console.log(event.target); } button.addEventListener('click', handleClick); فالعنصر target يمكنك من معرفة العنصر الذي تم النقر عليه أو تقديم النموذج منه بالتحديد. ويفضل الإطلاع على الإجابات التالية للمزيد من التفاصيل
  22. ما هو العنصر Target في لغة جافاسكريبت
  23. تمام الله يعطيك العافية مشي الحال . بس أنا سجلت من التلفون و عم أحول أفتح الحساب من الحاسوب لكن عم بقلي كلمة المرور خاطئة
  24. قمت بتحميل كامل مجلد vendor داخل موقع ولايزال يظهر خطا
  25. متى بالتحديد لا ندري، لكن قد تكون هنالك دروة في المستقبل، إلى حين ذلك توجد العديد من المقالات التي تتحدث عن برمجة الألعاب يمكنك تصفحها وقراءتها والاستفادة من المعلومات التي تحتويها من هنا: صناعة الألعاب ويمكنك أن تصبح مبرمج ألعاب من خلال تعلمك للغتي بايثون أو جافا سكريبت وتوجد مسارات لتعلم هاتين اللغتين في الأكاديمية، يمكنك تصفح هذه المقالة للفائدة:
  1. عرض المزيد
×
×
  • أضف...