• Поиск документов в сетевых шарах и файловых помойках
    +2
    Ого. И они используют gpl'ные компоненты во всю без учёта лицензий? Сурово.
  • Деловая переписка на английском языке: фразы и советы
    0
    Канцелярит. Иногда обнаруживается склонность к созданию условий для избегания глаголов разъясняющих суть вопроса в чрезмерно упрощающих смысл предложения формах.
  • Поиск утечек памяти в приложениях на .NET Core под Linux
    0
    В binary distro все компоненты должны быть пересобираемы (при необходимости), плюс они все собираются правильными версиями компиляторов.

    Тут претензия не к дистрибутиву, а к тому, что libsoplugin.so отгружается ms'ом как blob, без прилагающихся исходных текстов.
  • Поиск документов в сетевых шарах и файловых помойках
    +3
    Отличный пример применения докера. Просто образцово-показательный. После того, как ломается хотя бы одна из зависимостей, пересобрать золотой образ становится просто невозможно. Я бы сказал, что это гигантская куча антипаттернов системного администрирования.

    А проект хороший, да.
  • DevOps в Сбербанк-Технологиях. Инструментальный стандарт
    0
    Я никого не хочу расстреливать, но если бабушка может пользоваться воцапом на телефоне и не может терминалом сбербанка, то это
    а) заслуга гугля (эппла) и фейсбука
    б) профессиональное несоответствие дизайнера терминала сбербанка
  • DevOps в Сбербанк-Технологиях. Инструментальный стандарт
    0
    Попытался пораскинуть. Сбербанк потерял все базы и бэкапы. Убыток не более 66 ярдов. Facebook потерял все базы и все бэкапы — убыток over 500 ярдов.

    Получается, база фейсбука ценнее сбербанковской примерно в восемь раз.
  • Деловая переписка на английском языке: фразы и советы
    +2
    Словарь-активатор => thesaurus.com
  • Что и зачем Docker делает в Moby для интеграции с Kubernetes?
    0
    Я смотрю на все эти танцы вокруг того «кто сверху» и становится грустно. Из всего этого только runc выглядит как разумная программа, решающая одну проблему, но решающая её хорошо. Все остальные пытаются одновременно готовить кофе и травить тараканов. На выходе тараканы не довольны пережаренным кофе, а постетители жалуются на слабоватый дуст.
  • DevOps в Сбербанк-Технологиях. Инструментальный стандарт
    +2
    А это вопрос к вашему бизнесу — почему вам до сих пор нужны люди для обслуживания счетов. Специальный сотрудник, который показывает как и в какой последовательности на банкомате нажимать кнопки (15 тысяч отделений, 15 тысяч рабочих мест — только чтобы не сделать эргономичный интерфейс).

    Гордиться числом сотрудников, на занятых автоматизацией, может только компания, которая не считает автоматизацию приоритетом.
  • DevOps в Сбербанк-Технологиях. Инструментальный стандарт
    0
    Будет. Посмотрите с какой скоростью они реагируют на политические события.
  • DevOps в Сбербанк-Технологиях. Инструментальный стандарт
    0
    Любопытно, но в фейсбуке всего 17 тысяч человек работает, а у фейсбука и пользователей в десяток раз больше, и капитализация в десяток раз больше, и девопса у них столько, что непродохнуть.

    Почему? Наверное, потому что в фейсбуке пишут код, а сбербанке внедряют аджайл годами.
  • Философия статического анализа кода: у нас 100 программистов, анализатор нашел мало ошибок, он бесполезен?
    +2
    Ну вот тут вы уже начинаете немного подвирать. Между программистами и «тестировщиком» находятся ещё автоматические тесты, которые и ловят большинство ошибок.

    А вот если их нет, то польза от PVStudio будет никакая, потому что результирующий продукт всё равно будет страшно сырой, а тестировщики всё не оттестируют.
  • Расставим точки над .NET Core и .NET Standard
    –13
    На С++ оно запускается совершенно гармонично. Запускается функция main. Которая (в силу синтакисиса языка) единственная в основном namespace'е. Никаких дополнительных соглашений и копаний в чужом грязном белье. main может быть один не потому, что «копающемуся в белье трудно разобраться», а потому что имена функций должны быть уникальными в заданном namespace.

    На ассемблере всё ещё проще: после отработки ELF loader'а запускается код по адресу entry point AT_ENTRY. Подробнее тут: lwn.net/Articles/631631

    Заметим, си и libc гармонично это скрывают от пользователя не вызывая никаких разрывов абстракций и странных инстроспекций.
  • Расставим точки над .NET Core и .NET Standard
    –8
    Именно в этом месте я вижу пуризм, помноженный на костыли. Одним «ещё хуже», другие «выкручиваются». На выходе имеем нелогичную конструкцию с магическим заклинанием. «Потому что это лучшее что мы сумели придумать».
  • Расставим точки над .NET Core и .NET Standard
    –7
    Это не троллинг. Это искреннее инженерное возмущение кривым решением.

    Можете ли вы объяснить причину, почему в языке надо было сначала запрещать наличие функций, а потом приделывать «искать статический метод с магическим именем внутри всех классов»? Лично я вижу в этом лишь набор пуризма (функции нинада) подпёртый костылями (но как-то запускать приложение таки нужно).

    В чём мысл вообще объявлять статический метод внутри класса, если он вызывается как функция? Может, лучше, просто оставить функции в покое?
  • Не по ТЗ
    +1
    А не для этого ли нам аналитики?

    Алсо, получали. Машиночитаемость взаимодейтсвия с заказчиком — очень частое требование.
  • Как мы Graylog2 выбирали
    0
    Я понял. Вы используете модель с коллекторами на хостах. Это совсем не тривиально, так как есть вариант с центральным коллектором (на udp). Использование syslog/udp в свою же очередь обеспечивает возможность не тормозить работу чего-либо в ситуации, когда elastic'у плохо или медленно.

    Винда в этой схеме, конечно, выглядит как гигантский технический долг для исправления.
  • Не по ТЗ
    +1
    (опуская детали реализации):

    def test_plot_signature_x(...):
        graph = fixture_to_create_graph()
         assert len(graph.g.plot.axis_x.text) > 0
    
    def test_plot_signature_y(...):
        graph = fixture_to_create_graph()
         assert len(graph.g.plot.axis_y.text) > 0
    


    Это требует графика в машиночитаемом формате, разумеется, и соблюдения конвенций по именованию объектов в svg.

    Именно это я и называю «менять ТЗ».

    Вместо «должны быть подписи на графиках» — график должен быть в формате svg, в объекте g в объекте plot, для которого должны быть заданы объекты axis_x для горизонтальной оси и axis_y для вертиальной. Обе оси должны иметь текстовое описание в поле text соответствующего объекта axis_*.

    Хорошо написанное ТЗ — половина теста. Хорошо написанный тест — половина программы.

    Вот так вот написав 25% программы можно более-менее быть уверенным что программа на 100% хороша.
  • Расставим точки над .NET Core и .NET Standard
    –23
    Это упрощает жизнь? Ох, ну тяжкая у вас жизнь, если это — упрощение.
  • Расставим точки над .NET Core и .NET Standard
    –35
    Ваш hello world просто омерзителен визуально и эстетически. Почему? Потому что вы, например, решив не реализовывать функции в языке, создали дырявую абстракцию. Как запускается программа? В классах ищется статический метод main (который на самом деле замаскированная функция), и запускается. Но нам говорили, что классы могут иметь собственные методы и метод одного класса не влияет на метод другого класса. Но нет, из-за гениального решения использовать «первый попавшийся» main из первого попавшегося класса, язык запрещает реализовывать метод main более чем в одном классе.

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

  • Как мы Graylog2 выбирали
    0
    Использовать E и не использовать LK? Странно.

    Расскажите про причны, почему не logstash.
  • Не по ТЗ
    0
    Эм… тесты? Написал тесты, прогоняешь код. Если ТЗ неалгоритмизируемо или его трудно проверить — надо менять ТЗ, точнее, переформулировать так, чтобы можно было.
  • Весь веб на 60+ FPS: как новый рендерер в Firefox избавился от рывков и подтормаживаний
    0
    А курсор будет проваливаться сквозь уровень и застревать в кустах?
  • CRI-O — альтернатива Docker для запуска контейнеров в Kubernetes
    +1
    Насколько я понимаю, люди просто хотят выкинуть докер, т.к. он тащит своё полиси и это мешает альтернативной оркестрации.
  • Как мы торговали играми из киосков с газетами
    +1
    Возможно, кто-то даже подпишется. Иметь хорошую новую интересную игру раз в месяц (раз в два месяца) с дисконтом — why not?

    Хотя вы побъёте все рекорды по толщине «страниц», это точно.
  • На шаг ближе к С++20. Итоги встречи в Торонто
    +3
    Я на самом деле намекал на Rust.
  • На шаг ближе к С++20. Итоги встречи в Торонто
    +2
    Когда в C++42 реализуют unsafe, защиту от NULL dereference в безопасном коде, понятие владения памятью, алгебраические типы данных?
  • Из маркетолога в тестировщицу ПО — смена профессии после 40? Почему бы и нет
    0
    Серьёзно? Программисты не пишут тестов? Странные программисты.
  • Из маркетолога в тестировщицу ПО — смена профессии после 40? Почему бы и нет
    0
    А чем python для тестировщиков отличается python для всех остальных? Часть возможностей отключают? Или как?

    Код для управления selenium'ом — тьюринг-полный и в нём может произойти любая питоновская штука, с наследованием, изменением дефолтных контейнерых объектов или других весёлых вещей. Без знания самого языка такое не отладить.
  • Сага о Гольфстриме и уровне ИБ в крупной охранной фирме
    +6
    Пролистал до описания уязвимости, и был крайне недоволен, что столько воды в начале.
  • Как мы банкоматы от подрыва спасали
    0
    Я бы просто поставил в кассету с деньгами датчик взрыва и заливал бы деньги краской. Автоматически покрывает все случаи взрыва и других механических приключений. Деньги записываются, при повреждении грабителями или ложном срабатывании — меняются в ЦБ за копеечку.
  • Сага о Гольфстриме и уровне ИБ в крупной охранной фирме
    +11
    Очень плохо написаннная статья.

    1. Возмущение в статье про уязвимость — отвлечение внимания. Если уязвимость серьёзная, найдутся те, кто возмутятся за вас, и куда более художественно. Нейтральный тон.
    2. В технической статье не нужны все эти егурлы и прочие ЧП. Уязвимость в софте, а не в реестре юрлиц.
    3. Статья должна начинаться с короткого введения: «критическая уязвимость, позволяющая… » (одно предложение) и информации о формате disclosure (coordinated disclosure или в связи с отсутствием реакции в течение N времени).
    4. Технические факты должны быть вначале (после вступления).
    5. История раскрытия — потом.
    6. В конце — выводы. Кто уязвим и что делать.

    При том, что вы пишите про совершенно вопиющую халтуру, и исследование очень важное, читать его совершенно не хочется из-за формата.
  • Начальник, что мне делать для того, чтобы получать больше денег
    +1
    Зависит от размера компании. Если 2 сервера на два админа, то смысла увеличивать эффективность труда никакого.

    Сама система управления конфигурациями не делает просто так «хорошо». Вокруг неё должен быть отлаженный workflow — code review, юнит- и smoke-тестирование, лимитированное интеграционное тестирование (serverspec), полное интеграционное тестирование с прогоном тестсьюта готового продукта после изменения конфигурации (пример — openstack, tempest, около 800 тестов).

    Дальше возникает вопрос как оно попадает на продакшен. Jenkins? А его джоба она руками набирается или собирается jenkins job builder? А если эта джоба собирается из конфига, то надо бы и тесты для самой джобы, чтобы не поломалась…

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

    На выходе несколько человек поддерживают инфраструктуру, даже описание которой в общих чертах займёт несколько часов объяснений. Причём пайплайны выстроены таким образом, что если человек чего-то не знает, и ломает по незнанию, то эти изменения просто не попадут в продакшен. Тесты, тесты, тесты. И code review. Для конфигурации. И для кода. И для данных, из которых конфигурация региона генерируется. А дальше там роботы для всего — ipmi/drac, настройка биосов, свитчи, умные розетки, автопровижен серверов…

    TL;DR; В компании, в которой задумались про автоматизацию, sky is the limit. Это почти непрерывный процесс автоматизации и роста эффективности труда, каждая итерация которого делает работу всё более эффективной.
  • Начальник, что мне делать для того, чтобы получать больше денег
    0
    Эффективность труда сотрудника зависит не только от него. Например, у того же водителя эффективность труда больше зависит не от его способности подрезать поршики на поворотах, а от работы отдела логистики. Улучшили планирование, эффективность труда водителя выросла на 20%. На ровном месте. Может быть, даже меньше стал ездить, но довозить больше.

    Если же эффективность труда не растёт, то причин для увеличения зарплаты выше инфляции нет.

    Просто представьте себе, статичное предприятие. Повышает цены на продукцию пропорционально инфляции. В год номер 1 фонд оплаты труда составлял 30% выручки. Решили повышать зарплаты на 5% выше инфляции в год игнорируя фиксированную эффективность труда.

    Задача: посчитать, в каком году расходы на фонд оплаты труда достигнут 146% от выручки.
  • Начальник, что мне делать для того, чтобы получать больше денег
    +3
    При трёхкратном росте эффективности труда сотни часов рабочего времени окупятся за месяц-полтора эксплуатации.

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

    Если начальник не идиот, он это увидит. Если идиот — отличный повод поискать себе начальника не идиота.

    А есть ещё сценарий, что эффективность выросла в три раза, а делать больше нечего. Потому что как было два с половиной сервера так и есть. А что админ справляется за час в неделю, при 8 часовом рабочем дне — так это никого не волнует. Ну, опять же, бывает. Квалификация выше требований рабочего места. Такого с руками оторвут конторы, у которых есть работа.

    Насчёт же «накрутили так, что стало хуже» — это обычный признак плохо выполненной автоматизации. Я не могу говорить про автоматизацию рабочих мест офисных хомячков, но в серверной среде признак хорошо проведённой автоматизации — всё так же работает, только само. Меняются регламенты для operation/support, меняются workflow для команды разработчиков, но в целом становится быстрее и проще. Если нет — ну и нафиг такую автоматизацию.
  • Начальник, что мне делать для того, чтобы получать больше денег
    +1
    То есть вы говорите о компенсации инфляции. За пределами компенсации инфляции, если у этого сотрудника не растёт квалификация/эффективность труда (это не одно и то же), то в чём причина для возможного роста зарплаты (повторю, выше инфляции?).
  • Начальник, что мне делать для того, чтобы получать больше денег
    +11
    Делать больше означает не «тратить больше времени», а увеличение эффективности труда. Если зарплата растёт без увеличения эффективности труда, то это либо инфляция, либо рост издержек производства.

    Эффективность труда определяется не объёмом затраченных усилий и времени, а количеством «полезного» что произошло за время работы.

    Условно говоря, если админ внедрил систему управления конфигурациями, то он теперь вместо исходных 100% времени тратит 30% на поддержание инфраструктуры (неавтоматизированные этапы), 30% на рефакторинг и развитие системы управления конфигурациями. Если он начнёт при этом управлять 150% серверов, то он будет тратить на них 45% времени, 30% на рефакторинг. При этом он может говорить о росте зарплаты (производительность выросла в полтора раза), профессиональном росте (ибо 30% на рефакторинг делают его всё более и более хорошим админом, а его конфигурация становится всё более эффективной), и при этом он работает 30+45% = 75% от исходного времени.
  • Go быстрее Rust, Mail.Ru Group сделала замеры
    –1
    Вы рассказываете, что оно в программировании возвращает. Можно ещё exception сделать.

    А что оно в математике «возвращает»? Ничего. Тот самый void.

    Другой пример. Выражение «пусть а равно нулю» какое значение возвращает? Тоже никакого.
  • Go быстрее Rust, Mail.Ru Group сделала замеры
    0
    Ох, тут начинается что-то крайне любопытное. Вот у нас есть функция sin(1/x). У нас есть функция lim x->0 f, которая принимает f и возвращает её предел к 0.

    Что возвращает lim x->0 sin(1/x)?
  • Go быстрее Rust, Mail.Ru Group сделала замеры
    0
    Правильно. А справа, после знака равно — str. И когда я делаю slice от String, у меня тоже str. Так что же такое str?

    Пока что лучшая аналогия, которую я придумал, звучит так: str — это как земля (в контексте недвижимости). Можно передать права на неё, можно выкопать из неё всю почву, построить и снести дом, но нельзя переместить землю, нельзя увезти с собой. Она просто есть. На неё можно показывать, в ней можно хранить, можно запрещать или разрешать ходить по ней, но это и всё.