All streams
Search
Write a publication
Pull to refresh
54
0.7
Михаил Кнутарев @mmMike

User

Send message

После того как сам своими глазами видел забитый 100% O2 баллон, на котором, на наклейке, было написано N36… (Египет. раздолбайсво.)
Нырять, не проверив % самолично (что многие ленятся, хотя это положено делать и в журнал писать) — ни за что не рискну. Особенно, если в ДЦ это "не обязательно".

Порой инструкторы имеют навыки хуже, нежели студенты хороших дайвинг-инструкторов.

Так это и в 2006 году было, когда Андрей Чистяков еще активно нырял.


Как меня одна инструкторша (владелица ДЦ в Шарме) потащила в Томас каньон.
Типа подожди здесь под верхней аркой, а мы сейчас пониже сходим во 2-ю. Клиент захотел.


Ну постоял… подождал. Что такого. Инструктор же попросила. 20 что ли тогда у меня дайвов было. И компа как класса не было (таблички были).

Один из вариантов (например для REST Web API) настройки nginx — это что ни будь типа


server {
    listen 443 ssl;
    ssl_verify_depth 1;
    ssl_certificate /etc/nginx/Server.crt;
    ssl_certificate_key /etc/nginx/ServerKey.pem;
    ssl_client_certificate /etc/nginx/CA.crt;
    ssl_verify_client on;

        location / {
        proxy_set_header X-TLS-iDN $ssl_client_i_dn;
        proxy_set_header X-TLS-sDN $ssl_client_s_dn;
       }
 }

А уже сервис, принимающий запрос, понимает по атрибутам клиентского сертификата — кто конкретно пришел и какие у него права.
Чисто для иллюстрации пример (можно и другие извращения с $ssl_client_.. придумать)


Но вообще, USB токен для захода на сайт через браузер ИМХО не удобно. Уж лучше брелок с OTP паролем (как альтернатива SMS/Push), как второй фактор к обычному паролю (ну или самый дешевый вариант — OTP приложение под смартфон).


А вот для аутентификации программных клиентов — аппаратный токен — само то..


И да… Для безопасности бы, не помешало бы изменить ssl_session_timeout с 5m по умолчанию, на что то более разумное (меньшее значение)

А Чо, когда то давно мои одноклассники втирали девочкам с югов:
"Иду в школу — беру ружье. Вдруг на улице (Новосибирск) медведь встретится."
Говорят что верили..

Есть разработка для погружения водолаза при низкой температуре. Иногда клапана покрываются инеем, и человек задыхается. Несколько институтов не могли придумать, что с этим делать — разрабатывали специальные материалы, делали электрообогрев, внедряли всякие современные подходы.
Наши ребята решили проблему за 150 рублей. Холодный воздух, который идет из баллона (а под воду ходят в -40) они пропускали через змеевик, пропущенный через китайский термос. Воздух нагревается, люди идут под воду и могут там работать».

О Господи… какой треш…
Вот, вроде бы, казалось интересно все в статье. А нарываешься на такое и думаешь "А может и все остальное что описано в статье, и что я не знаю — то же треш?"


Поскольку каждую зиму у меня 2-4 выезда на подледку (нырнуть чисто для фана), то фраза "Несколько институтов не могли придумать, что с этим делать" вызывает смех.
И решение с китайским термосом… Автор наверное перепутал. Пролить регулятор, если он начал становится на фрифло из термоса — да. А шланг через термос — что за бред. Ничему это не поможет и никак существенно не согреет воздух (15..20 литров/мин).
Долго и лениво объяснять детали.

Почему то все спорят о бекдорах и пр.


Да бабло главное!
КриптоПро. Это же мечта любого владельца стать фактически монополистом, чья монополия защищена на гос уровне. Это же какая кормушка то на ближайшие годы.


Сделать стандартное хранилище ключей — да зачем. У крипто про свой формат. Сядешь и не слезешь потом с продуктов КриптоПро.

Да все так живут.
Каждый новый проект — все то же… Достало.

Я не очень понимаю ерничье в некоторых комментариях.


В Европе это процесс локализации завершился еще 10 лет назад (при активном сопротивление Visa & MC).
Когда все внутренние межбанковские операции (и комиссии и контроль за операциями) "отобрали" у Visa & MC.
И не без явного влияния правительств и законов. На долю Visa & MC остаются только международные платежи.


В России этот процесс сильно затянулся (опять же при активном влиянии Visa & MC).


Говорить о причинах можно как угодно. Но, главная причина, если смотреть в корень — денежные потоки. Ну мне так, по крайней мере, кажется.


