11 آبان

ماژول فارسی انگولار

انگولار یک فریم‌ورک ام‌وی* سمت کلاینت است که به زبان جاوا اسکریپت نوشته شده است. با استفاده از این فریم‌ورک می‌توانید یک وب‌اپلیکیشن تک‌صفحه‌ای بنویسید. برای توضیحات بیشتر به وب‌سایت angularjs.org مراجعه کنید.

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

ماژول فارسی انگولار، یک مجموعه فیلتر کاربردی جهت محلی‌سازی نرم‌فزارهای فارسی، از جمله تبدیل اعداد انگلیسی به فارسی، تبدیل اعداد به حروف، تبدیل کاراکترهای عربی به فارسی، تغییر لی‌اوت کیبورد و … در اختیار کاربران قرار می‌دهد.

برای نصب این ماژول ابتدا bower را نصب کنید سپس دستور زیر را اجرا کنید.

$ bower install angular-persian

سپس ماژول ngPersian را به وابستگی‌های برنامه خود اضافه کنید.

var app = angular.module('myApp', ['ngPersian', /* deps ... */]);

حالا می‌توانید از فیلترهای این ماژول در نماهای برنامه خود استفاده کنید.

<input ng-model="someNumber"> {‌{ someNumber | pNumber }‌}
<input ng-model="price"> {‌{ price | pDigitWords }‌} ریال

قطعه کد بالا مقدار مدل someNumber را با کاراکترهای فارسی نمایش می‌دهد و مقدار مدل price را با حروف نمایش می‌دهد. (برای مثال: یک صد و بیست هزار ریال)

برای خواندن جزئیات بشتر در مورد این ماژول، صفحه گیت‌هاب آن را دنبال کنید.

1 آبان

اکستنشن هجری شمسی برای php

کتابخانه‌های پیکربندی تاریخ بر اساس تقویم هجری شمسی همواره یکی از پرکاربردترین ابزارها نزد برنامه‌نویسان ایرانی بوده‌اند. این کتابخانه‌ها در نرم‌افزارهای وب بسیار پراستفاده هستند و مخصوصا بسته‌های زیادی برای برای این منظور به زبان php ایجاد شده است.

اما نکته‌ی اساسی، محاسبات زیاد این کدهاست که بار پردازشی زیادی به همراه دارند مخصوصا اگر این کدها به زبان php هم نوشته شده باشند. قرار دادن این عملیات در یک لایه بالاتر از کدهای php به عنوان یک اکستنشن برای ZendEngine می‌تواند سرعت پردازش را افزایش دهد. از آن‌جایی که این پردازش‌ها شامل تعداد زیادی عملیات ضرب، جمع، تفریق و ضرب هستند، استاتیک-تایپ بودن عمل‌شونده‌ها (Operand)، می‌تواند به صورت چشم‌گیری این عملیات را سریع کند.

اکستنشن php-jalali-extension به همین منظور ایجاد شده تا امکان نمایش تاریخ با قالب تقویم هجری شمسی با سرعت زیادی در زبان php انجام شود.

یک مقایسه‌ی ساده با یک کتابخانه پراستفاده php سرعت بالای این اکستنشن را نشان می‌دهد. این اکستنشن می‌تواند ۱۰۰۰۰۰ تاریخ را در مدت ۵ ثانیه انجام دهد در حالی که این کار با یک کلاس php معمول، ۱۸ ثانیه زمان می‌برد.

برای دریافت این اکستنشن، راهنمای آن را در گیت هاب بخوانید.

26 بهمن

پردازش SMILES با رازی

رازی یک کتابخانه برای جاوا است که برای توسعه نرم‌افزارهای شیمی کاربرد دارد. در حال حاضر رازی می‌تواند فایل‌های SMILES را پردازش کند و یک مدل شی‌گرا از مولکول را برگرداند.

  1. کتابخانه را دانلود کنیدو آن را در پروژه وارد کنید.
  2. یک وهله از com.razi.formats.smiles.Reader بسازید.
  3. متد set را فرا بخوانید مقدار ورودی را به آن تزریق کنید.
  4. متد process را صدا بزنید.
  5. تمام شد !

کد آن به این شکل خواهد بود :

Reader sr = new Reader();
sr.set("C(=O)O");
sr.process();

Molecule mol = sr.get();

حالا می‌توانید از توصیف‌کننده‌ها استفاده کنید. در حال حاضر رازی یک توصیف‌کننده‌ی شمارشی برای مولکول دارد. از کلاس com.razi.descriptor.molecular.CountDescriptor برای این کار استفاده کنید.

cd.countAtoms(); // Number of all atoms
cd.countBonds(); // Number of all bonds
cd.countBondsByOrder(2); // Number of bonds with order 2
cd.countAtomsByElement(element); // Number of all atoms which are the same with given element

اگر به شیمی‌فناوری‌اطلاعات علاقه‌مند هستید، رازی را در گیت‌هاب دنبال کنید.

5 بهمن

محتوای gzip در وب، مزایا و اشکال‌ها

با توجه به RFC2616 یک درخواست http می‌تواند شامل فیلد هدر accept-encoding باشد.

برای مثال:

Accept-Encoding: compress, gzip

چرا یک مرورگر چنین اطلاعاتی به وب‌سرور ارسال می‌کند ؟ خیلی ساده ! مرورگر به وب‌سرور اطلاع می‌دهد که قادر به decode کردن gzip هست. (بحث ما در این مطلب صرفاٌ در مورد gzip است.)

در این صورت می‌توان فایل‌های asset از قبیل JS و CSS و یا حتی HTML پاسخ را فشرده کرد.

فشرده‌سازی محتوا مزیت‌ها و اشکال‌هایی هست. می‌خواهیم این سوال را بررسی کنیم که چه زمانی باید محتوا را gzip کنیم؟

مزایا

  1. فشرده‌سازی زمان دریافت فایل توسط کاربران را کاهش می‌دهد.

  2. مصرف پهنای باند و ترافیک شبکه را کاهش می‌دهد.

اشکال‌ها

  1. عملیات فشرده‌سازی، بار پردازشی را افزایش می‌دهد.

در کل این کار هیچ ضرری برای کاربران ندارد !

نحوه فعال‌سازی در وب‌سرور آپاچی

ابتدا مطمئن شوید که ماژول mod_deflate فعال است.

LoadModule deflate_module modules/mod_deflate.so

سپس این قطه تنظیمات زیر را در فایل httpd.conf اضافه کنید.

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript application/json
</IfModule>

اما این ماژول gzip محتواهای فایل‌های ایستا را cache نمی‌کند و به ازای هر درخواست عملیات فشرده‌سازی مجددا انجام می‌شود.