النتائج 1 إلى 11 من 11

الموضوع: تقنيات الأجاكس البديلة

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    894

    تقنيات الأجاكس البديلة



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

    هذه المقالة كتبتها مسبقاً ولكن حان الوقت لتوضع بقسمها المضبوط

    المقال من ترجمتى كاملاً وهناك ان شاء الله عدة مقالات اخرى سأقوم بترجمتها

    الله الموفق ..

    بسم الله نبدأ ...

    فى الآونه الأخيرة, تقريباً كل من يعمل فى مجال تطوير الويب قد سمع عن تقنية الأجاكس, والتى تعرض ببساطة إتصالات السيرفر الوكيل ومحتوياته بدون إعادة تحميل الصفحة. معظم المقالات حول الأجاكس تركزت حول إستخدام الـ XMLHttp ليحقق نفس الإتصال المطلوب, لكن الأجاكس ليست محدودة فقط فى XMLHttp. هناك عدة طرق أخرى, وسوف نستعرض بعض منها خلال تلك السلسله من المقالات.

    Dynamic Script Loading( تحميل السكريبت الديناميكى )
    أول تقنيات الاجاكس البديلة هى تحميل السكريبت الديناميكى أو ما يعرف بـ Dynamic Script Loading الفكرة العامة بسيطة :
    إنشئ عنصر <script/> جديد وحدد ملف الجافا سكريبت لرمز الـ src لتحميل ملف الجافا وهو مبدأياً ليس مكتوب داخل الصفحة .
    بداية هذه التقنية ترجع عندما دخلت متصفحات إنترنت إكسبلورر 4 و نت سكيب 4 إلى الأسواق .
    فى هذا الوقت تعلم المطورون أنهم يستطيعون إستخدام طريقة
    document.write()
    لكتابة كود <script/>
    وكان التوضيح أنه كان لابد أن يعمل قبل تحميل الصفحة كلياً.
    ومع حلول الـ DOM, تحول المفهوم إلى مستوى ومنحنى أخر .

    The Technique ( التقنية )
    التقنية الرئيسية وراء تقنية ( تحميل السكريبت الديناميكى ) سهلة , كل ما تحتاجه هو إنشاء عنصر <script/> بإستخدام الـ DOM وإضافتها للصفحة.

    مثال على الكود:

    كود:
    var oScript = document.createElement("script");
    oScript.src = "/path/to/my.js";
    document.body.appendChild(oScript);
    لن يبدأ التحميل إلا لو كان العنصر <script/> الجديد قد أضيف إلى الصفحة ,لذا فهو مهم جداً ألا تنسى هذه الخطوة.
    ( وهذا بالطبع يخالف الكود الديناميكى <img/> الذى يتم تحميله فوراً بمجرد تحديد رمز الـ src )

    بمجرد إتمام التحميل, يقوم المستعرض بترجمة الجافا سكريبت الموجودة فى الصفحة. الآن أصبحت المشكلة مسألة توقيت: كيف تعرف عندما ينتهى تحميل الكود ويتم ترجمته؟. بخلاف عنصر الـ<img/> فعنصر <script/> ليست لديه بديل التحميل, لذا لا يمكنك الأعتماد على المستعرض ليخبرك متى سيتم إتمام التحميل للسكريبت. لذا بدلاً من ذلك لابد ان يكون لديك وظيفة إستدعاءوالتى يتم تنفيذها فى نهاية الكود البرمجى.

    المثال الأول:
    هذا مثال بسيط لتوضيح خاصية تحميل السكريبت الديناميكى. الصفحة فى هذا المثال تحتوى على زر واحد والذى يقوم عند الضغط عليه بعرض الداله
    ("Hello world!") من ملف جافا سكريبت خارجى. يتم تمرير تلك الدالة إلى وظيفة الإستدعاء المسماه بـ
    callback()والنى تعرضه بإنذار.

    وكود الهتمل لهذه الصفحة هو كالتالى

    كود:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Example 1</title>
    <script type="text/javascript">//<![CDATA[
    function makeRequest() {
    var oScript = document.createElement("script");
    oScript.src = "example1.js";
    document.body.appendChild(oScript);
    }
    
    function callback(sText) {
    alert("Loaded from file: " + sText);
    }
    //]]>
    </script>
    </head>
    <body>
    <input type="button" value="Click Me" onclick="makeRequest()" />
    </body>
    </html>
    وملف الجافا سكريبت example1.js يحتوى على سطر واحد فقط

    callback("Hello world!");

    كيف يعمل هذا الكود ؟

    عندما يتم الضغط على الزر, يتم إستدعاء وظيفه makeRequest()
    ويبدأ تحميل السكريبت الديناميكى.
    وعندما يكون السكريبت المحمل الجديد داخل السياق البرمجى للصفحة يستدعى وظيفة callback(),
    والتى تستطيع إستخدام القيمة المعادة كما يجب. هذا المثال يعمل على أى متصفح متطابق مع الـ DOM مثل الإنترنت اسكبلورر 5 وما فوقه و وسفارى والفاير فوكس و الأوبرا 7 ومافوقه

    للتجربة الحية للمثال إضغط هنا لتحميل المثال إضغط هنا .

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

    أولاً, سوف تحتاج إلى طريقة لنقل البيانات إلى الخادم. وذلك يمكن إنجازه بواسطة إرفاق داله شرطية لرابط الجافا سكريبت. بالطبع لن يستطيع ملف الجافا سكريبت الدخول إلى بيانات الدالة الشرطية بنفسه, لذا سوف تحتاج إلى إستخدام ما يعرف بـ server-side logic لمعالجة الطلب وإخراج ملف الجافا سكريبت الصحيح . وهذه هى الوظيفة ستساعدك على الإتمام

    كود:
    function makeRequest(sUrl, oParams) {
    for (sName in oParams) {
    if (sUrl.indexOf("?") > -1) {
    sUrl += "&";
    } else {
    sUrl += "?";
    }
    sUrl += encodeURIComponent(sName) + "=" + encodeURIComponent(oParams[sName]);
    }
    
    var oScript = document.createElement("script");
    oScript.src = sUrl;
    document.body.appendChild(oScript);
    }
    هذه الوظية متوقع منها تمرير الرابط لملف الجافا سكريبت والكائن الذى يحتوى على الدالة الشرطية. والدالة الشرطية والدالة الشرطية تم إنشاؤها بداخل الوظيفة بواسطة إعادة صفات الكائن. بعد ذلك يتم إستخدام تقنية تحميل السكريبت الديناميكى المألوفة. ويمكن ان تكون الوظيفة كالتالى

    كود:
    var oParams = {
    "param1": "value1",
    "param2": "value2"
    };
    makeRequest("/path/to/myjs.php", oParams)
    بعد ذلك سوف تحتاج إلى طريقة لتحديد وظيفة الإستدعاءلإستخدامها. وهو ممكن ان تدخل إلى نفس المعلومات من صفحات مختلفة وبطرق مختلفة. إجبار كل صفحة ان تحتوى على دالة إستدعاء ليس جيد لتصميم وبناء جيد. بدلاً من ذلك سوف يكون من الجيد ان تخبر ملف الجافا سكريبت إسم وظيفة الإستدعاء لإستخدامها وبذلك سوف يكون قد تم إدخالها ديناميكياً. إسم داله الإستدعاء يمكن وضعه كالتالى

    كود:
    var oParams = {
    "param1": "value1",
    "param2": "value2",
    "callback": "myCallbackFunc"
    };
    makeRequest("/path/to/myjs.php", oParams);
    الملف الذى ينشئ الجافا سكريبت وبعد ذلك عليه أخذ إسم وظيفة الإستدعاء وإخراجها فى الكود هو كالتالى

    كود:
    <?php
    header("Content-type: text/javascript");
    ?>
    
    var sMessage = "Hello world!";
    <?php echo $_GET["callback"] ?>(sMessage);
    الجزء الأول من هذا الملف يحدد نوع المحتويات كـ text/javascript وبذلك يستطيع المستعرض ان يتعرف عليه كجافا سكريبت. بعد ذلك يقوم متغير الجافا سكريبت والمسمى بـ sMessage والذى يعرف ويحدد بأنه الشرط, "Hello world!" . والسطر الأخير يخرج إسم وظيفة الإستدعاء التى تم إمرارها عبر الدالة الشرطية, متبوعة بأقواس لقفل الداله sMessage, والذى يجعلها وظيفة إستدعاء بشكل فعال. إذا تم العمل كما خطط له سوف يكون السطر الأخير كالتالى

    myCallbackFunc(sMessage);

    المثال الثانى
    هذا المثال تم بناءه على المثال الأول, لكن هذه المرة سوف ترسل معلومات إضافية إلى الخادم وإخباره أى وظيفة استدعاء عليه إستدعاءها أولاً ألق نظرة على ملف البى اتش بى الذى سيخرج الجافا سكريبت

    كود:
    <?php
    header("Content-type: text/javascript");
    ?>
    
    var sMessage = "Hello, ";
    var sName = "<?php echo $_GET['name'] ?>";
    
    <?php echo $_GET['callback'] ?>(sMessage + sName);
    
    الجافا سكريبت الذى سيتم إخراجه سوف يحدد متغيرين اثنين , sMessage و sName, الأول به "Hello, ", والثانى يحدد قيمة الإسم الموجود فى الداله الشرطية بعد ذلك يتم إخراج إسم وظيفة الإستدعاء مروراً بسلسلة من الـ sMessage و الـ sName.
    فى جانب الوكيل تحتوى الصفحة على صندوق للكتابة وزر واحد.
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Example 2</title>
    <script type="text/javascript">//<![CDATA[
    function makeRequest(sUrl, oParams) {
    for (sName in oParams) {
    if (sUrl.indexOf("?") > -1) {
    sUrl += "&";
    } else {
    sUrl += "?";
    }
    sUrl += encodeURIComponent(sName) + "=" + encodeURIComponent(oParams[sName]);
    }
    
    var oScript = document.createElement("script");
    oScript.src = sUrl;
    document.body.appendChild(oScript);
    }
    
    function messageFromServer(sText) {
    alert("Loaded from file: " + sText);
    }
    
    function getInfo() {
    var oParams = {
    "name": document.getElementById("txtInput").value,
    "callback": "messageFromServer"
    };
    makeRequest("example2js.php", oParams);
    
    }
    //]]>
    </script>
    </head>
    <body>
    <input type="text" id="txtInput" value="Nicholas" />
    <input type="button" value="Get Info" onclick="getInfo()" />
    </body>
    </html>
    عندما يتم ضغط الزر فإن طريقة getInfo() يتم إستدعاءها, والتى تقوم بتحميل كائن بإسم محدد ( الذى يتم وضعه فى صندوق الكتابه) وإستدعاء محدد. بعد ذلك يتم إستدعاء وظيفة makeRequest(), إمرارها فى هذه القيمة. بعد تحميل السكريبتو يتم إستدعاءوظيفة messageFromServer() سوف يتم فتح صندوق حوارى بها ما تم إستقباله من السيرفر.

    لتجربة الكود إضغط هنا لتحميل الكود إضغط هنا .

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

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

    الختام
    بالرغم من ان XMLHttp هى الطريقة الأكثر حديثاً عنها فى تقنيات الأجاكس. فتقنية تحميل السكريبت الديناميكى مقبوله و خادمة بإمتياز كتقنية بديله. الأمثلة فى هذا المقال بسيطة نسبياً. ولكن ليست صعبة للوصول بتلك التقنية لإنجاز نتائج هامة أخرى.


    الحقوق
    العنوان الأصلى للمقال
    http://www.webreference.com/programming/ajax_tech





    __________________
    موقعي الشخصي | MRadwan.net
    تابعني على تويتر | Mohrad


  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    894


    الجزء الثانى من المقال ..

    ==================

    فى المقال السابق من هذه السلسلة .. تعلمت كيفية تحميل السكريبت الديناميكى. والتى تتعلق بإنشاء عنصر <script/> ديناميكى وإستخدامه لتحميل الجافا سكريبت من الخادم. ولكى تفعل هذا العمل, لا بد ان يكون متصفحك متوافق مع الـ DOM. فى الجزء الثانى سوف تتعلم كيف تستخدم الصور والكوكيز لإتاحة إتصالات الخادم والوكيل حتى على المتصفحات القديمة والتى لا تدعم خاصية الـ Dom.

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

    كل نطاق يمكن تخزين 20 كوكيز كحد أقصى على جهاز المستخدم. وهو الأفضل لكي يتم إعادة إستخدام الكوكيز فى اى وقت ممكن بدلاً من إعادة تحميلها.
    الحجم الكلى للكوكيز ( متضمناً الإسم وعلامة = والقيمة ) لايمكن ان يتعدى 4096 بايت, وهذا يعنى ان الكوكيز مفيدة جداً فى حفظ كميات بسيطة من البيانات.
    العدد الكلى للكوكيز على جهاز المستخدم لا يتعدى 300 كوكيز.
    =======

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

    التقنية (The Technique)
    التقنية الأساسية وراء إستخدام الصور والكوكيز مشابهه للصور المحملة مسبقاً ( Preloading images ) سوف تحتاج إلى إنشاء عنصر <img/> و تحديد رمز الـ src الخاص به. ولكى يخبرك متى يتم تحميل الصورة . حدد معالج التحميل (OnLoad):

    كود:
    var oImg = document.createElement("img");
    oImg.onload = function () {
    alert("Image is ready");
    } 
    oImg.src = "/path/to/myimage.gif";
    على عكس إنشاء عنصر <script/> الديناميكى, فإن تحميل الصورة يتم بمجرد تحديد رمز الـ src, بمعنى أنك لا تحتاج إلى إضافة صورة للصفحة. فى الواقع أنت لاتحتاج إلى إستخدام عنصر <img/> مطلقاً, يمكنك إستخدام كائن الصور:

    كود:
    var oImg = new Image();
    oImg.onload = function () {
    alert("Image is ready");
    } 
    oImg.src = "/path/to/myimage.gif";
    بالطبع هذا مجرد جزء من العملية. إذا كان طلب الصورة معنى بإحضار البيانات فى ملف كوكيز, سوف تحتاج إلى قراءة هذه البيانات فى معالج التحميل (onload). وطريقة getCookie() تتيح لك وصول أسهل إلى قيم كوكيز محددة:

    كود:
    function getCookie(sName) {
    var sRE = "(?:; )?" + sName + "=([^;]*);?";
    var oRE = new RegExp(sRE);
    
    if (oRE.test(document.cookie)) {
    return decodeURIComponent(RegExp["$1"]);
    } else {
    return null;
    }
    }
    وبدون الدخول أكثر فى هذا الكود, فإن ملف الكوكيز document.cookie يعيد سلسلة متتاليه من الزوجين ( القيم-والأسماء) والتى تم ترميزها ترميزURL وتم فصلها بواسطة فواصل منقوطة. هذه الوظيفه تحدث عبر الدالة المطابقة للقيمة المعطاه للإسم المدخل.

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

    أول شئ سوف تحتاجه هو صورة صغير 1×1 بصيغة GIF. من المهم جداً ان تكون الصورة أصغر ما يمكن حيث أنك تريد أن تكون الإستجابة بأسرع مايمكن. وبما أن هذه الصورة لن يتم عرضها. فيمكن أن تكون صورة واحده بيضاء لسرعة تحميلها.

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

    كود:
    <?php
    header("Content-type: image/gif");
    setcookie("info", "Hello, ".$_GET["name"]);
    header("Location: pixel.gif");
    ?>
    صفحة البى اتش بى البسيطة هذه تقبل الدالة الشرطية للإسم ( name ) وتضيف إليه (Hello). وهذه القيمة مخزنه فى الكوكيز المسماه (info) للإستخدام بعد ذلك. السطر الأخير يرسل الطلب إلى الصورة (pixel.gif), ويضمن إعادة الصورة الحقيقة. أحفظ هذا الكود فى صفحة تسمى بـ image.php.

    هل تتذكر وظيفة makeRequest() فى المقال السابق؟ هذه إعادة صياغة لها بإستخدام الصور:

    كود:
    function makeRequest(sUrl, oParams, fnCallback) {
    for (sName in oParams) {
    if (sUrl.indexOf("?") > -1) {
    sUrl += "&";
    } else {
    sUrl += "?";
    }
    sUrl += encodeURIComponent(sName) + "=" + encodeURIComponent(oParams[sName]);
    }
    
    var oImg = new Image();
    oImg.onload = fnCallback;
    oImg.src = sUrl
    }
    سوف تلاحظ كثير من التشابهات بين هذه الوظيفة والوظيفة المستخدمه لتقنية تحميل السكريبت الديناميكى. وإنشاء الرابط URL والدالة الشرطية الخاصة به هو نفسه بالضبط. الإختلاف الرئيسى, جانباً من إستخدام صورة ما, هو أن وظيفه الأستدعاء قد مرت إليه. وهذه الوظيفة قد حددت لمعالج التحميل onload الخاص بالصورة قبل بداية الطلب.

    وظائف أخرى هامة لهذا المثال كالتالى:

    كود:
    function getInfo() {
    var oParams = {
    "name": document.getElementById("txtInput").value
    };
    makeRequest("image.php", oParams, handleResponse);
    } 
    
    function handleResponse() {
    alert("Info from server: " + getCookie("info"));
    }
    وظيفة الـ getInfo() عندما يتم الضغط على الزر فى صفحة المثال. هناك مربع كتابة مع رقم خاص لمدخل الكتابة ( txtInput ) والذى يمكنك عن طريقه إدخال أى قيمة تريد. وهذه القيمة يتم إمرارها بالضبط كالـ name فى الدالة الشرطية. بعد ذلك, يتم إستدعاء طريقة makeRequest(), بإمرار الرابط image.php تقوم دالة الإستدعاء و البرامترز parameters بإستدعاء handleResponse(). بمجرد إستقبال الإستجابة من الخادم, تقوم تلك الوظيفة بعرض المعلومات التى تم إستقبالها. يمكنك تجربة المثال بالضغط هنا ويمكنك تحميله بالضغط هنا

    ملاحظة:
    بعض إصدارات بى اتش بى تقوم بتحويل المسافة فى الكوكيز كـ+ بدلاً من 20%, فى اى حالة يتوجب عليك تقديم هذا فى كود الجافا سكريبت. عند تجربه المثال إذا ظهرت لك علامة + فى النتيجة مكان المسافة. فسوف تحتاج إلى تغيرها يدوياً إلى مسافة

    العوائق

    بما أن تلك التقنية فعالة للإتصالات داخل السيرفر, يوجد هناك بعض العوائق والحدود لإستخدام تلك التقنية.

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

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

    وكما انك فى تقنية تحميل السكريبت الديناميكى لا تستطيع إستخدام طلب POST فقط GET, هو نفس الحال بالنسبة لتلك التقنية أيضاً. تأكد تماماً انك لا تضع بيانات حساسة فى الدالة الشرطية.

    الحقوق

    العنوان الأصلى للمقال
    http://www.webreference.com/programming/ajax_tech2

    بالتوفيق ,, وأرجو ان اكون وفقت فى ترجمة المقالين





    __________________
    موقعي الشخصي | MRadwan.net
    تابعني على تويتر | Mohrad

  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Jun 2005
    المشاركات
    521


    أبدعت عزيزي Egyptian

    ترجمه موفقه وأتمني لك دوام التوفيق





    __________________
    ميكانيكــي منتديــات
    سمكــري تصاميـــــم
    عسكـــري مواقــــــع

    لا حول ولا قوة إلا بالله
    لا إله إلا انت سبحانك إني كنت من الظالمين

  4. #4
    عضو فعال
    تاريخ التسجيل
    Apr 2004
    المشاركات
    1,479


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

    ملحوظه : الانجليزي بتاعه كويس يا جماعه انصح اي حد عايز يترجم حاجه يقوله وبيترجم ببلاش
    <<<<< بيدبسك بالحداقه





    __________________
    سبحان الله وبحمده .. سبحان الله العظيم
    المستضيفون العرب لخدمات ادارة السيرفرات

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    894


    سلام عليكم ..

    تهامى ..

    انت بتدبسنى ياتهامى ..

    الهى يارب اشوف فيك شمسبكتنشتسبنماشسيمشتسيب كدا يعنى ..

    وكل سنة وانت طيب ..

    وانت عامل ايه الوقتى





    __________________
    موقعي الشخصي | MRadwan.net
    تابعني على تويتر | Mohrad

  6. #6
    خبير JavaScript
    تاريخ التسجيل
    Jul 2002
    المشاركات
    2,920


    اقتباس المشاركة الأصلية كتبت بواسطة Egyptian
    السلام عليكم ورحمة الله وبركاته
    أولاً أبارك للأخوة هنا فى سوالف على القسم الجديد وابارك لمشرفنا wino او زيزوار سابقاً ولو انى لم ابتلع الإسم الجديد بعد .. مبروك القسم ومبروك رمضان ..
    الله يبارك فيك ومبروك للكل، قد أعود لإسمي القديم بعد حين إن شاء الله
    قد = أدات شك 50 بالمية هوك و 50 بالمية هيك
    شكرا على الترجمة






  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    894


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

    العفو عزيزى ..

    وبالنسبة لأداه الشك ففى ادوات كتير منها الدبوس فهو يشك برضه ..

    حاسب لتتعور ..

    كل سنة وانت طيب ,,





    __________________
    موقعي الشخصي | MRadwan.net
    تابعني على تويتر | Mohrad

  8. #8


    أبدعت عزيزي Egyptian

    ترجمه موفقه وأتمني لك دوام التوفيق





    __________________
    حسابي فيسبوك
    https://www.facebook.com/ahmedo.vip/

    المبرمج
    http://www.almprmg.com/

    شركة اوريكو لتكنولوجيا المعلومات - استضافة وبرمجة المواقع | خدمات السوشيال ميديا
    http://www.orico.com.eg

  9. #9
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    894


    أحمد سمارة

    مشكور ..

    ومنور الموضوع والله ..

    وبالتوفيق للجميع إن شاء الله ,,





    __________________
    موقعي الشخصي | MRadwan.net
    تابعني على تويتر | Mohrad

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    335


    جزاك الله كل خير





    __________________
    شبكة البيت للتصميمات وبرمجة الاسكربتات الخاصة
    http://www.Elbayt.NeT
    الزواج - العقارات -الاخبار- مجلات خاصة - نيوك - منتديات - قروبات - مستعمل - الجوال - الوظائف - واى من الاسكربتات الخاصة

  11. #11
    عضو فعال
    تاريخ التسجيل
    Nov 2005
    المشاركات
    1,283


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

    شكراً يا محمد على الترجمة ولكن للأسف ما قدرتش أقراها كلها :s

    وبالنسبة للاخ إبراهيم انا اعتقد انه من الأفضل ان يرجع لاسمه القديم و wino هو اسم لمشروعه





    __________________
    سبحان الله وبحمده ... سبحان الله العظيم.
    إقرأ .. لتتعلم
    [AJAX] سكربت إتصل بنا (ديف كونتاكت) النسخة 2.3.2
    للتواصل ..





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض