Лог моей беседы с thesz.
Беседа в чате - интенсивна, и поэтому сильно "асинхронна". Мы оба пишем одновременно, продолжая мысль, периодически "синхронизируясь", так, и мысль несколько "растерта" по ответам, и два соседних коммента меня и thesz могут между собой не соотносится. Имейте это в виду при чтении - некоторая особенность.
Но беседа ИМХО стоит публикации, несмотря на особенность.
Сергей: Хеллоу, дир френд!
Можешь ли порекомендовать моему знакомому статью по Эрлангу на русском?
Vlad: Боюсь, что нет.
mammut мог писать. надо поискать.
Отправлено в 1:09 воскресенье
Сергей: Ща поищу.
Спасибо за наводку.
Отправлено в 1:10 воскресенье
Сергей: Знакомый собрал и запустил erlyvideo, не зная языка, исключительно по документации.
И оно заработало. ;)
Vlad: Охренеть :)
Сергей: Думает использовать в их продукте.
Неделю мучался, сейчас Эрланг изучает. ;)
Не мучался, а лениво пытался, как я понял.
Vlad: Молодец :). А это erlyvideo - оно реально круто?
Стоит того?
Сергей: Оно много, что умеет.
Vlad: Хм.
Сергей: Собирать видео со многих источников, хранить, показывать с произвольного места (насколько я понял).
Vlad: Блин.
И работает нормально при этом?
Сергей: У них какой-то проект с определением движения и отслеживанием людей, многие фичи им нужны.
Ну, как.
Работает до упора - либо железа, либо канала.
Vlad: Я с подозрением отношусь к опенсорс проектам. Особенно, ты удивишься - на языках типа Эрланга и Хаскеля.
Сергей: Что ещё интересно, возможность скользить по времени там достаточно хорошая.
А что так?
Vlad: Коммитеров обычно в них сильно меньше.
Сергей: "Главное не величина мускула, а куда ты его можешь засунуть!" (C) House MD
;)
Vlad: Соотсественно, выше риски что заглохнет, что баги не пофиксят, и что развиваться не будет.
Сергей: Качество коммитеров выше.
Проще разобраться.
Vlad: Выше риски что заглохнет, и баги не пофиксят.
Пусть их меньше, и пусть проще разобраться.
Смысл, когда ты берешь технологию - не в том, что тебе проще разобраться, а в том, что разбираться в ее кишках не надо.
Сергей: А вот смотри на darcs или pugs.
Vlad: Только в интерфейсе.
Сергей: Насчёт числа и качества коммитов.
Vlad: darcs чем-то по потребительским ттх лучше bazaar и mercurial?
Сергей: В момент старта он был лучше всего. ;)
Vlad: Не числа коммитов, а числа коммитЕРОВ.
Сергей: Разве, что по скорости проигрывал. ;)
А что тебе с числа коммиттеров?
Vlad: Читай выше.
Сергей: Ненененене.
Vlad: Риски меньше, что заглохнет.
Сергей: Вот, смотри.
Ты ориентируешься на число разобравшихся в кишках, при этом сам стремишься не разбираться.
Противоречия не видишь?
Vlad: Именно так.
Не вижу.
Сергей: Тогда ты не можешь выбирать Windows в качестве платформы.
Vlad: Могу.
Сергей: Разрешай противоречие.
Vlad: В чем оно?
Покажи - разрешу.
Сергей: Число коммиттеров в Windows мало. Ты не выбираешь технологию, число коммиттеров которой мало. Ты можешь выбрать Windows.
Vlad: У коммитеров в виндоуз строгий мотив туда коммитить - им зарплату платят. И, если кому надоест - на его место гарантированно найдут нового.
У опенсорс-проектов мотив гораздо слабее, и если надоест (что произойдет с большей вероятностью) - никто не гарантирует появление ему замены.
Это относится не к хаскелю и эрлангу, а к опенсорс проектам вообще.
Сергей: Тогда согласен.
Vlad: Кроме тех, которые спонсируются коммерческими компаниями.
Сергей: А что говорит твой живот насчёт стабильных на данный момент проектов?
Типа, протестировал на своих сценариях, всё работает.
Vlad: Если все устраивает, то можно брать.
Сергей: Будешь ли ты использовать стабильную версию?
Собственно, я так же отношусь.
Vlad: Да, если она стабильна, и устраивает.
Но вот тебе пример. Взял недавно шаблонный движок mustache.js.
Для генерации HTML в браузере.
Сергей: Это же только усы, бороды нет.
Vlad: Все устраивало.
Сергей: Брать нельзя, не взлетит. ;)
Vlad: С проблемами столкнулся только через три недели.
Это по меркам данного проекта довольно много.
И сама либа - всего 8 килобайт.
Пришлось выкинуть нахуй, и срочно переписывать.
К счастью, я справился за 6 часов.
Уложившись в килобайт.
Мне повезло. Половину килобайта я нашел в сети.
Сам бы хуй написал.
Мораль в том, что проблемы ты можешь найти сильно позже.
Сергей: Я к таким вещам отношусь ровно - я знаю, что может быть неприятность при выходе за проверенные границы.
Vlad: И, если проект мертвый, и ты целиком на него положился - ты попал.
Сергей: Поэтому стараюсь абстрагироваться.
Поэтому я могу использовать и мёртвые проекты. ;)
Vlad: Просто дело в том, что довольно дорого устраивать действительно полное тестирование в начале.
Сергей: У меня на iMac ghc 6.8. ;)
Vlad: Знаешь, в чем был косяк mustache?
Эта херь нормально жует функции, но не видит функции определенные в прототипе.
Это почти невозможно определить сразу при тестировании.
Сергей: Не полное, а по требуемым сценариям.
Vlad: И это охренеть как важно.
А ты не все сценарии сначала знаешь.
В этом и жопа.
Сергей: Нененене.
Vlad: Найдется мелочь, которая станет принципиальной.
Да-да.
Сергей: Я знаю ровно столько, чтобы абстрагироваться.
Vlad: Я сначала попробовал поправить mustache. Этпесдец.
Переписать оказалось дешевле.
Сергей: Например, я знаю, что у меня будет SQL, не менее 92.
Я пишу с расчётом на это.
Vlad: А потом найдется мелочь, из-за которой все станет раком.
Сергей: Если я обнаружу ошибку в MySQL, я возьму Sqlite. И тп.
Vlad: Так - можно.
Когда у тебя интерфейс стандартен.
А когда нет?
Сергей: С другой стороны.
Когда я писал всякую секрутню фигню для UC, я заложился на разные IPC.
Сделал абстракцию и вперёд.
Поулчилось.
Vlad: Только язык хранимы процедур сильно различается в MySQL и PostgreSQL. Тебе придется реально много переписать, если ты в проекте увяз.
Сергей: Язык хранимых процедур я буду генерировать.
Vlad: Сделал абстракцию? Знал бы где упал - сена бы подложил.
Я не буду.
Я предпочитаю SQL.
Сергей: Ещё раз.
Перед использованием сторонней либы я определяю границы использования её и её замены.
Vlad: И абстракцию у тебя сделать не выйдет - если ты сразу не будешь рассматривать и MySQL и PostegreSQL.
Сергей: После чего пишу уровень абстракции, куда можно подтыкать нужное или работающее.
Vlad: Возможности у ни разные.
А ты не будешь их рассматривать сразу.
Сергей: Я достаточно опытен, чтобы понимать, что мне надо рассматривать. ;)
Возможности разные.
Но что делать?..
Придётся уравнивать. ;)
Vlad: Как только ты утверждаешь "Я достаточно опытен, чтобы понимать, что мне надо рассматривать" - ты попал :)
Я тебе говорю о рисках.
Сергей: А я тебе говорю, как бы я стал их уменьшать. ;)
С тем же mustache.
Vlad: Уравнивать вазоможности А и Б нельзя, если ты не знаешь о Б в момент написания абстракции для А.
Сергей: Тебе был нужен весь HTML?
Vlad: А знать все в принципе невозможно.
И жутко дорого.
Причем тут весь или не весь HTML?
Сергей: Если не весь, то зачем именно он и именно с функциями в шаблонах?
Сделал бы десяток нужных функций, и всё.
Vlad: Косяк усов был не в нем, а в том, как дебильно mustache работал с данными.
То, что нужен именно шаблонный движок - это принципиальное требование.
Сергей: Шаблоны можно делать многими способами.
Vlad: Хотя, по честному, я был не сильно завязан на mustache,
Сергей: Ну, не знаю, в общем.
;)
Vlad: Все что угодно можно сделать многими способами.
:)
Все - это ничего.
Я вообще под впечатлением от Хрюшки.
Он сцуко натурально гуру.
У меня временное просветление. :)
Сергей: Вот смотри. Ты взял моё высказывание о шаблонах. Переписал его, заменив "шаблоны" на "всё". И, таким образом, опроверг мой тезис.
Но я его разовью.
Я не большой спец в шаблонах.
Vlad: Шаблоны можно делать многими способами. Все что угодно можно сделать разными способами - и что?
Ну - можно.
Сергей: То, что mustache здесь ни при чём.
Vlad: Как ты считаешь, для иллустрации чего именно я его привел?
Сергей: И твой косяк с обнаружением косяка в нём - тоже не причём.
Это нормальная рабочая ситуация.
Vlad: Повторяю вопрос.
Сергей: Повторяй.
Vlad: Для иллюстрации чего именно я по твоему привел усы?
Повторил :)
Сергей: Да хрен знает.
Vlad: Ага. Объясняю.
Сергей: Погоди.
Я допишу,
Vlad: Ок.
Сергей: Ты на основе одного косяка делаешь далеко идущие выводы про проекты в целом.
Сам знаешь, что JS не лучший язык для серьёзной разработки, но приводишь проект на нём в роли манифеста общих для всех проектов свойств.
Собственно, я всё. ;)
Vlad: Отвечаю. Те свойства, для иллюстрации которы я привел в пример усы, никак не зависят от языка.
Объясняю.
Я иллюстрировал простую вещь
Что сразу ты не сможешь протестить все тонкости.
И может так выйти, что какая-нибудт из ни станет принципиальной.
И тогда, еси проект мертвый - пиздец.
Ты даже вопроса по нему в форуме задать не сможешь.
Нахуй нужно.
Риск небольшой - но чрезвычайно дорогой.
И я не уверен насчет "небольшой".
Сергей: Тогда я.
Смотрим на твой пример.
Действительно, ты не смог понять проблем.
Действительно, получилось плохо.
Но смотрим же на твои же затраты... ;)
Так и здесь.
Тот же Sqlite.
Vlad: Мне просто повезло.
Сергей: Сколько у него коммиттеров?
Vlad: хз.
Сергей: Натурально, один человек.
Vlad: У него пользователей много.
Да ладно?!
Сергей: Практически.
Vlad: Ок, насчет предыдущего - мне просто повезло, и я, как разумный человек, это осознаю.
Насчет SQLite - я в шоке.
Но у него очень много юзеров.
И это понижает риск критичных багов.
Потому, что его в разныз позах юзают.
И следовательно, - качество приличное.
Это нивелирует фактор одного коммитера.
Можно использовать stable, даже если проект мертв.
Главное - я не первый.
Сергей: Э, наврал насчёт одного.
Я наврал, конечно же.
Vlad: Да это неважно.
Он многократно использовался в продакшне, и это известно.
Что, кстати, не скажешь про erlyvideo.
Поэтому и говорю - отважный человек твой знакомый.
Рискует.
Может повезти.
а может и нет.
Сергей: А что, если подходящей функциональности нет вообще?
Vlad: Тогда я бы рискнул точно так же, как он.
Ибо - риск уравновешивается величиной выигрыша :)
Понятно, ради чего ты на него идешь.
Сергей: В общем, выбор следующий: "писать самому сейчас" против "возможно, писать самому в будущем". ;)
Vlad: Но риск надо осознавать.
Примерно так.
Сергей: Размен времени старта на риск.
Vlad: И если один хрен ты в ситуации, когда функциональности нужной нет - лучше взять пусть возможно глючное - но чужое.
Вдруг свезет.
Один хрен - писать придется. А так - прототип сделаешь быстрее.
Сергей: Опять же, "меньше писать сейчас". ;)
Vlad: Да.
Сергей: Ну, да. ;)
Vlad: Я всял мустаче только поэтому.
В общем, я правильно поступил.
:)
Сергей: Согласен. ;)
Vlad: Но мне повезло :)
Сергей: Оно у тебя заработало в общем и целом, а потом ты исправил по своему новоприобретённому пониманию. ;)
Vlad: Да.
Сергей: Так что усы тебя почти спасли. ;)
Vlad: Но я поимел ложные иллюзии.
Сергей: Но впредь бери бороду. ;)
Vlad: Я расслабился, и не закладывал время на переписывание.
Сергей: То, что ты поимел ложные иллюзии, это даже хорошо.
Vlad: Короче, риски - натурально тонкая штука. :)
Чем хорошо?
Сергей: Хуже было бы, если бы иллюзии поимели тебя. ;)
Vlad: :)))
Сергей: Насчёт рисков согласен. ;)
Vlad: Мне просто повезло, что я их поимел :)
Сергей: Хрен учтёшь.
Даже если /всё знаешь/. ;)
Vlad: Вот, самая основная ошибка в этом деле - это думать что все знаешь.
Я думаю, тут одна мораль :)
Сергей: Я стараюсь защититься кодогенерацией из спецификации.
Vlad: Надо, сцуко, давно понять: доверять нельзя никому. Даже себе :)
Сергей: Мне - можно. ;)
Vlad: Типа того :)
Короче, только отморозки ничего не бояццо. Реальные пацаны - всегда на измене! :)
Сергей: ;)
Vlad: Цитата из фильма какого-то нашего с Бодровым.
Зачотная.
Сергей: Я в магазин за хлебом и едой.
Потом спать. ;)
Спокойной ночи! :)
Vlad: давай
пока