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

Yomna Raouf

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

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

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

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

    65

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

  1. هذا الخطأ يظهر أيضا في وجود foreign key بنفس الاسم في جدول آخر.لذلك عندما يظهر لك هذا الخطأ تأكد من تماشي/تطابق أنواع البيانات أيضا إذا كان ال primary key UNSIGNED يجب أن يكون ال foreign key  unsined كذلك.ط و من أن أسماء ال foreign keys فريدة unique.

    إذا لم تتمكن من حل المشكلة أرجو تزويدنا بمزيد من المعلومات عن الأكواد و قاعدة البيانات حتى نتمكن من مساعدتك.

    شكرا لك.

    • أعجبني 1
  2. التقنية المستخدمة في هذا الأمر هي ajax  هي اختصار ل Asynchronous JavaScript and Xml و هي تقنية مستخدمة في جميع مواقع الويب هذه الأيام و تمكننا هذه التقنية من التنقل داخل المواقع دون إعادة تحميل الموقع في كل مرة نطلب فيها صفحة ما فمثلًا في موقع حسوب عندما نتنقل بين أسئلة البرمجة و أسئلة العمل الحر مثلًا لا يتم تحميل الموقع بأكمله و إنما يتم تحميل الجزء الذي يعرض الأسئلة فقط. و تمكننا أيضًا من طلب بيانات من الخادم بعد أن تم تحميل الموقع و العديد من المزايا الأخرى. 

    لنأخذ المثال التالي لنتعرف كيفية تطبيق هذه التقنية:

    لنفرض أمه لدينا ال form التالية:

    <!DOCTYPE html>
     
    <html>
    <head>
     <title>PHP MySQL Insert Tutorial</title>
            <script src='https://code.jquery.com/jquery-2.1.3.min.js'></script>
    </head>
     
    <body>
     <form action='insert.php' method='post' id='myform' >
     <p>
     <input type='text' name='username' placeholder='user name' id='username' />
     </p>
     
     <p>
     <input type='text' name='password' placeholder='password' id='password' />
     </p>
     
     <button id='insert'>Insert</button>
     
     <p id='result'></p>
     </form>
    </body>
    </html>

    php-mysql-insert1.png.f445c7ea8ee47c4ee1b88e073d6928b6.png

    و ال script التالي "ملف insert.php" لإضافة بيانات لقاعدة البيانات:

    <?php
    
    // ثوابت الاتصال
     define('HOST','localhost');
     define('USERNAME', 'root');
     define('PASSWORD','');
     define('DB','mydatabase');
    
    
    // جملة الاتصال بقاعدة البيانات 
     $con = mysqli_connect(HOST,USERNAME,PASSWORD,DB);
     
    // form قراءة البيانات التي تم إرسالها من ال 
     $username = $_POST['name'];
     $pass = $_POST['pass'];
     
    // إدخال هذه البيانات لقاعدة البيانات
     $sql = "insert into users (username, password) values ('$username','$pass')";
     
     if(mysqli_query($con, $sql)){
     echo 'success';
     }
    ?>

     

    الآن سنقوم باستخدام ajax لإدخال البيانات إلى قاعدة البيانات بدون تحديث الصفحة:

    سنقوم بإنشاء ملف يسمى insert.js و نقوم بتضمينه في الملف الذي يحتوي html form:

    <script src='insert.js'></script>

    الآن سنستخدم الأكواد التالية لمنع ال form من إعادة التوجيه إلى insert.php "لاحظ ال action الخاص بال form":

    $('#myform').submit(function(){
     return false;
    });
     

    إذا قمت بالضغط على ال insert button الآن لن يحدث شئ.

    الآن سنقوم بتنفيذ أكواد php في الخلفية باستخدام التابع jquery.post:

    $.post(
     'script to execute',
     'values to send',
     function(result){
     //get the output of the script
     }
    );

    سنقوم باستخدام الطريقة jquery.post السابقة داخل دالة الضغط على الزر، ليصبح الشكل النهائي لملف insert.js كما يلي:

    $('#myform').submit(function(){
     return false;
    });
     
    $('#insert').click(function(){
     $.post( 
     $('#myform').attr('action'),
     $('#myform :input').serializeArray(),
     function(result){
     $('#result').html(result);
     }
     );
    });

    و بذلك نكون قد تمكنا من إدخال البيانات في قاعدة البيانات بدون تحديث الصفحة.

     

  3. بتاريخ 9 ساعات قال مروان مروان3:

    كنت ارغب بتحديث نسخة اكس كود ولكن في المتجر يخبرني انها تعمل على اصدار 10.15.4 

    وانا لدي نسخة Catalina  10.15.3

    حسنًا.

    أعتقد أنه بإمكانك تثبيت Catalina 10.15.4 من هنا ثم تحديث xcode و تنزيل الملفات :

    بتاريخ 10 ساعات قال Yomna Raouf:

    ثم تنزيل هذه الملفات و وضعها في هذا المسار:

    
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

     

     

  4. بتاريخ 10 ساعات قال مروان مروان3:

    مع الاسف اخوي اني سبق وقمت بتجربة كل ذلك ولم ينجح الامر 

    اما بنسبة لوضع المحاكي التطبيق شغال على المحاكي 110/100

    مع الاسف انني سبق وقمت بعمل كل ذلك ولم ينجح الامر

    هل يمكنك تحديث نسخة xcode إلى 12.2beta

    ثم تنزيل هذه الملفات و وضعها في هذا المسار:

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

    و إخباري بالنتائج؟

    • أعجبني 1
  5. بتاريخ 9 ساعات قال مروان مروان3:

    Catalina  10.15.3

    IOS 14.2

    XCODE 11.7

    النسخ التي تستخدمها متوافقة.

    هل يمكنك تجربة الخطوات التالية:

    • فصل الاقتران بين ءcode و الهاتف Unpair the device in Xcode.
    • تنظيف ملفات المشروع Clean the project.
    • فصل الهاتف من جهاز الحاسوب Unplug and then restart iPhone.
    • إعادة تشغيل xcode  Restart Xcode.
    • و التجربة مرة أخرى

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

    • أعجبني 1
  6. بتاريخ 12 ساعات قال عبدالله عمر احمد:

    لم افهم

    مرحبًا و @عبدالله عمر أحمد@Rawad Altaib

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

    --

    و لكن في العموم يوجد أكثر من طريقة لرفع المشاريع الخاصة بك على github.

    أحد هذه الطُرُق:

    • نقوم بإنشاء حساب على github.com من خلال github.com/join
    • بعد ذلك نقوم بتسجيل الدخول 
    • سنجد في الشريط العلوي علامة + نقوم بالضغط عليها
    • بعدها ستظهر لنا قامة منسدلة نختار منها new repository أي مستودع جديد

    5fad84e2bcca3_Annotation2020-11-12175204.thumb.jpg.2bc56b6842992321f2831bf3ef98c6be.jpg

    • بعدها ستظهر لنا الصفحة التالية

    5fad86185ec75_Annotation2020-11-12204944.thumb.jpg.c5ac622132b0007632045200ee954d0c.jpg

    • نقوم بإعطاء المستودع الاسم الذي نريده في الحقل repository name و و صف للمشروع إذا أردنا في الحقل الخاص ب description و نختار ما إذا كنا نريد أن يكون المستودع خاصًا أو ظاهرًا للعامة
    • بعدها يبقى لنا خيار add a README  file "يمكنك تجاهل الحقلين add .gitignore و chose a license الآن"، الآن أمامنا طريقان:

    الطريق الأول اختيار add a README  file و الضغط على create repository:

    • ستظهر لنا الصفحة التالية بعدها:

    5fad88cf8c821_Annotation2020-11-12210000.thumb.jpg.7fa9eb26099b97d3f83960340aca9f40.jpg

    أما إذا لم نقم باختيار  add a README  file ستظهر لنا الصفحة بالشكل التالي:

    5fad88d1d7a69_Annotation2020-11-12210152.thumb.jpg.2f017547149a283e84961b43376d7d01.jpg

    الآن لرفع المشروع الخاص بك يمكنك القيام بالتالي:

    • رفع ملفات المشروع بطريقة يدوية عن طريق الضغط على add file أو uploading an existing file كما هو مشار إليه بالمربع الأصفر في الصورتان السابقتان. بعدها ستظهر لنا هذه الصفحة التالية حيث يمكننا سحب الملفات و وضعها في المستطيل الخاص بإرفاق الملفات و الضغط على commit changes بعد اكتمال رفع الملفات. و بذلك تكون قد قمت برفع المشروع الخاص بك على المستودع البعيد5fad8a4d5d831_Annotation2020-11-12210745.thumb.jpg.6c1ee0002117531b5db52b2bfc6fa1f0.jpg
    • أو رفع المشروع باستخدام الطرفية عن طريق الأوامر التالية:
      git init
      
      // ثم
      
      git add README.md
      
      // ثم
      
      git commit -m "first commit"
      
      // ثم 
      
      git branch -M main
      
      // ثم
      
      git remote add origin https://github.com/ اسم المستخدم/repoName.git
      
      // ثم
      
      git push -u origin main
                      

      ستجد هذه الخطوات موجودة في المستودع الذي يتم إنشاءه بدون readme 5fad88d1d7a69_Annotation2020-11-12210152.thumb.jpg.2f017547149a283e84961b43376d7d01.jpgو لكن لاستخدام هذه الطريقة يجب تثبيت طرفية تسمى git من خلال الموقع الرسمي لها Git - Downloads (git-scm.com) و تنصيبها و بعد ذلك استخدام هذه الأوامر لرفع المشاريع بعد التسجيل بحساب github الخاص بك.

     

    • أعجبني 1
  7. بتاريخ 10 ساعات قال عبدالله عمر احمد:

    mysql

    وان كنت تعرف الحل لل postgresql فساحول 

    الحل الخاص ب PostgreSQL:

    سنحتاج لتثبيت مكتبة تسمى psycopg2 و هي مكتبة تُمكننا من التواصل مع قاعدة البيانات

    pip install psycopg2

    نقوم بفتح ملف settings.py الخاص بمشروعك ثم نقوم بالتمرير حتى نصل إلى الجزء الخاص ب database و الذي يبدو كما يلي:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

    سنقوم ببعض التعديلات عليه حتى نتمكن من استخدام PostqreSQL مع Django ليصبح كما يلي:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'اسم قاعدة البيانات الخاصة بالتطبيق',
            'USER': 'اسم المستخدم ',
            'PASSWORD': 'كلمة المرور الخاصة بالمستخدم',
            'HOST': 'localhost',
            'PORT': 'المنفذ الذي تريد الاتصال بقاعدة البيانات عن طريقه- المنفذ الافتراضي هو 5432',
        }
    }

    ----

    الاتصال بقاعدة البيانات:

    سنتوجه إلى ال directory التي تحتوي الملف manage.py و نقوم بتنفيذ الأمر التالي:

    python manage.py migrate

    إذا تمت الأمور على ما يرام من المفترض أن ترى مخرجات كهذه:

    Operations to perform:
      Apply all migrations: admin, auth, contenttypes, sessions
    Running migrations:
      Applying contenttypes.0001_initial... OK
      Applying auth.0001_initial... OK
      Applying admin.0001_initial... OK
      Applying admin.0002_logentry_remove_auto_add... OK
      Applying admin.0003_logentry_add_action_flag_choices... OK
      Applying contenttypes.0002_remove_content_type_name... OK
      Applying auth.0002_alter_permission_name_max_length... OK
      Applying auth.0003_alter_user_email_max_length... OK
      Applying auth.0004_alter_user_username_opts... OK
      Applying auth.0005_alter_user_last_login_null... OK
      Applying auth.0006_require_contenttypes_0002... OK
      Applying auth.0007_alter_validators_add_error_messages... OK
      Applying auth.0008_alter_user_username_max_length... OK
      Applying auth.0009_alter_user_last_name_max_length... OK
      Applying auth.0010_alter_group_name_max_length... OK
      Applying auth.0011_update_proxy_permissions... OK
      Applying sessions.0001_initial... OK

    و بذلك يكون قد تم الاتصال بقاعدة البيانات PostgreSQL و يمكنك أن تبدأ باستخدامها و إنشاء queries في models.py بالطريقة الطبيعية التي تستخدمها مع أي قاعدة البيانات. إذا كان هذا الأمر جديد عليك يمكنك أن تبحث عن سلاسل تعليمية "Django database queries - Making queries in Django " حتى تتعلم كيفية القيام بذلك. و إذا واجهتك أي مشاكل يمكنك طرح سؤالك هنا و سنقوم بمساعدتك

  8. بتاريخ 10 ساعات قال محمد رشيد2:

    لا الملف لورد بريس

    كيف بيكون الكود المصدري

    الكود المصدري أي الكود الذي يكتبه المطور بنفسه مثل:

    text-21.jpg.671a4c8ee5694e0da26d4a99fee63d91.jpg

    أما الملف الذي تم تشفيره باستخدام ioncube ستجد أنه يشبه هذا 

    5fad4eccf26cb_Annotation2020-11-12165423.thumb.jpg.2ef34655035d4a9f0701011637265d8d.jpg

    لذلك الحل الوحيد هنا هو استخدام أدوات و تطبيقات ال dezender

  9. هل يمكنك التوضيح أكثر حتى نتمكن من مساعدتك بشكل أفضل؟؟

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

    • أعجبني 1
  10. بتاريخ 10 ساعات قال محمد رشيد2:

    شكرا اخي كريم على الرد السريع واللع تعبت لحصل رد لاكن شو الفرق بين decode وال dezend

    واذا في شي حل اخر

    حتى نفهم ذلك دعني أشرح لك مفهوم ال zend أولًا.

    يقوم ال zend engine ب:

    • يتم عمل compilation لأكواد php إلى مجموعة من ال opcodes "و ال opcodes هي اختصار ل operation code و هي تعتبر تعليمات للآلة تم كتابتها بلغة الآلة machine language instructions"
    • بعد ذلك يقوم بعمل  execution لهذه ال opcodes

    و عملية ال dezend هي عكس هذه العملية و للقيام بذلك يمكنك استخدام برامج أو خدمات مدعوة للقيام بذلك مثل idezender و غيرها.

    -- أما عملية ال decode.

    عملية ال encode هي تحويل نص ما إلى رموز غير مفهومة عن طريق آلية معينة، مثلًا تحويل كلمة "something" إلى الصورة التالية "437B930DB84B8079C2DD804A71936B5F" حتى يصعب على المخترقين معرفة الكلمة الحقيقية و هي تستخدم لأغراض الحماية.

    و عملية ال decode هي عكس عملية ال encode أي إعادة 437B930DB84B8079C2DD804A71936B5F إلى something.

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

    و لفك هذا التشفير أيضًا يمكنك استخدام بعض الأدوات و التطبيقات مثل İoncube Decoder.

    و يقوم المطورون بتنفيذ هذه العمليات على مشاريعهم لحمايتها و عدم السماح للآخرين بالتعديل عليها أو استخدامها، أي أن استخدام هذه الأدوات أمر مخالف.

    -- إذا كانت الملفات التي تعمل عليها الآن هي ملفات لمشروع أحد العملاء مثلًا و تحتاج للتعديل عليها يمكنك أن تشرح له الأمر تطلب منه تزويدك بالكود المصدري للمشروع حتى تتمكن من العمل عليه

     

  11. إذا كنت تستخدمين نسخة  laravel  السادسة أو السابعة يمكنك القيام بذلك باتباع الخطوات التالية:

    نقوم بإنشاء مشروع laravel جديد:

    composer create-project laravel/laravel --prefer-dist laravel-bootstrap

    نقوم بالدخول إلى المشروع الذي قمنا بإنشاءه:

    cd laravel-bootstrap

    نقوم بتثبيت laravel ui:

    composer require laravel/ui

    نقوم بتنزيل bootsratp:

    php artisan ui bootstrap

    بعدها هذا الأمر:

    php artisan ui bootstrap --auth

    بعدها نقوم بتنزيل حزمة bootstrap و الحزم التي تعتمد عليها :

    npm install

    بعدها سنلاحظ أنه تم إضافة التالي في الملفات  variables.scss_ و app.scss الموجودة في resources/sass

    // Fonts
    @import url('https://fonts.googleapis.com/css?family=Nunito');
    
    // Variables
    @import 'variables';
    
    // Bootstrap
    @import '~bootstrap/scss/bootstrap';

    ثم:

    # أثناء التطوير
    npm run dev
    
    
    # أثناء الإنتاج
    npm run production

    لاستخدام bootstrap في ملفات laravel blade templates:

    <!doctype html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
    
        <title>{{ config('app.name', 'Laravel') }}</title>
    
        <!-- Scripts -->
        <script src="{{ asset('js/app.js') }}" defer></script>
    
        <!-- Styles -->
        <link href="{{ asset('css/app.css') }}" rel="stylesheet">
    </head>
    
    <body>
        <h1>Tutorial made by Positronx.io</h1>
    </body>
    </html>

    للنسخ الأقدم نقوم بالتالي:

    لإنشاء مشروع:

    laravel new App

    بعدها نقوم بتنزيل حزمة bootstrap و الاعتماديات"سيتم تثبيت bootstrap 3 بصورة افتراضية" : 

    npm install

    نقوم بتثبيت   bootstrap 4 :

    npm install bootstrap@4.0.0-beta

    نقوم بتضمين الملفات في الملف resources/assets/sass/app.scss

    // Fonts
    @import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600");
    
    // Variables
    @import "variables";
    
    // نقوم باستبدال السطر التالي
    
    // Bootstrap
    @import "~bootstrap-sass/assets/stylesheets/bootstrap";
    
    // بهذا السطر حتى يتم استيراد الخطوط و المتغيرات من النسخة الرابعة و ليس الثالثة
    
    // Bootstrap
    @import "node_modules/bootstrap/scss/bootstrap";

    التعديل الأخير المتعلة ب css و هو تعديل كل px في ملف  variables.scss_ إلى rem.

    في ملف js/bootstrap.js نقوم بتعديل:

     require('bootstrap-sass');

    إلى:

     require('bootstrap');

    ثم نقوم بتنفيذ الأمر التالي في الطرفية:

    npm run production

     

  12. بتاريخ 10 ساعات قال Ahmed Sawy:

    هل كلامه صحيح ام لا ؟؟؟ 

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

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

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

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

    بتاريخ 10 ساعات قال Ahmed Sawy:

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

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

  13. مرحبًا عبد الواحد.

    لا أنصحك أبدًا بمعالج من النوع U فهذه المعالجات أداؤها متواضع جدًا "و قد قمت بتجربتها شخصيًا" و ستسبب لك الكثير من المشاكل و الإزعاج و ثِقل بالجهاز أثناء عملك، أنصحك بأن تبحث عن جهاز المعالج الخاص به من النوع H. أيضًا من الأفضل أن لا تقل ال RAM عن 16GB يمكنك استخدام جهاز ال RAM الخاص به 8GB لكن ستعاني بعض المشاكل و الثِقل في بعض الأحيان

    • أعجبني 1
  14. --في السطر الخاص ب json.stringfy هنا نقوم بتحويل الكائن product إلى الصيغة json حتى نقوم بإرساله إلى المُخدم لأن خادم الويب لا يمكنها أن تفهم الكائنات الخاصة ب javascript فقط يمكنها فهم السلاسل النصية.

    أي يتم تحويل كائن بهذه الصورة:

    let product = {
    
    	id: '64564545',
    	productName: 'iphone',
    	price: 1300
    
    }

    إلى هذه الصورة:

     {
    
    	"id": "64564545",
    	"productName": "iphone",
    	"price": 1300
    
    }

    --أما السطر الخاص ب conten-type فهنا نقوم بتحديد نوع البيانات التي سيتم إرسالها إلى الخادم هل ستكون text/html أم json كما في المثال السابق، هنا نحن نريد إرسال بيانات من النوع json لذلك قمنا باستخدام النوع application/json

    --أما السطر الخاص ب

    const id = (await response.json()).name

    في السطر الخاص ب const response نحن قمنا بإرسال طلب إلى الخادم و ننتظر منه أن يعيد لنا بيانات ما على صورة json أيضًا. من البيانات التي سيعيدها هي name و هي التي تحمل ال id الخاص بالمنتج الذي تم إرساله إلى الخادم.

    لذلك هنا ()await response.json نحن ننتظر البيانات التي سيعيدها الخادم و بعد ذلك نقوم باستخراج قيمة الخاصية name و تخزينها في المتغير id

  15. يمكنك استخدام الأمر التالي حتى تقوم بعمل rollback و تعود لل commit التي تريدها "أي إعادة الملفات لما كانت عليه قبل التحديثات"

    git reset --hard c2e7af2b51
    

    الرقم الموجود بعد كلمة hard هو ال  id الخاص بال commit التي تريد العودة لها،  ولكن كيف نحصل عليه.

    •  بعد أن نقوم بفتح المستودع سنجد كلمة commits كما هو موضح بالصورة5fa6979dea67c_Annotation2020-11-07143703.thumb.jpg.469482a27377da8f52a027ca2c1921c2.jpg
    • نقوم بالضغط عليها و بعد ذلك سيتم فتح الصفحة التالية5fa697a00173a_Annotation2020-11-07143917.thumb.jpg.f092c1f8189467029886f10c12c2b4ce.jpg
    • نقوم بنسخ ال id الخاص بال commit التي تريد العودة لها و وضعه بعد كلمة hard الموجودة في الأمر المذكور أعلاه 
    • و نقوم بتنفيذ الأمر و ستجد أن الملفات عادت لما كانت عليه في ال commit التي نسخنا ال id الخاص بها.

    -- إذا لم تكن متأكد من الأكواد التي تحتويها ال commit يمكنك الضغط على <> حتى تتمكن من معرفة التعديلات التي تمت بها.

    • أعجبني 3
  16. بتاريخ 9 ساعات قال Mohamed Ahmed51:

    How long will it take me to be able to learn react I know HTML and I a little css 

    قبل أن تتعلم react يجب  أن تكون ملمًا بأساسيات html و css و javascript  بالإضافة إلى معرفة es6 لا يجب أن تكون خبيرًا فقط الأساسيات التي تجعلك تتمكن من بناء مواقع و تطبيقات ويب بسيطة بنفسك. أما عن الوقت الذي ستحتاجه لتعلمها فلا يوجد أحد يمكنه إجابتك على هذا السؤال فالأمر يتوقف عليك و على مدى سرعة و طريقة تعلمك قد تستغرق أسبوعًا أو شهرًا أو عدة أشهر الأمر يتوقف عليك. 

  17. يوجد العديد من التقنيات التي تمكنك من بناء مواقع مثل الأمثلة المذكورة.

    و لكن هذه هي التقنيات التي تم بناء الموقع retailmenot.com:

    • React.js و هي أحد مكتبات جافاسكريبت تم تطويرها من قِبَل مطوري facebook و تستخدم لبناء واجهات المستخدم "تستخدم نيابةً عن html و css و jquery و bootstrap" 
    • Next.js و إطار عمل يستخدم لبناء server-side-rendered React apps بسهولة. أي أنه إطار عمل يستخدم مع react. و قد تم استخدامها في هذا الموقع ك web framework و web server
    • node.js و هو بيئة تشغيل/عمل تُمكننا من استخدام javascript في ال backend "خارج المتصفح بصفة عامة"

    أما الموقع الثاني فهو لا يعمل الآن لذلك لا يمكنني اخبارك بكافة التقنيات و التفاصيل و لكنه يستخدم مكتبة react أيضًا

  18. يمكنك استخدام الطريقة التالية باستخدام مكتبة dart:io لتحديد نظام التشغيل الخاص بالجهاز.

    حيث يمكنك الحصول غلى اسم نظام التشغيل كسلسلة نصية string باستخدام الoperatingSystem getter، و يمكنك أيضًا استخدام أحد ال boolean getters مثل isMacOS, isLinux, and isWindows

    import 'dart:io' show Platform;
    
    void main() {
    
    // Get the operating system as a string.
      String os = Platform.operatingSystem;
    
    // Or, use a predicate getter.
    if (Platform.isIOS) {
      print('is a IOS');
    } else if (Platform.isAndroid) {
      print('is a Andriod');
    } else {
    }

     

    • أعجبني 1
  19. للحصول على اسم الموظفين و تاريخ التوظيف الخاص بالموظفين الذين تم توظيفهم في عام 1982 في oracle يمكنك استخدام الاستعلام التالي:

    SELECT name, hire_date FROM employees
    WHERE hire_date >= '1982-01-01' and hire_date < '1982-01-01'

    في البداية نقوم بتحديد/اختيار SELECT الأعمدة التي نريد الحصول على البيانات الخاصة بها هذه الأعمدة هي اسم الموظف name و تاريخ توظيفه hire_date "قد تختلف أسماء هذه الأعمدة في قاعدة البيانات الخاصة بك"

    نقوم باختيار هذه الأعمدة من FROM  جدول الموظفين employees "قد يختلف اسم هذا الجدول في قاعدة البيانات الخاصة بك"

    و من هذه الأعمدة نريد استخراج أسماء الوظفين الذين تم توظفيهم في عام 1982 بالإضافة إلى تاريخ توظيفهم لذلك نقوم باستخدام where أي عندما تاريخ التوظيف أكبر من أو يساوي أول أيام عام 1982 و أصغر من أول أيام العام الذي يليه أي 1983

  20. الأمر يختلف من عميل لآخر، ففي كل مشروع سيخبرك العميل عن الطريقة التي يريد استلام المشروع بها، فمثلًا:

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

     

    • أعجبني 2
  21. يمكنك استخدام package جاهزة للقيام بذلك:

    مثل: php-credit-card-validator

    • طريقة تثبيتها كما يلي:

    نقوم باستيرادها في ملف  composer.json

    "require": {
        "inacho/php-credit-card-validator": "1.*"
    },

    و إذا كنت تستخدم laravel نقوم بإضافة alias في config/app.php:

    'aliases' => array(
    
        'App'             => 'Illuminate\Support\Facades\App',
        ...
        'View'            => 'Illuminate\Support\Facades\View',
    
        'CreditCard'      => 'Inacho\CreditCard',
    
    ),
    • طريقة الاستخدام:

    التحقق من رقم البطاقة في حال معرفة نوعها:

    $card = CreditCard::validCreditCard('5500005555555559', 'mastercard');
    print_r($card);
    
    

    الناتج:

    // Output:
    
    Array
    (
        [valid] => 1
        [number] => 5500005555555559
        [type] => mastercard
    )

    التحقق من رقم البطاقة و إعادة نوعها:

    $card = CreditCard::validCreditCard('371449635398431');
    print_r($card);

    الناتج:

    // Output:
    
    Array
    (
        [valid] => 1
        [number] => 371449635398431
        [type] => amex
    )

    التحقق من CVC:

    $validCvc = CreditCard::validCvc('234', 'visa');
    var_dump($validCvc);

    الناتج:

    // Output:
    
    bool(true)

    التحقق من تاريخ الانتهاء:

    $validDate = CreditCard::validDate('2013', '07'); // past date
    var_dump($validDate);

    الناتج:

    // Output:
    
    bool(false)

     

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