۱۳۹۴-۰۲-۲۷

اهمیت وجود مکانیزم اطلاع رسانی خطا در سمت سرور در توسعه back end

در برنامه نویسی کلاینت سرور که امروز با نام front end و back end نیز شناخته می شود، حتما باید در سمت سرور مکانیزمی برای اطلاع رسانی خطا های احتمالی در سمت سرور به کلاینت باشد. چون معمولا در این مدل تولید سیستم، توسعه دهندگان سمت سرور جدا از توسعه دهندگان سمت کلاینت کار می کنند و حتی در بسیاری از موارد در دو سازمان یا شرکت مختلف هستند و یا معمولا توسعه back end زودتر از توسعه کلاینت ها آغاز می شود و ...
حال فرض کنید توسعه دهندگان back end هیچ گونه مکانیزم اطلاع رسانی خطا طراحی نکرده باشند، یعنی وقتی به هر دلیلی یک در خواست کلاینت در سمت back end منجر به خطا می شود، هیچ عکس العملی یا پاسخی از سمت سرور به کلاینت ارسال نشود. حالا بیچاره توسعه دهندگان کلاینت که باید با کلی تماس و ارتباط برقرار کردن با توسعه دهندگان back end و در بعضی از مواقع گشتن در لاگ های back end متوجه بشوند که مشکل کجاست.
در ساده ترین حالت ارسال یکسری error code برای مثال در قالب JSON می تواند خیلی مشکلات را حل کند و در بالاترین سطح ارائه یک مستند کامل که در آن تمام error code ها و دلیل بوجود آمدن آنها توضیح داده شده است خیلی خوب است.
اینکه توسعه دهنده back end بتواند تمام حالات خطا را تحت کنترل داشته باشد و برای آنها error code های مناسب تولید کند نیز کار دشواری است و نیاز به دقت زیادی در زمان برنامه نویسی قسمت های مختلف back end دارد، رعایت نکات ساده ای مثل مدیریت exception ها و کد نویسی safe برای رسیدن به همچین سطحی در توسعه back end بسیار مناسب است.


پ.ن. آخیش چه کیفی میده محدودیت ۱۴۰ کاراکتریه توییتر وجود نداره. من توییتر باز خوبی نخواهم شد.

۱۳۹۴-۰۲-۲۱

من و ThinkPad W530 و اوبونتو 14.04

بالاخره تصمیم نهاییم رو گرفتم و وزن، عمر باتری، پایداری سیستم عامل و ... (مک بوک و OS X) رو فدای قدرت بالای پردازش و آزادی (ThinkPad W530 و اوبونتو 14.04) کردم!
اولین کاری که کردم هارد SSD با ظرفیت 256 گیگابایت براش خریدم و در قدم بعد هم دو تا ماژول رم 8 گیگابایت براش خریدم تا مجموع رم بشه 24 گیگابایت.
Intel® Core™ i7-3740QM خیلی قویه و در بنچمارک ها نمره خوبی گرفته. یه کارت گرافیکی Quadro K1000M هم روش بود که قدرش زیاد نیست (به نسبت کارت گرافیکی های شاخ بازار) ولی برای من همش شده دردسر تو اوبونتو.

اما از نصب اوبونتو بگم که بصورت عجیبی همه چیز (بغیر کارت گرافیکی) بعد از نصب ابونتو کار می کرد، حتی وبکم! یا function key ها و ... کارت گرافیکی هم با استفاده از ابزار Additionals Driver اوبونتو نصب شد و کار افتاد.
دو مشکل اساسی با کارت گرافیکی داشتم یکی اینکه بعد از آپدیت کرنل، بصورت خودکار درایور کارت گرافیکی nvidia از کار می افته و اوبونتو از کارت گرافیکی CPU استفاده می کنه دیگری اینکه چون این کارت گرافیکی Quadro K1000M از تکنولوژی Nvidia Optimus استفاده می کنه در زمان اتصال ویدئو پروژکتور به پورت VGA کلا هیج اتفاق خاصی نمی افته !!! و ویدئو پروژکتور شناخته نمیشه. البته در حقیقت مشکل از اوبونتو که در این حالت از کارت گرافیکی CPU به nvidia سوویچ نمی کنه.

فعلا برای حل این دو مشکل اول اینکه درایور رسمی nvidia رو نصب کردم (بجای نصب از ریپوزیتوری های اوبونتو) و کرنل هم آپدیت نمی کنم (البته فعلا) و دوم اینکه ThinkPad W530 در BIOS قابلیتی داره که میشه گفت کلا تکنولوژی Nvidia Optimus غیر فعال بشه (Discrete Graphics) و سیستم فقط از کارت گرافیکی nvidia استفاده کنه.

