-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
يمكنك توظيف مبرمجين أو مصمم مواقع أو مصمم واجهات مستخدم من خلال موقعي خمسات و مستقل، بعد فتح مشروع جديد فيه و كتابة وصف للمشروع كما ذكرته هنا.. بعد أن يقوم المبرمجين بتقديم عروضهم يمكنك التفاوض معهم و الاتفاق على مدة و كلفة المشروع.
-
لم أفهم بالضبط ماذا تريد، ها أنت ستكتب المقالات أو تريد رفد موقعك بمقالات مناسبة و عالية الجودة؟ إن كنت تريد إرفاد الموقع بمقالات، يمكنك توظيف أحد المختصين بكتابة المحتوى من خلال موقعي خمسات أو مستقل، بعد فتح مشروع جديد فيه و كتابة وصف للمشروع كما ذكرته هنا.. بعد أن يقوم المختصين بتقديم عروضهم يمكنك التفاوض معهم و الاتفاق على مدة و كلفة المشروع.
-
هل يمكنك وضع الشيفرة لاستطيع شرحها بشكل أفضل؟ ضمن دوال php تستخدم الثلاث نقاط لتعريف دوال functions تأخذ عدد متغير من المدخلات (الوسطاء) parameters. كما يمكننا استخدامها لتجميع عدد من المتغيرات ووضعهم في مصفوفة، مثلا تابع يقوم بجمع عدة اعداد مثل (3,2,1)sum ضمن تعريفه نضع التالي (args..)sum هنا args سيعبر عن مصفوفة تضم العناصر التي تم تمريرها عن الاستدعاء (قام معامل الثلاث نقاط بتجميع المتغيرات ودمجهك في مصفوفة) ولكي نقرا القيم المررة 1,2,3 نقوم بعمل حلقة ضمن الدالة sum على المصفوفة args ونجمع القيم. المثال: <?php // function تعريف function sum(...$numbers) { // تحزيم المصفوفة $acc = 0; foreach ($numbers as $nn) { // المرور على المصفوفة و تجميع عناصرها $acc += $nn; } return $acc; } // استدعاء echo sum(1, 2, 3, 4); // يمكن تمرير أي عدد من الوسطاء > 10 // مثال استدعاء آخر echo sum(1, 2, 3, 4, 5); > 15 // أيضا.. echo sum(); > 0 كما يمكن استخدامها لتقوم بتحزيم بقية المتغيرات الممررة (مثلا إن قمنا بتحديد الأول و الثاني) سيتم تجميع باقي المتغيرات ضمن مصفوفة: <?php // اليقية الثاني الأول function sum($first, $second, ...$remaining_numbers) { $acc = $first + $second; foreach ($remaining_numbers as $nn) { $acc += $nn; } return $acc; } // استدعاء echo sum(1, 2); // تمرير أول متغيرين > 3 // مثال آخر echo sum(1, 2, 3, 4); // تحديد أول متغيرين مع تحزيم البقية > 10 بشكل عام تعمل على تجميع و فرد العناصر و المصفوفات.
-
لتوثيق الهوية في موقع مستقل يمكنك الدخول للرابط التالي: توثيق هوية مستقل ويتطلب ذلك التأكد من بياناتك الشخصية و إرفاق صورة شخصية مع صورة الهوية، أي تضع الهوية الشخصية بجانب وجهك و تاخد صورة (سيلفي). وبعد بعض الوقت يتم تأكيد الهوية و إرسال بريد الكتروني و تظهر الشارة على الموقع. وإن كنت طالبا في الأكاديمية تواصل مع مركز المساعدة لتوثيق الهوية: مركز مساعدة حسوب
-
إن كانت لغة البرمجة ++C يمكنك استخدام cin لقراءة دخل المستخدم. ولتكرار العملية لكل العناصر نضع cin ضمن حلقتي for للمرور على عناصر المصفوفة الثنائية و نطبق cin لكل عنصر منها، هي مشابهة امثال لغة جافا في التعليق السابق.. حاولي تطبيق الشرح و البحث في الانترنت و إن احتجت لمساعدة أرجو إرفاق الشيفرة الاي قمت بكتابتها لنساعدك.
- 4 اجابة
-
- 1
-
لربط قاعدة البيات مع التطبيق عليك دراسة مفهوم ال API هي application programming interface أو واجهة برمجية يمكن استخدامها بدون معرفة التفاصيل الفعلية التي تقوم بها، وضمن الويب web تعتبر على شكل خدمة ويب web service وهي تتيح جلب/عرض بيانات من موقع ما (قاعدة البيانات الخاصة به) عتن طريق الاتصال مع المخدم عبر هذه الخدمة، وهي تكون على شكل روابط فريدة، بعد استدعائها عن طريق HTTP method تعيد بيانات خام على هئية json والتي هي بنية معطيات خاصة بتناقل المعطيات وتخزينها. كما تسمح API بإضافة و تعديل البيانات في القاعدة، عادة تستخدم من مكون خارج النظام الفعلي أو تطبيق هاتف جوال أو موقع آخرـ وهي تختلف عن رابط صفحة ويب أنها لا تعيد شيفرات html إنما بيانات خام JSON . JOSN مكون من مفتاح (اسم خاصية و قيمتها) اسم الخاصية سلسلة نصية حصرا، أما القيمة ممكن أن تكون integer - bool - array أو حتى كائنات JSON فرعية أخرى: { "key1" : "value1", // نص "key2" : 2, // رقم "key3" : ["value3.1","value3.2"], // مصفوفة "key4" : { // غرض JSON "key4.1" : "value4.1", // نص }, } مثال بسيط: { "name":"John", "age":30, "car":null } افترض أن رابط الخدمة هو: الرابط مثال لموقع له خدمة API http://website/api/students/10 لاحظ أننا نطلب مسار خاص بطالب معين رقمة 10، حيث تأتينا البيانات بالشكل السابق.. هي تختلف بين موقع و آخر بالطبع حسب المطور ومتطلبات المشروع. يمكن بالمثل الاتصال مع المخدم و إرسال بيانات له وهو سيضيفها في القاعدة لديه. أرجو دراسة http methods فهي أساسية للتعامل مع API GET PUT POST DELETE مقالات من أكاديمية حسوب: كيف تنشر تطبيق Asp.net Core مع خادم MySQL باستخدام Nginx على أوبنتو 18.04 شرح فلسفلة RESTful - تعلم كيف تبني واجهات REST برمجية أساسيات بناء تطبيقات الويب
- 1 جواب
-
- 1
-
يوجد مكتبة تدعى ordered-set يمكن تثبيتها: pip install ordered-set ثم استخدامها بالشكل التالي.. سوف تقوم ببناء مجموعة مرتبة: #تضمين المكتبة from ordered_set import OrderedSet # بناء غرض x = [0,1,2,4,8,16,32,64,128,512,1024] my_numbers = OrderedSet(x) # عرض العناصر print(my_numbers) # OrderedSet([0, 1, 2, 4, 8, 16, 32, 64, 128, 512, 1024]) # فحص وجود عنصر print(128 in my_numbers) # true print(333 in my_numbers) # false
- 3 اجابة
-
- 2
-
الفرق الآخر هو في حالة اختيار مخدم بشكل https الخاص بالاتصال الآمن حيث أن express يعيد http.Server object أما في الطريقة الثانية يمكننا بناء المخدم من https: var https = require('https'); var server = https.createServer(app).listen(config.port, function() { console.log('Https App started'); }); الشكل الافتراضي لكليهما: http.createServer(app).listen(80); https.createServer(options, app).listen(443); وإن أردت جعل express يشغل كلاً من http - https يمكن استعمال المنطق التالي: // تضمين مكتبات var fs = require('fs'); var http = require('http'); var https = require('https'); var privateKey = fs.readFileSync('sslcert/server.key', 'utf8'); var certificate = fs.readFileSync('sslcert/server.crt', 'utf8'); // إعادادات https var credentials = {key: privateKey, cert: certificate}; var express = require('express'); var app = express(); // تجهيز المخدم var httpServer = http.createServer(app); var httpsServer = https.createServer(credentials, app); // تشغيل المخدمين httpServer.listen(8080); httpsServer.listen(8443);
- 4 اجابة
-
- 3
-
حاولي عمل تحديث للنظام سيقوم بتنصيب البرامج الناقصة Driver (السواقات للقطع المختلفة في Hardware) كما يمكن الدخول ل device manager والبحث عن السواقات الناقصة التي سيظهر بجانبها مثلث أصفر كالتالي: وإن ظهر مثلث أبيض وأسود تأكدي من تفعيل wifi adapter. إن لم تعرفي الحل، يفضل أخذ الحاسوب لاختصاصي.
- 1 جواب
-
- 1
-
بالاعتماد على Numpy يمكن استخدام الدالة linspace كالتالي: # تضمين import numpy as np # بناء مصفوفة مع القفزة العشرية # بداية - قفزة - نهاية # يتم اعتبار القفزة بمقلوب القيمة الصحيحية الممررة np.linspace(0,1,11) # الناتج array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]) في حال لم ترد وجود نقطة النهائبة نضع endpoint = false : مثل (0,1,10,endpoint=False) كما يمكن استعمال arange بقيم عشرية: np.arange(0.0, 1.0, 0.1) array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) وبطريقة عادية نستخدم حلقة و نعيد كل عنصر منها مضروبا بنسبة تصغير معينة: #1 [x * 0.1 for x in range(0, 10)] #2 for i in range(0, 11, 1): print i / 10.0 #3 for i * 100 in range(0, 100, 10): print i / 100.0 يمكن الإطلاع على مرجع أكاديمية حسوب لتعلم بايثون :
- 4 اجابة
-
- 2
-
عادةً يمكن حذف المكتبات التي يمكن إعادة تحميلها من الطرف الآخر للمشروع، مثلا: إن اعتمد المشروع على node أو npm يمكن ضغط المشروع بدون المجلد node_module نثبت المكتبات ب (npm install) إن اعتمد المشروع على Laravel يمكن حذف المجلد vendor منه نثبت المكتبات ب (composer install) وهكذا بالنسبة لأي مشروع برمجي، كما يمكن اعتماد github + gitlab وغيرها من التقنيات التي تعتمد على git وهي source version controle تسمح بتحديث المشاريع بين المبرمجين و تتبع التغييرات فيها ويفضل تعلمها. يمكن مراجعة أساسيات git من مقالات أكاديمية حسوب:
- 2 اجابة
-
- 2
-
يمكن عدم السماح للوثيقة document أن تحمل قيم فارغة null باستخدام مايشبه الشرط التالي: $match: { myFieldArray: { $elemMatch: { $exists: true } ^^^^^^^^^^^^^ ضمان وجود قيمة للكائن } } ولتمرير قيمة خاصية عليك استخدام معامل المرجعية '$' كالتالي: $project: { "department": 1, "employees":1, "Count employees" : {$size : "$employees" } }
- 3 اجابة
-
- 1
-
ليس على أي شخص متابعة جميع هذه الدورات فإن كل منها في مجال مختلف وتعتمد على تقنيات مختلفة، ولأنه ولكي يتميز المبرمج يجب أن يتخصص في مجال معين ويقوم بعمل مشاريع جيدة ضمنه. أعتقد أن من المفيد البدء بدورة علوم الحاسب، والتعرف على المجال من أوسع أبوابة من الخوارزميات للبرمجة و قواعد البيانات وغيرها من الأساسيات الفيدة، ثم بعدها يمكنك التفكير بالتخصص بتسجيل دورة أخرى والآن بعد أن أصبح لك أساس قوي. مثلا: دورة واجهات المستخدم تكفي ليصبح الشخص ماهرا في تصميم المواقع وجعلها جميلة و متناسقة مع تطبيقات الجوال. دورة برمجة الواجهات الخلفية PHP / Laravel تكفي لفهم شامل للارافيل و عمل مشاريع بها و التعرف على التفاصيل. دورة جافاسكربت تمكن من عمل تصميم للمواقع React و الواجهات الخلفية Node و تطبيقات الهواتف React Native بسبب وجود إطارات عمل تعمل كلها بنفس اللغة (جافاسكربت) و تسمح بتشغيل المشاريع على أكثر من منصة وهذه الدورة عي الأكثر تكاملاً..
- 1 جواب
-
- 3
-
يمكنك تحديد ارتفاع الحاوية div بكتابة تننسيق للخاصية height: أو أضفها لوسم style لديك.. /* css */ .yourClass{ height: 80px } ويمكن وضع حد أقل للطول مثل min-height هذا يسمح للحاوية بأن تكون أطول منه(حد أدنى)، و max-height وهو طول أعظمي لا يمكن أكبر منه(حد أعلى).
- 6 اجابة
-
- 1
-
إن كان معالج من شركة intel يفضل i7 من الجيل الحديث 8th gen وأعلى .. والذاكرة RAM 16 غيغا بايت. التخزين من نوع SSD بمساحة على الأقل لنظام التشغيل والبرامج الثقيلة 512 غيغابايت بالإضافة لهارد HDD بسعة1 تيرا بايت كرت الاشاشة ليس مؤثرا بالبرمجة، لكن إن أردت تشغيل برامج التصميم يمكن شراء كرت قوي بسعة 4 أو 6 غيغابايت
- 3 اجابة
-
- 1
-
يمكن استعمال المعامل '*' فهو يقوم بفرد المصفوفة/نشرها وتحويلها لعدد مساوِ من العناصر: def echo(a, b, c, d): print(a, b, c, d) myLits = [1, 2, 3, 4] echo(*myLits) # echo(1, 2, 3, 4) # ^^^^^ # output # 1 2 3 4
- 4 اجابة
-
- 1
-
في البرمجة المتوازية (التفرعية) parallel programming يقوم بالمبرمج بإنشاء عدة مسالك thread لكي يضمن عمل البرنامج بشكل أفضل مستغلا بنية المعالجات التي تحوي عدة مسالك، في نفس الوقت ربما هنالك أحد هذه المسالك يعتمد على نتيجة مسلك آخر أي عليه أن ينتظر إنتهاء تنفيذه ليتابع التنفيذ عمله، أو تحديد نقطة في الشيفرة لتجميع نتائجعدة مسالك مختلفة ومن ثم تجميع هذه النتائج بالطريقة المناسبة. تدعم #C عدة أنواع من الدالة join: أحدها بدون وسطاء ويقوم بعملية انتظار لتمام انتهاء المسلك من عمله والثاني يأخذ وسيط رقم صحيح مقدراً بواحدة ميلي ثانية حيث ينتظر إما لانتهاء (يتصرف كمهلة انتظار) هذه المدة أو انتهاء المسلك بالشكل العادي // انتظار لمدة ثانية millisecondsTimeout thread.Join(1000); مثال عام: // إنشاء مسلكين Thread thr1 = new Thread(new ThreadStart(obj.mythread)); Thread thr2 = new Thread(new ThreadStart(obj.mythread1)); // تشغيل المسلك الأول thr1.Start(); // انتظار انتهاء المسلك الأول thr1.Join(); // تشغيل المسلك الثاني thr2.Start();
- 2 اجابة
-
- 1
-
الخيار الأول، التصدير ك APK يسمح برفع الملف بنفسه للمتجر و يمكنك تثبيته لهذا الملف على أي جهاز أندرويد مهما كانت معمارية المعالج/نظام التشغيل فيه ARM-v7 , ARM -v8 , X64. أما apk bundle يحوي هذا على على معماريات مختلفة أيضا، حيث يقوم google play ببناء 3 تطبيقات APK مختلفة منه كل منها لمعمارية محددة، وهذا يسمح بجعل التطبيق أصغر حجما، ولكنك لن تستطيع نقل التطبيق بين عدة هواتف أندريد مختلفة المعمارية وتثبيت التطبيق عليه، هنا بعد تحميل التطبيق من المتجر سيتم تحميل أحد المعماريات المناسبة للجهاز الذي حمل التطبيق.. يمكنك الاستفادة من الإجابة هنا، هي خاصة ب Flutter ولكن نفس الفكرة. حاول بناء الملفين و قم بتجربتهم و تعلم من خلال التجربة والأخطاء فهي أفضل طريقة. --------- APK مناسب للتجريب الشخصي و إرساله للأصدقاء app-bundle مناسب للرفع على المتجر
-
ملاحظات. إن كان الاستعلام أكثر من سطر نحيط شيفرة SQL بثلاث علامات اقتباس فردية ''' sql ''' corser.excute(''' sql query1 sql query1 ''') إن كان الاستعلام يعدل على قاعدة البيانات insert - delete - update عليك تثبيت التعديلات بعد عمل الاستعلام: db.commit() أي بعد عبارة corser.excute نقوم ب commit
- 14 اجابة
-
- 1
-
يمكن استخدام الدالة reshape لإعادة تشكيل المصفوفة: تحجيم المصفوفة للحجم المطلوب، ثم تغيير الأبعاد import numpy as np x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) n = 3 m = 5 x = np.resize(x, n*m) x = x.reshape(n, m) print(x) حيث يمثل الوسيط الأول عدد الأسطر و الثاني عدد الأعمدة وهو المطلوب
- 5 اجابة
-
- 1
-
يطلب react منك تحديث المكتبات للإصدار الخامس على الأقل، يمكنك استخدام الشيفرة التالية لتحديديهم: "@react-navigation/native": "^5.8.10", "@react-navigation/bottom-tabs": "^5.11.2", "@react-navigation/stack": "^5.12.8", "@react-navigation/drawer": "^5.11.4", إن لم يتم حل المشكلة يمكنك استخدام حزمة npm-check-updates لتحديث الحزم. التثبيت: npm install -g npm-check-updates التنفيذ: // حزم عامة ncu -g // على مستوى المشروع ncu -u التوثيق npm-check-updates
-
يمكن حذف الكاش وإعادة تهيئته حسب الإصدارات لديك: من خلال NPM npm < 6.0 and RN < 0.50: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf node_modules/ && npm cache clean && npm install && npm start -- --reset-cache أو: npm >= 6.0 and RN >= 0.50: watchman watch-del-all && rm -rf $TMPDIR/react-native-packager-cache-* && rm -rf $TMPDIR/metro-bundler-cache-* && rm -rf node_modules/ && npm cache clean --force && npm install && npm start -- --reset-cache أو: For React Native react-native start --reset-cache for npm npm start -- --reset-cache for Expo expo start -c
-
كلاهما يُستخدم لطباعة المخرجات من البرنامج، ولكن التابع printf أسرع بكثير، وهذا تلحظه فقط في مجال البرمجة التنافسية competitive programming حيث يوجد حدود زمنية صغيرة لكل مسألة و في حال استخدمت cin//cout ربما لن يحقق برنامجك الحدود الزمنية، لذلك يميل الحكام في المسابقات لضبط الزمن الخاص بحل مسألة برمجية باستخدم scanf//printf لأنها أسرع و يفترض من المتسابقين استخدامها فرق السرعة فعليا أن كلا من cin - cout تحتاج لمعرفة نوع المتغير قبل قراءته و قبل طباعته مايأخذ بعض الوقت، في حين أن scanf//printf يتم تمرير نمط المتغير لهما. والفرق بطريقة الكتابة هي أن cin - cout تستخدم المعاملات << >> بين المتغيرات، أما scanf//printf تأخذ سلسلة نصية كمعامل أول تحدده في format أو شكل عام للمخرجات و تعمل به، و المتغيرات يتم تمريرهم كلً على حدى ونفصل بينهم بفاصلة مثل ألأمثلة في باقٍ الإجابات على سؤالك. بشكل عام يمكنك الإعتماد على cin - cout في برامجك لامشكلة.
- 5 اجابة
-
- 1
-
لنحاول تبسيط المشكلة، نلاحظ أن لكل سطر بداية و نهاية أي مثل مجال start - end حيث أن بداية كل مجال تزيد ب1 عن سابقه والنهائية تزيد ب2، يمكن عمل عدادين بشكل متزايد ضمن حلقة و كل مرة نطبع المجال بيتنهما.. // تهئية int start = 1; int finish = 1; // شرط التوقف اختياري while (start <= 4) { // طباعة المجال for (int i=start; i<= finish; i++) { cout << i; } // سطر جديد cout << endl; // زيادة العدادت start += 1; finish += 2; }
- 2 اجابة
-
- 1