Pull to refresh
15
6
Send message

Звучит логично, спасибо!

Сейчас инфа об этом написана в соответствующем разделе конфлюенса по разворачиванию проекта и установке зависимостей (и добавлен запуск скриптов в Dockerfile для локальной разработки). Но если у кого-то сделано разворачивание по уму через пакеты, то наверняка есть смысл и эту штуку так сделать.

В остальном же расширение прилинковано к ICU крепко, и с сервисом должно действительно случится что-то страшное, чтобы пришлось заново создавать.

Ага, понял!

Выходит, контейнер действительно грамотное решение, позволяющее настраивать окружение, не боясь испортить все остальное! Обязательно попробую это на каком-нибудь проекте попроще. Спасибо!

Но в данном случае 99% мучений не в том, как собрать так, чтобы не испортить остальное. А в том, чтобы собрать вообще)

Если проект можно перевести на новую версию php в которой intl с подходящей ICU, то о чем вообще говорить?

Но если проект привязан к конкретной версии php, и для нее не находится intl с нужной ICU, что тогда?

Я действительно потратил кучу времени, чтобы все это раздуплить. Спасибо, что обратили внимание!

Кстати, камень в огород хабро-редактора статей

Хотя еще больше времени ушло на то, чтобы все это описать. В том числе из-за того, что редактор Хабра стал работать просто мерзко, непрерывно портя содержимое статьи, пока работа шла в черновике. Раньше такого не было, техподдержка пока молчит.

Для обслуживания не обязательно каждый раз читать статью (хоть я и не против). В ней приведены скрипты, настроив которые один раз, дальнейшую сборку можно выполнять за пару минут, просто меняя версию ICU и запуская скрипт (проверено на ICU от 72 до 78 с небольшими пропусками).

Может и принято, я в этом нубас. А какие преимущества даст нормальный пакет (rpm?), если ICU здесь собирается только для конкретной версии php расширения?

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

Не проще ли нужный проект упаковать в контейнер

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

где и нужный php и нужная ICU готовая может быть

От того, что проект переедет в контейнер, версии php/icu сами по себе не поменяются. Или мы заодно будем обновлять версию php? Но тогда придется обновить и код, фреймворк, вендоры - а это уж точно не проще).

cli в контейнере запускать проще, чем вот это всё

Речь ведь не только о cli. Но даже если о нем, все равно будет выполнятся код проекта, который подразумевает старую версию php.

Если же совет в том, чтобы не рисковать продом, а воспроизвести нужное окружение в докере и уже там выполнять сборку - с этим полностью согласен!

Спасибо за то, что создаете задачи на исправления! Лишь уточнение: ссылки на такие задачи особенно ценны в статье — вне зависимости от того, появились ли там ответы. Это добавляет статье вес, автору — респектабельности, а читателям — кислотно-щелочной баланс ;)

Без ссылки на фидбек от разработчиков профессиональному обзору недостает профессиональной этики, имхо.

DDoS атака раньше: использование миллионов IoT в ботнетах с предварительной тренировкой на африканском регионе.

DDoS атака теперь: открыть страницу с фильтром и нажать на кнопку "Поиск" 3 раза подряд.

Toshiba Satellite a100 - лучший ноут! Лет 7 за ним сидел, никаких проблем с петлями. Открытие крышки одной рукой (как в маках). Сколько раз носил в рюкзаке во включенном состоянии - продолжал работать как ни в чем не бывало. Ударопрочность - мое почтение (5 лет пришлись на универ)! Механическое колесико регулировки звука - кайф! Замена/апргейд ОЗУ - открутить один винт. Достать веник - два винта! Батарея отщелкивается.

Как же я был неправ, когда пересел с этой вершины инженерной мысли на шлак под названием Toshiba Satellite 200. Думал, что просто досадное недоразумение, поэтому дальше перешел на Satellite 300 - такой же шлак (и оба из фирменного салона). Не знаю, что случилось, но Тошиба явно повернула не туда, и не удивительно, что в результате и вовсе прекратила производство ноутов.

А что другие марки? Такая же ерунда! Металлические корпуса магнитятся, петли крошатся как сахар, чтобы что-то поменять - нужно разобрать все до винтика (а иногда клава и вовсе припаяна!), на экране появляются какие-то разводы, блоки питания трещат, кулеры как турбины, а корпус все равно перегрет. И это касается не только msi, hp, asus, acer, lenovo, но и Dell тоже!

Спасибо, что выслушали!

Ну хз, Lotus 1-2-3 прекрасно справляется с созданием таблицы из одной колонки, и зачем мне тогда ваши кликхаусы?

