• Лучше выбрать Symfony или Laravel для новичка и виртуального хостинга?

    Sanes
    @Sanes
    Laravel проще. И материалов в сети больше. Очевидно же.
    Ответ написан
    Комментировать
  • Не могу вывести переменные из объекта php?

    @Vitsliputsli
    options это массив из 2х объектов, а уже у этих объектов есть свойство value.
    Ответ написан
    Комментировать
  • Что думаете о Livewire и Inertia.js?

    Insolita
    @Insolita
    Отчаянная домохозяйка
    Про inertia почти ничего не скажу. Про livewire - Для mvp, низкобюджетных стартапов, инди-проектов, того что по умолчанию для ограниченной аудитории и не должно быть слишком нагруженным, админок каких-то... вполне себе вариант.
    Для более серьёзных вещей и с расчетом на перспективу - я бы оставалась на проверенных технологиях.
    Из подводных камней - с технологической стороны - дикое смешение ответственностей. С практической - каждый чих изменения в интерфейсе - та же кнопочка счетчика, смена таба, или еще чего, реализованного без православных скриптов - это запросы на сервер. И еще - серьёзный локинг на этих технологиях, их апдейтах.
    А конкретно tailwind мне таки зашёл, если его с умом готовить и выносить наборы в scss. В компании с purgecss на выходе можно получить очень лёгкий css файлик. Но он обязательно в компании с компонентами - блейд, или js -фреймворков (И это, разумеется с позиции бекендера. Если на проекте есть заведующий фронтом - то ему и править балом).
    В любом случае я бы посоветовала не полагаться только на мнение других, а покрутить и пощупать всё самому. Как минимум - они на хайпе, и значит есть вероятность что все равно с ними столкнётесь рано или поздно
    Ответ написан
    Комментировать
  • В чём понт SAS?

    alexzeynikov
    @alexzeynikov
    Ох, сигейта нет на вас ;). Я видел отличную презентацию про отличия SAS и SATA у Игоря Макарова из Seagate. По стараюсь кратко и по существу.

    Ответов несколько и с разных сторон.
    1. С точки зрения протоколов, SAS — это протокол, направленный на максимальную гибкость, надежность, функциональность. Я бы сравнил SAS с технологией ECC для памяти. SAS — это с ECC, SATA — без. Примером могут служить следующие уникальные фичи (по сравнению с SATA).
    — 2 полнодуплексных порта на устройствах SAS в отличие от одного полудуплексного у SATA. Это дает возможность строить отказоустойчивые много дисковые топологии в системах хранения данных.
    — end-to-end data protection T.10. — набор алгоритмов SAS, позволяющий с помощью чексумм быть уверенным в том, что данные, подготовленные на запись без искажений записаны на устройство. И прочитаны и переданы на хост без ошибок. Эта уникальная функция позволяет избавиться от так называемых silent errors, то есть когда на диск пишутся ошибочные данные, но никто об этом не знает. Ошибки могут появиться на любом уровне. Чаще всего в буферах в оперативной памяти при приеме-передаче. Silent errors — бич SATA. Некоторые компании утверждают что на диске SATA объемом боле 500 ГБ вероятность повреждения данных хотя бы в одном секторе близка к единице.
    — про мультипасинг говорили в предыдущих ответах.
    — зонинг T.10 — позволяет разбить домен SAS на зоны (типа VLAN, если такая аналогия ближе).
    — и многое-многое другое. Я привел только самые общеизвестные фичи. Кому интересно — читайте спецификации SAS/SATA

    2. Не все SAS диски одинаковы. Есть несколько категорий SAS и SATA.
    — т.н. Enterprise SAS — обычно 10K или 15K оборотов в минуту. Объемы до 1 ТБ. Используются для СУБД и критичных к скорости приложений.
    — Nearline SAS — обычно 7.2K, объемы от 1 ТБ. Механика таких устройств похожа на Enterprise SATA. Но все равно два порта и другие прелести SAS. Используются в enterprise, где нужны большие объемы.
    — Enterprise SATA, иногда RAID edition SATA — почти то же самое что и NL SAS, только однопортовый SATA. Чуть дешевле NL SAS. Объемы от 1 TB
    — Desktop SATA — то что ставится в PC. Самые дешевые и самые низкокачественные диски.
    Первые три категории можно ставить в массивы на контроллерах от LSI и Adaptec. Последний — нельзя категорически. Проблем не оберетесь потом. И не потому, что у нас картельный сговор, а потому, что диски проектируются под разные задачи. То есть 8x5 или 24x7, например. Есть также такое понятие как максимальная допустимая задержка, после которой контроллер считает диск умершим. Для десктопных дисков она в разы больше. Это значит, что под нагрузкой рабочие Desktop SATA будут «вываливаться» из массива.
    Короче, ориентируйтесь на конкретные линейки под конкретные задачи. Лучше всего смотреть на сайтах производителей. Есть например специальные мало шумящие и мало греющиеся винты для домашней электроники.

    Те же подходы и к SSD, но область еще на сформировавшаяся, поэтому много тонкостей. Здесь мы ориентируемся по параметрам. Хотя все, что сказано в п., справедливо и для SSD.
    Ответ написан
    1 комментарий
  • Как сделать PDO + IN?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Самый простой способ, взять ключи массива и по ним потом "прибиндить" данные, что-то типа:
    $inValues = [1, 2, 3, 4];
    	$inKeys = array_map(function($key){return ':var_'.$key;}, array_keys($inValues));
    	
    	$sql = 'SELECT * FROM `table` WHERE `field` IN ('.implode(',', $inKeys).')';
    	
    	echo $sql;
    	
    	$db = new PDO(...);
    	$stmt = $db->prepare($sql);
    	
    	foreach($inValues as $key=>$val) {
    		$stmt->bindParam(':var_'.$key, $val);
    	}


    с execute аналогично:

    <?php
    
    	$inValues = [1,2,3,4];
    	
    	$preparedInValues = array_combine(
    		array_map(function($key) {
    		   return ':var_'.$key;
    		}, array_keys($inValues)),
    		array_values($inValues)
    	);
    			
    	$sql = 'SELECT * FROM `table` WHERE `field` IN ('.implode(',', array_keys($preparedInValues)).')';
    
    	echo $sql;
    
    	$db = new PDO(...);
    	$stmt = $db->prepare($sql);
    	$stmt->execute($preparedInValues);
    Ответ написан
    5 комментариев
  • Загрузка кода в память на разных языках программирования?

    @remzalp
    Программер чего попало на чем попало
    Для компилируемых языков:
    1. Бывают оверлейные структуры, которые подгружаются по потребности в память, но это тех времён, когда DOS был
    2. Бывают плагины, которые лежат в dll и не обязательно загружаются при запуске программы

    Для интерпретируемых - вроде бы логично, что загрузили в память и поинтерпретировали.
    Ответ написан
    Комментировать
  • Загрузка кода в память на разных языках программирования?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Самые примитивные интерпретаторы, например bash, считывают файл скрипта с диска построчно и одновременно выполняют каждую считанную строку. Обычные интерпретаторы читают файл, анализируют код, строят AST и уже его выполняют. Современные продвинутые интерпретаторы (такие как PHP, CPython и Javascript V8) после построения AST компилируют его в байткод и выполняют уже байткод. Чаще всего у интерпретируемых языков этот байткод остаётся только в памяти и не сохраняется на диск. В отличии от них, в Java и C# этапы анализа кода и компиляции его в байткод отделены от этапа выполнения байткода. Скомпилированный код сохраняется в файлах и после выполняется виртуальной машиной. Компилируемые языки (C, C++ и прочие) компилируют AST не в байткод, а сразу в машинные инструкции. Впрочем, и они в последнее время всё чаще используют LLVM.
    Ответ написан
    Комментировать
  • Почему бот не получает сообщения с группы?

    vanesxl
    @vanesxl Автор вопроса
    В общем вот что нужно сделать:
    1 Добавляем себе бота botfather
    2 создаем бота, как его создать можно почитать тут
    3 далее настраиваем 2 параметра
    /setjoingroups — Определяет, можно ли добавлять вашего бота в группы.
    /setprivacy — Определяет, все ли сообщения видит ваш бот в группах. В выключенном состоянии роботу будут отправляться все сообщения.

    4 /setprivacy переводим в DISABLED, по умолчанию оно ENABLED
    В общем то и все)
    Ответ написан
    1 комментарий
  • Как сделать цикл функции в PHP?

    @rPman
    Правильная реализация - отдельный независимый демон (сервер) обслуживающий websocket (есть как модуль к веб серверу так и отдельные приложения, ка я понял модули не взлетели, т.е. кто то где то использует но массово нет), этот же демон анализирует базу данных или какие то другие локальные для сервера вещи и передает данные на клиент.

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

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

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

    К сожалению недостаток напрямую вытекает из этого свойства - масштабировать такое приложение тяжело. Если http rest масштабируется чуть ли не из коробки, даже почти не затрагивая приложение только со стороны администрирования продукта (накидываешь серверов, реплики базы, кеши и т.п.) то тут придется сильно менять приложение и подгонять его к работе в кластере.

    Единственное скажу что 'эти проблемы' у подхода начинаются с десятков и сотен тысяч пользователей.
    Ответ написан
    2 комментария
  • Как сделать так, чтобы часть запроса (одно из условий) выполнялась всегда larave eloquent?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Ничего не понятно из вопроса, но, возможно, речь идёт о andWhere и orWhere
    $user = User::where('role_id', 3)
      ->andWhere(function($query) {
        $query
          ->where('phone', 'like', "%{$search}%")
          ->orWhere('email', 'like', "%{$search}%");
      })
      ->paginate(25);
    Ответ написан
  • Может ли новый абонент, купивший мой старый номер телефона, войти в мои мессенджеры?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Суть вопроса в том, что заново проданный номер уже не Ваш. Претензий к оператору быть не может.
    Получается остаются правоотношения Вас и информационных сервисов. Если Вы не уведомили сервис о смене способа контакта с Вами (телефонного номера), то это Ваша проблема.
    Ответ написан
    1 комментарий
  • Как восстановить удалённые из корзины файлы?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Только если ничего не успели записать поверх стёртого.
    Берёте прогу R.Saver или аналогичную, и вперёд. Устанавливать (и тем более, покупать) её не надо, достаточно перезапуститься с любого популярного ремонтно-восстановительного LiveDVD или LiveUSB.
    Ответ написан
    Комментировать
  • Какой linux поставить на современный ноутбук?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Если надо, чтобы все работало из коробки - то ставьте Windows. С линуксом на ноутбуке, в зависимости от производителя, можно получить как немножко, так и очень-очень много секаса по настройке того или иного оборудования, установке драйверов и прочего. Вероятно придется попробовать разные дистрибутивы - начать можно с проверки с помощью live-usb. Я бы порекомендовал Debain + xfce как наиболее стабильную и наименее проблемную ОС. А с линуксом в терминал придется лезть в любом случае, если хотите его использовать в повседневной жизни.
    Ответ написан
    2 комментария
  • Какой linux поставить на современный ноутбук?

    Anatolios
    @Anatolios
    Новичок в IT. Инженер технической поддержки
    Ответ написан
    Комментировать
  • Какой linux поставить на современный ноутбук?

    @Drno
    linux mint
    Ответ написан
    Комментировать
  • Какой курс по blender выбрать?

    @NIKROTOS
    Начинающий программист.
    Мне больше всего зашёл этот курс(https://cloudlessons.ru/v/415/), по сравнению со всеми курсами, которые мне попадались, в этом наиболее полное описание функций и методов.
    Ответ написан
    Комментировать
  • Как отправить вывод терминала в телеграм?

    @Redeve
    Веб-макаке не хватит и 640гБ
    https://github.com/fabianonline/telegram.sh
    Требует только bash & curl
    Ответ написан
    Комментировать
  • Как лучше проверять строку на пустоту в php?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Недостатки исходных вариантов проверки:
    $str = "0";  // непустая строка, содержащая цифру ноль
    if (!$str) echo "bool false\n"; // сработает
    if (empty($str)) echo "is empty\n"; // сработает
    
    $str = null; // не строка
    if ($str == "") echo "equals empty str\n"; // сработает
    if (strlen($str) === 0) echo "zero length str\n"; // сработает


    Поэтому лучший вариант, как и предложил Rsa97, проверять строгое равенство === с пустой строкой.
    Ответ написан
    Комментировать
  • Как лучше проверять строку на пустоту в php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    if ($str === '')
    Ответ написан
    Комментировать
  • Как исправить некорректное отображение кодировки CP1251 в GitHub Desktop?

    honor8
    @honor8
    Принципы быстродействия VBA в описании
    Удалённый репозиторий по умолчанию содержит файлы в кодировке UTF-8.
    1. Для git 2.18+ настраивается в .gitattributes (на локальном ПК будет необходимая кодировка)
      *.* working-tree-encoding=cp1251 eol=crlf
    2. Для git более старых версий только UTF-8 с применением клиентского хука.
    Ответ написан
    1 комментарий