-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
إن الجمل الشرطية لديك حميعها محققة لأن متغيرات option تحمل قيما وليست فارغة أو false. عند طلب إدخال رقم من المستخدم يتوجب علينا حفظه في متغير جديد ثم نختبر قيمة هذا المتغير هل هي 1 أو 2 أو ... لا نقوم بفحص متغيرات option بل القيمة المدخلة من المستخدم و بناءاً عليها نطبع من خلال عبارة print حسب كل if لدينا. أرجو إعادة التفكير في البرنامج و المحاولة.
-
مرحبا لبانة، تقريبا هي نفس خطوات تهيئة الحساب، إضافة الملفات المعدلة ل git تثبيت التعديلات بعمل commit دفع الملفات للمستودع git add . git commit -m "my changes" git push -u origin main
-
يمكنك تجريب النسخة من هذا الموقع: Adobe Illustrator . 64 bit Version: 2021 v25.0.1.66
-
بالنسبة لهذا الجزئية بالتحديد، أعتقد أنك تقصد تقنية Deep Link حيث يتم وضع رابط ما في موقع الكتروني أو إعلان و عند النقر عليه يتم فتح التطبيق على الصفحة المختارة مسبقا، أو التوجه للمتجر play store. للأسف أنا لم استخدمها مسبقا ولكن يمكنك مراجعة التوثيق من الصفحة الرسمية: flutter.dev deep-linking. وباستعمال مكتبة uni_links يمكن استقبال حدث الوجيه (المشاركة) ومن ثم فتح الصفحة المناسبة. يمكنك البحث أكثر من: How to handle deep-linking to a Flutter App Deep Links and Flutter applications. How to handle them properly.
- 3 اجابة
-
- 1
-
الشكل المبسط لشيفرة تبديل قيمة عنصرين في جافاسكربت بالشكل التالي: let a = 1; let b = 2; [a, b] = [b, a]; // [a, b] = [2, 1] // النتيجة a; // => 2 b; // => 1 هي بسيطة فقط عليك تعويض القيم، بالنسبة لدليل المصفوفة i - j فهو ثابت لا تتغير قيمته في الشيفرة لديك: let array = [1, 2, 3, 4, 5]; [array[i], array[j]] = [array[j], array[i]]; لنستبدل أول قيمتين: let array = [1, 2, 3, 4, 5]; let i = 0; let j = 1; [array[i], array[j]] = [array[j], array[i]]; => [array[0], array[1]] = [array[1], array[0]]; => [array[0], array[1]] = [2, 1]; => array[0] => 2 array[1] => 1 وهكذا يتم تبديل القيمتين بين عنصرين في مصفوفة. دليل العنصر ثابت إنما قيمة العنصر ذو الدليل X هي التي تتغير. بالنسبة للشيفرة بشكل عام تقوم بخلط عناصر المصفوفة من خلال تبديل العنصر i مع عنصر آخر ذو دليل عشوائي j
- 7 اجابة
-
- 2
-
المشكلة تبدأ عند تنفيذ تعليمة تحميل لارافيل، فبدون تحديد إصدار سيتم تحميل النسخة الأحدث. عادة لا يتطلب تحديث إطار عمل العديد من التغييرات لكن بالتحديد في إصدار لارافل 8 تم تغيير طريقة تحديد المسارات routes وهذا سوف يسبب اختلاف بطريقة كتابة الشيفرة. كحل للمشكلة يمكن تثبيت الإصدار نفسه الذي يعمل عليه المدرب من أول درس في الدورة و سيكون كل شيئ على مايرام أما بعد نصف المشروع سيكون التراجع صعبا مع الأخذ بالحسبان كل المكتبات التي تم تحميلها بإصدارات حديثة تتماشى مع إصدار لارافل 8 مثلا. في حياتك العملية ستعترضك أفكار و تبحث عن حلول و ستجدها مكتوبة بإصدارات مختلفة كما من الممكن أن يطلب منك تعديل مشروع قديم مبنى بنسخة منخفضة مثلا 5. وجود تنوع في إصدارات التدريب في الأكاديمية مفيد وعليك اعتبار نفسك قد تدربت أكثر و فهمت الفرق الجوهري الأهم بين الإصدارين ما قبل 8 و 8 نفسه. يتم أرشفة المسارات القديمة في الأكاديمية عندما ترى الإدارة أن دراستها غير مفيدة و تم تعويض أفكارها بالسلسلة الجديدة ومع ذلك يسمح للطلاب بدراسة الأرشيف وهذا أمر اختياري للطالب. وكإضافة، بعد اشتراكك بالأكاديمية ستتاح لك جميع التحديثات و سوف تبقى متجددة دوما، و سيطرأ تعديلات في المستقل و تتغير طريقة كتابة لارافل 10 مثلا، أي سوف تقدم الأكاديمية مشاريع جديدة بإصدارات أحدث.. فلكي تواكب أنت التطورات سيتوجب عليك دراسة الإصدار الأحدث دوما لتبقى مواكبا للتغيرات إن درستها من التوثيق الرسمي أو اعتمدت محددا على شرح الأكاديمية فهو اختياري. أنت طالب مجتهد و مثابر كل الاحترام أحسنت. بالتوفيق
-
سنحاول القيام بهذه الخطوات: 1. اولا نقوم بالذهاب الى edit ثم Preferences ثم General 2. ثم نقوم باختيار interface و نفوم باختيار None في الثلاث خيارات 3. نقوم باختيار File handling ثم نقوم باختيار Never Save في Image Previews 4. في Memory Usage تقوم باختيار 70% من الرامات التي لديك و في History & cache نقوم بالضغط على Tall and Thin و في History States نختار 10 و Cache Levels 2 و في Cache Tile Size 128k 5. في Graphics Processor Setting نقو باختيار Advanced Settings و في Drawing Mode نختار Basic 6. نقوم باختيار Type ثم Front Preview Size و نقوم باختيار None أرجو التأكد من أن أداء الجهاز على أفضل أداء High Performance ربما المعالج لديك من الفئة U فيكون أدائه أفضل عند وصل الكهرباء. بشكل عام، يفضل تحديث القرص الصلب وشراء SSD لأنه أسرع بكثير من القرص الحالي (على الأغلب HDD)
- 1 جواب
-
- 1
-
استخدم أندرويد استديو طالما أن مواصفات جهازك قادرة على تشغيله، لن تسبب أي مشكلة في كفائة جهازك. أي هما أداتين ممتازتين استخدم ما يريحك بالتعامل معه.
- 8 اجابة
-
- 1
-
إن android studio هو البيئة المتكاملة لبرمجة تطبيقات الأندرويد و فلاتر و توفر للمبرمج جميع الأدوات الضرورية من تحمل المكتبات لتشغيل و تهيئة المحاكي و اقتراح التحديثات في Gradle و الكثير من الميزات. لكن أندرويد ستديو يستهلك الكثير من موارد الجهاز، فيميل المطورين لاستخدام vs code بعد تثبيت الإضافات الخاصة ب flutter + Dart وتقريبا توفران معظم الأدوات المساعدة لكن ليس مثل أندرويد استديو. أي السبب الرئيسي برأيي هو استخدام vs code ذاكرة أقل.
- 8 اجابة
-
- 2
-
إن الاشتراك بخدمات SMS تكون مدفوعة، فأقترح استخدم خدمات غوغل firebase لعمل التوثيق باستخدام رقم الهاتف. يمكنك الاستفادة من firebase بعمل تسجيل الدخول عن طريقها. التوثيق الرسمي بجميع الخطوات من هنا:firebase/phone-auth يتضمن الخطوات التالية بشكل رئيسي: 1- تضمين بعض المكتبات لعمل authentication - firebase-auth 2- عمل تطبيق في firebase من الموقع المرفق في التوثيق console.firebase.google و من ثم تفعيل خيار تسجيل الدخول عن طريق الرقم نسخ ملف google-services لمشروع الأندرويد.. وإكمال خطوات التوثيق و تحوي بعض الشيفرات البرمجية المساعدة. بعد تحقق التسجيل يمكنك حفظ ال Token في قاعدة بياناتك لعمل مصادقة لما بعد يمكنك تصفح الأسعار من هنا: pricing وحدود استخدام الخدمة: auth/limits
- 7 اجابة
-
- 2
-
لاختصار الشيفرة يمكن استعمال download method: app.get('/get_intro', function(req, res) { var file = "/video/intro.mp4"; res.download(file) }); وإذا أردت حفظ الذاكرة بإغلاق الاتصال بعد مدة زمنية يمكن الاستفادة من الشيفرة التالية: حيث أضفنا setTimeout مع عمل قناة اتصال createWriteStream var http = require('http'), fs = require('fs'); var request = http.get("get_intro", function(response) { if (response.statusCode === 200) { var file = fs.createWriteStream("/video/intro.mp4"); response.pipe(file); } // Add timeout. request.setTimeout(12000, function () { request.abort(); }); }); وإن أردت استخدام call back function بعد انتهاء التحميل يمكن الاستعادنة ب: var http = require('http'); var fs = require('fs'); var download = function(url, dest, cb) { var file = fs.createWriteStream(dest); var request = http.get(url, function(response) { response.pipe(file); file.on('finish', function() { file.close(cb); // close() is async, call cb after close completes. }); }).on('error', function(err) { // Handle errors fs.unlink(dest); // Delete the file async. (But we don't check the result) if (cb) cb(err.message); }); };
-
مرحبا، أرجو طرح السؤال في قسم التعليقات ضمن الدرس الموافق مع أرفاق مجلد المشروع بشكل مضغوط مع صور لقطات شاشة مناسبة للمشكلة. هنا قسم الأسئلة العامة وليس خاص بالدورات. شكرا لك
-
يمكننا استخدام الطريقة isin كالتالي: df[df['A'].isin([3, 6])] وسيكون الناتج حسب مثالك: Out[3]: A B 1 6 2 2 3 3 ولجلب المجموعة المتممة نستخدم التعبير ~ : df[~df['A'].isin([3, 6])] ___^__ Out[4]: A B 0 5 1 3 4 5 أي أننا نستدعى isin على ال dataFrame ونمرر لها قائمة بالأدلة المطلوب عرضها.
- 1 جواب
-
- 1
-
يمكن من خلال: نقوم بعمل reindex لأسماء الأعمدة عن طريق اسناد columns لقائمة: df = df.reindex(columns=['mean',0,1,2,3,4]) أو نقوم بحشو حقل لدليل معين مثل جلب الحقل mean ووضعه كأول حقل df.insert(0, 'mean', df.mean(1)) أو تمرير مصفوفة الأعمدة لل data Frame: df = df[['mean', 4,3,2,1]]
- 2 اجابة
-
- 1
-
يمكن استخدام الدالة to_numeric مع تمرير s كوسيط لها ثم 'downcast='float'، ما سيؤدي لتغيير نمط البيانات فيها إلى float. a = [[1.2, '1.2', '4.2'], [55, '70', '0.03'], [14, '5', '0']] df = pd.DataFrame(a) pd.to_numeric(s, downcast='float') أو مباشرة: dtype=float لل dataFrame a = [[1.2, '1.2', '4.2'], [55, '70', '0.03'], [14, '5', '0']] df = pd.DataFrame(a, dtype=float) أو استعمال الدالة astype بتمرير لها float وليس str (تصحيح للإجابة السابقة)
-
تقسيم السلسلة إلى مصفوفات جزئية بالاعتماد على split حيث نمرر لها محرف الفصل وهو '-' نقوم بالمرور على العناصر باستخدام map ونختبر الدليل إن كان 0 نعيد المصفوفة الجزئية الأولى (في حالتنا today) كما هي وإلا نعيد الحرف الأول كبير و باق المصفوفة بدءاً من المحرف الثاني (الدليل 1 ) نجمع المصفوفات المعدلة باستخدام join بوضع فراغ بينهم " ". let str = "today,-i'm-here-to-learn-java-script-with-the-hsoub-family"; str = str .split('-') .map((x, index) => { return index == 0 ? x : x[0].toUpperCase() + x.slice(1) }) .join(' '); console.log(str) الجواب: today, I'm Here To Learn Java Script With The Hsoub Family _______^___^____^__^_____^____^______^____^___^_____^_____
- 3 اجابة
-
- 1
-
يبدو أن form يرسل بيانات بطريقة post وبهذه الحالة تُرسل البيانات ضمن الطلبية request ضمن body. يمكنك قراءة هذه parameter من req.body ثم اسم الحقل المطلوب. var email = req.body.email;
- 3 اجابة
-
- 1
-
إن تحميل البيانت من API يأخذ بعض الوقت وهو حدث غير متزامن، أرجو التأكد من تحميل الصفحة بعد تحميل البيانت و تحديث الحالة بشكل مناسب بعد وصول البيانات. أرجو التأكد من وضع الكلمة المفتاحية await قبل استدعاء الدالة التي تتصل بالمخدم.
- 13 اجابة
-
- 1
-
عند تحديد null = true، سيقوم إطار العمل بوضع القيمة الافتراضية للعمود ضمن جدول البيانات ب null ويقبل إدخالها كقيمة فارغة في قاعدة البيانات وعكسها NOT NULL. blank = true نستطيع عندها جعل هذا الحقل اختياري (ليس إجباري not required). أما blank = false سيكون حقل إجباري عند التحقق من المدخلات في المخدم مثل: someForm.is_valid(); إذا تستخدم الخاصتين لجعل حقل ما قابل لأن يكون فارغ (بدون بيانات) والسماح بوضع القيمة null في قاعدة البيانات. لكن الحقلين CharFields and TextField عندما تكون قيمتهم فارغة لا يتم تخزينهم على شكل null إنما كسلسلة نصية فارغة ' ' في Django بالمقابل في قواعد البيانات تقبل null للسلاسل حيث يفضل الاقتصار على blank=True. null=True/False related to database # تتعلق بقواعد البيانات blank=True/False related to form validation # تتلق بالتحقق ضمن إطار العمل التوثيق : docs.djangoproject.com
- 3 اجابة
-
- 1
-
يمكن استعمال الدالة ord لإعادة القيمة الرقمية لمحرف ما: c = 'p' print("The ASCII value of '" + c + "' is", ord(c)) والخرج سيكون: The ASCII value of 'p' is 112 أي 112. للقيام بالعكس (قيمة رقمية لمحرف نستخدم chr: مثال شامل: >>> ord('a') 97 >>> chr(97) 'a' للتحويل بين محرفين >>> chr(ord('a') + 3) 'd' >>>
-
يتم تنفيذ شيفرة المخدم مرة واحدة عند تحميل الصفحة، ويتم عرض البيانات لأول مرة عندها، لتحديث البيانات التي ستعمل مكتبة الرسوميات عليها يجب استخدام ajax لإعادة طلب البيانات (التي من الممكن أنها تتغير مع مرور الوقت) لذلك يجب عمل متحكم مهمته هي إرجاع البيانات فقط (جزء من api) التي بعد طلبها سيتم عمل render عند العميل (المتصفح) بعد تحميل البينات الجديدة و إعادة الرسم. يفضل فصل متحكم بيانات الواجهة الرسومية و طلب البيانات عن طريق Ajax من بعد تحميل الصفحة. في حال لم تعمل يمكنك عزل الجزء الخاص بجلب البيانات مع دوال الرسم في دالة واستدعائها بفواصل زمنية باستخدام set Interval window.setInterval(function( displaygraph(); }, 50000); يمكنك الاستفادة من الإجابة السابقة لعمل المتحكم
- 2 اجابة
-
- 1
-
في لغة بايثون يتم استخدام المعامل == للتأكد من تطابق قيمة متغيرين فهي تعيد true عند تساوي القيمتين اللتين نطبق عليهما هذا الشرط. يمكن استخدام == لمقارنة قيمتين لمتغيرات أو أغراض variable | Objects. أما الكلمة المفتاحية is تستعمل عندما نريد التأكد أن المتغيران يشيران لنفس العنوان في الذاكرة (أي لهما نفس القيمة و تعديل أحدهما يسبب تعديل الآخر). == تعيد true في جميع الحالات التي تكون القيمتين متساويتين، أما is تعيد true فقط في حال كان طرفي المقارنة يشيران لنفس الكينونة | الكيان (نفس الغرض) | نفس عنوان الذاكرة. 1==True => returns True, but 1 is True => returns False ====== أمثلة: # python3 code to # illustrate the # difference between # == and is operator # [] is an empty list list1 = [] list2 = [] list3=list1 if (list1 == list2): # true نفس القيمة if (list1 is list2): # false غرضين مختلفين if (list1 is list3): # true نفس الغرض list3 = list3 + list2 if (list1 is list3): # false أصبحا غرضين مختلفين عند تعريف قائمتين : list1 = [] list2 = [] print(id(list1)) print(id(list2)) # output 139877155242696 139877155253640 وباستخدام الدالة id التي تعيد المعرف الخاص بكل غرض، نلاحظ أنهما مختلفتين.. لذلك is تعيد false فهما فعلياً ليسا نفس الغرض عملية الإسناد في المثال السابق list3 = list1 أدت لأن تأخذ القائمة 3 عنوان و قيمة القائمة الأولى لذلك هما متطابقتين وليس فقط متساويتين بالقيمة لذلك is تعيد true في هذه الحالة.
-
يتم كتابة التطبيقات والأكواد على برامج تشبه محررات النصوص، تدعى محررات الأكواد، مثل المفكرة ولكن لها مزايا إضافية و مخصصة للتعرف على لغات البرمجة و إضافة التلوين للكلمات (لتصبح أسعل في القراءة) و اقتراح الدوال و التعليمات و منها يوفر ميزة تشغيل البرنامج. أفضل محرر نصوص حاليا متعدد الأغراض مقدم من شركة مايكروسوفت باسم visual studio code واختصارا vs code يمكن تحميله من الرابط التالي: هنا. طريقة كتابة لغة البرمجة يختلف باختلاف لغة البرمجة نفسها فيوجد العديد منها ولكل منها طريقة مختلفة مع وجود بعض التشابه بينها. للبدء، أقترح عليك تصفح بعد الفيديوهات التعليمية لأخذ بعض الأفكار لكيفية كتابة البرامج وخطوة بخطوة ستتعلم و تبدأ التطور. يمكنك قراءة هذه المقالة: تعلم البرمجة كما توفر أكاديمية حسوب بعض الكتب يمكنك تحميلها من هنا أنصح بكتاب بايثون