Так что тенденция вполне понятная.
EMV 3DS (v2.x) более продвинутый стандарт чем, например, 3DS от Visa и НСПК за 2 года вполне откатала процесс и технологию, что бы рискнуть массово перевести все банки на себя.

смешно когда наши доблестные ФСБшники включают школьников и говорят, что 11 лет назад этот алгоритм начинал разрабатываться чуть ли не в свободное время, поэтому они в итоге потеряли и сиды и скорее всего программу, которая генерировала таблицу подстановок.

А я в принципе верю. Это конечно не в плюс им.
Верю, глядя на некоторые сертифицированные (ФСБ) криптографические продукты рекомендованные для .....


Как вам например:


  • Cпецификация с примерами на "C" с выражениями типа "int len = sizeof(str)", где "str" — указатель на строку!? (len дальше используется как размер строки для подписи!!)
  • Или "аутентфикация" запроса (не шифрованного!) в протоколе (стандарта прошлого столения) внутри TCP/IP путем "секретного" константного пароля как одного из полей запроса. А что бы это секретный пароль вдруг не увидели в канале, то он XOR константной. И не строкой, а одним и тем же константным байтом каждого байта "секретного" б.ля пароля?
  • А спецификация на протокол в внутри PDF. Которую 2 часа после copy|paste пришлось очищать от артефактов PDF?

И да… формуляры по документации все в лучших традициях. 90% воды и бюрократическ-военного стиля языка.


Честно… "За державу обидно".
Распилы сплошные.

Вообще то речь шла про эмбедeд. И только о нем.
А это очень специфичная тема.


И как я писал, под другое окружение писать сейчас на C/C++ это мазохизм.
Код написанный под Solaris и Linux просто таки пестрит #ifdef платформо зависимыми. А уж про совместимость кода (особенно мультиязычного) для Windows и Unix… Это вообще жесть и угар (хотя и приходилось такое делать).

Это что за ассемблер такой, который берёт и выкидывает куски кода?

Обычный GCC c флагом "-Os". Вполне нормально поведение. Ну если не забывать про некоторые тонкости типа использования volatile для static переменных, которые используются только в прерываниях.


Речь идёт вот подобных вещах. Когда вот такая функция:…
проверку на NULL содержит. А вот такая вот:… уже нет. И вызова foo — там тоже нет.

