التنبيهات

التنبيهات

0

لا توجد تنبيهات جديدة

احدث المنشورات

ما هي ال thread 

في موضوعنا النهارده هنتكلم عن ال thread وايه اهميتها ليك كمبرمج اندرويد

في المعني الللغوب للكلمه تعني الخيط وهذا يفسر لنا معناه ايضا في ال  java 

ال thread هي  كلاس  بداخلها بعض الmethods التي تساعد وتعمل علي تشغيل كودك في

خيط منفصل 

انواع threads وما هي ال ui thread

لل threads انواع وهما ال ui thread و ال worker thread 

في اي ابليكيشن في حاجه اسمها ال ui thread و ديه ال thread الاساسيه في برنامج <br>

لو حطينا كود بياخد وقت طويل هتلاقي البرنامج كله هنج وليكن مثلا هنعمل loop <br>

 for (long i = 0; i <1000000000 ; i++) 
{
Log.d("num",""+i);
}

في loop زي ديه لو حكيتها جوا ال on create في اكتيفتي او حته فرجمنت هتلقي برنامج كله وقف وممكن يخرج كمان ولا يستجيب معاك 

ليه ؟ لانك حطيته في ال thread الاساسيه الي  هي ui thread 

worker thread 

طب اي  حل ؟ قالك الحل انك هتعمل thread تانيه وديه بنسميها worker thread 

ديه هتحط الكود جواه وبكده هيشتغل في thread منفصله عن ال ui thread وتسيبه مع نفسه بقي 

  // مثال علي ال worker thread
Thread thread = new Thread()
{
@Override
public void run() {
super.run();
// هنا كود ال for يحل مكان الكود الذي سوف ياخذ وقت طويل
for (long i = 0; i <1000000000 ; i++) {
Log.d("num",""+i);
}
}
};
thread.start();

طب كده يبقي انت كا مبرمج اندرويد عرفت نوعين مهمين في ال threads الي انت هتشتغل بيهم 

هما 

ui thread هي ال thread الاساسيه التي توجد في ابليكيشن 

ال worker thread هي الthread التي تعمل بشكل منفصل عن الthread الرئيسيه 

thread.sleep

 هي طريقه لاخماد او تنويم ال thread التي بداخلها لبعض الوقت التي يقاس بميلي سكند 

نستنتج من هذا الكلام انها اذا كانت موجوده بداخل ال ui thread سوف تقوم بتنويم ال ui thread 

وكذلك اذا كانت موجوده بداخل ال worker thread 


try {
Thread.sleep(10000);
} catch (InterruptedException e)
{
e.printStackTrace();
}

طرق التواصل بين ال threads 

دلوقتي فهمنا ال ui thread و worker thread

بس معرفناش طرق التواصل بينهم 

في تلت طرق لتواصل بين ال threads 

ثواني ثواني هو اصلا ال thread مش بيتواصلو مع بعض ؟

نعم . لان احنا قولنا في الاول ال thread ما هو الي خسط منفصل بيشغل لوحدو مع نفسه 

فا لازم يكون في طرق لتواصل بين ال ui thread و worker thread 

مثال عشان تفهم اكتر 

 
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textview);
}

Thread thread1 = new Thread()
{
@Override
public void run() {
super.run();
for (int i = 0; i <5 ; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
textView.setText(i+"");
}
}
};
thread1.start();

هنا ال texview جايه من uithread 

لما حطينها جوا ال worker thread اي الي هيحصل 

للاسف الشديد هيحصل Exception 

لان زي ما احنا قولنا مفيش تواصل بين ال threads

طب خلاص انا كده فهمت قولي بقي الطرق الي هتخليني اتواصل ما بين ال threads كويس 

 run on ui thread

ال run on ui thread ديه ميثود بتساعدنا اننا نشغل كود من  ال worker thread الي ui thread 

زي مثلا مثال ال text view ده 

ال text view ديه موجوده في ui عايزين نشغلها بقي جوا ال worker 

فا هنبدا نستغل الميثود ديه 

مثال 

   Thread thread1 = new Thread()
{
@Override
public void run() {
super.run();
for (int i = 0; i <5 ; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// طب ليه يا سيف هنا طلب من اني اعرف متغير تاني من متفير الاولاني واخليه فينال لانك بتستخدم متفير من interface ل interface تاني
final int finalI = i;
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(finalI +"");
}
});
}
}
};
thread1.start();

post & post delayed

الطريقه التانيه لتواصل بين threads هي طريقه ال post 

هنا انت بتجيب ال view الي متعرف في ui thread وهتقولو post 

يعني اي برده مش فاهم  

بص وليكن هنقول كده 

textview.post

