atVSG

0011001000110100

وحید امیری مطلق

توسعه دهنده وب و موبایل

نصب mod_wsgi در ویندوز


apache python mod_wsgi windows

mod_wsgi یک ماژول مخصوص وب سرور Apache هستش که پشتیبانی از رابط استاندارد WSGI رو به آپاچی اضافه میکنه. از اونجایی که تقریبا تمام فریم ورک های وب مدرن Python نیازمند وب سروری با پشتیبانی از WSGI هستن، نصب کردنش به یکی از نیازمندی های شروع استفاده از Python برای توسعه web app شده. متاسفانه نصبش برخلاف بقیه ماژول های آپاچی کمی دردسر داره (مخصوصا تحت ویندوز). در این پست نحوه نصبش در ویندوز رو توضیح میدم.



انتشار وب اپ ساخته شده با ASP.NET Core با وب سرور Apache


ASP.NET Core + Apache

نسخه جدید فرم ورک Microsoft ASP.NET با عنوان ASP.NET Core یک فریم ورک ماژولار و منبع باز برای ساخت Web App و انواع Web API استفاده میشه. از بزرگترین مزیت های این نسخه، استفاده اون از NET Core هست که باعث میشه بتونید علاوه بر ویندوز، روی انواع توزیع های لینوکس و macOS هم برنامه ها رو اجرا کنید و از تمام مزیت هایی که دارن از جمله مصرف کمتر منابع و وب سرور قوی و محبوب nginx بهره مند بشید.

مسلما مثل همیشه امکان میزبانی ASP.NET Core روی وب سرور IIS که مخصوص ویندوزه هست ولی به دلایل زیادی از IIS خوشم نمیاد و ترجیح میدم از Apache استفاده کنم. مهم ترین دلایل من برای این کار اینه که تجربه ی مناسبی با Apache دارم و بدون اتلاف وقت میتونم تموم اون ها رو برای ASP.NET Core پیاده کنم و از طرفی همون طور که همه دنیا میدونن، Apache یک نرم افزار Cross Platform هستش که به معنی اینه که Apache رو روی هر سیستم عاملی اجرا کنید، دقیقا همین کار هایی که برای تنظیم Apache روی مثلا لینوکس انجام میدید رو بتونید با کمترین تغییر ممکن روی ویندوز هم پیاده کنید و این به شما این اجازه رو میده که به راحتی و در صورت نیاز، بتونید برنامه خودتون رو به یک سرور با یک سیستم عامل کاملا متفاوت منتقل کنید. همچنین این معنیه که میتونید چندین سایت با تکنولوژی های کاملا متفاوت رو کنار هم و بدون کوچکترین مشکلی روی یک سرور و یک وب سرور هاست کنید!



ترفند های کاربردی Apache با استفاده از فایل htaccess


htaccess

فایل htaccess (که با یک نقطه شروع میشه) یک فایل تنظیمات مخصوص وب سرور آپاچی است که البته توسط برخی وب سرور های دیگر هم تا حدودی پشتیبانی میشه. مزیت اصلی استفاده از این فایل به جای تغییر تنظیمات Apache در سطح پایین تر، پرتابل بودن اون و امکان استفاده از آن در محیط هایی که دسترسی به نرم افزار های سیستمی از جمله وب سرور برای کاربران محدود شده، مثل هاست های اشتراکی است. در این پست چند ترفند کاربردی رو برای بهبود سئو و سرعت سایت هایی که قابلیت استفاده از htaccess رو دارند، بررسی میکنیم.



Quotes by VSGWoRLD – نقل قول ها و جملات مورد علاقه من


Quotes by VSGWoRLD

