Задать вопрос
  • Почему я не могу подключится к IRC серверу?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ответ написан
    Комментировать
  • Система контроля входящего трафика на Windows?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    но - как я узнаю эти IP, какие есть программы для мониторинга входящего трафика.
    вопрос был про поведенческий фильтр, однако никто этого не понял.
    Действительно, найти хороший и бесплатный поведенческий фильтр под винду - сейчас проблема.
    1. Однако, есть схема "зеркалирования" порта на выделенную машину-арбитр для оценки трафика и "отбивки" сигнала блокировки/разблокировки на iptables на серверную машину (установка правил соединений).
    Т.е. эта система будет выступать в роли "охранника" для Вашего сервера.
    2. Если речь идёт ТОЛЬКО о OpenServer-портах, то можно настроить ту же систему на самой windows, мониторя лог обращений к web-серверу, анализируя его и прописав определенные правила, открывать или закрывать доступы.
    3. Можно делать мониторинг на основе prepend_file=... через php.ini, чтобы наиболее удобно записывать все обращения и затем анализировать их.

    Самый простой триггер:
    1. IP не является из диапазона подсетей поисковых роботов (или одним из их IP)
    И
    2. IP не находится в Вашей стране
    И
    3. Запросы к первым 3-м разным страницам происходят с интервалом менее 3-х секунд =>можно сразу блокировать по выделенному диапазону сети провайдера перманентно (не забудьте про сервисы анализа web-страниц, которыми Вы возможно будете пользоваться - они должны быть в белом списке).
    Ответ написан
    Комментировать
  • Как сделать скриншот с помощью JavaScript?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    мне нужно заскриншотить img без изменения и выложить на этой же странице
    что мешает по событию onload взять копию объекта и отобразить в другом img на этой же странице?
    Ответ написан
    Комментировать
  • Как расшифровать файл javascript?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    /** @type {Array} */
    var _0x6e0a = ["random", "floor", "\n", "URL GOTO=http://ad-social.org/in/earn?soc=in&type=like", "SET !TIMEOUT_STEP 0", "TAG POS=1 TYPE=A ATTR=CLASS:openTask<SP>btn&&ONCLICK:openTask*;&&HREF:javascript:;", "WAIT SECONDS=5", 'SEARCH SOURCE=TXT:"404 Not Found"', "TAB CLOSE", 'SEARCH SOURCE=TXT:"\u0417\u0430\u043a\u0430\u0437 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d... \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043d \u0443\u0436\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d, \u043b\u0438\u0431\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0437-\u0437\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439, \u043b\u0438\u0431\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0412\u0430\u043c\u0438. "',
        "ONDIALOG POS=1 BUTTON=OK CONTENT=", "WAIT SECONDS=1", "TAG POS=1 TYPE=A ATTR=CLASS:skip-task-btn&&HREF:javascript:;", "WAIT SECONDS=2", "SET !TIMEOUT_STEP 15", 'SEARCH SOURCE=TXT:"\u00a9 2016 Instagram"', 'SEARCH SOURCE=TXT:"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0434\u0430\u043d\u043d\u0430\u044f \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430."', "TAG POS=1 TYPE=A ATTR=TXT:\u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f",
        "WAIT SECONDS=", "URL GOTO=http://ad-social.org/in/earn?soc=in&type=follower", "TAG POS=1 TYPE=BUTTON ATTR=TXT:\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f"
    ];
    /**
     * @param {number} opt_attributes
     * @param {number} expectedNumberOfNonCommentArgs
     * @return {?}
     */
    function getRandomInRange(opt_attributes, expectedNumberOfNonCommentArgs) {
        return Math[_0x6e0a[1]](Math[_0x6e0a[0]]() * (expectedNumberOfNonCommentArgs - opt_attributes + 1)) + opt_attributes;
    }
    var n = _0x6e0a[2];
    for (;;) {
        iimPlayCode(_0x6e0a[3]);
        /** @type {number} */
        i = 0;
        for (; i < 6; i++) {
            e = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[5]);
            if (e < 0) {
                iimPlayCode(_0x6e0a[6]);
                break;
            }
            z0 = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[7]);
            if (z0 > 0) {
                iimPlayCode(_0x6e0a[8]);
                iimPlayCode(_0x6e0a[3]);
            }
            z = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[9]);
            if (z > 0) {
                iimPlayCode(_0x6e0a[8]);
                iimPlayCode(_0x6e0a[10] + n + _0x6e0a[11] + n + _0x6e0a[12] + n + _0x6e0a[13]);
                iimPlayCode(_0x6e0a[3]);
            } else {
                iimPlayCode(_0x6e0a[14] + n + _0x6e0a[15]);
                z1 = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[16]);
                if (z1 > 0) {
                    iimPlayCode(_0x6e0a[8]);
                    iimPlayCode(_0x6e0a[10] + n + _0x6e0a[11] + n + _0x6e0a[12] + n + _0x6e0a[13]);
                    iimPlayCode(_0x6e0a[3]);
                }
                iimPlayCode(_0x6e0a[4] + n + _0x6e0a[17]);
                iimPlayCode(_0x6e0a[18] + getRandomInRange(3, 5));
                iimPlayCode(_0x6e0a[8]);
                iimPlayCode(_0x6e0a[18] + getRandomInRange(15, 20));
                iimPlayCode(_0x6e0a[3]);
            }
        }
        iimPlayCode(_0x6e0a[19]);
        /** @type {number} */
        i = 0;
        for (; i < 6; i++) {
            e = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[5]);
            if (e < 0) {
                iimPlayCode(_0x6e0a[13]);
                break;
            }
            z0 = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[7]);
            if (z0 > 0) {
                iimPlayCode(_0x6e0a[8]);
                iimPlayCode(_0x6e0a[19]);
            }
            z = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[9]);
            if (z > 0) {
                iimPlayCode(_0x6e0a[8]);
                iimPlayCode(_0x6e0a[10] + n + _0x6e0a[11] + n + _0x6e0a[12] + n + _0x6e0a[13]);
                iimPlayCode(_0x6e0a[19]);
            } else {
                iimPlayCode(_0x6e0a[14] + n + _0x6e0a[15]);
                z1 = iimPlayCode(_0x6e0a[4] + n + _0x6e0a[16]);
                if (z1 > 0) {
                    iimPlayCode(_0x6e0a[8]);
                    iimPlayCode(_0x6e0a[10] + n + _0x6e0a[11] + n + _0x6e0a[12] + n + _0x6e0a[13]);
                    iimPlayCode(_0x6e0a[19]);
                }
                iimPlayCode(_0x6e0a[4] + n + _0x6e0a[20]);
                iimPlayCode(_0x6e0a[18] + getRandomInRange(3, 5));
                iimPlayCode(_0x6e0a[8]);
                iimPlayCode(_0x6e0a[18] + getRandomInRange(15, 20));
                iimPlayCode(_0x6e0a[19]);
            }
        }
    };
    Ответ написан
  • Как сверстать нестандартные tab`ы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Сами вкладки сделать через широкие ("перекрывающиеся") изображения (возможно, с применением css clip-path; хотя, вроде можно и обойтись без этого) и использовать отрицательный z-index для всех неактивных вкладок с позиционированием ниже активной (по Y-оси, т.е. активную - "поднимаем" через JS).
    Ответ написан
    2 комментария
  • Как написать формулу для датчика псевдослучайных чисел, как это сделать?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Любое число проще сгенерировать так:
    1. Создаём строку целой части полного диапазона из массива цифр [0,1,2,3,4,5,6,7,8,9].
    2. Создаём строку дробной части [0,1,2,3,4,5,6,7,8,9].
    3. Конкатенируем через точку "." и преобразуем строку в число
    4. Сдвигаем: вычитаем из полученного половину диапазона (или же просто рандомим знак).
    Ответ написан
    Комментировать
  • Куки или сессию использовать в данном случае?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Хранить лучше в куках у пользователя даже не только "просмотры", но и "корзину" (только ID-товаров и их кол-во; расчет цены - ТОЛЬКО через серверную сессию).
    2. Если Вам информация нужна на сервере - записывайте её при запросе страницы и при добавлении товара в корзину на серверной стороне в сессию.
    Ответ написан
    Комментировать
  • Зачем тестировать код?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Здесь нужно тестировать два важных момента:
    1. Насколько корректно работает валидация данных в контроллере? (кода валидации здесь не преведено)
    2. Насколько стабильно отрабатывается непосредственно добавление материалов в БД при параллельных запросах, высокой нагрузке и одинаковых материалах? (проверка стабильности соединения с БД под нагрузкой и проверка отсутствия ложных срабатываний исключений, а при их наличии - корректная дальнейшая обработка)
    Ответ написан
    4 комментария
  • Как отследить изменение содержимого объекта подгружаемого с помощью ajax?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    А что мешает триггер повесить в complete ?
    или вызвать нужную функцию внутри секции complete?
    Ответ написан
    Комментировать
  • SEO принципы при создании сайта?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ответ прост: читайте требования ПС к сайтам и выполняйте их по-максимуму.

    Основные:
    1. Валидная разметка HTML4(5)
    2. Страницы без переадресаций (возврат контента с кодом 200 при запросе).
    3. META и обычные тэги: title, description, keywords, H1, H2, H3, p
    4. sitemap.xml + robots.txt
    5. Все визуальные элементы, ведущие на другую страницу, должны иметь линк href даже тогда, когда они обрабатываются через JS.

    Неосновные:
    1. Микроразметка (желательно сразу все 3 схемы, см. требования ПС)
    2. META-тэги соц.сетей, авторства, рейтинга материала и прочего.
    3. RSS/ATOM
    4. BackPing (оповещение ПС о новых материалах на сайте)
    5. Корректные настройки языка страниц и канонических урлов (при необходимости).
    Ответ написан
    4 комментария
  • Какова правильная логика обновления клиента игры?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Есть версия и есть хеш-сумма текущей версии всех данных приложения (файлы + БД).
    При запуске - проверяются оба значения.
    При несоответствии - выполняется операция синхронизации:
    1. Выявление различий
    2. Подготовка списка изменений относительно текущей версии у пользователя
    3. Резервирование текущей версии пользователя
    4. Загрузка всех необходимых файлов на устройство пользователя. (с возможностью докачки при разрыве соединения)
    5. Выполнение изменений.
    6. Проверка сделанных изменений (п.1)
    7. Удаление резервной копии (созданную в п.3)
    При прерывании любого из пунктов (сел аккумулятор у ПК или смартфона и прочее) - всегда должна быть возможность продолжить обновление с прерванного шага.
    Ответ написан
    Комментировать
  • Как подготовить чистый VDS к продакшену?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Есть какой то обучающий мануал, в котором коротко и доступно изложена настройка сервера с нуля?
    Нет.
    Т.к. конфигурация ОС и конфигурация модулей ОС и ПО - у всех уникальна.
    Поэтому, есть отдельные мануалы по настройке каждого компонента на сайтах их производителей: отдельно установка ОС, отдельно апач, отдельно nginx и т.д.
    Ответ написан
    4 комментария
  • Кто при создании логотипа должен покупать лицензию на используемый в нем шрифт, исполнитель или заказчик?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Заказчик.
    Т.к. это произведение стороннего разработчика используемое в рамках всего проекта - разработки логотипа.
    Простая аналогия - это как бы сторонний платный модуль к разрабатываемой системе.
    Заказчик может отказаться и тогда Вы, соответственно, должны:
    1. Или найти максимально похожий из свободно-распространяемых шрифтов на платный.
    2. Или предложить другой логотип с другим шрифтом
    3. Или отказаться от проекта.
    Ответ написан
    Комментировать
  • На каком движке лучше начинать гейм-дейв карьеру?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Про 2D: можно взять любую js-библиотеку и попробовать создать на ней.
    Предложу crafty.js, как наиболее простую для понимания взаимодействия объектов и обучения gamedev.
    Если что-то конкретное: то разрабатывайте сразу на том, на чём решили разрабатывать.
    Я бы выбрал Unity3D.
    Ответ написан
  • PhP вложенный массив каким способом передать параметр?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    вам нужно создать функцию/класс операций с древовидным ассоциативным массивом
    Ответ написан
    Комментировать
  • Ошибки в RSS как исправить?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    все теги без знаков вопроса
    Ответ написан
    Комментировать
  • Как публиковать блоговые приложения в google play?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    документ на право владения доменным именем нужно предоставить
    Ответ написан
    Комментировать
  • Как программировать "модульно" на PHP (паттерны программирвования)?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Все открытия окон - надо делать на клиенте - это экономит время реакции на событие.
    2. С сервера - "тянем" только динамические данные или результаты обработки для отображения и получаем их в виде JSON.
    3. Все статические - в шаблоне должны быть в виде JSON-массива.
    4. Вся HTML-разметка и шаблонизация - задаётся в клиентском коде.
    5. При необходимости доступа к БД, ajax.php сразу подключается к ней при первой же необходимости работы с данными в БД.
    6. Правильно запрограммировать: это "дерево" зависимостей источников AJAX-данных - многомерный массив.
    7. Про систему клиентского и серверного кэширования - не забудьте.
    Ответ написан
    2 комментария