Извините, но матрица с адресными диодами + ATTINY45/85 сделает все тоже самое гораздо быстрее и в RGB (причем можно даже без библиотек), а использовать для такой задачи такой мощный проц да еще и обычные светодиодные матрицы - я даже не знаю что сказать.
Это если мы говорим про обращение к thrd-party сервисам, и при этом at хранится на клиенте в js.
А я говорил про авторизацию на своём собственном сервере с использованием ac/at. Получается что механизм этот ничем не лучше обычной сессии с кукой в httponly.
И мы возвращемся к моему первому комментарию - зачем все эти токены, если тоже самое представляет собой короткоживущая httponly кука. Ещё раз - речь про собственный сервер.
Есть клиент на нем access token, есть бэк, на нем refresh token, access token был уведен и в пределах его жизни Боб отлично работает с бэком, при его устаревании бэк продляет чей либо access token - Алисы или Боба, кто первый, после этого refresh token также перегенерируется и будет храниться на бэке - верно? Те узнать про компрометацию можно по невалидной паре at/rt и то, если она таки пройдет, а то если Алиса к бэку больше не обратится - то и детекта не будет.
В случае с кукой - при ее генерации она хранится и на клиенте и на сервере, при продлении она пересохраняется и при продлении также сравнивается что также даёт информацию о компрметации.
Всегда было интересно, чем пара Access Token/Refresh Token безопаснее http-only куки, устанавливаемой на короткое время и продливаемой бэком? Точно также не даст CSRF, и точно также при угоне в течении ее жизни можно будет эксплойтить бэк. В чем принципиальная разница?
В какой-то совсем внешней библиотеке эти определения находиться не смогут
Да, но если вдруг понадобиться в этой библиотеке обратиться к какой-то шаблонной фии с каким-то типом, что мешает просто заинклюдить файл с этой фй и вызвать ее с нужным типом?
Я правильно понимаю, что у нас есть некая шаблонная функция?
Ну для примера пусть будет minimum:
template <typename T> T minimum (const T &a, const T &b) {
return a < b ? a : b;
}
Есть внешний файл, где она объявлена, допустим utils.cpp
Если понадобилось вызвать эту фю для какого-либо произвольного типа где-либо в другом файле, можно же сделать так:
#include "utils.cpp"
typedef unsigned int MYTYPE;
MYTYPE a = 5, b = 7;
cout << minimum( a, b );
Или я задачу не верно понял?
Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется вместе с исходным кодом. Это нужно, чтобы не писать boilerplate-код (копипаст)
Или на примере того-же мока - напиши его один раз, вынеси в отдельный файл - и где надо - заинклюдь чтобы не было boilerpate-а.
Я специально нанял человека из россии, решил молодому мальчику помочь.
Из начала повествования. А надо было собеседовать и проверять и не надо было тянуть - в этом и была ошибка.
А так да - наняли человека не подходящего под требования.
Еще раз - у миддла или сеньора данной ошибки по просту бы не было.
А "оправдывание" было как раз из-за того, что Василий был не из той категории, которая требовалась.
Он не знал что делать - когда это происходит со зрелым девом - реакция будет абсолютно другая - он будет копать, пока либо совсем не упрется, либо не решит.
Если же юн либо возрастом, либо умом - то будет то, что описано в статье. Т.е. "оправдывание" описанное в статье - просто обычная психологическая защита.
Вы думаете, миддлов и даже сеньоров мало, которые говорят «ничего не знаю, проблема где-то не в моём коде»?
Конечно такие есть - но они это делают, четко понимая зачем и почему.
Это - не психологическая защита, а расчет - и это, естественно, совершенно другое и для другого.
Нигде про это не сказано, но из комментариев автора выходит, что брали вообще чтобы "помочь"...
и у него неплохое резюме
Когда резюме - пусть даже и не плохое - являлось гарантом чего-либо?
но 100% достоверно оценить компетенции специалиста просто по резюме и собеседованиям в принципе нереально
Естественно, но здесь даже попытку не сделали, зато повелись на слова "Я буду копать!"
а про то, что ныть «чужая библиотека виновата» — отстой
Дак это и вытекает из компетенций кандидата - миддл так бы не стал делать, а попытался бы решить проблему или хотя-бы в ней разобраться (на самом деле он бы просто не стал юзать данный стэк и этой конкретной проблемы вообще бы не существовало).
На самом деле автору повезло с кандидатом - могу бы еще пару месяцев копаться и тянуть время, вместо чего он сделал красный звоночек своим предупреждением - радоваться нужно.
Вменяемые программисты получаются не из невменяемых, а из обычных программистов без опыта, если добавить опыт через мануалы и практику.
Из невменяемых плюс мануалы вы получите невменяемого минус мануалы и минус время.
Поставить на ноги? У вас богодельня или бизнес? Если первое - вопросов не имею. Если бизнес - то надо чётко понимать затраты и профиты от такого действа и благодарность тут не причём.
Ну и отлично - он сэкономил вам кучу времени - радуйтесь, что так получилось. Берите вменяемого программиста и успевайте убрать косяк до того, как топы поймут откуда он.
Я правильно понимаю, что ваша организация наняла молодого программиста, не проверив его компетенции и технологии, которыми он владеет, как и его опыт?
Вы поставили перед ним таску, которую он сделал исходя из своих компетенций и технологий, которыми он владеет?
Потом вы попросили его сделать некоторый лоулевел, который ему не дан ибо для него нужен миддл.
Вопрос - а почему вы взяли вместо миддла или сеньора непонятно кого? Потому что он дешев?
Ну и кто тогда должен оправдываться?
Те ваша восточноевропейская эйчарка взяла неизвестно кого, вы его пустили к себе в стэк не проверив, а оправдываться надо только ему?
В ситуации виноваты все, через кого Василий к вам попал, при этом Василий виноват меньше всего - таску, которую ему озвучивали он закрыл, то что делать он не умеет - он честно про это вам сказал, а не стал гуглить и тянуть время - как обычно бывает. Так что далеко не все так однозначно.
О правильности я в конце первого комментария написал - нужно всеми силами избегать блокирующего кода везде, где только можно (не только в микропроцессорах) , и использовать его только тогда, когда это прямо реально нужно и кейсов таких от силы пол-процента наберется.
Задачу можно решить быстро и в лоб, а можно решить хорошо. Блокирующий - это всегда быстро и в лоб, что потом чревато проблемами и переделками.
Зачем все подряд упаковывать в конечные автоматы?!
Потому что это более универсальней и покрывает весь спектр задач, это можно сделать один раз, а потом лишь переиспльзовать будучи на 99% уверенным, что код этот может всегда расширить на бОльшее колво случаев и работать он будет предсказуемо и четко. При этом самого кода при таком подходе будет не сильно больше, нежели у решения в лоб.
Регистры vs библиотеки на примере сердечек
Ну мне, как инженеру-программисту жалко проц, который 99.99999% времени проводит в idle)
Это как гончая, которая сидит дома и ее не пускают на улицу.
Для каждой задачи есть свой инструмент, это точно, но здесь, имхо, микроскопом гвозди на 80 вгоняются в бетон одним ударом.
Регистры vs библиотеки на примере сердечек
Извините, но матрица с адресными диодами + ATTINY45/85 сделает все тоже самое гораздо быстрее и в RGB (причем можно даже без библиотек), а использовать для такой задачи такой мощный проц да еще и обычные светодиодные матрицы - я даже не знаю что сказать.
«Яндекс»: отсутствует угроза для данных пользователей или работоспособности платформы, утечка кодов была инсайдом
Ну как сказать - коды только утекли - сейчас действительно угрозы нет - так как они еще не проанализированы и эксплойты не написаны)
Все еще работаете с access token на клиенте? Тогда мы идем к вам
Это если мы говорим про обращение к thrd-party сервисам, и при этом at хранится на клиенте в js.
А я говорил про авторизацию на своём собственном сервере с использованием ac/at. Получается что механизм этот ничем не лучше обычной сессии с кукой в httponly.
И мы возвращемся к моему первому комментарию - зачем все эти токены, если тоже самое представляет собой короткоживущая httponly кука. Ещё раз - речь про собственный сервер.
Все еще работаете с access token на клиенте? Тогда мы идем к вам
Почему? Алисе ведь он продляет этот at, в чем проблема у Боба сделать тоже самое имея этот-же at?
Все еще работаете с access token на клиенте? Тогда мы идем к вам
Есть клиент на нем access token, есть бэк, на нем refresh token, access token был уведен и в пределах его жизни Боб отлично работает с бэком, при его устаревании бэк продляет чей либо access token - Алисы или Боба, кто первый, после этого refresh token также перегенерируется и будет храниться на бэке - верно? Те узнать про компрометацию можно по невалидной паре at/rt и то, если она таки пройдет, а то если Алиса к бэку больше не обратится - то и детекта не будет.
В случае с кукой - при ее генерации она хранится и на клиенте и на сервере, при продлении она пересохраняется и при продлении также сравнивается что также даёт информацию о компрметации.
Или я что-то не так понял?
Все еще работаете с access token на клиенте? Тогда мы идем к вам
Всегда было интересно, чем пара Access Token/Refresh Token безопаснее http-only куки, устанавливаемой на короткое время и продливаемой бэком? Точно также не даст CSRF, и точно также при угоне в течении ее жизни можно будет эксплойтить бэк. В чем принципиальная разница?
Кодогенератор Waffle++ для C++
Да, но если вдруг понадобиться в этой библиотеке обратиться к какой-то шаблонной фии с каким-то типом, что мешает просто заинклюдить файл с этой фй и вызвать ее с нужным типом?
Я правильно понимаю, что у нас есть некая шаблонная функция?
Ну для примера пусть будет minimum:
Есть внешний файл, где она объявлена, допустим utils.cpp
Если понадобилось вызвать эту фю для какого-либо произвольного типа где-либо в другом файле, можно же сделать так:
Или я задачу не верно понял?
Или на примере того-же мока - напиши его один раз, вынеси в отдельный файл - и где надо - заинклюдь чтобы не было boilerpate-а.
Кодогенератор Waffle++ для C++
Можно вопрос от неспециалиста в C++?
А почему нельзя просто заинклюдить библиотеку и вызывать оттуда нужные фии?
Чем лучше писать какие-то сущности в комментариях, которые потом развернутся в код?
Прекращайте оправдываться
Из начала повествования. А надо было собеседовать и проверять и не надо было тянуть - в этом и была ошибка.
А так да - наняли человека не подходящего под требования.
Еще раз - у миддла или сеньора данной ошибки по просту бы не было.
А "оправдывание" было как раз из-за того, что Василий был не из той категории, которая требовалась.
Он не знал что делать - когда это происходит со зрелым девом - реакция будет абсолютно другая - он будет копать, пока либо совсем не упрется, либо не решит.
Если же юн либо возрастом, либо умом - то будет то, что описано в статье. Т.е. "оправдывание" описанное в статье - просто обычная психологическая защита.
Конечно такие есть - но они это делают, четко понимая зачем и почему.
Это - не психологическая защита, а расчет - и это, естественно, совершенно другое и для другого.
Прекращайте оправдываться
Нигде про это не сказано, но из комментариев автора выходит, что брали вообще чтобы "помочь"...
Когда резюме - пусть даже и не плохое - являлось гарантом чего-либо?
Естественно, но здесь даже попытку не сделали, зато повелись на слова "Я буду копать!"
Дак это и вытекает из компетенций кандидата - миддл так бы не стал делать, а попытался бы решить проблему или хотя-бы в ней разобраться (на самом деле он бы просто не стал юзать данный стэк и этой конкретной проблемы вообще бы не существовало).
На самом деле автору повезло с кандидатом - могу бы еще пару месяцев копаться и тянуть время, вместо чего он сделал красный звоночек своим предупреждением - радоваться нужно.
Прекращайте оправдываться
Вменяемые программисты получаются не из невменяемых, а из обычных программистов без опыта, если добавить опыт через мануалы и практику.
Из невменяемых плюс мануалы вы получите невменяемого минус мануалы и минус время.
Поставить на ноги? У вас богодельня или бизнес? Если первое - вопросов не имею. Если бизнес - то надо чётко понимать затраты и профиты от такого действа и благодарность тут не причём.
Прекращайте оправдываться
Ну и отлично - он сэкономил вам кучу времени - радуйтесь, что так получилось.
Берите вменяемого программиста и успевайте убрать косяк до того, как топы поймут откуда он.
Прекращайте оправдываться
Те вы взяли программиста чтобы помочь, а не чтобы он выполнял требования бизнеса? Ну я даже не знаю что сказать...
Если человек не может - его надо заменять. Это его факап, как программиста, а все остальное - ваш, как руководителя.
Прекращайте оправдываться
Я правильно понимаю, что ваша организация наняла молодого программиста, не проверив его компетенции и технологии, которыми он владеет, как и его опыт?
Вы поставили перед ним таску, которую он сделал исходя из своих компетенций и технологий, которыми он владеет?
Потом вы попросили его сделать некоторый лоулевел, который ему не дан ибо для него нужен миддл.
Вопрос - а почему вы взяли вместо миддла или сеньора непонятно кого? Потому что он дешев?
Ну и кто тогда должен оправдываться?
Те ваша восточноевропейская эйчарка взяла неизвестно кого, вы его пустили к себе в стэк не проверив, а оправдываться надо только ему?
В ситуации виноваты все, через кого Василий к вам попал, при этом Василий виноват меньше всего - таску, которую ему озвучивали он закрыл, то что делать он не умеет - он честно про это вам сказал, а не стал гуглить и тянуть время - как обычно бывает. Так что далеко не все так однозначно.
P. S. и причём здесь платный NestJS?
Программный рендер в стиле игры Doom
Понял, а если blur наложить - шум не уменьшится?
Если кубики - как получаются внешние поверхности как полу-сферы?
Вообще, очень круто было бы увидеть что-то такое же как в этой статье.
Ибо сейчас все юзают шейдеры и не парятся, а вот на чистом си не найти.
Программный рендер в стиле игры Doom
А исходники где-то можно посмотреть? Особенно дыма.
Блокирующая обработка тактовой кнопки для Arduino. Настолько полный гайд, что ты устанешь его читать
Вот и так считаю - куда проще заинклюдить проверенный файл и вообще больше на это время не тратить.
Переиспользование универсального кода как раз и даёт возможность снизить стоимость разработки.
Блокирующая обработка тактовой кнопки для Arduino. Настолько полный гайд, что ты устанешь его читать
Обычный антидребезг, схем много - простейшая кондер 100nf параллельно кнопке.
Блокирующая обработка тактовой кнопки для Arduino. Настолько полный гайд, что ты устанешь его читать
О правильности я в конце первого комментария написал - нужно всеми силами избегать блокирующего кода везде, где только можно (не только в микропроцессорах) , и использовать его только тогда, когда это прямо реально нужно и кейсов таких от силы пол-процента наберется.
Задачу можно решить быстро и в лоб, а можно решить хорошо. Блокирующий - это всегда быстро и в лоб, что потом чревато проблемами и переделками.
Потому что это более универсальней и покрывает весь спектр задач, это можно сделать один раз, а потом лишь переиспльзовать будучи на 99% уверенным, что код этот может всегда расширить на бОльшее колво случаев и работать он будет предсказуемо и четко. При этом самого кода при таком подходе будет не сильно больше, нежели у решения в лоб.