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

Hassan Hedr

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

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

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

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

    38

كل منشورات العضو Hassan Hedr

  1. كلاهما مختلفان لكن يوجد تقاطع بينهما Computer Science: يبدأ هذا المجال من الجانب النظري المتعلق بتطوير مفاهيم هي ركيزة واساس كل تطبيق للحاسب، مثل الخوارزميات وتعقيدها وهيكلة البيانات وادارة الذاكرة ،وينتهي عند تنفيذ هذه النظريات بشكل عملي كبرامج او هندسة منتجات كقطع الحاسب أو هيكلة نظام ما IT: يبدأ هذا المجال من الجانب التنفيذي التقني، أي القدرة على استخدام النظريات والمفاهيم بشكل عملي لانتاج برنامج او نظام او عتاد، وينتهي بالمهارات العملية من ادارة المشروع الى التخطيط للتنفيذ لا يوجد الأفضل بين المجالين فهما متكاملان، اذا كنت تميل للجانب النظري CS ستناسبك، أما اذا كنت تفضل تعلم النظريات و المهارت وتنفيذها فقسم IT ستجده أنسب
  2. هي ببساطة تعميم لنوع بيانات معين بدون تحديده، أي اذا كان لديك مكان يقبل عدة انواع (float, double, int) تعبر عن ذلك بوضع رمز (لا على التعيين عادًة T) معناه انه يمكن قبل أي نوع هنا لا على التحديد مثال الصف List هو قائمة بعناصر من نوع واحد، النوع غير محدد لذلك نضع مكان النوع رمزا يحدد عند استخدام الصف class List<T> { ... } ويمكن الاشارة للنوع داخل الصف class List<T> { ... public T getItem(int index) { // التابع سيعيد قيمة من النوع الممرر للصف ... } } // نحدد النوع عند استخدام الصف List<Int> numbers = new List<Int>(); ويمكن حصر الانواع التي يمكن استبدالها عبر تحديد النوع الأب // الصف يقبل الانواع التي يمكن معاملتها كنص class Printer<T extends String> { ... }
  3. لا لن يضاف ستحتاج لذكره صراحة في تعريف ال view وذكره في استعلام الادخال في insert كالتالي CREATE VIEW usersView AS ( SELECT u.id_user AS id_user, u.email AS email, u.createdAtU AS createdAtU, u.updatedAtU AS updatedAtU, ui.id_user AS ui_id_user, ui.fullname AS fullname, ui.createdAtI AS createdAtI, ui.updatedAtI AS updatedAtI, uc.id_user AS uc_id_user, uc.code AS code, uc.createdAt AS createdAt, uc.updatedAt AS updatedAt FROM users u LEFT JOIN usersInfo ui ON u.id_user = ui.id_user LEFT JOIN usersCode uc ON u.id_user = uc.id_user ); وعند الادخال يجب ذكر ال id لكل جدول اذا واجهت مشاكل في الإدخال جرب أحد الطريقتين تبديل LEFT JOIN بـ INNER JOIN تقسم عمليات الادخال بحيث في كل مرة تدخل عناصر متعلقة بجدول واحد فقط (في هذه الحالة انصح استخدام الView فقط كبديل عن الاستعلام SELECT وليس للادخال) INSERT INTO usersView (`email`) VALUES ('email@example.com'); INSERT INTO usersView (`ui_id_user`, `fullname`) VALUES (1, 'Name'); INSERT INTO usersView (`uc_id_user`, `code`) VALUES (1, 'XC5');
  4. ذاكرة التخزين Flash Memory بها عطب في الذاكرة أدى لعطب في معلومات الصورة تأكد أن المشكلة ليست من الكاميرا حاول نسخ صورة الى الذاكرة من جهازك واستعادتها، اذا لم تتمكن من ذلك فالذاكرة معطوبة للأسف لا يوجد حل سوى تبديل الذاكرة Flash Memory بأخرى جديدة أما الصور المعطوبة لا يمكن ارجاعها كاملة
  5. C++ هي لغة قريبة جدا من عتاد الحاسوب (Hardware) حيث بتعاملك بها ستقوم مثلا بحجز للذاكرة وادارتها، و مواجهة مشكلات تتعلق بكيفية عمل الحاسوب، مما سيجعلك كمبتدأ تفهم أكثر أساسيات عمل الحاسوب Java هي لغة مجردة اكثر وبسيطة نسبيا، ستساعدك في فهم طريقة البناء غرضية التوجه أي تصميم عناصر النظام لديك بشكل أغراض تتفاعل وتتواصل مع بعضها لتحقيق المطلوب، ستفيدك كمبتدئ في تعلم البرمجة غرضية التوجه OOP Python لغة عملية جدا، وفيها الكثير من المزايا والدوال والمكاتب التي توفر ميزات جاهزة للاستخدام، بتعاملك بها ستركز فقط على حل المشكلة التي لديك ولا تنشغل كثيرا بامور هيكلة عناصر النظام أو ادارة الذاكرة وما شابه، ستفيدك كمبتدئ بالتركيز على تعلم وتطبيق الخوارزميات وحل المشاكل JavaScript لغة الويب حيث باتقانك لها يمكنك بسهولة بناء مواقع الويب وتطبيقات يمكنك مشاركتها مع الاخرين، ستفيدك كمبتدئ بعرض خبراتك للاخرين وتطوير تطبيقات الويب باتقانك لهذه اللغات (أو بعضها) سيكون لديك الركيزة الأساسية كمبرمج فقد اتطلعت على: طريقة عمل الحاسوب البرمجة غرضية التوجه تطوير الخوارزميات تطوير تطبيقات الويب
  6. vmin: تدل على القيمة الأصغر بين الطول والعرض للنافذة vmax: تدل على القيمة الأكبر بين الطول والعرض للنافذة يمكنك استخدامهما اينما شئت، قيمتهما تساوي القيمة التي تضعها × حجم الخط (حجم خط عنصر html الرئيسي ل rem، وحجم الخط الموروث لـ em) بما انها قيمة متعلقة بحجم الخطوط فهي تفيد في بناء هرمية قياسات لخطوط متعددة متناسقة، ولكن انت حر باستخدامها اينما شئت 12vmin: سيكون ارتفاع العنصر مساوي لـ 12% من طول أو عرض النافذة (حسب أيهما أصغر) 12vh: سيكون ارتفاع العنصر مساوي لـ 12% من طول النافذة حصرًا min-width: أقل عرض ممكن للعنصر min-height: أقل طول ممكن للعنصر ماذا لو أردت أن يبقى أقل عرض لعنصر ما مساويًا دوما ل 50% من "عرض الشاشة" وليس من عرض العنصر الأب المباشر له، هنا تحتاج لقيمة 50 vw
  7. خاصية text-fill-color ليست قياسية (standard) وانما تابعة للإضافة webkit أي عند استعمال الخاصية تكتب بالشكل -webkit-text-fill-color صحيح فعملها مطابق تماما لعمل الخاصية color ولها الأولوية، الصف التالي عندما يطبق على عنصر سيتم تطبيق اللون الأحمر على النص وتجاهل قيمة color .text { color: black; -webkit-text-fill-color: red; } وسبب وجودها أن الحزمة webkit تحتوي على عدة خصائص متعلقة بتنسيق النص -webkit-text-stroke-width: 1px; //خاصية عرض خط تحديد النص -webkit-text-stroke-color: black; // خاصية لون خط تحديد النص ربما يسعى مطورو webkit لجعلها حزمة متكاملة مستقلة ولو على حساب تكرار خصائص موجودة في CSS
  8. يمكنك اعداد nginx للتحقق من قيمة User-Agent لمعرفة نوع المتصفح ومن ثم حظرها أو اعادة توجيهها الى صفحة معينة، في ملف nginx.conf في المسار الرئيسي تضع location / { if ($http_user_agent ~* 'MSIE') { rewrite ^ /error/browser-unsupported.html; # مسار صفحة الخطأ break; } }
  9. توضع هذه الشيفرة على المخدم نفسه في الصفحة الرئيسية index.php أو اذا كنت تعمل في اطار عمل معين يوضع الكود داخل المتحكم الخاص بالمسار في القيمة action
  10. يمكن تخزين هذه المتغيرات ضمن الصف عند الانشاء لأول مرة وحصر الاطلاع عليها ضمن دوال get (في هذه الحالة الدوال للتحقق تبدأ بـ is) class Student { static enum Gender = { MALE, FEMALE }; static enum Level = { BEGINNER, ADVANCED }; private Gender gender; private Level level; public constructor(Gender gender, Level level) { this.gender = gender; this.level = level; } public isAdvanced(){ return this.level == Level.ADVANCED; } public isBeginner(){ return this.level == Level.BEGINNER; } public isMale(){ return this.gender == Gender.MALE; } public isFemale(){ return this.gender == Gender.FEMALE; } } Student beginnerMaleStudent = new Student(Student.Gender.MALE, Student.Level.BEGINNER); beginnerMaleStudent.isMale(); // true beginnerMaleStudent.isBeginner(); // true Student advancedFemaleStudent = new Student(Student.Gender.FEMALE, Student.Level.ADVANCED); beginnerMaleStudent.isFemale(); // true beginnerMaleStudent.isAdvanced(); // true
  11. ببساطة نأخذ القيمة comment المرسلة من الطلب وننشىء غرض من الصف السابق ونمرر له قيمة النص، ونرجع للعميل صفحة منسقة تحوي على الإجابة كالتالي: $text = new Text($_POST["comment"]); echo 'Characters: '. $text->characters(); echo '<br>'; echo 'Words: '. $text->words(); echo '<br>'; echo 'Lines: '. $text->lines();
  12. يمكنك ذلك عبر تغيير إعدادات اللون لهذا النوع من الصفوف إلى أي لون تفضلينه عبر تغيير الإعدادات من Settings > Editor > Color Scheme > Java > Anonymous class ومن ثم تغيير اللون الأمامي Foreground كما في الصورة
  13. كما ذكرت الآنسة ريم إما أن تبدأ من الأسفل أي من الأساسيات وصولا لحقل تعلم الآلة وستجد لديك مفاهيم أساسية لتطبيقها، أو من الأعلى أي تبدأ من خوارزميات تعلم الآلة والتعمق في كل مفهوم أساسي تصادفه لخدمة الخوارزمية
  14. يمكنك انشاء View لتمثل جدول جديد (وهمي) يجمع كل البيانات ويخفي البنية الحقيقية للجداول ويجعل عبارة الاستعلام اقصر واسهل كالتالي CREATE VIEW usersView AS ( SELECT u.id_user AS id_user, u.email AS email, u.createdAtU AS createdAtU, u.updatedAtU AS updatedAtU, ui.fullname AS fullname, ui.createdAtI AS createdAtI, ui.updatedAtI AS updatedAtI, uc.code AS code, uc.createdAt AS createdAt, uc.updatedAt AS updatedAt FROM users u LEFT JOIN usersInfo ui ON u.id_user = ui.id_user LEFT JOIN usersCode uc ON u.id_user = uc.id_user ); وتستعلم عن بيانات مستخدم ما كالتالي SELECT * FROM usersView WHERE user_id = 5 لادخال بيانات في عدة جداول معا تتعامل مع ال View كانها جدول حقيقي INSERT INTO usersView (fullname, email, code) Values ('Full Name', 'email@example.com', 'AX5');
  15. لمعرفة عدد المحارف في النص يمكن استخدام التابع strlen لمعرفة عدد الكلمات في النص يمكن استخدام التابع str_word_count لمعرفة عدد الاسطر يمكن تقسيم النص عند كل سطر وعد الأقسام باستخدام التوابع count, explode يمكن كتابة الصف كالتالي class Text { public string $text; public function __construct($text) { $this->text = $text; } public function characters() { return strlen($this->text); } public function words() { return str_word_count($this->text); } public function lines() { return count(explode("\n", $this->text)); } } // يستخدم كالتالي $text = new Text("..."); $chars = $text->charachters(); $words = $text->words(); $lines = $text->lines();
  16. هناك eslint لكنه يميل أكثر للتنبيهات عن سياق الكود أكثر من أن يكون منسق وهناك js-beautify تقريبا مشابه ل Prettier ويعمل عمله انصحك اذا كان التنسيق مزعج لك كثيرا ألا تستخدمه، لأن هذه الأدوات يجب أن تساعد المطور وتنفذ الاعمال الروتينية عنه لا أن تخلق مشاكل ثانوية ينشغل بها عن التطوير
  17. يمكنك أيضا ذلك، على حساب أنك ستخسر ميزات التنسيق وترتيب الفراغات والأقواس والفواصل لسهولة القراءة بالنهاية Prettier لا يتيح التحكم بكافة تفاصيل التنسيق فهو محدد الرأي وكأن أحدًا يملي عليك كيف تنسق مع السماح لك ببعض التفضيلات البسيطة
  18. عند معالجتك لطلب على الخادم يجب ارسال رد واحد للعميل، أنت تقوم بتنفيذ أول إرسال (في حال وجود خطأ) ولكن الأسطر اللاحقة يتم تنفيذها يجب الخروج من الدالة عند أول رد تريد إرساله بإضافة return قبل دالة الارسال send أو json، فتصبح الشيفرة التي أرفقتها كالتالي app.post("/user",(req,res)=>{ if(req.body.user.email == undefined) // الخروج من الدالة بعد أول ارسال لرد للعميل return res.status(404).send("err") user=new User(req.body.user) user.save() .then(()=>res.json("user created")) })
  19. يمكن الحصول على تنسيق كالمطلوب بتغيير بسيط بالشيفرة بدون اي تغيير بالاعدادات عبر حذف الكلمة return من التابع وحذف الأقواس { } مع حذف الفاصلة المنقوطة ثم تنفيذ أمر تنسيق prettier const numbers = values .map((val, index) => (index + 1) ) .toString(); // بعد تنفيذ أمر التنسيق const numbers = values.map((val, index) => index + 1).toString();
  20. نعم يفضل، ستجد في مخزونك أساسا قويا وتكون قادر على تنفيذ تطبيقات تعلم الآلة المختلفة حتى هناك تقاطعات بين تحليل البيانات وتعلم الالة ستجد انك قادر على تنفيذها فورا، يمكنك قراءة المقال السابق المشار اليه لتأخذ فكرة عامة عن مجال تعلم الالة
  21. طبعا فهي المفاهيم الأساس التي ستستخدمها في تعلم الآلة، وحتى تطبيقات تحليل البيانات
  22. تعلم الآلة قائم على "تحويل البيانات" من شكل لآخر عبر "خوارزميات" عديدة حسب مجال المشكلة بالتأكيد معرفتك بتشكيل البيانات أمر أساسي في حال رغبت بالدخول في مجال تعليم الآلة فأبسط عملية تعلم آلة ستحتاج للخطوات التالية: جمع البيانات وتجهيزها (هنا مهم جدا معرفتك بتشكيل ومعالجة هياكل البيانات) اختيار انسب خوارزمية تعلم آلة لبناء نموذج يستخرج المعلومات التي تريدها (هنا مهم معرفتك بالخوارزميات) يمكنك الاطلاع على مقالات تعلم الآلة لمعرفة الخوارزميات الشائعة المستخدمة، واشكال البيانات المختلفة التي قد تصادفها
  23. يمكنك تمرير المكون من MaterialUI كإبن للمكون Link import Link from 'next/link' import { Link as StyledLink } from '@material-ui/core'; // .. return ( <Link href="/" passHref> <StyledLink>Home</StyledLink> </Link> ) لاحظ تمرير الخاصية passHref وهي تجعل المكون يمرر الرابط للمكون الإبن
  24. في لغة PHP يمكنك التصريح عن نوع متحول ما لسهولة التطوير حيث سيستخدم المحرر هذه التصاريح لمساعدتك في التطوير (ينبهك في حال تمرير متحول من نوع بدل آخر) ولكن هذا التنبيه سيقتصر على المحرر فقط، فعند تنفيذ الشيفرة ستعمل بشكل طبيعي، ولكن قد يسبب ذلك مشاكل مثال // تابع لحساب ناتج ما، يتوقع منه إعادة عدد صحيح function calculate(int $a, int $b){ return $a + $b; } $user->balance = calculate(5, 3.5); // $user->balance = 8 ناتج خطأ لتجنب هذه المشاكل فإن المحرر يقترح عليك كتابة declare(strict_types=1) في رأس الملف وذلك سيخبر PHP عند تنفيذ الشيفرة أن يلتزم بتصاريح الأنواع التي حددتها ويرمي خطأ في حال كانت الأنواع غير متطابقة ذلك سيجنبك الخطأ السابق فعند تنفيذ السطر التالي لن يتم حساب نتيجة خطأ دون أن تشعر ولكن سيتوقف التنفيذ ويظهر خطأ $user->balance = calculate(5, 3.5); // Fatal error: Uncaught TypeError
  25. سؤالك له علاقة بالتصميم أكثر من ايجاد حل برمجي للمشكلة، عند قص الصورة بشكل دائري فإن أي عناصر خارج اطار الدائرة (اللون الرمادي) سوف تختفي، يجب اختيار صور عناصرها البصرية الأساسية تقع ضمن حدود الدائرة، كما لو أنك تعين صورة لملفك الشخصي على أي منصة تواصل فستواجه نفس المشكلة
×
×
  • أضف...