The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск p2p-мессенджера Communist 1.4, opennews (??), 25-Июн-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


69. "Выпуск p2p-мессенджера Communist 1.4"  –3 +/
Сообщение от Аноним (69), 25-Июн-22, 12:56 
Забавное форматирование исходников, однако. Да и рефакторинг напрашивается.
Ответить | Правка | Наверх | Cообщить модератору

75. "Выпуск p2p-мессенджера Communist 1.4"  +2 +/
Сообщение от ProfessorNavigator (ok), 25-Июн-22, 13:19 
Форматирование - следствие работы автоформатера в Eclipse. Отдельно на этот счёт я не заморачивался - пока других проблем хватает. Да и работаю я с кодом пока один, так что удобочитаемость до поры до времени на мой взгляд существенной роли не играет. Подключатся к разработке другие люди - будем думать и об этом тоже.
Ответить | Правка | Наверх | Cообщить модератору

77. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 25-Июн-22, 13:24 
> Форматирование - следствие работы автоформатера в Eclipse. Отдельно на этот счёт я
> не заморачивался - пока других проблем хватает. Да и работаю я
> с кодом пока один, так что удобочитаемость до поры до времени
> на мой взгляд существенной роли не играет. Подключатся к разработке другие
> люди - будем думать и об этом тоже.

Нарушение причинно следственной связи: если об удобстве других не подумать - они и не подключатся. Они что, враги себе чтоли, делать себе неудобно? :)

Ответить | Правка | Наверх | Cообщить модератору

88. "Выпуск p2p-мессенджера Communist 1.4"  –1 +/
Сообщение от ProfessorNavigator (ok), 25-Июн-22, 13:50 
> Нарушение причинно следственной связи: если об удобстве других не подумать - они
> и не подключатся. Они что, враги себе чтоли, делать себе неудобно?
> :)

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

Ответить | Правка | Наверх | Cообщить модератору

122. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (122), 25-Июн-22, 15:01 
> Остальные ищут отговорки вида "неудобно" и "некрасивый интерфейс".

Или:

> для того такие вещи особой роли не играют.

Ответить | Правка | Наверх | Cообщить модератору

124. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 25-Июн-22, 15:10 
Есть довольно много софта над которым можно поработать. Гораздо больше чем мой маленький мозг хотел бы своротить. Небольшой нюанс.

А запустить рестайлер... ммм... я вообще не тот анон который про форматирование плевался, но я тоже могу себе представить diff после такой диверсии, как и ваши эмоции по этому поводу :)

Ответить | Правка | К родителю #88 | Наверх | Cообщить модератору

129. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 25-Июн-22, 16:02 
> Есть довольно много софта над которым можно поработать. Гораздо больше чем мой
> маленький мозг хотел бы своротить. Небольшой нюанс.
> А запустить рестайлер... ммм... я вообще не тот анон который про форматирование
> плевался, но я тоже могу себе представить diff после такой диверсии,
> как и ваши эмоции по этому поводу :)

Мои эмоции роли не играют. Проект открытый, распространяется по GPL3+, т.е. каждый может взять и сделать то, что считает нужным. Чужое мнение я учитываю, но в разумных пределах. Иными словами, исходный проект будет выглядеть так, как считает нужным автор или те, кто задействован в разработке (а таких пока нет), и никак иначе. И для того есть объективные причины. Не нравится - скачиваем код и делаем по-своему, он в том числе для того и выложен в открытый доступ.

Ответить | Правка | Наверх | Cообщить модератору

142. "Выпуск p2p-мессенджера Communist 1.4"  +1 +/
Сообщение от Аноним (-), 25-Июн-22, 17:00 
> Мои эмоции роли не играют.

Я намекал что патч с перепаханого по всей площади сорца - штука так себе. Вы сразу на старте дали челу рецепт надежного зарубания совместной работы над сорцом. А мне стало интересно зачем :)

> в том числе для того и выложен в открытый доступ.

Мне казалось что основная фича опенсорса это возможность совместно что-то делать. А если в один фэйс все фигарить, смысл открытия сорца получается не очень понятный если честно.

Впрочем, со своей стороны чего я вам мозг клюю? Чисто практически - я не вижу док на протокол и общий overview идеи, а вштырить в концепции и идеи по такому коду мне несколько напряжно. Хотя против форматирования я на самом деле не сильно возражаю, предпочитая чуть иной стиль но для меня вот именно это - переживаемо (как для оригинального вопрошающего хз). А вот общее структурирование и отсутствие док на то какой был план - уже таки проблема.

