• Персональный гугл, если ли?

    OCTAGRAM
    @OCTAGRAM
    Я пользовался Яндекс.Сервером и где-то даже сохранил сборки для Windows и Linux. Умеет ходить по HTTP, качать pdf и в них искать. По прямому назначению это нужно использовать для своего сайта. У него обход один, и новая информация только после полного обхода появляется. Может петлять где не надо, и пока петляет, это всё считается, что обход не закончен, и инфа новая не появилась. Мне приходилось через прокси корректировать поведение, перенаправления свои ему вставлять.
    Ответ написан
    Комментировать
  • На каком языке пишут программы для электронного блока управления газоболонного оборудования?

    OCTAGRAM
    @OCTAGRAM
    Кроме классических императивных языков это могут быть языки стандарта ГОСТ Р МЭК 61131-3 (IEC 61131-3). Там штук пять языков, но из них текстовые только два, ST = Structured Text, похож на Паскаль, и IL = Instruction Language, что-то вроде ассемблера. Настоящий ассемблер на железке ARM или AVR, а IL искуственный, не как в процессорах. Другие языки графические, это релейные диаграммы, блок-схемы и что-то ещё, что могут проектировать и читать люди не программисты. Всю эту смесь модулей можно загрузить в ПЛК, и будет работать. Внутри ПЛК может работать интерпретатор, который на каждом такте запускает исполнение во всех модулях. Интерпретатор может увидеть, что какой-то модуль работает слишком долго, и прервать, не дать подвесить весь ПЛК, не дать привести к ущербу. Поэтому это популярно. В некоторых моделях ПЛК сделана трансляция в Си вместо интерпретатора, но в отличие от программирования на чистом Си, из конкретного странно работающего ПЛК можно скачать программу, которая на нём крутится, в исходном виде, на языках ПЛК. В графических языках блок-схемы будут расположены в том же месте. Когда я учился на приборостроение, у нас была среда CoDeSys
    Ответ написан
    Комментировать
  • Как правильно компилировать Pascal код?

    OCTAGRAM
    @OCTAGRAM
    Это расширение ищет Free Pascal в PATH. Может быть, он установлен, но его нет в PATH. Нужно либо в настройках расширения указать полный путь к fpc, либо отредактировать переменную окружения PATH вручную ....

    Также можно другой транслятор пробовать. Для Delphi (с регистрацией можно получать бесплатную лицензию) нужно в настройках расширения указать транслятор dcc64.exe или dcc32.exe
    Ответ написан
    Комментировать
  • Chrome не посылает cookie с разрешенным CORS?

    OCTAGRAM
    @OCTAGRAM
    На первом снимке куки из таблицы принадлежат домену localhost, а междоменный запрос отправляется на узел что-то-там.cyclic.app. С этим запросом могут быть отправлены только куки от родного домена что-то-там.cyclic.app или наддомена (.cyclic.app)
    Ответ написан
    8 комментариев
  • Почему в буфер вставляется только первый символ?

    OCTAGRAM
    @OCTAGRAM
    Описание CF_TEXT (1):

    Text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data. Use this format for ANSI text.


    В Юникодных версиях Delphi обычный тип string = UnicodeString. А PChar = PWideChar. В этом формате символы кодируются двухбайтовыми числами. Все платформы, поддерживаемые Delphi, little endian, и это значит, что если число состоит из двух байт, то сначала идёт младший, а потом старший. У латинских букв и простых символов пунктуации номера маленькие, в диапазоне 32-126, для них хватает 7 бит. Так что номер буквы h в двухбайтовом представлении состоит из одного младшего байта с номером буквы h и неиспользуемым нулевым старшим байтом. По формату CF_TEXT нулевой байт значит конец строки.

    В юникодных Delphi вам нужен формат CF_UNICODETEXT. А под память нужно выделять и копировать (2 * Length(Value) + 2) байт.
    Ответ написан
    1 комментарий
  • Почему Delphi выдаёт эту ошибку?

    OCTAGRAM
    @OCTAGRAM
    Список, у которого можно выйти за границу, я в коде вижу только один, chart1.SeriesList. Если это так, надо в дизайнере форм настроить chart1, чтоб было не меньше двух семейств точек
    Ответ написан
    1 комментарий
  • Dependency Injection и Spring4d?

    OCTAGRAM
    @OCTAGRAM
    Смущает конструкция

    aContainer.RegisterFactory<TCoffeeMakerFactory>;

    Здесь ведь даже не передана никакая реализация функции конструктором.

    И от фабрики я бы ожидал, что у неё просто нет параметров, которые движок DI не мог бы подставить. То есть,

    TFunc<ICofeeMaker>

    А если параметры всё же есть, то либо движок DI должен поискать у себя фабрику строки и целого цисла, либо эти параметры задаются RTTI атрибутами. Или задаются при регистрации какой-то из фабрик, ICoffeeMaker или IKitchen.
    Ответ написан
  • Django 4.1.3 + React (axios) - как настроить CORS?

    OCTAGRAM
    @OCTAGRAM
    Что просят, то и добавить.

    CORS_ALLOW_HEADERS = ('content-disposition', 'accept-encoding',
                          'content-type', 'accept', 'origin', 'Authorization',
                          'access-control-allow-methods')
    Ответ написан
    Комментировать
  • Как делать ассемблерные вставки на х64?

    OCTAGRAM
    @OCTAGRAM
    inline void add() {
      ((void (*) ()) ((unsigned char *) (&Jsc) + 0x1500)) ();
    }


    Как-то так
    Ответ написан
    2 комментария
  • Android пишет "Приложение не установлено". Как побороть?

    OCTAGRAM
    @OCTAGRAM
    Я бы посмотрел в сторону, какие ключи подписи apk стоят. Может быть, телефону не нравится, когда для одного id приложения то один ключ подписи, то другой
    Ответ написан
    2 комментария
  • Как компилировать через make?

    OCTAGRAM
    @OCTAGRAM
    На снимке упомянуты чужеродные для экосистемы Delphi утилиты cl.exe и rc.exe. cl.exe — это чужеродный транслятор C/C++, из бедной экосистемы, в которой нет ни одного виртовского языка программирования. rc.exe — это транслятор ресурсов, взятый из этой же не блистающей мастерством выбора поддерживаемых языков программирования экосистемы.

    Обновление: поизучал код, и по результатам чтения, похоже, нужен вариант 3.

    Вариант 1. Программист, пишущий на Delphi, когда по какой-то причине пришло время писать на C или C++, скорее взял бы bcc32.exe. По этой ссылке вы можете скачать комплементарный Delphi транслятор C или C++:

    https://www.embarcadero.com/free-tools/ccompiler

    Что касается rc.exe, то его заменой может послужить https://docwiki.embarcadero.com/RADStudio/Alexandr... , который есть в Delphi, и в бесплатный пакет Embarcadero C++ его тоже кладут.

    В батнике нужно заменить все cl.exe на bcc32.exe, а все rc.exe на brcc32.exe.

    Вариант 2. Ещё можно такой эксперимент провести с транслятором отсюда, не забывая выбрать разрядность, соответств.... Вместо cl.exe использовать g++.exe, а вместо rc.exe — windres.exe

    В каждой экосистеме свои имена утилит.

    Вариант 3. Мне доводилось разные библиотеки собирать, и прямыми руками написанный код более-менее везде одинаково собирается. К сожалению, есть те, кого нельзя допускать до C++, и вот они-то до C++ добираются и свинячат. Конкретно этот разработчик не смог придумать ничего лучше, чем подключить MFC, проприетарную непереносимую библиотеку. MFC поддерживается в экосистеме Digital Mars C++.

    Нужно взять:

    * ftp.digitalmars.com/Digital_Mars_C++/MS/4.21/MFC4.... версия MFC для Digital Mars C++
    * https://digitalmars.com/download/freecompiler.html отсюда Digital Mars C/C++ Compiler, это вторая ссылка после IDE
    * по той же ссылке Basic Utilities, там есть заглушка для cl.exe, конвертирующая аргументы командной строки в вызов Digital Mars C++
    Ответ написан
    1 комментарий
  • Как написать расширение для браузера в виде dll?

    OCTAGRAM
    @OCTAGRAM
    NPAPI и PPAPI, которые упоминались, нужны для воплощения тегов object и embed, и это не ваш случай, это не про перехват. Вам нужны ActiveX и XPCOM, но на них сейчас уже практически невозможно делать расширения.

    Так что для вашего случая подойдёт только WebExtensions. Там обязательно писать часть кода на JavaScript. Вы можете свой перехватчик написать в виде локального веб-сервера и общаться между браузером и перехватчиком по HTTP. Ну или WebSocket. Или даже чистый сокет, расширению можно их открывать. Если ваше расширение относительно тупое, а локальный веб-сервер умный, то локальный веб-сервер на чём угодно можно писать.

    Это реальная практика. Например, Контур.Эльба состоит из двух частей, из агента (HTTP-сервер) и расширения. Для всяких пенсионных и страховых фондов нужно свои расширения и агенты ставить, чтоб до ЭЦП достучаться, вот они все примерно по одному принципу сейчас делаются.

    При этом нужно иметь в виду, как сделаны расширения. Браузеры сейчас работают в несколько процессов и несколько потоков. У расширения есть возможность чего-нибудь повыполнять в самом главном потоке окна браузера, где живут дополнительные кнопки панели, но такой код стремятся свести к минимуму. Ещё у расширения есть невидимая вкладка, в которой исполняется background.js, и большинство кода, по идее, переносится в неё. Но из этой вкладки напрямую нельзя достучаться до DOM вкладок с сайтами, поэтому есть отдельный механизм, как забрасывать привилегированные скрипты во вкладки с сайтами. И потом разрозненные части расширения между разными потоками и процессами должны общаться сообщениями.

    Чтоб перехватить нажатие клавиши, это как раз нужно забросить в чужую вкладку скрипт. Дальше начинается вопрос, что с этим делать. Ваш гипотетический умный HTTP-сервер на localhost должен получить сигнал о перехваченной клавише, среагировать и послать ответ. Но асинхронная модель исполнения браузера не позволит получить ответ сразу. А обработчик события клавиши должен принять какое-то решение. Впитать клавишу, не пропустить её обработку дальше, или пропустить. return false или return true. Тут либо в JavaScript закодировать принятие решения, либо использовать нерекомендуемый синхронный XHR.

    Даже если пробить брешь, и как-нибудь через не хочу подгрузить библиотеку, есть такая особенность. В операционных системах есть API, чтобы лишить процесс привилегий, и рабочие процессы браузеров создаются как раз такими. Безправными и слепыми. Их доступ во внешний мир сделан через трубу с основным процессом браузера, через спроецированную память и так далее. Не имея доступа к этой трубе и не зная, как ей пользоваться, вы библиотекой там ничего особо не поделаете. Устройство DOM отличается у каждого браузера и переплетено со сборкой мусора JavaScript. Если разработчики не предоставили специального, совместимого со сборкой мусора, интерфейса, как это было раньше в Firefox и Internet Explorer, там никак стабильно и переносимо не подкопаться, кроме как через JavaScript.
    Ответ написан
    Комментировать
  • Почему C++ считает что функция не существует, но библиотека в которой она есть подключена?

    OCTAGRAM
    @OCTAGRAM
    Эта функция появилась минимум в Windows Vista, а в WinAPI SDK при помощи препроцессора управляется видимость новых функций. Вам какого-то DEFINE может не хватать, чтоб указать, WinAPI какой минимум версии Windows вы хотите сделать доступным себе.
    Ответ написан
    Комментировать
  • Как удалить необходимые узлы из бинарного дерева?

    OCTAGRAM
    @OCTAGRAM
    В бинарном дереве поиска, чтобы удалить узел с детьми, его нужно сначала обменять с соседним более нижним, а потом удалить на новом месте. Под соседом понимается не связанный узел, а ближайший по значению. Алгоритмически это правейший потомок непосредственно левого сына или левейший потомок непосредственно правого сына. Так как он левейший или правейший, одного узла у него не будет, вы точно сможете его там удалить.

    Пример дерева:

    .
       4
     2   6
    1 3 5 7


    Если выстроить дерево поиска в ряд, то получится 1-2-3-4-5-6-7. Чтобы удалить 4, надо, например, обменять 4 и 5, временно нарушив порядок в дереве, а потом удалить 4 в новой позиции. В дереве не стало 4, а порядок снова восстановлен.

    1-2-3-4-5-6-7
    1-2-3-5-4-6-7
    1-2-3-5-6-7


    .
       5
     2   6
    1 3 4 7


    .
       5
     2   6
    1 3   7
    Ответ написан
    Комментировать
  • Существют ли IDE с одновременной командной разработкой?

    OCTAGRAM
    @OCTAGRAM
    Видел такое в довольно старой Borland CodeWright. То, что вы ищете, называется Collaborative real-time editor. В вики упомянуты MoonEdit, SubEthaEdit и Gobby.
    Ответ написан
    Комментировать
  • Как вернуть массив объектов из функции?

    OCTAGRAM
    @OCTAGRAM
    Используйте std::vector, std::span и std::array
    Ответ написан
    Комментировать
  • Как инициировать запуск desktop приложения через браузер?

    OCTAGRAM
    @OCTAGRAM
    Можно:

    1. Открыть ссылку с зарегистрированным протоколом
    2. Дать скачать файл с зарегистрированным расширением
    3. Попросить установить расширение браузера, и через него выполнить действие с привилегиями
    4. Попросить установить агент, и пока он запущен, приказать ему через localhost


    Ну и есть относительно кислые варианты типа дать скачать cmd или vbs, чтоб запустили
    Ответ написан
    Комментировать
  • Как присвоить приложению внешний ip адрес из VPS?

    OCTAGRAM
    @OCTAGRAM
    Если доступ нужен исключительно вам, вы можете пробросить порт через SSH соединение, и тогда уже с вашего localhost можно будет зайти на сервер.
    Ответ написан
    Комментировать
  • Если бы вам предложили написать свою ОС с нуля (никаких Linux), какой ЯП вы бы выбрали?

    OCTAGRAM
    @OCTAGRAM
    Ада 95.

    Имеет транслятор в Си (опционально с исключениями C++) AdaMagic, но при этом экранирует программиста от специфичных для Си приколов, когда код на Си не другим транслятором создаётся, а человеком пишется. Вне зависимости от того, трансляция в Си или C++, есть RAII. И есть верификация SPARK. Хотя, если так подумать, в ядре RAII — не очень хорошая идея, а вот верификация — вполне.

    У меня на уме как раз есть такая операционка. Это нужно для трансляции для браузеров. Я хочу зелёные потоки на WebAssembly натянуть. При выбранном подходе Wasm становится как бы микроконтроллером, а вызовы из JavaScript становятся прерываниями. User-space код — это код зелёных потоков, а так, как зелёных потоков может быть много, то какой-то код ещё должен переключать контекст. И это получается что-то вроде kernel-space операционной системы. Вот это самое ядро гипотетически ещё можно SPARK верифицировать.
    Ответ написан
    3 комментария
  • Каким образом запросить новый ключ на Delphi 10.3 Community Edition?

    OCTAGRAM
    @OCTAGRAM
    У вас не будет бесплатного ключа на 10.3. Бесплатные пользователи также являются и бесплатными тестерами, и тестируют они всегда более-менее последнюю версию. Сейчас версия Community Edition 10.4.2. Скачайте и получите ключ на неё тем же способом, что и раньше. Новый бесплатный ключ будет действовать год, а потом снова будет нужно обновиться.
    Ответ написан
    Комментировать