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

محمد صقر3

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

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

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

أجوبة بواسطة محمد صقر3

  1. جزانا وإياكم خير الجزاء 

    عند استخدام ال Prepared statements لا يوجد خظر الحقن لأن سيرفر الداتا بيز يقوم بفحص ال paramaters المرسله مع ال query فلا يوجد حقن

    الحقن يكون في حالة أنه لم تستخدم ال  Prepared statements و bind parmaters 

    مثلا في هذه الحالة

    
    $user_Received_id= $_GET["user_Received_id"];
    
    $sql = "SELECT  * FROM  conversation WHERE user_Received_id = $user_Received_id";
     
    $result = $con->query($sql);

     

    • أعجبني 1
    • تقوم الأقراص بحفظ الملفات باستخدم جدول توزيع الملفات File Allocation Table يختصر إلى FAT
    • داخل هذا الجدول تحفظ الأقراص جميع البيانات الخاصه عن الملفات مكان الملف علي القرص و حجم الملف ونوع الملف وغيرها
    • عند فتح ملف معين يقوم القرص بالذهاب إلي هذا الجدول ومعرفة بيانات الملف مكانه علي القرص وحجمه وهكذا ثم يبدأ في قراءة الملف
    • يأخذ هذا الجدول مساحه من القرص مثلا إذا كان حجم القرص 500 جيجا فتظهر مساحة القرص أقل من 500 جيجا والباقي يستخدمه هذا الجدول لتخزين بيانات عن الملفات والوسائط الموجوده علي هذا القرص
  2. يمكن مسح العناصر المتكرر اكثر من مره في ال list عن طريق عمل tmp dictionary ونعدد عدد مرات تكرار العنصر في ال list 

    ثم نقوم بإضافة العناصر التي تكررت مره واحده فقط لل result list

    t = [1, 2, 3, 1, 2, 5, 6, 7, 8]
    
    tmp = {}
    result = []
    
    // نقوم بعد عدد مرات تكرر العنصر في ال list
    for x in t:
        d = {x: (tmp.get(x, 0) + 1)}
        tmp.update(d)
    
    // ناتج هذه العمليه يحتوي ال tmp dictionary 
    // تحتوي العنصر وعدد مرات تكراره
    // tmp = {1: 2, 2: 2, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1} 
    
    // ثم ندمج العنصر إذا كان تكرر مره واحده فقط لل result list
    for x in tmp:
        if tmp[x] == 1:
            result.append(x)
    
    // تكون قيمة ال result list
    // result = [3,5,6,7,8]
    
    for x in result:
        print(x)
    // الناتج
    3
    5
    6
    7
    8
    
    

     

    • الدالة isinstance بترجع قيمة True او False 
    • علي سبيل المثال isinstance(5, int) للقيمه 5 والنوع int ويكون الناتج True
    isinstance(object, type)
    
    // قد يكون النوع قيمه واحده
    isinstance(5, int) // True
    
    // قد يكون مصفوفه
    isinstance("Hello", (float, int, str, list, dict, tuple)) // True
    
    // قد يكون object from class
    class myObj:
      name = "John"
    
    y = myObj()
    
    isinstance(y, myObj) // True
    • الدالة type بترجع نوع المتغير str, int, list 
    x = 5
    s = "hello"
    y = [1,2,3]
    print(type(x))
    print(type(s))
    print(type(y))
    
    // الناتج
    class 'int'
    class 'str'
    class 'list'

     

    • أعجبني 1
  3. وعليكم السلام ورحمة الله وبركاته

    • إذا ممكن توضيح اكثر عندك ملف بتحتاج تمسح سطر معين او كلمه معينه من هذا الملف دون فقدان باقي محتوي الملف
    • يمكنك عمل tmp file و قراءة ملف source file وعمل contition إذا هذا السطر او الكلمه المراد مسحه تعملها skip وما تضيفها لل tmp file وفي النهايه تنسخ ال tmp file إلي source file
    • يمكنك تنفيذ النسخ باستخدام os module عن طريق تنفيذ امر النسخ علي نظام التشغيل ويندوز او لينكس
    • امر نسخ الملف علي الويندوز هو
    copy source.txt destination.txt
    • امر نسخ الملف علي نظام تشغيل لينكس هو
    cp source.txt destination.txt
    • لنسخ ملف باستخدام os module في بايثون
    //إذا كان نظام التشغيل لينكس
    os.popen('cp source.txt destination.txt') 
    
    // إذا كان نظام التشغيل ويندوز
    os.popen('copy source.txt destination.txt')
    • ويمكن نسخ الملفات في بايثون باستخدم shutil module عن طريق اكثر من داله copyfile, copy, copy2, copyfileobj
    import shutil
    
    # باستخدام دالة copyfile
    shutil.copyfile('source.txt', 'destination.txt')
    
    # باستخدام دالة copy
    shutil.copy('source.txt', 'destination.txt')
    
    # باستخدام دالة copy2
    shutil.copy2('source.txt', 'destination.txt')  
    
    # باستخدام دالة copyfileobj
    # قراءة محتوي ال source file
    # rb => للقراءه
    file_src = 'source.txt'  
    f_src = open(file_src, 'rb')
    
    # فتح ال destination file
    # wb => للكتابه
    file_dest = 'destination.txt'  
    f_dest = open(file_dest, 'wb')
    
    # نسخ ال source file to destination file
    shutil.copyfileobj(f_src, f_dest)  

     

    • فحصت الكود الخاص بجزء ال login يقوم بعمل hash للباسورد عند تسجيل الدخول باستخدام خوارزمية sha1 
    // check if user coming from HTTP post request
    if ($_SERVER['REQUEST_METHOD']== 'POST'){
        $username =$_POST['username'];
        $password =$_POST['password']; 
    	// يقوم بتشفير كلمة المرور
        $hashedpass = sha1($password); 
    
        //check if the user exist in database
    	// والاستعلام عن المستخدم بكملة المرور المشفره
        $stmt=$con->prepare("SELECT Username, Password FROM users WHERE Username = ? AND Password = ? AND GroupID=1");
        $stmt->execute(array($username, $hashedpass));
        $count =$stmt->rowCount();
            // If Count >0 This Mean The Database Conta Record About This Username
        if ($count>0){
            echo 'welcome ' . $username;
            $_SESSION['Username'] = $username; // Register Session name
            header ('Location: Dashboard.php'); //Redirect  To Dashboard Page
            exit();
        }
    }
    • إذا كنت تقوم بتسجيل الباسورد في قاعدة البيانات من غير تشفير فتحتاج إلي تشفيره ب sha1 algorithm
    • يمكنك تشفير كلمة المرور قبل وضعها في قاعدة البيانات وذلك عن طريق اي sha1 online ووضع الكود المشفر داخل عمود الباسورد في جدول ال user
    // مثلا عند تشفير كلمة password
    // password => 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
    • يمكنك وضع ال 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 في عمود الباسورد وتسجيل الدخول بكلمة password بالاضافه إلي اسم المستخدم
    • أعجبني 2
    • بالاضافه إلي ما تفضل بشرحه @Adnane Kadri يمكن إيضا إضافة validation إذا ال id موجود في جدول ال news
    • بإضافة ال exists:news,id لل validation علي ال id
     $validator = Validator::make($request->all() , ['id' => 'required|integer|exists:news,id']);
    • يوجد if condition لفحص ما إذا ال news موجوده او لا وتعمل redirect بالايرور ولكن ال validation ستقوم بفحص أن ال id, required, integer, exists in news table or not وفي حالة وجود أخطاء ستقوم بعمل redirect من ال fail function كما تفصل اخي بشرحها
    • في هذه الحالة يمكنك الاستغناء عن الشرط في أول دالة ال edit 
    • أعجبني 2
    • يرجع ذلك إلي طريقة تنفيذ جافا سكربيت للكود عن طريق Javascript Runtime
    • في ال Javascript Runtime هناك أربع مكونات أساسيه هي Callstack, Web Api, Callback Queue, Event Loop
    • عند تنفيذ ملف جافا سكربيت يتم وضع الكود في ال Callstack إذا كان ال CallStack يمكنه تنفيذ هذا الكود وإذا لم يكون يتم إرساله الي Web API وبعد ما تنفذه ال Web  Api يتم وضعه في Callback Queue ثم يقوم ال Event Loop بفحص إذا ماكان ال Callstack فارغ ويمكنه استقبال كود جديد لتنفيذه وينتقل الكود لل Callstack ليتم تنفيذه
    • علي سبيل المثال
    console.log("1");
    setTimeout(() => {
    	console.log("2");
    }, 1000);
    console.log("3");
    // الناتج
    // 1
    // 3
    // 2
    • عند تنفيذ هذا الاسكربيت يتم وضع console.log("1") و console.log("3") داخل ال Callstack ويتم تنفذهم وطباعة 1 و 3 ثم setTimeout يتم إرسالها إلي Web API لتقوم بتنفذها ثم يتم إرسالها إلي Callback Queue ثم يقوم Event loop بفحص ما إذا كان ال Callstack يمكنه استقبال الكود وتنفيذه ثم يتم ارسال الكود وتنفيذه وطباعة القيمه 2

     

    • الخطاء في الكود هو أنه سيتم وضع ال friends = {} ثم تنفذ جملة ال console.log(friends) ليطبع {} ثم يتم ارسال axios.get() function إلي ال Web API لتقوم بتنفذيها
    • يمكن استخدام console.log لمعرفة شكل الداتا داخل ال response object
    • المشكله أنك تحاول الوصول الي data من ال resposne.data وهي غير موجوده يمكنك الوصول ال amount من ال response.data
    • تحتاج تعديل هذا السطر response.data.data.amount إلي reponse.data.amount
    getBTCPrice() {
      const url = 'https://api.coinbase.com/v2/prices/BTC-USD/spot';
      axios.get(url)
      .then(function (response) {
    		// return response.data.data.amount
            console.log("data")
            console.log(response.data)
            console.log(response.data.amount)
          return response.data.amount;
      }) 
    }
    
    render() {
      return(
        <div>
          BTC: {this.getBTCPrice()} USD
        </div>
      );
    }

     

  4. يمكنك استخدم الرسائل الخاص بك عن طريق تعريف مصفوفه خاصه تحتوي الرسائل التي تحتاجها 

    • مصفوفة الشروط
    $rules = array(
    	'phone' => 'required|unique:users,phone'
    );

     

    • مصفوفة تحتوي علي الرسائل التي تظهر في حالة حدوث أخطاء
    $messages = array(
    	'phone.required' => 'Phone is required.',
    	'phone.unique' => 'Phone must be unique.',
    );
    • فحص الداتا المدخله من المستخدم و ظهور الاخطاء في حالة وجود أخطاء
    $validator = Validator::make( $request->all(), $rules, $messages );
    
    
    if ( $validator->fails() ) 
    {
        return [
            'success' => 0, 
            'message' => $validator->errors()->toArray()
        ];
    }

    ويمكن فصل عملية ال Validation في كلاس منفصل يسمي FormRequest وتنقل كل عمليات ال Validation داخل هذا الكلاس

    • إنشاء الكلاس عن طريق أمر في لارفال ويتم إنشاءه داخل مجلد app\Http\Requests
    php artisan make:request AuthRequest
    • ثم تقوم باضافة عمليات ال validation داخل دالة ال rules وإضافة الرسائل الخاصه داخل دالة messages
    <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;
    use Illuminate\Http\Request;
    
    class AuthRequest extends FormRequest
    {
        
        public function authorize()
        {
            return true;
        }
    
        /**
         * Get the validation rules that apply to the request.
         *
         * @return array
         */
        public function rules()
        {
            return [
              'phone' => 'required|unique:users,phone',
    		];
        }
    
    	public function messages()
        {
            return [
                'phone.required' => 'Phone is required',
                'phone.unique' => 'Phone is unique'
            ];
        }
    }
    • ثم تستدعي هذا الكلاس داخل Controller وسيقوم ال AuthRequest بإظهار الاخطاء في حالة وجود أخطاء
    <?php
    
    namespace App\Http\Controllers;
    
    use App\Http\Controllers\Controller;
    
    use App\Http\Requests\AuthRequest;
    
    class AuthController extends Controller
    {
        public function login(AuthRequest $request)
        {
            // $validator = Validator::make($request->all(), [
            //     'phone' => 'required|unique:users,phone'
            // ]);// end of validator
    
            // if ($validator->fails()) {
            //     return Redirect::back()->withErrors($validator);
            // }//end of if
    
            // do register or login operation
            // ..........
        }// end of login
    
    }

     

    • أعجبني 1
  5. وعليكم السلام ورحمة الله وبركاته

    اعتقد اختيار اللغه واطار العمل بيعتمد علي الاكثر شيوعا في سوق العمل اللي متواجد فيه 

    لغة PHP من اكتر اللغات شيوعا في اغلب الاسواق وكمان ممكن تجرب تستخدم Laravel ما معتمده علي CMS فقط بتقدر تبين بيها Rest api  ومشاريع مختلفه في احجامه

    بالنسبه لل Python لغه منتشره جدا ومجالاتها متعدده في Machine Learning , Security, DataScience, Image processing وتطوير مواقع ويب عن طريق اطارات العمل Django بتعتمد علي built in مودلز جاهزه كتير بتعملها import وتستخدمها

    ال Flask بتحتاج تقسم الكود وتكتب كود بايديك ما فيها المكتبات اللي موجوده في django تاخد وقت اطول في التطوير

    بالنسبه لل ruby ما عندي معلومات عنها 

    بس عموما التنقل من لغه لاخره او اطار عمل لاخر بيكون سهل جدا مجرد بتتعلم ال syntax اللغه او اطار العمل الفكره في فهم مواضيع الويب عموم عمليات ال Autherization, authentication , Rest apis , وقواعد البيانات وهكذا والتنقل بين اللغات ما صعب

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

    • أعجبني 2
  6. 1- بتحمل التطبيق من المتجر

    2- بتعمل مشروع جديد اسم المشروع اسم package name و اسم ال Main class

    وليكن اسم المشروع test و package name تكون com.test و ال main class تكون Main

    3- بتفتح ملفات المشروع من القائمة من الجانب وبتضغط علامة ال + بيقولك اختار نوع الملف java file وبعدين تضيف فيه الكلاس وليكون Person وبعدين بتبداء تكتب الفانكشن اللي محتاجه وترن من علامة المثلث اللي في اعلي التطبيق وازي فيه ايرور بتقراءه وتصلحه وده مثال لكود ممكن تجربه

    Main.java
    
    public class Main {
        public static void main(String[] args) {
            Person person = new Person();
            person.setAge(25);
            person.print();
        }
    }
    
    Person.java
    
    public class Person {
        int age;
        
        public void setAge(int age) {
            this.age = age;
        }
        
        public void print() {
            System.out.println("Age = " + this.age);
        }
    }

     

  7. 1- Add third elment
    
    print("before change")
    
    print(mobiles)
    
    mobile3 = {"mobile3": {'Company':'android', 'model':'XR', 'OS':'Android', "price":6200}}
    
    mobiles.update(mobile3)
    
    print("after change")
    
    print(mobiles)
    
    2- Change the model for mobil1
    
    print("before change")
    print(mobiles)
    
    mobiles['mobile1']["model"] ="new model"
    print("after change")
    print(mobiles)
    
    3- Delete the price for mobile2
    
    print("before change")
    print(mobiles)
    
    del mobiles['mobile2']["price"]
    print("after change")
    print(mobiles)
    
    4-  Edit the model for mobile2
    print("before change")
    print(mobiles)
    
    mobiles['mobile2']["model"] ="new model2"
    print("after change")
    print(mobiles)
    

     

    • أعجبني 1
  8. اذا بتوضيح ماهي ال letters مصفوفه ب String او String 

    charAt function بترجع حرف في الموضع 1 وتبدا من 0

    1- اذا مصفوفه ب Strings في هذه الحاله قيمة ال leters[i] علي حسب قيمة ال i اذا 0 بترجع اول String في ال letters list
        

        letters = ["abc", "def", "jh"];
    
            i = 0 => leters[i] = "abc" , leters[i].charAt(1) == b
    
            i = 1 => leters[i] = "def", leters[i].charAt(1) == e
    
            i = 2 => leters[i] = "jh", leters[i].charAt(1) == h

    2 - اذا letters بتكون String في الحاله دية مينفعش تقول letters[i] لانها String
         

       String letters = "abc";
            System.out.println(letters.charAt(0));// a
            System.out.println(letters.charAt(1));// b
            System.out.println(letters.charAt(2));// c
    

     

×
×
  • أضف...