[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 38 | 3 | 19
Назад Вниз Каталог Обновить

Ориджинал практик търеад Аноним 23/12/16 Птн 23:29:11  899765  
14630579864520.jpg (21Кб, 550x337)
Шарь сэмплы уродливого кода и описания геневальных орхитехтурных решений. Опиши откуда пример.
Начну. Видел подобное в прошивке под embeded (c++):
1. bool needRestart = (timer == 0) ? true : false;
2. java крудошлёпы, имея orm, порою обходили её и в сеттерах/геттерах и выполняли захардкоженные sql запросы. геттер проверял наличие записей, и, если они отсутствовали, добавлял новую, которую и возвращал. к этим методам обращались несколько тредов параллельно, которые могли ещё удалять/добавлять записи...
3. webrtc/windows/audio/docapturethread https://goo.gl/jj1rtT
к сожалению, приходится иметь дело с проектом начиная ревизии эдак с тысячной.
Аноним 24/12/16 Суб 00:08:44  899787
http://paste.ofcode.org/VESfCCDnSyBtJngjR8Eax6
Аноним 24/12/16 Суб 00:19:47  899800
>>899765 (OP)
И что не так с последним примером? Хорошая функция.
Аноним 24/12/16 Суб 01:57:22  899858
Или у тебя баттхерт из-за goto? Так это главный цикл рилтайм-треда, можно позволить ни в чём себе не отказывать. К тому же, только вниз. Короче, как раз тот случай, когда goto можно. Но, вообще, break/continue/return в теле слабо отличаются от goto, если уж на то пошло. Они ничуть не более читабельны.
Аноним 24/12/16 Суб 02:01:50  899862
>>899787
хуё-моё, RAII во все поля
или готу на крайняк заюзали бы
Аноним 24/12/16 Суб 02:06:04  899864
>>899858
goto порою не избежать, как и в этом случае. другое дело -- длина этого порева
Аноним 24/12/16 Суб 03:26:41  899897
>>899862
Да вполне нормальный код, если это единственное место использование.
>goto
ну-ну
Аноним 24/12/16 Суб 05:33:09  899908
>>899765 (OP)
>bool needRestart = (timer == 0) ? true : false;
и что здесь пидор не так?
Аноним 24/12/16 Суб 05:39:17  899912
>>899908
(timer==0)==true
Аноним 24/12/16 Суб 06:22:10  899916
>>899912
а как тебе такое пидоран
bool needRestart = !timer; ?
просто ты наверное олимпиадная матоноблядь немогущая в самодокументирование кода, да и в разработку в принципе.
за
bool needRestart = (timer == 0)
можно и напихать защеку.
Аноним 24/12/16 Суб 06:43:53  899919
>>899916
Я понял что ты долбоеб, можешь не продолжать.
Аноним 24/12/16 Суб 06:54:34  899920
>>899919
ок, школотрон, научишься кодить приходи, а пока сажи тебе.
Аноним 24/12/16 Суб 08:01:39  899926
>>899920
Кек, мамкин кулкацкер учит людей программировать.
Аноним 24/12/16 Суб 08:31:17  899930
>>899926
потыкать школотронов в их же ссанину это всегда приятно
Аноним 24/12/16 Суб 09:51:04  899940
>>899916
А ты не думал, что таймер может быть флоатом?
Аноним 24/12/16 Суб 09:59:55  899943
>>899940
верно подметил, скорее так оно и есть. насмехайтесь над опом!
Аноним 24/12/16 Суб 10:09:30  899946
14659330457340.jpg (101Кб, 890x670)
1460932836643.png (82Кб, 461x660)
1460931380434.jpg (33Кб, 694x732)
>>899800
Может быть, из-за этого.
Строка 3889: _Lock
Строка 3899: return при нулевом указателе. И ниже по коду так же.
Строка 3944: _UnLock
И ниже что-то неладное с _Lock/_UnLock. Где-то есть парная функция, где-то return без неё.
>>899765 (OP)
>1. bool needRestart = (timer == 0) ? true : false;
Надо контекст смотреть. timer может быть классом с перегруженным оператором ==. Максимум упростить можно до (timer == 0). И ещё объявить needRestart константой, она же, скорее всего, не будет изменяться.
Аноним 24/12/16 Суб 13:38:00  900012
>>899946
Лол доставь еще этого кампьюта саенс граджуэйтед дауна.
Аноним 24/12/16 Суб 16:55:32  900109
>>899765 (OP)
>1. bool needRestart = (timer == 0) ? true : false;
Если timer - объект, то не вижу тут ничего странного.
Аноним 24/12/16 Суб 17:28:02  900126
>>899765 (OP)
>bool needRestart = (timer == 0) ? true : false;
И ч0? Явное обозначение своих намерений.
Аноним 24/12/16 Суб 18:33:25  900149
>>899940
За сравнение флоатов на строгое равенство тоже можно и нужно пихать защеку
Аноним 24/12/16 Суб 18:40:07  900152
>>899765 (OP)
>java крудошлёпы, имея orm, порою обходили её и в сеттерах/геттерах и выполняли захардкоженные sql запросы. геттер проверял наличие записей, и, если они отсутствовали, добавлял новую, которую и возвращал. к этим методам обращались несколько тредов параллельно, которые могли ещё удалять/добавлять записи...
Это просто пиздец, как они до этого додумались?
Аноним 24/12/16 Суб 18:44:47  900153
>>900149
Это вам надо напихать за щеку. Из кода ясно же что таймер:
1 - переменная
2 - счетчик, т.е. целого типа
3 - не константа

Просто какой-то программный таймер-счетчик.
Если и когда он достигает нуля - нужен сброс чего-то, состояния или программы.
Аноним 25/12/16 Вск 01:05:30  900327
>>900153
Каким образом он достигнет нуля? Там в пико-секундах разрешение?
Аноним 25/12/16 Вск 01:27:48  900344
>>900327
Судя по коду этот счетчик отрабатывает один раз за цикл кода.
Т.е. вначале проверили счетчик, если нуль - взвели флаг сброса, код этот флаг отработал, перезагрузив железку/сбросив какие-то состояния/переиницилизировав какие-то структуры.

Ни о какой пикосекундной точности речи не идет - это внутренний программный счетчик, не факт что он вообще считает именно время, а не что-то другое. Средний таймаут - около одного оборота кода, может много больше (если счетчик завязан на внешние события, типа сетевого коннекта).

В случае железки это похоже на софтWDT. Тоже так делал: каждый оборот кода декрементишь счетчик, инкрементишь только в каких-то критичных для работы железки местах.
Каждый оборот проверяешь счетчик, если он обнулился, значит какой-то критичный участок давно не отрабатывал, т.е. что-то накрылось, дальнейшая работа без этого участка бессмысленна - надо уходит на рестарт, в надежде что проблема временная и внешняя (очень часто так и есть).
Иногда встречаются железки, не выходящие из рестарта - там проблема уже явно не временная, и скорее всего в коде.
Но основной смысл всего этого - чтобы железка не работала тогда, когда она может работать неправильно. Потому что иногда неправильная работа намного опаснее отказа работать, мало ли это станок какой-то или медоборудование: процедура безопасности перестала отрабатывать, и станок начинает шинковать тушки рабочих, весело жи.
Аноним 25/12/16 Вск 01:48:38  900347
>>900344
Что такое цикл кода? Зачем называть таймером то, что не таймер?
Аноним 25/12/16 Вск 02:41:36  900356
>>900347
Это таймер, но вот в каких единицах он считает время - хз. Может в единицах обращений к коду.

Любой код так или иначе зациклен, иначе он не смог бы отработать больше одного раза.
Аноним 25/12/16 Вск 02:59:01  900363
>>900356
Один и тот же кусок программной памяти может последовательно вызываться множеством тредов и ни разу - одним и тем же.

Таймер не может считать время в обе стороны, как в >>900344

К чему это все и как оно относится к исходному примеру?
Аноним 25/12/16 Вск 03:34:44  900377
>>900363
Самое простое, что это может быть - это сброс самого таймера.
Дотикали до нуля - сбросили таймер, и по новой.
Аноним 25/12/16 Вск 05:28:34  900415
>>899765 (OP)
>1. bool needRestart = (timer == 0) ? true : false;
Триал intellijIdea? lol
Аноним 25/12/16 Вск 17:10:48  900644
B4UOiTcIIAEjei3[...].png (15Кб, 807x172)
CoetaEAUkAAxxY8[...].jpg (36Кб, 585x358)
CuHllIZUAAAkbuc[...].jpg (43Кб, 744x496)
Аноним 25/12/16 Вск 19:01:28  900722
>>900644
Со второй и третьей что не так?
Аноним 25/12/16 Вск 19:05:33  900728
>>900722
Он просто интересное постит, наверно. Вторую явно профи писал. Чувствуется рука мастера.
Аноним 25/12/16 Вск 22:18:13  900913
>>900644
Пацаны, поясните что с первой не так.
Если это единственное место в программе, на которое влияет Зимнее/Летнее время, то вроде бы ок.
Аноним 25/12/16 Вск 22:41:29  900921
>>900913
чувствуется рука гения
#define LOOP(start, stop, iter, shift) for (int iter = start; iter != stop; iter += shift)

LOOP(0, 10, i, 1) { puts(strings); }
Аноним 25/12/16 Вск 23:04:24  900938
>>900644
Кокой пиздос на третьей, охуенно.
Аноним 26/12/16 Пнд 02:33:14  901046
>>900921
Выведет 11 строк.
Аноним 26/12/16 Пнд 13:33:19  901215
>>900921
int start = computation which returns 1;
int end = computation which returns 0;
// alot of codes
LOOP(start, end, i 1) {
// code
}
// oops
Аноним 26/12/16 Пнд 19:36:25  901434
Заценивайте мой кодстайл. http://paste.ofcode.org/SxBJpaehZAE7LcuBLAptZZ

Хочу написать инжектор криптолокера в другой процесс. Может быть даже буду копировать ДЛЛку целиком в адресное пространство процесса для лучшего стелсирования. Чтобы админ первым делом полез в список процессов, не увидел там процесс криптолокера и охуел.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 38 | 3 | 19
Назад Вверх Каталог Обновить

Топ тредов
Избранное