گیک فارسی

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

Same-Origin Policy به سبک فلش (Flash) و فلکس (Flex)

نویسنده:
20 نوامبر 14

خیلی مواقع پیش میاد که برنامه نویس یک برنامه را تولید میکنه و بعد از باگ گیری و کلی تست مطمئن میده دست مشتری. خیلی نمیگذره که مشتری تماس میگیره و میگه برنامه کار نمیکنه. برنامه نویس هم بعد بررسی مشکل مشتری متوجه میشه که طرف درست میگه !!! بلافاصله روی سیستم خودش چک میکنه و میبینه همه چیز خوب کار میکنه ! سیستم را عوض میکنه و به مشتری هم میگه روی یک سیستم دیگه چک کن. با بررسی روی سیستم دیگه متوجه میشه همه چیز درسته و مشکل از سیستم مشتری بوده. حالا جالبتر میشه اگه مشتری بگه روی هر سیستمی چک میکنه همین مشکل را داره.

برنامه نویس

برای من هم امروز همین مشکل پیش اومد. باید برنامه‌ای را با یک نرم‌افزار فلش هماهنگ میکردم که اطلاعات ورودیش را از پایگاه ما بخونه. خوب کار خاصی نبود و فوری کار ها انجام شد. اما با مشکلی که برای مشتری پیش اومده چه کنیم ؟ خوب باید سیستم مشتری را بررسی کنیم. پس با استفاده از Team Viewer از توی شرکت سیستم را بررسی میکنم و متوجه میشم برنامه Flash نمیتونه اطلاعات را از ورودی جدید بخونه !

تنها کاری که میشه کرد این هست که روی Firefox افزونه Live HTTP Headers را نصب کنم و ببینم اون پشت چه خبره. بعد از بررسی متوجه میشم که فلش درخواستی برای فایل crossdoman.xml توی ریشه سایت ارسال میکنه و چون چنین فایلی وجود نداره و وب سرور من داره خطای ۴۰۴ میده کلاً اطلاعات دریافتیش را بی خیال میشه. پس از کمی بررسی متوجه میشم که Flash هم برای بحث Same-Origin Policy بجای Header از یک فایل Xml استفاده میکنه.

پس از کمی بررسی توی سایت‌ ها به فرمت زیر میرسم :

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"http://www.adobe.com/xml/schemas/PolicyFile.xsd">
  <allow-access-from domain="domain.com" />
    <site-control permitted-cross-domain-policies="master-only"/>
  <allow-http-request-headers-from domain="*.domain.com" headers="*" secure="false"/>
</cross-domain-policy>

فایل را با نام crossdomain.xml ذخیره و توی ریشه سایت کپی میکنم و مشکل حل میشه.

البته داشتم گیج بازی در میاوردم ، چون فایل داره فقط به domain و subdmoain ها اجازه دسترسی میده و اصلاً من subdomain نداشتم. پس چرا باید اصلاً Cross Domain موضوعیت پیدا کنه ؟ پاسخ این بود که domain.com با www.domain.com فرق میکنه و من فلش را با www.domain.com صدا میزدم ولی فایل ورودی اطلاعات را با domain.com. عجیب اینجاست که یکسری از نسخه های فلش این crossdomain.xml را نیاز دارند و مثلاً نسخه ۱۰ و ۱۱ ی که من روی ubuntu داشتم چنین مشکلی نداشت ! البته شاید هم به خود مرورگر برگرده که بعیده !

مهاجرت به لینوکس | نرم‌افزار های مورد نیاز در توسعه وب

نویسنده:
24 جولای 14

پیرو نوشته‌ای که با عنوان «مهاجرت به لینوکس | نصب و راه اندازی سرویس های مورد نیاز یا همون LAMP» منتشر کردم. در پنجمین و آخرین پست از نرم‌افزار های مشترک و جایگزینی که برای توسعه وب میتونید استفاده کنید خواهم گفت و این بحث را به پایان میبرم.

حالا که اوبونتو را نصب کردیم و سرویس های مورد نیاز برای توسعه وب را راه اندازی و پیکربندی کردیم حالا نیاز داریم برای ساخت وب سایت از ابزار های گرافیکی و محیط توسعه و کدنویسی استفاده کنیم. توی محیط ویندوز قطعاً برای طراحی وب از ابزار Adobe Photoshop استفاده میکنیم که در محیط لینوکس به صورت Native نمیشه ازش استفاده کرد مگر اینکه از ابزار Wine استفاده کنید که اصلاً توصیه نمیکنم.(Wine برنامه ای هست که امکان اجرای نرم‌افزار های ویندوزی را در لینوکس فراهم میکنه) به جای Adobe Photoshop میتونید از Gimp استفاده کنید. گیمپ قطعاً در قامت فوتوشاپ نیست ولی برای طراحی صفحات وب هیچ کم و کسری نداره و حتی یکسری قابلیت‌هایی داره که حداقل من توی فوتوشاپ نمیدونستم که شاید دلیلش دم دستی تر بودن ابزار گیمپ باشه.

برای کدنویسی توی محیط ویندوز ابزار بسیار زیادی هست که اکثر برنامه نویسان وب از ++Notepad و Adobe Dream Weaver یا Zend Studio استفاده میکنند. از بین این سه محیط توسعه وب فقط Zend Studio برای لینوکس موجود هست و میشه ازش استفاده کرد. اما Zend کپی رایت داره و من حاضر نیستم به صورت کرک شده ازش استفاده کنم. من در ویندوز از DreamWeaver استفاده میکردم و ادیتور های خیلی ساده زیاد برام جالب نبودند. بالاخره بعد از بررسی های فراوان به این نتیجه رسیدم که Eclipse PDT (در‌ واقع Eclipse ی برای PHP پیکربندی و بهینه شده) بهترین انتخاب هست و واقعاً هم ازش راضی هستم. البته Eclipse برای Java کار ها هم محیط توسعه معروفی هست و توی ویندوز هم خیلی ازش استفاده میشه ولی تجربه من بر میگرده به اوبونتو که بسیار هم خوب و روان بود.

برای تست کردن هم که هم مرورگر Firefox و هم Chrome روی لینوکس موجود هستند ولی من ترجیح میدم از فایرفاکس استفاده کنم. برای کروم درگیری‌هایی با IP ایران وجود داره که من کلاً از خیرش گذشتم.

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

حل مشکل Floated Windows در Lazarus با محیط Unity

نویسنده:
7 جولای 14

دومین زبان برنامه نویسی که یاد گرفتم و باعث شد بر مشکلاتی که در تولید اولین نرم‌افزاری که می نوشتم غلبه کنم پاسکال بود. همین الان اگه کسی بپرسه چه زبان برنامه نویسی را دوست داری ؟ به طور خودکار و بدون حتی پلک زدن خواهم گفت پاسکال ! پاسکال Syntax و خوانایی بسیار زیادی داره و انعطاف و تواناییش برای کسانی که دوستش دارند پوشیده نیست.

لازاروس

من پاسکال را با Delphi یاد گرفتم. در‌ واقع Delphi یک IDE یا محیط توسعه سریعی هست که بر اساس Object Pascal توسعه پیدا کرده. طی چند سال اخیر فعالیت من تقریباً ۱۰۰٪ بر روی وب متمرکز بوده و جز یکی دو تا پروژه که با Delphi انجام دادم ، کمتر با پاسکال سر کار داشتم.

در حال حاضر دارم روی پروژه ای کار میکنم که بخش مهمی از اون باید به صورت Desktop پیاده‌سازی بشه و من به لینوکس مهاجرت کردم و اصلاً هم قصد ندارم بین ویندوز و لینوکس آواره باشم. دو تا انتخاب دارم : ۱ – برم زبان Python یاد بگیریم و بر اساس Qt نرم‌افزار را تولید کنم تا هم توی ویندوز و هم لینوکس بشه باهاش کار کرد ۲ – از Lazarus استفاده کنم که شعارش اینه : Code Once Compile Anywhere و یعنی یکبار کدنویسی کن و هر جا خواستی کامپایل کن. خوب یادگیری یک زبان و GUI دیگه زمان بیشتری میگیره و چون پاسکال هیچ‌وقت من را نا امید نکرده پس بهش اعتماد میکنم و با Lazarus که بر پایه Free Pascal هست کار را انجام میدم.

اما در اولین تجربه Lazarus روی Ubuntu و Unity متوجه میشم که حالت Floated Windows ی که Lazarus داره دردسر سازه و جابجایی بین پنجره ها کلافه میکنه. پس دنبال راهی میگردم که Lazarus به صورت پنجره های Dock یا چسبیده به هم بشه و همه چیز یک‌جا جمع بشه مثل Delphi 2009. نتیجه اینکه این کار شدنیه و باید پس از اجرای Lazarus به منوی Package > Install / Uninstall Packages بریم و AnchorDocking و AnchorDockingDsgn را نصب کنیم و دکمه Save And Rebuild IDE را بزنیم و منتظر بشم که Lazarus دوباره کامپایل بشه. پس از کامپایل و Restart شدن Lazarus حالت Docked Windows فعال میشه و پنجره ها در کنار هم Dock می‌شوند و به راحتی میشه توی Unity باهاشون کار کرد.

وقتی دارم این نوشته را مینویسم از Free Pacal 2.6.2 و Lazarus 1.0.8 استفاده میکنم.