• Как организовать защиту от парсинга сайта?

    copist
    @copist
    Empower people to give
    Пользовался вот такими методами для защиты небольших фрагментов текста:
    1. Генерация текстов в виде изображений - обычно раньше так имейлы скрывали, но можно что угодно генерировать. Можно накладывать водяные знаки, использовать многоцветную подложку, а лучше всего вставлять произвольные символы в произвольных местах тем же цветом, что и основной текст - при распознавании в результатах будет мусор.
    2. Вставка в текст мусорных тегов c динамическими случайными стилями
    <style>.GHJbk.KLJHK { display: none; }</style>
    <span class="ADsdas POxlka3">note</span>
    <span class="GHJbk KLJHK">x862</span>
    <span class="j38jdJ Uu300D">book</p>


    При этом текст выглядит как notebook, а если через буфер обмена скопировать, то notex862book.

    Шум должен быть псевдослучайным, то есть не зависеть от времени, погоды или генератора случайных чисел. Он должен зависеть от текста. Это во избежании восстановления неиспорченного текста путём многократной генерации картинки или текста с "шумом".

    Оба способа приводят к просадке по производительности
    Ответ написан
    5 комментариев
  • Прослушивание музыки без скачивания, возможно ли?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    Здравствуй, собрат по несчастью :)
    У меня аналогичная проблема, но я стал интегрироваться не с vk, а c pleer.com. К сожалению, они тоже быстро смекнули, что так трафика на всех не хватит и url-ы на песни имеют привязку к ip и access_token. Поэтому настроил проксирование с кешированием с помощью nginx (curl только для API).
    Плюс в данном случае только один - не приходится качать музыку.
    Но всё равно, трафик приходится пропускать через свой VPS. В принципе, я думаю, что не проблема доплатить за дополнительный трафик, если надо будет.
    Ответ написан
  • Как добавить в RSS новости из групп vk.com?

    ExileeD
    @ExileeD
    PHP/Python developer
    Как развернуть
    Или можете использовать мой вариант. Если надо добавить функционал пишите
    Ответ написан
    28 комментариев
  • Есть ли файловый аналог .htaccess для nginx и lighttpd?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    У нас разработка идет на apache а продакшен / дев сервера на nginx.
    В итоге собрали мини скрипт для автоматизации конвертации:

    В конфиге nginx сделали инклуд отдельного файла, в который пишем из скрипта обновленный код.
    У нас не используются специфичные инструкции, поэтому весь код условно
    $htaccess = file('.htaccess');
    foreach ($htaccess as $line)
    {
    	if (substr($line,0,11) == 'RewriteRule')
    	{
    		$line = str_replace('RewriteRule ^','rewrite ^/',$line);
    		$line = str_replace('[QSA,L]','last;',$line);
    		echo $line, "\n";
    	}
    }

    Ну и делаем nginx reload после этого

    PS
    В целом у нас это все выглядит так:
    Конфиг nginx для домена
    server {
      server_name  mysite.com;
      set $site_root '/www/mysite.com';
      ...
      include /etc/nginx/conf.d/mysite.com-rewrite.inc;
      ...
    }

    Есть самописная система деплоя, когда нужно сделать деплой просто запускает условно
    php _redirect_maker.php > /etc/nginx/conf.d/mysite.com-rewrite.inc
    service nginx reload
    Ответ написан
    9 комментариев
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    Я бы посоветовал делать то, что интересно. Просто читая книжки и немного программируя - это всё прекрасно, но почти не остается в памяти. Возьмите любую идею и начните её реализовывать. Или изучите любой опенсорсный продукт(большой) и допилите его.
    Ответ написан
    4 комментария
  • Система личных сообщений с сортировкой

    SELECT message FROM messages
    WHERE user_id = ?
    GROUP BY recepient_id
    HAVING max(added)
    Ответ написан
    5 комментариев
  • Как быть, если проиндексировался сайт на этапе разработки?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    abisab.com/wordpress/kak-udalit-url-adresa-iz-pois...

    Только прочитайте внимательно, когда не следует этим пользоваться. Насколько я понимаю, в Вашем случае можно ничего не бояться.
    Ответ написан
    4 комментария
  • Как реализовать ленту новостей для социальной сети?

    Tyranron
    @Tyranron
    Ну, join'ить это дело можно (подозреваю что там ещё и union'ом прийдётся заливать), но так обычно не делают, потому что это решение потом невозможно будет отмасштабировать. Запрос тяжелый, кеширование поможет плохо, так как активность большая и кеш часто сбрасываться будет и база будет дергаться не многим меньше, ну и если базу надо распилить на 2 и больше серверов, то останемся лапу сосать с join'ами.

    Для начала можно сделать так - для конкретного `user_id` (владелец новостной ленты):
    1) Первым запросом стягиваем айди всех друзей
    2) Вторым запросом стягиваем айди всех групп, в которых состоит
    3) Третьим запросом стягиваем из comments все записи WHERE `user_id` IN (группы + друзья) ORDER BY/LIMIT по вкусу.

    Преимущества:
    Меньшая нагрузка на базу, она будет делать меньше дорогостоящих операций с временными таблицами. По индексам быстрее будет отдавать результат.
    Первые 2 запроса можно спокойно закешировать, так как добавляются/удаляются друзья гораздо реже, чем сами посты. Потому по сути сводится всё к одному запросу на сами посты без join'ов.

    Минусы:
    Больше кода на обработку 3х запросов. Чуть более длительное выполнения скрипта, что, в принципе, не будет ощущаться пользователем, и вообще будет не справедливо, если первые 2 запроса кешировать.

    Но если стоит задача масштабироваться, то и такого подхода к делу недостаточно. Там уже надо будет скорее всего жертвовать лишним местом, чтобы сократить расходы на собирание размазанных данных по всем серверам баз, например, вести отдельную таблицу ленты новостей для каждого пользователя, которая будет агрегировать все необходимые айдишники.
    UPD: ...как и указал @jarvis
    Ответ написан
    4 комментария
  • Как реализовать ленту новостей для социальной сети?

    jarvis
    @jarvis
    Я делал через очередь сообщений, то есть сообщение человека или группы добавляется в ленты каждого его подписчика(многократно)

    Все пока одна таблица(пока одна, потом придется увеличить в процессе масштабирования) и такой запрос на получение ленты пользователя с user_id: select * from 'feeds_table' where user_id=id пользователя...., а сама таблица feeds содержит такие поля как user_id( пользователь, которому принадлежит лента, author_id - id автора(кто оставил запись, без разницы группа или пользователь), post (сама запись и вложения). Таким образом запись многократно дублируется, но зато позволяет быстро и в один простой запрос получать ленту.
    Ответ написан
    5 комментариев
  • Хочу такую же систему авторизации на сайте, как у VK.com (по телефону). Куда копать?

    krivochenko
    @krivochenko
    Программист Yii Framework
    Недавно наткнулся на mainsms.ru. Стоимость смс — 15 копеек (количество смс не влияет на стоимость). Есть API.
    Ответ написан
    1 комментарий