لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 09/29/21 في كل الموقع
-
مرحبا أحاول اعداد axios واستدعاءه لاستخدامه في كل طلباتي لكن الجزء الخاص بوضع ال token authorization لا يعمل import axios from 'axios'; const Axios = axios.create({ baseURL: process.env.NEXT_PUBLIC_API, }); let token; if (window) { token = JSON.parse(localStorage.getItem('zu')).state?.auth?.token; } Axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; export default Axios; هل من اقتراح3 نقاط
-
مع __dirname output: { assetModuleFilename: "images/[hash][ext][query]", path: path.resolve(__dirname, 'dist') }, بدون __dirname output: { assetModuleFilename: "images/[hash][ext][query]", path: path.resolve('dist') }, إذن ما هي الحاجة لاستخدام __dirname هنا ؟؟2 نقاط
-
2 نقاط
-
2 نقاط
-
السلام عليكم. لدي مشكلة -هذا إن كانت مشكلة- في تحقيق التجاوبية لصفحتي. عندما يصل عرض الشاشة لـ 343px و أقل : سترون ظهور فراغ أبيض في يمين الصفحة فما سبب المشكلة ؟ رابط الصفحة للمعاينة : https://mostafa-100.github.io/Responsive-Beginner-JS-Project/ رابط الأكواد : https://github.com/Mostafa-100/Responsive-Beginner-JS-Project2 نقاط
-
جربته و هو فعال حقا, لكن لماذا العنصر <body> لا يأخذ كامل عرض الصفحة في القياسات التي ذكرتها ؟ شكرا عمل هذا أيضا, لكن إذا قمت بتصغير عرض الشاشة يختفي جزء من مكونات الصفحة, فماذا أفعل لكي لا يحدث هذا ؟2 نقاط
-
أحاول أن أقوم بتحويل المصفوفة إلى سلسلة نصية بإستخدام الدالة toString ولكن المشكلة ان عناصر المصفوفة يتم طباعتهم ولكن بينهم فواصل2 نقاط
-
هذا هو ملف next.config.js الخاص بي ... async redirects() { { source: '/shop', has: [ { type: 'query', key: 'q', value: '(<sef>)', }, ], permanent: false, destination: '/shop/:sef', }, } .... هذا لا يعيد التوجيه من shop?q = sefإلى shop / sef. ما المشكلة في هذا الأمر؟2 نقاط
-
هل يوجد طرق اخرى لدفع ثمن الدورة غير البطاقة الأئتمانية؟؟؟؟1 نقطة
-
لا يكاد يترك لنا التقدّم التقني الهائل في عصرنا الحالي مجالًا للاسترخاء، فكلُّ يومٍ يحمل معه تقنيّات جديدة واستراتيجيات إبداعية فريدة، ولكي تتمكّن من مواكبة المنافسة في سوق العمل يجب أن تكون قادرًا على التعامل مع البرامج الحاسوبيّة واستثمارها لتطوير مهاراتك. ولعلّ أبرز الأدوات التي دخلت مجال الترجمة بقوّة هي أدوات الترجمة باستخدام الحاسوب أو ما يُعرف باسم أدوات الكات (Computer Assisted Translation - CAT). إن كنت مترجمًا تبحث في تطوير إمكانياتك وتحصيل فرص عمل أكبر ودخول سوق المنافسة بقوّة فإتقانك لأدوات CAT أمرٌ لا مفرّ منه. يجب أن تعلم أن سوق المنافسة قد أصبح مزدحمًا وأضحت الشركات وأصحاب المشاريع يضعون في مقدّمة بنود العمل إتقان أدوات CAT شرطًا لقبول المُترجم، لا تريد تفويت كلَّ تلك الفرص أليس كذلك؟ سنقدّم بين يديك سلسلة مبسّطة من المقالات عن أدوات CAT نشرح فيها كل ما تحتاج إلى معرفته عن هذه الأدوات وآليّة استخدامها، وسوف نستعرض مثالًا حيًّا عليها، برنامج memoQ الفريد بتفصيل وترتيب منظوم بحيث تتمكّن من بدء مشروع الترجمة الأوّل لك بمساعدة أدوات CAT خلال وقتٍ قصير. سوف نستهل سلسلتنا بمقال تقديميّ نشرح فيه أساس عمل أدوات الترجمة بواسطة الحاسوب وضرورة المسارعة إلى إتقان أحدها وإضافته إلى قائمة الكفاءات الخاصّة بك. أدوات CAT لوحة مشتركة بين الحاسوب والإنسان أدوات الترجمة بمساعدة الحاسوب هي في الواقع برامج تحرير نصيّة بسيطة تعتمد على تخزين الجمل التي ترجمتها والمفردات التي أدخلتها سابقًا ومن ثم اقتراحها لك تلقائيًّا عند عملك على جملٍ مشابهة لها لاحقًا. يعتمد مبدأ عمل برامج CAT على تقسيم الفقرات التي أنت بصدد ترجمتها إلى جمل مستقلة، وبعد ترجمتك لهذه الجمل يُخزّن البرنامج تلك العبارات لديه فيما يُعرف بذاكرة الترجمة (Translation memory أو TM). بالإضافة إلى إمكانيّة تخزين ترجمة المصطلحات والمفردات في قاعدة بيانات البرنامج ليقدّمها لك عند تكرارها في أعمالك اللاحقة. عند ورود عبارات مشابهة لما ترجمته مُسبقًا سيقدّمها لك البرنامج مع توضيح نسبة تشابه هذه العبارة مع العبارات التي ترجمتها. يمكنك تخيّل الأمر وكأنك تجمع قطع لعبة Puzzle الخاصة بالأطفال، حيث ستجمع لك برامج CAT معظم القطع وعليك فقط وضع القطع المتبقيّة، تخيّل كم سيكون الأمر أسهل وفق هذه الاستراتيجية. كلّما كانت قاعدة البيانات وذاكرة الترجمة التي تزوّدها للبرنامج غنيّة تمكّن البرنامج من مساعدتك أكثر. لنفترض على سبيل المثال أنك بصدد ترجمة 3 مقالات عن إدارة الأعمال، ستترجم المقال الأول وتزوّد البرنامج على سبيل المثال بـ50 جملة ومصطلح شائعين في هذا المجال. ثم ستشرع بالعمل على المقال الثاني وتُلاحظ أن البرنامج قد قدّم لك 10% من محتوى المقال مُترجمًا وفق ما ترجمته أنت في العمل السابق؛ أي أن البرنامج لا يترجم آليًّا إطلاقًا بل يعتمد على الترجمات التي تدخلها أنت بنفسك. كل المفردات والجمل التي تترجمها تدخل قاعدة البيانات وتُخزّن في ذاكرة الترجمة، وهي المصدر الأساسي والوحيد الذي يقترح عبرها البرنامج ترجمةً للجمل المُتكرّرة ويقترحها لك. بعد انتهائك من الترجمة ستضيف لذخيرة البرنامج 50 عبارة أخرى في مجال إدارة الأعمال. في المقال الأخير ستلاحظ أن 20% من العمل متشابه مع المقالين الأوّلين وقد قدّمه البرنامج لك مُترجمًا وجاهزًا، وما عليك سوى التأكد من السياق، بالطبع هذه الأرقام على سبيل المثال فقط. وهكذا كلما أثريت برامج CAT بترجمة إضافية ستجد أن عملك يصبح أكثر سلاسةً وأقل جُهدًا ووقتًا. امتيازات تعلم برامج CAT كما ذكرنا في مقدّمة مقالنا تعلّم أدوات CAT لم يعد أمرًا كماليًّا بل غدا مطلبًّا أساسيًّا في معظم عروض الترجمة الاحترافيّة، لماذا قد تتساءل؟ حسنًا الجواب وببساطة لأن الشركات والأفراد على حدّ سواء رأوا من خلال برامج CAT ميّزات جوهريّة غيّرت من مفاهيم ما هو مطلوب في العمل. يمكننا تلخيص أبرز مزايا برامج CAT في النقاط التالية: توفير الوقت وتقليل الأخطاء: كما ذكرنا في مثالنا السابق، عندما يكون 20% من العمل لديك جاهزًا ومُترجمًا مُسبقًا، فهذا يعني أنك تجاوزت خُمس العمل وبدأت سباق الترجمة متقدّمًا بخطوتين. لن تضطر إلى إعادة ترجمة العديد من العبارات المتكررة، بالإضافة إلى الوقت الذي ستوفّره من البحث المتكرر في معاني الكلمات والاختصارات والمصطلحات التي مرّت معك مسبقًا وتصحيح الأخطاء الإملائية أو النحوية التي قد تسقُط منك سهوًا. توحيد سياق الترجمة: إن كنت تعمل على مشروع كبير يتضمّن آلاف الكلمات فستواجه صعوبة في توحيد المصطلحات العلمية أو الرموز المعتمدة، إليك مثالّا على ذلك، منظمة "OHCHR" هل تعلم ما هي؟ هي "مفوضية الأمم المتحدة لحقوق الإنسان"، قد تواجه هذا المصطلح خلال عملك الطويل على المشروع عشرات المرات وقد تطالع معناها للتأكد عدّة مرّات في عملك، فتارةً تترجمها "مفوضية الأمم المتحدة لحقوق الإنسان" وتارة "المفوضة السامية للأمم المتحدة لحقوق الإنسان" وأخرى "مفوضية الأمم المتحدة السامية لحقوق الإنسان"، لذلك عند استخدامك لبرامج CAT يقدّم لك البرنامج ترجمة هذا المصطلح أوتوماتيكيًّا وبذلك توحّد الترجمة في كامل العمل مهما بلغ حجمه. دخول مجال العمل بأسعار منافسة: بالطبع عندما يتقلّص مقدار العمل عليك فلديك إمكانية تقديم أسعار منافسة لعملائك. لنفترض أن هنالك ملفًّا بصدد ترجمته لأحد العملاء وبعد إدراج لذلك الملف في أحد برامج CAT وجدت أن 20% من العبارات موجودة مسبقًا في ذاكرة الترجمة لديك، بإمكانك عندها عرض سعر أقل 10% من العروض المنافسة على سبيل المثال وبذلك، ستكون ربحت منافسة السعر وحافظت على جودة العمل في الوقت نفسه. برامج CAT التقليدية والسحابية يمكن تقسيم برامج CAT إلى برامج على مستوى الأفراد وبرامج على مستوى المجموعات، على الرغم من أن كلا الصِنفين يشتركان في آلية العمل نفسها، إلا أنهما يختلفان في طبيعة العمل والأهداف المُزمع إنجازها وطريقة الإنجاز المُخطط لها. برامج CAT التقليدية: وهي مناسبة لعمل الأفراد المستقلين أو لعمل الأفراد في المجموعة الواحدة ولكن ضمن مشاريع مختلفة. تكون قاعدة البيانات وذاكرة الترجمة خاصّة بالمترجم نفسه ولا يشترك بها مع الأفراد الآخرين، ولكن بإمكانه حفظ ذاكرة الترجمة واستخدامها في برامج CAT الأخرى، وأحد أبرز الأمثلة عنها هو برنامج omegaT المجاني. برامج CAT السحابية: النوع الأكثر انتشارًا على مستوى المؤسسات، وهي تناسب طبيعة العمل ضمن مجموعة أو فريق واحد، بحيث يكون هنالك قاعدة بيانات مشتركة وذاكرة ترجمة واحد لكل الفريق وتكون مخزّنة سحابيًّا، وبإمكان أي عضو من الفريق الاستفادة من ذخيرة الترجمات للأعضاء الآخرين ومشاركة ترجمته معهم في نفس الوقت، بحيث يغدو العمل متناغمًا ومنظّمًّا أكثر، ويُعدُّ برنامج memoQ مثالًا على برامج CAT السحابية. هل أحتاج إلى أكثر من برنامج CAT وكيف أختار الأفضل؟ بالطبع قد يجول في خاطرك هذا التساؤل، إذ يجب أن تعلم أن سوق العمل متنوّع جدًا، فعلى الرغم من أن آليّة عمل برامج CAT واحدة ولا تكاد تختلف عن بعضها سوى ببعض الميّزات الثانوية، تجد بعض الشركات تقتصر في بنود العمل لديها إتقان برنامج واحد على وجه التحديد. لكن هل هذا يعني أن عليك أن تتقن وتعمل على كافّة برامج CAT المتوفّرة في السوق؟ بالطبع لا فهناك العشرات منها وليس من المنطقي أن تعمل عليها جميعها. ما عليك فعله هو إتقان أشهر برامج CAT في وقتنا الحالي، وستكون بذلك قد ضمن فرص عملٍ أكثر ومرونة أكبر في التعامل والتقدّم للشركات وأصحاب المشاريع. ما هي أفضل برامج CAT في وقتنا الحالي؟ بالطبع ليس هناك جواب مطلق من جهة رسمية وإنما آراء وتقييمات الشركات والأفراد هي التي تحدّد أفضلها، ويمكننا حصر أبرز وأشهر برامج الترجمة السحابية في وقتنا الراهن بأربع برامج هي: MemoQ: وهو من أفضل برامج CAT للأفراد والمؤسسات على حدٍّ سواء، وهو البرنامج الي اخترناه لنفصّل آليّة عمل برامج CAT. يشتمل برنامج memoQ على كل الميّزات التي قد يحتاج إليها أي مترجم، ابتداءً من الواجهة التفاعليّة المبسّطة إلى دعم العديد من صيغ الملفّات، مثل html وpdf وdoc وppt وغيرها، ووصولًا إلى ميّزة التدقيق الإملائي وإحصاء الجمل والمفردات. SDL Trados Studio: وهو من البرامج المشهورة والتي سيطرت على سوق برمجيات CAT خلال العقدين الماضيين. يتميّز ببساطة العمل ويتضمّن ميّزات مشابه لنظيره memoQ. Wordfast: ومن من البرامج المشهورة في أوساط المترجمين المستقلين، وقد كان إحدى الإضافات الموجودة في برنامج الوورد أوفيس، إلا أنه تحوّل إلى برنامج مستقل لاحقًا. يتميّز برنامج Wordfast ببساطته موازنةً بالبرامج السابقة، وهو مناسب أكثر لمشاريع الترجمة الفردية البسيطة. Memsource: وهو برنامج سحابي، وقد طُوّر في جمهورية التشيك عام 2010، يتميّز بمرونة التعامل وواجهته التفاعلية المبسّطة والجذّابة. omegaT: أحد أبرز برامج CAT المجانيّة. يقدّم طيفًا واسعًا من الأدوات والميّزات التي تنافس العديد من البرامج المدفوعة الأخرى. يعمل برنامج omegaT على أنظمة التشغيل الرئيسية MAC وLinux وWindows ويُقدّم واجهة تفاعلية بسيطة. على الرغم من افتقاره لبعض الأدوات المتقدّمة التي تمتلكها البرامج المدفوعة إلا أنه يمثّل خيارًا ممتازًا للمبتدئين الذين يريدون دخول عالم برامج CAT عدا عن أنه مجاني بالكامل ومفتوح المصدر. أدوات CAT في العالم العربي لسوء الحظ ليست هناك إحصائيات واضحة حول حجم ومقدار الطلب على أدوات CAT في عالمنا العربي، إلا أن قاعدة المترجمين الذين بدأوا يعتمدون على أدوات CAT في ازدياد مستمر. ولأخذ فكرة عن مدى الطلب على أدوات الترجمة الحاسوبية عالميًّا أجرت منصّة PROZ، وهي منصّة ترجمة عالميّة، دراسة استطلاعيّة لأكثر من 3000 مُترجم محترف بدوام كامل حول العالم، ووجدت أن: 88% من هؤلاء المترجمين يستخدمون واحدًا على الأقل من برامج CAT. أكثر من 76% من هؤلاء يستخدمون أكثر من برامج CAT في أعمالهم. 68% من الأشخاص الـ12% الذي لا يستخدمون أدوات CAT حاليًّا قد استخدموها مسبقًا أو جربو استخدامها على الأقل، في حين 32% فقط لم يستخدمو هذه البرامج إطلاقًا. أخيرًا وليس آخرًا بعد هذا الاستعراض المُقتضب لبرامج CAT وأهم ميّزاتها وآليّة عملها سنتاول في مقالنا التالي من سلسلتنا برنامج memoQ مسلّطين الضوء على أهم ميّزاته وما يتقدّم به وما يفتقر إليه مقارنة ببرامج CAT الأخرى مع شرح نسخ البرنامج المتوفّرة وكيفية تنزيه النسخة المجانيّة منه. اقرأ أيضًا لماذا ينبغي عليك استخدام برامج الترجمة بمساعدة الحاسوب CAT tools أدوات الترجمة الضرورية لعمل المترجمين المستقلين1 نقطة
-
أحاول تحميل ملفات json مختلفة ، اعتمادًا على البيئة. بتعبير أدق ، أريد تحميل appsettings.development.json عندما يكون على NODE.ENV = "development" ، ثم استخدمه داخل الكتابة المطبوعة ككائن تكوين عام. أيضًا عندما يتغير NODE.ENV الخاص بي إلى "الإنتاج" ، أريد تحميل appsettings.production.json. لقد قمت بالفعل بتكوين حزمة الويب لإصدارات مختلفة باستخدام ملفات مثل webpack.config.js و webpack.config.dev.js و webpack.config.prod.js. إذا كان بإمكاني إضافة شيء مثل استيراد التكوين من `... / config. $ {NODE.ENV} .json` فسيكون ذلك مثاليًا؟1 نقطة
-
انا ارغب في التسجيل في دورة تعلم البرمجة ولاكن لا اعرف في ايتي دورة اسجل مع العلم اني خبرتي 0 في هاذا المجال الرجاء الرد وشكرااااا .1 نقطة
-
وجود فراغ بين أي محددين في CSS يعني أن المحدد الثاني داخل أبناء المحدد الأول table .class في مثالك تستهدف أبناء الوسم table الحاوين على الصنف class table .class { ... } <table> <tr class="class" /> <!-- مستهدف --> <tr> <td> <div class="class">...</div><!-- مستهدف --> </td> </tr> </table> عدم وجود فراغ يعني أن العنصر المستهدف بالمحدد الأول يجب أن يحوي نفسه على المحدد الثاني table.class في مثالك تستهدف أي وسم table يحوي نفسه على الصنف class table .class { ... } <table class="class"> <!-- مستهدف --> ... </table>1 نقطة
-
يمكنك إرسال إشارة إلى الإجرائية تعلمها برغبتك في انهاء عملها، وهي بدورها تقوم بالاعمال اللازمة والانهاء، أو أن تقوم بإنهائها قسرا عن طريق نظام التشغيل في لينكس تستخدم الأمر kill لإرسال الاشارات الى الاجرائيات ومنها اشارات انهاء العمل: SIGTERM اشارة للطلب من الاجرائية الخروج، سيتم تلقي الاشارة من الاجرائية والمباشرة بعمليات الانهاء kill -15 PID SIGKILL اشارة انهاء الاجرائية قسرا حيث يقوم نظام التشغيل بايقاف عمل الاجرائية فورا kill -9 PID حيث PID هو معرف الاجرائية يمكن الحصول عليه من خرج تنفيذ التعليمة التالية ps1 نقطة
-
أهلا بك، في حال لم يكن لديك أي خبرة برمجية سابقة، أو ميول لمجال معين، يفضل الدخول من أوسع الأبواب وأخذ معرفة شاملة في كل المجالات، فأقترح منك التسجيل في دورة "علوم الحاسب" فهي تفتح لك المجال للتعرف على البرمجة بالشكل الصحيح، ثم بعدها يمكنك التخصص في مجال معين وعندها ستكون الرؤية أفضل لك ومجال تخصصك..1 نقطة
-
هل يوجد بدائل لدوال map, filter, foreach الخاصة بجافاسكريبت في php1 نقطة
-
أجل يوجد , يمكنك إستخدام الدالة array_map كبديل للدالة map , وتأخذ تلك الدالة معاملين, الأول وهو الدالة المُراد تنفيذها والمعامل الثاني هو المصفوفة المُراد تنفيذ العملية عليها function fun1(){ ////code } $colors = array("red","blue","orange"); print_r(array_map("fun1", $colors)) //////or array_map(function(){ ///code },$colors) ويتم تنفيذ الدالة array_filter كبديل للدالة filter وهي على نفس صيغة الدالة array_map function fun1(){ ////code } $colors = array("red","blue","orange"); print_r(array_filter("fun1", $colors)) //////or array_map(function(){ ///code },$colors) أما بالنسبة للforeach يمكن تنفيذها على النحو التالي foreach ($colors as $c) { ///code } حيث تعبر ال $c عن قيمة العنصر الحالي, حيث أن الforeach تقوم بالمرور على جميع عناصر المصفوفة واحداً تلو الأخر ويمكن أيضا تحقيق الدالة reduce بإستخدام الدالة array_reduce والتي تشبه الدوال السابقة function sum($element1, $element2) { return $element1 + $element2; } $array = array(15, 120, 45, 78); print_r(array_reduce($array, "sum", 0));1 نقطة
-
لاحظ أن عنصر الفقرة التالية : <p>Unlimited Possibilities</p> يمتد على عرض أكثر من عرض الحاوي له , و ذلك حتى يحافظ على التخطيط الشبكي grid layout للعنصر الحاوي له بالصنف التالي : intro__container . يسبب تمدده على عرض أكبر من عرض الصفحة امتلاكه للخاصية التالية : .intro p:last-of-type { font-size: 3.8rem; } فلو تقم بتقليل حجم الخط الذي يمتلكه ستلاحظ عودة الصفحة لحجمها الطبيعي , و ذلك لعدم إمتداد الحاوي الشبكي على عرض أكبر من عرض الصفحة . و ليكن مثلا حجم الخط 2.1rem . جعل أحجام الخطوط تجاوبية يجب أخذه بالإعتبار أيضا , و لذلك أفضل تقليل حجم النص لعنصر الفقرة عوضا عن إعطاء العنصر body القيمة fit-content للخاصية min-width . فهاته القيمة ليست مدعومة بعد من قبل كامل متصفحات الويب .1 نقطة
-
يمكنك عبر تصغير الخط وتعديل مكونات الصفحة بإستخدام الmedia query لتناسب المقاسات الصغيرة1 نقطة
-
لم تفهم قصدي أريد أن تظهر مكونات الصفحة بشكل عادي و بدون إستعمال scroll, فهل هذا ممكن ؟1 نقطة
-
بشكل عام ضمن أنظمة التشغيل، نصادف أحيانا ثلاث حالات للإنهاء: - الحالة الطبيعية: عندما تنتهي الاجرائية من تنفيذ آخر تعليمة لها تطلب من نظام التشغيل أن يقوم بحذفها عن طريق استدعاء نظام يدعى exit بالتالي في هذه النقطة بعد استدعاء النظام exit فإنه يتم تحرير deallocate كل الموارد التي كانت تحجزها هذه الإجرائية لتعود إلى نظام التشغيل ويتم تحرير flush كل الملفات المفتوحة وإغلاقها. - الحالة الخاصة: قد تطلب الإجرائية أن يتم إنهائها قبل تنفيذ كل التعليمات وذلك عن طريق استدعاء النظام exit (هو تابع يرد قيمة وقد يختلف اسمه من نظام لآخر) الذي يرد قيمة صحيحة integer هذا العدد الصحيح int يمرر passed إلى الإجرائية الأب parent في حال كان الأب قد استدعى wait ويرد الإجرائية exit إحدى القيمتين: •يرد zero في حال إن إنهاء الإجرائية تم بشكل صحيح. •يرد non-zero (رقم عشوائي صحيح) فيحال تم حدوث مشاكل قبل الإنهاء. - الحالة القسرية: في حال أرادت الإجرائية الأب أن تقوم بإنهاء الإجرائيات الأبناء تستخدم استدعاء النظام يدعى abort وهذه بعض الاسباب للقيام بذلك: 1. الإجرائية البنت child تخطت الاستخدام المسموح به لبعض الموارد التي خصصت لها. 2. المهمة task التي اعطت للإجرائية البنت لم تعد مهمة (لاحاجة لها بعد الآن no required ). 3. الإجرائية الأب انتهت (تنفذ exit) ولكن نظام التشغيل لايسمح بإنهاء الأب قبل البنت وبالتالي سوف تنهي الإجرائية البنت لتستطيع أن تنهي نفسها. ملاحظة: إذا انتهى الأب فإن نظام التشغيل قد وقد لا يسمح بوجود الابن بدون أبيه (يختلف الأمر من نظام تشغيل لآخر).1 نقطة
-
السلام عليكم، قم لتوي بشراء دورة علومةالحاسب مقابل ١٦٠ دولار وأريد أن أعرف كيفية الوصول لمحتوى الدورة التدريبية وشكرا..1 نقطة
-
السلام عليكم ورحمة الله تعالى وبركاته ..♥ اواجه مشكلة منطقية عند تنفيد الاستعلام وتمرير where class columnSelect{ private $serName = 'localhost'; private $dabName = 'users'; private $usrName = 'root'; private $usrPass = ''; public function columnSelectFun($table, $email, $password, $mailTable, $passTable){ try{ $con = new PDO("mysql:host=$this->serName;dbname=$this->dabName", $this->usrName, $this->usrPass); $con ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $con->prepare("SELECT * FROM $table WHERE $mailTable = :email"); $stmt->bindParam(':email', $email); $stmt->execute(); $con = null; $stmt->setFetchMode(PDO::FETCH_ASSOC); $stmt = $stmt->fetchAll(); foreach($stmt as $key => $val){ if($val[$mailTable] == $email){ if($val[$passTable] == $password){ return 'u are welcome'; }else{return 'your password is not correct';} }else{return 'your email is not correct';} } }catch(PDOException $e){ return $e->getMessage(); } } } if(isset($_POST["submit"])){ $email = $_POST["email"]; $password = md5($_POST["password"]); $obSelect = new columnSelect(); echo $obSelect ->columnSelectFun('data', $email, $password, 'email', 'password'); } بحيث انه ادا ماتم ادخال بريد الكتروني غير موجود في الجدول لن يتم تحديد البيانات واستدعائها ;وبتالي شرط التحقق if($val[$mailTable] == $email){ } لايعمل لان البيانات لم تستدعى, لانه لايوجد صف فيه بريد الكتروني مطابق المطلوب اريد طريقة تمكنني من التاكد من ان هناك بريد الكتروني في الجدول في قاعدة البيانات مطابق لما ادخله العميل دون ازالة الامر where من الاستعلام1 نقطة
-
الأن في الإجابة السابقة الخاصة بي , يقوم بالتحقق من أن المتغير يحمل بريد الكتروني أو لا , يعني اذا كان يوجد بريد الكتروني مطابق لما تبحث عنه سيقوم بارجاع البيانات هذا ما قصدته , ماذا تقصد انت .1 نقطة
-
المشكل حتى لو انه يحمل قيمة لكنها غير الموجودة في الجدول لن يتحقق الاستعلام لان الامر where يقوم بجلب البيانات الا في حال ادا كانت القيمة الممررة اليه موجودة في الجدول1 نقطة
-
سوف تقوم بالتأكد من قيمة المتغير التالي $val[$mailTable] بحيث إذا يحتوي على قيمة ( بريد الكتروني ) قم بتنفيذ الاستعلام الذي تريده ، أما إذا كان فارغ ( لا يحتوي على بريد الكتروني ) يمكنك تنفيذ أو إظهار رسالة خطأ تفيد بأنه لا يوجد أي بريد الكتروني if($val[$mailTable]){ // تنفيذ الاستعلام } else { // إظهار رسالة خطأ }1 نقطة
-
1 نقطة
-
يمكنك اعداد اتصال عن طريق ssh ولن تحتاج بعد ذلك لادخال أي معرف أولا تأكد من تثبيت هذه المكتبات sudo apt update && sudo apt install -y openssh-client git أنشئ دليل ssh للمستخدم ودليلًا فرعيًا حيث سيتم تخزين مفتاح GitHub ssh المخصص: mkdir -p ~/.ssh/github chmod 700 ~/.ssh ~/.ssh/github قم بإنشاء مفتاح SSH ssh-keygen -t rsa -b 4096 -C 'your@email.com' -f ~/.ssh/github/id_rsa -q -N '' انسخ محتوى الملف id_rsa.pub ، استخدم الأمر التالي لإخراجه: cat ~/.ssh/github/id_rsa.pub أنشئ الملف ~ / .ssh / config ، إذا لم يكن موجودًا بالفعل: touch ~/.ssh/config chmod 600 ~/.ssh/config قم بتحرير ملف التكوين وإضافة الإدخال التالي لمفتاح SSH الجديد: Host github.com IdentityFile ~/.ssh/github/id_rsa اختبر الإعدادات استخدم الأمر التالي: ssh -T git@github.com Hi salahberiani! You've successfully authenticated, ... الان يمكن استخدام git دون القلق على استخدام كلمة سر أو token فقط استخدمه عادي وستبقى داءما لديك صلاحية1 نقطة
-
table.class يعني أن الجدول يحتوي على محدد باسم class كما في الشكل التالي <table class="class"></table> أي كل التنسيقات سوف تطبق على كامل الجدول بما أنه يحتوي على هذا المحدد. أما table .class يعني أن هناك عنصر بداخل وسم الجدول يحتوي على محدد باسم class كما في الشكل التالي <table> <tr class="class"></tr> </table> أي كل التنسيقات سوف تطبق على كامل العنصر بما أنه يحتوي على هذا المحدد.1 نقطة
-
لمساعدة نفسك على اتباع ال best practices يجب عليك أن تتعلم frameworks مبنية فوق التكنولوجيات المستخدمة في حالتك يمكنك استخدام أحد هذه ال frameworks react vue angular svelte واضب داءما على استخدام أخر النسخ من المكاتب المشهورة لأنها تكون مبنية من فريق متخصص و تكون مصممة لتتماشى مع best practices عدا ذلك اذا كنت لا تريد استخدام أي framework يمكنك جلب قوالب مبنية مسبقا وحاول بناءها وحدك ثم قارن شيفرتك مع شيفرت الموقع وتعلم منها ال best practices1 نقطة
-
بارك الله فيك اخي الفكرة وصلت على اكمل وجه جزاك الله خير الجزاء وزادك علما تنفع وتنتفع به وادخلك فسيح جناته1 نقطة
-
أداة MYSQL Workbench هي برنامج يحوي عدة أدوات تساعدك في استعراض وتعديل وتصميم وتهجير جداول البيانات، وهي تقوم بذلك بالتواصل مع خدمة MYSQL، أنت لن تتواصل مع الأداة بل مع الخدمة مباشرة يمكنك اتباع الخطوات التالية: تأكد من تشغيل خدمة MySQL على جهازك والتأكد من عنوان المنفذ Port التي تعمل عليه الخدمة (الافتراضي يكون 3306) تأكد من اسم المستخدم وكلمة المرور على الخدمة الذي تريد الدخول منه (الافتراضي هو المستخدم root وليس لديه كلمة سر) (اختياري) يمكنك الاتصال مباشرة بقاعدة بيانات معينة منشئة سابقة تأكد من اسمها قم بتمرير القيم السابقة لمعاملات تابع الاتصال createConnection، التالي طريقة القيام بالاتصال بالقيم الافتراضية: var con = mysql.createConnection({ host : 'localhost', // عنوان الخدمة port : 3306, // اختياري يمكن تجاهله في حال قيمته افتراضية user : 'root', // اسم المستخدم password : '', // كلمة سر المستخدم database : 'database_name' // اختياري اسم قاعدة البيانات });1 نقطة
-
السلام عليكم. اريد السؤال عن هل تتوفر api مجانية لتطبيق واتساب لاستخدامها مع لارافل لإرسال الرسائل فقط؟1 نقطة
-
لا يوفر WhatsApp أي API مجاني لأنه يحاول الحد من الرسائل المزعجة العشوائي SPAM. ولكن يتم الدفع لكل رسالة بتكلفة تختلف من دولة إلى أخرى (وتختلف من حزمة إلى أخرى)، ويمكنك معرفة أسعار من خلال صفحة "WhatsApp Business API"، وبشكل عام كلما زاد عدد الرسائل التي تقوم بإرسالها شهريًا سيتجد أن سعر الرسالة الواحدة أصبح أقل. فعلى سبيل المثال ستكون تكلفة الرسالة الواحدة في مصر $0.0687 وذلك لأول 250 ألف رسالة، ثم بعد ذلك سيكون سعر الرسالة $0.0672 للرسائل الـ 750 ألف التالية، وهكذا. يمكنك أيضًا أن تستخدم خدمات من شركات أخرى تقوم بتوفير حزم أقل مثل clickatell والتي تبدأ من 1$ شهريًا لـ 10 ألاف رسالة.1 نقطة
-
PDO اختصار لـ (PHP Data Objects) في PHP عبارة عن مكتبة تستخدم لتعامل مع عدة أنواع من قواعد البيانات ، وربط PHP في نظام قواعد البيانات ، يعني لنفرض أن لديك مشروع واستخدمت به نظام قواعد بيانات معين ، ولكن مع مرور الزمن كبر حجم المشروع وأصبح كبير جداً والنظام الذي تستخدمه لا يمكنه التعامل مع كبر حجم المشروع، وأردت أن تنقل المشروع لنظام قواعد بيانات يتناسب مع حجم المشروع ، في حالة أنك لم تستخدم PDO سوف تطر لتعديل أسطر البرمجية كثيرة لكن PDO يمكنه من عمل ذلك في تغير سطر برمجي واحد المختص بالاتصال بقاعدة البيانات . نظام PDO يستعمل أسلوب OOP . لتفعيل المكتبة على السيرفر الشخصي على نظام ويندوز تفتح الملف php.ini وتحذف ; التي في أول السطر الذي تحتاجه ;extension=php_pdo_firebird.dll ;extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_oci.dll extension=php_pdo_oci8.dll ;extension=php_pdo_odbc.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll ثم تقوم بعمل reset لحفظ التعديلات على السيرفر .1 نقطة
-
تُستخدم الfor await من أجل إتاحة صيغة الfor each ولكن للمُكررات(iterators) التي تقوم بإرجاع promise فمثلاً في الطبيعي إن كان لدينا مُكرر كما بالشكل التالي function* colorIterator() { yield "blue"; yield "red"; } يمكننا بكل سهولة أن نقوم بالمرور عبره بإستخدام forEach بالشكل التالي const iterat = colorIterator(); for (const color of iterat) { console.log(color); } ولكن ماذا إن كان لدينا مُكرر يحتوي على promises ? في تلك الحالة لن تفيدنا كثيراً صيغة الfor each حيث أنها ستقوم بإرجاع promise وليس قيمة , أي أنها ستقوم بإرجاع كائن كما هو بهذا الشكل Promise {<pending>} [[Prototype]]: Promise [[PromiseState]]: "pending" [[PromiseResult]]: undefined وﻻ نستطيع إستخراج بيانات مفيدة من كائن بهذا الشكل, في الطبيعي كنا نقوم بإستخدام صيغة .then للتعامل مع الpromises كما بهذه الشفرة my_promise.then(response=>///code) ولكن ﻻ يمكننا تنفيذ صيغة كتلك في الforeach , الحل أن نقوم إذا بإستخدام صيغة الfor await , فإن كان لدينا مُكرر كالتالي const asyncIterable = { [Symbol.asyncIterator]() { return { i: 0, next() { if (this.i < 3) { return Promise.resolve({ value: this.i++, done: false }); } return Promise.resolve({ done: true }); } }; } والذي ببساطة يحتوي على مجموعة من الpromises تقوم بإرجاع 1, 2, 3 فﻻ نستطيع إستخدام الfor each التقليدية لأننا لن نحصل إلى على promises لم تُعالج بعد, ففي تلك النقطة يجب إستخدام الfor await of كما في الشفرة البرمجية التالية (async function() { for await (let num of asyncGenerator()) { console.log(num); } وكما تﻻحظ عزيزي فإن الدالة التي تحتوي على الfor await هي من النوع async حيث ﻻ يمكننا إستخدام تلك الصيغة إلا على الدوال من النوع async1 نقطة
-
تستخدم for await مع التكرار غير المتزامنة (asynchronous) و ليس مع المصفوفات (arrays) Syntax for await (variable of iterable) { statement } variable : في كل تكرار ، يتم تعين قيمة خاصية مختلفة إلى متغير مثل const, let, var. iterable : كائن يجب تكرار خصائصه . في هذا المثال يقدم fetchCommits طلباً غير متزامن (asynchronous) لجلب commits من GitHub ، سوف يرسل البيانات بـ استخدام JSON مع توفير رابط الصفحة ، لذلك لا يمكن بدأ التكرار إلا بالحصول على الرابط الطلب. async function* fetchCommits(repo) { let url = `https://api.github.com/repos/${repo}/commits`; while (url) { const response = await fetch(url, { headers: {'User-Agent': 'Our script'}, }); const body = await response.json(); // (array of commits let nextPage = response.headers.get('Link').match(/<(.*?)>; rel="next"/); nextPage = nextPage?.[1]; url = nextPage; for(let commit of body) { yield commit; } } } يمكنك الاطلاع على هذه المقالة لإضافة المزيد من الفائدة1 نقطة
-
UI هي واجهة المستخدم (User Interface)، بينما UX هي تجربة الإستخدام (User Experience)، ولكل منهما العديد من التفاصيل والشروحات والأداوات التي يمكنك إستخدامها، ومصمم واجهة الاستخدام UI/UX Designer لا يقوم بكتابة الأكواد ولكن كتابة الأكواد هي عمل UI/UX Developer، فالمصمم هو من يقوم بعمل مخطط للتصميم ثم يقوم المختص بتحويلها الى كود فعلي. في الوقت الحالي لن تجد الكثير من المحتوى العربي الذي يتخصص في تصميم واجهة الاستخدام UI/UX Design (على الأقل مقارنة بالمحتوى الأجنبي)، يمكنك أن تحصل على دورة مقدمة من Google بخصوص تجربة الإستخدام User Experience وهي دورة مجانية لفترة تجريبية (للحصول على الشهادة يجب أن تقوم بدفع مبلغ مالي) تقوم بدراستها من خلال موقع Coursera، تقدم الدورة شرح للأساسيات مثل wireframing و prototyping مع أسخدام أدوات مثل Adobe X.D و Figma. كما أن أكاديمية حسوب تحتوي على العشرات من المقالات في التصميم بشكل عام وفي تصميم واجهة الاستخدام UI/UX Design بشكل خاص، وأنصحك بأن تبدأ بسلسلة مقدمة إلى UI لتعلم كل ما يخص واجهة المستخدم User Interface، بالإضافة إلى سلسلة مدخل إلى تجربة المستخدم لتعلم تجربة الإستخدام User Experience، وكلٌ من السلسلتين يُعد مدخل ممتاز يحتوي على شرح لكل ما ستحتاج تعلمه للبدأ في العمل في هذا المجال. ستتعلم من خلال دورة جوجل ومن خلال السلستين السابقتين العديد من المصطلحات مثل: User Interviewing - مقابلة المستخدمين Usability Testing - اختبار قابلية الاستخدام Human Computer Interaction - تفاعل الإنسان والحاسوب Strategy Design - تصميم الإستراتيجية وغيرها الكثير. أيضًا سوف تحتاج إلى التدرب على أشهر أدوات التصميم مثل Adobe X.D و Figma فالطبع لن تستطيع عمل تصميم ممتاز حتى وإن كانت لديك معرفة كبيرة بالمجال ما لم يكن لديك معرفة بالأدوات التي سوف تستعملها. عند إنتهائك من تعلم الدروس والأدوات السابقة أنصحك بالإطلاع على المقالات العامة في قسم التصميم لأنك سوف تحصل على معرفة ممتازة بأدوات وأشياء وقواعد لم تكن تعلمها من قبل مما سيؤدي بالنهاية إلى جعل تصاميمك أكثر إحترافية. بعد تعلم ما سبق سوف تجد أن الأمور أصبحت أكثر وضوحًا وستعرف تلقائيًا الخطوة التالية.1 نقطة
-
يبدو أن المشروع يعمل بالفعل بشكل سليم، وهو مُجهز ليتم تشغيله من خلال Laravel ، يمكنك تشغيل المشروع من خلال Laravel عبر الخطوات التالية: تشغيل الأمر التالي في مشروع React: npm run build بعد تنفيذ الأمر السابق والإنتهاء منه ستجد أن هناك مجلد جديد ظهر في المشروع باسم build، قم بنسخ كل محتوياته (ماعدا index.html) إلى المجلد public في مشروع Laravel (لا تنسخ المجلد build نفسه بل الملفات والمجلدات التي بداخله فقط) الآن متبقي في المجلد build الملف index.html فقط، قم بنسخ كل محتوى هذا الملف إلى الملف resources\views\welcome.blade.php (يجب حذف محتويات الملف welcome.blade.php القديمة أولًا) الآن تستطيع تشغيل المشروع من خلال الأمر التالي (نفذ الأمر في مشروع Laravel): php artisan serve ملاحظة: عند إجراء أي تعديل على مشروع React يجب إتباع نفس الخطوات مرة أخرى.1 نقطة
-
بالتأكيد يمكنك أن تستخدم أي إطار عمل لواجهة المستخدم frontend مثل react.js أو vue.js أو غيرها مع Laravel بدون مشكلة. بشكل إفتراضي يأتي Laravel مجهز بإطار Vue.js (مع دعم لـ React.js) أيضًا، وستلاحظ ذلك من خلال الملف بصيغة .vue في مجلد resources/js/components، (إن لم يكن لديك هذا المجلد فلا توجد مشكلة) ويمكنك تغير هذا الأمر من خلال تنفيذ الأمر التالي: composer require laravel/ui php artisan ui react --auth بمجرد تنفيذ الأمر السابق ستلاحظ أن الملفات الموجودة في المجلد resources/js/components تم إستبدالها بمكونات React بدلًا من مكونات vue. أيضًا سوف تحتاج إلى تثبيت مكتبات وحزم عبر npm، على النحو التالي: npm install ستجد أن مجلد جديد ظهر باسم node_modules وهذا المجلد يحتوي على كل المكتبات والحزم الضرورية لعمل المشروع (Frontend فقط). من أجل تقديم أي عنصر إلى Browser DOM ، نحتاج إلى حاوية أو عنصر DOM جذر. في هذه الحالة يجب تعديل الملف resources\views\welcome.blade.php ليحتزي في جسم الصفحة على الكود التالي: <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Laravel</title> <link rel="stylesheet" href="css/app.css"> </head> <body> <!-- سيتم عرض تطبيق react.js هنا --> <div id="example"></div> <script src="js/app.js"></script> </body> </html> أخيرًا يجب توليد ملف js/app.js الذي تم تضمينه في الكود السابق وذلك عبر الأمر التالي: npm run dev ملاحظة: إن كانت هذه المرة الأولى التي تقوم بتنفيذ الأمر السابق، قد تحتاج إلى تنفيذه مرتين بدلًا من مرة واحدة. الآن تستطيع تشغيل المشروع وستجد أن النتيجة كما في الصورة: هنا تم عرض مكون React بنجاح. إن كان لديك مشروع يعمل بالفعل، فكل ما عليك فعله هو إضافة ملف المشروع النهائي (ملف javascript) مكان الملف js/app.j،s ، ونفس الأمر بالنسبة إلى CSS، أو يمكنك دمج المشروع بالكامل من خلال إضافة المكونات إلى المجلد resources/js/components وإستخدام الملف resources\js\app.js كـ Entry point1 نقطة
-
الموضوع بسيط اخي . هي اوامر اختيارية قد تضاف عند فتح البرنامج مثلا انجزت تطبيق اسمه calc.exe وهي حاسبة الية , تمام ? اذا فتحت شاشة cmd ووضعت امر calc.exe سيفتح البرنامج فقط .. ام اذا قلت له: calc.exe /add 3 4 سوف يجمع 3+4 ويعطيك النتيجة (7) لانه وجد امرا اضافيا وهو add/ في هذه الحالة يوجد 3 command arguments وهي : add/ 3 41 نقطة