• Как правильно распределять ответственность между классами?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Сервис - это часть модели. Класс, который реализует некую бизнес-логику, не связанную напрямую с хранилищем.
    Репозиторий - часть модели, класс, который содержит методы для работы с хранилищем.
    Стор - это какая-то местечковая приблуда. Из битрикса небось? Либо какие-то академические измышления, вот как в соседнем ответе. Вроде человек что-то пишет, но яснее ничего не становится.
    Маппер имеет много значений. Если речь про Data Mapper, то это разделение самих данных и их отображения в БД.

    Читать стандартно - Дядюшка Боб Мартин и Мартин Фаулер. Конкретно по РНР - Зандстра.
    Ответ написан
    2 комментария
  • Почему может создаваться большое количество файлов сессий на сервере Ubuntu?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Сессии сами не создаются, их создает РНР при обращении к сайту.
    Сколько обращений - столько сессий.

    Соответственно, смотреть надо по двум направлениям
    1. проверить, не долбит ли кто-то запросами, и заблокировать или ограничить, например использовать Rate Limit у NGINX
    2. файловая система - самое убогое хранилище для сессий, и используется по умолчанию только потому, что для всех других нужно указывать параметры подключения. Соответственно, вместо файлов использовать базу данных.

    Плюс надо смотреть по коду. Если сайт создает сессию на откровенно мусорный запрос, то, возможно, этого не стоит делать. Ну и нельзя сбрасывать со счетов гениальных скриптописателей, которые сами себе создают нагрузку на сайт. Не раз и не два я видел любителей инклюдить локальные файлы по HTTP.
    Ответ написан
    Комментировать
  • Фреймворки, действительно ли важно?

    Jacen11
    @Jacen11
    потому что с вами никто не сможет работать, если вы фрилансер, нет проблем. Вы говорите буквально "я придумал клингонский, почему меня за это не любят и не дают миллионы денег?". Ну потому что это никому не нужно.

    особенно мне нравится ваша уверенность, что ваши методики лучше, чем у тысяч программистов за десятилетия лет практики и множество обсуждений
    Ответ написан
    2 комментария
  • Как при выводе данных из базы модифицировать одно из полей?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    У вас каша в голове. И вы все делаете неправильно.
    Заменять теги на сущности надо не перед записью в БД, а перед выводом в HTML. Желательно - средствами этого "табулятора", если он это умеет.

    Никакой HTML в БД хранить нельзя.
    Любое HTML оформление надо добавлять средствами этого "табулятора".
    В самом крайнем случае - в ноде, перед выводом

    name: '<p>' + entities.encode(result.name) + '<p>'
    Хотя это конечно говнокод и кровь из глаз.
    Ответ написан
    2 комментария
  • Как объединить 3 массива из файлов после цикла foreach?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Вопрос изначально был хреново описан, слава яйцам ТС догадался что мы не знаем что хранится в его массивах и что надо получить в итоге... Первое правило решения задачи - хорошо описать исходные данные и требуемый результат.
    2)
    В переменной $config массив:
    Массив состоит из 1 элемента, было бы странно ожидать что итераций foreach будет больше одной. Возможно имеет смысл проверять переменные чаще, если результат не соответствует ожиданиям, var_dump/dd($lang) внутри foreach был бы очень кстати...
    3) У вас есть список языков, который соответствует названиям файлов, зачем дергать каждый раз весть список файлов, когда можно просто открыть файл __DIR__/$lang.php? Ну, разве что нужна проверка на file_exists()...
    4) Вам дважды указали на ошибку с отсутствием второго аргумента в array_merge, которую вы проигнорировали...
    Ответ написан
    Комментировать
  • Получится ли установить 64 битную операционную систему windows 10 на ноутбук: Toshiba NB200, 2009 года выпуска?

    @kalapanga
    Не знаю, откуда скопированы эти характеристики, но в пункте "Технологии" у каждого элемента явно не хватает указания "Да/Нет".
    Смотрим тут: https://ark.intel.com/content/www/ru/ru/ark/produc...
    и видим:
    Архитектура Intel® 64 - Нет
    Набор команд - 32-bit
    Так что ответ - Нет.
    Ответ написан
    Комментировать
  • Стоит ли создавать таблицу в БД, в которой будет заведомо фиксированное кол-во записей?

    @d-stream
    Готовые решения - не подаю, но...
    Каждый bool со временем становится enum, а каждому enum со временем требуются допатрибуты.
    Как итого - лучше сразу делать таблицы... Ну кроме случаев оплаты за количество нажатых кнопок...

    Страна - может разделится, может сменить свой код, наименование, в комбобоксе выбора места немного и ОАЭ там выглядит гармоничнее чем "Объединённые Арабские Эмираты" , а вот в карточке фильма - наоборот.
    Плюс страны могут могут объединяться смысловыми понятиями - азиатские фильмы, европейские и т.п.

    С жанрами и поджанрами - та же фигня.

    Итого как минимум (который можно юзать сразу или прийти к нему итеративно):
    - id
    - краткое наименование
    - полное наименование
    - картинка (например имя файла флага страны)
    - порядок сортировки (возможно даже несколько порядков)
    Ответ написан
    Комментировать
  • Как с помощью ssh скачать сайт весом 54гб?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Rsync, не?
    Ответ написан
    Комментировать
  • Как подготовить интернет-магазин к боевому старту?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Давайте обратимся к классикам, например применим метод Ферми для оценки топа посещаемости ресурса. Естественно все приведенные цифры с некоторой погрешностью...

    Пусть в регионе проживает 1КК людей, из которых 20% это несовершеннолетние, 20% это люди пожилого возраста, то есть 2 категории, которые с огромной долей вероятности сервисом пользоваться не будут. Так же, можно сразу выкинуть 15% проживающих за чертой бедности, и еще примерно столько же (15%) находящихся в граничном с бедностью состоянии.

    Из оставшихся 30% (300К)охват рекламой/слухами может составить около 50% в столице, и 30% в области, пусть будет 40% общего охвата, хотя это скорее всего завышенный показатель. То есть в остатке потенциальных знающих о вашем сайте около 130К, причем это цифра не на старте, а примерно спустя пол года-год.

    Предположим что магазин имеет не нишевую специализацию, а достаточно широкий ассортимент, заинтересующий 70% от потенциальных ознакомившихся с ним людей (это оооочень оптимистично, но допустим). Из них 30% "отложат на потом" посещение ресурса, и больше о нем не вспомнят, или зайдут 1-2 раза, что на общую статистику не влияет. В сухом остатке имеем около 40-70К потенциальных посетителей. Предположим, что прошло пол года, и все они равномерно росли до этой цифры, и посещали магазин ну пусть 3 раза в месяц.

    В итоге в месяц будет 70к*3 = 210К визитов, визит примерно из 5-7 страниц, итого = 6*210К = 1 260 000 хитов в месяц.
    Делим на 30 дней = 42 000. делим на 12 активных часов, получаем 3500 хитов в час, 58 хитов в минуту, то есть 1 хит в секунду. В пике пусть будет 6 рпс.

    Вывод: слабенький церлерон и винт на 7200 rpm вполне справится с вашей мегаубервафлей...

    Если ваши цифры не совпадают с моими - просто пересчитайте самостоятельно всю цепочку, будете знать примерную нагрузку.
    Ответ написан
    3 комментария
  • Docker в Windows, Linux переводы строк, как правильно?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    непонятна ваша проблема.
    Переводы строк в линукс виде - совершенно корректно.
    Логи нормальные, что именно не так, где именно проблема - не указано.
    Виндовый блокнот не умеет в линукс перевод строк?
    Какая винда? у меня под блокнот нормально все делает
    Ну или открывай не блокнотом
    Ответ написан
    Комментировать
  • Docker в Windows, Linux переводы строк, как правильно?

    Вариант раз: писать логи в stdout и пусть сам Docker или какой-нибудь vector их перенаправит куда следует в нужном формате.

    Вариант два: Забить и настроить инструмент, который читает файлы на винде так, чтобы он LF считал за нормальный перенос строки.
    Ответ написан
    Комментировать
  • Какой хостинг выбрать для web проектов на java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Придется научиться все делать ручками!
    Поставить томкат и nginx например. В томкате есть админ-панелька, но с ней тоже нужно разобраться. В ней можно war-файлы публиковать...
    Поставить letsencrypt или вместо nginx поставить caddy, или haproxy.
    Ну и я вообще не понимаю, зачем все эти панельки нужны, они все делают из рук вон плохо. Причем, один раз разобравшись, эти панельки нафиг не нужны!
    Да и смысла большого в war-файлах не вижу уже лет 10! Есть и spring, и vertx, и sparkjava, и с десяток всего другого, вместо толстых контейнеров.
    Есть даже OSGI типа apache karaf и eclipse equinox!
    Ответ написан
    5 комментариев
  • Как правильно организовать поиск по большому кол-во бд?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Как сделать поиск максимально производительным?
    Вопрос из серии "какая машина самая крутая?". Нет решения которое подходит под любой вариант базы и структуры, иначе все только одним им и пользовались, логично?

    Есть несколько больших postgresql таблиц(по ≈ 1млн строк в каждой).
    Это таблицы среднего размера, ничего большого в них нет. Миллион записей это средняя таблица со статистикой, все должно работать достаточно быстро и без каких-то особых танцев.

    Пользователь вводит номер, ему выдаётся инфа из бд.
    Ну так сами пробовали сделать 20-30 рандомных запросов и посмотреть скорость, explain, использование индексов? Или мы "боимся заранее"?

    Что использовать? Асинхронность? Многопоточность?
    Мозги, используйте мозги, это гораздо эффективнее...
    Ответ написан
    Комментировать
  • Как без ошибок установить NVM на Windows?

    Grapeoff
    @Grapeoff
    В чём концепция...?
    Впредь больше называть своего пользователя кириллицей.
    Ответ написан
    4 комментария
  • Как сделать сертификаты для поддоменов?

    @Drno
    проблемы нет, у нас сертификаты не слетают. юзаем letsncrypt
    Ответ написан
    Комментировать
  • Как сделать сертификаты для поддоменов?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Если портятся сертификаты - лечить нужно причину порчи сертификатов, а не вот это вот все!
    Ответ написан
    Комментировать
  • Нужно ли хранить сервер и клиент в разных репозиториях?

    Оба варианта допустимы.
    Оба варианта могут оказаться очень неудобными в определённых обстоятельствах.

    Если у тебя одна команда или вообще один человек и над тем и над тем работает - делай монорепу.

    Если изменения будут задевать и клиент и сервер одновременно - делай монорепу.

    Если в клиенте и сервере есть общий код, то делай монорепу.

    Иначе - разделяй
    Ответ написан
    Комментировать
  • Почему при использовании substr в php, если в тексте есть символ точки, то он считает не корректно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    substr работает не с символами, а с байтами. Для многобайтовых кодировок, где один символ может представляться несколькими байтами (кириллица в UTF-8 - два байта на символ) надо использовать библиотеку mbstring. Соответственно, substr заменяется на mb_substr.
    Ответ написан
    Комментировать