Ну вот например:

if (Netmode == "1" && ownips.size () == 0)

Как вы думаете, очевидно ли из этого кода что за Netmode равный 1? Вообще, даже сишники давно догадались что магических чисел быть не должно. Должны быть константы в человекочитаемом виде. Потому что искать 100500 килобайт назад где вон то определено... ух... нет, а даже эдитор в IDE не найдет в таком виде где это определено и что означает.

А чтобы было не совсем скучно, NetworkOperations::commOps () если не ошибаюсь более 1000 строк кода. Поэтому не сойти с ума не будучи его кодером... ну... лично в мой маленький мозг СТОЛЬКО кода в одной сущности не лезет. Я конечно понимаю что иногда кодишь на одном дыхании, поймав волну, но остальные понятия не имеют что у вас в голове - и без должного партиционирования задачи на более простые субзадачи врубиться становится просто малореально. И по-моему это говорит что подобную цацу давно надо было отрефакторить до чего-то человекочитаемого. Разбив на штук пять субкомпонентов, атомарных и с говорящими названиями.

Ответить | Правка | Наверх | Cообщить модератору

162. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 25-Июн-22, 18:49 
> Я намекал что патч с перепаханого по всей площади сорца - штука
> так себе. Вы сразу на старте дали челу рецепт надежного зарубания
> совместной работы над сорцом. А мне стало интересно зачем :)

Да пусть себе резвится. В основную ветку такое не пропущу, а форки - пускай делает.

> Мне казалось что основная фича опенсорса это возможность совместно что-то делать. А
> если в один фэйс все фигарить, смысл открытия сорца получается не
> очень понятный если честно.

Предложения вносить - только приветствуется. Но решения принимать должен всегда кто-то один. Или небольшая группа людей, которая понимает друг-друга с полуслова и полностью совпадает во взглядах на проблему. Иначе будет хаос. В качестве положительного примера - то же ядро Линукс. Другое дело, что нужен механизм смены лидера (лидеров), но это уже совершенно отдельный разговор.

> Впрочем, со своей стороны чего я вам мозг клюю? Чисто практически -
> я не вижу док на протокол и общий overview идеи, а
> вштырить в концепции и идеи по такому коду мне несколько напряжно.
> Хотя против форматирования я на самом деле не сильно возражаю, предпочитая
> чуть иной стиль но для меня вот именно это - переживаемо
> (как для оригинального вопрошающего хз). А вот общее структурирование и отсутствие
> док на то какой был план - уже таки проблема.

Принимается. Дойдут руки - сделаю подробное описание.

> Ну вот например:
> if (Netmode == "1" && ownips.size () == 0)
> Как вы думаете, очевидно ли из этого кода что за Netmode равный
> 1? Вообще, даже сишники давно догадались что магических чисел быть не
> должно. Должны быть константы в человекочитаемом виде. Потому что искать 100500
> килобайт назад где вон то определено... ух... нет, а даже эдитор
> в IDE не найдет в таком виде где это определено и
> что означает.

Тут скорее вопрос вменяемых комментариев к коду. Сделаю постепенно.

> А чтобы было не совсем скучно, NetworkOperations::commOps () если не ошибаюсь более
> 1000 строк кода. Поэтому не сойти с ума не будучи его
> кодером... ну... лично в мой маленький мозг СТОЛЬКО кода в одной
> сущности не лезет. Я конечно понимаю что иногда кодишь на одном
> дыхании, поймав волну, но остальные понятия не имеют что у вас
> в голове - и без должного партиционирования задачи на более простые
> субзадачи врубиться становится просто малореально. И по-моему это говорит что подобную
> цацу давно надо было отрефакторить до чего-то человекочитаемого. Разбив на штук
> пять субкомпонентов, атомарных и с говорящими названиями.

Да, есть такое. Сам уже над этим думал - буду по мере работы над кодом разбивать на функции и классы.

Ответить | Правка | Наверх | Cообщить модератору

204. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 26-Июн-22, 09:09 
> Да пусть себе резвится. В основную ветку такое не пропущу, а форки
> - пускай делает.