شاد باشید.

۱۳۹۴-۰۲-۰۱

اپرا برنده جنگ مرورگر ها در لپ تاپ من

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

۱۳۹۴-۰۱-۱۸

توشتن متن های کوتاه (Tweet) در توییتر

حدود ۹ ساله اینجا تو بلاگر پست می زنم اما جدیدا علاقه پیدا کردم  متن های کوتاه (Tweet) در توییتر میزارم. با خودم فکر می کردم نکنه به مرور پست زدن تو بلاگر بره تو حاشیه ولی بعید می دونم چون وبلاگ عزیزم هنوز برای متن های بلند بالا (یا حداقل بیشتر از ۱۴۰ کاراکتر) جاش محفوظه ولی توییتر هم دنیای خودشو داره و نوشتن  متن های کوتاه (Tweet) خیلی برام لذت بخشه.

۱۳۹۴-۰۱-۱۶

اولین تجربه اندروید ۵

بالاخره نوبت ایران شد و سونی آپدیت اندروید ۵ برای xperia z3 compact رو داد.
بهبود سرعت و روانتر شدن کار با گوشی بخاطر ART کاملا محسوسه و کمی هم user friendly تر شده.

۱۳۹۴-۰۱-۱۳

اینستاگرام، تفریح جدید با عکاسی

همیشه به عکاسی علاقه داشتم ولی در همون سطح آماتور. اینستاگرام بهونه ای شده برای لذت بردن بیشتر از این علاقه.

۱۳۹۴-۰۱-۱۰

نگذار ظاهر زندگی کسی بر روی باطن زندگی تو تاثیر بگذارد

عجب جمله ایه این جمله:
نگذار ظاهر زندگی دیگران بر روی باطن زندگی تو تاثیر بگذارد.

۱۳۹۴-۰۱-۰۱

یک سال جدید

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

شاد باشید.

۱۳۹۳-۱۲-۲۴

ممنون ایرانسل

خیلی ساله فقط یک سیم کارت دارم و اونم ایرانسله. سال های اول که خیلی راضی بودم  ، اینترنت edge پر سرعتی داشت. این اواخر همش از کیفیت سرویساش کم میشد. اما امروز برای اولین بار (پس از گرفتن سیم کارت lte) مجبور شدم حدود ۲ ساعت از اینترنت ایرانسل رو گوشیم استفاده کنم. به نسبت همین چند ماه پیش خیلی سرعت بهتر بود و واقعا لذت بردم.
منتظر اینم ببنیم سرعت تو چالوس چطور شده. آخه مثل اینکه استان مازندران هم تحت پوشش lte رفته.

۱۳۹۳-۱۲-۲۳

وقتی می خواهی به هر قیمتی رتبه سایتت را بالا ببری

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

۱۳۹۳-۱۲-۱۵

وقتی فکر تموم شدن باتری موبایل از ذهنت خارج میشه

آخرین باری که دغدغه باتری موبایل نداشتم بر میگرده به زمانی که smart phone نداشتم. اما xperia z3 compact دوباره منو به همون روزا برده. با وجود استفاده از اینترنت lte و wifi, عکاسی فراوان، خواندن کتاب و ... این کوچولوی کم مصرف ۳ تا ۵ روز باتری نگه می داره که برای یک گوشی هوشمند عالیه.

۱۳۹۳-۱۲-۰۲

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

اولین بار سال ۸۵ بود که در جلسه انجمن کاربران جاوا ایران شرکت کردم. یادش بخیر خانه هنرمندان برگزار می شد و وقتی رسیدم انقدر شلوغ بود و جا نبود که مجبور شدم ته سالن ایستاده سمینارو ببینم. یه ورقه گرفته بودم دستم و عنوان های نا آشنایی که سخنرانان به زبان می آوردند رو پشت سر هم می نوشتم (aspect oriented , portlet و ...) و همونا بعدا می شد خوراک مطالعاتیم.
جلسه اسفند ماه انجمن کاربران جاوا ایران پس فردا برگزار میشه و من افتخار دارم برای دومین بار سخنران باشم. مطمئنم با حضور علاقه مندان و سخنرانان خوب، جلسه خوبی خواهیم داشت.

۱۳۹۳-۱۱-۲۵

گزینه های گوگل برای مدرن سازی برنامه نوسی اندروید

