تعرف على قرصك الصلب من سطر الأوامر
السلام عليكم و رحمة الله و بركاته
أحيانا نحتاج إلى معرفة القرص الصلب و مايحتويه إما فيزيائيا (حجمه ،الشركة المصنعة …) أو ظاهريا (الحجم المستخدم منه ،طريقة تقسيمه ،المساحة المتبقية …) ،في أغلب أنظمة unix-like تأتي أداة مضمنت معهم بإسم diskinfo ،مهمتها قياس سرعة القراءة و الكتابة من القرص ،أيضا قياس سرعة النقل .
في FreeBSD عند كتابة الأمر diskinfo فإنه تظهر لنا رسالة كالآتي :
usage: diskinfo [-ctv] disk …
هذا يعني أنها تحتاج على الأقل وسيطا ،في حالتنا سيكون مسار القرص المراد معرفته .
أما الوسائط الاخرى هي كالآتي :
v : إظهار تعليقات مع الإحصائيات .
c : إظهار إحصائيات حول القرص من سرعة قراءة و كتابة .
t : إظهار إحصائيات حول القرص من سرعة نقل .
مثال :
diskinfo -c /dev/ad3
كان الناتج كالآتي :
/dev/ad3
512 # sectorsize
13568818688 # mediasize in bytes (13G)
26501599 # mediasize in sectors
26291 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
E129R3GE # Disk ident.
I/O command overhead:
time to read 10MB block 0.202357 sec = 0.010 msec/sector
time to read 20480 sectors 1.602559 sec = 0.078 msec/sector
calculated command overhead = 0.068 msec/sector
مثال :
diskinfo -t /dev/ad3
كان الناتج كالآتي :
/dev/ad3
512 # sectorsize
13568818688 # mediasize in bytes (13G)
26501599 # mediasize in sectors
26291 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
E129R3GE # Disk ident.
Seek times:
Full stroke: 250 iter in 3.745563 sec = 14.982 msec
Half stroke: 250 iter in 4.522290 sec = 18.089 msec
Quarter stroke: 500 iter in 5.619696 sec = 11.239 msec
Short forward: 400 iter in 2.838605 sec = 7.097 msec
Short backward: 400 iter in 1.713758 sec = 4.284 msec
Seq outer: 2048 iter in 0.147774 sec = 0.072 msec
Seq inner: 2048 iter in 0.145513 sec = 0.071 msec
Transfer rates:
outside: 102400 kbytes in 1.999290 sec = 51218 kbytes/sec
middle: 102400 kbytes in 2.502257 sec = 40923 kbytes/sec
inside: 102400 kbytes in 2.206204 sec = 46415 kbytes/sec
تلاحظون أن القرص الذي لدي بحجم 13 جيجا .
مصادر :
man diskinfo
Tech Tip: Retrieve Disk Info from the Command Line
دورة تصميم Web2, html css javascript
السلام عليكم و رحمة الله و بركاته
يقوم الأخ bastr3 بطرح دورة في Web2, html css javascript ،يمكنكم متابعتها على الرابط الآتي :هنا
كيف تجعل لبرنامجك وسائط
السلام عليكم و رحمة الله و بركاته
عادة في البرامج التي تعمل من سطر الأوامر تكون خياراتها عبارة عن وسائط تمرر من طرف المستخدم مع البرنامج كالآتي :
ls -l -h
مثلا هذا الأمر يستخدم في إستعراض الملفات لكن مع الخيارين l- و h- سيعرض لنا الملفات مع تصاريحها مع حجمها ،في هذا الدرس سنرى الأساسيات فقط أما في النهاية ستجدون روابط و مكتبات تقوم بمثل هذا العمل المعقد .
أبسط برنامج يكون في C كالآتي :
#include<stdio.h>
int main(int argc ,char *argv[])
{
return 0;
}
هذا من Ansi C يمكن إستبدال []argv* ب **argv لآن كلاهما نفس المعنى أي مصفوفة مؤشر .
argc تعني عدد الوسائط أما argv فهي مؤشر للوسائط ،مثلا لو كان برنامجنا كهذا :
pro arg1 arg2 arg3
سيكون argc يبدء من 0 وينتهي عند NULL أم argv فستحمل أولا إسم البرنامج بعدها الوسائط كالآتي :
argv0[pro]
argv1[arg1]
argv2[arg2]
argv3[arg3]
مثال :
#include<stdio.g>
int main(int argc ,char **argv)
{
int i;
for(i=0;i<argc;++i)
printf(“arg[%d] = %s\n”,i,argv[i]);
return 0;
}
نقوم بترجمته بإستخدام GCC :
gcc cl.c -o cl
الآن نشغله :
./cl arg1 arg2 arg3
النتيجة ستكون :
arg[0] = ./cl
arg[1] = arg1
arg[2] = arg2
arg[3] = arg3
في هذا السطر :
for(i=0;i<argc;++i)
أخذنا عدد الوسائط من argc ووضعناه في المتغير I حتى نستخدمه في الوصول إلى عناصر مصفوفة argv التي تحتوي مؤشرا لكل وسيط مررناه .
printf(“arg[%d] = %s\n”,i,argv[i]);
هنا إستخدمنا المتغير I في الوصول إلى عناصر المصفوفة .
مثال بإستخدام الؤشرات :
#include<stdio.h>
int main(int argc ,char **argv)
{
while(argc–)
printf(“%s “,*argv++);
return 0;
}
argc يبدأ من 0 لهذا سيتوقف أوتوماتيكيا عندما يصل إليه ،آخر عنصر في argv هو NULL .
مصادر :
man page : getopt
Arguments to main
مكتبات :
The Argtable
ANSI C Command Line Option Parsing Library
CCmdLine – command line parser
Cross-platform command line argument and option parsing
Anyoption – C/C++ Command line and resource file option parsing
الدرس على شكل ملف : كيف تجعل لبرنامجك وسائط
عندما يكون الدخول إلى الواجهة GNOME ثقيلا
السلام عليكم و رحمة الله و بركاته
أحيانا يكون الدخول إلى الواجهة GNOME يستغرق من 2 إلى 3 دقائق ،السبب عادة يكون إعدادات الشبكة إما إسم نطاقك غير صحيح في الملف hosts أو ليس لديك hostname كل هذا لأن X server أول ماصنع صنع من أجل الشبكات و ليس من أجل أن يستخدم على جهاز محلي لهذا تكون إعدادات جهازك من ناحية الشبكة صحيحة .
كل ماعلينا هي إضافة بعض الخيارات إلى الأمر Exec الموجود في الملف gnome.desktop
نقوم بفتحه و نحن مستخدم root و نضيف الآتي :
ee /usr/local/share/xsessions/gnome.desktop
Exec=gnome-session –purge-delay5=000 –wam-delay=5000
نقوم بحفظ الملف CTRL+c بعدها نكتب exit ،في المرة القادمة في إعادة الدخول إلى GNOME ستجده إن شاء الله خفيفا .
الدرس على شكل ملف : http://0xsife.files.wordpress.com/2009/09/fixing-gnome-slow.pdf
القراءة و الكتابة على أقراص NTFSفي FreeBSD
السلام عليكم و رحمة ال و بركاته
كثيرا من من هم منا لديهم بجانب توزيعة نظام windowsمع أقراص بنظام ، NTFSالمشكلة تكمن أن أنظمة يونيكس ليس لها دعم قراءة و كتابة كامل على مثل هذا النوع من أنظمة الملفات لهذا نستخدم برنامج خارجي و لعل أشهرهم هو . ntfs-3g
الشرح هنا سيطبق على FreeBSD 7.xلكن ليوجد إختلف كبير في توزيعات . Linux
اول علينا تنصيبه إما من portsاو . package system
طريقة : packages
pkg_add -r ntfs-3g
هذه ستقوم بتنصيبه من إحدى السيرفرات .
طريقة : ports
su
cd /usr/ports/sysutils/fusefs-ntfs
make install clean
أول علينا تشغيل fuseو هذا بإضافة التالي إلى الملف rc.confالمسؤول عن تشغيل الخدمات مع كل بداية تشغيل :
ee /etc/rc.conf
فتح الملف بواسطة المحرر . ee
”fusefs_enable=”YES
بعدها CTRL+Cنكتب exitلحفظ العدادت .
بما أن FreeBSD 7.xقام بتوحيد عائلة المر mountفإنه علينا أول ننقل البرنامج mount_ntfsالذي يأتي مع النظام و نستبدله ببرنامج ntfs-3gالذي يكون إسمه ، mount_ntfs-3gكل هذا من أجل جعل الكتابة و القراءة تكون مع بداية تشغيل النظام و هذا بالستعانة بالملف . fstab
cd /sbin
mv mount_ntfs BSDntfs
هنا تمت عملية النقل ،الن نقوم بإستبداله بالبرنامج : ntfs-3g
cd /usr/sbin
mv mount_ntfs-3g mount_ntfs
اخيرا نعدل على الملف fstabحيث في عمود optionنضيف خيار late كالآتي :
3/dev/ad0s /mnt/WinXP ntfs rw,late 0 0
rwيعني القراءة و الكتابة على القرص أما /3 dev/ad0sفهو القرص المنصب عليه windowsاخيرا /mnt/WinXPمعناها أين يتم تحميل الملفات .
الدرس على شكل ملف pdf : القراءة و الكتابة على أقراص NTFSفي FreeBSD
كيف تحسب عدد أحرف كلمة في ال C
السلام عليكم و رحمة الله و بركاته
اليوم إن شاء الله سنتعرف على طريقة حساب عدد حروف كلمة في لغة C في الحقيقة توجد دالة بإسم strlen في المكتبة string مهمتها حساب عدد حروف كلمة ما
لكن الهدف هنا هو تعلم طريقة بناء مثل هذه الدوال .
في لغة C لا توجد متغيرات لتخزين الكلمات لكن بدل ذلك نستخدم مصفوفات إلا أنه هذه الأخيرة محدودة من حيث العناصر حيث يجب عليك إما تحديد عدد عناصر المصفوفة
أو أن المترجم سيقوم بذلك أثناء عملية الترجمة هذا بعد تحديد الكلمة .
مثال :
char str[]=”sife”;
أثناء عملية الترجمة ستكون هكذا :
char str[3]=”sife”;
الطريقة الأخرى هي بإعطاء مؤشر كالآتي :
char *str=”sife”;
حيث تكون في الذاكرة كالآتي :

