رضا سامعی

دفتر من ..... کشکول من، قیل و قال‌های من، پرت و پلاهای من

۹ مطلب با موضوع «قیل و قال» ثبت شده است

بعد از این همه وقت

سلام؛ ... به نظر میرسه این وبلاگ یک گردگیری حسابی می‌خواهد (^_^)

توی این مدت مدیدی که نبودم کلی مطلب برای گذاشتن داشتم که هیچ وقت حوصله‌ای برای این کار به خرج ندادم ( مایه‌ی شرمندگی )؛ اما امروز به مناسبت عید نیمه‌ی شعبان  قصد کردم مطلب مختصری بگذارم:


۱- طی ماه‌های گذشته ۲ مقاله برای مجله‌ی سلام دنیا نوشتم: مقاله‌ی اول  «معرفی زبان برنامه نویسی» را که در رابطه با Scala بود را با کمک آقای کریمی انجام دادم؛ در مقاله‌ی دوم «فناوری زیر ذره‌بین رادار» هم به معرفی گزارش Radar پرداختم.


۲- قبل‌تر ها لینک‌هایی را با عنوان «خواندنی» در وبلاگم می‌گذاشتم؛ لینک‌هایی به  مقالاتی که از خواندنشان چیزی یاد گرفته بودم و یا اینکه از مطالعه‌اش لذت برده بودم ( یا اینکه کلا چیز‌های جالبی بودند ). حالا باز هم میخواهم این کار را از سر بگیرم:


  • CAP Twelve Years Later: How the "Rules" Have Changed : این مقاله برای برای سال ۲۰۱۲ هست؛ تقریبا ۱۲ سال بعد از معرفی تئوری CAP. این مقاله توسط Eric Brewer کسی که برای اولین بار  مفهوم CAP و قانون «۲ تا از ۳» را برای سیستم‌های توزیع‌شده ( عموما داده محور ) مطرح کرده بود، نوشته شده است؛ در این مقاله نگاهی به راه‌ی که به مدت ۱۲ سال طی شده ‌می‌اندازد و سعی می‌کند آن مفهوم CAP را با کمی اصلاحات کامل‌تر کند.
  • Glances - An eye on your system : گاهی نیاز می‌شود که پارمتر‌های متفاوتی از سیستم را یکجا مانیتور کنیم؛ ابزاری‌های زیادی مثل top, htop, iotop, sysstat, ... وجود دارند که اجرای آنها به صورت جداگانه چندان راحت به نظر نمیرسد. Glances تمام آمارهای لازمه از سیستم را یکجا به شما در ترمینال یا مرورگر وب‌تان نشان می‌دهد. البته فکر میکنم بهترین ویژگی‌اش اینکه است مهمترین تغییرات  را در مصرف منابع به صورت ویژه‌ای log می‌کند که باعث می‌شود مجبور نباشید در یک لحظه به چند‌ جای متفاوت مانیتور نگاه کنید و گیج بشوید‌! (  برای نسخه‌های متفاوت لینوکس (Debian, Fedora , ...) و FreeBSD از مخازن  استاندارد قابل نصب است )
  • Evolution Vs. God : فکر نمی‌کنم نیازی به توضیح باشد. چیزی که در این بین برای من واقعا جالب است، واکنش‌های «غیر علمی و منطقی‌ای» بود طرفداران این «تئوری هرگز اثبات نشده»  اتخاذ می‌کنند و ازش دفاع می‌کنند؛ بدون حتی یک دلیل یا نشانه‌ای عقلانی یا حداقل قابل تأمل. واقعا جالبه؛ انسانی که حتی نمی‌تواند «هیچ مطلق» و «عدم» را تصور کند، چطور ادعا می‌کند همه چیز از انفجار «هیچ چیز» بوجود آمده است! می‌توانید برای اطلاعات بیشتر نقد‌هایی که به این فیلم گرفته شده است را با یک جستجو پیدا کنید... جز طناب پوسیده‌شان چیز برای گفتن ندارند.


و اما خواندنی تر از همه: بیانات آیت الله العظمی حسین وحید خراسانی به مناسب نیمه‌ی شعبان

... و دیدنی‌ترین: نماهنگ باران دوازدهم



۰۵ خرداد ۹۴ ، ۱۵:۴۵ ۱ نظر موافقین ۰ مخالفین ۰
رضا

توییت پر دردسر


سلام؛ میخوام امروز را به نام روز « توییت پردردسر » نام گذاری کنم. کار از جایی شروع شد که من توییت جالبی را که به صورت طنز، به تفاوت موجود بین Akka و Erlang اشاره داشت را باز-نشرش کردم؛ و ماجرا آغاز شد:
توییت های زیادی ( و تقریبا پر دردسر برای من ) در ادامه رد و بدل شد، اما در بین تمام آنها، یک توییت خیلی من را به فکر فرو برد...
Cesarini یک erlang کار حرفه‌ای است که برای کار دیگران ارزش قائل است و نگران است که شاید، باز-نشر توییتش توسط من فضای آلوده‌ای بین متخصصین و علاقه‌مندان به یک بستر خاص ایجاد کند. خیلی خوبه که یاد بگیریم « به هم احترام بگذاریم » و در کار‌ها « رفتار حرفه‌ای » داشته باشیم؛ نه اینکه اسم هر مسخره بازی‌ای را « حرفه‌ای گری » بگذاریم. این قضیه‌ ( عدم احترام به دیگران و حرفه‌ای نبودن برخوردها ) توی ایران آنقدر شدید است که بارها شاهد رانده شدن بچه‌های Mac کار ( کاربران OSX ) از جمع‌های فناورانه بودیم؛ کم تر کسی را در tehlug میشناسم که برای بستر .Net و برنامه‌نویسانش ( آنگونه که شایسته هست ) احترام قائل باشد. این آخری‌ها هم که بابت استفاده از InDesign کل مجموعه‌ی «سلام دنیا» زیر سوال رفت؛ وقتی ادعای حرفه‌ای بودن میکنیم باید به شخص و راه‌حل‌ای که برای یک مشکل خاص و تحت شرایط خاص انتخاب کرده احترام بگذاریم. استفاده از InDesign گناه کبیره نیست، همین طور برنامه‌نویس .Net و یا کاربر Mac بودن.
۱۲ شهریور ۹۳ ، ۱۵:۳۲ ۳ نظر موافقین ۰ مخالفین ۰
رضا

Radar - July 2014

سلام؛ آن قدر مطلب نگذاشتم تا دوباره یک Radar دیگر منتشر شد. اما چیزهایی که نظر من را جلب کرد:

  • بودن Docker در بین ابزارها و در دسته‌ی Trial . فکر نمیکردم به این زودی توی این دسته قرار بگیره!!!
  •  PostgreSQL as NoSQL... آن هم در دسته‌ی Trial. واقعا جالبه که یک RDBMS با اضافه کردن یک سری ویژگی/نوع داده ( DataType ) مثل Json به عنوان یکی از گزبنه‌های NoSQL روی میز باشد. تحت شرایطی که شما Distribution ( از هر منظری: Replication, Sharding, ... ) نیازی نداشته باشی، PostgreSQL گزینه‌ی خوبی برای NoSQL ( یا اگر بهتر بخوام بگم  Document-based DB ) هستش.
  • ARM Server SoC ... پیش به سوی سرور های کم مصرف ARM.
  • عدم پشتیبانی مرورگرها از استانداردهای Web Component ها ( Template, HTMLImport, ShadowDOM و CustomElement ) باعث شده که این بستر/ویژگی در دسته‌ی ASSESS ها قرار بگیره. البته شخصا نظرم این هست که Polymer به عنوان یک framework که مبتنی بر همین استانداردها طراحی شده میبایست به عنوان یک ابزار در دسته‌ی Trial قرار میگرفت. ( Polymer واقعا فوق العاده است... اگر بعد وقت شد یک پست کامل در رابطه‌اش مینویسم؛ البته اگر وقت شد...! (^_^) ).
  • وجود Java 8 در دسته‌ی Adopt ها خیلی طبیعه... جز این انتظار نمیرفت.
  • Go language در Adopt....! دوره‌ی پیش هم ( January 2014 ) هم Clojure در همین دسته‌ بود... با توجه به رویکردی که برای معرفی زیان های Concurrent دارند، نبودن Erlang در لیست شان ( و بودن Go ) باعث میشه به جامعیت داده های Radar شک کنم. البته اگر حوزه‌ی کاری ThoughtWorks را که به نظر میرسه بیشتر نرم افزارهای Data-Orinted هستند در نظر بگیریم، ایرادی نمیشه گرفت.
  • Reactive Extensions across language : همچنان Reactive مبحث داغی است که انتظار دارم فرارتر از پست های وبلاگی بره؛ فعلا پروژه های Enterprise ای که بر اساس این معماری طراحی شدن واقعا کم هستند.
  • Scala, the Good Parts: دو نکته منفی در رابطه با Scala خیلی مشهوده... اولی زمان کامپایل است که بیش از میزان انتظار هست ( که همیشه نسبت به Java سنجیده میشه... ) و دوم ویژگی های بیشمار این زبان که محتمل است توی پروژه های بزرگ مشکلاتی را بوجود بیاره... مثلا implicit conversions که برخی معتقدند که خوانایی کد را به میزان قابل توجهی کاهش میده، یا موارد مشابه دیگر. راهی حلی که ToughtWorks پیشنهاد میدهد غیر فعال کردن برخی از این ویژگی‌هاست، تا کامپایلر در گیر آن‌ها نشود ( و سریع تر فرایند کامپایل را انجام بدهد ) و البته پیچیدگی‌ها در «کد خام» ( کدی که نوشته میشود، بدون در نظر گرفتن Design Pattern ها Architecture سیستم )  هم کاهش پیدا کند.
  • به نظر میرسه AngularJS یک framework انقلابی دیگر ( مثل کتابخانه‌ی jQuery ) هست که گرد و خاکی به پا میکنه و تا مدت‌ها پایدار باقی میمونه... اوایل من نظری مثبتی نسبت بهش نداشتم و CanJS را ترجیح میدادم؛ اما این روزها اگر کسی از من مشاوره بخواد عموما AngularJS را معرفی میکنم.
  • Play Framewrok هم به عنوان شناخته شده ترین framework تحت وب Scala در این لیست جایگاه خوبی داره. البته spray هم در این Radar گنجانده شده؛ به نظر میرسه Scala برای شرکت های معتبری مثل ToughtWorks داره قابل اطمینان تر میشه.
  • حضور Julia، R, Rust و Wolfram Language نشان از مهمتر شدن ( بیشتر مورد توجه قرار گرفتن ) آنالیز داده‌ها در هر اندازه‌ای و در هر موسسه‌ای دارد... حالا کی حوصله داره بره یکی از این ها را یاد بگیره؟!؟!؟!
۲۴ تیر ۹۳ ، ۰۵:۳۶ ۱ نظر موافقین ۱ مخالفین ۰
رضا

Radar


سلام؛... بعد از مدتی بلاخره آمدم  یک مطلبی بگذارم!
نمیدونم با Radar آشنایی دارید یا نه؟! اگر نه، برای آشنایی اینجا را ببینید.
... احتمالا دیگر میدانید که رادار یک گزارش از بخش‌های اثرگذار در صنعت نرم‌افزار است، یعنی دقیقاً Techniques, Platforms, Tools, Languages and Frameworks. آخرین گزارش چند روز پیش منتشر شد: http://www.thoughtworks.com/radar

این گزارش برای من بسیار جذاب بود و چند نکته هم نظرم رو جلب کرد:
  • JavaScript در حال حاضر نقش ویژه‌ای در تولیدات نرم‌افزاری ایفا می‌کند؛ از Client-side تا Server و ابزار‌های مثل Grunt.js و PhoneGap و ...
  • JVM با زبان‌های Functional ای که روی آن بستر وجود دارند(Scala, Clojure) و حتی Java و Groovy ، همچنان پیشرو است.
  • Functional, Concurrency, Distributed و Reactive: با وجود زبان‌هایی همچون Scala, Clojure, Elixir و Go و چارچوب‌هایی مثل Akka و Playframework در این گزارش، نمی‌شود انتظار یک جنبش به سمت ‌‌Reactive Programing را نداشت.  می‌توانید اینجا بیشتر در موردش بخوانید.
  • BigData را نمی‌شود فراموش کرد(‌Hadoop2, Storm, ElasticSearch).

البته این گزارش نکات جالب دیگری هم دارد، ولی من به همین میزان اکتفا می‌کنم.

۱۱ بهمن ۹۲ ، ۲۰:۵۴ ۱ نظر موافقین ۰ مخالفین ۰
رضا

خواندنی

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

یک وبلاگ خوب برای علاقه مندان به JavaScript که برخی از مطالبش ارزش وقت گذاشتن و خواندن را دارند : Sebastian's Blog. پیش تر یک مطلب مربوط به مقایسه ی Backbone, CanJS و Ember را از این وبلاگ معرفی کرده بودم؛ این هم 4 مطلب دیگر:

  • A Comparison of Angular, Backbone, CanJS and Ember: یک مقایسه میان 4 framework/library مطرح MV* برای استفاده در سمت کلاینت. شخص من فقط با CanJS کار عملی و قابل ارایه داشتم و البته چند مثال هم با AngularJS انجام دادم؛ شاید من هم تجربیاتم با این دو چارچوب(framework) را در روزهای آینده توی وبلاگ گذاشتم!
  • A Plain English Guide to JavaScript Prototypes : یک متن روان برای آشنایی سطحی و تا حدودی کافی برای درک Prototype، proto و Object model در JavaScript.
  • Asynchronous JS: Callbacks, Listeners, Control Flow Libs and Promises: معرفی و بررسی چند روش (Method) برای پیاده سازی واسط هایی برای Async Programing (در JavaScript).
  • Embracing Async With Deferreds and Promises: در ادامه ی مبحث روش های Async Programing نیاز به یک معرفی کامل از Deferred و Promise داریم؛ البته این مطلب پیش از مبحث قبلی در وبلاگ سباستین درج شده بود. شخصا برای هر کسی که یک آموزش سر راست برای Deferred & Promise از من بخواهد این مطلب رو معرفی می کنم. اگر وقت کردم سعی میکنم یک مطلب کامل در رابطه با روش های پیاده سازی Async به همراه یک آموزش خوب برای Promise و Deferred در وبلاگ بگذارم، انشاالله (^_^)
راستی این روزها برای شروع یک پروژه ی جدید در مراحل Planning هستیم و گاهی در رابطه با ابزارهایی که می خواهیم استفاده کنیم هم بحث میکنیم. انشاالله قرار است بخش Server-side با PHP باشد... و ما هم می خواهیم یک framework خوب برای این کار انتخاب کنیم؛ به احتمال زیاد در این پروژه دیگر از Zend Framework 1.X استفاده نمی کنیم؛ گزینه های که پیش رو داریم از این قرار است:
  • Phalcon : یک چارچوب (framework) که با زبان C و به صورت یک Extention برای PHP نوشته شده. به همین علت هم سریع است و برای کارهای خودش (Dispacthing, Routing, Rendering, ...) حافظه ی کمتری مصرف می کند. این ext برای php 5.3 به بعد قابل نصب هست. از خوبی های این framework می شود به این نکته اشاره کرد که برای ساختار برنامه راه های متفاوتی رو پیشنهاد می کند: Single Module ، Multi Module و Micro. در سایت اصلی نیز مستندات کاملی برای این framework وجود دارد.
  • Yaf - Yet Another Framework : یک framework چینی! که مانند Phalcon به زبان C و به صورت Extention نوشته شده؛ ساختار این چارچوب (framework) بسیار شبیه به Zend Framework 1.x است و برای PHP 5.2 به بعد قابل استفاده است. این framework توسط Baidu (موتور جستجوی چینی) و Sina ( فعال در زمینه ی سرویس های چندرسانه ای برخط - Online Media Services ) استفاده شده! این هم وبلاگ نویسنده ی این چارچوب: http://www.laruence.com و البته مستنداتش در php.net
  • Silex : یک framework فرانسوی دیگر، برادر کوچک تر Symfony2 که توسط همان گروه تولید شده. این یکی دیگر C-based و به صورت Extention نیست و از Component های برادر بزرگترش استفاده می کند. در وبلاگ Gonzalo هم می توانید مطالب خوبی در رابطه با Silex پیدا کنید، مثلا : Scaling Silex applications
برای مقایسه ی framework هایی که معرفی کردم ( benchmark هاشون ) می توانید از لینک های زیر استفاده کنید:


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

چقدر پوچ شدیم


پوچی

منبع: فرهنگ آفریقایی، فرهنگ ایرانی! (عکس)‎

۱۹ فروردين ۹۲ ، ۰۹:۲۱ ۰ نظر موافقین ۰ مخالفین ۰
رضا

خواندنی

گاهی یک سری مطلب پیدا میکنی که حداقل ارزش یک بار خوندن رو دارن، از اونجایی که من اهل استفاده از «پیوند‌های روزانه» هم نیستم، به خاطر همین تصمیم گرفتم هر چند وقت یکبار اینجا لینک‌هایی که ارزش خوندن رو داشته باشن(حداقل از نظر من) رو معرفی میکنم:

یک مقاله‌ی فارسی در رابطه با ماژول‌های کرنل در لینوکس (البته یکسری مقاله برای آموزش هست که امیدوارم ادامه پیدا کنه):kernel module لینوکس چیست؟

این رو هم توی planet.python.org دیدم که بد نیست: The Python condition. Why PyPy is the future of Python

و همچنین یک موضوع جالب از وبلاگ افشین مهربانی: در کار با jQuery، راست به چپ فکر کنید
باز هم در زمینه‌ی جاوااسکریپت: My Experience With Backbone, Ember and CanJS و البته در همین زمینه اینجا , اینجا رو ببینید. البته این همه لینک در رابطه با مقایسه‌ی کتابخانه/چارچوب MVC, MVVM, ... برای JavasScript بی دلیل نیست؛ یک مدتی است که دنبال مقایسه‌ی اونها بودم تا تفاوت‌هاشون و البته جایگاه استفاده ازشون رو بدونم؛ شاید در آینده یک مطلبی هم در این رابطه نوشتم.
این هم یک معماری جدید برای برنامه‌ها، چیزی بالاتر از MVC (البته فکر میکنم قبلا لینک این مطلب رو توی وبلاگ افاضاتی دیده بودم): http://cirw.in/blog/time-to-move-on

انسان‌افزار هم عنوان مطلبی بود در وبلاگ «امیر لطیفی»؛ آغاز ترجمه‌ی کتابی با نام Peopleware: Productive Projects and Teams که انشاالله ادامه داشته باشه. ترجمه‌ی فصل اولش هم انجام شده: امروز جایی پروژه‌ای شکست می‌خورد.

و اما خواندنی‌ترین مطلب(جدید نیست، اما من تازگی‌ها خوندمش): تفنگ یزدان
۰۳ اسفند ۹۱ ، ۰۸:۰۵ ۰ نظر موافقین ۰ مخالفین ۰
رضا