كده معنها ان احنا جبنا ال view الي هو textview وقولنا post يعني انه تبعت الكود الي هو textview ل thread الاساسيه الي كان موجود فيها 

طب اي بقي معني ال post delayed 

هي هي نفس المعني ولاكن الفرق انك بتتحكم في وقت يعني ممكن متخلهوش يبدا في ساعتها لا يتاخر ثانيه ثانيتين عشر ثواني براحتك

  Thread thread1 = new Thread()
{
@Override
public void run() {
super.run();
for (int i = 0; i <5 ; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// طب ليه يا سيف هنا طلب من اني اعرف متغير تاني من متفير الاولاني واخليه فينال لانك بتستخدم متفير من interface ل interface تاني
final int finalI = i;
// طريقة ال post
textView.post(new Runnable() {
@Override
public void run() {
textView.setText(finalI+"");
}
});

// طريقة ال post delayed
textView.postDelayed(new Runnable() {
@Override
public void run() {

}
},2000);

}
}
};
thread1.start();


هنكتفي بمقدار ده دلوقتي وهنكمل الطريقه التالته في منشور قادم لانها كويله شويه وهنستخدم فيها كلاس ال handler

 بعدين هنشرح شوية تفاصيل اكتر عن ال thread زي ال wait و notify وغيره 

وهنتكلم عن ال synchronizition عشان مهمه في ال threads وسلام عليكم 


تفاعل 2 شخص مع المنشورة

تحديث كتابة المحتوى في كودار!

لقد قمنا في الآونة الأخيرة بالعمل على طريقة أفضل لكتابة المحتوى في #كودار لتحسين مستوى القرآءة والكتابة.


يحتوي هذا التحديث على الكثير من المميزات لكتابة محتوى جذاب ومفيد بطريقة أكثر فعالية.


بعض أهم مزايا التحديث الجديد:

1. امكانية اضافة عناوين اساسية وفرعية للمقال.

2. امكانية كتابة النصوص بالخط العريض أو المائل.

3. امكانية كتابة نصوص برمجية سواء في خط النص echo "أو"; كنص برمجي كبير.

4. امكانية وضع أكثر من صورة في المقال الواحد.

5. طرق جديدة لتسهيل عملية ارفاق الصور للمقال.


ما زلنا نقوم باجراء تطويرات على انظمتنا وخبرة المستخدمين في #كودار ،

اذا كنت تقترح أي اضافات او تحسينات اكتب لنا في التعليقات 😃👇 اسفل هذا المنشور.


#تحديثات_كودار

تفاعل 13 شخص مع المنشورة

constrant layout

نقوم في هذا المنشور بشرح بعض المزايا ومقدمه بسيطه عن ال constrant layout 

عناصر هذا المنشور 

1- مقدمه بسيطه عن ال constrant

2-كيفيه عمل ال constrant 

3-ذكاء الاصطناعي لل constrant 

4- كيفيه ترتيب العناصر في ال constrant 

5-ترتيب جميع العناصر في ضغطة زر

مقدمه بسيطه عن ال constrant 

تحدثنا في مقاله سابقه عن نوع المخطط constrant layout ولاكن لم نفي بحقه في الشرح قامت google بأضافة هذا النوع من المخطات في 2017 وكان في سابق يوجد فقط في xcode مع ال ios لاكن اضافته google ذلك حته يساعد المطورين في ان شاء تصميم جذاب و معاصر فا constrant layout تمتاز بذكاء الاصطناعي عند تصميم ولاكن كيف كيف يتم ذلك؟

سنعرف كل ذلك في هذه المقاله

كيفيه عمل ال constrant

عند ان شاء مشروع جديد يظهر نوع ال layout تلقائي  constrant layout فا لست بحاجه الي تعديل نوع الlayout 

عند سحب عنصر وضعه في الشاشه يظهر في نفس المكان التي قومت بوضعه فيه ويكون الكود كما هو كا تالي

ولاكن ما معني هذه الاكواد 

 tools:layout_editor_absoluteX="161dp"
tools:layout_editor_absoluteY="345dp"

دائما عند وجود كلمه tools في كود ال xml تعلم ان هذا سيظهر فقط في الاندرويد استوديو ولن يظهر في الموبايل

فاعند عند تشغيله علي الموبايل يظهر بعيدا اقصي يسار الشاشه لما ؟

ذلك لاننا يجب بوضع الconstrant في العنصر حته يظهر ايضا بنفس الشكل في الموبايل

كما يوجد في الكود التالي

عند اضافة ال constrant كما هو في الشكل التالي يقوم ذلك بتثبيت العنصر في نفس المكان 

وتقوم بتقيض العنصر في هذه النقطه مهما اختلفت حجم الشاشه التي تقوم بتشفيل هذا البرنامج 

واذا اختلف حجم الشاشه يظل هذا العنصر في مكانه وتلك من مزايا ال constrant 

ولاكن كيف تقوم ال constrant layout بالحفاظ عل مكان العنصر 


ذكاء الconstrant layout 

 ال constrant layout تعتبر من اذكي المخطات الت يتقوم بعمليات حسابيه لتقوم بحساب ال hight و ال width الخاص بكل شاشه وحساب الارتفاع والعرض المطلوب لكل عنصر ووضعه في نفس المكان مهما اختلفت حجم الشاشه 

لذلك ينصح دائما مطورين الاندرويد باستخدام ال constrant layout للقيام بتصميم عصري وجذاب 

ترتيب العناصر بجانب بعضها في ال constrant layout

مثل ما قومت بالسحب لوضع ال constrant في العنصر ايضا سوف تقوم بالسحب من العنصر للاخر في ال constrant layout وايضا تقوم ال constrant باجراء عمليات حسابيه لحساب المسافه ما بين كل عنصر والاخر للحفاظ عليها في نفس الشكل مهما اختلفت حجم الشاشه 

وهذه صوره توضيحيه لترتيب العناصر 

ترتيب جميع العناصر في ال constrant في ضغطة زر

عند تصميم الشاشه الخاصه بك لست بحاجه الي وضع ال constrant ما بين كل عنصر واخر بينما يمكنك وضع العناصر وترتيبها كما شئت من ثما تأتي بعد انتهاء من ترتيب العناصر جميعها وتقوم بضغط علي زر ال constrant التي يوجد في اعلي شاشه 

كما يمكنك الغاء جميع الconstrant التي قومت بها من خلال الضغط علي هذا الزر 


كما يمكنك رؤيه شرح عملي بتفاصيل اكثر عن ال constrant layout من خلال هدا الفيديو 

https://youtu.be/plGXdITW8SQ


كان هذا منشورونا اليوم وفي منشورات اخري سنقوم بشرح العديد والعديد من التفاصيل المميزه في هذا النوع من المخطات 

انتظرو شرح مفصل ورائع لل architecture pattern و rxjava و room 

استودعكم الله والي اللقاء

تفاعل 13 شخص مع المنشورة

عايز ابقي مبرمج mobile application
واعمل برامج بقى android و ios وابقى جامد بقى و و... تابع المنشور ده لاخره عشان تفهم انت هتعمل اي

مبدأيا في بعض الأساسيات الي لازم تكون فاهمه في مجال mopile application زي اي
زي مثلا ان جوا مجال موبايل ابليكشن في اكتر من تخصص وهما ال native و hyprid و cross Platform
وكمان لازم تبقى عارف ان كل مجال من تلاته دول ليهم لغات برمجه
وكمان لازم تبقى عارف ان كل واحد من تلاته دول ليهم performance كويس او وحش
وكمان... كمان ياعم فهمنا اي كل ده
افهمك بس اسمع الحدوته من اولها بقى

Mobile application اول ما ظهر اصلا المجال ده مكنش في غير منافسين اتنين android و ios
ومكنش في تخصص فيهم غير ال native يعني اي بقى ؟ يعني كل نظام ليه لغه برمجه خاصه بيه android ليه ال Java و ال ios ليه objective-c
و المبرمجين كانو شغالين تمام ودنيا فله ولاكن مع الوقت البرامج بقت اكبر وأوسع وبقت تاخد مجهود اكبر في برمجه
تمام راحو عاملين لغات برمجه تانيه شبيه لل جالا و اوبكيجتف سي ولاكن أسهل شويه
الجافا اتعملها لغه سبيه اسمها kotlin و اوبجكتيف سي اتعملها لغه شبيه اسمها swift
ولاكن برده برامج كانت كبيره وعشان كنت تعمل برنامج كبير زي متجر الاكتروني او غيره لل أندرويد و ios كانت بتاخد مده طويله وبتبقي رخمه كل ما كان برنامج كبير قالو خلاص احنا نعمل حاجه تشتغل على الاتنين
راحو عاملين اي بقى راحو عاملين حاجه اسمها hypird app development اي يا عم ديه بقى دي...
نستكمل في جزء الي جي عشان نشرح بتعمق اكتر
ياريت تعملولي follow
سلام

تفاعل 18 شخص مع المنشورة

