Ahmad Essam @sudanix

Android developer

نقاط السمعة 709
تاريخ التسجيل 16/09/2013
آخر تواجد سنتين

مشروع جميل بحاجة الى تطوير ودعم مستمر حتى لا يموت.

هل تقبلون المساهمة في انشاء تطبيق Native Android app. يحافظ على هوية الخدمة ويعكس افضل تجربة مستخدم في أجهزة الجوال؟

لدي خبرة في المجال ، وأود المساهمة في أوقات الفراغ.

وأتمنى لك التوفيق.

بعض ال objects تحتاجها على مستوى التطبيق لان انشاءها عملية مكلفة مثل OkHttp ، هذه ال objects غالبا تكون ال lifecycle الخاصة بها على مستوى التطبيق لذلك دائما تكون على شكل App Component.

الان كل Activity تحتاج بالإضافة الى objects السابقة ، تحتاج الى objects خاصة بها ، تنتهي مع نهاية ال Activity. في هذا الحالة نحتاج الى Activity Component.

وهكذا لكل Activity/Fragment سيكون هناك Component تحوي الكانئات الخاصة بها.

نعم ، نستخدم Dagger2, RxJava, Retrofit, ButterKinfe, Realm, Mockito, Junit4, Espresso, ...etc

بشكل يومي في تطبيقات الأندرويد. حيث تعتبر ال de-facto standards لتطبيقات الأندرويد.

طبعا بعض الأدوات الهدف منها ليس الأداة فقط ، وإنما تطبيق concept معين، فمثلا باستخدام Dagger2 نكون طبقنا مفهوم Dependency Injection والذي يعني decoupled objects و more testable code.

إضافة الى ذلك استخدم هيكلة Clean Architecture والتي تفصل بين ال Presentation و ال Domain وال Data layer.

وفي ال Presentation غالبا اتبع Model-View-Presenter.

للإجابة حول سؤالك عن RxJava ، نعم الفائدة كبيرة ولا يوجد بديل. فلن تحتاج مجددا للتفكير في موضوع ال threading و how to manage threads ، ايضا ستقلل عليك العديد من الأكواد و ال callbacks ومعالجة الأخطاء ستصبح أسهل ، اخيرا تقدم لك RxJava طريقة functional programming ما يقلل حجم الكود ويقلل ال bugs. دائما less is better.

شكرا.

Unit test تستخدم لاختبار الأجزاء الصغيرة دون أي ارتباطات مع عناصر ومكونات أخرى.

فحتى لو كان المشروع صغير ، يظل Unit Test احد اهم الإجراءات المتبعة للحفاظ على جودة الكود.

كلام غير صحيح.

باستخدام النسخة اعلاه ، سيكون التطبيق يستخدم مكتبات Qt برخصة LGPL والتي تسمح بأن يكون التطبيق مغلق المصدر مع إمكانية بيعه في حالة كان الربط مع Qt بشكل Dynamic library وهو الوضع الطبيعي.

انظر هنا

Possible to keep your application private with dynamic linking

لا تحتاج الى ان تكتب أي شيء بداخل السورس كود في تطبيق مغلق المصدر.

طالما استخدمت النسخة من الرابط اعلاه ، يمكنك انشاء تطبيقات تجارية مغلقة المصدر ، وبيعها بمقابل مادي.

استخدم النسخة المفتوحة المصدر (LGPL)، و من خلالها يمكنك تطوير تطبيقات مغلقة المصدر وتحقيق عوائد وأرباح.

عشرات السنين والآف المبرمجين.

استخدم لينوكس منذ 11 سنة بشكل يومي.

ابرمج ، اكتب ، اتصفح ، ...الخ.

و صحيح ان هناك العديد من الأشياء التي تحتاج ان تفهمها وتعييها بشكل جيد حتى تستخدم لينوكس بشكل صحيح.

وهذا أمر طبيعي لأي مستخدم ، ان يتطور ويتعلم مع الايام.

كل أو أغلب التطبيقات تعمل هكذا.

إقرأ عن RESTful API.

بخصوص ال Authentication يمكنك استخدام أحد الطرق المعروفة مثل Basic Authentication, OAuth2 or any token based authentication.

باستخدام Qt يمكنك.

Android Studio 2.2+ يأتي مسبقا مع openJDK8 ، لذلك حمل آخر نسخة ولن تحتاج الى تحميل JDK بشكل منفصل.

عموما اذا اردت ان تكمل في مشلكتك، ادخل على الإعدادت وحدد مسار ال JDK لكن يجب ان يكون 8 او 7.

البناء من الصفر هو أحد الطرق الفعالة لتعلم الخبايا والتفاصيل الدقيقة.

مشروع تخرجي كان إعادة اختراج العجلة لإنشاء نظام تشغيل ، الهدف منه ذاك الوقت هو توفير شفرة مصدرية لكي تستخدم كمادة تعليمية مساعدة ، بالإضافة الى مستند البحث والذي كتبته باللغة العربية لدعم هذا المجال.

البحث

/blob/master/tex/document.pdf

