• Как лучше сделать закрытое REST API?

    al_gon
    @al_gon
    Ответ написан
    Комментировать
  • Возможно ли решить данную задачу?

    @Mercury13
    Программист на «си с крестами» и не только
    1018 — это обычное 64-битное целое. long long в Си, long в Java, int64 в Delphi.

    Очевидно, задача переводная, спичка не только match (это слово у них очень многозначное), но и matchstick. Причём переводил то ли автомат, то ли редкий надмозг, пример неговорящий, и откровенно непонятно: то ли где находится число 11, то ли что на 11-й позиции. Будем решать 2-ю задачу: что на 11-й позиции.

    1. Определить количество разрядов (для этого хватает несложного цикла) и какой номер у данного числа среди N-значных чисел.
    2. А теперь находим, сколько есть N-значных чисел из M спичек. Рекуррентное соотношение:

    Q[N, M] = sum{k = 1..9} (Q[N−1, M−q(k)]), если N — найденная нами значность, но не 1-ца,
    Для остальных N формула та же, но суммирование 0…9.
    q(0) = 6, q(1) = 2, q(2) = 5, и т.д. — кол-во спичек в цифре.
    Граничное условие: Q[0, 0] = 1, Q[0, M] = 0 для остальных M.
    «Методом выкручивания рук» также примем, что для отрицательных M все Q равняются 0.

    Решаем рекуррентное соотношение динамическим программированием.
    3. А теперь самое интересное: воспользовавшись таблицей динамического программирования, находить цифру за цифрой, начиная со старшей.

    Например, у нас 15-е число. Первый шаг опустим, поверьте мне: это 4-е двузначное, начиная с нуля.
    2-й шаг.
    Q[1,2] = 1
    Q[1,3] = 1
    Q[1,4] = 1
    Q[1,5] = 3
    Q[1,6] = 3
    Q[1,7] = 1
    Q[2,4] = 1
    Q[2,5] = 2
    Q[2,6] не вычислял, главное — запредельно большое.

    Q[2,0]…Q[2,3] равняются нулю.
    Вычитаем Q[2,4] — получается 3.
    Вычитаем Q[2,5] — получается 1.
    Вычитаем Q[2,6] — не получается. Итого у нас шесть спичек, остаётся 1.

    3-й шаг, работаем по цифре.
    Ноль, Q[1, 6−6] = 0. Остаётся 1.
    Единица, Q[1, 6−2] = 1. Остаётся 0.
    Двойка, Q[1, 6−5] = 0. Остаётся 0.
    Тройка, Q[1, 6−5] = 0. Остаётся 0.
    Четвёрка, Q[1, 6−4] = 1. Не вычитается, остаётся 2 спички, 1 знак и номер 0. Записываем цифру 4.
    Ноль, Q[0, 2−5] = 0. Остаётся 0.
    Единица, Q[0, 2−2] = 1. Не вычитается, остаётся 0 спичек, 0 знаков и номер 0. Записываем цифру 1.

    Итого получили 41.
    Ответ написан
    3 комментария
  • Возможно ли решить данную задачу?

    @BorisKorobkov
    Web developer
    Ну наконец-то хоть одна нормальная задачка, а то все какой-то бред от нубов, не умеющих отличить переменную от функции.

    Вот мое решение нахождение ИНДЕКСА по ЧИСЛУ
    Перебор в лоб: sandbox.onlinephpfunctions.com/code/564a9c5441c3f3...
    Оптимизированный вариант: sandbox.onlinephpfunctions.com/code/5d1986edffd300...
    Там же можно его позапускать прямо из браузера (надо выбрать PHP 7).
    Результат запуска
    Число 0, его порядковый номер 7
    Число 1, его порядковый номер 1
    Число 2, его порядковый номер 4
    Число 3, его порядковый номер 5
    Число 4, его порядковый номер 3
    Число 5, его порядковый номер 6
    Число 6, его порядковый номер 8
    Число 7, его порядковый номер 2
    Число 8, его порядковый номер 10
    Число 9, его порядковый номер 9
    Число 10, его порядковый номер 25
    Число 11, его порядковый номер 11
    Число 12, его порядковый номер 17
    Число 13, его порядковый номер 18
    Число 14, его порядковый номер 14
    Число 15, его порядковый номер 19
    Число 16, его порядковый номер 26
    Число 17, его порядковый номер 12
    Число 18, его порядковый номер 37
    Число 19, его порядковый номер 27
    Число 20, его порядковый номер 66


    А это, наоборот, нахождение ЧИСЛА по ИНДЕКСУ
    Перебор в лоб: sandbox.onlinephpfunctions.com/code/3ffc2cc919fb4d...
    Выводит:
    Результат запуска
    Порядковый номер 1, число 1
    Порядковый номер 2, число 7
    Порядковый номер 3, число 4
    Порядковый номер 4, число 2
    Порядковый номер 5, число 3
    Порядковый номер 6, число 5
    Порядковый номер 7, число 0
    Порядковый номер 8, число 6
    Порядковый номер 9, число 9
    Порядковый номер 10, число 8
    Порядковый номер 11, число 11
    Порядковый номер 12, число 17
    Порядковый номер 13, число 71
    Порядковый номер 14, число 14
    Порядковый номер 15, число 41
    Порядковый номер 16, число 77
    Порядковый номер 17, число 12
    Порядковый номер 18, число 13
    Порядковый номер 19, число 15
    Порядковый номер 20, число 21
    Ответ написан
    5 комментариев
  • Стоит ли регистрировать домен название которого совпадает с названием фильма?

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

    Например:
    Красавица и чудовище - заимствованное (название старой сказки).
    Русалочка - заимствованное (название старой сказки).
    Терминатор - заимствованное (в английском языке имя нарицательное).
    Трансформеры - заимствованное (в английском языке имя нарицательное).

    Зверополис - авторское (слово ранее не встречалось).
    Игра престолов - авторское (словосочетание, ранее нераспространенное).

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ответ написан
    Комментировать
  • Dendy Games где можно играть?

    delphinpro
    @delphinpro
    frontend developer
    https://yadi.sk/d/Aq03khDR3J9PGP
    здесь у меня есть все игры из детства =)
    Ответ написан
    Комментировать
  • Как можно оптимизировать запрос?

    Rastishka
    @Rastishka
    Привести телефоны к единой форме записи (убрать скобочки, тире, сделать чтобы всегда начинался с +7###)
    Выкинуть РЕГЕКСПЫ, потому что с ними фуллскан и без использования индекса
    Добавить индексы на поля town, age, phone1, phone2

    Сделать запрос:
    ***
    WHERE `town` BETWEEN 4 AND 14
    AND `age` BETWEEN 64 AND 99
    AND (phone1 LIKE '+7495%' OR phone1 LIKE '+7499%' OR phone1 LIKE '+7812%')
    AND (phone2 LIKE '+7495%' OR phone2 LIKE '+7499%' OR phone2 LIKE '+7812%');

    Для хайлоада не покатит конечно, но минимальными силами ускоришь запрос раз в 100-1000. =)
    Ответ написан
    2 комментария
  • Как постичь дзен веб-дизайна?

    AlexNineteen
    @AlexNineteen
    Привет.
    Google -> Данил Фимушкин
    Ответ написан
    Комментировать
  • Написание типового новостного сайта на Java?

    Vope
    @Vope
    Java Software Engineer
    Наилучший вариант это Spring + Hibernate + JSP, стандартный стек любого Java дева.
    Есть книга "Spring in action"(Spring в действии), если не ошибаюсь, она есть и на русском, но я бы посоветовал начать со Spring Boot, он гораздо проще для старта.
    Есть хороший ресурс - "Spring по-русски!"(spring-projects.ru/), просто пройдя пару уроков можно будет уже делать что-то стоящее.
    Ответ написан
    4 комментария
  • В чём отличия между доступом к символу строки через квадратные/фигурные скобки в php?

    anton_lazarev
    @anton_lazarev
    Читаем документацию:
    И квадратные и фигурные скобки можно взаимозаменяемо использовать для доступа к элементам массива (т.е. и $array[42] и $array{42} равнозначны).


    Про строку аналогично:
    Символы в строках можно использовать и модифицировать, определив их смещение относительно начала строки, начиная с нуля, в квадратных скобках после строки, например, $str[42]. Думайте о строке для этой цели, как о массиве символов.

    Замечание: К символу в строке также можно обращаться с помощью фигурных скобок, например, $str{42}.
    Ответ написан
    Комментировать
  • Как восстановить папку .git?

    git init
    git remote add origin <url вашего репозитория>
    git fetch


    Веток локальных может и не будет, но ветки origin/* будут на месте, git checkout <имя ветки>
    Ответ написан
    Комментировать
  • За сколько реально освоить Yii?

    copist
    @copist
    Empower people to give
    Я изучал около 3х месяцев до трудоустройства и год после :) Никто за тебя оценку по времени не сделает.

    ... дали тестовое задание по Yii


    Сделай задание правильно (как требуется по заданию), потом получи оценку, потребуй сделать review. Переделай, если что-то им не понравилось. В следующий раз то же самое будешь делать быстрее. А тонкости фреймворка изучишь по мере работы.
    Ответ написан
    Комментировать
  • Есть ли плагин для WordPress для вставки иконок на страницах?

    copist
    @copist
    Empower people to give
    По удобству выделяется Icons Enricher

    * Всё бесплатно
    * Много иконок
    * Удобная система семантического поиска с приятным пользовательским интерфейсом - иконку можно найти, даже если вообще не знаешь её название, по синонимам или ассоциациям.
    screenshot-4.gif?rev=1654780

    Он намного удобнее, чем плагины, где иконки нужно выбирать из бесконечных селект-боксов, искать глазами в огромных таблицах или составлять теги иконок вручную через shortcode.
    Ответ написан
    Комментировать
  • Как контролировать качество PHP кода?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вам обязательно нужно познакомиться со стандартами PHP-FIG.
    А потом идти сюда.

    Как минимум вам нужны 2 вещи: MessDetector и CodeSniffer.

    Дам вам совет. Не читайте бумажные книги. У них цикл релизов занимает год. Поскольку на написание хорошей книги тоже нужно примерно год времени, значит книга в момент своего выхода уже на 2 года устарела.
    Хотите быть в тренде новостей? Читайте комментарии к коммитам и релиз-ноутсы.
    Ответ написан
    Комментировать
  • Как сделать «фоновый» парсинг?

    alekciy
    @alekciy
    Вёбных дел мастер
    Что бы парсер сам запускался подходит cron. Но как я понимаю суть вопроса в другом: "как быстро парсить ХХ сайтов". Мультипоточно. mCurl в помощь.

    Для ориентирования по скорости приведу используемую мной схему. У меня почти 42 000 URL на проверке. Перед началом работ они складываются в Redis в виде стека (что бы потом параллельные потоки не скачали одну и туже страницу несколько раз). После чего по cron через bash запускается 10 php скриптов, каждый за раз качает 100 адресов, парсит данные со страницы через DOM, полученные данные пишет в базу. Т.е. кроме скачки страниц тут еще и медленные операции как то построение DOM и запись в РСУБД. На все уходит менее 20 минут, т.е. минимальная скорость около 30 страниц/сек.
    Ответ написан
    3 комментария
  • Как в VUE JS сделать так чтоб при входе на сайт отображался только preloader пока все процессы не завершились?

    @ber_enot
    Веб-разработчик, Vue.js / Node.js
    В событие компонента mounted()
    добавить показ прелоадера, запустить методы загрузки данных
    убрать прелоадер, когда они завершатся (с помощью Promise.all)
    Читать про промисы тут - https://learn.javascript.ru/promise

    Примеры:
    один запрос:
    mounted() {
    	this.showPreloader = true
    	this.$http.get('/someUrl').then(response => {
    		// данные загружены, убираем прелоадер
    		this.showPreloader = false
    		// записываем полученные данные куда-либо
    		this.someData = response.body
    	}, response => {
    		// запрос завершился ошибкой
    		// показываем сообщение об ошибке
    		this.showPreloader = false
    		this.showError = true
    	});
    },

    Несколько запросов:
    mounted() {
    	this.showPreloader = true
    	Promise.all([
    		this.$http.get('/someUrl'),
    		this.$http.get('/someUrl2')
    	]).then(results => {
    		// данные загружены, убираем прелоадер
    		this.showPreloader = false
    	}, response => {
    		// один или несколько запросов завершились с ошибкой
    		// показываем сообщение об ошибке
    		this.showPreloader = false
    		this.showError = true
    	});
    },


    PS. Код справедлив для однофайловых компонентов с использованием Webpack. Используется синтаксис ES6.
    Ответ написан
    3 комментария
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    @Finsh
    Взять Symfony.
    Только вот серьёзно, зачем делать из отвертки дрель, когда она уже есть. Вы думаете, что это будет быстрее? Вы думаете что это будет дешевле? Laravel прекрасен для своих, средних, задач, для "enterprise" берите Symfony.
    Ответ написан
    Комментировать
  • Как зашифровать строку методом "Железнодорожной изгороди"?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Для начала отдельное упражнение – как из индекса буквы в исходной строке получить индекс строки, в которую его положить.

    Обозначу число строк переменной rows. Период этой «пилы» от верхнего пика до следующего верхнего пика составляет 2 * (rows - 1). Остаток от деления на этот период будет означать позицию внутри одного «зуба»:
    остаток: 0 1 2 3 4 5
     строка: 0 1 2 3 2 1 – это хочется в итоге как-то получать


    Чтобы просчитать «отражение» – когда шли вниз и потом стали идти вверх – надо подогнать этот момент и сделать пересечением оси y = 0 и тогда отражение легко сделать, взяв абсолютное значение Math.abs():
    y  : 3  2  1  0 -1 -2
    abs: 3  2  1  0  1  2


    Остаток от деления будет всегда положительным и растущим: 0 1 2 3 4 5, а нужно получить из него 3 2 1 0 -1 -2. Умножить на -1 и добавить 3: Math.abs(rows - 1 - ost)

    Итого примерно такой код даст правильные номера строк, куда вставлять символ, получая на вход i – индекс буквы в исходной строке:
    var i, ost, row, rows=4, period = 2 * (rows - 1); //   0 0 0   |    6 0 0
    for(i = 0; i < 10; i++) {                         //   1 1 1   |    7 1 1
      ost = i % period;                               //   2 2 2   |    8 2 2
      row = rows - 1 - Math.abs(rows - 1 - ost);      //   3 3 3   |    9 3 3
      console.log( i, ost, row);                      //   4 4 2   |   10 4 2
    }                                                 //   5 5 1   |   11 5 1


    В сборе будет выглядеть примерно так:
    function encrypt( text, n) {
      var i, ost, period = 2 * (n-1), r, row, out = [];
      text = text.replace(/\s/g,""); // убрать пробелы
      for(r = 0; r < period; r++) out[r] = ""; // пустые строки
      for(i = 0; i<text.length; i++) {
        ost = i % period;
        row = n - 1 - Math.abs(n - 1 - ost)
        out[row] += text.substr(i,1);
      }
      return out.join("");
    }
    
    function test( text, rows) {
    	var pre = document.createElement("pre");
    	pre.innerHTML = encrypt(text, rows);
    	document.body.appendChild(pre);
    }
    
    test("этот текст зашифрован", 4); // экинтесшфаоттарвтзо

    jsFiddle

    Upd. чуть переписал это дело. Шифровка и расшифровка осуществляются на основе одной и той же «карты», которая зависит только от числа букв в тексте и числа строк. Поэтому сделал одну ф-ю, создающую эту карту. И слегка отличающиеся короткие функции шифровки и дешифровки. Фиддл с формой. Код шифровки/дешифровки такой:
    function makeMap( len, n) {
      var i, pip, period = 2 * ( n - 1);
      var rows = Array.apply( null, Array( n)).map( function(){ return []});
      for( i = 0; i < len; i++) {
        pip = i % period;
        r = pip < ( n - 1) ? pip : period - pip; 
        rows[ r].push( i);
      }
      return Array.concat.apply( null, rows);
    }
    
    function decrypt( text, n) {
      var map = makeMap( text.length, n);
      return text.split('').reduce(function(p,c,i,a){ return p + a[map.indexOf(i)]},'');
    }
    
    function encrypt( text, n) {
      var map = makeMap( text.length, n);
      return text.split('').reduce(function(p,c,i,a){ return p + a[map[i]]},'');
    }
    Ответ написан
    4 комментария
  • Какой bundle можно использовать для Symfony 3 для отправки системных email писем?

    myrkoxx
    @myrkoxx
    developer
    думаю что отписку от рассылок придеться делать именно вам, так как, как по мне, ето уже бизнес-логика вашего приложения, а сам бандл должен выполнять роль ифраструктуры. Так что можете смело брать его или другой какой найдете
    Ответ написан
    Комментировать
  • Действительно ли back-end разработка более консервативна, чем front-end?

    copist
    @copist
    Empower people to give
    Я понимаю, что уже год прошёл. Впишу своё мнение.

    Стек технологий для backend и frontend одинаково сложный. Много решений, много тонкостей. Как fullstack
    я знаю, о чём говорю.

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

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

    С другой стороны, портфолио фронтенд-разработчиков полно красивых скриншотов из готовых проектов, иногда даже ссылками на работающие проекты. Backend такой красотой похвастаться не могут - sphinx, memcache, mongo/redis, mysql/postgre, php/python/ruby - ну или ещё что-нибудь - я имею в виду, что приходится только стек технологий упоминать. А если в портфолио и будут скриншоты, то только с целью сказать позже: там, в тени красивого интерфейса, стабильно и быстро работает мой код.
    Ответ написан
    Комментировать