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

سامح أشرف

الأعضاء
  • المساهمات

    2934
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    56

كل منشورات العضو سامح أشرف

  1. يمكن إسعمال نفس طريقة إضافة عنصر جديد للفاموس لتغير قيمة موجودة مسبقًا mobiles = { 'mobile1': {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} , 'mobile2': {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000} } # change value mobiles['mobile1']['model'] = 'New Model' ويمكن أيضًا إستخدام جملة del لحذف السعر كالتالي: # delete item del mobiles['mobile2']['price']
  2. يجب أن تكون كلًا من mobile1 و mobile2 بين علامتين تنصيص، قمت بتعديل الكود الذي أرفقته في الأعلى.
  3. في بايثون يمكن أن يتم إضافة عنصر جديد بالشكل التالي: mobiles = { 'mobile1': {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} , 'mobile2': {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000} } # dictionary['key'] = value mobiles['mobile3'] = {'Company':'Samsung', 'model':'XR', 'OS':'Android', "price":50000} يمكن أيضًا فعل نفس الشيء لإضافة عنصر فرعي في كل موبيل.
  4. يمكنك الإطلاع على الكثير من فيديوهات تثبيت توزيعات لينكس على اليوتيوب مثل هذا الفيديو، لكن الشروحات قد تختلف من توزيعة إلى أخرى، إن لم تكن تعرف أي توزيعة عليك أن تختار فيمكنك أن تلقي نظرة على هذه المقالة: الدليل النهائي لاختيار توزيعة لينكس إن أردت المزيد من المعلومات حول لينكس يمكنك أن تطلع على مقالة ألف باء أساسيات التعامل مع لينكس. يفضل أن تقوم بتثبيت أحدى توزيعات لينكس في نظام وهمي أولًا حتى تتأقلم عليه وتستطيع التعامل معه، ويمكنك فعل ذلك بإستخدام برامج مثل Virtualbox.
  5. يمكنك التأكد من وجود قيمة معينة من خلال إستخدام التابع values لجلب كل القيم الموجودة في القاموس dictionary كالتالي: x = {'a' : 100, "b": 200, "c":300} # نقوم بتحويل كل القيم إلى قائمة values = list(x.values()) print(200 in values) # True
  6. يجب أن تقوم بالتطبيق على ما تعلمته خلال الدورة بالكامل من خلال عمل بعض الأعمال والمشاريع الخاصة بك، ووضع هذه المشاريع في معرض أعمالك في أحد المواقع أو رفعها على GitHub، إن لم يكن لديك أفكار لمشاريع حاليًا تستطيع أن تقوم بتطبيق فكرة مشروع من أحد مواقع العمل الحر مثل مستقل أو غيرها (مجرد تطبيق للمشروع لتضعه في معرض أعمالك وليس لتقدم على الوظيفة نفسها)، بعد القيام بعمل عدد من المشاريع المنفصلة والتي وضعت فيها كل مهاراتك سيمكنك أن تقوم بفتح حساب في أحد مواقع العمل الحر والبدء في إرسال عروض العمل على المشاريع التي يمكنك القيام بها. أنصحك أن تقدم عرض واحد أو عرضين كحد أقصى يوميًا. قد يتطلب من الأمر وقت طويل جدًا لتلقي أول عمل لك، خلال هذه الفترة عليك أن تطور من مهاراتك وأن تتابع المجال الذي تتخصص فيه من خلال قراءة المقالات ومعرفة آخر الأخبار الخاصة به. بالتوفيق.
  7. يوجد ثلاث طرق فقط لتطبيق خواص CSS مع صفحة HTML: وضع الخصائص في العناصر مباشرة بإستخدام الخاصية style، مثال: <p style="color:red; font-size:2rem;">Some Content</p> عمل عنصر style في داخل العنصر head، ثم وضع كل خصائص CSS فيه مع تحديد العناصر التي ترغب في تطبيق هذه الخواص عليها، مثال: <html> <head> <title>Page Title</title> <style> p { color: red; font-size: 2rem; } a { color: white; background-color: black; } </style> </head> <body> <p>some content</p> <a href="https://google.com/">Go to Google</a> </body> </html> عمل ملف بصيغة CSS وكتابة كل خصائص CSS فيه مباشرة (بدون كتابة الوسم style)، ثم ربط هذا الملف بصفحة HTML من خلال العنصر link، مثال: ملف index.html <html> <head> <title>Page Title</title> <link ref="stylesheet" href="main.css" /> </head> <body> <p>some content</p> <a href="https://google.com/">Go to Google</a> </body> </html> ملف main.css: p { color: red; font-size: 2rem; } a { color: white; background-color: black; }
  8. سأحاول أن أوضح بعض المصطلحات لكي تستطيع أختيار الأنسب إليك: أولًا Flutter هو إطار عمل للغة Dart يمكن تسبيهه بـ Bootstrap بالنسبة إلى CSS أو Laravel بالنسبة إلى PHP ثانيًا لن يختلف شيء في حالة إختلاف لعة الـ Backend وسيكون نفس الـ API بدون إختلاف على الإطلاق، فكل اللغات وإطارات العمل تتيح تحكم كامل في الـ API الذي تصنعه. في الغالب يستعمل مطورو تطبيقات الهاتف Firebase لسهولة التعامل معه بالإضافة إلى إنخفاض تكلفته مفارنة مع شراء سيرفر خاص VPS أو إستضافة وتطوير API عليها من الصفر، لكن في حالات معينة يكون التطبيق كبير للغاية ويحتوي على الكثير من المميزات التي يجب إضافتها للتطبيق، في هذه الحالات يكون من الأفضل إستعمال خدمات أخرى غير Firebase. بما أنك تتعلم Node.js فسيكون من الأفضل لك إستعمال إطار عمل مثل express.js.
  9. هل يمكنك تنفيذ الأمر التالي للتأكد إن كان قد تم تثبيت المكتبة: pip freeze من المفترض أن تعطي نتيجة كالتالي: إن لم تكن المكتبة مثبتة فيمكنك محاولة تثبيتها من خلال الأمر التالي: python -m pip install pytube
  10. يمكنك أن تستعمل مكتبة react-icons لإضافة كل أيقونات font awesome بالإضافة إلى مجموعة كبيرة جدًا من الأيقونات الأخرى، يمكنك تثبيت محتبة react-icons من خلال الأمر: npm install react-icons --save ثم قم بإستخدامها كالتالي (مثال من موقع المكتبة الرسمي): import { FaBeer } from 'react-icons/fa'; class Question extends React.Component { render() { return <h3> Lets go for a <FaBeer />? </h3> } }
  11. يمكنك تحديد رسائل معينة لكي تظهر عند حدوث خطأ في صحة البيانات من خلال إضافة مصفوفة أخرى إلى التابع validate كالتالي: $validationRules = [ 'name' => 'required', 'email' => 'required|email', 'message' => 'required|max:250', ]; $this->validate( $request, [ 'name' => 'required', 'email' => 'required|email', 'message' => 'required|max:250', ], [ 'required' => 'هذا الحق مطلوب', 'email' => 'يجب أن يكون هذا الحقل عبارة عن بريد إلكتروني' ] ); يمكن أيضًا تخزين كل من الرسائل الخاصة وقواعد التحقق من صحة البيانات في متغيرين لجعل الكود أكثر قابلية للقراءة.
  12. أغلب المواقع والتطبيقات تستخدم نفس الطريقة تقريبًا وهي تحديد يوم معين (أول يوم في رمضان) وحساب الوقت المتبقي حتى حلول هذا اليوم، يمكنك فعل نفس الشيء من خلال إضافة jQuery.countdown، فعلى سبيل المثال الكود التالي يقوم بحساب الوقت المتبقي على بداية شهر رمضان (بفرض أن رمضان سيبدأ في يوم 13 أبريل في الساعة 19:00) ويظهر هذا الوقت المتبقي في العنصر #getting-started: <div id="getting-started"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://raw.githubusercontent.com/hilios/jQuery.countdown/master/dist/jquery.countdown.min.js"></script> <script type="text/javascript"> $('#getting-started').countdown('2021/04/13 19:00:00', function(event) { $(this).html(event.strftime('متبقي %D يومًا و %H:%M:%S')); }); </script> كما يوجد عشرات المكتبات والإضافات التي تقوم بمثل هذا الأمر، ويمكن الوصول إلى هذه المكتبات من خلال بحث بسيط في GitHub.
  13. سأحاول أن أشرح لك خطوات عمل هذه الدالة في بايثون وعليك أن تقوم بتطبيق الشرح بإستخدام جافا بنفسك. الكلمات التي تقرأ من اليمين إلى السيار أو من اليسار إلى اليمين تسمى كلمات متناظرة palindrome وللتأكد مما إذا كانت كلمة ما palindrome أم لا نقوم بقلب ترتيب الكلمة ومقارنتها مع الكلمة الأصلية، فمثلًا كلمة google تصبح elgoog وكلمة watch تصبح hctaw وهكذا، والكلمات التي من نوع palindrome عند قلب ترتيب أحرفها لن تتغير مثل كلمة Level أو noon وهنا مثال لدالة تقوم بالتأكد مما إذا كانت الكلمة palindrome أم لا: def isPalindrome(string): rotated_string = "" # نقوم بالمرور على كل حرف في النص for letter in string: # ثم نقوم هنا بإضافة هذا الحرف في البداية كل مرة rotated_string = letter + rotated_string # هنا نتأكد مما إذا كانت الكلمة لم تتغير ونرجع True أو False return rotated_string == string يمكن كتابة نفس الدالة السابقة في بايثون في سطر واحد كالتالي: def isPalindrome(s): return s == s[::-1] # تجربة الدالة s = "level" result = isPalindrome(s) if result: print("Yes") else: print("No") بالتوفيقـ تحياتي.
  14. سأحاول أن أشرح لك خطوات عمل هذه الدالة في بايثون. أولًا في نظام Semester GPA يتم الرمز إلى الدرجات 4 و 3 و 2 و 1 و 0 بالأحرف A و B و C و D و F على الترتيب، لذلك سنقوم بعمل دالة تقوم بتحويل هذه الأحرف إلى أرقام كالتالي: def convert(letter): # index: 0 1 2 3 4 grads = ['f', 'd', 'c', 'b', 'a'] return grads.index(letter.lower()) كما تلاحظ أن كل حرف موجود في القائمة grads له index يساوي القيمة التي نريد إرجاعها، واستخدمت التابع index لمعرفة قيمة index الخاصة بالحرف، كما قمت بتحويل الحرف نفسه إلى lower case لكي تعمل الدالة من الأحرف الصغير والكبيرة a - A لأن نقوم بعمل دالة أخرى لحساب قيمة الـ GPA بمساعدة الدالة convert التي قمنا بعملها في الخطوة السابقة: def calc_GPA(x, y, z): x, y, z = convert(x), convert(y), convert(z) return (x + y + z) / 3 هذه الدالة تأخذ 3 قيم x, y, z ونقوم بتحويل هذه القيم إلى أرقام بمساعدة دالة convert التي قمنا بعملها سابقًا، ثم نقوم بجمع هذه القيم الثلاثة معًا وقسمتها على 3، وهنا طريقة إستخدام هذه الدالة: >>> calc_GPA('a', 'a', 'd') 3.0 >>> calc_GPA('a', 'a', 'a') 4.0 >>> calc_GPA('a', 'F', 'F') 1.3333333333333333 >>> بالتوفيق.
  15. الخطأ الأول يقول أنه سيتم إستخدام 'setup.py install' بدلًا من تحميل ملف wheel وذلك لأن المكتبة wheel ليست مثبته، ويمكنك تثبيتها من خلال الأمر: pip install wheel وفي الجزء الثاني يخبرك أنك لا تستعمل آخر نسخة من pip WARNING: You are using pip version 20.2.3; however, version 21.0.1 is available. ويمكنك أن تقوم بتحديثه من خلال فتح CMD كمدير Run As Administrator وكتابة الأمر التالي: pip install --upgrade pip أو الأمر: python -m pip install --upgrade --user pip في النهاية يمكنك تثبيت مكتبة pytube من خلال الأمر: pip install pytube بالتوفيق.
  16. يمكنك أن توقف خاصية CSRF Token على أحد المسارات من خلال الـ Middleware الخاص بذلك وهو VerifyCsrfToken، وتم تجهيزه مسبقًا بالخاصية $except لكي يتم وضع المسارات فيه بالشكل التالي: protected $except = [ '/users/*', // لكل المسارات التي تبدأ بـ users '/test' ]; كما يمكنك أن توقف ميزة CSRF لكل مسارات التطبيق بالشكل التالي: protected $except = [ '*', ]; أو من خلال ملف app/Http/Kernel.php قم بحذف الصنف التالي من web: App\Http\Middleware\VerifyCsrfToken::class تحذير هام: لا تقم أبدًا بتعطيل خاصية CSRF Token لأن هذا الأمر من الممكن أن يسمح لمهاجم إلى القيام بعمليات معينة على حساب مستخدم ما، كتحويل مبلغ مالي من موقع بنكي، أو تعديل اسم المستخدم أو حتى يمكن أن تصل لتغيير كلمة المرور.
  17. يوجد نوعين من خوازرميات التشفير، الأول تشفير في إتجاه واحد، أي يتم تشفير النصوص ولا يمكن فك تشفيرها عمليًا ومن هذه الخوارزميات SHA-256 و md5 و bcrypt التي يستعملها Laravel في حفظ كلمات المرور، ويمكن إستخدامها بشكل مباشر عبر دالة bcrypt: $password = "secret"; $hashed_password = bcrypt($password); // $2y$12$j50r.d/Db1HE.lR4TkTbP.lCGlsMjP7NMQDLP.jE1x9kqz7Ltwyr2 ويمكن التأكد من صحة كلمة المرور فيما بعد عبر Hash:check if (Hash::check('plain-text-password', $hashed_password)) { // The passwords match... } أما النوع الثاني فهو التشفير في إتجاهين، أي يمكن تشفير النصوص وفك تشفيرها عبر كلمة سر معينة تسمى مفتاح فك التشفير وتكون هي نفسها قيمة الخاصية APP_KEY في ملف env، يوفر Laravel خدمة تشفير Laravel's encrypter عبر OpenSSL بإستخدام الخوارزميات AES-256 وAES-128 وكل القيم التي يتم تشفيرها يتم تسجيلها بكود مصادقة MAC، بحيث لا يمكن تعديل قيمتها الأساسية أو العبث بها بمجرد تشفيرها. ملاحظة: لا تستخدم أبدًا هذه الطريقة لتشفير كلمات المرور وذلك لأنه يمكن فك تشفيرها بمجرد معرفة قيمة APP_KEY، وقد حدثت الكثير من عمليات الإختراق في عشرات المواقع لأسباب مشابهة، وإنما تستعمل هذه الطريقة في تشفير القيم التي تحتاجها في وقت لاحق مثل API Tokens. للبدء في تشفير القيم يمكنك أن تستخدم دالة encryptString التي يوفرها الصنف Illuminate\Support\Facades\Crypt، وهنا مثال من وثائق Laravel الرسمية: <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Crypt; class DigitalOceanTokenController extends Controller { /** * Store a DigitalOcean API token for the user. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function storeSecret(Request $request) { $request->user()->fill([ 'token' => Crypt::encryptString($request->token), ])->save(); } } يمكن أيضًا إستخدام دالة decryptString من نفس الصنف لفك تشفير النصوص، وفي حالة حدوث خطأ سيتم إطلاق خطأ من نوع Illuminate\Contracts\Encryption\DecryptException، مثال: use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Support\Facades\Crypt; try { $decrypted = Crypt::decryptString($encryptedValue); } catch (DecryptException $e) { return Redirect::back()->withErrors(['msg', 'Invalid decryption key']); } بالتوفيق.
  18. أول قم بإنشاء مشروع React إن لم يكن لديك واحد بالفعل: npx create-react-app react-tailwindcss && cd react-tailwindcss لكي تستطيع تثبيت وإستخدام tailwind بشكل جيد وعملي سنقوم بتثبيت كل من tailwindcss و postcss-cli و autoprefixer: npm install tailwindcss postcss-cli autoprefixer -D PostCSS هي أداة لتحويل تنسيقات CSS باستخدام إضافات JS. يمكن لهذه المكونات الإضافات فحص CSS، ودعم المتغيرات وmixins، وتحويل بنية CSS الحديثة، وتصمين الصور، إلخ. بينما autoprefixer تقوم بإضافة prefix لبعض خصائص CSS لكي تدعم بعض الإصدارات القديمة من متصفحات الويب. ثم نقوم بعمل ملف tailwind config من خلال الأمر: npx tailwind init tailwind.js --full ثم سنحتاج إلى ملف postcss.config.js لضبط إعدادات postcss حتى يعمل مع tailwind: touch postcss.config.js وسنقوم بكتابة التالي فيه: const tailwindcss = require('tailwindcss'); module.exports = { plugins: [ tailwindcss('./tailwind.js'), require('autoprefixer') ], }; بعد ذلك عليك عمل ملف tailwind.css ووضعه في أي مكان تريد وضع فيه مكوانات tailwdind: @tailwind base; @tailwind components; @tailwind utilities; وإستدعائه في مكونات React أو في داخل ملف scss بشكل عادي، وستحتاج أيضًا تعديل scripts في ملف package.json: "scripts": { "start": "npm run watch:css && react-scripts start", "build": "npm run watch:css && react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "watch:css": "postcss src/assets/tailwind.css -o src/assets/main.css" } بهذا سيكون tailwind قد تم تثبيته بنجاه ويمكنك أستعمال كل classes الخاصة به. بالتوفيق.
  19. أعتقد أن سبب المشكلة هو أن GROUB BY تقوم بأخذ أول صف فقط وبعد ذلك تتجاهل باقي الصفوف التي لها نفس قيمة sender_id، لذلك يمكنك تجربة جملة SQL التالية: SELECT * FROM messages WHERE recipient_id = ? AND sender_id IN (SELECT DISTINCT sender_id FROM messages) الجملة السابقة ستقوم أولًا بجلب الصفوف غير المكررة في العمود sender_id (أي أن قيم العمود sender_id لن تتكرر)، ثم تقوم بجلب أحدث رسالة فقط لكل مُرسِل sender.
  20. لكي تقوم بإعادة توجيه المستخدم عند حدوث خطأ ما يجب أن تقوم بعمل بعض التعديلات على التابع render في الملف app\Exceptions\Handler.php كالتالي: public function render($request, Exception $exception) { if ($this->isHttpException($exception)) { switch (intval($exception->getStatusCode())) { // not found case 404: // اسم المسار الذي سيتم إعادة التوجيه إليه return redirect()->route('home'); break; default: return $this->renderHttpException($exception); break; } } else { return parent::render($request, $exception); } } } في الكود السابق سيتم إعادة توجيه المستخدم إلى المسار home إن حدث خطأ 404، أما في الحالات العادية (عدم حدوث خطأ) فسيعمل كل شيء على ما يرام. بالتوفيق، تحياتي.
  21. في جملة SQL يبدو أنه يتم ترتريب الرسائل من خلال العمود id، بدلًا من ذلك يجب أن يكون الترتيب بناءًا على الوقت (أي من خلال العمود date) <?php $stmt = $db->prepare('select * FROM messages WHERE recipient_id = ? GROUP BY sender_id ORDER BY date DESC'); $stmt->bind_param('i', $_SESSION['id']); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo '<div class="div_messages"><a href="index.php?to='.$row['sender_id'].'"> تم استلام رسالة من <br />'.$row['sender_name'].'<br />'.$row['date'].'</a></div>' ; } $stmt->close(); كما يمكنك أن تقوم بعكس ترتيب الرسائل تنازليًا أو تصاعديًا من خلال التبديل بين (DESC - ASC) في نهاية جملة SQL بالتوفيق.
  22. أولًا: تحتاج أولًا أن تتعلم أساسيات البرمجة والتعامل مع الحسوب، إن أردت يمكنك الأشتراك في دورة علوم الحسوب، يمكنك البدء بتعلم لغة برمجة سهلة مثل Python أو JavaScript ويوجد الكثير من الدورات المجانية على الإنترنت التي تشرح كل شيء ستحتاجه. بإمكانك أيضًا أن تقرأ كيف تتعلّم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة، بعد تعلم أحد لغات البرمجة سيكون تعلم أي لغة جديدة أمرًا سهلًا للغاية لأن كل لغات البرمجة تشترك معًا في الأساسيات. ثانيًا: كل ما تحتاجه هو كمبيوتر وإتصال بالإنترنت أبدأ بتعلم الأساسيات البرمجية وحاول أن تفهم المنطق الخاص بالبرمجة (ستجد أن الموضوع سهل للغاية) ومن ثم اختار مجالًا تحبه مثل (تطوير تطبيقات الويب - تطوير تطبيقات الهاتف - تطوير واجهات المواقع Frontend ... إلخ)، بالإضافة إلى ما سبق عليك أيضًا أن تكون صبورًا ولا تيأس من المشاكل التي قد تواجهك، وعليك أن تدرب مرارًا وتكرارًا على كل شيء تعلمته أو تحاول تعلمه، لأن بدون التدريب فستكون مضيعة للوقت فقط. أما بالنسبة لمعرفتك باللغة الإنجليزية، فيفضل أن يكون مستواك فيها متوسط أو أعلى، لأن الكثير من المصطلحات ستكون باللغة الإنجليزية، في بداية الطريق لا مشكلة في أن تتعلم البرمجة ولغتك الإنجليزية ليست جيدة، ففي الغالب ستجد شروحات بالغة العربية لكل الأساسيات في أي لغة برمجة أو تقنية ما. أنصحك بالإطلاع على هذا السؤال حيث ستجد إجابات وافية في هذا الخصوص: هل لازم تكون معي لغة إنكليزية لكي أتعلم لغة البرمجة - أسئلة البرمجة - أكاديمية حسوب (hsoub.com) بالتوفيق، تحياتي.
  23. إستخدام flutter سيسهل عليك إنشاء تطبيق واحد يعمل على iOS و أندرويد، كما أن توفير تصاميم UI/UX للمطور سيوفر الكثير من التكلفة والوقت. بالنسبة لجزئية الـ Backend فالأمر يتوقف على المميزات الموجودة في التطبيق الجديد، هل هو مجرد تغيير في الشكل وطريقة العرض فقط؟ أم أن هناك مميزات جديدة تم إضافتها؟ أم أنه سيكون نفس التطبيق لكن بـ Flutter بدلًا من Swift؟ في حالة كان مجرد تغيير في الشكل فقط أو كان نفس التطبيق ولكن بلغة أخرى، فلا مشكلة سيعمل الـ Backend بشكل سليم، أما في الحالة الثانية فيجب عمل بعض التغيرات على الـ Backend لكي يتناسب مع التطبيق الجديد.
  24. لعمل مثل هذا الموقع يجب أن يتوفر عدد من الأشخاص (أو شخص واحد لديه كل المهارات المطلوبة) وهم كالتالي: مصمم واجهات UI/UX Designer: سيقوم هذا الشخص برسم شكل الموقع بكل صفحاته ليقوم مطور بتحويل هذه التصميمات إلى كود يعمل في المتصفح (ينشئ الموقع) مطور مواقع front end : وهو الشخص الذي سيقوم بتحويل التصميم إلى كود كما وضحت سابقا. مطور backend: وهو المسؤول عن عمل آلية الموقع، مثل عمل وإدارة قاعدة البيانات، إنشاء آلية تسجيل الدخول للمستخدمين، معالجة الأخطاء على السيرفر ... إلخ. ولكل إختصاص من الإختصاصات السابقة يوجد مجموعة واسعة من التقنيات التي يمكن إستخدامها، فعلى سبيل المثال: يمكن أن يستعمل مصمم الواجهات برنامج Adobe أكس دي أو Figma، ويمكن لمطور front end أن يستعمل مكتبات مثل bootstrap أو tailwind csa أو bulma إلخ ويمكنه أيضاً أن يستعمل إطار جافا سكريبت مثل vue.js أو React.js، وفي النهاية يستطيع مطور backend أن يستعمل أحد لغات البرمجة لعمل جزء ال backend الخاص بالموقع، ولكل لغة برمجة إطارات عمل متعددة، مثلا لغة PHP لها إطار عمل Laravel، ولغة python لها flask أو Django ولغة javascript لها express.js وغيرهم الكثير. أنصحكِ بنشر مشروع على أحد مواقع العمل الحر (مثل مستقل) وأطلبي فيه عمل مثل هذا الموقع، وسيقدم العديد من المطورين عروضهم وعليك مناقشة المناسبين منهم قبل بدء العمل مع أحد منهم لمعرفة كل التفاصيل. بالتوفيق.
  25. يمكنك البحث على الإنترنت حيث توجد العديد من المواقع التي تقدم أكوادًا لألعاب مكتوبة بلغة بايثون، من ضمن هذه المواقع: موقع pygame وهو الموقع الرسمي لمكتبة صناعة الألعاب pygame إن كنتِ تريدين ألعاب كتبت بلغة بايثون بدون إستخدام أي مكتبات يمكنكِ أن تلقي نظرة على هذا المستدوع على GitHub فهو يحتوي على 25 لعبة مختلفة. يحتوي هذا المستدوع أيضًا على عدد من الألعاب المختلفة مصنوعة بلغة بايثون. بالتوفيق، تحياتي.
×
×
  • أضف...