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

Ziyad Hasan

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

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

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

أجوبة بواسطة Ziyad Hasan

  1. بتاريخ 16 دقائق مضت قال Adnane Kadri:

    القناة بالإسم : 

    
    'new-notification.'.$this->post_user_id

    بالفعل قناة خاصة Private Channel لديك , هلا قمت بتوضيح سؤالك أكثر ؟ 

    يمكنك الإستغناء عن laravel ehco  إن كنت تستخدم pusher كويب سوكيت دريفر , و لا علاقة لذلك بنوع القناة .

    اريد تعديل الكود في ملف blade لكي يعمل مع private channel

    • أعجبني 1
  2. أنا أريد أن احول   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>

     

    • أعجبني 1
  3.     
    يجب أن تبدأ بدورة علوم الحاسوب لأن هذه الدورة تعتبر مهمة جدا لانك سوف تتعلم اساسيات كثيرة و التي سوف تساعدك علي فهم باقي الدورات و يجب بعد الانتهاء من هذه الدورة أن تختار مجال واحدا من هذه المجالات

    1. تطوير مواقع الويب
    2. تطوير الالعاب
    3. تطوير تطبيقات الموبايل
    4. الذكاء الصناعي
    5. الأمن السيبراني

    ولكل مجال لغات برمجة يجب أن تتعلمها فمثلا مجال تطوير مواقع الويب ينقسم الى 

    1. frontend development: ,وهنا سوف تتعلم تصميم المواقع
    2. backend development : وهنا سوف تتعلم التعامل مع قواعد البيانات

    و في frontend development سوف تحتاج أن تتعلم هذه اللغات

    1. html 
    2. css
    3. javascript

    وفي  backend development :سوف تختار لغة واحدة مع قاعدة البيانات التي تريد ان تتعامل معها فمثلا

    1. لغة php مع قاعدة بيانات mysql
    2. لغة javascript مع قاعدة بيانات mongo

    و يمكنك الاطلاع على هذه المقالة من الرابط هنا

    • أعجبني 1
  4. الأفضل إستخدام semantic element  دائما في كل مشاريعك لكي تجعل الكود الخاص بك اكثر سهولة في القراءة  و التعديل  و تحسين search engine optimization 

    و semantic element  مثل

    1. <header> : تستخدم مع  header الخاص بال document 
    2. <footer> : تستخدم مع  footer الخاص بال document 
    3. <nav> : تستخدم مع  روابط التنقل 
    4. <main>: تستخدم مع  المحتوي الرئيسي للموقع
    5. <section>:  تستخدم مع  قسم في الموقع
    6. <article>:  تستخدم مع  مقالة في الموقع
    7. <address>: تستخدم مع  المعلومات الخاصة بالتواصل
    8. <figure>:تستخدم مع  الصور و الرسوم البيانية
    • أعجبني 1
  5.     
    يجب أن تبدأ بدورة علوم الحاسوب لأن هذه الدورة تعتبر مهمة جدا لانك سوف تتعلم اساسيات كثيرة و التي سوف تساعدك علي فهم باقي الدورات و يجب بعد الانتهاء من هذه الدورة أن تختار مجال واحدا من هذه المجالات

    1. تطوير مواقع الويب
    2. تطوير الالعاب
    3. تطوير تطبيقات الموبايل
    4. الذكاء الصناعي
    5. الأمن السيبراني

    ولكل مجال لغات برمجة يجب أن تتعلمها فمثلا مجال تطوير مواقع الويب ينقسم الى 

    1. frontend development: وهنا سوف تتعلم تصميم المواقع
    2. backend development : وهنا سوف تتعلم التعامل مع قواعد البيانات

    و في frontend development سوف تحتاج أن تتعلم هذه اللغات

    1. html 
    2. css
    3. javascript

    وفي  backend development :سوف تختار لغة واحدة مع قاعدة البيانات التي تريد أن تتعامل معها فمثلا

    1. لغة php مع قاعدة بيانات mysql
    2. لغة python مع قاعدة بيانات mysql

    و يمكنك الاطلاع على هذه المقالة من الرابط هنا

  6. == تستخدم مع 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 في الكونسول لأن == لا تعتمد على نوع المتغيران

  7. يجب أن تبدأ بدورة علوم الحاسوب لأن هذه الدورة تعتبر مهمة جدا لانك سوف تتعلم اساسيات كثيرة و التي سوف تساعدك علي فهم باقي الدورات و يجب بعد الانتهاء من هذه الدورة أن تختار مجال واحدا من هذه المجالات

    1. تطوير مواقع الويب
    2. تطوير الالعاب
    3. تطوير تطبيقات الموبايل
    4. الذكاء الصناعي
    5. الأمن السيبراني

    ولكل مجال لغات برمجة يجب أن تتعلمها فمثلا مجال تطوير مواقع الويب ينقسم الي 

    1. frontend development: ,وهنا سوف تتعلم تصميم المواقع
    2. backend development : وهنا سوف تتعلم التعامل مع قواعد البيانات

    و في frontend development سوف تحتاج أن تتعلم هذه اللغات

    1. html 
    2. css
    3. javascript

    وفي  backend development :سوف تختار لغة واحدة مع قاعدة البيانات التي تريد ان تتعامل معها فمثلا

    1. لغة php مع قاعدة بيانات mysql
    2. لغة javascript مع قاعدة بيانات mongo

    و يمكنك الاطلاع على هذه المقالة من الرابط هنا

  8. عبارة عن حلول لمشاكل معروفة في مجال السوفتوير  و كل نمط يمثل مخطط الذي يمكن التعديل عليه لكي يحل المشكلة و تسهل التواصل بين المبرمجين و تلك الحلول تم إختبارها لكي تعطي افضل سرعة 

    وتنقسم إلى  

    1. 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

    ويكنك الأطلاع علي هذه المقالة الرابط هنا

  9. بتاريخ 24 دقائق مضت قال شرف الدين2:

    الlet يكون مجاله بداخل القوسين الذي عرف بداخلهم , بينما الvar يكون مجاله ضمن الدالة التي عرف بها, لنفهم هذا الأمر سنكتب الكود التالي كمثال:

    
    function print() {
      var firtname = "sharaf";
      let lastname = "ashraf";
    
      console.log(firtname, lastname); // sharaf ashraf
    
      {
        var fname = "sharaf1"
        let lname = "ashraf1";
        console.log(fname, lname); // sharaf1 ashraf1
      }
    
      console.log(fname); // sharaf1
      console.log(lname); // ReferenceError
    }
    
    run();

    ﻻحظ أن كلا من المتغيرين fname, lname تم تعريفهم في نفس المجال, لكن على الرغم من ذلك عند طباعتنا لهم خارج الأقواس, يتم طباعة المتغير fname لأنه من النوع var ولكن يحدث خطأ عند محاولة طباعة lname لأنه من النوع let

    كما بالإضافة إلى أن عند تعريف المتغير من النوع var يتم إعطائه قيمة إبتدائية ب"غير معرف" حتى قبل إنشائه, بينما المتغير let إن حاولنا الوصول إليه قبل تعريف لا يأتينا قيمة "غير معرف" إنما يأتينا خطأ من النوع ReferenceError

    بالأضافة لما قاله شرف الدين

    يمكنك إستخدام 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

     

  10. إستخدم  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

    • أعجبني 1
  11. كود ال 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>

     

    • أعجبني 1
  12. ال normalization هي عملية تنظيم البيانات في قاعدة البيانات وهذا يتضمن إنشاء الجداول و العلاقات بين تلك الجداول من خلال قوانين تحمي تلك البيانات و  تمنع البيانات الزائدة والتي تأخذ مساحة بدون فائدة

  13. أولا يجب إنشاء 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');

     

    • أعجبني 1
  14. بتاريخ 3 ساعات قال Shima Toufik:

    كلامك صحيح اخي 

    شكرا لك

    ادا كان من الممكن ان تدلني على احد الدورات التي تهتم بتعليم الخوارزميات لانه يظهر لي انها هي التي تنقصني 

    فكما قلت مسبقا انا افهم الكود والخاصيات البرمجية لكن ينقصني كيفية وطريقة التوظيف لكل ما ادرسه فا نا لحد الان لم اشعر باي تحسن في المستوى بتاتا

    جزاك الله خيرا.

    انا اعتقد انك تحتاج الي عمل مشاريع كثيرة ثم ابحث عن دورة للخواريزمات 

    وغير مسموح بوضع روابط لأي دورات

    • أعجبني 1
  15. بتاريخ 3 ساعات قال Mohammed Abu Yousef:

     تمام، لكن المشكلة التي أواجهها هي أن الاستضافة الرئيسية تحتوي على مجلد public_html لكن إذا أردت أن أضع مجلد public_html ثاني داخل ال subdomain لا أستطيع، يجب أن أخرج ملف ال index بالخارج، وأنا لا أريد عمل هكذا شيء.

    يمكنك أنشاء ملف اسمه 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

  16. أنت تحتاج الي تطوير التفكير البرمجي عن طريق عمل مشاريع كثيرة بعد تعلم الاساسيات و لكن في البداية من خلال مشاهدة فيديو يساعدك لعمل مشروع ثم تحتاج الي عمل مشاريع أخري من دون مشاهدة أي فيديو و عندما تواجهك مشكلة حاول ان تحل هذه المشكلة بدون البحث في اي موقع و ان لم تستطع حلها ابحث في المواقع و مع الوقت سوف تشعر بتحسن التفكير البرمجي و يمكنك ايضا تحسينه من خلال دورات مثل الخواريزمات و هياكل البيانات و دورة علوم الحاسوب 

    والموضوع يحتاج الي صبر لوقت طويل

    • أعجبني 1
  17. منذ التاريخ  August 13, 2021 :تم ألغاء الدعم لهذه الطريقة (password authentication ) و يجب ان تستخدمي 

     PAT (Personal Access Token) 

    ويكنك اضافة PAT من خلال الخطوات الاتية 

    1. في حسابك لموقع Github اذهبي الي
    2. Settings => Developer Settings => Personal Access Token => Generate New Token
    3. انسخ PAT
    4. ثم اذهبي الي 
    5. control panel=> Credential Manager =>  Windows Credentials => git:https://github.com
    6. ثم استبدلي كلمة السر ب PAT
  18. فائدة الـvalues في حقول الادخال للinputs أنها تحدد القيمة لل input التي سوف تخزن في قاعدة البيانات و لكي تخزن البيانات يجب أن تتعلم مسار للbackend لكي تتعلم لغة برمجة تتعامل مع قاعدة البيانات مثل لغة php  وسوف تحتاج أيضا تعلم قاعدة بيانات مثل  Mysql  

    ويمكنك الاطلاع علي هذه المقالة التي تحتوي علي جزء يشرح تطوير backend (الواجهات الخلفية) هنا

×
×
  • أضف...