Как стать автором
Обновить
154
0
Руслан Нигматуллин @EuroElessar

Software Engineer

Отправить сообщение

Более того, обычно на собеседовании не смотрят на "компилируемость" кода.
Совершенно нормально, если кандидат допускает синтаксические опечатки или не может вспомнить конкретную сигнатуру методов/классов в стандартной библиотеке.
Так что, по факту, оно не сильно далеко от псевдокода.

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

Mastermind это иной проприетарный способ репликации, построенный поверх Elliptics'а, @ToSHiCможет наверное рассказать про него больше.

На тему пользователей:


  1. Facebook использует свою L7 проксю на основе Proxygen в течение где-то последних 9 лет, с тех пор как существующие решения (такие как Nginx) перестали удовлетворять их нужды
  2. Cloudflare использует сильно модифицированную версию Nginx в качестве edge сервера, например у них свои патчи для http/2 server prioritization, http/3 и многих других случаев. Этот подход требует отдельную команду разработки для развития и поддержки с призрачными шансами быть когда-либо влитыми в open source версию Nginx (в том числе, по причинами данным в публикации).

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

Производительность системы мониторинга — это довольно просто решаемый вопрос.


Гораздо важнее то, что envoy дает нам огромное количество средств инструментирования из коробки (статы, точные причины ошибок в access log'ах, трейсинг, и т.д.), а так же, что его гораздо проще интегрировать с существующей инфраструктурой за счет строгого разделения между data и control plane'ами.

Есть научные статьи на эту тему, но, насколько мне известно, этот подход не применяется текущими компиляторами.

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


И (пожалуйста поправьте меня, если я не прав) кажется, статья и вы имеете в виду разные канарейки. Канарейка в терминологии SSP — это особая переменная внутри процесса, она не имеет никакого отношения к процедуре деплоймента с помощью canary.

Имеется в виду Smash-Stack Protector (SSP) защита от переполнения стека, которая использует canary (канарейку) в качестве защитного слова между элементами стека.
При переполнении стека первым делом перетирается эта канарейка, что используется SSP для обнаружения факта совершения атаки.


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

Если мы говорим про IT, то, как правило, компании оплачивают хорошую страховку. В этом случае, даже при онкологии, есть предел расходов сверху (обычно в рамках ≈$5-10k в год), после которых все расходы на себя берет страховая. До этого предела расходы — это co-pay на лекарства/визиты к врачу ($15 за визит/один prescription), и ≈10% от нетривиальных услуг (операции, госпитализация, и так далее). Но опять же — все они начинают полностью оплачиваться страховой после определенного порога.

За пределами IT ситуация может быть другой, во многом за счет более дешевых планов с меньшим покрытием.
XZZXCFVCDXSZASXDCFVCDVFBFGCXMK,MJNBGHNM,./.,MHBNM,?>,M./ЮБ
Если бы все было так просто, VK до сих пор не дает мне привязать мой текущий номер в США. Ответ техподдержки:
Вероятнее всего, номер является виртуальным. Виртуальные номера привязывать нельзя.


и:

Значит, Ваш оператор наравне с настоящими (который у Вас) продают виртуальные, но с тем же префиксом. Из-за того, что нет возможности их различать, нам приходится блокировать весь префикс. К сожалению, с этим ничего не сделать.
А можете подсказать домены от мыл всех этих вузов?
В части продуктов такие вопросы решаются с помощью так называемого dog fooding, т.е. процесса тестирование продуктов компании сотрудниками в процессе обычного ежедневного использования. К пользователям при этом выкатывается версия, которой пользовались внутри компании последний день/неделю. За счет этого опять же нет необходимости выделять время/людей специально для ручного тестирования.
А будьте добры такие примеры, вы меня заинтересовали.
Для таких случаев есть CI системы, запускающие тесты для всех изменений, например это можно увидеть в Qt Project. Тестирование UI так же прекрасно автоматизируется с помощью таких проектов как Selenium. Эти подходы позволяют гарантировать, что к пользователям не улетят не протестированные решения.

К тому же уже сейчас ручное тестирование вымирает, многие компании не имеют ни людей занимающихся ручным тестированием, ни отдела тестирования как такого, ярким примером такого подхода является Facebook.
QtQml, несмотря на название он не зависит от QtGui и в нем есть QJSEngine, который уже частично догнал по возможностям QtScript.
Можете попробовать API от Яндекс.ПДД. Единственное но — придется написать простенький скрипт для вызова методов API по крону, чтобы менять DNS записи на актуальные. Узнать текущий ip адрес можно десятками способов.
2) Я не буду в консоли вводить что-то со слешем для перевода — не хочу превращать .class-файл в .jar-файл используя например gson для парсинга.

Замечательный подход, далеко пойдете :)
3) Теперь вызов метода самого себя происходит лишь единожды.

private static int i = 0;
/* ... */
i++;
if (translated.equals(input) && i < 2) {
    // if return equal of entered text - we need change direction of translation
    return translate("en", input);
} else return translated;

А здесь, уважаемые зрители, яркий пример kostyl'-driven development.
4) Joiner.on(" ").join(args) не понимаю, что это?

А это возможность делать trans many words without escaping.
Если быть еще точнее, то это, например, com.google.common.base.Joiner.
1) Ведь в таком маленьком коде проще слиять строки, разве нет? Каковы ваши аргументы против слияния?

trans "R&D"

Ожидание — «НИОКР», реальность — «Р».
2) Разбирать json руками — опять же — зачем усложнять?

JSON экранирует ряд символов, например ", \n и т.д., поэтому нужен нормальный парсер.
3) Рекурсия не бесконечна, вызов самого себя происходит только если вернулось то же что ввел пользователь. Можно было конечно сразу определять язык, но это было бы чуть больше кода и все-равно два запроса к серверу.

trans "123"

4) Какие еще нужны аргументы командной строки?

Joiner.on(" ").join(args)

5) Почему выложил на Хабр — сам искал такое решение, в том числе и на Хабре.

Заранее извиняюсь, но на Хабр имеет смысл выкладывать нетривиальные решения, а не суповой набор из багов уровня средней школы.

Информация

В рейтинге
Не участвует
Откуда
Mountain View, California, США
Дата рождения
Зарегистрирован
Активность