اذهب إلى المحتوى

هشام رزق الله

الأعضاء
  • المساهمات

    1442
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    31

كل منشورات العضو هشام رزق الله

  1. يمكنك فعل ذلك بسهول عن طريق سطر الأوامر، فيكفي أن تكتب أمر الحذف rm ثم !() وتضع داخل القوسين ما تريد استثنائه، فمثلا يمكنك استثناء ملفات jpg وذلك عن طريق الأمر التالي: rm !(*.jpg|*.JPG)ملاحظة : النجمة (*) تعني الجميع، فهذا الأمر يعني حذف جميع الملفات ماعدا الملفات ذات امتداد .jpg أو .JPG أو يمكنك حذف جميع الملفات التي لا تمتلك أي امتداد عن طريق الأمر التالي: rm !(*.*)حيث استثنينا في هذا المثال جميع الامتدادات ولذلك وضع نجمة في مكان الامتداد. المصدر
  2. وهي اختصار لكلمة (PHP Data Objects) وهي عبارة عن إضافة\ملحق (extension) للتعامل مع قواعد البيانات، وهذا الملحق يدعم أغلب أنظمة قواعد البيانات الشهيرة مثل MySQL وpostgreSQL وSQLite وغيرها الكثير. من مميزات هذا الملحق سهولة تعامله مع مختلف أنظمة القواعد البيانات، فيجب عليك فقط أن تعرف التعامل مع هذا الملحق حتى تتمكن من ربط PHP بأي نظام قاعدة بيانات تريده، بالإضافة إلى إمكانية تغيير قاعدة البيانات فيمكنك بسهولة عن طريقة تغيير بعض السطور القصيرة بدلا من تغيير جميع أسطر المتعلقة بنظام قاعدة البيانات القديم. المصدر
  3. كمبرمج مواقع ويب (استخدم غالبا PHP)، ماهي أهم الثغرات التي يجب أن أحمي الموقع منها عند برمجتي ؟ وكيف أقوم بذلك ؟
  4. تعتبر لغة السي أصعب من سي بلس بلس، فلغة السي بلس بلس لا ينصح بتعلمها إلا لمن يريد برمجة أنظمة التشغيل والنواة وما شابه أما لغة سي بلس بلس فينصح بها لمن يريد برمجة تطبيقات سطح المكتب والألعاب وغيرها وهي أسهل في التعلم من السي بلس بلس ولقد تم اشتقاق منها لغة السي شارب (C#) والتي تستخدم في برمجة تطبيقات الهواتف الذكية. لذلك تستطيع تعلم أي واحدة وستسهل عليك عملية تعلم اللغة الأخرى قليلا، وأنصحك بالبدء بلغة السي بلس بلس ثم الانتقال إلى لغة السي. المصدر
  5. الإصدار الثالث للبايثون أسهل للتعلم فلقد تم التخلص من الكثير من الأشياء التي تسبب التعقيد مثل raw_input()، حيث ستجد في الإصدار الثالث input() تعمل عمل raw_input()، فلقد كانت input() في الإصدار الثاني تقوم بتغيير نوع المتغير حسب المدخلات مما يسبب بعض الإرباك للمبرمجين المبتدئين، ومن أهم الاختلافات الأخرى استبدال print بـ print() . لكن أهم سلبيات الإصدار الثالث والتي جعلته أقل استخداما هي قلة المكتبات التي تدعمه فأغلب مكتبات التي تدعم الإصدار الثاني من البايثون لا تدعم الإصدار الثالث. لذلك أنصحك بتعلم الإصدار الثاني من البايثون أولا قبل الانتقال إلى الإصدار الثالث (والذي سيكون أسهل). المصدر 1 2
  6. ما هي لغة البرمجة التي يجب أن أحترفها حتى أبرمج ألعاب البلايستيشن 4 وXbox ؟
  7. لدي كتاب تمارين خاص بأوامر نظام لينكس، هنالك سؤال لم أعرف الإجابة عنه وهو: قم بكتابة الأمر الذي يقوم بعرض أول 5 أسطر من ملف /etc/passwd ، فما هي الإجابة عن هذا السؤال ؟
  8. أريد تصميم لعبة تعمل على لينكس وأريد أن يكون التصميم من نوع pixelart فهل يوجد برنامج في لينكس يساعدني على التصميم ؟ وهل يمكنني فعل ذلك على جيمب أو إنكسكيب ؟
  9. إدارة الصور هي واحدة من الأشياء التي غالبا ما أجدها صعبة، فأنا معتاد على التعامل مع النماذج وجداول قواعد البيانات، لكن التعامل مع الملفات ليس سهلا بالنسبة لي، فإذا كنت قد بدأت للتو مع Laravel وبدأت تشعر بالصعوبة والضيق، فأنا أشعر بألمك. لحسن الحظ، أساسيات إدارة الصور في Laravel لن تكون صعبة إذا فهمت بعض الأمور الأساسية. ملاحظة: إذا كنت جديدا في Laravel، فلا أنصحك بالبدء بهذا الدرس، أنصحك بقراءة بعض الدروس والدورات حول Laravel قبل المتابعة. سوف تلاحظ أن الدرس طويل لذلك قمت بتقسيمه إلى 3 أجزاء، وسوف تلاحظ أيضا أنني لست بارعا في تصميم الواجهة الأمامية (front-end)، فلذلك فالواجهات التي سنقوم بعملها لن تكون جميلة جدا، يمكنك تزيينها بنفسك لاحقا، فالهدف الأساسي هنا هو تعلم أساسيات إدارة الصور. لذلك على أية حال، ماهي هذه الأساسيات ؟ فكرتُ بالمتطلبات التي قد تحتاجها في تطبيقك وكتبتها في هذه القائمة: إنشاء الصورتخزين الصورتعديل الصورتحديث الصورإنشاء صور مصغرةتعديل صور مصغرةإنشاء وتعديل صور الهواتف بشكل منفصلبالنسبة للذين اعتادوا على إجراءات المتحكِّمات (controller actions) المريحة، ستظهر الاستمارات عند إجراءات (actions) الإنشاء create والتعديل edit وأما إجراءات التخزين store والتحديث update فوظيفتهم إنشاء وتعديل السجلات والملفات. سنتعامل مع شيئين مهمين عند تعاملنا مع الصور، الشيء الأول هو النموذج الذي يعمل على البيانات مثل اسم الصورة و مسارها، وأما الشيء الثاني فهو ملف الصورة نفسه الذي سوف يتم تخزينه في مجلد الذي سنقوم بإسناده له. تثبيت Interventionسوف نبدأ بتثبيت حزمة Intervention/image، فإذا لم تقُم بذلك، عدل على ملف composer.json وأضف التعليمة التالية في جزء الاستدعاء (require) : "intervention/image": "~2.2"ثم أضف السطر التالي ضمن مصفوفة Providers في ملف app\config\app.php (انتبه للفواصل) : Intervention\Image\ImageServiceProvider::class,في نفس الملف أضف السطرين التاليين لمصفوفة Aliases: Intervention\Image\ImageServiceProvider::class,أنصحك بالإطلاع على صفحة Intervention للتأكد من الإصدار الأخير للحزمة. في آخر مرة تأكدتُ فيها،كانت تعليمات التَدَخّل تستخدم النمط القديم للإشارة إلى المرجع: 'Intervention\Image\ImageServiceProvider'يمكنك أن تلاحظ في الأعلى أننا في كلتا الحالتين استخدمنا ::class والتي هي ممارسة جيدة تعلمتها من Laracasts.com، فإذا كنت تستخدم على سبيل المثال PHP Storm، فسيكون باستطاعتك الوصول إلى الفئة class الأساسية. إن حزمة Intervention تقوم بإعطائنا صياغة (syntax) وطريقة سهلة لصناعة الصور المصغرة بالإضافة إلى الكثير من التوابع (method) الأخرى الرائعة، لذلك سوف نستخدمها في هذا الدرس، ولمزيد من المعلومات حول هذه الحزمة أنصحك بالإطلاع على التوثيق الرسمي. لاحظ أيضا أننا سنقوم باستخدام حزمة laravelcollective/html وحزمة patricktalmadge/bootstrapper، ولذلك قم بتثبيتهم قبل أن تتابع الدرس. إنشاء نموذجسوف نبدأ بإنشاء نموذج Marketingimage، يمكننا فعل ذلك عن طريق artisan من سطر الأوامر بكتابة السطر التالي: php artisan make:model Marketingimage -mسوف تلاحظ علم m- الذي سيخبر Laravel أنك تريد إنشاء تهجير migration في نفس الوقت، لذلك فهذه الميزة مفيدة للغاية. حسنا، قم بتنفيذ الأمر السابق وستحصل على ملف النموذج والمسمى Marketingimage.php مباشرة تحت دليل تطبيقك وستحصل أيضا على ملف التهجير في مجلد database/migrations. دعونا نقوم بتعديل التابع في أعلى ملف التهجير إلى ما يلي: public function up() { Schema::create('marketing_images', function(Blueprint $table) { $table->increments('id'); $table->boolean('is_active')->default(false); $table->boolean('is_featured')->default(false); $table->string('image_name')->unique(); $table->string('image_path'); $table->string('image_extension', 10); $table->string('mobile_image_name')->unique(); $table->string('mobile_image_path'); $table->string('mobile_extension', 10); $table->timestamps(); }); }أول شيئ يمكنك رؤيته أنني قد غيرت اسم الجدول، فأنا افضل فصل الكلمات في جدول الأسماء بسطر سفلي underscore. أنت حر في اختيار الطريقة التي تعجبك، لكن يجب أن نختار صيغة الجمع لإتباع قواعد Laravel بشكل صحيح. ففي Laravel، النموذج يكتب بصيغة المفرد وأما اسم الجدول فيكتب بصيغة الجمع. بعد عمود المعرف الرقمي، قمنا باستخدام عمودين من نوع المنطقي boolean والتي سوف تسمح لنا بمعرفة هل الصورة نشطة أو مميزة، هذه القيود المفيدة سوف تساعد على العمل مع الصور في وقت لاحق. ثم قمنا بإضافة أعمدة الاسم، المسار والامتدادات للصور وصور الهاتف، وهذا سيسمح لنا بالمرونة الكافية إذا أردت حفظ صورة مختلفة للهاتف، وهذا الأمر ضروري لأن تغيير حجم الصورة قد لا ينتج لنا النتائج المرجوة. وبما أننا سوف نقوم بإنشاء صور مصغرة من الصور الأصلية، لن نحتاج إلى حفظ أية بيانات لذلك. عن طريق حفظ مسار وإمتداد الصورة، سيكون لدينا مرجع سهل نستطيع استخدامه لإظهار الصورة في تطبيقنا، بالإضافة إدارة الصورة في قائمة الصور. عدل على التابع ليبدو على النحو التالي: public function down() { Schema::drop('marketing_images'); }بمجرد أن تقوم بذلك، قم بتنفيذ أمر php artisan migrate من سطر الأوامر وتأكد من أن الجدول قد تم إنشاءه. بعد هذا، سوف نقوم بتعديل نموذج Marketingimage كما يلي: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Marketingimage extends Model { protected $table = 'marketing_images'; protected $fillable = ['is_active', 'is_featured', 'image_name', 'image_path', 'image_extension', 'mobile_image_name', 'mobile_image_path', 'mobile_extension' ]; }سوف تلاحظ أننا قمنا بإخبار النموذج الجدول الذي سيتخذه كمرجع، بالإضافة إلى توفير أعمدة مملوءة تلقائيا، حتى لا نواجه مشكلة الإحالة الكتلية mass-assignment. المتحكمجيد، نحن الآن مستعدين للاستمرار للخطوة القادمة، سنقوم بإنشاء المتحكِّم بإستخدام artisan: php artisan make:controller MarketingImageControllerوبهذا سوف تحصل على متحكِّم في app/Http/Controllers مع التوابع التالية: indexcreatestoreshoweditupdatedestroyوسوف نستخدم جميع هذه التوابع. وكنصيحة مفيدة للمبتدئين، قُم بوضع السطر التالي في تابع index: return 'Here is the index method.';فهذا سوف يعطيك فرصة لتجربة هذا الطريق route. (يستطيع بقية المبرمجين المحترفين تجاوز هذه الخطوة إذا أرادوا) وبعد ذلك، سنقوم بتثبيت الطرق routes. عدل على ملف app/Http/routes.php وأضف التعليمة التالية: Route::resource('marketingimage', 'MarketingImageController');سوف ترى أننا قد قمنا بإضافة مورد resource، والذي سوف يقوم بإعطائنا الطرق routes لجميع الإجراءات actions بطريقة مريحة للغاية. حسنا، سوف تستطيع الآن الذهاب إلى yourproject.com/marketingimage وسوف تحصل على النتيجة التالية: Here is the index method.الخطوة المنطقية التالية هي إعداد العروض views، أنشئ مجلدا باسم marketingimage أسفل resources/views، ثم أنشئ الملفات الفارغة التالية داخل مجلد marketingimages: create.blade.phpedit.blade.phpindex.blade.phpshow.blade.phpإعداد المجلداتسوف نعود إلى تلك الملفات في وقت لاحق، في الوقت الحالي، سنقوم بإنشاء مكان لتخزين صورنا الحالية، سوف أجعل هذا الأمر سهلا، أنشئ مجلدا باسم imgs مباشرة تحت مجلدك العام (public folder)، وبداخل مجلد imgs، أنشئ مجلد marketing، وبداخله أنشئ مجلدا باسم mobile وآخر بإسم thumbnails. الآن قمنا بإنشاء جميع المجلدات للصور. عرض الإنشاء The Create Viewحسنا، دعونا الآن نتعامل مع عرض الإنشاء The Create View. أضف الأسطر التالية داخل ملف `create.blade.php`: @extends('layouts.master') @section('content') {!! Breadcrumb::withLinks(['Home' => '/', 'marketing images' => '/marketingimage', 'create']) !!} <h1>Upload a Photo </h1> <hr/> @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Whoops! </strong> There were some problems with your input. <br> <br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }} </li> @endforeach </ul> </div> @endif {!! Form::open(array('route' => 'marketingimage.store', 'class' => 'form', 'files' => true)) !!} <!-- image name Form Input --> <div class="form-group"> {!! Form::label('image name', 'Image name:') !!} {!! Form::text('image_name', null, ['class' => 'form-control']) !!} </div> <!-- mobile_image_name Form Input --> <div class="form-group"> {!! Form::label('mobile_image_name', 'Mobile Image Name:') !!} {!! Form::text('mobile_image_name', null, ['class' => 'form-control']) !!} </div> <!-- is_something Form Input --> <div class="form-group"> {!! Form::label('is_active', 'Is Active:') !!} {!! Form::checkbox('is_active') !!} </div> <!-- is_featured Form Input --> <div class="form-group"> {!! Form::label('is_featured', 'Is Featured:') !!} {!! Form::checkbox('is_featured') !!} </div> <!-- form field for file --> <div class="form-group"> {!! Form::label('image', 'Primary Image') !!} {!! Form::file('image', null, array('required', 'class'=>'form-control')) !!} </div> <!-- form field for file --> <div class="form-group"> {!! Form::label('mobile_image', 'Mobile Image') !!} {!! Form::file('mobile_image', null, array('required', 'class'=>'form-control')) !!} </div> <div class="form-group"> {!! Form::submit('Upload Photo', array('class'=>'btn btn-primary')) !!} </div> {!! Form::close() !!} @endsectionلاحظ أن الشيفرة في الأعلى ليست صعبة ويمكنك فهمها بسهولة دون أن تضطر إلى قراءة الشرح، ولاحظ أيضا أننا نقوم بتوسيع صفحتنا الرئيسية master page، التي بداخلها مجلد المخططات في مجلد العروض. والتي قمنا باستدعائها عن طريق هذه التعليمة: @extends('layouts.master')إذا كانت لديك صفحة رئيسية أخرى أو أنها موجودة في مكان مختلف، قم بتعديل ذلك حسب الحاجة، وإذا كنت لا تعرف مفهوم الصفحة الرئيسية master page، قُم بالبحث عن دروس حوله وتعلمه قبل أن تتابع الدرس. إذا كنت لا تستخدم حزمة `Bootstrapper`، قم بحذف السطر التالي: {!! Breadcrumb::withLinks(['Home' => '/', 'marketing images' => '/marketingimage', 'create']) !!}لاحظ أيضا، لهذا الدرس، قمت بتضمين `if` لطباعة أخطاء الإدخال، لكن في العادة، يجب وضع هذا الجزء في جزئية العرض view partial ومن ثم الإشارة إليه بشيء مثل هذا: @include('errors.errors')يمكنك أيضا ملاحظة أننا نستخدم مساعد الاستمارة Form helper من حزمة `laravelcollective/html`، فلقد وجدت أن مساعد الاستمارة مفيد جدا خاصة عند استخدامه لفتح الاستمارة: {!! Form::open(array('route' => 'marketingimage.store', 'class' => 'form', 'files' => true)) !!}تستطيع أن ترى أننا قمنا بتضمين 'files => 'true والتي تسمح لنا برفع ملفات متعددة. إذا كنت جديدا في استخدام مساعد الاستمارة، فيمكنك ملاحظة أننا لا نحتاج إلى استخدام POST خاصة وأننا لا نحتاج إلى استدعاء رمز CSFR لأنه يتم ذلك تلقائيا. ثم لدينا مدخلات المختلفة للاستمارة، لا شيء مجنون للغاية هنا، ولدينا أيضا `Form::submit` والتي نستخدمها كزر، بالإضافة إلى `Form::close()`. يمكنك أن ترى من مساعد الاستمارة أن الطريق route تم تعيينه إلى `marketingimage.store`، لذلك سوف نعرف من مورد الطريق في `routes.php` أن هذا سوف يأخذنا إلى تابع `store` في `MarketingImageController.php` والذي هو دليل المتحكِّمات. نُكمل في الجزء الثاني من الدرس. ترجمة -وبتصرّف- للمقال Basic Image Management Part 1 لصاحبه Bill Keck. حقوق الصورة البارزة: Designed by Freepik.
  10. أريد كتابة كود بلغة البايثون لفك تشفير شيفرة القيصر، حيث سيقوم البرنامج بتجربة جميع الاحتمالات الممكنة. فكيف تعمل هذه الخوارزمية وكيف يمكن فك تشفيرها ؟
  11. قمتُ بكتابة أمر باستخدام Sed لحذف جميع التعليقات في ملف ما: sed -i /^#/d /path/to/fileلكن المشكلة عندما يكون هنالك فراغ أمام `#` فإنه لا يتم حذف التعليقات: #this is a good comment ---- works #this is an indented comment ---- doesn't workلاحظ أنه لا يعمل على التعليق الثاني، فكيف أُغير هذا الأمر حتى أتمكن من حذف جميع التعليقات ؟
  12. قمت بعمل شعار على برنامج inkscape لكن الخلفية تظهر باللون الأبيض، فكيف أجعل الخلفية شفافة ؟ لا أجدها شفافة سوى في صيغة svg فماذا عن باقي الصيغ ؟
  13. يمكنك فعل ذلك باستخدام مكتبة python-notify وهي مكتبة بايثون لإظهار الإشعارات، إذا كنت تستخدم أبونتو وقد قمت بتثبيت Easy Install سابقا فيمكنك بسهولة تثبيت مكتبة python-notify عن طريق كتابة الأمر التالي في الطرفية: easy_install py-notify أو يمكنك بناء المكتبة من المصدر بعد تحميلها من الموقع الرسمي عن طريق كتابة الأوامر التالية: ./setup.py build su [password] ./setup.py install وكمثال على استخدام هذه المكتبة هذا أبسط مثال يمكنك فعله بالمكتبة (يقوم بإظهار إشعار بعنوان Title وبمحتوى Some sample content): #!/usr/bin/env python # encoding: utf-8 import pynotify ''' libnotify needs some init value, it really can be anything, it just uses it to differentiate between the popups ''' pynotify.init("Basic") n = pynotify.Notification("Title", "Some sample content" ) n.show() كما يمكنك استخدام وسوم HTML كما في المثال التالي: #!/usr/bin/env python # encoding: utf-8 import pynotify pynotify.init("markup") n = pynotify.Notification("Markup", ''' <b>bold</b>, <i>italic</i>, <u>underline</u> and even <a href="http://google.com">links</a> are supported! ''' ) n.show()المصدر
  14. يمكن فعل ذلك عن طريق إضافة `animation-iteration-count: infinite` إلى `div.slide-slow div.inner`، ليصبح شكل الشيفرة كالتالي: div.slide-slow div.inner { animation: slide-slow 3s; margin-top: 0%; animation-iteration-count: infinite; }ملاحظة: يمكنك تغيير كلمة `infinite` بعدد التكرارات التي ترغب بها، كما يمكنك إضافة `animation-direction: alternate` في حالة ما أردت للصورة المتحركة أن تعود للخلف إذا وصلت إلى نهاية الصفحة (حيث ستكون حركة السمكة ذهابا و إيابا). الشيفرة الكاملة: <style style="text/css"> div.slide-slow { width: 100%; overflow: hidden; } div.slide-slow div.inner { animation: slide-slow 3s; margin-top: 0%; animation-iteration-count: infinite; animation-direction: alternate; } @keyframes slide-slow { from { margin-left: 100%; } to { margin-left: 0%; } } </style> <div class="slide-slow"> <div class="inner"> <img src="http://i.stack.imgur.com/nJAsS.gif" alt="Swimming fish"> </div> </div> وهنالك طريقة أخرى لتحسين الشيفرة البرمجة حيث ستصبح الصورة المتحركة (السمكة) تستمر في التحرك إلى اليسار حتى تختفي ومن ثم تظهر على اليمين لتستمر حركتها، شيفرة CSS: div.slide-slow { width: 100%; overflow: hidden; } div.slide-slow div.inner { animation: slide-slow 3s infinite; margin-top: 0%; } @keyframes slide-slow { from { margin-left: 100%; } 75% { margin-left: 0%; } 100% { margin-left: -15%; } }وهذه شيفرة HTML التابعة للشيفرة السابقة: <div class="slide-slow"> <div class="inner"> <img src="http://www.html.am/images/html-codes/marquees/fish-swimming.gif" alt="Swimming fish"> </div> </div> المصدر
  15. تم إنشاء دالة لإظهار التاريخ باستخدام التقويم الهجري، وهذه الدالة يجب إرفاقها مع ملف المشروع، الشيفرة المصدرية للدالة: function gmod(n,m){ return ((n%m)+m)%m; } function kuwaiticalendar(adjust){ var today = new Date(); if(adjust) { adjustmili = 1000*60*60*24*adjust; todaymili = today.getTime()+adjustmili; today = new Date(todaymili); } day = today.getDate(); month = today.getMonth(); year = today.getFullYear(); m = month+1; y = year; if(m<3) { y -= 1; m += 12; } a = Math.floor(y/100.); b = 2-a+Math.floor(a/4.); if(y<1583) b = 0; if(y==1582) { if(m>10) b = -10; if(m==10) { b = 0; if(day>4) b = -10; } } jd = Math.floor(365.25*(y+4716))+Math.floor(30.6001*(m+1))+day+b-1524; b = 0; if(jd>2299160){ a = Math.floor((jd-1867216.25)/36524.25); b = 1+a-Math.floor(a/4.); } bb = jd+b+1524; cc = Math.floor((bb-122.1)/365.25); dd = Math.floor(365.25*cc); ee = Math.floor((bb-dd)/30.6001); day =(bb-dd)-Math.floor(30.6001*ee); month = ee-1; if(ee>13) { cc += 1; month = ee-13; } year = cc-4716; if(adjust) { wd = gmod(jd+1-adjust,7)+1; } else { wd = gmod(jd+1,7)+1; } iyear = 10631./30.; epochastro = 1948084; epochcivil = 1948085; shift1 = 8.01/60.; z = jd-epochastro; cyc = Math.floor(z/10631.); z = z-10631*cyc; j = Math.floor((z-shift1)/iyear); iy = 30*cyc+j; z = z-Math.floor(j*iyear+shift1); im = Math.floor((z+28.5001)/29.5); if(im==13) im = 12; id = z-Math.floor(29.5001*im-29); var myRes = new Array(8); myRes[0] = day; //calculated day (CE) myRes[1] = month-1; //calculated month (CE) myRes[2] = year; //calculated year (CE) myRes[3] = jd-1; //julian day number myRes[4] = wd-1; //weekday number myRes[5] = id; //islamic date myRes[6] = im-1; //islamic month myRes[7] = iy; //islamic year return myRes; } function writeIslamicDate(adjustment) { var wdNames = new Array("Ahad","Ithnin","Thulatha","Arbaa","Khams","Jumuah","Sabt"); var iMonthNames = new Array("Muharram","Safar","Rabi'ul Awwal","Rabi'ul Akhir", "Jumadal Ula","Jumadal Akhira","Rajab","Sha'ban", "Ramadan","Shawwal","Dhul Qa'ada","Dhul Hijja"); var iDate = kuwaiticalendar(adjustment); var outputIslamicDate = wdNames[iDate[4]] + ", " + iDate[5] + " " + iMonthNames[iDate[6]] + " " + iDate[7] + " AH"; return outputIslamicDate; }ويمكنك عرض التاريخ الهجري عن طريق كتابة: document.write(writeIslamicDate());فسيظهر التاريخ كالتالي: Jumuah, 28 Dhul Qa'ada 1436 AHلاحظ أن التاريخ يكتب باللغة الإنجليزية. وإذا احتجت فقط لعرض السنة الهجرية (مثلا لوضعها في footer ...)، يمكنك فعل ذلك بسهولة عن طريق إرفاق الجافا سكربت إلى موقعك: var GregorianYear = (new Date()).getFullYear(); var HijriYear = Math.round((GregorianYear - 622) * (33 / 32));أو يمكنك عرض السنة الميلادية بجانب السنة الهجرية عن طريق هذه الشيفرة بلغة جافاسكربت: <script type="text/javascript">document.write((new Date()).getFullYear())</script> م - <script type="text/javascript">var y = (new Date()).getFullYear();var h = Math.round((y - 622) * (33 / 32));document.write(h)</script> هـملاحظة: هنالك دائما فرصة خطأ بالتاريخ الهجرين بيوم أو يومين أو حتى ثلاثة. المصدر 1 2
  16. يمكنك الحصول على أكواد التحقق Authorization Credentials عن طريق إتباع هذه الخطوات: 1- الذهاب إلى موقع جوجل للمطورين. 2- قم باختيار مشروعك أو إنشاء مشروع جديد. 3- في الشريط الجانبي الأيسر، قم بتوسيع APIs & auth ثم اضغط على APIs وستجد قائمة من API، تأكد من أن حالة YouTube Data API v3 مفعلة (ON). 4- اختر من الشريط الجانبي الأيسر Credentials ثم قم بإختيار نوع أكواد التحقق المناسبة لمشروعك (يوجد نوعان من الأكواد هما OAuth 2.0 و API keys) المصدر
  17. من أهم سلبيات Wamp Stack هي انعدام الأمان، فإن WAMP و LAMPP و XAMPP جميعها تم إنشائها لتثبيت مجموعة من البرامج الخادوم (Server) بضغطة واحدة وهذا الأمر يسهل العمل للمطورين لكن لا ينصح بتثبيته على خادوم حقيقي لأن الكثير من الإعدادات تم وضعها في خيارات غير آمنة. لكن على الرغم من ذلك فلـ Wamp Stack عدة إيجابيات منها سهولة وسرعة التحديث والترقية بالإضافة إلى سهولة إيجاد الملفات والإعدادات للبرامج التي تم تثبيته ولذلك يفضلها الكثير على تثبيت البرامج بشكل منفصل. المصدر
  18. يمكنك فعل ذلك عن طريق استخدام دالة `parseInt`: int foo = Integer.parseInt("2563");وستكون النتيجة داخل متغير `foo` ويمكنك تغيير "2563" بإسم المتغير من نوع String الذي تريده. المصدر: التوثيق الرسمي
  19. نعم يمكنك تضمين ملف CSS في ملف آخر عن طريق استخدام `@import` وبطريقتين، الأولى كما في المثال التالي: @import "mystyle.css";والثانية بإستخدام `url()` كالتالي: @import url("mystyle.css");ملاحظة: يجب على `@import` أن تكون في البداية إلا إذا وجدت `@charset` حيث ستكون في هذه الحالة بعدها. مصادر: 1 2
  20. على الرغم من اعتقاد الكثير من الناس أن الرياضيات والفيزياء ضروريين لاحتراف البرمجة إلا أن البرمجة والرياضيات شيئان مختلفان، فتعلم لغة برمجة أقرب لتعلم لغة جديدة منه إلى حل مسائل حسابية، لكن سوف تحتاج إلى الرياضيات في بعض أنواع البرمجة المتقدمة جدا، أو في حالة إحتجت إلى برمجة برنامج لحل مسائل حسابية أو فيزيائية أو ما شابه. وطبعا هذا لا يعني أنك لن تحتاج إلى أية معرفة بالرياضيات فإن أصل البرمجة هي معادلات الحسابية لذلك سوف تحتاج إلى القليل من المعرفة في الرياضيات لكي تتعلم البرمجة بشكل أسهل وأسرع. المصدر
  21. كيف أثبّت لوحة cpanel على خادم يعمل بإحدى الأنظمة الدبيانية (كدبيان Debian وأبنتو Ubuntu)؟ وما هي البدائل لو لم يكن ذلك ممكنا؟
  22. DNS وهو اختصار لـ "Domain Name System" والذي معناه "نظام أسماء النطاقات" وهو نظام يستخدم لربط معلومات النطاقات (Domains) بعناوين الأي بي، ومن أهم وظائفه ترجمة أسماء النطاقات إلى عناوين أي بي. نادرا ما تحتاج إلى معرفة الـ DNS في البرمجة إلا إذا كان تخصصك برمجة الشبكات والخوادم (Servers)، وتعتبر من البرمجة المتقدمة وقد لا تحتاجها في برمجتك، لذلك لا أنصحك بمعرفة الكثير عنه إلا إذا أردت أن تكون مبرمج شبكات وخوادم أو إذا كان عملك مرتبط بهم أو إذا كنت متخصص بالأمن الإلكتروني (حماية الشبكات والخوادم). المصدر
  23. يمكنك استخدام وحدة lxml في البايثون لاستخراج محتويات الوسوم، فعلى سبيل المثال لديك كود xml في متغير content وتريد استخراج محتوى وسم Trackpoint/Time فيمكنك فعل ذلك عن طريق التالي: content = ''' <Track> <Trackpoint> <Time>2015-08-29T22:04:39.000Z</Time> <Position> <LatitudeDegrees>37.198049426078796</LatitudeDegrees> <LongitudeDegrees>127.07204628735781</LongitudeDegrees> </Position> <AltitudeMeters>34.79999923706055</AltitudeMeters> <DistanceMeters>7.309999942779541</DistanceMeters> <HeartRateBpm> <Value>102</Value> </HeartRateBpm> <Cadence>76</Cadence> <Extensions> <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2"> <Watts>112</Watts> </TPX> </Extensions> </Trackpoint> ....Lots of <Trackpoint> ... </Trackpoint> </Track> ''' from lxml import etree tree = etree.XML(content) time = tree.xpath('Trackpoint/Time/text()') print(time) وستكون المخرجات كالآتي: ['2015-08-29T22:04:39.000Z']المصدر
  24. أريد تعديل بعض الصوّر وتحسينها عن طريق إزالة الحبوب والبثور والنمش من الوجه، كنت أستخدم أداة healing brush tool في فوتوشوب لكنني عندما انتقلت إلى نظام لينُكس وبدأت باستخدام gimp لم أعرف كيف أقوم بذلك.
  25. يجب عليك أن تتعلم في البداية HTML5 و CSS3 وجافاسكربت كأساس، ثم بعد ذلك أنصحك بتعلم jquery بالإضافة لإحدى أطر الويب مثل foundation أو bootstrap. يمكنك تعلم أطر ولغات أخرى بعد ذلك، لكن يجب عليك أولا تعلم هذه اللغات فهي أساس برمجة الويب. أما عن المدة الزمنية فأعتقد أن 6 أشهر (كأقل مدة) كافية لاحتراف هذه اللغات. تحياتي
×
×
  • أضف...