حيث أن NULL في الذاكرة تكون 0\ و ليست 0 الذي نقوم به في الحساب أما في الكلمة ستكون بمعنى النهاية ،الآن و عرفنا كيف يتم تخزين كلمة في الذاكرة حان دور معرفة كيفية حساب عدد حروف كلمة لننظر للبرنامج الآتي :

السطر 4 متغير نخزن فيه عدد الأحرف أما السطر 5 فهو مؤشر للكلمة المراد حسابها ،السطر 6 إستخدمنا فيه التكرار حيث str* تعني القيمة الموجودة في الذاكرة فائدتها في هذه الحلقة هي فحص إذا ما تم الوصول إلى النهاية أما لا ،السطر 8 مع كل زيادة في عنوان أي النتقال إلى حرف جديد نزيد المتغير بقيمة واحدة أما السطر 9 فهو الإنتقال إلى العنوان اللاحق أي الإنتقال إلى الحرف اللاحق ،السطر 11 هو لطابعة عدد الأحرف الموجودة .
كان من الممكن تبديل البرنامج السابق بهذا :
#include<stdio.h>
main()
{
int i=0;
char *str=”abdelrazak”;
while(*str!=”)
{
i++;
*str++;
}
printf(“%d”,i);
return 0;
}
الإختلاف الوحيد سيكون في السطر 6 حيث أن الشرط هو أننا لم نصل إلى نهاية الكلمة أي 0\ سنقوم بزيادة عنوان في الذاكرة مع زيادة في المتغير i .
نموذج تسجيل و تفعيل التسجيل عبر البريد الإلكتروني
السلام عليكم و رحمة الله و بركاته
اليوم سنتعرف على طريقة التسجيل مع تفعيله عبر البريد الإلكتروني مثل ماهو موجود في المنتديات حيث النموذج الخاص بنا سيكون بسيط يحمل 4 حقول و هي كالآتي :
user : هذا لإسم المستخدم .
pass : لكلمة السر .
email : للبريد الإلكتروني .
أما الحقل الرابع فهو لنموذج التسجيل حتى نستخدمه في عملية التحقق من أن النموذج
تم إرسال البيانات عبره أم لا لأنه لو إستخدمنا المتغير submit فهذا يجعل نموذجنا لا يعمل مع internet Explorer مع بعض المشاكل في المتصفحات الأخرى .
النموذج واضح إن شاء الله فقط في السطر 10 تلاحظون إسم الحقل الخفي action مع قيمة register حيث هذه سنستعملها في التحقق من النموذج .
قاعدة البيانات الخاصة بنا ستكون كالآتي :
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`user` varchar(25) NOT NULL,
`password` varchar(25) NOT NULL,
`email` varchar(25) NOT NULL,
`code` varchar(50) NOT NULL,
`status` int(11) NOT NULL default ‘0′,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
user : هو إسم المستخدم
password : كلمة السر
email : البريد الإلكتروني
code : هذا الحقل نضع فيه كلمة التفعيل التي ستكون عبارة عن تشفير لإسم المستخدم .
status : هذا الحقل سيحمل قيمة 0 مع كل مستخدم جديد دلالة على أن المستخدم غير مفعل حسابه أما لو كان حسابه مفعل فسيحمل القيمة 1 .

