Задать вопрос
  • Как вместо текста, сделать редирект в php? const ERROR = редирект?

    @rPman
    Если я верно понял проблему - никак.

    Но, можно воспользоваться хаком, не определять константу ERROR и при каждой попытке доступа к ней будет возникать ошибка 'Use of undefined constant', которую можно отловить колбеком set_error_handler
    set_error_handler(function(int $errno , string $errstr , string $errfile, int $errline, array $errcontext)
    {
    echo 'ERROR: $errno='.$errno.' $errstr ='.json_encode($errstr ).' $errfile='.json_encode($errfile).' $errline='.$errline.PHP_EOL; // .' $errcontext='.var_export($errcontext)
    });
    
    test;
    test;

    ERROR: $errno=2 $errstr ="Use of undefined constant test - assumed 'test' (this will throw an Error in a future version of PHP)" $errfile="C:\\W\\test\\php\\a.php" $errline=8
    ERROR: $errno=2 $errstr ="Use of undefined constant test - assumed 'test' (this will throw an Error in a future version of PHP)" $errfile="C:\\W\\test\\php\\a.php" $errline=9


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

    @rPman
    Переводите в секунды T.
    Если нужно равномерное распределение, то просто берите N случайных чисел со значением от 0 до T и сортируете их по возрастанию.
    Ответ написан
    Комментировать
  • Как можно реализовать взятие таблицы из базы данных?

    @rPman
    Когда то очень давно, когда я писал на .net с помощью win forms, я пользовался dataset, так как поддержка работы с ними и с базами данных встроена в ide.

    Т.е. вы можете связать объекты dataset с помощью data bindings providers с результатом запроса в базу данных (причем все это из мышекозекательного интерфейса visual studio), связать датасеты с элементами ui на форме, и все это будет работать чуть ли не автоматически (с нулями легкие заморочки если есть связи на форме) и работать из кода с данными в памяти, включая сериализацию и десериализацию одной командой в файл.

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

    @rPman
    С точки зрения нейминга пакетов в OS, php бывает php-cli и просто php. Первый - для запуска из коммандной строки или службы, т.е. просто как скриптовый язык (кстати жутко удобный, имхо удобнее bash, и самый быстрый из существующих в принципе, рядом с ним идет node js но он не такой удобный), второй - для работы web бакэнда.

    По факту это один и тот же бинарник но когда запускаешь приложение из командной строки, настройки php.ini берутся из другого каталога (смотреть /etc/php/...).

    Можно внутри php файла не указывать <?php но в начале указать по стандарту #!/usr/bin/php и тогда скрипт будет запускаться как любое другое приложение (нужен флаг x на файле) либо использовать <?php и запускать
    php файл.php
    Второй вариант мне нравится больше, потому что редакторы ide для php чаще ожидают второй вариант а при первом не включают подсветку синтаксиса.

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

    Т.е. вам нужны механизмы запуска вашего скрипта в виде службы (или хотя бы пока просто скриптом вручную, я видел примеры когда запускали автоматически внутри screen чтобы можно было мониторить активность простым подключением по ssh), плюс механизмы организации задач в виде списков (самое простое в базе данных) и инструменты нотификации об изменении статуса каждой (окончание или ошибка), например нужно же клиенту сообщить о том что работа завершена (при правильной реализации для этого пользуются websocket)
    Ответ написан
    Комментировать
  • Как ловить новые письма в gmail?

    @rPman
    Протокол imap позволяет мониторить письма не периодическими запросами, а прямым подключением и получением соответствующего сообщения по каждому новому письму

    Искать Imap idle фичу в библиотеках, она точно есть в куче реализаций, погуглите, первое что выпадает
    Ответ написан
    1 комментарий
  • Повышение и понижение стоимости акций как описать правильно математически?

    @rPman
    Осторожно, есть два кардинально отличающихся места на рынке где можно совершать сделки:
    * обменник (например банк), вам говорят цену, которая периодически меняется и в некотором смысле зависит от объема
    * биржа (в правильном варианте с ней вы работаете через биржу, но есть кухни которые выступают обменником или даже симулянтами), вы можете выставить свою цену (limit сделки) либо совершить сделку по рыночной цене (market) - как в варианте выше но без 'скрытой' комиссии (обменник обычно является обычным трейдером на бирже, вычисляя свою стоимость и добавляя свои комиссии).

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

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

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

    Само собой такие манипуляторы тоже рискуют, ведь гарантии они получат только если они единственные или крупнейшие на рынке, но так как это обычно не так, в дело вступает матстатистика.
    Ответ написан
    1 комментарий
  • Пустить весь траффик через VPN (tunnelbear, openvpn) на windows?

    @rPman
    Есть очень 'красивое' и простое решение вашей задачи, без vpn уберите шлюз по умолчанию в настройках сети (пропишите статикой или укажите в настройках dhcp сервера для конкретной машины), затем укажите статический роут до vpn сервера в консоли, запущенной с правами администратора (придется прописать все ip адреса которые использует vpn-провайдер, бывает их несколько, узнавать обратившись к провайдеру статистику или собрать самому)
    route add IP_адрес_vpn_сервера MASK 255.255.255.255 IP_адрес_вашего_шлюза_в_интернет -p

    -p - это чтобы при перезагрузке этот роут восстановился

    теперь единственное куда сможет выйти машина - это vpn сервер, после подключения к которому шлюз будет уже этой vpn и весь интернет пойдет через него
    Ответ написан
    Комментировать
  • Можно ли подключить жёсткий диск с буквой С к ПК на котором уже есть диск с буквой С?

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

    p.s. информация о букве диска хранится не на самом диске (там только идентификатор) а в операционной системе, в реестре.

    Кстати из-за этого не получится просто скопировать os на второй диск D и потом вынув первый загрузиться с него, так как система будет помнить что это диск D и подключит его соответственно, и не загрузится. Приходится в реестр после копирования править.
    Ответ написан
    1 комментарий
  • Как проверить наличие значений в таблицах?

    @rPman
    большинство sql баз данных позволяют использовать результат работы select в качестве таблицы во from (либо определять такие вьююхами).

    про добавление суток, оператор LEFT JOIN позволяет объединить таблицы во from таким образом что записи левой таблицы будут в результате обязательно, когда как записи от правой только при совпадении условия в ON (аналогично есть RIGHT JOIN, только подсчет будет для правой таблицы)

    соответственно проверяешь нужное поле на null делаешь плюс один

    про рекурсивные добавления не понял
    Ответ написан
    3 комментария
  • Есть ли альтернатива JADE (java и агенты)?

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

    @rPman
    Расстояние между щелями должно быть сравнимы в несколько длин волн используемого света, в вики указана формула расчета на каком расстояни должен быть экран, и какие будут расстояния между линиями на экране в зависимости от расстояния между щелями
    Например, если две щели разделены на 0,5 мм (d) и освещены лазером с длиной волны 0,6мкм (λ), то на расстоянии 1м (z) расстояние между полосами составит 1,2 мм.

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

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

    Постановка опыта такова: в фольге от шоколадки следует самой тонкой швейной (лучше бисерной) новой иглой проделать два чрезвычайно тонких отверстия как можно ближе друг к другу. Не следует пропускать иглу насквозь, нужно лишь наколоть отверстия самым кончиком. Далее в хорошо затемнённой комнате осветить место проколов мощным источником света. Удобно воспользоваться лазерной указкой, так как её свет монохроматичен. На экране, расположенном в 0,5—1 метре удаётся наблюдать дифракционную картину и интерференционные полосы.
    Ответ написан
    2 комментария
  • Какую быструю программу для удаленного управления компьютера выбрать?

    @rPman
    Для linux, x2go

    Максимально эффективно утилизирует сетевой трафик, в локальной сети я открывал видео в браузере - не 30fps но и не слайдшоу, как предлагают другие решения.

    В теории, существует софт, но он через лицензионные ограничения он залочен на использование дорогого железа т.е. к примеру серверные nvidia gpu (со стоимостью от 100т.р.) и серверные ОС от microsoft позволяют по RemoteFX запускать приложения с высокой отзывчивостью (используется gpu энкодер), и вроде даже можно заставить работать с железом подешевле

    p.s. кодеки есть, тот же steam позволяет транслировать игру в локальной сети вполне себе играбильно
    но чтобы это было отдельным remote desktop я не видел.
    Ответ написан
    Комментировать
  • Подключить 6 27"-32" 2k-4k мониторов к одному системнику?

    @rPman
    Средняя видеокарта позволяет подключать 2-3 4k монитора (например 4 hdmi 4k support). Найти железки, поддерживающие 4к на 6 и больше мониторов боюсь сложно, просто модели которые это умеют уже редкие.

    При подключении нескольких видеокарт, возможна рассинхронизация, точнее шансы настроить g-sync от nvidia или аналогичный от amd даже в пределах одной видеокарты - вопрос не простой, а уж при работе нескольких - невозможный.

    А так, практически любая машина с минимум двумя pci-e (рейзером) потянет воспроизведение видео на все мониторы.
    Ответ написан
    5 комментариев
  • Как правильно организовать виртуализацию внутри виртуализации KVM внутри VMware workstation?

    @rPman
    Что внутри чего виртуализируешь?

    kvm это расширение qemu, поддерживающее аппаратную виртуализацию, хотите запустить виртуальную машину внутри другой виртуальной - отключайте поддержку виртуализации, т.е. пользуйтесь qemu.

    Запустить vmware внутри qemu скорее всего нельзя.

    Если хост и гость - linux то возможна виртуализация на основе контейнеров подменяющих вызовы на уровне ядра (lxc/openvz) или user linux mode, В этом случае возможна комбинация, когда хост системой выступает виртуальная машина, задействующая аппаратную виртуализацию и наоборот, хост система это lxc/openvz, а уже внутри одного из гостей запускать виртуальную машину, требующую аппаратную виртуализацию.
    Ответ написан
    Комментировать
  • Установка программ с сайта или через Магазин Windows?

    @rPman
    Потому что установка приложений из правильно организованного репозитария - верная стратегия.
    А еще у майкрософта появилась лицензия на предустановленную ОС (для дешевого железа, starter кажется) которая запрещает установку и запуск приложений не из магазина приложений.

    p.s. но, я призываю байкотировать начинания microsoft, так как реализация microsoft store ужасна! идеологически и по функционалу.

    windows и linux (и с оговорками macos) до некоторых пор были 'свободными' платформами, вы контролировали какие приложения будут у вас установлены, какие файлы хранятся и прочее.

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

    Так теперь собираются сделать в лучших традициях google play и apple appstore, которые решают, какому разработчику можно какие приложения делать (нужно спрашивать разрешение буквально, а за 'непослушание' накажут все твои цифровые личности, так же буквально) а так же у какого пользователя что должно быть установлено и какие файлы разрешено хранить.

    Правильная реализация репозитария приложений - как это сделано в Linux с пакетными менеджерами deb/rpm/... разработчик может предложить свой репозитарий, который пользователь свободно может подключить (это можно делать автоматически). И главное никто не может запретить вам это делать, хотя, косвенно, через версии пакетов, но вы и это можете контролировать.

    Мы уже потеряли права на мобильные платформы, вскормили страшного монополиста google, поддавшись на удобство и комфорт (производители телефонов выбирали android потому что это решало все их проблемы забесплатно, а потом, так как все так делали, позволилу гуглу диктовать им условия что ставить а что нет), так давайте не будем поддерживать еще более старого и страшного монополиста microsoft.

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

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

    Сейчас windows store и приложения в нем - сборище мусора, и я очень надеюсь что таковым оно и останется и пользоваться им никто не будет - а значит силы оно так же не будет иметь.
    Ответ написан
    2 комментария
  • Как парсить формулы?

    @rPman
    Описываешь грамматику (EBNF ), парсишь (RPLY), компилируешь или интерпретируешь (лексический анализатор lexer и кодогенератор ast в llvm), исполняешь, бинарный код кэшируешь рядом с формулами.

    Красивый пример
    Ответ написан
    Комментировать
  • Как инкрементировать число?

    @rPman
    В терминах базы данных это называется sequence, в каких то это специальный объект с этим именем, значение которого можно запросить и получить следующее, в каких то используется стратегия autoincrement, когда это значение вычисляется автоматически при добавлении в таблицу (например primary key) в каких то, а значит следующее значение можно получить только добавив запись, ну а в совсем уж слабых, пользователи заводят специальную таблицу, где одна запись - сиквенс, значение которого можно прочитать и увеличить на нужное число простым update (и использовать блокировки).

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

    При попытке реализовать подобное на базе файлов возникнет необходимость реализовывать контроль за подобными коллизиями уже самому.
    обожаю велосипеды, не надо так делать
    Пишите в файл, добавляя символы < и > (смысл у каждого - транзакция начата и завершена соответственно), текущая позиция (размер файла) будет значением сиквенса (т.е. сначала вы определяете размер файла, и читаете его последний байт, если он < то ждете случайное время в миллисекундах и повторяете процесс, если он >, значит текущая позиция будет номером сиквенса, добавляете в файл символ <, отрабатываете генерацию формы, пишете >, это самый опасный момент, если нет сервера, смерть процесса до этого момента 'заблокирует' работу, так всегда бывает когда нет сервера, чтобы возобновить - достаточно добавить >), если нужен счетчик то считаете количество < во всем файле до текущей позиции.
    Если счетчик должен считать долго, можно в начало файла записывать определенное число (выравнивая его по фиксированному количеству символов, например sprintf('%08u',$seq);) отдельным процессом на сервере запустить периодическое усечение этого файла, процесс так же ждет момента когда последний символ будет >, переименовывает файл, считает в нем количество, и обновляет запись в первоначальном файле, создав его если он не создался и после этого удаляет предыдущий переименованный.
    В этом случае не важно, в какой последовательности будет происходить работа с файлом и сколько в него будут писать приложений, пока размер файла меньше размера сектора (4кб минимум чаще больше) то операции с ним атомарны (под вопросом сетевые FS типа nfs/samba но на них и так проблемы) а значит сам файл станет механизмом контроля и синхронизации.

    p.s. Внимательно подумайте, вам нужен счетчик или нужно уникальное значение? Можно чтобы каждое следующее значение было ровно на единицы больше? может быть оно меньше предыдущего?

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

    Самый простой алгоритм - который по правде говоря не дает гарантий, но значительно понижает вероятность коллизий - взять текущее время, в милли-/микро-/пико-секундах, при наличии кучи машин - добавить номер этой машины, можно добавить еще случайное число (чем больше его разрядность тем ниже вероятность коллизий)
    sprintf("%u",microtime(true)*1000000);
    еще есть метод uniqid, он делает примерно то же самое но возвращает hex строку.

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

    @rPman
    Можно подменить методы, особенно если используется jquery, но и вообще любые методы можно подменять, заменяя своими

    например:
    var oldXMLHttpRequest=XMLHttpRequest;
    XMLHttpRequest=тут описываешь свой класс, который будет выступать прослойкой проверяя оп каким то критериям нужно ли пропускать запрос и вызывая oldXMLHttpRequest
    Ответ написан
  • Разветвители возможно ли подключить доп. оперативу?

    @rPman
    google: memory riser card
    https://www.amazon.com/IBM-Power-Server-Riser-00E2...

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