What is Statistics

Hello all,

I plan to start a series of tutorials in Data Analysis and SQL and it all starts with introduction to statistics as follow ..

ًWhat is statistics ?

Statistics is a science (close to and uses mathematics) with huge interest of understanding and learning from data, specially big amount of data.

Activities in statistics science include collecting, organizing, analyzing and interpreting data, making inferences, probabilities and expectation from data.

Why do we study statistics ?

The main big reason is that it helps us in decision making bY answering important questions, producing results (conclusions) or predicting information that we can build trustable decision over it.

Let me give you some beautiful insights about what statistics do for us.:

• If we have marks of Math for students in a classroom. Knowing 1 value in statistics called “range” can tell you that between all students there is no mark greater than any other mark in the class with value more than  5. This can give you better understanding of your students marks that marks are close to each others enough.

• With statistics you can predict the price of your house based on information about prices in the area of other houses that have some common/different attributes
• If we have data about salaries of all people in a city. Statistics can tell you that 75% of salaries in the city lies between 1000 and 1500 so if you are going to price your product it should fit in that range.
• In telecommunication, If you have data about people calls and duration, statistics can give you information like those segment of customers always spend more than 1000 minutes per week. You can use this to make special marketing package for them with better price to guarantee their loyalty.

Those are tiny examples of what statistics can do for us. There are much much more. Specially in the inferencing/predicting part. Take for example giving the probability of some disease for some person, or predicting student marks in an exam based on previous indicator.

I hope you got the sense of what statistics is and what it can do for us. Next part we start digging in.

DEPENDENCY INJECTION IN ANDROID

There is a very good video talking about Dependency injection and Dagger 2 (Sophisticated library developed by google for implementing decency injection) . I wanted to save it here as a reference to refer to others later. I will also update this post whenever I have something better or more info to add.

Here you go : https://youtu.be/oK_XtfXPkqw

Image

نصائح فى تعلم اللغات – كيف تتعلم لغة جديدة بشكل صحيح وفعال

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

هناك بعض النقاط يجب أن تعرفها جيدا حتى لا تيأس من تعلم لغتك الجديدة:

1- لن تتعلم اللغة بسرعة فلا تكون متسرعا.

• اللغة يجب ممارستها مثل المهنة أو الحرفة. لن تتعلمها فى يوم وليلة. فلا تتسرع. فقبل البدأ بأى نصيحة أخرى يجب أن تدرك هذا جيدا لأن تسرعك فى تعلم اللغات يؤثر سلبا عليك وعادة ما يسببلك احباط لأنك ترى ان مستواك لم يتقدم بعد فترة معينة.
• اتقانك اللغة يعتمد على الكثير من العوامل أولها الممارسة وسنتحدث عن ذلك لاحقا. فى حالة عدم وجود تلك العوامل لن تتعلم مطلقا ولو بعد مائة عام.
• فى رأيي  يمكنك البدأ بوضع سنة كاملة لاتقان اللغة بشكل يسمح لك بالتحدث
• 6 أشهر لتتحدث بشكل متوسط وتعرف الكثير من المواقف.
• 3 أشهر لتلاحظ انك بدأت تستطيع التعبير باللغة الجديدة
• هذا فقط اذا قمت بتطبيق النصائح القادمة. تجاهلها ربما يزيد تلك المدة.

2- ضع اهدافك مكتوبة وواضحة

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

3- التحق بدورة تدريبية داخل فصل دراسى وليست فى المنزل (ان أمكن)

• الكثير يعتقدون ان تعلم اللغة فى المنزل بمفردهم موضوع بسيط وهذا ليس صحيح والعائد منه بطىء وقليل. وربما العديد ممن يقرأون هذا الان يعلمون ذلك جيدا من واقع تجربتهم.وربما سيختلف مع البعض ايضا فى تلك النقطة. دعنا نعرض الأمر بوضوح. المذاكرة فى المنزل مطلوبة ولكنها ليست الحل الأمثل و هذا يرجع لعدة أسباب كالتالى :
• الالتزام وعدم المتابعة. ربما تكسل يوما أو اكثر لأى سبب عن المذاكرة. وصدقنى هذا سوف يحدث ويحدث كثيرا وربما انت نفسك تعلم ذلك وحدثت معك. بعد النية للتعلم حتى اليوم .. كم مرة جلست لتتعلم ؟ وكم مدة كل مرة ؟
• عدد مرات التكرار التى تقوم بها عند مذاكرتك بمفردك. يجب تكرار النطق والمواقف أكثر من مرة وهذا لا يحدث كثيرا عند مذاكرتك بمفردك ولكنه يحدث بالطبع داخل الفصل الدراسى لأن غالبا ما يوجد أكثر من شخص يتكلم ويخطأ ويعيد بالاضافة اليك
• تصحيح الأخطاء. وهذه من أهم النقاط . كيف ستعرف انك تنطق أو تعبر عن موقف معين بشكل صحيح ونطق صحيح اذا اردت التعبير عن موقف خاص بك وخاصة ان كان هذا الموقف ليس مكتوب أمامك ؟
• الإجابة على الأسئلة. اذا كان لديك سؤال كيف ستجيب عنه ؟ اعرف اجابتك. سوف أبحث على الانترنت. ولكن كم من الوقت يستغرق ذلك وكم يستغرق فى حالة وجودك داخل الفصل الدراسى؟
• الإحباط عندما ترى ان مستواك لا يتقدم او انه بطىء جدا او انك لا تعرف كيف تقيس ذلك سوف يقلل ذلك من عزيمتك.
• من تجربتى الشخصية لغتى تحسنت بشكل أسرع عندما التحقت بفصل دراسى وبدأنا الممارسة داخل الفصل والسؤال والتعلم من الأخطاء. خاصة لعدم وجود فرصة كبيرة بالاحتكاك بأشخاص ممن لغتهم الام هيه اللغة التى أتعلمها.
• ربما تسمح ظروفك بالتواجد فى أماكن مع أشخاص يتحدثون اللغة الجديدة ويمكنك سؤالهم بشكل مستمر عن اسئلته وتصحيح أخطائك. ربما يساعدك هذا على التعلم بمفردك وليس داخل فصل دراسى.
• اذا قررت التعلم داخل فصل دراسى فعليك باختيار مكان جيد للالتحاق به وان كنت فى المستوى الأول يجب ان يكون المحاضر يتحدث لغة ثانية انت تفهمها بالاضافة للغة التى تود ان تتعملها حتى يسهل ذلك الشرح والالقاء. بعد ذلك بدأ من المستوى الثانى او الثالث الأفضل ان يكون المحاضر والمحاضرة كلها باللغة الجديدة.

4- الممارسة.

• لا تخجل من التحدث باللغة الجديدة مع الناس واظهار أخطاءك. مع الوقت ستتحسن
• يمكنك الممارسة اونلاين عن طريق التعرف على أشخاص ممكن يتحدثون اللغة ومحاولة التعارف عليهم
• مارس فى حياتك اليومية بالتعبير باللغة الجديدة. بمعنى…
• ابدأ بالبحث عن التعبير عن مواقفك اليومية باللغة الجديدة. مثلا يومك يبدأ بالقاء صباح الخير على من تسكن معهم. فتعلم كيف تقول صباح الخير باللغة الجديدة.
• تقابل بعض الاشخاص فى المصعد وتسألهم اسأله بسيطة مثل .. هل انت عربى ؟ هل تعيش هنا ؟ ماذا تعمل ؟ تشرفت بمعرفتك. تعلم كيف تقول تلك التعبيرات باللغة الجديدة واذا كنت فى دولة تتحدث اللغة الجديدة فهذا سوف يساعدك جدا جدا فى ممارسة ذلك. اذا لم تكن فعليك بالانترنت (تفاصيل أكثر فى الاسفل)
• تركب المواصلات العامة ؟ تعلم كيف تسأل السائق هل تذهب للمكان كذا ؟. اريد النزول هنا.
• هل تأكل فى مطاعم كثيرا؟ تعلم كيف تطلب الطعام باللغة الجديدة …. وهكذا.
• لا تستعجل فى اتقان الأمر. فسوف تمر بأوقات كثيرة لا تفهم ماذا يخبرك الشخص الاخر .. لا تقلق .. ستتحسن مع الوقت

5- ابحث عن شريك لتبادل اللغات

• هذا امر جدا رائع. سوف تجد أن هناك أشخاص يريدون تعلم لغتك وانت تريد ان تتعلم لغتهم. ابحث عن هؤلاء الاشخاص وتبادل معهم الحديث بلغتك ولغتهم وهذا سيحسن كثيرا من مستواك ويمكنك الاستعانة بهم فى الأسئلة المواقف المعينة فى اللغة الجديدة او الدولة الجديدة التى تعيش بها
• كيف تجد ذلك ؟ هذه بعض المواقع سوف تساعدك وساعدتنى شخصيا فى التعرف على أصدقاء ممن يحتاجون تعلم لغة انا اتقنها ويستحدثون لغة انا اريد أن اتعلمها

6- ابحث عن شخص يجيب عن اسئلتك ( برنامج جوال رائع)

• وهذا أمر مهم جدا جدا جدا. سؤاء كنت تذاكر بمفردك فى المنزل أو مع الالتحاق بدورة تدريبية. يجب ايجاد شخص يجيب على اسئلتك.
• اذا كنت فى فصل دراسى فالمعلم يجب ان يقوم بتلك الوظيفة (وان كان لن تجده فى معظم الوقت). ربما أيضا صديق تعرفه يتقن اللغة او تعرفت عليه من خلال الانترنت مثلما ذكرنا فى النقطة السابقة
• اليكم برنامج رائع فى هذا الصدد. يمكنك ارسال سؤال فى اى وقت والكثير ممن يتحدثون اللغة سوف يجيبوا. انا استخدمه بشكل شخصى بصورة كبيرة اسمه linqapp  ورابط التحميل http://www.linqapp.com/get-the-app/
• قم بتحميل البرنامج وابدأ بطرح أسئلتك

7- الاستماع للغة من متحدثيها

• وهذا أمر غاية فى الأهمية أيضا. يجب ان تستمع للغة فى مواقف ممن يتحدثون اللغة انفسهم وليس محاضر وليس تسجيلات صوتية. أذكر فعلا ان مستواي فى اللغة الانجليزية تحسن بشكل كبير جدا عندما بدأت فى تنفيذ تلك النقطة.
• هذا متوافر عادة  فى الأفلام و المسلسلات و الأغانى و ان كان لديك تحفظ فى مشاهدة ذلك مثل الكثيرون منا يمكنك التعويض بمشاهدة برامج تلفزيونية او لقاءات مسجلة أو افلام كرتونية
• لا تقلق من عدم فهمك اللقاء بأكلمه او حتى نصفة أو اقل. ربما تفهم 1% منه او 5% منه وهذا طبيعى فى بداية الأمر. مع الوقت ستتحسن
• يفضل ان يكون الفيديو مترجم للغتين اللغة الأساسية للفيديو ولغة أخرى انت تفهمها. اعرف ان هذا صعب توافره ولكنه موجود.
• اذا كان لديك محاضر جيد سوف يقوم لك بذلك عن طريق احضار بعض الفيديوهات او الصوتيات الحية وممارستها معكم لتحسين الاستماع

8- اتبع منهج

