Пишу на Golang, увлекаюсь фотографией:)
Контакты

Достижения

Все достижения (9)

Наибольший вклад в теги

Все теги (71)

Лучшие ответы пользователя

Все ответы (106)
  • Вопрос по подключению системы кэширования?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Почитайте, optimization.guide и вот вам немного теории:

    Кешировать можно:
    • целиком всю страницу (для каждой страницы своя запись в кеше)
    • отдельные части сайта


    Кешировать можно в файлах:
    • генераруя готового html
    • генерируя html+php, так работают smarty и прочие шаблонизаторы собирая множество шаблонов в один
    • в виде бинарного содержимого, сюда и готовый html и готовые значения вычислений и прочее
    • в виде сериализованного массива с чем угодно, от предыдущего пункта отличается только форматом хранения


    Кешировать можно в базе:
    • в mysql/postgresql и прочих SQL - будет храниться на диске и горячие данные в памяти
    • в mysql/postgresql и прочих SQL в in-memory таблицах - будет храниться в оперативке, но без дополнительных усилий кеш пропадёт при рестарте сервера
    • в in-memory базах данных, часто это memcache, redis и прочее - опять таки выключили сервер - данные пропали
    • в in-memory базах данных с сохранением на диск, это Tarantool, memcachedb и прочие если там заявлена такая функциональность


    Так же можно:
    • кешировать всё кроме вставок динамики
    • кешировать куски вставляя их в динамику

    Это два противоположных подхода которые при особом желании можно смешивать в рамках одного проекта.

    Обновлять кеш можно:
    • при каждом запросе проверяя что старый кеш устарел
    • предкеширование - отдельным кроном/демоном/сервисом генерировать кеш раз в N минут
    • по мере изменения данных сбрасывать кеш и следующий запрос сгенерирует новый
    • по мере изменения данных сбрасывать кеш путём генерации сразу нового и замены старого на новый


    Кеш можно хранить:
    • на том же сервере что и сайт - нет задержек в сети, но зато ресурсы теже, CPU, диск, оперативная память
    • на внешнем сервере - задержки в сети, зато ресурсы отдельно


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

    Если используете CMS/CMF - посмотрите готовые плагины для кеширования. Если у вас не sharing-хостинг с мини-сайтом - озаботтесь профилированием (xhproof) и мониторингом, это поможет понять где и что кешировать.

    Так же стоит рассмотреть кэширование байт-кода:
    • OpCache
    • APC
    • XCache

    Стоит прочитать вот эту статью:
    Сравнение скорости исполнения кода Drupal для PHP 5.3-5.6 и 7.0. «Битва оптимизаторов кода» apc vs xcache vs opcache https://habrahabr.ru/post/264775/

    Так же стоит:
    • увеличить буферы в MySQL (если памяти много)
    • потюнить другие системы, например поставить nginx вместо apache, раздавать статику с другого хоста
    • и конечно же - посмотреть как долго работают SQL запросы и по возможности их облегчить


    Кеширование в MySQL с использованием HandlerSocket:
    • данные хранятся в MySQL innodb базе, а значит чтение и запись можно делать как по старинке через SQL так и через HandlerSocket
    • можно сделать любое количество колонок, лишь бы это позволял MySQL
    • быстрая вставка
    • быстрая выборка
    • бинарный протокол передачи данных
    • есть несколько библиотек для PHP, как относительно новых так и старых
    • в Percona Server (форк MySQL) HandlerSocket.so есть в поставке по умолчанию, разве что нужно включить
    • в MySQL необходимо собрать HandlerSocket самостоятельно и включить в MySQL


    Можно почитать вот тут:
    Ответ написан
    3 комментария
  • Наше доменное имя и сайт 18+ тематики, как поступить?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Отличный повод для PR. Слоганы такие "Мы не порно-сайт, но сайты делаем не менее интересными:)". Вообще от вас зависит что вам удобно или нравится. Проведите анкетирование у клиентов - предложите им пять-шесть других доменов и названий. С другой стороны - всё равно у кого там какой домен похожий на ваш - если ваш товар или услуга того стоит то ничто не помешает.
    Ответ написан
    Комментировать
  • Как исправить объявление на Freelancim о поиске веб-разработчика - сейчас совсем нет откликов?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Вам стоило составить конкретное и точное описание ТЗ по задаче, что бы программист не ломал голову где начинается одно и заканчивается другое.

    Например. Заголовок "Python-Django - сделать авторизацию и сервис вопросов, постоянное сотрудничество"

    Требуется Python-Django разработчик, для регулярной или периодической работы:
    - указывайте стоимость работы за час - это поможет нам сориентироваться по тому сколько будет стоить ваша работа
    - оцените первую задачу по времени и по стоимости (можно без учёта стоимости часа работы, так как мы понимаем что специфика у каждой задачи своя, сложность, трудоёмкость), в качестве времени укажите не количество часов которые потребуются если делать задачу за раз, а исходя из того когда вы сможете сдать работу.

    Задача: Сделать шаблонный сайт на django:
    - авторизация
    - регистрация
    - логаут
    - восстановление пароля
    - смена пароля

    - функционал "вопросов и ответов"
    -- создание вопроса - ввод само текста вопроса, плюс от 2 до 5 вариантов ответа
    -- сохранение, просмотр, редактирование и удаление вопроса
    -- отправка вопроса в мобильное приложение в требуемом формате

    Для оперативной работы напишите по скайпу: {ваш скайп}
    Ответ написан
    2 комментария
  • Какой выбрать вектор дальнейшего обучения?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Читайте много книг, в идеале все по выбранному направлению и процентов 30-40% от смежных.

    Если конкретно по информационной безопасности то надо знать:
    • компилируемые языки, Си, Си++
    • разбираться в ядре операционной системы, можно ограничиться только миром Linux, а можно пройтись по всем основным, "Ядро Linux. Описание процесса разработки" Роберт Лав, у Таненбаума много потрясающих книг на тему распределённых систем и операционок как таковых, в чём-то базовые вещи
    • понимать алгоритмы - здесь вам в помощь бессмертные труды Кнута
    • желательно знать парочку интерпретируемых языков что бы искать баги и чинить уязвимости по всем фронтам
    • разбираться в компиляторах и понимать машинный код хотя бы на базовом уровне
    • разбираться в виртуализации, ключевые слова: kvm, quemu, xen, lxc, openvz, virtuozzo, docker, vagrant, прочеее...


    Читать https://www.opennet.ru и www.linux.org.ru , по сетям nag.ru
    Определиться со сферой деятельности и копать более углублённо по ней.
    Ответ написан
    3 комментария
  • Бесплатный проект для портфолио превратился в бесконечный. Как быть?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Достаточно просто сказать "Окей, я потратил 100500 часов, а сейчас я иду на пляж, можете забрать то что есть за 100500 денег и в понедельник обсудить список правок за отдельные деньги либо не получить ничего."
    Улыбнуться и пойти на пляж. Так вы узнаете нужен ли человеку проект который вы делаете или он просто развлекается. Если развлекается - это уже не интересный проект.

    Кстати не стоит вам работать бесплатно, вы продаёте прежде всего своё время. А время дорого. Цена вашего времени зависит от того что вы можете сделать, но опять таки - вряд ли ваше время ничего не стоит. Оценить просто:
    1. что я могу сделать за час:
    - первое
    - второе
    - третье
    2. сколько стоит то что я только что перечислил?
    3. сколько я готов был бы заплатить за то что я перечислил? А если буду делать это в два раза круче и с дополнительными плюшками?
    4. а много ли народу это умеет?
    5. сколько готовы заплатить другие люди которые в этом разбираются?
    6. сколько готовы заплатить другие люди которые в этом не разбираются?
    7. сколько нервных клеток мне стоит сделать то-то и то-то.

    И как только вы понимаете что вы делаете что-то не то - значит вы делаете что-то не то и вам нужно принимать решение. Либо спускать свою капитализацию на проект и заказчика который вас не ценит либо бросить это всё (с вариантами отдать бесплатно, продать или ещё как-то) и переосмыслить собственный путь.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (6)