1887

пятница, моё

То чувство, когда написал многопоточную dll с асинхронными callback'ами, взаимодействующую с платой по udp, совместимую с любым языком программирования...
...и хрен кто оценит
Вы смотрите срез комментариев. Показать все
62
Автор поста оценил этот комментарий
ссыль на гитхаб, оценим
раскрыть ветку (46)
13
Автор поста оценил этот комментарий
dll-ку надо было на днях отправить заказчику. Т.к. у него платы нет, то я сделал так, что она выдаёт липовые значения в коллбэки, из желаемого диапазона. Когда отправим плату, уже в каждой функции будет к ней обращение, и вывод реальных результатов.
раскрыть ветку (2)
2
Автор поста оценил этот комментарий
Дак надо ж было исходники выложить! Глядишь, оценили бы. Не?
1
Автор поста оценил этот комментарий
Чувак... пожалей гуманитариев( Объясни русским языком что ты сделал, для чего оно и почему это очень круто?
0
Автор поста оценил этот комментарий
гитхаб не юзаю) если очень хочется, могу проект залить куда-нибудь
раскрыть ветку (42)
112
Автор поста оценил этот комментарий
Залей на github.
раскрыть ветку (40)
19
Автор поста оценил этот комментарий
окей, гайз
исходник:
https://gist.github.com/63cdc8893d3ddbbdb021.git
хидер:
https://gist.github.com/199e736f465c9ca64e4b.git

гуи-программку для теста этой балды тоже выложить?)
раскрыть ветку (39)
34
Автор поста оценил этот комментарий
Эм, чувак... Ты про стилевое оформление кода слышал? Сам же потом запутаешься в нем.
раскрыть ветку (25)
Автор поста оценил этот комментарий
не слышал. вряд-ли запутаюсь, в самом верху всякие объявления, ниже функции, поток, а дальше уже проверки, которые идут на экспорт, и перед каждой небольшие комментарии. В последних их нет, т.к. времени не было
раскрыть ветку (24)
53
Автор поста оценил этот комментарий
Когда-нибудь точно запутаешься. Оформлять код сложно только на первых порах, потом станет привычно. В нормально оформленном коде сразу видны отдельные блоки, невозможно запутаться в скобках, да и просто приятнее смотреть на него. Сам глянь, я одну из твоих функций переписал: http://pastebin.com/6t6vbZW1
Алсо, у тебя там sizeof(str) - лучше не делай так, тоже когда-нибудь запутаешься. Если задавать строку как char str[20], то тогда sizeof(str) вернет 20, как нужно. А если как char * str = new char[20], то вернет sizeof(char *). Если размер фиксированный - задай его какой-нибудь константой, типа
const size_t STR_SIZE = 20;
char str[STR_SIZE];
...
memset(str, 0, STR_SIZE);
раскрыть ветку (9)
138
Автор поста оценил этот комментарий
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
PSYDUCK
4
Автор поста оценил этот комментарий
а, красивое оформление скобочек) слышал, на парах программирования пользовался)) в коде просто иногда забывается, особенно в потоке, я его вчера на скорую руку кропал. Да, надо будет оформить)
Насчёт массивов - сверху в дефайнах есть lendatain и lendataout, но так получилось, что ими я особо не пользуюсь. Спасибо тебе большое, чувак, сделаю динамическое выделение памяти) ну или через вектор. Я ещё с bytedynarray не совсем разобрался... странный он)
раскрыть ветку (1)
6
Автор поста оценил этот комментарий
Нажать Ctrl+D в редакторе забывается?
4
Автор поста оценил этот комментарий
А также:
Куча глобалок
Дефайны и magic number'ы
std::thread ???
std::async ???
std::future ???

