الجمعة، 4 أبريل 2014

مشروع: قالب simpleWhite باستخدام CSS

السلام عليكم ورحمة الله وبركاته

اردت استعيد بعض الافكار والمهارات فى استخدام CSS و HTML وقمت بتصميم قالب ابيض بسيط، كثانى قالب متكامل اصممه باستخدام CSS، استخدمت موّلد النصوص lorem ipsum لكتابة الفقرات، والقالب متروك للاستخدام المجانى لأى شخص مع حفظ الحقوق.

للمعاينة : من هنا

للتحميل : من هنا

والى متابعة أخرى إن شاء الله



متابعة روبى فى الاسبوع الرابع

السلام عليكم.. بعد انقطاع اكثر من اسبوع عن المتابعة اسجل من جديد آخر التطورات

مع لغة روبى تم الانتهاء من الاجزاء الآتية :

ما زال العمل قائم مع Sinatra Framework 

1- Configuration

2- Environments

3- Error Handling

وسأقوم بوضع القالب الذى انتهيت من تصميمه بـHTML و CSS فى المشاركة القادمة..

السبت، 22 مارس 2014

الاسبوع الثانى فى الدراسة

سلام عليكم.. خلال الاسبوع الثانى من الدراسة لم اتمكن من تسجيل المتابعة بشكل يومى ولكن كان افضل حالاً من الاسبوع الأول
حاولت الانجاز اكثر فى افروع مختلفة، معى هذا الاسبوع C++ و Ruby و CSS و Sqlite

بالنسبة لجزء الـ C++ :
التعامل مع parallel programming وكتابة برنامج صغير يقوم بحساب مجموع الاعداد الموجودة بالمصفوفة ويحسب المتوسط لها, والفكرة قائمة على تقسيم البرنامج لاجزاء وكل جزء يعمل بذاته وبعدها تتجمع الاجزاء وتعرض مباشرة..
ستشاهد نتيجة المتوسط كما شاهدتها فى تنفيذ البرنامج بالطريقة العادية من قبل.. ولكن ستجد الفرق فى الاداء والسرعة مع البرامج الكبيرة، كذلك فكرة الـParallell محتاج تعرف هتستخدمها ازاى وهل تنفع فى برنامج معين ولا لأ! المحاضر كان بينصحنا اذا كنت هتكتب البرنامج فى 10 ساعات ادى لنفسك فرصة ساعتين تفكر كويس هيشتغل ازاى parallel والا ممكن تكتبه فى 100 ساعة.

بالنسبة لروبى :
استكمالاً لما بدأته فى التعامل مع اطار العمل سيناترا انتهيت من الاجزاء التالية :
1- Sessions
2 - Logging
3 - Mime types and Attachements

كذلك بدأت التعامل مع قواعد البيانات باستخدام Sqlite Studio واقوم باستخدام المكتبة الخاصة به فى روبى

وأخيراً مع CSS :
قررت احلى بحاجة كويسة بقالى فترة مشتغلتش فيها عملت مراجعة سريعة على بعض الاوامر وهنزل التطبيق فى البوست اللى جاى ان شاء الله عبارة عن قالب بسيط

والى متابعة تانية ان شاء الله

الأحد، 16 مارس 2014

ما تم فى اول اسبوع دراسة

بسم الله.. تسجيل المتابعة خلال الاسبوع السابق
المنافسة انقسمت بين السى .. وروبى

بدأت بلغة سى++ ومتابعتى لها خلال الدورة التى احضرها فى الكلية منذ فترة
كان مشروع المحاضر عن تنفيذ لعبة معروفة باستخدام CONSOLE APPLICATION تسمى غزو الفضاء Space Invaders
الموضوع كان معقد وشعرت ان استخدام السى++ غير ملائمة لتنفيذه ، التطبيق كله اعتمد على "البرمجة الكائنية"، لم تعمل اللعبة بشكل سليم فى النهاية ولكن كانت تجربة جيدة لفهم الـCLASSES بصورة متقدمة.
انتقلنا اليوم لموضوع آخر هو Parallel Programming فكرته رائعة وسأبدا بالتدريب عليه والتطبيق قبل المحاضرة القادمة ان شاء الله.

