During learn and experience

۹ مطلب در شهریور ۱۳۹۴ ثبت شده است

شانس

این جمله درباره شانس خیلی درسته :"شانس همیشه سراغ آدم های آماده میره".

این جمله واقعا جای فکر داره. اینکه بعضی مواقع فکر می کنیم بدشانسیم. 

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

IntelliJ IDEA Community Edition بهترین IDE رایگان برای برنامه نویسی اسکالا

برای برنامه نویسی اسکالا IDE ها و Editor های زیادی وجود نداره ولی از بین Scala IDE، IntelliJ IDEA ، Atom و Emacs پیشنهاد من IntelliJ IDEA است. اگر هم اهل استفاده از نرم افزار های کرک شده نیستید IntelliJ IDEA Community Edition در زمینه برنامه نویسی اسکالا تمام قابلیت های نسخه Ultimate رو داره. تنها محدودیت IntelliJ IDEA Community Edition در پشتیبانی از Play Framework که فقط در نسخه Ultimate وجود داره.

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

کتاب نجات سرنگتی

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

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

 

  1. گوزن یالدار - تحمل پذیری
  2. شیر - تدبیر - استراتژی درست - برنامه ریزی و رسیدن به هدف
  3. کوروکودیل - فرصت طلبی
  4. یوزپلنگ - کارآمدی - تمرکز - کارآمدترین راه حل - استفاده بهینه از منابع
  5. زرافه - وقار - قدردان بودن - دلسوزی و خیرخواهی برای دیگران - احترام به دیگران
  6. میمون پوژه دراز - خطرپذیری - غلبه بر ترس - قبول ریسک تغییر
  7. فیل - برقراری ارتباط - گوش دادن به دیگران - انتقال درست پیام

نتیجه:

  • یک حیوان تو بیابان های سرنگتی فقط با یکی از این ۷ مهارت می تونه زنده بمونه و خوب زندگی کنه ولی ما آدم ها دنیایی ساختیم که باید هر ۷ مهارت رو داشته باشیم برای زندگی راحت! 
  • آدم از هر موجودی می تونه چیز یاد بگیره حتی حیوانات.
  • سفر به آفریقا (البته با یک تور حرفه ای) باید خیلی جذاب باشه.

 

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

یک راهنمای واقعا ساده برای کار با vi در لینوکس

تقریبا هیچوقت از vi خوشم نیومده و تا حد امکان از nano استفاده کرده ام ولی وقتی روی یک سرور گیر بیوفتی که روش فقط vi بعنوان text editor نصبه و به اینترنت هم وصل نیست باید حداقل دانش برای کار با vi رو داشته باشی.

 

وقتی یک فایل با vi باز میشه، vi در حالت Command قرار داره و نمی تونیم توش تایپ کنیم. در حالت Command می توانیم کار های زیر را انجام دهیم:

  • با استفاده از cursor درون فایل حرکت کنیم.
  • با فشردن کلید x ، کاراکتر زیر cursor را پاک کنیم.
  • با فشردن دوبار پشت سر هم کلید d یعنی dd ، خط جاری که cursor روی آن قرار دارد را پاک کنید.
  • برای کپی یا cut کردن یک متن، cursor را بر روی کاراکتر اول قسمتی ببرید که می خواهید کپی یا cut شروع شود سپس کلید v را بزنید و cursor را به کاراکتر انتهایی متن مورد نظر خود ببرید و در آنجا برای کپی کلید y و برای cut کردن کلید x را بزنید. برای paste کردن متن کپی شده در محل دلخواه، cursor را به آن محل ببرید و کلید p را بزنید.

برای تایپ درون فایل باید vi را به حالت Insert ببرید. برای این کار وقتی در حالت Command کلید i را بزنید. حالا می توانید درون فایل تایپ کنید. برای برای بازگشت به حالت Command دکمه escape را بزنید.

برای ذخیره تغییرات اعمال شده حتما باید در حالت Command باشید و قبل از تمام دستورات زیر کاراکتر : را نیز تایپ کرده باشید:

  • با تایپ دستور :w ، تغییرات فایل ذخیره می شود.
  • با تایپ دستور :q! ، بدون ذخیره تغییرات از برنامه خارج می شوید.
  • با تایپ دستور :wq ، بهمراه ذخیره تغییرات از برنامه خارج می شوید.

البته vi خیلی قابلیت های دیگه هم داره ولی برای کسایی که ازش متنفرن (مثل من) همین بالایی ها که گفتم برای رفع حاجت کفایت می کنه.

 

منبع

 

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

لذت بردن و پیروز بودن در زندگی با ساده زندگی کردن

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

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

دلایل کوچ به 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 کار کمی آسانتر می شود.
 
شاد باشید.
۱۷ شهریور ۹۴ ، ۱۰:۳۴ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام