-
المساهمات
4376 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
30
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو بلال زيادة
-
Node.js و Laravel هما إطارات عمل شائعة تستخدم لتطوير تطبيقات الويب والتي يتم تنفيذها على خوادم الويب. إليك بعض الفروقات بينهما: استخدامات Node.js: Node.js يستخدم عادة في تطوير تطبيقات الويب ذات الواجهة الأمامية النشطة (Active Front-End) وتطبيقات الويب ذات الوقت الحقيقي (Real-time). ويستخدم Node.js أيضا في بناء تطبيقات الهاتف المحمول والتي تتطلب تنفيذ العديد من المهام المتزامنة. استخدامات Laravel: Laravel يستخدم بشكل رئيسي في تطوير تطبيقات الويب الكبيرة والمعقدة التي تتطلب استخدام قواعد بيانات وتواصل مع العديد من المكونات الخارجية. كما يستخدم Laravel في تطوير تطبيقات الإدارة والنظم الإدارية الكبيرة والمتقدمة. الأداء: Node.js يتميز بأدائه العالي في تطوير التطبيقات ذات الوقت الحقيقي (Real-time) والتطبيقات ذات الواجهة الأمامية النشطة (Active Front-End) بسبب قدرته العالية على التعامل مع الأحداث والطلبات المتزامنة. بينما يتميز Laravel بأدائه الجيد في تطوير التطبيقات الكبيرة والمعقدة والتي تتطلب استخدام قواعد بيانات كبيرة ومكونات خارجية. بشكل عام، تختلف استخدامات Node.js و Laravel حسب نوع التطبيق المطلوب والمتطلبات التقنية له. ويمكن استخدام كلا الإطارين بنجاح في تطوير التطبيقات الويب المختلفة، وذلك بحسب الحاجة والمتطلبات التقنية للمشروع.
- 7 اجابة
-
- 1
-
يمكنك استخدام Laravel لبناء موقع للاحداث والفعاليات. سيكون عليك العمل على الخطوات التالية: إنشاء قاعدة بيانات تحتوي على جدول للأحداث وجدول للزوار. إنشاء نموذج Event و Visitor باستخدام الأمر php artisan make:model وتعريف العلاقة بينهما في الملفات Model. إنشاء وحدات تحكم (Controllers) لإدارة الأحداث والزوار باستخدام الأمر php artisan make:controller وتحديد الوظائف المطلوبة. إنشاء العرض الرئيسي (Home page) وعرض الأحداث التي لم تنته بعد باستخدام الدالة where في الاستعلام عن قاعدة البيانات. إنشاء العرض الخاص بتسجيل الزوار لحدث معين، يمكنك استخدام الدالة create في وحدة التحكم لإنشاء سجل جديد في جدول الزوار. إضافة نموذج الزوار وحقول الإدخال المطلوبة مثل اسم الزائر والبريد الإلكتروني وحقل الحدث. عرض قائمة بجميع الزوار المسجلين في الحدث باستخدام الدالة get في الاستعلام عن قاعدة البيانات. تحديد العلاقة بين جدول الأحداث وجدول الزوار باستخدام المفتاح الأجنبي في قاعدة البيانات. إضافة حماية للصفحات التي يتم الوصول إليها بعد تسجيل الدخول باستخدام ال Middleware. إضافة نظام تسجيل الدخول والتحقق من صحة بيانات المستخدمين بإستخدام Laravel Authentication. تلك هي بعض الخطوات الأساسية لإنشاء موقع للاحداث والفعاليات باستخدام Laravel. يجب عليك دراسة Laravel بشكل أكبر لتفهم الأمور بشكل أفضل وتطوير مهاراتك.
- 2 اجابة
-
- 1
-
لفتح ملف PDF في تطبيق Android، يمكنك استخدام Intent لفتح التطبيق المناسب لعرض الملفات PDF. يمكن استخدام Intent لفتح تطبيقات PDF المثبتة على الجهاز مثل Adobe Acrobat Reader أو Google Drive. لفتح الملف PDF الذي تم إنشاؤه باستخدام Pdfdocument، يمكن استخدام الكود التالي: File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/myPDFfile.pdf"); Uri uri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, "application/pdf"); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); try { startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(getApplicationContext(), "No Application available to view pdf", Toast.LENGTH_LONG).show(); } يتم استخدام كائن File للوصول إلى الملف الذي تم إنشاؤه في الذاكرة الخارجية للجهاز. يتم تحويل ملف File إلى كائن Uri باستخدام Uri.fromFile. يتم إنشاء كائن Intent وتعيين نوع البيانات على "application/pdf". يتم تعيين العلم FLAG_ACTIVITY_CLEAR_TOP لإزالة أي تراكم للنشاطات عند عرض الملف. أخيرًا ، يتم استخدام startActivity لبدء Intent. قد تحتاج أيضًا إذن للوصول إلى الذاكرة الخارجية في ملف AndroidManifest.xml الخاص بالتطبيق. يمكن استخدام الإذن التالي: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> وبهذا يتم فتح ملف PDF الذي تم إنشاؤه باستخدام Pdfdocument في تطبيق PDF المناسب.
-
و عليكم السلام ورحمة الله وبركاته ، يوجد بالدورة شروح كيفية دفع الملفات إلى الجيت هاب و لا يوجد دروس مفصلة لشرح الجيت هاب ، يمكنك تعلمها لوحدك أو من دروس على اليوتيوب فهي سهلة كثيرً
- 5 اجابة
-
- 1
-
يمكنك إنشاء سلايدر من خلال html , css , js بحيث يمكن إنشاء كود html بهذا الشكل <div class="slider-container"> <div class="slider"> <div class="slide"><img src="slide1.jpg"></div> <div class="slide"><img src="slide2.jpg"></div> <div class="slide"><img src="slide3.jpg"></div> </div> <button class="prev">Prev</button> <button class="next">Next</button> </div> ثم يجب تنسيق هذا السلايدر باستخدام css .slider-container { position: relative; width: 100%; height: 400px; overflow: hidden; } .slider { position: absolute; width: 300%; height: 100%; display: flex; transition: transform 0.5s ease; } .slide { width: 33.333%; height: 100%; display: flex; justify-content: center; align-items: center; } .slide img { max-width: 100%; max-height: 100%; } button { position: absolute; top: 50%; transform: translateY(-50%); background: transparent; border: none; color: #fff; font-size: 24px; cursor: pointer; } .prev { left: 10px; } .next { right: 10px; } ثم لاستكمال أحداث السلايدر من زر التالي و زر السابق و تحريك الصور يجب استخدام جافاسكربت بهذا الشكل const slider = document.querySelector('.slider'); const prevBtn = document.querySelector('.prev'); const nextBtn = document.querySelector('.next'); let counter = 0; nextBtn.addEventListener('click', () => { counter++; if (counter > 2) { counter = 0; } slider.style.transform = `translateX(-${counter * 33.333}%)`; }); prevBtn.addEventListener('click', () => { counter--; if (counter < 0) { counter = 2; } slider.style.transform = `translateX(-${counter * 33.333}%)`; });
- 4 اجابة
-
- 1
-
لفتح ملف Python والبدء في كتابة الشفرة، يمكن اتباع الخطوات التالية: قم بفتح أحد برامج التحرير المناسبة للغة Python على جهاز الكمبيوتر الخاص بك. على سبيل المثال، يمكن استخدام برنامج Sublime Text أو PyCharm. بعد فتح البرنامج، قم بإنشاء ملف جديد بالنقر على "File" ثم "New File" في Sublime Text أو "File" ثم "New" في PyCharm. يجب حفظ الملف الجديد بامتداد .py، وهو امتداد الملفات المرتبط بلغة Python. يمكن بعد ذلك كتابة الشفرة داخل الملف. على سبيل المثال، إذا كان هدفك هو إنشاء صفحة ويب باستخدام إطار عمل Django، يمكنك بدء العمل على ملف urls.py الذي يحتوي على الرابط المراد إنشاؤه. بعد الانتهاء من كتابة الشفرة، يجب حفظ الملف باستخدام الأمر "Save" في القائمة "File"، ويمكن تشغيلها بالضغط على زر التشغيل أو عن طريق القيام بالتنفيذ من خلال سطر الأوامر. يجب ملاحظة أن هذه الخطوات تشير إلى الطريقة الأساسية لفتح وتحرير ملف Python. يمكن أيضًا استخدام برامج محررات مختلفة أو العديد من الأدوات الأخرى التي تساعد على تسهيل عملية البرمجة بلغة Python.
-
نعم، يوجد العديد من الفيديوهات التعليمية التي تشرح كيفية الاتصال بقواعد البيانات SQLite باستخدام Node.js واستخراج البيانات التي تم إدخالها من قبل المستخدم. هناك العديد من الفيديوهات المتاحة باللغتين العربية والإنجليزية على مواقع مثل YouTube و Udemy وغيرها. يمكنك البحث عن "Node.js SQLite tutorial" أو "Node.js SQLite database tutorial" للعثور على الفيديوهات المتاحة. من المهم الإشارة إلى أنه ينبغي عليك التأكد من مصداقية المصدر وجودة المحتوى قبل الاعتماد عليه لأن هذا سيؤثر على جودة تعلمك وفهمك للموضوع.
-
يمكن لحصولك على شهادات في مجال تطوير واجهات المستخدم وتصميم الويب، واكتساب الخبرة اللازمة في هذا المجال أن يساعدك في الحصول على فرص عمل في الأوروبا أو في أي مكان آخر في العالم. ومع ذلك، يجب أن تتذكر أن الحصول على فرص العمل يتطلب أيضًا الكثير من العوامل الأخرى، بما في ذلك مهارات التواصل والتفاوض والعمل الجماعي والقدرة على التكيف مع بيئة العمل المختلفة وغيرها. لذلك، يجب عليك أيضًا العمل على تطوير مهاراتك في هذه المجالات والسعي لتوسيع شبكة اتصالاتك المهنية والبحث عن فرص التدريب والعمل المناسبة لك. في النهاية، إذا كنت متحمسًا لتعلم البرمجة وتطوير مهاراتك، وكنت ملتزمًا بالتدريب المناسب والعمل الجاد، فإنك ستجد فرصًا كثيرة للنمو والتطور في هذا المجال.
- 4 اجابة
-
- 1
-
Auth0 هي خدمة مصممة لإدارة الهوية والوصول للتطبيقات والخدمات الرقمية. توفر Auth0 واجهة برمجة تطبيقات (API) تتيح للمطورين تسجيل مستخدمي التطبيقات وتوفير خدمات مثل التحقق من الهوية والتراخيص وإدارة الجلسات. تتيح Auth0 للمطورين تسجيل مستخدمي التطبيق باستخدام مزودي هوية مختلفين مثل Google وFacebook وTwitter وGitHub وغيرها، بالإضافة إلى توفير خدمة التحقق الثنائي وخدمة الرموز المؤقتة وغيرها من الميزات الأمنية. يمكن استخدام Auth0 في تطوير تطبيقات الويب والجوال والأجهزة الذكية وغيرها من الخدمات الرقمية، ويعتبر Auth0 من بين الحلول الشائعة لإدارة الهوية والوصول في السوق.
-
تشير رسالة الخطأ إلى وجود تعليق لم يتم إنهاؤه على السطر 106 من ملف "module.php" لإصلاح الخطأ ، تحتاج إلى إكمال التعليق بإضافة علامة الإغلاق "* /" في نهاية التعليق. /* This is a comment that needs to be terminated */
-
إذا كنت تواجه مشكلات مع عدم تحميل "https://repo.packagist.org" بالكامل ، فقد يرجع ذلك إلى مشكلة مؤقتة في الشبكة أو الخادم. يمكنك المحاولة مرة أخرى لاحقًا أو التحقق من حالة خدمة Packagist لمعرفة ما إذا كان هناك أي انقطاع معروف. من المحتمل أيضًا أن تكون هناك مشكلة في اتصال الشبكة أو إعدادات جدار الحماية ، لذا يمكنك محاولة الوصول إلى موقع الويب من جهاز أو شبكة مختلفة لاستبعاد هذه الاحتمالات.
- 4 اجابة
-
- 1
-
يبدو أنك لم تفهم ما قصدته سأرفق لك مثلاً يوضح هذا الأمر $user_id = 1; // Connect to the database $conn = mysqli_connect("hostname", "username", "password", "database_name"); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // Prepare the update query $query = "UPDATE table_name SET message = '' WHERE user_id = $user_id"; // Execute the query $result = mysqli_query($conn, $query); // Check if the query was successful if ($result) { echo "Column message emptied successfully"; } else { echo "Error: " . $query . "<br>" . mysqli_error($conn); } // Close the connection mysqli_close($conn); لاحظ انه يتم تفريغ حقل message لليوزر بناء على id لخاص به ، أي عندما تقوم بإرسال رسالة إلى جميع الأعضاء يجب عليك تخزين هذه الرسالة في حقل message و من ثم عندما يقوم المستخدم بقراءة هذه الرسالة يمكنه تفريغ هذا الحقل message بناء على id الخاص به .
-
هناك العديد من الإضافات على VS Code تستخدم لتنقيح الكود و إظهار تحذيرات أو الأخطاء في الكود و ربما يكون هذا شيء خاطئ لذلك إذا كان الكود يعمل فحاول إزالة أي إضافة لا تريدها في VS Code .
- 3 اجابة
-
- 1
-
إذا كان المكون الذي تعمل معه منفصلاً عن مثيل Vue الجديد ، فلن يتمكن من الوصول إلى نظام تفاعل Vue. هذا يعني أنك إذا أجريت تغييرات على البيانات الموجودة في المكون ، فلن تنعكس التغييرات في طريقة العرض تلقائيًا. للاستفادة من نظام تفاعل Vue ، ستحتاج إلى إنشاء مثيل Vue جديد واستخدام المكون داخل هذا المثال. من خلال إنشاء مثيل Vue جديد ، يمكنك استخدام بيانات وأساليب تفاعلية داخل المكون. على سبيل المثال ، يمكنك تخزين بيانات الرسالة في خاصية تفاعلية واستخدامها في النموذج. عند إجراء تغييرات على البيانات ، سيتم تحديث العرض تلقائيًا ليعكس هذه التغييرات. هذا يجعل بناء واجهات مستخدم ديناميكية وتفاعلية أسهل بكثير. بالإضافة إلى ذلك ، باستخدام مثيل Vue جديد ، يمكنك الاستفادة من ميزات Vue الأخرى ، مثل خطافات دورة الحياة lifecycle hooks ، والخصائص المحسوبة computed properties ، والأحداث المخصصة custom events ، والتي يمكن أن تجعل التعليمات البرمجية الخاصة بك أكثر تنظيماً وقابلية للصيانة.
- 3 اجابة
-
- 1
-
فيما يلي كود PHP بسيط يسمح للمستخدم بحذف رسالة مرسلة إلى جميع المستخدمين: <?php // Connect to the database $db = mysqli_connect("host", "username", "password", "database"); // Check if the user has submitted the form if (isset($_POST['delete'])) { // Get the message id from the form $id = $_POST['id']; // Delete the message from the database $sql = "DELETE FROM messages WHERE id='$id'"; mysqli_query($db, $sql); // Redirect the user back to the messages page header("Location: messages.php"); exit; } // Get the message id from the URL $id = $_GET['id']; // Retrieve the message from the database $sql = "SELECT * FROM messages WHERE id='$id'"; $result = mysqli_query($db, $sql); $message = mysqli_fetch_assoc($result); ?> <!-- Display the message and the delete form --> <h2><?php echo $message['subject']; ?></h2> <p><?php echo $message['body']; ?></p> <form action="" method="post"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <input type="submit" name="delete" value="Delete"> </form> يستخدم هذا البرنامج النصي قاعدة بيانات MySQL لتخزين الرسائل. ستحتاج إلى استبدال "المضيف" و "اسم المستخدم" و "كلمة المرور" و "قاعدة البيانات" بالقيم المناسبة لإعدادك. عندما يرسل المستخدم النموذج ، يتم حذف الرسالة من قاعدة البيانات وإعادة توجيه المستخدم مرة أخرى إلى صفحة الرسائل. إذا لم يرسل المستخدم النموذج ، يقوم البرنامج النصي باسترداد الرسالة من قاعدة البيانات ويعرضها مع نموذج الحذف.
-
تواصل مع الإدارة من الحساب الذي تستخدمه الأن و تخبرهم بمشكلتك سوف يعملون على حل مشكلتك بأسرع وقت
- 5 اجابة
-
- 1
-
لن تستطيع استخدامه و يجب عليك استخدام حساب آخر و وتم إيقافه يعني أنه لن تستطيع استخدامه مرة أخرى .
- 5 اجابة
-
- 1
-
هذا يعني أنه حسابك قد يكون خالف بعض الأنظمة الخاصة بالإكاديمية لذلك تم إيقافه
- 5 اجابة
-
- 1
-
نعم ، يبدو أن الرمز صحيح. إنه برنامج بسيط يتيح لك البحث عن رقم هاتف أو اسم وإضافة مستخدمين جدد. ومع ذلك ، هناك بعض الأشياء التي يمكن تحسينها: في دالة search_by_phone_number ، الشرط أثناء while len(phone_number) != 10 and not int(phone_number) سيتم تقييمه دائمًا إلى True لأن عامل التشغيل يتطلب أن يكون كلا الشرطين صحيحًا not int(phone_number) سيكون دائمًا صحيحًا كما int(phone_number) إلى ValueError إذا لم يكن phone_number عددًا صحيحًا. لا يتعامل الرمز مع الأخطاء التي قد تحدث ، مثل إذا قام المستخدم بإدخال رقم هاتف غير صحيح في دالةsearch_by_phone_number. لا يتعامل الرمز مع التكرارات ، لذا فإن إضافة مستخدم برقم هاتف أو اسم موجود بالفعل سيؤدي إلى إضافة نفس رقم الهاتف أو الاسم عدة مرات.
- 5 اجابة
-
- 2
-
فيما يتعلق بالرسالة التي تشير إلى تلف المقطع ، فمن المحتمل أن يكون ذلك بسبب عدم فك تشفير الفيديو أو كتابته بشكل صحيح في الملف. لإصلاح هذه المشكلة ، يمكنك محاولة استخدام مكتبة مثل flutter_video_compress أو video_player لفك تشفير الفيديو وتشغيله. import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:flutter_video_compress/flutter_video_compress.dart'; import 'package:path_provider/path_provider.dart'; import 'package:video_player/video_player.dart'; class DownloadPage extends StatefulWidget { @override _DownloadPageState createState() => _DownloadPageState(); } class _DownloadPageState extends State<DownloadPage> { TextEditingController _linkController = TextEditingController(); VideoPlayerController _videoPlayerController; bool _isLoading = false; double _progress = 0; Future<void> _downloadVideo(String link) async { setState(() { _isLoading = true; }); final directory = await getTemporaryDirectory(); final tempPath = directory.path + '/temp_video.mp4'; var response = await http.get(Uri.parse(link)); var file = File(tempPath); await file.writeAsBytes(response.bodyBytes); final videoCompress = FlutterVideoCompress(); final result = await videoCompress.compressVideo(tempPath, quality: VideoQuality.LowQuality); final videoPath = result["videoPath"]; _videoPlayerController = VideoPlayerController.file(File(videoPath)) ..initialize().then((_) { setState(() {}); }); setState(() { _isLoading = false; _progress = 0; }); showDialog( context: context, builder: (context) => AlertDialog( title: Text('Download Complete'), content: Text('Video has been saved to $videoPath'), actions: [ ElevatedButton( child: Text('OK'), onPressed: () { Navigator.of(context).pop(); }, ), ], ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Download Video'), ), body: Padding( padding: EdgeInsets.all(16.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ TextField( controller: _linkController, decoration: InputDecoration( hintText: 'Enter YouTube link', ), ), SizedBox(height: 16.0), _isLoading ? Column( children: [ LinearProgressIndicator( value: _progress, ), SizedBox(height: 16.0), Text('$_progress %'), ], ) : ElevatedButton( child: Text('Download'), onPressed: () { _downloadVideo(_linkController.text); }, ), ], ), ), ); } }
-
يمكن لأجهزة الكمبيوتر الاتصال مباشرة بأجهزة التوجيه ، ولكن هناك حالات يتم فيها الاتصال من خلال المحولات switches أولاً. يستخدم هذا السيناريو الأخير عادةً لتحسين أداء الشبكة ، عن طريق توصيل أجهزة الكمبيوتر مباشرة بالمحولات switches ، وتوصيل المحولات ببعضها البعض مباشرة لتوجيه أجهزة الكمبيوتر عبر أجهزة التوجيه.
-
مرحباً محمد ، يعمل المودم في الطبقة المادية لنموذج OSI (Open Systems Interconnection). الطبقة المادية مسؤولة عن نقل بتات البيانات الخام عبر قناة اتصال.