بالنسبة للجزء الذى انجزته فردياً مع C++ 

1-Arrow Member Section

2-Constructors and Deconstructions

3-Regular and Constant Object

بالنسبة للغة روبى، توقفت عند اخر نقطة وصلت اليها فى التعامل مع اللغة واوامرها بشكل برمجى ، وانتقلت الى اطار العمل المخصص لتطوير وبناء مواقع الانترنت ( الجزء المهم بالنسبة لى ) ويسمى Sinatra.
سيناترا تبدو لى قوية واحترافية بدأت افهمها على نحو جيد من خلال متابعتى لدورة أ/مازن مليبارى على شبكة رواق، ودورة أخرى على يوتيوب للتعمق فيها بشكل اكبر وما انجزته فيها حتى الآن هو :
1- Implementing Sinatra framework.

2- Routing

3- Templates: ERB, HAML : واتمنى لو كان فيه وقت اتكلم فيه عن هامل فى موضوع منفصل

4- Filters

ده بشكل سريع مختصر الاسبوع لان الوقت ضيق جداً.. انتهى

غياب عن التدوين 6 ايام

السلام عليكم..

   بعد فترة 6 ايام انقطاع عن المدونة اعتبرها كبيرة جداً بالنسبة لى .. اعود ان شاء الله اليوم من جديد لتسجيل مستجدات الايام السابقة،
الاسبوع الاول فى الدراسة الوضع مش مستقر برجع البيت متآخر فى اغلب الايام، منهم يومين انشغلت بتسليم مشروع فى مادة الالكترونكس

حسيت بالاحباط طول الفترة اللى مكتبتش فيها حاجة.. فحاولت اظبط الجدول بسرعة وارجع اسجل المتابعة تانى ع المدونة

مبدأياً سأخصص ساعتان للتعلم يومياً تقل او تزيد بحسب ظروف اليوم والله المستعان





الأحد، 9 مارس 2014

اليوم الثانى مع C++

السلام عليكم.. تحديث اليوم الثانى

اتابع دروس C++ من خلال قناة "TheNewBoston" ، و كتاب صغير لدكتور برمجة بكليتى

والآن ما اتممته خلال اليوم الثانى :


1- راجعت طريقة كتابة الـArrays وبالأخص طباعة وكتابة العناصر فى Multi Dimensional Array
حاولت كتابة function لطباعة اى Array فردية ونجحت

وفشلت فى الثنائية وهذا الكود الخاص بها! سأتعرف سبب المشكلة واعيدها تانى ان شاء الله
void print_multiDiArray(int name[3][2], int rows, int columns){
    for (int i=0; i<rows; rows++){
        for (int n=0; n<columns; n++){
        cout <<  name[i][n] << "\t" ;
        }
        cout << endl;
    }
}
int main(){
    int amr[3][2]={{2,5},{4,8},{3,6}};

    print_multiDiArray(amr,3,2);

}

2- مقدمة فى pointers يبدو ان موضوعها كبير ولم انتهى منها بعد ..

3- دالة sizeof() و rand()

4- Pass By Value & Pass By Reference Method with and without pointers

تطبيق على الـFunctions >> دالة تقوم بالتحقق من العدد إذا كان أولى ام لا
bool isPrime (int x) {
if (x<2) return false;
for (int i=2; i<x; i++){
if (x%i==0) return false;
}
return true;
}

السبت، 8 مارس 2014

اليوم الأول مع روبى

بسم الله.. اول يوم ..اول تحديث
تعرفت على لغة روبى من اسبوع تقريبا، اللغة يبدو انها سهلة وبسيطة فى كتابتها فيمكن لأى شخص جديد فى البرمجة انه يفهم وظيفة الكود بسهولة جدا ،فمثلا لو كتبت الكود :
7.times { print " السلام عليكم " }
يمكنك التخمين بسهولة أن الكود سيطبع كلمة "السلام عليكم" 7 مرات، طيب وإذا اردت 100 مرة؟

