Как стать автором
Обновить
4
Карма
0
Рейтинг

Пользователь

HashMap по версии Go вместе с реализацией на дженериках

Понятно, спасибо. А что будет, если "key2" лежит не в начальном бакете, а в overflow? Вы же не проверяете overflow, если ячейка уже запомнена.

HashMap по версии Go вместе с реализацией на дженериках

if insertIdx == nil && isCellEmpty(b.tophash[i]) {
    insertIdx = new(int)
    *insertIdx = i
}

Вот здесь, в bucket.Put(), у вас случаем break не пропущен?

Security микросервисов с помощью Spring Cloud Gateway и TokenReley

Вот теперь ситуация понятна. Спасибо!

Security микросервисов с помощью Spring Cloud Gateway и TokenReley

"The filter extracts an access token from the currently authenticated user" - извлекает из куки (ранее созданной самим Gateway)? Или gateway отдает пользователю токен в незашифрованном виде, а UserAgent сам хранит этот токен и передает на gateway через заголовок "Authorization: Bearer ..."?

И спасибо за статью. Я сам не джавист, было интересно посмотреть, как у вас реализуется auth. Выглядит очень удобно: gateway с минимумом кода - круть!

Упс и опаньки… Юмору не место в сообщениях об ошибках

Вспомнился древний боян

Hidden text

These are some of the error messages produced by Apple's MPW C compiler. These are all real. (If you must know I was bored one afternoon and decompiled the String resources for the compiler.) The compiler is 324k in size so these are just an excerpt I hope. I'm not sure where I stand on the copyright issue.

Tony Cunningham

"String literal too long (I let you have 512 characters, that's 3 more than ANSI said I should)"

"...And the lord said, 'lo, there shall only be case or default labels inside a switch statement'"

"a typedef name was a complete surprise to me at this point in your program"

"'Volatile' and 'Register' are not miscible"

"You can't modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler"

"This struct already has a perfectly good definition"

"This onion already has a perfectly good definition"

"type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you don't care, I'm just trying to annoy you)"

"Can't cast a void type to type void (because the ANSI spec. says so, that's why)"

"Huh ?"

"can't go mucking with a 'void *'"

"we already did this function"

"This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn't wide enough to read this whole error message"

"Call me paranoid but finding '/*' inside this comment makes me suspicious"

"Too many errors on one line (make fewer)"

"Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer"

Security микросервисов с помощью Spring Cloud Gateway и TokenReley

Клиентом в данной ситуации является Gateway. У него есть и id, и secret, и получение токена идет через back-channel. Токен он, судя по диаграмме, на сторону UserAgent не отдает, а пользуется им от имени resource owner. Ну и кука, как я понял, здесь используется (`RemoveRequestHeader=Cookie `)...

Security микросервисов с помощью Spring Cloud Gateway и TokenReley

А где Gateway хранит токен? Сохраняет в сессию в БД? Или помещает в куку, которую отдает пользователю?

Комптометр — механический компьютер 135-летней выдержки

У старых советских кассовых аппаратов была очень похожая клавиатура. Они основаны на принципе комптометра?

Например, такой аппарат: https://habr.com/en/post/376385/

Когда байты были маленькими

Экран ввода пароля запускается под специальной учетной записью. Проблема в том, что для локализованных версий ОС к таким учеткам применяются параметры по умолчанию, в том числе и дефолтный язык ввода (русский для русской версии Windows). Это поддается настройке:

https://superuser.com/questions/955783/setting-the-default-input-method-for-the-windows-10-login-screen

А вот то что пароль должен быть обязательно на латинице - первый раз слышу. Откуда это?

Автоматы в деле. Штабелер. Засады ПЛК

Ну вот вам реальный пример логического выражения в LD (Step7)

Пример

Конечно, его можно представить в "обычном" языке программирования в виде цепочки операторов &&, || или в виде вложенных блоков if. Но это сильно усложнит чтение и отладку программы.

А вот что можно увидеть в этом примере:

  • Логическое выражение с дюжиной элементов представлено очень компактно. Сразу видно логические связи между компонентами. Одна из самых типовых задач поддержки - выяснить, почему нажатие кнопки не запускает механизм. При запущенном отладчике вы сразу увидите, какие "контакты" замкнуты, а какие - нет. Кнопка - слева, выход - справа. Сразу видно, где не проходит "сигнал". А теперь представьте, как вы будете отлаживать это же выражение в языке программирования на основе текста.

  • В логике автоматизации есть свои паттерны и стандартные элементы: "передний фронт", "задержка включения", "триггер" и т.д. В примере элемент -(P)- выделяет передний фронт. Да, это тоже можно реализовать в "обычном" ЯП. Но код будет гораздо менее читаемым. В качестве паттерна здесь же можно увидеть так называемый "подхват": по нажатию кнопки I762.6 логический сигнал на механизм M440.4 "закорачивает" кнопку и удерживает механизм в рабочем состоянии, пока он не доедет до конца. В LD этот паттерн виден с первого взгляда. Чтобы это же увидеть в логическом выражении из &&, II, if, вам нужно будет прочитать его целиком.

  • В плане "синтаксического сахара", в LD очень легко вывести дополнительную текстовую информацию о каждом элементе. Например, по кнопке мы видим логический номер входа, текстовое описание-комментарий и обозначение кнопки на принципиальной схеме. Можно ли сделать нечто подобное, если вся программа представлена текстом?

