لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 04/20/25 في كل الموقع
-
سلام عليكم عندما استخدم مكتبة تحويل من HTML الى PDF بلغة بايثون وضمن الخط العربي يظهر الخط العربي: <!DOCTYPE html> <html lang="ar"> <head> <meta charset="utf-8"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:wght@100..900&display=swap" rel="stylesheet"> <style> .font { font-family: "Noto Sans Arabic", sans-serif; direction: rtl; text-align: right; font-size: 18px; } </style> </head> <body> <h1 class="font">عربي </h1> <h1>english</h1> </body> </html> @app.route("/pdf") def pdf(): html = render_template("template.html") result = io.BytesIO() pisa_status = pisa.CreatePDF( html, dest=result, encoding='utf-8', link_callback=link_callback ) if pisa_status.err: return "PDF generation failed", 500 result.seek(0) response = make_response(result.getvalue()) response.headers["Content-Type"] = "application/pdf" response.headers["Content-Disposition"] = "attachment; filename=arabic.pdf" return response3 نقاط
-
السلام عليكم هو هاكل البيانات Hash tables بيتعامل ازي مع الذاكرة ؟3 نقاط
-
السلام عليكم الله يعطيكم العافية اريد المساعدة قليلاً انا وصلت لفصل بناء موقع شخصي عندما بدأت باول فيديو حسيت بشعور اني نسيان كل شيء في html &css رأيت نفسي انسخ فقط ولست اكتب شيء اعرفه اريد حل لهذه المشكلة من فضلكم لكي اصل لمستوى افضل وجزاكم الله خيراً2 نقاط
-
انا انتهيت لتو من تطوير متجر الكتروني بإستخدام Django لكن عندي استفسار عن الناحية الامنية للموقع ، يعني في المستقبل بعيدا عن مرحلة التعلم او التطوير ، لو علمت متاجر الكترونية ، كيف اضمن عدم تعرض الموقع للإختراقات و التعديل مثلا في الاسعار او الصلاحيات او قواعد اليانات ، ياريت لو في توضيح اكثر في هاي النقطة .2 نقاط
-
السلام عليكم هو انا اقدر استخدم الداله دي cv2.imshow() علي Kaggle Notebook عشان اشوف الصور ؟1 نقطة
-
الأمر ليس بسيطا وستحتاج إلى كثير من الإختبار لضمان دائما من ان الموقع محصن ضد الثغرات سواء في الكود المكتوب لديك في الموقع أو سواء في المكتبات المستخدمة و أيضا الإنتباه إلى أشهر الثغرات الموجودة. أولا يجب عليك دائما التحقق من البيانات التي تأخذها من المستخدم ولا تقوم أبدا بالإعتماد على الواجهة الأمامية (frontend) للتحقق حيث يمكن بسهولة التلاعب بها وتعطيلها . ولهذا ينبغي أن يكون تركيزك منصب بشكل كامل على الواجهة الخلفية (backend) في التحقق . فمثلا عند تنفيذ طلب شراء تأكد دائمًا في ال backend من أن السعر صحيح ولا تعتمد على الواجهة الأمامية حيث من الممكن أن يقوم المستخدم بإدخال رقم سالب . وإذا لم تتحقق وقمت بطرح الرصيد من هذا الرقم ستجد أنه سالب في سالب بموجب وهنا تجد أن الرصيد يتم إضافته وليس الخصم منه . لهذا التحقق دائما في ال backend مهم . وأيضا تحقق من الصلاحيات دائما . وينبغي عليك إدارة الصلاحيات بشكل دقيق من حيث إستخدم نظام Django’s permissions و groups لتنظيم الصلاحيات والوصول إلى الخصائص الموجودة في موقعك . فمثلا لا يمكن للمستخدم حذف رصيد أو إضافة رصيد ويجب أن تكون تلك الصلاحية للأدمن فقط . وبخصوص التلاعب في قواعد البيانات لا ينبغي أن تثق بأي مدخلات من المستخدم حيث تعامل مع جميع المستخدمين على أنهم مخترقين ولهذا يجب استخدام ال ORM الخاص بـ Django بدلا من تنفيذ استعلامات SQL مباشرة وذلك لمنع الثغرة الشهيرة وهي "SQL Injection" والتي تسمح للمستخدم بالتلاعب بقاعدة البيانات من خلال إدخال إستعلام SQL في المدخلات . أيضا تأكد من إستخدامك ل {% csrf_token %} في ال forms عند إرسال الطلبات وذلك لمنع الهجمات والثغرة الشهيرة "Cross-site request forgery" والتي تسمح للمستخدمين من إرسال طلبات من خلال موقع أخر إلى موقعك. أيضا تأكد من إستخدامك لمتغيرات البيئة "environment variables" وذلك لحفظ المعلومات الحساسة ولا تقوم بحفظها في الكود وذلك منعا لتسريب تلك البيانات الحساسة إذا تم الوصول إلى الكود في أى وقت من قبل أشخاص أخرين. وأيضا سيتوجب عليك دائما التأكد من تحديث المكتبات المستخدمة إذا كان يوجد بها أى ثغرات أمنية وذلك لمنع أى شخص من إستغلال تلك الثغرات.1 نقطة
-
أهم قاعدة هي ألا تستلم مدخلات المستخدم دونّ معالجتها أيًا كانت، فأغلب الثغرات من خلالها. وتعيين DEBUG=False في ملف الإعدادات عند النشر على الاستضافة، واستخدم متغيرات بيئية للمعلومات الحساسة، وتلك إعدادات جيدة تستطيع استخدامها: SECURE_HSTS_SECONDS = 31536000 SECURE_HSTS_INCLUDE_SUBDOMAINS = True SECURE_SSL_REDIRECT = True SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True وطبق مبدأ الصلاحيات الأدنى بعدم منح صلاحيات أكثر مما هو مطلوب بواسطة @permission_required و @login_required للتحكم بالوصول وهو نظام التصاريح الموجود في جانغو. وحافظ على تحديث Django وجميع المكتبات المستخدمة في حالة وجود تحديثات أمنية أو تحديثات ليست جذرية بحيث تؤدي إلى تغيير في كود المشروع فأحيانًا لن يكون لديك الوقت لذلك. ستجد تفصيل هنا:1 نقطة
-
وعليكم السلام ورحمة الله وبركاته. في Kaggle Notebook أو أي بيئة Jupyter Notebook عموما الدالة cv2.imshow() لا تعمل بالشكل الصحيح أو المتوقع كما تعمل على جهازك المحلي وذلك لأنها مصممة لفتح نافذة واجهة رسومية GUI وهذا الأمر غير مدعوم في واجهات Kaggle أو Google Colab. ويمكنك إستخدام matplotlib بدلا منها لتحقيق ذلك وطباعة الصور . وإليك التالي لكيفية القيام بذلك : https://www.kaggle.com/discussions/questions-and-answers/275552 وهذا الدرس من kaggle لكيفية التعامل مع مكتبة OpenCV وستجد فيه أنه يخبرك أن imshow تحدث خطأ ولا تعمل : https://www.kaggle.com/code/gauravduttakiit/getting-started-with-opencv1 نقطة
-
وعليكم السلام ورحمة الله وبركاته. هذا يعتمد على ما ستقوم به الدالة . هل ستقوم فقط بقراءة ملف وإعادة محتوياته ؟ أم ستقوم بتنفيذ كود أخر بجانب قراءة الملف . إذا كان فقط ستقوم بقراءة الملف فهنا إنشاء دالة جديدة ليس جيدا وستقوم بكتابة أكواد أكثر دون الحاجة لها . فإليك الكود مثلا بدون دالة : import pandas as pd df1 = pd.read_csv('file1.csv') df2 = pd.read_csv('file2.csv') df3 = pd.read_csv('file3.csv') وهذا هو الكود حين إنشاء دالة : import pandas as pd def load_csv(path): return pd.read_csv(path) df1 = load_csv('file1.csv') df2 = load_csv('file2.csv') df3 = load_csv('file3.csv') لاحظ كيف أنك قمت بزيادة أكواد فقط لإنشاء دالة لا حاجة لها . ولكن لو أردت تنفيذ أكواد أخرى بجانب قراءة الملف مثلا تريد التحقق من الأخطاء فيمكنك بالفعل إنشاء دالة وحينها ستكون أفضل : import pandas as pd def load_csv(path): try: return pd.read_csv(path, encoding='utf-8') except Exception as e: print(f"Error loading {path}: {e}") return None df1 = load_csv('file1.csv') df2 = load_csv('file2.csv') df3 = load_csv('file3.csv') هنا سيكون الكود أقل بالطبع وأفضل . ويمكنك أيضا إستخدام حلقة تكرار for إذا كنت مثلا تريد فتح الملفات في مجلد ما . فبدلا من كتابة المسار يدويا يمكنك إستخدام for للتكرار على ملفات المجلد مباشرة .1 نقطة
-
أعتقد لن تستطيع العثور عليه هناك حيث أنه لن يكون البيع بشكل قانوني لأن الشخص ليس هو مالك الكتاب نفسه . ولكن من الممكن أن تجد نسخ مستعملة ويتم إعادة بيعها هناك ومن الممكن بشكل كبير أن تجده مع أشخاص يريدون إعادة بيعه . توجد العديد من المواقع التي تبيعه كنسخة إلكترونية pdf يمكنك البحث عنه على google books مثلا وغالبا ستجده.1 نقطة
-
عن طريق تخصيص قطعة متجاورة من الذاكرة على الـ Heap لاستخدامها كمصفوفة، وتحتوي على دلاء buckets أو فتحات slots، وحجم المصفوفة هو أحد المحددات الرئيسية لكمية الذاكرة الأولية التي يستهلكها جدول الهاش، فيبدأ الجدول بحجم افتراضي 16 أو 32 فتحة ويتغير الحجم لاحقاً. كل فتحة تخزن إما مؤشر pointer إلى بداية قائمة كقائمة مرتبطة لو كان الجدول يستخدم طريقة السلسلة المنفصلة Separate Chaining لحل التصادمات، أو البيانات نفسها وهي المفتاح والقيمة أو مؤشر للبيانات في حال الجدول يعتمد على العنونة المفتوحة Open Addressing. ثم تخزين البيانات الفعلية على شكل أزواج مفتاح-قيمة Key-Value pairs وتحتاج أيضاً إلى ذاكرة والتي تضاف إلى الذاكرة التي تستهلكها المصفوفة الأساسية، وفي طريقة السلسلة المنفصلة، كل عنصر يتم إضافته يتم تغليفه wrap داخل عقدة قائمة list node تحتوي على البيانات الفعلية ومؤشر إلى العقدة التالية في السلسلة، وكل عقدة منها تستهلك ذاكرة إضافية للبيانات وللمؤشر. وفي العنونة المفتوحة، توضع البيانات مباشرة أو مؤشر إليها داخل الفتحات الموجودة في المصفوفة الأساسية. مع تخصيص ذاكرة إضافية لحل التصادمات إما في شكل عقد قوائم ومؤشرات في السلسلة المنفصلة، أو بالحاجة إلى مصفوفة أساسية أكبر في العنونة المفتوحة. وعندما يمتلئ جدول الهاش بدرجة معينة أي يصل عامل التحميل إلى حد معين، مثلاً 0.75، يصبح الأداء خصوصاً عمليات البحث والإضافة والحذف أسوأ بسبب زيادة التصادمات، فيحدث ما يسمى بعملية إعادة التحجيم وتتطلب تخصيص مصفوفة جديدة أكبر بكثير بشكل مؤقت قبل تحرير القديمة.1 نقطة
-
وعليكم السلام ورحمة الله وبركاته. إن هيكل البياناتHash Table بيستخدم طريقة فريدة لتنظيم البيانات في الذاكرة وحفظها بحيث يستطيع الوصول لأي عنصر بسرعة كبيرة في وقت ثابت O(1). حيث يبدأ ال Hash Table أولا بتخصيص مصفوفة (Array) في الذاكرة وكل حقل في المصفوفة يتم تخزين قيمة معينة فيه. وحجم المصفوفة يتحدد بشكل مبدأى ويمكن تكبيره عند الحاجة. بعد ذلك يتم إستخدام ما يسمى دالة التقطيع Hash Functions حيث تأخذ الدالة key الذي تريد حفظه وتقوم بتحويل المفتاح لرقم وهذا الرقم هو الindex الخاص بالمصفوفة الذي سيتم حفظ تلك القيمة فيه. وتوجد العديد من الأمور التي تقوم بها تلك الخوارزمية لتنفيذ ذلك الأمر منها التعامل مع التصادمات (Collisions) والتي تحدث في دالة ال hash والتي تعيد عدة قيم نفس ال index للمصفوفة مما يسبب مشكلة . ويمكنك قراءة التالي لمزيد من التفاصيل : https://wiki.hsoub.com/Algorithms/hashing#.D8.AC.D8.AF.D9.88.D9.84_.D8.A7.D9.84.D8.AA.D9.82.D8.B7.D9.8A.D8.B91 نقطة