توجد طريقة أخرى ربما أكثر فعالية في التعلم ، وهي المساهمة في تطوير مشروع مفتوح المصدر. قد يبدوا أن الأمر مستحيل في بداية الأمر ، لكن مع كثرة قراءة الأكواد والتواصل مع المطورين والبدء بحل المشاكل bugs تزداد المعرفة والإلمام بالمشروع ، وبالتالي تزداد المقدرة على المساهمة الفعالة.

أيضا يوجد نظام الأقصى والذي يعتبر من أوائل المحاولات العربية في هذا المجال

البحث

-1

"الأسعار لهذه التطبيقات تتراوح ما بين 50 دولار وذلك للتطبيقات البسيطة كالتطبيقات والتي تستخدم في عرض موقع لترتفع نسبياً في حالة التطبيقات التي تتطلب شغل اكتر وإضافة مزايا مختلفة لتصل بالنهاية إلى حوالي 3000 دولار لتطبيق الواتساب"

هذا في حالة تم برمجة التطبيق من قبل غير المختصين وهواة النسخ واللصق.

للأسف معلومات خاطئة تماما.

ابدا من هنا

للمزيد من الكورسات

وكذلك هنا

أفضل طريقة للتعلم هي الممارسة مع وجود شخص يتابع عملك ويوجهك للمسار الصحيح و استخدام ال best practices.

يمكنك البحث عن أي مشروع Open source والبدء من هناك.

اذا قمت بتوضيح كيف تحصل على الجدول النهائي قد يتمكن الأعضاء من مساعدتك.

بخصوص البيانات أعلاه، هل مجموع T3 = 120 ؟ أعتقد يوجد خطأ في جدول النتائج أو جدول T.

عموما ، تحتاج الى مصفوفة ببعدين لحفظ قيم P وكذلك مصفوفة أخرى ببعدين لحفظ قيم T

واخيرا مصفوفة النتائج R وستكون أبعادها هي P_n X T_n مع اضافة عمود وصف لحفظ المجموع.

ولحساب قيمتها نحتاج معرفة الآلية التي تقوم بها يدويا. بشكل عام لاحظت أن قيمة أي عنصر في R هي قيمة العنصر المشترك بين الصف P و T.

فمثلا أول قيمة في الجدول ، ناتجة من ايجاد العنصر المشترك بين جدول P وجدول T ، وهكذا.

يمكنك كتابة كود للفكرة مع كتابة اختبار لها unit test حتى تتأكد من خلوها من المشاكل على عدة datasets.

ربط تطبيق الأندرويد مع ال backend systems يحتاج الى انشاء API/integration point/Web service ، حتى تتمكن من إستقبال المدخلات من تطبيق الأندرويد وحفظها في قاعدة البيانات أو استرجاع بيانات لتطبيق الأندرويد.

عليك بالبحث عن كيفية انشاء RESTful Web Service في الخادم لديك باستخدام أي لغة برمجة Java, PHP, ...etc ومن ثم ربط تطبيق الأندرويد عبر ال API، وارشح استخدام Retrofit and RxJava.

يوجد طريقة اخرى، وهي عرض الموقع بداخل تطبيق الأندرويد في WebView وهكذا سيكون تطبيقك Hybrid application ولن تحتاج الى API.

تم ايقاف دعم ال Eclipse. انتقل الى Android Studio

في أندرويد الحالي لا يمكن ذلك حسب عملي.

الحل الوحيد هو بناء Custom Android Image وعمل ما تريد.

اتحدث عن local database في الجوال.

البحث بشكلين:

  • عن طريق ال API وهي في حالتك ملف PHP ومن ثم عرض النتائج في القائمة.

  • احضار جميع الأسماء وحفظها في قاعدة بيانات في الجوال. وهكذا يمكنك البحث دون استخدام ال API.

في مثالك لا يوجد أي تعامل مع قاعدة بيانات. الكود يتصل مع ال backend ويقوم بجلب قائمة من الأرقام والأسماء ، ومن ثم يتم تعبئتها في ال Adapter.

للبحث يوجد حلين:

1- البحث عن طريق الإتصال مع ال backend في كل مرة يريد المستخدم البحث فيها .

2- حفظ القائمة في قاعدة بيانات ومن ثم البحث فيها.

وبالتأكيد سيتم ارسال النتائج الى ال Adapter لكي يقوم بعرضها بدلا من القائمة الأصلية.

الذي يستخدم الأدوات الجاهزة ويعيد استخدام المكونات الموجودة هو أفضل من ناحية القدرة على انجاز المشاريع، ومن ناحية تطبيق المفاهيم الصحيحة في التطوير.

أما الذي يبني كل شي ، فهو غالبا يستهلك وقته وجهده في شيء موجود أصلا وربما بطريقة أفضل، وبالتالي لا يستطيع انجاز المشاريع بسرعة ، وربما تصدر منه العديد من الأخطاء وعدم القدرة على تسليم العمل المطلوب.

من الناجح؟ لا اجابة لهذا السؤال، لأن النجاح أمر نسبي. وما تعتبره نجاح ربما لا يكون كذلك في أعين الآخرين.

الخلاصة لا تضيع وقتك في بناء شيء موجود ، الا اذا كان لديك إضافة جديدة أو تحسين. أيضا من الأفضل أن تساهم باضافتك على الأعمال الموجودة.