• Как сделать 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
    Looking for a job offer
    Суть вопроса в том, что заново проданный номер уже не Ваш. Претензий к оператору быть не может.
    Получается остаются правоотношения Вас и информационных сервисов. Если Вы не уведомили сервис о смене способа контакта с Вами (телефонного номера), то это Ваша проблема.
    Ответ написан
    1 комментарий
  • Как восстановить удалённые из корзины файлы?

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

    VoidVolker
    @VoidVolker
    Разработчик ПО и IT-инженер
    Если надо, чтобы все работало из коробки - то ставьте 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 с применением клиентского хука.
    Ответ написан
    Комментировать
  • Стойкость ключа?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Вот хороший и свежий список крипты для тех, кому хочется не думать про стойкости и другие заморочки.
    Там рекомендуют ed25519.
    Ответ написан
    Комментировать
  • Почему верстка отличается от figma?

    userAlexander
    @userAlexander
    Верстка наше все)
    Не следует копировать все стили из Figma, обращайте внимание только на актуальный css.
    Ответ написан
    5 комментариев
  • Есть ли смысл сейчас использовать bower в проекте? Или он уже окончательно устарел?

    While Bower is maintained, we recommend yarn and webpack for new front-end projects!
    https://bower.io/

    С одной стороны, разработчики сами рекомендуют от него отказаться. С другой - если команде удобно, то зачем заставлять?
    Опять же, npm в проекте в любом случае будет, а переехать на него с bower совсем не сложно. Зато минус одна лишняя зависимость.
    Ответ написан
    Комментировать
  • Что значит zero pixel в верстке?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ответ написан
    Комментировать