لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 02/22/21 في كل الموقع
-
2 نقاط
-
يمكنك عمل else في الكود الثاني ليتم تنفيذ الكود الموجود بداخلها إن كان $stmt->num_rows يساوي صفرًا if ($stmt->num_rows > 0) { echo 'Username exists, please choose another!'; } else { $sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)"; if($stmt = mysqli_prepare($db, $sql)) { mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email); $username = $_REQUEST['username']; $password = password_hash($_POST['password'], PASSWORD_DEFAULT); $email = $_REQUEST['email']; if(mysqli_stmt_execute($stmt)) { echo "Records inserted successfully."; } } } بهذا الشكل سيتم عمل حساب جديد إن لم يكن موجود في قاعدة البيانات2 نقاط
-
انا جديد على مجال web developer , تعلمت HTML - CSS - JavaScript - node.js - Express.js - Git -Github - WordPress .و لم اقم بعمل مشاريع لاى عميل من قبل . انا الان خائف من التقديم على وظائف قبل ما اعرف: ببعت المشروع للعميل مثلا ملفات (HTML, CSS ,JS) . وهل بحتاج من العميل اشياء قبل العمل. ارجوكم عاوز اعرف كل حاجة خاصة بالتعامل مع العميل من الاول الى الاخر.1 نقطة
-
يُعَدّ مفهوم التعهيد الخارجي أحد المفاهيم التي لابد للمستقل من الاطلاع عليها، ليصبح أقدر على إنجاز الأعمال بكفاءة عالية وفقًا لاحتياجات كل مشروع، فقد لا يحتاج المشروع إلى أكثر من مجرد جهد المستقل وحده، لكن ربما يتعاقد على مشروع كبير الحجم أو فيه أجزاء خارج مجال اختصاصه، فحينها تبرز أهمية التعهيد الخارجي وتوظيفه لمستقلين آخرين ينجزون له تلك المهام. والتعهيد الخارجي (Outsourcing) هو اتفاق بين الشركة وأشخاص من خارجها من أجل تنفيذ بعض الخدمات أو الأعمال، وذلك خلال فترة زمنية معينة وضمن تفاصيل متفق عليها بين الجهتين. ويمكن تلخيص مزايا التعهيد الخارجي فيما يلي: توفير التّكاليف: يساهم التّعهيد الخارجي في تخفيض تكاليف العمل، حيث يعمل المستقلون فقط حسب الوقت الذي يتطلّبه المشروع، بمعنى أنّه ليس هنالك حاجة للدفع مبلغ مقابل الوقت الّذي سيضيع عند توظيف شخص ما سواءً كان دوامًا جزئيًا أو كاملًا. ولا شك أن المستقلّين سينجزون العمل في وقت أقل وربما بكفاءة أفضل موازنة بالموظفين التقليديين نتيجة بيئة العمل وطبيعة السوق، إذ يريد المستقل إنهاء العمل بأسرع وقت من أجل التعاقد مع عميل جديد. توظيف الكفاءات: يوفر التعهيد الخارجي مزية توظيف كفاءات أكثر مهارة وخبرة والوصول إليهم بغضّ النّظر عن الدّولة الّتي يتواجدون فيها، بينما حين توظّف أشخاصًا عادييّن فأنت مضطر لتوظيف أشخاص ضمن مهارة أو خبرة معيّنة تكون هي المتاحة محليًا. والتعهيد خيار لا تستخدمه كمستقل إلا في مرحلة متقدمة في عملك الحر، حين تصبح لديك قاعدة عملاء وتأتيك مشاريع كبيرة الحجم تحتاج إلى أكثر من تخصص، فحينها قد تتواصل مع مستقل آخر لينجز لك ما تحتاج من خارج تخصصك من أجل تسليم المشروع في وقته وبأعلى جودة. أو تحتاج إلى مهام مثل كتابة مدونات تسويقية على مدونتك ونشرها بشكل منتظم، أو تصميم صور ومنشورات مرئية لنشرها في حساباتك الاجتماعية التسويقية، ومتابعة خطة ذلك النشر، أو قد تكون بعض الأعمال البسيطة مثل إدخال البيانات أو البحث في موضوع ما لكنك لا تملك الوقت الكافي لذلك، فحينئذ يكون خيار توكيل هذه المهمة إلى مستقل آخر مناسبًا. أما الحالة المتقدمة من التعهيد الخارجي هي أن تكون صاحب شركة ولديك مهام خارج مجال تخصصك أو لا تملك وقتًا لها، فتوظف مستقلين لينفذوها لك، وإن كان بشكل متكرر أو منتظم. وكل تلك الحالات متقدمة بالنسبة لمستقل مبتدئ أو دخل المجال حديثًا، وليس عليك القلق بشأنها أو التفكير فيها الآن. الفرق بين التعهيد والوساطة ربما يجب هنا أن نفرق بين التوظيف والوساطة، إذ هذه مشكلة تحدث في عالم العمل الحر بشكل متكرر، يتعاقد فيها صاحب المشروع أو العميل مع مستقل لينفذ له عملًا ما، لكن بدلًا من تنفيذ المستقل للعمل فإنه يتعاقد بدوره مع مستقل آخر كأنه هو العميل وينقل إليه طلب العميل على أنه طلبه هو، فيكون وسيطًا لتنفيذ العمل وليس منفذًا مباشرًا له. وإن هذا مما يجب مراعاته كي لا تقع فيه لسببين: أن بعض منصات العمل الحر تضع شرط التسجيل فيها أنك تنشئ حسابًا لشخصك أنت، وليس ممثلًا لجهة أخرى، وذلك من أجل الوضوح والشفافية مع العميل، فصورة الحساب ستكون لك، والتقييمات ستكون باسمك أنت، والتعامل سيكون معك، فلا يُغرَّر بالعميل ليظن أنه يتعامل معك في حين أنه يتعامل مع شخص ثالث أو مجموعة أشخاص توكل إليهم هذه الأعمال. والسبب الثاني هو أمانة العقد والحفاظ على سمعتك، إذ هي رأس مالك في العمل على الإنترنت، وقد ذكر لي جميل بيلوني -كان صاحبًا لمشروع على منصة مستقل- حادثة وقعت له مع أحد المستقلين، إذ أوكل إليه مشروعًا لتنفيذه بعد الاطلاع على عينة من العمل والموافقة عليها، ثم تفاجأ أن العمل الذي سلمه المستقل جودته أقل من جودة العينة الأولى! ولما أرسل إلى المستقل يخبره بذلك رد عليه أنه قد وقع له طارئ منعه من العمل، فأوكل العمل إلى شخص ثالث ينجزه له لئلا يخسر المشروع برمته وقد أخفى ذلك عليه، لكن هذا الفعل قد تسبب في خسارة جميل -وهو العميل هنا- لوقت ضيَّعه مع هذا المستقل، وربما مال أيضًا لولا تعاقده مع من خلال منصة عمل حر تضمن للطرفين حقهما مثل منصة مستقل. أضف إلى ذلك خسارة المستقل ذاك سمعته بهذا الفعل. وهذا مثال للخطأ الذي نحذر منه ها هنا، فالعميل قد شعر أن المستقل خدعه بتسليم عمل على خلاف جودة العينة الأولى، وأنه تعامل معه لشخصه لشرط المنصة التي يتعاملان عليها الذي ذكرناه قبل قليل أنها تشترط إنشاء الحساب لشخص المنشئ وليس لجهة يمثلها، فتوقع أنه هو من سيسلم العمل وليس شخصًا آخر. لكن الحالة التي تستطيع توكيل فيها آخرين والتعهيد إليهم بالمهام هي أن تكون على منصة تسمح بذلك، أو أن يأتيك العملاء من خلال قنوات أخرى مثل موقع شخصي لك أو لشركتك، أو حساب بريدي أو اجتماعي. وحينها لك أن تكلم العميل بصيغة الجمع "نحن" أو تخبره صراحة لو كانت هويتك التجارية شخصية أنك ستوكل بعض المهام إلى بعض أفراد فريقك إن غلب عليك الظن أنه جاءك لشخصك ولا يريد اطلاع شخص ثالث على البيانات لحساسيتها له، من باب أمانة التعامل وللحفاظ على سمعتك. ما يجب مراعاته في التعهيد وهنا تأتي إلى النقطة التي يكبر فيها عملك لتكون في حاجة إلى بناء فريق يساعدك، أو تكون صاحب شركة تحتاج من توكل إليه مهامًا لينفذها لك، ويلزمك هنا شيء من العلم بإدارة الأعمال والمهام لتستطيع الاستفادة من تعهيد هذه المهام إلى مستقلين آخرين. وسنذكر فيما يلي بعض الأمور التي يجب مراعاتها عند توظيف مستقلين آخرين أو التعامل معهم. إدارة المهام سنكتفي في هذه النقطة بالإشارة إلى ما ذكرناه في مقال الإدارة الفنية للمشروع، من أدوات لإدارة المهام وتنظيمها وغير ذلك، مثل خدمة أنا أو تريللو وخدمات التخزين السحابية وبرامج الاجتماعات، فلا حاجة لتكرار هذه النقاط، فما يصلح لإدارة مشروع مع عميل يصلح ها هنا أيضًا. توزيع الوظائف على خلاف النقطة السابقة، فإن علاقتك مع هؤلاء المستقلين الذين ستعمل معهم تختلف عن علاقتك مع العميل، إذ تنفذ أنت ما يطلبه العميل وتقبض أجرك، أما هنا فيكون العمل بين عدة أطراف يتعاونون على إخراج منتج واحد. فالواجب هنا تحديد مدير لكل مشروع، وسيكون في الغالب هو الموظِّف و"العميل" في نظر باقي المستقلين، وذلك في المشاريع البسيطة التي تحتاج فيها إلى بضعة مهام خارجية مثل كتابة محتوى وتصميم ملصق دعائي، فحينها يرسل كل من الكاتب والمصمم تقريرهما إليك عند انتهائهما. أما عند العمل على مشاريع أعقد من ذلك وفيها عدة أشخاص ينفذون مهامًا ترتبط ببعضها، فمن الأفضل حينها إذا كنت أنت من وظفهم أن تضع هيكلًا تنظيميًا لهم بحيث يرفع العاملون في كل قسم تقريرًا إلى واحد فيهم تختاره أنت ليكون المسؤول عن هذا القسم، وتتعامل بعدها مع هؤلاء المسؤولين، بدلًا من التعامل مع جميع الذين توظفهم واحدًا واحدًا. مفهوم المساعد الافتراضي يشير مصطلح المساعد الافتراضي -من لفظه- إلى الشّخص الّذي يساعد غيره في تنفيذ مهامه لكن عن بعد فلا يكون حاضرًا في نفس محل عمل الشخص الأول، ولا يتولى المساعد الافتراضي عادةً مشاريع كبيرة بل تكون مشاريع صغيرة لمهام روتينية بسيطة. وهذه المهام قد تكون بسيطة في ذاتها أو تحتاج إلى مهارات خاصة، لكن بشكل عام فهي مهام مساعدة وثانوية بالنسبة لصلب مجال عملك كمستقل، والأمثلة التالية تبين أنواع تلك المهام التي يمكنك توكيل مساعد افتراضي لها: إدخال بيانات تدوين الملاحظات إعداد تقارير الأبحاث لكن لا نظنك ستلجأ إلى توظيف مساعد افتراضي في أول عملك الحر ولا حتى بعد مرور سنوات، ولا نستطيع إخبارك متى بالتحديد ستحتاجها، بل شأنها كشأن رفع أجر خدمتك تمامًا، أنت الذي ستعرف الوقت المناسب لذلك وفقًا لنمط عملك. ذلك أنها جديدة على السوق العربي من ناحية، وأن السوق العربي للعمل الحر نفسه جديد نوعًا ما فلم يتطور ويتبلور إلى المستوى الذي تنتشر فيه خدمة كالمساعدة الافتراضية، لكننا ذكرناها من باب العلم بها وأنها موجودة في السوق الغربي والأجنبي بشكل أكبر. العقود مع العملاء هذه أيضًا من النقاط التي لم نشأ الإسهاب فيها لأنها غير ذات فائدة كبيرة للعاملين في الوطن العربي في الوقت الحالي، ذلك أن السوق بعد جديد كما ذكرنا، فلم تُسن بعد القوانين الحاكمة للتعامل بين أشخاص طبيعيين "أفراد" من دول مختلفة بشكل حر، ولصعوبة مقاضاة عميل من دولة أخرى بسبب 50 دولار مثلًا، فتكاليف المقاضاة ستكون أكثر من ذلك بكثير! لكن اعلم أنك في حاجة إلى ما يحفظ لك حقك مع العميل لتضمن حصولك على أجرك كاملًا، والحل الأسهل هو التعامل من خلال منصة عمل حر مثل مستقل أو خمسات، لكن لو أتاك العميل من قناة أخرى لك فحينها تكون أمام أحد خيارين: إما أن تطلب منه الانتقال إلى منصة عمل حر لتنجزا المشروع عليها. أو تطلب منه نصف أجرك مقدمًا كما سبق بياننا في ذلك في مقال الإدارة الفنية للمشروع، كضمان لجديته في طلبه، ثم النصف التالي بعد إتمام العمل، فحينها إن خدعك العميل ولم يعطك بقية مالك بعد تمام المشروع تكون قد خرجت بأقل الضررين. خلاصة المقال بعد الاطلاع على هذا المقال نأمل أن تستطيع اختيار شكل العمل الأنسب لك وفق الخيارات المتاحة، لتنجز مشاريعك بشكل أفضل، وتزيد من حجم عملك كمستقل مع الوقت، وتكون قد علمت متى تحتاج إلى توكيل غيرك ببعض المهام التي لديك، وتتجنب الوقوع في مخالفة شروط المنصات التي تعمل عليها. كتبت سارة شهيد المسودة الأولية لهذه المقالة. اقرأ أيضًا المقال التالي: تعرف على منصات العمل الحر والعمل عن بعد المقال السابق: الإدارة المالية في العمل الحر كرائد أعمال، لا يمكنك القيام بكل شيء دليلك لإنجاح عملية التعهيد الخارجي لتطوير البرمجيات التعهيد الخارجي، الخطأ المميت للشركات الناشئة كيف تزيد أرباحك بتوظيف مستقلين آخرين إدارة فريق افتراضي موزع عبر 5 مناطق زمنية النسخة الكاملة من كتاب دليل المستقل والعامل عن بعد1 نقطة
-
1 نقطة
-
قمت بعمل مشروع يحتوي على اعلانات ادموب وتم عمل حساب في موقع اد موب والحصول على الموافقة على الحساب اصبح الحساب رسمي الان ولكن بعد تحويل روابط مشروعي روابط حقيقه من حسابي المفعل وتغير روابط التجربة اصبح لا يعرض الاعلانات واحصل على الخطاء التالي في كل مره D/DynamitePackage( 5335): Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl I/Ads ( 5335): Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("FF389DA3B04D2B1149051995E9108E93") to get test ads on this device. W/flutter ( 5335): onAdFailedToLoad: 3 I/Ads ( 5335): Ad failed to load : 3 I/flutter ( 5335): BannerAd event MobileAdEvent.failedToLoad هل يوجد شي يفترض عمله بعد تفعيل الحساب من قبل جوجل مختلف عما فعلته ام توجد اسباب مختلفه لهذا المشكله ؟ مع العلم اني اخذت كل الروابط من حسابي الحقيقي رابط التطبيق ورابط الاعلان1 نقطة
-
يحدث الخطأ " not a statement " أثناء إستدعاء الدالة التالية: public boolean binarySearch(int[] list, int target, int low, int high) { list ={"1,2,5,7,9,15"}; target = 5; boolean result = binarySearch(list, target, 0, list.length-1); executions++; int mid = (low + high) / 2; if(!result){ System.out.println("Target not found -- bad search."); }else{ System.out.println("Target found -- sucessful search!"); } if (list[mid] == target) { return true; } else { if (low > high) { return false; } else { comparisons++; if (list[mid] < target) { return binarySearch(list, target, mid + 1, high); } else { return binarySearch(list, target, low, mid - 1); } } لم أفهم ماذا تعني رسالة الخطأ ؟ وما هو الحل ؟1 نقطة
-
حسب التوثيق الخاص بـflutter فإن رسالة الخطأ التي ترجع الرقم 3 تعني أن عملية طلب الإعلان تمت بنجاح لكن لا يوجد إعلانات مناسبة لعرضها. تحدث هذه المشكلة عادة لسببين: عدم إضافة وسيلة دفع في قسم المعلومات المالية، على سبيل المثال عدم إضافة visa card ليتم الدفع لك عن طريقها. إذا كان الحساب أو التطبيق حديث الإنشاء، تحتاج الإعلانات الحقيقية عادةً إلى 48 ساعة للظهور. بما أن الإعلانات التجريبية ظهرت بدون مشاكل والإعلانات الحقيقية أرجعت الخطأ رقم 3 فإن إعداداتك سليمة لكن تأكد من معلوماتك المالية وإنتظر يوماً أو يومين لتظهر الإعلانات.1 نقطة
-
عندما أقوم بعمل Junit testing يظهر لي الخطأ التالي: java.lang.OutOfMemoryError ما معنى هذا الخطأ ؟1 نقطة
-
عند محاولة تشغيل برنامج بصيغة jar عن طريق الأمر التالي : java -jar myApp.jar يظهر الخطأ التالي: no main manifest attribute, in "myApp.jar" ما هي المشكلة ؟1 نقطة
-
لدي تطبيق لارافيل ضمن حاوية باستخدام docker. والتطبيق يقوم باستخدام Laravel Websockets، كيف يمكن تشغيل websockets أوتوماتيكياً عند تشغيل الحافظة في docker؟ فعند القيام باستخدام المنفذ الافتراضي ضمن الحاوية لا يتم الاتصال. هذا هو كود التعريف الحالي في ملف supervisord-app.conf: [program:websockets] command=/usr/bin/php /var/www/html/websocket-service/artisan websockets:serve numprocs=1 autostart=true autorestart=true user=www-data-new1 نقطة
-
أولاً يجب عليك التأكد من استخدام نفس المنفذ الذي يتم استعماله في websockets ضمن الحزمة، ووضعه في ملف dokcer-compose. علماً بأن المنفذ الافتراضي في حال لم تقم بتغييره هو 6001. ثم يمكنك فصّل الخصائص عن بعضها لحاويتين منفصلتين، بحيث تقوم الحاوية الأولى بتشغيل تطبيق لارافيل والحاوية الأخرى تقوم بالاتصال مع websockets على الشكل التالي: ملف الحاوية الأولى app.dockerfile FROM php:7-cli-alpine RUN apk --update add wget \ curl \ git \ grep \ build-base \ libmemcached-dev \ libmcrypt-dev \ libxml2-dev \ imagemagick-dev \ pcre-dev \ libtool \ make \ autoconf \ g++ \ cyrus-sasl-dev \ libgsasl-dev RUN docker-php-ext-install mysqli pdo pdo_mysql tokenizer xml RUN pecl channel-update pecl.php.net \ && pecl install memcached \ && pecl install imagick \ && pecl install mcrypt-1.0.3 \ && docker-php-ext-enable memcached \ && docker-php-ext-enable imagick \ && docker-php-ext-enable mcrypt RUN rm /var/cache/apk/* && \ mkdir -p /var/www ENTRYPOINT ["/usr/bin/php", "/var/www/html/websocket-service/artisan", "websockets:serve"] ملف web.dockerfile: FROM php:7-fpm-alpine RUN apk --update add wget \ curl \ git \ grep \ build-base \ libmemcached-dev \ libmcrypt-dev \ libxml2-dev \ imagemagick-dev \ pcre-dev \ libtool \ make \ autoconf \ g++ \ cyrus-sasl-dev \ libgsasl-dev RUN docker-php-ext-install mysqli pdo pdo_mysql tokenizer xml RUN pecl channel-update pecl.php.net \ && pecl install memcached \ && pecl install imagick \ && pecl install mcrypt-1.0.3 \ && docker-php-ext-enable memcached \ && docker-php-ext-enable imagick \ && docker-php-ext-enable mcrypt RUN rm /var/cache/apk/* && \ mkdir -p /var/www ولجعل المنفذ 6001 مرئياً خارج الحاوية، نقوم بتغيير التوجيهات لتصبح كالتالي: app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www/html volumes: - ./:/var/www/html ports: - "6001:6001" environment: - DB_PORT=${DB_PORT} - DB_HOST=${DB_HOST}1 نقطة
-
هذا الخطأ يعني أنه ليس هنالك مساحة كافية لإنشاء الكائن الذي تريد إنشائه ويحدث في ثلاثة أحوال: عندما تقوم بانشاء كائن جديد في الوقت الذي لا يكون هنالك مساحة لإنشائه في الHeap الخاص بالجافا والذي يتم تسجيل الكائنات. عندما لاتكون هنالك مساحة كافية لتحميل كلاس من الكلاسات. في حالة نادرة جداً يحدث هذا الخطأ عندما يأخذ الgrbage collector وقت طويل في عملية تحرير الذاكرة و مع ذلك تكون الذاكرة المحررة صغيرة جداً.1 نقطة
-
يا اخوان لدي استفسار انا قمت بتسجيل الدخول الى console.firebase وعملت فيها مشاريع حتى اتمكن من الاتصال ب الفايربيز الايميل كان تجريبي الان انا محتاج اغيره هل توجد طريقة لفعل ذلك؟ او توجد طريقة لنقل المشروع الى ايميل ثاني؟او حساب ثاني بالاصح بسبب اختلاف الايميلات الان لا استطيع ربط مشروع admob مع المشاريع التي فيه console.firebase1 نقطة
-
1 نقطة
-
ربي يعطيك العافيه اخي قمت بتجربة هذا الامر ولكن واجهتني مشكلة مع ربط المشروع من خلال admob شغله تخص الصلاحيات مع اني متاكد انه المالك وكل الصلاحيات لديه لذلك قمت بحذف المشروع واعادته من جديد لا توجد مشكله كل الشكر لك الغالي1 نقطة
-
السلام عليكم هذا كود ارسال لفورم للتسجيل فى الموقع <?php $DATABASE_HOST = 'localhost'; $DATABASE_USER = 'root'; $DATABASE_PASS = ''; $DATABASE_NAME = 'phplogin'; $db = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME); $sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)"; if($stmt = mysqli_prepare($db, $sql)) { mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email); $username = $_REQUEST['username']; $password = password_hash($_POST['password'], PASSWORD_DEFAULT); $email = $_REQUEST['email']; if(mysqli_stmt_execute($stmt)) { echo "Records inserted successfully."; } } $stmt->close(); $db->close(); ?> وهذا الكود للتحقق من ان اسم المستخدم لا يوجد فى الجدول <?php $DATABASE_HOST = 'localhost'; $DATABASE_USER = 'root'; $DATABASE_PASS = ''; $DATABASE_NAME = 'phplogin'; $db = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME); if ($stmt = $db->prepare('SELECT id, password FROM accounts WHERE username = ?')) { $stmt->bind_param('s', $_POST['username']); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows > 0) { echo 'Username exists, please choose another!'; } } $stmt->close(); $db->close(); ?> كيف يمكن دمج الكودين معا فاذا لم يكن الاسم موجودا فى الجدول يرسل البيانات للقاعدة1 نقطة
-
يمكنك استخدام الكود كاملا, لقد قمت بتجربته و التأكد من عمله <?php $DATABASE_HOST = 'localhost'; $DATABASE_USER = 'root'; $DATABASE_PASS = ''; $DATABASE_NAME = 'phplogin'; $db = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME); if ($stmt = $db->prepare('SELECT id, password FROM accounts WHERE username = ?')) { $stmt->bind_param('s', $_POST['username']); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows > 0) { echo 'Username exists, please choose another!'; }else { $sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)"; if($stmt = mysqli_prepare($db, $sql)) { mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email); $username = $_REQUEST['username']; $password = password_hash($_POST['password'], PASSWORD_DEFAULT); $email = $_REQUEST['email']; if(mysqli_stmt_execute($stmt)) { echo "Records inserted successfully."; } } } } $stmt->close(); $db->close(); ?> بحيث أنه في الكود الثاني الذي قمت أنت بإرفاقه تقوم بالتحقق من وجود اسم المستخدم ام لا لذلك يوجد في الكود شرط ويمكن استخدام هذا الشرط بحيث أنه إذا تحقق وكان اسم المستخدم موجود لا نقوم بإدخال البيانات إلى قاعدة البيانات, وإذا كان اسم المستخدم غير موجود نضيف البيانات إلى قاعدة البيانات. وهذا هو الشرط if ($stmt->num_rows > 0) { echo 'Username exists, please choose another!'; } نضيف إليه else بحيث يصبح هكذا مع إضافة كود الإدخال إلى قاعدة البيانات. if ($stmt->num_rows > 0) { echo 'Username exists, please choose another!'; }else { $sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)"; if($stmt = mysqli_prepare($db, $sql)) { mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email); $username = $_REQUEST['username']; $password = password_hash($_POST['password'], PASSWORD_DEFAULT); $email = $_REQUEST['email']; if(mysqli_stmt_execute($stmt)) { echo "Records inserted successfully."; } } }1 نقطة
-
مرحبا هل ممكن ترفق ملفات المشروع, أريد فحص المشروع لحل المشكلة.1 نقطة
-
أقوم باستخدام Broadcast في لارافيل مع pusher للتعامل مع اتصالات من جهتين (ويب و api). كيف يمكن إجراء أكثر من تحقق authentication للصفحات التي يتم فيها الاتصال مع pusher؟ ففي حال تمّت زيارة الصفحة من الويب أو من API يتم التحقق من نفس الشرط أو guard. Broadcast::routes(['middleware' => 'web']); Broadcast::routes(['middleware' => 'auth:api']); ولكن الدمج نفس الروت لا يعمل1 نقطة
-
يمكنك إنشاء middleware جديد خاص بال broadcast وربطه مع kernel.php: 'broadcast' => \App\Http\Middleware\Broadcast::class ثم تعديل broadcast.php ليصبح كالتالي: public function handle($request, Closure $next) { $web = Auth::guard('web')->user(); if ($web) { return response()->json(\Illuminate\Support\Facades\Broadcast::auth($request)); } return response()->json('Unauthorized.', 500); } ثم للمصدر الآخر المختلف عن الويب، يجب إرسال التحقق على الشكل التالي: Route::post('/guard/broadcast/auth', function(\Illuminate\Support\Facades\Request $req){ return true; })->middleware('broadcast'); بحيث يتم استخدام middleware نفسه. ثم عند إرسال الطلب من جهة المستخدم pusher، يجب الإرسال للقناة التابعة ل guard معيّن: <script> let pusher = new Pusher("{{ env('PUSHER_APP_KEY') }}", { cluster: 'ar2', encrypted: true, auth: { headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" } }, authEndpoint: '{{ env('APP_URL') }}' + '/guard/broadcast/auth', }); let channel = pusher.subscribe('private-channel.{{ Auth::user()->id }}'); channel.bind('my-event', addMessage); function addMessage(data) { console.log(data); } </script> وبذلك يمكن تحديدها عن طريق تزويد الطلب ب parameter يدعى authEndpoint authEndpoint: '{{ env('APP_URL') }}' + '/guard/broadcast/auth',1 نقطة
-
1 نقطة
-
1 نقطة
-
لعمل أي برنامج هناك 7 مراحل يجب المرور عليها: 1. العصف الذهني والتخطيط العصف الذهني - الخطوة الأولى في عملية تطوير البرمجيات. كل شيء يبدأ بفكرة رائعة. لكن أي فكرة تحتاج إلى التفكير بعناية من أجل تنفيذها. التخطيط الدقيق هو أول وأحد المراحل الأساسية لتطوير البرمجيات أو تطوير المنتج لأنه يفترض مسبقًا تحديد نطاق المشروع ، وتحديد وسائل وطرق النظام الجديد لتلبية الأهداف الاستراتيجية للأعمال ، وتوافر الموارد ، والقضايا المتعلقة بالتكلفة ، والأطر الزمنية وتحديد الحلول. 2. المتطلبات وتحليل الجدوى خلال هذه المرحلة من عملية تطوير البرمجيات ، يتم تحديد المشروع بالتفصيل ويتم تنفيذ تحليل متطلبات المشروع. من أجل بناء حل قابل للتنفيذ ، لا يكفي الكود النظيف والتصميم الجذاب ، فأنت تحتاج أولاً إلى فريق التطوير للحصول على فهم أعمق لهدف المشروع وجمع كل المتطلبات. 3. التصميم يعد تصميم البرامج مكونًا بارزًا في دورة تطوير المنتج. أثناء مرحلة التصميم ، يتم إنشاء التصور الفعلي للحل ، أي يتم إنشاء بنية البرنامج التفصيلية التي تلبي متطلبات المشروع المحددة. 4. التطوير والترميز تدور مرحلة التطوير حول كتابة التعليمات البرمجية وتحويل وثائق التصميم إلى برنامج فعلي ضمن عملية تطوير البرامج. 5. احتبار البرنامج اجراء سلسلة من الاختبارات بما في ذلك اختبار الوظائف وتكامل الأنظمة وقابلية التشغيل بالإضافة إلى اختبار قبول المستخدم وما إلى ذلك من أجل التأكد من أن الكود نظيف وتحقيق أهداف العمل الخاصة بالحل. يشكل التحقق والتحقق جزءًا حيويًا في ضمان إكمال التطبيق / الحل بنجاح. الآن بعد أن أصبح البرنامج خاليًا من الأخطاء ، تبدأ مرحلة التنفيذ. 6. التنفيذ والنشر هذه مرحلة يتم نقل التطبيق الذي تم إنشاؤه واختباره حديثًا إلى الإنتاج بما في ذلك نقل البيانات والمكونات بينما سيتم نشر التغييرات المحددة فقط خلال الإصدارات التالية. اعتمادًا على مدى تعقيد المشروع ، قد يكون إصدارًا مباشرًا (إذا كان المشروع بسيطًا) أو تم إصداره بشكل متقطع (على مراحل) في حالة وجود مشروع أكثر تعقيدًا. الآن يمكن لمحللي النظام والمستخدمين رؤية التطبيق الجاهز وتجربته. 7. العمليات والصيانة تتضمن المرحلة الأخيرة من دورة حياة تطوير البرامج الصيانة والتحديثات المنتظمة. يتم التعامل مع المرحلة بأقصى قدر من الاهتمام حيث أنه خلال المرحلة يتم صقل المنتج وترقيته وتحسينه وضبطه وفقًا لتعليقات المستخدمين على أدائه. هذا هو بالضبط التوقيت المثالي لتقوية وظائف التطبيق لترقية أدائه وتعديله وفقًا للاحتياجات الفعلية للمستخدم النهائي لإضافة إمكانات جديدة أو تلبية متطلبات المستخدم الإضافية. وأخيرا تختلف دورة حياة تطوير البرمجيات كعملية تكرارية منظمة من شركة إلى أخرى بهدف تقديم أفضل المنتجات عالية الجودة التي تلبي احتياجات العملاء الأكثر تطلبًا.1 نقطة
-
HTML 5 ما هي إلا تحديث لِ HTML و تم إضافة العديد من الوسوم في HTML 5 وهذه بعض الوسوم: <article> <aside> <audio> <bdi> <canvas> <data> <datalist> <dialog> <details> <embed> <figcaption> <figure> <footer> <header> <hgroup> <keygen> <main> <mark> <menuitem> <meter> <nav> وايضا أدخلت HTML5 عدة أنواع على حقل الإدخال مثل color date datetime email month url week time tel search وهناك أيضا عدة أنواع أخرى. وليست منفصلتان بل نفس اللغة ولكن جرى تحديث على HTML و أصبحت HTML5.1 نقطة
-
تكمن المشكلة في محاولة الدالة لقراءة قيمة لكن هذه القيمة غير موجودة. و يحدث الخطأ تحديدا في الجزء : String parentId = it.next(); String childId = it.next(); حيث علينا قبل محاولة القراءة التأكد في حال وجود العنصر أم لا باستخام الشرط: String parentId = ""; if (it.hasNext()) parentId = it.next(); String childId = ""; if (it.hasNext()) childId = it.next(); وهكذا نحل المشكلة1 نقطة
-
بمرور الوقت يجري تحديثات على Html ، وأحدث إصدار من HTML هو HTML5 فهو يحتوي على الكثير من الوسوم الجديدة مثل <header> ، <footer> ، <navy> ، <Audio> ، <video> ، <main>, ,هذه الصورة توضح الفرق في بناء صفحة Html4 و Html5 . وأيضا يوفر HTML5 الدعم الكامل لتشغيل JavaScript بينما لا يمكن أن تسمح HTML بتشغيل JavaScript داخل مستعرض الويب, يدعم HTML5 أنواعًا جديدة من عناصر التحكم في النموذج ، مثل التاريخ والوقت والبريد الإلكتروني والرقم والفئة والعنوان وعنوان URL والبحث وما إلى ذلك.1 نقطة
-
طبعا يوجد فرق في السعر لو شاهده كاملا يحسب السعر كاملا للإعلان ولو تم غلقه ممكن أن يتم احتساب جزء من الربح و ممكن أيضا لا يتم حساب أي جزء من الأرباح. وايضا يرجع ذلك حسب الإعلان المعروض فكل فئة إعلان تختلف الأسعار لها من أي فئة أخرى, مثل إعلانات التواصل والمعرفة تختلف باسعارها عن إعلانات السياسة والدين.1 نقطة
-
يوجد طريقتين لمعالجة هذا الخطأ عند الحاجة لإرسال كمية كبيرة من البيانات دفعة واحدة: إما يتم فقط إرسال ID معيّن ونوع الحدث إلى pusher وبالتالي تجعل المستخدم هو من يقوم بطلب البيانات عن طريق HTTP: public function broadcastWith() { return [ 'id' => $this->content->id, 'event_type' => 'request_content' ]; } أو عن طريق تخفيض حجم البيانات المرسلة باستخدام JsonResource: public function broadcastWith() { return [ 'content' => new \App\Http\Resources\PostResource($this->content), ]; } وعندها يتم الوراثة من صف JsonResource كالتالي: class ContentResource extends JsonResource { public function toArray($request) { return [ 'id' => $this->id, 'title' => $this->title, 'body' => $this->body, ]; } } ومع ذلك ، فإن هذا النهج آمن فقط إذا كنت تعرف بالتأكيد أن البيانات التي ترسلها لا يمكن بأي حال من الأحوال تجاوز حد 10 كيلوبايت. ويمكن ضمان ذلك من خلال التحقق من صحة الإدخال ، والقيود المفروضة على أعمدة قاعدة البيانات (الحجم المحدد لكل عمود) أو وسائل أخرى إضافية مثل Request Validations.1 نقطة