أرشيف

Archive for the ‘برمجة’ Category

الفرق بين char و unsigned char في لغة C

السلام عليكم و رحمة الله
صادفت في قرائتي لهذه الشفرة التعليق التالي:

/*
 * Encrypt *len bytes of data
 * All data going in & out is considered binary (unsigned char[])
 */

المعنى من هذا التعليق هو أن البيانات ستكون من نوع ثنائي، أي شيء كملف صورة أو شيء آخر. فظننت أن unsigned char تستعمل في تمثيل البيانات الثنائية، قمت بعمل بحث في الإنترنيت فوجدت الآتي:

“There’s no dedicated “character type” in C language. char is an integer type, same (in that regard) as int, short and other integer types. char just happens to be the smallest integer type. So, just like any other integer type, it can be signed or unsigned.
It is true that (as the name suggests) char is mostly intended to be used to represent characters. But characters in C are represented by their integer “codes”, so there’s nothing unusual in the fact that an integer type char is used to serve that purpose.”

خلاصة القول أنه لا يوجد نوع بيانات خاص يمثل الحروف كما كنا نعتقد في C، بل إن النوع char هو في الأصل نوع ينتمي للأعداد الصحيحة. و الحروف في لغة C تمثل بأرقام ASCI و النوع char صادف أنه أصغر نوع من ناحية الحجم في الذاكرة.
تعليق آخر:

“ You should use unsigned char. The C99 standard says that unsigned char is the only type guaranteed to be dense (no padding bits), and also defines that you may copy any object (except bitfields) exactly by copying it into an unsigned char array, which is the object representation in bytes.
The sensible interepretation of this is to me, that if you use a pointer to access an object as bytes, you should use unsigned char.”

قبل أن نشرح التعليق علينا أولا أن نتذكر كيف يتم تمثيل البيانات في المتغيرات، لنفرض أنه لدينا متغير من نوع int ذو حجم 4 بايت أي 4 * 8 بت:

int num = 457;

المتغير num سيكون كالآتي في الذاكرة:

00000000 00000000 00000000 00000000 

أما تمثيل الرقم 457 سيكون كالآتي:

 00000000 00000000 00000001 11001001

أحيانا يتم عمل padding أو ما يعرف ب “ملئ الباقي” أي أنه البايتات الباقية يتم إضافة لها 0، أكيد في حالة الأرقام هذا لا يضر لأن الصفر من جهة اليسار يلغى كمثالنا السابق لكن في حالة البيانات الثنائية و خاصة إن كنا سنكتب في ملف فإن هذا سيشكل فرق، هنا نرجع إلى ترجمة التعليق السابق الذي يقول فيه أن لغة C تضمن لك أنه لن يتم تطبيق أي padding أو ملئ البايتات الباقية في حالة متغير من نوع unsigned char.

Advertisements
التصنيفات :برمجة الوسوم:

جلب معلومات عن بطاقات الشبكة المتوفرة في جهازك بالسي، الجزء الأول Linux

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

اليوم سنتحدث عن طريقة جلب قائمة لبطاقات الشبكة المتوفرة في الجهاز، عادة نكون نملك واحدة فقط لكن بالنسبة لمن لديهم خادم في المنزل أو في العمل فسيكون هناك على الأقل بطاقتين، ما يهمنا من جلب العلومات هنا هو معرفة رقم الأيبي للبطاقة و كذا العنوان الفيزيائي(MAC Address) بالإضافة إن كانت البطاقة تعمل(up) أو ليست في حالة عمل(down) و ليست معطلة :D.

تحتفظ النواة بسلسلة مترابطة(linked list) على مستوى الذاكرة لجميع معلومات بطاقات الشبكة المتوفرة على الجهاز، كل عقدة في هذه السلسلة تحتوي على struct ifaddrs يحوي جميع معلومات بطاقة الشبكة، شكله العام كالتالي:

قراءة المزيد…

التصنيفات :برمجة الوسوم:, ,

إظهار و إخفاء محتوى بإستخدام jQuery

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

قراءة المزيد…

التصنيفات :برمجة الوسوم:

تغيير لون خلفية الخلية الحالية في جدول بإستخدام jQuery

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

لنفرض مثلا أنه لديك جدول مكون من 5 حقول و أعمدة، و أنت تريد أن يتغير لون خلية التي فوقها مؤشر الفأرة، كيف ذلك؟

الأمر بسيط، سنستخدم jQuery لذلك، لدينا الطريقة (method في البرمجة الكائنية) hover التي تعني متى يكون مؤشر الفأرة فوق شيء ما، و الطريقة addClass لعمل تغيير الخلفية و ما إلى ذلك.

قراءة المزيد…

التصنيفات :برمجة الوسوم:, ,

تغيير لون خلفية الحقل الفعال

السلام عليكم و رحمة الله و بركاته
أحيانا عندما يملئ المستخدم نموذج ثم يتوقف قليلا قد ينسى اين كان 😀 أقصد هنا في أي حقل (input text)، هنا لنساعده قليلا نقوم بتغيير لون الخلفية للحقل الذي يكون فيه، حتى إذا نسى نفسه فإنه سيلاحظ اللون المتغير لذاك الحقل عن أخواته.
الدلة ActiveField تقوم أولا بالإحتفاظ باللون الحالي للخلفية بعدها تغير لون الخلفية أثناء الحدث onfocus، أما الدالة ResetColor فهي ترجع اللون الأصلي للحقل عند الحدث onblur، يعني هذا ليس بشيء كبير.

قراءة المزيد…

التصنيفات :برمجة الوسوم:, , , ,

مقدمة إلى PDO

السلام عليكم و رحمة الله و بركاته
سيكون درس اليوم إن شاء الله عن إستخدام PDO.
محتويات الدرس:
مقدمة
لماذا PDO
مميزات PDO
القواعد البيانات المدعومة
تنصيب PDO
الإتصال بقاعدة البيانات
معالجة الإستثناءات
تحديد الخيارات لإتصال
إستخدام bindValue و تحضير الإستعلام
تنفيذ الإستعلام بإستخدام execute
الفرق بين execute، exec و query
إستخدام fetch، fetchAll
قطع الإتصال بقاعدة البيانات

قراءة المزيد…

التصنيفات :برمجة الوسوم:, , ,

التحقق من تطابق حقلين و قوة كلمة السر بإستخدام الجافا سكربت

السلام عليكم و رحمة الله و بركاته
دالتان واحدة للتحقق من تطابق كلمة السر مثلا و الأخرى لتنبيهك لمدى قوة كلمة السر لديك.

قراءة المزيد…

التصنيفات :برمجة الوسوم:, , , , ,