• Какие существуют подходы для загрузки файлов к посту, до того как пост создан?

    SWEBB
    @SWEBB
    Software Developer
    Можно еще проще.. Используйте JS FileReader (это встроенное WEB API JavaScript)
    https://developer.mozilla.org/ru/docs/Web/API/File...

    У вас есть форма отправки , фишка в том, что пользователь может загружать картинки и если передумает отправить пост, картинки не попадут на сервер, пока не будет сабмита. Но он их может видеть.

    Процесс очень прост:
    1. Пользователь что то пишет (или не пишет)
    2. В инпут=file загружает картинку, она через FileReader считывается в base64 (FileReader может и валидировать их mime/types и размер!)
    3. Создаете временный тег img ( document.createElement('img').src = ) или input=hidden с хэшом картинки... или и то и другое , чтобы показать ему картинку моментально и затем при отправке сохранить...
    4. При нажатии сабмита - сохраняете форму. Данные в базу или куда то... а картинку читаете из потока input
    php.net/manual/en/wrappers.data.php (для PHP пример)
    5. Создаете новый пустой файл и пишете в него поток

    Итого: картинок юзер может накликать хоть 100 штук и думать что они загрузились, но сохраняться они только когда форма обработается
    Ответ написан
    2 комментария
  • Как повысить уровень программирования?

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

    TL;DR: Читайте книжки, делайте дела, читайте чужой код.

    Что можно начать делать прямо сейчас, чтобы стать программистом лучше?

    1. Изучайте базу. Алгоритмы, сети, криптографию, архитектуру, ос, устройство браузеров, компиляторы и т.д. Изучение подобных вещей дает понимание какие задачи бывают в реальном мире и как "большие дядьки" решают возникающие проблемы. Это кладезь инсайтов.

    2. Устройтесь на фултайм-работу с сильной командой даже если джуниором. Я считаю, что есть только один способ расти как разработчик: работать фултайм над одним бизнес-продуктом. Такой подход учит решать проблемы масштабируемости, думать заранее, работать над процессом, которому вы следуете в разработке, решать задачи, возникающие с длительной эксплуатацией, решать проблемы с удобными окружениями и вообще учиться планировать свою работу в связи с нуждами бизнеса.

    3. Написание кода - не самая большая часть работы сеньор-девелоперов, я бы сказал. Но когда речь заходит о самом коде, нужно понимать что ты пишешь и зачем. Есть классические книжки, которые можно найти, например, в матрице компетентности программиста, есть современные, но полезные типа The Art of Readable Code, которую я очень рекомендую. Нужно читать книжки. На собеседовании я всегда спрашиваю какие книжки читал или читает соискатель и если ответ отрицательный, то это большой минус.

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

    5. Наберитесь терпения. Это не случится за один день. Думайте над именованием, разделяйте обязанности, изучайте алгоритмы и экосистему, оптимизируйте ваше рабочее место, изучайте новые технологии, читайте статьи и в течение ближайших лет регулярных усилий вы обретете новый способ мышления и будете разрабатывать поддерживаемое и надежное ПО. Легкого пути, к сожалению, нет.
    Ответ написан
    2 комментария
  • Как реализуете логику добавления/обновления мультикатегорий на Yii2?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    https://github.com/yii2tech/ar-linkmany смотрели этот бихейвор?
    Мне Александр Макаров рекомендовал его для работы с many-to-many связями.

    До этого использовал публичное свойство и afterFind(), afterSave() и т.д.
    Ответ написан
    2 комментария
  • Вопрос по работе, что посоветуете?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    1. Идем разговаривать с боссом, говорим о своих проблемах, всегда есть шанс что к вам прислушаются и что-то сделают.
    2. Пока вы новичок, не нужно слишком долго засиживаться на одной и той же работе (как бы вам не нравился коллектив/место/деньги). Это очень сильно тормозит профессиональное развитие.
    3. Заведите (или присоединитесь к готовому) свой Open Source проект, и ведите его в свободное время. Это тоже даст ощутимый профессиональный толчок.
    Ответ написан
    Комментировать
  • Вопрос по работе, что посоветуете?

    @GreatRash
    Если задачи однотипные, то можно придумать для них однотипное решение, затем клепать их за пять минут и оставшееся время проводить на тостере :) Ну или что-то для себя мутить.
    Ответ написан
    1 комментарий
  • Есть такая функция в PHP?

    miraage
    @miraage
    Старый прогер
    array_intersect_key($parsed, array_flip($params));
    Ответ написан
    2 комментария
  • Что делает этот опереатор [$var]?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    "Новый" способ задания массива, начиная с PHP 5.4
    Ответ написан
    Комментировать
  • Что делает этот опереатор [$var]?

    alsopub
    @alsopub
    Создает массив с одним элементом $var.
    Ответ написан
    4 комментария
  • Считается ли плохой практикой выражения в значениях массива?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Первое. Просто потому, что такой код легче читается. Третий пример некорректен, т.к. массив будет содержать замыкание, а не результат функции.
    Ответ написан
    Комментировать
  • Считается ли плохой практикой выражения в значениях массива?

    @karminski
    Senior React.JS Developer
    Если значение $value нигде больше не будет использоваться, то нормален второй вариант. Третий вариант не работает, т.к. $data внутри Closure не объявлено. Вероятно нужно было написать так:
    $arr = ['key' => function($data) {
        return Class::do($data);
    }];
    Ответ написан
    1 комментарий
  • MVC php на пальцах?

    DevMan
    @DevMan
    если у вас примитивная форма для добавления данных в базу, то заморачиваться с mvc никакого смысла нет -> для написания простых скриптов mvc нахер не уперся.
    Ответ написан
    5 комментариев
  • Почему Jetbrains phpStorm не видит файлы на FTP?

    @glilya Автор вопроса
    Проблему решил сам, достаточно выставить пассивный режим
    Ответ написан
    17 комментариев