Вы бы видели, какие кандидаты пишут запросы SQL/LINQ в тестовых заданиях. Например, select * в память и там уже сортировка по ключу.
О как категорично. И догматично.
Вот как раз 2 часа назад копался в плане запроса select и была мысль, а не перенсети ли order by на уровень прикладного процесса, что бы уменьшить нагрузку на сервер БД.. Ибо cost на select и order by по меньшей мере сопоставим и даже 2-5% экономии на массовых запроса будет ролять. А в объеме передаваемых данных по TCP/IP разницы нет. А на хосте/рабочей станции клиента проц ресурсы - это не ресурсы хоста БД.
После того как в одном комплексе шифрования (сертифицированная криптография однако) увидел что в трафике (TCP/IP+...не буду говорить что, но из 70-х) передается "секретный" пароль "закрытый" по XOR циклически одним (!) константным(!) байтом, я ничему не удивляюсь. И документация (формуляры...) в классическом "военно бюрократическом" исполнении. Где целый раздел посвящен правилам безопасного хранения использования этого "пароля".
Хоть в pdf, но так и всплывает в голове образ "синьки" (если кто еще помнит что это)
В pdf включено было описание API, которое не вытаскиваемоев из pdf и.. В общем классика такой "докумиентации". Ругался/смеялся и плакал. Но сертифицированая гадость. Только ее и ни ни другое.
А еще автор не постеснялся свое имя в заголовки *.h вставить :)
резидент России подписал закон о введении цифрового рубля с 1 сентября 2026 года. По нему крупнейшие банки и торговые точки будут обязаны принимать эту «официальную криптовалюту».
Отложат или отменят. Как и все сделанное за бюджетные деньги и насильно, ПО/архитектура для ЦР сделано через ж..
После осваивания средств, выделенных на подобные бюджетные задачи, в конце цепочки в таких случаях оказывается студент (ПТУ) и/или выпускник курсов "освойте программирование за неделю". Ибо больше никого за остаток (копейки) не потраченных в цепчке средст нанять не получится. Есть конечно и редкие исключения, но в целом статистика за это.
Замечательно будут принимать ТСП платежи по QRC ЦР в ритейле, если статус платежа доступен только "платеж принят в обработку" (кто в теме, тот поймет). А человека на кассе просто побъет вся очередь за скорость обслуживания.
Калории считать по тому что написано на упаковке и считать что это очень точно.. ну ну.. в 99% случаев пишут, беря просто "известные" цифры из справочника по ингридиентам. Но.. например, калории фруктов меняются в очень широких пределах (степень зрелости, сорт и пр.). А в справочниках... одна цифра на все. А это вообще всего касается.
А как получают цифры калорий еды? Сжиганием в лабораторных условиях. Надеятся на то, что это прям 1:1 как то соотвествует организму человека - наивно. Так.. для ориентировки. не более.
Я не знаю как выживают люди, если для них меленькие отклонения смертельны.
Сегодня предприятия сталкиваются с комплексным вызовом, когда даже высокие зарплаты не компенсируют тяжелые условия труда в глазах молодых специалистов. Особенно остро проблема стоит в моногородах, где традиционно располагаются горно‑обогатительные комбинаты.
Если корову меньше кормить и больше доить.. то она будет что? "Конечно больше доиться и меньше кормиться" с точки зрения таких вот генеральных (гениальных менаджеров) как автор статьи.
У меня есть знакомые из Междуреченска.. 150 тыс говорите... ну ну. А сами за 60..70 (по факту) не пробовали смены в забое в аварийных шахтах отрабатывать? И деваться на кузбасе из этого гребанного Междуреченска некуда и работы никакой другой по слути там нет.
А самое обидное что этот "Дмитрий Лохов" после того как все окончательно накроется уйдет с "портфелио" куда ни будь еще.. руководить.
А я не вижу в этом описание условия ограничения самого счетчика. Есть только условия на флаг. А фраза "без переполнения" != "ограничен сверху значеним порога а снизу 0".
Да я нудный. Но слишком часто приходилось тратить на переделку и общение с заказчиками из за "подразумевалось".
Что мне не понравилось в вашем конкретном примере, это то, что нижнего порога у вас нет.
Обратите внимание, что я несколько раз говорил в первых постах что специально не буду додумывать за.. Поэтому пример сделал специально утрированыным срого по описанию.
И прекрасно осознаю, что если у автора по факту работало, то это просто алгоритм не до конца описан.
Эхх. Никогда не нужно в ТЗ/описании додумывать за кого то. "это логично", додуманное за кого то (если четко не описано), ведет в ад.
Это применительно ко всему.
Я не оспариваю ваш вариант. Классический вариант плавующего окна (счетчик с ограниченим и тригерное значение). Но только в исходном описание детали пропущены, которые уже "додумываются" :)
Ну так это и есть доп. типа "а мы это подразумевали". Только что на работе с этим столкнулся (конечно не по столь простому случаю). И жду ответа "а что вы подразумевали?". . вот поэтому и фигней сейчас страдаю на хабре :)
Условно, досчитали до 5, выставили флаг, что кнопка нажата
Да. флаг выставили. Но нигде не сказано, что счетчик в 0 сбросили или перестали +1 при нажатой кнопке. Фактом выставления флага же все не заканчивается. Т.е. можно продолжить ... 4,5,6,7,8,.. (кнопка же нажата)
Занудничаю.. Но тут и по работе в постановке задачи "а мы это подразумевали" наложилось.
в этой ветку был коммент про "по-хорошему, надо энкодер соответствующий использовать". На него и тригернуло.
Похоже подумали, что я на Ваш счет.. Не.. даже не думал. Извините именно Вам не хотел. Да и даже не к исходному комменту. вообще "про ардуинщиков" было "лирическое отступление" и в не том комменте что нужно.
новый переходной процесс (отпускания). Для демонстрации поведения счетчика "+1/-1 от сэпла". Что счетчик по формулировке алгоритма продолжает щелкать при нажатой кнопке.
Мне фраза одного из комментаторов "по-хорошему, надо энкодер соответствующий использовать, а не лепить из того есть под рукой." напомнила просьбу помочь с "почему у меня ошибка с энкодера накапливается" (что то там про балансирующего робота, где это было очень важно).
На все попытки объяснить что такое джиттер энкродера и почему нужно использовать аппартные счетчики для квадратурного энкодера вместо программной реализации, и почему не нужно исопльзовать прерывания на сигналы от экодера..
Последовал вот почти такой же ответ. Типа у меня экодеры видимо дерьмо и попробую другие. Т.е. человек даже не хотел вникать в причины. Все просил дать ему ссылку на работающую ардуино либу.
Так что.. да. Агрессия и клеймо "ардуинщик". Может у меня шаблон в голове на "ардуинщик". Но асоциация такая:
Хочет найти готовую либу.
Не хочет вникать как работает "работает и ладно".
От електронники далек как только можно и не хочет в это вникать.
1-я строка это то, что потенциально можно считать с входа в программе (ну, скажем, если считывать на максимальной частоте проца/входа). ну не нарисую я же текстом аналоговый сигнал :) А вторая строчка - то что считали. А "___" во второй строке - это типа dt между считываниями.
Корректной картинкой. Но долго и неохота рисовать.
Для интерактивной кнопки вообще практически все будет работать.
Но сам подход с ингорирование проблем алисаинга.. как бы для кнопки не важно (хотя и избыточно в большинстве случаев). Но это же будут пихать и для других целей!
Для иллюстрации.. синие и красное - это ну скажем на 0.01% отличающееся друг от друга частоты семплирования. 100 - типа порговое значение. Просто для иллюстрации/примера. За счет алиасинга пороговое значение будет достигаться в алгоритме "+1/-1 от семпла" фактически в непредскзуемое время.
На синем - больше было не учтенных выбросов 1. А на красном больще не учтенных выбросов 0. Сделать оверсеплинг для дребезга, где фактическая частота может быть десятки МГц.. это не возможно да и не нужно.
Я диаграммой показывал именно переходной процесс и то, что семплирование с фикисрованной частотой с непрерывным интегрированием результата какого либо смысла не имеет. Поскольку результаты плавают и ловить какое то определенное место в промежутке переходного процесса все одно не выдет таким способом. Если требуется ловить именно отсутиве дребезга в течении какого то времени. То так и надо писать. Но тогда лучше (IMHO):
И пороговое значение понятнее и проще. А если в счетчике учитыватеся и переходной процесс и его окончание считается как пороговое значение счетчика, то вермя "нажата кнопка" будет считаться от начала переходного процесса. И будет случаныйм образом плавать, поскольку в порог включить придется и семплы после переходного и семплы внутри переходного. А они случайны (количестов 0 != количеству 1).
Аналогично можно ловить отжатие кнопки. А если требуется просто ловить "кнопка нажата или нет", то проще просто брать сэмплы (период скажем 500ms) и считать семп за резутьтат "нежата/не нажата" в типичной задаче типа "зажатая кнопка увеличивает громкость".
Ровно как описан алгоритм создаем программный счетчик, который инкриминируется, если кнопка нажата и декриментируется если кнопка отжата счетчик будет возврастать при каждом опросе нажатой кнопки (за 1 секунду семплирования с периодом скажем 20ms это будет +1000/20). И как это неперывно увеличивающееся значние используется в "флаг, который принимает свое значение в зависимости от пересечения верхнего или нижнего установленного порога" = ?.
Ровно как описано в исходном посте. А если автор чего то "подразумевал" (типа порог.. обнуляем.. учитываем и т.д.) так я не ясновидец и додумывать не буду что он подразумевал.
Я могу догадываться что и зачем имелось в виду. Но если описание алгоритма такое каое есть, то ну просто сложно удержаться от..
У вас в примере магическим образом частотад дребезка это константа, совпадающая с частотой опроса. А проблемы алиасинга так же магически "частоту опроса GPIO надо приподнять".
Если снять осцилограмму с кнопки в момент ее нажатия/отпускания (хорошим осцилографом с малой емкостю и большим входным сопростивлением). То будет видна характерная картина. Собствено это и есть "дребез контакта". наберите "дребез контакта осциллограмма" в поиске. Там будут картинки примера дребезка на осцилографе.
В зависимости от физического исполнения "кнопки", емкости на входa, входного сопротивления входа и пр. может быть разной формы.. разной длитетельности (может до 5-10ms).
По-моему, там просто случайные 0 и 1, приходящие на порт МК.
Не приходящие, а считываемые с порта (я специально это отметил). А приходит напряжение/ток сложной формы. "Цировой сигнал" это абстракция. Почему то "писатели под ардуино" про это забывают/не знают. А потому удивляются "а почему не так работает как я думал".
4-й курс (времена динозавов правда).. схемотехника.. лаба посвященная этому. "Что бы запомнили". Для меня электроника и схемотехника - хоби. Но запомнил жжж..
О как категорично. И догматично.
Вот как раз 2 часа назад копался в плане запроса select и была мысль, а не перенсети ли order by на уровень прикладного процесса, что бы уменьшить нагрузку на сервер БД..
Ибо cost на select и order by по меньшей мере сопоставим и даже 2-5% экономии на массовых запроса будет ролять. А в объеме передаваемых данных по TCP/IP разницы нет.
А на хосте/рабочей станции клиента проц ресурсы - это не ресурсы хоста БД.
это просто пример. Не более.
После того как в одном комплексе шифрования (сертифицированная криптография однако) увидел что в трафике (TCP/IP+...не буду говорить что, но из 70-х) передается "секретный" пароль "закрытый" по XOR циклически одним (!) константным(!) байтом, я ничему не удивляюсь.
И документация (формуляры...) в классическом "военно бюрократическом" исполнении.
Где целый раздел посвящен правилам безопасного хранения использования этого "пароля".
Хоть в pdf, но так и всплывает в голове образ "синьки" (если кто еще помнит что это)
В pdf включено было описание API, которое не вытаскиваемоев из pdf и.. В общем классика такой "докумиентации". Ругался/смеялся и плакал. Но сертифицированая гадость. Только ее и ни ни другое.
А еще автор не постеснялся свое имя в заголовки *.h вставить :)
Отложат или отменят. Как и все сделанное за бюджетные деньги и насильно, ПО/архитектура для ЦР сделано через ж..
После осваивания средств, выделенных на подобные бюджетные задачи, в конце цепочки в таких случаях оказывается студент (ПТУ) и/или выпускник курсов "освойте программирование за неделю". Ибо больше никого за остаток (копейки) не потраченных в цепчке средст нанять не получится.
Есть конечно и редкие исключения, но в целом статистика за это.
Замечательно будут принимать ТСП платежи по QRC ЦР в ритейле, если статус платежа доступен только "платеж принят в обработку" (кто в теме, тот поймет). А человека на кассе просто побъет вся очередь за скорость обслуживания.
Калории считать по тому что написано на упаковке и считать что это очень точно.. ну ну..
в 99% случаев пишут, беря просто "известные" цифры из справочника по ингридиентам.
Но.. например, калории фруктов меняются в очень широких пределах (степень зрелости, сорт и пр.).
А в справочниках... одна цифра на все. А это вообще всего касается.
А как получают цифры калорий еды? Сжиганием в лабораторных условиях.
Надеятся на то, что это прям 1:1 как то соотвествует организму человека - наивно.
Так.. для ориентировки. не более.
Я не знаю как выживают люди, если для них меленькие отклонения смертельны.
Если корову меньше кормить и больше доить.. то она будет что?
"Конечно больше доиться и меньше кормиться" с точки зрения таких вот генеральных (гениальных менаджеров) как автор статьи.
У меня есть знакомые из Междуреченска.. 150 тыс говорите... ну ну. А сами за 60..70 (по факту) не пробовали смены в забое в аварийных шахтах отрабатывать?
И деваться на кузбасе из этого гребанного Междуреченска некуда и работы никакой другой по слути там нет.
А самое обидное что этот "Дмитрий Лохов" после того как все окончательно накроется уйдет с "портфелио" куда ни будь еще.. руководить.
А я не вижу в этом описание условия ограничения самого счетчика.
Есть только условия на флаг.
А фраза "без переполнения" != "ограничен сверху значеним порога а снизу 0".
Да я нудный. Но слишком часто приходилось тратить на переделку и общение с заказчиками из за "подразумевалось".
Обратите внимание, что я несколько раз говорил в первых постах что специально не буду додумывать за..
Поэтому пример сделал специально утрированыным срого по описанию.
И прекрасно осознаю, что если у автора по факту работало, то это просто алгоритм не до конца описан.
Эхх.
Никогда не нужно в ТЗ/описании додумывать за кого то.
"это логично", додуманное за кого то (если четко не описано), ведет в ад.
Это применительно ко всему.
Я не оспариваю ваш вариант.
Классический вариант плавующего окна (счетчик с ограниченим и тригерное значение). Но только в исходном описание детали пропущены, которые уже "додумываются" :)
Ну так это и есть доп. типа "а мы это подразумевали".
Только что на работе с этим столкнулся (конечно не по столь простому случаю). И жду ответа "а что вы подразумевали?". .
вот поэтому и фигней сейчас страдаю на хабре :)
Перепутал ветки. Читал одновременно.. (в коротком переыве в работе)
бывает.
еще раз извинините.
Да. флаг выставили. Но нигде не сказано, что счетчик в 0 сбросили или перестали +1 при нажатой кнопке. Фактом выставления флага же все не заканчивается. Т.е. можно продолжить ... 4,5,6,7,8,.. (кнопка же нажата)
Занудничаю..
Но тут и по работе в постановке задачи "а мы это подразумевали" наложилось.
в этой ветку был коммент про "по-хорошему, надо энкодер соответствующий использовать". На него и тригернуло.
Похоже подумали, что я на Ваш счет.. Не.. даже не думал.
Извините именно Вам не хотел.
Да и даже не к исходному комменту.
вообще "про ардуинщиков" было "лирическое отступление" и в не том комменте что нужно.
новый переходной процесс (отпускания).
Для демонстрации поведения счетчика "+1/-1 от сэпла". Что счетчик по формулировке алгоритма продолжает щелкать при нажатой кнопке.
Мне фраза одного из комментаторов
"по-хорошему, надо энкодер соответствующий использовать, а не лепить из того есть под рукой." напомнила просьбу помочь с "почему у меня ошибка с энкодера накапливается" (что то там про балансирующего робота, где это было очень важно).
На все попытки объяснить что такое джиттер энкродера и почему нужно использовать аппартные счетчики для квадратурного энкодера вместо программной реализации, и почему не нужно исопльзовать прерывания на сигналы от экодера..
Последовал вот почти такой же ответ. Типа у меня экодеры видимо дерьмо и попробую другие. Т.е. человек даже не хотел вникать в причины. Все просил дать ему ссылку на работающую ардуино либу.
Так что.. да. Агрессия и клеймо "ардуинщик". Может у меня шаблон в голове на "ардуинщик". Но асоциация такая:
Хочет найти готовую либу.
Не хочет вникать как работает "работает и ладно".
От електронники далек как только можно и не хочет в это вникать.
1-я строка это то, что потенциально можно считать с входа в программе (ну, скажем, если считывать на максимальной частоте проца/входа).
ну не нарисую я же текстом аналоговый сигнал :)
А вторая строчка - то что считали. А "___" во второй строке - это типа dt между считываниями.
Корректной картинкой. Но долго и неохота рисовать.
Для интерактивной кнопки вообще практически все будет работать.
Но сам подход с ингорирование проблем алисаинга..
как бы для кнопки не важно (хотя и избыточно в большинстве случаев). Но это же будут пихать и для других целей!
не корректно написал. НЕ на входе. А считываемое с входа в программе.
Для иллюстрации.. синие и красное - это ну скажем на 0.01% отличающееся друг от друга частоты семплирования. 100 - типа порговое значение. Просто для иллюстрации/примера. За счет алиасинга пороговое значение будет достигаться в алгоритме "+1/-1 от семпла" фактически в непредскзуемое время.
На синем - больше было не учтенных выбросов 1. А на красном больще не учтенных выбросов 0.
Сделать оверсеплинг для дребезга, где фактическая частота может быть десятки МГц.. это не возможно да и не нужно.
там где "..." - там закончивается.
Я диаграммой показывал именно переходной процесс и то, что семплирование с фикисрованной частотой с непрерывным интегрированием результата какого либо смысла не имеет. Поскольку результаты плавают и ловить какое то определенное место в промежутке переходного процесса все одно не выдет таким способом.
Если требуется ловить именно отсутиве дребезга в течении какого то времени. То так и надо писать.
Но тогда лучше (IMHO):
"счетичк нажатия" += 1, если семп == "1"
"счетичк нажатия" = 0, если семп == "0"
счетичк "нажатия" > порога (устоявшийся процесс) -> сигнал о нажатой кнопке + "счетичк нажатия" = 0.
И пороговое значение понятнее и проще. А если в счетчике учитыватеся и переходной процесс и его окончание считается как пороговое значение счетчика, то вермя "нажата кнопка" будет считаться от начала переходного процесса. И будет случаныйм образом плавать, поскольку в порог включить придется и семплы после переходного и семплы внутри переходного. А они случайны (количестов 0 != количеству 1).
Аналогично можно ловить отжатие кнопки.
А если требуется просто ловить "кнопка нажата или нет", то проще просто брать сэмплы (период скажем 500ms) и считать семп за резутьтат "нежата/не нажата" в типичной задаче типа "зажатая кнопка увеличивает громкость".
Ровно как описан алгоритм создаем программный счетчик, который инкриминируется, если кнопка нажата и декриментируется если кнопка отжата
счетчик будет возврастать при каждом опросе нажатой кнопки (за 1 секунду семплирования с периодом скажем 20ms это будет +1000/20).
И как это неперывно увеличивающееся значние используется в "флаг, который принимает свое значение в зависимости от пересечения верхнего или нижнего установленного порога" = ?.
Ровно как описано в исходном посте. А если автор чего то "подразумевал" (типа порог.. обнуляем.. учитываем и т.д.) так я не ясновидец и додумывать не буду что он подразумевал.
Я могу догадываться что и зачем имелось в виду.
Но если описание алгоритма такое каое есть, то ну просто сложно удержаться от..
У вас в примере магическим образом частотад дребезка это константа, совпадающая с
частотой опроса.
А проблемы алиасинга так же магически "частоту опроса GPIO надо приподнять".
Мне больше нечего сказать на это..
Если снять осцилограмму с кнопки в момент ее нажатия/отпускания (хорошим осцилографом с малой емкостю и большим входным сопростивлением). То будет видна характерная картина. Собствено это и есть "дребез контакта".
наберите "дребез контакта осциллограмма" в поиске. Там будут картинки примера дребезка на осцилографе.
В зависимости от физического исполнения "кнопки", емкости на входa, входного сопротивления входа и пр. может быть разной формы.. разной длитетельности (может до 5-10ms).
Не приходящие, а считываемые с порта (я специально это отметил). А приходит напряжение/ток сложной формы.
"Цировой сигнал" это абстракция. Почему то "писатели под ардуино" про это забывают/не знают. А потому удивляются "а почему не так работает как я думал".
4-й курс (времена динозавов правда).. схемотехника.. лаба посвященная этому. "Что бы запомнили".
Для меня электроника и схемотехника - хоби. Но запомнил жжж..