-
المساهمات
19772 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
472
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
ذلك تحذير بأنّك تحاول حذف ملفات دعم إعداد Microsoft SQL Server 2022 بينما لا تزال هناك مكونات أخرى من SQL Server 2022 مثبتة تعتمد على تلك الملفات. اضغط على ok واستمر في عملية الحذف لا مشكلة، وسيتم حذف تلك المكونات. في حال استمرت المشكلة فربما لا تقوم بعملية الحذف بشكل صحيح، قم باختيار التالي Microsoft SQL Server من الإعدادات ثم اضغط على uninstall:
-
عليك تنفيذ الأوامر التالية لتفقد هل تم تثبيت Flutter SDK بشكل صحيح والتحقق من إضافة Flutter للـ Path في متغيرات النظام: flutter doctor flutter clean flutter pub get ويجب تثبيت إضافة Flutter في VS Code وأعد تشغيل VS Code بعد التثبيت. بالنسبة لـ Android Studio ومشكلة CMD-line tools، فتوجه إلى SDK Manager ثم SDK Tools وقم بإلغاء تحديد Android SDK Command-line Tools ثم أعد تحديده، واضغط Apply وانتظر اكتمال التحميل. أيضًا يجب تثبيت التالي: Android SDK Platform-Tools Android SDK Build-Tools Android SDK Command-line Tools في حال استمرت المشكلة احذف مجلد .android في مجلد المستخدم ثم أعد تثبيت Android Studio.
-
تلك البرامج لا تستهلك الكثير من موارد الحاسوب، وأيضًا مساحة التخزين لا تستهلكها، وفي مجال البرمجة كلاهما مهمان فالأولى تمثل قاعدة بيانات علائقية والأخيرة غير علائقية. وبخصوص المكتبات التي ستحتاجها بالنسبة لمجال تحليل البيانات وتعلم الآلة، فقم بتثبيت Anaconda لو كان لديك المساحة المناسبة على قرص الـ C، بينما لو تريد توفير مساحة تستطيع تثبيت Miniconda حيث تستطيع اختيار المكتبات التي تريدها أثناء التثبيت وليس تثبيت جميع المكتبات في Anaconda وعددها 1500 مكتبة.
-
توجه إلى الإعدادات ثم سفاري ابحث عن خيار اقتراحات سفاري وقم بتشغيل تلك الخاصية، بعد ذلك انزل للأسفل وابحث عن خاصية تعطيل الكوكيز وقم بإلغاء تفعيل تلك الخاصية. انزل للأسفل ثم اختر advanced ثم قم بتفعيل خيار JavaScript. في حال ما زال لا يعمل توجه لإعدادات سفاري مرة أخرى وقم بالضغط على خيار حذف السجل وبيانات الموقع واضغط حذف أو مسح.
-
توجد مكتبة لإطار لارافل للربط مع Nafath API ها هي: https://github.com/mohamad-zatar/saudi-nafath-integration/tree/v1.0 وبتفقد المكتبة يظهر عنوان الـ api هو التالي: $url = "https://$subdomain.semati.sa/nafath/api/v1/client/authorize/"; عامًة سواء من خلال PHP أو لارافل، للحصول على المفتاح ستحتاجين إلى التسجيل لدى الهيئة حيث يُشترط: جهات رسمية مرخصة من قبل وزارة التجارة أو الجهات الحكومية توقيع العقد ثم الربط من خلال منصة رابط: https://www.rabet.sa/plans?service_id=86
- 1 جواب
-
- 1
-
-
أرى أنّ المشكلة متواجدة على الهاتف، هل متواجدة أيضًا على الحاسوب؟
-
ما تقوم به جيد جدًا، لكن المشروع الذي تريد تنفيذه بحاجة إلى أن تدرس المسار الثاني في دورة بايثون حيث سيتم استكمال دراسة أساسيات بايثون وأيضًا دراسة كيفية التعامل مع البيانات أقصد ملفات CSV وبيانات JSON وقواعد البيانات، وسيتم توظيف ما تعلمنها أيضًا في تطبيقات عملية أخرى، وستكتسب خبرة منها. عامًة التركيز على الأساسيات هو الأهم ومشروع واحد لا يكفي، في البداية اجعل الأمر بسيطًا ثم زد من التعقيد، ولا تُفكر بالكود أولاً، بل حدد الفكرة التي تريد تنفيذها ثم قم بكتابة الميزات التي تريدها في البرنامج ثم تقسيم تلك الميزات إلى أجزاء والعمل على تنفيذها. ابدأ بتنفيذ الوظائف الأساسية CRUD وهي Create, Read, Update, Delete للطلاب والمعلمين/الصفوف، من خلال كلاسات وميثودز بداخلها مثلاً add_student(), delete_student(), show_grades()، ولا تحاول بناء كل الميزات مرة واحدة، حدد نطاقًا صغيرًا كإدارة الطلاب فقط. وبخصوص ربط الكلاسات بطريقة بسيطة، فاستخدم علاقة واحد إلى كثير بين الصفوف والطلاب أي حيث الصفوف بها عدد كبير من الطلاب بالتي كلاس الطالب يرث من الصف. class Grade: def __init__(self, name): self.name = name self.students = [] class Student: def __init__(self, name, grade): self.name = name self.grade = grade وأضف ميزة واحدة واقعية فقط كحساب متوسط درجات الطالب واستخدم ملفات JSON أو CSV لحفظ البيانات بدل قواعد البيانات المعقدة أو من الممكن sqlite3. وحدد مهلة أسبوع لإصدار نسخة أساسية بعدها انتقل للمسار التالي مع العمل على تحسين المشروع جانبياً وتطبيق ما تتعلمه في الدروس الجديدة، وذلك للموازنة بين إدارة وقتك وبين توفير مزايا واقعية. ولا تبحث عن الكمال في المشروع التدريبية، الأهم أن تتعلم من الأخطاء وتفهم العلاقات بين الكلاسات وتتعرف على نقاط ضعفك لتطويرها في المسار التالي.
-
تلك مكتبة مفتوحة المصدر مُخصصة لتحسين المعلمات الفائقة Hyperparameter Tuning في نماذج التعلم الآلي، وتعتمد على خوارزميات تحسين متقدمة منها Bayesian Optimization وTree-structured Parzen Estimator (TPE) وخوارزميات التطور CMA-ES. وذلك لتوجيه البحث نحو القيم المثلى للمعلمات بشكل فعال، خاصةً في المساحات عالية الأبعاد أو المعقدة. الإختلاف يكمن في أنّ GridSearchCV أثناء البحث تفحص كل التركيبات الممكنة، وغير فعّالة مع كثرة المعلمات، ومن حيث التعقيد فهي بسيطة لكن محدودة مع دعم محدود كذلك للتوازي، ومتاحة في Scikit-Learn، ومناسبة للمشاريع الصغيرة وفي حال تريد دقة مطلقة. بينما RandomizedSearchCV تختار عيّنات عشوائية من التوزيعات، وأفضل من GridSearch، لكنها تعتمد على الحظ، وهي متوسط التعقيد مع دعم محدود للتوازي ومتاحة في Scikit-Learn أيضًا، مناسبة لو تريد حل وسط بين السرعة والدقة. أما Optuna تستخدم تحسينًا تسلسليًا يتكيف مع النتائج السابقة، وهي الأكثر كفاءة، خاصةً مع النماذج المُكلفة، وتدعم مساحات معقدة كالتبعيات الشرطية بين المعلمات، وتدعم التوازي المُتقدم والتجارب الموزعة، لكن تتوفر من خلال مكتبة خارجية وتحتاج تكاملًا إضافيًا بالتالي تعقيد أكبر في الإعداد مقارنةً بما سبق وتحتاج استيعاب لخوارزميات التحسين، بالتالي مناسبة للمشاريع المعقدة وعندما تحتاج لكفاءة عالية.
- 2 اجابة
-
- 1
-
-
أرجو ذكر الدولة الخاصة بك، ولنقم بتجربة الأمر من خلال تشغيل VPN، فربما هناك مشكلة بسبب عنوان الـ IP الخاص بك أو بسبب شركة الإنترنت لديك. في حال استمرت المشكلة عند تشغيل الفيديو افتح الكونسول في المتصفح ووفر صورة للأخطاء التي به.
-
ربما المشكلة في الإنترنت لديك، أرجو تجربة تثبيت Cloudflare warp سواء على الحاسوب أو الهاتف، وتشغيله ثم تصفح الموقع، هل تظهر الفيديوهات لك؟ https://one.one.one.one/ في حال لم تظهر أرجو تجربة تسجيل الخروج ثم تسجيل الدخول مرة أخرى بالأكاديمية.
-
ستحتاج أولاً إلى إنشاء جدول الطلبات Orders من خلال الأمر: php artisan make:migration create_orders_table وكتابة الأعمدة التالية: Schema::create('orders', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained(); $table->enum('status', ['pending', 'approved', 'rejected'])->default('pending'); $table->boolean('small_admin_approved')->nullable(); $table->boolean('big_admin_approved')->nullable(); $table->timestamps(); }); ثم إنشاء نموذج Order: php artisan make:model Order وكتابة النموذج كالتالي: protected $fillable = [ 'user_id', 'status', 'small_admin_approved', 'big_admin_approved' ]; public function user() { return $this->belongsTo(User::class); } لإدارة الصلاحيات والأدوار، سنستخدم حزمة Spatie كالتالي: composer require spatie/laravel-permission php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" ثم إضافة أدوار المستخدمين في Seeder أو أي مكان مناسب: use Spatie\Permission\Models\Role; Role::create(['name' => 'small_admin']); Role::create(['name' => 'big_admin']); ثم معالجة الطلب من خلال متحكم OrderController: use App\Models\Order; use App\Notifications\NewOrderNotification; class OrderController extends Controller { public function store(Request $request) { $order = Order::create([ 'user_id' => auth()->id(), 'status' => 'pending' ]); $smallAdmins = User::role('small_admin')->get(); foreach ($smallAdmins as $admin) { $admin->notify(new NewOrderNotification($order)); } return to_route('orders.index')->with('success', 'تم إرسال الطلب للمراجعة'); } } ثم إنشاء إشعار NewOrderNotification: php artisan make:notification NewOrderNotification وضع التالي به: public function via($notifiable) { return ['database']; } public function toArray($notifiable) { return [ 'order_id' => $this->order->id, 'message' => 'طلب جديد يحتاج إلى موافقتك' ]; } وعليك استخدام السمة HasDatabaseNotifications في نموذج الـ User: use Illuminate\Notifications\HasDatabaseNotifications; class User extends Authenticatable { use HasDatabaseNotifications; } وبعد ذلك عليك إنشاء واجهة الموافقة ومعالجتها من خلال إنشاء ApprovalController: php artisan make:controller ApprovalController ثم كتابة الدوال المسؤولة عن المعالجة، أولاً نُرسل إشعار إلى Big Admin بكتابة التالي: public function approveBySmallAdmin(Order $order) { if (!auth()->user()->hasRole('small_admin')) { abort(403); } $order->update([ 'small_admin_approved' => true ]); $bigAdmins = User::role('big_admin')->get(); foreach ($bigAdmins as $admin) { $admin->notify(new OrderApprovedNotification($order)); } return redirect()->back(); } ثم معالجة الموافقة من خلال Big Admin وإرسال إشعار إلى المستخدم: public function approveByBigAdmin(Order $order) { if (!auth()->user()->hasRole('big_admin')) { abort(403); } $order->update([ 'big_admin_approved' => true, 'status' => 'approved' ]); $order->user->notify(new OrderCompletedNotification($order)); return redirect()->back(); } وأيضًا علينا معالجة الرفض وإرسال إشعار الرفض: public function rejectOrder(Order $order) { $user = auth()->user(); if ($user->hasRole('small_admin')) { $order->update([ 'small_admin_approved' => false, 'status' => 'rejected' ]); } elseif ($user->hasRole('big_admin')) { $order->update([ 'big_admin_approved' => false, 'status' => 'rejected' ]); } $order->user->notify(new OrderRejectedNotification($order)); return redirect()->back(); } وبالطبع عليك حماية المسارات routes بإنشاء Middleware للصلاحيات: php artisan make:middleware CheckSmallAdmin وكتابة التالي به: public function handle($request, Closure $next) { if (!auth()->user()->hasRole('small_admin')) { abort(403); } return $next($request); } ثم تسجيل الـ Middleware في bootstrap/app.php ->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'check.small_admin' => \App\Http\Middleware\CheckSmallAdmin::class, 'check.big_admin' => \App\Http\Middleware\CheckBigAdmin::class, ]); }) بالنسبة لواجهة المستخدم فأنشيء القالب resources/views/admin/orders/index.blade.php @foreach ($orders as $order) <div> Order #{{ $order->id }} @if($order->status === 'pending') <a href="{{ route('approve.small', $order) }}">موافقة</a> <a href="{{ route('reject.order', $order) }}">رفض</a> @endif </div> @endforeach
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل. عامًة يتم نشر المواقع والبرامج على استضافات تُمثل سيرفرات مثل أجهزة الكمبيوتر لكن بمواصفات مرتفعة، ويتم توفير ip للوصول لموقعك على ذلك السيرفر، ولكن المستخدمين العاديين لن يقوموا بكتابة ip لذا يتم شراء دومين ثم ربطه بالاستضافة عن طريق nameservers أو DNS ويتم تحويل المستخدمين إلى الموقع عند زيارة الدومين. أما لو أردت استخدام المشروع محليًا بدون نشره على الاستضافة، فستقوم بتشغيل خادم محلي، ستجد تفصيل هنا:
-
تقصد استبدال دورة بدورة أخرى، فالدورة مُقسمة إلى مسارات، بخصوص ما تريد أرجو التحدث لمركز المساعدة وإخبارهم بما تريد، وسيتم مساعدتك، بعد إرسال الرسالة أرجو الإنتظار قليلاً لحين الرد على رسالتك.
- 4 اجابة
-
- 1
-
-
تستطيع تعلمها في أي وقت لكن بدون خبرة المشاريع سيُصعب عليك استيعابها، الوقت المناسب هو بعد بناء أكثر من مشروع من الصفر من خلال لغة برمجية وهي بايثون بالنسبة لك، وليس من خلال إطار، لكن بشرط أن تكون قد أتقنت أساسيات البرمجة الكائنية OOP وهي: الكلاسات والكائنات الوراثة، التغليف، والتعددية الشكلية Polymorphism فهم العلاقات بين الكائنات مثل Composition وAggregation. ثم إتقان SOLID Principles لأنها أساس مهم لفهم Design Patterns. الآن ابدأ بالأنماط الأكثر استخدامًا وهي: Singleton Pattern Factory Pattern Observer Pattern Strategy Pattern ستجد مصادر هنا: أنماط التصميم
- 4 اجابة
-
- 2
-
-
-
أتفهم ما تمر به، هون عليك فلا يبدوا أنك شخص متكاسل، فمما رأيته أثناء دراستك للبرمجة أنت شخص مجهتد ولست كسول ولديك عقلية جيدة. لكن ربما أنت متكاسل بالفعل حيث توجه جهدك ناحية الإتجاه الغير صحيح، الحياة أولويات إن اختلط الترتيب ستحدث عواقب، لنتحدث بواقعية بعيدًا عن العواطف، في المرحلة التي أنت بها لديك أولوية واحدة وهي الدراسة بغض النظر عن المستقبل المهني، أنت حاليًا مطلوب منك العمل بجهد لأجل مستقبلك ولا يوجد لك أعذار، حتى لو وجدت لن تفيدك والخاسر الوحيد هو أنت. بعد الثانوية ستتخبط كثيرًا في حال لم تحصل على مجموع جيد، دعك من الكلية نفسها رغم أنها الأهم، لكن بحصولك على مجموع كبير ستحصل على فرصة دخول كلية جيدة لتعلم مهارات مطلوبة في سوق العمل سواء محليًا أو خارج بلدك، بالتالي تحصل على استقرار نسبي سواء ماديًا أو اجتماعيًا. أيضًا فرصة الإختلاط بأشخاص ذو عقلية جيدة مستنيرة، المحيط حولك هو ما يصنعك، ولا أعني ربط العقلية بالكلية لكن النسبة والفرص أكبر في الكليات التي تتطلب جهد ذلك ما أقصده. شئت أم أبيت هناك أمور لا تسير بها عكس التيار، ادخر ذلك الجهد ووجهه إلى أمر مفيد، ذلك أسهل وأفضل لك، بالطبع طالما ذلك بعيدًا عن الدين. وهناك أمور عفى عليها الزمن مثل الحصول على وظيفة حكومية في أغلب بلادنا العربية، هنا سر عكس التيار بقوة، فلا يوجد بها استقرار مادي أو اجتماعي، ذلك زمن قد ولى. بعد الدراسة تستطيع فعل ما تريد، طالما أديت ما عليك بأمانة فذلك مستقبلك افعل به ما شئت، وبالطبع هي ليست النهاية فهناك الكثير لم يحصلون على مجموع كبير وحياتهم مستقرة وجيدة بل وأحيانًا أفضل من الذي حصلوا على مجموع كبير. لكن تلك مسألة أقدار وأرزاق، وبالطبع هم اجتهدوا وسعوا في مسار آخر للوصول لذلك، فالسماء لا تُمطر ذهبًا، بالتالي الجهد الذي تدخره الآن ستقوم ببذله لاحقًأ لا مفر، فلا يوجد شيء ذو قيمة في الحياة بلا جهد، اختر ما تريد ولكن تحمل مسؤولية نتيجة اختيارك. ولا ما يسمى أنك ضعيف في مادة معينة، لا يوجد شخص غبي الجميع لديك نفس العقل مع فروقات فردية بالطبع مثل شخص جيد في الرياضة وهكذا، لكن الجميع قادر على دراسة جميع المواد، الفكرة الإلتزام وبذل الجهد.
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
- 1 جواب
-
- 1
-
-
كلاهما بنفس العائد المادي، لكن عامًة الرؤية الحاسوبية ليس بالمجال السهل، ويتم استخدامها في صناعات ليست بسيطة مثل السيارات الذكية والتي تعمل بالكهرباء غالبًا، وأيضًا المجالات الطبية والأمنية والروبوتات الصناعية والأتمتة، لذا في حال التخصص به العائد المادي أكبر لكن بعد سنوات خبرة 5 سنوات مثلاً. والأسهل والمطلوب أكثر هو تخصص NLP حيث يتم استخدام النماذج التوليدية في غالب التطبيقات حاليًا ليتمكن المستخدم من المحادثة والحصول على معلومات سواء نصية أو مرئية من خلال الصور، لكن أيضًا المنافسة به أكثر من مجال الرؤية الحاسوبية.
-
أرجو توضيح ما هي الدورة محل السؤال، بشكل عام في الدورات بعض الدروس يوجد بها تمارين لتنفيذها للتطبيق على ما جاء بالدرس، وفي كل مسار أو نهاية كل مسار يوجد مشروع عملي للتطبيق على المسار للتطبيق على ما جاء به. عامًة تستطيع السؤال أسفل الدرس في التعليقات لطلب تمارين للتطبيق على الدرس في حال لم تتوافر، وسيتم توفير تمارين لك بمستويات مختلفة ومراجعة الحل بعد تنفيذه.
-
جزئية نشر الألعاب لم يتم التطرق إليها في الدورة، تم التركيز على عملية التصميم والتطوير، ومحرك Godot يدعم نشر الألعاب على أنظمة سطح المكتب المختلفة أي نظام ويندوز، لينكس وماك، وأنظمة الهواتف وهي أندرويد وiOS بالإضافة إلى المتصفح أي تعمل اللعبة من خلال موقع ويب. أما أنظمة الكونسول فلا يوجد دعم لهما، أي ليست عملية مباشرة مثل النشر على منصات سطح المكتب أو الهاتف المحمول بسبب القيود القانونية والتقنية، أي لا يدعم Godot رسميًا النشر على منصات الكونسول الرئيسية PlayStation, Xbox, Nintendo Switch باستثناء Steam Deck عبر قوالب تصدير Linux الرسمية، وللنشر على الكونسول الأخرى، يجب عليك الاعتماد على شركات طرف ثالث متخصصة في نقل ألعاب Godot إلى تلك المنصات وتم ذكرها هنا: https://docs.godotengine.org/en/4.1/tutorials/platform/consoles.html وللعلم يتم تحديث الدورات كل فترة لذا يتم إضافة محتوى لها ومنها جزئية نشر الألعاب ربما يتم إضافتها في تحديثات قادمة، عامًة بعد الإنتهاء من الدراسة والتطوير سيتم مساعدتك في ذلك لو واجهت صعوبة وشرح الأمر بالتفصيل.
-
يوجد مكتبات مختلفة ذلك منها مكتبة scapy فهي تُرسل حزم ARP إلى جميع العناوين في الشبكة المحلية ثم تُجمع الردود لتحديد الأجهزة النشطة. أولاً تثبيت المكتبة: pip install scapy ثم استخدام الكود التالي: from scapy.all import ARP, Ether, srp import ipaddress def scan_wifi_devices(): subnet = "192.168.1.0/24" # غيّر التالي arp = ARP(pdst=subnet) ether = Ether(dst="ff:ff:ff:ff:ff:ff") packet = ether/arp result = srp(packet, timeout=3, verbose=0)[0] devices = [] for sent, received in result: devices.append({'IP': received.psrc, 'MAC': received.hwsrc}) print(f"connected devices ✅: {len(devices)}") for device in devices: print(f"IP: {device['IP']}, MAC: {device['MAC']}") scan_wifi_devices() وستحتاج إلى تغيير 192.168.1.0 حسب الشبكة لديك قم بكتابة ipconfig في منفذ الأوامر لو وجدت بجانب IPV4 address عنوان IP به 192.168.1.50 أي المختلف الرقم الأخير فاتركه كما هو لكن لو وجدت 192.168.0.50 أي المختلف الرقم قبل الأخير فقم بتغييره إلى 0 أو حسب الرقم الموجود لديك. ثم تشغيل الكود وسيظهر عدد الأجهزة المتصلة وأرقام الـ MAC address الخاصة بهم.
- 3 اجابة
-
- 1
-
