بایگانیِ دستهٔ ‘برنامه نویسی’

ربات مترجم

فرستاده شده: اوت 20, 2010 توسط احسان شریعتی در API, برنامه نویسی, ربات
برچسب‌ها:, , ,

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

ربات مترجم سایر زبان‌ها به فارسی: any2fa@bot.im

ربات مترجم سایر زبان‌ها به انگلیسی: any2en@bot.im

مترجم از هر زبانی به زبان فارسی

قبل از نوشتن نحوه انجام کار لازم است بگویم که گوگل تاک یک سری ربات مترجم دارد که متاسفانه مترجم فارسی در میان آن‌ها نبود.

و اما مراحل انجام کار:

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

اتصال به مترجم گوگل: خوشبختانه اکثر سرویس‌های امروزی دارای توابع APIای به منظور استفاده از آن‌ها هستند. در اینجا تابعی می‌نویسیم که متن را دریافت و ترجمه فارسی آن را بر می گرداند.
function translate($text, $from = '', $to = 'fa') {
$url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.rawurlencode($text).'&langpair='.rawurlencode($from.'|'.$to);
$response = file_get_contents(
$url,
null,
stream_context_create(
array(
'http'=>array(
'method'=>"GET",
'header'=>"Referer: http://".$_SERVER['HTTP_HOST']."/\r\n"
)
)
)
);
if (preg_match("/{\"translatedText\":\"([^\"]+)\"/i", $response, $matches)) {
return $matches[1];
}
return false;
}

و حال قراردادن قردادن کدی برای جواب به پیغام‌هایی که به این ربات می‌رسد:

<?php
switch ($_REQUEST['step']) {
case 1:
echo "ترجمه :
" . translate($_REQUEST['msg']) . "
.";
break;
}
?>

پایان کار: کار به پایان رسیده است و ربات به یک مترجم گوگل قابل استفاده در انواع مسنجرهای رایج تبدیل شده است.

برای استفاده از این ربات در سایر مسنجرها به پست بعدی مراجعه کنید.

Advertisements

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

تصور کنید از شما خواسته شده است، نرم‌افزار شرکتتان را که تحت داس بوده ارتقا دهید و به نسخه ویندوزی و یا حتی تحت وب تبدیل کنید؛ اول قدم تبدیل بانک اطلاعاتی(به احتمال زیاد فاکس‌پرو) به یکی از بانک‌های اطلاعاتی رایج خواهد بود؛ به احتمال زیاد برای انجام چنین کاری سراغ وب خواهید رفت و برای یافتن نرم‌افزار مبدل این کار، واژه‌های کلیدی foxpro database converter را گوگل خواهید کرد، جستجوی شما نتایجی زیادی به شما بر‌می‌گرداند. با کمک یکی از نرم‌افزارهایی که یافته‌اید(نظیر Full Convert Enterprise) اقدام به تبدیل بانک اطلاعتی مورد نظرتان می‌کنید اما با مراجعه به بانک اطلاعاتی جدید می‌بینید که داده‌های فارسی موجود پس از تبدیل به هم ریخته‌اند، در ابتدا شاید تصور کنید که مبدل مورد استفاده‌ی شما موجب خرابی داده‌های فارسی شده است و قصد امتحان مبدل دیگری کنید و یا اینکه مشکل به وجود آمده را در Encoding استفاده شده بدانید و اما در پایان درخواهید یافت مشکل با هیچ‌کدام از راه حل‌های شما حل نخواهد شد.

fox pro convert problems - 1

و اما علت چیست؟ باید بدانید در زمان متداول بودن استفاده از سیستم‌عامل داس هنوز استفاده از استانداردهایی به مانند Unicode رایج نشده بود تا بتوان با بکارگیری آن‌ها به زبان‌های مختلف بنویسند و داس نیز از کدهای اسکی(ASCII) تنها برای نمایش حروف الفبای لاتین، اعداد و کاراکترهای ویژه استفاده می‌کرد.

کدهای اسکی قابل چاپ

با این حال برنامه‌نویسان برای تایپ به زبان‌های دیگر نظیر فارسی در برنامه‌هایشان دست به دامن ابزارهایی می‌شدند، به طور مثال نرم‌افزار کم حجمی به نام (EGAF.COM) که با تبدیل(map کردن) کدهای اسکی غیرقابل چاپ به کاراکترهای فارسی، فارسی نوشتن را امکان پذیر کرده بود.
(یادآوری: اگر کاربر داس بوده‌اید شاید به خاطر بیاورید که قبل اجرای برنامه‌های فارسی EGAF را اجرا می‌کردیم)

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

و اما راه حل: در ادامه خواهید دید با تغییر کاراکترها با استفاده از یک برنامه ساده VBScript چگونه مشکل بوجود آمده را حل می‌کنیم.

راه حل قدم به قدم:

1- تهیه نسخه متنی از داده‌ها:
دستورات زیر را در محیط Command بانک اطلاعاتی فاکس‌پرو وارد نمایید:

USE ?
SET PRINTER ON
SET PRINTER TO “C:\DB.txt”
LIST TO PRINTER

