• Почему в Rust использую Tokio?

    @D3lphi
    Потому что она реализует то, чего нет в стандартной библиотеке - асинхронный рантайм. Если писать сетевое приложение без токио, то придется плодить по отдельному потоку на каждый сетевой коннекшен. (на самом деле, речь идет про любой i/o, к которому чтение/запись файлов тоже относится) Каждый из этих потоков большую часть времени будет заблокирован в ожидании завершения сететвого вызова (передачи или приема данных). Однако, операционная система при разблокировке этих тредов будет постоянно переключать контекст для каждого потока и тратить процессорное время.
    Асинхронный подход позволяет обойтись лишь сравнительно небольшим пулом потоков, на которые токио рантайм будет распределять таски (грин треды) и, таким образом, экономить процессорное время.
    Ответ написан
    9 комментариев
  • CentOS все еще актуален?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Потому что у работодателя именно CentOS и используется. Не?
    Ответ написан
    Комментировать
  • CentOS все еще актуален?

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

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    При выводе названий файлов (команды типа state, ls-files, diff и т. п.) символы с кодом больше 0x80 Git заменяет восьмеричными кодами (например, \320\272 для символа «к»).

    Начиная с версии 1.5.3 это поведение можно изменить с помощью конфигурационного параметра core.quotepath (принимает значения true/false или on/off).

    Для отключения такого поведения выполните:
    git config --global core.quotepath false

    Источник
    Ответ написан
    Комментировать
  • Какую версию Node.js учить?

    ulkoart
    @ulkoart
    Любую.
    Ответ написан
    Комментировать
  • 3х канальный DC-DC, напряжения не поднимаются. Где я допустил ошибку?

    @AiR_WiZArD Автор вопроса
    Вопрос закрыт. В попытках переделки обратил внимание на черный конденсатор, решил проверить его. Оказалось там был запаян 22pF, вместо положенного 1nF, после замены схема запустилась.
    Ответ написан
    2 комментария
  • Нормально ли на стороне клиента сортировать большие массивы?

    NeiroNx
    @NeiroNx
    Программист
    Нормально - ты же не Monero майнишь, а время cpu хостинга не резиновое.
    Ответ написан
    Комментировать
  • Картинки и vue.js?

    @ber_enot
    Веб-разработчик, Vue.js / Node.js
    <img :src="item.photo" />

    Require не нужен. Работайте с адресом картинки как с обычной строкой.
    Ответ написан
    3 комментария
  • Что происходит при запуске сервера nodejs?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Открываете исходный код файла server.js и читаете его — там все подробно написано. Определения неизвестных функций читаете в мануале или их исходном коде.
    Ответ написан
    Комментировать
  • Какой дистрибутив Linux выбрать для хостинга Apache + PHP сайтов?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Какая разница: Apache или Nginx, если проблема на уровне ядра ОС?


    Если вам кажется, что проблема на уровне ядра ОС, то во всех дистрибутивах линуксах - ядро линукса.
    Нет смысла менять дистрибутив, разбирайтесь с вашей проблемой на текущем дистрибутиве.
    Ответ написан
    Комментировать
  • Какую взять ORM для своего проекта?

    @D3lphi
    Возьмем ORM из двух популярных PHP-фреймворков. Первая будет Eloquent ("Родная" для фреймворка Laravel), а вторая - Doctrine (Одна из доступных ORM в фреймворке Symfony). Кардинальным отличием этих двух "систем" является то, что первая разработана на основе паттерна Active Record, а вторая - с использованием паттерна Data mapper. Чем же они отличаются? Приведу абстрактные примеры кода для первого и второго паттерна:

    Active Record:
    $user = new User(); // Создаем "сущность" нового пользователя.
    $user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
    $user->password = '123456'; // Устанавливаем пароль этому пользователю.
    $user->save(); // Сохраняем пользователя.


    Все, новый пользователь создан и находится в базе данных. Теперь, Data mapper:
    $user = new User();
    $user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
    $user->password = '123456'; // Устанавливаем пароль этому пользователю.
    
    $manager = ... // получаем объект менеджера (Например, из DI контейнера).
    $manager->persist($user); // "Скармливаем" новоиспеченного пользователя нашему менеджеру.
    // $manager->persis($user1); // Мы можем создать еще одного пользователя и уведомить менеджер об этом.
    // $manager->persis($user2); // И еще одного...
    $manager->flush(); // После выполнения этого метода данные отправятся в базу данных.


    Очевидно, первый способ куда проще. Но не все так просто. Дело в том, что паттерн Active Record нарушает принцип единственной ответственности (Single responsibility SOLID). И поэтому, в какой-то степени, может считаться антипаттерном. (Но это ни в коем случае не значит, что его не нужно использовать, для большинства проектов "хватит" за глаза). Наша сущность пользователя делает слишком много. Она не только представляет данные, но и еще работает с ними. В больших проектах это может усложнить поддержку кода. Data mapper, напротив же, разделяет представление данных в сущность (user) и работу с данными (manager, в данном примере. Также, за работу с данными отвечает репозиторий. Вы столкнетесь с ним, как только вам потребуется получить данные из БД (Doctrine)). В небольших проектах вы не заметите особой разницы. Разве что во втором случае увеличится количество классов. Так, в Eloquent вы создаете 1 модель, а в Doctrine - сущность и репозиторий.

    Все современные ORM включают в себя также, так называемые, query builder'ы. Они помогают отказаться от языка запросов, такого как SQL. Вы будете составлять запросы таким образом:
    $result = $qb
          ->select(['id', 'login'])
          ->where('id', '<>', 3)
          ->get();


    Собственно, query builder'ы помогают абстрагироваться от конкретной СУБД. То бишь, вы написали запрос 1 раз, а затем от того, какую СУБД вы используете будет зависеть выходной sql код. Генерация этого кода будет произведена абсолютно прозрачно для вас.

    Обе ORM имеют работать с отношениями. Вам нужно будет указать, как таблицы относятся друг к другу, а затем вы сможете удобно обращаться к связанным сущностям.

    Теперь конкретно. Так как вы только начинаете осваивать ORM, я бы порекомендовал начать с Eloquent. Она гораздо проще, чем Doctrine, да и более производительная, к тому же. Как освоите Eloquent, смело учитесь работать с Doctrine. Она обязательно должна быть "в копилке" ваших скиллов, так как является самой мощной в "мире" PHP.

    Успехов!
    Ответ написан
    2 комментария
  • Как создать такую тень с помощью CSS?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Используем псевдоэлемент с градиентной заливкой и трансформацией.
    Ответ написан
    Комментировать
  • Возможно ли в DNS перенаправлять на разные серверы в зависимости от порта?

    @wrench10x12
    DNS ничего не знает о портах. Точнее, в теории, есть SRV-record, но она совсем не для того, и на практике не применяется и ничем не поддерживается.

    В данном случае нужно поднимать NAT
    Ответ написан
  • Как правильно вывести данные из MySQL, сгруппировав по дате?

    ... orderby date

    $lastDate = null;
    foreach ($posts as $post) {
        if ( $post->date !== $lastDate ) {
            echo $post->date;
            $lastDate = $post->date;
        }
        // остальной вывод данных
    }
    Ответ написан
    9 комментариев
  • Нужна ли статья от нуба по программированию в kernel space?

    Kolyagrozamorey
    @Kolyagrozamorey
    инженер-электроник службы ИТ ХАЕС
    Да, мне бы интересно было бы почитать
    Ответ написан
    Комментировать
  • Где взять редакторы чехлов на телефоны для сайта?

    baskerville42
    @baskerville42
    Учусь работать (Junior)
    Готовые Вы врядли найдете редакторы, но инструмент для их создания найти Вы можете. Зовётся он языком програмирования. Садитесь, учитесь и пишите свой. Если писать не охота или учить, то на помощь всегда прийдут програмисты-фрилансеры которые за деньги выучат и уж тем более напишут любую ерунду, лишь бы не обманули на счёт оплаты.
    Ответ написан
    Комментировать
  • Как правильно хранить эти данные или как правильно их обрабатывать при запросе?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Создайте отдельную таблицу, в которой будут ваши фильтры храниться и таблицу связи между продуктами и фильтрами. В таком случае можно будет легко выбирать похожие товары.
    product <-> product_to_specification <-> specification
    При необходимости можно будет классифицировать признаки спецификаций, показывать продукты имеющие теже спецификации или наиболее похожие по параметрам.
    Если же потребуется полнотекстовый поиск, то сразу смотрите в сторону sphinx.
    Ответ написан
    Комментировать
  • Как javascript'ом отловить нажатие up,down в firefox?

    SolidlSnake
    @SolidlSnake
    Ваш дружелюбный сосед
    Прошу.
    Код стрелок:
    Левая = 37
    Верхняя = 38
    Правая = 39
    Нижняя = 40
    Ответ написан
    1 комментарий
  • Как реализовать выполнение функции раз в день?

    @vdem
    Через крон таки проще всего.
    Ответ написан
    Комментировать