المحتوى

29‏/07‏/2013

تغيير الـPort رقم (80) الذي يعمل منه Apache server إلى رقم آخر

السلام عليكم ,,,

عند تنزيل بعض البرامج في نظام تشغيل ويندوز تقوم هذه البرامج باستخدام Port يتعارض وApache server لذا احتجت لتغيير رقم الـPort وإليكم الطريقة:

أولا: مكان الملف

لمستخدمي: XAMPP
  قم بفتح الملف: C:\xampp\apache\conf\httpd.conf






لمستخدميWAMP

قم بفتح الملف: C:\wamp\bin\apache\apache2.2.22\conf\httpd.conf




ثانيا: التعديل

قم بتعديل رقم الـPort وهو (80) إلى رقم آخر وليكن (9980) , السطور الأصلية:
#Listen 12.34.56.78:80
Listen 80
ثم
ServerName localhost:80

ويكون التعديل كالتالي:
#Listen 12.34.56.78:9980
Listen 9980

ثم
ServerName localhost:9980
 ثم قم بعمل Restart للـ Server وقم بطلب صفحة الـ localhost مرفقة برقم الـPort كالتالي:
http://localhost:9980

موقع خاص بنتائج الشهادة الثانوية الإعدادية ليبيا 2013

السلام عليكم ,,,

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





22‏/07‏/2013

برنامج لتشفير الملفات والرسائل

من أرشيف المدونة: 2008

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

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

قم بانشاء ملف باسم source.txt ثم اكتب فيه الرسالة المراد تشفيرها
قم بتشغيل البرنامج , وسيطلب البرنامج password وهي عبارة عن مقدار الازاحة , قم بادخال اي رقم بين 1 و 255
ستلاحظ أنه تم تكوين ملف جديد باسم encode.txt يحتوي على الرسالة المشفرة
بامكانك فك الشفرة باستخدام البرنامج , لذا قم بتشغيل البرنامج ثم أدخل نفس رقم الازاحة السابق ثم اضغط رقم 2 لفك الشفرة
ستلاحظ تكوين ملف جديد باسم decode.txt يحتوي على الرسالة الأصلية


أترككم مع النص المصدري:

//////////////////////////////////////
// SBR_CODING //
// Version 1.0 //
// By AL Bara Ramli //
// opencpp@yahoo.com //
// www.albara.co.cc //
// Copyright (C) 2008 //
// Tripoli Libya //
//////////////////////////////////////
// Last Update in 1/10/2008 //
//////////////////////////////////////

#include stdio.h
#include conio.h
#include string.h
#include ctype.h
//قمت بكتابت الاستدعاء بهذا الشكل لأن المدونة لا تسمح بالأقواس المعكوفة
char s[10000];
///////////////////////////////////////////////////////
char sh(char r,char x,int j)
{
switch(x)
{
case '+': r=r+j; /*while(isalpha(r)==0) {r++;}*/ break;
case '-': r=r-j; /*while(isalpha(r)==0) {r--;}*/ break;
}
return r;
}
///////////////////////////////////////////////////////
void sf(char *nf)
{
FILE *F;
F=fopen(nf, "w");
fwrite(s,10, 1, F);
fclose(F);
}
///////////////////////////////////////////////////////
int rf(char *nf,char *nf2, char x,int j)
{
char c;int i=-1;
FILE *F;
FILE *F2;
F2=fopen(nf2, "w");
F=fopen(nf, "r");
fseek(F, 0, SEEK_SET);
for(;;)
{
c = fgetc(F);
s[++i]=c;
if(c == EOF) {/*s[i]='\0'; fputc(s[i],F2);*/break;}
else fputc(sh(s[i],x,j),F2);
}
fclose(F);
fclose(F2);
return i;
}
///////////////////////////////////////////////////////
void main()
{
int pass;
char *file_1="source.txt";
char *file_2="encode.txt";
char *file_3="decode.txt";
clrscr();
printf("enter password [from 1 to 255]=>");scanf("%d",&pass);
printf("press [1] for encode, or press [2] for decode =>");
switch(getch())
{
case '1':rf(file_1,file_2,'+',pass);//printf("%s",s);
break;
case '2':rf(file_2,file_3,'-', pass);//printf("%s",s);
break;
}
//getch();
}

16‏/07‏/2013

باستخدام jQuery عمل حدث عند الضغط على زر , دون تغيير الصفحة

السلام عليكم

باستخدام "جي كويري" بالإمكان عمل حدث عند الضغط على زر موجود في الصفحة مثل:
 وبكتابة كود الـ "جي كويري" في رأس الصفحة :
$(document).ready(function(){

$("#submit_me").click(function()
    {
    alert("تم الضغط على الزر");
    }
);

});
 المميز في الأمر هو استخدام طريقة POST في ارسال حقول إلى صفحة أخرى دول الحاجة لإعادة تحميل الصفحة وذلك باستخدام دالة post , فمثلا إذا كان لدينا حقلي: اسم الدخول وكلمة المرور كالتالي:

