hey ihaveint



سلام :))

 

امروز قراره که یه مقدار

scala book رو سعی کنم ببرم جلو . ( در پرانتز بگم که این مطلب وقتی گذاشته می شه روز تموم شده و قبلش [ ! time travel ] اینا نوشته شدن ) 

قراره یه سر داکایی از اسپارک که نخوندم ,از جمله

داک RDD رو بخونم . خیلی خیلی حس می کنم هیچی از اسپارک نمی فهمم :( 

 

یکی از چیزایی که امروز بهش برخوردم

Data lake و به طور خاص تفاوتش با

Data Warehouse بود که در ادامش به

delta رسیدم .

در کل خیلی خیلی کانسپت هایی هست که از بعضی از جنبه ها خیلی شبیه به هم به نظر میان ولی در عمل خیلی فرق ها با هم دارن و این بعضا باعث سردرد بنده می شه واقعا :)) ( سردرد بد نه - سردرد منظورم گیج شدنه و حس اینکه هنوز باید کلی یاد گرفت )

 

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

repartition و به طور کلی کمی تفکر راجع به partition بندی در اسپارک که اینم جذاب بود :))

 

---------

اینجا دیگه از تایم ترول خارج می شیم :دی 

به عنوان فان یه اشاره ای می کنم به یه چیزی که چند روز پیش دیدم : 

process telefork

یه پروژه ایه که یه نفر زده با این هدف که پروسس رو به قول خودش "telefork" کنه ! 

ترکیبی از teleport و fork خودمونه خلاصه :))

کلا کارای زیبایی می کنن ملت :))

 

بعد بماند که رفتم پروژه های طرف رو نگاه کردم از زندگیم ناامید شدم واقعا :))

 

 

در موضوعی متفاوت هم , شروع کردم به سعی در کمی درک کردن

superset و ناامید شدن از وضعیت داکر برای اجرای لوکالش :)) دیگه رفتم رو vps آوردمش بالا و متحیر شدم از سرعت بالای نتش :( 

نکته ی جذابش برام این بود که خیلی طبیعی وقتی آوردمش بالا یوزر نیم admin admin رو تست کردم و کار کرد ^_^


با سلام :))

توضیحات مختصری توی 

سر آغاز دادم که هدف این بلاگ چیه .

اینجا جهت اولیه رو یکم مشخص تر می کنم که الان اوضاع چه طوره و این حرفا . 

 

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

با این لینک می تونین جوین شین :‌

join channel

توی این بلاگ قراره یکم شسته رفته تر چیزا رو بنویسم .

این خلاصه ای از چیزاییه که تا الان اتفاق افتاده :‌

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

 

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

چند تا کتاب

اسکالا هست , یه دونه راجع به کلیت کانکارنسی و چرا مدلی که مرسومه برای این کارا ( ترد - لاک - سینکرونایز کردن و این چیزا )‌ دیگه اون قدر جوابگو نیست , چند تا کتاب راجع به

elixir , یه دونه راجع به

erlang , و چند تا چیز دیگه که لینکاشونو ته این نوشته می ذارم .

 

یکم جلو بره احتمالا پروژه های تمرینی ریز ریز دوست داشته باشم انجام بدم با اینا . ( و حتی بدون اینا :دی مثلا دوست دارم یه پروژه بلاگ بزنم نوشته هامو ببرم اونجا :)) ) 

 

هدف گذاری اولیه اینه که سعی کنم لیست اولیه رو تا آخر تابستون تموم کنم .

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

 

در پرانتز هم اینو بگم که خوندن داکیومنت های رسمی رو خیلی مفید می دونم و خیلی هم از نظر زمانی احتمالا به صرفه تره . فقط نکته ی ریزی که هست اینه که بعضا یه سریا کتاب می نویسن و هدفشون از کتاب اینه که یه دید خاصی به یه موضوع رو توضیح بدن , که این کتابا به نظرم ارزش خودشونو دارن همیشه . با اینکه وقت بیشتری رو می طلبن . و بعضی از کتابا هم صرفا نویسنده هاشون خفنن :))‌ آدم دلش نمیاد نخونه .

 

خب بریم سراغ رفرنس به کتاب ها :

 

گروه اسکالا :

Programming in Scala Fourth Edition

این کتاب خیلی طولانیه . احتمالا الان هم نرم سراغش . منتهی چون یکی از نویسنده هاش scala رو طراحی کرده از این بابت کتاب ارزشمندیه و احتمالا یه مقدار که اسکالا رو اوکی شدم بیام چیزایی که اینجا فکر می کنم خوبه رو بخونم . ( این ورژنش چون جدیده ریت نداره زیاد - ورژن قبلیش بالای صد تا ریت داره ) 

 

Functional Programming in scala

اسکالا یه زبون general purpose عه که باهاش می شه با پارادایم های مختلفی کد زد . خوبیش دقیقا همینه که گفتم . بدیش هم دقیقا همینه که گفتم :))

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

و جدا از این بنده تازگیا به برنامه نویسی فانکشنال علاقه مند شدم (‌ در این باب بعدا یه چیزی می نویسم ) 

و این کتاب سعیش بر اینه که با تمرکز روی اینکه بیایم فانکشنال کد بنویسیم اسکالا رو یاد بده .

و کتاب خوبی هم هست واقعا :)) می گن که تمرینات سختی داره و بخوای تمریناشو کامل حل کنی کلی وقت ازت خواهد گرفت ولی تهش کلی خفن شدی و این حرفا :))

یه دونه کتاب

solution هم داره البته و توی

گیت هم به نظر میاد یه سری جواب ازش گذاشته یکی از نویسنده هاش . ولی توصیه شده که خود آدم حل کنه به هر حال 

 

و در نهایت یک مجموعه ی سه تایی از یه سری کتاب ( تقریبا کوچیک - هر کدوم بین صد تا دویست صفحست ) که وقتی بیشتر خوندمش میام آپدیت می کنم جریانو !‌ ولی خلاصش اینه که یه چیزایی داشت که حس کردم هم به درد کارم می خوره هم چیزاییه که شخصا دوسشون دارم . در واقع یکم practical میاد موضوع رو بررسی می کنه و از فاز یادگیری خود زبون یکم فاصله داره .

---------

کتاب 

Designing Data-Intensive Applications

این کتاب خلاصش در همون ادامه ی اسمش هست : 

The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

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

---------

کتابی با نام 

Seven Concurrency Models in Seven Weeks: When Threads Unravel

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

کتاب با چیزایی مثل کانکارنسی توی جاوا و ترد و لاک و اینا شروع می کنه و تهش می رسه به نظر شخصی نویسنده که آقا اینا خیلی پیچیدست و خیلی هم باگ داره :)) و جدا از پیچیده بودن , سخت افزارهای امروزی دیگه مثل قدیم به این سمت نمی رن که هر

18 ماهی سرعت cpu ها دو برابر بشه . بلکه داریم به این سمت می ریم که تعداد کور cpu ها بیشتر بشه . و نیاز به یه چیزی داریم که از این فرصت استفاده کنه . و خلاصه می ره سمت فانکشنال و این چیزا و ادعا می کنه که بهمون این شانس رو می ده که از این عصر جدید به خوبی استفاده کنیم . ( این کتاب به محض اینکه اون فصل جاوا رو تموم می کنه با

clojure ادامه می ده ماجرا رو - و اوج زیبایی قضیه برای من این بود که با اینکه من هیچ وقت با clojure کار نکرده بودم , به خاطر ذات فانکشنالی که این زبون داره , خوندن داک هاش بسیار کار جذابی بود . خیلی خیلی تجربه ی لذت بخشی بود و اصلا همچین چیزی قدیما ندیده بود و متحیر بودم کاملا) 

--------

کتاب

Programming erlang که این رو هم طراح erlang نوشته . بنده خدا چند وقتیه که فوت کرده البته :( 

این کتاب رو به این دلیل که elixir روی erlang virtual machine کار می کنه و عملا می شه کد erlang توش زد توصیه های فراوان شنیدم که خوبه خوند و تجربه ی درستی از elixir گرفت .

خیلی خیلی کانسپت های جالبی توی این زبون و elixir وجود داره که تمام سعیم رو خواهم کرد که اینجا هم کلی چیز میز راجع بهش بذارم :دی 

 

--------

کتاب های elixir .

حقیقت موضوع اینه که خود سایت elixir توی قسمت learning اش یه لیست خیلی کامل از منابع گذاشته و منم کم و بیش از همونا استفاده می کنم ولی سعی کردم کمی فیلترش کنم که خیلی context switch نداشته باشم فعلا . ( البته فکر کنم مرز های context switch رو تا همینجا جابه جا کردم :دی )

و خود داکیومنتیشن هاش هم به نظرم بسیار زیبان :)) 

--------

دو تا کتاب می مونه 

یه دونش یک فردیه که نظرات شخصیش راجع به

OOP رو میاد می گه و خیلی هم تعصب داره رو حرفاش . 

ولی من مطالبش رو قشنگ و بعضیاش رو هم کاربردی دونستم تا اینجا . کتابشم تو اوردر ۲۰۰ صفحه داره و فکر کنم تو یه سشن چند ساعته بشه جمعش کرد . این رو هم لینکشو الان نمی دم که الکی چیزی رو promote نکرده باشم :))

 

و یه کتاب داستان طور به اسم

the phoenix project 

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

راجع به یه آدمیه که تو یه شرکتی داره کار می کنه و شرکت داره وضعش بد می شه تصمیم می گیرن این رو ارتقا بدن بیاد اوضاع رو جمع و جور کنه :))‌

و داستان این رو داره بیان می کنه و اینکه چه اتفاقاتی داره می افته

تا اینجایی که کتاب رو خوندم کتاب جذابی بوده :))

و کامنتا رو که می خوندم , می گفتن جذابیت بیشترش برای کساییه که توی حوزه ی it تجربه ی زیادی دارن و عملا خیلی از شخصیت های داستان رو تا به حال تو عمرشون دیدن :)) ( منظورم از دیدن اینه که اینجور آدمایی رو تو همینجو پوزیشن هایی دیدن . )

 


امروز دارم کتاب Programming erlang رو می خونم

سینتکسش یه مقدار پیچیدست . کلا هدف هم بیشتر اینه که اینو بخونم بعدش برم elixir :))

ولی به طور کلی خیلی جالبه . مثلا

QuickSort رو , اگر بخواین مدل رندومش رو نزنین و صرفا هر بار بیاین اولین عنصر ( یا حالا آخرین عنصر , فرقی نداره )‌ رو به عنوان محور در نظر بگیرید , پیاده سازیش پنج خطه کلا .

 

کلا سادگی خاصی توش هست , و از اون طرف چیزای جذابی هم داره

مثلا می تونین راحت یه کلاینت سرور بنویسین که اینا با هم در ارتباطن و کلاینت مثلا می تونه از سرور بپرسه که آقا تو فلان دایرکتوری چه فایلایی هست ؟ یا مثلا فلان فایل رو بخون محتویاتشو بده به من .

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

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

و کلا زندگی رو سعی کرده راحت کنه :))

 

مفهومی داره به اسم pattern matching که خیلی کار رو راحت می کنه .

تقریبا با pattern matching حتی نیاز به if هم ندارین . حتی نیاز به for هم ندارین 

(هر چند یه چیزایی مثل if خودشون وجود دارن ولی کلا حرف اینه که تقریبا به هیچ چیز خاصی نیاز نخواهید داشت)

 

و البته هنوز به جاهای اصلی قضیه نرسیدم . 

در آینده ای نزدیک سعی می کنم بیشتر در این مورد بنویسم :))


امروز سعی بر این دارم که

scala book رو تموم کنم یا حداقل تا آخراش بخونم . 

دوست دارم یکم در مورد یه چیزی حرف بزنم ولی هنوز نمی دونم چی خوبه ؟

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

Game of Life , 

John Conway که یه ریاضی دان هست این بازی رو اولین بار درست کرده و اتفاقا همین تازگی ها هم دار فانی رو وداع گفتن ایشون :‌( 

 

یه زبونی تازگیا اومده به اسم

dark , هنوز زبونش بتا هست و عرضه ی عمومی نشده . ولی چند تا نکته ی اولیه داشت که من یکم جذبش شدم . یکی اینکه این زبون holistic عه !‌ همش توی browser عه ( الان فقط کروم رو ساپورت می کنه ) , یعنی شما تنها چیزی که برای کد زدن توی این زبون نیاز دارین اینه که یه تب باز کنین توش کد بزنین . 

زبونش فعلا مخاطب اصلیش کساییه که تجربه ی برنامه نویسی دارن و می خوان خیلی راحت تر بتونن backend وب سرویساشونو بنویسن . 

شما توی یه زمان خیلی کم ( قشنگ زیر نیم ساعته ) می تونین یه دونه دیتابیس بسازین ( که اتوماتیک خودش لاک هم داره ) , چند تا http method تعریف کنین , cron job تعریف کنین . worker بسازین حتی !‌ و همه ی اینا مفهوم هایی هستن توی خود زبون :)) یعنی خود زبون چیزی داره به اسم worker که با یه کلیک می تونین یه اینستنس ازش بسازین :)) به علاوه ی اینکه سینتکسش هم بسیار ساده طراحی شده . و کلی قابلیت جذاب داره و با اینکه زبون کاملا جدیدیه دوست دارم یه روزی یه بک اند ریزی باهاش بنویسم . شاید در این باره یه چیزی بنویسم مثلا :))

آمم و یه نکته ی دیگه هم اینه که

circleci رو فردی به اسم Paul Biggar تاسیس کرده مثل اینکه و dark هم مثل اینکه کار ایشون و یه سری دیگست :)) از این لحاظ که تجربه های موفق داره حس می کنم یه مقدار بیشتر شاید بشه به این زبون امید داشت . 

ولی جدا از اینکه موفق بشه یا نه , واقعا آینده ای رو می بینم که از یه همچین زبونی خیلی خیلی زیاد استفاده بشه و هم کار رو راحت کنه هم واقعا به درد بخوره :)

 

در این راستا یه زبون جدید دیگه هم به ذهنم می رسه به اسم

ballerina . این زبون هم چیزای جالبی داره و دوباره از لحاظ شعار اصلیش حداقل در ظاهر شبیه به dark میاد : 

Ballerina is an open source programming language and platform for cloud-era application programmers to easily write software that just works

 

قابلیت جذابی که این زبون هم داره اینه که یه دیاگرام خودش براتون می کشه و یه تناظر یک به یکی بین دیاگرام و کدی که نوشتین هست .

و مثلا وقتی یه api بزنین در جا نمودارشو دارین که endpoint هاش چه جوری با هم در ارتباطن . و مثلا برای هم دیگه چه چیزی می فرستن و این حرفا . 

--------

پی نوشت :

تصمیم گرفتم که اسم هر مطلب , شماره ی روزی باشه که از شروع این بلاگ می گذره

در بلند مدت چیز فانی خواهد بود به علاوه ی اینکه گپ های بینشم معلوم خواهد شد و شاید یه نمودار قشنگی از خود گپ ها در بیاد حتی :))

 


امروز سعی بر این دارم که

scala book رو تموم کنم یا حداقل تا آخراش بخونم . 

دوست دارم یکم در مورد یه چیزی حرف بزنم ولی هنوز نمی دونم چی خوبه ؟

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

Game of Life از 

John Conway که یه ریاضی دان هست این بازی رو اولین بار درست کرده و اتفاقا همین تازگی ها هم دار فانی رو وداع گفتن ایشون :‌( 

 

یه زبونی تازگیا اومده به اسم

dark , هنوز زبونش بتا هست و عرضه ی عمومی نشده . ولی چند تا نکته ی اولیه داشت که من یکم جذبش شدم . یکی اینکه این زبون holistic عه !‌ همش توی browser عه ( الان فقط کروم رو ساپورت می کنه ) , یعنی شما تنها چیزی که برای کد زدن توی این زبون نیاز دارین اینه که یه تب باز کنین توش کد بزنین . 

زبونش فعلا مخاطب اصلیش کساییه که تجربه ی برنامه نویسی دارن و می خوان خیلی راحت تر بتونن backend وب سرویساشونو بنویسن . 

شما توی یه زمان خیلی کم ( قشنگ زیر نیم ساعته ) می تونین یه دونه دیتابیس بسازین ( که اتوماتیک خودش لاک هم داره ) , چند تا http method تعریف کنین , cron job تعریف کنین . worker بسازین حتی !‌ و همه ی اینا مفهوم هایی هستن توی خود زبون :)) یعنی خود زبون چیزی داره به اسم worker که با یه کلیک می تونین یه اینستنس ازش بسازین :)) به علاوه ی اینکه سینتکسش هم بسیار ساده طراحی شده . و کلی قابلیت جذاب داره و با اینکه زبون کاملا جدیدیه دوست دارم یه روزی یه بک اند ریزی باهاش بنویسم . شاید در این باره یه چیزی بنویسم مثلا :))

آمم و یه نکته ی دیگه هم اینه که

circleci رو فردی به اسم Paul Biggar تاسیس کرده مثل اینکه و dark هم مثل اینکه کار ایشون و یه سری دیگست :)) از این لحاظ که تجربه های موفق داره حس می کنم یه مقدار بیشتر شاید بشه به این زبون امید داشت . 

ولی جدا از اینکه موفق بشه یا نه , واقعا آینده ای رو می بینم که از یه همچین زبونی خیلی خیلی زیاد استفاده بشه و هم کار رو راحت کنه هم واقعا به درد بخوره :)

 

در این راستا یه زبون جدید دیگه هم به ذهنم می رسه به اسم

ballerina . این زبون هم چیزای جالبی داره و دوباره از لحاظ شعار اصلیش حداقل در ظاهر شبیه به dark میاد : 

Ballerina is an open source programming language and platform for cloud-era application programmers to easily write software that just works

 

قابلیت جذابی که این زبون هم داره اینه که یه دیاگرام خودش براتون می کشه و یه تناظر یک به یکی بین دیاگرام و کدی که نوشتین هست .

و مثلا وقتی یه api بزنین در جا نمودارشو دارین که endpoint هاش چه جوری با هم در ارتباطن . و مثلا برای هم دیگه چه چیزی می فرستن و این حرفا . 

--------

پی نوشت :

تصمیم گرفتم که اسم هر مطلب , شماره ی روزی باشه که از شروع این بلاگ می گذره

در بلند مدت چیز فانی خواهد بود به علاوه ی اینکه گپ های بینشم معلوم خواهد شد و شاید یه نمودار قشنگی از خود گپ ها در بیاد حتی :))

 


آخرین ارسال ها

آخرین وبلاگ ها

آخرین جستجو ها