با توجه به موقعیت شغلیم، چند وقتیه درگیر برنامه نوسی برای سیستم عامل iOS شدم. کاری که با وجود داشتن MacBook همیشه ازش ترس داشتم. دلیل اصلی این ترس زبان برنامه نوسی objective-c بود که با سینتکس وحشتناکش همیشه منو از این کار منصرف می کرد.
مثل اینکه شرکت اپل ترس من امثال منو درک کرد و پس از مدت ها یک زبان برنامه نویسی رسمی جایگزین برای برنامه نویسی سیستم عامل iOS عرضه کرد. اپل اعلام کرده، Swift یک زبان برنامه نویسی مدرن است که برنامه نوسی رو راحت تر می کنه. Swift یک زبان برنامه نویسی استاتیک و hybrid است (functional و Object oriented) که بسیاری از قابلیت های خودشو از Scala ارث برده و از نظر سینتکس خیلی به Scala شبیه است.
اما رقیب اصلی اپل در دنیای موبایل یعنی گوگل خیلی زودتر از این‌ها در این فکر بوده و از همان ابتدای کار زبان برنامه نویسی جاوا که بسیار مدرن تر و فراگیرتر از objective-c بود را انتخاب کردحالا پس از این تصمیم اپل که با استقبال توسعه دهندگان هم روبرو شده، به نظر میرسه گوگل هم باید به فکر مدرن سازی بیشتر برنامه نویسی اندروید باشه. درسته که زبان برنامه نویسی جاوا به نسبت objective-c خیلی مدرن تره ولی به اندازه Swift مدرن نیست. مطالب و پست های زیادی تو وب وجود دارن که از جاوا بخاطر طول و دراز بودن سینتکسش (verbose) و یا پشتیبانی نکردن از قابلیت‌های Functional (تا قبل از جاوا 8) و ... انتفاد می کنند. به نظر من و با توجه به هزینه معرفی یک زبان جدید و همچنین استقبال توسعه دهندگان، گوگل گزینه های زیر رو پیشرو داره:



1- جاوا 8: با توجه به اینکه سینتکس جاوا استفاده شده در اندروید در حال حاضر جاوا 6 رو پشتیبانی می‌کند و جاوا تا قبل از عرضه نسخه 8 یک زبان برنامه نویسی Object Oriented بود. بروزرسانی سینتکس جاوا استفاده شده در اندروید از 6 به 8، علاوه بر اینکه قابلیت‌های Functional به پلتفرم اندروید اضاقه می کند، این مزیت رو برای گوگل داره که نیازی نیست زبان برنامه نویسی جدیدی را ترویج کند و همچنین از نظر پیاده‌سازی هم فقط باید سینتکس جدید را به ابزار های خود اضافه کند که به نسبت معرفی یک زبان برنامه نویسی جدید کار بسیار ساده‌تری است.

2- Groovy: در گذشته گوگل با انتخاب gradle بعنوان اتوماسیون build جدید اندروید (جایگزین apache ant) نشان داده که به groovy اعتماد دارد. از طرف دیگر در حال حاضر امکان تولید برنامه اندروید با groovy وجود دارد و تیم groovy هم اعلام کرده از نسخه 2.4 (نسخه در حال توسعه بعدی) بصورت رسمی این امکان در Groovy SDK اضافه می شود. Groovy یک زبان برنامه نویسی داینامیک و اسکریپتی است و بسیاری از قابلیت‌های خود را از Python و Ruby به ارث برده است و integration خوبی با جاوا و JVM دارد. این موارد groovy رو به محتمل ترین و کم هزینه ترین گزینه بعد از جاوا 8 تبدیل می‌کند ولی شاید داینامیک بودن این زبان در انتخاب نشدنش تأثیر داشته باشد.

3- اسکالا: اسکالا یک زبان برنامه نویسی استاتیک ( static type system) و Hybrid مثل Swift است. در حال حاضر بصورت غیر رسمی امکان برنامه نویسی برای اندروید با اسکالا با استفاده از پروژه Scaloid وجود دارد و با در نظر گرفتن اینکه این زبان برنامه نویسی برای برنامه نویسی بر روی JVM است و سازگاری خوبی با جاوا و JVM دارد می‌تواند گزینه مناسبی برای گوگل می باشد.

4- Dart: این زبان برنامه نویسی برای برنامه نویسی وب و با هدف جایگزینی آن با جاوااسکریپت توسط شرکت گوگل عرضه شده است با توجه به سرمایه‌گذاری گوگل بر روی این زبان برنامه نویسی، این زبان هم می‌تواند گزینه خوبی برای جایگزینی با جاوا در اندروید باشد ولی ریسک تازه کار بودن این زبان و همچنین وفق دادن آن با اکوسیستم جاوا می‌تواند قابل توچه باشد.

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


۱۳۹۳-۱۱-۱۸

گوشی کوچولوی دوست داشتنیه من

امسال سومین گوشیه که عوض کردم. اول گلکسی نوت ٣ بود که عید خریدم و واقعا گوشیه خوبیه. قلمش که فوق العادس، رم کافی و ...
دومی اکسپریا z2 بود که اونم به نسبت قیمتش عالیه. بدنه ضد آب، رم کافی، بدنه فلزی شیشه ای و ...
اما آخریش همین کوچولوی دوست داشتنیمه که دارم باهاش پست میزنم. اکسپریا z3 کامپکت. هم سایز گلسکسی s2 که حدود دو سال داشتمش. اما خوبیای این گوشی:
اول اینکه با یک دست براحتی میشه باهاش کار کرد. باتری گوشی فوق العادس. cpu عالی. دوربین عالی. بدنه ضد آب . صفحه نمایش عالی و ...

اولین تجربه من از اینترنت LTE

رفتم طبقه دوم پاساژ علاالدین دفتر ایرانسل و با هزینه ۱۰ هزار تومان سیم کارتمو عوض کردم و سیم کارت LTE گرفتم.
تو خیابون که تستش کردم سرعت حدود 17 Mbps یا 2100 kB/s بهم داد. البته از دوستان شنیدم که سرعتش از این هم بیشتره.

۱۳۹۳-۱۱-۰۹

جنگ مرورگر ها بر روی لپ تاپ من

روی لپ تاپ من حدودا ۶ تا browser نصبه! ولی هیچ کدومش کاملا نیازهامو برطرف نمی کنه. بنابراین برای هر کاری از یکیشون استفاده می کنم.
وقتی لپ تاپ تو برقه گزینه اول Google Chrome چون تقریبا همه چیز هایی که میخامو داره و تنها مشکلاتش مصرف زیاد باتری و نداشتن یک download manager درست حسابیه.
هر وقت که کار دانلود دارم بخصوص اگه با فیلتر شکن باشه از فایرفاکس و پلاگین DownThemAll استفاده می کنم.
وقتایی که دارم رو باتری کار می کنم از safari استفاده می کنم چون تو تو OS X مصرف باتری Safari فوق العاده پایینه ولی کلی از امکاناتی که من می خوامو نداره، ست کردن socks proxy فقط بر روی مرورگر مهمترینشه.
Opera, Maxthon و Vivaldi که جدیدا اومده هم که کلا رفتن کنار تو جنگ شکست خوردن.

۱۳۹۳-۱۰-۲۴

تجربه استفاده از Yosemite

بخاطر شروع شدن اولین پروژه iOS عمرم! مجبور شدم فعلا برگردم رو Mac OS X. البته اولین کاری که کردم آپدیت سیستم به Yosemite بود.
تا الان Yosemite رو بهتر از Mavericks دیدم. هم performance سیستم بهتره و هم Ram کمتری مصرف می کنه. البته هنوز به پای Ubuntu نمی رسه.

۱۳۹۳-۱۰-۲۱

تفاوت توسعه محصول نرم افزاری در برابر پروژه نرم افزاری

اوایل ZeroTurnaround رو فقط از محصول پر سرو صداش JRebel می شناختم (که البته هیچ وقت قسمت نشد باهاش کار کنم!) ولی از وقتی فید مطالب و مقلاتشون رو هم می خونم خیلی بیشتر ازشون خوشم اومده.
مطلبی که درباره تفاوت توسعه محصول نرم افزاری در برابر پروژه نرم افزاری نوشته بودن واقعا عالی و آموزنده بود. در مورد اینکه وقتی داری برای یک مشتری یک پروژه خاص رو توسعه می دهی باید بر روی چه چیز هایی تمرکز داشته باشی و به چه چیز هایی بهای بیشتری بدهی و وقتی داری یک محصول نرم افزاری توسعه می دهی به چه چیز هایی باید دقت بکنی.

شاد باشید.

۱۳۹۳-۱۰-۱۴

خروج از تمام گروه های وایبر

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

۱۳۹۳-۱۰-۰۹

سال 2014

سال ۲۰۱۴ داره تموم میشه حیفه دربارش چیزی ننویسم:
  • تجربه کار در ۳ شرکت (چقدر شرکت عوض کردما).
  • سال ورودم به دنیای تولید برنامه های اندروید.
  • سال اشتباه های بزرگ و تصمیم های بزرگ.
  • رشد جواب یاب.
  • ورود به دنیای Scala و Play Framework.
  • سال Macbook Pro.
  • تعویض گوشی.
  • تعویض منزل.
  • سال سوءتفاهم ها.
  • ...
از سال ۲۰۱۰ تا الان هیچ سالی نبوده که بیشتر از ۴۵ پست تو یک سال داشته باشم (یادش بخیر)، اما امسال نزدیک ۵۰ تا پست داشتم.