(نکته: پس از وارد کردن خط اول لازم است بانک اطلاعاتی خود را انتخاب نمایید.)
با انجام صحیح دستورات بالا دیتابیس شما در یک فایل متنی با نام DB.txt در درایو C کامپیوترتان ذخیره می‌گردد.

2- باز کردن داده‌ها با استفاده از اکسل:
با استفاده از اکسل فایل متنی بالا را باز کنید، پنجره text import wizard باز می‌شود که بایستی از قسمت Original data Type آن گزینه Fixed width، از قسمت File Original گزینه Windows(ANSI) و از قسمت Start Import at Row مقدار یک (1) را وارد کنید.

3- ایجاد ماکرو مبدل:
با استفاده از نرم افزار Visual Basic Editor همراه نرم‌افزار آفیس ماکرو Convert را با کدهای زیر تولید کنید:

Sub convert()
Dim map(255) As Integer
Dim myString As String
Dim myChar As String * 1
For i = 0 To 255
map(i) = i
Next
map(128) = 48: map(129) = 49: map(130) = 50: map(131) = 51:
map(132) = 52: map(133) = 53: map(134) = 54: map(135) = 55:
map(136) = 56: map(137) = 57: map(138) = 161: map(139) = 45:
map(140) = 191: map(141) = 194: map(142) = 198: map(143) = 193:
map(144) = 199: map(145) = 199: map(146) = 200: map(147) = 200:
map(148) = 129: map(149) = 129: map(150) = 202: map(151) = 202:
map(152) = 203: map(153) = 203: map(154) = 204: map(155) = 204:
map(156) = 141: map(157) = 141: map(158) = 205: map(159) = 205:
map(160) = 206: map(161) = 206: map(162) = 207: map(163) = 208:
map(164) = 209: map(165) = 210: map(166) = 142: map(167) = 211:
map(168) = 211: map(169) = 212: map(170) = 212: map(171) = 213:
map(172) = 213: map(173) = 214: map(174) = 214: map(175) = 216:
map(224) = 217: map(225) = 218: map(226) = 218: map(227) = 218:
map(228) = 218: map(229) = 219: map(230) = 219: map(231) = 219:
map(232) = 219: map(233) = 221: map(234) = 221: map(235) = 222:
map(236) = 222: map(237) = 223: map(238) = 223: map(239) = 144:
map(240) = 144: map(241) = 225: map(243) = 225: map(244) = 227:
map(245) = 227: map(246) = 228: map(247) = 228: map(248) = 230:
map(249) = 229: map(250) = 229: map(251) = 229: map(252) = 237:
map(253) = 237: map(254) = 237:
For Each c In Selection
If c.Value <> "" Then
myString = c.Value
temp = ""
For i = Len(myString) To 1 Step -1
myChar = Chr(map(Asc(Mid(myString, i, 1))))
temp = temp + myChar
Next
c.FormulaR1C1 = temp
End If
Next
End Sub

4- اجرای ماکرو و تبدیل داده‌ها به فارسی:
ماکرو convert را بر روی فیلدهایی که داده‌هایی فارسی دارند، اعمال نمایید تا به فارسی تبدیل شوند.

بدین ترتیب داده‌های موجود در بانک اطلاعاتی شما به گونه‌ای در خواهد آمد که در محیط ویندوز نیز قابل مشاهده و استفاده گردد، حالا به راحتی می‌توانید فایل اکسل موجود را به اکسس و سپس با خیالی آسوده به دیتابیس‌های مورد نظرتان تبدیل نمائید.

پی‌نوشت: به کمک و یاری فروم پرشین تولز

#F زبان های #C و ویژوال بیسیک را ترکیب می کند

فرستاده شده: سپتامبر 12, 2008 توسط احسان شریعتی در برنامه نویسی
برچسب‌ها:, , ,

مایکروسافت تا سال آینده زبان برنامه نویسی همه منظوره جدیدش را با نام #F ارائه خواهد داد. #F دارای مزایای قابل توجهی در زمینه برنامه نویسی تابعی است.
Luke Hoban مدیر برنامه مایکروسافت که در کنفرانس VSLive نیویورک سخنرانی می کرد می گوید: #F یک زبان برنامه نویسی تابعی و وظیفه مند برای NET. است که هسته اصلی آن از ترکیب زبان های #C و ویژوال بیسیک تشکیل شده است و تحلیل و مدلینگ مالی، تحلیل داده های علمی، حل الگوریتم ها و محاسبات آکادمیک را پشتیبانی می کند.
لازم به ذکر است در برنامه نویسی تابعی، کار با توابع و حل آن ها از اهمیت بالایی برخوردار است و #F در با توابع به مانند کار با دیگر داده ها آسان می کند.
Hoban می گوید #F به هیچ وجه جایگیزینی برای #C و ویژوال بیسیک نخواهد بود و مایکروسافت با ارائه #F قصد دارد گروه جدید و متفاوتی از برنامه نویسان را برایNET. جذب کند.
منبع: eWeek
صفحه #F در سایت مایکروسافت