• Какой 34 дюймовый монитор подойдёт для программирования?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    На самом деле это все в основном вкусовщина. Сходи в магазин посиди минут 5 за 34 и за 28
    IMHO 34 не нужен.
    Ответ написан
  • Как сделать, чтобы при удалении записей остальные id записей начинались с 0?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак не делать .
    Этот вопрос очень часто задают новички, от непонимания базовых принципов

    Ид вообще никогда не надо трогать.
    Менять ид в базе это все равно что ученикам в классе каждый раз давать новые имена, чтобы они всегда сидели по алфавиту

    Либо тебе это поле вообще не нужно, и его надо убрать, либо просто оставь его в покое и никогда не трогай его руками
    Ответ написан
    1 комментарий
  • Как научиться объяснять?

    @dmshar
    Есть волшебный метод, который называется "декомпозиция". Мои наблюдения говорят, что 80% людей им просто не владеют. От слова - вообще. Ни в профессиональной, ни в обыдиной жизни. Но вот те, кто объясняют доходчиво - владеют им виртуозно.
    Заключается он в следующем. Если надо что-то объяснить, и это что-то чуть сложнее таблицы умножения (но и ее кстати тоже), задачу можно всегда разбить на части, из которых компонуется готовое решение. Вы должны на первой "итерации" объяснить ответ "с птичьего полета", как последовательностей этих самых подзадач, без углубления в детали, без подробных выкладок, что называется - "на пальцах". Причем, конечно, на языке понятном и воспринимаемом партнером. Когда (и если) он поймет вашу идею, поймет шаги - начинаете углубляться в объяснение конкретных подзадач. Вот тут уже начинаете использовать меньше "его" терминов, больше "своих". В какой-то момент он начинает сам понимать и самостоятельно додумывать решения. Тогда переходите к следующей подзадаче. Конечно, каждую подзадачу часто можно (а иногда - для очень сложных задач - и нужно) декомпозировать дальше. И так до того момента, когда вы можете объяснить полностью.
    Тогда вы и сами понимаете "roadmap" вашего объяснения, не теряете нить рассуждений и не сбиваетесь, и партнеру легче выстраивать "цепочку понимания", следя за ходом объяснения и сразу понимая, где именно он перестал улавливать мысль. Разумеется, при этом очень важно, что-бы собеседник был заинтересован в том, что-бы получить от вас объяснение, а не просто спросил чтобы "а поговорить".
    Ответ написан
    3 комментария
  • Как работает crontab?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    > Можно ли поставить крон на 1 минуту
    Можно.

    > и проверять есть ли задание, для скрипта, в бд
    Можно.

    > и если есть выполнять его,
    Можно

    > а это не быстро?
    А это не вопрос.

    > В основном интересует нагрузка на сервер.
    От крона нагрузка будет несущественная. От вашего скрипта - зависит от вашего скрипта.

    > И что будет если в одно время, через крон, несколько раз обратиться к одному скрипту
    Скрипт будет выполнен несколько раз.

    > не получится, что запросы будут конфликтовать друг с другом?
    Если вы эту ситуацию обработаете в своём скрипте, то не будут. В кроне никаких встроенных механизмов для этого нет.
    Ответ написан
    Комментировать
  • Как можно отловить событие, момент, что изображения не существует и вместо него вставить другое?

    malente
    @malente
    // Nach errors suchen und durch das Bild ersetzen
    $('img').on('error', function(){
        $(this).attr('src', 'broken-image.png');
    });
     
    // Oder ausblenden
    $("img").on('error', function(){
        $(this).hide();
    });
    Ответ написан
    Комментировать
  • Как можно отловить событие, момент, что изображения не существует и вместо него вставить другое?

    monochromer
    @monochromer
    DIVeloper
    Два варианта:
    1. Если серверный рендер, то наличие картинки можно проверять в шаблонизаторе и подставлять другой вариант

    {% if post.image %}
    <img src="{{ post.image }}" />
    {% else %}
    <!-- placeholder -->
    {% endif %}


    2. На клиенте - использовать событие `error` у картинки

    <img src="..." onerror="..." />
    Ответ написан
    Комментировать
  • Как не пропускать css клас в комит?

    Aetae
    @Aetae
    Тлен
    Дёшево и сердито: пре-коммит хук, который простым grep-ом ищет это имя класса и не даёт коммитить если находит.)
    Ответ написан
    Комментировать
  • Как сделать сохранение выбора темы тёмная/светлая на любой странице?

    AngryYumy
    @AngryYumy
    Заплати фрилансеру чеканой монетой
    Честно по мне вы все сложно делаете, я вот совсем недавно делал светлую/темную тему.
    Просто пару css переменных + локал стораж записывал темная/светлая тема.
    Ответ написан
    8 комментариев
  • Как сделать юнит тест для метода отправки сообщений на Email?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Юнит-тест:
    Юнит-тест невозможен в данном случае, тк нет этого самого юнита в виде чистой функции (без побочных эффектов). Тут сплошной сайд-эффект: отправка на SMTP, прослушивание HTTP, то есть особо не потестируешь юнитами.
    Объектом тестирования юнит-тестом служит или функция или объект. А у вас и нет ни функции/процедуры даже хотя бы.

    Это будет функциональный (если будете из кода вызывать) или приемочный (если свое приложение через HTTP дергать) в любом случае.

    Как по итогу все же протестировать:
    Такой функционал обычно тестируют так:
    • для начала настройки отправки почты переносят в конфиг
    • в тестовом окружении в конфиг подсовывают настройки своего SMTP сервера
    • поднимают фейковый почтовый сервер, например Mailhog на Go (очень легко ставится)
    • выполняют работу скрипта, чтобы почта ушла, почта летит на ваш подмененный сервер, и у него через АПИ проверяют, что письмо пришло


    Если возьмете Codeception, установите Mailhog на машину, где будут гоняться тесты, или докер-контейнер (вообще парой строк, например если в Gitlab CI гоняете), и поставите модуль Codeception + Mailhog. То легко все проделаете.
    Ответ написан
    2 комментария
  • Как обработать массив в PHP?

    0xD34F
    @0xD34F
    array_combine(array_keys($arr), array_column($arr, 'VALUE'))

    или

    array_map(function($n) {
      return $n['VALUE'];
    }, $arr)
    Ответ написан
    Комментировать
  • Какой набор программ вы используете на Macbook для вебразработки?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    iTerm, phpstorm; изредка postman, atom, medis.
    Ответ написан
    Комментировать
  • Как правильно выстроить разработку и деплой сайта?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Разработка и контроль версий

    Читаем про git flow, восхищаемся и интегрируем.
    Читаем PSR-ы, восхищаемся и интегрируем. Не помешает: Попросили проверить код, на что смотреть нужно?
    Читаем про vagrant. На базе вот этого вот строим dev окружение. Можете поиграть с https://puphpet.com/. До docker все же стоит дорасти.
    Постигаем Phpstorm, и радуемся жизни.
    Можете посмотреть так же: https://github.com/index0h/php-conventions

    Тестирование

    Читаем про phpunit, восхищаемся и интегрируем.

    Документирование

    Рекомендую взять за правило: документирование алгоритмов нужно только в крайнем случае, когда используются некие хаки. Говнокод лучше переписать на что-то очевидное, чем объяснять, какая муха вас укусила и где.
    Что касается docblock-ов для помощи ide - это отличная идея.

    Деплой

    Самый простой и надежный способ: root у вашего nginx/apache указывать как ссылку на каталог текущей прод версии. При релизе - заливать код с помощью rsync в новый каталог, а далее менять ссылку на новый релиз.
    Например у вас каталог с версиями кода:
    production -> v1.0.2 - текущая версия
    v1.0.1 - старый релиз
    v1.0.2 - текущая версия
    v1.0.3 - новый релиз
    Когда подготовка завершена - вы только меняете симлинк production на v1.0.3. Если что не так - можно быстро откатиться на предыдущую версию.
    Ответ написан
    11 комментариев
  • Пример проекта который включал бы всю "класссику" фронтенда?

    или более похож на реальный боевой проект

    Куча легаси кода, все тормозит и глючит. Половина проекта с горем пополам переписана на современный манер.

    Не видел ни одного крупного боевого проекта с большой историей, который был бы нормально написан.
    Ответ написан
    1 комментарий
  • Как получить желаемое отображение времени?

    NeiroNx
    @NeiroNx
    Программист
    Магическая дата и время вместо привычного "%d.%M.%Y %H:%M"
    package main
    import (
    	"fmt";
    	"time"
    )
    func main() {
    	t, _ := time.Parse("2006-01-02 15:04:05", "2019-08-26 11:10:02");
    	fmt.Println(t.Format("02.01.2006 15:04:05"))
    }

    26.08.2019 11:10:02
    Ответ написан
    Комментировать
  • Стоит ли использовать изоморфное приложение в высоконагруженном e-commerce проекте?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Пишу backend на Go. Первым делом проектируется API и структуры данных. Фронтендеры говорят мне на каком URI они хотят получить какой JSON и моя задача предоставить это быстро и надежно. Как они собираются этот JSON рендерить мне вобщем то и неособо интересно.
    не надо клиента грузить тоннами JS
    категорически не согласен. Клиентов много а сервер один. Вычислительная мощность современных клиентов зачастую больше мощности сервера. Поэтому считаю, что на клиента нужно перекладывать столько работы сколько только возможно.
    Ответ написан
    Комментировать
  • Где ошибка в коде?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А вы цвета различаете? Даже здесь в тексте вопроса ошибка хорошо выделяется - во второй строке не закрыты кавычка и скобка.
    Ответ написан
    5 комментариев
  • Как решить проблему runtime error: invalid memory address or nil pointer dereference?

    @PapaStifflera
    Родился, вырос...
    Запустить отладчик, локализовать проблему, исправить проблему.
    Ответ написан
    Комментировать
  • ЯП для кросплатформенной разработки?

    kale
    @kale
    Посмотрите в сторону Go:
    1) Многопоточность
    есть из коробки на уровне языка
    2) Наличие ментодов для работы с битами и байтами
    отдельные пакеты
    3) Наличие удобных методов для работы с сетью
    пакеты в стандартной поставке
    4) GUI библиотеки или встроеный(очень гибкий в настройке)
    этого нет, но есть множество биндингов, в том числе к Qt
    5) Относительно не сложная сборка в static
    одна команда компилятору
    6) Относительно большое комьюнити
    уже да
    В идеале написать один раз, собрать на одной машине (Linux) и запустить на всех.
    Не уверен, но скорее всего да
    Ответ написан
    1 комментарий
  • Что делать если youtube занимает слишком много времени?

    Serov_George
    @Serov_George
    У тебя с мозгом разные цели: он хочет легкого дофамина, ты – научиться программированию. Это война с привычкой, на которой все средства хороши. Ложь, убеждение, давление, манипуляция – сработает все.

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

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

    Дальше нужно сказать себе, например, отныне смотрю ютуб только утром, вместо вечера. Можно смотреть сколько угодно, главное не смотреть вечером. Вставать рано не хочется. Пусть две привычки повоюют друг с другом. Тут либо появится привычка вставать рано, либо уйдет ютуб. Первые пару дней будут ранние подъемы, настроение ухудшится, а еще через пару дней захочется бросить это. И ладно, но мы опять чуть-чуть сдвинули границу фронта.

    Дальше можно разрешить смотреть себе видео только на телефоне (только на компьютере) – сделать так, чтобы мозгу было неудобно, непривычно. Так тоже можно продержаться несколько дней, пока не будет срыва. Но это не страшно. Это проигранный бой, таких будет много.

    Пусть вместо ютуба один вечер видео будут с Вимео.

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

    Можно весь день на работе успокаивать себя мыслью, что вечером посмотрю ютубчик, а потом когда будет хотя бы небольшой прилив силы воли уйти гулять без телефона и уехать далеко на метро, чтобы быстро вернуться не получилось.

    Главное все эти резкие действия принимать, когда ненависть к себе побеждает привычку и ты готов к решительным действием. Очень важно в это небольшое окно прозрения успеть сделать максимально много, чтобы когда привычка снова возьмет вверх мозг максимально страдал.

    Я сам такой, я знаю, что вот эти советы в стиле "нужно волевое решение" – они не работают. Когда мозг хочет кайфа – он его достанет. Наша задача просто помешать ему на всех возможных этапах. И в минуты просветления подготовить оружие для момента, когда опять нахлынет.
    Ответ написан
    Комментировать
  • Что делать если youtube занимает слишком много времени?

    Ютюб занимает ровно столько времени, сколько у тебя есть... он не может занять больше, потому как больше нет, не может занять меньше, потому как нечем занять освободившееся.

    А "Что с этим делать?", так мудрец давно сказал "Помни о смерти", а как ты к ней догребешь и как потратишь отпущенное тебе время, это только твой выбор...

    s1200?webp=falsedepositphotos_56582959-stock-photo-relax
    Ответ написан
    3 комментария