• Systemd, интерактивные скрипты и таймеры
    +1

    А о чем вообще статья, какую проблему автор пытается решить? Где-то в середине статьи внезапно появилось слово "прошивка" (embedded-системы?), потом postgresq и zabbix (нет, показалось, наверное). И в конце — странная потребность выключать систему в интерактивном режиме, но через systemd.

  • C# является языком низкого уровня?
    +7

    Тоже кажется, что вопрос в статье поставлен некорректно. Правильнее было бы "Можно ли на C# писать быстрый код?". С учётом окончания статьи с натяжкой можно было бы спросить "Можно ли на C# писать системный код?" (хотя это вопрос не столько к языку, сколько к платформе). Ну а что касается того, является ли C# низкоуровневым, то мое мнение не изменилось: нет, не является.

  • F5 покупает NGINX
  • WebRTC на своем сайте — без багов и бюджета
    +1

    Если учесть, что в WebRTC основной трафик передается peer to peer, сигнализация много не требует, а клиента WebRTC компания и так поддерживает, то бесплатный виджет, требующий активного аккаунта и регулярного пополнения счета — это отличный способ привлечения клиентов! Так что я вполне поверю в аттракцион невиданной щедрости :)

  • Serverless CI/CD на AWS
    +4
    Спасибо за статью.

    Вы перевели serverless framework как «бессерверная платформа», но в данном случае это название фреймворка (имя собственное), и его лучше было бы оставить без перевода. Кроме того, в третьем абзаце ссылка должна вести на сайт serverless.com.

    Сейчас трудно понять, когда идет речь о бессерверной архитектуре, а когда — о конкретном программном продукте. Поправьте, пожалуйста (хотя бы ссылку).

    PS Решил комментарием, а не в личку, потому что эта информация может помочь остальным читателям разобраться в статье.
  • Spring Annotations: магия AOP
    +2
    Спасибо за статью, довольно интересно. Тем не менее, мне кажется, что сам пример не слишком удачный.

    Во-первых, вы заменили обычную инициализацию в конструкторе (заметьте, что у вас там был вызов super с константными аргументами) на сеттеры. Конструктор мне представляется предпочтительным, потому что в случае использования сеттеров можно получить не до конца инициализированный объект. Да и смысла в такой замене я не вижу: возможна ли ситуация, в которой PlanetMapper, унаследованный от AbstractMapper<Planet, PlanetDto>, будет использовать другие классы entity и dto?

    Во-вторых, добавление новой сущности (аннотации) и замена простого вызова сеттера на магию BeanPostProcessor и reflection затрудняет отладку и поддержку кода, потому что в таком коде намного сложнее разобраться. Вероятно, «оценят Ваш скилл далеко не все» относится в первую очередь к этому аспекту. Кстати, имена полей в строковых константах, как в коде fieldName.equals(«entityClass»), обещают добавить веселья при рефакторинге: при переименовании компилятор не увидит проблемы, но в рантайме поле перестанет корректно инициализироваться.

    Наконец, я так и не смог понять, какую проблему вы пытаетесь решить при помощи аннотации.

    PS AOP в статье не увидел.
  • Об операторах Publish, Connect, RefCount и Share в RxSwift
    0

    Весьма хорошее введение в ReactiveX даёт https://youtu.be/3LKMwkuK0ZE, хотя и на примере RxJS.

  • Облачное хранилище: нужна 100% совместимость с Amazon S3 API
    0

    Восемь девяток при размещении всей системы в одном дата-центре? Оценка надежности от производителя ПО? Вы это серьезно?

  • Splunk. Введение в анализ машинных данных — часть 1. Примеры SPL запросов и визуализация логов
    0
    Ну как сказать базовый… Разграничения доступа в бесплатной версии нет, про алерты не помню (если уж сравнивать с бесплатным ELK). Хотя если речь идет о Splunk, вряд ли кто-то всерьез рассматривает развертывание бесплатной лицензии.
  • Splunk. Введение в анализ машинных данных — часть 1. Примеры SPL запросов и визуализация логов
    +1
    Использовал Splunk в течение трех лет под задачи анализа логов. Объемы небольшие (несколько Гб в сутки), поэтому сервер всего один. За все время нареканий по работе продукта не было.

    Из плюсов по сравнению с Graylog: большое количество готовых источников / коннекторов / интеграций, возможность крутить логи как угодно и выжимать из них аналитику, скорость получения результатов (т.е. обычно достаточно грамотного запроса без тяжелой артиллерии), простота расширения системы (подключение нестандартных источников, кастомные команды в языке запросов, кастомные дашборды и т.д.). Из минусов — стоимость.

    С Graylog знаком (правда, довольно поверхностно), и если бы у меня сейчас стоял выбор между системами, то однозначно Splunk.

    Для первого знакомства с возможностями я бы порекомендовал книжку https://www.splunk.com/web_assets/v5/book/Exploring_Splunk.pdf. Она написана для предыдущей версии, зато бесплатная. Мне в свое время пригодилась. Ну и не стоит забывать, что у Splunk есть пробная / бесплатная версия на 500 Мб/сутки.
  • «Пьяная» база данных: как на 1 базе мы сделали 7 тестовых площадок, причём у каждой — свой собственный инкремент и дифф
    0
    Комментарий удален
  • ASP.NET Core: Развертывание веб-приложения в службе приложений Azure с помощью Visual Studio
    +1
    За туториал спасибо. Но очень хотелось бы видеть больше пояснений — для чего выполняется то или иное действие или почему выбираются именно такие параметры? Например, почему не должен быть отмечен пункт «Host in the cloud» или что такое миграции (я все же считаю, что статья рассчитана на новичков, раз уж созданию типового проекта в VS посвящено четыре скриншота).
  • Стандартные алгоритмы на практике. Расчет цепей. Часть 1
    0
    Для подстраховки сделаем переменную, которая будет отвечать за количество проделанных итераций на случай, если цепь окажется не замкнутой или в ней есть циклы.

    А упомянутые крутые алгоритмы-то где? То, что написано выше, совсем не круто.
  • Реализация конечного автомата на языке VHDL
    0
    Использование after в синтезируемом коде — это плохо, потому что:

    1. Вы смешиваете functional simulation и gate-level simulation (который после P&R). Задача первого — убедиться, что Ваш алгоритм правильный, второго — что суровая физическая реальность не разрушит Ваш правильный алгоритм. Если gate-level simulation выполняется слишком медленно, то стоит посмотреть в сторону timing analysis (у Altera это, если не ошибаюсь, TimeQuest): он укажет Вам, в каких именно местах могут быть проблемы с временными характеристиками (плюс компилятор может использовать эту информацию для оптимизации схемы).

    2. Возможности повторного использования Вашего кода сильно ограниченны, поскольку он не инвариантен относительно частоты: при 10 МГц задержка 1 ns — это почти дельта-задержка (в том плане, что она мала по сравнению с периодом), на частоте 100 МГц — уже чувствительно, а на 1 ГГц — целый такт. В зависимости от заданной частоты работы схемы functional simulation будет давать очень разные результаты, и это явно не то, к чему Вы стремитесь. Ну и никакого физического обоснования для константы 1 ns нет, все будет зависеть от модели ПЛИС.
  • Ключевое слово «var» в Java: пожалуйста, только не это
    +2
    Читаю весь этот холивар и удивляюсь… Я не знаю Java, но знаком с C# с бета-версии первого .NET Framework и довольно часто пишу что-то «для себя» (для автоматизации рутины). Ключевое слово var появилось в C# не для того, чтобы программистам было необходимо меньше печатать — для этого Microsoft развивает IntelliSense в Visual Studio. И не для того, чтобы код выглядел красиво — для этого есть гайды.

    Ключевое слово var было добавлено в C# одновременно с анонимными типами и в первую очередь для их поддержки. Какой тип вы укажите у переменной в следующей конструкции:
    var point = new { X = 1, Y = 2, Z = 3, T = 4};

    А анонимные типы появились для того, чтобы можно было их использовать в LINQ-запросах и лямбда-выражениях, поскольку описывать отдельный класс на каждый чих, который нужен только в одной-двух строчках программы, да и то в качестве промежуточных результатов — это захламление проекта. Пример реального кода:
    var list = json["data"].Select(row => new { Address = row["i"].Value<String>(), Port = row["p"].Value<String>() });
    foreach (var item in list) {...}

    PS Поздно увидел комментарий lasalas, который, в общем-то, говорил о том же самом. Уступаю пальму первенства.
  • LTSP: Терминальный сервер на Linux
    0
    Сертифицированных средств защиты для Linux немного: слишком узкая ниша и высокая стоимость сертификации. Думаю, можно посмотреть в сторону сертифицированного дистрибутива (варианты есть на http://www.linuxcenter.ru/shop/sertified_fstek). Настраивать терминальные серверы и рабочие станции, скорее всего, придется руками: я не знаю, входят ли пакеты LTSP в состав сертифицированного решения и что прописано в эксплуатационной документации об установке стороннего ПО.

    На всякий случай напоминаю, что по линии ФСТЭК России и ФСБ России сертификация осуществляется поэкземплярно (для ФСТЭК России это подтверждается номерной голограммой на дистрибутиве ПО). Поэтому то, что дистрибутив прошел сертификацию, еще не означает, что именно Ваш экземпляр сертифицирован.

    PS На сайте ФСТЭК России есть полный реестр сертифицированных СЗИ, можете покопаться в нем (http://fstec.ru/component/attachments/download/489).

    PPS Нашел интересный обзор по теме СЗИ для Линукс: http://www.aladdin-rd.ru/company/pressroom/articles/41672.
  • LTSP: Терминальный сервер на Linux
    0
    Если я правильно понял widestream, то он как раз не использует LTSP для рендер-фермы, а просто грузит Linux по сети.
  • СХД за 100 тысяч или как сэкономить на дорогих проектах
    0
    >> Это одни из НЕМНОГИХ историй успеха, о которых мы решили написать в статье.
    Надеюсь, все же из МНОГИХ, а то какой-то черный пиар получается. Или вы просто заранее предупреждаете?
  • 9 секретов онлайн-платежей. Часть 1: настройка 3-D Secure
    0
    Я бы внимательно почитал договор с банком. Обычно в нем пишется о подтверждении транзакций, CVV2/CVC2, необходимости держать данные карты в тайне и т.д. С высокой долей вероятности вы сможете опротестовать платеж с неверным CVV2/CVC2 (хотя, опять же, все зависит от условий договора). Только не забывайте, что опротестование валидных платежей может рассматриваться как мошенничество (со всеми вытекающими), если будет доказано, что платеж действительно осуществлен вами.
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    +2
    Эмм… Странно, что ниже Вы просите привести критику. Мне казалось, что все обсуждение выше — это, собственно, и есть критика.

    Давайте кратко по пунктам:
    1. Отсутствие преимуществ перед известными методами при наличии недостатков.
    2. Отсутствие преимуществ перед передачей исходного сообщения без использования стеганографии (не обеспечивается факт скрытой передачи).
    3. Ограниченная область применения в связи с низкой скоростью.
    4. Недостаточная строгость формулировок в статье, из-за чего возникли варианты двойного толкования в комментариях (это затрудняет обсуждение, но на сам метод, разумеется, не влияет).
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    +2
    Видимо, нельзя голосовать только вверх. Все-таки придётся что-нибудь запостить! Но за попытку большое спасибо!
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    +1
    Также можно использовать отрицательные значения степени.

    PS Сорри, из-за плевка в карму теперь не могу использовать теги.
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    0
    Отвечу кратко. Он уменя «бесконечен по-гречески».
    Забрал себе в цитаты.

    Почитайте название. там есть фраза «очень медленная».
    Вы спросили, что мне мешает использовать по картинке на каждое слово, я ответил.

    Я не приводил методы сравнения чем хуже, а чем лучше.
    Изобретать что-то, что во всех отношениях хуже имеющихся аналогов, немного бессмысленно. Следовательно, должны быть какие-то сильные стороны — вот про них и хотелось услышать.

    Простите, не понял. Как именно? в каком контейнере?
    Да без контейнера! Если уж следовать Кашену, то злоумышленник знает способ встраивания (см. цитату из его работы выше) и без труда восстановит последовательность хешей. Также напомню, что «так и не может научное сообщество решить, что считать «подозрительным», а что не считать…» (это Ваш ответ), поэтому не вижу отличий в передаче последовательности изображений или последовательности байтов.

    Я не хочу вас обижать… Но это не верно. Во первых не естественным образом, а во-вторых не равномерное.
    Вы вибираете изображения с определенным хешем, я — с определенным распределением и значениями младших битов (исходное сообщение предварительно зашифрую на константном ключе, чтобы поправить его статистику). Принципиальных отличий так и не увидел.

    Наконец, если уж говорить о секретности по Кашену, то в вашей системе между пустым и заполненным стегоконтейнерами существует одно огромное отличие: длина пустого контейнера равна нулю, заполненного — количеству байтов (если считать длину контейнера в изображениях). Так что тезис о совершенной секретности тоже не выполняется.

    PS Если единственный минус на моем комментарии от Вас, то это выглядит как-то неприлично, дискуссия все же. Если же от другого хабраюзера, то я призываю присоединиться к обсуждению и высказать, чем вызван минус.
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    –1
    При конечном выходном алфавите Ваш подход вырождается в шифр простой замены
    Так у меня бесконечный алфавит. Что мешает вам в >2015 году выгрузить по одной сущности на каждое слово?
    С бесконечным алфавитом конструкция напоминает шифр Вернам
    Мое множество конечное
    Павел, кажется, я только что испытал мощнейший когнитивный диссонанс. Определитесь, пожалуйста, конечный ли у Вас выходной алфавит. Всё же конечное и бесконечное множества имеют строгие математические определения, а в статье была претензия на мат. модель.

    Что мешает вам в >2015 году выгрузить по одной сущности на каждое слово?
    Необходимость спрятать 1 Гб данных. По картинке на каждый байт — это миллиард изображений. Миллиард, Карл! А перебрать придется в худшем случае (все байты сообщения одинаковые) порядка 256×109 изображений (для таких формул LaTeX не нужен). В то же время, запрятать 1 Гб данных в 500 Гб HD-видео вполне можно.

    Кроме того, объясните мне, пожалуйста:
    1. Чем хеш-стеганография лучше метода LSB? Могу предложить сразу два варианта LSB: либо шифровать данные перед встраиванием и использовать контейнеры, у которых младшие биты естественным образом имеют равномерное распределение, либо подбирать контейнеры, у которых определенные младшие биты уже совпадают с сообщением.
    2. Почему я не могу сообщение из вашего примера передать безо всяких котиков просто в виде 0x55 0хD1 0x34 0х23 0x75 0х98? В чем принципиальное отличие?

    Также напомню, что по Кошену the embedding function F and the distributions of all random variables are known to Eve, т.е. злоумышленник знает способ встраивания, given a covertext distribution, the embedding function F is universal for information embedding, т.е. способ встраивания не зависит от распределения встраиваемых сообщений, и the key has been chosen at random and communicated over a secure channel prior to the use of the stegosystem, т.е. ключ (если Вы будете его использовать) выбирается независимо от сообщения.

    PS (с надеждой) Это ведь не кандидатская диссертация в МГТУ, правда?
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    0
    Не всю: схемы с памятью одной булевой логикой не опишешь.
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    +1
    Потому и не рассматриваются, что бесконечный алфавит — это математическая абстракция, не достижимая в реальности.

    С бесконечным алфавитом конструкция напоминает шифр Вернама, поскольку P(c=b) = P(c=b | m=a) = 0.

    При конечном выходном алфавите Ваш подход вырождается в шифр простой замены: каждому символу открытого текста ставится в соответствие определённое конечное множество, из которого случайным образом выбирается один представитель. Имея достаточный объем шифртекстов, такой алгоритм можно ломать частотным анализом.
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    0
    Для random.org даже хеш не нужен, этот сайт выдаёт истинно случайные последовательности.

    То, что Вы описываете, больше похоже на шифр подстановки с бесконечным выходным алфавитом (почему, собственно, такие шифры и не рассматриваются в классической криптографии).
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    0
    Тогда предлагаю передавать исходное сообщение, назвав его выгрузкой с random.org. В принципе, не более подозрительно, чем длинная череда котиков (хомячков, голых женщин).
  • Знакомьтесь: Хеш-стеганография. Очень медленная, но совершенно секретная
    +3
    Поздравляю, Павел, Вы изобрели шифр простой замены. При бесконечном множестве котиков получается что-то, отдалённо напоминающее шифр Вернама. Но стеганография ли это?
  • Как сделать из мухи слона
    0
    А для полного счастья вместо реляционной базы данных можно использовать граф-ориентированную, например neo4j или OrientDB.
  • Парадигма ситуационно-ориентированного программирования
    +2
    Уважаемый потенциальный Папа Римский, задумайтесь о возможностях, которые открываются, когда одни программы могут автоматизированно (и осмысленно) изменять другие программы.

    [sarcasm] Тогда мы сможем писать трансляторы и полиморфные вирусы! [/sarcasm]
  • Парадигма ситуационно-ориентированного программирования
    0
    Программирование по фотографии посредством процесса коммуникации. Этот подход по моему скромному мнению как раз то, что нужно.

    Smalltalk, Erlang, SOA?
  • Парадигма ситуационно-ориентированного программирования
    +2
    Мне кажется, автор вплотную подошел к написанию либо курсовой работы, либо дипломного проекта. Навскидку предложенная (довольно сырая, надо сказать) концепция обладает несколькими серьезными недостатками.

    Самый очевидный — это зацикливание: если обработчик события «переменная равна точно X» не изменяет значение X, то он будет выполняться вечно. Следующий случай зацикливания — обработчик A запускается при изменении X и меняет Y, обработчик B запускается при изменении Y и меняет X. Чтобы отловить такие ситуации в статике, необходимо построить полный граф конечного автомата, а он для любой более-менее серьезной программы будет ОЧЕНЬ большим.

    Отказ от ветвлений и циклов заставляет все такие конструкции преобразовывать в обработчики событий, а все локальные переменные переносить в глобальную область видимости и сопоставлять с обработчиками. Производительность системы будет не просто низкой, а сверхнизкой; заодно и требования к памяти непомерно вырастут. Управлять (в терминах разработки) таким количеством обработчиков тоже будет непросто.

    Проблему отслеживания связей «ситуационно-ориентированное программирование» тоже не решает: изменение одного обработчика по-прежнему слабо предсказуемо влияет на работу остальной части программы. Того же самого эффекта можно достичь в структурном программировании применением средств статического анализа кода (ресурсоемкость опускаю) и/или аккуратного документирования всех побочных эффектов функций.

    В изложенном подходе ничего принципиально нового не обнаружилось: достаточно посмотреть на системы моделирования годов так 80-х прошлого века. Навскидку парадигма «ситуационно-ориентированного программирования» была реализована в языке VHDL (1983+, если верить вики).

    Обработчики событий называются в нем процессами (process), состояние хранится в сигналах (signal). Процесс запускается при изменении одного из сигналов, к которым привязан процесс; значения измененных в процессе сигналов обновляются в момент завершения процесса. Все процессы выполняются параллельно и мгновенно (абстракция виртуальной машины VHDL). Каждый сигнал может изменяться только одним процессом, что частично снимает проблему конкурентного изменения состояния. Зацикливание выявляется в рантайме (нет, мы не будем решать проблему останова).

    Следует учитывать, что в VHDL не отказались ни от ветвлений, ни от циклов: в противном случае написание кода стало бы адом для программиста. Кроме того, процесс может хранить свое внутреннее состояние в локальных переменных (на них, кстати, обработчики событий навесить нельзя): это также сокращает объем кода и разгружает глобальную область видимости.

    Чтобы сделать код модульным и управляемым, в VHDL поддерживаются дополнительный уровень абстракции в виде функциональных блоков (entity), все общение между которыми происходит только путем изменения входных и выходных сигналов.

    В современном варианте тот же подход реализуется конечными автоматами (привет, case) в простых случаях или паттернами типа publisher/subscriber и message broker'ами — в более сложных.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.