• Авторизация, подобно Clash of Clans? Как она работает?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вижу 2 возможных варианта:
    1. Отправляется подписанный приложением запрос на регистрацию на основе уникального идентификатора устройства (Telephony.DeviceID / ANDROID_ID / Mac Adress и возможно ещё каких-то данных) с шифрованием по открытому ключу приложения (ключ "вшит" внутри приложения): формула формирования - также, внутри приложения, запрос перед передачей - шифруется ключом.
    Т.е. отправляются подписанные данные самим приложением, которые Вы не сможете подделать БЕЗ установленного приложения, что не даст понаделать тучу аккаунтов.
    2. Возможно, что через ID пользователя гугл (используя API).
    Ответ написан
    7 комментариев
  • Как закрыть вкладку браузера с помощью JS?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Как время выйдет: закройте сессию через AJAX и просто заредиректите на форму "время вышло. Войдите снова" и кнопка "Вход".

    Вы не сможете закрыть окно через JS, которое было открыто пользователем!
    Закрыть можно только окна, созданные через JS через window.open
    stackoverflow.com/questions/14373625/close-current-tab
    Ответ написан
    Комментировать
  • Что быстрее: инлайновые подключения css или тег link?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Идеально: один CSS и один JS, всё минимизировано и находится в тэгах <style> и <script> соответственно, в теле самой страницы.
    Внешние надо полностью превращать в локальные (скачивать целиком со всеми зависимостями с удалённого сервера) или использовать @import внутри единого CSS-файла (или тэга <style>).
    Ответ написан
    Комментировать
  • Алгоритм поиска последовательности выпадения числа. Возможно ли такое реализовать?

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

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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Надо получить номер недели с помощью функций PHP и далее, вставить отображение нужного текста по условию остатка от деления x%2===0 - чётная, иначе - нечётная.
    Ответ написан
    Комментировать
  • Как реализовать нумерацию?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    <?php
    function threeButtons() {
      $b='';
      for ($i=1;$i<=3;$i++) {
        $b.='<input type="hidden" id="id_'.$i.'" value="1">'.PHP_EOL;
      }
      return $b;
    }
    ?>
    <div>
      <?=threeButtons()?><br/>
      <?=threeButtons()?><br/>
      <?=threeButtons()?><br/>
    </div>
    Ответ написан
  • Где найти плагин галереи изображений для Joomla?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вот такой скрипт я делал (инфа об изображениях меняется на галлерее + вне её), но не оформлял именно в плагин:
    gallery.jpg
    Типа того нужно или что-то иное?
    Ответ написан
  • Как составить алгоритм выбора наиболее эффективной команды героев?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Выбор, чтобы понять: "сможет ли выбранный герой кого-то победить?" можно определить так: суммарная эффективность (сумма разниц показателей урона выбранного героя с героями противника) выбранных героев должна быть больше нуля.

    S=(A1-B1)+(A1-B2)+(A1-B3) > 0 => ∞

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

    Я бы еще добавил такие параметры (коэффициенты, которые ещё нужно более детально прорабатывать), как:
    1. урон атаки каждым из возможных способов атаки (АТАКА)
    2. время перезарядки каждого из возможных способов
    3. возможность атаки каждого типа цели
    4. дальность атаки до каждого типа цели
    5. защита каждым из возможных способов (ЗАЩИТА)
    6. время восстановления защиты каждого из возможных способов защиты
    7. возможность защиты от каждого типа атаки
    8. скорость передвижения каждым из возможных способов (ПЕРЕДВИЖЕНИЕ)
    9. свобода передвижения (полная - когда летает, частичная - зависит от ландшафта, стационарная - например, защитная турель или бункер)

    При пошаговой игре: время перезарядки может быть рассчитано, как количество атак за ход.
    Большая разница тут: ПОШАГОВЫЙ или REAL-TIME бой.
    Я тут вспомню про старик (StarCraft - RTS от Blizzard):
    1. Когда загораживают выход двумя MCV (рабы) которые умеют друг друга чинить, а за ними ставят пару маринов, которые отбивают полчища, пока те атакуют рабов. Вроде бы, при любом расчёте: убить 2-х маринов и 2-х рабов - не проблема, если у тебя 6 маринов и при любом просчёте - это будет явно видно!
    Однако, как показывает реальность: всё зависит от конкретного ландшафта/местности и умения стратегически мыслить.
    2. Маринов ставят за здания полукругом с равным удалением для одновременной атаки перед входом, если атакуют войска ближнего боя (например, зерлинги): сделано, чтобы те, кто вбегает : оказывается сразу под огнём всех маринов и, чтобы убить всех этих маринов, нужно атаковать одновременно каждого с небольшим превосходством, что сделать мышью - практически нереально.
    3. Банальный лабиринт: когда есть узкий проход и в ближнем бое может участвовать лишь несколько единиц, остальные стоят и ждут (или умирают под обстрелом).
    Варианты создания лабиринта: узкие проходы на местности, специфичная застройка, специфичная организация войсковых единиц (юнитов) или любые сочетания всего перечисленного.

    Многое зависит от доп.данных и по этой таблице - не возможно ответить на Ваш вопрос. Нужны ещё данные.
    Ответ написан
  • Будет ли лучше делать статьи под один ключ?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Я бы поступил так:
    Все вопросы - нужно рассортировать в группы по ключам и их синонимам.
    На каждую группу: 5-6 топ-синонимов ключа в тексте в одну статью.
    Ответ написан
    1 комментарий
  • Где найти источники для самостоятельного изучения с целью создания интернет-магазина?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    у меня есть опыт в созданий сайтов на собственном движке
    Покажите Ваш код движка (ссылку на github и т.д.) или сайт, работающий на нём.

    UPD: начните с платёжных систем и SSL-сертификатов, затем - плавно переходите к организации корзины, а после - к витрине.
    Ответ написан
  • Какой максимально эффективный способ защиты от скачивания изображений с сайта вы знаете?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Самое простое - Watermark.
    2. Сложнее - частичная доставка с сервера выбранной области изображения с шифрованием и расшифровкой на клиенте, и никогда не отображать изображение целиком. (т.е. типа контейнера со скроллом внутри канваса по аналогии с гугл-мапс).
    3. Хардкорный стиль - Adobe Flash Application!
    4. "Puzzle" - "хаотичная" (только с виду!) динамическая нарезка в режиме спрайт-карты и сборка через js. Формула - тоже разная каждый раз.
    5. "Калька" - многослойное изображение из нескольких с альфа-каналом (с прозрачностью)
    6. Класть изображение в JS-контейнер на серверной стороне, помещая в него метод отображения с привязкой к IP и браузеру клиента, и ровно на 15 секунд (чтобы загрузил и всё) и бинарные шифрованные данные, после загрузки скрипта у клиента - запрашивать токен с сервера на расшифровку данных.
    (методы можно комбинировать)
    Ответ написан
    4 комментария
  • Где посмотреть список сайтов, сделанных на Joomla?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Жумла 3.6.2: dbc.su
    Установленный бесплатный шаблон: Purity III
    Делал я, отвечу на все вопросы.
    Ответ написан
  • Как подписывать разработанные сайты?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Договориться без бумажного договора - просто:
    Формат прост: соблюдай условия и получай привилегии.

    Если ссылка будет установлена (и в течение всего срока будет находиться на сайте в оговоренном месте и в оговоренном виде), то Вы предоставляете бесплатную ТП по исправлению багов на срок от года и даёте процентную скидку на доработки.

    Тогда смысла убирать ссылку у Клиента не будет, т.к. она ему даст привилегии и бонусы.
    А Вы - в любой момент можете мониторить её наличие и, если её уберут сразу, а потом, перед обращением, вернут и сразу же обратятся к Вам - сообщить о несоблюдении условий и отказать в бесплатной ТП (+ аннулировать скидку на доработки).
    Ответ написан
    9 комментариев
  • Как продвинуть в сеть нечто новое для рунета?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Оригинал здесь
    1. Должны узнать о существовании: группы в соц. сетях, картинки в Instagram, ролики на youtube, PR на форумах, Success story в блогах, рассылка почты блоггерам данной тематики с просьбой размещения ссылки на Ваш ресурс (разумеется, платно).
    2. Должны понять за 1-2 секунды просмотра сайта: "Сайт современный и красивый"
    3. Должны понять за 5 секунд просмотра сайта: "О чём сайт?"
    4. Должны понять за 15 секунд просмотра сайта: "Какая польза от него для посетителя" и главное: "Отличия от других", "Фишка", "Изюминка", "Ноу-хау" и т.д.
    5. Должны понять за 25-30 секунд просмотра сайта: "Как работает и что необходимо, чтобы пользоваться?"
    6. Не уложились в 30-и секундную презентацию или не выдержали любой из критериев (или необходимых минимальных требований) для поддержания интереса посетителя - ПОТЕРЯЛИ ПОСЕТИТЕЛЯ НАВСЕГДА!
    7. Если посетитель задержался более, чем на минуту и, в этот момент, он двигал "мышкой" (или скролил страницу) - это явно говорит о его заинтересованности: как только он уведёт мышь со страницы (для закрытия вкладки) сразу выведите DIV-модалку (слой, а не окно!) с крупным текстом, чтобы он добавил Ваш сайт в избранное: "Понравилось у нас? Жми Ctrl+D и возвращайся!" (или подобное) и кнопку: "Задать вопрос", ведущую на форму с 4-мя элементами (ввод "E-mail" - скройте): основное поле ввода текста сообщения, чекбокс: "Прошу ответить мне" (если отмечен, то поле "E-mail" видно под ним), скрытое поле "E-Mail" и кнопка "Отправить".
    8. Лишнее - не надо спрашивать насильно (это очень сильно отпугивает): ФИО, Телефон, почту и т.д.

    (кто дополнит - Welcome! и заранее, Спасибо!)
    Ответ написан
  • Сайт стал тормозить после подключения HTTPS?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Скорее всего у вас сменился Cipher для SSH на MySQL после того, как Вы что-то поставили для HTTPS.
    Кстати, зачем Вы MySQL через SSH-то гоните?
    Ответ написан
    Комментировать
  • Можно ли занижать рейтинг ссылке в поисковиках спамом реферов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    думаю, что вы просто временно "потопили" при ротации одинаковых запросов.

    Чтобы было понятно:
    Есть 3 сайта: ваш.com, другой1.com, другой2.com
    1. Вы решили спамить одинаковый запрос, который у всех сайтов и получили переходы на стороне ранжирования в поисковой системе:
    ваш.com - 4
    другой1.com - 5
    другой2.com -6
    2. .....спамим дальше и теперь ротация его "топит":
    ваш.com-5 другой1.com-5 другой2.com-6
    другой1.com-5 ваш.com-6 другой2.com-6
    другой1.com-5 другой2.com-6 ваш.com-7
    другой1.com-5 другой2.com-6 ваш.com-8
    другой1.com-5 другой2.com-6 ваш.com-9
    другой1.com-5 другой2.com-6 ваш.com-10
    3. как только запросы сравняются и станут выше, чем у вашего сайта - он снова окажется выше.
    и так - будет постоянно.

    Т.е. эффект - кратковременный и смысла этим заниматься нет!
    Ответ написан
    23 комментария
  • Медленный ли Symfony?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Еще, как подтверждение к ответу 27cm :
    https://sitecoder.blogspot.ru/2015/07/high-perform...
    High%2Bperformance%2BPHP%2BFramework%2B2
    Ответ написан
    Комментировать
  • Как сделать сайт на нескольких языках?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Не используем хранение установок (язык, город, настройки шаблона и т.д.) в браузере клиента, если это явно не нужно.
    2. Прописываем в конфиге:
    //////////Languages settings///////////
    define ('HOMELANG','ru');
    define ('AVAILABLE_LANGS','ru|en');
    define ('DEFAULTLANG','ru'); //if no autodetect
    define ('DB_HOMELANG_AUTOSWITCH',true);

    3. Определяем:
    /*
    domain.com/ru/....
    domain.com/en/...
    берём "ru", "en" и т.д.
    */
    $lng=explode(WWWROOTNOLANG,URI_LEFT);
    $lng=explode('/',$lng[1],2);
    $lng=$lng[0];
    
    /*Проверяем: Есть ли у нас перевод для запрошенного языка?*/
    if ($_SESSION['lang']!=$lng && $lng!='' && (strpos(AVAILABLE_LANGS,$lng)!==false)) {
           $_SESSION['lang']=$lng;
    } else $lng=HOMELANG;
    
    /*
    ...здесь обработчик GET, для линков переключения языка..
    */
    
    /*
    Задан ли язык в сессии? Если нет - берём предпочтения из браузера клиента.
    */
    if (!isset($_SESSION['lang']) || $_SESSION['lang']=='') {
         $lng=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
    
         $lng=explode(':',$lng);
         $lng=explode(',',$lng[0]);
    
         $lng=explode('-',$lng[0]);
         $lng=mb_strtolower($lng[0]);
    
         if ($lng=='' || $lng!='' && strpos(AVAILABLE_LANGS,$lng)===false) {
              if (@strpos(AVAILABLE_LANGS,DEFAULTLANG)!==false) $lng=DEFAULTLANG;
              else $lng=HOMELANG;
         }
    
         $_SESSION['lang']=$lng;
    } 
    
    define('LANG',$_SESSION['lang']);


    4. Создаём функцию, чтобы выводить строки:
    function lang($s){
     global $lang;
     if (isset($lang[$s])) return $lang[$s];
     else return $s;
    }


    5. Вызов в коде: echo lang('hello'); или в шаблоне: <?=lang('hello')?>
    Ответ написан