Saturday, April 29, 2017

G-Lib, a Weighted Grade Point Average Library For Java

Hello everyone. I'm more than happy to announce the release of G-Lib 1.2, one of my programming projects. The name 'G-Lib' Stands for 'Grader Library'.

What is G-Lib?
G-Lib is a java-based library  that can be used to create a custom grade point average (GPA) scales and use them to grade any thing that needs a weighted grading scale. It can be used to grade courses, quizzes, homeworks and even more. The simplest use of the library is to create a GPA calculator using out of 4 or 5 scale. But the library does not limit the developer to only this. It can be used in many other ways.

You can read more about the library and the idea behind it by visiting the following link: Introduction to G-Lib

Library Features:
  • The ability to grade any thing uses weighted grading scale (Generics support).
  • Support for the most commonly used weighted scales.
  • Support for creating custom grading scales.
  • Support for event handlers.
Library Information:


 Here are few resources that can help in getting started with G-Lib:
In case you needed any help regarding anything, please feel free to contact me using this blog or by using  the following email: support@programmingacademia.com.


Last Updated: 29/4/2017

Saturday, April 22, 2017

اسئلة و اجوبة حول تعلم البرمجة


مُقدمة

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


ماذا نقصد بلُغة برمجة؟

لغة البرمجة هي مثل اي لغة موجودة بالعالم. الفرق الوحيد هو ان لغة البرمجة يستخدمها الإنسان للتواصل مع الحواسيب. الحواسيب بحالها تعتبر اجهزة غير ذكية و لهذا السبب تحتاج من يعطيها الاوامر حتى تنفذ مهمتها. فمثلا, عند ارسالك رسالة بريد الكتروني, هنالك امر قام احد بكتابه يجعل الحاسوب يرسل الرسالة. هناك الكثير من لغات البرمجة الموجودة حول العالم. لكل لغة هدف معين تخدمه. فمثلا, هناك لُغات تُستخدم لكِتابة البرامج من اجل نظام تشغيل ويندوز. و هنالك لُغات لكتابة البرامج للهواتف الجوالة. لكل لغة برمجة منصة برمجية تعمل عليها و يمكن استخدامها لكتابة التعليمات البرمجية.


ماذا نقصد ب "منصة برمجية"؟

المنصة هي البنية التحتية التي من الممكن استخدامها لتشغيل التعليمات البرمجية. بشكل عام, المنصة البرمجية هي التي تجعل الحاسب الآلي يعمل بالشكل المطلوب. المنصة قد تكون برمجية (مثل منصة جافا) او قد تكون برمجية مع اجهزة خارجية ملموسة بنفس الوقت (مثل انظمة التشغيل). من الممكن ايضا اعتبار مُتصفح الإنترنت منصة بما انه يستطيع تشغيل التعليمات البرمجية.


ما هي لغات البرمجة الموجودة حاليا و ما هي المنصات التي يمكن البرمجة لها؟

هناك العديد من لغات البرمجة الموجودة و من الصعب احصائها كلها. ايضا من الصعب تحديد المنصات اللتي تدعمها كل لغة برمجة. قبل الإجابة على هذا السؤال, يجب علينا معرفة انواع لغات البرمجة. و معرفة انواع لغات البرمجة ليس بالأمر السهل اذا كانت هذه البداية لك بعالم البرمجة. يمكنك الذهاب الى هذا الرابط لتتعلم حول تصنيف لغات البرمجة بشكل مبسط. سوف اقوم فقط بذكر لغات البرمجة المعروفة مع المنصات الأساسية اللتي تدعمها فقط. الجدول التالي يبين المنصات مع لغات البرمجة.
لغة البرمجةالإسم بالإنجليزية المنصات المدعومة
لغة برمجة جافا Java Programming Language متعدد (منها اندرويد, ويندوز, لينيكس)
لغة بي اتش بي PHP Language ويندوز, الأنظمة اللتي تشبه يونيكس
لغة سي بلص بلص C++ Language متعددة (وينوز, لينيكس)
لغة جافاسكربت JavaScript Language متصفحات الإنترنت
اتش تي ام ال HTML متصفحات الإنترنت
سي اس اس CSS متصفحات الإنترنت


ما هي اول لغة برمجة يجب ان اتعلمها؟

لا توجد اجابة محددة لهذا السؤال. اول لغة برمجة تعاملت معها كانت اتش تي ام ال. لكن اول لغة برمجة تعلمها كانت لغة جافا. بالنسبة للغات التي تستخدم لبرمجة صفحات الإنترنت, لا انصح البداية بها. انصح بتعلم لغة ذات مستوى رفيع مثل لغة جافا او لغة سي. فبِتعلمك لهذه اللغات, سوف تتعلم اساسيات علوم الكمبيوتر.




Wednesday, April 19, 2017

Overview of Program Memory Structure

One of the most important concepts that a computer scientist must know about is how the program looks like when its executing. The first thing that happens when we double click a program icon in Windows OS is that it is loaded into memory. The program is not loaded randomly for sure. Each program has a small part of the memory. That small part is partitioned into smaller parts.

The next picture shows a basic overview of how program memory is  divided.

Usual Memory Structure of a Program.


 This structure is used by almost any program that is loaded into memory. Now, let's start by explaining the meaning of each part of the given diagram. In many cases, the higher address are put at the bottom. For instance, the address 0xffffffff will be at the bottom of the diagram (Reverse the diagram).

The Stack

The stack is a place where the program stack is located. From its name, we can infer that it is a "Stack Data structure". A program stack is manly consist of method calls. When a method is called, the return address is "pushed" to the stack. Once the execution of the method is completed, the address is "poped" from the top of the stack. Usually the term "Call Stack" is used to describe this type of stack.

The Heap

For sure you have heard of this term before. The memory heap is something difference from the heap data structure. The memory heap is a place that is used for dynamically located memory. It is used for the data that is given at the run time. For example, the size of input string from the user is unknown. In this case, it will be placed at the heap. The heap will only contain program data. In C programming language, the system call "malloc" is used to locate heap space and the system call "free" is used to free the space. The next code example shows how it is done in C language.


#include <stdio.h>
#include <stdlib.h>

int main() {
    int numOfBytes = 100;
    //a buffer that will contain user input
    char * input;
    //locate space for user input
    input = malloc(numOfBytes);
    //read string from the user
    fgets(input,numOfBytes,stdin);
    printf("You give me '%s'",input);
    //must free memory after use
    free(input);
    return 0;
}

Uninitialized Data

Also known as BSS Segment. This segment of memory contains the global variables and static data that has not been initialized. For example, the variable "static int myInt; " will be located at uninitialized data segment.

Initialized Data 

This part of memory will contain the global and static variables which have been initialized within the code. This means that the variable can be accessed from any where in the program.

Code 

This part of memory contains the actual instructions of the program. Usually, this part of memory is placed in the top of the stack or bellow the heap in order to prevent overflows from override the data inside it.


This is the most basic view of program memory. For sure there are many thins inside each section of the memory but we only want to look at the abstract view.

Monday, April 17, 2017

JavaScript: Working With Cookies


This is a simple lesson that has all what you need to know about web cookies using JavaScript. In this lesson, we will learn the following:
  • What is a Cookie.
  • How to Create them.
  • Setting Expiry Date of a Cookie.
  • View a Cookie using JavaScript.
  • Deleting a Cookie.

What is a Cookie?

The correct question to ask is 'What is a Web Cookie?'.
A web cookie is a small piece of text that is created by a web site's
and sent to the user's computer and stored temporarily. The main functionality
of the web cookie is to provide a state for the stateless web pages.

A web cookie has 3 main components:

  • Name.
  • Value.
  • Zero or more pairs of key/value.
Here is an example of a web cookie:


my_name = ibrahim

This is the most simplest cookie that can be created. It has the name 'my_name'
and a value of 'ibrahim'.

It is very simple to create cookies with JavaScript. The following syntax can
be used to create the previous cookie:


document.cookie = "my_name = ibrahim";


When a cookie is created, it is better to specify an expiry date for it.
If we do not specify an expiry date, the cookie will be deleted once the
browser window is closed. Expiry date is considered as key/value pair


document.cookie = "my_name = ibrahim; expires = Sat, 04 Feb 2017 19:43:41 UTC";

It is good practice to set the time to UTC (Coordinated Universal Time) since the visitors of a web site may have different time.

To make a cookie expire after specific time, we can use 'Date' object to to that.


//create new date object

var date = new Date();

//we want our cookie to expire after 5 days

var days = 5

var currentTime = date.getTime()

/*


note that 1 second = 1000 milliseconds

and 1 minute has 60 seconds and

one hour has 60 minutes and one day has 24 hours.

5 days = 1000*60*60*24*5 = 432000000 milliseconds

If we want from our cookie to expire after 2 hours, we set

the time to (current time + 1000*60*120)


*/

date.setTime(currentTime + 1000*60*60*24*days);

document.cookie = "my_name = ibrahim; expires = "+date.toUTCString();

