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

عبدالباسط ابراهيم

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

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

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

  • عدد الأيام التي تصدر بها

    11

أجوبة بواسطة عبدالباسط ابراهيم

  1. أولاً هناك نوعين من قواعد البيانات 

    • قواعد بيانات  Relational databases 
    • قواعد بيانات  non-Relational databases 

    ولكل نوع مميزات مختلفة وتحتاج لاستخدام قاعدة البيانات التي تخدم مشروعك من خلال معرفة مميزات وسلبيات كل نوع فمثلاً قواعد البيانات الغير علاقية تتمدد بسهولة عند زيادة البيانات وسهلة التعامل وتوفر لك العديد من الدوال التي تسهل من التعديل على البيانات ويمكنك قراءة المزيد من هذه المقالة

    ثانياً لا تختلف قاعدة البيانات سواء كنت تستخدمها لتطوير التطبيقات أو المواقع حيث يمكنك تطوير API ليصبح كود ال backend واحد سواء للموقع أو التطبيق

    ثالثاً تعتبر ال mysql نظام إدارة بيانات أو برنامج يستخدم قواعد البيانات Relational databases ويعتبر من أفضل قواعد البيانات الموجودة حالياً ومن أكثرهم استخداماً لذلك قم بتعلمها بدون مشاكل

     

  2. يمكنك استخدام المعاملات المنطقية التي توفرها numpy وفي حالتك تريد تنفيذ عدة شروط فيمكنك استخدام المعامل numpy.logical_and  ليصبح الكود كالتالي

    np.where(np.logical_and(np.greater_equal(dists,r),np.greater_equal(dists,r + dr)))

    لاحظ أننا استخدمنا المعامل greater_equal 

    يمكننا قراءة المزيد من المعلومات حول المعاملات المنطقية من هنا

     

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

    array([[0, 1],
           [2, 3]])
    np.transpose(x)
    array([[0, 2],
           [1, 3]])
    #لاحظ عناصر المصفوفة تم تبديل الصف مع العمود

    ومن خلال التالي يمكنك تنفيذ ما تريده

    arr.T[0]

    سيكون الناتج كالتالي

    array([1, 3, 5])

     

  4. هذه التحذيرات تظهر بسبب وجود أعمدة  بأنماط متعددة مما يستهلك الكثير من الموارد لنحديد الأنماط وكما وضح وائل أنه يمكنك تفادي هذه التحذيرات من خلال  low_memory=False أو تحديد نمط إفتراضي ولكن ذلك لا يحسن استهلاك الموارد 

    لذلك الأفضل هو تفادي هذه التحذيرات والعمل بدون مشاكل ويمكنك عمل ذلك من خلال 

    #Dtype تجاهل الأخطاء الخاصة بال                                                                                                                                                                                             
    warnings.filterwarnings('ignore', message="^Columns.*")

    ويمكنك أيضاً ال converters لتحويل نمط الأعمدة ولكن هذا الحل ربما يبطئ البرنامج في حالة الملفات الكبيرة 

  5. يعتمد تنفيذ ذلك على الموقع حيث إذا كنت ستقوم بمعالجة بعض المهام التي ستحتاج لل php فالأفضل استخدامها ويمكنك أيضاً استخدام ال javascript 

    من خلال ال php 

    ستحتاج ل form كالتالي

    <form action="index.php" method="post" id="form1">
    <input type="text" id="message" value="">
    <br>
    <button type="submit" form="form1" name="submit" >Generate Text</button>
    </form>

    سيتم التوجيه لصفحة index.php سواء هي الصفحة الحالية أم لا لذلك يمكنك تنفيذ الدوال التي تريدها في صفحة index.php 

    <?php
    if (isset($_POST['form'])) {
      #قم بوضع الكود الذي تريده هنا حيث سيتم تنفيذه عند الضغط على الزر
    }
    ?>
    
    

     

  6. اعتقد أن هذه المواصفات جيدة كفاية لتشغيل، نظام التشغيل hackintosh حيث يعتبر 

    • المعالج جيد ولكنه جيل قديم نوعاً ما 
    • مساحة الرام كافية جداً 

    ويفضل أن يكون المعالج الرسومي جيد حتى لا تواجه أي مشاكل

    وتعتبر المواصفات المطلوبة لهذا النظام ليست بالكبيرة ولكن إذا كنت تعمل جيداً على نظام التشغيل windows فلن تواجه أي مشاكل في استخدام hackintosh 

    • أعجبني 1
  7. من الواضح أن 

    git add. 

    لا تضيف أي ملفات جديدة والملفات المعدلة حالياً هو مجلد dist وبما أنه لا يتم إضافته فالغالب أنه موجود في ملف gitignore 

    • لذلك قم بفتح الملف gitignore ثم التأكد من عدم وجود اسم  dist في الملف gitignore وإذا كان موجوداً قم بحذفه
    • ثم بعد ذلك أعد الخطوات السابقة بداية من 
    git add.

     

  8. يمكنك تنفيذ المطلوب من خلال الكود التالي

    • الجزء الخاص بزر الإنسدال
       <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      </button>

      تأكد من وجود الكلاسات والخصائص مثل data-target و data-toggle

    • يجب عليك إحتواء الجزء الخاص بالروابط داخل الكلاس collapse navbar-collapse كالتالي

      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item active">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              Dropdown
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdown">
              <a class="dropdown-item" href="#">Action</a>
              <a class="dropdown-item" href="#">Another action</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item" href="#">Something else here</a>
            </div>
          </li>
          <li class="nav-item">
            <a class="nav-link disabled" href="#">Disabled</a>
          </li>
        </ul>
      
      </div>

       

    • ويتم وضع الكود الخاص بال button والعنصر بالمحدد collapse navbar-collapse داخل العنصر التالي

      <nav class="navbar navbar-expand-lg navbar-light bg-light">
      	...
      </nav>

       

    بالطبع قد تحتاج لتغيير بعض الخصائص أو الكلاسات يمكنك من خلال قراءة المزيد من المعلومات من الموقع الرسمي ل bootstrap 

    لاحظ أن الكود السابق خاص بالإصدار الرابع إذا أردت العمل بالإصدار الخامس ربما تجد بعض الإختلافات البسيطة في اسم كلاس مثلاً

  9. حتى تستطيع بناء تطبيق ios يجب، عليك تعلم لغة البرمجة Swift والعمل من خلال xcode حيث ستحتاجه في بعض الخطوات من بناء التطبيق

    وبالنسبة لل back-end فيمكنك بناءها من خلال أي لغة back-end مثل php أو الأفضل لك استخدام Swift أيضًا لل front-end ولل back-end معاً حيث يمكنك بناء أي شيء بواسطة Swift فهي تعتبر لغة general purpose ويوجد إطارات عمل لswift مثل vapor ويمكنك العمل مع قواعد البيانات بواسطة Swift أيضاً 

    وبالنسبة لتعلم  flutter فالقرار راجع لك حيث إذا كنت تريد التخصص في ال ios فيجب عليك تعلم Swift أما إذا أردت بناء تطبيقات Cross platform  قم بتعلم flutter ويمكنك بنافتطبيقات كبيرة بواسطة flutter أيضاً 

  10. كما في التعليق السابق فإنه القيمة NaN تعامل كقيمة رقمية فلذلك يمكنك إجراء العملية الحسابية في وجودها بينما لا يمكنك في حالة وجود القيمة none 

    لذلك يمكنك استخدام none في حالة تريد تعريف قيمة فارغة والكشف عنها بدالة ما لإجراء وظيفة معينة

    بينما نستخدم NaN عندما نريد إجراء العمليات الحسابية في وجودها ويمكننا تفادي هذه القيمة باستخدام دالة من numpy تسمى nan_to_num أو sumnan مثلاً عند إرجاع مجموع مصفوفة يوجد بها قيمة NaN كالتالي

    import numpy as np
      
    in_arr = np.array([[2, 2, 2], [2, 2, np.nan]])
       
    out_sum = np.nansum(in_arr) 
    print ("مجموع المصفوفة: ", out_sum)
    #الناتج
    #مجموع المصفوفة 

    • أعجبني 1
  11. سأتكلم عن مجال البرمجة 

    أولاً العمر ليس مشكلة في الحصول على وظيفة وخصوصاً في مجال البرمجة ويمكنك أيضاً العمل بدون شهادة جامعية ولكن الأمر صعباً ويمكن أن يحدث ذلك عندما تكون متمكن من المهارات التي تقدمها وأجد أن الحصول على وظيفة ثابتة أمر صعب بدون شهادة جامعية وكما في التعليق السابق فالأمر يختلف من دولة إلى أخرى ومن وظيفة إلى أخرى فليس هناك شئ ثابت ما عليك سوى البحث عن متطلبات الوظيفة التي تريدها

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

    قم بقراءة الإجابات على هذا السؤال وهذا السؤال لمعرفة المزيد

     

     

  12. يمكنك تنفيذ المطلوب من خلال عدة طرق 

    • من خلال express 4 استخدم 
      app.use(favicon(__dirname + '/public/images/favicon.ico'));

       أو يمكنك أيضاً استخدام ال serve-favicon عن طريق 

      var favicon = require('serve-favicon');
      
      app.use(favicon(__dirname + '/public/images/favicon.ico'));

       

    • من خلال express 3 استخدم .favicon API كالتالي

      app.use(express.favicon("public/images/favicon.ico")); 

       

  13. إذا كنت مشترك في كلا الدورتين أو تنوي دراسة الدورتين فالأفضل دراسة دورة تطوير واجهات المستخدم أولاً  لماذا؟ 

    لأنك في دورة تطوير تطبيقات الويب بواسطة php ستحتاج لأساسيات ال html وربما بعض ال css كما أن الدورتين لمجالين مختلفين حيث أن

    • دورة تطوير واجهات المستخدم في مجال ال front-end 
    • ودورة تطبيقات الويب بواسطة php لمجال ال back-end 

    وعند دراسة الدورتين تصبح full stack web developer أي قادر على تنفيذ عمل ال front-end وال back-end 

    يمكنك قراءة الإجابات على هذا السؤال لفهم الويب بشكل واسع وبناء عليه يمكنك إختيار الدورة المناسبة لك أولاً 

  14. تعتبر التطبيقات الخاصة بال html فقط التي يمكنك أن تجدها قليلة حيث معظم التطبيقات أو المواقع ستجدها تم استخدام ال css فيها لذلك يفضل الإنتقال لدراسة اساسيات ال css ثم التطبيق على ال html و ال css معاً وستجد الكثير من التطبيقات والمواقع والتصميمات التي يمكنك التدرب عليها 

    وإذا كنت قلقاً من نسيان ال html عند دراسة ال css فلا تقلق فعند دراسة ال css ستنفذ بعض الأكواد بواسطة html لذلك يفضل الإنتقال لأساسيا ال css مباشرة

    • أعجبني 1
  15. بتاريخ 18 دقائق مضت قال Asd Fgh:

    يعني أنا مشترك في مسار تطوير واجهات المستخدم و مسار الphp 

    هل أنا لا استطيع أن اتقدم للأحتبار ؟؟

    تطوير واجهات المستخدم أو php دورات وليس مسارات وهذه الدورات تتكون من مسارات

    لذلك يمكنك التقدم للإختبار بعد الخطوات السابقة

    • أعجبني 1
  16. يمكن شرح ال axis سواء كان 1 أو 0 ببساطة كالتالي

    • في حالة أن ال Axis = 0  وفي حالة الدالة mean سيقوم البرنامج بالعمل على أو حساب المتوسط من خلال العناصر  الموجودة في جميع الصفوف في كل عمود
    • بينما في حالة أن ال Axis = 1 (وبالطبع في الدالة mean) سيقوم البرنامج بحساب المتوسط من خلال العناصر  الموجودة في جميع الأعمدة في كل صف

    والصورة التالية توضع الشرح السابق

    waS00.thumb.jpg.ddf1003702c20ff7353394ad8e1c1359.jpg

    • أعجبني 1
  17. بالطبع يمكنك الحصول على ال url كما في التعليقات السابقة من خلال 

     var url = req.protocol + '://' + req.get('host') + req.originalUrl;

    ولكن حتى يكون ال req.get('host') صحيح بدون أي مشاكل أو يقوم بإرجاع النتائج المتوقعة يجب أن تقوم ب 

    • إضافة الكود التالي في ملف ال app.js 
      app.set('trust proxy', 'loopback');

      لمعالجة النتائج الغير متوقعة من ال proxies

    • تحديد ال X-Forwarded-Host في إعدادات السيرفر في nginx

      server {
          listen myhost:80;
          server_name  myhost;
          location / {
              root /path/to/myapp/public;
              proxy_set_header X-Forwarded-Host $host:$server_port;
              proxy_set_header X-Forwarded-Server $host;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_pass http://myapp:8080;
          }
      }

      وال apache

      <VirtualHost myhost:80>
          ServerName myhost
          DocumentRoot /path/to/myapp/public
          ProxyPass / http://myapp:8080/
          ProxyPassReverse / http://myapp:8080/
      </VirtualHost>

       

  18. ماذا تقصد ب  اوثق هوية حسابي ؟

    يمكنك التقدم للإختبار بدون مشاكل إذا قمت بالخطوات 

    • إتمام أربعة مسارات تعليمية على الأقل
    • التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة
    • رفع المشاريع على حسابك على GitHub أولًا بأول لمشاركتها معنا

    يمكنك قراءة التعليمات بالتفصيل من هنا

    ويمكنك التواصل مع مركز المساعدة في حالة وجود أي مشكلة

  19. يعتمد هذا الكود على بعض المكتبات ويستخدم مكتبة jquery أيضاً ولكن الكود الأساسي عبارة عن

    • تنفيذ بعض ال animations الخاصة بالكلاس 'la-animate' عند تحميل ال html فقط
      $(document).ready(function () {
          droopy();
          $('.preloader-it > .la-anim-1').addClass('la-animate');
      }); 
      //الكود السابق هو المسئول عن ذلك

       

    • عند إنتهاء تحميل الموقع من صور وملفات سيتم إختفاء ال preloader تدريجياً

    • وهناك أيضاً عناصر Progress Bar يتغير عرضه بواسطة ال scroll عن طريق المكتبة wayPoint

      $(window).on("load", function () {
          $(".preloader-it").delay(500).fadeOut("slow"); //تدريجياً preloader  هنا يتم إختفاء ال 
          /*Progress Bar Animation*/
          var progressAnim = $('.progress-anim'); //Progress Bar هنا الكود الخاص بال 
          if (progressAnim.length > 0) { 
              for (var i = 0; i < progressAnim.length; i++) {
                  var $this = $(progressAnim[i]);
                  $this.waypoint(function () {
                      var progressBar = $(".progress-anim .progress-bar");
                      for (var i = 0; i < progressBar.length; i++) {
                          $this = $(progressBar[i]);
                          $this.css("width", $this.attr("aria-valuenow") + "%");
                      }
                  }, {
                      triggerOnce: true,
                      offset: 'bottom-in-view'
                  });
              }
          }
      });

        

     

  20. يمكنك إرسال mail بالإضافة لل attachment عن طريق

    • إنشاء MIME 
    • ثم إضافة البيانات  مثل from , to , Date و subject 
    • بعد ذلك نضيف المرفقات ولكن بعد قرائتها ثم عمل encode لها ل  base64  
    • ثم نرسل ال mail 
    import smtplib
    from pathlib import Path
    from email.mime.multipart import MIMEMultipart
    from email.mime.base import MIMEBase
    from email.mime.text import MIMEText
    from email.utils import COMMASPACE, formatdate
    from email import encoders
    
    
    def send_mail(send_from, send_to, subject, message, files=[],
                  server="localhost", port=587, username='', password='',
                  use_tls=True):
       
        msg = MIMEMultipart()
        msg['From'] = send_from
        msg['To'] = COMMASPACE.join(send_to)
        msg['Date'] = formatdate(localtime=True)
        msg['Subject'] = subject
    
        msg.attach(MIMEText(message))
    
        for path in files:
            part = MIMEBase('application', "octet-stream")
            with open(path, 'rb') as file:
                part.set_payload(file.read())
            encoders.encode_base64(part)
            part.add_header('Content-Disposition',
                            'attachment; filename="{}"'.format(Path(path).name))
            msg.attach(part)
    
        smtp = smtplib.SMTP(server, port)
        if use_tls:
            smtp.starttls()
        smtp.login(username, password)
        smtp.sendmail(send_from, send_to, msg.as_string())
        smtp.quit()

     

  21. إلى أين وصلت في دورة مسار تطوير تطبيقات الويب باستخدام لغة PHP ؟

    أعتقد أنك ما تزال في أساسيات ال  php أو laravel وكما وضح محمد في التعليق السابق طريقة جيدة للتطبيق على ما تعلمت ولكن إذا كنت تبحث عن تطبيقات فإنك ستجد بعد  أساسيات ال  php و laravel ما يقرب من الخمس تطبيقات وهذه التطبيقات كبيرة حيث ستتطبق على كل ما تعلمته وإكتساب خبرات جديدة وتعلم الممارسات والطرق السليمة لحل مشكلة ما في تطبيق بعض وظائف الموقع لذلك قم بدراسة أساسيات ال  php و laravel بالتطبيق عليهما من خلال بعض التمارين التي يشرحها المدرب ثم بعد ذلك قم ببناء التطبيقات الموجودة في الدورة

    • أعجبني 1
×
×
  • أضف...