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

لوحة المتصدرين

  1. هديربنت خميس

    هديربنت خميس

    الأعضاء


    • نقاط

      7

    • المساهمات

      8


  2. محمد_عاطف

    محمد_عاطف

    الأعضاء


    • نقاط

      5

    • المساهمات

      8485


  3. Dana Dalloul

    Dana Dalloul

    الأعضاء


    • نقاط

      3

    • المساهمات

      100


  4. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      3

    • المساهمات

      18940


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 05/13/25 في كل الموقع

  1. لقد جربت طريقتين اكواد مربع البحث للبحث عن اسم ويظهر اخطاء... اريد طريقة مضمونة ل اكواد مربع البحث واكواد يظهر الاسم عند البحث عنه.. وشكرا ليكم..
    2 نقاط
  2. أريد معرفة كل التطبيقات التى سأحتاجها أثناء التعلم
    2 نقاط
  3. علوم الحاسوب وتطوير واجهات المستخدم علوم الحاسوب وتطوير واجهات المستخدم وأعتذر إن أثقلت ولكن أريد معرفة أفضل جهاز لابتوب للتعلم ومن ثم العمل
    2 نقاط
  4. السلام عليكم. لدي مشروع تخرج منصة تعليمة انا مشترك في دورة تطوير واجهات المستخدم ولكن في Back End لا اجيد اي لغة. مشروعي موقع ويب لازم يكون فيه قاعدة بيانات هل تنصحوني ان اتعلم php او Ruby وايهم احسن. مع العلم لا املك وقت كثير ع تسليم المشروع.
    1 نقطة
  5. لستِ بحاجة إلى لابتوب بمواصفات مرتفعة للبرمجة ستجدي تفصيل هنا:
    1 نقطة
  6. لا لن تحتاجي إلى أى برامج أخرى . وأى جهاز حاسوب أو لابتوت سيفي بالغرض حيث لن تحتاجي إلى إمكانيات كبيرة حاليا .
    1 نقطة
  7. هذا ما أفعله بالفعل ووصلت إلى node.js ولكن أسأل فى حال ما إذا كنت سأحتاج إلى تطبيقات أخري لأشترى لاب يمكنه إستيعاب كل ما أحتاجه أثناء فترة التعلم
    1 نقطة
  8. لا تقلقي ستجدين أنه سيتم توضيح جميع البرامج التي ستحتاجينها في الدورة . حيث يوجد دروس لكيفية تثبيت بيئة العمل . ولكن ما ستحتاجينه هو محرر الأكوار VS code . وأيضا ستحتاجين تثبيت NodeJs و قواعد البيانات والعديد من البرامج ولغات البرمجة الأخرى. يرجى عدم الإهتمام بكل هذا حاليا فكما وضحت لكِ سيتم شرح طريقة تثبيت كل ما ستحتاجينه.
    1 نقطة
  9. ما ستحتاجينه هو محرر أكواد وهو vscode، أيضًا تثبيت بايثون و Node.js وكذلك برنامج لإدارة قواعد البيانات، لكن لا داعي للتفكير بشأن تلك الأدوات دفعة واحدة الآن، كل ما عليكِ فعله هو دراسة الدورة بالترتيب وسيتم توضيح كيفية تثبيت الأداة واستخدامها عندما يحين الوقت لذلك.
    1 نقطة
  10. طريقة رائعة وسهلة ولكن سؤال: انت اضفت البيانات يدوياً للتطبيق.. التطبيق بتاعي رح اضيف البيانات من sql ف كيف رح ابحث منه يعني ايش احط بدا كود originalNameList.add("danaa"); لانو البيانات رح تكون اضافتها الياً مش يدوياً
    1 نقطة
  11. يمكننا إستخدام الطريق التي تعتمد على استخدام EditText كمربع للبحث و RecyclerView لعرض النتائج. أولا سنقوم بإضافة مربع البحث EditText والقائمة اللتي ستعرض النتائج RecyclerView في ملف ال Layout الخاص بال Activity أو ال Fragment. بعد ذلك في ملف ال Java سنحصل على مراجع للعناصر اللتي أضفناها باستخدام ال findViewById. ومن ثم سنستخدم واجهة TextWatcher حتى نستمع للتغييرات اللتي تحدث في مربع البحث أولا بأول. وفي كل مرة يتغير فيها النص في مربع البحث سنقوم بفلترة البيانات الأصلية ونعرض النتائج المتطابقة في ال RecyclerView. وأخيرا سننشأ ال Adapter لل RecyclerView لربط البيانات بال RecyclerView وعرضها بشكل صحيح. الآن إليك ملف التنسيق XML وليكن بإسم activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp" tools:context=".MainActivity"> <EditText android:id="@+id/searchEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="ابحث عن اسم..." android:inputType="text" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginTop="8dp" android:layout_weight="1" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> </LinearLayout> وملف ال Activity أو ال Fragment وليكن بإسم MainActivity.java: import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private EditText searchEditText; private RecyclerView recyclerView; private NameAdapter adapter; private List<String> originalNameList; private List<String> filteredNameList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); searchEditText = findViewById(R.id.searchEditText); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); originalNameList = new ArrayList<>(); originalNameList.add("ahmed"); originalNameList.add("danaa"); originalNameList.add("mohamed"); originalNameList.add("mona"); originalNameList.add("ali"); originalNameList.add("mostafe"); filteredNameList = new ArrayList<>(originalNameList); adapter = new NameAdapter(filteredNameList); recyclerView.setAdapter(adapter); 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) { filterNames(s.toString()); } @Override public void afterTextChanged(Editable s) { } }); } private void filterNames(String query) { filteredNameList.clear(); if (query.isEmpty()) { filteredNameList.addAll(originalNameList); } else { query = query.toLowerCase(); for (String name : originalNameList) { if (name.toLowerCase().contains(query)) { filteredNameList.add(name); } } } adapter.notifyDataSetChanged(); } } وأخيرا ملف ال Adapter لل RecyclerView وليكن بإسم NameAdapter.java: import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.List; public class NameAdapter extends RecyclerView.Adapter<NameAdapter.NameViewHolder> { private List<String> nameList; public NameAdapter(List<String> nameList) { this.nameList = nameList; } @NonNull @Override public NameViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(android.R.layout.simple_list_item_1, parent, false); return new NameViewHolder(itemView); } @Override public void onBindViewHolder(@NonNull NameViewHolder holder, int position) { String name = nameList.get(position); holder.nameTextView.setText(name); } @Override public int getItemCount() { return nameList.size(); } public static class NameViewHolder extends RecyclerView.ViewHolder { public TextView nameTextView; public NameViewHolder(@NonNull View itemView) { super(itemView); nameTextView = itemView.findViewById(android.R.id.text1); } } } في ملف ال XML قمنا بإنشاء ال EditText بال ID searchEditText وهو مربع البحث اللذي سيقوم المستخدم بالكتابة فيه. و أنشأنا RecyclerView بال ID recyclerView وسيعرض قائمة الأسماء المتطابقة. واستخدمنا LinearLayoutManager حتى نعرض العناصر بشكل عمودي. وفي ملف في ملف ال Activity قمنا بالحصول على مراجع ل EditText و RecyclerView باستخدام findViewById وأنشأنا قائمتين: originalNameList: تحتوي على جميع الأسماء الأصلية. filteredNameList: ستحتوي على الأسماء اللي تتطابق مع نص البحث. وفي البداية تكون نسخة من originalNameList. وأنشأنا ال NameAdapter وربطناه بال RecyclerView وقمنا باستخدام TextWatcher حتى نستمع للتغييرات في نص searchEditText في كل مرة بيتغير النص ونقوم بإستدعاء الدالة filterNames. وفي ملف ال Adapter قمنا بإستقبال قائمة الأسماء nameList اللتي سيتم إرسالها وهنا هي filteredNameList.
    1 نقطة
  12. لتصميم تطبيق باستخدام Android Studio مع دمج Firebase، GPS، معلومات الجهاز، AI Model (باستخدام TensorFlow)، وإضافة AI Bot، مع التركيز على تحليل الأخطاء، تتبعها، وإعلام المستخدمين، إليك التوجيهات والاقتراحات لاختيار خدمات Firebase المناسبة وأدوات التكامل: خدمات Firebase المناسبة Firebase يوفر مجموعة من الخدمات التي تدعم تتبع الأخطاء، تحليل الأداء، إشعارات المستخدمين، وتكامل الذكاء الاصطناعي. الخدمات الموصى بها تشمل: Google Analytics for Firebase (لتحليل الأداء والتتبع) جمع بيانات استخدام التطبيق وسلوك المستخدمين لتحليل الأداء وتتبع الأحداث. تسجيل الأحداث المخصصة (مثل أخطاء GPS أو فشل تحميل نموذج الذكاء الاصطناعي). تتبع أداء التطبيق عبر الأجهزة المختلفة. تحليل بيانات المستخدم لتحسين تجربة التطبيق. أضف مكتبة Analytics في ملف build.gradle: implementation 'com.google.firebase:firebase-analytics:22.1.0' قم بتسجيل الأحداث باستخدام logEvent()، مثال: import com.google.firebase.analytics.FirebaseAnalytics; FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(context); Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "error_gps"); bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "error"); analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM, bundle); Firebase Crashlytics (لتتبع وتحليل الأخطاء) تتبع الأعطال (crashes) والأخطاء غير المميتة (non-fatal errors) في التطبيق. تسجيل الأعطال المتعلقة بـ GPS، معلومات الجهاز، أو نموذج TensorFlow. تسجيل أخطاء مخصصة (مثل فشل الاتصال بالـ AI Bot). عرض تقارير مفصلة في وحدة تحكم Firebase مع معلومات مثل نوع الجهاز ونظام التشغيل. أضف مكتبة Crashlytics في build.gradle: implementation 'com.google.firebase:firebase-crashlytics:19.1.0' قم بتسجيل الأخطاء غير المميتة، مثال: import com.google.firebase.crashlytics.FirebaseCrashlytics; FirebaseCrashlytics.getInstance().recordException(new Exception("GPS connection failed")); وهذه بعض الخدمات المقدمة من firebase يمكنك البحث أكثر عن باقي الخدمات، ستجد المعلومات الكثيرة عنها.
    1 نقطة
  13. يوجد العديد من الخدمات التي ستاعدك في تحقيق ما تريد . أولا لخدمات Firebase : Authentication: وذلك لتسجيل دخول المستخدمين وإدارة هوياتهم بشكل آمن. حيث يمكنك اختيار طرق عديد للمصادقة مثل البريد الإلكتروني وكلمة المرور أو تسجيل الدخول باستخدام Google أو Facebook وغيرها من المواقع الأخرى. Firestore : وهي قاعدة بيانات NoSQL لتخزين بيانات التطبيق المختلفة مثل بيانات المستخدم و بيانات GPS أو أي بيانات أخرى تحتاجها ويوفر Firestore مزامنة في الوقت الفعلي وهذا جيد جدا بالنسبة لتطبيقات الهواتف. Storage: التخزين السحابي وذلك لتخزين أي ملفات قد يحتاجها تطبيقك مثل نماذج TensorFlow المدربة أو أي ملفات أخرى. Crashlytics : وهي داة قوية لتتبع الأعطال والأخطاء التي تحدث في تطبيقك والتي توفر تقارير مفصلة حول الأخطاء بما في ذلك نوع الجهاز و نظام التشغيل و stack trace والذي يوضح لك مكان ووتبع الخطأ بشكل مفصل مما يساعدك على تحديد سبب المشلكة وحلها. Firebase Performance Monitoring : وتساعدك هذه الأداة على تتبع أداء تطبيقك مثل أوقات بدء التشغيل و استجابة الشبكة ووقت عرض الشاشة وغيرها. Firebase Analytics : وهي تركز بشكل أساسي على تتبع المستخدمين وإستخدامهم للتطبيق من خلال الأحداث . فستعرف عدد المستخدمين الذين يضغطون على زر ما أو زيارة جزء ما من التطبيق والذي يعطيك نبذة كاملة عن تجربة المستخدمين. Firebase Cloud Messaging (FCM) : وذلك لإرسال إشعارات للمستخدمين. Firebase ML : يساعدك في تشغيل النماذج على ال cloud . ويوجد ايضا أدوات أخرى لدمجها في المشروع وعمل Integration : TensorFlow Lite : حيث إذا أردت دمج النموذج ال AI الخاص بك في التطبيق مباشرة بدلا من رفعه على موقع وإرسال API وذلك ليعمل على جهاز المستخدم ولكن إذا قمت بإستخدام Firebase ML فلا داعي لذلك ولكن TensorFlow Lite أفضل للأداء المحلي .
    1 نقطة
  14. data.head() يعرض أول 5 صفوف (افتراضيًا) من DataFrame في بيئة تفاعلية مثل Jupyter Notebook أو IPython، النتيجة تظهر بتنسيق جميل (مثل جدول HTML في Jupyter) إذا كنت في بيئة تدعم ذلك و لا يطبع النتيجة كنص خام، بل يعتمد على واجهة العرض في البيئة، إذا كنت في بيئة لا تدعم العرض التفاعلي (مثل سكربت Python عادي)، قد لا ترى النتيجة إلا إذا استخدمت print(data.head()) يقوم بطباعة أول 5 صفوف من DataFrame كنص خام (plain text) بغض النظر عن البيئة، النتيجة تكون أقل تنسيقًا مقارنة بالعرض التفاعلي، حيث تظهر بتنسيق نصي بسيط و مفيد في السكربتات العادية أو عندما تريد التأكد من طباعة النتيجة في أي بيئة.
    1 نقطة
  15. وعليكم السلام ورحمة الله وبركاته. إن data.head() يستدعي الدالة head() من كائن data وهو إطار البيانات DataFrame ويعيد لك أول 5 صفوف من البيانات. ولكن إذا كتبته وحده في سطر داخل بيئة تفاعلية مثل Jupyter Notebook فإنه يقوم بعرض النتيجة تلقائيا بطريقة منسقة في جدول وهكذا لن تحتاج إلى دالة print. أما print(data.head()) ففي هذا السطر يتم إستخدام الدالة print() لعرض نتيجة data.head() في أي بيئة حتى لو كان ملف بايثون . وهذا السطر مفيد إذا كنت تكتب سكريبت Python أى ملف بإمتداد .py) ولست تعمل في Jupyter Notebook.
    1 نقطة
  16. data.head() تعود بكائن DataFrame به أول 5 صفوف بشكل افتراضي أو عدد الصفوف الذي تحدده داخل الأقواس، مثلاً data.head(10). وشكل البيانات المعروضة يعتمد على البيئة، حيث يُعرض بتنسيق HTML تلقائيًا في البيئات التفاعلية كما في Jupyter أو IPython console لعرض الجداول بشكل أفضل، كالتالي: ولا يتم عرض شيء في السكربتات أي ملف python عادي ما لم يتم تمريرها لدالة print أو اسناده القيمة لمتغير وطباعته ويظهر بشكل نصي عادي وليس في شكل جدول HTML.
    1 نقطة
×
×
  • أضف...