Talaat Magdy

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

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

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

  • Days Won

    1

السُّمعة بالموقع

46 Excellent

1 متابع

  1. لنفترض ان لديك ملف file.py وتريد معرفته يمكنك عن طريق تحويل اسم ملف الي string و تقسيم اسم الي جزئين مثلا 1 --> file 2 --> py 1- يمكنك بكل سهوله فعل ذلك عن طريق file_name = "file.py" file_name = filename.split(".") extension = file_name[-1] # py print(extension) # py 2- أو عن طريق استخدام os.path.splitext --> تساعدك في تقسيم الاسم إلي جزئين هي مخصصه لتعامل مع file import os filename, file_extension = os.path.splitext('/path/to/somefile.ext') print(filename) # '/path/to/somefile' print(file_extension) # '.ext' في تعامل مع File أفضل استخدام os.path.splitext وليس split الخاصه ب string بعد اﻷمثله لماذا أفضل استخدام splittext "png".split(".")[-1] 'png' # But file doesn't have an extension - هنا لايوجد أي extension هذا شئ غير صحيح أفضل استخدام splitext لانها تعتمد علي os module 3- حلول أخري استخدام - pathlib - re
  2. لدينا العديد من طرق باستخدام loop و بدون استخدام اي method test_list = [1, 3, 5, 6, 3, 5, 6, 1] print ("The original list is : " + str(test_list)) res = [] for i in test_list: if i not in res: # list غير موجود داخل item لو res.append(i) # printing list after removal print ("The list after removing duplicates : " + str(res)) Output : The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6] هذه طريقة سهله و يمكن تنفيذ بدون معرفة مسبقة باستخدام set الفرق اﻷساسي بين list و set هو أن set لا تقبل أشياء مكرره # initializing list test_list = [1, 5, 3, 6, 3, 5, 6, 1] print ("The original list is : " + str(test_list)) # using set() # to remove duplicated # from list test_list = list(set(test_list)) print ("The list after removing duplicates : " + str(test_list)) Output : The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6] مع python 3 جاءت بما يسمي list comprehension test_list = [1, 3, 5, 6, 3, 5, 6, 1] print ("The original list is : " + str(test_list)) # using list comprehension res = [] [res.append(x) for x in test_list if x not in res] # printing list after removal print ("The list after removing duplicates : " + str(res)) Output : The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6] أذا قمت بالملاحظه ستجد أنه نفس طريقة الاول لكن بكود أفضل و أقل يمكنن أيضا استخدام Using collections.OrderedDict.fromkeys
  3. لابد من تسطيب مكتبة json أولا gem install json ثم كتابة الكود require 'json' file = File.read('./file-name-to-be-read.json')# قراءة file data_hash = JSON.parse(file) # Hash تحويل إلي # نفترض أن هذا شكل file # { # "author":"Isaac Asimov", # "url":"https://isaacbooks.com", # "books": # { # "1":"Fantastic Voyage", # "2":"The Robots of Dawn", # "3": "Pebble In The Sky" # } # } puts data_hash['author'] # => author
  4. مرحبا يوجد العديد فى Youtube مثلا شرح unity تطبيق لعبة من البداية ممكن تقوم بعمل بحث بسيط https://www.youtube.com/results?search_query=c%23+unity+شرح
  5. مرحبا يمكنك فعل ذلك بالعديد من الطرق مثلا باستخدام الدالة sort names = ['Ali', 'ahmad', 'Mohammad', 'malik'] names.sort() print(names) هذا الكود صحيح ولكن لان يوجود حروف capital و small تكون اﻷولية للحروف capital . لان ترتيب A هو 065 أما a 097 يمكنك زيارة هذا رابط لمعرفة ذلك http://sticksandstones.kstrom.com/appen.html باستخدام الدالة sort ولكن جعل حروف أما capital أو small names = ['Ali', 'ahmad', 'Mohammad', 'malik'] names.sort(key= str.lower) print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad'] names.sort(key= str.upper) print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad'] sort باستخدام lambda و lower أو upper names = ['Ali', 'ahmad', 'Mohammad', 'malik'] names.sort(key=lambda y: y.lower()) print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad'] names = ['Ali', 'ahmad', 'Mohammad', 'malik'] names.sort(key=lambda y: y.upper()) print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad'] sorted عن طريق lower أو upper names = ['Ali', 'ahmad', 'Mohammad', 'malik'] sorted_list = sorted(names, key=lambda s: s.lower()) print(sorted_list) # ['ahmad', 'Ali', 'malik', 'Mohammad'] sorted_list = sorted(names, key=lambda s: s.upper()) print(sorted_list) # ['ahmad', 'Ali', 'malik', 'Mohammad'] sorted باستخدام casefold يمكنك معرفة المزيد من هنا https://docs.python.org/3/library/stdtypes.html#str.casefold names = ['Ali', 'ahmad', 'Mohammad', 'malik'] sorted_list = sorted(names, key=str.casefold) print(sorted_list) # ['ahmad', 'Ali', 'malik', 'Mohammad']
  6. مرحبا @محمد الاهلي يوجد دالة تسمي count داخل sql هي مسئوله عن جلب العدد الكلي للجدول أو column معين . select count(*) as customer_count from customer ; اذا كان لديك column يسمي id أو primary key أي كان اسمه أفضل انت تقوم باستخدمه لسرعة query لأن معظم DBMS (مثل MySql أو PostgreSQL ) ذكية تقوم بإضافة index علي primary key هذا يحسن من سرعة تنفيذ query select count(id) as customer_count from customer ;
  7. مرحبا @كمال محمودي يمكنك اضافة column جديد لجدول الخاص ب Users وليكن block_date كتابة هذا اﻷمر في terminal php artisan make:migration add_block_date_to_users_table --table=users public function up() { Schema::table('users', function($table) { $table->date('block_date')->nullable()); // dateTime also // nullable قيم سابقة لابد ان تكون null }); } and don't forget to add the rollback option: public function down() { Schema::table('users', function($table) { $table->dropColumn('block_date'); }); } ثم عمل condition بسيط لو user له block_date و لا تساوي null تقوم بإظهار الرسالة له . يمكنك استخدم القيمة المخزنة في block_date لكي تنبه مستخدم أن تم منعه لمدة معينة باستخدام block_date
  8. مرحبا فقط يوجد بعض الأشياء البسيطة قمت بذكره داخل الكود using System; namespace ConsoleApp1 { class Program { private static int number1; private static int number2; static void Main(string[] args) { // int= number1, number; هذا سطر خطأ لا يجوز كتابة هكذا //int number1, number2; double Div; Console.WriteLine("enter first number1"); number1 = int.Parse(Console.ReadLine()); // لابد من اضافة الأقواس للدوال () Console.WriteLine("enter second number1"); number2 = int.Parse(Console.ReadLine()); // لابد من اضافة الأقواس للدوال () if (number2 == 0) { Console.WriteLine("connot deividby zero"); // نسيت ; } else { Div = number1 / number2; Console.WriteLine("the result dividionis"+ Div); // نسيت ; } Console.ReadKey(); // نقوم بإدخال هذا السطر الي الدالة main } } // } هذا block لا نريده }
  9. هذا القيم تسمي data type الخاصه ب sql database تختلف بعض الشئ بين أنواع مستخدمه مثلا PostgreSQL أو MySQL يمكن مشاهدة جميع أنواع الخاصه ب MySQL هنا أو PostgreSQL هنا . بعد معرفة الجميع لابد من معرفة تسميات داخل ORM Object Relational Mapping . سنذهب في جولة بسيطه في ORM ما هو ORM ؟ عبارة عن تقنية تستخدم لخزن , استرجاع , حذف وتحديث البيانات في قواعد البيانات العلائقية (المصممة على شكل علاقات) حيث تستخدم طبقات البيانات لإدارة عملية التواصل بين Object Oriented Languages و Relation database. أو يمكن تعريفها على أنها الخريطة التي تعنى بربط الــ Objects مع Relational database ويكمن الهدف الرئيسي من ORM هو تدرج الوصول إلى البيانات وتكنولوجيا المعاملات لتسهيل عملية الربط بين أجزاء التطبيق وكذلك لتقليل عمليات البحث عن الموارد المشفرة أو المفردات التي يصعب استبدالها , كذلك يمكن اعتمادها كطريقة مبسطة ومتسقة للوصول إلى جميع عناصر التطبيق. حيث توفر ORM نسق ومخرجات عالية الجودة من قاعدة البيانات العلائقية تسمح لمطوري البرامج بكتابة رمز من لغة برمجية إلى أخرى مثل Python بدلاً من SQL لإنشاء وقراءة وتحديث وحذف البيانات والمخططات في قاعدة البيانات الخاصة بهم. أهمية ORM تكون أن تكتب شئ واحد وعند تحويل من database إلي أخري لا يفرق . مثلا في ACTIVE Record User.first لا يفرق مع مبرمج سواء هي SQ LITE أو PostgreSQL أو أي نوع أخري يستخدم Ruby On Rails --> Active Record Laravel --> eloquent يمكن قراءة أنواع data type في Sql أولا ثم تبحث عن ما تريد داخل ORM مثلا تريد أن تقوم بإنشاء column نوع json تذهب إلي orm وليكن eloquent تذهب هنا لعرض جميع قيم متاحه ثم نختار json أو jsonb ستجد أن موقع يشرح لك مثال The jsonb method creates a JSONB equivalent column: $table->jsonb('options'); بكل سهولة ويسر عليك فقط تعلم أنواع data type من SQL و يمكنك بكل سهولة أن تعمل مع أي ORM أو أي Framework
  10. عليك فقط أن تتأكد أن الملف بامتداد json و ثاني شئ هو أن تكون repository هي public
  11. مرحبا نعم يمكنك تعلم البرمجة فى هذا سن ولكن لابد من اختيار اشياء مناسبة لهذا السن لكي تفهم البرمجه وتتعامل معها . يمكنك البدء عن طريق scratch هي لغة رسومية بسيطه تعلمك البرمجة عن طريق أشكال بطريقه سهله يوجد دورة في حسوب تقدم شرح بطريقة رائعه .يمكنك زيارة موقع للمشاهدة مشاريع طلاب لمعرفة ما يمكنك فعله بهذه اللغة . يمكنك تعلم البرمجة أيضا فى هذا السن عن طريق موقع Code.org هو موقع يحتوي علي دورس بسيطه المختلفه المناسبه لكل سن . يوجد أيضا العديد من أمثله . تساعدك في سنك للتعلم البرمجة بالتوفيق إن شاء الله
  12. مرحبًا عبد الواحد. اعتقد أنه تجربة جيدة لك أنت اﻷن قمت بمعرفة اﻷصدار الخامس و سوف تتعلم ما الجديد فى اﻷصدار الثامن . هذا شئ جيد أي انك سوف تمر بمرحلة مهمه لك كمبرمج هي كيفية معرفة واستخدام التحديثات المختلفة بين اﻷصدارت وهذا شئ جيد جدا لك سوف يساعدك على تعامل بنفسك في مستقبل . لن تجد نفسك تتنظر أن يقوم أحد بشرح لك سوف تتعلم ذلك بنفسك سريعا . أيضا يوجد بعض الأشياء الجديدة سوف تفيدك جدا .
  13. هل يمكنك إخبارنا ما اللغه المستخدمه ؟
  14. هل من الممكن إرفاق مجلد مشروع ؟ أو تفضل أن اشرح لك علي مشروع جديد ؟ من البداية
  15. يمكن برمجة API تقريبا باستخدام كل لغات البرمجة التي تدعم ويب مثلا JAVA Python Ruby C# JavaScript والكثير من لغات برمجة . يمكنك استخدام api وربطه ب Android عن طريق استخدام أى مكتبة HTTP client for Android مثلا Retrofit 2 لابد من إضافة صلاحيات اﻷنترنت عن طريق <uses-permission android:name="aandroid.permission.INTERNET" /> إضافة مكتبة إلى ملف build.gradle implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' لاحظ تم إضافة مكتبة gson هي تقوم بإضافة بتحويل json إلى java object سوف نستخدم ذلك لينك عباره عن get api -- لجلب مقالات https://jsonplaceholder.typicode.com/posts شكل داتا [{ "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" }, { "userId": 1, "id": 2, "title": "qui est esse", "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla" }, { "userId": 1, "id": 3, "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut", "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut" } نقوم بإنشاء كلاس لمساعدة في جلب هذه البيانات public class PlaceholderPost { private int userID; private int id; private String title; private String body; public int getUserId() { return userID; } public int getId() { return id; } public String getTitle() { return title; } public String getBody() { return body; } } ثم نقوم بإضافة كلاس جديد لجلب معلومات من API import java.util.List; import retrofit2.Call; import retrofit2.http.GET; public interface PlaceholderAPI { @GET("posts") Call<List> getPosts(); } كيفية استدام مكتبة في اتصال ب API Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://jsonplaceholder.typicode.com/") .build(); ثم نربطه ب interface خاص بينا Call<List> call = placeholderAPI.getPosts(); نقوم بجلب داتا وربطه بالتصميم call.enqueue(new Callback<List>() { @Override public void onResponse(Call<List> call, Response<List> response) { if (response.isSuccessful()) { // للتأكد من كل شئ يقوم بجلب داتا List posts = response.body(); Log.d("Success", posts.get(3).getBody().toString()); TextView textView = findViewById(R.id.text); textView.setText(posts.get(3).getBody().toString()); } else { Log.d("Yo", "Boo!"); return; } } @Override public void onFailure(Call<List> call, Throwable t) { Log.d("Yo", "Errror!"); } }); Log.d("Yo","Hello!"); } }