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

Yomna Raouf

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

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

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

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

    65

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

  1. يوجد عدة طرق يمكن من خلالها إضافة Bootstrap لمشروعك:

     

    • يمكنك إختيار ال default starter template من أجل ASP.net core فهو يتضمن bootstrap مُنزَّل مسبقًا
    • الطريقة الموصى بها لإضافة bootstrap إلى مشروع ASP.NET CORE هو إضافتها إلى bower.json ك dependency 
    {
      "name": "asp.net",
      "private": true,
      "dependencies": {
        "bootstrap": "3.3.6",
        "jquery": "2.2.0",
        "jquery-validation": "1.14.0",
        "jquery-validation-unobtrusive": "3.2.6"
      }
    }

    يمكنك تنفيذ ذلك بالطريقة التالية:

    BOWER 
    
    bower install bootstrap
    • إذا كنت تريد الإشارة إلى ملفات bootstrap من النسخة التي قمت بتحميلها فإنك تحتاج إلى أن أن تشير إليها في أي صفحة يتم فيعا إستخدام bootstrap. في بيئة الإنتاج يجب أن تشير إلى bootstrap ك CDN في ال  default ASP.NET site template. ليصبح ملف  _Layout.cshtml كما يلي.

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>@ViewData["Title"] - WebApplication1</title>
    
        <environment names="Development">
            <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
            <link rel="stylesheet" href="~/css/site.css" />
        </environment>
        <environment names="Staging,Production">
            <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/css/bootstrap.min.css"
                  asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
                  asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
            <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
        </environment>
    </head>
    <body>
        <div class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">WebApplication1</a>
                </div>
                <div class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
                        <li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>
                        <li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>
                    </ul>
                    @await Html.PartialAsync("_LoginPartial")
                </div>
            </div>
        </div>
        <div class="container body-content">
            @RenderBody()
            <hr />
            <footer>
                <p>&copy; 2016 - WebApplication1</p>
            </footer>
        </div>
    
        <environment names="Development">
            <script src="~/lib/jquery/dist/jquery.js"></script>
            <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
            <script src="~/js/site.js" asp-append-version="true"></script>
        </environment>
        <environment names="Staging,Production">
            <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
                    asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                    asp-fallback-test="window.jQuery">
            </script>
            <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js"
                    asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                    asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
            </script>
            <script src="~/js/site.min.js" asp-append-version="true"></script>
        </environment>
    
        @RenderSection("scripts", required: false)
    </body>
    </html>

     

    بتاريخ 16 ساعات قال ابو تركي_2020:

    وملفات jquery أين أجدها وكيف أقوم بتضمينها؟

     

    ملفات bootstrap لا تتضمن jqyery.js و popper.js لإضافتها يجب إستخدام السطرين التاليين قبل ال Script الخاص بملف bootstrap.js 

    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    
     

     

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

    ما يهم أصحاب العمل في هذا المجال هو مهاراتك و خبرتك.

    و لكن من أين لك بالخبرة إذا كنت جديدًا في المجال؟؟

    يوجد العديد من الوسائل التي يمكنك إستخدامها لتعويض ذلك, منها:

    • أن يكون لك موقع شخصي portfolio تعرض به أعمالك و مهاراتك
    • حساب على github تقوم برفع أكواد إليه بشكل مستمر 

    فهذا يعطي إنطباع لصاحب العمل أنك شخص مجتهد , مهتم و تعمل على تطوير مهاراتك بإستمرار.

    • المشاركة في مشاريع مفتوحة المصدر على github مثلًا 

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

    • أن يكون لك مشاريع فردية تُبرز مهاراتك 

    فمثلًا: يمكنك أن تعمل على موقع أو تطبيق للتواصل الإجتماعي, قم بعمل ذلك على عدة مراحل:

    1. في البداية يكون للمستخدم قابلية إضافة منشورات و الإعجاب بالمنشورات
    2. بعد ذلك إضافة إمكانية التعليق و المشاركة 
    3. بعد ذلك يمكنك العمل على إمكانية إضافة أصدقاء و خاصية follow 

    إلخ ....

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

     

    بالطبع لا يجب أن تقوم بكل هذه الأشياء حتى تتمكن من الحصول على عمل فقط واحدة أو اثنتين تكفي.

    بالتوفيق.

  3.  السبب قي الخطأ الذي يظهر لك " null pointer exception " هو أن bitmap لها القيمة null أي أنها فارغة ليس لها قيمة 

    فالبتالي إستخدامها في السطر التالي:

      bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);

     سيسبب مشكلة و لن  يعمل لأنك تقوم باستخدام شيء غير موجود بالنسبة للبرنامج.

    يمكنك استخدام الكود التالي لحل هذه المشكلة.

    
     // يمكنك إستبدال هذا السطر
    Bitmap bitmap=drawable.getBitmap();
    
    // بالسطر التالي
    
    bitmap = ((BitmapDrawable) imgPreview.getDrawable()).getBitmap();

    مع استخدام 

     private Bitmap bitmap;

    في بداية ال class

     

    • أعجبني 1
  4. التقنية المستخدمة لمثل هذا الأمر تسمي "تطبيقات الويب التقدمية"                      "progressive web applications "PWA 

     هذه التطبيقات يتم تطويرها تمامًا بنفس كيفية تطوير مواقع الويب. و يمكن استخدامها كمواقع وتطبيقات بنفس الوقت. تعمل هذه التطبيقات على كل الأجهزة مثل الجوالات و أجهزة الحاسب دون الحاجة إلى كتابة أكواد مختلفة لكل حالة. و لكن بالرغم من أن هذه التطبيقات يمكنها العمل كتطبيقات هواتف إلا أنها لا يمكنها تقديم جميع المزايا التي تقدمها ال Native mobile apps فعلى سبيل المثال لا يمكنك الوصول إلى كاميرات الهاتف لاستخدامها من خلال التطبيق. 

    و من مزايا هذه التطبيقات أنها لا تستهلك من المساحة التخزينية للجهاز كما هو الحال مع التطبيقات التي  يتم تنزيلها من play store.

    يمكنك قراءة المزيد عن هذه التقنية في المقال التالي:

    مدخل إلى تطبيقات الويب التقدمية pwa

    • أعجبني 1
  5. اللغة الإنجليزية مهارة أساسية و مهمة جدًا في مجال البرمجة. و لكن لا يجب أن تُوقف تعلمك للبرمجة من أجل تعلم الإنجليزية خاصةً مع توفر دورات باللغة العربية هذه الأيام مثل الدورات التي تقدمها أكاديمية حسوب أو بعض قنوات اليوتيوب مثل قناة elzero. نصيحتي لك هي أن تبدأ في التعلم من خلال الدورات العربية مع تعلم اللغة الإنجليزية في نفس الوقت ومن الوسائل التي قد تساعدك على ذلك هو مشاهدة فيديوهات أو قراءة مقالات متعلقة بالمهارة التي تعلمتها ولكن باللغة الإنجليزية فمثلًا:

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

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

    • أعجبني 2
  6.  أنصحك باستخدام الطريقة التالية في تنظيم المجلدات الخاصة بمشروعك. (Best practice)

    • package  لل controllers المقابلة لكل view.

    `A package for corresponding `controllers` of these `views

    • package مختلفة لطبقات service و dao.

    Different packages for service(business) and dao(persistence) layer, if exists

    • مجلد من أجل ال resourses مثل الصور و css و ما إلى ذلك.

    A directory for resources such as images, css etc

    • مجلد من أجل ملفات fxml (اسمها view) داخل مجلد resources.

    A directory for FXML files called view in the resources

    src/main
      ├──java
         ├── controllers
            ├──Screen1controller.java
            ├──Screen2controller.java
         ├── model
            ├── 
            ├── 
         ├── service
            ├──Service1.java
         ├── dao(persist)
            ├── SaveProducts.java
      ├──resources
         ├──view
            ├──screen1.fxml
            ├──screen2.fxml
         ├──css
            ├──style.css
         ├──images
            ├──img1.jpg
            ├──img2.jpg
         ├──DB
            ├──
            ├──

     

  7.  Api resources هي إضافة ل laravel تم تقديمها في laravel 5.5 تستخدم api resources في بناء rest apis. قبل تقديم api resources كُنَّا نستخدم packages مثل  Fractal  كتطبقة انتقالية لإنشاء استجابات للواجهات البرمجية التي تعطي مخرجات من نوع JSON.

    إذًا   API resources تقدم طريقة سهلة لتحول ال model الخاص بنا إلى استجابات Json. فهي تعمل كطبقة إنتقالية بين ال Eloquent models و استجابات Json المُخرجة بواسطة ال api.

    Api resources مكونة من كينونتان و هما:

    • resource class

    و هو يمثل model وحيد يحتاج إلى التحويل إلى json structure.

    • resource collection

     و هو يمثل مجموعة من ال models وحيد يحتاج إلى التحويل إلى json structure.

    و كلاهما يمكن صنعه باستخدام artisan commands:

     

     // create a resource class
        $ php artisan make:resource UserResource
    
     // باستخدام إحدى الطريقتين التاليتين resource collection صناعة 
        $ php artisan make:resource Users --collection
        $ php artisan make:resource UserCollection

    يمكنك تعلم المزيد عن api resources من التوثيق الخاص بهم.

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

    مثلًا:

    و ستجد غيرها الكثير إذا قمت بكتابة (web templates / blog template)  في محركات البحث.  يمكنك تحميل هذه القوالب و إضافة بياناتك إليها و تخصيصها حسب رغبتك. 

    أنصح بقراءة المقال التالي لبعض النصائح و الإرشادات التي تساعدك على إختيار القالب الأمثل لاحتياجاتك:كيف تختار قالب موقعٍ إلكتروني (ما هو الخيار الافضل لموقعك؟)

  9. #include <iostream>
    #include <math.h>
    using namespace std;
    
    int main()
    {
      	/*  sum نقوم بتعريف متغير لتخزين ناتج جمع المتسلسلة */
      	/* و متغير اّخر لحساب قيمة كل حد في المتسلسة */
        double sum = 0, a;
      	
      	/* n نقوم بتعريف متغير لتخزين عدد حدود المتسلسلة */
        int n, i;
        cout << "\n\n Find the sum of the series 1/2 + 2/2 +.....+ n/2:\n";
        cout << "----------------------------------------------------------------\n";
        cout << " Input the value for nth term: ";
        cin >> n;
      	/* نقوم بعمل حلقة لحساب كل حد من حدود المتسلسلة و جمعه إلى الحدود الأخري */
        for (i = 1; i <= n; ++i) 
    	{
          	/* نقوم بحساب قيمة كل حد من حدود المتسلسلة */
            a = i / 2;
            cout  << i << "/" << "2" << " = " << a << endl;
          /* نقوم بجمع كل حد  إلى الحدود السابقة */
            sum += a;
        }
        cout << " The sum of the above series is: " << sum << endl;
    }

    الكود السابق يوضح ال logic المستخدم لحساب مجموع المتسلسلة

    يمكن بعد ذلك استخدامه داخل دالة من نوع double لأننا نريدها أن ترجع مجموع السلسلة و هو من نوع double 

    double sumOfSeries(int n);
    
    /* main section */
    
    double sumOfSeries(int n) {
    	/* كود جمع المتسلسلة السابق */
      return sum;
    }

     

  10. ما كنت اقصده هو:

    for (int i = 0; i< list.lenght ;i++){
    	for (int j =0; j< (عدد صفوف الجدول الحالية) ; j++) {
        	if (اّي دي العنصر رقم اّي في القانمة  لا يساوي  اّي دي العنصر رقم جي في الجدول){
            	// قم بإضافة المنتج الجديد إلى الجدول
            }
        }
    }

    أو إستخدام الطريقة التالية:

    // يمكنك إستخدام الطريقة التالية 
    
    
    // هنا تقوم بصناعة الجدول الذي ستضيف إليه المنتجات
    DefaultTableModel CurrentPurchases= new DefaultTableModel();
    Pname=rs.getString("ProductName");
    Price=rs.getString("Price");
    CurrentPurchases.addRow(new Object[]{Pname,Price});
    
    // You need to get model from your table, to which you want to add a new row. For example you have 2 methods for      creation table and for adding row to that table
    // يجب أن تمتلك موديل من الجدول الذي ستضيف له الصفوف 
    // فمثلًا سيكون عندك 2 methods
    // إحداها من أجل صنع الجدول و الأخري من أجل إضافة الصفوف 
    // كما  يلي:
        public void init() {
            targetTable = new JTable(new DefaultTableModel());
        }
    
        public void addRow(){
            ((DefaultTableModel)targetTable.getModel()).addRow(new Object[]{});
        }
    // here targetTable it is your table(CurrentPurchases). You need to have reference to that.

    يمكنك قراءة المقال التالي كيف تستخدم jtable .

    ستجد فيه مثال مشروح مشابه لما تريد تنفيذه. 

  11.  ما لاحظته في الكود الخاص بخضرتك أنه في كل مرة تضيف فيها منتج جديد إلى الجدول يتم إضافة هذا المنتج  إلى قائمة المنتجات. فيصبح محتوى تلك القائمة هو المنتجات الموجودة مسبقا بالإضافة إلى المنتج الجديد. بعد ذلك تقوم بعمل  for loop  على القائمة بأكملها لتعرض كل محتوياتها في الجدول (المنتجات السابقة مع المنتج الجديد) .

    أحد حلول هذه المشكلة:

    • مثلًا تستخدم جملة شرطية (if statement) داخل ال for loop لتقارن بين ال ids الخاصة بالمنتجات الموجودة بالقائمة و ال ids الخاصة بالمنتجات المعروضة بالجدول. فإذا كان المنتج موجود في الجدول لا تضيفه و تكمل الدورة و إن لم يكن موجود في الجدول تقوم بعرضه في الجدول. 

     

    • يمكنك تجربة الكود التالي أيضًا: 

     هذا الكود يستخدم  batch insert لإضافة المنتجات إلى الجدول.

    try {
      connection con.setAutoCommit(false);        
      PreparedStatement prepStmt = con.prepareStatement(    
        "insert into product(code,name,price,available) values (?,?,?,?");
      Iterator<Product> it = li.iterator();
      while(it.hasNext()){
         Product p = it.next();
        prepStmt.setString(1,p.getCode());            
        prepStmt.setString(2,p.getCode());
        prepStmt.setInt(3,p.getPrice());
        prepStmt.setBoolean(4,p.isAvailable());
        prepStmt.addBatch();                      
    
      }      
      int [] numUpdates=prepStmt.executeBatch();
      for (int i=0; i < numUpdates.length; i++) {
        if (numUpdates[i] == -2)
          System.out.println("Execution " + i + 
            ": unknown number of rows updated");
        else
          System.out.println("Execution " + i + 
            "successful: " + numUpdates[i] + " rows updated");
      }
      con.commit();
    } catch(BatchUpdateException b) {
      // process BatchUpdateException
    } 

     

  12. بتاريخ 15 ساعات قال Karim Jibaku:

    اقصد ان css يعطي الاسبقية لتنسيقات الموجودة في وسم فيطبقها و يتجاهل التنسيقات الموجودة في style sheet لنفس العنصر 

    هذا مثال 

    :css specificity

      ال specificity هي وزن معطى ل css declaration معين, يتم تعيين هذا الوزن حسب رقم نوع كل selector في ال selectors المستخدمة

    1. "Type selector"محددات النوع مثل h1 و pseudo-elements مثل  before::
    2. "class selector" محددات class مثل ( myclass.)  و attributes selectors مثل (["type="radio]) و pseudo-classes مثل ( hover:) 
    3. "ID selector"محددات ID مثل ( myId#)

    فعندما تقوم بكتابة  عدة declarations لها نفس الوزن سيتم تطبيق التنسيق المذكور في ال declaration الأخير.

     

     

     

    يمكنك إستخدام هذة الأداة لحساب ال  specificity calculator :specificity

  13. إذا كنت تقصد الصورة الموجودة تحت كلمة "موشن جرافيك" هذه النوعية من الصور تسمى svg illustrations "رسومات قابلة للتحجيم" و يوجد العديد من الأدوات التي تمكنك من تصميمها بنفسك

    مثل:

    • GLYPHTER
    • CHARTIST.JS
    • SNAP.SVG
    • METHOD DRAW
    • RAW

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

    مثال على هذه المواقع:

    و يوجد غيرها الكثير يمكنك أن تكتب svg illustrations for web في محرك البحث و سيظهر لك العديد من الإختيارات.

  14. بالطبع لا. إستخدام java ليس إلزاميًا يوجد العديد من  الوسائل التي تمكنك من ذلك 

    مثل:

    • Kotlin
    • ++c
    • #c
    • python
    • corona
    • HTML, CSS, JavaScript

    و لكن إستخدامهم يتطلب مكاتب و إطارات حتي تصبح مناسبة لل android. فمثلًا:

    - إذا كنت تريد استخدام لغة python:

    يوجد العديد من المكتبات التي تقوم بتحويل تطبيقات البايثون إلى android packages التي تعمل على أجهزة ال android.

    أحد هذه المكتبات هو مكتبة Kivy.

    - إذا كنت تريد إستخدام HTML, CSS, JavaScript:

    يمكنك إستخدام frameworks مثل:

    1. Cordova / PhoneGap
    2. Ionic

    و غيرها.

    • أعجبني 1
  15. بتاريخ 9 ساعات قال Abdalrhman Al Atassi:

    تمام شكرا لك...

    ما هي الطريقة و كيف يمكنني الربط الملف ب DevTools

    شكرا...

    • اضغط على كلمة sources في DevTools
    • ثم Filesystem بعد ذلك علامة + 
    • سيظهر لك نافذة لاختيار المجلد / الملفات التي تحتوي المشروع 
    • قم باختيار الملف و ابدأ بالعمل و سيتم نقل التغييرات في ملفات المشروع

    Annotation 2020-07-20 225804.jpg

    Annotation 2020-07-20 230128.jpg

    • أعجبني 1
  16. يوجد طريقة تمكن من حفظ التعديلات إلى ملفات الموقع الذي تعمل عليه مباشرةً دون الحاجة إلى النسخ و اللصق حيث يمكنك ربط ملفات المشروع ب DevTools. و لكن هذه الخاصية متاحة للإستخدام للمواقع التي تعمل أنت على تطويرها فقط. و هي غير ممكنة في الحالة التي تريدها للأسف. 

    • أعجبني 1
  17. الممارسة, الممارسة, و الممارسة. 

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

    يمكنك دائمًا ممارسة ما تعلمتيه في تطبيقات بسيطة حتى تتمكني من تثبيت ما تعلمتيه و تطوير مهاراتك.

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

  18. المقصود بذلك أنه لايتم حفظهم في قواعد البيانات.

    أما caching فالمقصود بذلك أن البرنامج يقوم بتذكر أماكن البيانات أو النتائج "المخرجات" التي قام بطلبها ال client فبذلك إذا قام بطلبها مرة أخرى يرسلها له مباشرة دون البحث في قاعدة البيانات أو القيام بالعمليات الحسابية و المنطقية مرة أخرى مما يحسن من أداء الموقع و سرعته.

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