-
المساهمات
1070 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
15
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mohamd Imran
-
إن كنت تقصدين ال Live chat من خلال Package فا يتم أولا تثبيت الباكيج في المشروع ومن ثم إستخدام الميثودز التي تحتاجينها على حسب ما ترغبين في المشروع , لكن إن إحتجت إلى نسخة ديمو أي مشروع جاهز يمكنك الإطلاع عليه من هنا demo Laravel , أما إن تقصدين تحتاجين إلى كيفية عمل ذلك تفضلي هذه مقالة أخرى تتحدث عن الموضوع Build a Chat App with Laravel
-
Pusher هو مدمج في لارافيل ,أي لن تحتاجي إلى Package لكن إن أردتي Package تقوم بهذا العمل تفضل هنا Real-Time Chat Package for Laravel
-
السلام عليكم @Hafsa Aly يوجد العديد من المكتبات لعمل Live Chat في لارافيل تفضلي هذه مقالة لكيفية عمل Live Chat بإستخدام إطار Pusher chat app with Laravel
-
السلام عليكم @مصعب باوافي الأفضل أن ترفق رسالة الخطأ التي تظهر حتى أستطيع تحديد المشكلة بشكل أدق ,لكن بشكل عام أتوقع انه لم يتم إنشاء ملف ملف الهيدر وملف السورس بشكل صحيح ,أو ربما إسم الكلاس لديك يحتوي على فراغات ,وهذا خطأ إسم الكلاس يجب أن يكون بلا مسافات ,أو يرجى ذكر الخطوات التي إتبعتها لعمل الملف لأنه Unreal Engine يوجد به wizard لعمل c++ class
-
السلام عليكم @وضاح حجاج يمكنك القيام بذلك من خلال عمل ميثود تاخد مدخل المستخدم كنوع vector صنف int و قيمة حجم المصفوفة من نوع vector / اول عنصر فيها وهو 0 ويمكن القيام بذلك برمجياً هكذا نقوم بإستيراد المكتبات أولاً #include<bits/stdc++.h> #include <iostream> #include <vector> using namespace std; ثم نقوم بعمل الميثود التي ذكرناها فوق int findStuplets(vector<int> df, int n) { int index = 0; int RHS[n*n*n + 1]; for (int i = 0; i < n; i++) if (df[i]) for (int j = 0; j < n; j++) for (int k = 0; k < n; k++) RHS[index++] = df[i] * (df[j] + df[k]); sort(RHS, RHS + n); int result = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for(int k = 0; k < n; k++) { int val = df[i] * df[j] + df[k]; result += (upper_bound(RHS, RHS + index, val) - lower_bound(RHS, RHS + index, val)); } } } return result; } ثم نقوم بأخد مدخلات المستخدم في الفنشكن الرئيسية وإستدعاء الميثود السابقة لطباعة النتيجة int main() { int s; vector<int> df; for (int i = 0; df.size() < 6; i++) { cin >> s; df.push_back(s); } int n = sizeof(df)/sizeof(df[0]); std::cout << findSextuplets(df, n) << endl; std::cout << std::endl; return 0; } الشكل النهائي يصبح هكذا #include<bits/stdc++.h> #include <iostream> #include <vector> using namespace std; int findStuplets(vector<int> df, int n) { int index = 0; int RHS[n*n*n + 1]; for (int i = 0; i < n; i++) if (df[i]) for (int j = 0; j < n; j++) for (int k = 0; k < n; k++) RHS[index++] = df[i] * (df[j] + df[k]); sort(RHS, RHS + n); int result = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for(int k = 0; k < n; k++) { int val = df[i] * df[j] + df[k]; result += (upper_bound(RHS, RHS + index, val) - lower_bound(RHS, RHS + index, val)); } } } return result; } int main() { int s; vector<int> df; for (int i = 0; df.size() < 6; i++) { cin >> s; df.push_back(s); } int n = sizeof(df)/sizeof(df[0]); std::cout << findSextuplets(df, n) << endl; std::cout << std::endl; return 0; }
-
السلام عليكم @Reda Boukheche كلمة المرور يجب أن تكون بتشفير md5 حتى تستطيع تغييرها لحل المشكلة أدخل على قاعدة البيانات ثم اسم المستخدم الذي تريد تغيير كلمة المرور له , ثم في حقل كلمة المرور إضغط تعديل وإحذف التشفير القديم ,وإستبدله بالكلمة التالي قمت بعملها لك هي تشفير لكلمة سر "admin" قم بنسخها بدون مسافات واستبدلها 21232f297a57a5a743894a0e4a801fc3 بعد ذلك يمكنك تسجيل الدخول بإسم المستخدم الخاص بك وكلمة المرور admin
-
مناسب كبداية , من ناحية ال Cpu core i3 تفي بالغرض والرامات 2G يمكنك أتوقع ترقيتهم إلى مثلاً 3G في حالة لاحظت بطء في عمل الجهاز عند تحميل البرامج المطلوبة عند أي محل صيانة أجهزة كمبيوتر لو لاحظت بطء , لكن على الأغلب لن تواجه مشاكل بإذن الله
-
السلام عليكم @Naif Alruwaili بالنسبة لمتطلبات الجهاز ,لن تحتاج إلى جهاز ذو مواصفات عالية للإنخراط في أي من الدورات المقدمة , جهاز 4GB Ram , Core i3 يفي بالغرض ,وفيما يتعلق بمتطلبات دورة علوم الحاسوب أو أي دورة أخرى في الأكاديمية ,يتم ذكر أي متطلبات تحتاجها قبل البدء في أي مسار تعلم من قبل المدرب ,ومدة الدورة هي 35 ساعة فيديو تدريبي مقسم على عدة مقاطع فيديو وغير مرتبطة بوقت محدد باليوم تستطيع في وقت فراغك مشاهدة الدروس في أي وقت للمزيد عن دورة علوم الحاسوب علوم الحاسوب وللإطلاع على الدورات المقدمة بشكل عام من هنا دوراتنا , بالنسبة للغات HEX , سويفت , سي شارب ,سي بلس بلس , Objective-C , Swift فهذه الدورات لم يتم العمل عليها بعد , لكن إن شاء الله ستتوفر في المستقبل القريب في الأكاديمية إن شاء الله
-
مرحباً @محمد خالد19 يوجد خطأ في الكود الخاص بك , أنت تقوم بإسناد القيمة true إلى الواجهة panelGameOver وفي نفس الوقت تقوم بتدمير ال GameObject وهذا خطأ إستخدم الميثود Destroy حتى تقوم بشكل تلقائي بتدمير الأوبجيكت في حالة الخروج من اللعبة أي هكذا لاحظ الميثود OnTriggerEnter2D والميثود Destroy public void OnTriggerEnter2D(Collider2D other) { if( other.gameObject.tag=="game") { panelGameover.SetActive(true); } } public void Destroy(){ if (panelGameover != null) Destroy(panelGameover); }
-
أهلاً بك @اسماعيل صدوقي يمكن عمل ذلك ليس فقط من خلال الكوكيز , بل من خلال أيضاً sessionStorage أو localStorage , لكن على ما طلبت من خلال الكوكيز يمكنك عمل ميوثود في الكونترولر المسؤول وهذه الميثود وظيفتها تخزين قيمة مثلاً 1 في حالة قام بالتصويت أو 0 في حالة لم يصوت بعد ,لكن لا أنصح بذلك مباشرة لأنه ممكن أن ينشأ عن ذلك ثغرة أمنية , لكن الأفضل عند قيام المستخدم بالتصويت تقوم بحفظ القيمة 1 أو 0 في حقل مثلاً voted بعد ذلك نقوم بإسترجاع تلك القيمة من قاعدة البيانات وتخزينها في الكوكي هكذا مثال نقوم بعمل ميثود لتخزين و إسترجاع الكوكي في الكونترولر هكذا public function setVotedCookie(Request $request) { $minutes = 1; $voteResult = Vote::findOrFail($request->id)->setVoted('1'); $voteResult->withCookie(cookie('isvoted', '1', $minutes)); return $voteResult; ثم نقوم بإعادة قيمة الكوكي إلى الواجهة هكذا public function getVotedCookie(Request $request) { $value = $request->cookie('isvoted'); return view('main.votes',$value); } بعد ذلك فقط تتأكد من قيمة الكوكي الذي تم إرجاعها في الواجهة مثلاً if (!$value == 1) { {{echo "Not Voted!"}} }else{ {{echo "Already Voted!,Show Error MSG"}} } ,ملاحظة الطريقة المستخدمة في الموقع إن كان قيمة الكوكي فقط تخزن في الجلسة الحالية فطريقة الموقع لا أنصح بها , لأنه ببساطة يمكن للمستخدم تغيير قيمة الكوكي ويصبح لم يصوت ! بينما هو قام بالتصويت ,إن كان لا يوجد عمليات تحقق إضافية .
- 1 جواب
-
- 1
-
@مرحباً @اسماعيل صدوقي الخطأ بالعداة يشير إلى مشكلة بالأقراص لديك خاصة إن كانت SATA تفقد التوصيلات للقرص بعد ذلك قم بفحص القرص لمعرفة إن كان هناك sectors تالفة من خلال الأمر smartctl سيقوم بإظهار صحة الأقراص لديك
- 1 جواب
-
- 1
-
مرحباً@HA_shafeai يوجد عدة طرق للقيام بذلك مثلاً القيام بعمل أكثر من webpack.config.js ملف بإسم myfiles.config.js يشمل ما تريد تضمينه أو لا , أو الطريقة الأخرى هي من خلال إضافة ال Conditions إلى ملف webpack.config.js هكذا مع ما يتناسب من ملفات تريد إستثنائها module: { // configuration modules regarding modules rules: [ // rules for modules (configure loaders files, etc.) { // Conditions here: test: /\.js?$/, include: [ path.resolve(__dirname, "app") ], exclude: [ path.resolve(__dirname, "app/myfiles")], ] }
- 1 جواب
-
- 1
-
وعليكم السلام @خضر علي2 يمكنك القيام بذلك بعدة طرق من خلال الحصول على البيانات الراجعة من ال Intent هكذا الميثود getPath يتم تمرير المسار من ال intent بعد الإختيار وتقوم Intent intent = new Intent(); intent.setType("video/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Select Your Video"),REQUEST_TAKE_GALLERY_VIDEO); public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == REQUEST_TAKE_GALLERY_VIDEO) { Uri selectedImageUri = data.getData(); //Device FILE Manager filemanagerstring = selectedImageUri.getPath(); // Path From GALLERY selectedImagePath = getPath(selectedImageUri); if (selectedImagePath != null) { // new Intent that holdes selected path so we can use it in VideoAvtivity class or whatever your class is Intent intent = new Intent(Mainctivity.this, VideoAvtivity.class); intent.putExtra("path", selectedImagePath); startActivity(intent); } } } } public String getPath(Uri uri) { String[] projection = { MediaStore.Video.Media.DATA }; Cursor cursor = getContentResolver().query(uri, projection, null, null, null); if (cursor != null) { // NULLPOINTER IF CURSOR IS NULL // FILE MANAGER FOR PICKING THE MEDIA int column_index = cursor .getColumnIndexOrThrow(MediaStore.Video.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } else return null; }
- 1 جواب
-
- 1
-
السلام عليكم @Fahmy Mostafa حسب ما فهمت , إنك تريد طريقة لكيفية تشغيل السكربت الخاص بك من خلال ال terminal بغض النظر عن مكان وجوده ,إن كان كذلك الطريقة سهلة , أنشأ مجلد سيحتوي على سكربتات البايثون التي تريد ان تشغلها من اي مكان , فليكن الإسم myscript في المسار C:\Users\fahmy بعد ذلك ما سنقوم به هو إضافته كمسار عام من خلال الذهاب إلى جهاز الكمبيوتر ثم "Properties" ثم "Advanced system settings" ثم "Advanced" بعدها "Environment Variables" ثم قم بإختيار "Path" بعدها إضغط على زر "Edit" من النافذة التي ظهرت إضغط على زر "New" من الجزر الأيمن ثم نقوم بإضافة المسار الكامل إلى المجلد الذي قمنا بعمله مسبقاً أي هكذا C:\Users\fahmy\myscript بعدها إضغط تطبيق او موافق ثم أغلق اي واجهة اوامر او terminal كانت مفتوحة واعد تشغيل واجهة الأوامر مرة أخرى وجرب تشغيل السكربت الخاص بك من خلال الأمر مع اسم السكربت مثال test.py وسيعمل السكربت بدون مشاكل من اي مكان ,أما إن كان تريد معرفة مسار وجود ملف معين يمكنك إستخدام الأمر dir مع جزء او اسم الملف كاملاً هكذا وسيظهر لك الملف ومساره على جهاز الكمبيوتر dir script.py /s /p
- 3 اجابة
-
- 1
-
السلام عليكم @Asd Fgh أتوقع هذا شيء طبيعي يحدث عند تعلم شيء جديد لأول مرة خاصة البرمجة بشكل عام لأنه شيء مختلف إن لم تكن واجهتها سابقاً ,تماماً كما يحدث عند الحصول على وظيفة جديدة لم يسبق لك العمل بها , ستجد أنك تائه ولا تعلم كيف وأين تبدأ , حل الأمر بسيط برأيي الشخصي ,هو من خلال عمل تعديلات على المشروع الذي تدربت عليه في المسار ومحاولة تعديل وإضافة أشياء كإضافة أخرى للمشروع بعد ذلك تطوير تلك التعديلات وبناء شيء فوقها متقدم أكثر عن السابق ويمكنك البحث على الويب في حال واجهت صعوبة في عمل أو تعديل شيء ما في الكود أو لعمل ميزة معينة أو تعديل ترغب , بعد تطبيق السابق إن لاحظت بأنك طبقته بشكل ناجح , هذه نقطة البداية إبحث عن مشاريع PHP مفتوحة المصدر (PHP Open Source Projects) على الويب ستجد العديد , قم بتنزيلها على جهازك وكرر العملية السابقة مرة وأخرى , إلى حين الوصول إلى مرحلة يمكنك فيها بناء موقع ترغب به من خلال PHP وستصل مع التكرار والمحاولة بالطريقة ما ذكرته مسبقاً إن شاء الله , وأيضاً هذه الطريقة لا تقتصر على PHP فقط بل يمكنك إستخدامها لتعلم أي لغة برمجة جديدة وصدقني ستجدني نفعاً.
- 2 اجابة
-
- 2
-
السلام عليكم @Reda Boukheche مكان وضع هذا الكود حتى يظهر على جميع الصفحات يختلف من نظام إدارة محتوى إلى آخر , على العموم يجب وضعه في قسم يكون موجود في جميع الصفحات مثلاً الهيدر يكون متواجد في جميع صفحات الموقع لكن الكود الذي لديك هو جافا سكربت لذلك يفضل وضعه في الفوتر قبل نهاية الوسم </body> حتى لا يؤثر على سرعة تحميل الصفحات والفوتر يتم تحميله في جميع صفحات الموقع بالعادة لذلك الكود سيظهر على جميع الصفحات ,بالنسبة لإضافة شات تدعم اللغة العربية يرجى ذكر نظام إدارة المحتوى لديك حتى أقترح عليك واحدة ,لكن الأفضل هو zendesk التي تستخدمها يمكنك تعطيل طلب البريد الإلكتروني من خلال Settings > Widget > Forms ثم قم بإلغاء تفعيل Visitor profile عند القيام بذلك لن يتم طلب الإسم والإيميل من الزبون
-
مرحباً @Tamim Fahed يجب أن تقوم بشراء شهادة SSL وبعد تفعيلها من قبل المزود ستحصل على ملفات private.key و domain_name.crt و CA_root.crt وca_bundle_certificate.crt ستحتاجهم في الخطوة التالية بعد ذلك في ملف ال server.js أو أي كان الإسم لديك الخاص بملف السيرفر قم بإضافة var https = require('https'); var fs = require('fs'); بعد ذلك نقوم https properties اوبجيكت هكذا var https_properties = { key: fs.readFileSync("/dir/to/private.key"), cert: fs.readFileSync("/dir/to/domain_name.crt"), ca: [ fs.readFileSync('dir/to/CA_root.crt'), fs.readFileSync('dir/to/ca_bundle_certificate.crt') ] }; مع تغيير /dir/to إلى المسار الموجود فيه الملفات الخاص بالشهادة على سيرفرك بعد ذلك نقوم بعمل إتصال بالسيرفر من خلال https مع تضمين ال https_properties الذي قمنا بعمله سابقاً هكذا https.createServer(https_properties, function (req, res) { res.writeHead(200); res.end("Welcome to my HTTPS server "); }).listen(8443) بعد ذلك يجب أن يعمل السيرفر بإتصال https
-
وعليكم السلام @محمود رضا موسى بالتأكيد هذا ممكن ,لكن يوجد عدة أكواد يجب كتابتها وعمل middleware وcontrollers وجدول في قاعدة البيانات ,الأن نأتي لجزء البرمجة أولاً يجب أن تقوم بعمل جدول teachers مثل جدول users إن لم تكن قد عملت واحد .بعد ذلك نقوم بعمل Auth Controllers للteachers مشابه لتلك الموجودة إفتراضياً في المسار app/Http/Controllers/Auth/AuthController بعد ذلك نقوم Authenticating guards في ملف auth.php داخل مجلد config هكذا Route::group(['middleware' => ['web']], function () { //Login Routes... Route::get('/teacher/login','TeacherAuth\AuthController@popupLoginForm'); Route::post('/teacher/login','TeacherAuth\AuthController@login'); Route::get('/teacher/logout','TeacherAuth\AuthController@logout'); // Registration Routes... Route::get('teacher/register', 'TeacherAuth\AuthController@popupRegistrationForm'); Route::post('teacher/register', 'TeacherAuth\AuthController@register'); Route::get('/teacher', 'TeacherController@index'); }); والأن في AuthController.php في المسار TeacherAuth/AuthController.php أضف ميثودز عدد 2 لإظهار نموذج الدخول و نموذج التسجيل هكذا protected $redirectTo = '/teacher'; protected $guard = 'teacher'; public function popupLoginForm() { if (view()->exists('auth.authenticate')) { return view('auth.authenticate'); } return view('teacher.auth.login'); } public function popupRegistrationForm() { return view('teacher.auth.register'); } وقبل الجزء الأخير نقوم بعمل middleware للـ teacher هكذا class RedirectIfNotTeacher { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = 'teacher') { if (!Auth::guard($guard)->check()) { return redirect('/'); } return $next($request); } } أخيراً نقوم بتسجيل ال middleware في الkernal هكذا في ملف kernel.php كالتالي protected $routeMiddleware = [ 'teacher' => \App\Http\Middleware\RedirectIfNotTeacher::class, ]; هكذا يمكنك عمل Multi Auth او مصادقة لأكثر من جدول في نفس الوقت
-
أهلا بك @salehthemagnificent لا أعلم لماذا ترغب في إرسال هكذا عدد من الطلبات لموقع معين ,على أي حال يعتمد على طبيعة الطلب هل هو GET أم POST لأن ذلك سيستنزف موارد السيرفر أو الموقع الهدف , بالنسبة للغة البرمجة يوجد العديد والإختيار يعتمد على مدى معرفتك بتلك اللغة أو الإطار , منها الأفضل برأيي Go لغة صغيرة ,بسيطة , وأكواد نظيفة , يوجد لديهم مميزات للطلبات المتزامنة منها "goroutines" و "channels" , اللغة الثانية C/C++ لا أتوقع يوجد مشاكل من ناحية الأداء وغنية عن التعريف ,أخيراً بعد أن تقوم بعمل ال webservice التي تقوم بإرسال الطلبات ينبغي أن تضعها على أكتر من سيرفر لإرسال الطلبات في فترة أقل , والجزء الأهم إستخدم سيرفر كـ Loadbalancer لموزانة الطلبات وأفضلها في هذا المجال هو Linux Virtual Server يمكنه إرسال 500req/sec طلب بــ 1GHz رام بإستخدام 0.1% CPU
-
@انس مالك يوجد العديد من المكتبات التي يمكِنك إستخدامها لكل منها مميزات عديدة سواء من ناحية سهولة البرمجة أو التعلم , أنصحك بمكتبة SFML تعتبر هذه المكتبة الأسهل من ناحية التنصيب والتعَلٌم والفهم وهي من المكتبات المستخدمة في برمجة الألعاب المعتمدة على c++ , المٌمَيز في هذه المكتبة على الأكثر هو أنها مبنية على أساس المودلز (Modules Based) أي إن كنت تبني شيء بسيط أو يعتمد على أمور معينة يمكنك إستثناء المودلز الأخرى التي لا تحتاجها أي لا يوجد أكواد زائدة غير مستخدمة ,وهي crossplatform أي تستطيع البناء على أكثر من نظام في نفس الوقت , وأخيراً تدعم الربط مع مكتبات أخرى ,وبعض من المهارات التي تحتاجها الإلمام بلغة c++ بنسبة 80% وتعلم بناء وتطوير الألعاب من خلال المكتبة
-
مرحباً @Adam Ebrahim السبب بسيط وهو إنك تقوم بإسناد الخاصية checked بشكل مباشر في React.createElement عند فعل ذلك لن تتمكن من تغيير القيمة بالتأكيد لأن العنصر الحالي هو checked لكن يجب أن تستخدم قيمة إفتراضية ولفعل ذلك نقوم بإضافة الخاصية defaultChecked وإسناد القيمة true إليها الكود النهائي يصبح هكذا React.createElement('input',{type: 'checkbox', defaultChecked: true}); وأخيراً قم بإزالة <input type="checkbox" checked="checked" /> لأننا نقوم بعمل العنصر (الinput) من خلال الميثود createElement
- 3 اجابة
-
- 1
-
السلام عليكم ,ليس تواصل لكن يكون بياناته على نفس السيرفر وبالتالي تستطيعين إستخدامها من أجل معرفة الموقع أول بأول ,كتابة الأكواد ليس قليلة وأيضا ليست من جهة الأندرويد تحتاجين إلى برمجة سيرفر للتواصل مع التطبيقين
- 5 اجابة
-
- 1
-
يوجد عدة طرق لذلك ,أولها وأتوقع أفضلها في حالتك وهو من خلال عمل تطبيق خاص بك وهذه التطبيق يثبت على جوال سائق الإسعاف ويقوم بإرسال بيانات موقعه أول بأول على السيرفر الخاص بك ومن ثم تقومين بأخذ تلك الإحداثيات وإعادة رسمها على الخريطة في تطبيقك أو نسخة تطبيقك الأخرى أو في التطبيق نفسه لكن فليكن مثلا التطبيق الخاص بك يحتوي صلاحيات معينة وعند توفر تلك الصلاحيات يمكنك الإطلاع على موقع أقرب إسعاف بناء على بيانات الموقع الخاص بالسائق التي تم إرسالها مسبقا إلى السيرفر مثل تطبيقات أوبر وغيرها أو الديليفري,والطريقة الأخرى هي بالإعتماد على مواقع المستشفيات المقدم من خرائط جوجل للمدينة المتواجدة بها أنت لكن أتوقع ليست مناسبة في حال أردتي موقع سائق السيارة بالضبط لكن الطريقة الأولى على المستخدمة في هكذا نوع من التطبيقات
- 5 اجابة
-
- 1