During learn and experience

دلایل کوچ به blog.ir از بلاگر

پس از حدود هشت سال لذت بردن از سرویس بلاگ نویسی قدرتمند بلاگر، فکر می کنم یک جایگزین خوب برای اون پیدا کردم. شاید مهمترین دلیلم برای کوچ به blog.ir، فیلتر شدن بلاگر باشه ولی مطمئنا آشنا شدن با شرکت بیان (شرکت صاحب blog.ir) در سال ۹۲ در ضمن یک مصاحبه کاری و افتخار به وجود همچین شرکت قدرتمندی در ایران و همچنین درگیر شدن خودم با وب سایت های فارسی زبان بواسطه جواب یاب و مشاهده مظلوم بودن سرویس های فارسی زبان در بین فارسی زبانان!!! این حسو تو من تقویت کرد که پس از گذشت حدود ۵ سال از فیلتر شدن بلاگر، بخاطر سرویس با کیفیت شرکت بیان و حمایت از وب فارسی و زحمات شرکت بیان به blog.ir کوچ کنم.

یکی از مراحل لذتبخش کوچ به blog.ir وجود ابزار مهاجر بیان بود که به من اجازه داد تا مطالب ۸ سال گذشته وبلاگ سابقم در بلاگر رو به اینجا منتقل کنم. البته اینکه ابزار مهاجر بیان بر روی لینوکس هم اجرا می شد کلی به من حال داد (هر چند که کار نکرد و مجبور شدم از نسخه ویندوز استفاده کنم).

همانطور که می بینید در کل انتقال مطالب از بلاگر به blog.ir با موفقیت انجام شده ولی چند مشکل وجود داشت:

  • رابط کاربری ابزار مهاجر بیان بر روی لینوکس یک مشکل اساسی داره و اونم اینه که در زمان افزودن یک مهاجرت جدید کومبو انتخاب سرویس دهنده وبلاگ باز نمیشه!
  • در blog.ir حداکثر می توان ۲۰ موضوع داشت، در زمان import چون label های بلاگر به موضوع در blog.ir تبدیل می شوند وقتی تعداد ۲۰ موضوع پر می شود اگر مطلب بعدی label جدیدی داشته باشه ابزار مهاجر بیان اون رو import نمی کنه و خطا میده (بهتر بود import می کرد ولی اون رو بدون موضوع میکرد). برای همین من مجبور شدم import رو حدود ۱۵ بار تکرار کنم و هر بار موضوع هایی رو توی blog.ir پاک کنم تا فرآیند ادامه پیدا کنه!

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

۲۱ شهریور ۹۴ ، ۱۵:۰۶ ۲ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

در دسترس بودن مجدد فید سایت DZone و اعتراض محترمانه!

چند وقت پیش، فید سایت DZone از کار افتاده بود و در دسترس نبود. امروز توی inoreader دیدم که برای فید سایت DZone مطلب اومده و مثل اینکه دوباره در دسترس قرار گرفته.
حالا جدا از اینکه واقعا این اتفاق افتاده یا نه، یه دوستی می گفت یاد بگیریم موارد و شرایطی که ناراحتمون می کنه رو بصورت کاملا محترمانه به اطلاع دست اندر کاران او قضیه برسونیم شاید تاثیر بزاره و کمترین تاثیرش اینه که می فهمن تو از این وضعیت ناراضی هستی و منم با حرفش موافقم. روزی که فید DZone از دسترس خارج شد بعد زدن پست تو وبلاگم کار بعدیم این بود که یه ایمیل به تیم ساپورت DZone زدم و اعتراضمو مودبانه گفتم. حالا واقعا یعنی تاثیرم داشته !!!
۱۹ شهریور ۹۴ ، ۰۹:۲۲ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

گشتن دنبال ساعت در نوار بالای کتاب!

امروز کتاب می خوندم بصورت کاملا جدی داشتم تو نوار بالای کتاب دنبال ساعت میگشتم تا ببینم ساعت چنده!

۱۸ شهریور ۹۴ ، ۱۷:۴۳ ۰ نظر موافقین ۲ مخالفین ۰
سعید زرین فام

استفاده از Scala و pattern matching برای پردازش آرایه ای از بایت ها