في السطر 16 نقوم بالتحقق من أن النموذج تم إرساله و ذلك بمعرفة إن المتغير action يحمل قيمة أم لا بإستخدام الدالة isset التي ترجع true في حالة إن كان المتغير يحمل قيمة .
الأسطر 17-19 هي إستقبال للبيانات من النموذج أما 21-22 فهي إتصال بقاعدة البيانات .
السطر 23 هو إستعلام يرجع لنا حقل في حالة تحقق الشرط حيث أن شرطنا هو وجود عضو بنفس الإسم الذي إستقبلناه من النموذج أما السطر 24 فهو إستخدام الدالة mysql_num_row التي تعيد لنا عدد الحقول من نتيجة إستعلام ،الهدف من هذا هو معرفة إن كان يوجد عضو مسجل أصلا بهذا الإسم حتى نمنع منع التسجيل بنفس الإسم .
في حالة أرجع لنا الإستعلام حقلا فهذا يعني أن الإسم محجوز فنخبر العضو الجديد بإن هذا محجوز في السطر 27 (مسكين
) بعدها نوقف عمل السكريبت في السطر 29 .
أما إن كان العكس (عدم إرجاع أي حقل من الإستعلام) فهذا يعني أنه محظوظ فنقوم بتوليد كلمة عشوائية في السطر 29 إنطلاقا من إسم المستخدم وذلك بتشفيرها بعدها نقوم بإضافة البيانات في السطر 32 لاحظوا أن الحقل status لم أقم بإضافة قيمة له ذلك أنه عند إضافة كل مستخدم جديد ستكون معه قيمة إبتدائية و هي 0 التي تعني أنه غير مفعل السبب في هذا هو الكسل في زيادة طول الإستعلام .
السطر 34 إستخدمنا فيه الدلة mysql_insert_id التي مهمتها إرجاع قيمة ال id الذي تم إنشائه في قاعدة البيانات من آخر إستعلام حيث هذا سيكون id آخر مستخدم قام بالتسجيل .
السطر 36 ننشيء فيه رابط يكون كالآتي : confirm.php?id=$id&code=$activation
حيث confirm.php ستكون الصفحة التي نقوم فيها بتفعيل الحساب ،id سيحمل رقما يعبر عن مستخدم في القاعدة أخيرا code هو رقم التفعيل .
السطر 37 هو الرسالة التي سترسل إلى بريد العضو للتفعيل أما السطر 38 فهو إرسال الرسالة إلى العضو بإستخدام الدالة mail التي تأخذ 3 وسائط ،الأولى البريد المرسل إليه في حالتنا بريد من قام بالتسجيل بعدها عنوان الرسالة أكيد ستكون تفعيل حساب أخيرا محتوى الرسالة التي ستحتوي على رابط التفعيل للمستخدم .
ملاحظة : الدالة mail تحمل أكثر من 3 وسائط لكن عادة نستخدم 3 الوسائط الأولى فقط .

