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

Adnane Kadri

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

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

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

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

    51

كل منشورات العضو Adnane Kadri

  1. مشكلتك غير واضحة، هلا قمت فضلا بوصفها على نحو أفضل
  2. لا أعلم ما الذي تقصده تماما بساعات العمل، هل يمكنك التوضيح أكثر؟ هل تقصد انها ساعات العمل على المنتج؟
  3. التصميم جيد عموما ولكن أظنه يحتاج بعض الضبط قليلا، فيما يلي بعض الملاحظات حول ذلك: يظهر انزلاق بسبب تجاوز للعناصر على مستوى المحور الأفقي، تأكد من اضافة overflow-x:hidden الى عنصر body للتخلص من المشكلة. نفس ملاحظة المدرب أسامة، أظنك تحتاج اظهار قائمة التصفح. بالوضعية الحالية لقائمة التصفح، لا يوجد ضرورة لاضافة الأيقونة التي تقوم بإظهار وإخفاء القائمة. فهكذا أنت تضطر المستخدمين الصعود الى أعلى الصفحة ثم الضغط من أجل إظهار القائمة لمجرد التصفح الى عنصر آخر. وهو بلا شك ما سيعكس تجربة تصفح سيئة. الحل: قم بإعطاء القائمة وضعية ثابتة position:fixed بالإضافة إلى إبقاء زر الإخفاء. بالنسبة للقسم الأول، قسم عارض الشرائح.يوجد الكثير من المساحات الفارغة التي تحتاج الإهتمام بها أكثر. يمكنك مثلا ضبط حجم الصور ليحتل مساحة أكبر. يمكنك أيضا اضافة أسهم أو دوائر لإعطاء عارض الشرائح مرونة أكثر. أظنك تحتاج اعادة اختيار الصور بعناية، لا تظهر الصور بخلفيات شفافة بشكل جيد، كما أنك تقوم بتبديد جودة الصور عن طريق اعطاء صور من مقاسات مختلفة نفس المقاسات (يمكنك لتفادي هذا المشكل اعطاء الصور عرضا واحدا مع ارتفاع تلقائي، ستلاحظ فرقا كبيرا بهذا). بالقسم الثاني، قسم Popular items حاول المحافظة على ما يسمى النظرة المتناظرة symmetric look. فوجود 5 بطاقات في الصف الأول و 1 في الصف الثاني لا يعطي انطباعا جيدا. أضف 4 أخرى الى الصف الثاني أو قم بالغاء الصف الثاني تماما. بقسم المعرض، تأكد من التخلص من الفراغات السلبية negative spaces. وهي بشكل بسيط الفراغات غير المتساوية بين عناصر نفس الجنس. لاحظ: يعطي هذا انطباعا عن أن الأقسام منفصلة وغير منظمة. درجات الألوان بحدود البطاقات في قسم المعرض حادة جدا وتقليدية، أظنك تحتاج تخفيفها والاهتمام بها أكثر. وتبقى مجرد ملاحظات يمكن أن يختلف فيها مصممو واجهات الاستخدام، فالمجال بدرجة أولى مجال ابداعي، وأشياء مثل الفن والجمال لا يمكن تحديدها وضبطها بسهولة.
  4. لا، لا يعني عدم القدرة على الدفع الى مستودع git انه لا يمكنك الاعتماد على حسابين. ستحتاج في هذا اول الامر التحقق من المشكلة، ما رسالة الخطأ التي تظهر؟ هل يمتلك كل من الحسابات امكانية للوصول الى مختلف هاته المستودعات؟ بعد هذا، ستحتاج تنظيم عملية الدفع الى المستودع أكثر. لأنه لا يفترض من كامل هاته الحسابات الدفع الى مشروع واحد، بل سيحتاج كل منها فرعا منفصلا يدفع اليه. فعلى سبيل المثال: المستخدم أحمد يدفع الى الفرع ahmed-brunch المستخدم علي يدفع الى الفرع ali-branch يقوم المستخدم محمود بعمل merge لكل التعديلات من الأفرع ودفعها الى الفرع الرئيسي main هل يمكنك اضافة تفاصيل اكثر عن المشكلة التي تواجهها؟
  5. المواقع المرفقة سابقا تصاميمها جاهزة، ليس عليك نسخ الشيفرة، وإنما تفحص الصورة والشكل النهائي والعمل على مماثلته او تقليده. بالنسبة للقوالب والتصاميم المدفوعة يمكنك الاستعانة بمتجار المنتجات الرقمية من مثل بيكاليكا، الذي هو الآخر احد منتجات حسوب. لم أفهم المقصود من "مواقع خاصة"، هم يقومون مثل اي مطورين آخرين بإستعمال بيئات تطوير من مثل Android studio.
  6. الشعبية وراء JSON هي في كونها: خفيفة الحجم. أكثر قابلية للقراءة مقارنة بصيغ أخرى من مثل XML. هذا بجانب أنها تتكامل مع أغلب لغات البرمجة، إذ تحتوي كل لغة رئيسية واحدة تقريبًا على شكل من أشكال المكتبات أو الوظائف المضمنة لتحليل سلاسل JSON إلى كائنات أو فئات بهذه اللغة من مثل json_encode و json_decode في PHP و توابع الكائن JSON في جافاسكربت وغيرها. العمل بها سهل وعام. فكل ما تحتاجه هو تصدير البيانات بهاته الصيغة وسيجعل تطبيقك قابلا للربط والتواصل مع اي تطبيق آخر من أي لغة او بيئة عمل. عدم محدوديتها، يوجد بعض الرموز والمحارف التي لا يمكن العمل بها في صيغ أخرى على عكسها. كل هاته الشعبية جعلتها تحتل مكانة مميزة في الويب، بجانب اقتحامها مجالات البيانات الوصفية والمخططات Metadata & schema وغيرها.
  7. يمكنك الاستعانة بأية مواقع للاستلهام أو التغذية البصرية، كأن تقوم بالعمل على تصميم الموقع ككل او أحد او بعض مكوناته فقط. فيما يلي بعض المواقع التي تقدم سلسلة من التصاميم وواجهات المستخدم وعناصرها: موقع codepen: وهو بيئة تطوير اجتماعي لمصممي ومطوري الواجهة الأمامية. موقع webdesign-inspiration: وهو الآخر موقع لإستلهام أفكار تصميم الويب. يمكنك ايضا استعمال pinterest أو dribbble للبحث عن افكار او تصاميم في أي مجال. موقع siteinspire هو أيضا مكان لا بأس به لنفس الغرض.
  8. من الصعب جدا فحص كامل هاته الشيفرة وتحديد المشكلة بالضبط. قد أشرت الى تعارض بين قيمتين سابقا، هل يمكنك تحديد بالضبط ما القيمتان المتعارضتان؟
  9. ارى ان الحاوي section يمتلك عرضا ثابتا (400px)، يمكنك ضبطه في حالة الشاشات الأصغر، فعلى سبيل المثال: نعطي عرضا نسبيا للعنصر مقدر بكامل عرض الحاوي، سنتأكد بهذا أن عرض الحاوي لن يتجاوز عرض شاشة العرض: @media only screen and (max-width: 600px){ section{ width: 100%; } } الصورة التي تقوم بعرضها ايضا تمتلك نفس المشكلة، تأكد من تقليل أبعاد الى أخرى اكثر مناسبة: @media only screen and (max-width: 600px){ img{ width: 250px; height: 250px; } } يمكنك اختصار الكتابتين الى: @media only screen and (max-width: 600px){ section{ width: 100%; } img{ width: 250px; height: 250px; } }
  10. هلا قمت بتحديد قيمتي المتغيرين NumberOfPages و adsTotalNumber من داخل شرط التحقق بدلا عن خارجه؟ يكون ذلك كـ: if ($category==0 && $subCategory==0 && $state==0 ) { $stmt=$conn->prepare(" SELECT * FROM items join categories on categories.cat_id=items.CAT_ID join sub on items.subcat_id=sub.subcat_id JOIN country ON items.country_id=country.country_id JOIN state ON items.state_id=state.state_id JOIN city ON items.city_id=city.city_id WHERE country.country_id=? AND items.NAME LIKE '%$inputSearch%' order by feature desc limit $startFrom,$adsPerPage"); $stmt->execute(array($country)); $item= $stmt->fetchAll(); $adsTotalNumber=count($item); $NumberOfPages=ceil($adsTotalNumber/$adsPerPage); } ثم هل يمكنك تحديد بالضبط ما القيمتان المتعارضتان؟
  11. لا تظهر أي مشكلة بالشيفرة او بالاستعلام، فهذا هو المفترض ان يحدث في تصفيح العناصر من قواعد البيانات، فعدم استعمالك للاستعلام LIMIT لن يقوم بتحديد اي فهرس ابتدائي او عدد صفوف معين يتم اقتطاعه. وفي حالة اقتطاعه عن طريق تحديد الاستعلام بـ: LIMIT $startFrom, 4 سيتم جلب الأربع عناصر الموالية للفهرس المحددة. أليس هذا هو المراد من تصفيح المنتجات؟ ما المشكلة التي تواجهها تحديدا؟
  12. ايجاد افكار للمشاريع هو الأمر الآخر الذي ستتعلمه أكثر مع كبر دائرة خبراتك. ولكن لا يمنع هذا من وجود بعض الأفكار التي يمكن تطبيق عليها اغلب الافكار. من مثل: لغرض تحسين التعامل مع كائن الوقت في جافاسكربت نقوم ببناء عداد زمني أو ساعة حائطية نوظف فيها بجانب التوقيت تحويلات CSS مثلا. لغرض تحسين التعامل مع شجرة الوثيقة نقوم انشاء تطبيق to do list وبما انك في بداية الدورة، فسيكون الآن كافيا متابعة ما يقدم في الدورة والتطبيق العملي مع المدرب.
  13. الاحتراف في مجال ما لا يكون وليد لحظة معينة او قابلا للتأطير في مرحلة معينة فهو نتاج مرات عديدة من البناء والتطبيق العملي والممارسة والخبرة، فنفس التطبيق الذي تقوم ببناءه بعد الانتهاء تماما من الدورة وبعد زمن معين من الممارسة والتطبيق العملي سيكونان في مستويان مختلفان من الاحترافية. بدل التركيز على مثل هاته الأشياء يقترح الانطلاق في عمل مشاريعك وتوظيف افكارك الخاصة. سيساعدك هذا في قولبة أسلوب خاص بك يمكن ان يطلق عليه عملا محترفا. وبشكل عام، تعالج الدورة كامل النقاط التي ستساعدك في بلوغ هذا الهدف.
  14. بالمنطق الأبسط، لا تقوم مواقع التهنئات الا بوضع نص مخصص فوق صور او قوالب يختارها العميل، ويكون هدا عن طريق التعامل مع نموذج كائن شجرة الوثيقة DOM بشكل عادي. وصحيح هو أنك لا تجد من لا يقوم بهذا بشكله الأبسط ولذلك فإن هاته التطبيقات عادة ما تكون مبنية على أحد أطر عمل الواجهة الأمامية مثل VueJS أو ReactJS لتسهيل التعامل معها وانشاء نماذج أكثر فعالية وتفاعلية. ولتطبيق هاته الفكرة على نحو دقيق، ستحتاج تفكيك هذا السؤال الى عدة أسئلة أدق من مثل: كيف يمكن تحديد النص الذي يدخله المستخدم. كيف يمكن وضع هذا النص داخل حاوية ما. كيف يمكن تخصيص هذا النص. كيف يمكن تصدير هاته الصورة وطباعتها. بالنسبة للتعامل مع واتساب عن طريق الواجهة البرمجية، فلا أظن ان هنالك واجهة مجانية للأفراد فواتساب تقدم خدمة التعامل مع واجهتها كخدمة مدفوعة موجهة حصرا للأنشطة التجارية. يمكنك تسجيل نشاطك التجاري عن طريق الرابط التالي
  15. هل تتساءل عن كيفية انشاء موقع للتهنئات ام عن كيفية التعامل مع الواجهة البرمجية لاتس اب؟
  16. يتم ذلك بوساطة بوابات الدفع التي توفر واجهات برمجية أو مكتبات للتعامل مع كامل مراحل عمليات الدفع وتتبعها. وتختلف طريقة استعمال كل واحدة من هاته البوابات عن الأخرى، والتي تعمل وفق المنطق التالي: يقدم العميل او رزائر موقعك طلبا للدفع بتقديم معلومات الدفع الخاصة به. تأخذ بوابة الدفع هاته المعلومات وتشفرها وترسلها عبر قناة آمنة الى معالج الدفع. يأخذ معالج الدفع العميل عبر خطوات إنهاء الدفع. يتحقق معالج الدفع من نجاح الدفع ويعيد العميل الى الموقع الخاص بك. عموما، يتم اختيار بوابة دفع بحسب: الأمان والشهادات الالكترونية وموثوقية البوابة. رسوم الخدمات التي تقدمها البوابة. القبول الدولي (أي ان دولة العميل او عملائك المستهدفين يجب ان تكون ضمن الدول المدعومة من هاته البوابة). دعم العملاء. وفيما يلي بعض من اشهر بوابات الدفع: بوابة stripe بوابة بيبال بوابة 2checkout
  17. قد تكون هاته من بين المشاكل المتكررة في ويب باك، يكون هذا عادة بتعارض يحدث ما بين الحزمتين html-loader و file-loader. نتأكد في حل المشكلة من استعمال نسخة أقدم من حزمة html-loader، يكون ذلك عن طريق تشغيل الأمر: npm i html-loader@1.3.2 أو باستبدال السطر الخاص بالحزمة في ملف package.json بـ: "html-loader":"^1.3.2" ثم اعادة تثبيت اعتماديات Node عن طريق تشغيل الأمر: npm run i ثم سيمكنك اعادة تشغيل خادم ويب باك او اخراج مجلد dist بشكل عادي. في حالة استمرار المشكلة يرجى ارفاق ملف package.json وملف اعداد webpack.config.js للنظر في المشكلة على نحو أدق.
  18. بجانب ما اقترحه المدرب وائل، يمكنك انشاء عنصرا مخصصا يحمل سمة توضيحية تخص عنصرا ما، فيما يلي الهيكلة العامة للعنصرين: <div class="tooltip"> العنصر الرئيسي <span class="title">عنصر السمة التوضيحية</span> </div> تنسيق العنصرين: /* العنصر */ .tooltip { position: relative; } /* عنصر السمة التوضيحية */ .tooltip .title { /* اخفاء العنصر بشكل افتراضي */ display:none; /* يجب تمليك العنصر الوضعية المطلقة */ position: absolute; } /* اظهار العنصر عند تمرير مؤشر الفأرة */ .tooltip:hover .title { display:initial; } لاحظ أن عنصر السمة هنا يقبل اي عناصر HTML وسيمكن عليه تطبيق أي تنسيقات CSS.
  19. حسب مدونة خمسات، فإنه توجد مجموعة من المعايير التي تتحكم في تصدر خدماتك أو خدمتك نتائج البحث، نذكر من بينها: التقييمات على الموقع معدّل سرعة استجابة البائع في الموقع تواجد البائع أثناء البحث في الموقع معدّل تسليم الطلبات استخدام الخدمات المطورة أغلب هاته الأمور، قد لا تكون متوفرة أو صعبة التحقيق بالنسبة للباعة الجدد، ولذلك فإنه سيكون عليك بذل بعض الجهد الاضافي للحصول على أول العملاء. ينصح مثلا بالمشاركة في طلبات الخدمات الغير موجودة أو متابعتها بشكل دائم ومحاولة إنشاء خدمة مميزة وفريدة ومطلوبة في نفس الوقت.
  20. أظنك تحتاج تفيكيك السؤال "هل أنا جاهز للعمل الحر" إلى أسئلة أدق من مثل "هل بإستطاعتي العمل على المشاريع المعروضة" و "هل المهارات المطلوبة أمتلكها بالفعل". فأنت ستحتاج مجالا تقوم بالبحث فيه والاطلاع على طبيعة المشاريع ووصفها وأمثلة عنها والمهارات المطلوبة فيها. وعليه سيمكنك تقدير نفسك ضمن هاته المشاريع. وبشكل عام، نعم سيمكنك الانطلاق في مشاريع العمل الحر الخاصة بتطوير واجهات المستخدم بعد إنهاء هاته الدورة. بالنسبة لسؤالك الثاني حول خدمات خمسات، فبشكل عام ستحتاج: أن يكون العنوان واضحاً باللغة العربية، يجب أن يصف الخدمة التي تريد أن تقدمها. تشترط خمسات أن لا تدخل رموزاً أو كلمات مثل "حصرياً"، "لأول مرة"، "لفترة محدود".. الخ. أن يكون وصف الخدمة بدقة يتضمن جميع المعلومات والشروط. وتمنع خمسات وضع البريد الالكتروني، رقم الهاتف أو أي معلومات اتصال أخرى. أن يمتلك كلمات مفتاحية متعلقة بالخدمة مثال: تطوير مواقع, ووردبريس, تصميم هذا وتعتبر كل خدمة حالة خاصة لها وصفها الخاص وعنوانها الخاص الذي يميزها دون باقي الخدمات. يمكنك الاستزادة بالاطلاع على هاته المقالة 10 نصائح لزيادة فرص بيع خدماتك على خمسات
  21. يمكنك استخدام الوظيفة var_export لتصدير تمثيل المتغير الممرر عبرها كسلسلة نصية: <?php $done = true; echo var_export($done ); // true $done = false; echo var_export($done ); // false الدالة var_export()‎ في PHP حسب ويكي حسوب.
  22. هذا ليس خطأ، فهو إشعار. ويتم اخراج هذا الإشعار لأن الوظيفة end () تتوقع مرجعًا reference لشيء تريد تغييره والذي يتوقع ان يكون متغيرا، في حين انك تقوم بإسناد التعريف مباشرة. أي انه لن يمكنك تمرير نتيجة explode مباشرة اليها دون حفظها في متغير اولا واستدعاءها بمرجعية هذا المتغير. ففي المثال الذي لديك هي متواجدة في الذاكرة ولا يشير اليها أي متغير وبطبيعة الحال فإنه لن يمكنك انشاء اشارة اليها. ولذلك فإن الحل الأول هو انشاء مرجع، او بمعنى آخر تخزين الخرج في متغير وتمريره كمعامل للوظيفة end. كحل آخر، يمكنك تجاهل هذا الإشعار والتغاضي عما يخرجه مباشرة ويكون ذلك عن طريق استخدام عامل التجاهل: $file_name = @end(explode('/', $file_path));
  23. تعتبر الوظيفة empty طريقة للتحقق من ما ان كان متغير ما يحمل قيمة فارغة، القيم الفارغة المعتبرة هي: "" سلسلة نصية فارغة. 0 كعدد. 0.0 كعدد عشري. "0" كسلسلة نصية. Null كقيمة فاضية false كقيمة بوليانية [] كمصفوفة فارغة يقتضي هذا ان يكون المتغير معرفا بالفعل، ولكنه يحمل احد القيم المعتبرة فارغة. في حين ان الذي تقوم به الوظيفة isset هو التحقق من ما ان كان هذا المتغير معرفا أول الأمر أم لا، لاحظ المثالين: <?php $emptyVar = ''; $emptyVar2 = []; $notEmpty = 'Hsoub'; echo empty($emptyVar); // true echo empty($emptyVar2); // true echo empty($notEmpty); // false echo isset($unsetVar); // false وبالتالي، المثال الذي لديك يتحقق من ما ان كان المتغير معرفا، ولا يحمل قيمة فارغة. كطريقة اقصر يمكنك مباشرة استعمال الوظيفة empty وحدها، وذلك لأن هاته الأخيرة تقوم بإعادة قيمة بوليانية false في حالة عدم تعريف المتغير، فبدل: if ( isset($myArr[1]) AND !empty($myArr[1]) ) { // do something } يمكنك مباشرة استعمال: if ( !empty($myArr[1]) ) { // do something } الدالة empty()‎ في PHP الدالة isset()‎ في PHP
  24. بالمفهوم البسيط، يستعمل الموجه ‎@section لتعريف قسم أو جزء لإضافة المحتوى، بينما تعرض التعليمة ‎@yield وتعرف محتوى قسم معيّن. على سبيل المثال: نقوم بتحديد عنوان الصفحة في العنصر الابن عن طريق حقنه الى المعامل الثاني لـلموجه section @section('title', 'Page Title') نقوم بتحديد المكان الذي سيتم فيه حقن أي محتوى يسند الى التعليمة section : <head> <title>App Name - @yield('title')</title> </head> أي: تستعمل yield لتحديد موضع حقن العناصر والمحتويات في ملف العرض الأب. تستعمل section لتعريف قسم معين في ملف العرض الابن.
×
×
  • أضف...