Задать вопрос
  • Как заменить ключ следующим значением?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Неплохо использовать встроенные функции array_chunk() и array_reduce() :
    <?php
    function pair( $arr) {
    	function keyValue( $result, $item) {
    		$result[ $item[0]] = isset($item[1]) ? $item[1] : null;
    		return $result;
    	}
    	return array_reduce( array_chunk($arr, 2), 'keyValue', []);
    }
    
    print_r( pair( [1,2,3,4,5] ));
    /* Array (
        [1] => 2
        [3] => 4
        [5] => 
    ) */
    Ответ написан
    Комментировать
  • Как получить имя мультикласса?

    @bogdan0083
    var elem = document.querySelector('.masthead.inline-header.right.widgets.shadow-decoration.dt-parent-menu-clickable show-device-logo.show-mobile-logo');


    Перечислять классы в селекторе нужно через точку.

    Но вы должны понимать, что матчиться к таким селекторам - есть зло :)
    Ответ написан
    Комментировать
  • Как верстать адаптив при масштабе >100% (на 2к мониторе)?

    whoisthere
    @whoisthere
    Не благодари. Жми «Нравится»
    Масштабирование это функция браузера. Версткой её никак не исправить. Её отключают если очень нужно (а это вредная привычка). Если такая ситуация случается, нужно объяснить это клиенту. Вы можете под него подстроиться, а всех остальных пользователей, которые пользуются 100% масштабом, отравить.

    Поэтому мониторы 2к и макбуки с ретиной ничем не хуже. Сохраняйте графику в высоком качестве, а лучше векторную. Или же узнавайте медиазапросами DPI и от этого пляшите.
    Ответ написан
    5 комментариев
  • Как вы мониторите скорость работы интерфейса у ваших клиентов?

    RubaXa
    @RubaXa
    В целом всё сводится к:
    - Скорость загрузки страницы
    - Скорость рендера/обновления конкретных частей страницы
    - Скорость перехода между страницами (с кешом, без кеша)
    - и т.п.

    Но, тут надо понимать, все графики делятся по браузерам, разрешениям, каким-то специфичным параметрам которые влияют на интерфейс (количество писем, треды/не треды и т.п.)

    Но это только цветочки, есть огромный пласт числовых метрик (их реально тысячи), которые отвечают за подсчет кликов, показ элементов (например лаеров, балунов и т.п.), количество запросов к api и варианты ответов...
    Ответ написан
    4 комментария
  • Событие onload?

    amux
    @amux
    alp.ac
    var object = document.getElementsByTagName("img")[0];
    object.onload = function(){myFunction()}; 
    function myFunction() {
       alert("Картинка загружена!");
    }

    или
    var object = document.getElementsByTagName("img")[0];
    object.addEventListener("load", myFunction());
    function myFunction() {
       alert("Картинка загружена!");
    }
    Ответ написан
    4 комментария
  • Как правильно описать архитектуру проекта?

    @developer007
    Вот пару примеров из курса проектирования АСОИУ https://yadi.sk/i/KTRP6OeI38NmZZ

    погуглите ПРОЕКТИРОВАНИЕ АСОИУ - я не помню как нотации называются ....IDEF0 и прочие

    b5550277e5a143fab7d655283d10b9a1.png2b152ee490a94d2bb3d1b9805b592bde.png

    погуглите еще - " Диаграмма классов, Диаграмма развертывания

    для построения диаграмм я использовал enterprise architect
    или draw.io

    стили отличаются.
    Ответ написан
    1 комментарий
  • Как скрыть от посторонних глаз поддомен?

    @malbaron
    А смысл?
    Если не видно - то нельзя пользоваться.
    Ответ написан
  • Как настроить bitbucket под резервное хранилище?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    git add .
    git commit -m "backup 10.01.17"
    git push
    Ответ написан
    Комментировать
  • Можно ли спасти жёсткий диск?

    @nirvimel
    Это умирает контроллер (как уже сказали).
    Можно попробовать пересканировать диски:
    echo "- - -" > /sys/class/scsi_host/host0/scan
    (вместо host0 - номер вашего порта).
    В некоторых случаях умирающие диски перестают обнаружатся сразу после включения питания, но полежав какое-то время подключенными к питанию, они прогреваются и могут запустится и обнаружиться при повторном сканировании (linux дает такую возможность). Но даже, если каким-то чудом его удастся запустить, то проработает он до первого выключения питания, он дает одну возможность для снятия бекапа.
    Ответ написан
    Комментировать
  • Можно ли спасти жёсткий диск?

    Jump
    @Jump
    Системный администратор со стажем.
    Много текста, мало толку.
    Читаете SMART диска, если смарт нормальный, то вероятно проблемы с софтом.
    Если смарт плохой - выбрасываете диск.
    Ответ написан
    4 комментария
  • Можно ли спасти жёсткий диск?

    15432
    @15432
    Системный программист ^_^
    Судя по гуглу, кривой размер не проблема.
    А вот с этой серией дисков беда...
    https://habrahabr.ru/post/251941/
    Ответ написан
    3 комментария
  • Когда нужно думать о создании базы данных?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если приложение однопользовательское и никакого поиска по данным не надо - база данных не нужна.
    Если у вас сайт, рассчитанный на одновременную работу более, чем одного человека, то без базы данных не обойтись. Простейшее изменение данных, выполняемое на БД одной атомарной командой, в случае файлов потребует блокировки файла, а значит ожидания его освобождения остальными пользователями.

    P.S.
    Ок, пусть будет блог. Комментировать посты в нём можно будет? Тогда надо как-то эти комментарии записывать. Лайки ставить или карму править - это тоже запись данных. Даже простейший счётчик просмотров это уже изменение данных. Вот на примере такого счётчика обычно и поясняют необходимость атомарности и блокировок. Представьте, что два человека одновременно открыли пост блога и скрипты увеличивают счётчики прочтения, старое значение 99.

    Скрипт 1: прочитать файл "счётчики"
    Скрипт 2: прочитать файл "счётчики"
    Скрипт 1: найти в файле счётчик поста, получили 99
    Скрипт 2: найти в файле счётчик поста, получили 99
    Скрипт 1: увеличить счётчик поста, получили 100
    Скрипт 2: увеличить счётчик поста, получили 100
    Скрипт 1: записать файл "счётчики"
    Скрипт 2: записать файл "счётчики"

    То есть вместо ожидаемых 101 в счётчике всего 100. Значит перед изменением любых данных необходимо заблокировать файл на запись, считать из него актуальные данные, внести изменения, записать файл, разблокировать его. Ну а поскольку это json, то считывать и записывать файл каждый раз придётся целиком. Если при изменении данных меняется связь с данными в других файлах, то во избежание нарушения целостности блокировать придётся все связанные файлы.

    Ну и поиск по данным, скажем десять самых читаемых постов. В файловом варианте вам придётся считать весь json, и отсортировать его, тогда как в БД при правильной расстановке индексов это действие выполняется в один запрос с линейным получением первых десяти записей по индексу.
    Ответ написан
    5 комментариев
  • Как передать метод в Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Что такое Fn? В приведённом вами коде такое имя нигде не определено. К тому же, Test принимает два параметра, а вы передаёте один. Подозреваю, что вы хотели
    Test(Main::Func, 475)
    Ответ написан
    2 комментария
  • Как решить проблему маленьких разрешений в смартфонах?

    Rou1997
    @Rou1997
    Очень непонятное объяснение, и кода не видно, поэтому я не знаю, как вам решить проблему, вижу только скриншот, на нем вижу "иконки", возможно это в них проблема, тогда нужно либо сделать для них версию ldpi, либо сами серые квадратики сделать так, чтобы квадратики масштабировались по размеру контейнера, а их иконки - по размеру квадратиков.
    Ответ написан
    2 комментария
  • Как Laravel узнаёт имя таблицы MySQL?

    @Arik
    Метод getTable() должен вернуть имя таблицы, при этом идет обработка свойства table, можете или свойство задать либо сразу метод переназначить. По-умолчанию можно увидеть, что берет имя модели и обрабатывает через функции plural и snake
    Ответ написан
    Комментировать
  • Как узнать сколько тактов уходит на исполнение чего ни будь написанного на PHP?

    @Arik
    xhprof очень хорош
    Ответ написан
    Комментировать
  • Почему в C++ приоритет сравнения выше, чем побитовых логичеких операций?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему в C++ приоритет сравнения выше, чем побитовых логичеких операций?
    Например, x & 8 != 0 равносильно x & (8 != 0), а не (x & 8) != 0.

    Это наследие C, в ранних версиях которого не было операций && и ||, а сложные условия реализовывались битовыми операциями.
    Ответ написан
    Комментировать
  • PHP: $a%$b vs bcmod($a, $b)?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    Проблема данной функции в том, что она наотрез отказывается работать с числами типа float, исключительно работает с int

    Могу посоветовать этот пакет: https://bitbucket.org/zdenekdrahos/bn-php
    Работать с ним как-то так в вашем случае:
    $eval = new \BN\Expression\ExpressionEvaluator();
    $operators = new \BN\Expression\OperatorsFactory();
    $eval->setOperators($operators->getOperators(array('%')));
    echo $eval->evaluate('10 % 2.1'); // 1.6
    Ответ написан
    Комментировать
  • Где взять бесплатный ssl сертификат?

    @zzzevaka
    1.
    это не безопасно, на мой взгляд (потому как доверяются пароли третьей стороне, которая не понятно что и как именно будет делать на сервере в автоматическом режиме)
    Это вы зря. Это не компилируемая программа, от которой нет исходников, а не очень сложный скрипт, который лежит в общем доступе - https://github.com/certbot/certbot. Если бы там был какой-то подвох в плане безопасности - было бы много шума.

    2. letsencrypt сертификат вы вполне можете получить и ручками, только это сложнее и придется повторять раз в 3 месяца (вроде столько срок действия их сертификата).

    3. Есть StartSSL. У них вкусные сертификаты на 3 года, но был недавно шум https://geektimes.ru/post/281188/. У меня их сертификаты, полученные летом - работают нормально.
    Ответ написан
    2 комментария
  • Смысл систем сборок Gulp, Grunt и т.д?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смысл таск ранеров в том, что бы упростить и автоматизировать рутиные задачи. Сборку можно сделать да хоть на bash скриптах. Grunt/Gulp - просто заточены под это и просты в изучении.
    В команде намного проще использовать подобные средства, чем выполнять все задачи поднятия проекта в ручную.
    Например при сборке фронта вам требуется:
    1. Проверить исходники через eslint
    2. Минифицировать js код, и для dev сборки притянуть сорс мапы
    3. Собрать css из кучки взаимосвязанных less файлов и тоже минимизировать.
    4. Шаблоны собрать из jade например, или любого другого шаблонизатора
    5. Прогнать unit тесты

    Безусловно, можно все эти шаги выполнить полностью в ручную, однако на много проще один раз этот процесс описать в инструкции для сборки и вызывать что-то в стиле gulp build
    Ответ написан
    Комментировать