• Как лучше организовать удаленный бэкап Linux сервера на удаленный FTP?

    @v_prom
    эм, а не проще кинуть скрипт, который будет делать бекап и переливать его на на нужный ftp? это быстрее и не нужно писать что-то на php каком-нибудь и веб-сервер поднимать не надо.
    Ответ написан
    4 комментария
  • Как организовать защиту от парсинга сайта?

    @starosta6123
    1. Сайт изначально предназначен для публикации, то есть он открыт.
    2. Если вы не хотите чтобы информация была открыта, не публикуйте.

    Из 1 пункта следует, что нет достаточных средств для защиты от парсеров.
    Вопрос только в том, на сколько вы готовы и можете усложнить жизнь для парсеров.
    А нужно ли это? Может вы - "неуловимый Джо"?
    Все что может прочитать и распознать человек (а ведь именно для людей и делается сайт?) может быть воспроизведено. В части, где парсинг может быть автоматизирован, он будет автоматизирован.
    Сейчас существуют мощные парсеры Яндекса и Гугла. Если они ваш сайт не смогут разобрать, то и в индексе его не будет, значит полезная информация не дойдет до конечного пользователя.
    А тот, кто захочет, ее скопирует, если информация очень нужна. Если даже вы представите в виде мозаики из картинок и кусков, даже если зашифруете, но информация на экране должна все равно быть читабельной, а значит простой принтскрин и распознавание в FineReader будет быстрее, чем вы напишите защиту от него...

    Бросьте это занятие!

    Не существует защиты созданной человеком, которую не возможно сломать, вопрос времени...
    Единственный путь, это шифрование с выдачей ключа клиенту. Но клиент - человек не надежен, и информация уплывет, вопрос цены!

    И еще раз бросьте это!

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

    Последний совет: бросьте это!

    Единственное что может вам помочь, это не раскрывать полностью всю информацию о предмете, или разделить на несколько частей, но при этом не должно быть неудобства для посетителя. К примеру, скройте "количество зубцов в шестеренке", любую ключевую информацию, без которой "самолет не взлетит".

    А если хотите поиграться, то пришла в голову идея: перемешивание по определенному алгоритму текста, который потом восстанавливается, применение стилей для скрытия "фальшивых" слов или фраз. Например, задать стиль, который скрывает каждое второе предложение или слово. Но к сожалению, это ломается на ура! Но доставит радости для взломщиков :-)

    Извините, за столь большой сумбур!

    1. Динамические запросы. Ну доставят какую-то головную боль для взломщика, но это не так сложно, как кажется.

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

    3. Блокировка по IP не прокатит, так как могут пострадать реальные люди, достаточно применять динамический IP.

    А вообще, если хотите спастись от простых парсеров, то комплекс мер может помочь. Так же могу натолкнуть на идею, того, что парсеры обычно очень активны, и по количеству запросов с одного IP, по USER_AGENT, и другим меткам, а так же по отсутствию javascript, по обработке тега <МЕТА> redirekt.info/article/redirekt-na-html-s-zaderzhko... (отложенный редирект) и другим признакам. Можно запихнуть скрытую картинку (style="display: none"), большинство парсеров ее могут дернуть (зависит от настроек).

    В общем, можно поставить задачу в другом ключе: "Расстановка ловушек для парсеров". То есть ловить на том, чего обычные люди и браузеры делать не будут. Например, заполнять "скрытое поле пароль". Удачные ловушки дадут вам возможность выявить подставных, но лучше делать несколько проверок, а то можно и реального пользователя забанить. А я бы не стал банить, а сливал бы немного или частично измененную инфу. Эта инфа может стать маркером для выявления того, кто действительно желает с вас "слить".

    Все, удачи!
    Ответ написан
    4 комментария
  • Как вы читаете Хабрахабр?

    webxaser
    @webxaser
    Лента -> Всё -> Новые
    Ответ написан
    Комментировать
  • Как назвать агентство - вебстудия, Digital, интерактивное?

    @ChemAli
    Нам бы ваши проблемы.
    Ответ написан
    Комментировать
  • C++ или Pascal для олимпиадника?

    @AlexP11223
    C++ потому что есть стандартная библиотека, STL и т.д. и не нужно изобретать велосипеды типа сортировки или хеш таблицы, что бывает сильно экономит время. Ну если правилами не ограничено.
    Ответ написан
    2 комментария
  • Как подделать адрес отправителя в UDP пакете?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    setLocalAddress можно установить только адреса, присутствующие на локальных интерфейсах. Произвольный адрес установить нельзя. Т.о. можно либо добавить нужный адрес локальному интерфейсу (например с помощью ifconfig add), либо открыть "сырой" сокет и формировать заголовки IP и UDP самостоятельно.
    Ответ написан
    Комментировать
  • Не могу найти синоним к слову логирование?

    GM2mars
    @GM2mars
    Стенографирование, событеписание, чтогдекогдазапоминание...
    Ответ написан
    1 комментарий
  • Специфика программирования в разработке игр

    njc
    @njc
    Разработчик Java
    Почитайте статьи на хабре с тэгом GameDevelopment и Unity3D. Разработка игр далеко не самая легкая сфера в IT, я бы даже сказал наоборот. Но, если это ваша детская мечта - дерзайте! Освойте для начала ЯП или платформу (Unity3D, UDK Engine).
    Возможно Вам поможет моя статья: С чего начать разработку игр?

    Кстати движков/платформ для создания игр сейчас уже действительно много. В статье многого нет, например CryEngine или фреймворков для разработки под мобильные платформы.
    Ответ написан
    1 комментарий
  • Вывод 3 чисел, которые в сумме дают число n

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не должны повторяться перестановки - значит для каждого множества слагаемых {a, b, c} можно найти множество {a', b', c'}, образованное перестановкой элементов исходного множества, такое, что a'<=b'<=c'. Значит каждый следующий вложенный цикл должен начинаться не с 1, а со значения итератора предыдущего цикла.
    ---
    Подумал ещё:
    При условии a<=b<=c, a+b+c=n значение a не может быть больше n/3, иначе b либо c будут б̶о̶л̶ь̶ш̶е меньше, чем a.
    Значение b не может быть больше, чем (n-a)/2, иначе c будет б̶о̶л̶ь̶ш̶е меньше b.
    Значение c будет равно (n-a-b).
    Итого, получаем
    int n = Integer.parseInt(reader.readLine());
    for (int i = 1; i <= n/3; i++) {
        for (int j = i; j <= (n-i)/2; j++) {
            System.out.println("Числа " + i + " + " + j + " + " + (n-i-j));
        }
    }
    Ответ написан
    2 комментария
  • Есть ли программа для ios для синхронизации списка?

    Sterhel
    @Sterhel
    А что мешает использовать расшаренную на всех табличку в GoogleDocs и редактировать ее?
    Ответ написан
    Комментировать
  • Разработка приложений Android (путеводитель по музею) - с чего начать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    WiFi-покрытие всей площади (без выхода в интернет), на табличках рядом с экспонатами QR-коды с адресами страниц на локальном сервере. Работать будет и под Android, и под iOS и под WinPhone.
    Ответ написан
    1 комментарий
  • Как найти сумму углов n-многоугольника?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы выбрали неудачный метод проверки на выпуклость. Из-за погрешности при расчётах углов велики шансы получить неточное значение, причём погрешность при суммировании будет накапливаться.
    Правильный метод - проверка знаков векторных произведений соседних отрезков. Для выпуклого многоугольника все произведения будут иметь один и тот же знак, зависящий от направления обхода.
    #define sign(x) ((x) == 0 ? 0 : ((x) > 0 ? 1 : -1))
    #define vmul(i,j,k) = ((x[(j)]-x[(i)])*(y[(k)]-y[(j)])-(x[(k)]-x[(j)])*(y[(j)]-y[(i)]))
    bool function isConvex(double *x, double *y, int n) {
        S = sign(vmul(n-2, n-1, 0));
        if ((S1 = vmul(n-1, 0, 1)) != 0 && sign(S1) != S)
            return false;
        for (int i = 0; i < n-2; i++)
            if ((S1 = vmul(i, i+1, i+2)) != 0 && sign(S1) != S )
                return false;
        return true;
    }

    Контроль на совпадение точек (Pi = Pi+1) или (Pi = Pi+2) добавьте сами.
    Ответ написан
    Комментировать
  • Каким сервисом воспользоваться для кодировки php-кода?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вы хотите фришным обфускатором получить что-то худо бедно сложное в плане деобфускации? Смешно. Да и вообще это все пережитки былых времен. Либо вашей штуковиной никто пользоваться не будет, либо будет проще реализовать самому.
    Ответ написан
    1 комментарий
  • Каким сервисом воспользоваться для кодировки php-кода?

    mlnkv
    @mlnkv
    JavaScript Developer
    Зачем вам кодировать код? Странная закономерность, все забугорные девелоперы стремятся поделиться своими наработками, почти все опен сорс, у нас же все пытаются спрятать свой код и никому не показывать)))
    Даю 99% что этот код ты сам у кого-то стянул)
    Ответ написан
    1 комментарий
  • Почему Python в разы проигрывает Perl по скорости и расходу памяти при парсинге логов?

    @Vaal
    со списком можно попробовать так
    from collections import defaultdict
    host = defaultdict(list)
    for line in open('1.24gb.log'):
        ip, d = line.split(' ', 1)
        host[ip].append(d)

    лог на 1.24гб
    на Python 2.7.6 - 6.7 сек
    на Python 3.4.0 - 9.7 сек
    Ответ написан
    Комментировать
  • В какой программе рисуют подобные схемы?

    Zoxon
    @Zoxon
    Веб-разработчик
    Очень похоже на иллюстратор, либо другой векторный редактор
    Ответ написан
    3 комментария
  • Можно ли как-то поучаствовать в разработке известных сайтов?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Стоит и обратный вопрос: хочется ли им поработать с Вами?
    Ответ написан
    Комментировать
  • Ускорители PHP. Какой выбрать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Зависит от версии php
    Если у вас используется PHP версии меньше 5,5 то APC. Это лучший опкэшер для PHP.
    в PHP 5.5 по дефолту идет свой кэшер опкодов, который по показателям обходит APC, нужно просто включить его в php.ini.

    Если вам нужно совсем уж быстро, то HHVM - альтернативная реализация php от фэйсбука, там JIT компиляция, море оптимизаций... И в отличии от приведенного @samoilenkoevgeniy KPHP, уже немало библиотек и фреймворков имеют в той или иной степени поддержку этого рантайма. Люди проводившие бенчмарки говорили о ускорении порядка 2-3 раз по сравнению с обычным PHP (хотя все зависит от конкретной задачи) и уменьшением потребления памяти в 10-15 раз.

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

    p.s. Apache уже можно смело исключить из стэка и заменить его на php-fpm. Для статики у вас всеравно остается nginx, а для php он будет просто проксировать все на php-fpm.
    Ответ написан
    1 комментарий
  • Как лучше выкатывать обновления для php+mysql сайта?

    @portfelio
    1) Заводите локальный и удаленный репозитории
    2) Делаете локальные изменения в коде + в отдельный файл(ы) скидываете миграции для БД
    3) Заливаете произведенные изменения на удаленный сервер
    4) Любой утилитой для деплоя или самописным велосипедом разворачиваете новую версию кода и производите миграции
    5) Этими же утилитой/велосипедом переключаете проект с предыдущей версии на актуальную
    Ответ написан
    5 комментариев