Хотя задача неизвестна, может я и ошибаюсь.
раскрыть ветку (2)
3
Автор поста оценил этот комментарий
судя по хидерам и прагмам, это С++ Builder, так что никакого С++11 и прочих плюшек :)
но да:
1) Глобальные переменные приводят к тому, что функции non-reentrant. Плюс, судя по коду, позвал два раза одну и ту же функцию -> былинный отказ.
2) Использование указателей на функций в декларациях шлют лесом FFI большей части языков. Так что утверждение "совместимую с любым языком программирования" очень уж самонадеянное.
3) Использование UDP для контроллёра с pull моделью является странным решением. Он же не засыпает нас сообщениями, а мы просим у него значения.
2
Автор поста оценил этот комментарий
Да там много чего, на самом деле. Просто тыкнул в то, что первое на глаза попалось.
Автор поста оценил этот комментарий
я уж было подумал, что встретил собрата, Си-программиста, а потом увидел new...
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Человек пишет на плюсах, ответил ему в стиле плюсов. А от замены new char[20] на (char *)malloc(20) смысл не поменяется.
28
Автор поста оценил этот комментарий
Классическая ошибка: "Уж я-то разберусь в своём коде!" Спустя пару-тройку месяцев понимаешь: либо писал не ты, либо писал под алкоголем ))
раскрыть ветку (11)
8
Автор поста оценил этот комментарий
Истину глаголишь. Писал я где-то полгода-год назад лабу на сишке по opengl, написал сдал. через месяц захотел подправить. В итоге - мама-мия! несколько часов сидел разбирался какая функция за что отвечает и каким макаром эта хрень вообще работает...
раскрыть ветку (4)
10
Автор поста оценил этот комментарий
Из-за этого "мама-мия" я теперь думаю, что вы за горелый усатый итальянский мужик хд
раскрыть ветку (3)
6
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Скорее, так
Иллюстрация к комментарию
раскрыть ветку (1)
4
Автор поста оценил этот комментарий
Когда только начинал кодить (программированием это было сложно назвать) в коммерческом проект - черз пол года появлялись задачки на изменения функционала. Открываю код - первый вопрос всегда - что за мудак это писал? Смотрю комменты - а тем мудаком был я.
раскрыть ветку (5)
Автор поста оценил этот комментарий
авторство кода по комментариям определяют в той конторе?
раскрыть ветку (4)
1
Автор поста оценил этот комментарий
Да, а что не так?
Вначале файла шапка, кто, когда и зачем писал.
Изменения указываются либо прямо в коде (епсли это одна строка с каким-то фиксом) или в шапке.
Если прям очень интересно кто и что именно правил - можно конечно поднять историю чекинов, но никому это нафиг не нужно.
Мы авторство указывали только лишь для того, что бы какие-то исправления и доработки делал тот же человек, что и начал. Как правило вспомнить свой код пусть даже годичной давности проще, чем вникать в него по-новой. Особенно, если учесть невысокое качество кода, выдаваемого парой студентов физиков/электронщиков.
раскрыть ветку (3)
1
Автор поста оценил этот комментарий
git и нормальная IDE в помощь - при желании напротив каждой строчки появится кто, когда и зачем менял
раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Когда-нибудь точно запутаешься. Оформлять код сложно только на первых порах, потом станет привычно. В нормально оформленном коде сразу видны отдельные блоки, невозможно запутаться в скобках, да и просто приятнее смотреть на него. Сам глянь, я одну из твоих функций переписал: http://pastebin.com/6t6vbZW1
Алсо, у тебя там sizeof(str) - лучше не делай так, тоже когда-нибудь запутаешься. Если задавать строку как char str[20], то тогда sizeof(str) вернет 20, как нужно. А если как char * str = new char[20], то вернет sizeof(char *). Если размер фиксированный - задай его какой-нибудь константой, типа
const size_t STR_SIZE = 20;
char str[STR_SIZE];
...
memset(str, 0, STR_SIZE);
1
Автор поста оценил этот комментарий
как-то замного повторяющегося кода
7
Автор поста оценил этот комментарий
Код адовый пиздец, вы судя по всему классный процедурщик, но видимо с архитектурой и проектированием по хуево дело обстоит.
2
Автор поста оценил этот комментарий
Так написал, что кроме тебя это никто в этом разбираться не станет.
2
Автор поста оценил этот комментарий
А чего жесты, а не репа?

Ну замечания:
1. Стиль и табуляция.
2. Мэджики.
3. Адовая смесь C и C++. Неплохо было бы выбрать что-то одно. Поскольку, тут хардвар, то советую переписать всё на С.
4. Буфер сообщение\й в обе стороны потенциально незащищён от ошибок чтения. В случае UDP это критично.

Вот видишь, все оценили.
раскрыть ветку (2)
0
Автор поста оценил этот комментарий
1. исправляю.
2. што?)
3. замечательно, но на с сложновато что-то в параллельный поток выкинуть. Ну, для меня, по крайней мере) И udp я реализовал с помощью инди-клиента, а это возможно только в плюсах. Изначально хотел через winapi и winsock, но там всё как-то замудрено, и у меня не получалось настроить таймаут. А в инди api, таймаут указывается прямо в функции приема пакета, что очень удобно)
4. чем лечится? я ещё не на столько силён в прогании :)

спасибо :)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
2. Магические числа, константы прямо в коде. Например, в большом кейсе-обработчике. Следовало бы сделать что-то типа "case MT_HELLO" (сокращение он message type) вместо "case 4" (пример).
3. Винапи не надо, винсок хорошо должен зайти, но всё ограничивается сам понимаешь какой системой. Тогда переписывай на С++, избавляйся от макросов, используй энамы, используй буфферы с потоками вместо принтов и т.д. Хотя бы я порекомендовал переписать всё под чистые сокеты. Это не так сложно, как кажется на первый взгляд. И не надо никакого ИНДИ.
4. Ну как привило, всё написано в туториалах по сокетам. Ты ждёшь, от клиента 8 байт, ты должен проверить, что пришло 8 байт. Ты ждёшь строку, а действительно ли пришла 0-строка? И т.д. и т.п.
ещё комментарии
Автор поста оценил этот комментарий
если хочешь чтобы оценили, помоги мне на конструкторе сайтов запилить поиск туров, а то колонки не двигаются, а модуль больше рамок.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества