• Архитектура приложения на vue?

    @spaceatmoon
    Короче пофиг на архитектуру. Назовите осмысленно файлы Vue и у сё. Это же фронтенд.
    Ответ написан
    1 комментарий
  • Какой валидатор использовать?

    @IgorNoskov
    https://github.com/rakit/validation Подход как у Laravel, пользуюсь на одном проекте, удобно.
    Ответ написан
    Комментировать
  • Как вытащить массивы из массива массивов php?

    @Randewoo
    Потому что переменная $v содержит в себе еще один массив.
    <?php
    $arr = [
        [6, 1, 13, 7],
        [56, 23, 12, 78],
        [43, 288, 78, 6],
        [77, 12, 65, 83],
    ];
    foreach ($arr as $item) {
    	foreach ($item as $value) {
    		echo "{$value}\t";
    	}
    	echo "\n";
    }
    ?>
    Ответ написан
    Комментировать
  • Почему перевод через Yandex translate API намного хуже, чем обычный перевод через стандартную страницу переводчика?

    dr_foam_rubber
    @dr_foam_rubber
    Столкнулся с такой же проблемой. Вот, что ответила поддержка:
    Различие в переводах на сервисе и через API существует потому, что на сервисе используется гибридный перевод (нейроперевод + статистический фразовый), а в API — только статистический фразовый.
    В платной версии API Яндекс.Переводчика на платформе Яндекс.Облако используется такой же перевод, как и на сервисе.
    Подробнее об этом можно почитать тут: https://cloud.yandex.ru/services/translate
    Ответ написан
    Комментировать
  • Какой есть хороший и не очень громоздкий аналог laravel-query-builder?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    Комментировать
  • Правда ли, что сейчас так сложно найти работу?

    @IvanOne
    Я вот тоже не так давно искал работу, и я скажу так. Надо ходить на собеседования и учиться. Иногда компании пишут в требованиях какие то супер знания, а по факту пообщавшись с разработчиками на собеседовании, понимаешь что компании просто ищут человека который близок им по духу и опыту работы, при этом я не раз проходил собеседование на 'троечку', но получал оффер, не думаю что там люди оценивали только мои знания алгоритмов или как я пишу голый sql через orm. Возможно это только мое мнение. И кстати насчет курсов они не так уж плохи иногда, просто нужно искать. Я недавно нашел отличный курс по определенному набору технологий, да там по большей части пересказ документаций, но если видосом воспринимается лучше то это хороший инструмент, плюс делятся практиками опытом, но далеко не все курсы такие.
    Ответ написан
    3 комментария
  • Неверная выборка из массива по датам. Почему?

    s_panteleev
    @s_panteleev
    25 yo, Yaroslavl
    Как то так

    <?php
    
    $START_DATE = "01.04.2019";
    $END_DATE = "31.04.2019";
    
    $object_list = [
        [
            "num" => "0003000000006739",
            "qr_code" => "18826807734421200000",
            "entry_date" => "23.03.2019 16:43",
        ],
        [
            "num" => "0003000000006739",
            "qr_code" => "18826807734421200000",
            "entry_date" => "23.04.2019 16:43",
        ],
        [
            "num" => "0003000000006739",
            "qr_code" => "18826807734421200000",
            "entry_date" => "23.05.2019 16:43"
        ]
    ];
    
    
    $ts_from = strtotime($START_DATE);
    $ts_to = strtotime($END_DATE);
    
    foreach ($object_list as $item) {
        $ts = strtotime($item['entry_date']);
    
        if ($ts > $ts_from && $ts <= $ts_to) {
            echo '<pre style="color: red;">', print_r($item, true), '</pre>';
        }
    }

    Ответ написан
    Комментировать
  • Как сделать Android приложение на Python + HTML5?

    Astrohas
    @Astrohas
    Python/Django Developer
    Мне вот https://beeware.org/ нравиться
    На нем можно даже SPA нафигачить
    https://beeware.org/project/using/single-page-web-app/
    Ответ написан
    1 комментарий
  • Стоит ли начинать с JavaScript?

    Zoominger
    @Zoominger
    System Integrator
    Нет. Будете толкаться с толпой таких же джунов, моля о хоть какой-нибудь работе, хотя бы за доширак.
    Кроме того, это слишком примитивный язык и в данном случае это большой минус.
    Ответ написан
  • Стоит ли начинать с JavaScript?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Самая большая беда JS в том, что это слишком странный язык. Он во многом ведёт себя неочевидно, неинтуитивно и не так, как ведут себя другие языки. Соответственно, потом может быть сложнее с изучением других языков.
    Ответ написан
    3 комментария
  • Wordpress дает высокую нагрузку на сервер. Оптимизировать сайт? Сменить хостинг?

    @bossigorxxx
    Смотрите так же качество самого хостинга. Я тестил нагрузку на 100 чел/минута сервисом. В основном грузил крон WP. Выключил. Резко спала нагрузка. Вместо ВП крона поставил запуск крона от хостинга. Полет нормальный! Если Вы спец по серверу. Сервер! Если нет, оптимизация.
    Ответ написан
    Комментировать
  • Как настроить переадресацию сайта в зависимости от страны?

    kawabanga
    @kawabanga
    ip-api.com
    как вариант.

    Вообще, много разных методов. но большинство основывается как раз на языке браузера и ip.
    Ответ написан
    Комментировать
  • Как экспортировать большие данные в excel?

    mashletov
    @mashletov
    Math.random()
    Не слушай советчиков с PHPExcel. Он уже при 5-10к строк начнет потреблять 100+ мб оперативы.
    Кандидат от народа: box/spout. Пишет в файл на лету. Минус: почти полное отсутствие форматирования. Не умеет делать ни ширину столбцов, ни выравнивание по краю... Только шрифт / бордеры.
    Ответ написан
    Комментировать
  • Дайте оценку верстке?

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

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

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

    Однако и в этом случае и, тем более, в случае фоновых изображений ниже по странице вы допускаете ошибки с выбором форматов файлов, способами их вставки в страницу и оптимизацией. К примеру из картинки с автомобилем можно выжать почти 100кб просто за счёт использования оптимизаторов. Гораздо грустнее ситуация с фоновыми картинками ниже по тексту. Во-первых вы сохраняете фотографии в PNG, получая на выходе файлы по мегабайту, хотя они же в JPEG занимали бы в 5-10 раз быстрее. Во-вторых вы, скорее всего, сохранили фоновые картинки уже обработанными (затемнёнными). Я не видел макета, но предположу что там эти картинки стоят в их оригинальном виде и на них наложены какие-нибудь фильтры. На первый взгляд кажется что проблемы нет, но на практике (в случае вёрстки для реального сайта) вы вынуждаете человека который будет поддерживать сайт либо готовить картинки с такой же пост-обработкой либо мириться с тем что стиль сайта меняется. Правильное решение здесь - грузить картинки как они есть и реализовывать фильтры на CSS, тем более что здесь это делается элементарно через multi background или псевдо-класс с полупрозрачным фоном. Очевидно также что для таких тёмных картинок вполне можно использовать JPEG с меньшим качеством и тем самым существенно сэкономить пользователям трафик.

    Ещё одна проблема связанная с фоновыми картинками - вы не подкладываете под них близкий по цвету solid color. Попробуйте включить в dev.tools "Network throttling", отключить кэш и перегрузить свою страницу - думаю вы поймёте что я имею в виду - белые блоки с белым текстом стоят довольно продолжительное время, постепенно заполняясь довольно тёмными картинками. Если бы background-color под ними был бы чёрным - проблемы бы не было.

    Далее - логотип. Обычно логотипы разрабатываются отдельно и даже если он выглядит просто набранным шрифтом - это вовсе не значит что это не так. Логотип Google, Microsoft или Яндекс - тоже просто название, но, надеюсь вы не сверстаете их, написав надпись текстом? В общем логотип = картинка, лучше в векторе. Сейчас даже одно съезжание слогана на пиксель влево относительно названия уже рушит всю конструкцию логотипа.

    Обратите внимание на то как вы работаете с формами. Все поля в форме являются <input type="text">, хотя часть названий явно намекает на date / time селекторы, а "Choose Vehicle" - на список выбора.

    Хотелось бы отметить работу с иконками - их всё-таки лучше хранить в SVG и либо требовать с дизайнера либо подбирать на том же Icon Finder. При этом оформление (те пресловутые жёлтые кружки) лучше делать через CSS т.к. это позволяет вам существенно гибче работать с размерами элементов.

    Есть всякие недочёты касающиеся responsive, к примеру, внимание как отображается блок "Our Tariffs" в размере чуть более 600px, в частности название тарифа и описание.

    Пожалуйста обратите внимание на то что вы используете два разных меню для desktop и mobile представления. В целом в вашем случае меню довольно простое и можно было бы обойтись одним. Конечно две копии используют часто, но у этого решения есть свои недостатки (в частности отсутствие синхронизации состояния), так что вы должны осознанно принимать решение по таким вопросам. Кроме того inline обработчики onclick там явно могут быть заменены на элементарный
    document.querySelectorAll('.menu a, .menu-hover a').addEventListener()
    что явно сделает код более простым и поддерживаемым.

    Ещё один важный момент который зачастую опускают при вёрстке - поведение макета с реальными данными. То что дизайнер в макете понапихал везде lorem ipsum и тексты примерно одинакового размера - отнюдь не означает что на реальном сайте эти условия будут соблюдаться. Отсутствие навыка проверять поведение макета в изменяющихся условиях ведёт к множеству ошибок которые не видны в условиях синтетических данных. К примеру попробуйте в блоке "We Do Best Than You Wish" (претензии по поводу английского языка оставим в стороне) в любом из элементов банально увеличить количество текста в 2-3 раза. В Chrome это приводит только к излому сетки, в Firefox - ещё и к изменению размера иконки. При этом я предполагаю что Firefox ведёт себя правильно т.к. пропорции элементов изменились, а ограничения размеров на картинки у вас не заданы.

    В целом похоже что макет верстался и проверялся только в Chrome. К примеру посмотрите как ведёт себя картинка с рукой и телефоном в Firefox при изменении размеров. Опять же Firefox вполне корректен т.к. вы не обрезали картинку корректно, предпочитая выгрузить "как есть" и подгонять положение в CSS, но забыв при этом про overflow: hidden для контейнера.

    Теперь перейдём к CSS:

    Обратите внимание на то как вы подключаете внешний шрифт:
    family=Lato:400,700,700i,900,900i&amp;subset=latin-ext
    . Возникают два вопроса:
    1. Зачем вам subset=latin-ext на сайте где есть только базовая латиница?
    2. Как вы выбирали начертания? У вас подключаются 5 начертаний (400, 700, 900 + два italic'а), при этом grep по CSS даёт значения font-weight 200, 300, 400, 500, 600, 800 и ни одного italic. Вам не кажется что эти множества почти не пересекаются?


    Кроме того вы постоянно забываете про fallback шрифты что на медленном интернете и при отсутствии инструкций для font loading приводит к невидимому контенту страницы на период загрузки.

    Отсутсвие ограничения по ширине для .wrapper приведёт к недопустимо широкому сайту на больших мониторах с высоким разрешением. Можете уменьшить масштаб страницы до 50% и полюбоваться результатом.

    В стилях повсеместно используются достаточно общие названия классов в global namespace. К примеру кто бы мог подумать что стилизует селектор .text? Вы уверены что нигде больше на сайте подобный селектор не встретится? Даже при дальнейшем развитии сайта? Другими словами именование селекторов - важная часть работы, вы можете использовать любую методологию (тот же БЭМ или что-то ещё) или разработать свою, но ваш код не должен ломаться при добавлении ещё пары блоков, особенно если это будет делать другой человек.

    Списки элементов, к примеру тот же .product-cont лучше делать именно списками, а не распихивать элементы по столбцам вручную, благо flexbox и column layout здесь всё прекрасно сделают за вас, зато имея одноранговый список вы обеспечите себе куда большую свободу действий.

    Использование id в качестве CSS селектора - плохая практика, но у вас таких мест немало, 11 штук.

    Уверен что мог бы найти ещё что-то, но надеюсь для затравки хватит, и так много получилось... :)
    Ответ написан
    4 комментария
  • Какой пакет "моделей" для VueJS выбрать?

    @Spunreal
    Работаю с vuex-orm
    Пока серьёзных проблем не замечаю.
    Ответ написан
    Комментировать
  • Laravel+Vue: Авторизация, регистрация - как сделать?

    Laravel (JWT):
    Установка и настройка пакета jwt-auth прекрасно описан. Что насчет контроллера - CTRL + C и CTRL + V. Также не забудьте про CORS.

    Vue:
    Ходить далеко тоже не нужно. Есть прекрасный пакет vue-auth, который сам сохраняет токен в localStorage, вытаскивает и вставляет в заголовок при запросах. Интегрируется это добро за 5 мин.
    И собственно отображение только авторизованным пользователям:
    <span v-if="$auth.check()">текст для авторизованного</span>


    Подсказка, если будете работать с этими пакетами:
    Vue-auth выдергивает токен из заголовка, а не из тела ответа. А в документации jwt-auth в контроллере токен вставляется в тело ответа. Нужна небольшая модификация контроллера:
    protected function respondWithToken($token)
        {
            return response()->json([
                'status' => 'success',
            ])->header('Authorization', $token);
        }
    Ответ написан
    1 комментарий
  • В чем смысл bootstrap'a и его аналогов?

    tema_sun
    @tema_sun
    Быстрое прототипирование.
    Ответ написан
    Комментировать
  • Как выбрать ближайший день?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    библиотека Carbon https://github.com/briannesbitt/Carbon

    и воспользуйтесь функциями startOfWeek и diffInDays
    Ответ написан
    Комментировать
  • Как преобразовать такую строку в массив?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вот и выросло поколение, которое не знает про волшебный функционал PHP serialize() / unserialize()...
    Ну, это даже и к лучшему.

    А вот то что пассажир решил таки идти напролом и делать не по-людски, а хранить на сайте миллион файлов в сессиями - это, конечно, печально.
    Ответ написан
    6 комментариев
  • Как преобразовать коллекцию(или массив) Laravel в XML?

    boyarskiy_mihail
    @boyarskiy_mihail
    Ответ написан
    Комментировать