الثلاثاء، 13 يونيو 2017

كيف تتخطى حجب المواقع ؟


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

تستطيع تحميل البرنامج من خلال الموقع الرسمي للمتصفح تحميل متصفح Tor وفي حال قيام دولتك بحجب موقع المتصفح قم باستخدام إحدى الرابطين التاليين لتحميل المتصفح.

تثبيت متصفح تور على جهازك

بعد أن تقوم بتحميل إحدى الملفين افتح المجلد الذي قمت بتنزيل الملف عليه ستجد ملفاً باسم torbrowser-install-7.0.1_en-US.exe في حال قمت بتنزيله باللغة الإنجليزية أو torbrowser-install-7.0.1_ar.exe في حال قمت بتحميله باللغة العربية.

انقر مرتين على الملف, ستظهر لك رسالة تحذيرية تسألك عن مصدر البرنامج  يجب أخذ هذه التحذيرات بجدية دوماً والتأكد من ثقتك بالبرامج التي تريد تثبيتها ومن حصولك على نسخة أصلية من الموقع الرسمي وعبر اتصال آمن, قم بالنقر على الزر Run أو تشغيل

ستفتح لك نافذة جديدة بها عنصر اختيار من متعدد لتختار اللغة التي تريد استخدامها أثناء تنصيب البرنامج اختر اللغة ثم اضغط Ok أو موافق

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

وعند الإنتهاء من تثبيت البرنامج ستظهر لك نافذة جديدة تحتوي على زر إنهاء التثبيت عند الضغط عليه سيبدأ العمل على المتصفح فوراً, كما سيتم إضافة إختصار (Start Tor Browser) إلى سطح المكتب Desktop وقائمة ابدأ Start Menu.

استخدام المتصفح

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

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

مبروط الآن سيظهر لك المتصفح Tor مع رسالة تهنئة :)

الاثنين، 10 أبريل 2017

