Closed Slavenin closed 8 years ago
Здарова. А чем ruby-то не угодил? Мне дак очень нравится - пересаживаться причин не вижу. Но если хочешь, то конечно - занимайся, только всячески поприветствую.
Какое количество соединений способен держать руби? Пару тысяч? На erlang можно поддерживать без особых затрат пару миллионов. Чтобы что-то писать, надо сначала определиться с апи. Какие запросы будет слать гуй к ноде и нода к гую.
1) Я хорошо отношусь к erlang'у и, если бы Пандора была централизованой сетью, то переписать взаимодействие с нодами на erlang было бы реально отличной идеей. Но Пандора является децентрализованной сетью, в которой мгновенный ответ нужне только для видео и текстовых сообщений. Зачем ей миллион одновременных соединений. А если Вы считаете что ей такое реально нужно, то как вы думаете она будет работать на мобильных устройствах? (Я так понимаю об этом речи пока не идёт, но предполагалось что Пандора будет user-friendly системой, а многие люди используют пк только для работы и игр, а социальное взаимодействие происходит посредством мобильных устройств, где нет возможности держать миллионы соединений одновременно). 2) Вы предлагаете переписать на erlang исключительно сетевое взаимодействие или вообще оставить на ruby только работу с UI, а на erlang переписать работу с данными, сетью и базой данных? Это нужно решить прежде чем описывать апи. 3) Если предполагается переписывать на erlang только сетевую часть, то в коде Пандоры есть модуль Network, который описывает несколько классов используемых для сетевого обмена между нодами. Если перенести всю логику работы с сетью на erlang, то все public методы, поля и константы из этого модуляю и будут составлять апи и по сути их код будет необходимо заменить взаимодействием с модулем, написанным на erlang'е. Это позволит даже переносить код частями и сразу заодно покрывать их тестами. PS Я не являюсь контрибьютором Пандоры и высказиваю лишь своё личное мнение
@fAntel,
Интересное кино - Slavenin не хочет учить ruby и разбираться в НАПИСАННОМ коде, а Novator должен вдруг выучить erlang и начать разбираться в НЕНАПИСАННОМ коде! С чего это вдруг??
Вас таких много. Вчера мне предъявляли, что не на C написано, сегодня - что не на Erlang, а завтра придёт очередной анонимус и скажет переписывай на Rust (Java, C++, Python, Lisp, Perl, C#, впиши недостающее). У каждого будут свои вполне убедительные доказательства (я гарантирую это!), и что, каждый раз я должен учить новый язык и переписывать код Пандоры?!
Нет уж, дорогие мои юные и ленивые анонимусы. Если вы хотите видеть код НЕ на руби - открываете редактор и фигачите код на своём любимом языке!
И вот когда я увижу 25000 строк кода на другом языке, тогда я ещё погляжу и подумаю - а лучше ли получилось, чем на руби? А больше ли функционала в вашем форке? И если увижу, что ваши 25 тыщ строк эффективнее, чем мои, то проникнусь уважением и, возможно, включусь в разработку на чужом и нелюбимом для меня языке.
По поводу API, протокола, форматов данных читайте "Руководство пользователя" (файл guide.ru.odt). Если возникнут КОНКРЕТНЫЕ вопросы (не в общем и целом, а конкретно по алгоритмам), то обращайтесь - с удовольствием пообщаюсь с практикующими программистами.
Нифига не понял зачем тебе учить erlang o_O? Но твое отношение к коду проекта очень печалит. И с таким подходом врят ли система когда-то обретёт популярность... Так и будешь писать её один. Если бы код пандоры был разделён на модули, тогда можно было бы говорить об изучении нужной части, но когда всё в одном god-файле, нет уж, увольте... Я найду, чем мне заняться. Удачи.
Привет. Есть предложение запилить ноды пандоры на erlang (или elixir). Т.е на руби остаётся графический интерфейс, который запускает/останавливает и обменивается данными c нодой erlang запущенной на компе пользователя. А эта нода уже шлёт инфу другим нодам и соответсвенно интерфейсам. Т.е. схема получается следующая: Далее между собой взаимодействуют только ноды. NAT в данном случае можно обойти. Каждая нода хранит списк известных ей нод, который периодически обновляется. Например, одна нода узнала о другой, она берёт и рассылает инфу о новой ноде по своему адресному списку. Т.е. простенький аналог маршрутизатора i2p.