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

Yomna Raouf

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

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

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

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

    65

أجوبة بواسطة Yomna Raouf

  1. يمكنك استخدام الدالة التالية لحساب ال moving average، و لكنها ستكون أبطأ بعض الشئ من الحلول الخاصة ب numpy 

    
    
    mylist = [1, 2, 3, 4, 5, 6, 7]
    N = 3
    cumsum, moving_aves = [0], []
    
    for i, x in enumerate(mylist, 1):
        cumsum.append(cumsum[i-1] + x)
        if i>=N:
            moving_ave = (cumsum[i] - cumsum[i-N])/N
            #can do stuff with moving_ave here
            moving_aves.append(moving_ave)

    و يمكنك استخدام الطريقة التالية أيضًا (تستخدم Convolution):

    def running_mean(x, N):
        cumsum = numpy.cumsum(numpy.insert(x, 0, 0)) 
        return (cumsum[N:] - cumsum[:-N]) / float(N)

    و لكن هذه الطريقة يظهر بها خطأ متعلق بال precision الخاصة بال floating point 

    أو يمكنك استخدام scipy.ndimage.filters.uniform_filter1d فهي طريقة أسرع 50 مرة من np.convolve و لا يظهر معها خطأ متعلق بال precision الخاصة بال floating point :

    import numpy as np
    from scipy.ndimage.filters import uniform_filter1d
    N = 1000
    x = np.random.random(100000)
    y = uniform_filter1d(x, size=N)

     

    • أعجبني 1
  2. بتاريخ 2 ساعات قال oussama toughli:

    السلام عليكم ورحمة الله وبركاته ،

    أواجه مشكلة في  تنصيب sass-loader ، مع العلم انني استخدمت css-loader بشكل طبيعي وعندما نقلت test:/\.css$/, إلى test: /\.(sa|sc|c)ss$/, يظهر الخطأ ، وإذا قمت بإعادة  test:/\.css$/, يزول الخطأ ، كيف يمكنني معالجة المشكلة ؟

    ليس لقاعدة webpack علاقة بالخطأ فرسالة الخطأ تخبرك انه يوجد خطأ متعلق بقواعد كتابة لغة css في ملف src/css/style.css/. في الأسطر من 8 ل 14، حيث تذكز أنها توقعت وجود قوس إغلاق ( بالقرب من هذه الأسطر و لكن لم تجده.

    لذلك أرجو منك التأكد من عدم وجود خطأ كتابي في هذا الجزء، إذا لم تنتهي المشكلة يمكنك إرفاق الأكواد الخاصة ب css هنا و سنقوم بالمساعدة

  3. الأمر يتوقف على قوانين التوظيف في بلدك، في بعض البلدان يمكنك ذلك و في البعض الآخر لا و في بعض البلدان الأمر مصرح به و لكن ليس لجميع الوظائف و لكن في هذه الحالة يجب أن تحصل على شهادة الثانوية (أي أتممت المرحلة الثانوية)، فمثلًا حتى تعمل كمهندس يجب أن تكون قد أتممت دراستك الجامعية بكلية الهندسة حتى تتمكن من العمل و تحصل على جميع حقوقك كموظف.

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

     

  4. يوجد العديد من المواقع التي قد تساعدك في هذا الأمر، منها:

    • LeetCode
    • edabit
    • HackerRank
    • geeks for geeks
    • w3resource
    • codeforces

    و غيرها الكثير، تحتوي هذه المواقع على العديد من الأسئلة و المشاكل البرمجية و تتيح لك محاولة حلها في ide مدمج في الموقع الخاص بها و تقدم حلول و شروحات لها كذلك في حال علقت في مشكلة ما.

    و لكن أنصحك بأن تحاول بمفردك أولًا قبل أن تطلع على الحلول، فبهذه الطريقة ستتعلم بشكل أفضل و ستكتسب مهارة حل المشكلات.

    • أعجبني 2
  5. بتاريخ 5 دقائق مضت قال Hafsa Aly:

    ولكن هنا لم يحدد اسماء الحقلين .. اقصد لم نحدد الحقلين الذي اود اختيارهما

    في هذه الحالة سنحتاج لاستخدام التابع where.

    مثلًا هنا نريد جلب عشر سجلات بعد السجل الذي له ال id = 3

     User::where('id','>=',3)->take(10)->get();

     

  6. يوجد عدة طرق للقيام بذلك، منها استخدام paginator كما يلي:

    public function index()
        {
            $projects = auth()->user()->projects::paginate(2);
              return view('projects.index', compact('projects'));
        }

    نقوم بكتابة عدة السجلات التي نريد الحصول عليها كمعامل للتابع paginate

    في هذه الحالة سيحتوي المتغير على instance من الصنف Paginator، و سيتم تخزين البيانات الخاصة بك أسفل مفتاح key يسمى data، هذا في حالة ال JSON 

    {
       "total": 50,
       "per_page": 15,
       "current_page": 1,
       "last_page": 4,
       "first_page_url": "http://laravel.app?page=1",
       "last_page_url": "http://laravel.app?page=4",
       "next_page_url": "http://laravel.app?page=2",
       "prev_page_url": null,
       "path": "http://laravel.app",
       "from": 1,
       "to": 15,
       "data":[
            {
                // Record...
            },
            {
                // Record...
            }
       ]
    }

    أو يمكنك استخدام الطريقة التالية في النسخ الأقدم من laravel مثل laravel 5 مثلًا:

    public function index()
        {
            $projects = auth()->user()->projects::take(2)->get();
              return view('projects.index', compact('projects'));
        }

    و في النسخ الأحدث يمكنك استخدام الطريقة التالية:

    public function index()
        {
            $projects = auth()->user()->projects::all()->take(2);
              return view('projects.index', compact('projects'));
        }

     

  7. أعتقد أن السبب في هذا الخطأ هو وجود مجلد اسمه مكتوب باللغة العربية في المسار الخاص بالمشروع:

    C:\Users\anan\OneDrive\?????????\NetBeansProjects\DisplayOutput\build\classes

    و هو المجلد الذي تم استبدال حروفه بعلامات استفهام هنا، لذلك أرجو منك إعادة تسمية المجلد ليصبح باللغة الإنجليزية بدلًا من العربية و التجربة مرة أخرى

    • أعجبني 1
  8. بتاريخ 14 دقائق مضت قال HA_shafeai:

    لم تحل عند تنفيذ git pull يظهر الخطئ

    There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.

        git pull <remote> <branch>

    If you wish to set tracking information for this branch you can do so with:

        git branch --set-upstream-to=origin/<branch> master

    إذا كان المشروع الخاص بك يحتوي على أكثر من branch ستحتاج لتحديد اسم ال branch الذي تجلب البيانات منه مثلًا

    git pull origin develop( branch اسم ال )
    
    // git pull origin ( branch اسم ال )

    إذا لم تنجح يمكنك استخدام الأمر التالي:

    git branch --set-upstream-to=origin/develop( branchاسم ال )
    
    
    // git branch --set-upstream-to=origin/( branchاسم ال )

    وبعدها التجربة مرة أخرى

    • أعجبني 1
  9. رسالة الخطأ تخبرك أن المستودع البعيد الخاص بالمشروع يحتوي على تعديلات ليست موجودة لديك محليًا لذلك ستحتاج لجلب هذه التعديلات من المستودع باستخدام الأمر 

    git pull

    و بعدها يمكنك رفع التعديلات الجديدة التي قمت بها.

    • أعجبني 1
  10. من المفترض أن يقوم العميل بتوفير المعادلات الخاصة بالمجال لك أو أن يشرح لك ما يريده بالتحديد "ال flow الخاص بالمشروع". لأننا كمطورين لسنا مطالبين بمعرفة جميع المجالات حتى نتمكن من بناء مشاريع و تطبيقات لها.

    أو يمكنك مثلًا البحث على الانترنت باستخدام "accounting software features" مثلًا و قراءة هذه ال features و بعدها البحث عن كيفية عمل كل feature و ما هي المعادلات المرتبطة بها مثلًا. و هكذا من نتائج البحث ستتضح لك الصورة و ستعرف ما الذي تحتاجه تحديدًا لبناء المشروع.

     

  11. بتاريخ 44 دقائق مضت قال Mohamed Abdalla6:

    هذا هو رابط الموقع

    https://syberweb.sybertechnology.com

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

    كلمة init هي اختصار ل initiate، أي أنّه ملف JavaScript ابتدائي يقوم استدعاء دوال أساسية لبدء عمل التطبيق.

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

  12. بتاريخ 18 ساعات قال Mehdi Moussaoui:

    كيف اعرف اللغة المناسبة لي

     

    يمكنك اختيار اللغة بناء على التخصص الذي تريده، مثلا إذا كنت تريد أن تصبح مطور واجهات أمامية يمكنك البدء ب JavaScript.

    إذا كنت تريد أن تتخصص في الذكاء الاصطناعي ml, AI يمكنك البدء بلغة python 

    و هكذا

  13. حتى تتعلم الخوارزميات من المفترض أن تتعلم لغة برمجة أولًا حتى تتمكن من تطبيق الخوارزميات التي تتعلمها بصورة عملية و تفهمها بشكل أفضل.

    ماهي اللغة التي ستختارها؟ 

    يمكنك البدء باللغة المستخدمة في المجال الذي تريد أن تتخصص به، مثلًا إذا كنت تريد أن تصبح مطور واجهات أمامية يمكنك أن تبدأ ب javascript و هكذا.

    هل يجب عليك تعلمزلغة معينو كبداية ك c++ مثلًا ؟

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

    ففي الحقيقة مهارة التفكير المنطقي و أساسيات البرمجة يمكنك تعلمها عن طريق أي لغة برمجة سواءً كانت ++c أو python أو JavaScript أي لغة أخرى.

    في الحقيقة اختيار اللغة البرمجية لا يفترض أن يكون الخطوة الأولى، فمن المفترض أن تقوم بتحديد المسار الذي تريد أن تسلكه، و يوجد العديد من المجالات منها:

    *تطوير المواقع و تطبيقات الويب

    *تطوير تطبيقات الجوال سواءً كانت أصيلة أم هجينة، تطبيقات android أو ios

    *تطوير الألعاب

    *الذكاء الاصطناعي و علوم الآلة

    *برمجة المتحكمات الدقيقة و embedded systems

    و غيرها الكثير.

    فبعد أن تحدد المجال الذي تريده و تتجه إليك ميوله يمكنك أن تبدأ بتحديد اللغات التي يجب أن تتعلمها.

    فمثلًا إذا كنت تريد أن تصبح مطور ويب يمكنك أن مباشرة بتعلم لغة JavaScript أو python أو PHP. و إذا كنت تريد أن تصبح مطور ألعاب أو مطور embedded systems يمكنك أن تتعلم #c أو ++c.

    و هكذا أما إذا بدأت بتعلم ++c فإنك ستقضي وقتًا في تعلمها و بعدها ستقضي فترة أخرى في تعلم اللغة التي تحتاجها لتخصصك مما يعني إضاعة وقت و جهد بدون جدوى.

    أما عن الترتيب هل تبدأ بدراسة التقنيات الخاصة بمجالك أولا ثم تقوم بدراسة الخوارزميات او العكس؟ الأمر هنا متروك لك و يتوقف على طريقة تعلمك بعض الأشخاص تفضل أن تبدأ بالجانب العملي و بعدها النظريات و البعض الآخر العكس، يمكنك اختيار ما يناسبك و يناسب نمط تعلكم المهم ألّا تتجاوز شئ و تدرس كلا الجانبين

  14. في الرياضيات يوجد ما يُسمى ب sets و ordered sets (osets):

    • و ال sets هي حاوية من عناصر فريدة و غير مرتبة، أي أن ال sets هي unordered data structure لذلك فهي لا تحفظ الترتيب. (ال sets موجودة ضمن python)
    • أما ال oset فهي حاوية من عناصر فريدة و مرتبة (ال osets غير موجودة في python)

    و لكن يمكننا محاكاة وظيفة ال osets باستخدام ال dictionary keys و هي خاصية في python 3.7 فما فوق.

    x = [ 0, 1, 2, 4, 8, 16, 32, 64, 128, 512, 1024 ]
    
    oset = dict.fromkeys(x)
    
    list(oset)
    
    # output: [ 0, 1, 2, 4, 8, 16, 32, 64, 128, 512, 1024 ]

    أو يمكنك استخادم الدالة sorted كما يلي:

    x = [ 0, 1, 2, 4, 8, 16, 32, 64, 128, 512, 1024 ]
    
    oset = sorted(set(x), key=x.index)

     

    • أعجبني 2
  15. الرابط المرفق يظهر رسالة 403 forbidden أي أنه ليس لنا صلاحية الاطلاع عليها، هل يمكنك إرفاق صورة أو مقطع للصفحة حتى نتمكن من مساعدك؟

    ---إذا كنت تسأل عن مكتبات جاهزة، يوجد بعض المكتبات التي توفر خلفيات متحركة تفاعلية مثل:

    • vantajs.com
    • particles.js

    و غيرها، يمكنك البحث على الانترنت و ستجد العديد منها.

    أو يمكنك بناءها بنفسك باستخدام مكتبات مثل:

    • three.js
    • p5.js

    إذا كان سؤالك عن صور عادية فيمكنك أن تستخدم gif أو video قصير كخلفية 

    • أعجبني 1
  16. رسالة الخطأ تخبرك أن الخط "space-mono" غير موجود ضمن الخطوط الخاصة بنظام التشغيل الخاص بك و كذلك لم يتم تضمينها باستخدام Font.loadAsync كما فعلت مع الخط 'noto-font'، لذلك لا يمكنك استخدامه في المشروع.

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

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

    • نقوم بحذف ملف package-lock.json و/أو yarn.lock و مجلد node_modules 
    •  و بعدها تنفيذ الأمر
      npm install
      أو
      yarn install

       

    • إذا لم تنجح أرجو منك تحديث نسخة expo و باقي ال packages و تتأكد من توافقها 

     

  17. للقيام بهذه الوظيفة سنحتاج إلى حقول إدخال من النوع radio و يكون لها نفس القيمة للخاصية name و لتكن page مثلًا حتى يتم ربطهم معا..

    و ستكون قيمة أي ال valie الخاصة بكل حقل إدخال منهم هي الرابط التشعبي للصفحة.

    و سنحتاج لوجود زر، ينفذ وظيفة الانتقال بين الصفحات عند النقر عليه، لذبك سنقوم بإنشاء الدالة moveToPage و نقوم باستدعائها عند الضغط على الزر عن طريق ال attribute  onClick، بداخل هذا الزر سنقوم بوضع الوسم a و ستكون قيمة href له فارغة بشكل ابتدائي

    الآن بداخل هذه الدالة سنحتاج للحصول على الرابط التشعبي الذي تم اختيارة بالضغط على أحد حقول الإدخال، و نقوم بتخزين هذه القيمة في المتغير pageLink.

    بعد ان نحصل على الرابط التشعبي الذي تم اختياره، سنقوم بتعيينه كقيمة لل href attribute الخاص بالوسم a

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>repl.it</title>
        <link href="style.css" rel="stylesheet" type="text/css" />
      </head>
      <body>
          <input type="radio" id="page1" name="page" value="page1.html">
          <label for="html">page 1</label><br>
        
          <input type="radio" id="page2" name="page" value="page2.html">
          <label for="css">page 2</label><br>
         <button onclick="moveToPage()">
           <a class="link" href=""> 
             click me 
           </a> 
        </button>
        
        <script>
          
          function moveToPage() {
             let pageLink = document.querySelector("input[name='page']:checked").value;
             console.log(pageLink)
            
             let link = document.querySelector(".link");
            
             link.href = pageLink;
          }
        </script>
      </body>
    </html>

     

  18. يمكن استخدام أيٍ من الطرق التالية:

     

    x = np.array([[0,  1],	# 0
                  [2,  3],	# 1
                  [4,  5],	# 2
                  [6,  7],	# 3
                  [8,  9]])	# 4
    
    
    search_array = np.array([[0,  1],
        [4,  5],
        [8,  9]
    ])
    
    # الطريقة الأولى
    
    #  فيما عدا ذلك false  في حالة التساوي و  true  في هذه الطريقة سنقوم بالمقارنة بين المصفوفتين و سيتم إرجاع 
    
    >>> x == search_array
    array([[ True, True],
           [ False,  False],
           [ True,  True],
           [ False,  False],
           [ True,  True],
          ], dtype=bool)
    
    
    # الطريقة الثانية 
    >>> np.all(x == search_array,axis=1)
    array([True,  False, True, False , True], dtype=bool)
    
    # الطريقة الثالثة 
    #  where في حال تساوي الأصفف و بعدها التابع  true و الذي سيقوم بإرجاع  all باستخدام التابع 
    # true و الدي سيقوم بإرجاع الفهرس الخاص بالعناصر التي لها القيمة 
    
    >>> np.where(np.all(x == search_array,axis=1))
    (array([0, 2, 4]),)

     

    • أعجبني 1
  19. إذا كنت تريد تطبيق هذه الخاصية في مشروع ستنشره للمستخدمين، يمكنك أن تقوم باستخدام بعض ال APIs الجاهزة مثل  mailgun، و التي ستقوم بإزالة عبء برمجة script لإرسال الإيميلات المعقدة و تأمينها و ما إلى ذلك.

    ال API الخاص ب mailgun يتيح لك إرسال 5000 إيميل شهريًا بدون أي تكاليف.

    و ستكون الشيفرة الخاصة بإرسال الإيميلات مشابهة لما يلي:

    def send_simple_message():
        return requests.post(
            "https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages",
            auth=("api", "YOUR_API_KEY"),
            data={"from": "Excited User <mailgun@YOUR_DOMAIN_NAME>",
                  "to": ["bar@example.com", "YOU@YOUR_DOMAIN_NAME"],
                  "subject": "Hello",
                  "text": "Testing some Mailgun awesomness!"})

    يمكنك قراءة التوثيق الرسمي الخاص بهم للمزيد

  20. يمكنك تنفيذ أمر mongo التالي لحذف قواعد البيانات:

    db.adminCommand("listDatabases").databases.forEach( function (d) {
        if (d.name != "local" && d.name != "admin"  && d.name != "apiomat"  && d.name != "config")
            db.getSiblingDB(d.name).dropDatabase();
     })

    أو يمكنك إضافة دالة JavaScript التالية لملف mongorc.js./~ 

    function dropDatabases(){
        var mongo = db.getMongo();
    
        var dbNames = mongo.getDBNames();
        for (var i = 0; i < dbNames.length; i++) {
            var db = mongo.getDB( dbNames[i] );
    
            print( "Dropping database " + db.getName() + "..." );
            db.dropDatabase();
        }
    }

    و بعدها يمكنك تنفيذ هذا الأمر في mongo shell:

    dropDatabases()

     

  21. يمكنك استخدام  نمط RegEx للتحقق من صحة ال id كما يلي:

    if (id.match(/^[0-9a-fA-F]{24}$/)) {
           
       // ObjectID تُمثل  
    } else {
        // ObjectID ليست     
    }

    و يمكنك استخدام هذه الدالة أيضًا و التي يمكن أن تمرر لها سلسلة نصية أو int أو objectId و ستقوم بإرجاع objectId إذا كان ال id المرر لها صالح أو null إذا لم يكن صالحًا:

    var ObjectId= require('mongoose').Types.ObjectId;
    
    function toObjectId(id) {
    
        var stringId = id.toString().toLowerCase();
    
        if (!ObjectId.isValid(stringId)) {
            return null;
        }
    
        var result = new ObjectId(stringId);
        if (result.toString() != stringId) {
            return null;
        }
    
        return result;
    }

     

  22. يمكنك استخدام بعض الأدوات مثل depcheck أو npm-check و التي ستقوم بفحص الاعتماديات الخاصة بمشروعك و إضهار قائمة لك تحتوي على الاعتماديات التي لم تستخدم و بعدها يمكنك حذفها.

    لتثبيت npm-check

    npm i npm-check

    و لاستخدامها، نقوم بتنفيذ الأمر التالي:

    npm-check

     

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