• Значение @ в php?

    php666
    @php666
    PHP-макака
    Не соглашусь с комментаторами выше. Иногда есть причины для подавления ошибки.
    Вот пример:

    $file = '/g/g/g/g/';
    if (!@unlink($file) && file_exists($file)) {
        throw new \RuntimeException('Failed to delete file ' . $file);
    }


    Тут unlink на несуществующем файле приведет к
    Warning: unlink(/g/g/g/g/): No such file or directory in

    ошибка нам не нужна, мы её подавляем. Следующий этап - проверка, удалился ли реально файл, вне зависимости от того, что нам вернёт unlink.

    Если файл не удалился - выкидываем исключение.
    Ответ написан
    1 комментарий
  • Где найти единомышлеников?

    @caballero
    Программист
    если нет желания и мотивации значит это не ваша профессия

    и програмирование не футбол чтобы играть командой никакие единомышленники не помогут
    Ответ написан
    Комментировать
  • Где найти единомышлеников?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Но в последние время желаниие и мотивация становиться меньше.

    Значит это не ваше. Если бы это было что-то родное вам, вопрос бы мотивации даже не поднимался.
    Решение:
    Для того что бы не пропадала мотивация, нужно пойти на завод, желательно на самое грязное производство, и там у станка постоять 12 часов. Мотивация как правило сразу переходи на уровень over много

    людей из этой же отросли.

    Зачем вы кому-то нужны. Что вы такое можете дать другим людям, что бы с вами интересно и выгодно было общаться. А бесплатно учить вас никто не будет.
    Ответ написан
    1 комментарий
  • Как реализовать управление фоновым приложением через консоль?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Есть несколько вариантов:
    1. Через stdin, в linux как правило достучаться к нему можно в /proc/PROCESS_ID/fd/0
    2. Слушать в отдельном socket файле
    3. Отправлять отдельный сетевой запрос
    4. Можно посмотреть в сторону d-bus
    ...
    Ответ написан
    1 комментарий
  • Какие существуют бесплатные сервисы для расчета расстояний между координатами на карте?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Математика бесплатна. Формула расчёта длины на сфере (вам же точность не важна) выведена ещё тысячу лет назад.
    Ответ написан
    3 комментария
  • Как сайты понимают, что их посетил бот на Selenium, а не реальный юзер?

    @qid00000000
    Мало что знаю, но информацию найду в гугле
    Алексей очень хорошо описал причины, которые подтверждаются некоторым личным опытом.

    Очень часто, в логах сервера, в user-agent можно встретить selenium. Достаточно в конфиг прописать правило отклонения запросов с user-agent: (*selenium*) и проблема исчезает.

    Также, те, у кого стоит метрика, могут обнаружить посетителей, которые ничего не делают, после чего отправляют ip в бан руками.

    Обходить это, можно загружая страницу через браузер и случайно сдвигать мышь, случайное количество раз (от 5-10), через случайные промежутки. Спасет от ручной проверки, для большинства сайтов.

    Для 100% гарантии, чтобы не банили, нужно "наводиться" на ссылки, которые нужно распарсить следующими (по очереди). Однако, в этом случае, вы пожертвуете производительностью парсера.

    Как реализовать: Поднять сервис (несколько) на машине с vnc и получать страницу через браузер, имитируя работу мышкой.

    Но, обычно, указать корректный user-agent достаточно. (Я, почему-то уверен, что вы остановитесь на этом варианте).

    Однако, самым примитивным способом отследить, что твой сайт парсят, является мониторинг нагрузки сайта на сервер. Дело в том, что подавляющее большинство сайтов находиться на виртуальном хостинге, где владельцу сайта, сдается в аренду часть вычислительной мощности сервера.

    Владельцу сайта проще заблокировать тот ip, с которого сыпятся запросы, чем проводить оптимизацию кода сайта и выяснять, по какой причине вообще создалась нагрузка (например, из-за не проставленных индексов в бд).
    А порой, это является единственным вариантом, т.к. на сервер, может прилететь за час свыше 10000 запросов к сайту с одного ip.
    Для сравнения от yandex/google, за сутки, может прийти около 4000 запросов (с минимальными настройками индексации).

    В заключение, я скорее всего озвучу желания владельца сайта: "Пожалуйста, собирайте информацию с сайта адекватнее и наиболее приближенно к реальным запросам от людей. Не пытайтесь выгрузить весь сайт за раз в короткий промежуток времени. Тем более, не тестируйте не завершенную программу на реальных сайтах."
    Ответ написан
    Комментировать
  • Как сайты понимают, что их посетил бот на Selenium, а не реальный юзер?

    alekciy
    @alekciy
    Вёбных дел мастер
    Вариантов много. Из простого:
    • по User-Agent
    • по IP адресу через отслеживание количества запросов с одного адреса
    • по используемым публичным прокси (многие такие сервисы явно сообщают, о себе кто они)
    • и т.д.

    Из сложного:
    • отслеживают перемещение мыши
    • ведут аналитику на о типичных поведениях пользователя и ищуют анамалии


    Если начинают банить прямо с самого первого запроса, значит спались на чем то элементарном и примитивном. Потому что при сложных вариантах защиты для сбора аналитики боту дают по сайту походить.
    Ответ написан
    Комментировать
  • Поставить mint и использовать в полной мере как ubuntu?

    NSA-bot
    @NSA-bot
    При возникновении проблем в Минте ищу решение для Убунты и всегда помогает. Одно и тоже.
    Ответ написан
    Комментировать
  • Поставить mint и использовать в полной мере как ubuntu?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    практически одно и то же
    минт делают из бубунты, которую делают из дебиан,
    есть LMDE - минт на основе дебиан
    Ответ написан
    2 комментария
  • Не парсится json php?

    @kur4chyt
    Качественный говнокод от производителя
    попробуйтеjson_decode( $mat['data'], true);
    Ответ написан
    Комментировать
  • Почему в php функция не имеет доступ ко внешним переменным?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Согласно пророчеству.
    Если хотите, чтобы функция php видела внешнюю переменную, то её надо импортировать в функцию с помощью
    global $a;
    Ответ написан
    9 комментариев
  • Переходить ли с windows 10 на linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну так. Сижу на линуксе уже лет 20 (да-да, я стар, как говно мамонта, но не совсем).
    1) Рекомендую установить линукс второй системой, благо это не вызовет какой-то диссонанс.
    2) Попробовать в нем поработать. Будет дискомфорт, сильный. Придется поменять привычки, изучить командную строку и найти альтернативные программы.
    3) Конечно, 4Гб для комфортно работы маловато, но достаточно при умелом использовании.
    Далее.

    Если вы разработчик, то в линуксе все для этого есть, начиная от кучи всяких IDE (благо, они практически такие же, как и на винде), и заканчивая docker/libvirt. Все вместе значительно облегчает разработку. С примесью командной строки, а еще и например с таловым менеджером типа I3, производительность будет очень высокой, правда со временем. Уходить на винду обратно - морально себя ломать.

    Если вы просто хотите поиграть, и ваша работа графика.дизайн, то лучше остаться на винде, а линукс использовать время от времени.

    За что я люблю линукс.
    - все на кончике пальцев, в прямом смысле слова.
    - куча рабочих столов (как и в OSX), я до сих пор не пойму, почему майкрософт это никак не внедрит в свой GUI, причем оболочки типа HP Launch для еще windows 3.11 были в 1995 году.
    - все инструменты разработки создавались изначально под командную строку и все из мира unix
    - командную строку вообще практически нечем заменить, и 40 лет развития unix сделали ее просто волшебной.
    - куча редакторов для простого текста, начиная от VI/Emacs, и заканчивая тем же самым gedit. все это с подсветкой синтаксиса, автокомплитом и прочими плюшками
    - все идет из коробки, не нужно ползать по сайтам, скачивать сомнительные программы
    - отсутствие вирусов и безопасность
    - виртуализация типа docker/libvirt, развернуть.попробовать новую систему - 5-10 минут, даже винду.
    - ну и подготовка документации, обожаю pandoc и текстовый markdown. На выходе красивые PDF, которые можно хранить под управлением git/mercurial.
    - для картинок использую inkscape.

    Да, у меня еще есть парочка макбуков и аймак, но этот текст пишу с ультрабука асус s. OSX в плане юзабилити немного лучше, но в ней нет I3.
    Ответ написан
    1 комментарий
  • Дистрибутив для слабого компьютера?

    szafranji
    @szafranji
    wro
    1.antiX Linux - 256 МБ оперативной памяти
    2. SparkyLinux - 256 МБ
    Ответ написан
    Комментировать
  • Какой дистрибутив Linux выбрать?

    BorLaze
    @BorLaze
    Java developer
    Как гласит старая народная мудрость, "ставьте тот же *nix, который стоит у вашего знакомого *nix-гуру".

    А вообще - убунта, ИМХО, один из самых дружелюбных дистрибутивов. Плюс обширнейшее коммьюнити. А после винды - LinuxMint зайдет просто на ура.
    Ответ написан
    7 комментариев
  • Есть ли какая-нибудь программа для просмотра mysql в реальном времени?

    @Nc_Soft
    MySQL Workbench
    Ответ написан
    Комментировать
  • Пароль не проходит хеширование и отправляется открытым в БД, как это решить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $hashed_password = password_hash($pwd, PASSWORD_DEFAULT);
    ...
    $stmt->bindParam(':pass', $pwd);
    Ответ написан
    Комментировать
  • Пароль не проходит хеширование и отправляется открытым в БД, как это решить?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Копируете чужой код без понимания.
    2. $hashed_password - хешированный пароль тут!
    $stmt->bindParam(':pass', $pwd); надо поменять на
    $stmt->bindParam(':pass', $hashed_password);
    Ответ написан
    Комментировать
  • Как хранить характеристики товаров в БД и делать поиск по ним?

    @dimoff66
    Кратко о себе: Я есть
    Характеристики относятся к товарам? То есть у одного товара только один набор характеристик или один товар может приходить и продаваться с разными наборами характеристик, например кроссовки адидас, цвет: Белый, размер: 37 и кроссовки адидас, цвет: Синий, размер: 39. Если второй, более сложный случай, то делаем следующие таблицы

    1) Таблица Properties (id, name, valueType) - здесь просто храним список возможных свойств
    2) Таблица PropertyValues (id, propertyId, value) - здесь храним возможные варианты значений для свойств, у которых не простой тип, то есть не строка, не число, не булево, не дата
    3) CharacteristicsSet (id, productId, name) - здесь будет храниться набор свойств для конкретной позиции товара на складе, name будет составляться автоматически как строка из свойств и их значений, указанных для позиции товара
    4) CharacteristicsValues (chartacteristicSetId, propertyId, valueType, value) - здесь будут храниться значения свойств для конкретной характеристики.

    Например нам пришли партии кроссовок со свойствами цвет: белый, размер: 37й и цвет: синий, размер: 39й. (например 100 и 50 штук соответственно)

    Тогда наши таблицы будут выглядеть следующим образом:

    Properties:
    id: 1, property: 'Цвет', valueType: 'set'
    id: 2, property: 'Размер', valueType: 'number'

    PropertyValues:
    id: 1, propertyId: 1, value: 'Белый'
    id: 2, propertyId: 1, value: 'Красный'
    id: 3, propertyId: 1, value: 'Синий'

    CharacteristicsSet:
    id: 1, productId: 777, name: 'Цвет: белый, размер: 37'
    id: 2, productId: 777, name: 'Цвет: синий, размер: 39'

    CharacteristicsValues
    chartacteristicSetId: 1, propertyId: 1, valueType: set, value: 1(ссылка на белый цвет)
    chartacteristicSetId: 1, propertyId: 2, valueType: number, value: 37
    chartacteristicSetId: 2, propertyId: 1, valueType: set, value: 2(ссылка на синий цвет)
    chartacteristicSetId: 2, propertyId: 2, valueType: number, value: 39

    Ну и в таблице склада можно будет хранить записи в виде:
    productId: 777, characteristicsSetId: 1, quantity: 100
    productId: 777, characteristicsSetId: 2, quantity: 50

    Если же различный набор свойств для одного товара нам не нужен, то все то же самое, но обходимся без таблицы CharacteristicsSet: а в CharacteristicsValues ссылаемся на сам товар. Соответственно весь поиск будет проходить по одной таблице CharacteristicsValues с индексированными полями. Например чтобы найти любые товары с цветом Белый, мы делаем поиск

    select * from CharacteristicsValues where propertyId = 1 and value = 1


    ну и с соответствующим соединениям по таблицам характеристик и(или) товаров
    Ответ написан
    Комментировать
  • Хороший линукс-дистрибутив?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Хороший линукс-дистрибутив

    чтоб ощутить линь полностью

    после установки дебиана, он не запускается

    ну так уже же ощутил, на этом можешь остановиться и бежать на виндувс
    Ответ написан
    Комментировать