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

Lujain

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

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

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

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

    27

إجابات الأسئلة

  1. إجابة Lujain سؤال في مشكلة في تشغيل اول تطبيق كانت الإجابة المقبولة   
    تأكد من أن HAXM installer مثبّت في الـ SDK Manager، بعد تحميله وتشغيله ستجده في المسار التالي:
    {SDK_FOLDER}\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm.exe

    ملحوظة: في آندرويد استديو تم تغيير الأمر "intelhaxm.exe" إلى "intelhaxm-android.exe".
    في حال تلقيت خطأ أثناء عملية التثبيت قم بتعطيل Hyper-V من خصائص الويندوز أو عن طريق تنفيذ الأمر التالي:
    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
    بالتوفيق
  2. إجابة Lujain سؤال في ما الذي تعنيه Performance Envelope of HDFS؟ كانت الإجابة المقبولة   
    يُشير مصطلح performance envelope أو flight envelope بشكل عام إلى قدرات التصميم من حيث السرعة، عامل الحمولة أو الإرتفاع، يُطبّق هذا المصطلح على الكثير من المجالات مثل قدرة طائرة على المناورة عندما ترتفع سرعة الطائرة بشكل كبير لتتجاوز حد معيّن هنا يطلق مصطلح أن الطائرة تطير خارج المغلف "outside the envelope" وهو الحد الخطر الذي لا يجب تجاوزه.
    من هنا يمكننا استنتاج أن لأي تطبيق مهما كان يتمتع بأداء ممتاز لابد أن يكون له حد أعلى يقف عنده ولا يمكن تجاوزه لأنه سيعود بنتائج سيئة. وكما يقول المثل "ما زاد عن حده انقلب الى ضده".
    لنسقط الفكرة هنا ونأخذ لمحة بسيطة عن مفهوم نظام HDFS وهي اختصار لـ Hadoop Distributed File System وتعني نظام الملفات الموزّع وهو نظام محمول وقابل للتطوير مكتوب بلغة جافا.
    يقوم نظام HDFS بتوزيع البيانات المخزّنة عبر الخوادم وتخزين نسخ متعددة من البيانات على خوادم مختلفة لضمان عدم ضياع أي من البيانات في حال فشل أحد الخوادم (يوفّر نظام ملفات Hadoop  قدرات توافر عالية).
    يعتمد أداء تطبيقات Hadoop على عدّة عوامل بما في ذلك التكوين الذي قمت بعمله، مواصفات الحاسب، تكوين الذاكرة وإعدادات JVM (Java Virtual Machine). كذلك لا يحتسب الوقت اللازم لبدء تشغيل JVM من ضمن سرعة الأداء.
    وبما أن Hadoop يوفر مجموعة من الخيارات لضبط الأداء Performance فيما يتعلق بوحدة المعالجة المركزية، القرص الصلب والذاكرة فإنه يتم النظر إلى تحسين استخدام هذه الموارد وخاصة الذاكرة والقرص الصلب لرفع مستوى أداء التطبيق دون أن يتجاوز عتبة "المغلف".
     
  3. إجابة Lujain سؤال في كيف أشفّر كلمة المرور في aspx؟ كانت الإجابة المقبولة   
    توفر تقنية MD5 إمكانية تشفير النصوص بطريقة لا يمكن فيها الرجوع للنص الأصلي بحيث تتم المقارنة بين النصوص بعد التشفير ولا يتم التعامل مع النصوص بصيغتها الأصلية.
    يتم تشفير النصوص باستخدام الصف MD5 في C# وإنشاء غرض منه من النوع MD5CryptoServiceProvider:
    كما في المثال التالي:
    MD5 md5 = new MD5CryptoServiceProvider(); ومن ثم استدعاء الدالة CopmuteHash وتمرير معامل Argument وهو النص المراد تشفيره باستخدام ASCIIEncoding.ASCII.GetBytes(text).
    //compute hash from the bytes of text md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text)); بعد ذلك قم بأخذ القيمة من الغرض md5 عن طريق الدالة Hash حيث أن القيمة المرتجعة هي عبارة مصفوفة من byte.
    byte[] result = md5.Hash; في النهاية أنشئ StringBuilder واعمل append للنتيجة كما في المثال التالي:
    public static string MD5Hash(string text) { MD5 md5 = new MD5CryptoServiceProvider(); //compute hash from the bytes of text md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text)); //get hash result after compute it byte[] result = md5.Hash; StringBuilder strBuilder = new StringBuilder(); for (int i = 0; i < result.Length; i++) { //change it into 2 hexadecimal digits //for each byte strBuilder.Append(result[i].ToString("x2")); } return strBuilder.ToString(); } تشفير نصوص باستخدام MD5
  4. إجابة Lujain سؤال في كيف أشغل فيديو من اليوتيوب في Windows Phone App كانت الإجابة المقبولة   
    أتذكّر أنني قمت بعمل تطبيق استخدمت فيه media element لتشغيل رابط فيديو من اليوتيوب جرّب الطريقة التالية:
    Youtube Video Sample - Windows Phone 8
  5. إجابة Lujain سؤال في هل يوجد كورس يشرح تفاصيل amazon ec2 وتقسيم السيرفرات؟ كانت الإجابة المقبولة   
    نعم يمكنك بعد إنشاء النّسخ instances أن تقوم بتشغيلها على التوازي in parallel ويمكن عمل ذلك إما باستخدام amazon command line tools كما في المثال التالي:
    aws ec2 run-instances help --count (string) Number of instances to launch. If a single number is provided, it is assumed to be the minimum to launch (defaults to 1). If a range is provided in the form min:max then the first number is interpreted as the minimum number of instances to launch and the second is inter- preted as the maximum number of instances to launch. او استخدام واجهة سطر الأوامر  CLI:
    ec2-run-instances -n, --instance-count MIN[-MAX] The number of instances to attempt to launch. May be specified as a single integer or as a range (min-max). This specifies the minimum and maximum number of instances to attempt to launch. If a single integer is specified min and max are both set to that value. عندما تبدأ العمل على Amazon Ec2 ستجد مجموعة واسعة من الخوادم الافتراضيّة أو ما تسمى بـ instances. وتشمل أنواع الخوادم الافتراضيّة instances مجموعات مختلفة من وحدة المعالجة المركزية والذّاكرة والتّخزين، والقدرة على التّواصل وتمنحك المرونة في اختيار المزيج المناسب من الموارد للتطبيقات الخاصة بك.
    الرّوابط أدناه تشرح طريقة إنشاء النّسخ وتحديد الموارد المناسبة لكل نسخة.
    كيف أنشئ EC2 instance في AWS؟
    Ec2 Instances and AMIs
    طبعًا يوجد مجموعة من الإعدادات عليك أن تقوم بتهيئتها قبل البدء بالعمل على Amazon EC2 منها إنشاء مجموعات أمان Security Group و IAM User وإنشاء سحابة افتراضيّة VPC تجدها في الروابط أدناه:
    ما هو IAM user في AWS ولم يُستخدم؟
    كيف أنشئ IAM User في AWS؟
    كيف أنشئ Key Pair في Amazon ECS؟
    كيف أنشئ سحابة خاصة افتراضية في AWS؟
    كيف أنشئ مجموعات أمان لـ container instances في ECS؟
    Setting Up with Amazon EC2
    أخيرًا الرابط التالي يشرح طريقة إنشاء حساب على Amazon Services حيث تعطيك أمازون وصول إلى خدماتها واستخدامها بشكل مجاني لمدة عام واحد:
    كيف أنشئ حساب AWS Account على أمازون؟
     
    بالتوفيق
  6. إجابة Lujain سؤال في مشكلة في الـWCF: خطأ في التعامل مع Web Forms ASP كانت الإجابة المقبولة   
    على الرّحب والسعة
    قبل أن أجيبك هل يمكنك كتابة محتوى ملف الـ WCF Service الذي قت بإنشاءه؟
    الرابطين أدناه يوضّحان بالتفصيل طريقة إنشاء WCF Service والتعامل معها:
    A Simple Example of WCF Service
    http://www.codeproject.com/Tips/468354/WCF-Example-for-Inserting-Deleting-and-Displaying
    سأوضّح لك -على سبيل المثال لا الحصر- أن أي خدمة ويب Web Service أو WCF Service في الموقع يتم استخدامها إما لتجنب عملية الـ Submit على الخادوم عند جلب بيانات من قاعدة البيانات وفي هذه الحالة نستخدم الـ Web Service أو لإرسال رسائل غير متزامنة من endpoint Service لأخرى باستخدام WCF Service.
    يتم التّعامل مع الـ Web Service عن طريق ajax أي أنه يتم إنشاء Web Method في ملف الويب سيرفيس ويتم استدعاء هذه الدالة باستخدام ajax.
    [WebService] public class Service : System.Web.Services.WebService { [WebMethod] public string Test(string strMsg) { return strMsg; } } في حين تستخدم WCF Service الـ DataContractAttribute وDataMemeberAttribute
    [DataContract] public class Item { [DataMember] public string ItemID; [DataMember] public decimal ItemQuantity; [DataMember] public decimal ItemPrice; } ولأوضّح لك سريعًا أحد فوائد الويب سيرفيس ومتى يتم استخدامها، تخيل أنه لديك قائمة منسدلة وتريد أن تجلب بيانات من قاعدة البيانات اعتمادًا على القيمة التي يختارها المستخدم من الخيارات الموجودة في القائمة -مثلًا- قائمة منسدلة تحوي على خيارات ألوان وقام المستخدم باختيار اللون الأزرق فعليك جلب كل المنتجات ذات اللون الأزرق من قاعدة البيانات ولو تم ذلك بدون استخدام الويب سيرفيس ستقوم الصفحة بعملية Submit على الخادوم وسيعاد تحميل الصفحة من جديد مما يزيد العبء على الخادوم وبالتالي تراجع الأداء Performance وكذلك قد تظهر بعض المشاكل التي لا تتوقعها.
    بالنسبة للبرنامج الخاص بك وهو حساب مساحة المربع والمستطيل فلا يوجد داعي لاستخدام الويب سيرفيس ولا حتى الذهاب للخادوم يمكنك عمل التطبيق بشكل كامل عن طريق الجافاسكربت ولكن يمكنك بالطبع استخدام الويب سيرفيس ولكن في هذا النوع من التطبيقات استخدامها لن يخدمك بشيء.
    بالتوفيق
  7. إجابة Lujain سؤال في هل تصلح بايثون لإستخدامها في مجال التقانة أو القريب منها المعلوماتية الحيوية كانت الإجابة المقبولة   
    نعم بالتأكيد يمكن استخدام Python في تطبيقات المعلوماتية الحيوية وقد تكون أفضل لغة يمكن استخدامها في هذا المجال، كذلك تُستخدم لغة R و Perl في هذا المجال.
    ليس لدي معلومات تفصيلية عن التقانة أو المعلوماتية الحيوية ولكن قد تفيدك الروابط أدناه.
    Which Are The Best Programming Languages For A Bioinformatician?
    Python For Bioinformatics and Your First Python for Bioinformatics Program
    Python for Bioinformatics - Python As A Calculator
  8. إجابة Lujain سؤال في منع Cross site scripting من الحدوث في الموقع؟ كانت الإجابة المقبولة   
    هل يمكنك كتابة الشيفرة الخاصة بالـ Query string؟ حتى أستطيع مساعدتك
    أحد الحلول أن تنشئ تابع يقوم بعمل فلترة للقيم الخارجية الموجودة في رابط الصفحة والتي يتم تخزينها في قاعدة البيانات وتقوم باستدعاء هذا التابع عند كل عملية استعلام.
    طريقة الفلترة تعتمد على إيجاد جميع القيم (النصوص) التي يمكن كتابتها لعمل الإختراق من نوع Reflected Xss بما فيها أسماء الجداول في قاعدة البيانات الخاصة بالموقع وجمل الاستعلام وشروطها.
     فيما يلي تابع يُرجع قائمة List من نوع String تحوي جميع القيم المحتملة لعمل Reflected Xss:
    private static List<string> blackList() { var result = new List<string>() { "where", "Step2_Process", "Step2_ProcessRoomRate", "Step2_ProcessRoom", "CurrencyRate", "TopDist", "UAction", "H_Book", "H_Amenity", "M_Hotel", "Agent", "H_Description", "AgentMove", "M_Room", "H_Destination", "H_Hotel", "Nationality", "M_DateRange", "Msg", "TempResult", "FROM master", "select", "select *", "drop", "update", "insert into", "delete from", "where", "/'", "'", "--", "1 OR 1=1", "1' OR '1'='1", "1'1", "1 EXEC SP_ (or EXEC XP_)", "1 AND 1=1", "1' AND 1=(SELECT COUNT(*) FROM", "1 AND USER_NAME() = 'dbo'", "\'; DESC", "1\'1", "@@", "SELECT @@version", "SELECT user", "SELECT system_user", "northwind", "model", "msdb", "tempdb", "pubs", "EXEC", " sp_", "SELECT HOST_NAME()", "CREATE TABLE", "BULK INSERT", "DROP TABLE", "xp_cmdshell", "sysobjects", "dbo", "where", "select" }; return result; } بعد ذلك كتابة التابع  FilterText والذي يستخدم التابع blackList لفحص النص إن كان يحوي أي من تلك القيم كما في المثال التالي:
    public static String FiltterText(String text) { String tempText = text; bool isOk = true; foreach (string item in blackList()) { if (text.ToLower().Contains(item.ToLower())) { int index = text.ToLower().IndexOf(item.ToLower()); text = text.Remove(index, item.Length); isOk = false; } } if (!isOk) { RSecurity.logAction("SQL Fillter", "HZTR-000001", HttpContext.Current.Session[SessionStatic.UserName] + " try to hack with this sql: (" + tempText.Replace("'", "''") + ")", "", "", "", HttpContext.Current.Request.Url.AbsolutePath, RSecurity.LogAction_danger_activity, RSecurity.LogType_SQLHaker); } return text.Trim(); } أرجو أن أكون قد وُفقت في تقديم الحل.
    بالتوفيق
  9. إجابة Lujain سؤال في كيف أبدأ تعلّم أتعلم الـMVC في منصة الـ.NET؟ كانت الإجابة المقبولة   
    بالنسبة لتعلّم الـ MVC أريد ان أقول لك قبل كل شي أن MVC هو عبارة عن نمط أي ((طريقة برمجة)). لذا إن كنت لا تجد نفسك متمكنًا بنسبة 75% على الأقل من لغة #C لا أنصحك بالبدء بالـ MVC قبل اتقان لغة البرمجة وخاصة مفهوم البرمجة غرضية التوجه OOP. و عليك أن تكون على معرفة كافية بالتعامل مع لغات برمجة جانب العميل Client Side وهي Java Script و Ajax.
    كذلك اللّغة الانكليزية الجيدة ستساعدك كثيرًا.  فيما يلي مجموعة من الرّوابط من موقع Tutorial Point وروابط لمساقات Courses من موقع Udemy:
    C# Tutorial MVC Framework Tutorial Javascript Tutorial AJAX Tutorial موقع W3schools رائع
    Udemy C# Courses
    Udemy ASP.Net MVC Development
    النّصيحة الأخيرة: ركّز على منصّة عمل واحدة ولغة برمجة معيّنة وتعلمها حتى الاتقان. مثلًا في مجال بناء تطبيقات الويب اختر  منصّة عمل محدّدة وابدأ بها.
    قد تفيدك هذه المشاركة أيضًا.
    بالتوفيق
  10. إجابة Lujain سؤال في أريد شرح كود جافا سكربت للتأكد من RadioButtons كانت الإجابة المقبولة   
    الأمر بسيط، يملك العنصر Radio Button خاصيّة Checked والتي تُحدّد فيما إذا كان العنصر قد تم اختياره أم لا. في حال وضعت الخاصية Checked ="checked" فسيتم تحديد الـ Radio Button كما في المثال التالي:
    <input type="radio" name="gender" value="Male" checked="checked" /> لذا في الجافا سكربت عندما تريد التحقق من أن العنصر  Radio Button قد تم تحديده أم لا فستستخدم الخاصيّة checked. 
    الآن في التابع registration تم تعريف متغيرين:
    var rbnBtns, isChecked المتغير الأول rbnBtns تم استخدامه لأخذ قيمة اسم الـ div و هو Gender الذي يحوي على الـزرين Radio Buttons:
    rbnBtns = document.getElementsByName("Gender"); يمكن تبسيط هذه الخطوة واستخدام document.getElementsById لأخذ معرّف الـ div بدلًا من اسمه ليصبح على الشكل التالي:
    rbnBtns = document.getElementsById("genRbns"); والمتغير الثاني isChecked لاستخدامه في إسناد قيمة الخاصية checked:
    isChecked = false; إذًا لدينا div يحوي على زرين ويجب على المستخدم أن يقوم باختيار أحد الزرين فكيف يمكن فحص كل زر والتأكد من أنه اختار أحدهما أم لا؟
    الجواب بإنشاء حلقة تكرار وتطبيقها على الـ div باعتبار أن الزرين هما عنصرين ضمن الـ div فيمكن الوصول إليهما عن طريف فهرس index وهو المتغير i ضمن حلقة التكرار:
    for (var i = 0; i < rbnBtns.length; i++) {..... بما أن الـ div يحوي على عنصرين فسيأخذ المتغير i قيمة 0 و قيمة 1 للتوضيح:
    rbnBtns[0] // first radio button rbnBtns[1] // second radio button ثم عمل شرط if لمعرفة هل تم اختيار الزر أم لا عن طريق الخاصية checked  وإسناد قيمة true للمتغير isChecked:
    if (rbnBtns[i].checked) { isChecked = true; break; } أخيرًا إظهار الرسائل المناسبة للمستخدم في حال كانت قيمة المتغير isChecked = true فهذا يعني أن المستخدم قد اختار أحد الزرين وإلا فستكون قيمة المتغير isChecked = false وستظهر له رسالة تنبيه بأن عليه اختيار أحد الزرين.
  11. إجابة Lujain سؤال في ما هو الطريق الصحيح لإتقان الحوسبة السحابية (Cloud Computing) كانت الإجابة المقبولة   
    الحوسبة السحابية ليست إلا مرآة عن الحوسبة التقليدية فبنيتها ومكوّناتها لا تختلف عن الحوسبة التقليدية إلا بطريقة عمل هذه المكونات والبيئة التي تحويها.
    فمثلًا توجد الخوادم Servers في الحوسبة السحابية والحوسبة التقليدية إلا أن الخوادم التقليدية تختلف عن الخوادم السحابية بطريقة عملها وأداءها للمهام ما الفرق بين Cloud Servers و Physical Servers وما هي الوظائف التي يقوم بها كل نوع؟.
    بالنسبة لسؤالك الثاني عن تضمين الذكاء الاصطناعي في الحوسبة السحابية فهذا ممكن بالطبع كما الحوسبة التقليدية فمثلًا لغة prolog المستخدمة في برمجة التطبيقات المعتمدة على ذكاء الحاسوب والتي تقوم بإنشاء مجموعة من الحقائق Facts -التي يعتمد عليها الحاسوب ليقوم بالسلوك المناسب- يمكن استخدامها وتطبيقها أيضًا في الحوسبة السحابية.
    -ما هي لغات البرمجة المطلوب تعلمها؟
    أي لغة برمجة مستخدمة في الحوسبة التقليدية يمكن استخدامها في الحوسبة السحابية فكما قلت لك ليست الحوسبة السحابية إلا نسخة عن الحوسبة التقليدية ولكن بمنظور مختلف. ما هو Cloud Hosting؟
    -هل هنالك مستوى معين من الخبرة لكي أدخل هذا المجال؟
    ليس موضوع وجود مستوى معيّن من الخبرة بقدر أن يكون لديك رؤية واضحة وفهم عميق عن طريقة عمل الحوسبة السحابية وما هي مكوّناتها والخدمات التي تقدّمها وكيف تُستخدم. راجع  الروابط أدناه:
    ماذا تعني خدمة SaaS في الحوسبة السحابية؟
    ما هو Cloud PaaS Computing؟
    ما هو نموذج خدمة IaaS في الحوسبة السحابية Cloud Computing؟
    -هل تنصحوني بدخول هذا المجال كمجال مستقبلي لـ50 أو 100 سنة قادمة؟
    نعم بالتأكيد فمستقبل الحوسبة السحابية واسع والعالم يتجه نحوه لما فيه من سرعة وسهولة في كثير من المجالات تفوق الحوسبة التقليدية.
    - آخيراً وأعتبره أهم سؤال، ما علاقة هذا المجال بإنترنت الأشياء (IOT)؟
    نعم فلا وجود للحوسبة السحابية بدون وجود إنترنت. في الرابط أدناه فيديو رائع شاهدته منذ فترة يشرح التغيير المتوقع عام 2020 في عالم الانترنت في حال تعديل شبكة الانترنت واعتماد انترنت الأشياء IOT.
    ما هو التغيير المتوقع عام 2020 في عالم الانترنت ( I O T )
    بالتوفيق
  12. إجابة Lujain سؤال في كيف أمرّر قيمة متغير جافا سكربت إلى MVC Razor؟ كانت الإجابة المقبولة   
    لا يمكنك تمرير قيمة جافاسكربت إلى Razor مباشرة والسبب أن متغيرات Razor هي متغيرات Server Side ولا تكون موجودة بعد إرسال الصفحة إلى Client Side.
    فعند إرسال طلب من الـ View إلى الخادوم فإنه يقوم بإنشاء الـ View مع HTML، CSS و Javascript ولا وجود لشيفرات #C أي أن الصفحة View تُترجم إلى لغات جانب العميل Client Side فقط.
    بالرّغم من أن شيفرات جافاسكربت تبقى موجودة في حال بقاء الـ View على الخادوم ولكن سيتم تنفيذها فقط من قبل المتصفح. وهذا هو السبب في أنه يمكنك استخدام متغيرات Razor في HTML و Javascript ولكن ليس العكس.
    بالنسبة لسؤالك يمكنك حل هذه المشكلة بتعريف عنصر HiddenFor ضمن HTML وإعطاءه معرّف Id ومن ثم استخدام الدالة ()val. لتمرير قيمة countryId كما في المثال التالي:
    <div class="field"> @Html.HiddenFor(model => model.Agent.CountryId, new { @id = "countryIdValue" }) </div> في السكربت اكتب:
    <script> function getSelectedValue(countryId) { $("#countryIdValue").val(countryId); } </script> بالتوفيق
  13. إجابة Lujain سؤال في ما معنى هذه الأسطر البرمجية في تطبيق php و mysql؟ كانت الإجابة المقبولة   
    تُستخدم هذه التعليمات لإدراج البيانات إلى قاعدة البيانات في تطبيق PHP-MySQL  في خدمات تطبيقات آجر Azure App Service.
    تشبه العلامة <- علامة النقطة . والتي تفيد استدعاء التابع أو الدالة (يمكن رؤيتها أيضًا أثناء التعامل مع المؤشرات Pointers في سي بلس بلس).
    يوضّح المثال التالي طريقة إنشاء اتصال بقاعدة البيانات وإدراج البيانات في تطبيق PHP-MySQL في Azure App Service:
    <?php // DB connection info //TODO: Update the values for $host, $user, $pwd, and $db //using the values you retrieved earlier from the Azure Portal. $host = "value of Data Source"; $user = "value of User Id"; $pwd = "value of Password"; $db = "value of Database"; // Connect to database. try { $conn = new PDO( "mysql:host=$host;dbname=$db", $user, $pwd); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); } catch(Exception $e){ die(var_dump($e)); } // Insert registration info if(!empty($_POST)) { try { $name = $_POST['name']; $email = $_POST['email']; $date = date("Y-m-d"); // Insert data $sql_insert = "INSERT INTO registration_tbl (name, email, date) VALUES (?,?,?)"; $stmt = $conn->prepare($sql_insert); $stmt->bindValue(1, $name); $stmt->bindValue(2, $email); $stmt->bindValue(3, $date); $stmt->execute(); } catch(Exception $e) { die(var_dump($e)); } echo "<h3>Your're registered!</h3>"; } // Retrieve data $sql_select = "SELECT * FROM registration_tbl"; $stmt = $conn->query($sql_select); $registrants = $stmt->fetchAll(); if(count($registrants) > 0) { echo "<h2>People who are registered:</h2>"; echo "<table>"; echo "<tr><th>Name</th>"; echo "<th>Email</th>"; echo "<th>Date</th></tr>"; foreach($registrants as $registrant) { echo "<tr><td>".$registrant['name']."</td>"; echo "<td>".$registrant['email']."</td>"; echo "<td>".$registrant['date']."</td></tr>"; } echo "</table>"; } else { echo "<h3>No one is currently registered.</h3>"; } ?> يمكنك قراءة المزيد عن كيفية إنشاء تطبيق PHP-MySQL  في خدمات تطبيقات آجر من هنا
  14. إجابة Lujain سؤال في كيف أعمل إرفاق لصورة بغرض إرسالها لبريد الكتروني (ASP.NET with C#) كانت الإجابة المقبولة   
    مسار الصورة موجود لديك قمتَ بجلبه من الاستعلام
    SqlCommand cmd = new SqlCommand("Select * from Cards where Card_ID ='" + txt_id.Text + "'", conn);حاول طباعة محتوى SelectedImg.ImageUrl وجرّب إنشاء Label  أو HiddenField وإسناد مسار الصورة لها :
    while(dr.Read()) { SelectedImg.ImageUrl = dr["Card_Path"].ToString(); lbl.Text = dr["Card_Path"].toString(); }ثم استبدل SelectedImg.ImageUrl بـ lbl.Text
    mail.Attachments.Add(new Attachment(lbl.Text));حل آخر جرّب إرسال مسار الصورة Card_Path مع معرّف الصورة id ضمن رابط الصفحة الثانية ثم قم باسترجاعه وتمريره لـ mail.Attachments.Add():
    mail.Attachments.Add(new Attachment(Request.QueryString["CardPath"].ToString()));  
    ملاحظة: استخدم الإشارة @ في بداية كتابتك للسلسلة النصّية String ليسهّل عليك كتابة الجمل واستعلامات SQL الطويلة على عدّة أسطر وبالتالي سهولة قراءتها:
    mail.Body = @"Dear User," + "<br><br>" + "You have received one new mail greeeting from E-Greetings Service." + "<br>" + "Your friend message showing as below:" + "<br><br><br>" + txt_body.Text + "<br><br>" + "<br><br>" + "Thanks & Regards," + "<br>" + "E-Greetings(Admin)"; بالتوفيق
  15. إجابة Lujain سؤال في كيفية نقل صورة ورقم تعريفها من صفحة لأخرى بتقنية ASP.NET كانت الإجابة المقبولة   
    أولًا يوجد طريقتين لتمرير البيانات من صفحة لأخرى في ASP.Net إما باستخدام QueryString أو Session راجع الروابط أدناه.
    ماذا تعني QueryString في ASP.Net وما هي استخداماتها؟
    ماهي Session في ASP.Net وما هو استخدامها؟
    بالنسبة لسؤالك الأول كيف تملأ الـ TextBox بقيمة رقم الـ id للصورة المختارة من الصفحة الأولى فأنت قمت بتمرير قيمة الـ  id للصورة في رابط الصفحة باستخدام QueryString كما هو واضح لدي فعليك الآن أخذ قيمة الـ id من رابط الصفحة الثانية بالطريقة التالية ثم إسنادها للخاصية .Text للـ TextBox:
    private void Page_Load(object sender, System.EventArgs e) { this.txtBox1.Text = Request.QueryString["id"]; this.txtBox2.Text = Request.QueryString["Name"]; } الآن أصبح معرّف الصورة id لديك ولجلب الصورة من قاعدة البيانات قم بعمل الاستعلام المناسب باستخدام الـ id لجلب المسار Card_Path الناتج من الاستعلام وإعطاءه للعنصر Image Control
    بالتوفيق
  16. إجابة Lujain سؤال في كيف أنشئ Activity في آندرويد؟ كانت الإجابة المقبولة   
    يمكن تصوّر مراحل إنشاء وتشغيل النشاط Activity في تطبيق آندرويد بثلاث خطوات:
    الخطوة الأولى: استخدام eclipse IDE لإنشاء تطبيق آندرويد وتسميته مثلًا HelloWorld في الحزمة com.example.helloworld
    الخطوة الثانية: تعديل ملف MainActivity.java كما هو موضّح أدناه.
    الخطوة الثالثة: تشغيل وإطلاق محاكي آندرويد.
    فيما يلي محتوى الملف MainActivity.java الذي يجب أن يكون بعد تعديله واستدعاء الدّوال الخاصة Callback بإدارة دورة حياة وتشغيل النشاط Activity:
    package com.example.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; public class MainActivity extends Activity { String msg = "Android : "; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(msg, "The onCreate() event"); } /** Called when the activity is about to become visible. */ @Override protected void onStart() { super.onStart(); Log.d(msg, "The onStart() event"); } /** Called when the activity has become visible. */ @Override protected void onResume() { super.onResume(); Log.d(msg, "The onResume() event"); } /** Called when another activity is taking focus. */ @Override protected void onPause() { super.onPause(); Log.d(msg, "The onPause() event"); } /** Called when the activity is no longer visible. */ @Override protected void onStop() { super.onStop(); Log.d(msg, "The onStop() event"); } /** Called just before the activity is destroyed. */ @Override public void onDestroy() { super.onDestroy(); Log.d(msg, "The onDestroy() event"); } } يقوم الصف activity class بتحميل جميع العناصر UI component باستخدام ملف XML المتوفر الموجود في المجلد res/layout من المشروع.
    الشيفرة التالية تقوم بتحميل مكوّنات واجهة المستخدم من الملف res/layout/activity_main.xml:
    setContentView(R.layout.activity_main);يمكن أن يحوي التطبيق الخاص بك نشاط واحد أو أكثر بدون أي قيود. ويجب أن تقوم بتعريف كل نشاط في الملف AndroidManifest.xml وكذلك النشاط الرئيسي للتطبيق main activity يجب الإعلان عنه في ملف manifest ضمن <intent-filter> والذي يتضمن MAIN action و LAUNCHER category:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>أخيرًا شغّل محاكي آندرويد بالضغط على Run في ايكليبس.
  17. إجابة Lujain سؤال في كيف أُنصّب حاوية Docker على Amazon Linux instance؟ كانت الإجابة المقبولة   
    إن كنت تستخدم amazon EC2 فأنت لست بحاجة إلى نظام تطوير محلي لاستخدام Docker يمكنك إطلاق وتشغيل Linux instance وتنصيب Docker للبدء بالعمل.
    خطوات تنصيب Docker على Amazon Linux instance:
    1- عليك أولًا تشغيل نسخة instance على Amazon Linux AMI. انظر الرابط Launching an Instance
    2- الاتصال بالنسخة Linux Instance الخاصة بك في أمازون EC2 انظر الرابط Connect to Your Linux Instance
    3- تحديث الحزم المثبتة على النسخة لخاصة بك:
    [ec2-user ~]$ sudo yum update -y4- تنصيب الحاوية Docker. يتطلب Amazon ECS حد أدنى من إصدار Docker وهو 1.5.0 (يستحسن إصدار 1.7.1). حيث أن الإصدار الافتراضي للحاوية Docker في العديد من إدارة حزم النظام لا تلبي الحد الأدنى المطلوب لإصدار Docker. لمعرفة كيفية تنصيب الإصدار الأخير لـ Docker على توزيعة لينكس https://docs.docker.com/installation/.
    [ec2-user ~]$ sudo yum install -y docker5- بدء تشغيل Docker Service:
    [ec2-user ~]$ sudo service docker start Starting cgconfig service: [ OK ] Starting docker:6- قم بإضافة ec2-user إلى docker group لتتمكّن من تشغيل أوامر Docker دون الحاجة إلى استخدام sudo:
    [ec2-user ~]$ sudo usermod -a -G docker ec2-user7- قم بتسجيل الخروج ثم تسجيل الدخول مرة أخرى للحصول على أذونات docker group الجديدة.
    8- تحقق من أن ec2-user يمكنه تشغيل أوامر Docker دون استخدام sudo:
    [ec2-user ~]$ docker info Containers: 2 Images: 24 Storage Driver: devicemapper Pool Name: docker-202:1-263460-pool Pool Blocksize: 65.54 kB Data file: /var/lib/docker/devicemapper/devicemapper/data Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 702.3 MB Data Space Total: 107.4 GB Metadata Space Used: 1.864 MB Metadata Space Total: 2.147 GB Library Version: 1.02.89-RHEL6 (2014-09-01) Execution Driver: native-0.2 Kernel Version: 3.14.27-25.47.amzn1.x86_64 Operating System: Amazon Linux AMI 2014.09 
  18. إجابة Lujain سؤال في كيف أنشئ سحابة خاصة افتراضية في AWS؟ كانت الإجابة المقبولة   
    تسمح السحابة الافتراضية الخاصة في أمازون Amazon VPC بتشغيل موارد AWS باستخدام شبكة افتراضية Virtual Network (يستحسن تشغيل الحاويات الافتراضية container instances ضمن VPC).
    ملاحظة هامة: إذا كان حسابك يدعم EC2-Classic في الـ region فأنت لا تملك VPC افتراضية في هذا النطاق وعليك إنشاء واحدة.
    لإنشاء VPC غير افتراضية:
    1- افتح Amazon VPC Console
    https://console.aws.amazon.com/vpc/
    2- اختر المنطقة region للشبكة الافتراضية VPC (يجب أن تقوم باختيار المنطقة نفسها التي اخترتها عند إنشاء key pair)
    3- اختر Statrt VPC Wizard

    ستظهر لك صفحة Step 1: Select a VPC Configuration تأكد فقط من أن خيار VPC with a Single Public Subnet محدد ثم اضغط على select

    في الخطوة الثانية Step 2: VPC with a Single Public Subnet
    أدخل اسمًا مألوفًا للسحابة الافتراضية الخاصة في الحقل VPC name واترك إعدادات التكوين الافتراضية كما هي ثم اضغط على Create VPC

    كيف أنشئ سحابة خاصة افتراضية في AWS؟
  19. إجابة Lujain سؤال في كيف أنشئ Key Pair في Amazon ECS؟ كانت الإجابة المقبولة   
    لإنشاء key pair أولًا افتح Amazon ECS Console
    https://console.aws.amazon.com/ec2/.
    2- اختر key pair من مجموعة الخيارات بعد تحديد المنطقة region الخاصة بك.
    توفّر أمازون ECS المناطق التالية:


    3- بعد ذلك اختر create key pair وأدخل اسم لزوج المفاتيح في الحقل Key pair name ثم اضغط على create (اختر اسمًا سهل التذكّر كاسم IAM user الخاص بك يتبعه -key-pair مع اسم المنطقة مثلًا: me-key-pair-useast1
    4- سيتم تحميل ملف المفاتيح الخاصة بشكل تلقائي بواسطة المتصفح الخاص بك.(بنفس الاسم الذي اختره لـ key pair name بلاحقة pem.) احفظ الملف في مكان آمن على جهاز الحاسوب.

    5- إن كنت ستستخدم SSH client على جهاز حاسوب ماك أو لينكس للاتصال استخدم الأمر التالي لتعيين لملف لمفاتيح الخاصة بحيث أنت الوحيد الذي يمكنك قراءته:
    $ chmod 400 your_user_name-key-pair-region_name.pemكيف أنشئ Key Pair في Amazon ECS؟
  20. إجابة Lujain سؤال في ما هي ميزات وفوائد استخدام EC2 في AWS؟ كانت الإجابة المقبولة   
    تُقدّم أمازون EC2 ميزات عديدة منها:
    تكوينات مختلفة من وحدة المعالجة المركزية والذاكرة والتخزين، والسعة المعروفة باسم instance Types. معلومات تسجيل دخول آمنة للحالات الخاصة بك باستخدام key pairs أزواج مفاتيح (حيث يخزن AWS المفتاح العام، وتقوم بتخزين المفتاح الخاص في مكان آمن). وحدات التخزين للبيانات المؤقتة وهذه يتم حذفها عند إيقاف أو إنهاء الخادوم الافتراضي، والمعروفة باسم instances store volumes. وحدات التخزين للبيانات الثابتة الخاصة بك باستخدام Amazon Elastic Block Store والمعروفة باسم  Amazon EBS Volumes. جدار حماية يمكنك من تحديد البروتوكولات، والـ Ports، ونطاقات IP بحيث تصل إلى الحالات الخاصة بك باستخدام مجموعات الأمان security groups. عناوين IP ثابتة Static IP addresses للحوسبة السحابية، والمعروفة باسم عناوين Elastic IP addresses. ما هي ميزات وفوائد استخدام EC2 في AWS؟
  21. إجابة Lujain سؤال في كيف أغيّر نوع الخط عند الضغط عليه في جافا؟ كانت الإجابة المقبولة   
    يتم ذلك عن طريق الحدث mousePressed من الصف MouseAdapter حيث يتم إعادة تعريف الحدث mousePressed عن طريق عمل extends للصف MouseAdapter.
    أنشئ صف وليكن مثلًا MainClass وقم بإضافة MouseListener لكي يتم الاستماع للحدث mousePressed عند الضغط.
    المثال التالي يوضح كيفية إضافة mouseListener لـ Applet في الدالة init حيث سيتم الاستماع وتنفيذ الحدث mousePressed عند الضغط على Applet.
    لإنشاء خط Font أنشئ كائن object من نوع Font وقم بتمرير المعاملات name, style, size.
    public void init() { f = new Font("Dialog", Font.PLAIN, 12); msg = "Dialog"; setFont(f); addMouseListener(new MyMouseAdapter(this)); } قم باستيراد المكتبات التالية:
    import java.applet.Applet; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; الصف MainClass:
    public class MainClass extends Applet { int next = 0; Font f; String msg; public void init() { f = new Font("Dialog", Font.PLAIN, 12); msg = "Dialog"; setFont(f); addMouseListener(new MyMouseAdapter(this)); } public void paint(Graphics g) { g.drawString(msg, 4, 20); } } الآن أنشئ صف MyMouseAdapter واجعله يرث من MouseAdapter.
    في الدالة MousePressed حدّد ما تريد عمله عند الضغط على النص مثلًا يتغير نوع الخط كما في المثال التالي:
    class MyMouseAdapter extends MouseAdapter { MainClass sampleFonts; public MyMouseAdapter(MainClass sampleFonts) { this.sampleFonts = sampleFonts; } public void mousePressed(MouseEvent me) { sampleFonts.next++; switch (sampleFonts.next) { case 0: sampleFonts.f = new Font("Dialog", Font.PLAIN, 12); sampleFonts.msg = "Dialog"; break; case 1: sampleFonts.f = new Font("DialogInput", Font.PLAIN, 12); sampleFonts.msg = "DialogInput"; break; case 2: sampleFonts.f = new Font("SansSerif", Font.PLAIN, 12); sampleFonts.msg = "SansSerif"; break; case 3: sampleFonts.f = new Font("Serif", Font.PLAIN, 12); sampleFonts.msg = "Serif"; break; case 4: sampleFonts.f = new Font("Monospaced", Font.PLAIN, 12); sampleFonts.msg = "Monospaced"; break; } if (sampleFonts.next == 4) sampleFonts.next = -1; sampleFonts.setFont(sampleFonts.f); sampleFonts.repaint(); } }
  22. إجابة Lujain سؤال في كيف أنشئ شكل هندسي معقد في جافا؟ كانت الإجابة المقبولة   
    ينشأ الشكل أعلاه من دوران دائرة Ellips في جافا 2D. وباستخدام الصف AffineTransform واستدعاء الدالة getTranslateInstance لتحديد مقدار التحريك زمن ثم الدالة Rotate لتطبيق الدوران.
    قم باستيراد المكتبات التالية:
    import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import javax.swing.JFrame; import javax.swing.JPanel;أنشئ دائرة Ellips بالإحداثيات والقطر المناسب:
    Ellipse2D e = new Ellipse2D.Double(10, 20, 100, 60);أنشئ حلقة تكرار والتي ستنتهي عند 360 لإتمام دورة كاملة ثم أنشئ كائن object من نوع AffineTransform واستدعي الدالة getTranslateInstance (وهي دالة Static) وحدد مقدار التحريك ثم استدعي الدالة rotate ومرر Math.toRaduis بالقيمة المناسبة للدواران.
    كما في المثال التالي:
    public class RotateTransformed extends JPanel { public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; Ellipse2D e = new Ellipse2D.Double(10, 20, 100, 60); for (double i = 0; i < 360; i += 5) { AffineTransform at = AffineTransform.getTranslateInstance(400 / 2, 400 / 2); at.rotate(Math.toRadians(i)); g2.draw(at.createTransformedShape(e)); } } public static void main(String[] args) { JFrame frame = new JFrame(); frame.add(new RotateTransformed()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); frame.setVisible(true); } }
  23. إجابة Lujain سؤال في ما هو EC2 في AWS؟ كانت الإجابة المقبولة   
    Amazon EC2 هي اختصار لـ Amazon Elastic Compute Cloud وهي عبارة عن خدمة ويب من أمازون تُوفّر قدرة حوسبة مرنة وقابلة للقياس في السحابة وهي مصممة لجعل الحوسبة السحابية ذات نطاق واسع أسهل للمطورين.
    تتميز خدمة الويب EC2 بواجهة بسيطة تتيح لك الحصول على بيئة حوسبة ذات سعة عالية وبأقل الجهود حيث توفر لك السيطرة الكاملة على موارد الحوسبة في بيئة حوسبة أمازون.
    خدمة EC2 اقتصادية بامتياز تسمح لك بالدفع فقط على قدر السعة التي تستخدمها. تقدم Amazon EC2 أدوات للمطورين لبناء تطبيقات قوية بعيدة عن الفشل قدر الإمكان وتمكّنهم من تجنب الأخطاء الشائعة التي تحدث عادةً.
    ما هي الميزات التي تتمتع بها Amazon EC2؟
    مرونة الحوسبة: تمكّنك EC2 من زيادة أو إنقاص السعة أو قدرة التخزين على حسب احتياجاتك خلال دقائق معدودة وتطبيق ذلك على خادوم واحد أو مئة أو حتى ألف خادوم بوقت واحد Server instances.
    سيطرة وتحكم كامل: لديك السيطرة الكاملة على الخوادم الافتراضية ويمكنك التفاعل معها كما تفعل مع أي آلة حيث يمكنك إيقاف الخادوم مع الحفاظ على البيانات في قسم البوت  boot partition وفي وقت لاحق يمكنك إعادة تشغيل الخادوم.
    استضافة سحابية مرنة: حيث يمكنك الاختيار من عدّة أنوع من الخوادم instances، أنظمة التشغيل وحزم البرمجيات. تتيح لك اختيار تكوين كل من: الذاكرة Memory، وحدة المعالجة المركزية CPU، تخزين الخادوم instance والـ boot partition الملائم لخيارك الخاص بنظام التشغيل والتطبيقات.
    ما هو EC2 في AWS؟
  24. إجابة Lujain سؤال في كيف أتعلم البرمجة؟ كانت الإجابة المقبولة   
    يتكرر هذا السؤال كثيرًا من قبل المقبلين الجدد على تعلم البرمجة.
    تُعلّم البرمجة طريقة التفكير وطريقة الوصول للمشكلة وإيجاد حل لها بأفضل وأسرع الطرق.
    أنصحك أن تبدأ بلغة ++C فهي لغة أساسية وتصقل الكثير من تفكيرك البرمجي في المستقبل حيث أن معظم اللّغات التي ظهرت بعد ++C هي لغات أسهل منها وأكثر مرونة وحين تتقن لغة ما لن يصعب عليك تعلم لغة برمجة جديدة طالما أنك امتلكت التفكير البرمجي السليم.
    عليك التركيز على البرمجة الغرضية التوجه أو الكائنية التوجه Object Oriented Programming فبعض اللغات تعتمد بشكل أساسي على OOP وتسمى Pure OOP Language مثل لغة جافا Java. غالبًا يُشرح مفهوم البرمجة غرضية التوجه في لغة C++ في الدروس الأخيرة.
    ابدأ بتعلم برمجة وتطوير الويب بتدرج أي البدء بتعلم HTML + CSS ثم جافاسكربت وبعد ذلك الانتقال للـ server side
    أيضًا الإلمام ببرمجة تطبيقات الهواتف الذكية يعتبر من الأمور التي لا غنى عنها لأي مبرمج أو مطور ولا سيما بوجود تسارع كبير يشهده العالم في هذا المجال.
    بالتوفيق.
  25. إجابة Lujain سؤال في ما هو Cloud Hosting؟ كانت الإجابة المقبولة   
    توّفر خدمات الاستضافة السحابية Cloud Hosting Services استضافة للمواقع على خوادم افتراضية Virtual Servers والتي تقوم بسحب الموارد من الشبكات الواسعة للخوادم المادية Physical Web Servers.
    تتّبع خوادم الاستضافة السحابية Cloud Hosting Services نموذج الحوسبة في أنها تُمكّن العملاء من الاستفادة من خدماتها بقدر ما يحتاجون إليه اعتمادًا على مطالب مواقعهم على الإنترنت وأنهم سيدفعون فقط مقابل ما يستخدمونه.
    إن تطوير مفهوم الاستضافة السحابية يُعرّف بـ VDC وهي اختصار لـ Virtual Data Center مركز البيانات الافتراضي حيث تستخدم شبكة افتراضية من الخوادم في السحابة لاستضافة جميع عمليات تكنولوجيا المعلومات بما في ذلك مواقعهم.
    ما هي ميزات وفوائد الاستضافة السحابية؟
    1- الوثوقية: بدلًا من استضافة الموقع على خادوم واحد مادي يستضاف الموقع على قسم افتراضي حيث يستمد موارده من شبكة واسعة من الخوادم المادية أي أنه في حال توقف خادوم واحد لن يؤثر ذلك على توافر الموقع الذي سوف يستمر بسحب الموارد من شبكة الخوادم المتبقية.
    2-  المرونة: تبقى موارد الموقع متاحة حتى في حال ارتفاع حركة الزوار أو ازدياد الطلبات على الموقع أو طلب موارد إضافية يتم الوصول للموارد بسلاسة.
    3- الدفع على قدر الاستخدام: يدفع العميل فقط على قدر ما يستخدم، أي ليس هنالك أي هدر في حال كان الطلب أقل من المعتاد.
    تعتمد الاستضافة السحابية على مفهوم Load Balancing والذي يقوم بتوزيع الأحمال على أكثر من خادوم لتحقيق أكبر سرعة استجابة لموقع الويب.
    ما هو Cloud Hosting؟
×
×
  • أضف...