سلام :))
امروز قراره که یه مقدار
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 هاش چه جوری با هم در ارتباطن . و مثلا برای هم دیگه چه چیزی می فرستن و این حرفا .
--------
پی نوشت :
تصمیم گرفتم که اسم هر مطلب , شماره ی روزی باشه که از شروع این بلاگ می گذره
در بلند مدت چیز فانی خواهد بود به علاوه ی اینکه گپ های بینشم معلوم خواهد شد و شاید یه نمودار قشنگی از خود گپ ها در بیاد حتی :))
درباره این سایت