eaxcast-s01e01/

Представляем вашему вниманию пилотный выпуск нового подкаста EaxCast, подкаста о программировании, информационных технологиях и смежных темах. Темы выпуска: зачем было делать еще один подкаст, вебинар о внутреннем устройстве шедулера Erlang’а от ESL, mekao и нужен ли Erlang’у ORM, готовится русский перевод LYSE.

Слушать онлайн:
http://eaxcast.podfm.ru/_eaxcast/1/

Скачать файл:
http://eaxcast.podfm.ru/_eaxcast/1/file/podfm_eaxcast__eaxcast_101.mp3

Шоу нотес:

Голоса выпуска: Александр @afiskon Алексеев, Валерий @sum3rman Мелешкин

Фоновая музыка: The Panets — Winter Beats (Big Power Mix)

Александр: Здравствуйте, дорогие слушатели. Вы слушаете первый выпуск первого сезона нового инновационного подкаста EaxCast. Это наш пилотный выпуск. Его ведут я, Александр afiskon Алексеев и со мной в подкастике Валерий sum3rman Мелешкин. Привет, Валер!

Валерий: Привет, привет!

А: Вообще-то, у нас сегодня полный экспромт. Мы с Валерой созвонились после работы, хотели просто проверить звук, что он пишется и все такое. Времени сейчас одиннадцать вечера. Мы начали обсуждать темы будущего подкаста, начали их обсуждать-обсуждать и поняли, что если мы сейчас все обсудим, нам в самом подкасте обсуждать их будет не интересно. И решили, а давайте-ка быстро запишем подкаст. Так что, у нас полнейший экспромт. Валера вообще сидит без гарнитуры со своим макбуком со встроенным микрофоном. Никто ничего не готовил.

Поскольку это пилотный выпуск, мы расскажем вкратце, что за подкаст, зачем, для кого, как появилась идея. Идею, что странно, подал Валера. С Валерой мы работаем вместе в компании, которая называется EXANTE . Валера сидит рядом и он внезапно так предложил, «а давайте сделаем подкаст и назовем его EaxCast». Валер, зачем нам делать подкаст? Объясни, пожалуйста.

В: Вот у Саши есть такой офигительный бложик, где он пишет о всяких офигительных штуках. Но иногда интересно не просто написать, например, howto’шку или свое личное мнение. А комментарии, они не позволяют нормальное длинное обсуждение провести так, чтобы все друг друга поняли, и чтобы это потом было еще и интересно кому-то читать. И часто бывают вопросы, о которых хочется просто поговорить. Притом, поговорить не между мной и Сашей, а, например, кого-нибудь еще позвать, кто в этой теме лучше разбирается и с ним поговорить, потому что не все можно взять и написать… Даже просто бывает, не хочется слишком длинную дискуссию вести в комментариях, потому что долго, лень и зачем? Проще вживую поговорить.

А: Это действительно так. И, например, вот я не пишу в бложике про конференции. Я частенько бываю на разных конференциях, вот был на ruBSD , а до этого был на Haskell’евской конференции в Яндексе , и я об этом не пишу. Ну мне лень и непонятно, о чем писать. Фоточки выкладывать? Слайдики? А так можно собраться, поговорить, обсудить какие-то мысли интересные.

В общем, у нас нет каких-то грандиозных планов, что мы станем супер крутым подкастом и нас будут слушать миллионы. Мы решили, что в первом сезоне, а подкаст будет разбит на сезоны, мы сделаем штук пять или шесть выпусков, послушаем реакцию слушателей и посмотрим, как пойдет. Будет второй сезон или не будет. Так что, вы, слушатели дорогие, пожалуйста, пишите, в комментариях, что вы думаете о подкасте, что вам нравится, что не нравится, какие темы вам интересны, а какие — не очень. Нам любой фидбэк сейчас крайне важен и очень ценен.

Еще одна причина, почему мы решили сделать подкаст, состоит в том, что во многих современных подкастах обсуждаются темы, который мы с Валерой считаем… м… вредными и не очень…

В: (смеется) Ну дело даже не во вредности. Просто о них говорят все.

А: Это Ruby, это Python, это Java — это всякий мейнстрим. Мы с Валерой, мы такие два…

В: Мы штангисты!

А: Да, мы штангисты. Мы оба пишем на Erlang’е, то есть, мы зарабатываем денежку, программируя на Erlang в данный момент. Кроме того, я, как вы знаете, активно упарываюсь Haskell’ем.

В: Да, и даже постригся под хаскелиста.

