• Какой бы вы посоветовали ПК из этих трех?

    @Drno
    Сборки шлак. И завышены сильно
    Проще, дешевле и надежнее самому собрать. Я думаю у Вас есть знакомый чел, который за 5ру соберет всё по красоте...
    Ответ написан
  • Почему не отправляется POST через Vue Resource?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Мужик, если ты используешь vue-cli, то рандомные файлы которые ты просто куда-то кинул не появятся магическим образом во встроенном сервере. Для публично доступных файлов предназначена папка public.
    Однако, встроенный сервер vue-cli не умеет и не должен уметь исполнять php, это совершенно из другой оперы языки и технологии.
    Для разработки тебе надо поднять отдельный php сервер на отдельном порту и через vue devserver proxy пробросить на него подобные запросы.
    Для прода - тебе надо настроить прод сервер по вкусу.
    Ответ написан
    1 комментарий
  • Как правильно покрыть тестами приведенный в примере код?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    https://github.com/index0h/php-conventions#7-тести...

    Конкретно по коду:
    1. Не стоит упарываться по разбиванию всего на отдельные методы. Фактическую сложность вы не уменьшите, вместо этого заставите инженера, который будет это смотреть бегать по классу что бы связать как-то ваши однострочники. Конкретно в вашем случае стоит сделать всего один метод getValue, а то что вы разбрасали по защищенным - запихнуть в getValue.

    2. Инстансы db и timedate стоит передавать в конструктор явно, а от статики отказываться, на сколько это возможно.
    Ответ написан
    4 комментария
  • Как frontend разработчику тестировать локальный сервер?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    хм а в чем проблема?

    в вашем проекте создаются папки
    sql
    sql\up
    sql\down

    В up складываются миграции по наращиванию
    В down по убыванию
    Формат пусть будет номер тикета (дата) + описание

    Сами файлы делятся на 2 типа модификация схемы и наполнение \удаление данных

    В итоге подтянув изменения вы просто выполняете скрипт(ы) и получаете актуальную базу
    Ответ написан
    Комментировать
  • Как написать bash скрипт, который будет запускать файл, который поддерживает аргументы командной строки?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    #!/bin/bash
    python3 get-movies.py "$@"


    Тут запись "$@" означает передать все аргументы скрипта как они есть, причём с правильным экранированием, то есть "Termninator 2" будет передано как "Terminator 2", а не "Terminator" "2".

    upd: Ещё добавлю, что для такого простого случая может больше подойти другой подход: передача интерпретатора через шебанг. Надо первой строкой файла get-movies.py указать:

    #!/usr/bin/env python3

    В этом случае запуск скрипта будет приводить к вызову /usr/bin/env python3 get-movies.py со всеми остальными параметрами.
    Ответ написан
    Комментировать
  • Редирект с http на https без слэша в конце, как реализовать в nginx?

    fzfx
    @fzfx
    18,5 дм
    редирект на https://test.com/ без слеша на конце никак не сделать, поскольку в URL после имени домена в обязательном порядке идёт слеш.
    Ответ написан
    2 комментария
  • Как добавить данные в БД через HTML-форму?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сначала учимся правильно соединяться.
    В случае mysqli это
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect($host, $user, $pass, $db_name);
    $link->set_charset("utf8mb4");

    И никаких ужасов с "Соединение не установлено" тут быть не должно.

    После этого выполняем запрос INSERT. Причем запросы мы всегда пишем так, чтобы данные в БД попадали отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();

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

    И тогда никаких ошибок запроса уже никогда не будет. Не говоря уже о том что при любых других вариантах твой сайт поломает любой пятиклассник.

    Весь код, который добавляет запись в БД, должен быть расположен ДО любого вывода.
    После обработки запроса методом POST необходимо перенаправить клиента куда-нибудь методом GET и завершить работу скрипта. Делается это функцией header с заголовком location: . после которой написать exit;
    Соответственно, никаких ужасов с "Запись добавлена".

    Кстати, немного удобнее с БД работать не через mysqli, а чрез PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute

    Подключение
    $host = '127.0.0.1';
    $db   = 'test';
    $user = 'root';
    $pass = '';
    $port = "3306";
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
    $pdo = new \PDO($dsn, $user, $pass, $options);


    Выполнение запроса
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$title, $discription, $date, $path]);
    Ответ написан
    1 комментарий
  • Как прописать во frontend сборке (Gulp 4) абсолютные пути?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    относительный/путь/от/текущей/директории, /относительный/путь/от/корня/сайт
    https://mysite.com/Page/1:
    <script src="/js/main.js">: https://mysite.com/js/main.js
    <script src="js/main.js">: https://mysite.com/Page/1/js/main.js
    Ответ написан
    2 комментария
  • Почему именно 5в напряжение в адаптерах для смартфонов?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А в чем, собстенно вопрос? Почему именно 5 выбрано стандартом, а не 4 или 6? Или, скажем, 12, 24, 36 или 100 вольт?
    Нужно понимать, что есть такая штука, как закон Ома. Сила тока прямо пропорциональна напряжению и обратно пропорциональна сопротивлению. Сопротивление - это свойство проводника, зависит (если не слишком углубляться) от того, что за метал, от его толщины и длины. А ещё у нас всегда ограничена мощность источника тока.
    Мощность - это количество энергии, которая расходуется, преобразуется или передаётся за единицу времени.
    Вот у нас есть кабель и нам нужно передать через него 5 ватт, чтобы достаточно быстро зарядить смартфон. Ка краз получается 5 вольт * 1 ампер = 5 ватт. То есть по нашему кабелю должен идти ток 1 ампер. Это достаточно большой ток, и, если у нашего кабеля будет слишком большой сопротивение (то есть он будет длинным, или тонким, или не из меди), то большАя часть передаваемой энергии будет тратиться на бесполезный нагрев кабеля.

    Если хочется поднять мощность вдвое, чтобы еще быстрее зарядить смартфон, придётся либо удвоить ток, а при этом удвоится учетверится энергия (ведь зависимсть от тока квадратичная), уходящая на нагрев и чтобы это го не происходило, нужно делать толще кабель, покрывать его серебром (у которого низкое сопротивление), делать провод короче. Всё это дорого и неудобно.
    Второй вариант - это удвоить напряжение, тогда при напряжении 10 вольт и том же токе в 1 ампер передаваться будет уже 10 ватт мощности при тех же потерях на нагрев проводов.
    Получается, что за счет увеличения напряжения можно снижать потери на передачу энергии по тем же тонким. гибким недорогим проводам, что и раньше, НО!

    Но. Чем выше напряжение, тем более высоки требования к изоляции между проводниками с разным потенциалом. А ещё химичесие источники обычно выдают не такое уж и большое напржение, приходится включать их последовательно, отчего возникают сложности с балансировкой при заряде\разряде, габаритами, конструкционной сложностью элементов... Кроме того, p-n-переходы в транзисторах и диодах не способны выдерживать больших напряжений, потому что может возникнуть пробой. Такая же проблема может возникнуть и в катушках индуктивности и в конденсаторах. Конденсаторы становятся более громоздкими, нужно больше изоляции, а транзисторы нельзя делать очень маленькими.

    Получается такая вот дилемма. Электроника между током и напряжением балансирует как между Сциллой и Харибдой, пытаясь сэкономить на том-на сём.

    Там, где нужны большие мощности, риходится задирать напряжение. Именно поэтому у нас в розетке 220в, а между фазами 380. Чтобы закипятить двухкилловатный чайник приходится пропускать ток почти 10 ампер, но нам важно, чтобы грелся чайник, а не провода от розетки до чайника и в стенах. Поэтому провода толстые, гораздо толще вашего шнурочка зарядки от мобильника или дорожек на плате внутри него.

    Там, где важна в основном логика и мощность требуется не сильно, лишь для подсветки экрана или яркого светодиода вспыщки, выбирается небольшое напряжение 5 в. В процессорах и вообще в интегральных микросхемах приходится использовать еще меньшее напряжение 3.3в, чтобы не пробивали очень тесно проложенные дорожки внутри. Снижать еще сильнее напряжение уже проблематично, поскольку есть ограничения снизу на открытие p-n переходов. Просто не хватает напряжения для переброса электронов в слоях полупроводнка.

    Так что не 5 вольтами едиными жива электроника. Где-то, например для питания светодиодов, не так важн о напряжение, как ток. Он должен быть в заданных рамках, поскольку превысив возможности рассеивать тепло мы буквально сожжем p-n-переход, поэтому приходится варьировать напряжение так, чтобы ток сохранялся в допустимы пределах.
    В автомобиле стандарт 12 вольт и во многих грузовиках 24. Про розетку я уже говорил и там отдельная тема почему и как устроены электро-сети разных стран. В вашем ноутбуке и смартфоне целый зоопарк напряжений. Раньше даже встречались устройства, где подсветка экрана требовала несколько киловольт.
    Мощность при этом не большая, а изоляция рассчитана на то, чтобы ничего не пробило, но это отдельная цепь внутри устройства и в каждом месте нужно то напряжение, на которое рассчитаны соответствующие участки цепи.
    Ответ написан
    2 комментария
  • Как вывести одинаковый блок на всех страницах HTML не редактируя файлы?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Конечно же нельзя.
    Но вы можете перенаправлять все запросы в php файл, который будет получать контент из html файлов и изменять его нужным образом. Но тогда у вас будет уже не "html сайт".
    Ответ написан
    4 комментария
  • Как сделать недоступным один из url адресов?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Этого нельзя сделать по тому что это разные участки процесса. DNS resolve ничего не знает про uri и http. Справедливо и обратное - если мы обрабатываем http запрос то dns resolve уже успешно завершён и эту ошибку мы получить не можем
    Ответ написан
    Комментировать
  • Как реализовать в php архитектуру сообщений?

    Stalker_RED
    @Stalker_RED
    Все вроде просто:

    Создайте три папки.
    Внутри папок создайте "отдельные файлы" (а какие еще бывают?)
    Потом добавьте возможность отправлять сообщение (куда и как отправлять - это вы забыли описать, но наверняка этот замысел у вас уже есть. Есть же?).

    Не очень понятно, почему эта странная конструкция называется мессенджером, но да ладно.
    Ответ написан
    3 комментария
  • Как получить файл выгрузки заказов в xml формате в Bitrix 1c?

    @tgarl
    есть такая таблица b_option, в ней хранится время последнего запроса заказов
    поле NAME, значение last_export_time_committed_/bitrix/admin/1c_excha

    установите в VALUE время с какого хотите получить файл и будет вам счастье))
    можно даже через админку /bitrix/admin/perfmon_table.php?PAGEN_1=1&SIZEN_1=20&lang=ru&set_filter=Y&adm_filter_applied=0&table_name=b_option&find=last_export_time_committed_%2Fbitrix%2Fadmin%2F1c_excha&find_type=NAME
    Ответ написан
    Комментировать
  • Старый ПК апгрейд. Матплата P5K WS. Нужно ли менять старую видеокарту 9600GT?

    Adler_lug
    @Adler_lug
    Это нужно не пытаться апгрейдить, а облить бензином и сжечь. А потом пойти за новым ПК...
    Ответ написан
    2 комментария
  • Как реализовать проверку и подгрузку файлов между серверами?

    Stalker_RED
    @Stalker_RED
    git и системы деплоя не рассматривали?

    Если нужно именно на уровне файлов, то есть rsync, syncthing, и прочее, вплоть до дропбокса, прости господи.
    Ответ написан
    Комментировать
  • Где изучить unix и reverse?

    @resibe
    19-летний пушистик
    Начните не только с основ с++ а с основ WinApi
    Ваш путь
    1) Пройти все уроки туториала CheatEngine
    2) Написать простейший external используя функции WinApi (#include windows.h)
    То есть самому реализовать то что делает CheatEngine
    К примеру простейший взлом - через OpenHandle и WriteProcessMemory
    2) Изучить основы памяти - написать свой простейший LoadLibrary+CreateRemoteThread инжектор
    3) Поиграться с античитами GameWer( можно обойти с Ring3 Internal)
    Vac (можно обойти с Ring3 External)
    4) Изучить основы NativeApi (то что ntdll.dll) (к примеру поиграться с LdrLoadDll)
    5) Написать свое чисто NativeApi приложение не использовав ни одного #include (благодаря знаниям peb/teb)
    Изучить MASM||NASM||FASM - в взломах в нативе без асма будет не приятно...
    6) Изучить разработку драйверов - надо установить wdk
    7) Поиграться с EAC
    8) Тут у всех разный путь, надеюсь вы сделаете правильный выбор))
    Ps: 0) Guided Hacking/UnKnoWnCheaTs
    Ответ написан
    2 комментария
  • Как переключить запись в файл через inode?

    paran0id
    @paran0id Куратор тега Linux
    Умный, но ленивый
    Можно занулить содержимое файла.
    Можно послать серверу SIGUSR1, если он умеет его обрабатывать, чтобы тот переоткрыл файлы.
    Единожды "отрезолвив" имя файла (путь) в inode, сервер пишет в inode. Можно переименовать файл, а потом пнуть сервер SIGUSR1 или перезапустить.

    На будущее - настройте logrotate.
    Ответ написан
    Комментировать
  • AMD или Intel для программиста и (иногда) игрока?

    AMD или Intel для программиста и (иногда) игрока?

    Пофиг.

    Все меряются циферками частоты и попугаями в синтетических тестах, но все равно производительность между этими сабжами больше субъективное, если не брать в расчет конкретные модели или конкретные цены при покупке.

    P.S.
    в первом 100 вкладок, во втором 50

    А вы в этом ориентируетесь? 100 вкладок в теории можно конечно увидеть на ультраширокоформатном мониторе, но искать нужную (да, сейчас есть поиск по вкладкам, но все же) выглядит нереалистичым. Когда число открытых вкладок приближается к таким порогам, я обычно выбираю "закрыть все вкладки слева/справа" и наслаждаюсь свободной оперативкой в свое удовольствие
    Ответ написан
    2 комментария
  • Является ли данная сборка компьютера оптимальной?

    @Drno
    БП - лучше посмотрите Термалтейк
    Операиивка от АМД - часто глючная, возьмите другую
    Ответ написан
    Комментировать
  • Docker: принято ли ставить на продакшене?

    1. принято. Если кто-то станет шикать на вас за это — это их проблемы, а у нас свободные нравы!
    2. правильно.

    С монтированием – по-разному. Как удобнее. Варианты:
    • в проекте папка /docker под ней в подпапке /docker/nginx – конфиги nginx, которые биндятся в контейнер по одному, или всей подпапкой. Удобно, если захочется по-живому редактить конфиги;
    • в контейнер при его билде, инструкциями в его Dockerfile, копируются файлы из папки;
    • прилетает уже готовый-собранный образ, из которого поднимается рабочий контейнер, не запариваясь расположением конфигов и какими-то настройками.

    Логи направляются в Stdout контейнера и хранятся Docker'ом. Посмотреть хвост: docker logs --tail 50 имя_контейнера
    Ответ написан
    Комментировать