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

Wael Aljamal

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

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

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

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

    218

كل منشورات العضو Wael Aljamal

  1. في حال تضمين عدة ملفات جافاسكربت في صفحة الويب، فإن ترتريب الملفات في الشيفرة البرمجية هو من يحدد ترتريب تحميل هذه الملفات، الذي نضعه أولا يتم تحميله أولا.. <script src="js/js-init.js"></script> <script src="js/js-file1.js"></script> <script src="js/js-file2.js"></script> ... الملف init مسؤولة عن إعدادات تهيئة معينة في الصفحة، ويستعمد عليه ملفين آخرين لنفرض كما في المثال file1 , file2 فهذا يتوجب كتابة شيفرة تضمين init قبل.. ونفس الأمر لحالات أخرى، فالشيفرة السابقة تحمل أيضا الملف الأول قبل الثاني. وهذا إن اعتمد الثاني على الأول سيعمل الموقع بشكل صحيح، أما في حال اعتمد الأول على الثاني نبدل ترتيب الملفين <script src="js/js-file2.js"></script> <script src="js/js-file1.js"></script> ... لاحظ تبديل اسمي الملفين (سطري التضمين) هذا الملف يحدد المكتبات والاعتماديات التي تحتاجها للمشروع ويعتمد عليه npm - node package manager، ولكن يقوم بتثبيتهم وعمل نسخة في مجلد node_modules ,بعدها يتطلب منك تضمين الملفات بنفس ماشرحت حسب أولوية الترتريب في ملف آخر index.js مثلا وهذا الملف نضمنه في المتصفح.. أي تجميع استدعاء ملفات بطريقة منظمة وضمان تحميل الملفات الأساسة أولاً ثم التي تعتمد عليها ثانيا..
  2. سنحاول تحديد المحارف الممكنة من خلال التعابير المنتظمة حسب مجال المحارف الانكليزية للأرقام.. حيث نمرر RegExp والتي هي اختصار ل regular expression من خلال الدالة allow TextField( inputFormatters: <TextInputFormatter>[ FilteringTextInputFormatter.allow(RegExp("[0-9]")), ], // Only numbers can be entered ), أما مثلا حروف وأرقام انكليزية يمكن التالي: FilteringTextInputFormatter.allow(RegExp("[0-9a-zA-Z]")), وإن أردت السماح بافراغات فقط أضف فراغ "[a-zA-Z ]" ^^^
  3. معرض أعمالك والمشاريع التي تقوم بها هي من تحدد مستواك، بالنسبة لمشاريع الدورة ستقوم انت بكتابتهم مع المدرب و بمساعدة ومتابعة من المدربين، ومن ثم بالتأكيد ستكون فاهم لكل أجزائهم، ولذلك يمكنك وضعهم في معرض اعمالك. قبل وبعد التخرج، ايضا قم بعمل بعض الصفحات او القوالب مما تعلمت للتدرب. هل من يعملون على مستقل جميعهم خريجين جامعيين او من أكاديكية حسوب؟ كلا، الشهادة مفيدة لأن بها امتحان وتاكد من فهمك للمحتوى، ومعرض اعكالك يعكس مهاراتك و كيفية استفادتك من المعرفة وتطبيقها بمشاريع حقيقية.. لا تستعجل الدراسة فهي عمىية تراكمية و تحتاج لخبرة تكتسبها مع حل المشكلات التي تعترضك.
  4. حسب شروط عمل موقع مستقل وأقتبس: صاحب المشروع: أرجو قراءة كيف يضمن مستقل حقوقك للتأكد ومراجعة قيود وشروط العمل في مستقل. نصيحتي هي محاولة التواصل مع المستقل، وتنبيهه للمشاكل التي تعرضت لها، يمكن أن يقوم بعمل تعديل إن أراد ذلك ولكنه ليس مجبراً، أنت عليك تجربة البرنامج قبل الاستلام والتأكد منه. ربما تفتح مشروعاً جديد مع المستقل نفسه وتطلب منه عمل التعديلات المطلوبة وإصلاح المشاكل مقابل مبلغ بينكم يتم بالاتفاق. المشاكل البرمجية ربما لاتظهر في مرحلة التطوير وهذا شيئ طبيعي، ربما سقط سهواً أي مشكلة ولو بسيطة وسبب عطل لديك. الحل الودي هو الأفضل دوما، ويمكنك التواصل مع الإدارة لربما لهم توصيات. انتبه لقراءة شروط الاستخدام عند شراء أي منتج أو خدمة و تأكد منها، لأن القانون يكون مكتوب في معلومات الموقع ولكي لا تتعرض لخسارة.
  5. مرحباً عبد الرحمن، بالنسبة للجزء الأول، أنت غير ملزم بوقت معين لحضور الدورة أو اجتياز الامتحان، يمكنك مشاهدة الدورة حسب تفرغك وبطريقة الدراسة التي تناسبك. الفترة التي لديك مدة محددة فيها، وهب بعد طلب عمل الامتحان، سيطلب منك المدرب عمل مشروع كاختبار لك، وهنا لديك مدة زمنية معينة لإنجازه. بالنسبة لتحقيق دخل ومردود مادي: تلتزم أكاديمية حسوب بإعادة قيمة الدورة وحتى بعد ستة أشهر من اجتياز الامتحان والحصول على شهادة إن لم تجد عملاً خلال هذه المدة وقمت بتحقيق دخل مادي يرد عليك ثمن قيمة الدورة. وهذا لأن الأكاديمية ليها ثقة كاملة بالمحتوى ومدى إفادته. وعلى كل حال عند الدراسة عليك تحقيق كل التركيز والمتابعة و التدرب على كتابة الأكواد ومن ثم الاعتماد على نفسك في حل المشاكل البرمجية قبل طلب مساعدة المدربين لتتمرن على كيفية حل المشاكل، وليس البرمجة.. إن قيمة المشروع تتباين بين مطور وآخر ومن صاحب مشروع لآخر وليس هنالك رقم تقريبي، يمكنك تصفح مشاريع على مستقل و خمسات وتقدير قيمة تقريبية لمشاريع تصميم واجهات المواقع و طلبات التعديل وماشابه.. وبعد اجتياز الامتحان، سيتم إضافة شارة "خريج أكاديمية حسوب" لحسابك في مستقل المرتبط بحساب الدورة. يمكنك الانسحاب من الدورة في أي وقت. فقط تواصل مع مركز مساعدة حسوب يمكنك تصفح: ميزات دورات الأكاديمية
  6. يمكن تعديل حجم Svg بطريقة غير مباشرة، مثل تغيير حجم الحاوية لها أو تغيير أبعاد الخلفية خاصتها حجم الحاوية: .mySvgImage img{ width:50%; } أبعاد الخلفية: background-size svg { background-size: 20px 30px; } استخدام التحويلات transform مع scale: <g transform="scale(0.5)"> ... الصورة </g> وضع svg في عنصر img وتغيير أبعاده: <img width="200px" src="myIcon.svg"/> سبب عدم القدرة على تعديل svg الأصلي هو حقوق الملكية لها
  7. مرحبا يحيى، شكرا لذكري في هذا السؤال، أنا لم أتعامل من قبل مع هذه الجزئية، بالإضافة لذلك السؤال غير واضح.. عنوان السؤال بحاجة لتغيير، وتوصيف المشكلة بشكل أكبر، كما يمكنك إرفاق الشيفرة البرمجية في السؤال مباشرة ضمن محرر الأكواد الذي يظهر في شريط تحكم التعليق.. وذكر التوثيق الذي تحاول اتباعه وما الخطوة التي وصلها تابع: إرشادات طرح الأسئلة
  8. بعد الدخول لموقع حسابات حسوب: حسابات حسوب accounts.hsoub يمكنك التسجيل فيه لمرة واحدة ثم اختيار أي موقع من منتجات حسوب وبعد النقرعلى "دخول" يتم الدخول تلقئيا بنفس الحساب (تأكد من استخدام نفس المتصفح) أو البريد وكلمة السر في حال تسجيلك للدخول على حاسوب آخر أو متصفح آخر أو الهاتف ثم تظهر لك صفحة منتجات حسوب
  9. كيف يمكن اختبار التطبيق بدون التوفر على آلة طابعة، هل يمكن من أحد المساعدة بتجريبه
  10. جاول تعليق السطر التالي.. يمكنك محاولة إضافة رقم الهاتف لمستخدم مسجل بالفعل، الطريقة كما في التوثيق: فلاتر: ربط حساب المستخدم في فلاتر أندرويد: ربط رقم الهاتف مع مستخدم مسجل بالفعل يتم ذلك من خلال الدالة : linkWithCredential تحوي كل من غوغل - وفيسبوك - والايميل، تابع الشيفرة ومرر القيمة المسجل بها المستخدم وأضف الرقم للحساب بدون إنشاء جديد. إن لم تعمل هذه الطريقة لاحقاً، لماذا لا تستعمل التحقق من البريد الالكتروني؟ أو تسجيل المستخدم مباشرة عن طريق رقم الهاتف
  11. أولا المكونات البرمجية: say هي فقط لطباعة رسالة نصية ask هي للطلب من المستخدم أن يقوم بإدخال بيانات set هي خاصة بإسناد قيمة المعامل الثاني للمعامل الأول أي تماما مثل ask => ... answer = 5 set x to answer => x = 5 answer هي القيمة التي تمت قرائتها من المستخدم بعد الرد على السؤال عملية التحويل بين العملات: pound هي عملة انكلترا أي الجنية الاسترليني نفسها.. euro عملة الاتحاد الأوروبي اليورو exchange rate نعلم أن ليس لكل العملات نفس القيمة، ويمكن تحويل الرصيد من عملة لأخرى في البنك من خلال نسبة معينة وهي "سعر الصرف" يمكنك كتابة اسم العملتين في غوغل وسيعرض قيمة لسعر التصريف.. مثلا كل 1 يورو يساوي 0.85 جنيه استرليني أما بالعكس تكون النسبة مقلوبة أي مثل جنيه ليورو وللتحويل، نكتب عملية ضرب عدد اليورورهات التي لدينا بقيمة تصريف اليورو للجنية والناتج هو عدد الجنيهات التي يعطينا إياها المصرف وهكذا.. euro * euro_to_pound = 15 * 0.85 = 12.80
  12. في الإصدار الحديث من ++C من 11 وأحدث تم إضافة Array وأصبح يمكن تمرير وإرجاع المصفوفات مثل أي متغيرات أخرى.. وهي معرفة ضمن المكتبة القياسة std::array ويتم تضمينها من خلال الملف الرأسي: #include <array> ثم مثال للاستخدام: std::array<int, 3> a = {1, 2, 3}; // مصفوفة رقمية std::array<std::string, 2> s = { std::string("a"), "b" }; // مصفوفة محرفية دالة تعيد مصفوفة std::array #include <array> using namespace std; //تعريف دالة من نمط مصفوفة رقمية وبطول 10 array<int, 10> fill_arr(int arr[]) // دالة تقوم بنفس محتوى مصفوفة لأخرى { array<int, 10> arr2; // تعريف مصفوفة جديدة for(int i=0; i<10; ++i) { arr2[i]=arr[i]*2; // نسخ القيمع ضربها ب 2 } return arr2; // إعادة مصفوفة } في حال تعاملك مع مصفوفة عادية، عليك تمرير طولها (عدد عناصرها كوسيط ثاني لأي دالة، لأن تمرير المؤشر وحده لايكفي لتحديد من هم عناصر المصفوفة ) ولأن ليس لها رمز نهاية مثل المصفوفة المحرفية '0/' لطباعة مصفوفة: for(const auto& x: array) std::cout << x << ' '; لترتيب مصفوفة: // نستخدم مؤشر البداية والنهاية std::sort(a.begin(), a.end()); يوجد أيضا النمط std::vector يمكن استخدامه كمصفوفة: std::vector<int> fill_arr( std::vector<int> arr ) { // أي شيفرة تعدل المصفوفة الممررة return arr; } الفروقات: Array لها حجم ثابت (عدد عناصر) Vector مصفوفة ديناميكية أو ثايتة ويمكن إضافة عناصر لها وتغيير حجمها أو الحذف منها أيضا. الواجهة البرمجية ل Verctor هي list interface أي تعامل مثل قائمة أما Array تعامل مثل نمط بيانات primitive data type interface
  13. الرسالة التي ترسلها فايربيز يمكن تخصيصها، الكود يتم تشكيله لكل طلبية مختلفة، أما رمز تهميش مفتاح التطبيق تحسبه أنت مرة واحدة و تضيفه لقالب رسالة sms افتح اعدادات فايربيز ومن ثم قالب الرسالة.. app hash code يتم تشكيله باستخدام سطر الأوامر كما في الرابط المرفق من التوثيق
  14. يمكن استخدام الحزمة sms_autofill لقراءة رسائل SMS بشكل تلقائي واستخدامها بالشكل: await SmsAutoFill().listenForCode; طبعا يوجد widget خاصة PinFieldAutoFill : PinFieldAutoFill( decoration: // التنسيق, currentCode: // كود التحقق الحالي onCodeSubmitted: //الكود المعاد إرساله onCodeChanged: //code callback عند codeLength: // طول الكود ), الرابط: pub.dev/packages/sms_autofill لن تحتاج لهذه الحزمة في IOS الوصول ل SMS لايحتاج صلاحيات بعض القيود لتحقيق عملية التحقق : developers.google.com/identity/sms-retriever/verify القيود: طول الرسالة ليس أكثر من 140 bytes تحوي على كود فريد لمرة واحدة كمثال: Your ExampleApp code is: 123ABC78 تقوم بإرفاق 11-character hash string للتعريف بتطبيقك مثل FA+9qCX9VSu الرابط السابق يحوي جميع التفاصيل حزمة احتياطية: sms_otp_auto_verify sms_maintained otp_autofill
  15. إن حفظ رقم الهاتف في قاعدة البيانات يمنع تكراره لمستخدم آخر إن كان هذا الأمر يهمك. ضمن دالة verified Success قم بتغيير الشيفرة المسؤولة عن إعادة تسجيل الدخول التلقائي التي ستتم مجدداً عن طريق الرقم، أي فقط دع جزء حفظ الرقم في قاعدة البيانات، وللتحقق لاحقاً من تسجيل هذا المستخدم وأنه قد عمل تحقق لرقم الهاتف، حينها يتوجب عليك فقط التأكد هل هذا المستخدم لديه رقم هاتف أم لا (متحقق منه أم لا) إن كان لديه رقم هاتف فهوم قد عمل تحقق وإلا لا يتحقق من رقمه. أي بالمختصر لا تقم باستدعاء أي شيفرة مسؤولة عن تسجيل الدخول لأنها تؤدي لتشكيل id جديد وأنت لاتحتاجه أعتقد لديك بعد التحقق من رقم الهاتف، يتم تسجيل الخروج من الحساب الحالي، وتسجيل الدخول بحساب جديد للرقم المتحقق منه verificationCompleted: verifiedSuccess, verifiedSuccess هي الدالة التي تستدعيها عند اكتمال التحقق لأن الشيفرة التابعة لها تقوم بتسجيل الدخول و دالة تسجيل الدخول ستكون بهذا الشكل / الاسم signInWithPhoneAuthCredential(credential); FirebaseAuth auth = FirebaseAuth.instance; await auth.verifyPhoneNumber( phoneNumber: '+44 7123 123 456', verificationCompleted: (PhoneAuthCredential credential) async { await auth.signInWithCredential(credential); // لانرديها }, ); توثيق: firebase.flutter.dev/docs/auth/phone
  16. ماذا تقصد من التأكد من مشاركة الرابط؟ ربما عليك إضافة معرف خاص للمشاركة، و لكن لن تعرف إذا قام المستخدم فعليا بإرسال الرسالة إلى واتس أب، لذلك فتح الرابط، الذي تم إرساله، يرسل طلبية لقاعدة البيانات وأنت تعلم عندها أنه تم النقر عليه، ومن خلال reference coed تعلم من هو المرسل .. user_id المرسل وهذا يتطلب جدول خاص بقاعدة البيانات.. وإن قام نفس المستخدم بعدة مشاركات يمكن إضافة حقل آخر لقاعدة البيانات وهو رقم المشاركة وهكذا .. link/shared/user_id/share_id مثلا..
  17. إن سؤالك عام في مجال SEO سأضع لك بعض مقالات أكاديمية حسوب، أرجو قرائتها وفهمها التعريف العام: الأساسيات: عناصر تؤثر في عمل SEO: أدوات تساعد في العمل: إيجاد الكلمات المفتاحية: ثم مجالات متقدمة:
  18. عليك التأكد من تفعيل extension=php_curl.dll في الاستضافة لديك، يمكنك وضع ملف PHP بسيط، كالتالي ليعرض معلومات المخدم، ضعه في public_html وافتحه من المتصفح ليعرض لك البيانات <?php // Show all information, defaults to INFO_ALL phpinfo(); ?> ثم تأكد من تفعيل الخاصية curl ، للتفعيل من لوحة التحكم: 1. تسجيل الدخول WHM as the 'root' user. 2. في حقل البحث اكتب easy. 3. انقر على EasyApache (Apache Update). 4. اضغط على Start customising based on the profile. 5. اترك الافتراضي واضغط على Next Step. version of Apache 6. اترك الافتراضي واضغط على Next Step. version of PHP 7. اترك الافتراضي واضغط على Next Step. additional options within the "Short Options List" 8. انقر على Exhaustive Options List. 9. انقر على the curl options, ثم Save and build. يمكن تثبيت curl من خلال terminal: To install cURL on command line: CentOS Linux server: yum install curl Ubuntu/Debian Linux Server: apt-get install php5-curl # حسب إصدار PHP إن بقيت المشكلة، يمكن تغيير APP_ENV: local, testing and production إلغاء APP_DEBUG أي false تغيير APP_ENV إلى testing أو production
  19. إن دورة تطوير تطبيقات الويب باستخدام لغة PHP تحوي جميع الخصائص التي ذكرتها، فهي تعلم التالي: أساسيات PHP بعد الاشتراك يمكنك متابعة أساسيات HTML - CSS من دورات أخرى لأن المسارات الأولى ستكون متاحة لك مجاناً اتصال PHP مع قواعد البيانات وإدارتها تصميم واجهات الموقع وعرض معلومات الموقع فيها تعليم Laravel وهو إطار عمل PHP قوي ومشهور ثم العديد من التطبيقات على كل ماتم ذكره، أي تعلم كل من Front End و Back End ,وبالطبع يوجد حماية للمستخدمين باستخدام الأساليب المتاحة والمكتبات وعمليات المصادقة وتشفير كلمات السر وغيرهم.. ملاحظة، لا يتم التركيز بشكل كبير في هذه الدورة على تصميم المواقع، ولكن جميع التصميمات جميلة و بسيطة ومناسبة لأي مشروع، وبالرغم من ذلك يتم استخدام Bootstrap وغيره من أدوات التصميم Front End ويتم شرح كل شيئ تحتاجه يمكنك طرح أي استفساروسيتابع معك المدربين
  20. بما أنك كتبت التعريف الرياضي للمتوسط الحسابي بطريقة صحيحة، لماذا لم تحاول تجريب تطبيقه كشيفرة برمجية؟ يمكننت جمع الأعداد عن طريق المعامل + والقسمة عن طريق / . public float average() { float sum = (float) input1+input2+input3+input4+input5; return sum / 5.0; } ملاحظة، نحن بحاجة لعملية تحويل ناتج المجموع ل float لأن كل الأعداد int لذلك نستعمل القصر (float) الذي يغير نمط البيانات ونقسم على 5.0 ، عبارة return تعيد ناتج قسمة المجموع على عدد الأعدادا وهو 5
  21. ملاحظة عامة، عند استخدام media query تأكد من ترتيب أبعاد الصفحة بشكل صحيح، لأنه كما تعلم آخر تنسيق ل CSS سوف يتم تطبيقه، فإذا كان لديك تنسيقين تريد تطبيقهما على البعدين (500 وأقل) و (600 و أقل) نضع 600 قبل 500 لأنها تشملها هكذا 550 سيطبق مع 600 أما 450 مع 500 .. @media only screen and (max-width: 600px){ body{ background:green;} } @media only screen and (max-width: 500px){ body{ background:red;} } لو وضعناهم بالعكس، 500 ثم 600 لتم تنفيذ تنسيق 600 وأقل على 450 وتخرب التنسيق max-width الكبير أولا min-width الصغير أولا مقالة مفيدة من مقالات أكاديمية حسوب:
  22. يمكنك اتباع هذا الشرح لاستعادة كلمة المرور: استعادة كلمة المرور وإن لم تنجح، حاول التواصل مع الدعم الفني لاسترجاع الحساب: مركز مساعدة حسوب
  23. ماهو القسم الذي لم تستطع الدخول إليه؟ يوجد في الأكاديمية قسم عام يمكن لأي شخص الدخول إليه و تصفحه، ويوجد أجزاء خاصة تتطلب صلاحيات حسب الشخص صاحب الحساب، أي كل حساب لديه صلاحيات مثل أي موقع آخر، وبما القسم الذي تحاول فتحه يتطلب صلاحيات معينة للدخول إليه، ويمكن التسجيل عن طريق أي بريد الكتروني وليس حصرا خدمة غوغل gmail.
  24. يمكن استخدام الصنف Class ArrayUtils والدالة indexOf والتي تعيد دليل العنصر int[] arr = new int{4, 1, 7, 6, 34}; int inde_2 = ArrayUtils.indexOf(arr, 2); لاحظ أن الدالة تأخذ المصفوفة كوسيط أول ثم قيمة العنصر الذي نبحث عنه كوسيط ثاني.. وتعيد -1 في حال لم يكن موجود، if ( inde_2 != -1 ) { System.out.println("number 2 is here") }else { System.out.println("not here") } إن كنت تريد عمل بحث سريع ضمن مصفوفة عددية كبيرة الحجم مثلا، أي لعدد كبير من العناصر وربما عدد كبير من الاستعلامات (عمليات البحث) يمكن استخدام دالة البحث الثنائي Arrays.sort(array); Arrays.binarySearch(array, value); ولكن تأكد من ترتريب المصفوفة قبل عمل البحث الثنائي. ولكي تستخدم طريقة بسيطة، بحث باستخدام الحلقة يمكن عمل التالي: public int find(int[] array, int value) { for(int i=0; i<array.length; i++) if(array[i] == value) return i; return -1; } هذه الدالة تكافئ عمل الدالة indexOf، إن كنت مهتماً فقط بالتحقق من وجد عنصر أو عدمه، حوّل الدالة لدالة منطقية boolean تعيد true بدل return i و fasle افتراضيا.
×
×
  • أضف...