• نقطة أخرى هامة جدا. انتقالك من موقع لموقع أو من قناة لقناة على اليوتيوب ما هو الا تشتيت وسيؤثر سلبا علي مدى سرعة تعلمك وايضا من اسباب الاحباط لأنك لن تعرف مستواك ولا تعرف تقييمك. الحل الأمثل من وجهة نظرى ابحث عن منهج واتبعه.
•  ممكن موقع على الانترنت أو كتاب أو قناة على اليوتيوب ولكن كاملة ومعروف جميع دروسها حيث ان معظم قنوات اليوتيوب محاولات فاشلة للتعليم لا تحتوى اطلاقا على منهج كامل. وأنصح هناك بوجود كتاب معتمد ومشهور فى تعلم تلك اللغة واتبع منهجه. مهما تعددت مصادرك يجب ان تتبع منهج حتى تعرف مستواك وتقييمك.
• فى اللغة الانجليزية أرى ان منهج Berlitz جيد وفى اللغة التركية أرى مناهج İstanbul Yabancılar için و منهج Gazi University TOMER ومنهج Yeni Hitit جيدة جدا
• تعرف على المنهج كاملا كمحتوى قبل البدأ. حتى تعرف المواضيع التى ستتعلمها مسبقا فلا يشتتك ذلك فى البحث عن موضوع لاحقا
• اما عن قنوات اليوتيوب فيمكنك الاستعانة بتلك القنوات فى تدعيم منهجك التى تتبعه عن البحث عن شيء معين تود أن تفهمه أكثر

9- لا تحفظ كلمات وانما مواقف وجمل

• منذ ايام الدراسة الثانوية والكثير يتبع طريقة خاطئة فى بناء الحاصل اللغوى عن طريق حفظ واعادة قراءة الكلمات والتى ينساها غالبا مع الوقت
• استمع واقرأ مواقف تستخدم فيها الكلمات فهذا أكثر فاعلية من حفظ الكلمات منفصلة

10- افهم القواعد بعد رؤيتها

• اذا تعلمت بعض الجمل واستخدمتها كما هى ثم تعرفت على القاعدة سيكون فهم القاعدة أسهل لأنك قطعت نصف الطريق باستخدامك لها مسبقا

11- تحدث بصوت واضح وانت تذاكر

• لا تقرأ فقط بعينيك. اقرأ واستمع لصوتك وقارنه بما تسمعه من الاخرين او من الفيديوهات

12- استخدم الانترنت فى التعلم

• Youtube  يحتوى على الملايين من الدروس التعليمية ونصيحتى ابحث فقط على ما تريد تعلمه ولا تجعل من تعدد المصادر سبب لتشتيتك. فلا تدخل جميع القنوات وتشترك بها وتسمع مرة درس من هنا ودرس من هناك. هذا تشتيت ومضيعة للوقت
• اتبع منهج كما ذكرنا سابقا واستخدم اليوتيوب كأداة مساعدة. مثلا اذا كنت تدرس اللغة الانجليزية من كتاب وفى درس بعنوان If statement  وان لم تفهم هذا الدرس جيدا. هنا اداتك الأولى والرائعة هي اليوتيوب YouTube.
• ابحث عن هذا الموضوع وسوف تجد المئات ممن يشرحونه بأساليب مختلفة وأمثلة متعددة وستجد ما تريد حقا. ثم … استكمل منهجك بشكل طبيعى.

13- اذا لم يكن لديك وقت للالتحاق بدورة تدريبية داخل فصل دراسى يمكنك عمل ذلك نفسه على الانترنت

• مثل verbling  والذى يقوم بعمل فصل دراسى اونلاين على hangout  من جوجل https://www.verbling.com/  او رابط التطبيق على الفيس بوك https://apps.facebook.com/verbling/?fb_source=search&ref=br_tf
• أو البحث عن معلم اونلاين  بأى شكل . أى صورة يمكنك بها مشاهدة او التحدث مع معلم فى محاضرة تعليمية. فى الغالب لن تكون مجانية ونصيحتى لا تجعل هذا سبب فى تأخرك للتعلم. التعليم ليس مجانى ادفع مقابل الخدمة الجيدة

أتمنى ان يكون الموضوع مفيد للجميع

بالتوفيق لكم فى لغتكم الجديدة

———————————————————————

Blog post by: Mohammed Saudi

Libraries to use for easy asynchronous REST web requests and image loading

Here is my list for good libraries to use for that purpose. I may come back later for comments but I’m just listing them now

Volley

http://ogrelab.ikratko.com/android-volley-examples-samples-and-demos/

Tutorials:

https://github.com/dmytrodanylyk/dmytrodanylyk

http://www.michenux.net/android-volley-and-gson-tutorial-797.html

Picasso

http://square.github.io/picasso/

Android Asynchronous

http://loopj.com/android-async-http/

RESTDoid

https://github.com/PCreations/RESTDroid

Retofit

http://square.github.io/retrofit/

Spring Android

http://projects.spring.io/spring-android/

Android jBridge

Resty

http://beders.github.io/Resty/Resty/Overview.html

mechanoid Ops

http://robotoworks.com/mechanoid/doc/ops/index.html

CRest

http://crest.codegist.org/

Fix Eclipse Slow update

Hello all,

I believe that many of eclipse users have faced this problem when updating plugin or something in eclipse , It is EXTREMELY SLOW .  All what you need to do to fix this is to uncheck the check box  “Contact all update sites” option in the update window ( when you click help> install new software) . and you are done.

best of  luck,

Add eclipse icon to the luncher ubuntu linux

For 12.04 and 11.10

First, create a .desktop file to eclipse:

gedit ~/.local/share/applications/opt_eclipse.desktop

Then, paste this inside (dont forget to edit Exec and Icon values):

[Desktop Entry]
Type=Application
Name=Eclipse
Comment=Eclipse Integrated Development Environment
Icon=** something like /opt/eclipse/icon.xpm **
Exec= ** something like /opt/eclipse/eclipse **
Terminal=false
Categories=Development;IDE;Java;

After that, open that folder with nautilus:

nautilus ~/.local/share/applications

sudo chmod +x  ~/.local/share/applications/opt_eclipse.desktop

And then drag and drop opt_eclipse.desktop to launcher.

The Problem

Service, Thread and  Process are terms that may cause confusion for many people who do programming in Android or similar platforms.  I’m  going to explain here what they are and the difference between the m in simple words.  I assume you already know the Android application components like activity, service ,….

Process

In general, You can define process as a program unit of execution that has its own allocated resources and memory.  Running programs usually consists of multiple processes (one main controller process and many childs) . Multiple processes are independent of each others and can communicate only via Inter Process Communication mechanisms  that are provided by the hosting operating system.

Aside: Have you heard that “Google Chrome” runs the tabs of the browser each in different process ? . By doing this, They provide isolation between the tabs handling web pages so each tab has it’s own resources and handling mechanisms. If one crashed, the others are still Ok. Because they are  independent  😉

Thread  is part of your program functionality that can run in parallel with the main application execution process (or thread). It runs withing a process. The process may contain only, and that’s rare, one thread and mostly contains multiple threads. Threads share the same resources and memory. Creating new thread need very less work that creating a new process.

Example: Multiple downloads that are running in the same time in a file downloader software. And you may ask here , but if one download crashes, the others are not!!. Yes.  I didn’t say threads are dependent of each others. I said they have the same resources allocated.

In Android

When an application’s first  component starts , the Android system starts a new process for the application with a single thread of execution called “main” thread or “UI Thread“. This thread responsible for very important stuff like dispatching events to the user interface widgets. The started Process then may hold Activity, Service or BroadCastReceiver.

All components of the same application usually run in the same process. When new component is started, it will  , by default, run in the same thread and inside the application main process unless you provide some thing else.  For example if you run a service by startService() method from an activity, this service runs in the main application process and thread. This is called “Single Thread Model”.

In this case (running service from an activity to do some intensive work), this single thread model can cause poor performance and may cause your application not responsive and may also see the “ANR” dialog.

Here comes the need for creating worker thread(s) that runs in background in parallel with the “main” thread leaving the main “UI” thread responsive. This is a very common technique that you will do every day when developing Android apps.

Building worker threads can be done in several ways:

– Implementing Thread using the Java style ( Extending Thread class or Implementing runnable interface )

– In case we are working with services, You may use IntentService instead of Service class.

– For the problem of handling and updating user interface from different threads , the  Android SDK is shipped with many ready solution for  that like :