• Эволюция — религия новейшего времени
    +6
    Что за бред? Автор хоть примерно читал Дарвина?
    У Дарвина всего 3 утверждения:
    1. Дети похожи на родителей, но немного отличаются (мутация)
    2. Особи, более приспособленные, лучше выживают и размножаются
    3. Изменения накапливаются от поколения к поколению


    Попробуйте опровергнуть хотя бы одно из этих утверждений. Дарвин не объяснял появление разума.

    Пример с генерацией операционки полным перебором — ложная аналогиая. Почитайте про генетические алгоритмы, поймете чем они лучше полного перебора
  • Как клеить по 13 девушек в час, используя машинное обучение и Tinder
    +1
    А не проще ли лайкать всех подряд, а тех кто лайкнет в ответ уже просмотреть глазами и отфильтровать встроенной в голову нейросетью?
  • Беспилотники Яндекса с начала 2018 года проехали 1 млн километров
    0

    Тут скорее лишать прав. Только непонятно кого

  • Роскомнадзор уведомил Telegram о необходимости предоставить ключи шифрования в течение 15 дней
    +2
    Конкретно про войну — это называться «прятаться за спинами других». В случае нападения на страну, нельзя одних защитить, а других — нет
    Защищать будут всех одновременно (или никого)
    И потому требуется сделать какое-то коллективное решение — защищаемся или нет? И если решаем защищаться — то это должны делать все, независимо от их личной позиции (иначе те кто защищаются имеют моральное право вас заставить это делать)
  • Chrome начал блокировать всю рекламу, даже AdSense, на «недобросовестных» сайтах
    0
    Судя по тому что за рекламу платят — таки находятся те кто сначала тыкают, а потом ещё и покупают :)
  • Яндекс.Алгоритм 2018: оптимизационный трек и ML-задача от разработчиков Алисы
    0
    А в задаче D разве не будет ответом 2, кроме N=2?
  • Как будет развиваться виртуальная инфраструктура: 4 основных тренда
    –2
    Ближайшие «конкуренты» Docker — это Chef и Puppet, у которых по 28% «рынка»

    Теплое с мягким в одном предложении. Как можно это сравнивать?
  • Процессоры «Байкал» поступают в розничную продажу
    +5
    Я думаю, такие проекты делаются не для того что бы через 3-4 года заработать для этого можно нефтяную вышку поставить. А на дальнесрочную перспективу. Потому этим не бизнес, а государство занимается. А если когда уже начнут зарабатывать — тогда можно будет бизнес подключать
  • Как собрать умную кормушку для кота
    0
    Ага, а ещё нужен кот
  • Мегаконструкции. Крупнейший в мире экскаватор Bagger 293
    0
    А если кто-то попадется по пути — то это проблема не экскаватора :)
  • Внедрение code style в разработку
    0
    главная ценность — простота и удобство пользования
    Поддержка 15 виртуалок разработчиками (по одной виртуалке на каждого разработчика) — это существенная дополнительная работа, которая исключается в случае наличия централизованного инструмента
  • Внедрение code style в разработку
    0
    Для быстрой обратной связи существует phpstorm, где прямо в момент написания кода подсвечиваются ошибки
    image
  • Внедрение code style в разработку
    0
    Во-первых — удобство (читать diff с подсветкой удобнее, чем просто список строк с ошибками в консоли)
    Во-вторых — рубится на корню всякая возможность проигнорировать предупреждения проверщика стилей (а это бывает необходимо, когда исправление стилей требует исправления сотен классов, скажем, для переименовывания метода, который много где переопределяется)

    А в данном случае все ошибки на этапе code review видны всем разработчикам, и они прям в комментариях могут договориться что какая-то ошибка не может быть исправлена и проигнорировать её
  • Внедрение code style в разработку
    0
    Да, часть кода писалась в nodepad++, а там ставится таб, а не пробел. Потому вперемешку. Исправил

    По поводу var_export() — app.php это пример использования библиотеке, для самой простой интеграции — webhook. У нас в живом проекте phpcs-stash подключается с помощью composer и работает внутри очереди
  • Внедрение code style в разработку
    0
    Мы это используем, но опять таки, phpstorm не гарантирует отсутствия ошибок в стилях (писал в комментах выше)
  • Внедрение code style в разработку
    0
    А проверяется только измененный код в рамках данной задачи, или весь проект целиком?
  • Внедрение code style в разработку
    0
    спасибо, опечатку и ошибку в стиле исправил
    Как такой стиль кода не задан, но я по привычке пишу в symfony code style http://symfony.com/doc/current/contributing/code/standards.html
  • Внедрение code style в разработку
    0
    Да, это есть в планах. Когда буду делать — оформлю в виде отдельной утилиты, по аналогии с phpcs-stash
  • Внедрение code style в разработку
    0
    1) Пользоваться не так удобно как с web интерфейсе. Хук можно отключить и забыть об этом. В качестве быстрой проверки используются стандартный проверщик phpstorm (там тоже phpcs под капотом)
    2) Задумывались, но отказались, так как ка хотели терять авторов последних строк
  • Прозрачный переход PgQ -> RabbitMQ
    0
    LISTEN+NOTIFY ненадежен (пока слушающий демон отключен — он не будет получать сообщения). Следовательно использовать можно (для ускорения получения сообщений) но поллинг он не отменяет (так как надежность в любом случае нужна)
  • Немного понагнетаем: стало понятнее, что будет с персональными данными после 1 сентября 2015
    –8
    Есть 3 варианта жить:
    1) Узкая специализация страны. Когда мы производим что-то одно (например, нефть), а все остальное покупаем. Путь заведомо в никуда
    2) Пытаться самим освоить производство всего. Как пробовали делать в СССР, но даже тогда не хватало на все ресурсов.
    3) Приглашать (заставлять?) иностранные компании локализировать производства в России (в данном случае услуги — дата центры). Как по мне — оптимальный путь, что и будет делаться в рамках этого закона

    И да, какое-то время пользователям придется потерпеть. В том числе и мне придется переносить сервера БД из Германии
    И да, сервера в России будут стоить дороже. Но это создает рабочие места для инженеров, администраторов и т.д.
  • Немного понагнетаем: стало понятнее, что будет с персональными данными после 1 сентября 2015
    –5
    Кому-то будет дешевле не работать. И их место займут другие
  • Прозрачный переход PgQ -> RabbitMQ
    0
    6.1) Пометка ack делается только после успешного удаления/досылки. Досылка подразумевает удаление досылаемой строки из БД. При повторном получении пакета строки в БД уже не будет и досыльщик ничего не будет досылать
    6.2) У rabbitmq есть режим, когда он сохраняет события на диске (delivery_mode=2). И в случае аварии они никуда не деваются. Соответственно заново не дошлются

  • Прозрачный переход PgQ -> RabbitMQ
    0
    4) В принципе да, можно было запрос к rabbitmq делать на уровне приложения, но таблицу message и досыльщик все равно должен остаться
    5) я уже сказал :) одно место где дублируются пакеты — не повод создавать ещё одно место и создавать ещё больше дублей
    6) не понял вас, поясните. Что значит сообщения исчезли из очереди? Я не рассматриваю ситуацию когда мы в раббит успешно закомитили, а сам ребит и где-то потерял. Пакеты могли потеряться только в дороге, при неуспешном комите в rabbit. Досыльщик досылает только то, что гарантированно не пришло в rabbitmq

    По поводу недоосвоения pgq не комментирую :) тема статьи в механике перехода, а не в причинах, побудивших это сделать
  • Прозрачный переход PgQ -> RabbitMQ
    –2
    первое: спасибо, очень содержательный комментарий. По некоторым пунктам пришлось очень крепко задуматься и даже советоваться в нашими ДБА

    А теперь по пунктам
    1)
    2) Там всего 600 строк кода, то есть по размеру как средняя задача. Его можно отревьювить и допилить. Или даже переписать под себя
    3) да, верно. pid — зациклен, нужно добавить backend_start. Спасибо!
    4) Дедлок — это 2 процесса ждут друг-друга. А у нас только pg ждет amqp. То есть дедлок невозможен, просто будут запросы в БД тормозить и упремся в количество соединений. Или я не прав?
    5) Да, не решается. Но баг в одном месте системы — не повод допускать ещё один баг в другом месте :) То есть нам бы этого лучше по возможности избежать
    6) Когда rabbitmq развалится мы будем просто наружу кидать exception и ролбечить, и пусть родительское сообщение разбирается что делать (например, ролбек транзакци и 500 ошибка пользователю). Сообщения теряются именно тогда, когда у нас на момент начала транзакции rabbitmq был доступен, а к концу транзакции пропал

    Вариант с перекладывателем я обдумывал, но он сам по себе не транзакционен и не надежен. Будет или дубли порождать, или сообщения терять. Если нет груза существующего кода, тогда уж лучше использовать HornetQ и реализовать честные распределеные транзакции, как предложил kefirfromperm

  • Прозрачный переход PgQ -> RabbitMQ
    0
    Вообще задача была — максимально безболезненный переход с PgQ на amqp. А использование честного менеджера транзакций (для двухфазного комита) потребовало бы существенного переписывания основного приложения (так как события в очередь будут отправляться уже не изнутри PostgreSQL, а из приложения).

    Кстати ActiveMQ не поддерживает двухфазный комит, а только некий аналог, который может продуцировать дубли сообщений — activemq.apache.org/should-i-use-xa.html

  • Прозрачный переход PgQ -> RabbitMQ
    0
    Насколько я знаю, нет. Если ошибаюсь — исправьте меня пожалуйста
  • Прозрачный переход PgQ -> RabbitMQ
    0
    Лаг получается около 10-30мс. При одном потоке досыльщика, написанном на пхп пропускная способность получается ~1000 пакетов в секунду. Сейчас перепишу досыльщик на что-то более серьезное и выложу его на гитхаб
  • Прозрачный переход PgQ -> RabbitMQ
    0
    1) А вы уверены что у вас просто крон-скрипт на две минуты не «зависал»? Или что будет, если вы часы в системе на 2 минуты переставите?
    2) Например, может упасть сеть между базой и вашим скриптом. Или вы банально можете захотеть перезагрузить базу данных/сервер
  • Прозрачный переход PgQ -> RabbitMQ
    0
    1) Что значит «простроченное»? Секунда, 10 секунд, минута? Мы никак не можем прогнозировать время доставки сообщения. И дослать сообщение нужно максимально быстро, не дожидаясь некоторого времени «прострочки»
    2) Как вы можете гарантировать что скриптик, который досылает, не сгенерирует дубли сообщений? Например, если упадет после отправки в ZeroMQ и перед пометкой о отправке в базе?
    3) Крон подразумевает опять таки полинг базы, от которого хотелось избавиться. Время доставки сообщений у вас, очевидно, не realtime

  • Прозрачный переход PgQ -> RabbitMQ
    0
    Нет, я ничего такого не нашел
    Плюс есть ограничение на минимальное исправление логики основного приложения (у нас же переход с PgQ на amqp, а не просто обеспечение целостности PgQ+amqp). Следовательно переход должен осуществляться просто подменой хранимки в PostgreSQL или ещё чем-то простым
  • Прозрачный переход PgQ -> RabbitMQ
    0
    На общую производительность это конечно не сильно влияет и на боевой системе не играет никакой роли. Но когда хотим создать отдельный контур для тестирования конкретной задачи это вырождается в дополнительные процессоры на каждую задачу
  • Прозрачный переход PgQ -> RabbitMQ
    0
    Конечно искал. Ничего лучше pg_amqp не нашел. И именно исправлениям недостатков pg_amqp и посвящается эта статья
  • Прозрачный переход PgQ -> RabbitMQ
    0
    Какой сайт? С чего он должен начать быстрее работать?
  • Прозрачный переход PgQ -> RabbitMQ
    0
    Есть несколько причин
    • Не мгновенная доставка сообщений
    • Нет роутинга сообщений
    • Постоянный поллинг базы, даже когда нет событий. То есть приложение генерирует нагрузку даже когда ничего не делает
    • Сложно гибко добавлять консьюмеры. subconsumers как-то решают проблему, но не полностью. Могут появляться зобми-консьюмеры и т.д.
    • Батчи. То есть если скрипт обработал 10 событий из батча и упал повторно обработчику снова придет весь батч. И что бы повторно не обработать те же события нужно где-то отдельно хранить какие из событий мы уже обработали

  • Прозрачный переход PgQ -> RabbitMQ
    +1
    Досыльщик скоро будет выложен
  • В продажу поступили ПК и серверы на базе процессоров «Эльбрус-4С»
    –1
    А вы когда последний раз видели 0day уязвимость для ОС Эльбруса?
  • Как мы придумывали систему анализа текстов
    +6
    А где технические детали? Как вы определяете категории, выделяете блоки отзывов на странице?
  • Знаете ли Вы массивы?
    0
    А при чем тут массивы? Можно аналогично подсчитывать любые операции с небольшими объемами данных (строки, математику, хеши т.д.) и результат будет неожиданным из-за работы кешей
  • Шпионские гаджеты от АНБ
    +1
    Удивляет что нет в списке устройств слежки за вебкамерами