-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
قدمت إجابة لنفس السؤال باستخدام حلقة for عادية يمكنك الإطلاع عليها في نهاية الإجابة حسب كيفية طباعة البيانات نرى أننا نريد رقم العنصر وهو ما يعرض بعد item أي: item #1 وهذا كان بطباعة قيمة عداد الحلقة i$ الذي يزيد مع كل تكرار.. إذا كانت مصفوفة PHP عادية ومفاتيحها أرقام، يمكننا الوصول لدليل العنصر عن طريق index مباشرة لأنه رقم، أما في حال مصفوفة ترابطية و دليلها نص، فلن تنفع. foreach($array as $key=>$value) { echo $key; // 0 1 2 3 ... // do stuff } key سيحمل قيمة مفتاج العنصر أو ترقيمه في المصفوفة Value ستحمل لكل تكرار قيمة العنصر الذي تكراره key والتي لدينا هي مصفوفة أخرى <?php $class_array = .. foreach($class_array as $key=>$sub_array) { echo .. item key foreach($sub_array as $key=>$value) { echo ??? $value } } يمكننا تخصيص عداد مستقل ليساعدنا في ترقيم العناصر في حال مصفوفة فيها دليل index العنصر ليس رقم بالشكل: <?php $index = 0; foreach($data as $key=>$val) { echo "Index is $index\n"; // طباعة العداد تعطينا رقم العنصر $index++; // لا ننسى زيادة قيمة العداد } و معلومة أخرى، عند التكرار على مصفوفة سيتم إنشاء مؤشر داخلي فيها يمكن قراءة قيمته باستخدام دالة curreny التي تعيد رقم العنصر و نستفيد منه كما عداد الحلقة i$ foreach($array as $key => $value){ $index = current($array); // 0 1 2 3 }
-
إن شيفرة جافاسكربت لا تملك القدرة على التعديل في صفحات أخرى، لذلك لن تعمل شيفرة موجودة في صفحة 1 ضمن الصفحة 2. الطريقة الوحيدة للتحكم في صفحة ثانية هي فتح نافذة جديدة باستخدام window.open وحفظ مرجعية لها ومن خلال المتغير نستطيع التلاعب ب DOM لصفحة النافذة المفتوحة. var myWindow = window.open("", "MsgWindow", "width=200,height=100"); myWindow.document.write("<p>This is 'MsgWindow'. I am 200px wide and 100px tall!</p>"); يمكنك حفظ المنتجات التي أضافها المستخدم لسلة التسوق في local storage مثلاً وبعد انتقاله للصفحة التالية تقوم بجلب بيانات المنتجات و عرضها في الصفحة. يمكنك تخزين id المنتجات بعد النقر عليهم، وتخزينهم كمصفوفة، ثم بعد استعراض السلة، نطلب كامل بيانات المنتجات و الصور للصفحة حيث نقرأ ids ونستعلم منهم.
- 1 جواب
-
- 1
-
بشكل عام لدينا مصفوفة مصفوفات، ولكل مصفوفة للانتقال على عناصرها يتطلب ذلك حلقة، و كما نرى أنه لدينا مصفوفات متداخلة فهذا يعني أننا بحاجة حلقات متداخلة لنتماشى مع بنية المعطيات. <?php $class_array = .. for ($i=0; $i<count($ ?? ); $i++ ) { echo .. $sub_array = $class_array[ ?? ] for ($j=0; $j<count($ ?? ); $j++) { echo ??? } }
- 4 اجابة
-
- 1
-
ما الشيفرة التي كتبتها لنحاول تعديلها وإصلاح الخطأ
-
هل تستخدم نسخة ubuntu desktop؟ أرجو تحديد من أين قمت بتحميل النسخة. وما هي مع العلم أن سطر الأوامر يبدو جاهز لتنفيذ فما المشكلة؟
- 4 اجابة
-
- 1
-
إن هذه هي مدة صلاحية ملفات تعريف الارتباط التي قمت بإنشائها، سوف تعمل فقط خلال الجلسة الحالية وسبب ذلك هو عدم تعيين وقت افتراضي ل cookies فيتم التخلص منها مع إغلاق المتصفح أي ستكون متاحة فقط خلال الجلسة الحالية session هنا هي مدة صلاحية. أي ربما الكائن exp لديك ليس بالصيغة السليمة فلم تتم قراءة الوقت بشكل صحيح فتم أخذ الافتراضي session cookie حاول تمرير قيمة exp بالشكل: expires=Fri, 31 Dec 9999 23:59:59 GMT; يمكنك تجريب الطريقة التالية أيضاً function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); // اليوم التالي let expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";"; } setCookie("username", 'wael', 1); // يوم واحد
- 1 جواب
-
- 1
-
يمكننا تضمين مكتبة ReactJS من خلال CDN بإضافة الروابط في الصفحة قبل نهاية وسم body <!-- ... other HTML ... --> <!-- Load React. --> <!-- Note: when deploying, replace "development.js" with "production.min.js". --> <script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin></script> <!-- Load our React component. --> <script src="like_button.js"></script> </body> ثم نقوم بتضمين ملفات المكونات الواحد تلو الآخر بهد ريأكت. وبالنسبية لحاوية عناصر react يكون مثلاً على شكل div <!-- ... existing HTML ... --> <div id="like_button_container"></div> <!-- ... existing HTML ... --> وعملية حشر المكون ضمن الصفحة عن طريق الشيفرة التالية: في ملف المكون: const domContainer = document.querySelector('#like_button_container'); ReactDOM.render(e(LikeButton), domContainer); التوثيق الرسمي: إضافة ريأكت لصفحة ويب توثيق موسوعة حسوب: wiki.hsoub/React
-
الواجهات و الأصناف المجردة مختلفات في بعض الجزئيات: أنه لا يمكننا تعريف خواص properties ضمن الواجهات بينما في الأصناف يمكننا ذلك. جميع دوال الواجهات يجب أن تكون Public فيما دوال الأصناف المجردة من الممكن أن تكون public | protected جميع دوال الواجهات تكون Abstract أي لا يوجد جسم للدالة فقط تعريفها يمكن للواجهات الوراثة من أكثر من واجهة extends الأصناف يمكن أن تعمل implement لأكثر من واجهة و ترث صنف آخر واحد فقط لكل نقطة من السابق سنضيف مثال: تعريف الخواص فقط ضمن الصنف المجرد <?php interface Animal { private sound = "Meow"; // خطأ public function makeSound(); } abstruct class Cat implements Animal { protected sound = "Meow"; // صحيح public function makeSound() { echo $this.sound; } } دوال الواجهات عامة، أما الأصناف المجردة عامة أو محمية <?php interface Animal { public function makeSound(); ^^^^^^ إجبارية } abstruct class Cat implements Animal { protected sound = "Meow"; // صحيح public function makeSound1() { ^^^^^^ echo $this.sound; } protected function makeSound2() { ^^^^^^^^^ echo $this.sound; } } نكتب الترويسة عند تعريف دالة في الواجهة و جسمها في الصنف <?php interface Animal { public function makeSound(); // ترويسة فقط } class Cat implements Animal { public function makeSound() { // تعريف كامل echo "Meow"; } } الوراثة المتعددة في الواجهات تستعمل الكلمة المفتاحية extends أما الصنف يحقق واجهة implements <?php interface MyInterface1{ public function method1(); } interface MyInterface2{ public function method2(); } interface MyInterfaceName extends MyInterface1, MyInterface2{ } class MyClassName implements MyInterfaceName{ public function method1(){ echo "Method1 Called" . "\n"; } public function method2(){ echo "Method2 Called". "\n"; } } $obj = new MyClassName; $obj->method1(); $obj->method2(); ?> يمكننا وراثة صنف واحد، وتطبيق عدة واجهات <?php // صنف عادي class A { public function insideA() { echo "I am in class A"; } } // واجهة interface B { public function insideB(); } // واجهة interface C { public function insideC(); } class D extends A implements B,C { function insideB() { echo "I am in interface B"; } function insideC() { echo "I am in interface C"; } public function insideD() { echo "I am in inherited class"; } } $hsoub = new D(); $hsoub->insideA(); $hsoub->insideB(); $hsoub->insideC(); $hsoub->insideD(); ?> // output I am in class A I am in interface B I am in interface C I am in inherited D
-
يوجد بالطبع، يمكنك متابعة توثيق لغة البرمجة التي تدرسها بالدورة من خلال موسوعة حسوب التي تحوي معظم توثيق اللغات، و ضمن تبويب دروس و مقالات ضمن أكاديمية حسوب حسب التصنيفات لكل تقنية و لغة. ولا مشكلة بالطبع من قراءة التوثيق الأجنبي من المواقع الرسمية أو مشاهدة دروس خارجية لمواضيع معينة .. كما يمكنك نشر أسئلة ضمن الدروس أو هنا في الأسئلة العامة لأي فكرة تريد شرح إضافي لها. أنت حر في طريقة الدراسة التي ترغب بها. موسوعة حسوب: wiki.hsoub.com مقالات أكاديمية حسوب: academy.hsoub.com/programming
-
الامتحان عبارة عن جزئين رئيسيين: محادثة صوتية مع مدرب لمدة نصف ساعة بناء مشروع التخرج يمكنك معرفة جميع معلومات الامتحان من خلال الرابط التالي: امتحان دورات أكاديمية حسوب
- 1 جواب
-
- 1
-
حاجة السوق لبرامج محددة (بناء عمل تجاري بالاعتماد على مشروع أم لا، ) بمواصفات معينة هي من تحدد الرغبة في شراء برنامج من عدمه بالإضافة لوجود منافسين و سعر البرنامج في السوق والدعم الفني وغيره من الأمور، يمكنك عرض البرنامج كخدمة على موقع خمسات مثلاً للبيع. ويمكنك الاستفادة من المقالتين اللتين تتكلماتن عن تأسيس المشاريع ومقالة من مدونة مستقل: كيف تقوم بإعداد دراسة جدوى لإطلاق مشروعك.. ببساطة وخطوة بخطوة!
- 1 جواب
-
- 2
-
يمكنك تجاهل الرسالة حيث أن عدد مستخدمي الإنترنت الذين يستخدمون IE قليل جداً وتوقف دعمه حتى من مايكروسوف. الحل الأفضل هو استخدام جيكويري datePicker وسوف تعمل على جميع المتصفحات نطبق الشيفرة على input type text <input type="text" class="datepicker" name="your-name" /> مثلاً نستهدف الصنف datepicker <script> $(function() { $( ".datepicker" ).datepicker({ dateFormat: 'yy-mm-dd' }); }); } </script>
- 6 اجابة
-
- 1
-
يمكنك فتح الملف و قراءته كنص عن طريق تمرير المعامل rt with open(fname, 'rt') as f: أما إن كنت تنوين قراءة الملف بترميز ثنائي rb يمكننا خلال الشيفرة إعادة تحويل الترميز ل utf-8 ليصبح نص من جديد باستخدام الدالة decode with open(fname, 'rb') as f: lines = [x.decode('utf8').strip() for x in f.readlines()]
-
لديك المشكلة أن المتغير i سيكون ثابت خلال تكرار الحلقة j وهذا يعني أنه سيقوم بعمل نفس الشرط بين أول عنصرين بدل أن يتحرك المؤشر. لذلك نعدل ضمن الشرط و swap أن j المستخدم و ليس i for (int i=0; i<arr.length; i++){ for (int j=0; j<arr.length-1-i; j++){ if (arr[j]> arr[j+1]){ swap(arr,j,j+1); } } } أرجو التجريب
- 1 جواب
-
- 1
-
الدالة سوف تستقبل 3 وسطاء هما الرقمين و الإشارة void functionName(parameter1, parameter2, parameter3) { // code to be executed } حاول بنفسك إضافة الدالة لملف cpp قبل الدالة main مع تحديد اسمه و أنماط الوسطاء. ثم نختبر نوع الوسيط الثالث الخاص بالإشارة و نقوم بعمل عملية حسابية بين أول وسيطين استدعاء الدالة في main وطباعة النتيجة خارطة عامة تساعدك: #include<iostream> void functionName(parameter1, parameter2, parameter3) { // code to be executed } int main() { cout << functionName(1,2,'+'); // 3 return 0; }
- 5 اجابة
-
- 1
-
هل تقصد الاشتراك بدورات أكاديمية حسوب مع الحصول على خصم؟ الجهة الوحيدة المخولة بالرد هي مركز المساعدة ولديهم ساعات دوام محددة، أرجو التحلي بالصبر للإجابة على استفسارك
-
مرحبا حنان، بالنسبة لدورة تطوير تطبيقات الجوال باستعمال تقنيات الويب كوردوفا تم دمجها مع دورة جافاسكربت وتم نقل اشتراك جميع الطلاب لدورة جافاسكربت، طبعا حسب تحديثات أدوات تطوير التطبيقات تقنيات جافاسكربت مثل React Native مطلوبة بكثرة و قلة طلب على كوردوفا، و تماشياُ مع سوق العمل اتخذت الإدارة القرار. إن كان لديك أي استفسار بخصوص تغيير دورة أو شيء آخر يمكنك التواصل مع مركز المساعدة وسيجيبون ضمن ساعات الدوام في الصباح. ويمكنك استرداد أموالك بالتواصل معهم إن لم تريدي الدورة الثانية أو حصل معك أي مشكلة. شكرا لك
-
أغلبنا يستخدم النسخة 14 من node.js و webpack 4-5 حاول استخدام هذه المكتبات: { "name": "zoom", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "build": "webpack serve" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@fortawesome/fontawesome-free": "^5.15.1", "@laylazi/bootstrap-rtl": "^4.5.3-1", "@laylazi/bootstrap-rtl-scss": "^4.5.3-1", "bootstrap": "^4.5.3", "css-loader": "^5.0.0", "expose-loader": "^1.0.1", "file-loader": "^6.2.0", "html-loader": "^1.3.2", "html-webpack-plugin": "^4.5.0", "jquery": "^3.5.1", "jquery-ui-touch-punch": "^0.2.3", "mini-css-extract-plugin": "^1.2.1", "optimize-css-assets-webpack-plugin": "^5.0.4", "popper.js": "^1.16.1", "sass": "^1.28.0", "sass-loader": "^10.0.4", "style-loader": "^2.0.0", "webpack": "^5.4.0", "webpack-cli": "^4.1.0", "webpack-dev-server": "^3.11.0", "webpack-jquery-ui": "^2.0.1" }, "dependencies": {} }
-
سبب عدم توقف البرنامج هو عدم تعديل قيمة n وبذلك لا تتوقف الحلقة. يجب إعادة قراءة قيمة n في نهاية الحلقة ومن ثم سيتم اختبار قيمتها في بداية التكرار التالي scanf("%d",&n); while(n !=0 ){ printf("\nEnter the amount:"); scanf("%d",&amount); if(amount < 50){ .. else { .. } // هنا printf("\nEnter 0 or -1 to Exit"); scanf("%d",&n); if(n==0) break; } }
-
لمقارنة السلاسل النصية في PHP بدون تقييم ما تحله السلسلة من تعابير رياضية يمكن أن نسخدم دالة المقارنة strcmp التي تعيد 0 عند تطابق السلسلتين، و قيمة سالبة إن كانت السلسلة الأولى أصغر و قيمة موجبة إن كانت الأولى أكبر <?php $str1 = "Hello"; $str2 = "Hello"; echo strcmp($str1, $str2); // Outputs: 0 $str1 = "Hello"; $str2 = "Hello World"; echo strcmp($str1, $str2); // Outputs: -6 ?> وإن أردت المقارنة بدون حساسية لحالة الأحرف أي A = a نستخدم الدالة strcasecmp حيث أنه بالرفم من اختلاف حالة الأحرف Oo Hh ستعيد لنا الدالة أن السلسلتين متطابقتين. <?php echo strcasecmp("Hello world!","HELLO WORLD!"); // output 0 ?>
- 3 اجابة
-
- 1