• Почему не получается подключиться к MySQL через сокет?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    $mysqli = new mysqli('localhost', 'root', 'password', '', 0, '/var/run/mysqld/mysqld.sock');

    php.net/manual/ru/mysqli.construct.php
    Ответ написан
  • Бывают ли SSL сертификаты рассчитанные на хостеров?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Если следовать по пути наименьшего сопротивления, то только использовать сторонние сервисы.

    Крупные CDN-компании приобретают промежуточный сертификат на своё имя (заверенный кем-то из крупных корневых провайдеров сертификатов), позволяющий создавать неограниченное количество сертификатов. Стоимость такого решения подходит только совсем крупному бизнесу.
    Именно возможность выпускать собственные сертификаты позволяет перевыпускать их для добавления новых доменов.

    Ещё бывает практика, когда CDN-провайдер заключает партнёрское соглашение с поставщиком SSL, позволяющее приобретать сертификаты гигантским оптом за символические копейки. Так, в частности, делает CloudFlare: оперирует гигантским количеством Comodo PositiveSSL Multi-Domain.
    Ответ написан
    1 комментарий
  • Как оправлять команды у бота Telegram при выборе в меню?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Не пойму, как отлавливать, какую из 3х клавишей нажал?
    и как сделать так, чтобы в меню был один текст, а при нажатии на нее отправлялась к примеру команда?

    С помощью Inline Keyboards, появившемся в Bot API 2.0.
    https://core.telegram.org/bots/2-0-intro#new-inlin...
    https://core.telegram.org/bots/api#inlinekeyboardmarkup

    > Unlike with custom reply keyboards, pressing buttons on inline keyboards doesn't result in messages sent to the chat. Instead, inline keyboards support buttons that work behind the scenes: callback buttons, URL buttons and switch to inline buttons.

    Как на этапе отправки текста, мы знаем, что нам надо перевести текст?

    При приёме сообщения от user_id, бот проверяет, на каком шаге в последний раз остановился этот user_id, и обрабатывает сообщение в рамках текущего шага. Если шаг "перевести" - то в ответ на любое сообщение он переведёт строку. На этапе "перевести" бот просто не показывает никакого меню, он просто ждёт строку.

    Для этого боту делают хранилище сессий. Это может быть просто БД с колонками `user_id` и `state`, где в стэйте будет указан текущий шаг. При обработке сообщения, бот смотрит шаг и действует в соответствии с тем, чего хотел пользователь на этом шаге.
    Если пользователь запросил другую функцию, или сделал /cancel, поменять шаг в таблице.
    Ответ написан
    8 комментариев
  • Как вынести большую таблицу из базы и сделать её общей?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Если самоцель такого выноса - прекратить влияние дампов на доступность чтения с БД, то, при условии, что ваши таблицы в InnoDB и у вас включён binlog, вы можете снимать копии БД с помощью xtrabackup (innobackupex), не останавливая службу и не прерывая доступ к таблицам.
    Изменения, произошедшие с момента старта бекапа, "доедут" из бинлога на завершении процесса.
    Снимать копии можно как на тот же сервер, так и стримить их (без использования локального диска) на другой.

    Если таблицы в MyISAM, можно настроить SLAVE-сервер и снимать дампы с него, не влияя на доступность основного.

    Это практика.

    Правда из контекста не совсем ясно - это некие регулярные дампы данных для резервирования, или это ручные дампы для разработчиков, которые они могут спонтанно снять в любое время через phpmyadmin?
    Если второе, то это не исправить изменением архитектуры. Для чего dev'ы дампят базу с логами? Почему они не могут задампить только нужные мелковесящие таблицы, или даже ограничиться их структурой, чтобы не задевать другие таблицы?
    Если для разработки необходим весь снэпшот базы, я бы сделал его снятие регулярным с xtrabackup и публиковал разработчикам для скачивания по сети из одного конкретного места, чтобы никто больше не подключался к продакшену и не делал никаких дампов с продакшена.
    Ответ написан
    Комментировать
  • Как в sublime text настроить подсветку ошибок синтаксиса php, js, json, html?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    https://github.com/SublimeLinter/SublimeLinter3
    sublimelinter.readthedocs.io/en/latest/installatio...

    Затем по `cmd+shift+p` устанавливаются отдельные плагины `sublimelinter-что-нибудь` на нужные языки.

    Но для IDE-задач возможно проще будет использовать всё-таки IDE, где всё это из коробки.
    Sublime Text конечно можно довести до такого состояния, и плагины почти на все случаи жизни в нём сообщество уже создало, но не всем нравится модульность и необходимость настраивать каждый модуль самостоятельно.
    Ответ написан
    2 комментария
  • Можно ли залить файлы с сервера на yandex disk?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    rclone умеет Yandex.Disk.
    Можно отправлять файлы из определённой папки кроном через него.
    Ответ написан
    Комментировать
  • Где можно задать вопрос о причинах блокировки почтового аккаунта Gmail?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    За бездействие аккаунты на Gmail не отключают.
    Отключают за нарушение Terms of Service, например спам.

    Если это сделали не Вы, то есть вероятность, что пароль от Вашего ящика был подобран, или произошла утечка паролей с браузера (вредоносным ПО и незашифрованной базой паролей в браузере).

    Автоматическая инструкция по восстановлению:
    https://support.google.com/accounts/contact/disabled2
    Ответ написан
    Комментировать
  • Что на сайте нужно обязательно кэшировать?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Тяжёлые места, которые могут повесить сайт при повышенной нагрузке.
    Например, данные на главной странице, или динамический контент, отображаемый без регистрации.

    Представьте, что на сайт зайдёт 1000 человек одновременно, просто на главную страницу сайта. Во что именно упрётся загрузка в такой системе - то и стоит по возможности кешировать, чтобы загрузка этих данных упиралась не в БД или диск, а подгружалась, например, в готовом виде из RAM.
    Ответ написан
    Комментировать
  • Что использовать в качестве файлового хранилища в локальной сети?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Любой компьютер с дисками.
    Или с одним диском, если отсутствие резервирования не напрягает.

    Если поставите Windows (Server?) - нужно будет расшарить сетевую папку для рабочей группы.
    Если поставите Linux - расшарить папку через samba.

    14 машин, подключенных по wi-fi к роутеру

    Такая конфигурация будет лагать при любых маломальских нагрузках на файловое хранилище. Достаточно будет начать копирование одного большого файла, чтобы испортить связь всем остальным. Это возможная причина проброса лагов диска по USB.
    Хотя USB-диски в общем случае не предназначены для непрерывных конкурентных обращений, поскольку многие модели рассчитаны только на архивацию данных (так позиционируется производителем). Лагать может при таком количестве обращений/запрашиваемых данных и сам диск.

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

    UPD:
    Альтернатива в виде самодостаточного сетевого диска:
    www.wdc.com/ru/products/catalog/Default.aspx?segment=4
    См. модели с самого низа, умеют ли они ethernet и samba/smb (виндовые шары).
    Ещё один список: https://market.yandex.ru/catalog/55316/list?hid=91...
    Похожие сетевые боксы есть и у других поставщиков.

    Минусы:
    - Дорогие, а с курсом подавно. Собрать свой микро-комп на самом минимальном оборудовании может оказаться дешевле.
    - Большинство этих моделей - для персонального использования, и при большом кол-ве параллельной активности может лагать, к этому надо готовиться.
    - Невозможность расширять объёмы диска без замены устройства. У некоторых моделей можно. Не знаю, насколько это для вас критично.
    - Не гибко. Нельзя взять и добавить второй диск для бэкапов.
    Ответ написан
    8 комментариев
  • Что дает такая разница в подходах к адресации поддоменов?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Предположу причины, почему Яндекс делает catch-all:
    • Это универсальная заглушка на уже неиспользуемые исторические субдомены или отменённые продукты/проекты, к которым не было создано редиректов.
    • Это способ не терять трафик даже в случае чьей-либо ошибки в написании адреса или некорректном URL на форуме/чате/медиа.
    • Это ещё один источник сбора футпринтов (улучшать таргетинг для Яндекс.Директа) для каждого зашедшего на ресурсы Яндекса, даже если URL устарел и более не используется.
    • Это позволяет привлечь фидбэк пользователей для решения отдельных ошибок 404, когда URL оказался недоступен непреднамеренно. Пользователь может нажать "сообщите нам, если ошибка появилась по нашей вине", т.е. даже в случае, если мониторинг Яндекса это прошляпил, о проблеме смогут сказать пользователи.
    • Это продвижение других сервисов Яндекса, которые могут заинтересовать зашедшего даже не смотря на то, что он ничего не нашёл по этому URL.
    • Это возможность перехватить дальнейший сёрфинг пользователя. Он продолжит его через поиск Яндекса.
    • Это возможность промониторить, как часто заходили на конкретный несуществующий поддомен, чтобы понять спрос к какому-либо продукту или какой-либо медийный бум, связанный с Яндексом, но с использованием неправильного URL.
    • Это возможность отслеживать, как часто пользователи заходят на legacy-поддомены, и к каким из них есть смысл создавать форварды на другие продукты.


    Почему так не делает Google, я не знаю.
    Ответ написан
    Комментировать
  • Как установить mariadb поверх mysql?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Касательно миграции:

    В общей ситуации, может быть достаточно следующего:
    1. Выделить внерабочее время, когда можно будет провести профилактику.
    2. Сделать резервную копию БД (как приложения, так и information_scheme)
    3. Остановить MySQL
    4. Сделать резервную копию файлов данных (/var/lib/mysql)
    5. Сделать резервную копию конфигов из /etc/mysql
    6. Удалить пакет: 'sudo apt-get remove mysql-server'
    7. Подключить репозиторий MariaDB:
      https://downloads.mariadb.org/mariadb/repositories/
    8. Выполнить sudo apt-get update
    9. Установить пакет: sudo apt-get install mariadb-server
    10. Убедиться, что приложение работает, как ожидается.

    Всё.

    Что может пойти не так:
    - Слишком существенная разница в конфигах гипотетически может привести к проблеме чтения имеющихся файлов данных новым сервером, препятствуя запуску службы. Причину при этом скорее всего напишет в /var/log/mysql.log или /var/log/mysql.err.
    Я с таким прежде не сталкивался, но если это случится, то будет быстрее: удалить MariaDB, затем отключить репозиторий (удалив соответствующую строку/файл из /etc/apt/sources.list или /etc/apt/sources.list.d/), затем sudo apt-get update, затем установить пакет mysql-server обратно. Перед этим, хорошей идеей будет откатить бэкапы /etc/mysql и /var/lib/mysql на прежние места, чтобы исключить последствия изменения файлов данных/конфигов обновлением на MariaDB. Затем проанализировать, что пошло не так и более лучше подготовиться к следующей попытке миграции.

    Материалы по теме с советами по миграции:
    https://mariadb.com/kb/en/mariadb/upgrading-from-m...
    https://mariadb.com/kb/en/mariadb/moving-to-mariadb/
    https://mariadb.com/blog/how-migrate-mysql-mariadb...
    https://www.digitalocean.com/community/tutorials/s...

    Касательно оптимизации:

    Часто производительность упирается в архитектуру приложения, а не в использование конкретной технологии.

    Например, хорошей идеей будет освоить индексы для тяжёлых запросов.
    Примеры, по какому принципу выбирать колонки для индексирования:
    ruhighload.com/post/%D0%9A%D0%B0%D0%BA+%D0%BF%D1%8...
    ruhighload.com/index.php/2009/06/09/%D0%BA%D0%B0%D...
    ruhighload.com/post/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82...
    Ответ написан
    Комментировать
  • Почему Windows 7 не пользуется вторичным DNS-сервером?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Если клиент получает от первого DNS-сервера ответ NXDOMAIN (Non-existent Domain Name), это всё-равно считается ответом и повода для переключения на второй DNS нет.

    Windows переключится на второй DNS в том случае, если он не получит ответа от DNS сервера, т.е. DNS сервер сам перестанет быть доступен.
    Ответ написан
    3 комментария
  • Каким торрент клиентом вы пользуетесь на вашем linux?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Transmission
    https://www.transmissionbt.com/

    Есть пакетами во всех популярных дистрибутивах.
    Есть нативные GUI, есть веб-интерфейсы (если на сервере).

    Чтобы иметь более прямую и быструю связь с сидами, пробросьте порт с роутера до своего торрент-клиента, чтобы он был таким же, как и указан в торрент-клиенте.
    Ответ написан
  • Влияет ли на SEO продвижение cloudflare?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Предполагается, что поисковики склонны охотнее показывать пользователю сайты, чьи IP зарегистрированы в той же стране, откуда сам пользователей.

    Но в Яндекс.Вебмастер и Google Search Console можно явно указать страну, аудитории которой отдавать предпочтение в ранжировании этого сайта.
    Если этих параметров не указано, поисковики будут "предполагать" аудиторию сайта из косвенных признаков, вроде страны регистрации IP или национальности домена верхнего уровня.

    На практике неизвестно, насколько сильное это оказывает влияние. Сайт может не пропадать из выдачи, даже если указан другой регион. Как именно сайт двигается в топе - не знает никто, кроме поисковиков.

    Можно лишь следовать рекомендациям:
    https://yandex.ru/support/webmaster/site-geography...
    https://support.google.com/webmasters/answer/62399...
    Ответ написан
    Комментировать
  • Как скрыть с сайта некоторые id объектов из SQL-запроса?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Обновите эту часть запроса:
    WHERE janr='$janr_search' AND `id` NOT IN ('1','2','3')


    Добавьте вместо 1, 2, 3, 4 - те id фильмов, которые Вы не хотите показывать.
    Ответ написан
    4 комментария
  • Что быстрее одна БД на много сайтов или отдельная БД под каждый сайт?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Работа каждой отдельной базы данных - определённый накладной расход, который сокращается при содержании всех баз в одном месте. Содержание на одном сервере 10 виртуалок с маленькими базами внутри - по ресурсам дороже, чем их содержание на одном сервере БД.

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

    Если все базы находятся на независимом оборудовании, то конечно же разделение будет производительнее.
    Ответ написан
    Комментировать
  • Как создать sitemap, который будет доступен только ПС?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Файл sitemap.xml можно загрузить вручную в инструментах вебмастера, не публикуя его в robots.txt.

    Можно присвоить ему совершенно другое название.
    Будучи однажды добавленным, именно этот URL будет сканироваться поисковиком. Можете изменять его содержимое в последствии. Поисковик сканирует добавленный sitemaps.xml с интервалом в несколько дней.

    Выдавать различающийся контент ПС и пользователям - плохая практика, за которую поисковики понижают в ранжировании.
    Ответ написан
    Комментировать
  • MySQL в оперативке. Как правильно делать бекап?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Останавливать MySQL совершенно не нужно.

    Варианты бэкапа без остановки сервера:
    • mysqdump - снимает логический дамп данных, но см. подводные камни про блокировку таблиц и консистенц...
    • xtrabackup (использующий innobackupex) - снимает физическую копию InnoDB-баз без остановки приложения/сервера БД. Делает что-то похожее, что и Ваш скрипт, но более продвинуто и без остановки службы.
    Ответ написан
    Комментировать
  • Ubuntu Server: Возможен ли автобэкап каталога и MySQL бд с добавлением в архив и загрузкой на облако?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Готовых средств для такой совмещённой задачи ни в одном дистрибутиве нет.

    Можно написать bash-скрипт, делающий следующее:
    1. Дамп либо через mysqldump (см. подводные камни с блокировкой таблиц), либо с xtrabackup (только для InnoDB), именующий его по дате.
    2. Другим инструментом (rclone, duplicity) синхронизировать его в нужное облако или на удалённый сервер (rsync, scp).
    Ответ написан
    Комментировать
  • Автоматический сбрасывается max_allowed_packet в MySql, как лечить?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Этот параметр никогда не сбрасывается автоматически. При любом обстоятельстве, это делается выполняемой командой.

    Попробуйте отнять права "SUPER" (позволяющие SET GLOBAL) у пользователя, от имени которого работает Ваше приложение:
    REVOKE SUPER ON *.* FROM 'username'@'localhost';
    FLUSH PRIVILEGES;
    Ответ написан