Вы меня удивили… решил даже проверить. Неа… проверка остается.
В каком компиляторе подобное поведение (нет проверки) наблюдали?


 269:main.c        **** int foo() { return 1;}
 20956                      .loc 1 270 0
 20957                      @ args = 0, pretend = 0, frame = 0
 20958                      @ frame_needed = 0, uses_anonymous_args = 0
 20959                      @ link register save eliminated.
 20960                      .loc 1 270 0
 20961 0000 0120            movs    r0, #1
 20962 0002 7047            bx  lr
 20963                  .LFE44:
 20965                      .global __aeabi_f2iz
 20966                      .section    .text.bar,"ax",%progbits
 20967                      .align  1
 20968                      .global bar
 20969                      .thumb
 20970                      .thumb_func
 20972                  bar:
 20973                  .LFB45:
 270:main.c        **** 
 271:main.c        **** int bar(float *p) {
 20974                      .loc 1 272 0
 20975                      @ args = 0, pretend = 0, frame = 0
 20976                      @ frame_needed = 0, uses_anonymous_args = 0
 20977                  .LVL30:
 20978 0000 08B5            push    {r3, lr}
 20979                  .LCFI4:
 272:main.c        ****    if (p==NULL) {
 20980                      .loc 1 273 0
 20981 0002 18B1            cbz r0, .L35
 20982                  .LVL31:
 273:main.c        ****       return foo();
 274:main.c        ****    } else {
 275:main.c        ****        return *p;
 20983                      .loc 1 276 0
 20984 0004 0068            ldr r0, [r0, #0]    @ float
 20985                  .LVL32:
 20986 0006 FFF7FEFF        bl  __aeabi_f2iz
 20987 000a 00E0            b   .L34
 20988                  .LVL33:
 20989                  .L35:
 274:main.c        ****       return foo();
 20990                      .loc 1 274 0
 20991 000c 0120            movs    r0, #1
 20992                  .LVL34:
 20993                  .L34:
 276:main.c        ****    }
 277:main.c        **** }
 20994                      .loc 1 278 0
 20995 000e 08BD            pop {r3, pc}
 20996                  .LFE45:
 20998                      .section    .text.baz,"ax",%progbits
 20999                      .align  1
 21000                      .global baz
 21001                      .thumb
 21002                      .thumb_func
 21004                  baz:
 21005                  .LFB46:
 278:main.c        **** 
 279:main.c        **** int baz(float *p) {
 21006                      .loc 1 280 0
 21007                      @ args = 0, pretend = 0, frame = 0
 21008                      @ frame_needed = 0, uses_anonymous_args = 0
 21009                  .LVL35:
 21010 0000 08B5            push    {r3, lr}
 21011                  .LCFI5:
 280:main.c        ****    float x = *p;
 281:main.c        ****    if (p==NULL) {
 21012                      .loc 1 282 0
 21013 0002 18B1            cbz r0, .L38
 21014                  .LVL36:
 282:main.c        ****       return foo();
 283:main.c        ****    } else {
 284:main.c        ****        return *p;
 21015                      .loc 1 285 0
 21016 0004 0068            ldr r0, [r0, #0]    @ float
 21017                  .LVL37:
 21018 0006 FFF7FEFF        bl  __aeabi_f2iz
 21019 000a 00E0            b   .L37
 21020                  .LVL38:
 21021                  .L38:
 283:main.c        ****       return foo();
 21022                      .loc 1 283 0
 21023 000c 0120            movs    r0, #1
 21024                  .LVL39:
 21025                  .L37:
 285:main.c        ****    }

И просто для примера… (gcc version 4.5.0 ARM STM Cortex-M3)
Если просто
float p;
float x =
p;
то компилятор выдаст предупреждение, а код с оптимизирует (p и x не используются.)


Если x потом поиспользовать, то…
272:main.c * float p;
273:main.c **
float x = *p;

20968 0008 1868 ldr r0, [r3, #0] @ float
20969 000a FFF7FEFF bl __aeabi_f2iz


В принципе вполне так высокоуровневый ассемблер…
"int __aeabi_f2iz(float) — float (single precision) to integer C-style conversion"

Просто пытался понять, почему вы именно виртуальные функции отметили — они-то как раз просты для понимания.

Для понимания в концепциях языка — просты.
А вот сгенеренный код (ассемблерный листинг GCC) не так тривиален и сопоставим как с кодом С.


Вот только это и имел в виду. Только в контексте разработки под контроллеры, где часто нужно смотреть на уровне кода сгенеренного.

Да же хуже. Это еще от опций компилятора сильно зависит.
Но в целом, ассемблерный код вполне читаем и разбираем в случае проблем.


И да… все сказанное именно к микропроцессорам относится.


Писать в 2019 году новые программы (web сервисы и т.п.) на C++. Я не мазохист.
Хватает того что приходится поддерживать старые наработки на C++.

Нормально все с виртуальными функциями. И с шаблонами то же.
Вопрос был по понимание основ языка. "С" очень простой язык.
"С++" в полном объеме существенно сложнее.

По-моему в эмбеде его очень любят… потому что не знают. И используют как «высокоуровневый ассемблер».

Какое то у Вас противоречивое заявление. И что можно не знать то в "C"? Он в базе простой и примитивный. Если кто то знает ассемблер (используют как «высокоуровневый ассемблер»), то уж с "C" фраза "потому что не знают" звучит странно.


Это в "С++" можно наступить на грабли с tempalate, виртуальными таблицами функций и пр.


Лично я использую "C" в эмбеде потому что в случае проблем вида "Почему не так работает", "нужно четко оценить время выполнения блока кода внутри прерывания" и т.д. всегда можно посмотреть код ассемблера и понять проблему, а не использовать слова "магия".


Например, анализируя результат компиляции (листинг ассемблера), нашел ошибку в GCC кросс компиляторе (STM Cortex-M3). И теперь определенный вариант switch|case просто не использую.

Классический древний способ отмывания денег.
Арт объект типа.
За $1.300.000.
ну ну.

На сегодняшний день в России предлагается единственное готовое технологическое решение

Какой грандиозный распил бюджета..

Китай соцстрана…
Пытаться одним словом охарактеризовать строй и политическую ситуацию конкретного государства на данный момент — это не серьезно.
"Капитализм", "социализм", "коммунизм",… — оставьте эти ярлыки пропагандистам. Они никакого отношения к тому, на что их навешивают не имеют.


В прочем, не та тема и не та площадка это обсуждать.

Вы как то странно сравниваете ситуации. О каком вообще выборе импорто замещение или нет могла идти речь во времена СССР.
Законы США на тот момент по поставке высокотехнологичного оборудования в СССР и соц. страны были драконовскими. Гораздо жестче чем сейчас ситуация с Huawei.
Образцы закупали через 3-и страны и нелегально.

Information

Rating
1,837-th
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity