-
المساهمات
19827 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
473
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
تتوفر مكتبة androidx.appcompat.widget.SearchView ضمن مكتبة أندرويد نفسها لإضافة مربع بحث بسهولة وخاصة مع قائمة RecyclerView أو حتى مع Toolbar ولا تحتاج لمكتبة خارجية. كمثال لملف واجهة وليكن باسم search_menu.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_search" android:title="بحث" android:icon="@android:drawable/ic_menu_search" android:showAsAction="always" android:actionViewClass="androidx.appcompat.widget.SearchView" /> </menu> ثم في Activity: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search_menu, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) searchItem.getActionView(); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { // عند الضغط على زر البحث return false; } @Override public boolean onQueryTextChange(String newText) { nameAdapter.filter(newText); return false; } }); return true; } أما لو أردتي تنفيذ الأمر بشكل يدوي وتحكم كامل، ستحتاجين إلى RecyclerView للبحث عن اسم وعرض النتائج، أي لو لديكِ قائمة بأسماء وتريدين البحث فيهم، ستقومين بإنشاء layout/activity_main.xml لتصميم الواجهة. لكن للعلم تلك الطريقة على عكس SearchView لا تقدم تجربة مستخدم رسمية أي زر إكس للحذف أو دعم إدراج صوتي وخلافه، وستحتاجين إلى تنفيذ الخيارات متقدمة بنفسك من إخفاء لوحة المفاتيح والاحتفاظ بالسجل. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/searchEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="ابحث عن اسم" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> ثم NameAdapter.java وهو الأدابتر الخاص بالأسماء: public class NameAdapter extends RecyclerView.Adapter<NameAdapter.NameViewHolder> { private List<String> nameList; private List<String> nameListFull; public NameAdapter(List<String> nameList) { this.nameList = new ArrayList<>(nameList); this.nameListFull = new ArrayList<>(nameList); // نسخة كاملة للبحث } @NonNull @Override public NameViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(android.R.layout.simple_list_item_1, parent, false); return new NameViewHolder(view); } @Override public void onBindViewHolder(@NonNull NameViewHolder holder, int position) { holder.textView.setText(nameList.get(position)); } @Override public int getItemCount() { return nameList.size(); } public void filter(String text) { nameList.clear(); if (text.isEmpty()) { nameList.addAll(nameListFull); } else { text = text.toLowerCase(); for (String name : nameListFull) { if (name.toLowerCase().contains(text)) { nameList.add(name); } } } notifyDataSetChanged(); } static class NameViewHolder extends RecyclerView.ViewHolder { TextView textView; NameViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(android.R.id.text1); } } } ثم في MainActivity.java نكتب المنطقي البرمجي للبحث: public class MainActivity extends AppCompatActivity { private NameAdapter nameAdapter; private EditText searchEditText; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); searchEditText = findViewById(R.id.searchEditText); recyclerView = findViewById(R.id.recyclerView); // إعداد قائمة بأسماء، استبدليهم بأسماءك List<String> names = Arrays.asList("محمد", "علي", "سارة", "خالد", "فاطمة", "يوسف"); nameAdapter = new NameAdapter(names); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(nameAdapter); searchEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) { nameAdapter.filter(s.toString()); } @Override public void afterTextChanged(Editable s) {} }); } } مربع البحث هو EditText عند الكتابة به يتم فلترة الأسماء في قائمة RecyclerView تلقائيًا.
-
حسب ما فهمته ما تريده هو: جمع معلومات الأعطال والأخطاء المنطقية. معرفة السياق من خلال نسخة النموذج، إحداثيات GPS، نوع الجهاز وغيرها من المعلومات. تحليل الأداء Latency، Network، Battery. تنبيه المستخدم فوراً أو لاحقاً. إمكانية إيقاف ميزة أو تحديث نموذج AI عن بُعد إن لزم. قنوات CI/CD لتكامل سريع وتوزيع تجريبي. وبناءًا على ذلك ستحتاج إلى استخدام التقنيات التالية من Firebase: Firebase Crashlytics Firebase Performance Monitoring Firebase Analytics مع BigQuery Export Firebase Cloud Messaging Firebase In-App Messaging Firebase Remote Config Firebase Cloud Functions Firebase ML / Model Management أيضًا تتوفر Firebase ML لاستضافة نموذج TFLite لو أردت التشغيل السحابي، أو استخدم TFLite مباشرة على الجهاز، وRemote Config للتحكم الديناميكي.
- 3 اجابة
-
- 1
-
-
ذلك ملف FeedbackController أي متحكم مسؤول عن إدارة تقارير الكفاية للموظفين، الحقول الرئيسية للتقرير: text_grade: تقرير الكفاية اللفظي وهو وصف نصي للتقييم. grade: الدرجة النهائية للتقرير وهي قيمة رقمية لتقييم الأداء. year: السنة التي يغطيها التقرير يجب أن تكون فريدة لكل موظف في السنة الواحدة، أي لا يجوز تكرار تقرير لنفس السنة. emp_id إجباري فقط لو استخدمت المسار createAll أو أرسلت $id=0 حيث يحدد الموظف الذي سيسجل له التقرير. وبقية الحقول إختيارية: $feed->grade11 = request('grade11'); $feed->grade12 = request('grade12'); $feed->textGrade1 = request('grade13'); $feed->grade21 = request('grade21'); $feed->grade22 = request('grade22'); $feed->textGrade1 = request('grade23'); $feed->grade31 = request('grade31'); $feed->grade32 = request('grade32'); $feed->textGrade1 = request('grade33'); $feed->grade41 = request('grade41'); $feed->grade42 = request('grade42'); $feed->textGrade1 = request('grade43'); وكل تلك الحقول هي درجة فرعية وحقل نصي لها للتعليق وإضافة ملاحظة، بمعنى text_grade هو التقرير اللفظي أو الوصف العام لتقييم الكفاية العام للموظف مثلاً ممتاز، جيد جداً، جيد، ضعيف. وgrade هي الدرجة الإجمالية الرقمية لتقرير الكفاية مثلاً 95, 80, 60. بالتالي يوجد نظام لتقييم الموظف بناءًا على عدة معايير، وكل معيار له درجة رقمية وملاحظة نصية، ويوجد أربع مجموعات من الحقول: المجموعة الأولى: grade11: درجة رقمية للمعيار الأول أو جزء منه. grade12: درجة رقمية للمعيار الأول أو جزء آخر منه. grade13 مخزنة في $feed->textGrade1 ملاحظة نصية للمعيار الأول. ونفس الأمر بالنسبة بالنسبة لباقي المجموعات. لكن يوجد مشكلة هنا: $feed->textGrade1 = request('grade13'); $feed->textGrade1 = request('grade23'); $feed->textGrade1 = request('grade43'); كل سطر يقوم بتغيير نفس الخاصية textGrade1، بالتالي لن يتم الاحتفاظ إلا بآخر قيمة grade43. ويوجد أيضًا حقل الملفات files[] وهو اختياري من أجل مرفقات ملفات pdf أو صور وخلافه.
-
لا فرق بينهم كلاهما لنفس الوظيفة وهي تعريف السلسلة النصية أي تغليف نص لتتعرف عليه اللغة على أنه نص string. لكن تظهر أهمية علامة التنصيص المزدوجة عند كتابة التالي: let sentence3 = 'it's a rainy day' لاحظ بسبب وجود فاصلة apostrophe في اللغة الإنجليزية حدث مشكلة عند استخدام علامة التنصيص الفردية. لذا سنحتاج إلى استخدام المزدوجة هنا: let sentence3 = "it's a rainy day" أيضًا تستطيع استخدام كلاهما: let sentence = 'hello zen, "how are you?"' سنحصل على: hello zen, "how are you?"
- 3 اجابة
-
- 1
-
-
ستحتاج إلى تثبيت إضافة python لكي يظهر الزر: https://marketplace.visualstudio.com/items?itemName=ms-python.python إن لم يظهر قم بإعادة تشغيل محرر vscode. ولو استمرت المشكلة قم باستخدام إضافة code runner: https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner
- 4 اجابة
-
- 1
-
-
الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر لكي تحقق استفادة أنت، كتوجيه لطريقة الحل عليك فهم البيانات الموجودة، أي استعرض الأعمدة المتاحة في إطار البيانات. ثم حدد نوع كل عمود بطرح الأسئلة التالية: هل هو رقمي كسعر، كمية، عمر؟ هل هو فئوي أو تصنيفي، مثل نوع المنتج، اللون، الجنس؟ هل هو تاريخ أو وقت كتاريخ الشراء، وقت التسجيل؟ هل هو نصي كوصف المنتج أو تعليق المستخدم؟ هل هو منطقي Boolean، مثل هل تم الشراء؟ ستجد بيانات بنعم أو لا؟ فكر في معنى كل عمود أي ماذا يمثل العمود في سياق البيانات والمشكلة التي تحاول حلها؟ بعد ذلك عليك التفكير في العلاقات والتفاعلات بين الأعمدة، فبناءًا على أنواع الأعمدة ومعانيها، ابدأ بطرح أسئلة على نفسك: للأعمدة الرقمية: هل يمكنني جمع عمودين أو أكثر للحصول على معلومة جديدة؟ مثلاً إجمالي_المصروفات = مصروفات_طعام + مصروفات_مواصلات. هل يمكنني طرح عمود من آخر؟ هل يمكنني ضرب عمودين؟ هل يمكنني قسمة عمود على آخر للحصول على نسبة أو معدل؟ هل يمكن تحويل قيمة رقمية إلى فئة؟ كتحويل العمر إلى فئات شاب، متوسط العمر، كبير السن، وذلك يسمى Binning أو Discretization. هل يمكن إنشاء ميزات متعددة الحدود من عمود رقمي واحد؟ بمعنى لو لديك عمود X، فتستطيع إنشاء X^2, X^3. لأعمدة التاريخ والوقت: استخراج السنة، الشهر، اليوم، يوم_الأسبوع، هل_هو_نهاية_أسبوع، رقم_الأسبوع_في_السنة، الفصل. هل يمكن حساب المدة الزمنية بين تاريخين؟ بمعنى مدة_الاشتراك = تاريخ_انتهاء_الاشتراك - تاريخ_بدء_الاشتراك. هل يمكن حساب الوقت المنقضي منذ تاريخ معين؟ وذلك من خلال عمر_الحساب_بالأيام = تاريخ_اليوم - تاريخ_إنشاء_الحساب. للأعمدة الفئوية والتصنيفية: هل يمكن دمج فئتين أو أكثر من عمود فئوي واحد لتقليل عدد الفئات؟ كدمج فئات أزرق فاتح وأزرق غامق إلى أزرق. هل يمكن إنشاء ميزات تفاعلية بين عمودين فئويين؟ وليكن عمود المدينة وعمود نوع_المنتج، هنا تستطيع إنشاء ميزة جديدة المدينة_نوع_المنتج. هل يمكن حساب تكرار ظهور كل فئة؟ للأعمدة النصية: هل يمكن استخراج طول النص؟ هل يمكن استخراج عدد الكلمات؟ هل يمكن التحقق من وجود كلمات مفتاحية معينة؟ أي يحتوي التعليق على كلمة رائع أو سيء؟ بالطبع عند العمل على مشكلة معينة مثل التنبؤ بمبيعات، اكتشاف الاحتيال وخلافه، فكر في المقاييس أو المعلومات التي يستخدمها الخبراء في المجال، مثلاً في التجارة الإلكترونية، ميزات كمتوسط قيمة الطلب للعميل أو معدل تكرار الشراء مفيدة جدًا.
-
data.head() تعود بكائن DataFrame به أول 5 صفوف بشكل افتراضي أو عدد الصفوف الذي تحدده داخل الأقواس، مثلاً data.head(10). وشكل البيانات المعروضة يعتمد على البيئة، حيث يُعرض بتنسيق HTML تلقائيًا في البيئات التفاعلية كما في Jupyter أو IPython console لعرض الجداول بشكل أفضل، كالتالي: ولا يتم عرض شيء في السكربتات أي ملف python عادي ما لم يتم تمريرها لدالة print أو اسناده القيمة لمتغير وطباعته ويظهر بشكل نصي عادي وليس في شكل جدول HTML.
- 4 اجابة
-
- 1
-
-
مهم في تحليل البيانات من أجل فهمها بشكل صحيح، الاستكشاف، التحقق، والربط، لأنه المعرف الأساسي للسجلات ويساعد على تمييز وفهم كل صف من البيانات على حدة، مثلاً، عند تحليل بيانات العملاء، اسم العميل هو ما يميز عميلاً عن آخر. أما لبناء النموذج فيُستبعد من مجموعة الميزات المستخدمة لتدريب النموذج، إلا إن تم تحويله إلى ميزات أخرى ذات معنى من الأسماء كالجنس من اللقب، أو نوع الشركة من اسمها، فتلك الميزات الجديدة هي التي تُستخدم في النموذج، وليس الاسم الأصلي. أما بعد بناء النموذج والحصول على التنبؤات، يُستخدم لربط التنبؤات بالسجلات الأصلية وفهم لمن أو لأي شيء تنطبق تلك التنبؤات.
- 3 اجابة
-
- 1
-
-
تتوفر بيئة تطوير XAMPP والتي تدعم نظام لينكس، ستجد الأنظمة المدعومة هنا: https://www.apachefriends.org/download.html ويوجد أيضًا بيئة مماثلة باسم FlyEnv وهي أفضل وأحدث من لاراجون و XAMPP متوفرة لمختلف الأنظمة: https://github.com/xpf0000/FlyEnv وهي بيئة متكاملة تدعم مجموعة واسعة من التقنيات، بها تثبيت سريع لخوادم الويب Apache، Nginx، Caddy، Tomcat، قواعد البيانات MySQL، MariaDB، PostgreSQL، MongoDB، ولغات البرمجة PHP، Node.js، Java، Go، Python، Ruby، Erlang، أيضًا تدعم مصادر تثبيت متعددة مثل Homebrew، APT، وDNF. وفي حال تستطيع التعامل مع docker، فيوجد بيئة DDEV.
-
تستطيع الإرسال مرة أخرى للتذكير، وأرجو عدم القلق بخصوص الرد، سيتم مساعدتك والرد عليك.
-
يوجد مشكلة في أداة بناء أندرويد وهي AAPT2 - Android Asset Packaging Tool فشلت في معالجة وربط ملفات الموارد الخاصة بالتطبيق وتشمل ملفات XML ومنها ملفات الواجهات، النصوص، الألوان، الأبعاد، الستايلات، وغيرها، الصور والرسومات PNG, JPG, XML drawables، وأيضًا ملفات أخرى كملفات الصوت، الفيديو الخام، وخلافه. أولاً وقبل كل شيء افتحي نافذة Build في أندرويد ستوديو وحاولي العثور على رسالة خطأ، انسخيها والصقيها هنا لتفقد المشكلة، أيضًا راجعي آخر التغييرات، ما هي آخر ملفات XML أو موارد قمتِ بتعديلها قبل ظهور الخطأ؟ غالبًا المشكلة هناك.
-
حاليًا أنت تدرس دورة الذكاء الاصطناعي، ما تمر به شعور طبيعي يحدث لجميع من توقف أثناء الفترة الأولى من التعلم ثم عاد بعد إنقطاع، وكلما طالت الفترة زاد التأثير. لكن الأمر يتوقف على طريقة دراستك، ففي حال كنت تقوم بتنفيذ ما جاء بالدروس بمفردك وليس مع الشرح، ستجد أن المعلومات مثبتة أكثر في ذهنك وأيضًا الاستيعاب أفضل. وفي حال مشاهدة الدروس والتطبيق مع الشرح فقط ستنسى ما تعلمته سريعًا، فالممارسة أمر أساسي لتثبيت ما تعلمته، وبالطبع في بداية فترة التعلم الاستمرار عامل مهم، لمعرفة نسبة الفقد لديك، ستحتاج إلى إعادة التمارين والمشاريع التي جاءت بالدروس بمفردك كمراجعة، ولا تنزعج من ذلك فالمراجعة أمر أساسي لابد منه سواء انقطعت أم لا، حاول قدر الإمكان استرجاع ما استوعبه من خلال التطبيق العملي وبالطبع تستطيع الرجوع للدروس بعد المحاولة وليس قبلها لتنشيط ذهنك، وذلك سيتم خلال أيام قليلة لتنشيط الذاكرة. ولو حاولت القفز مباشرة لما توقفت عنده، ستجد صعوبة أكبر في فهم الأفكار الجديدة لأن الأساسيات التي بنيت عليها قد تكون غير حاضرة بقوة، وسيؤدي للإحباط والشعور بأنك لست مستوعب سيتضاعف. وبالطبع لو لديك مُلخصات أو ملاحظات قمت بكتابتها، فذلك من شأنه تسريع عملية تنشيط الذاكرة، ولا تبحث عن مصادر جديدة حاليًا، فقط الدروس بالدورة. وركز على لماذا وكيف، بمعنى لماذا نستخدم تلك الدالة؟ وكيف يرتبط هذا المفهوم بذاك؟ أيضًأ كن نشطاً ولا تقرأ فقط، حاول أن تشرح لنفسك بصوت عالٍ، أو اكتب ملاحظات سريعة جداً. وحدد وقت لكل جزء، وليكن سأقضي ساعتين اليوم في مراجعة أساسيات بايثون، لتجنب عدم الإفراط في المراجعة.
-
لا يتم توفير إجابة مباشرة لمثل تلك الأسئلة، وذلك لكي تحقق استفادة أنت، المطلوب منك هو التالي: تحميل مجموعة البيانات وقدم نظرة عامة أساسية من خلال df.info()، df.columns، df.describe()، والميثودز الأخرى. افهم هيكلية البيانات، بما في ذلك أسماء الأعمدة، أنواع البيانات، والإحصائيات الأساسية. بالنسبة للأعمدة الرقمية، قم بتحليل توزيعها كالهيستوغرام والانحراف، وحدد المشكلات التالية: التوزيعات ذات الانحراف العالي، سواء إيجابي أو سلبي. القيم المتطرفة التي تبتعد بشكل كبير عن الباقين. أي مشكلات منهجية في البيانات كقيم غير منطقية مثل الأجور السلبية. اقترح حلولاً لمعالجة تلك المشكلات لكل عمود رقمي وقم بتطبيقها. 3- هندسة الميزات أو Feature Engineering قم بإجراء اختيار الميزات للاحتفاظ بالميزات الأكثر أهمية وإزالة تلك غير المهمة أو ذات الأهمية المنخفضة. واستخدم تقنيات مثل SelectKBest مع mutual_info_regression لاختيار أفضل الميز Comfy إن كانت الميزة ذات أهمية منخفضة، قم بإسقاطها. 4- استخلاص الميزات Feature Extraction عليك إنشاء ميزات جديدة من الأعمدة الموجودة لتحسين مجموعة البيانات. باستخلاص السنة، الشهر، اليوم، والساعة من أعمدة التاريخ والوقت، وحساب مسافة الرحلة باستخدام صيغة Haversine بناءًا على إحداثيات الالتقاط والتوصيل. ستحتاج إلى قراءة الدروس التالية:
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
-
بالطبع في الغالب يتم الرد في نفس اليوم، وأحيانًا يتأخر الرد قليلاً لذا كل ما تحتاجه هو الإنتظار قليلاً لحين الرد
-
أحيانًا يوجد ضغط على مركز المساعدة، أتفهم شعورك، أرجو الإنتظار لبعض الوقت وسيتم الرد عليك لا تقلق بخصوص ذلك، طالما قمت بالمراسلة وتوضيح ما تريده بالتفصيل فسيتم الرد عليك، لذا في حال لم تقم بتفصيل ما تريده والسبب أرجو القيام بذلك.
-
يظهر لك "يرجى إدخال النص الذي تراه في الصورة" لذا عليكِ كتابة الحروف التي تظهر، أرى أنه يتم المرور سريعًا على الحروف لذا تفقدي حرف حرف ثم قومي بكتابته في الحقل المخصص لذلك. في حال استمرت المشكلة اضغطي على زر إعادة توليد نص آخر وهو الزر الأخضر أسفل اليمين، لتوليد حروف سهلة قليلاً.
-
التخصص هو الذكاء الاصطناعي ذلك هو ما يتم التعمق به.
-
لم يتم الإعلان عن ذلك حتى الآن، لكن بالفعل ظهر مسار باسم تطبيقات الويب التقدمية PWA لكن عند الضغط عليه يتم التوجيه لصفحة الدورات ربما خطأ غير مقصود أو ربما سيتم إضافته عما قريب، سيتم تفقد الأمر مع القسم المختص بالدورات بالأكاديمية وتوضيح الأمر لك. حاليًا تستطيع تفقد التحديثات على الدورات من صفحة آخر التحديثات ولم يتم الإعلان بها عن ذلك: https://academy.hsoub.com/release-notes
- 2 اجابة
-
- 1
-
-
هناك الكثير من دورات البرمجة في الأكاديمية، أعتقد ما تقصده هو دورة علوم الحاسوب ودورة أخرى، على أي حال الدراسة من خلال الهاتف ليست بالسهلة وستواجه صعوبات في التطبيق في بعض الدروس حيث يوجد برامج لن تتمكن من تثبيتها على الهاتف. يوجد محرر أكواد يعمل على الويب وتستطيع من خلاله إنشاء ملفات الأكواد وتشغيلها من خلال المتصفح في هاتفك: https://vscode.dev لكن ما أنصحك به، هو إدخار القليل من المال ثم شراء حاسوب مستعمل وليس لابتوب، وستحصل على مواصفات جيدة بسعر أقل من شراء لابتوب، ولا تقم بشرائه بنفسك بل اسأل شخص ذو خبرة ليقوم بشرائه لك في حال توفر ذلك، إن لم يتوفر لا مشكلة، الأمر سيكلفك في حدود 100 إلى 150 دولار تقريبًا حسب المواصفات. بعدها تستطيع الإشتراك بالدورة.
-
المجالين مختلفين، محاولة تعلمهما معاً في البداية ستؤدي إلى تشتت وصعوبة في بناء أساس قوي في أي منهما، يجب التركيز على مجال واحد فقط ثم بعد الوصول لمستوى متوسط به أي mid-level ما بين عامين أو ثلاث تستطيع تعلم مجال آخر، إلا في حالة ستقوم بالتطوير من خلال React Native والتي تعتمد على جافاسكريبت وReact وتخصصت في الواجهة الأمامية أو Full-stack، في تلك الحالة تستطيع تعلم تطوير تطبيقات الهاتف في وقت مٌبكر عن ذلك أي بعد عامين مثلاً من التخصص. بمعنى ركز على بناء أساس قوي في جافاسكريبت أولاً ثم انتقل إلى تعلم React للويب وبناء عدة مشاريع لتطبيق ما تعلمته، وعندما تشعر أنك قادر على بناء واجهات مستخدم معقدة وإدارة الحالة والتعامل مع APIs بكفاءة في React للويب، عندها تكون في وضع جيد لبدء تعلم React Native.
- 4 اجابة
-
- 1
-
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
-
يعمل الخادم الآن بشكل سليم، قم بإغلاقه بالضغط على CTRL + C ثم توجه للمجلد الذي به ملفات المشروع وانسخ المسار الخاص به من شريط العنوان بالويندوز بالأعلى، ثم في anaconda prompt اكتب التالي: cd مسار المجلد واضغط على Enter ثم اكتب الحرف الخاص بالقرص الذي به المجلد وليكن الـ D : D: ثم اضغط على Enter، بعدها تشغيل الخادم من خلال: jupyter notebook
- 5 اجابة
-
- 1
-
-
بسبب أنك تبحث عن النمط في النمط نفسه str(re_crypto_names) بدلاً من البحث في محتوى الصفحة table_crypto_soup، هنا: crypto_names = re.findall(re_crypto_names, str(re_crypto_names)) الصحيح هو: crypto_names = re.findall(re_crypto_names, str(table_crypto_soup))
