Всегда рад порадовать других теоретиков, которые в концептуальном посте радуются возможности придраться к конкретике, которой там и не планировалось, а потом с отцовской снисходительностью поясняют юнцам "за ошибки". Специально для вас поясню: числа взяты условные, для демонстрации принципа, а не конкретного выигрыша. Ну и последнее предложение моего поста означало, что я разделяю недоумение попыткой "изменить что-то в массиве размером со "слона", и самим наличием такого массива, внезапно. Так что второй абзац пояснил мне то, с чем я изначально не спорил, поэтому, видимо, был написан только для вашей радости. Надеюсь порадовал вторично ;)
Ключевая фраза "в 9 из 10 случаев" ) Если у вас 1К онлайн юзеров, то оптимизация на 1Мб может дать экономию 1Гб ОП на одном скрипте. Но вы правы - таких проектов немного. И про слона тоже плюсую )
У меня как-то "вполне себе обычный бэкэнд" на 10 серверов что-то тоже плохо в голове укладывается... Чисто для примера, интернет-магазин с посещаемостью 500 уников в сутки вы бы на бэкэнд из скольки серверов сориентировали?
https://www.php.net/manual/ru/function.fgets.php Внезапно, здесь пример чтения файла без генераторов (размер файла значения не имеет, потому что чтение будет происходить построчно). Присоединяюсь к вопросу: есть пример использования генераторов не про чтение файлов?
Да это не я нахожу. В гугле наберите compress jpg и resize jpg и сравните результаты... И, повторюсь, если вы кодом из статьи наресайзите оптимизированных jpg-ов, то никакого "сжатия" у вас не будет.
Вы опять перепутали солёное с горячим. Я ни слово не сказал ни о качестве статьи, ни о верности способа решения задачи. Я написал только о том, что вы не понимаете сути терминов сжатие и ресайз применительно к файлам изображений. Второй абзац из википедии хоть прочитайте
Алгоритм JPEG позволяет сжимать изображение как с потерями, так и без потерь
и, внезапно, это не про изменение размера. Ресайз не приводит к сжатию, это просто принципиально две разные операции. Да, иногда после ресайза вес картинки может уменьшиться, но это не из-за сжатия. Сжатие можно сделать и без ресайза.
Тут вам гугл с википедией лучше помогут. На хабре есть статьи https://habr.com/ru/post/454944/ Если в двух словах, то в функции imagejpeg из вашего кода есть третий параметр, который отвечает как раз за сжатие. Т.е. при одном и том же размере картинка может быть с разной степенью сжатия. Ну и использование GD в 2022, мягко говоря, выбор неоптимальный. Если вам попадутся хорошо оптимизированные картинки, вы будете удивлены, когда уменьшенная в размерах по вашему коду картинка будет весить больше оригинала.
Если не нравится static $var в функции, то можно сделать через метод класса. В случае с "большими данными" подобное разделение логики может сказаться негативно, т.к. факт того, что в sum_even_values можно отправлять только "правильные" массивы, априори находится исключительно в голове автора такой функции, если, конечно, он не пишет очень расширенные комментарии к коду, а все его коллеги не перечитывают их каждый раз. Получается логика формально разделена, но у всей команды в голове постоянно должно быть понимание что и как можно слать, что, на мой взгляд, хуже, чем отсутствие такого разделения. Но это, конечно же, субъективно.
Не совсем понял почему в указанном примере в функцию sum_even_values отправлен весь цикл foreach, а не обработка одного элемента. В таком случае всё будет прекрасно работать и без генераторов, и источники данных можно легко менять без лишнего повторения кода. Т.е. опять никакого преимущества у генераторов особо нет в таком использовании, или я что-то недопонял?
Да, вот про вычисление релевантности очень интересно. Отбрасывается ли окончание в случае русского языка? Т.е. будет ли искаться "делал" при запросе "делалА", или "красив" при запросе "красивЫЙ" и как посчитается релевантность, ведь тогда отношение длин больше 1?
Учитываются ли опечатки и ошибки - а/о, е/и, сдвоенные согласные? Индек строится прямо по словам или делается metaphone/soundex?
Учитывается ли порядок слов? Т.е. будет ли найдено "кофе был крепкий" в описанном примере?
Что делаете с местоимениями, предлогами, междометиями, сокращениями, аббревиатурами при индексировании, поиске, вычислении релевантности?
Не сообщили самого интересного: сколько стоила разработка/поддержка ДО рефакторинга, сколько стоит теперь. Точных цифр, конечно же, не жду, но хотя бы порядок узнать было бы очень интересно. Какого уровня проект должен быть, чтобы позволить себе "9 разработчиков на проекте"?
Даже если создадите проблемы с безопасностью, то надо чтобы кто-то их начал целенаправленно искать, об этом речь. Есть мнение, что какие-нибудь условные самописные региональные интернет-магазины годами живут с ужасными дырами в безопасности, как неуловимый Джо из анекдота. Один из первых пунктов кулхацкерского чеклиста — проверить наличие известных уязвимостей у используемого софта, в таких случаях часто становится единственным, ибо дальше лень и нафиг надо.
Про уровень архитектуры да, безусловно, поэтому озвученное мной это только аргумент, а не исчерпывающая причина отказа. В каждом случае надо взвешивать все за и против.
Мне кажется, и в статье, и в комментариях забыли упомянуть про ещё один немаловажный аргумент в рассматриваемом вопросе — получая в своём проекте все озвученные преимущества фреймворка вы получаете также и все его уязвимости. А они есть в любом фреймворке, какими бы талантливыми не были его разработчики (укажите на фреймворк без уязвимостей, если я ошибаюсь). Причём количество людей, ищущих эти уязвимости, прямо пропорционально популярности фреймворка. Т.о., имея уникальную разработку, вы повышаете трудозатраты на взлом конкретно вашего проекта, т.к. известных уязвимостей найти в сети не получится. Соответственно, существенно понижается привлекательность взлома, т.к. даже при успехе злоумышленник будет иметь один взломанный проект, а не условно "все сайты на фреймворке Х". Проще говоря, надо иметь очень популярный проект, чтобы начали ломать вас ради вас.
Проблема отчасти решаема обновлениями фреймворка, но это несёт сопутствующие накладные расходы (в статье это упомянуто). Считаю, это довольно весомый аргумент при разработке популярного коммерческого продукта.
Всегда рад порадовать других теоретиков, которые в концептуальном посте радуются возможности придраться к конкретике, которой там и не планировалось, а потом с отцовской снисходительностью поясняют юнцам "за ошибки". Специально для вас поясню: числа взяты условные, для демонстрации принципа, а не конкретного выигрыша. Ну и последнее предложение моего поста означало, что я разделяю недоумение попыткой "изменить что-то в массиве размером со "слона", и самим наличием такого массива, внезапно. Так что второй абзац пояснил мне то, с чем я изначально не спорил, поэтому, видимо, был написан только для вашей радости.
Надеюсь порадовал вторично ;)
Может у меня получится объяснить )
(НЛО удалило)
Ключевая фраза "в 9 из 10 случаев" )
Если у вас 1К онлайн юзеров, то оптимизация на 1Мб может дать экономию 1Гб ОП на одном скрипте. Но вы правы - таких проектов немного. И про слона тоже плюсую )
Спасибо, конечно, но вопрос был адресован @wapmorgan :)
У меня как-то "вполне себе обычный бэкэнд" на 10 серверов что-то тоже плохо в голове укладывается... Чисто для примера, интернет-магазин с посещаемостью 500 уников в сутки вы бы на бэкэнд из скольки серверов сориентировали?
https://www.php.net/manual/ru/function.fgets.php
Внезапно, здесь пример чтения файла без генераторов (размер файла значения не имеет, потому что чтение будет происходить построчно).
Присоединяюсь к вопросу: есть пример использования генераторов не про чтение файлов?
У каждой конторы свои допуски. У крупных бывает 0.5мм, у мелких до 2-3мм может быть.
Потенциальная сфера применения - раскрой ДВП. На каждый шкаф, комод, тумбу и т.п. нужна задняя стенка двп. Мебельных мастерских по стране масса.
Да это не я нахожу. В гугле наберите compress jpg и resize jpg и сравните результаты...
И, повторюсь, если вы кодом из статьи наресайзите оптимизированных jpg-ов, то никакого "сжатия" у вас не будет.
Вы опять перепутали солёное с горячим. Я ни слово не сказал ни о качестве статьи, ни о верности способа решения задачи. Я написал только о том, что вы не понимаете сути терминов сжатие и ресайз применительно к файлам изображений. Второй абзац из википедии хоть прочитайте
и, внезапно, это не про изменение размера. Ресайз не приводит к сжатию, это просто принципиально две разные операции. Да, иногда после ресайза вес картинки может уменьшиться, но это не из-за сжатия. Сжатие можно сделать и без ресайза.
Тут вам гугл с википедией лучше помогут. На хабре есть статьи https://habr.com/ru/post/454944/
Если в двух словах, то в функции imagejpeg из вашего кода есть третий параметр, который отвечает как раз за сжатие. Т.е. при одном и том же размере картинка может быть с разной степенью сжатия. Ну и использование GD в 2022, мягко говоря, выбор неоптимальный. Если вам попадутся хорошо оптимизированные картинки, вы будете удивлены, когда уменьшенная в размерах по вашему коду картинка будет весить больше оригинала.
Кликбейт детектед! Автор, разберитесь с понятиями сжатие и ресайз.
Если не нравится static $var в функции, то можно сделать через метод класса. В случае с "большими данными" подобное разделение логики может сказаться негативно, т.к. факт того, что в sum_even_values можно отправлять только "правильные" массивы, априори находится исключительно в голове автора такой функции, если, конечно, он не пишет очень расширенные комментарии к коду, а все его коллеги не перечитывают их каждый раз. Получается логика формально разделена, но у всей команды в голове постоянно должно быть понимание что и как можно слать, что, на мой взгляд, хуже, чем отсутствие такого разделения. Но это, конечно же, субъективно.
Не совсем понял почему в указанном примере в функцию sum_even_values отправлен весь цикл foreach, а не обработка одного элемента. В таком случае всё будет прекрасно работать и без генераторов, и источники данных можно легко менять без лишнего повторения кода. Т.е. опять никакого преимущества у генераторов особо нет в таком использовании, или я что-то недопонял?
Да, вот про вычисление релевантности очень интересно. Отбрасывается ли окончание в случае русского языка? Т.е. будет ли искаться "делал" при запросе "делалА", или "красив" при запросе "красивЫЙ" и как посчитается релевантность, ведь тогда отношение длин больше 1?
Учитываются ли опечатки и ошибки - а/о, е/и, сдвоенные согласные? Индек строится прямо по словам или делается metaphone/soundex?
Учитывается ли порядок слов? Т.е. будет ли найдено "кофе был крепкий" в описанном примере?
Что делаете с местоимениями, предлогами, междометиями, сокращениями, аббревиатурами при индексировании, поиске, вычислении релевантности?
Не сообщили самого интересного: сколько стоила разработка/поддержка ДО рефакторинга, сколько стоит теперь. Точных цифр, конечно же, не жду, но хотя бы порядок узнать было бы очень интересно. Какого уровня проект должен быть, чтобы позволить себе "9 разработчиков на проекте"?
Даже если создадите проблемы с безопасностью, то надо чтобы кто-то их начал целенаправленно искать, об этом речь. Есть мнение, что какие-нибудь условные самописные региональные интернет-магазины годами живут с
ужаснымидырами в безопасности, как неуловимый Джо из анекдота. Один из первых пунктов кулхацкерского чеклиста — проверить наличие известных уязвимостей у используемого софта, в таких случаях часто становится единственным, ибо дальше лень и нафиг надо.Про уровень архитектуры да, безусловно, поэтому озвученное мной это только аргумент, а не исчерпывающая причина отказа. В каждом случае надо взвешивать все за и против.
Мне кажется, и в статье, и в комментариях забыли упомянуть про ещё один немаловажный аргумент в рассматриваемом вопросе — получая в своём проекте все озвученные преимущества фреймворка вы получаете также и все его уязвимости. А они есть в любом фреймворке, какими бы талантливыми не были его разработчики (укажите на фреймворк без уязвимостей, если я ошибаюсь). Причём количество людей, ищущих эти уязвимости, прямо пропорционально популярности фреймворка. Т.о., имея уникальную разработку, вы повышаете трудозатраты на взлом конкретно вашего проекта, т.к. известных уязвимостей найти в сети не получится. Соответственно, существенно понижается привлекательность взлома, т.к. даже при успехе злоумышленник будет иметь один взломанный проект, а не условно "все сайты на фреймворке Х". Проще говоря, надо иметь очень популярный проект, чтобы начали ломать вас ради вас.
Проблема отчасти решаема обновлениями фреймворка, но это несёт сопутствующие накладные расходы (в статье это упомянуто). Считаю, это довольно весомый аргумент при разработке
популярногокоммерческого продукта.