صفحة تفعيل التسجيل ستكون بسيطة أولا سنستقبل البيانات id الخاص بالعضو و رمز التفعيل حيث قمنا أولا بالتحقق من أن هذه المتغيرات تحمل قيمة في السطر 9 كما ترون .
السطر 11 للإتصال بالقاعدة و 12 لإختيار قاعدة البيانات أم السطر 13 فهو إستعلام نقوم بالبحث في قاعدة البيانات
عن هذا العضو ،بعدها في السطر 14 إن كان الإستعلام رد لنا حقلا واحد فهذا يعني أن العضو موجود فنقوم بتغيير حالته من غير مفعل إلى مفعل و ذلك بتحديث قيمة الحقل status من 0 إلى 1 ، الباقي معروف .
ملاحظة : الشرح مختصر بعض الشيء و ذلك على فرض أن القاريء لديه معرفة بسيطة بقواعد البيانات .
مدونة سيف
السلام عليكم و رحمة الله و بركاته
مدونة الأخ سيف تهتم بالبرمجة و العلوم و التكنولوجيا و أشياء أخرى .
http://saif5.wordpress.com
إعداد خادم SSH
السلام عليكم و رحمة الله و بركاته
في هذا الدرس إن شاء سنتعرف على طريقة إعداد خادم SSH بإستخدام OpenSSH المعروف فوائده عديدة من بينها هو بمثابة remote connection المتوفر بالوندوز مع إضافة أخرى هي التشفير فكل البيانات التي ترسلها و تستقبلها تكون مشفرة فائدة أخرى هي تخطي الحدود المسموحة لك فمثلا أنت في شبكة أو دولة غير مسموح لها بدخول بعض المواقع فنلجأ إلى إستخدام SSH tunnel الذي يكون محاكيا للبروكسي لكن مع تشفير ،حيث نقوم الإتصال بسيرفر A الذي يقوم هو الآخر بتحويل إتصالنا إلى السيرفر B أما السيرفر B فيعتقد أننا جئنا من السيرفر A كما هو موضح في الصورة .

كيف تنشئ كلمة سر عشوائية بإستخدام PHP
السلام عليكم و رحمة الله و بركاته
أحيانا في سكريبتاتك يكون يعتمد نظام تفعيل بالبريد أو إسترجاع كلمة مرور إما لأسباب أمنية أو أن كلمة السر للمستخدم تكون مشفرة في قاعدة البيانات لهذا تلجأ غلى إنشاء كلمة سر مؤقتة ترسلها له عبر البريد ،اليوم سنتعرف على طريقة فعل ذلك بإستخدام PHP حيث سنعتمد في ذلك على دالة من إنتاجنا إسمها generate_password($length) تأخذ وسيطا و هو حجم كلمة السر المراد إنتاجها .