А: И постригся под хаскелиста. Валера — вот вы не знаете, а Валера упарывается Rust’ом. Валер, ты упарываешься Rust’ом ?

В: Ну я им не очень много упарываюсь, я больше упарываюсь всякой распределенщиной. Например, как Riak внутри устроен, как какая-нибудь Cassandra внутри устроена, или что-нибудь похуже.

А: Также нам интересны, ну да, всякая там распределенщина, всякие NoSQL — такие вещи, которые почему-то не очень много освещаются. Смысл в том, что нам не интересно говорить про, пф… мобилки, про Apple — такие вещи. Вот мы и решили сделать такой более технический подкаст на разные странные темы, которые никому кроме нас с Валерой не интересны, но, возможно, будут интересны также кому-то еще.

И последнее, что касается особенностей нашего EaxCast. Мы пошушукались и решили, что будет правильно делать его так называемую « текст уризацию». То есть, я, после того, как мы запишем этот подкаст, буду его выслушивать и перебивать в виде текста. Кому-то больше нравится текст читать, чем слушать чужие голоса. Это хорошо с точки зрения поисковых систем. Можно нажать Ctr-F и быстро по тексту что-то найти. То есть, такой формат удобен, и, поскольку первый сезон мы решили сделать из малого количества выпусков, посмотрим, как это будет — сложно или не сложно, не устану ли я набивать тексты. В общем, узнаем, что из этого выйдет.

Все рассказали про сам подкаст?

В: Вроде да.

А: Очень, очень хорошо! Перейдем к небольшим темкам?

В: Да, собственно-таки, микро-новости. Недавно господин ddosia выложил замечательную библиотечку mekao. Я ее еще не очень попробовал, но я ее посмотрел, я ее почитал. Идея в чем? Идея в том, чтобы не писать SQL-запросы в Erlang’е руками. Идея ORM для Erlang довольно спорная, с моей, по крайней мере, точки зрения. И я точно знаю людей, которые ее разделяют. Потому что у нас есть язык, в котором операции с множествами, то есть, list comprehensions — это вещь первоклассная, и кортежи — это вещь первоклассная. Реляционная алгебра — это операции с множествами и кортежами. Поэтому тащить какой-то ORM в язык, где реляционная алгебра может быть выражена естественным образом, странно.

Поэтому хочется чего-то более легковесного, но в то же время чтобы оставались валидация, чтобы имена полей как-то мапились в record’ы, или что-нибудь еще такое. В общем, набор вещей, которые руками делать не хочется. И здесь, к сожалению, нет реляционной алгебры на list comprehensions, нет трансляции какого-нибудь qlc в SQL-выражения. Но хотя бы можно на простеньком таком подъязычке описать содержимое базы данных и потом делать запросы. Правда, пока что поддерживаются только довольно базовые вещи, но вроде можно дополнить.

Это довольно удобно. Это позволяет не писать в виде binary запросы. Если у тебя десяток однообразных запросов, то однозначно появляется куча небольших функций. Запросить это, запросить то. Где у тебя select’ы записаны в виде binary или io_list’ов, где потом еще нужно вставить переменные, которые в запросе потом фиксируются отдельно. В общем, чтобы все время этим не заниматься, библиотека это все абстрагирует.

На мой взгляд, это довольно удобно может быть. Ты что думаешь?

А: Ну у меня сразу два вопроса. Вопрос номер первый. С какими базами данных это работает? Или это просто генератор строк?

В: Это генератор строк, который генерирует довольно универсальный SQL. Он весь пока довольно базовый, но довольно универсальный. В общем, оно не заточено ни под какую конкретную базульку.

А: Угу. И сразу второй вопрос. Это как бы болевая точка многих ORM. Как там с join’ами и со всякими group by’ями? Все ли поддерживается?

В: Не смотрел, честно могу сказать. Могу сейчас посмотреть. По идее должно быть нормально, потому что ты просто пишешь в виде термов и эта штука транслирует тебе в текст. По идее не должно быть никаких проблем с join’ами, но я не могу это гарантировать. Я с этой штукой еще недостаточно поигрался.

А: Ну если это небольшой легковесный ORM, то это хорошо. Я, как кто-то из слушателей может знать, одно время писал на Perl’е, и там есть штука под названием DBIx::Class . Это легковесный ORM, который реально очень удобен. Фактически, это не столько даже ORM, сколько DSL , который тебе генерирует типовые запросы. То есть, тебе не нужно, например, писать функцию create_user или update_user_password, и так далее. DBIx::Class — это набор, ну, на самом деле методов, но если задуматься, то он как бы предоставляет тебе все функции, которые тебе в большинстве случаев могут понадобится. И он очень гибок. Если под Erlang будет такая гибкая и легковесная штука, это будет ему только на пользу.

В: Вот из ORM’ов нравится мне, пожалуй, разве что рубевый DataMapper, потому что это просто какая-то добрая магия. Там даже миграция! Я, конечно не знаю. Оно, наверное, нормальную сложную миграцию не сделает, но для простенького проекта оно миграции генерировало само. Это довольно забавно. Ну и, в общем, довольно удобно. Это просто какая-то сплошная добрая магия. А ORM имеет смысл делать там, где есть объекты. В Erlang’е объектов нет, а есть кортежи. Поэтому, мне кажется, не нужно там делать какой-то маппинг.

А: Ну я условно говорю ORM. Фактически, любой DSL, который тебе генерит SQL и при этом дает какие-то бенифиты, будь то куча готовых типовых функций из коробки в том или ином виде, или будь то какая-то проверка типов на этапе компиляции, или еще что-то… То есть, это, конечно, не ORM. Но мне кажется, можно это с высокой степенью точности называть ORM’ами все. Идея, в принципе, одна и та же.

В: Не согласен. Все-таки при слове ORM у меня в голове сразу какие-то жуткие Hibernate’ы и всякое такое из мира Java, или там чуть попроще типа ActiveRecord’а из мира Ruby, но, тем не менее, штука, которая делает очень неочевидные преобразования, которые, ну, не очевидные. И не всегда понятно, во что твой код, делающий что-то с объектами, потом выльется, когда он будет выполняться. Не потащит ли он тысячу объектов по сети в память, из которых ты потом выберешь два или три.

А: Да, это действительно так! В любом случае, есть такая замечательная компания Erlang Solutions. Не так ли?

В: Да, да. Но по поводу mekao еще такая маленькая заметка. Я сейчас посмотрел на код и похоже, что join’ы не поддерживаются. Может быть, я не прав. Может быть, я просто не туда смотрю. Вот. Если я не прав, пусть придут в комментарии и меня поправят, но похоже, пока их там нет.

Да, Erlang Solutions. Отличная компания. Проводит отличные семинары и вебинары. Я был на одном вебинаре у них. Мне он тогда не очень понравился, потому что был какой-то маркетинг, маркетинг, маркетинг. Я по-моему по этому поводу даже где-то в комментариях пожаловался, и вот, наконец у нас, по крайней мере, судя по названию, офигительно технический вебинар. На котором нам расскажут не о том, какой крутой и классный Erlang, используйте все Erlang, вон у нас такой классный как его… case study. И вот такая успешная компания, у которой все успешно получилось, и вообще пацаны пришли к успеху. Они очень долго и классно шли к успеху, и они очень классно пришли к успеху. И никаких деталей толком!

А здесь, наконец, вроде бы как, поговорят о каких-то внутренностях виртуальной машины Erlang. О том, как устроено в нем планирование. О том, какая разница между процессами, портами, таймерами. Как это все внутри устроено. Вот мне, например, очень интересно про таймеры послушать, потому что недавно буквально задавались на работе вопросом. А насколько дорого вообще таймеров много сделать? Также поговорят про то, по каким правилам работают очереди на выполнение у каждого из планировщиков. Видимо, о типах планировщиков поговорят. И о том, как там устроен load balancing между этими планировщиками. О том, как узнать или примерно понять, что дальше будет выполнено из кучи процессов, которые должны быть выполнены.

Говорить будет Lukas Larsson. Это чувак, который делает… ну, в общем-то, это один из комиттеров самого Ericsson’а в кишки Erlang Runtime System. Поэтому я думаю, что это довольно интересно будет послушать.

Да, все это безобразие будет происходить 6-го февраля. По-моему, это 20 или 21 по Москве. Сейчас точно скажу… И я вам рекомендую, если вам это интересно действительно послушать или посмотреть, записываться прямо сейчас, потому что может так получиться, что вы прощелкали и не сможете записаться. На вебинарах у них там ограниченное число мест. Вроде как это должно быть с 20:00 по Москве . 6-го февраля. Как-то так.

А: Ну мне добавить нечего. Валера все сказал. Я лично на этот вебинар уже записался, и вам того же желаю. Собственно, все.