Одна из самых приятных фич опенсорса что часть работы могут другие сделать, нахаляву 8). Это экономит время и силы? Торвальдс бы в жизни не написал даже 10% от того что Линукс сейчас. А всей толпой - пожалуйста. Но это требует некого сетапа поляны, чтобы комитерам было удобно. А то что не все патчи возьмут... я им некоторые патчи и сам не буду слать, догадываясь что откровенно экспериментальному "хаосу" не место в некомпетентных но резвых лапках.

> Предложения вносить - только приветствуется. Но решения принимать должен всегда кто-то
> один. Или небольшая группа людей, которая понимает друг-друга с полуслова и
> полностью совпадает во взглядах на проблему. Иначе будет хаос. В качестве
> положительного примера - то же ядро Линукс. Другое дело, что нужен
> механизм смены лидера (лидеров), но это уже совершенно отдельный разговор.

В опенсорсе всегда есть еще один способ: форкнуть/сделать свое. Я даже отпрактиковал это для токса, либу я не сильно трогал, но ботам, некоторым клиентам и т.п. досталось изрядно.

> Принимается. Дойдут руки - сделаю подробное описание.

Просто по коду видно что местами жарили на одном дыхании. Это все круто и так можно сделать много. Но вот потом это все же надо рефакторить в вид когда остальные двуногие возымеют шансы. Они не видят состояние головы в тот момент а въехать в длинный не особо структурированный код - довольно плохо работает.

> Тут скорее вопрос вменяемых комментариев к коду. Сделаю постепенно.

Нормальные люди делают это как-то if (NETMODE_TCP == netmode) ... например. В чем проблема у вас?

1) Нет определения и контекста. Что есть "1"? А, какая-то константа, даже строковая зачем-то. Но к чему она относится? И какой у нее реальный смысл? А хрен его знает! И даже более того, ни поиск, ни даже крутые IDE умеющие в парсинг синтаксиса не смогут найти место сорца где эта единица реально обретает смысл. А если это сделать допустим enum или #define с говорящим названием, и разместить это вверху сорца (или иногда функции, если сильно локальное), даже в тупом редакторе мигом найдут, а в IDE еще и go to declaration смогут одним хоткеем. И вот мы в 5 секунд уже видим ответ на многие вопросы. Когда я говорю что читающим должно быть удобно, я вот такое имею в виду, они тоже люди. И изначально на 100% вне контекста.

2) Нет никаких деклараций намерений чтобы было понятно делает ли код то что задумано вообще, и что собственно было по факту задумано. Сложно получить большую картинку. Какие modes еще есть? Чем отличаются? Почему тут именно этот? Единица вообще не отвечает на все эти вопрсоы. Понимание общей структуры не вырисовывается. А это ой.

3) Если это делать правильно, половину тупых багов типа опечаток найдет компилер на фазе компила. А спихнуть часть работы на машину время экономит однако. Но для этого все же надо как-то описать машине свои намерения, чтобы можно было проверить в т.ч. и автоматически. Для чего-то такого и придуманы типы данных, assert'ы и декларация чем может быть вон то а чем оно быть явно не должно. Единичка строчной константой в этом контексте один из самых плохих вариантов - не понятно почему тут именно оно, ни человеку, ни машине, и не предмет какой-либо верификации вообще. Если там 2 будет - валидно ли это? А 5? Кто ж его знает, это где-то сильно дальше логику надо ковырять, займет пару дней поди...

4) А конкретно вон тот синтаксис удостоверяется что если вместо == будет опечатка "=", компилер тут же взвоет т.к. попытка назначить чему-то типа константы значение явный баг. Это при случае спасет от многих часов долботни в дебагере с совершенно не очевидными багами. В проге такого плана баги бывают очень долбучие, типа падения в полночь четверга високосного года хз почему, если ремота - именно в Зимбабве, а не что-то еще. Потом ждать под дебагером такого совпадения можно очень долго. Заметьте, я не тратил лишнее время на комент, но при этом понятно что и почему проверяется, а заодно сделал в стиле "антибаг".

Я не настаиваю что надо деолать именно так, но некоторые идеи, имхо, стоило бы стырить, у меня и других. Это ж не ради постановки кого-то в стойло а потому что спасает от продолба кучи времени и/или так лучше работает.

> Да, есть такое. Сам уже над этим думал - буду по мере
> работы над кодом разбивать на функции и классы.

Да как бы я сам грешен, каюсь, но нафигачив на одном дыхании я все же взял за право убеждать себя что рефактор и распиловку на более читаемые субкомпоненты мастхэв. Иначе потом сам через год фиг вспомню весь контекст. Не буду ж я вечно глубокий контекст на тыщи строк в бошке держать, а может и другие проекты попрогаю, мозг выгрузит "своп" и контекст забудется.

Ответить | Правка | Наверх | Cообщить модератору

231. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 26-Июн-22, 15:37 
> Но вот потом это все же надо рефакторить в вид когда остальные двуногие возымеют шансы.

Это "потом" как раз наступает. Весь вопрос - насколько быстро. Потому что у меня может тупо не хватать времени заниматься программой. В общем - следите за репозиториями.

Ответить | Правка | Наверх | Cообщить модератору

146. "Выпуск p2p-мессенджера Communist 1.4"  +1 +/
Сообщение от n00by (ok), 25-Июн-22, 17:22 
Пара нюансов:
  {
        std::fstream f;
        std::vector<std::tuple<std::string, std::string, std::string>> wsz;
        if (std::filesystem::exists (filepath))
          {
        f.open (filepath, std::ios_base::in);
        while (!f.eof ())
          {
            std::string line;
            getline (f, line);
            if (line != "")

https://github.com/ProfessorNavigator/communist/blob/8373173...

После проверки и перед открытием файл может быть удалён. В данном случае ничего страшного не случится из-за проверки f.eof (), но в общем-то filesystem::exists() лишняя.

Поскольку писать в поток не собираетесь, можно использовать ifstream.

Сравнение std::string с "" приведёт у неявному вызову конструктора. Можно обойти, проверив наличие содержимого строки вызовом line.empty().

Из этих мелочей читатель может сделать вывод, что автор не очень знаком с Си++, тогда как от Профессора ожидается код на уровне Кнута, Морриса и Пратта. Здесь Вы предупреждаете, что не программист, на фоне некоторых профессиональных баш-разработчиков выглядит шикарно, но не github подобного не увидел.

Ответить | Правка | К родителю #88 | Наверх | Cообщить модератору

152. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 25-Июн-22, 17:50 
>[оверквотинг удален]
>   while (!f.eof ())
>     {
>       std::string line;
>       getline (f, line);
>       if (line != "")
>
> https://github.com/ProfessorNavigator/communist/blob/8373173...
> После проверки и перед открытием файл может быть удалён. В данном случае
> ничего страшного не случится из-за проверки f.eof (), но в общем-то
> filesystem::exists() лишняя.

Принимается, но давайте тех.подробности или на GitHub/GitFlic, или на почту (смотрите readme), или на форум Альта.

> Поскольку писать в поток не собираетесь, можно использовать ifstream.

Можно, но зачем (опять же - давайте на GitHub/GitFlic и иже с ними)?

> Сравнение std::string с "" приведёт у неявному вызову конструктора. Можно обойти, проверив
> наличие содержимого строки вызовом line.empty().

Да, я в курсе. Но что-то у меня с ним при первом знакомстве пошло не так (уже не помню, что именно) - поэтому был выбран именно вариант с пустой строкой. По памяти есть потери, но на фоне возможностей современного железа и функционала программы - это не особо критично. Это мессенджер, а не программа обсчёта космических наблюдений.

> Из этих мелочей читатель может сделать вывод, что автор не очень знаком
> с Си++, тогда как от Профессора ожидается код на уровне Кнута,
> Морриса и Пратта. Здесь Вы предупреждаете, что не программист, на фоне
> некоторых профессиональных баш-разработчиков выглядит шикарно, но не github подобного
> не увидел.

На GitHub вы не видите подобного предупреждения, потому что пока никто не интересовался особо)) Да и зачем - вы смотрите на код, а не на автора. Кто и что автор - дело десятое. Кто понимает в разработке, тот и уровень автора оценит, а остальным оно без надобности.


Ответить | Правка | Наверх | Cообщить модератору

259. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от n00by (ok), 28-Июн-22, 08:51 
Это не технические подробности. В том смысле, что нет смысла бросать всё и менять сейчас же в исходнике. Просто на будущее. ifstream вместо fstream - обычная бритва Оккама. К тому же, читателю сразу понятно, что записи дальше не будет.
Ответить | Правка | Наверх | Cообщить модератору

110. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Брат Анон (ok), 25-Июн-22, 14:33 
Код который есть, лучше чем идеальный код, которого нет.

Не нравится? Сделай лучше.

Ответить | Правка | К родителю #69 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру