• Как правильно читать книги по программированию?

    saboteur_kiev
    @saboteur_kiev Куратор тега Книги
    software engineer
    сперва были вопросы "как стать программистом"
    затем вопросы "что читать"
    теперь уже "как читать"
    может скоро будет "как учить алфавит, а то за меня родители пишут на тостере".

    Для книг - читайте простейшие туториалы и сразу практика. Сложные книги - потом, когда в голове уже будет база.

    Добавлю еще момент:
    Почитайте статью megamozg.ru/post/10126
    Там очень понятно указано, что профессиональный навык и боль программиста - гиперконцентрация, которая необходима, чтобы освоить понятия и вещи для профессиональной работы. 40 минут это как-то несерьезно.
    Ответ написан
    3 комментария
  • Существует ли "карта программиста"? Что и за чем учить?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Нет одинаково эффективного пути для всех и каждого.

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

    Тут главное - настолько сильно хотеть достичь результата, чтобы любые препятствия только добавляли азарта. Чтобы ночами спать не мог и думал о задаче. Это ключевой момент обучения. Все остальное - декорации, способы, инструменты...

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

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

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

    На первых порах, тестирование будет занимать до 99% времени и сил. Заодно подтягивается синтаксис используемых языков (вообще не важно каких), вырабатывается внимательность, концентрация, тренируется память и пр.

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

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

    Только так, только жесткий хардкор! Если ты не прошел эту фазу, то ты либо родился гением, либо тебе нечего делать в профессии... Это как детские болезни - ими нужно переболеть в детстве.

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

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

    Ах да, обложись справочниками по любому инструменту и научись быстро вникать и подхватывать необходимый минимум. Обычно достаточно на 20% владеть инструментом, чтобы решать 80% задач.

    В любом случае я за критерий истины держу платежеспособный спрос.
    Ответ написан
    3 комментария
  • Как правильно исправить код слайдера на JS?

    @i1yas
    В начале функции нужно проверять, не ушел ли n за пределы.
    function showSlides(n) {
        var pos = document.getElementsByClassName("position");
        var isOutOfRange = n > pos.length || n < 1;
        if (isOutOfRange) return;
        ...
    Ответ написан
    3 комментария
  • Почему не устанавливается xubuntu на virtualbox?

    @3aiats
    мне кажется проще пощупать ось используя лайфусб, все равно ее придется делать)
    Ответ написан
    Комментировать
  • Почему не устанавливается xubuntu на virtualbox?

    Zoominger
    @Zoominger
    System Integrator
    Попробуйте при запуске выбрать опцию "acpi=off" при загрузке с носителя. EFI не надо.
    Ответ написан
    4 комментария
  • Как правильно построить поле зрения?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Школьная геометрия.
    1) Сначала вычисляем угол, куда (X, Y) игрок (x0, y0) смотрит:
    dx = X - x0; dy = Y = y0;
    d = sqrt(dx*dx + dy*dy); - длина отрезка
    alpha = arccos(dx/d); - вычисляем угол. Здесь нужно будет дополнить, т.к. знак может потеряться. Смотри на dx и dy.

    2). Теперь строим угол обзора (betaLeft, betaRight):
    betaLeft = alpha - ugObz/2;
    betaRight = alpha + ugObz/2;

    3). Всё. Теперь вычисляем точки, через которые будет проходить линия обзора:
    xL = x0 + cos(betaLeft) * Radius;
    yL = y0 + sin(betaLeft) * Radius;
    xR = x0 + cos(betaRight) * Radius;
    yR = y0 + sin(betaRight) * Radius;

    И строишь через эти точки бесконечную линию, чтобы она выходила за пределы экрана. Можешь для этого подобрать Radius такой, чтобы он был больше разрешения экрана
    Ответ написан
    Комментировать
  • Как контролировать статус выполнения консольной команды в Symfony?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Команду вы никак не "дёрнете". Но вы можете хранить её статус в каком-нибудь доступном вебу хранилище - например, Redis.
    А если нужно совсем реалтайм - можно через очереди (RabbitMQ, beanstalkd) посылать из команды сообщения серверу вебсокета, который будет уже отдавать статус на фронтенд.
    Ответ написан
    Комментировать
  • Можно ли добавить параметр в функцию arraya_walk?

    0xD34F
    @0xD34F
    array_walk($pagesArray, function($v, $k, $p) use(&$s) {
      if (!isset($p[$v])) {
        $s[] = $v;
      }
    }, array_flip($permisArray));
    Ответ написан
    Комментировать
  • Заблокировалась папка в tmp. Что делать?

    Zoominger
    @Zoominger
    System Integrator
    Перезагрузитесь, ёлки.
    /tmp должен (но не обязан) очищаться при перезагрузке.
    Если нет - загрузитесь с LiveCD и снесите.
    Ответ написан
    5 комментариев
  • Как добавить событию обработчик вызываемый первым?

    Зарегистрированные jQuery обработчики вызываются на стадии event bubbling, так что если перехватить событие во время capture, то можно успеть выполнить свой код. Вариант номер два – повесить обработчик на mousedown или mouseup, которые гарантированно идут до click.
    Ответ написан
    1 комментарий
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

    Ninazu
    @Ninazu
    1. Создай единую точку входа, и оставь ее в корне сайта, остальные файлы вынеси за пределы (Это не только сделает твое приложении более гибким, понятным, и структурированным, но и в случае отваливания веб сервера, такое когда-то у меня было, после кривого обновлении до php7, исходный код показывался браузером)
    2. Не забудь про SQL иньекции. Никакой конкатенации или вставок PHP. Только плейсхолдеры и байндинг
    3. Если есть возможность загружать файлы, нужно исключить возможность исполнения в этой папке.
    Ответ написан
    3 комментария
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

    @Narts
    Поставь isset или простенькую валидацию на данные и в случае какой-то ошибки делай редирект на страницу с ошибкой
    Если ты о том, что перейдя по ссылке со скриптом можно увидеть его код, то на сервере можно запретить просмотр этих файлов
    Ответ написан
    1 комментарий
  • Как авторизоваться на сервере API?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    Вы все правильно понимаете. Вам нужно:
    1. Авторизоваться послав логин и пароль на адрес для авторизации. Например api.site.ru/login
    2. После авторизации вы получаете токен.
    3. Формировать все запросы к api с токеном.

    На php удобнее работать с http-build-query

    Отправлять запрос можно file-get-contents

    Можете через curl

    Пример
    Ответ написан
    Комментировать
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

    gscraft
    @gscraft
    Программист, философ
    Нет, файл-PHP защищать не нужно, если веб-сервер передает его на обработку PHP-интерпретатору. То есть, если сценарии вообще работают, а не выдается содержимое PHP-файла при запросе по адресу ваш-сайт/action_page.php. Большинство PHP-движков спокойно хранят настройки в PHP-скриптах.

    Однако, если данные очень критичны и есть боязнь сбоя сервера (например, администратор допустит случайную и временную ошибку, открыв доступ к содержимому скриптов, исключив интерпретацию), можете вынести все приватные данные за пределы action_page.php, например, в action_page_handler.php , в свою очередь находящийся за пределами публичной директории, и подключаемый, скажем, как require __DIR__ . '../../scripts/action_page_handler.php'; (и это будет единственная строчка в action_page.php, которую кто-либо когда-либо сможет увидеть).
    Ответ написан
    Комментировать
  • К чему может быть эта ошибка?

    egor_nullptr
    @egor_nullptr
    К чему может быть эта ошибка?

    К отладке.
    Ответ написан
    8 комментариев
  • Как запустить nodejs на сервере linux?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Сегодня что, CORS day? В 100500 раз - браузер не даст обращаться просто так через js с одного домена на другой. Или ставьте сервер как бэк на роут в том же домене или же ставьте правильные заголовки allow origin.

    Ну и в догонку - для браузера localhost это всегда пользовательская машина, но никак не ваш vps
    Ответ написан
    Комментировать
  • Когда стоит писать модули а когда контроллеры?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Контроллер и модуль это разные сущности, контроллер сделан для того чтобы вызывать модули в зависимости от запроса.
    Ответ написан
    Комментировать
  • Как сделать кнопку 18+ на сайт?

    Нажатие через js, сохранение в куках.
    Ответ написан
    Комментировать
  • Расположение кода при работе с Doctrine?

    Обычно, бизенс-логику выносят в отдельный слой. Напишите классы-сервисы, куда и поместите свою бизнес-логику. Где они будут лежать и как называться - это, по сути, ваше дело уже. А сами сервисы потом уже инжектите в контроллеры и вызывайте нужные вам методы.
    Ответ написан
    6 комментариев
  • Как найти похожие ПО ЦВЕТУ товары по изображению?

    dom1n1k
    @dom1n1k
    Алгоритм примерно такой:
    1. Картинки переводятся в пространство CIE Lab. Можно предварительно их уменьшить для ускорения (хотя с уменьшением там свои нюансы).
    2. Все имеющиеся на картинке цвета кластеризуются и выделяются 2-3 доминантных кластера. Алгоритмов кластеризации очень много, читайте википедию.
    3. Похожесть доминантных цветов двух картинок определяется по формуле DeltaE, она тоже есть в википедии. Можно не заморачиваться с продвинутой версией DE2000, скорее всего будет достаточно обычной DE1976.
    Ответ написан
    2 комментария