Задать вопрос
  • Как правильно писать код, чтобы не было PHP Notice: Undefined index?

    @rPman
    если ты точно знаешь что отсутствие переменной это нормальная ситуация, то можно отключить проверку ее наличия с помощью @, тогда будет подставлено значение NULL в случае ошибки для строк, и 0 для чисел
    @$com_offer['offer_count'] += @$_item['quantity'];
    В данном случае если у тебя оба ключа будут отсутствовать то будет создан 'offer_count' с 0 значением

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

    @rPman
    когда запросы блочатся, когда есть проверка браузера. Задавая вопрос,
    но ты не задала вопрос про свою проблему

    покажи свой код, покажи свои попытки, где именно затык, вот тогда тебе дадут советы

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

    @rPman
    сделаю 'медвежью услугу'.

    создаешь две таблицы
    user (id и другие поля пользователя в будущем) и user_name (id, name, user_id) где на каждого пользователя будет по одной записи в user и по несколько (точнее от задачи, ведь может быть и 0 и 1) будет записей на каждое имя.

    p.s. таблица user в твоем примере оказывается не нужна, если больше никаких полей не предвидится, а значит для хранения данных хватило бы user_names но существование таблицы user идеологически верное, так как на его id можно определить автогенерацию идентификатора, контроль уникальности и прочее прочее

    чтобы база данных эффективно работала с такими связями есть индексы foreign key в данном случае это индекс user_name.user_id -> user.id

    запросы к базе у тебя будут типа
    select * from user left join user_names on user_names.user_id=user.id where user.id=xxx

    выдаст список user_names указанного пользователя xxx
    Ответ написан
    Комментировать
  • Какая есть альтернатива для lowdb?

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

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

    @rPman
    Вместе с удалением браузера желательно удалять еще и файлы профиля, с высокой вероятностью там остались куски вирусов (если что можно сделать копию чтобы позже перенести хотя бы букмарки)
    Всё что он находил, я удалял.


    в windows они находятся в %appdata%\Local\Yandex\YandexBrowser\
    Ответ написан
    Комментировать
  • Как выйти из гитхаба?

    @rPman
    так измени конфиг той же командой
    git config --global user.name XXX
    git config --global user.email YYY
    # так же убери --global если настройки локальны для репозитария


    а еще конфигурация репозитария хранится в текстовом виде в .git/config просто отредактируй его
    Ответ написан
  • Как написать свой парсер (поисковик) CSV на Java?

    @rPman
    Важно, что нельзя:
    2) Сохранять весь файл ни в какую-либо структуру, ни как массив байт

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

    Ускорение возможно только за счет траты памяти, сохраняя какую то информацию.

    Варианты:
    1. ускорить примерно 'в константу раз' можно, исключив проблемы с парсингом csv формата, т.е. сохранив информацию о координатах каждой строки и даже его элементах (ты должен хранить смещение в файле для каждой следующей строки и размеры/смещения каждой колонки относительно начала строки, особенно это актуально для строковых значений, экранирование символов " и \n тратит время на парсинг)
    2. хранение информации о типах данных может так же заметно увеличить чтение данных из файла, причем речь не только о просто знании структуры (какая колонка какой тип ожидается) но и о фактическом значении в каждой строке (например факты расхождения с ожидаемой структурой), но это уже от задачи, редко когда требуется гибкая типизация, и как минимум, знание о том что строка требует или не требует обработку экранирования может ускорить это в 2 раза, очень часто это знание может быть заложено в код заранее, без предварительного чтения файла
    3. хеширование значений в памяти, дает огромный прирост к поиску данных 'по значению', причем в зависимости от задачи это может быть хеширование как всей строки так и отдельных ее колонок или группы (как частный случай индексирования)
    4. построение индексов, еще большая информация о данных, в зависимости от типа индекса, позволяет за константное/логарифмическое время решать такие задачи как поиск max/min/сравнение для числовых данных, или к примеру анализ строковых (например по словам или языковые запросы, т.е. наличие символов из наборов)
    p.s. в догонку мелкие оптимизации
    - работа с файлом, замапленным на кусок памяти (все ОС это поддерживают) дает огромный прирост по сравнению с чтением по кусочкам и тем более fgets (на самом деле при грамотном fread скорости не на много отличаются но речь просто об удобстве и единообразии кода)
    - java это не совсем про хорошую скорость низкоуровневых операций, тут может оказаться что готовые но 'плохие' методы (реализованные на нативном коде) окажутся быстрее правильных идеологически но спотыкающихся о jvm прослойку, там где нужна скорость где действительно приходится так оптимизировать, бери c++, тем более благодаря последним десятилетиям развития std он стал очень и очень удобным не в ущерб скорости.

    p.p.s. надо быть очень странным человеком, чтобы хранить данные в csv файле вместо адекватной базы данных с уже готовыми инструментами индексации и поиска.
    Настоятельно рекомендую освоить sqlite, в т.ч. как инструмент передачи данных другим людям, так как ну очень достали те кто использует excel или csv, изобретая бредовые форматы сериализации списков и сложных связей, постоянно спотыкаясь об мультиязыковую поддержку, даты и даже банальные символы точка и запятая у вещественных чисел

    Кстати у sqlite встроенные механизмы импорта данных из csv, в 1 строчку
    Ответ написан
  • Можно ли программно отправлять сообщения от лица человеческих аккаунтов Telegram?

    @rPman
    были библиотеки, неофициальные, но их поддержка со временем превращается в тыкву, например работают приватные чаты и маленькие каналы, но большие группы уже нет

    смысл в том чтобы симулировать работу полноценного клиента, на сколько я понимаю телеграм потихоньку убивает все альтернативные клиенты и скоро прикроет открытые исходники своего официального (как я понял теперь двухфакторная sms на неофициальные клиенты не приходит, только на рядом запущенный официальный клиент)

    Попробуй эту https://github.com/alexander-akhmetov/python-telegram вроде бы поддержка у них оперативная
    еще https://github.com/iTeam-co/pytglib

    p.s. неплохим вариантом является использование офицального gui телеграм, модификация исходников со вставкой своей логики
    Ответ написан
    Комментировать
  • Как посмотреть MKV в браузере?

    @rPman
    поддержка не гарантируется но ты попробуй например так
    <video src="video.mkv"></video>
    или так
    <video>
        <source src="video.mkv" type="video/mp4">
    </video>
    Ответ написан
    Комментировать
  • Клавиатура не печатает много символов при зажатии клавиши?

    @rPman
    долгое нажатие shift, вылезет менюшка для людей с ограниченными возможностями, там ищи - отключить залипание
    Ответ написан
    Комментировать
  • Как спарсить информацию с динамического сайта на python/js?

    @rPman
    забрось ты эти попытки симуляции поведения браузера
    потратишь времени вагон, а потом разработчики сайта что то подправят и тебе снова анализировать код

    запускай полноценный браузер, симулируй клики пользователя, способов миллион, от инжекта javascript на страницу нормально запущенного браузера и прередачи информации через http до полноценных библиотек типа selenium
    Ответ написан
    6 комментариев
  • Что написать на C++ для практики?

    @rPman
    Реши любую задачу с многопоточностью и общей памятью, какой-нибудь сервер например.
    Или, к примеру, возьми тяжелый проект типа исходники браузера firefox/chromium и модифицируй их полезным образом (в этой области даже простая возможность настроить окружение, чтобы собрать этих монстров из исходников - уже плюс, а уж способность найти в исходниках нужное место и подправить - однозначно велком).
    p.s. помню не осилил отладку openjdk jni кода (для этого нужно не просто настроить окружение для сборки java но и настроить отладку в ней) и искал баг в портируемом коде jni, роняющем java, по старинке логированием, полагаю если сумеешь настроить сборку и отладку, можно наверное сразу на мидла претендовать.

    Люди, способные не просто собирать код из последовательных блоков а способные мыслить комплексно - уже показатель.

    p.s. если работодатель ищет c++-ника, его явно не интересуют конечные задачи, это могут запилить рядовые программисты на любом другом высокоуровневом языке программирования, а интересуют не сами знания, а интеллект
    Ответ написан
  • Можно ли выделить память определенного размера?

    @rPman
    Если у тебя в итоге размер этого buf будет известен на этапе компиляции, то можно воспользоваться шаблонами
    template<int SIZE> struct MyStruct {
      int a;
      char buf[SIZE];
    };
    ...
    auto x=new MyStruct<10>; // x - указатель на MyStruct
    или
    const int size=10;
    auto x=new MyStruct<size>;
    ...
    delete x;
    Ответ написан
  • Могу ли я использовать шрифты с лицензией OFL для продажи аватарки, логотипа?

    @rPman
    Логотип и аватарка это производный продукт, ради которого шрифты и создаются, там вне зависимости от лицензии (ну понятно можно вырожденный случай придумать).

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

    Поэтому можешь.
    Ответ написан
  • Как сделать оплату внутри приложения android?

    @rPman
    оставь номер телефона и принимай звонки голосом
    я думаю это единственный механизм, которые не будет подвержен бану, так как ну очень нестандартный

    хочешь автоматизации? приняв звонок, поставь автоответчик, а там предлагай отправить ссылку по sms или еще как

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

    Единственная/основная причина, почему гугл (android/youtube) терпит огромные убытки по бесплатному обслуживанию страны - это шпионаж, и может немного удержание рынка от появления конкурента
    Ответ написан
    Комментировать
  • Как настроить push&pull WebSocket RTC на ВМ Битрикс 24 с обратным проксированием nginx?

    @rPman
    Совершенно не понимаю, зачем эти порты пробрасывать, возможно это специфика битрикс.

    Websocket - это расширение http протокола, т.е. буквально это постоянно висящее http соединение от браузера до клиента, в котором можно слать данные в обе стороны.

    С точки зрения nginx прокси, это обычный http запрос, настройки там минимальны

    Но у тебя внутри твоей сети должен быть поднять этот websocket сервер. Т.е. какое то приложение, которое и является этим сервером, умеющим обрабатывать не http rest а именно непрерывное подключение.
    -----------------------------------------------
    Либо модуль веб сервера!

    Я не совсем уверен, в документации есть только пара строчек об этом
    Включает использование Веб-сокетов. Активна только при использовании nginx-push-stream-module в версии 0.4.0

    Используется этот модуль https://github.com/wandenberg/nginx-push-stream-module
    Читай инструкции как его настраивать

    т.е. веб сервер становится посредником, где уже бакэнд сможет слать к нему запросы в http rest стиле и управлять открытыми websocket каналами (и читать к примеру старые сообщения, этот момент меня огорчил, так как не нашел как бакэнд будет получать сообщения о новых данных в канале ws)
    Ответ написан
  • К динамическому ип привязать статический ip.?

    @rPman
    либо у провайдера заказать либо приобрести vpn с фиксированным ip адресом (такая услуга раньше была нормой, но так как ip адреса все дороже и дороже, то это стало опцией), как вариант, приобрести vps-ку, очень часто ip адрес там привязывается в момент покупки до окончания (т.е. как перестанешь платить - отбирают), цены на этом рынке могут быть от бакса в месяц (более менее нормальные vps с нормальной сетью и оперативкой от гигабайта можно найти за 3$/м)
    Ответ написан
    Комментировать
  • Достаточно ли ssl защита для прокси сервера?

    @rPman
    Вопрос в том от чего защищаешься?

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

    Единственное место, где можно опасаться подключений по незащищенному соединению - это атаки на каналы связи. Т.е. если тебе нужно как то защитить свою информацию от атаки провайдерами (всеми кто стоит между твоим сервером и проксируемым), то лучше включи ssl или настрой vpn с шифрованием.

    p.s. провайдеры, на основе таймигов и размеров пакетов, (если не пользоваться технологиями как у i2p, которые подмешивают в канал мусорные сообщения) смогут понять и при наличии шифрования, что сервер проксирует информацию и откуда

    Поэтому главный вопрос, чего ты боишься, остается
    Ответ написан
    Комментировать
  • Как закрыть доступ к сайту на вордпресс на определенное время? Например на субботу. И чтобы это работало в зависимости от настроек часового пояса?

    @rPman
    Лучше и точнее всего о своем часовом поясе знает клиент, можно конечно спрашивать его геопозицию, но лучше просто время запросить

    Соответственно 'закрытие' сайта делать на javascript, выводя модальное окно поверх и даже внося в логику сайта соответствующие блокировки.
    Ответ написан
    Комментировать