Задать вопрос
  • Какой процессор посоветуете?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    Lga1700 мёртвый сокет же. Если хочется на интеле - то лучше на 1851. Ну и 13-14 серии лучше обходить стороной.
    Насчёт процессоров АМД - никаких «нежданичков» там давно нет.
    Ответ написан
    5 комментариев
  • Почему PHP считает int числа после математических операций как float?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Так как в выражении одним из операндов присутствует деление, результатом которого будет число с десятичной частью, естественно все дальнейшие действия будут переводить операнды в совместимый формат - с плавающей запятой. Читать про неявные преобразования в языках со слабой типизацией.
    Ответ написан
    Комментировать
  • Почему не включается компьютер?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Как минимум судя по фото, у вас обе планки памяти рядом во втором канале стоят. Стоит почитать инструкцию по эксплуатации материнской платы.
    В ней даже красным воскликательным знаком выделено про то, что установка важна в определенные слоты.
    Ответ написан
    1 комментарий
  • Откуда на маркетплейсах новые ноутбуки с процами 5-6 летней давности?

    @Drno
    скупают БУ и рефабают..
    либо ноуты не новые а после майнинга, например теже Hasee TX9 на интеле + 3070 )
    Ответ написан
    Комментировать
  • Как добавить русский текст в fpdf?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    У меня иероглифы, там где русские буквы

    Как распознать кракозябры:
    670d4c201254a086434124.png
    Ответ написан
    Комментировать
  • Как добавить русский текст в fpdf?

    Adamos
    @Adamos
    FPDF официально не поддерживает Unicode.
    Выкиньте ее и забудьте, просто используйте mPDF.
    Ответ написан
    9 комментариев
  • Как исключить первую запись в базе данных?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    offset 1 при небольших значениях offset самое адекватное

    PS: mysql_query? перепроверил какой нынче год в календаре
    Ответ написан
    1 комментарий
  • Как объединить запросы в транзакцию?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Поскольку быстрым поиском готовый ответ на Тостере не находится, стоит написать канонический.

    Сначала общая информация:

    Транзакция служит для обеспечения принципа "всё или ничего", гарантируя, что либо все запросы выполнились без ошибок, либо, если в каком-то из запросов произошла ошибка, то все предыдущие будут отменены, как будто их и не было вовсе. Из чего можно сделать следующие выводы:
    • транзакция не нужна для любого количества запросов на выборку данных, поскольку там нечего откатывать
    • транзакция не нужна для одного запроса на изменение данных (вставка, обновление, удаление) - такой запрос представляет из себя мини-транзакцию, которая сама автоматом откатывается при ошибке
    • не следует путать транзакции с блокировками. Хотя при определённых параметрах транзакции могут выполнять и блокировку, в общем случае это два разных механизма, которые могут выполняться как вместе, так и по отдельности. По умолчанию транзакция НЕ обеспечивает блокировку таблиц, участвующих в запросе


    Самым простым вариантом будет заключить запросы между вызовами beginTransaction() и commit(), как показано например в документации к последнему.
    $db->beginTransaction();
    $db->prepare("UPDATE `tab1` SET `col` = ?")->execute($data1);
    $db->prepare("UPDATE `tab2` SET  `col` = ?")->execute($data2);
    $db->prepare("UPDATE `tab3` SET  `col` = ?")->execute($data3);
    $db->commit();

    Для современных версий РНР этого должно быть достаточно: начиная с РНР 8.0 ошибочный запрос по умолчанию выбрасывает исключение. Не пойманное исключение прерывает выполнение РНР скрипта. При прерывании выполнения скрипта РНР закрывает соединение с Mysql, а при закрытии соединения Mysql откатывает все открытые в нём транзакции.

    Соответственно, при ошибке в любом из запросов транзакция автоматически откатится. А при успешном выполнении всех запросов транзакция, соответственно, закоммитится.

    В редких случаях, когда после отката транзакции предполагается дальнейшее выполнение кода, можно заключить код транзакции в try-catch и откатить её вручную.

    Важно помнить некоторые особенности.
    • в mysql не все движки таблиц поддерживают транзакции. впрочем ,учитывая что innodb является движком по умолчанию уже лет 20, это вряд ли будет проблемой
    • запросы на изменение страктуры таблиц автоматически коммитят стартовавшую транзакцию, то есть их следует избегать. Кажется, в новых версиях какие-то уже не коммитят, но я предпочитаю избегать всё равно.


    Также желательно помнить, что в любом более-менее сложном коде очень быстро появляются вложенные транзакции, а PDO при попытке стартовать транзакцию при уже открытой, выбросит исключение, что, соответственно, приведёт к откату родительской (и это гораздо лучше поведения MySQL по умолчанию, которая автоматически коммитит старую). И имеет смысл накидать простой кодик, который считает вложенные транзакции, и не стартует, если уже был старт, а при коммите вычитает вложенность, а реально коммитит только если вложенности не осталось. Что-то вроде кода из комментариев к beginTransaction(), подравняв его напильником
    class \MyPDO extends \PDO
    {
        protected $transactionCounter = 0;
    
        public function beginTransaction()
        {
            if($this->transactionCounter++ === 0) {
                return parent::beginTransaction();
            }
        }
        public function commit()
        {
            $this->transactionCounter--;
            if($this->transactionCounter === 0) {
                return parent::commit();
            }
        }
        public function rollback()
        {
            $this->transactionCounter = 0;
            return parent::rollback();
        }
    }

    разместив его либо прямо в PDO, либо в своем враппере.
    Ответ написан
    3 комментария
  • БД для дискорд-бота?

    @Everything_is_bad
    А что именно ты там хранишь нам угадывать, да? Ок, хрустальный шар говорит, что надо сменить на нормальную sql базу.
    Ответ написан
    3 комментария
  • Разбивка на страницы?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Чтобы ограничить количество выводимых страниц требуется знание арифметики в пределах начальной школы.
    Чтобы вместо 1 и $num_pages использовать заранее рассчитанные значения, укладывающиеся в определённый интервал. Например 10 страниц.
    То есть надо всего лишь определить начальную и конечную цифры, которые подставлять в for вместо 1 и $num_pages.
    Например, если мы хотим выводить только 10 страниц, а текущую выводить посередине то для получения первой цифры надо отнять от текущей 4. Затем к ней надо прибавить 9 - так мы получим второе число.
    При этом, разумеется, надо проверить, чтобы первое не было меньше 1, а последнее - больше $num_pages.
    А дальше просто подставить их в for. Вот и всё.
    Ответ написан
    3 комментария
  • Как иправить ошибку обновления SNAP?

    @winlinweb
    Обновление с помощью терминала.
    Убедитесь, что работа центра приложений полностью завершена:
    killall snap-store
    Обновить все приложения можно командой:
    snap refresh
    Если обновлений доступных нет, выведет:
    Все пакеты актуальны.

    Дополнительно.
    Запросить список доступных обновлений:
    snap refresh --list
    Обновить доступное из списка приложение (например: snap-store) можно командой:
    snap refresh snap-store
    Ответ написан
    Комментировать
  • После включение Secure Boot тупит компьютер, что делать?

    yakovlev_13
    @yakovlev_13
    Шаманство, экзорцизм и некромантия.
    выключи Secure boot в биосе
    Ответ написан
    Комментировать
  • Возможно ли задать подсказку в phpstorme для возвращаемого типа?

    @Vitsliputsli
    Это не просто подсказки, это контроль типов. То, что зная какой тип возвращается Шторм может подсказать варианты это побочное удобство. Основное же должно быть то, что конкретная переменная имеет определенный тип, а значит не нужны дополнительные проверки и методы будут лаконичны и конкретны. У вас пока, то ли объект, то ли массив, то есть каждый раз нужно проверять что это. Лучше бы сделать объект-коллекцию.
    Чтобы указать Шторму, что в конкретной переменной лежит только этот тип используется хинт, типа такого:
    /** @var User $user */
    но разумеется, он должен быть только в том коде где в $user лежит обязательно объект класса User и ни что иное.
    Ответ написан
    1 комментарий
  • Чем frontend разработчик занят на реальных проектах?

    @Giperoglif
    Настройка тестов, CI/CD, OLAP CUBE, оптимизация запросов к БД
    - это важно для фронтенда знать, что такое просто есть) явно вас не тем загружают.
    Ответ написан
    2 комментария
  • Чем frontend разработчик занят на реальных проектах?

    С резким ростом популярности React Server Components и Next.js в последнее время происходит некий сдвиг в понимании, что такое фронтенд.
    BFF уже почти становится неотъемлемой частью "фронтенда", и становится обременительно разделять браузер и сервер на разные команды.
    На Западе, вообще, уже очень давно и макетами, и вёрсткой, и анимациями очень часто занимается один человек - дизайнер, фронтендеры занимаются связкой браузер + BFF, а бэкендеры занимаются более сложной бизнес-логикой.
    К тому же, джуниорам зачастую дают те задачи, которыми сами не хотят заниматься, и на что нет времени. Т.е. это что-то занудное, работа с legacy, передвижение кнопки на 5px влево и т.д. Крайне редко джуниорам дают интересные творческие задачи. Не факт, что вам на новом месте не дадут такие же неинтересные задачи.
    Вы можете либо молча сильно стараться в надежде, что вам потом дадут что-то интересное, заметив ваше рвение, либо, лучше всего, пообщаться по-человечески с коллегами и начальством, объяснив, что вы рветесь в бой, а вас в тылу держат. Попросите рассказать об их планах на ваш счёт.
    Не исключено, что у вас как раз хорошо получается "Настройка тестов, CI/CD, OLAP CUBE, оптимизация запросов к БД", и поэтому вам эти задачи и дают)
    В общем, человеческое общение с коллегами очень часто решает проблемы.
    Если же вы к ним придёте с открытой душой, а вас токсично отошьют, вот тогда подумайте о смене работы.
    Ответ написан
    7 комментариев
  • (фото) что если на материнке погнулось это?

    По-моему, это для плашки с аудиоразъёмами на передней части корпуса. Если у Вас такой плашки нет, то некритично.
    Рядом погнут штекер для подключения плашки с LPT портом - там то же самое.

    Если чем-то не пользуетесь, то главное, чтобы штекеры друг друга не касались, напрямую или через корпус.
    Ответ написан
    3 комментария
  • (фото) что если на материнке погнулось это?

    Можешь взять пинцет или шприц и выровнять, так как не встанет коннектор.
    Судя по маркировки это разъём для выхода наушников на переднюю панель
    Ответ написан
    2 комментария
  • Почему uasort игнорирует вложенный массив при сортировке?

    @kosta6832 Автор вопроса
    function cmp_sort($a, $b)
    {
    	if ($a['ncount'] == $b['ncount']) {
    		return 0;
    	}
    
    	return ($a['ncount'] > $b['ncount']) ? -1 : 1;
    }
    function arrSort(array &$arr)
    {
        uasort($arr, 'cmp_sort');
        foreach ($arr as $k => &$v) {
            if(isset($v['children'])){
                arrSort($v['children']);
            }
        }
    }
    arrSort($array);
    print_r($array);
    Ответ написан
    1 комментарий
  • Не понимаю какой php.ini загружается?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    У PHP разные файлы настроек для разных сред. Вы поменяли настройки для CLI (консоли), а нужно для FPM (скорее всего).
    Вы вывели вот phpinfo() — там указан файл, из которого берутся эти настройки. Поищите по странице «.ini» и увидите, где менять.
    Ответ написан
    Комментировать
  • Какие есть утилиты для автоматизированного проектирования БД?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Какие есть утилиты для автоматизированного проектирования БД?

    Зависит от того что понимать под термином "Проектирование БД".

    Классически ПБД - это начальный этап создания БД, включающий описание предметной области, анализ предметной области и построение ERD диаграммы (схемы БД). И если ориентироваться на это определение, то никаких утилит автоматизированного ПБД на настоящий момент не существует в принципе.

    Возможно, в какой-то близкой перспективе до этого дошагают средства ИИ, но мне как-то сомнительно.

    =========================

    Но, поскольку вопрос учебный, то скорее всего имеются в виду средства, которые позволяют нарисовать ERD по выполненному анализу, а потом на основе построенной диаграммы сгенерировать SQL-код создания структуры БД. Если так, то товарищи уже накидали вариантов. Впрочем, следует отметить, что в случаях, когда выполненный анализ и выбранная архитектура/реализация требует существования в БД таких типов объектов, как, например, триггеры, хранимые процедуры, эвенты и пр., ни одно из уже перечисленных средств не справится.

    Но вот хрен знает, что на самом деле в мозгу у вашего препода.
    Ответ написан
    3 комментария