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

Mustafa Suleiman

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

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

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

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

    384

كل منشورات العضو Mustafa Suleiman

  1. أرجو المتابعة أسفل فيديو الدرس الذي طرحتي به السؤال وليس هنا في قسم أسئلة البرمجة، ولكي لا نطيل عليكي أرجو توضيح ما الذي يحدث عند الضغط على زر تشغيل الكود أعلى اليمين: هل يتم تشغيل الكود في terminal؟ في حال كان يتم تشغيله في output فغالبًا بسبب إضافة Code Runner ربما قمتي بتثبيتها، في حال لم يتم تثبيتها، أرجو الضغط على السهم لأسفل بجانب أيقونة التشغيل ثم اختيار run python file in dedicated terminal:
  2. ستجدين أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  3. أولاً علينا حساب إجمالي المبلغ المدفوع = مليون + 600 ألف + 450 ألف = 2,050,000. بالتالي الربح الإجمالي = سعر البيع - إجمالي المبلغ المدفوع، بمعنى الربح الإجمالي = 4,000,000 - 2,050,000 = 1,950,000 ثم علينا حساب نسبة مساهمة كل شريك: الأول = (1,000,000 / 2,050,000) * 100% = 48.78% تقريباً الثاني = (600,000 / 2,050,000) * 100% = 29.27% تقريباً الثالث = (450,000 / 2,050,000) * 100% = 21.95% تقريباً بعد ذلك نقوم بحساب نصيب كل شريك من الربح كالتالي: الأول = 1,950,000 * 48.78% = 951,210 الثاني = 1,950,000 * 29.27% = 570,765 الثالث = 1,950,000 * 21.95% = 428,025
  4. ستجد بجانب دروس الدورة علامة دائرة زرقاء بجانب الدروس التي لم تشاهدها بعد داخل كل مسار مثل التالي: وستختفي تلك الدائرة في حال شاهدت الدرس. لكن أرجو عدم الضغط على زر "حدد الموقع كمقروء" فذلك من شأنه جعل كامل الموقع كأنك قرأت المقالات وشاهدت الدروس لذا ارجو عدم الضغط عليه.
  5. عذرًا على إنزعاجك أحمد، أتفهم شعورك، في البداية يتم التركيز على الجانب النظري ويبدوا الأمر ممل لكنه مهم لفهم الجانب العملي من الدورة، أرجو الإنتظار قليلاً لحين الوصول للجزء الخاص بالمشاريع العملية. في حال واجهت صعوبة ولم يتضح لك جزء معين، تستطيع الاستفسار أسفل الدروس وقتما أردت، وسيتم مساعدتك من قبل الجميع بالتفصيل والأمثلة.
  6. لم توضح المطلوب بالضبط، لكن من الوصف ما تريده هو تحويل البيانات في الملف إلى تطبيق ويب بنفس الوظائف، صحيح؟ لكن هل سيتم القراءة والكتابة من الملف مباشرًة أم من قاعدة البيانات؟ عامًة ستحتاج إلى مكتبتي django-import-export و pandas لاستيراد البيانات من الملف وعرضها وتخزينها في قاعدة البيانات.
  7. تلك أفضل الحلول المتاحة لك بما أنك تستخدم نظام ويندوز
  8. يوجد منصة odevio وتوفر استخدام مجاني لتجربة التطبيق على نظام IOS لمدة 10 أيام فقط، بعد إنتهاء المدة حاول استخدام إيميل مختلف على منصة odevio لإنشاء حساب جديد ولكن افعل ذلك من خلال وضع التخفي incognito في المتصفح، وإن لم يتم توفير حساب مجاني قم بتغيير الـ IP الخاص بك بواسطة VPN. ويوجد أيضًا منصة codemagic توفر لك 500 دقيقة شهريًا، وهناك حل آخر وهو شراء Mac mini لكونه أقل سعرًا من macbook.
  9. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  10. القاعدة ليست مرتين أو أكثر، بل ما تحتاجه هو 4 إلى 5 أضعاف وقت الدورة، وذلك ما بين مشاهدة للدرس واستيعابه بشكل مبدأي أو كلي ثم التطبيق العملي بمفردك والمراجعة على النقاط التي يقل بها استيعابك، ثم محاولة التطبيق بشكل جانبي على تمرين مختلف أو مشروع بسيط. أيضًا البحث والقراءة للاستزادة فلا تكتفي بما يتم تقديمه في أي دورة مهما كانت، ولا حاجة لإعادة الدرس طالما أنك قادر على التطبيق على ما جاء به بمفردك وليس الكتابة مع الشرح ومتفهم لما تقوم به وليس مجرد حفظ للخطوات، عند الوصول لذلك تنتقل للدرس التالي. إذا أردت نصيحتي، فلا تستمتع لمن يخبرك بالدراسة 30 دقيقة ثم استراحة 10 أو 5 دقائق وهي تقنية Pomodoro، فهو يضرك بدون قصد. فالعقل يستغرق حوالي 23 دقيقة للدخول في مرحلة التركيز، والتوقف بعد 25 دقيقة يحرمك من التركيز العميق وحالات التدفق flow states. وسأوضح لك كيفية خداع عقلك لتعلم شيء جديد بسرعة وبفعالية أكبر: حدد فترة زمنية مركزة، أي ابدأ بأن تخبر نفسك أنك ستخصص الـ 45 دقيقة القادمة فقط لتعلّم الموضوع أو المهارة الجديدة، وذلك لا يضعك تحت ضغط ويخبر عقلك أن الأمر مجرد 45 دقيقة، ويساعدك في دخول وضعية تعلّم ذات تركيز عالٍ. خلال تلك الفترة المُركّزة لمدة 45 دقيقة، يُفرَز اثنان من المواد الكيميائية المهمة في عقلك: الأدرينالين وهو الهرمون الذي يزيد من اليقظة ويجعلك أكثر انتباهًا واستعدادًا لاستيعاب المعلومات الجديدة. الأسيتيل كولين، ويلعب دورًا حاسمًا في عملية التعلم وتشكيل الذاكرة، وعند إفرازه، يقوم بتعزيز تعديل الاتصالات العصبية المرتبطة بالمهمة المحددة، مما يعني تسليط الضوء على المناطق التي يرغب الدماغ في تغييرها لاستيعاب المعلومات الجديدة. وبمجرد انتهاء الفترة المُركّزة للتعلم، فقد حان الوقت لوقف كل شيء وإعطاء عقلك فترة راحة، وذلك الوضع مهم لسببين رئيسيين: تثبيت المعلومات المكتسبة: فأثناء الراحة، يعمل عقلك على تنظيم وتثبيت المعلومات التي اكتسبتها حديثًا في مسارات عصبية دائمة، وتلك العملية تُعزز من ترسيخ التعلم. زيادة الدافعية: حيث معرفة أنك ستسترخي وتأخذ استراحة بعد الجلسة المركزة يعتبر مكافأة، مما يزيد من دافعيتك للانخراط في المهمة التعليمية من البداية. والآن نتأتي لزيادة فترة التركيز مع مرور الوقت، وذلك مع التمرس في تلك التقنية، يمكنك تدريجياً زيادة فترة التعلم المركز إلي حتى 2 ساعة (أو أي فترة مناسبة)، فالجلسات الأطول تؤدي إلى تعلم أعمق ودخول حالات من التدفق الإبداعي flow states وعندها لن تشعر بنفسك بل ينصب تركيزك بالكامل على ما تفعله. وعندما كنت أتعلم البرمجة، كنت أقضي 10 ساعات يوميًا وربما أكثر، بين مشاهدة الدروس والتوقف للاستيعاب ثم المراجعة والتطبيق بمفردي لتثبيت ما تعلمته وأحيانًا البحث عن الأمور التي لا أفهمها سواء بمشاهدة شرح على اليوتيوب أو قراءة مقال على جوجل. أو رؤية مثال، أو البحث عن تمرين للتطبيق ومحاولة التغيير في الكود لفهم طبيعة عمله وكيف يعمل ولماذا استخدمنا ذلك ولم نستخدم ذلك وهكذا.
  11. سنة كاملة كافية لتنسى ما قمت بدراسته بالفعل، ففي بداية تعلمك للبرمجة أنت بحاجة إلى الاستمرار في الممارسة لتثبيت ما تعلمته على الأقل مرة أسبوعيًا أو يومين في الأسبوع أو تخصيص ساعة أو ساعتين يوميًا للدراسة رغم أن ساعة لا تكفي، لكن قليل دائم خير من كثير منقطع. في رأي ما أنت بحاجة إليه هو دراسة لغة برمجية وليس HTML, CSS بالتالي أنصحك بتعلم بايثون أو C++ أو جافا، لأنّ دراسة جافاسكريبت لن تفيدك كثيرًا بخصوص الجامعة وتحتاج إلى لغات قوية كالتي ذكرتها وبالأخص C++ أو جافا فستقوم بدراستهم على أي حال في الجامعة، جافا لغة أحدث وقوية أيضًا في نفس الوقت في حال لا تريد التعرض لـ C++. جافاسكريبت مفيدة في حال تريد العمل في مجال البرمجة وقررت التخصص في مجال الواجهة الأمامية أو الخلفية أو تطوير تطبيقات الهاتف من خلال React Native.
  12. لاحظ أنك تقوم بإعادة رسم جميع منحنيات كابلان ماير في نفس الرسم البياني في كل تكرار للحلقة، بالتالي ظهور جميع المنحنيات فوق بعضها البعض، ويجعل الرسم البياني غير واضح ومربك. حاول إنشاء رسم بياني جديد لكل مجموعة من البيانات، أو على الأقل لكل قيمة من cyto_score في حال تريد تجميع البيانات بناءًا عليها: import matplotlib.pyplot as plt from lifelines import KaplanMeierFitter import pandas as pd data_train = pd.DataFrame({ 'cyto_score': [0, 0, 1, 1, 2, 2, 3, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], 'tbi_status': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 'graft_type': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 'vent_hist': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 'efs_time': [10, 20, 15, 25, 30, 35, 40, 45, 12, 22, 32, 42, 14, 24, 34, 44, 16, 26, 36, 46], 'efs': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0] }) kaplanmeierfitter_cyto = KaplanMeierFitter() for cyto_score, group_data in data_train.groupby('cyto_score'): plt.figure(figsize=(10, 6)) for (tbi_status, graft_type, vent_hist), indices in group_data.groupby(['tbi_status', 'graft_type', 'vent_hist']).groups.items(): sub_group_data = group_data.loc[indices] kaplanmeierfitter_cyto.fit(sub_group_data['efs_time'], event_observed=sub_group_data['efs'], label=f'TBI: {tbi_status}, Graft: {graft_type}, Vent: {vent_hist}') kaplanmeierfitter_cyto.plot_survival_function(ci_show=False) plt.title(f'Kaplan-Meier Curves for Cyto_Score {cyto_score}') plt.xlabel('Time (months)') plt.ylabel('Survival Probability') plt.tight_layout() plt.show()
  13. بسبب طريقة تعاملك مع الـ DataGridView عند إضافة الأصناف وتحديثها، فحاليًا تقوم بإضافة أعمدة جديدة في كل مرة يتم فيها تعديل الفاتورة، وذلك هو سبب ظهور الأعمدة المكررة. بالتالي عليك التأكد من أنك تقوم بإضافة الأعمدة مرة واحدة فقط عند تحميل النموذج أو عند إنشاء الـ DataGridView لأول مرة، من خلال إنشاء حدث Form_Load للنموذج ونقل الكود الخاص بإنشاء الأعمدة إلى ذلك الحدث. private void Form1_Load(object sender, EventArgs e) { if (dataGridView1.Columns.Count == 0) { dataGridView1.Columns.Add("ITEMCODE", "كود الصنف"); dataGridView1.Columns.Add("ITEMNAME", "اسم الصنف"); dataGridView1.Columns.Add("PRICE", "السعر"); dataGridView1.Columns.Add("QTY", "الكمية"); dataGridView1.Columns.Add("TOTAL", "الإجمالي"); } } واكتب بدلاً من Form1 في Form1_Load اسم النموذج لديك، بعد ذلك قم فقط بمسح الصفوف باستخدام dataGridView1.Rows.Clear(); عند الحاجة. try { DialogResult result = MessageBox.Show("هل أنت متأكد من أنك تريد تعديل البيانات؟", "تأكيد التعديل", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if ((result == DialogResult.Yes)) { if (BUYTYPE.SelectedIndex < 0) { MessageBox.Show("يرجي اختيار نوع الفاتورة", "تنبيه"); BUYTYPE.Select(); return; } if (dataGridView1.Rows.Count == 0) { MessageBox.Show("لاتوجد أصناف لتعدليها ", "تنبيه"); return; } DataTable dt = new DataTable(); SqlDataAdapter adp = new SqlDataAdapter("select *from buybill where buycode='" + BUYCODE.Text + "'", Class1.con); adp.Fill(dt); if (dt.Rows.Count == 0) { int code = Class1.CODE_GENE("BUYBILL", "ID") + 1; BUYCODE.Text = code.ToString(); } else { DataRow dr = dt.Rows[0]; dr["BUYCODE"] = BUYCODE.Text; dr["BUYTYPE"] = BUYTYPE.Text; dr["IMPORTERNAME"] = IMPORTERNAME.Text; dr["NOTES"] = NOTES.Text; dr["BUYDATE"] = BUYDATE.Value; dr["TOTAL"] = Convert.ToDecimal(total_.Text); dr["TOTAL_ARBIC"] = totalar.Text; dr["TOTALQTY"] = Convert.ToInt32(totalqty.Text); dr["DebtAmount"] = Convert.ToDecimal(total_.Text); dt.Rows.Add(dr); SqlCommandBuilder save = new SqlCommandBuilder(adp); adp.Update(dt); SqlCommand cmd_del = new SqlCommand(); cmd_del.Connection = Class1.con; cmd_del.CommandText = "DELETE FROM BUY_DET WHERE BUYCODE ='" + BUYCODE.Text + "'"; cmd_del.ExecuteNonQuery(); DataTable dtDetails = new DataTable(); adp = new SqlDataAdapter("SELECT *FROM BUY_DET", Class1.con); adp.Fill(dtDetails); dataGridView1.Rows.Clear(); for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataRow dr_ = dtDetails.NewRow(); dr_["BUYCODE"] = BUYCODE.Text; dr_["ITEMCODE"] = dataGridView1.Rows[i].Cells[0].Value; dr_["ITEMNAME"] = dataGridView1.Rows[i].Cells[1].Value; dr_["PRICE"] = dataGridView1.Rows[i].Cells[2].Value; dr_["QTY"] = dataGridView1.Rows[i].Cells[3].Value; dtDetails.Rows.Add(dr_); dr_["TOTAL"] = Convert.ToDecimal(dataGridView1.Rows[i].Cells[2].Value) * Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value); string itemCode = dataGridView1.Rows[i].Cells[0].Value.ToString(); int qty = Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value); UpdateItemQuantity(itemCode, qty); } SqlCommandBuilder cmd_ = new SqlCommandBuilder(adp); adp.Update(dtDetails); MessageBox.Show(" تم حفظ تعديل بيانات فاتورة بنجاح وتحديث كمية في المخزن ", "رسالة تأكيد", MessageBoxButtons.OK, MessageBoxIcon.Information); button1_Click(null, null); } } } catch (Exception ex) { MessageBox.Show(ex.Message); }
  14. الأمر يعتمد على نوع البرنامج، فذلك ممكن بالطبع من خلال استخدام أي صيغة تخزين مثل ملفات نصية بسيطة (مثل .txt أو .csv) بتنسيق معين (مثل مفتاح=قيمة أو قيم مفصولة بفواصل). أو ملفات JSON أو XML، لكن من الأفضل استخدام قواعد بيانات بسيطة، مثل sqlite أو leveldb، التي توفر واجهة برمجة تطبيقات للتعامل مع البيانات دون الحاجة إلى قاعدة بيانات كاملة. حيث يتم إنشاء ملف واحد يمثل قاعدة البيانات وبالتالي تجمع ما بين الأمرين. وللعلم تستطيع عدم استخدام أية ملفات أو قواعد بيانات، والإعتماد على الذاكرة العشوائية لتخزين أية بيانات بشكل مؤقت وسيتم محوها بالكامل عند غلق البرنامج. لذلك ذكرت في البداية الأمر يعتمد على نوع البرنامج وما المطلوب تنفيذه.
  15. أسهل طريقة هي من خلال ميثود toLocaleString كما تم التوضيح، بينما لو أردت تحكم أكثر عليك استخدام تعبير نمطي Regular Expression وهي أكثر تعقيدًا ولكنها تمنحك تحكمًا أكبر في التنسيق لا تدعمه toLocaleString(). وبالطبع هناك طريقة يدوية وهو ما يحدث في الخلفية عند استخدام toLocaleString وهي مفيدة عند الحاجة إلى تخصيص كبير جدًا أو لتتعلم أساسيات البرمجة. حيث يتم الأمر كالتالي: function formatNumberWithCommasManual(number) { const numberString = String(number); let formattedString = ""; let count = 0; for (let i = numberString.length - 1; i >= 0; i--) { formattedString = numberString[i] + formattedString; count++; if (count === 3 && i !== 0) { formattedString = "," + formattedString; count = 0; } } return formattedString; } const number = 1000000000; const formattedNumber = formatNumberWithCommasManual(number); console.log(formattedNumber);
  16. متاح ذلك ولكنها ليست مباشرة ومضمنة في كل النماذج أي يعتمد الأمر على نوع النموذج الذي تستخدمه، بمعنى في النماذج الخطية Linear Models مثل الانحدار الخطي Linear Regression والانحدار اللوجستي Logistic Regression. تستطيع الحصول على قيم P لمعاملات النموذج باستخدام مكتبة statsmodels، التي توفر تحليلاً إحصائياً أكثر تفصيلاً، وتدريب النموذج باستخدام sklearn ثم استخراج المعاملات واستخدامها في statsmodels. بينما في النماذج غير الخطية Non-Linear Models مثل أشجار القرار Decision Trees، الغابات العشوائية Random Forests، آلات الدعم المتجهة Support Vector Machines، الشبكات العصبية Neural Networks. فهي لا توفر قيم P أو فترات ثقة للمعاملات بشكل مباشر، لأنها لا تعتمد على افتراضات إحصائية بسيطة مثل النماذج الخطية، بالتالي تحتاج إلى استخدام طريقة Bootstrap لتقدير فترات الثقة لبعض المقاييس (مثل الأهمية النسبية للميزات في الغابات العشوائية). أو تحليل حساسية Sensitivity Analysis النموذج للتغيرات في المدخلات لفهم تأثيرها. أو من خلال Cross-Validation لتقييم أداء النموذج بشكل عام، ولكن ذلك لا يعطيك قيم P أو فترات ثقة للمعاملات.
  17. هل ذلك تخصصك بالجامعة؟ على أي حال تستطيع القيام بأمرين في وقت واحد بشرط تنظيم وإدارة وقتك، بدون ذلك لن تتمكن من التركيز على جبهتين، تحتاج إلى إنشاء جدول وتقسيم وقتك ومحاولة الإلتزام بذلك بالطبع المرونة مطلوبة حسب الظروف لا مشكلة. الإلتزام والتضيحة بأمور أخرى هما كلمة السر، حتى لو كان لديك كل الوقت لتعلم شيء واحد مثل البرمجة فلن تتعلمه بدون إلتزام بالخطة التي وضعتها، ويجب في الأصل وجود خارطة طريق roadmap تسير عليها وليس التخبط والدراسة بدون تخطيط، أيضًا عليك التضحية بأمور أخرى لتوفير الوقت مثلاً وقت الجلوس مع أصدقاؤك وهكذا، ولا يشترط بشكل دائم لكن تقليص ذلك لتوفير الوقت. لكن عليك إعطاء أولوية لإنهاء الجامعة والحصول على الشهادة في حال كنت بالجامعة وبعدها لديك كل الوقت لدراسة ما تريد. عامًة مبدأ الأولوية مبدأ هام للغاية، فحسب عمرك عليك تحديد الأولويات حسب ظروفك، ولا تقوم بتأجيل أمور من الصعب القيام بها مستقبلاً أي سيصبح من الصعب القيام بها بينما من السهل القيام بها حاليًا.
  18. ذلك ليس حل عملي وليس دائم، الطريقة الصحيحة والإحترافية والتي يجب عليك تعلمها كمطور برمجيات هو رفع مشروعك على استضافة، الأمر يبدوا محير وصعب في البداية، لكن مع الوقت يصبح أسهل، كل ما تحتاجه هو مشاهدة شرح عملي بالفيديو يوضح لك خطوات رفع مشروعك على الاستضافة. مثلاً لو مشروعك باستخدام لارافل ابحث على اليوتيوب عن How to deploy Laravel project أو "نشر مشروع لارافل على استضافة". في حال استخدمت ngrok لاستضافة مشروعك على حاسوبك فسيتعين عليك تشغيل حاسوبك بشكل دائم لكي يتمكن الجميع من الوصول إلى الموقع في أي وقت، فائدة ngrok هو إنشاء أنفاق آمنة ومؤقتة Tunneling إلى جهازك المحلي أي ببساطة، تجعل ngrok جهازك المحلي متاحًا عبر الإنترنت، حتى لو كان خلف جدار ناري أو جهاز توجيه. وذلك لمشاركة تطبيقات الويب التي تعمل على جهازك المحلي مع الآخرين (زملاء العمل، العملاء وخلافه) بسهولة، دون الحاجة إلى نشرها على استضافة، وذلك مفيد جدًا أثناء عملية التطوير والاختبار.
  19. على المدى الطويل عليكِ تحديد ما تريدينه أي تحديد التخصص، هل التصميم أم البرمجة هو ما تريدين؟ فإحتراف كلاهما في نفس الوقت أمر صعب وغير عملي إلا في حال الإنتقال من مجال التصميم مثلاً لتعلم البرمجة، وبالطبع يمكن لمبرمج الواجهة الأمامية تصميم الواجهات لكن لن يكون بنفس إحترافية مصمم UI/UX متخصص. في رأي من الأفضل تطوير مستواكي في مجالك الأساسي وهو تصميم الواجهات UI/UX وتعلم المهارات المتقدمة به، ثم استخدام أدوات مثل framer أو Webflow لتحويل التصميم لموقع حي في حال كان العميل لا يحتاج إلى أكثر من ذلك. بجانب أيضًا تعلم أساسيات HTML, CSS, JS. ستجدي تفصيل هنا: في حال تريدين تعلم البرمجة فأنصحك بتعلم PHP ولارافل ثم ووردبريس وإضافة Elementor، وذلك لكونك حددتي العمل الحر.
  20. المقارنة في حد ذاتها ليست صحيحة، عليك مقارنة مجال بمجال بمعنى Flutter هي لتطوير تطبيقات الهاتف، بينما جافاسكريبت تصلح لأكثر من مجال وهي في الأصل لمجال الويب لكن تم تطويرها وتطوير التقنيات حولها مثل React و Node.js لاستخدامها في أكثر من مجال. قبل التفصيل أنصحك بعدم التنقل من مجال لمجال فذلك من شأنه التخبط وتضييع وقتك، أولاً عليك البحث عن الوظائف المعروضة في سوق العمل الذي تنوي العمل به بشكل دائم ثم تعلم التقنيات المطلوبة بكثرة والتي تتطلب مستوى خبرة ليس بالكبير. على مواقع العمل الحر ستجد أن Flutter أكثر طلبًا بالطبع بسبب استقرار ذلك الإطار وسهولة وسرعة تطوير المشاريع من خلاله، أيضًا تكلفة تطوير المشروع من خلاله أقل من React Native، لكن React Native أصعب في عملية التطوير بسبب مشاكل التعامل مع مكتبات مختلفة والتوافقية بينهم، لكن مرتبات مطوري React Native أعلى بطبيعة الحال وأيضًا مطلوبة في الشركات لكن الأمر يعتمد على سوق العمل لديك والوظائف المعروضة ومستوى الخبرة المطلوبة. لو أردت النصيحة ولك حرية الإختيار فذلك قرارك أنت، تعلم جافاسكريبت ثم React وبعد ذلك تستطيع تعلم React Native وذلك سيفتح لك الكثير من المجالات والوظائف، لكن عليك التخصص فبذلك أنت تريد أن تصبح مطور تطبيقات هاتف في المقام الأول.
  21. عليك توفير صورة للمشكلة لديك لمساعدتك بشكل أفضل، ولمعرفة صلاحيات المستخدم الحالي أي صلاحيات حسابك الذي قمت بتسجيل الدخول منه لحاسوبك أرجو تنفيذ الأمر التالي في منفذ الأوامر: netplwiz في حال وجدت administrator بجانب اسم حسابك فذلك يعني أنّ لديك صلاحيات المسؤول اللازمة لحذف المجلد، ويتبقى تنفيذ ما جاء بالتعليقات سابقًا.
  22. ما تبحث عنه هو تحديات الـ Problem solving يوجد الكثير من المنصات التي توفر ذلك أشهرها LeetCode وcodewars وHacker Rank وأيضًا يوقع موقع CodeChef بالإضافة إلى CodinGame. لو أردت منصة عربية فيوجد coderhub فقط. أنصحك بالبدء من خلال codewars أو Hacker Rank ثم عندما تقرر أنك تريد التقدم لوظيفة، عليك بالإنتقال إلى موقع LeetCode حيث يتم إختبارك من الأسئلة المتواجدة عليه غالبًا. لكن يجب أولاً الوصول لمستوى جيد في اللغة البرمجية الأولى لك قبل حل المسائل البرمجية، أي القيام بمشروع واحد كامل على الأقل. في حال واجهتك مشكلة أو صعوبة تستطيع السؤال.
  23. مجالين مختلفين وكلاهما يتطلبان مجهود ذهني بطبيعة الحال وللعلم الأمر مختلف عن Project Management أيضًا. حيث إدارة المشاريع Project Management هي مثل إدارة عملية بناء المنزل نفسها، فهو يركز على إنجاز بناء المنزل في الوقت المحدد، وضمن الميزانية المتفق عليها، وبجودة جيدة، ووضع خطة البناء، وتحديد المهام (مثل صب الأساسات، وبناء الجدران، والتشطيب)، وتوزيع المهام على العمال، ومتابعة تقدم العمل، وحل المشاكل التي تظهر أثناء البناء. أي الهدف هو إكمال بناء المنزل بنجاح وتسليمه في الموعد المحدد، وعملية البناء لها بداية ونهاية محددة. بينما إدارة المنتجات Product Management هي مثل التفكير في المنزل نفسه، وكيف سيكون مفيدًا ومناسبًا للناس الذين سيعيشون فيه، بالتالي هو يعمل على فهم احتياجات الناس الذين سيستخدمون المنزل (العملاء)، والتأكد من أن المنزل يلبي هذه الاحتياجات ويقدم لهم قيمة. وتحديد نوع المنزل المناسب (شقة، فيلا، منزل ريفي)، وتحديد عدد الغرف، والتصميم الداخلي، والميزات التي ستجعل المنزل مريحًا وجذابًا، ومتابعة آراء السكان بعد السكن فيه، وإجراء تحسينات إذا لزم الأمر. إذن الهدف هو التأكد من أن المنزل ناجح ومفيد للناس على المدى الطويل، وتلك العملية مستمرة أي التفكير في المنتج وتحسينه مستمرة طوال حياة المنتج (المنزل مثلاً). للتوضيح لو لدينا مشروع تطوير تطبيق جوال جديد، فإدارة المشروع هي إدارة عملية تطوير التطبيق، من كتابة الكود إلى إطلاقه في المتاجر، أي التركيز على التنفيذ، ولها بداية ونهاية محددة. بينما إدارة المنتج هي تحديد فكرة التطبيق، وميزاته، والجمهور المستهدف، وكيف سيحقق التطبيق النجاح على المدى الطويل، لاحظ التركيز على المنتج نفسه، وتطويره المستمر، وليس لها نهاية محددة وتبدأ قبل عملية إدارة المشروع. وكما لاحظت في حال تستمتع بالتفكير الاستراتيجي والتجاري، ولديك مهارات تحليلية وتواصل قوية، فربما تكون إدارة المنتج مهنة مناسبة لك، أما لة تستمتع بحل المشكلات التقنية المعقدة، ولديك مهارات تقنية قوية، فالبرمجة هو المجال المناسب. تفقد roadmap لمجال Product Manager والمهارات المطلوبة لتعرف هل هو مناسب لك أم لا بشكل مبدأي.
  24. لم توضح ظروفك الشخصية وعمرك الحالي وما تريده بالضبط وما قمت بدراسته، النصيحة ستكون عامة بطبيعة الحال فلا توجد نصائح معلبة صالحة للجميع، عامًة مجال البرمجة ليس بالسهل يحتاج إلى صبر وإلتزام لمدة سنة على الأقل ولا يوجد نتائج سريعة به، بالتالي مدة سنة هي الحد الأدنى قبل رؤية نتائج. بشرط أن تلك المدة مقضية في الدراسة والتطبيقات العملية وتنمية مستواك وبناء معرض أعمالك. بالطبع عليك من البداية الدراسة لسوق العمل وليس السير عكسه، بمعنى تفقد ما هو المطلوب بالنسبة لمستوى Junior أو خبرة سنة أو سنتين مثلاً وما هي التقنيات المطلوبة بالنسبة لتلك الخبرة وتجنب تعلم التقنيات التي لها وظائف بمستوى Senior فقط في حال كان الوقت ضيق لديك، فتلك ستحتاج منك إلى وقت أطول لاكتساب خبرة والتقدم إليها. ولا مشكلة في تعلم البرمجة والعمل في مجال آخر حاليًا لحين العثور على وظيفة في مجال البرمجة والإنتقال إليها، لكن عليك إدارة وقتك والإلتزام والتضحية بأمور أخرى، لا يوجد طريق مختصر.
  25. أولاً تتجه للاستضافة وهي Cloudflare Pages لديك ثم اضغط على مشروعك ثم اختر Custom domains ثم اضغط على Set up a domain ثم الضغط على begin dns transfers ثم قم بكتابة اسم الدومين الخاص بك وسيتم إعداد البيانات بشكل تلقائي واختر باقة free، وستحصل على أسماء الـ name servers. أرجو قراءة الشرح مرة أخرى.
×
×
  • أضف...