ساختن بُعد تاریخ شمسی برای استفاده در Cube

سه شنبه 05 بهمن 1395 توسط Ziaa

DimPersianDate

همان‌طور که می‌دانید در مباحث مربوط به هوش تجاری (BI)، یکی از پرکاربردترین عناصر برای گزارش‌گیری‌های سریع، تلفیقی و چندبعدی OLAP Cubeها هستند (اگر نمی‌دانید، این متن برای شما کاربردی ندارد. وقت ارزشمند خود را تلف نکنید!). معمولاً در Cubeها بُعد تاریخ (Date dimension) یکی از اصلی‌ترین ابعاد است و در اکثر گزارش‌ها به آن نیاز خواهد شد.

برای ایجاد بُعد تاریخ با تاریخ‌های شمسی می‌توان ابتدا تابعی برای تبدیل تاریخ میلادی به شمسی در SQL Server نوشت. سپس با استفاده از این تابع، جدول تاریخ‌ها در انبارداده (Data Warehouse) را برای بازه‌ی زمانیِ خاصی ایجاد کرد.

تابع تبدیل میلادی به شمسی در SQL Server

برای این کار «چرخ را دوباره اختراع نمی‌کنیم» و از کد این وبلاگ و البته نسخه سریع‌تر آن (پی‌نوشت هفتم) برای ایجاد تابع GregorianToJalali استفاده می‌کنیم. در عین حال مشکلات و باگ‌های این کد را می‌دانیم.

ایجاد روال (Stored Procedure) برای پرکردن بُعد تاریخ در انبار داده

در اینجا روال spPopulatePersianDateDimension را ایجاد می‌کنیم تا جدولی با عنوان PersianDateDimension در انبارداده ما ایجاد کند (اگر از قبل وجود نداشت) و سپس با توجه به ورودی روال، این جدول را با تاریخ‌های شمسی و میلادی متناظر برای یک بازه زمانی خاص پُر کند.

این روال، همه تاریخ‌های شمسی و میلادی بین تاریخ شروع ‪@FromDate‬ و پایان ‪@ToDate‬ را در جدول PersianDateDimension وارد می‌کند. همان طور که در کد مشخص است ستون‌هایی مانند «روز هفته (GregorianDayNumberOfWeek و PersianDayNumberOfWeek)» و «روز سال (GregorianDayNumberOfYear و PersianDayNumberOfYear)» و ... نیز در این جدول وارد می‌شود که این موارد معمولاً در گزارش‌های جزئی‌تر مورد استفاده قرار می‌گیرند.

پر کردن بُعد تاریخ برای یک بازه زمانی

پس از ایجاد روال می‌توانیم با توجه به تاریخ‌های موجود در سایر داده‌ها و ابعاد (مثلاً مشتریان، محصولات، فروشندگان و ...) برای بازه‌ی معقولی بُعد تاریخ را ایجاد کنیم.

EXECUTE dbo.spPopulatePersianDateDimension @FromDate = '2016-1-1', @ToDate = '2017-1-1'

کار تمام است و شما می‌توانید این بُعد را برای سایر مکعب‌های خود نیز استفاده کنید.

راهنمای استفاده از سایت‌ساز پلیکان - بخش دوم - تغییر قالب و تبدیل تاریخ نوشته‌ها از میلادی به شمسی

شنبه 13 آذر 1395 توسط Ziaa

در بخش قبل، خلاصه‌وار به نصب و ایجاد یک وبلاگ آزمایشی با استفاده از سایت ساز پلیکان اشاره کردم. در این بخش، روش تغییر قالب و تبدیل تاریخ مطالب از میلادی به شمسی را ذکر خواهم کرد.

برای پلیکان قالب‌های مختلفی ایجاد شده است. شما به راحتی می‌توانید با نگاهی به آنها و قالب ساده‌ای مثل simple و مستندات jinja قالب دلخواه خود را ایجاد کنید. اگر به قالب راست-به-چپ و مناسب نوشته‌های فارسی نیاز دارید می‌توانید از Pelican-RTL-theme استفاده کنید. این قالب برگرفته از کار خوب تیم سُبحه است.

روش تغییر قالب

بهتر است پوشه‌ای با نام دلخواه مثلا themes برای نگهداری قالب‌های وبلاگ خود در نظر بگیرید. سپس به هر روشی که دوست دارید؛ فایل‌های مورد نیاز هر قالب را به این پوشه انتقال دهید. مثلا می‌توانید به یکی از روش‌های زیر عمل کنید:

۱. کپی کردن مخزن قالب

git clone https://github.com/ziaa/Pelican-RTL-theme.git themes/Pelican-RTL-theme

۲. اضافه کردن قالب به عنوان submodule

git submodule add -b master https://github.com/ziaa/Pelican-RTL-theme.git themes/Pelican-RTL-theme

در مرحله بعد باید مسیر قالب مورد نظر را در فایل تنظیمات پلیکان pelicanconf.py وارد کنید.

#Theme

THEME = 'مسیر/Pelican-RTL-theme' 

همچنین بجای این کار می‌توانید در هنگام تهیه خروجی‌های استاتیک سایت، مسیر قالب را مشخص کنید.

pelican content -s pelicanconf.py -t path/to/themes/Pelican-RTL-theme

روش فارسی کردن تاریخ نوشته‌ها

یکی از قابلیت‌های سایت ساز پلیکان امکان نوشتن پلاگین‌های دلخواه برای آن است. شما می‌توانید فهرستی از پلاگین‌های موجود را در اینجا مشاهده کنید. برای فارسی کردن تاریخ‌ مطالب می‌توانید از پلاگین Pelican Persian date استفاده کنید. برای استفاده از آن ابتدا بهتر است پوشه‌ای با نام دلخواه (مثلا plugins) برای نگهداری پلاگین‌ها ایجاد کنید. سپس به هر روشی که دوست دارید فایل‌های پلاگین را در این پوشه قرار دهید. مثلا می‌توانید از یکی از روش‌های زیر استفاده کنید:

git clone https://github.com/ziaa/pelican_persian_date.git plugins/pelican_persian_date
git submodule add -b master https://github.com/ziaa/pelican_persian_date.git plugins/pelican_persian_date

در مرحله بعد باید مسیر پوشه plugins و پلاگین‌های فعال را در فایل تنظیمات پلیکان pelicanconf.py مشخص کنید. برای اینکار خطوط زیر را به آن اضافه کنید.

# Plugins
PLUGIN_PATHS = ['مسیر/plugins']
PLUGINS = ["pelican_persian_date"]

اگر می‌خواهید شکل خروجی تاریخ‌ها را کنترل کنید، این خطوط را به فایل pelicanconf.py اضافه کنید.

DATE_FORMATS = {
    'fa': '%A %d %B %Y'
}

با این کار می‌توانید مشخص کنید که تاریخ‌های فارسی به چه شکلی نمایش داده شود. مثلا شنبه ۱۳ آذر ۱۳۹۵ یا ۱۳۹۵/۰۹/۱۳ یا هر شکل دلخواه دیگری. برای آشنایی با انواع فرمت‌ها از این لینک کمک بگرید.

در نهایت خروجی وبلاگ را دوباره بسازید و از قالب و تاریخ فارسی لذت ببرید!

pelican content

راهنمای استفاده از سایت‌ساز پلیکان - بخش اول - نصب و راه‌اندازی اولیه

سه شنبه 09 آذر 1395 توسط Ziaa

اگه علاقه دارید که سایت یا وبلاگ خودتان را با ابزارهایی که سایت استاتیک ایجاد می‌کنند، درست کنید؛ پلیکان یکی از چندین گزینه‌ای است که شما در اختیار دارید. چرخه استفاده از این سایت‌سازها تقریبا شبیه به هم است:

  1. write
  2. build
  3. publish

شما نوشته مورد نظرتان را می‌نویسید، خروجی html را سایت‌ساز برای‌تان ایجاد می‌کند و در نهایت این خروجی را در هاست خود قرار می‌دهید. البته مشخص است که یک برنامه‌نویس فقط مطلب مورد نظر را می‌نویسد و با ابزارها و کدهای مختلف بقیه مراحل را به کامپیوتر واگذار می‌کند. تا حد امکان ما دوست داریم کارها خودکار انجام شوند!

در اینجا به صورت خلاصه راهنمای اولیه نصب پلیکان و ایجاد وبلاگ اولیه با استفاده از آن را می‌نویسم. توجه کنید که این مطلب صرفاً یک یادداشت است. برای راهنمای کامل به مستندات پلیکان مراجعه کنید.

  • نصب پایتون

    • Python 2.7.x+ یا Python 3.3+
  • نصب مدیر بسته‌های پایتون pip

  • اگر از Python 2.7.9 یا بالاتر و Python 3.4 یا بالاتر استفاده می‌کنید؛ pip قبلاً نصب شده و گرنه باید آن‌را نصب کنید.

  • برای به روز رسانی pip

python -m pip install --upgrade pip
  • نصب پلیکان
pip install pelican
  • نصب Markdown‌ (در صورتیکه می‌خواهید نوشته‌ها را با مارک‌داون بنویسید)
pip install Markdown
  • ساختن پوشه سایت و ایجاد ساختار اولیه
mkdir your-project-folder
cd your-project-folder
pelican-quickstart
  • پاسخ‌گویی به سوالات (جواب‌های پیش‌فرض در براکت [] نوشته شده)
...
> What is your time zone? [Europe/Paris] Asia/Tehran
...
  • نوشتن اولین مطلب در یک فایل md و در پوشه content
Title: سلام دنیا!
Slug: Hello-World
Date: 2015-07-21 23:20
Category: Test
Tags: Test

سلام دنیا!
  • ساختن فایل‌های استاتیک وبلاگ (خروجی‌ها در پوشه output)
pelican content
  • راه‌اندازی سرور local
cd output
python -m pelican.server

الان وبلاگ با قالب پیش‌فرض ساخته شده و از طریق آدرس http://localhost:8000 قابل دسترسی است. در بخش‌های بعدی به تغییر قالب، فارسی‌سازی و قرار دادن وبلاگ روی گیت‌هاب اشاره خواهم کرد.

سلام دنیا!

جمعه 30 مرداد 1394 توسط Ziaa

ما توسعه‌دهنده‌ها و برنامه‌نویس‌ها وقتی‌که یادگیری زبان برنامه‌نویسی یا ابزار جدیدی رو شروع می‌کنیم؛ تقریباً می‌شه گفت اولین کاری که انجام می‌دیم اینه که سعی می‌کنیم عبارت Hello World رو توی خروجی نمایش بدیم. بعد از اینکه این خروجی رو دیدیم و کلی ذوق‌مرگ شدیم؛ شروع می‌کنیم به یادگیری دقیق اون زبان برنامه‌نویسی و تازه بدبختی‌هامون شروع می‌شه! بدبختی‌هایی که شیرین و لذت‌بخش هستند.

پس...

سلام دنیا! سلام پلیکان!