-
المساهمات
18932 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
447
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
هل توجهت لدومين الموقع وليس الـ IP الخاص بـ cyber panel؟ أيضًا ملف .htaccess الموجود في public_html هل يوجد به التالي في أوله؟ RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
-
من القائمة الجانبية ستجد Websites اضغط عليها ثم اختر list websites من المفترض أن تجد الموقع الذي قمت بإنشائه هناك، في حال لم تجد موقع قم بإنشائه من خلال create website أسفل تبويب Websites أيضًا. بعد ذلك في list websites ستجد الموقع الخاص بك اضغط بجانبه على manage ثم انزل للأسفل وستجد rewrite rules قم بالضط عليها ثم اختر من القائمة المنسدلة التي ستظهر Force HTTP to HTTPS ثم انزل للأسفل واختر save. توجه للموقع وأعد تحديث الصفحة ومن المفترض أن يتم التوجيه الآن إلى HTTPS
-
الاختراق ببساطة استغلال نقاط ضعف في نظام سواء جهاز، تطبيق أو شبكة إنترنت وذلك للوصول إليه أو التحكم به أو سرقة بيانات منه دون إذن، أي يشبه الأمر محاولة فتح قفل باب بطريقة غير قانونية من خلال إيجاد مفتاح مخفي، أو تستغلين ثغرة في تصميم القفل، أو تخدعين صاحب البيت ليفتح لكِ. وأغلب عمليات الاختراق العادية تعتمد على خداع المستخدم من خلال النقر على رابط خبيث، لأن البشر في حقيقة الأمر هم الحلقة الأضعف في نظام الأمان. لكن بالطبع هناك عمليات إختراق لا ذنب لأحد بها، وتحدث بسبب استغلال لثغرات غير معروفة بالنظام، لكن المشكلة هي أنه ليصل المُخترق للنظام، فيجب أن تسمحين له بذلك، سواء بتحميل أداة بها كود خبيث أيًا كانت تلك الأداة برنامج، تطبيق، صورة، ملف، فيديو وخلافه. في بعض الأحيان يتم الإختراق من برامج أو أدوات رسمية، بمعنى على مواقع ووردبريس مثلاً ستجدي أنه يتم تحميل إضافات للموقع من المتجر الرسمي لووردبريس لإضافة مزايا له، وفي وقت ما يتم إختراق الموقع لديكِ بسبب تلك الإضافة سواء لأن بها كود خبيث تم حقنه بها أو لأنّ بها ثغرة تؤدي إلى إختراق موقعك، حيث تلك الإضافة تُضيف كود للموقع لكي تعمل. وتلك هي الطريقة الإحترافية والتي تتم بها أغلب الإختراقات الكبيرة، أي من خلال استغلال الثغرات دونّ خداع أحد بتحميل ملف أو الضغط على رابط. ولو بحثتي عن أداة (Pegasus (spyware التي طورتها شركة NSO Group الإسرائيلية ستجدي أنها تُعتبر واحدة من أكثر أدوات التجسس السيبراني تقدمًا، وهدفها الإختراق والتجسس على أشخاص ذو قيمة مرتفعة وهم رؤساء دول وغيرهم كسياسيين، صحفيين، ونشطاء. وتعتمد على اختراق الأجهزة دون الحاجة إلى تفاعل المستخدم وذلك ما يُعرف بـ zero-click exploits فبمجرد اختراق الجهاز، يمكنها جمع البيانات مثل الرسائل، المكالمات، الصور، وتفعيل الميكروفون أو الكاميرا عن بُعد.
-
كان مُستخدم بكثرة منذ سنوات لكونه يدعم لغة جافا بشكل قوي، وأيضًا من الممكن تطوير تطبيقات أندرويد بشكل أسهل باستخدام NetBeans عبر إضافة خاصة وهي NBAndroid، وذلك قبل أن تصبح بيئة Android Studio هي بيئة التطوير الرسمية لمشاريع الأندرويد. حاليًا إضافة NBAndroid لم يتم تحديثها منذ سنوات، ولا تدعم أحدث إصدارات Android SDK أو أدوات التطوير الحديثة، ومحرر NetBeans نفسه أصبح غير مُستخدم بنفس النسبة كما كان من قبل. و Android Studio الأفضل لأنها بيئة التطوير الرسمية لتطبيقات الأندرويد من جوجل وتدعم Java وKotlin بشكل كامل، مع أدوات متقدمة لتصميم الواجهات، محاكاة الأجهزة Emulator، وإدارة المشاريع عبر Gradle، كذلك يحتوي على ميزات مثل Live Layout Preview، ودعم Jetpack Compose لتصميم الواجهات الحديثة، وتحديثات مستمرة لمواكبة أحدث تقنيات الأندرويد. بالإضافة إلى أدوات تحليل الأداء والـ Debugging بشكل سهل، ومناسب للمبتدئين والمحترفين، مع واجهة مستخدم حديثة مقارنًة بـ NetBeans. أما IntelliJ فهي مشابهة لـ Android Studio، لكن تتطلب إعدادات إضافية لدعم الأندرويد وليست مخصصة له مثل Android Studio.
- 4 اجابة
-
- 1
-
-
محتوى الدورة تم إعداده ليبدأ معك من نقطة البداية في مجال البرمجة، وذلك بدراسة أساسيات البرمجة من خلال لغة بايثون وهي اللغة المُستخدمة في مجال الذكاء الاصطناعي وتحليل البيانات، ثم خلال الدورة ستتعلم ما يلي: التعامل مع البيانات بمختلف الصيغ التعامل مع قواعد البيانات SQL و NoSQL التعامل مع نماذج الذكاء الاصطناعي LLMs مثل GPT من OpenAI و LLaMA من Meta تحليل البيانات واستخلاص المعلومات والتمثيل البياني لها التعامل مع مكتبات شهيرة مثل Pandas و Numpy و Matpoltlib و Seaborn تعلم الآلة Machine Learning الخورازميات الشهيرة في تعلم الآلة مثل الانحدار Regressions والتصنيف Classification والتجميع Clustering خوارزميات التعلم الخاضعة للإشراف Supervised learning وخوارزميات التعلم الغير خاضعة للإشراف Unsupervised learning وخوارزميات التعلم المعزز Reinforced learning دمج تقنيات الذكاء الاصطناعي مع متجر إلكتروني لو أردت تعلم الأساسيات في مجال البرمجة بشكل أفضل، فعليك دراسة دورة علوم الحاسوب قبل دورة الذكاء الاصطناعي، لكن الأمر ليس ضروري أو إلزامي، لكن في رأي ذلك أفضل لك.
- 3 اجابة
-
- 1
-
-
ملف index.js قمت بتضمينه بشكل سليم ولو قمت بكتابة: console.log("Hello World"); ستجد أنّ الرسالة ظهرت في الكونسول، إذن يوجد مشكلة في الكود تمنع عمله بشكل صحيح. لنقم بحل المشكلة الأولى وهي الضغط على الأرقام لا يظهر أيًا منها على شاشة الآلة الحاسبة، عليك تصحيح متغير prevlousOperator بتهيئته بقيمة null، وتصحيح خطأ في handleNumber لأنك تستخدم === الخاص بالمقارنة بدلاً من = لتعيين قيمة. ثم إضافة تحويل runningTotal إلى نص باستخدام toString() عند عرضه، وإضافة استدعاء handleMath(symbol) وكلمة break في حالات العمليات الحسابية. ثم تصحيح اسم متغير event في دالة الاستماع، لأنك كتبت even بدلاً من event: console.log("Hello World"); let runningTotal = 0; let buffer = "0"; let prevlousOperator = null; const screen = document.querySelector('.screen') function buttonClick(value){ if(isNaN(value)){ handleSymbol(value) }else{ handleNumber(value) } screen.innerText = buffer; } function handleSymbol(symbol){ switch(symbol){ case 'C': buffer = "0"; runningTotal = 0; break; case "=": if(prevlousOperator === null){ return } flushOperation(parseInt(buffer)); prevlousOperator = null; buffer = runningTotal.toString(); runningTotal = 0; break; case "←" : if(buffer.length === 1){ buffer = "0"; }else{ buffer = buffer.substring(0, buffer.length - 1); } break; case '+': case '-': case '×': case '÷': handleMath(symbol); break; } } function handleMath(symbol){ if(buffer === '0'){ return; } const inBudffer = parseInt(buffer); if(runningTotal === 0){ runningTotal = inBudffer; }else{ flushOperation(inBudffer); } prevlousOperator = symbol; buffer = '0'; } function flushOperation(inBudffer){ if(prevlousOperator === '+'){ runningTotal += inBudffer; }else if(prevlousOperator === '-'){ runningTotal -= inBudffer; }else if(prevlousOperator === '×'){ runningTotal *= inBudffer; }else if(prevlousOperator === '÷'){ runningTotal /= inBudffer; } } function handleNumber(numberString){ if(buffer === "0"){ buffer = numberString; }else{ buffer += numberString; } }; function init(){ document.querySelector('.calc-buttons').addEventListener('click', function(event){ buttonClick(event.target.innerText); }) } init();
-
في البرمجة الدراسة تتم عبر الإنترنت من خلال مشاهدة دورات مسجلة من قبل، لذا التعلم التفاعلي بوجود محاضر وأشخاص غير متوفر في ذلك المجال بل هو مضيعة للوقت. الحل الأنسب لك هو التحدث بشكل مرتفع قليلاً وشرح ما استوعبته لنفسك كما لو أنك تقوم بالشرح لشخص آخر، وذلك سيجبرك على التركيز لاستيعاب ما تم شرحه لكي تتمكن من شرحه أنت، أيضًا حاول إنشاء حساب على LinkedIn أو الإشتراك في مجموعة فيسبوك خاصة بالبرمجة ومشاركة ما تعلمته لكن الأمور التي تجدها مهمة بالفعل وليس كل شيء، ذلك من شأنه تحفيزك أيضًا. ولا تؤجل التطبيق لبعد عدّة دروس، الأفضل أن تجرّب كل فكرة فورًا، ضع قاعدة لكل 20-30 دقيقة مشاهدة/قراءة، امنح نفسك 20-30 دقيقة أخرى للكتابة والتجربة. أيضًا حل المساءل البرمجية على codewars أو leetcode والتدرج بالطبع في الصعوبة وستجد تحفيز للتعلم لكي تتمكن من حل المزيد من المساءل. بخصوص طريقة الدراسة المناسبة ستجد تفصيل هنا:
-
ستحتاج إلى استخدام رمز يونيكود لكتابتها، لكن الأسهل اضغط على زر الويندوز سواء علامة الويندوز أو به كلمة Win حسب لوحة المفاتيح واستمر بالضغط، ثم اضغط على الزر الذي به علامة < بجانب حرف و أسفل اليمين بلوحة المفاتيح، ستظهر لك نافذة مثل التالي الخاصة بالرموز بالنظام اختر منها symbols كالتالي وستجد بها ما تريد:
-
ذلك تمرين حول التنبؤ بحجم حركة مرور القطارات بالإعتماد على بيانات معينة، المطلوب منك هو بناء نموذج يتنبأ بحجم حركة مرور القطارات وذلك هو الـ Traffic Volume، الفائدة تظهر في حال أنك مثلاً تبني تطبيقًا يخبر المستخدمين هل محطة القطار ستكون مزدحمة أم لا؟ ستحتاج إلى البحث عن مجموعة بيانات تحتوي على معلومات درجة الحرارة، المطر، الأعياد، التاريخ والوقت، وحجم حركة المرور. وعليك استخدام طريقتين للتنبؤ، الأولى الطريقة التقليدية أو الكلاسيكية بواسطة الانحدار الخطي Linear Regression أو الغابات العشوائية Random Forest أو غيرهم. الثانية من خلال شبكة عصبية Neural Network لبناء نموذج يعتمد على الشبكات العصبية. وعليك محاولة تحقيق دقة أعلى من زملائك في التنبؤ، وأيضًأ معالجة البيانات إذا لزم الأمر، والملف يحتوي على تلميحات لمساعدتك في تلك الخطوة. ثم توفير تقرير عن أفضل النتائج التي حققتها باستخدام الطريقة التقليدية والشبكة العصبية. والخطوات الموجودة في الملف توجهك للخطوات كالتالي: تحميل البيانات وعرضها. إضافة عمود جديد يوضح هل اليوم هو عطلة نهاية أسبوع أم لا. تصور البيانات لفهم الاتجاهات والعلاقات. تشفير وتوسيع نطاق البيانات encoding and scaling باستخدام Pipelines. البحث عن الارتباطات بين المتغيرات. تقسيم البيانات إلى مجموعات تدريب واختبار. بناء وتقييم النموذج الكلاسيكي باستخدام Mean Absolute Error كمقياس للأداء. بناء وتقييم نموذج الشبكة العصبية باستخدام Mean Absolute Error كمقياس للأداء.
- 2 اجابة
-
- 1
-
-
تلك مرحلة طبيعية يمر بها الجميع لا تقلق، المشكلة أنك تقوم بالتطبيق مع وليس بمفردك، فالتطبيق مع الشرح لا مشكلة به، لكن ليس كافٍ ستحتاج إلى التوقف والتطبيق بمفردك لقياس مدى استيعابك وتفهمك، ولا أقصد التوقف كل دقيقة مثلاً ثم تنفيذ ما تم، بل التوقف بعد شرح جزء من الدرس، والأمر يعود لك تستطيع التطبيق مع الشرح مرة ثم إعادة ما قمت به مرة أخرى للتثبيت والمراجعة. أيضًا يجب استيعاب لماذا كتبنا الأمر بتلك الطريقة ولماذا نستخدمه وكيف نستخدمه أيضًا وكيف نربط بينه وبين ما تعلمناه سابقًا. كذلك التغيير في الكود قليلاً لفهم آلية عمله أي تغيير القيم أو تطبيق منطق خاص بك لا مشكلة وذلك أفضل حيث سيفرض عليك التركيز والتعلم. بجانب أنه يجب التدرج في التطبيق العملي أي التمرن على نماذج بسيطة ثم التدرج للتطبيق على مشروع كامل وعند العمل عليه يجب تقسيم ما تريد تنفيذه إلى مهام صغيرة وليس التفكير في المشروع أو المشكلة ككل، ولا تخف من البحث والتجربة والخطأ فستتعلم الكثير منها. ستجد تفصيل هنا:
-
الأمر طبيعي في البداية، وكل شخص له ظروفه لذا لا يوجد قاعدة ثابتة، فالبعض يتبع مبدأ السعر الرخيص في البداية والبعض الآخر يُقدر مجهوده بسعر أعلى وعادل أكثر، بالطبع على مواقع العمل الحر الغالبية تتجه لخفض سعرها للمنافسة ولا مشكلة في ذلك للحصول على أول تقييم لك، لكن بعدها خفض سعرك سيعود بالسلب عليك وأيضًا ستعمل مع نوعية عملاء ليست بالجيدة. بالطبع الأمر يعتمد أيضًا على الجودة التي تقدمها فالبعض يقدم جودة منخفض لذا تقديم سعر مُرتفع غير منطقي مقارنًة بشخص له خبرة ويقدم جودة أعلى بنفس السعر. أي الموضوع يتوقف على معرض الأعمال لديك ومستوى جودته والخبرة التي تمتلكها وهل ستقوم أنت بالتصميم والبرمجة أم البرمجة فقط، أيضًا بلد العميل وقوة العملة لديه. بشكل بسيط، في المتوسط تستطيع تحديد سعر تطوير صفحة واحدة بالموقع بسعر 25 إلى 50 دولار لكن في حال كانت ليست معقدة، ولو بها الكثير من المكونات فالسعر يرتفع بالطبع. وهناك طريقة أفضل وهي تحديد سعر ساعة العمل الخاصة بك، ثم ضرب عدد ساعات العمل المتوقعة للمشروع في سعر الخاصة بك ولتكن مثلاً 10 دولار كمثال ليس أكثر فساعات العمل تتراوح ما بين 10 إلى 50 دولار حسب الخبرة ومستوى الجودة. لكن مشكلة سعر الساعة هو أنه في البداية لن يكون لديك دراية بالمدة المناسبة للمشروع حيث ستتمكن من معرفة ذلك لاحقًا بعد تنفيذ مشاريع واكتساب خبرة، لذا تفقد الأسعار للمبرمجين الذي يعملون بنفس التقنيات على مواقع العمل الحر من حيث سعر الساعة، ثم احسب متوسط السعر وضع سعر ساعة منخفض قليلاً عن المتوسط في البداية وقدم جودة عمل جيدة أعلى من المطلوب في حال كان ذلك أول مشروع لك. ستحتاج إلى قراءة التفصيل التالي وبه مصادر وشرح بالفيديو لاستيعاب الأمر: https://io.hsoub.com/programming/103606-أيها-المبرمج-كيف-تسعر-أعمالك
- 3 اجابة
-
- 1
-
-
الأسهل لك تعلم Node.js لأنك بالفعل تعلمت أساسيات جافاسكريبت، وهي بيئة تشغيل لجافاسكريبت للواجهة الخلفية أي خارج المتصفح للعمل على السيرفر، وتعلم الإطار Express.js الخاص بها. أو يوجد حل أسرع حل من دون تطوير Back-End عن طريق خدمة Backend-as-a-Service أي واجهة خلفية ولكن عن طريق منصة في السحابة وأشهرهم Firebase أو Supabase حيث ستتصل بالواجهة الخلفية عن طريق المكتبة الخاصة بكل منصة ولو اختر firebase فيوجد مكتبة جافاسكريبت Firebase JS. ولو اضطررت لتطوير السيرفر بنفسك فاختر Node.js لأنك تعلمت أساسيات JavaScript، ولو لابد من حصر الاختيار بين PHP و Ruby فاختر PHP لسهولة التطوير من خلالها بفضل إطار لارافل الخاص بها وأيضًا يوجد الكثير من الشروحات العربية والمكتبات الجاهزة.
- 3 اجابة
-
- 1
-
-
ما ستحتاجينه هو محرر أكواد وهو vscode، أيضًا تثبيت بايثون و Node.js وكذلك برنامج لإدارة قواعد البيانات، لكن لا داعي للتفكير بشأن تلك الأدوات دفعة واحدة الآن، كل ما عليكِ فعله هو دراسة الدورة بالترتيب وسيتم توضيح كيفية تثبيت الأداة واستخدامها عندما يحين الوقت لذلك.
- 9 اجابة
-
- 1
-
-
تتوفر مكتبة 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.