Я бы не сказал, что "релейная логика" очень уж удобная. Самый адский недостаток - невозможность использования со стандартным инструментарием типа git. Но достоинства LD-логики **в её области применения** перевешивают недостатки, и никто пока не спешит предоставить достойной алтернативы.

Отмечу также, что, по моим наблюдениям, логика промышленной установки процентов на 80..90 состоит из выражений, подобных приведенному примеру, и "релейная логика" работает в них очень хорошо. Но в некоторых частях программы больше подходит как раз "традиционный" императивный код. Например, без этого сложно обойтись, когда реализуешь коммуникацию с приводами. И конкретно в Step7 тут засада: приходится писать на ассемблероподобном STL. В других реализациях МЭК с этим попроще: есть язык ST. К чему это я? МЭК-языки создавали неглупые люди, и всем тамошним инструментам есть свое применение.

Русский язык в программировании

Кодировка "ФПУ-8"? Безобразие! Язык разметки ЯГТР должен использовать исключительно КОИ-8 (ГОСТ 19768-93)

Русский язык в программировании

Да. Высокая распространенность -> больше аудитория -> проще создать большое и активное сообщество -> язык лучше развивается и проще в использовании. Для всех, в том числе и для тех, у кого английский - иностранный.

Русский язык в программировании

Вопрос к @yurixi. Как вы думаете, почему создатель Python - голландец - использовал для своего проекта английский язык?

Русский язык в программировании

Японских проектов автоматизации я пока не видел, возможно это так. Готовое оборудование - немного имел дело с Mitsubishi. Достаточно качественная документация на английском языке. Для китайских вендоров это огромная редкость. Из "обычного" японского софта приходилось работать с вот этим opensource проектом. Нормальные имена переменных на английском, попадаются комменты на японском. Но это опенсорс, так что, возможно, пример непоказательный :)

Русский язык в программировании

Если эта документация предназначена на экспорт, то ничем.

Русский язык в программировании

"Непрактично? Подержи-ка мое пиво!" - сказали китайцы. В сименсовском софте (например, в таком ) уже очень давно можно писать имена символов на любом языке, в том числе на китайском. И китайцы так делают постоянно. Переменные, дата-блоки, функции - все на китайском. Особенно весело, когда установка приходит в неработоспособном состоянии, и все на китайском, включая ПО и схемы. Причем схемы не соответствуют действительности, а обозначения в схемах и в ПО контроллера разные (разумеется, и там, и там иероглифы).

Blizzard потребовала у разработчика удалить созданный им альтернативный движок для Warcraft III

Такое ощущение, что Blizzard решила повторить историю Артаса в реальном мире: до основания разрушить королевство отцов и зафигачить на руинах новое царство мертвых.

И это все о нем? Снова про log4net

Да эти средства очень хороши, но мне по роду своей деятельности приходиться работать с десктопными приложениями для АСУТП. Львиная доля подобных программных решений начинали создаваться очень давно, хотя до сих пор выпускаются все новые версии этих программ. Из отечественных разработок можно упомянуть, например MasterScada.

Поясните пожалуйста, какая связь между сабжем и MasterScada. Вы интегрируете свое приложение с этой скадой и пишете в лог из своего кода? Или вы как-то заставляете MasterScada работать с log4net?

И это все о нем? Снова про log4net

Методов зашифровать это безобразие не нашел, подскажите пожалуйста если недоглядел?

Раз вы работаете под Windows, то самый простой вариант - использовать SQL Server integrated security. В этом случае логина и пароля в строке соединения не будет. Но это не всегда возможно, поскольку БД может быть на другой машине, может не быть домена, могут быть разные ограничения со стороны администраторов...

Также есть простой вариант шифрования средствами Windows - DPAPI:

https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection (Windows only)

Есть также вариант для .Net Core, но я им не пользовался:

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/introduction?view=aspnetcore-6.0

Этот механизм, разумеется, неидеальный. Если у злоумышленника есть доступ к машине, и он сможет выковырять "энтропию" из приложения, то он сможет расшифровать строку соединения. Но это однозначно сложнее, чем прочитать пароль из текстового файла. Правда, я не уверен, что в вашем случае можно это применить. Просто указать зашифрованную строку в App.config уже не получится. Надо будет формировать конфигурацию log4net в вашем коде и вдобавок нужно будет создавать какой-то UI для того, чтобы сохранять/редактировать строку соединения.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность