-
المساهمات
13209 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
365
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
الخطأ يشير إليك بالتوجه إلى الرابط التالي لتفعيل الفواتير، وستجد المشروع الخاص بك وسيتطلب منك تفعيل الفواتير لذلك المشروع: https://console.cloud.google.com/projectselector2/billing/enable?utm_source=Docs_BillingNudge&pli=1 والجدير بالذكر أن هناك نوعان من حسابات الفواتير متاحة على منصة Google، حساب فواتير Google Cloud وحساب فواتير Google Maps Platform. ويبدو أنك قمت باستخدام حساب فواتير Google Cloud وربما يمكنك تجربة استخدام حساب فواتير Google Maps Platform لتفعيل Places API والحصول على الملأ التلقائي للأماكن. وإذا كنت تواجه مشكلة في تغيير الحساب الخاص بالفواتير للمشروع الحالي، فيمكنك إنشاء مشروع جديد وتوصيله بحساب فواتير Google Maps Platform. https://developers.google.com/maps/get-started أيضًا باستطاعتك استخدام الرابط الذي تم توفيره لإنشاء حساب فواتير Google Maps Platform، كما يمكنك التبديل بين حسابات الفواتير عن طريق تعطيل الفواتير في المشروع الحالي ، ثم تغيير حساب الفواتير وتفعيل الفواتير مرة أخرى.
-
هناك العديد من خيارات نظام إدارة المحتوى المتاحة لتطوير موقع جامعة باستخدام Laravel والأمر يتوقف على إحتياجاتك، وعلي أي حال هناك بعض الخيارات الجيد والتي تتضمن: 1- Laravel Nova: هي حزمة إضافية لـ Laravel توفر واجهة مستخدم مرنة وسهلة الاستخدام لإدارة المحتوى. يمكن للمستخدمين إضافة وتحرير المحتوى بسهولة وتخصيص الواجهة حسب احتياجات المشروع. 2- Backpack for Laravel: هي حزمة إضافية لـ Laravel توفر واجهة مستخدم مرنة وسهلة الاستخدام لإدارة المحتوى. توفر Backpack إدارة المحتوى بشكل أساسي، مع إمكانية تخصيص الواجهة والعمليات حسب احتياجات المشروع. 3- WordPress: هو نظام إدارة المحتوى الأكثر شيوعًا في العالم والذي يمكن تثبيته في Laravel باستخدام حزمة الإضافة WP-Laravel. يوفر WordPress واجهة مستخدم سهلة الاستخدام ويتيح للمستخدمين إنشاء وتحرير المحتوى بسهولة. 4- Joomla: هو نظام إدارة المحتوى آخر يمكن تثبيته في Laravel. يوفر Joomla واجهة مستخدم سهلة الاستخدام ويتيح للمستخدمين إنشاء وتحرير المحتوى بسهولة، مع إمكانية تخصيص الواجهة حسب احتياجات المشروع. 5- October CMS: هو نظام إدارة محتوى مفتوح المصدر يعتمد على لارافيل، ويتميز بتصميم جميل وواجهة مستخدم سهلة الاستخدام، ويدعم العديد من الإضافات المفيدة لتوسيع وظائفه. وبالنسبة لـ Dashboard الافتراضية في لارافيل، فهي توفر واجهة مستخدم لإدارة المشروع بشكل عام ولكنها لا توفر كل الوظائف التي يمكن أن تحتاجها في إدارة موقع جامعة، ولذلك يمكن استخدام الخيارات السابقة لتلبية المتطلبات المحددة لمشروعك. وبالطبع هناك برمجة خاصة لإنشاء نظام محتوى يلبي إحتياجاتك إذا لم تتوافر، لكن لا أظن أنك بحاجة إلى ذلك.
-
لنفترض أنك تريد إنشاء صفحة ويب لنشر أخبار على موقعك باستخدام ASP.NET. يمكنك القيام بذلك باستخدام عدة خطوات: إنشاء قاعدة بيانات: يجب عليك إنشاء قاعدة بيانات لتخزين معلومات الأخبار. يمكن استخدام أي قاعدة بيانات تدعم .NET مثل SQL Server أو MySQL. إنشاء صفحة إضافة الأخبار: يمكنك إنشاء صفحة ويب تحتوي على نموذج لإضافة أخبار جديدة. يمكن استخدام عناصر تحكم ASP.NET مثل TextBox وDropDownList وFileUpload لجمع المعلومات المطلوبة. فيما يلي مثال بسيط لصفحة إضافة الأخبار: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddNews.aspx.cs" Inherits="AddNews" %> <!DOCTYPE html> <html> <head> <title>Add News</title> </head> <body> <form runat="server"> <div> <label for="title">Title:</label> <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox> </div> <div> <label for="category">Category:</label> <asp:DropDownList ID="ddlCategory" runat="server"> <asp:ListItem Value="1">Sports</asp:ListItem> <asp:ListItem Value="2">Politics</asp:ListItem> <asp:ListItem Value="3">Entertainment</asp:ListItem> </asp:DropDownList> </div> <div> <label for="image">Image:</label> <asp:FileUpload ID="fuImage" runat="server" /> </div> <div> <label for="content">Content:</label> <asp:TextBox ID="txtContent" TextMode="MultiLine" Rows="10" runat="server"></asp:TextBox> </div> <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" /> </form> </body> </html> إنشاء صفحة عرض الأخبار: يجب عليك إنشاء صفحة لعرض الأخبار التي تم إضافتها. يمكنك استخدام عناصر تحكم ASP.NET مثل GridView لعرض الأخبار في جدول. فيما يلي مثال بسيط لصفحة عرض الأخبار: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewNews.aspx.cs" Inherits="ViewNews" %> <!DOCTYPE html> <html> <head> <title>View News</title> </head> <body> <form runat="server"> <asp:GridView ID="gvNews" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="Title" HeaderText="Title" /> <asp:BoundField DataField="Category" HeaderText="Category" /> <asp:BoundField DataField="Content" HeaderText="Content" /> </Columns> </asp:GridView> </form> </body> </html> البرمجة الخلفية: يجب عليك برمجة الصفحات الخلفية لإضافة وعرض الأخبار. فيما يلي مثال بسيط لكيفية إضافة وعرض الأخبار باستخدام ASP.NET وC#: // AddNews.aspx.cs protected void btnSubmit_Click(object sender, EventArgs e) { string title = txtTitle.Text; int category = int.Parse(ddlCategory.SelectedValue); string content = txtContent.Text; string image = ""; if (fuImage.HasFile) { string fileName = Path.GetFileName(fuImage.FileName); fuImage.SaveAs(Server.MapPath("~/images/" + fileName)); image = "~/images/" + fileName; } string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("INSERT INTO News (Title, Category, Content, Image) VALUES (@Title, @Category, @Content, @Image)", connection); command.Parameters.AddWithValue("@Title", title); command.Parameters.AddWithValue("@Category", category); command.Parameters.AddWithValue("@Content", content); command.Parameters.AddWithValue("@Image", image); connection.Open(); command.ExecuteNonQuery(); } Response.Redirect("ViewNews.aspx"); } // ViewNews.aspx.cs protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT ID, Title, Category, Content, Image FROM News", connection); DataTable table = new DataTable(); adapter.Fill(table); gvNews.DataSource = table; gvNews.DataBind(); } } } protected void gvNews_RowEditing(object sender, GridViewEditEventArgs e) { gvNews.EditIndex = e.NewEditIndex; BindGrid(); } protected void gvNews_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { gvNews.EditIndex = -1; BindGrid(); } protected void gvNews_RowUpdating(object sender, GridViewUpdateEventArgs e) { string ID = gvNews.DataKeys[e.RowIndex].Value.ToString(); string title = ((TextBox)gvNews.Rows[e.RowIndex].FindControl("txtTitle")).Text; int category = int.Parse(((DropDownList)gvNews.Rows[e.RowIndex].FindControl("ddlCategory")).SelectedValue); string content = ((TextBox)gvNews.Rows[e.RowIndex].FindControl("txtContent")).Text; string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("UPDATE News SET Title = @Title, Category = @Category, Content = @Content WHERE ID = @ID", connection); command.Parameters.AddWithValue("@ID", ID); command.Parameters.AddWithValue("@Title", title); command.Parameters.AddWithValue("@Category", category); command.Parameters.AddWithValue("@Content", content); connection.Open(); command.ExecuteNonQuery(); } gvNews.EditIndex = -1; BindGrid(); } protected void gvNews_RowDeleting(object sender, GridViewDeleteEventArgs e) { string ID = gvNews.DataKeys[e.RowIndex].Value.ToString(); string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("DELETE FROM News WHERE ID = @ID", connection); command.Parameters.AddWithValue("@ID", ID); connection.Open(); command.ExecuteNonQuery(); } BindGrid(); } private void BindGrid() { string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT ID, Title, Category, Content, Image FROM News", connection); DataTable table = new DataTable(); adapter.Fill(table); gvNews.DataSource = table; gvNews.DataBind(); } } الكود السابق يقوم بعرض الأخبار المضافة في قاعدة البيانات باستخدام GridView. ويتم استخدام SqlDataAdapter لاستعلام قاعدة البيانات وتعبئة DataTable، ثم يتم تعيين هذا DataTable كمصدر بيانات لـ GridView. بعد ذلك يتم استخدام الحدث RowEditing للسماح للمستخدم بتحرير سجل الأخبار، ثم استخدام الحدث RowUpdating لتحديث السجل بعد التعديل.
-
نرحب بك في أي وقت يا محمد وإذا كنت تريد إلغاء الإشتراك، فالسبيل الوحيد هو عن طريق التحدث إلى مركز المساعدة الخاص بأكاديمية حسوب، وسيتم الرد عليك لا تقلق. وإذا كنت تواجه أي مشكلة في الدورات أو تريد فهم شيئًا ما فلا تتردد في السؤال. تحياتي.
- 3 اجابة
-
- 1
-
مرحبًا @محمد بن حبيش يمكنك التواصل مع مركز المساعدة بخصوص طلبك، ثم الإنتظار وسيتم الرد عليك بلا شك، لذلك أرجو من الإنتظار. ولكن هل يوجد مشكلة تواجهك تريد لها حل؟ تحياتي.
- 3 اجابة
-
- 1
-
بالتأكيد، وربما يجب عليك تعلم لارافيل فهي تعطي أفضلية كبيرة، حيث ستجد الكثير من الوظائف التي تقبل مبرمج لارافيل بمستوى Junior وأيضًا كم كبير جدًا من الوظائف على مواقع العمل الحر. وبخصوص Node.js فهي سهلة التعلم فخلال شهر أو أقل تبعًا لقدرتك ومستواك، ستتمكن من تعلمها فعلى أي حال أنت قد تعلمت لغة JS بالفعل، وستتعلم بيئة العمل وقاعدة البيانات فقط.
- 7 اجابة
-
- 1
-
في البداية هناك تفاوتات كبيرة في المميزات والعيوب والاستخدامات المناسبة. Node.js Node.js هو إطار عمل مبني على محرك JavaScript V8، ويستخدم لبناء تطبيقات الويب الحديثة التي تعتمد على الوقت الحقيقي والإرسال المستمر للبيانات، وغالبًا ما يستخدم في تطبيقات الشبكات والدردشة والألعاب الحية وتطبيقات الميديا. وبالتالي تتميز Node.js بالسرعة والقدرة على التعامل مع حمولات عالية والتحكم في الإدخال/الإخراج. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة. Laravel Laravel هو إطار عمل PHP شائع ويستخدم لبناء تطبيقات الويب المتكاملة. ويتميز Laravel بسهولة الاستخدام والمرونة والتحكم الكبير في قواعد البيانات. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة، وتدعم Laravel البرمجة الكائنية ونظام توجيه متقدم ويتكامل بسلاسة مع مكتبات الجافاسكريبت. ولذلك عندما يتعلق الأمر بالأداء، فإن Node.js يتفوق على Laravel، حيث تعمل Node.js بشكل متزامن ويمكنها التعامل مع عدد كبير من الطلبات بسرعة عالية، بينما يعمل Laravel بشكل متزامن وقد يتأخر في التعامل مع حمولة عالية من الطلبات. ومع ذلك، فإن Laravel يتميز بتوفير العديد من الأدوات والمكتبات التي تسهل عملية التطوير، ويعتبر من أفضل إطارات العمل لبناء تطبيقات الويب المتكاملة. لكن الأمر ليس بتلك البساطة، فهناك الكثير من العوامل التي لم يتم ذكرها وستؤثر على إختيارك. فبالنسبة لمشروع كبير يحتوي على معاملات حساسة وكبيرة، فإنه يمكن استخدام كلا الإطارين، ولكن يجب اختيار الإطار الذي يتناسب مع احتياجات المشروع بشكل أفضل. على سبيل المثال، إذا كانت سرعة الاستجابة والقدرة على التعامل مع الطلبات الكبيرة هي الأولوية، فقد يكون Node.js الخيار الأفضل. ومع ذلك، إذا كانت المتطلبات تتطلب القدرة على العمل مع قواعد بيانات كبيرة ومعقدة وإمكانية الوصول إلى المعلومات بسهولة، فقد يكون Laravel الخيار الأفضل. ومع ذلك، يجب ملاحظة أن الأداء ليس العامل الوحيد الذي يجب النظر إليه، بل يجب أيضًا النظر إلى المرونة والملاءمة للاحتياجات المحددة للمشروع كما أشرت.
- 7 اجابة
-
- 1
-
إذا أردت نصيحتي فالأفضل عدم الإنتظار والبدء من الآن، ولن تجد مصدر مجاني أفضل من قناة ZAmerican English أو قناة طليق، وقناة طليق مخصصة لمن يريد تحدث الإنجليزية بطلاقة، أما إذا كنت تريد دراسة الإنجليزية بالتفصيل فقناة ZAmericanEnglish هي الأفضل. وبخصوص المنح الدراسية، فالأمر يعتمد على مكان تواجدك، فبعض البلدان بها منح مجانية وأخرى من الصعب العثور على منح بها، لذلك يجب معرفة البلد التي تقيم بها، وإذا كنت في منطقة الخليج فستجد الكثير من المنح. وفي البداية قبل البدء في التعلم يجب عمل إختبار لتحديد مستواك في اللغة، وهناك العديد من المواقع والتطبيقات، ومنها تطبيق British Council EnglishScore أو موقع اللغة الإنجليزية التابع لـ جامعة كامبريدج. بعد ذلك يجب وضع خطة بوقت محدد يتم الإلتزام بها بشكل يومي وستجد تحسن بلا شك، والأهم في تلك المرحلة هما الكتابة ثم التحدث طالما أنك بمستوى متوسط.
-
بخصوص إنشاء مخطط أو رسم بياني في OriginPro، باستطاعتك اتباع الخطوات التالية: اختر النوع المناسب للمخطط أو الرسم البياني من القائمة الرئيسية لـ OriginPro. على سبيل المثال، يمكنك اختيار "Line + Symbol Plot" لإنشاء مخطط خطي بنقاط. اختر البيانات التي تريد عرضها في المخطط أو الرسم البياني. يمكنك استيراد بيانات من ملفات خارجية أو استخدام البيانات التي تم إدخالها بواسطة OriginPro. ثم اختر الخيارات المناسبة للمخطط أو الرسم البياني، مثل الألوان والخطوط والمحاور والتسميات وغيرها. ويمكنك إجراء التعديلات اللازمة للمخطط أو الرسم البياني، مثل تغيير الألوان أو الخطوط أو تحريك العناصر. قم بحفظ المخطط أو الرسم البياني عند الانتهاء من تعديله، باستخدام الأمر "File > Save" من القائمة الرئيسية. ويمكنك العثور على مزيد من المصادر والمعلومات حول OriginPro وكيفية استخدامها في الدليل الرسمي للمستخدم الذي يتضمنه البرنامج.
-
بالطبع من الممكن أن تكون المشكلة هي بطء الاتصال بالإنترنت الخاص بك. فيجب التأكد من إتصال الإنترنت بعمل إعادة تشغيل للراوتر أو تجربة إتصال إنترنت آخر أو تشغيل VPN أو تغيير إعدادات الـ DNS الخاصة بإتصال الإنترنت إلى: 1.1.1.1 1.0.0.1 يمكنك أيضًا المحاولة باستخدام الأمر التالي بدلاً من استخدام npm init react-app: npx create-react-app my-app ,هذا الأمر يعمل على تثبيت مشروع React جديد دون الحاجة إلى استخدام npm init react-app. والأفضل استخدام Vite في تثبيت react فهو أسرع بمراحل من webpack الذي يتم تثبيته عند استخدام الأمر npx create-react-app my-app. ولاستخدام Vite لتثبيت React قم باستخدام الأمر التالي: # npm في حالة الإصدار 6 من npm create vite@latest my-react-app --template react # npm في حالة الإصدار 7 أو أعلى من npm create vite@latest my-react-app -- --template react مع استبدال my-react-app باسم المشروع الخاص بك.
- 4 اجابة
-
- 1
-
يمكنك استخدام طريقة مشابهة باستخدام Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق. فيما يلي مثال على ذلك: // إنشاء ملف PDF باستخدام PdfDocument PdfDocument pdfDocument = new PdfDocument(); // قم بإضافة صفحات PDF هنا // إنشاء Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق Intent intent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type intent.setType("application/pdf"); // استخدام ContentProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", pdfFile); // تحديد الملف المراد فتحه intent.setData(uri); // تحديد عنوان النشاط intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // تمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // بدء النشاط لفتح الملف try { startActivity(intent); } catch (ActivityNotFoundException e) { // إذا لم يتم العثور على تطبيق PDF، قم بإنشاء كائن Intent جديد لفتح رابط تحميل التطبيق من متجر التطبيقات Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.adobe.reader")); startActivity(marketIntent); } تم استخدام FileProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق وتمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف. ويرجى ملاحظة أن استخدام FileProvider يتطلب إنشاء ملف ملفات موفر وتعريفه في ملفات التهيئة الخاصة بالتطبيق. ولعمل ملف موفر، يجب تعريفه في ملف التهيئة الخاص بالتطبيق الخاص بك. يمكنك القيام بذلك عن طريق إنشاء ملف جديد بالاسم file_paths.xml ووضعه في المجلد res/xml في مشروع Android الخاص بك. يمكن استخدام الكود التالي كمثال لتعريف ملف موفر في file_paths.xml: // Get the file File file = new File(getFilesDir(), "my_file.txt"); // Get the FileProvider String authority = "com.example.package.fileprovider"; Uri uri = FileProvider.getUriForFile(this, authority, file); // Use the Uri to access the file كما ترى تم الحصول على Uri لملف باستخدام FileProvider. ويجب تغيير com.example.package.fileprovider إلى اسم الموفر الخاص بتطبيق Android الخاص بك. يمكن استخدام الـ Uri المسترد للوصول إلى الملف بطرق مختلفة، مثل استخدام Intent لفتح الملف أو استخدام ContentResolver لقراءة محتويات الملف. ولمزيد من المعلومات عن استخدام FileProvider في تطبيق Android الخاص بك، يمكنك الاطلاع على الوثائق الرسمية لـ Android Developer.
-
يجب أولاً الإشارة إلى أنه يتم التحكم في المحتوى والتصميم باستخدام لغتي HTML و CSS معًا وليس CSS فقط، لذلك يجب الإنتباه إلى طريقة بناء العناصر باستخدام HTML. لذلك إذا قمت ببناء العناصر بشكل جيد وقمت باستخدام Grid و Flex وبالأخص Grid بشكل صحيح، ستقل نسبة استخدامك للـ Media Query بشكل كبير جدًا، وذلك يعرف باسم Fluid Layouts. ولكي لا أعيد ما قلته سابقًا، أنصحك بشدة بقراءة المقالات والنقاشات التالية:
-
يمكنك استخدام الكود التالي: const filtered = (selected.length === 0) ? products : products.filter(item => selected.includes(item.category)) وبهذا الشكل، إذا لم يتم تحديد أي صنف، فستعود المنتجات كما هي، وإذا تم تحديد أي صنف، فسيتم تصفية المنتجات بناءً على الصنف المحدد. بالنسبة للمتغيرات الإضافية التي كنت قد استخدمتها سابقًا، يمكنك الاستغناء عنها بسهولة من خلال تطبيق العبارة السابقة مباشرة في الدالة الخاصة بالفلترة.
- 4 اجابة
-
- 1
-
يمكن تنفيذ ما تريد باستخدام Intent في اللغة Java لفتح ملف PDF بعد إنشائه باستخدام Pdfdocument. يمكنك استخدام التالي كنموذج لفتح الملف: // تحديد مسار الملف String filePath = "path/to/your/file.pdf"; // إنشاء كائن Intent Intent pdfIntent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type pdfIntent.setType("application/pdf"); // تحديد الملف المراد فتحه pdfIntent.setData(Uri.fromFile(new File(filePath))); // تحديد عنوان النشاط pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // بدء النشاط لفتح الملف try { startActivity(pdfIntent); } catch (ActivityNotFoundException e) { // إذا كان لا يوجد تطبيق مثبت لعرض ملفات PDF، قم بإظهار رسالة خطأ Toast.makeText(getApplicationContext(), "No Application available to view PDF", Toast.LENGTH_SHORT).show(); } يرجى ملاحظة أن هذا الكود يعمل على افتراض أن لديك تطبيق PDF مثبتًا على جهاز الهاتف المحمول الخاص بك. في حالة عدم وجود تطبيق PDF مثبت، يمكن توجيه المستخدمين إلى تنزيل تطبيق PDF من متجر التطبيقات. وباستطاعتك توجيه المستخدمين لتنزيل تطبيق PDF من متجر التطبيقات باستخدام Intent ورابط متجر التطبيقات. استخدم التالي كنموذج لإظهار رسالة تحتوي على رابط تنزيل تطبيق PDF: // تحديد مسار الملف String filePath = "path/to/your/file.pdf"; // إنشاء كائن Intent Intent pdfIntent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type pdfIntent.setType("application/pdf"); // تحديد الملف المراد فتحه pdfIntent.setData(Uri.fromFile(new File(filePath))); // تحديد عنوان النشاط pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(pdfIntent); } catch (ActivityNotFoundException e) { // إذا لم يتم العثور على تطبيق PDF، قم بإنشاء كائن Intent جديد لفتح رابط تحميل التطبيق من متجر التطبيقات Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.adobe.reader")); startActivity(marketIntent); } في المثال أعلاه، يتم إنشاء Intent جديد يحتوي على رابط تنزيل تطبيق PDF من متجر التطبيقات (Adobe Acrobat Reader)، ثم يتم بدء النشاط لفتح هذا الرابط. يمكن تغيير رابط التنزيل وفقًا لتطبيق PDF المستخدم على جهاز المستخدم.
-
الأفضل والأسهل لك، هو إعادة دراسة أساسيات إطار لارافيل و PHP وستتمكن من تنفيذ المشروع فهو بسيط، ويمكنني إرشادك لطريقة التنفيذ: قم بإنشاء قاعدة بيانات جديدة لمشروعك. ثم تثبيت Laravel باستخدام Composer. يمكنك فعل ذلك بفتح محرر الأوامر وكتابة الأمر التالي: composer create-project --prefer-dist laravel/laravel myeventapp عرف نموذج (Model) للحدث (Event) باستخدام الأمر الآتي: php artisan make:model Event ثم قم بإنشاء جدول لجدول الأحداث باستخدام مهمة التحولات (Migrations) باستخدام الأمر الآتي: php artisan make:migration create_events_table الآن عرف حقول بجدول الأحداث في ملف التحول (Migration) الخاص بك، على سبيل المثال: التاريخ، الوقت، اسم الحدث، ووصفه. قم بتحديد العلاقة بين حدث (Event) والمشتركين (Subscribers) بإنشاء نموذج جديد: php artisan make:model Subscriber ثم قم بإضافة حقول الاسم والبريد الإلكتروني في الملف التحول الخاص بهذا النموذج. قم بإنشاء عملية تحكم (Controller) للأحداث باستخدام الأمر التالي: php artisan make:controller EventController قم بإنشاء عرض (View) للأحداث في المسار resources/views/events.blade.php و قم بتحديثه بتفاصيل الحدث المتوفرة في قاعدة البيانات. قم بإنشاء عرض (View) لتسجيل المشتركين في الحدث في المسار resources/views/subscribe.blade.php. في عملية تحكم (Controller) الخاصة بتسجيل المشتركين، اضف المنطق اللازم لتخزين بيانات المشترك في قاعدة البيانات. أخيرًا، قم بإضافة مسارين (routes) في ملف routes/web.php، الأول لعرض صفحة الحدث، والثاني لتسجيل المشتركين في الحدث.
-
في البداية عمل Debugging لكود CSS يتطلب رؤية أين تقع المشكلة ولذلك أول خطوة هي حين يتعثر عليك العثور على المشكلة هو وضع الكود التالي داخل ملف CSS الخاص بالصفحة: * { outline: 1px solid rgb(128 34 199); } ولعلك تتسائل، ماهذا الكود أو ربما ما سبب استخدام outline بدلاً من border؟ الصورة خير مثال، فالكود السابق يقوم بوضع outline لجميع العناصر، وبذلك تصبح قادر على معرفة أين تقع المشكلة. حيث يتم استخدام الـ "outline" بدلاً من border لأنه لن يضيف حجمًا إلى الـ "DOM size" الخاص بللعنصر. وإضافة "border" سيؤدي إلى تغيير مظهر العنصر إذا كان يستخدم "border" بالفعل ، وقد يسبب بشكل خاطئ مشكلات إضافية في الفراغات. والهدف من استخدام الـ "outline" هو إظهار حدود العنصر وتصور كيفية تضمين العناصر داخل بعضها البعض. على سبيل المثال، إذا كانت الفراغات تسبب تمريرًا overflow غير متوقع للشريط الأفقي، فإن الـ "outline" يمكن أن يساعد في إظهار العنصر الذي يسبب هذا التمرير overflow . أسباب شائعة لمشاكل CSS الخطوة التالية بعد الخطوة السابقة في عملية تصحيح الأخطاء هي التوقف وتحديد السبب الرئيسي للمشكلة. ومن تجربتي، تعتبر مشاكل تخطيط CSS تتسبب في واحدة من الفئات التالية: تجاوز المحتوى من الأصل الذي ينتمي إليه Overflow مما يؤدي إلى ظهور أشرطة تمرير إضافية أو ظهور المحتوى خارج منطقة العرض العادية. الوراثة غير المتوقعة للتنسيقات بسبب عدم التوافق مع المتصفح الأمر الذي يؤدي إلى نتائج مختلطة عبر المتصفحات والأجهزة. وراثة غير متوقعة من ملف التنسيق cascade حيث يتم استبدال العديد من الأنماط الأخرى في أسفل الملف أو بسبب استخدام نفس الخاصية مع إختيار خاطيء للعنصر أو الكلاس، مما قد يسبب مشاكل في التنسيق والتباعد وغيرها. خطأ في التنسيق بسبب تغييرات في هيكل وتركيبة عناصر HTML المتصلة بعناصر CSS. فعلى سبيل المثال، إذا قمت بإضافة عنصر HTML إضافي بشكل غير متوقع داخل عنصر CSS، فقد يتم تطبيق التنسيق الخاطئ على العنصر المضاف حديثًا. وهذا يمكن أن يؤدي إلى مشاكل في التنسيق وعرض غير متوقع للصفحة. عدم فهم خواص CSS وطريقة عملها بشكل كافي مما يؤدي إلى مشاكل متداخلة في التنسيقات، بسبب استخدام خاصية بشكل خاطيء أو استخدام في غير محله. نصائح عامة لإصلاح الأخطاء عند حدوث خطأ ما في CSS الخاص بك ، يمكنك البدء بإستخدام أدوات التطوير المدمجة في المتصفح المفضل لديك للقيام بالأتي: 1- حذف التنسيقات واحدة تلو الأخرى من خلال عمل comment لها باستخدام الإختصار CTRL +/ في محرر النصوص البرمجية VS code. 2- إيقاف تشغيل جميع التنسيقات وإعادة تفعيل كل تنسيق على حدى لرؤية أين تقع المشكلة أو متى تحدث. 3- حذف عناصر HTML أو نقلها لرؤية ما العنصر الذي يسبب المشكلة.
-
وعليكم السلام، أرجو منك قراءة الدليل التالي لتثبيت بايثون 3 على macOS، وإذا واجهتك أية مشاكل لا تتردي في السؤال هنا.
- 1 جواب
-
- 1
-
الأسئلة الإمتحانية لا يتم الإجابة عليها، ولكن يمكن إرشادك لطريقة الحل. إليك شرح الخطوات التي يمكن استخدامها لحل هذا السؤال: بدايًة، نحتاج إلى استخدام الأمر Console.ReadLine() لجلب مصفوفة ثنائية الأبعاد المدخلة من المستخدم. سيقوم هذا الأمر بقراءة النص الذي تم إدخاله من قبل المستخدم عبر واجهة سطر الأوامر. بعد ذلك، يجب تحويل النص إلى مصفوفة ثنائية الأبعاد من الأعداد الصحيحة. يمكن استخدام الأمر Split() لتحويل النص إلى مصفوفة من الأعداد الصحيحة، ثم تحويل هذه المصفوفة إلى مصفوفة ثنائية الأبعاد. الآن، يجب البحث في المصفوفة عن الصف الذي يحتوي على أكبر مجموع C#. يمكن استخدام حلقة for للانتقال عبر كل صف في المصفوفة، ثم استخدام حلقة for آخرى للانتقال عبر كل عنصر في الصف. أثناء التحقق من الصف، يجب حساب مجموع C# لكل صف. يمكن استخدام الأمر foreach لحساب مجموع الصف، حيث سنقوم بجمع كل عنصر في الصف ثم تخزين النتيجة في متغير. بمجرد الانتهاء من حساب مجموع الصف، يمكن مقارنته بأكبر مجموع C# حتى الآن. إذا كان مجموع الصف الحالي أكبر من أكبر مجموع C# الحالي، فسنحفظ رقم الصف الجديد. في غير ذلك، سنستمر في البحث في الصفوف الأخرى. بمجرد الانتهاء من البحث في المصفوفة، سنقوم بإرجاع رقم الصف الذي يحتوي على أكبر مجموع C#. في النهاية، يمكن استخدام الأمر Console.WriteLine() لإرجاع رقم الصف الذي يحتوي على أكبر مجموع C
-
بجانب ما ذكره أسامة، فالخوف الذي تشعر به يشعر به الغالبية في البداية وأقدر ذلك، فالأمر من الخارج وفي بداية الطريق يثير القلق عند عدم إمتلاك المعرفة الكافية، وخاصًة مع سيل الأخبار المنهمر حول الذكاء الإصطناعي AI وعن أنه سيقوم باستبدال الكثير من الوظائف. إجابة واضحة وبسيطة، في الوقت الحالي لا، أما في المستقبل فنعم. بخصوص المبرمجين سيوفر الذكاء الاصطناعي القيام بعبء المهام السائدة والتي تم حلها من قبل ومعروفة، وسيترك لك دفة إتخاذ القرار وتصحيح الأخطاء وحل المشاكل والتفكير في الأمور المعقدة في المشروع. وفي الوقت الحالي لم يصل بعد لتلك المرحلة حتى، فهو مجرد أداة مساعدة لزيادة إنتاجيتك، وتوفير الوقت لكن لا تعتمد عليه أبدًا في بداية تعلم البرمجة وإجعله الملاذ الأخير بعد البحث والقراءة فلا تحرم نفسك كم المعلومات التي ستتحصل عليها جراء ذلك، وأيضًا ستعرف ما هي المصادر التي تحصل منها على المعلومات، وبذلك تصبح شخص ذو خبرة قادر على تنفيذ المشاريع بمفرده، ويقل إعتمادك على الغير. وستجد إجابات مفصلة في النقاش الذي قام أسامة بإرفاقه، وتذكر دائمًا لا تحارب الأدوات في مجال التنقية بل تعلمها واستفد منها أقصى استفادة، وبذلك لن تتخلف ويتم إهمالك، فأصحاب الأعمال والمشاريع يردون شخص قادر على إنجاز المهام ويستعمل الأدوات التي تسهل عليه مهمة القيام بذلك. وبخصوص تعلم الأمن السيبراني فقد أجبت على نفس السؤال سابقًا، أرجو قراءة الإجابة هنا: وهناك أمر هام، قم بتعلم المجال المطلوب في سوق العمل لديك أو على مواقع العمل الحر، فإن كان مجال الأمن السيبراني مطلوب في سوق العمل لديك فلا مشكلة.
-
عزيزي محمد، سأجيبك في سطرًا واحد، يمكنك الذهاب الآن إلى ChatGPT وأخبره أنك تريد إنشاء مشروع معين وتريد الكود، وشاهد فشله في توفير كود صحيح بنسبة 100% بل هو قادر على تنفيذ مشاريع بسيطة جدًا، ومساعدتك وتوفير وقتك في المشاريع المتوسطة والكبيرة. حيث يجب فهم الأمر بشكل صحيح بدلاً من الخوف والذعر من تقنيات الذكاء الاصطناعي، يجب فهم ما هي تلك التقنيات وما هو شكل المستقبل القادم؟ بالعودة إلى الماضي يمكن فهم المستقبل فالأمر نفسه يتكرر، فمثلاً بعد إنتشار الهواتف الذكية والحواسيب تم التخلص من الكثير من المهام الروتينية واستبدال وظائف أشخاص كثيرين، فتلك هي ضريبة التطور التقني والرأس مالية أيضًا. والتي تقوم على تعظيم الأرباح، لذلك أنت بحاجة إلى تطوير نفسك لتصبح مبرمج محترف حقًا، وليس مجرد مستخدم لإطار عمل أو تقنية معينة، أي يجب أن تفهم أساسيات البرمجة بشكل جيد جدًا. وذلك لتتمكن من حل المشاكل الصعبة والمعقدة التي يصعب على الـ AI القيام بها وفهمها، أما المهام السهلة فسيتولى هو تنفيذها لك لتسريع عملية التطوير وتوفير وقتك للمشاكل والأمور الأهم في عملية التطوير. وحاليًا نحن لم نصل لتلك المرحلة، بل الأمر في بداياته ولكن يتطور بسرعة كبيرة جدًا، أي يجب النظر للذكاء الاصطناعي على أنه مساعد لك يتم توجيه من قبلك لتنفيذ بعض المهام بدلاً منك فمن خلاله يمكنك تنفيذ ما يتطلبه شخصان للقيام به بمفردك. وحاليًا ChatGPT يعتمد عليك في توجيهه أي لا يمكنك كتابة أعطني كود لتنفيذ مشروع معين ويقوم هو بتلك المهمة، بل سيعود لك بكود للمشروع وبه أخطاء يجب عليك إصلاحها أو إخباره بإصلاحها، لذلك لا تعطيه الثقة 100% أبدًا مهما تطور. وبالطبع مع الوقت تقل نسبة الأخطاء، لكن في المشاريع المعقدة هو غير قادر على فهم وربط أجزاء المشروع، لذلك أخبرتك يجب أن تصبح مبرمج بمعنى الكلمة وتركز على فهم أساسيات اللغة التي قمت بإختيارها.
-
الخطأ يتعلق بشكل الرابط الذي تستخدمه في baseURL. يجب أن يكون الرابط الذي تستخدمه في baseURL مكتوب بشكل صحيح ومتوافق مع بروتوكول HTTPS. بما أنك تستخدم خدمة MyFatoorah فإن الرابط الصحيح يجب أن يكون كالتالي تبعًا للمستندات الخاصة ببوابة الدفع: Live API URL Except For Saudi Arabia: https://api.myfatoorah.com Live API URL for Saudi Arabia: https://api-sa.myfatoorah.com فكما تلاحظ هناك API لدولة السعودية وآخر لجميع الدول ماعدا السعودية. ويمكنك الإطلاع على المستندات الخاصة ببوابة دفع MyFatoorah للمزيد من التفاصيل والشرح، وهو ما أنصحك بفعله دائمًا.
-
في البداية يجب توضيح أن بعض الطلاب لديهم رهبة من التقدم للإمتحان، ويعتبر الخوف من عدم الإجابة بشكل صحيح في امتحان البرمجة غير مبرر، حيث يمكنك إجراء الامتحان عدد لا يحصى من المرات. ولا يوجد محدد لإنتهاء الدورة، لكن ذلك لا يعني التكاسل والتراخي بل أرجو منك تحديد فترة زمنية واقعية وهي 6 شهور إلى سنة حسب مستواك وحسب ساعات الدراسة اليومية، فعدم تحديد فترة للإنتهاء من الدورة سيعني عدم نجاحك في إكمالها بنسبة كبيرة. ويجب معرفة أن الشهادة في مجال البرمجة لا تمتلك قيمة كبيرة، حيث أن الشركات تهتم أكثر بالمشاريع التي تم إنجازها. ويجب أن يتم التركيز على المشاريع بدلاً من الشهادات. لذلك أرجو منك عدم الإسراع في إنهاء الدورة دون الاستفادة منها، فالأمر الأهم هو فهم المفاهيم المطروحة بشكل صحيح. في حال عدم فهم درس معين، يمكنك البحث عن شرح لهذا الدرس في أكاديمية حسوب أو موسوعة حسوب أو طرح السؤال للإجابة علي، ولا يجب أن يكون هدفك هو الامتحان والنجاح به، ولكن الهدف الأساسي هو الخبرة وفهم المفاهيم المطروحة، وتطبيقها عمليًا. أيضًا أنصحك بأخذ الوقت الكافي لفهم الأفكار الجديدة وتطبيقها بشكل عملي أكثر من مرة حتى تتمكن من بناء المشاريع البرمجية بنفسك بعد إنتهاء الدورة. وستحتاج إلى فهم Git و منصة GitHub بشكل جيد لرفع المشاريع الخاصة، وأنصحك بقراءة النقاشات التالية فالإجابات بها ستسهل عليك الأمر كثيرًا. بالتوفيق إن شاء الله.
-
يمكنك إلغاء خاصية الـ Snap to Point في Adobe Illustrator عن طريق القيام بالتالي: اختاري أداة Selection Tool من شريط الأدوات. اضغطي على مفتاح الـ Ctrl (أو Cmd على Mac) واضغطي على زر "K" على لوحة المفاتيح. سيتم فتح نافذة Preferences. في النافذة المفتوحة، انتقلي إلى القائمة الجانبية على اليسار واختاري "Selection & Anchor Display". تحت "Snap to Point"، قومي بإلغاء تحديد الخانة المجاورة لها. انقري على "OK" لحفظ التغييرات. بهذا، يتم إلغاء خاصية الـ Snap to Point ويمكنك الآن تحريك الأشكال دون تقييد في الحركة داخل نطاق معين.
- 1 جواب
-
- 1
-
بجانب ما تم ذكره، فهناك بعض التوضحيات التي يجب ذكرها: يتم استخدام خاصية float لتحقيق تصميمات متعددة، مثل إنشاء صناديق أو عمودين يمتدان بجوار بعضهما البعض، وكذلك تقسيم الصفحة إلى أجزاء متعددة مع تحريكها بشكل مستقل. بالإمكان تحديد قيمة الخاصية float على اليسار أو اليمين، ويتم تحريك العنصر إلى تلك الجانب، بحيث يتم إضافة العنصر التالي على نفس الجانب إذا كان متاحاً. ويمكن استخدام خاصية clear لإزالة الخاصية float عند نهاية عنصر معين، والتأكد من أن العنصر التالي يظهر بشكل صحيح في المكان المطلوب. من المهم الاهتمام بالترتيب الصحيح للعناصر المطفوة، حيث يمكن أن يؤدي الاختلاط بين العناصر المطفوة وغير المطفوة إلى أخطاء في تصميم الصفحة، وتحديداً في تواجد العناصر النصية والصور في الأماكن المطلوبة. يجب تجنب استخدام خاصية float بشكل كبير، حيث يمكن أن تؤدي إلى مشاكل في التصميم مثل فراغات غير متوقعة بين العناصر، وكذلك صعوبة التعامل معها في تصميم المواقع المتجاوبة. وإليك أمثلة على ما تم ذكره: 1- تصميم صندوقين على جانبي الصفحة باستخدام float: <div style="float:left;width:50%;">Box 1</div> <div style="float:right;width:50%;">Box 2</div> 2- تحديد الخاصية float على اليمين: <img src="example.jpg" style="float:right;"> 3- استخدام خاصية clear لإزالة الخاصية float: <div style="float:left;width:50%;">Content</div> <div style="clear:both;"></div> <div>Next content</div> 4- ترتيب العناصر بشكل صحيح عند استخدام float: <div style="float:left;">Image</div> <div style="float:right;">Text</div> <div style="clear:both;"></div> 5- تجنب استخدام float بشكل كبير واستخدام التقنيات الحديثة مثل Flex و Grid: <div style="display:flex;"> <div style="flex:1;">Content 1</div> <div style="flex:1;">Content 2</div> <div style="flex:1;">Content 3</div> </div> كما أشرت، فاستخدام خاصية float يمكن أن يسبب بعض المشاكل مثل التداخل مع عناصر أخرى في الصفحة، ويمكن تجنب هذه المشاكل عن طريق استخدام الخيارات الأخرى المتاحة. ومع ذلك، فإن الخاصية ما زالت مفيدة في بعض الحالات، ويجب على المصممين الويب فهم كيفية استخدامها بشكل صحيح وفقًا للحاجة. وأنصحك بقراءة النقاشات التالية، فهي ستجيب على كافة تساؤلاتك. الخاصية float في موسوعة حسوب
- 5 اجابة
-
- 1