-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
يمكنك استخدام الدالة isEqual من المكتبة Lodash بعد تنصيبها وتضمينها بالشكل التالي: _.isEqual(object, {}); حيث أن object هو الكائن الذي تريد اختباره، و الوسيط الثاني هو كائن فارغ كما يمكن تحويل الكائن لنص ثم اختباره مع نتيجة تحويل كائن فارغ لنص من خلال الدالة JSON.encode JSON.encode(obj)===JSON.encode({}) يوجد حلول أخرى حسب البيئة التي تستخدمها مثلاً في Node استخدم isDeepStrictEqual , ودالة equals في Angular..
-
ما فائدة الشرط الثاني منطقياً في الاستعلام؟ أرجو إعطاء مثال برأيي إضافة الشرط الثاني برمجيا لعبارة SQL $sql="SELECT * FROM books where id = ?"; if ($Uid) $sql .= "AND Uid=?" هكذا يصبح Uid اختياري بالشرط حسب إن أدخله المستخدم أم لا. وسوف تعدل الشيفرة أيضاً في bind_param وتمرير عدد متغيرات كما أسلفت <?php if (isset($Uid)) { $sql="SELECT * FROM books where id = ? AND Uid=? " ; $stmt = $con->prepare($sql); $stmt->bind_param("ss",$id,$Uid); }else { $sql="SELECT * FROM books where id = ?" ; $stmt = $con->prepare($sql); $stmt->bind_param("s",$id); }
- 7 اجابة
-
- 1
-
ما ينقص ملفك هو تصدير المتغير الثابت من خلال تعليمة export لتستطيع استخدامه خارج ملفه الأصلي export const REQUEST_SENT_SUCCESSFULLY = "We got your request." ثم سيعمل إن رغبت بتضمين قيمة واحدة يمكن استخدام named import import {REQUEST_SENT_SUCCESSFULLY } from "./constants"; console.log(REQUEST_SENT_SUCCESSFULLY); يمكنك أيضا تجميع المتغيرات الثابتة في كائن واحد وتصديره وحده فقط ثم الوصول لخصائصه نقوم ببناء الغرض من خلال freez لكي لا يتم تعديله module.exports = Object.freeze({ REQUEST_SENT_SUCCESSFULLY: "We got your request.", }); import ConstantsList from './constants'; console.log(ConstantsList.REQUEST_SENT_SUCCESSFULLY)
-
لاحظي هذا الشرط، أن لن يتم تنفيذ ما بداخل الدالة مالم يكن نوع الطلب POST وفيها تعريف المتغير form بالتالي في حال كان نوع الطلبية غير POST سيتم تخطي الشرط و جزء تعريف المتغير form و عمل return مباشرة مع قيمة فارغة فيه الحل لتجنب الخطأ هو إعطاء قيمة أولية للمتغير form قبل الشرط، أو إسناد القيمة في عبارة else بعد الشرط قبل عمل return مع التأكد أن استمارة إرسال البيانات نوعها method = post def user_login(request): form = Login_Form() # هنا if request.method == 'POST': #.. else: # هنا أو form = Login_Form() return render(request, 'user/login.html',{ 'form':form }) ملاحظة: عبارة else في برنامجك موجودة لكنها ليست بنفس محاذاة تعليمة if مما سبب الخطأ
-
هل المشكلة في توسيط عرض الموقع ضمن webview؟ حاولت البحث عن Android Webview - Webpage should fit the device screen لكي يملأ العرض بطريقة جيدة ووصلت لبعض التعليمات التي تحدد طريقة العرض. WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true); browser.setPadding(0, 0, 0, 0); browser.setInitialScale(1); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true); browser.getSettings().setJavaScriptEnabled(true); browser.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN)
-
يوجد أيضاً حزمة مفيدة، بحيث تمكنك من تحديد نسبة العشوائية، مثلاً إن أردت 60% من القيم أن تكون True و الباقي Fasle يمكنك الاعتماد عليها. الحزمة PyProbs الصنف Probability الدالة Prob نمرر لها النسبة لعملية الفرز، و عدد العينات from PyProbs import Probability as pr >>> pr.Prob('50%') False >>> pr.Prob('50%', num=5) [True, False, False, True, False]
-
طالما قمت بتضمين جيكويري فاستعملها لأنها أسهل. طالما سؤالك عن تعديل على العنصر لماذا لم ترفق جزء التعديل،. يوجد طريقة أسهل بالتعامل مع الجداول ابحث عن html table insertRow
- 5 اجابة
-
- 1
-
يوجد ويدجت اسمها Expanded widget يمكنها ملئ الحاوية الأب لها بدون ترك فراغ، ثم يمكن بناء باقي العرض بالنسبة لها مثل أخذ العرض 100% والطول .. قم بتغليف المكون الذي يسبب مشكلة بها، والحاوية الداخلية تصبح SizedBox وتعطيها القياسات المناسبة يوجد الحزمة expandable package يمكن أن تفيدك
- 3 اجابة
-
- 1
-
ملاحظة إضافية، لا تقم أبداً بمقارنة القيمة NaN مع نفسها لأنها القيمة الوحيدة في جافاسكربت التي لاتساوي نفسها مثال: var a = NaN; a !== a // true a != a // true a == a // false أي في حال كان لديك قيمة تريد اختبار إن كانت NaN لا تقارنها معها، بل استخدم الدالة isNaN
-
كما قال المدرب حسان، الدورة تعتبر مدخل لعلوم الحاسب، تشرح جميع الزوايا التي يجب أن يأخذ فكرة عنها أي شخص يعمل في المجال، وبرأيي ضرورية لشخص ليس لديه خبرة في التعامل مع الحاسوب و استخدام أنظمة التشغيل وقواعد البيانات و الخوارزميات. وهي مقدمة لباقي المجالات و الدورات للدخول بها مع قاعدة معرفية جيدة ومحترمة تسهل فهم و التعامل مع التخصصات المختلفة حاولت الإجابة عن سؤال مشابه من قبل: فريق أكاديمية حسوب (الدعم الفني) هم من يتابعون خريجي الأكاديمية ويقدمون لهم الدعم و المشورة لإيجاد فرص العمل
- 2 اجابة
-
- 1
-
في الزاوية السفلية اليمني للمحرر يوجد مثل تبويب يقول plan text اضغط عليها ثم حدد نمط الملف ك HTML أو تأكد من حفظ الملف وله لاحقة مناسبة html
- 6 اجابة
-
- 1
-
الفكرة من تسجيل وقت تنفيذ البرنامج هو عمل قراءتين للزمن الحقيقي من بداية و نهاية البرنامج ثم حساب الفرق بينهم ويكون هذا وقت تنفيذ البرنامج from datetime import datetime # البداية start=datetime.now() #Statements برنامجك # 1 تعليمات برمجية # 2 # 3 # النهاية stop=datetime.now() print('Time: ', stop - start) اعتمدنا على الحزمة datetime والدالة now التي تعيد الزمن اللحظي وقت استدعائها، وطالما أن خطوات البرنامج بين تعليمتي حساب الوقت start و stop تأخذ بعض الوقت، فيكون هذا هو وقت تنفيذ البرنامج
- 3 اجابة
-
- 1
-
من الجيد أنك بدأت بلغة سي بلس cpp فهي لغة جيدة لتعلم الأساسيات في البرمجة.. أحسنت. فهمت رغبتك في تطوير تطبيقات سطح المكتب، يمكنك عمل برامج سطح مكتب بلغة cpp و الاعتماد على IDE بيئة التطوير المتكاملة Visual Studio وهذا مختلف عن vs code محرر الأكواد الأقل (لا يدعم بشكل افتراضي كل ما يدعمه Visual Studio) ولاحظ، يوجد فرق بين لغة برمجة و أدوات المطورين، و إطارات العمل و أنظمة التشغيل.. لغات البرمجة: سي بلس cpp, جافا، PHP و Dart وغيرها إطار عمل: (تقنية أو أكثر تعطي ميزات أكبر من غيرها) Flutter وهي تعمل بلغة البرمجة Dart تساعدك على إمشاء تطبيقات لعدد من أنظمة التشغيل من مشروع برمجي واحد / نفس الشيفرة البرمجية، لأنه بطبيعة الحال يوجد بعض اللغات والتقنيات المحدودة.. أنظمة التشغيل: ويندوز، لينكس، أندرويد كل منها له متطلبات مختلفة للتطبيقات لتعمل عليه أدوات المطورين: أندرويد استديو android studio وهو أيضا بيئة تطوير متكاملة IDE خاص بتطوير تطبيقات أندرويد ويدعم أيضا Flutter يمكنك تنصيب البرنامج على ويندوز وبمساعدته تكتب برامج أخرى لأندرويد أو فلاتر و تشغل التطبيقات من خلاله visual studio و android studio برامج ضخمة و لها متطلبات تشغيل عالية على الحاسوب، أما vs code خفيف و يمكنك استخدامه بدلاً عنهم حيث يحوي إضافات Extensions تزيد من قدراته اللغات الرئيسية لأنظمة أندرويد هي JAVA - Kotlin تدعى Native Language.
- 1 جواب
-
- 1
-
قمت بتجريب تشغيل عدة دروس مختلفة وكانت تعمل بدون مشكلة. هل يظهر أي رسالة خطأ على مشغل الفيديو؟ حاول استخدام متصفح آخر اضغط على Ctrl + shift + r لتحميل الصفحة مع حذف الكاش
-
في الشيفرة الحالية أنت تقوم بتأخير تنفيذ sayHello ل 3 ثواني، أي عملية إسناد مستمع النقر للزر هو من يتأخر، اذا ضغط على الزر بعد تحديث الصفحة قبل مرور 3 ثواني لن يحصل استجابة لأنه حينها لا يوجد شيء اسمه click للزر لاحقاً عند النقر على الزر سيتم تحقيق الاستجابة مباشرة للدالة callback وهي الطباعة و زيادة العداد i التصحيح للبرنامج: sayHello مسؤولة فقط عن الطباعة وزيادة i عند النقر على الزر نستدعي setTimeout التي بدورها تستدعي sayHello بعد تأخير 3 ثواني <!DOCTYPE html> <html> <body> <button id="demo"> btn </button> <script> let arr = ["ahmed", "mohamed", "mahmoud", "ali", "omar"] const btn = document.querySelector('button') let i = 0; function sayHello() { console.log(`Hello I'm ${arr[i]}`); i++; if (i == 4) i = 0; } btn.addEventListener('click', () => { setTimeout(sayHello, 3000); // sayHello(); }) setTimeout(sayHello, 3000); </script> </body> </html> /****** مثال آخر *******/ لكي تجعل البرنامج يطبع قيمة الاسم بشكل مختلف كلما قام المستخدم بالنقر على الزر يمكنك تعديل البرنامج كالتالي: نقوم بتعرف مستمع حدث النقر مباشرة تعريف المتغير i خارج الدالة لكي لا يتم إسناد قيمة 0 لها كل مرة نتأكد أن i لن تخرج من حدود المصفوفة الدالة مسؤولة عن تغيير قيمة i استخدمت setInterval ليتم تنفيذها بشكل متكرر كل 3 ثواني و تغيير رقم الشخص / الاسم <!DOCTYPE html> <html> <body> <button id="demo"> btn </button> <script> let arr = ["ahmed1", "ahmed2", "ahmed3", "ahmed4", "ahmed5"] const btn = document.querySelector('button') let i = 0; btn.addEventListener('click', () => { console.log(`Hello I'm ${arr[i]}`) }) function sayHelloToNextPerson() { i++ if (i == 4) i = 0; } setInterval(sayHelloToNextPerson, 3000) </script> </body> </html>
-
يمكنك ببساطة رفع جميع الملفات في مجلد المشروع المحلي من على حاسوبك عبر لوحة التحكم (يمكن كملف مضغوط) ثم نعمل فك ضغط الملف و ننقل الملفات بنفس الهيكلية (ترتريبها في مجلدات بين بعضها بدون تعديل) لمجلد public_html بالنسبة لقواعد البينات، تتوجه لمدير قواعد MySQL ثم تقوم بإنشاء قاعدة بيانات و مستخدم له صلاحيات عليها، ثم تضع هذه البيانات في شيفرات PHP في ملف الاتصال مع قواعد البيانات ليتم الاتصال مع قواعد البيانات الجديدة على الاستضافة. كما يمكن عمل export للبيانات من mysql php myadmin مثلاً من الحاسب، ثم في الاستضفاة في نفس البرنامج تعمل import لها في حال كنت تريد نفس البيانات كلمات مفتاحية للبحث لتعتمد على نفسك: upload php mysql html code to free host website
-
يمكنك استخدام أي عنصر HTML لتحقيق عملية فتح الصفحات بدون ظهور رابط الويب في الجزء السفلي من الصفحة لأنه مقتصر على استخدام الوسم a و الخاصية href منه. بذلك يمكنك استعمال الوسم p مثلاً ونستخدم جافاسكربت في عملية فتح الروابط بالدالة window.open <p onclick="window.open('https://academy.hsoub.com/')"> Hsoub Academy</p> مثال آخر على استخدما الأزرار <button onclick="window.open('https://academy.hsoub.com/')">Hsoub Academy</button> يمكن استخدام أي عنصر آخر بنفس الطريقة
- 4 اجابة
-
- 1
-
يمكن تصدير كل مكون بنفسه كما الإجابة السابقة، أو تصدير عدة مكونات بتعليمة واحدة مع تجميع هذه المكونات يمكن تصدير مكون أو أكثر بالشكل named export التالي: export { Component1, Component2, Component3 } أو export { Component1, Component2, Component3} أي لديك تصبح: export { Slide, Container, }
-
أنت تضع مكون أو أكثر من Route ضمن عنصر div بشكل أولاد مباشرين له، وهنا الخطأ، حيث أن المسار لا يتم عمل render له مباشرة، بل يجب أن يكون ابن لعنصر Routes function App() { return ( <div> <Routes> <Route path = "/"> <div>Home Page</div> </Route> <Route path = "/about"> <div>About Us Page</div> </Route> </Routes> </div> ); }
-
أرجو مشاركة الاستعلام والأجزاء المرتبطة معه في الشيفرة، حيث أن الخطأ هو تمرير معامل bool بدل ناتج استعلام ل fetch، بعد عمل استعلام select نقوم بتخزين نتيجة تنفيذ الاستعلام في متغير سوف يحوي عدة نتائج (عدة سطور من الجدول) ثم نمرره ل fetch_assoc لجلب القيم على شكل مصفوفة ترابطية لنستطيع إصلاح المشكلة، نحتاج للملف