Мне нужно больше информации, чтобы сформировать мнение

Да, хорошее решение!

Но может пойти еще дальше, отображая и FEN (как есть, без поведения, чтобы можно было скопировать именно его для переноса в свой шахматный редактор), и кнопку "Скопировать ссылку на задачу" (которая даже сама по себе будет интуитивно понятна, без всяких алертов).

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

Ага,  "бешеная Ладья", все верно)

Еще вспомнил одну партию по поводу того, насколько иногда нелегко заметить мат в 1 ход. Играли два великих шахматиста Иванчук и Ананд. Иванчук поднял бешенную атаку черными, но не заметил линейный мат в один ход:

Anand vs Ivanchuk - London GP, final play off 1994
Anand vs Ivanchuk - London GP, final play off 1994

В результате Ананд устоял и потом просто "срубил флаг".

В любом случае, спасибо за такую коллекцию матов! Забавные названия! Помню, в средней школе, когда ставили "Мат по последней горизонтали", говорили "сортир" или "толчок", потому что это было похоже на то, что король залез в туалет и так и не успел оттуда вылезть. Наверное, у многих есть свой местный сленг.

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

Кстати, на последнем чемпионате мира по рапиду была очень прикольная партия, где в безвыходном положении белые смогли не проиграть!

Andreikin Dmitry vs Yu Yangyi - FIDE World Rapid Chess Championship 2023
Andreikin Dmitry vs Yu Yangyi - FIDE World Rapid Chess Championship 2023

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

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

Тогда можно добавить на страницу специальную кнопку "Скопировать ссылку на задачу" где в качестве урл будет packFEN(localStorage.getItem('fen_position')), разумеется, с обновлением при переходе к другой задаче.

Как вам такой компромисс?

Ссылка на сайт вида https://checkmate1move.com/?fen=08001C9D3E440008KJJJRJTJRPJJJPPPR0000

Но при переходе на сам сайт позиция из ссылки удаляется

var fen_url = getURLParameter('fen')
if (fen_url === undefined) {} 
else {
  localStorage.setItem('fen_position', unPackFEN(fen_url) + " 0 1")
  //history.pushState(null, null, '/')
  window.location.href = "https://checkmate1move.com"
}

Для чего так сделано? Ведь в результате нельзя поделится интересной позицией просто скопировав урл страницы :(

Да) Причем сначала втихую пропатчили так, чтобы при попытке использовать уязвимость генерилась сырая ошибка. Затем выпустили официальное обновление, в котором уже возвращался JSON. В описании к релизу был пункт аля "Исправлен формат ответа для некорректных сценариев использования API".

Будет лучше (для меня), если это останется безликой байкой. Как поется в песне: "Я бы мог открыть ответ тот, но йог велел хранить секрет, вот."

Тоже как-то сэкономил компании лям благодаря своим кривым рукам и... Хабрахабру.

Компания использовала сторонний (но отечественный) сервис по вводу/выводу денег пользователей. Во время очередного рефакторинга я накосячил, и ID кошелька превратился в 0. Удивившись, что API не выдало ошибки, капнул чуть глубже, и... пробил дно)

Оказалось, что пользователь может вывести деньги с чужих кошельков на свои реквизиты всего парой строчек JS.

Дрожащими от предвкушения руками расписал тикет безопасности в техподдержку сервиса. Уже думал, куда поставить феррари, которую мне безусловно вручат за найденную уязвимость. Все-таки даже у нас там было пользовательских кошельков на сумму больше лимона y.e., а ведь были конторы и покрупнее. Но не тут-то было.

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

Я выпал в осадок... В течение недели пытался достучаться до них, объясняя всю критичность найденного. Бесполезно. Отвечали медленно, неохотно. Ускорять выход фикса не собирались, давать вознаграждение - тем более.

Контраст между ожиданием и реальностью был так силен, что я даже подумал, что веду беседу с неэтичными сотрудниками, которые сами собираются воспользоваться уязвимостью. Попросил связать с лидом отдела безопасности. Отказали и добавили, что собираются закрыть тикет, если у меня больше нет вопросов.

И тогда, просто из вредности, я написал примерно так: "Вопросов нет. Просто не хотел, чтобы ваше руководство удивилось, когда прочтет об этом на Хабре".

И тут случилось чудо! Ответ последовал буквально в считанные минуты! В нем просили встречи на уровне руководителей компании в удобное нам время. По итогу, выдали бессрочный платиновый аккаунт сервиса, а меня назвали молодцом.

P.S. Кстати, в то время у меня даже не было аккаунта на Хабре xD

1

Information

Rating
936-th
Registered
Activity