اذهب إلى المحتوى

Ziyad Hasan

الأعضاء
  • المساهمات

    52
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Ziyad Hasan

  1. ال xdebug لا يعمل مع vscode والاعدادات في الصور
  2. ال xdebug لا يعمل مع vscode عند listen for debug و استخدام المتصفح و الا عدادات في الصور
  3. انا امتلك cpanel in shared web hosting و اريد تحميل node عليه بواسطة terminal
  4. اريد تعديل الكود في ملف blade لكي يعمل مع private channel
  5. أنا أريد أن احول laravel public channel ل private channel لكي تعمل مع pusher بدون laravel echo و هذا الكود في ملف events/newNotification class NewNotification implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; /** * Create a new event instance. * * @return void */ protected $user_id; protected $comment; protected $user_name; protected $post_id; protected $data; protected $time; protected $post_user_id; public function __construct($data = []) { $this->user_id = $data['user_id']; $this->user_name = $data['user_name']; $this->comment = $data['comment']; $this->post_id = $data['post_id']; $this->post_user_id = $data['post_user_id']; $this->date = date("Y-m-d", strtotime(Carbon::now())); $this->time = date("h:i A", strtotime(Carbon::now())); } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new PrivateChannel('new-notification.'.$this->post_user_id); } } وهذا الكود في ملف blade Pusher.logToConsole = true; var pusher = new Pusher("4fb4fa908d87ec86abf9", { cluster: 'eu' }); var notificationsWrapper = $('.dropdown-notifications'); var notificationsToggle = notificationsWrapper.find('a[data-toggle]'); var notificationsCountElem = notificationsToggle.find('span[data-count]'); var notificationsCount = parseInt(notificationsCountElem.data('count')); var notifications = notificationsWrapper.find('li.scrollable-container'); // Subscribe to the channel we specified in our Laravel Event var channel = pusher.subscribe('private-new-notification.'+1); // Bind a function to a Event (the full Laravel class) channel.bind('App\\Events\\NewNotification', function (data) { var existingNotifications = notifications.html(); var newNotificationHtml = `<a href="`+data.user_id+`"><div class="media-body"><h6 class="media-heading text-right">` + data.user_name + `</h6> <p class="notification-text font-small-3 text-muted text-right">` + data.comment + `</p><small style="direction: ltr;"><p class="media-meta text-muted text-right" style="direction: ltr;">` + data.date + data.time + `</p> </small></div></div></a>`; notifications.html(newNotificationHtml + existingNotifications); notificationsCount += 1; notificationsCountElem.attr('data-count', notificationsCount); notificationsWrapper.find('.notif-count').text(notificationsCount); notificationsWrapper.show(); }); </script>
  6. يجب أن تبدأ بدورة علوم الحاسوب لأن هذه الدورة تعتبر مهمة جدا لانك سوف تتعلم اساسيات كثيرة و التي سوف تساعدك علي فهم باقي الدورات و يجب بعد الانتهاء من هذه الدورة أن تختار مجال واحدا من هذه المجالات تطوير مواقع الويب تطوير الالعاب تطوير تطبيقات الموبايل الذكاء الصناعي الأمن السيبراني ولكل مجال لغات برمجة يجب أن تتعلمها فمثلا مجال تطوير مواقع الويب ينقسم الى frontend development: ,وهنا سوف تتعلم تصميم المواقع backend development : وهنا سوف تتعلم التعامل مع قواعد البيانات و في frontend development سوف تحتاج أن تتعلم هذه اللغات html css javascript وفي backend development :سوف تختار لغة واحدة مع قاعدة البيانات التي تريد ان تتعامل معها فمثلا لغة php مع قاعدة بيانات mysql لغة javascript مع قاعدة بيانات mongo و يمكنك الاطلاع على هذه المقالة من الرابط هنا
  7. الأفضل إستخدام semantic element دائما في كل مشاريعك لكي تجعل الكود الخاص بك اكثر سهولة في القراءة و التعديل و تحسين search engine optimization و semantic element مثل <header> : تستخدم مع header الخاص بال document <footer> : تستخدم مع footer الخاص بال document <nav> : تستخدم مع روابط التنقل <main>: تستخدم مع المحتوي الرئيسي للموقع <section>: تستخدم مع قسم في الموقع <article>: تستخدم مع مقالة في الموقع <address>: تستخدم مع المعلومات الخاصة بالتواصل <figure>:تستخدم مع الصور و الرسوم البيانية
  8. يجب أن تبدأ بدورة علوم الحاسوب لأن هذه الدورة تعتبر مهمة جدا لانك سوف تتعلم اساسيات كثيرة و التي سوف تساعدك علي فهم باقي الدورات و يجب بعد الانتهاء من هذه الدورة أن تختار مجال واحدا من هذه المجالات تطوير مواقع الويب تطوير الالعاب تطوير تطبيقات الموبايل الذكاء الصناعي الأمن السيبراني ولكل مجال لغات برمجة يجب أن تتعلمها فمثلا مجال تطوير مواقع الويب ينقسم الى frontend development: وهنا سوف تتعلم تصميم المواقع backend development : وهنا سوف تتعلم التعامل مع قواعد البيانات و في frontend development سوف تحتاج أن تتعلم هذه اللغات html css javascript وفي backend development :سوف تختار لغة واحدة مع قاعدة البيانات التي تريد أن تتعامل معها فمثلا لغة php مع قاعدة بيانات mysql لغة python مع قاعدة بيانات mysql و يمكنك الاطلاع على هذه المقالة من الرابط هنا
  9. == تستخدم مع if condition لكي تحدد إذا كان هناك فرق بين المتغيران أو لا يوجد فرق بدون الإعتماد على نوع المتغيران بينما === تستخدم مع if condition لكي تحدد إذا كان هناك فرق بين المتغيران أو لا يوجد فرق و لكن تعتمد على نوع المتغيران كما في المثال الأتي let age='1' let age2=1 if(age == age2){ console.log('good') } if(age === age2){ console.log('nice') } لاحظ في المثال السابق أن age لها قمية 1 و لكن النوع string اما age2 لها قيمة 1 و لكن النوع number لذلك الناتج سوف يكون good في الكونسول لأن == لا تعتمد على نوع المتغيران
  10. ممكن تحذف الكاش عن طريق ctrl + f5 والأفضل توضح الكود المكتوب
  11. تواصل مع الدعم من خلال الرابط هنا
  12. يجب أن تبدأ بدورة علوم الحاسوب لأن هذه الدورة تعتبر مهمة جدا لانك سوف تتعلم اساسيات كثيرة و التي سوف تساعدك علي فهم باقي الدورات و يجب بعد الانتهاء من هذه الدورة أن تختار مجال واحدا من هذه المجالات تطوير مواقع الويب تطوير الالعاب تطوير تطبيقات الموبايل الذكاء الصناعي الأمن السيبراني ولكل مجال لغات برمجة يجب أن تتعلمها فمثلا مجال تطوير مواقع الويب ينقسم الي frontend development: ,وهنا سوف تتعلم تصميم المواقع backend development : وهنا سوف تتعلم التعامل مع قواعد البيانات و في frontend development سوف تحتاج أن تتعلم هذه اللغات html css javascript وفي backend development :سوف تختار لغة واحدة مع قاعدة البيانات التي تريد ان تتعامل معها فمثلا لغة php مع قاعدة بيانات mysql لغة javascript مع قاعدة بيانات mongo و يمكنك الاطلاع على هذه المقالة من الرابط هنا
  13. عبارة عن حلول لمشاكل معروفة في مجال السوفتوير و كل نمط يمثل مخطط الذي يمكن التعديل عليه لكي يحل المشكلة و تسهل التواصل بين المبرمجين و تلك الحلول تم إختبارها لكي تعطي افضل سرعة وتنقسم إلى Creational patterns و هي عبارة عن انماط لأنشاء كائنات على أساس المعيار المطلوب مثل - Abstract factory -Builder -Dependency Injection -Factory method -Lazy initialization -Multiton -Object pool -Prototype -Singleton 2.. Structural patterns وهي عبارة عن أنماط لتنظيم class وكائنات مختلفة لتشكيل هياكل أكبر وتوفير وظائف جديدة مثل -Adapter -Bridge -Composite -Facade 3.behavioral patterns وهي تحديد أنماط الأتصال المشتركة بين الكائنات مثل -Blackboard -Command -Interpreter -Iterator ويكنك الأطلاع علي هذه المقالة الرابط هنا
  14. بالأضافة لما قاله شرف الدين يمكنك إستخدام var لبناء property on the global object بينما لا تستطيع أن تستخدم let كما في المثال الأتي var foo = "Foo"; // globally scoped let bar = "Bar"; // globally scoped لن تسمح ب console.log(window.foo); // Foo console.log(window.bar); // undefined و var تسمح لك بإعادة تعريف المتغير بينما let تعطي SyntaxError في "strict mode" كما في المثال الأتي 'use strict'; var foo = "foo1"; var foo = "foo2"; // foo1 سوف تستبدل foo2 لا توجد مشكلة let bar = "bar1"; let bar = "bar2"; // SyntaxError: Identifier 'bar' has already been declared
  15. تستطيع التواصل مع الدعم من خلال هذا الرابط هنا
  16. إستخدم insertAdjacentHTML بدلا من insertHtml لأن insertHtml تغير element في كل دورة و تضع مكانه العنصر الجديد و لكن insertAdjacentHTML تضيف العنصر الجديد فقط كالأتي for( i=y; i>0; i--){ console.log(i) document.getElementById('demo').insertAdjacentHTML('beforeend',"<p>"+i+"</p>") } و لاحظ أن المتغير الأول beforeend تضيف element قبل نهاية selector
  17. كود ال javascript لا يعمل لأنك لم تستدعي ملف main.js كالأتي <body> <div> <label for="">enter your name</label> <input type="text" id="userWord"> <button onclick=" typeWord();"> type word</button> <h1>your word is <span id="demo"></span></h1> </div> <script src="js/main.js"></script> </body>
  18. ال normalization هي عملية تنظيم البيانات في قاعدة البيانات وهذا يتضمن إنشاء الجداول و العلاقات بين تلك الجداول من خلال قوانين تحمي تلك البيانات و تمنع البيانات الزائدة والتي تأخذ مساحة بدون فائدة
  19. أولا يجب إنشاء controller يحتوي علي function بإسم uploadImage كالأتي public function uploadImage(Request $request){ $file = $request->file('photo'); $fileName = time() . '-' . $file-> getClientOriginalName(); $file->move(images , $fileName); Items::create([ 'image'=>$fileName ]) } كما ترى في الكود السابق أولا يتم تخزين الملف في متغير يسمى file$ ثم تخزن إسم الملف مضافا إليه الوقت لكي تعطي إسم مميز لكل صورة في متغير يسمى fileName$ ثم تخزن الملف في مجلد images الذي تم إنشائه في مجلد public عن طريق استخدام function تسمى move ثم يخزن إسم الملف في قاعدة البيانات و تستطيع أن ترسل الملف عن طريق الblade من خلال الform الأتية <form method="POST" action="{{ route('items.insert') }}" enctype="multipart/form-data"> @csrf <div class="form-group"> <label for="exampleInputPassword1">photo</label> <input type="file" name="photo" class="form-control" id="exampleInputPassword1"> @error('photo') <small style="color: red"> {{ $message }} </small> @enderror </div> <button type="submit" class="btn btn-primary">Submit</button> </form> و يجب أن تحتوي الform علي enctype attribute مساوي ل multipart/form-data لكي ترسل الملف وال input يجب أن يحتوي على attribute type مساوي ل file و تنشأ route كالأتي Route::post ('/post' , 'ItemsController@create')->name('items.insert');
  20. انا اعتقد انك تحتاج الي عمل مشاريع كثيرة ثم ابحث عن دورة للخواريزمات وغير مسموح بوضع روابط لأي دورات
  21. يمكنك أنشاء ملف اسمه htaccess. في المجلد public_html في الاستضافة الرئيسية وان لم ترى هذا الملف يمكنك ان تذهب الي setting واختار show hidden files ثم ضع هذا الكود بداخل الملف لتغير default home directory بداخل الاستضافة الرئيسية # .htaccess main domain to subfolder redirect RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.)?your primary domain$ RewriteCond %{REQUEST_URI} !^/public_html/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /public_html/$1 RewriteCond %{HTTP_HOST} ^(www.)?your primary domain$ RewriteRule ^(/)?$ public_html/index.html [L] ملحوظة : يجب تغيير (your primary domain) باسم الاستضافة الخاصة بك (hsoub.com) وأن اسم الملف داخل public_html هو index.html
  22. أنت تحتاج الي تطوير التفكير البرمجي عن طريق عمل مشاريع كثيرة بعد تعلم الاساسيات و لكن في البداية من خلال مشاهدة فيديو يساعدك لعمل مشروع ثم تحتاج الي عمل مشاريع أخري من دون مشاهدة أي فيديو و عندما تواجهك مشكلة حاول ان تحل هذه المشكلة بدون البحث في اي موقع و ان لم تستطع حلها ابحث في المواقع و مع الوقت سوف تشعر بتحسن التفكير البرمجي و يمكنك ايضا تحسينه من خلال دورات مثل الخواريزمات و هياكل البيانات و دورة علوم الحاسوب والموضوع يحتاج الي صبر لوقت طويل
  23. منذ التاريخ August 13, 2021 :تم ألغاء الدعم لهذه الطريقة (password authentication ) و يجب ان تستخدمي PAT (Personal Access Token) ويكنك اضافة PAT من خلال الخطوات الاتية في حسابك لموقع Github اذهبي الي Settings => Developer Settings => Personal Access Token => Generate New Token انسخ PAT ثم اذهبي الي control panel=> Credential Manager => Windows Credentials => git:https://github.com ثم استبدلي كلمة السر ب PAT
  24. فائدة الـvalues في حقول الادخال للinputs أنها تحدد القيمة لل input التي سوف تخزن في قاعدة البيانات و لكي تخزن البيانات يجب أن تتعلم مسار للbackend لكي تتعلم لغة برمجة تتعامل مع قاعدة البيانات مثل لغة php وسوف تحتاج أيضا تعلم قاعدة بيانات مثل Mysql ويمكنك الاطلاع علي هذه المقالة التي تحتوي علي جزء يشرح تطوير backend (الواجهات الخلفية) هنا
×
×
  • أضف...