السلام عليكم ورحمة الله وبركاتة
سأتحدث اليوم في تصحيح معلومه الي العرب وهم الأشخاص الذين يقولون مجال الواتساب وسوف أتطرق اليوم في شرح :
1 - من ابتكر تطبيق الواتساب وماذا يدور حوله التطبيق.
2 - هل يوجد شيء يسمي مجال الواتساب.
3 - هل يوجد شيء يسمي الڤيروس.
4 - ماذا يحدث للهاتف عندما شخص يرسل لك رساله يوجد فيها رموز واحرف وارقام.
ونبدأ بالتحدث في الموضوع الذي ابتكر تطبيق الواتساب هما الأمريكي بريان أكتون والأوكراني جان كوم ويدور حول التطبيق أنه تطبيق مراسله والتحدث الي اصدقائك.
لا يوجد شيء يسمي مجال الواتساب ابدا والذي يقول إنه يوجد مجال الواتساب ف هو لم يفهم اي شيء والواتساب تطبيق مثل تطبيقات المحادثه الأخري وسوف اشرح الڤيروس الذين يتحدثون عنه في الواتساب.
يوجد ما يسمي الڤيروس لكن ليس هو الذي يتحدثون عنه في الواتساب هذا ليس ڤيروس واتركك تبحث مع نفسك عن الڤيروسات وانواعها وتفهم الكثير عنه علي جوجل.
ف هذه النقطه الذي اتحدث عنها الان هذه هي الملخص في الموضوع هذا وهو ماذا يحدث للهاتف عندما شخص يرسل لك رساله يوجد فيها رموز واحرف وارقام قبل ما اتحدث في هذه النقطه يوجد في الهاتف شيء يسمي البورده والبورده هي التي تقرأ المعلومات ف عندما شخص يرسل هذه الرساله الي الهاتف ف البورده بيبقي صعب عليها انها تقرأ الرساله وفيها هذه الأشياء ف بيتم علطول تهنيج الهاتف حتي يتم قرأه الرساله ف الأشخاص يقولوا هذا ڤيروس ومجال الواتساب وأشياء أخري.
والان أتمني بعد هذا الشرح البسيط أن تفهموا هذا الموضوع.♥

تفاعل 13 شخص مع المنشورة

معلومه سريعه
ما هي ال firebase وما الفرق بينها
وبين ال DataBase العاديه مثل ال mysql و Microsoft Sqlsever
يتميز الفاير بيز بسهوله المدهشه في الاستخدام فا اذا كنت تنشئ مشروع بستخدام ال mysql و php في أندرويد خلال شهرين سوف تنشأه خلال شهر من خلال الفاير بيز فا هي سهله للغايه في الاستخدام كما انها توفر الأمان القوي للمشروع خاص بك فا عند استخدامه لن تكون قلق من أي اختراقات ل data الخاصه بك كما انها تتميز بالسرعه العاليه في نقل البيانات فا اذا كنت مبرمج أندرويد وتريد database سريعه للغايه يجب عليك استخدام ال firebase
أشهر التطبيقات التي تستخدم firebase من ضمنها
Trivago و duolingo
ان شاء الله في البوستات القادمه ساقوم بنشر بعد كورسات ال firebase للاندرويد على منصة codaar

تفاعل 15 شخص مع المنشورة

طبعا المبرمجين لما يكتبوا كود لازم يتطلع ليهم اخطاء ودي حاجه لازم تقابل اي مبرمجين ...
الأخطاء البرمجية بتنقسم الي نوعين :
Static Programming Errors
دي الاخطاء ال بيقدر compiler يكتشفها من قبل ما تعمل run وانت بتكود يعني والنوع ده بينقسم الي لنوعين
Syntax Programming Errors
خطأ نحوي ف اللغة وانت بتكتب نسيت semi colon كتبت حاجه غلط في الكود
Semantic Programming Errors
حاجة قريبة من الاخطاء النحوية او لما تعمل تسلسل خطأ للكود او مثلا لما تستخدم متغير وانت مش معرفه مسبقا

النوع التاني :
2 ) Dynamic Programming Errors
و دي الاخطاء ال بتظهر بعد عملية run للكود وتنقسم برضو لنوعين
Run time Errors
وده بيظهر وقت تنفيذ البرنامج مثلا بتحاول تقراء ملف ف البرنامج وهو مش موجود حاولت انك تتصل بقاعدة بيانات انت مش معرفها ف
البرنامج بتاعك
Logical Errors
مثلا انت عملت برنامج بيستقبل رقمين من المستخدم ويقوم بجمع الرقمين على بعضهم ويطبع ليك الناتج ممكن بقا انت بدل عملية الجمع تنسي وتعملها طرح وهو البرنامج هيشتغل وكل حاجه بس بكدا مش هينفذ الوظيفة المطلوبة فلازم تخلي بالك من المدخلات بالمخرجات

تفاعل 9 شخص مع المنشورة