چند وقتی میشد پیش خودم میگفتم ای کاش یه جایی، وجود داشت که جملات و نقل قول هایی که ازشون خوشم میاد رو میتونستم اونجا ذخیره کنم. البته راه های مختلفی برای این کار هست ولی دوست داشتم یه سیستم مخصوص برای این کار وجود داشت. سیستمی که در عین ساده بودن، قابلیت های خاصی از جمله API عمومی داشته باشه. ایده اولیه به اندازه کافی ساده بود که بدون هدر دادن وقت روش کار کردم و طی کمتر از 3-4 روز این سیستم رو پیاده سازی کردم. البته پیاده سازی همچین سیستمی نباید زمان زیادی ببره و میشد طی 2 روز هم انجامش داد ولی من با کمبود وقت آزاد مواجه بودم. به هر حال… الان این سیستم رو در یک زیر دامنه برای یه دامنه که تازه ثبت کردم، راه اندازی کردم. از آدرس quotes.vsgworld.com میشه بهش دسترسی داشت. این سیستم با استفاده از نرم افزار های زیر درست شده:

  • PHP 5.6
  • MariaDB 10/MySQL 5.6
  • Apache 2.4
  • Bootstrap 4
  • jQuery 3

همون طور که میبینید، از هیچ فریم ورک PHP استفاده نشده. البته این سیستم دارای Routing هست که با استفاده از یک پکیج composer به اسم phroute انجام میشه. به نظر خودم نکته ی مهم این سیستم و شاید متفاوت اون، Public API باشه که مستنداتش اینجا موجوده. با استفاده از این API میتونید نقل قول ها رو در سایت یا برنامه خودتون دریافت کنید و اون ها رو به هر فرمتی که دلتون میخواد نمایش بدید.


حل مشکل UnexpectedValueException in Response.php line 395 در Laravel 5


داشتم یک ماژول سرور رو برای NewsGet آپدیت میکردم که وقتی اجراش کردم:

laravel stack trace

stack trace ها با این که طولانی و خسته کننده هستن، میتونن اطلاعات زیادی راجع به نحوه ی به وجود آمدن مشکلات و exception ها بدن اما نه در این مورد.

رفع مشکل در ادامه مطلب.



معرفی کلاس های jDateTimePlus و EasyDateTime برای PHP


jDateTimePlus

کلاس jDateTimePlus بر پایه ی نسخه 2.2.0 کلاس jDateTime هست. هدف از نوشتنش برطرف کردن بعضی مشکلات کلاس قبلی و به روز کردن الگوریتم توابع تبدیل شمسی به میلادی و میلادی به شمسی با استفاده از توابع jdf 2.60 بود. کلاس jDateTime توسط سالار کابلی ساخته شده. انصافا کار خوبی کرده و مستندات خوبی هم داره به خاطر همین دیگه من تکرار مکررات نمیکنم و برای نحوه ی استفاده میتونید مستندات سالار رو در وبلاگش بخونید.

صفحه jDateTimePlus در گیت هاب + راهنمای نصب و استفاده

اما برسیم به اصل مطلب. کلاس EasyDateTime!

 

EasyDateTime

 

EasyDateTime در واقع یک کلاس سطح بالا برای مخفی کردن اون پیچیدگی هایی از کلاس jDateTimePlus هست که عملا برای کاربر نهایی استفاده کننده گیج کننده هستن و غیر ضروری. این یک کلاس آماده برای ورورد و استفاده سریع و راحت در اپ های واقعیه. تعداد زیادی از متود های jDateTimePlus پارامتر Timezone رو دریافت میکنن که این کار کاملا بیهوده هست و نیازی بهش نیست. خیلی از متود ها هم تعریف دقیقی از کارکردشون در دنیای واقعی (!) ارائه نمیکنن و مثلا به ندرت به طور مستقیم مورد استفاده قرار میگیرن. این کلاس علاوه بر موارد قبلی، ظاهر بسیار تمیزی داره و همچنین یکی دو متود جدید هم معرفی میکنه که کاملا کاربردی هستن. (تبدیل DateTime شمسی به میلادی و فرمت اون، تبدیل Timezone ها به یکدیگر)

صفحه ی EasyDateTime در گیت هاب + راهنمای نصب و استفاده

توضیحات در ادامه مطلب.