In order to update the content of the cookie, we use the same syntax that is used
to create a cookie.


//this is our new cookie

document.cookie = "my_name = ibrahim; expires=Sat, 04 Feb 2017 19:43:41 GMT";



//this is the same cookie with new value

document.cookie = "my_name = ali; expires=Sat, 04 Feb 2017 19:43:41 GMT";


To view all cookies for the web site, we simply use the following:


allCookies = document.cookie;

console.log(allCookies);

What we get is actually a string of text that shows all the available cookies that
is sent by the web site. To get specific cookie value, we have to build a function
that can split cookies.

To delete a cookie, we have only to update the expiry date of the cookie to a date that'd
has been passed. But before we delete a cookie, we have to set the 'path' value of the cookie.
some browsers does not allow the deletion of a cookie with no path.



//create cookie

document.cookie = "my_name = ibrahim; expires = Sat, 04 Feb 2030 19:43:41 UTC;path=/";

//delete cookie

document.cookie = "my_name = ibrahim; expires = Sat, 04 Feb 2010 00:00:00 UTC;path=/";


Source: Programming Academia

Saturday, April 1, 2017

وجود الشمع على التفاح, هل اكل الشمع مضر ام لا؟



مقدمة

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

الكثير من الناس يتخوف من اكل التفاح بسبب وجود المواد الشمعية الصناعية عليه.



المادة الشمعية قد تكون طبيعية و قد تكون صناعية

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



وجود المادة الشمعية على التفاح

 بالنسبة للتفاح, هذه المادة الطبيعية تتكون بشكل اساسي مِن حِمض يُدعى بِ حِمض اليورسوليك. يوجد هذا الحمض داخل قِشرة التفاح. هذا الحمض صعب الذوابان بالماء ولِهذا حتى عِند غسل التفاح سوفَ تبقى الطبقة الشمعية لأنه العنصر الأساسي المكون لها. هذا الحمض يُعتبر مِن احد العناصر المُفيدة لِجسم الإنسان. فهو يقوم بِتثبيط الخلايا السرطانية و يعتبر مكون اساسي في المُركبات النشطة بيولوجيا مثل مضادات الأورام. فلِهذا السبب ينصح الأطباء بِأكل قشرة التفاح.



وضع الشمع الصناعي على الفواكه و الخضار

في بعض الأحيان, تقوم بعض شركات إنتاج الفواكه بِوضع شمع إضافي على الفواكه او إزالة الشمع الطبيعي و وضع غيره. الشمع اللذي يتم وضعه قد يكون مِن مصدر طبيعي او صناعي. فعلى سبيل المِثال, يتم وضع الشمع  على الخيار, التفاح و جذور الفجل. مِن انواع الشموع الطبيعية شمع قصب السكر, شمع الكارنوبا, شمع الشِيلاك و صمغ الراتج. شمع الكرنوبا يُستخرج مِن اوراق نخيل الكارنوبا. شمع الشيلاك مادة تُفرز مِن أُنثى حشرة اللاك و صمخ الراتنج مادة صمغية تُفرز مِن الأشجار الصنوبرية. يتِم تصنيع الشمع الصناعي بِواسطة المُنتجات البِترولية. جميع المواد الشمعية الصناعية تُنتج بِواسطة صِيغ مملوكة مِن قِبل بعض الشركات. مِن الأسماء المعروفة في إنتاج مواد تشميع الفواكه و الخضراوات: Tal-Prolong, Semper-fresh, Frutox, Waxol.

نخيل الكرنوبا تُشتهر بِزراعتها كأشجار زينة بالشوارع و هي تُعتبر احد مصادر الشمع للفواكه



لماذا يتم وضع الشمع الصناعي؟

يتم تشميع الفواكه لِعدة اسباب. أحد اهم هذه الأسباب هو المُحافظة على الفواكه مِن فُقدان الماءعِند بيعها في الأسواق. فمِن المعروف ان الفاكهة قد تبقى لِفترات طويلة على الرفوف دون ان يشتريها اي احد.  فالماء يُعتبر هو العنصر الأساسي للحياة.  سبب آخر هو جعل منظر الفاكهة يبدو أكثر جملاً. عِند وضع الشمع على الفاكهة, يجلها تبدو نظِرة أكثر.



أكل المادة الشمعية

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



إزالة الشمع عن الفاكهة

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



المصادر:

1- Joe Kemble "Is There Wax on Apples?"
<https://www.bestfoodfacts.org/wax-on-apples/>

2- Wiki: Fruit waxing
<https://en.wikipedia.org/wiki/Fruit_waxing>