• Как организовано хранение статей сайта в бд?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Мыслите правильно!
    Однозначно, весь текст статьи/публикации/материала нужно разбивать на модули:
    1. Заголовки статьи: все уровни ("дерево" заголовков или, проще говоря, содержание)
    2. Теги (1..N)
    3. Параграф (1..N)
    4. Изображение (1...N)
    5. Видео (1..N)
    6. Исходный код (1..N)
    7. Спойлер (1..N)
    8. Внутренний iframe (1..N)
    9. Внешний виджет: ролик youtube, codepen.io, jsfiddle.com и т.д. (1...N)
    10. Комментарии (1..N)
    11. Линки (1..N)
    и т.д.

    И саму структуру статьи ("древовидный каракас"): где и что должно располагаться, что и куда должно быть вложено, и в каком порядке следовать друг за другом (разметка вместе с ID-шниками ресурсов).

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

    И про правильное хранение текстовых данных (сегментацию): здесь
    Ответ написан
    7 комментариев
  • Как правильно тестировать api?

    В данном случае я обычно использую тестовую sqlite in memory базу, в phpunit.xml добавив:

    <env name="DB_CONNECTION" value="sqlite"/>
    <env name="DB_DATABASE" value=":memory:"/>


    После в тесте всегда сбрасывать и накатывать данные в БД при каждом запуске:

    use RefreshDatabase;

    Дальше используя фабрики создаем записи в тестовой БД. Как пример:

    $task = factory(\App\Task::class)->create([
         'archive' => false
    ]);


    Отправляем запрос на наш URL (у Вас это будет /api/post). Опять таки для примера:

    $response = $this->get('/current_tasks');

    И в результате проверяем нужные данные, например, что ответ от сервера пришел со статусом 200 и что результатом должен быть ответ в формате JSON и именно те данные, которые мы ранее поместили в тестовую БД:

    $response->assertStatus(200)
              ->assertJson([$task->toArray()]);


    Здесь подробнее посмотрите про все ассерты: https://laravel.com/docs/5.6/http-tests
    Ответ написан
    5 комментариев
  • Как сделать перераспределние дочерних элементов если удален родитель?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Подписаться на событие deleting/deleted модели и выполнить распределение дочерних элементов между другими элементами.
    Ответ написан
    3 комментария
  • Почему не вносятся правки в файлы в папке Vendor?

    Nikolino
    @Nikolino Автор вопроса
    Разобрался, нужно было сделать

    php artisan vendor:publish --tag=ckeditor --force
    Ответ написан
    Комментировать
  • Взаимодействие между компонентами?

    0xD34F
    @0xD34F Куратор тега Vue.js
    По сути у меня два компонента получилось upload-files и edit-file . И надо теперь наладить между ними взаимодействие.

    налаживайте
    Ответ написан
    Комментировать
  • Хорошая ли это практика использовать vue и jquery вместе?

    dima9595
    @dima9595
    Junior PHP
    Как то думал о подобной проблеме. На мой взгляд ни чего такого в этом нет. Сейчас же, даже с мобилок, интернет стал таким быстром, что грузится быстро. Если вам нужен jQuery только для админки, то и париться по этой проблеме не стоит.
    Да даже если и jQuery подключается для сайта, то тоже не серьёзно. У меня сайт на Laravel + громоздкий CSS фреймворк, jQuery + 2 плагина для анимации = не больше 3 секунд загрузки сайта с мобилки.
    А если ещё сделать такую схемку (или лучше, если сможете, то прирост производительности сайта будет лучше):
    1. Apache (backend)
    2. NGINX (frontend) + SSL + HTTP/2
    + memcache и ещё какой-то, не помню точно.
    Ответ написан
    Комментировать
  • Хорошая ли это практика использовать vue и jquery вместе?

    nikichv
    @nikichv
    Frontend dev. Current stack: Next.js/RTK/Saga
    Нормальная.
    Очень много ситуаций, когда нужный тебе плагин тянет зависимостью jQuery, а аналога по функциональности на vue нет. Собственно, это и приписывают главным минусом vue, что очень мало вменяемых плагинов (всякие карусели, кастомные скроллы и прочее), и поэтому стиснув зубы и помолившись, приходится тащить за собой jQuery.
    Поэтому, если админка требует jQuery, то тащи ее в проект, вариантов немного как таковых (или даже и вовсе нет).
    Ответ написан
    2 комментария
  • Как добавить новый текстовый инпут, по заполнении предыдущего?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Так:

    <div id="inputs">
      <input maxlength="5">
    </div>

    const $inputs = $('#inputs').on('input', 'input', function() {
      const $this = $(this);
      const maxlen = +$this.attr('maxlength');
    
      if ($this.val().length === maxlen) {
        let $next = $this.next();
        if (!$next.length) {
          $next = $(`<input maxlength="${maxlen}">`).appendTo($inputs);
        }
    
        $next.focus();
      }
    });
    
    // или
    
    document.querySelector('#inputs').addEventListener('input', function(e) {
      const input = e.target;
      const maxlen = +input.getAttribute('maxlength');
    
      if (input.value.length === maxlen) {
        if (!input.nextElementSibling) {
          this.insertAdjacentHTML('beforeend', `<input maxlength="${maxlen}">`);
        }
    
        input.nextElementSibling.focus();
      }
    });

    ??
    Ответ написан
    1 комментарий
  • Как сделать такой эффект?

    one_day
    @one_day
    Ответ написан
    Комментировать
  • Как правильнее сделать перевод русский букв в латиницу?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    String.prototype.translit = String.prototype.translit || function () {
    		var Chars = {
    			'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'y', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'shch', 'ъ': '', 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya', 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'YO', 'Ж': 'ZH', 'З': 'Z', 'И': 'I', 'Й': 'Y', 'К': 'K', 'Л': 'L', 'М': 'M', 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', 'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'CH', 'Ш': 'SH', 'Щ': 'SHCH', 'Ъ': '', 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'YU', 'Я': 'YA'
    		},
    			t = this;
    		for (var i in Chars) { t = t.replace(new RegExp(i, 'g'), Chars[i]); }
    		return t;
    	};
    
    console.log("транслитирировать строку".translit() );
    Ответ написан
    Комментировать
  • Хорошая ли практика хранить меню в файле?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Обычно, файлики (даже json), это та часть, которая относится к движку, а не к конкретным пользовательским данным, а меню в общем-то относится больше к контексту.

    Поэтому в целях удобства доступа, целостности, удобнее весь контекст хранить отдельно, движок сайта отдельно, что позволяет легко проводить апгрейд, бекапы и так далее.
    Кеш есть и в бд..
    Ответ написан
    4 комментария
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    Я бы не назвал ваш уровень Junior. Если вы в состоянии самостоятельно
    - развернуть девелоп-среду
    - вести гит
    - писать код и обкладывать его тестами
    - настроить деплой

    то значит, в состоянии самостоятельно ставить себе задачи. А это уже на Миддла тянет )
    А у Миддла способ развиваться только один - практика. Самообучаемость, как видно, присутствует. Не зацикливайтесь на парадигмах, фреймворках и ЯП - берите проекты и выполняйте их
    Ответ написан
    1 комментарий
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    По Юнит-тестам крутейшее видео (7 часов :) https://www.youtube.com/watch?v=gRmEpUYaS20&list=P...

    от себя добавлю -- нужно знание фреймворка, сам недавно устроился, тестовые почти все дают такого плана -- сделай простейший REST API. Ну и резюме хорошее, много писем и звонков, как писали выше, на Джуна и с меньшими навыками устраиваются. Да, тесты от джунов не всегда требуют, тк в компаниях не всегда их пишут :)
    Ответ написан
    4 комментария
  • Как добавить много информации в БД через updateOrCreate в laravel?

    amelihovv
    @amelihovv
    Фулстек веб разработчик
    С помощью Model::updateOrCreate() вы можете работать только с одной записью. Для добавления сразу 1000 записей вам нужно использовать метод Model::insert(). В него можно передать сразу массив записей. Только учтите, что поля created_at и updated_at вам нужно будет вручную заполнять.

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

    Если у вас в таблице есть уникальный индекс по какому-нибудь полю, то можете воспользоваться insert on duplicate key. Вот готовый пакет https://github.com/melihovv/insert-on-duplicate-key (поддержка только mysql и sqlite).
    Ответ написан
    Комментировать
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    Decadal
    @Decadal
    чтобы тянуть на джуна, нужно вовремя закрывать задачки. Работа джуна - просто закрывай задачки которые тебе выдают. Поэтому списки технологий и все эти стеки - одна большая условность, фильтр для вакансии. Ну что значит "знать jquery"? или "знать ajax"? Работайте и запоминайте, где что и для чего используется, а если попросят экзотику - вы её, что поделать, выучите.
    В конечном счёте, всё упирается во время и компанию, на которую собираетесь работать. Для джуна в известной крупной компании нужно действительно хорошо натаскаться в тех стеках, которые они перечислили (не факт что они пересекаются с перечисленными здесь, так что нет смысла заучивать всё подряд),
    для джуна в какой-нибудь компании может не понадобиться вообще ничего кроме базовых знаний, а всё остальное вы приобретёте на ходу.
    Ответ написан
    Комментировать
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. Что нужно знать обязательно еще джуну по PHP?
    Уметь гуглить вакансии, звонить в компании, отправлять резюме и ходить на собеседование. Именно это, а не что-либо другое, дает реальный шанс трудоустройства.

    Это главное.

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

    3. Что можно почитать по юнит-тестам т.к. с ними не работал и пока не имею предствления?
    Документацию и примеры кода.

    4. Страшно ли, что работал все время в phpmyadmin, а не в консоле?:)
    Плохо, если вы боитесь консоли. Выбирать нужно просто удобный инструмент, но phpmyadmin в энтерпрайзе обычно не пользуют. Если сможете обойтись без него - значит ок.

    5. Нужно ли джуну знать, как настраивать сервер (тонкости) апача?
    Как настраивать - нужно. Тонкости - не обязательно.
    Ответ написан
    4 комментария
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    @Fortop
    Tech/Team lead
    Для джуна уже более чем неплохой стек (при условии, что действительно знаете, а не думаете, что знаете)

    Так что есть смысл расти выше к мидлу.

    • Подтянуть использование ООП (те самые абстрактные классы и интерфейсы).
    • Обязательно Composer, посмотреть некоторые пакеты которые есть на packagist
    • Разобраться в key-value БД, очередях.
    • Познакомиться с патернами.
    • Добрать еще 1-2 фреймворка из разряда Zend/Symfony (но не Yii, Codeigniter, Kohana) и Slim/Zend Expressive
    • Разобраться с REST
    • API
    Ответ написан
    7 комментариев
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    qonand
    @qonand
    Software Engineer
    1. Что нужно знать обязательно еще джуну по PHP?

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

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

    Для этого можно просто погуглить: ссылка раз, ссылка два

    3. Что можно почитать по юнит-тестам т.к. с ними не работал и пока не имею предствления?

    Документацию по phpUnit

    4. Страшно ли, что работал все время в phpmyadmin, а не в консоле?:)

    Не важно с помощью какого средства Вы работали в базе данных, главное что бы у Вас были навыки написания запросов на SQL

    5. Нужно ли джуну знать, как настраивать сервер (тонкости) апача?

    Нет
    Ответ написан
    Комментировать
  • Может кто-то объяснить насчет зависимостей в node_modules?

    fakey0u
    @fakey0u
    (javascript) => ['Node.js', 'React']
    можно написать patch над модулем.

    Каждый модуль в момент require('some-module') попадает в require.cache и далее данный модуль можно пропатчить.
    Например:
    // first.js
    const add = (a,b) => a +b;
    module.exports.add = add
    
    // patched.js
    const MODULENAME = './first';
    const moduleToPatch = require(MODULENAME); // здесь мы кешировали нужный нам модуль
    
    require.cache[require.resolve(MODULETOPATCH)].exports.add = (a,b) => {
     console.log('PATCHED ! ! ! ! ')
     return a + b;
    }
    
    // second.js
    require('./patched');
    const { add } = require('./first');
    
    console.log(add(10, 20)) 
    // PATCHED ! ! ! !
    // 30


    Естественно первым нужно подключать модуль для патча, чтобы он сделал первый require у себя
    Ответ написан
    1 комментарий