اسم الدخول
كلمة المرور
حيث حقل :اسم الدخول" يحمل id باسم: user_me بينما حقل: "كلمة المرور" يحمل id باسم: pass_me
وباضافة رابط فارغ باسم data كالتالي:

وبوضع كود الـ "جي كويري" في رأس الصفحة , فسيتم ملئ ناتج الصفحة الأخرى abc.php في الرابط الفارغ.

$.post
(
      "abc.php",
      {
      user_me: $("#user_me").val(),
      pass_me: $("#pass_me").val()
      }
)
.done(function(data)
{
 $('#data').html(data);
});

10‏/07‏/2013

طريقة حذف الصفوف المكررة في قاعدة البيانات باستخدام SQL

بسم الله , الحمد لله والصلاة والسلام على رسول الله

أولا أحمد الله الكريم أن بلغنا رمضان شهر تتنزل فيه الرحمات أسأله جل وعلى أن يرحمنا وأن يغفر لنا إنه هو التواب الرحيم.

وبعد , فخلال عملي على بعض المواقع والتطبيقات كان لزاما علي في بعض الأحيان حذف الصفوف المتكررة في قاعدة البيانات , وكان ديدني في ذلك الرجوع إلى لغة البرمجة سواء C# أو VB أو PHP , ولكن اضطرني المطاف أخيرا إلى ضرورة تنفيذ ذلك مباشرة من قاعدة البيانات دون الرجوع إلى لغة البرمجة (مرغم أخاك لابطل).

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

إن تيسر لي الوقت فسأضع هنا كود الاستعلام , وقد استعملت فيه GROUP BY و NOT IN وكانا متوافقين مع SELECT إلا أنني مع استبدالها بـ DELETE كان الأمر أشبه بالمعضلة.

هذه الطريقة التي لم تفي بالغرض كانت وبعجالة تتلخص في تجهيز الجدول بدون تكرار باستخدام GROUP BY ومن ثم تنفيذ الاستعلام SELECT والاشتراط عليه بجلب كل الصفوف عدا ماتم تجهيزه بالـ GROUP BY وذلك باستخدام NOT IN

عموما استطعت عرضها كما أريد إلا أنني لم أفلح في حذفها من قاعدة البيانات.

وبعد ذلك بحث عن حل عبر شبكة الانترنت ووجدت حل للمشكلة باستخدام فكرة قريبة جدا من بعض محاولاتي إن لم أقل إنها تشبهها تماما , ولكنها كانت تحتوى على المفتاح الذي لم يكن لدي !! , وهذه هي نسخة من الاستعلام.
SELECT * FROM `get-result` LEFT OUTER JOIN ( SELECT MIN(`id`) as RowId, `my_num`, `my_desk`, `my_name`,`my_result` FROM `get-result` GROUP BY `my_num` ) as KeepRows ON `get-result`.`id= KeepRows.RowId WHERE KeepRows.RowId IS NULL
فكرته تكمن في تجهيز الجدول بدون تكرار كما بطريقتي السابقة ومن ثم دمجه مع الجدول الأصلي فيتبقى حقول فارغة في الجدول وهي تدل على أنها مكررة لأنها لم تملأ من قبل الجدول المكرر وتلك الصفوف تحذف وبذا تنتهي المشكلة.
وبما أنني أواجه مشكلة في السيرفر الخاص بي حيث امتلأ الهارد دسك الخاص بالسيرفر فكثير من الاستعلامات الخاصة بي تتوج بالتنبيه:
#3 - Error writing file '/tmp/MYLIB2XV' (Errcode: 28)
لذا كان لزاما علي أن أجد حلا آخر , ألا وهو تنفيذ الاستعلام الخاص بفلترة قاعدة البيانات باستخدام Group by ومن ثم تخزين الجدول الناتج الذي يحوي قاعدة البيانات كلها دون أي تكرار وحفظه في ملف خارجي ومن ثم حذف الجدول الحالي وأخيرا استيراد الملف الخارجي إلى داخل قاعدة البيانات.



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

الاستعلام الخاص بفلترة الجدول من الصفوف المكررة وتخزين الملف المفلتر في ملف خارجي على الهارد دسك C:
SELECT `id` , `my_num` , `my_desk` , `my_name` , `my_result` INTO OUTFILE 'data.txt' FROM `get-result` GROUP BY `my_num`
والاستعلام الخاص باستيراد الملف الخارجي وتخزينه داخل قاعدة البيانات:
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;

هذا ماتيسر لي كتابته , مع أن الأكمل كان دعم المقال بصور توضيحية لكن ماكل مايتمنى المرء يدركه , والله ولي التوفيق.

من 1 إلى 7 رمضان 1434هـ
طرابلس / ليبيا