يمكنك دائماً استبدال القوس الأول } بكلمة do
والقوس الأخير { بكلمة end ليصبح:

7.times do
print " السلام عليكم "
end

وهذا ما يميز اللغة ان الكود المكتوب لا يحتوى على : أو ; أو ( ) أو < >  أو { }
على عكس اللغات البرمجية الأخرى التى لو نسيت فيها فاصلة منقوطة فلن يعمل البرنامج للأبد

اتابع تعلم اللغة الآن من موقع التعليم المفتوح رواق _وهو مبرمج بلغة روبى_ وموقع كود أكاديمى

والآن ما اتممته خلال اليوم الأول :

1- بعض العمليات على المتغيرات ، مثل:

.upcase , .downcase , .reverse , .length , .capitalize , 

.include?"something" //returns true or false
.gsub(/something/,"with something)


يمكنك تعيين متغير ووضع فيه القيمة المراد تطبيق الخاصية عليها مثل

name_capitalized=amr.capitalize

print name_capitalized


او طباعة القيمة مباشرة مع الخاصية المطلوبة بعد اضافة علامة التعجب فى نهاية أمر الطباعة
,
my_name="amr"

print my_name.capitalize!



2- العمليات الشرطية : if, else, elsif, unless

الجديد بالنسبة لى هى unless تعتبر مثل if ولكن إذا تصورت انها تطبق نفس الوظيفة فهى تطبع else اولا، مثلا: 


unless 1>2

print"this is false 1>2"
else
print"this is true 1>2"
end

لم تضف جديد بالنسبة لى إلى الآن، ولاحظ ايضا طريقة تسمية "elsif" عكس "else if"


3- عمليات المقارنة >  <  = والعمليات المنطقية &&  ||  !


4- عمليات الجمع والطرح والقسمة والضرب على متغير باستخدام +=  -=  *=  /= 
ولا يوجد طريقة ++ او -- المستخدمة فى C++


5- Loops : While , Until , For, Loop, .Times, .each, and using Next in loops.

تعتبر Until عكس While ، مثلاً عند استخدام while لطباعة ارقام من 0 الى 10


num=0

while num<=10
print num
num+=1
end


تكافئها فى Until :

num=0

until num>10
print num
num+=1
end


فى until يظل يكرر العملية عدد مرات الى ان يصل للشرط، عكس while التى تتحقق من الشرط كل مرة قبل الطباعة

For Loop غنية عن التعريف الاضافة هنا بين الكود:


for x in 0..10

print x
end


والكود :



for x in 0...10
print x
end


فى المرة الأولى سيطبع الارقام من 0 الى 10 
والمرة الثانية يطبع من 0 الى 9 فلا يطبع آخر رقم (10) ( بسبب وجود ثلاث نقط بين الرقم الأول والأخير)

Loop 
طريقة جديدة ايضاً تظل تكرر العملية المطلوب تنفيذها الى ان تضيف الشرط فى نهايتها بعد break if ، مثلاً : 

num=0

loop do 
print num
num+=1
break if num>10
end

do و end كبديل للاقواس كما ذكرت قبل ذلك

Next if يمكن استخدامها داخل Loops لتتجاهل طباعة امر ما عندما يتحقق شرط معين ، مثلاً:


num=0

for x in 0..10
next if x%2==0
print x
end

#الكود يقوم بتجاهل الارقام الزوجية ويطبع الفردية فقط من 0 الى 10

وأخيراً .each
وتستخدم غالباً مع المصفوفات لاجراء عملية على كل عنصر داخل المصفوفة على حدة ، مثلاً:


array=[1,2,3,4,5]
array.each do |x|
x+=10
print x
end


ويمكن استخدام for loop للتعامل ايضا مع عناصر المصفوفة كالآتى

array=[1,2,3,4,5]
for x in array
x+=10
print x
end


الاختلاف ان فى الاولى لا يمكن استخدام x خارج الـ loop وفى الأخيرة يمكن استخدامها


انتهى اليوم الأول بحمد الله