• Как сделать паузу в игре на языке javascript?

    Exploding
    @Exploding
    wtf?
    Чисто теоретически, если много чего предположить, то может так?
    $(document).on("keydown", function(e){
    	if(e.keyCode == 27) {
    		var gPause = myGame.currentStatus("isPaused");
    		var frozenData = {};
    		
    		if(!gPause){
    			myGame.gameCurrentProcessing.all("stop").currentStatus("paused", true);
    			frozenData = myGame.detach();
    		} else {
    			frozenData.appendTo(document.body);
    			myGame.gameCurrentProcessing.all("start").currentStatus("paused", false);
    		}		
    	}
    	
    });

    Предположительно объект myGame - является jq-плагином, а если нет - ничего страшного, одну правку и норм: "$(myGame).detach();"
    Названия методов, как в прочем и их существование - взяты с потолка, поэтому их замените своими.
    Хотя.... о чем я говорю...
    Ответ написан
    Комментировать
  • Как сделать простой php маршрутизатор (роутер)?

    devg
    @devg
    I am Yenior software developer
    Очень простой роутер, не без недостатков, но довольно быстрый и легко использовать, дописывать под себя.

    <?php
    /**
     * Простой роутер
     * @devg
     */
    final class RouterLite {
    
      public static $routes = array();
      private static $params = array();
      public static $requestedUrl = '';
    
      /**
       * Добавить маршрут
       */
      public static function addRoute($route, $destination=null) {
        if ($destination != null && !is_array($route)) {
          $route = array($route => $destination);
        }
        self::$routes = array_merge(self::$routes, $route);
      }
    
      /**
       * Разделить переданный URL на компоненты
       */
      public static function splitUrl($url) {
        return preg_split('/\//', $url, -1, PREG_SPLIT_NO_EMPTY);
      }
      
      /**
       * Текущий обработанный URL
       */    
      public static function getCurrentUrl() {
        return (self::$requestedUrl?:'/');
      }
    
      /**
       * Обработка переданного URL
       */
      public static function dispatch($requestedUrl = null) {
    
          // Если URL не передан, берем его из REQUEST_URI
          if ($requestedUrl === null) {
            $uri = reset(explode('?', $_SERVER["REQUEST_URI"]));
            $requestedUrl = urldecode(rtrim($uri, '/'));
          }
    
          self::$requestedUrl = $requestedUrl;
    
          // если URL и маршрут полностью совпадают
          if (isset(self::$routes[$requestedUrl])) {
            self::$params = self::splitUrl(self::$routes[$requestedUrl]);
            return self::executeAction();
          }
    
          foreach (self::$routes as $route => $uri) {
            // Заменяем wildcards на рег. выражения
            if (strpos($route, ':') !== false) {
              $route = str_replace(':any', '(.+)', str_replace(':num', '([0-9]+)', $route));
            }
    
            if (preg_match('#^'.$route.'$#', $requestedUrl)) {
              if (strpos($uri, '$') !== false && strpos($route, '(') !== false) {
                $uri = preg_replace('#^'.$route.'$#', $uri, $requestedUrl);
              }
              self::$params = self::splitUrl($uri);
                
              break; // URL обработан!
            }
          } 
          return self::executeAction();
      } 
    
     /**
       * Запуск соответствующего действия/экшена/метода контроллера
       */
      public static function executeAction() {
        $controller = isset(self::$params[0]) ? self::$params[0]: 'DefaultController';
        $action = isset(self::$params[1]) ? self::$params[1]: 'default_method';
        $params = array_slice(self::$params, 2);
    
        return call_user_func_array(array($controller, $action), $params);
      }
    
    }
    ?>


    Пример использования:
    <?php
    // маршруты (можно хранить в конфиге приложения)
    // можно использовать wildcards (подстановки):
    // :any - любое цифробуквенное сочетание
    // :num - только цифры
    // в результирующее выражение записываются как $1, $2 и т.д. по порядку
    
    $routes = array(
      // 'url' => 'контроллер/действие/параметр1/параметр2/параметр3'
      '/' => 'MainController/index', // главная страница
      '/contacts' => 'MainController/contacts', // страница контактов
      '/blog' => 'BlogController/index', // список постов блога
      '/blog/:num' => 'BlogController/viewPost/$1' // просмотр отдельного поста, например, /blog/123
      '/blog/:any/:num' => 'BlogController/$1/$2' // действия над постом, например, /blog/edit/123 или /blog/dеlete/123
      '/:any' => 'MainController/anyAction' // все остальные запросы обрабатываются здесь
    ));
    
    // добавляем все маршруты за раз
    RouterLite::addRoute($routes);
    
    // а можно добавлять по одному
    RouterLite::addRoute('/about', 'MainController/about');
    
    // непосредственно запуск обработки
    RouterLite::dispatch();
    ?>


    UPDATE (07.08.2017):
    Дальнейшее развитие данного роутера см. в проекте Litero (https://github.com/bit55/litero)
    Ответ написан
    1 комментарий
  • Есть ли какие либо права на ПО у заказчика?

    BBmike
    @BBmike
    Базис вопроса состоит в том, признают ли договор заключенным или нет.
    Если признают, то согласно 1296 ГК РФ "Исключительное право на программу для ЭВМ, базу данных или иное произведение, созданные по договору, предметом которого было создание такого произведения (по заказу), принадлежит заказчику, если договором между подрядчиком (исполнителем) и заказчиком не предусмотрено иное."
    Вот от этого и пляши. Остальным набежавшим советчикам рекомендую воздержаться о толкований ситуации так "как это понимают и чувствуют они".
    Ответ написан
  • Как скрыть :after у предыдущего элемента?

    Exploding
    @Exploding
    wtf?
    Не надо ничего скрывать, просто при :hover показывать его и готово!
    .class:after{
       display:none;
       ...
    }
    .class:hover:after{
       display:block;
       ...
    }
    Ответ написан
    Комментировать
  • Как создать библиотеку на go и использовать через php?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Можно собрать go код как расширение php
    https://github.com/kitech/php-go
    Ответ написан
    3 комментария
  • Как блокировать и разблокировать компьютер по расписанию?

    Kulver_stukas
    @Kulver_stukas
    5.jpg
    Ответ написан
    Комментировать
  • Как выбрать все классы?

    artur_kudaev
    @artur_kudaev
    Frontend Developer
    https://codepen.io/xxx44552/pen/XzjJRL

    Подробнее читай тут
    Ответ написан
    Комментировать
  • Переход с формы?

    @gents
    php.net/manual/ru/function.header.php
    <?php
    header("Location: http://www.example.com/"); /* Перенаправление браузера */
    
    /* Можно убедиться, что следующий за командой код не выполнится из-за
    перенаправления.*/
    exit;
    ?>
    Ответ написан
    Комментировать
  • Провайдер блокирует порты. Как обойти блокировку?

    saboteur_kiev
    @saboteur_kiev Куратор тега Сетевое администрирование
    software engineer
    Подучить терминологию, понять что такое nat, а потом уже думать блокировка это или се ля ви.
    Ответ написан
    3 комментария
  • Как применить функцию ко всем одинаковым id?

    @FinnishFox
    Front-end Developer
    id должен быть уникальным, несколько элементов не могут иметь одинаковый id.
    Ответ написан
    1 комментарий
  • Как оптимизировать сумму ряда?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Аналитически.
    59fe144ebe173368222815.gif
    Я нашёл этому поистине чудесное доказательство, но поле ввода слишком узко для него. (C) Ферма.
    Решение
    Рассмотрим дроби - слагаемые данной суммы. Очевидно, что знаменатели могут меняться от 2 до 2k.
    Попробуем определить, какие числители будут в дробях со знаменателем n. Для этого нам надо разложить n на пары x и y всеми возможными способами, учитывая ограничения 1 ≤ x ≤ k, 1 ≤ y ≤ k и взять допустимые значения x.
    Если 2 ≤ n ≤ k, то допустимыми значениями x будут 1 ... n-1. Для k+1 ≤ n ≤ 2k допустимыми значениями x будут n-k ... k. Таким образом, мы можем записать сумму числителей для каждого знаменателя:
    59fef5831ed62261528289.png
    Теперь, с учётом полученной системы запишем, как будет выглядеть полная сумма всех дробей:
    59fef5c331774953483286.png
    Заметим, что если в первой сумме начать суммирование не с 2, а с 1, то сумма не изменится, поскольку добавленное слагаемое равняется нулю. Во второй сумме перенесём k из пределов суммирования в слагаемое. Получим две суммы с одинаковыми пределами, а значит их можно объединить в одну:
    59fef699cef72869621752.png
    Ответ написан
    2 комментария
  • Высокоуровневый язык программирования?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Что это? Желание выпендриться? Или дислексия? Вы сами прочли википедию, но всё равно не поняли? Давайте попробуем от противного: высокоуровневые - это все, которые не низкоуровневые, а низкоуровневые - это "близкий к программированию непосредственно в машинных кодах"
    Ответ написан
    2 комментария
  • Высокоуровневый язык программирования?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Потому, что "высоко-/низко-уровневый" это просто условная и достаточно относительная классификация языков по одному конкретному качеству - по уровню абстракции, предоставляемой языком его пользователю. А когда всплывает слово "абстракция", обязательно нужно задуматься над тем, что от чего абстрагируется. В данном случае речь идет об абстрагировании конструкций языка от среды выполнения программы, написаной на этом языке. Например, во всех этих ЯВУ есть такие абстракци, как именованная переменная, тип данных, конструкции управления потоком выполнения или вызов функций системы/стандартных библиотек и т.д. Мы просто пишем int а = 3; или while(flag == true)..., а обо всем остальном заботится язык. Для сравнения, в ассемблере (низкий уровень) нам приходится иметь дело с конкретными регистрами, битами, адресами и jump-ами, и никакой среды, которая пришла бы нам на помощь, там тоже нет. В этом смысле уровень абстракции того же С намного выше.

    Классификация эта (как и любая другая) - условная, т.к. если по этому признаку сравнить, например, те же Яву или Шарп с теми же C++ или Паскаль, то можно бы было сказать, что уровень абстракции первых "несколько выше" - между программой на первых языках и "средой" есть еще промежуточный уровень (байткод/IL), а программы на вторых компилируются прямо в инструкции конкретного процессора. Только смысла в таком утверждении уже не так много, и для указания на эти качества языков проще и полезнее классифицировать их как "компилируемые в инструкции виртуальной машины" и "компилируемые в инстрикции процессора".

    И, наконец, сортировка массива - это уже совсем из другой оперы. К языку тут (если вообще!) относится только абстракция "массив". В большинстве языков есть такое понятие, как стандартная библиотека (JDK, stl, те же модули в пыхе и т.д.). Функции вроде сортировки массива, предоставляются не языком, а именно этой библиотекой (как правило, написанной на этом же языке и/или на более низкоуровневых). А, собственно, языком называется очень-очень маленький набор универсальных семантически однозначных конструкций, типа операторов сравнения, циклов или вызовов функций. Фактически, любой современный язык можно "выучить" за день... остаток жизни уйдет на то, чтоб научиться правильно пользоваться им и его библиотеками для написания нужных программ ))
    Ответ написан
    Комментировать
  • Какие книги почитать про архитектуру источников данных?

    @vanillathunder
    "Шаблоны архитектуры корпоративных приложений" Мартина Фаулера
    Ответ написан
    Комментировать
  • Как отсортировать один массив в зависимости от другого?

    DevMan
    @DevMan
    вы бы привели пример того, что должно получиться, ибо есть варианты.
    если ключи не важны, то просто $а1 = $2.
    если ключи надо сохранить, то https://ideone.com/Vh90X0
    Ответ написан
    Комментировать
  • Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Я расскажу Вам про личный опыт, без претензий на истину в последней инстанции...

    Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?
    Для человека который привык работать с реляционными БД, смириться с логикой и вообще с подобными БД - довольно сложно. Для тех, кто работает с реляционными БД профессионально - сделать это ещё сложнее...

    Если сравнивать с реляционными БД и с оглядкой на конкретно MySQL - монга идеально вписывается там, где структура данных заранее неизвестна. Тут я хотел привести пример, но не смог придумать ни одного дельного примера, после того как начал плотно работать с PostgreSQL... Давайте попробую из практики. Мы один раз применяли монгу в проекте где есть десятки и сотни тысяч товарных позиций и у каждой из них свой уникальный набор различных свойств. На основе уже имеющихся свойств, "соседних" товаров, контентщику предлагался наиболее вероятный набор параметров, которые нужно заполнить, но в любой момент он мог удалить или добавить любое поле и/или множество значений одного из них, например, "Цвет: черный, серый, фиолетовый". Всё это дело попадало под разные динамические фильтры и далее по цепочке... В то время, насколько я помню ещё не было поддержки JSONB-формата у PostgreSQL, по этому мы остановились на MongoDB. Ну и конечно же, желание "воткнуть ультра новую и модную БД в проект" сыграло свою роль...

    Что в монге определённо не нравится (и это не моя "идея", об этом пишут даже в учебниках под монге) - это тотальная денормализация данных. Которая в некоторых случаях может сыграть злую шутку. Например, все комментарии "поста" обычно хранятся прямо в самой сущности поста. Это очень удобно и довольно быстро работает, но... иногда это приводит к полному коллапсу. Особенно, когда у Вас перекрестная ссылочность.

    Безусловно, не редко можно встретить проекты в которых даже в реляционных БД не прописаны, например, внешние ключи и контроля целостности данных как такового нет, но обычно это происходит по следующим причинам:
    1. Очень низкая квалификация администратора БД проекта
    2. В попытке выжать из базы больше производительности, не найдя других методов оптимизации
    3. Данных настолько много, что БД/ключи - начинают "сыпаться", не редко это связано с п.1

    Так же, последние тесты показывают, что PostgreSQL почти не уступает MongoDB даже в её родной среде (на уровне данных в формате JSON). А в некоторых аспектах даже превосходит её... Подробности Вы можете увидеть на некоторых конференциях по Postgres (да, на конференциях по MongoDB, Вы вряд ли увидите, как кто-то будет рассказывать, что [их любимая] монга "хуже" некоторых других движков...). Кстати, поддержку формата JSON стандартизировали (наконец-то) на уровне SQL-стандарта (если я не ошибаюсь) и в самом ближайшем будущем, думаю стоит ожидать полноценную поддержку оного в SQL-базах, в т.ч. поддержку в бинарном виде с возможностью индексации данных (кстати, некоторые SQL-базы уже такое умеют).

    Моё понимание, ответа на вопрос, "когда действительно стоит использовать MogoDB?" звучит примерно так: Исключительно в тех случаях, когда Вы понимаете, что она станет действительно хорошим решением для поставленной задачи и сейчас и в будущем. В моей практике, таких проектов можно было бы насчитать ничтожно мало, а точнее около нуля, особенно с учётом развития некоторых современных SQL-БД и вообще направления "JSON в SQL" в целом. Но, безусловно такие проекты могут быть и есть (в данном случае, не у меня). Но, тут стоит обратить внимание на крайне важный факт - когда всплывает такой проект, что бы адекватно оценить наиболее оптимальную БД под него - нужно знать как минимум пару-тройку SQL-БД, со всеми их особенностями, достоинствами и недостатками... причем не просто "знать", а хорошо знать, "изнутри". А так же знать все характерные черты монги, а так же её особенности, достоинства и т.д. То есть, если Вы задаётесь вопросом, "а хорошо ли впишется монга в проект N?" и не можете найти на него однозначного ответа, вероятнее всего, что в долгосрочной перспективе, в "проект N" она впишется плохо.

    P.S. В заключение, хочу ещё раз напомнить, что "JSON в SQL" - активно развивается... Со всеми вытекающими.
    Ответ написан
    7 комментариев
  • Как создать сайт со страничкой расчета?

    @ElijahTr
    HTML + CSS + JS (+ Google)
    Изучить что я набросал в работающем варианте небольшого расчета в таблице + экспорте в xlsx: https://codepen.io/elijah_tr/pen/wPMKZE
    Сделать еще лучше и уже со своими данными и оформлением.

    P.S. Если не в курсе что такое codepen.io, то кратко: три окошка с кодом: html + css + js и результат внизу :)
    P.P.S. В данном случае (расчет на JS) все будет считаться на стороне клиента в браузере, если не нужно "светить" формулами расчета то придется на php или чем-то подобном на стороне сервера считать.
    Ответ написан
    3 комментария
  • Почему там NaN?

    y0u
    @y0u Куратор тега JavaScript
    dev
    1. Если аргумент в Math.min не может быть преобразован в число, результатом будет NaN.
    2. Что это вы хотите сделать после того как написали return min? Как это вы так на codewars попали, если делаете такие вещи?
    Ответ написан
    8 комментариев