كيف تقوم بتثبيت برنامج Winrar على جهازك



    تعد عملية ضغط الملفات في مجلد واحد من العمليات المهمة لمستخدمي أجهزة الحاسب الآلي Computer وذلك لأنها تقوم بتوفير مساحات على القرص الصلب الخاص بك, ويعد برنامج Winrar من أشهر وأقدم البرامج المتخصصة في هذا المجال كما أن لهذا البرنامج مزايا أخرى سوف نستعرضها في مقالات لاحقة, لبدأ الآن بالتعرف على كيفية تشغيل البرنامج على جهازك:
    1. قم بالذهاب إلى الرابط التالي:http://www.win-rar.com/download.html
    2. بعد انتهاء عملية التحميل ستظهر لك أيقونة البرنامج.
    3. قم بالنقر عليها مرتين متتاليتين Double Click
    4. سيظهر لك مربع الحوار Dialog Box الخاص بعملية تثبيت البرنامج على جهازك
    5. اضغط على الزر تثبيت Install
    6. بعد الإنتهاء من علمية التثبيت ستظهر لك شاشة جديدة بها مجموعة من الخيارات كن حصرياً على تفعيل خيارات تكامل القشرة Shell Integration.
    7. بعد الضغط على زرحسناً Ok ستظهر لك آخر شاشة اضغط على زر تم Done

    الثلاثاء، 29 نوفمبر 2016

    (2) نظرة على تقنية الـ Canvas إحدى طرق الرسوميات في لغة HTML5

    استكمالاً لما بدأناه في المقالة السابقة (1) نظرة على تقنية الـ Canvas إحدى طرق الرسوميات في لغة HTML5 سنكمل سوياً رحلتنا عبرعنصر الـ Canvas.
    hello-world-canvas-imageكيف أحدد نصاً ؟ How to Stroke a Text
    var c = document.getElementById("myCanvas");
     var ctx = c.getContext("2d");
     ctx.font = "30px Arial"; 
    ctx.strokeText("Hello World",10,50); 
    الجديد هنا هو الخاصية font والتي من خلالها نقوم بتمرير حجم ونوع الخط الذي نريد أن نقوم برسمه على صفحة الويب الخاصة بك. أما بخصوص التابع strokeText فيقوم برسم النص الذي يأخذه كأحد الباريميترات التي نقوم بتمريرها من خلاله.
    canvas-stroketext-function
    الفرق بين التابع Stroke والتابع Fill يقوم التابع Stroke برسم الأشكال التي تريدها من خلال تحديد إطار لها أما التابع Fill فإنه 
    يقوم بملئ هذه الأشكال..

    fill var c = document.getElementById("myCanvas");
     var ctx = c.getContext("2d");
     ctx.beginPath();
     ctx.arc(95,50,40,0,2*Math.PI);
     ctx.fillStyle = "red";
     ctx.fill();
    draw-linear-gradientكيف أرسم لوناً متدرجاً ؟ How to draw Linear Gradient
    var c = document.getElementById("myCanvas");
     var ctx = c.getContext("2d");
     var grd = ctx.createLinearGradient(0,0,200,0);
     grd.addColorStop(0,"red"); 
    grd.addColorStop(1,"white"); 
    ctx.fillStyle = grd; 
    ctx.fillRect(10,10,150,80); 
    حتى تستطيع القيام بتلوين العناصر لديك بأسلوب الـ Gradient عليك أن تقوم بعدة خطوات أولاً عليك القيام بتعريف متغير خاص الـ Gradient باستخدام التابع createLinearGradient الموجود ضمن المتغير الذي سنستخدمه للرسم من خلاله داخل العنصر canvas وهو ctx context.createLinearGradient(x0,y0,x1,y1); canvas-createlineargradient-function ثانياً ستقوم بإضافة الألوان التي سيتكون منها الـ Gradient الخاص بك باستخدام التابع addColorStop الموجود في المتغير grd الذي عرفناه للتو, المتغيرات التي نستخدمها لهذا التابع: الأول قيمة رقمية (حقيقة) من الصفر 0 وحتى الواحد الصحيح أما الباراميتر الثاني فهو اللون الذي تريد استخدامه بإمكانك كتابة اسم اللون مباشرة أو استخدام إحدى صيغ الألوان كالـ Hexadecimal, RGB, RGBA, HLS, HLSA, لمزيد من المعلومات حول صيغ الألوان زيارة هذا الرابط , هذا وسوف نقوم قريباً بالتحدث عن صيغ الألوان المستخدمة في تطوير وتصميم صفحات الويب, الخطوة قبل الأخيرة أن نقوم بتعيين الخاصية fillStyle بقيمة المتغير grd الذي عملنا عليه في الأسطر السابقة, أما الخطوة الأخيرة فهي باستخدام التابع fillRect الذي يستخدم الباريميترات التالية: context.fillRect(x,y,width,height);canvas-fillrect-function
    circular-gradientكيف أرسم لوناً متدرجاً بشكل دائري؟ How to draw Circular Gradient 
    var c = document.getElementById("myCanvas"); 
    var ctx = c.getContext("2d"); 
    var grd = ctx.createRadialGradient(75,50,5,90,60,100); grd.addColorStop(0,"red");
     grd.addColorStop(1,"white"); 
    ctx.fillStyle = grd; 
    ctx.fillRect(10,10,150,80); 
    المختلف هناعن الكود السابق هو التابع createRadialGradient والذي يحتوي على الباريميترات التالية: context.createRadialGradient(x0,y0,r0,x1,y1,r1);canvas-createradialgradient-function

    الاثنين، 28 نوفمبر 2016

    (1) نظرة على تقنية الـ canvas إحدى طرق الرسوميات في لغة HTML5


    Canvas


    ماهو: عنصر جديد في HTML 5 يستخدم من أجل الرسم على صفحة الويب Web Page باستخدام لغة JavaScript.
    لماذا استخدمه: في الصورة التالية ستجد أربعة أشياء تستطيع فعلها باستخدم الوسم Canvas وهناك أيضاً المزيد.
    مالذي أستطيع أن أقوم به باستخدام هذه التقنية: إليك بعض الإمكانيات التي يوفرها الـ Canvas :

    باستخدامك للـ Canvas ستستطيع أن تقوم برسم المسارات paths, المربعات والمستطيلات boxes, الدوائر circles, النصوص text, بالإضافة إلى الصور images.
    عندما تقوم باستخدام الـ Canvas فإنه يقوم برسم مساحة مستطيلة بدون حدود لذلك لن تستطيع أن ترى شيئاً حتى تقوم بكتابة بعض أكواد الـ JavaScript أو على الأقل وضع إطار باستخدم لغة الـ CSS كما في المثال التالي:


    <canvas height="100" id="myCanvas" style="border: 1px solid #000000;" width="200"></canvas>
    كيف أرسم خطاً ؟ How to draw a line

    <!DOCTYPE html>
    <html>
    <body>
     <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
      Your browser does not support the HTML5 canvas tag.
     </canvas>
     <script>
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.moveTo(0,0);
      ctx.lineTo(200,100);
      ctx.stroke();
     </script>
    </body>
    </html>

    مالذي حدث؟

    قمنا بتعريف عنصر من نوع Canvas وعرفنا له الخاصية id بالقيمة myCanvas, هذا الجزء الأول أما الجزء الثاني فهو كود للغة الـ Javascript, فيما يلي شرح مفصل لهذا الكود: 
    var c = document.getElementById("myCanvas");  قمنا هنا بتغير متغير Variable باسم c ثم اسناد قمية العنصر myCanvas إليه باستخدام التابع getElementById الموجود في المكتبة document.
     var ctx = c.getContext("2d"); قمنا هنا بتغير متغير Variable باسم ctx وهو المتغير الذي سنستخدمه للرسم من خلاله داخل العنصر canvas, ثم قمنا باسناد قمية له باستخدام المتغير c اللذي قمنا بتعريفه في السطر السابق من خلال التابع getContext. 
    ctx.moveTo(0,0);هنا سوف نبدأ بعملية الرسم حيث قمنا بإعطاء أمر للمتغير ctx بالبدء بتحديد نقطة البداية وهي القيمة صفر أفقياً وصفر عامدياً وهي النقطة العلوية اليسارية لعنصر الرسم canvas.
     ctx.lineTo(200,100); في هذا الأمر نقول للكود أن يتحرك باتجاه النقطة 200 أفقياً و 100 عامودياً. 
    ctx.stroke(); هذا آخر أمر في الكود وهنا نخبر البرنامج أن يبدأ بالرسم.

     canvas-red-circle

    كيف أرسم دائرة ؟ How to draw a Circle


    فلننظر إلى الكود التالي:

    var c = document.getElementById("myCanvas"); 
    var ctx = c.getContext("2d");
     ctx.beginPath();
     ctx.arc(95,50,40,0,2*Math.PI);
     ctx.stroke(); 
    هناك فقط سطران جديدان, هما
      ctx.beginPath(); والذي نخبر فيه البرنامج بأننا سوف نقوم برسم مسار وهو أمر ضروري للبدء برسم الدائرة
    ctx.arc(95,50,40,0,2*Math.PI); في هذا الأمر نقوم باخبار البرنامج برسم دائرة وفق بعض الباراميترات Parameters وهي كالتالي:
     التابع arc: يستخدم لرسم قوس أو منحنى أو دائرة أو جزء من الدائرة, ويكتب بالصيغة التالية:
    context.arc(x, y, r, sAngle, eAngle, counterclockwise);
    canvas-arc-function

    إليك قاعدة تساعدك على رسم الدوائر دائما ,,,,, قم بوضع قيمة زاوية البداية Start Angle بالرقم صفر, وقيمة زاوية النهاية End Angle بالقيمة 2*Math.PI

    ماهي الخاصية Math.PI من إحدى المكتبات الموجودة في لغة الـ JavaScript  هي Math و تحتوي على مجموعة من التوابع والخصائص الحسابية الجاهزة, أما PI فهي قيمة رقم ثابت الرياضيات وهو يساوي تقريباً (3.14159) أو 22/7, ويسمى باي أو طـ ويرمز له بالشكل التالي المأخوذ من المحارف الإغريقية : π للمزيد من المعلومات اضغط لزيارة الرابط
    تبدأ نقطة البداية في رسم الدائرة أو الأقواس من اليمين إلى اليسار باتجاه عقارب الساعة, كما يوضح الرسم التالي:
    img_arc
    النقطة الحمراء تحمل القيمة صفر هي نقطة البداية sAngle و النقطة الزرقاء هي نقطة النهاية eAngle, لذلك عليك دائماً الإنتباه أين تبدأ وأين تنتهي في رسم الأقواس والدوائر.

    الاثنين، 5 سبتمبر 2016

    كيف تحصل على لقب مبرمج؟


    أتظن أنك إن تخرجت من إحدى الكليات أو المعاهد المتعلقة بعلوم الحاسب تصبح مبرمجاً ؟ أتظن أنك إن عملت في إحدى شركات البرمجة الكبرى أو الصغرى أو أياً كان مستواها تصبح مبرمجاً؟ في وطننا العربي يحتاج منك الأمر لأكثر من ذلك فمن البيت الذي تربيت فيه إلى زوجتك التي سترتبط بها مروراً بأبو عبدو الموظف في السجل المدني وعم ... البواب ستحتاج إلى أن تجلس مع كل منهم على انفراد وتطلعه على ما تعمل لأنهم سينظون أنك تقوم (بتسطيب) الويندوز :/ فلقد أصبح لدي يقين أنك إن أخبرتهم أنك تعمل في مجال الكمبيوتر بدون تحديد مسمى وظيفي سيتفهمون الأمر أكثر, فعادة لا يستطيع أغلب الناس معرفة ما يقوم به المبرمج في حياته وما هي طبيعة عمله وأحياناً (كثيرة) لا يتفهمون السبب وراء أجورهم المرتفعة من هذا العمل ويعتقدون أن في الأمر خدعة ما, ففي بداية حياتي العملية حيث كان يعتقد والدي أنني أقوم بأعمال غير شرعية باستخدام الحاسب وذلك لأن بعض الأشخاص في تلك الفترة كانوا يقومون بتحميل الأفلام الإبحاية وبيعها على أسطوانات مدمجة, وبعد جهد جهيد استطعت أن أثبت برائتي لوالدي عبر مناقشته وإطلاعه على طبيعة عملي وبرغم أنه لم يكن قادراً على فهم الجدوى من وراء تلك الأسطر التي أقوم بكتابتها إلا أنه كان يحاول أنه يبدوا متفهاً , ولكن شكوكا أخرى ً ظهرت حول أنني أقضي وقتي على جهاز الكمبيوتر في اللعب وأنني إذا قمت بمساعدته في عمله خير لي من تلك الساعات التي أقضيها وراء الكمبيوتر, ولم يقتصر الأمر عند هذا الحد بل أصبحت أتهم بأنني أهمل عائلتي وأنني (تغيرت) وأن هذا الكمبيوتر لعنة وأن البرمجة ما هي إلا سخافة و(ضحك على اللحى).
    استمرت هذه المعاناة لفترة حتى تسنى لي أن أحصل على فرصة تطوير لموقع انترنت وذلك عام 2003 لصالح شركة كبيرة في مصر استغرق مني بناء الموقع قرابة الاسبوعين بين التصميم والتكويد حتى إذا انتهيت منه وقمت برفعه استدعيت والدي لأريه ما قمت بفعله وكيف أن ابنه (عبقرينو) وأن الجهد المبذول في تعليمه لم يضع هبائاً, ولكم أن تتصوروا كيف كان شعوري وكيف كان احساسي بالنشوة وأنا أقوم باستعراض الصفحات (الستاتيكية) وقوائم (الفلاش) وتلك الأزرار التي استغرقت مني جهداً ضخماً في التص
    ميم والبرمجة حيث كانت أغلب البرمجيات والتقنيات المتعلقة ببرمجة الإنترنت في تل الفترة متواضعة نوعاً ما, عندها ولأول مرة طلب أبي مني أن يجلس بنفسه ويتصفح الموقع الذي قمت بإنتاجه ساد الصمت لمدة عشر دقائق وهو يتصفح الموقع ثم التفت إلي بهدوء وقال (جيد) وذهب.
    بهذه البساطة وبهذا الهدوء الذي أفقدني نشوة الإنتصار وجعلني في حيرة من أمري ولم أدرك حينها أن والدي قد أدرك أن هناك شيئاً جديداً قد أضافته البشرية إلى سجلها العلمي وهو البرمجة, كما أنني لم أدرك أنه بذلك قد منحني تلك الصفة التي أحملها إلى الآن وهي مبرمج.