В: И еще одна новость. Есть такой человек kvakvs Дмитрий Литовченко. Он сейчас занимается переводом Learn You Some Erlang на русский. Было уже пара попыток эту книжку перевести на русский, но там первые две главы перевели и как-то вот это все затихло. У Димы переведено уже, по-моему, пятнадцать глав. Я еще одну главу попытаюсь помочь ему перевести. Самое интересное в этом переводе, что Дима договорился с ДМК-Пресс, не без помощи Алекса Отта. Там в твитере кто-то кому-то что-то кинул, и, в общем, в итоге так получилось, что ура-ура, в переводе заинтересована ДМК-Пресс, поэтому книжке скорее всего быть. Это здорово, мне кажется.

К сожалению, пока что там очень много непоняток с правами. Изначально все это делали прямо в HTML’е, просто правили оригинальные странички. Потом ДМК сказал «мы хотим либо Word, либо PDF». И сейчас Дима переверстывает то, что уже есть, в TeX. Поэтому не очень понятно ни с правами, ни чисто технологически, будет ли это доступно онлайн. Это пока меня печалит. В общем, мы пока решили от этого абстрагироваться и просто переводить. Когда допереведем, начнем разбираться с правами. Попробуем в ДМК заслать и просто отправить перевод самому Фреду, и если Фред захочет, он его выложит. По-моему, мы пока так решили сделать. Может быть, я немножко неправ. Вот, собственно, все.

А: Мне немного странна эта ситуация с правами. Ну вот я сейчас смотрю на learnyousomeerlang.com и я явственно вижу внизу логотип, что текст распространяется под Creative Commons. В связи с чем у меня недоумение. Почему просто нельзя попросить у автора исходники в том или ином виде и почему, если он в силу каких-то причин не хочет их давать, взять и не пропарсить этот learnyousomeerlang.com в любой формат и переводить спокойно.

В: Нет, подожди, нет проблемы с тем, чтобы взять исходники и переводить. Это мы так и сделали. Проблема в том, что наша работа непонятно по каким правам. То есть, мы вроде как хотим быть книжкой на русском. Права на перевод книжки — они у ДМК-Пресс. Я так понимаю, ДМК-Пресс купила их у No Starch Press. Или что-то такое. А можно ли нашу работу будет потом опубликовать в онлайне — непонятно.

А: Вы же переводите текст книги learnyousomeerlang.com?

В: Да.

А: Она распространяется под Creative Commons?

В: Да, вроде как да, но блин. Я лично с Фредом не общался.

А: То есть, я понимаю, в чем может быть проблема… м… да нет, я, в принципе, даже с печатной версией не понимаю проблему. Просто есть текст под Creative Commons. Хочешь — печатай, хочешь — что хочешь с ним делай. Я не юрист, но по моим представлениям Creative Commons — это примерно такая штука. А, подожди. Тут доллар зачеркнутый. Не подразумевает ли это, что на этом нельзя поднять бабла? В общем, я не юрист, не знаю. Если кто-нибудь из слушателей разбирается в теме, вы нам комментарий напишите, пожалуйста. А мы в следующем выпуске, может быть, озвучим.

«Может быть», потому что вот сейчас мы записываем подкастик заранее и не знаем, когда его опубликуем, не запишем ли мы в промежутке пару очередных выпусков. Может быть так, что мы заранее запишем три выпуска, например, и начнем их выкладывать потихоньку. Вот.

В: В общем, как я понял, там была ситуация такая. Дима поговорил с Фредом. Фред сказал: «Слушай, я ничего не знаю про права No Starch Press’а, вот бери, переводи, но лучше пока особо не публикуй. Переведешь — потом разберемся.» Потом Дима начал общаться с ДМК-Пресс и там тоже примерно такая же ситуация. «Давайте вот вы с нами пока будете общаться, и пока его никуда не кладите.» И вот, Дима решил, что пока не будет.

А: Ясно. Мне кажется, мы довольно много наговорили для первого пилотного выпуска. Ты как считаешь?

В: Да.

А: Пожалуйста, пишите нам в комментариях, понравился ли вам выпуск, что понравилось, что не понравилось, о чем бы вам было интересно послушать. И на этом у нас пока что все. Подписывайтесь на наши RSS и твитеры. Я думаю, мы прикрепим ссылки на мой твитер, на твитер sum3rman’а.

В: Ну и, конечно же, на вебинар, на mekao. На перевод дать ссылку, пока что, к сожалению, не можем.

А: Все остальные ссылки мы, конечно же, покажем в шоу нотес. И пока это все. Спасибо, что слушали! Пока.

В: Спасибо. Пока.

Дополнение: EaxCast S01E02, зачем изучать функциональные языки программирования

EnglishRussianUkrainian