برخی از سیستم ها بدلیل حجم بالای تراکنش  بمنظور کاهش حجم اطلاعات رد و بدل شده بین کلاینت و سرور، اطلاعات را در سطح بایت برای کلاینت های خود ارسال می کنند (آرایه ای از بایت)، یکی از سیستم های بورس کالای ایران با همین روش پیاده سازی شده است و تمام اطلاعاتی که بین کلاینت ها و این سیستم رد و بدل می شود در قالب آرایه ای از بایت ها است.
حالا پردازش در سطح بایت و پردازش ساختار packet های دریافتی کار دشواری است چون چند بایت اول هر packet مشخص می کند که نوع packet دریافتی چیست و باید چگونه با آن رفتار کرد. پیاده سازی همچین پارسری با Scala و قابلیت pattern matching آن خیلی ساده و لذت بخش است:
def receive = { 
  case Array( 23 , tail @ _*) => 
    log.info("received packet type 23") 
    parseType23(tail) 
  case _ => 
    log.info("Unknown packet") 
}
البته جزئیات و پیچیدگی های بسیار زیادی برای پیاده سازی اینگونه سیستم ها وجود دارد که خوشبختانه با امکانات زبان Scala و library های قدرتمند آن مثل Akka کار کمی آسانتر می شود.
 
شاد باشید.
۱۷ شهریور ۹۴ ، ۱۰:۳۴ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

حال من خوب است، اما تو باور نکن!

سلام، حال من خوب است،  اما تو باور نکن!

۲۸ مرداد ۹۴ ، ۲۰:۳۶ ۲ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

تولید سرویس REST با استفاده از Play Framework 2.4، Scala و ReactiveMongo

پروژه ReactiveMongo هنوز به نسخه ۱ نرسیده ولی کاملا آماده و قابل استفاده در پروژه های عملیاتیه. قبلنا مستندات سایت ReactiveMongo کامل نبود، البته نه که فکر کنید الان کامله ولی باز خیلی بهتر از قبله و قسمت مستندات سایتشو کلی کامل کردن. اما بازم وقتی یه تازه کار وارد اون قسمت میشه ممکنه یکم گیج بشه. من در اینگونه مواقع دنبال یه sample project می گردم.
یک پروژه درست کردم و توی github گذاشتم، این پروژه توضیحات مستند مربوط به Play2-ReactiveMongo سایت ReactiveMongo رو در قالب یک مثال قابل اجرا برای تولید سرویس REST آورده.

امیدوارم بدرد تازه کارها بخوره.

شاد باشید.

۲۵ مرداد ۹۴ ، ۱۰:۰۲ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

تفاوت روش های Table Per Class و Joined در نگاشت وراثت در JPA چیست؟

این سوال رو خیلی وقت پیش در جواب یاب پرسیده بودم تا سر فرصت بهش جواب بدم. کلا اگه performance برامون مهمه و قابلیت پلی مرفیسم در وراثت JPA برامون مهم نیست بدون شک روش  Table Per Class خیلی بهتره و فکر می کنم تنها مزیت روش Joined اینه که بصورت کامل از قابلیت پلی مرفیسم در وراثت JPA پشتیبانی می کنه.

پ.ن. مدت زیادیه چون اکثر یافته های فنی رو در قالب سوال و جواب در سایت جواب یاب مطرح می کنم، تو وبلاگم کمتر مطلب فنی می زنم برای همین تصمیم گرفتم بعضی از سوال و جواب هایی که خیلی خوشم اومدرو اینجا در قالب پست وبلاگ هم بزنم.
۱۷ مرداد ۹۴ ، ۱۴:۴۳ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

ارزش دوست داشتن واقعی

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

۰۹ مرداد ۹۴ ، ۱۷:۳۹ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

از کار افتادن فید سایت DZone

سایت DZone یکی از سایت های مورد علاقه من برای مطالعه اخبار و مطالب فنی در زمینه software development، ولی حدود ۲ یا ۳ هفته ای میشه که مثل اینکه فید (rss) سایتشون غیر فعال شده و من دیگه مطلبی از DZone در inoreader نمی بینم!!!
به سایت DZone هم سر زدم کلا مثل اینکه تغییرات زیادی کرده و کلا همه فید ها حذف شده. واقعا چرا؟
نمی دونم DZone برام انقدر با ارزش هست که بجای فید هر روز به سایتش سر بزنم؟
۳۱ تیر ۹۴ ، ۱۱:۴۷ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

بالا رفتن محبوبیت زبان برنامه نویسی اسکالا بخاطر Apache Spark

در بین ده ها زبان های برنامه نویسی که برای JVM وجود دارند، تا به حال فقط جاوا (بعنوان زبان برنامه نویسی پیشفرض بر روی JVM) محبوبیت فراوانی بین توسعه دهندگان نرم افزار بدست آورده است و طبق آمار های موجود محبوبترین زبان برنامه نویسی بین توسعه دهندگان است.
با وجود فریمورک هایی مثل Akka یا Play یا  Scalatra که با زبان برنامه نویسی اسکالا توسعه داده شده اند باز هم محبوبیت این زبان در سطح  بالایی نبود.

با حضو پروژه Apache Spark و در ادامه آن Apache Kafka که با زبان برنامه نویسی اسکالا پیاده سازی شده اند و محبوبیت شدید آنها در مباحث big data و cluster computing، محبوبیت زبان اسکالا نیز در حال بالا رفتن است. 

به نظر من Apache Spark باعث شده جنبه های برنامه نویسی functional اسکالا بیشتر مورد توجه قرار گیرد و اسکالا که به زبان بعدی بر روی JVM مشهور بود تبدیل به یک زبان برنامه نویسی مناسب functional برای مباحث big data, cluster computing و distributed system شود و یجورایی کم کم از زیر سایه JVM و زبان جاوا خارج بشود.
۲۳ تیر ۹۴ ، ۱۰:۰۲ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

خداحافظ توویتر

بالاخره این محدودیت ۱۴۰ کاراکتری توویتر و همچنین کم بودن تعداد دوستانی که اکانت توویتر دارند منو از توویتر فراری داد. یجورایی توویتر اصلا با صلایق من هم خونی نداره. متن های فوق کوتاهی که فقط یک وضعیت از نویسنده و یا خبر کوتاهی را اطلاع می دهند، اصلا به مزاج من سازگاری نداره.

۱۸ تیر ۹۴ ، ۱۸:۴۹ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

بازگشت

وقتی که میخای برگردی و تصمیمتو عوض کنی و چیزایی که خراب شدرو درست کنی، توقع نداشته باش ازت تشکر بشه بلکه حتی خودتو برای بازخواست شدن آماده کن. 
نباید به جنبه اینکه داری بر می گردی تا همه چیزو درست کنی فکر کنی بلکه باید به جنبه عوض کردن تصمیمت و چیزای خراب شده فکر کنی و خودتو برای همه چیز آماده کنی. 
۱۳ تیر ۹۴ ، ۰۸:۰۰ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

گفتگو با دل

به تو میگم که نشو دیوونه ای دل
به تو میگم که نگیر بهونه ای دل
من دیگه بچه نمیشم آه
دیگه بازیچه نمیشم

به تو میگم عاشقی ثمر نداره
واسه تو جز غم و درد سر نداره
من دیگه بچه نمیشم آه
دیگه بازیچه نمیشم

عقلم و زیر پا گذاشتی رفتی
تو منو مبتلا گذاشتی رفتی
به غم زمونه ای دل
منو واگذاشتی ای دل

به خدا منو رسوا کردی ای دل
همه جا مشتمو وا کردی ای دل
هرجا رفتی پا گذاشتی
فتنه برپا کردی ای دل

می دونم تو دیگه عاقل نمی شی
تو دیگه برای من دل نمیشی

من دیگه بچه نمیشم آه
دیگه بازیچه نمیشم

۰۴ تیر ۹۴ ، ۱۶:۵۷ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

نقش دروغین

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

 نزار قبانی
برگردان از عربی: آرش افشار
۱۸ خرداد ۹۴ ، ۰۷:۴۱ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

اگر مرا دوست نمی‌ داری

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

رسول یونان
۱۳ خرداد ۹۴ ، ۲۰:۴۴ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

هم صحبت و همراه

داشتن هم صحبت و همراه در هر برهه ای از زندگی برای من نعمت بزرگی بود چه در زمان تحصیل چه در محیط کار چه در زندگی شخصی.
نمی دونم درسته یا نه ولی من به اینکه هم صحبت و همراه بهتره مکمل آدم باشه اعتقاد ندارم و من دوست دارم هم صحبت و همراهم خیلی شبیه من باشه و جدیدا فهمیدم با آدم هایی که قبولشون دارم و از من قوی تر هستند خیلی بهتر هم صحبتی می کنم.
 همین.
۰۸ خرداد ۹۴ ، ۱۱:۱۸ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

اهمیت وجود مکانیزم اطلاع رسانی خطا در سمت سرور در توسعه 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 بسیار مناسب است.


پ.ن. آخیش چه کیفی میده محدودیت ۱۴۰ کاراکتریه توییتر وجود نداره. من توییتر باز خوبی نخواهم شد.
۲۷ ارديبهشت ۹۴ ، ۱۷:۱۶ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

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

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

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

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

۱۶ فروردين ۹۴ ، ۰۱:۲۴ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

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

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

۱۰ فروردين ۹۴ ، ۱۴:۲۴ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام