گیک فارسی

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

رفع بسیاری از مشکلات مربوط به تفاوت‌های مرورگر ها در طراحی وب سایت

نویسنده:
۹ آذر ۹۳

یکی از اصلی‌ترین مشکلات و دردسر ها در طراحی وب سایت ، یکسان سازی نمایش وب سایت در مرورگر های مختلف است. جالب اینجاست که اکثر طراحان وب با خواندن مطلب تا به اینجا فوراً تفاوت‌های آشکار و غیر استاندارد IE (مخصوصاً نسخه های قدیمی تر از ۸) در ذهنشان نقش می‌گیرد. این در حالی است که حتی مرورگر های Firefox و Chrome نیز در خیلی از موارد تفاوت‌هایی را در نمایش المان‌های Html دارند.

این تفاوت‌ها از تنظیمات پیش فرضی ناشی می‌شود که تولید کنندگان آن‌ها برای محصول خود در نظر گرفته‌اند که مثلاً رنگ لینک ها در شرایط بازدید نشده و بازدید شده چه باشد و یا حاشیه های داخلی و بیرونی (Padding و Margin) برای المان هایی نظیر TD در TABLE و یا DIV یا LI و حتی خود BODY چه باشد. همین پیش‌فرض ها باعث می‌شود تا تغییراتی در اندازه و مکان المان های صفحه در هر مرورگر شاهد باشیم.

برای رفع این مشکل اصطلاحاً CSS را RESET میکنیم. مظنور از RESET کردن CSS این است که با کدهای CSS به عنوان اولین سند CSS در صفحه تمام این پیش‌فرض ها را خنثی کنیم. پس از خنثی شدن پیش‌فرض ها با وجود دستکاری های CSS بیشتری که متحمل می‌شویم در مقابل شاهد نمایش یکسانی از صفحه وب سایت خود در مرورگر های مختلف خواهیم بود.

یک نمونه کد CSS RESET که توسط Eric Meyer نوشته شده است :

html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td,article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary,time, mark, audio, video {        margin: 0;      padding: 0;     border: 0;      font-size: 100%;        font: inherit;  vertical-align: baseline;}/* HTML5 display-role reset for older browsers */article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {    display: block;}body {  line-height: 1;}ol, ul {        list-style: none;}blockquote, q {       quotes: none;}blockquote:before, blockquote:after,q:before, q:after {   content: '';    content: none;}table {  border-collapse: collapse;      border-spacing: 0;}

کدهای نمونه دیگری هم در سایت cssreset.com موجود است.

خدمات SSL (گواهینامه دیجیتال) رایگان برای همه

نویسنده:
۴ آذر ۹۳

امروز که در حال وب گردی بودم به یک موضوع خیلی هیجان انگیز برخوردم. همونطور که حتماً میدونید در دنیای وب برای امن کردن رد و بدل شدن اطلاعات از SSL استفاده میشه. این SSL ها از طریق CA ها یا همون Certificate Authority ها به درخواست کنندگان ارائه میشه و CA ها با توجه به خدماتی که برای هر نوع SSL ارائه میدهند هزینه‌های متفاوتی می گیرین. از جمله این CA ها میشه به RapidSSL , COMODO , GeoTRUST و غیره … اشاره کرد.

علاوه بر هزینه ساالانه که باید پرداخت بشه کلی دنگ و فنگ برای ثبت نام و دریافت این Certificate ها وجود داره (حالا برای ما ایرانی‌ها هم که مشکلات کم نیست و مثلاً به دامنه های IR تا لحظه‌ای که من این مطلب را مینویسم اصلاً SSL نمیدهند). علاوه بر اون ، نصب و اعتبار سنجی و … هم کار هر کسی نیست و یک متخصص سرور باید این کار را انجام بده.

حالا موضوع هیجان انگیز اینجاست که ISRG یا همون «گروه تحقیقات امنیت اینترنت» با پشتیبانی مؤسسات و شرکت های بزرگی همچون Mozilla , Akamai , Cisco و چند مجموعه دیگه تصمیم به ارائه یک Certificate کاملاً رایگان با نام Let’s Encrypt گرفتند که علاوه بر رایگان بودن به راحتی هم قابل نصب هست و مثلاً توی دبیان با همین دو خط کد کار تموم میشه :

sudo apt-get install lets-encrypt
lets-encrypt example.com

این CA جدید به ما ایرانی‌ها (منظورم صاحبان دامنه های IR هستش) و کسانی که نمیتونند به هر دلیلی از CA های فعلی استفاده کنند امکان ایجاد امنیت برای وب سایت‌ها و وبلاگ ها را ارائه میده. این سرویس قراره که تابستان ۲۰۱۵ ارائه بشه و باید کمی صبور باشیم.

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

نویسنده:
۲۹ آبان ۹۳

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

برنامه نویس

برای من هم امروز همین مشکل پیش اومد. باید برنامه‌ای را با یک نرم‌افزار فلش هماهنگ میکردم که اطلاعات ورودیش را از پایگاه ما بخونه. خوب کار خاصی نبود و فوری کار ها انجام شد. اما با مشکلی که برای مشتری پیش اومده چه کنیم ؟ خوب باید سیستم مشتری را بررسی کنیم. پس با استفاده از 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 داشتم چنین مشکلی نداشت ! البته شاید هم به خود مرورگر برگرده که بعیده !

برد ایران مقابل کره جنوبی در دیدار دوستانه

نویسنده:
۲۷ آبان ۹۳

امروز ، سه شنبه ۲۷ آبان روز خوبی از نظر نتیجه برای ایران بود ، موفق شدیم برای سومین بار پیاپی تیم ملی کره جنوبی را شکست بدیم. این نتیجه خوبیه اما یک نکته‌ای داره ،‌ توی خبرگزار یها که خبرها را میخوندم و نظر مردم در مورد بازی و مخصوصاً کسانی که طرفداری میکردند از این تیم ملی ایران و کیروش ، همشون روی یک موضوع اتفاق نظر دارند که کیروش باعث این پیروزی های اخیر بوده و ما با هیچ مربی دیگری نمیتونیم سه بار پشت سر هم کره را ببریم و تیم خوبه. متأسفانه مخالفان کیروش و تیم ملی در حال حاضر بجای اینکه پاسخ درستی به این افراد بدهند ، نتیجه‌گیری های اخیر را شانسی میدونند.

ایران-کره دوستانه ۲۰۱۴

من بر خلاف اونها این نتیجه‌گیری ها را شانسی نمیدونم. دو عامل مهم تأثیر داره. اولاً کره توی این سه بازی اخیر که با کیروش بوده اصلاً تیم خوب و سر حالی نداشته. کره در سال‌های گذشته بسیار تیم بهتر و فنی تر و هماهنگ تری داشت. این را نتایج گرفته شده در جام جهانی ۲۰۱۴ در مقایسه با مثلاً ۲۰۱۰ و ۲۰۰۶ به خوبی نشون میده. ما در مقابل کره غیر از اون برد تاریخی ۴ بر ۳ نتیجه‌ای جز شکست و مساوی نمیگرفتیم. البته اکثر شکست ها در ضربات پنالتی بوده. پس اولین دلیل این هست که این کره همون تیم سال‌های گذشته نیست حتی با وجود بازیکنان لژیونری که داره. این بازیکنان لژیونر خوب هستند اما با هم هماهنگ نیستند.

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

امروز دوباره شاهد بکارگیری بازیکنانی بودیم که اصلاً خوب بازی نمیکردند. شجاعی قطعاً لیاقت پوشیدن پیراهن تیم ملی را نداره و از تک تک رقبایش در تیم ملی ضعیفتره. نکونام غیر از تجربه و کیفیت بازیش در ضربات ایستگاهی (هم هد زدن و هم کاشته) به شدت افت کرده و اصلاً بازی سازی نمیکنه و خیلی جا میمونه و اشتباه داره ! آندو هم خیلی خیلی افت کرده و انگار با زدن مو های سرش ، قدرتش را از دست داده. در مورد حقیقی (دروازه بان) هم بالاخره یک جایی مشخص میشه واقعاً لیاقت تیم ملی را نداره اما فعلاً که روی دور هست و نمیشه ازش انتقاد کرد.

من کلاً به این تیم ملی و سبک بازیش امیدی ندارم و اگه کیروش بخواد با همین نفرات نیمه اول و همین استراتژی بازی توی جام ملت‌های امسال حاضر بشه ، از همین حالا فاتحه این جام را باید خوند.

خلاص شدن از شر تبلیغات پیامکی مزاحم یا همون اسپم

نویسنده:
۱۳ آبان ۹۳

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

پیامک اسپم تبلیغاتی

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

البته در حال حاضر میشه از اپراتور خودمون با ارسال دستور یا پیامکی بخواهیم که این تبلیغات برای ما نیاد و من از همون یک سال و خورده‌ای پیش این کار را انجام دادم اما سه تا مشکل وجود داره :
یکی اینکه با وجود درخواست من بابت دریافت نکردن هرگونه پیامک تبلیغاتی باز هم انواعی از این پیامک ها از طرف خود اپراتور (مثل همراه بهاری و این مزخرفات) ارسال میشه یا مثلاً برنامه نود با وجود اینکه پیش شماره ۲۰۰۰ داره باز هم پیامک هاش دریافت میشه (البته این خوبه ها ;)).

دوم اینکه این جلوگیری فقط در مورد پیش شماره های مربوط به ارائه دهندگان خدمات پیامک انبوه مثل ۱۰۰۰ و ۲۰۰۰ و ۳۰۰۰ هستش و مثلاً اگه کسی با یک خط معمولی اقدام به ارسال پیامک انبوه کنه اپراتور نمیتونه تشخیص بده که داره اسپم ارسال میشه.

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

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

با کمی جستجو به خواسته مورد نظر میرسیم که خوب اولین پیشنهاد چون پولی بودش و من نرم‌افزار رایگان میخواستم یعنی GoSMSPro از انتخاب ها خارج میشه و میرم سراغ پیشنهاد بعدی یعنی Textra SMS که این قابلیت Block کردن یا لیست سیاه کردن را به تازگی اضافه کرده و چون بعد از نصب ، رضایت نسبی حاصل میشه از نصب و بررسی Chomp SMS و Handcent SMS و چند تا برنامه دیگه منصرف میشم.

کار با Textra SMS خیلی راحته و کافیه انگشتم را روی پیامکی که دیگه نمیخوام از فرستندش پیام بگیرم نگه دارم و از منو Options گزینه Block یا Add to blacklist را انتخاب کنم. اینطوری هر پیامک دیگه ای که از این فرستنده بیاد فوراً حذف میشه و اصلاً گوشی به من اطلاع نمیده. هر زمانی هم خواستم نظرم را عوض کنم در قسمت Settings میتونم شماره را از لیست سیاه حذف کنم.

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