• Компонент для изменения мета данных в JPG для Delphi 7?

    OCTAGRAM
    @OCTAGRAM
    Компилируем в новой версии Delphi DLL, подключаем к старой, используя интерфейс, выраженный через WideString и safecall
    Ответ написан
    Комментировать
  • Как создать OLE объект для интеграции perco S-20 с внешним ПО?

    OCTAGRAM
    @OCTAGRAM
    Это функция в модуле System.Win.ComObj. Добавляете его в uses и вызываете. Результатом его является объект с интерфейсом IDispatch. Чтобы вызывать у него нетипизированные методы, значение ссылки на IDispatch можно привести к типу OleVariant. У переменной типа OleVariant, если написать точку, Delphi не покажет список подсказок, но вызов скомпилируется. Конечно, если в названии метода опечатка или типы значений не подходящие, то при исполнении будет ошибка.

    Чтобы получать подсказки и вообще работать типизированно, нужно генерить модуль импорта COM. В таком модуле Delphi создаст псевдокласс, у которого вместо конструктора Create будет классовая функция Create, и синтаксически похоже: НазваниеCOMКласса.Create. Также можно создавать самостоятельно типизированные ссылки: CreateOleObject(…) as IИмяОсновногоИнтерфейса.
    Ответ написан
    Комментировать
  • Delphi подключение через API?

    OCTAGRAM
    @OCTAGRAM
    Из известных мне компонентов Indy это может, но, скорее всего, он потребует обновления. Не уверен, какая его версия подходит для Delphi 7 (ну почему Delphi не новый 10.3.3???). К нему нужен OpenSSL, но в комплект он не входит. И вот тут, в зависимости от того, насколько старый Indy, будет нужен либо в новом обычный OpenSSL DLL, либо в старом патченный специально для Indy: https://indy.fulgan.com/SSL/

    Также OpenSSL DLL может не подойти версии новее 1.0. В 1.1 поломали обратную совместимость, перестав экспортировать некоторые символы. Не факт, что в той версии Indy, которая совместима с Delphi 7, переделали на версию 1.1.

    Компонент, через который стало можно работать с HTTP и, самое важное тут, с HTTPS, средствами Windows, появился из коробки только в XE7 или где-то в этом диапазоне. В 7 можно попробовать как вариант напрямую WinInet API.
    Ответ написан
    Комментировать
  • Можно ли игнорировать CORS в целях дебага?

    OCTAGRAM
    @OCTAGRAM
    Может быть, просто localhost разрешить на сервере?
    Ответ написан
  • CORS не работают мажсайтовые запросы?

    OCTAGRAM
    @OCTAGRAM
    Для POST запроса нужно сначала положительно ответить на метод OPTIONS. Он нормально отрабатывает? В обычный роутер такой метод может не идти.
    Ответ написан
  • Почему политика CORS не блокирует запросы на сторонние ресурсы (домены) при загрузке медиа файлов?

    OCTAGRAM
    @OCTAGRAM
    CORS не блокирует то, что можно было раньше, CORS разрешает то, что раньше было нельзя. Медиафайлы читать и раньше было можно.
    Ответ написан
    Комментировать
  • Как поднять свой прокси сервер для обхода CORS?

    OCTAGRAM
    @OCTAGRAM
    На любом движке с HTTP-сервером и клиентом такое делается. Я адаист, вот на Аде и сделал.
    Ответ написан
    Комментировать
  • Можноли из своей ЭЦП сделать SSL для сатйа?

    OCTAGRAM
    @OCTAGRAM
    ГОСТ сертификаты для сайтов продают тут: https://cainet.ru/content/ssl
    Самому нельзя сделать
    Ответ написан
    Комментировать
  • Какой репозиторий можно использовать вместо packages.sury.org/php/?

    OCTAGRAM
    @OCTAGRAM
    Как ещё выясняется, там поудаляли старые дистрибутивы Debian, и не понятно, где же теперь взять зеркало.

    Пока что выживаю так: https://bitnami.com/stack/lapp/installer
    Ответ написан
    Комментировать
  • Какую платформу выбрать для десктопного приложения с учетом поддержки win XP,7,8,10?

    OCTAGRAM
    @OCTAGRAM
    Да, XP всё же желательно исключить. В Vista добавили мониторы Хоара на уровне API и сокеты IPv6 сдвоили с IPv4 по типу Linux. Гипотетически можно было бы переключать реализации мониторов между XP'шным, но вот почему-то не сделали так разработчики ни в коммерческих компиляторах, ни в open source порта pthreads единого не было. С IPv6 та же история, можно было бы гипотетически, готовясь открыть соединение, получив от DNS список адресов IPv6 и IPv4, перемешав их, не зная заранее, какой сработает, подготовить два сокета, IPv4 и IPv6, как это делал Firefox, но куча остального софта вместо этого использовала кмк грязный хак, который есть в Linux, а в Vista этот грязный хак воспроизвели, и все кинулись его использовать вместо того, чтоб писать как положено. Ничего не поделать, слишком много проблем совместимости с XP.

    Компьютеры, как можно понять, новизной не отличаются. Я на таких работал. С# и Java безальтернативно навязывают трассирующую сборку мусора, и это просто кошмар с ними работать. Программам с трассирующей сборкой мусора нужно для хорошей работы в 5 раз больше оперативной памяти, чем занято их объектами. Можно поискать график, на котором будет катастрофическая деградация производительности, когда памяти всего лишь в 2 раза больше, чем занято. Ещё когда таких программ становится несколько, они по очереди в своп ходят, вытесняя друг друга из памяти. А ещё какой-нибудь касперский содержимое загружаемого свопа неукоснительно проверяет во избежание. Как же я настрадался в техподдержке.

    С C++ есть все шансы развести глюкотрон. Python сочетает лучшее из двух миров: и тормоза, и глюкотрон. Но глюкотрон по другой причине, из-за динамической типизации так называемой.

    А Delphi вполне себе рабочий инструмент. Против глюков есть типизация и проверки диапазонов, по умолчанию выключенные, но ведь можно включить. Сборки мусора нет. Контейнеры на счётчиках ссылок можно взять в Spring4D.
    Ответ написан
    4 комментария
  • Счётчик успешных операций в минуту на Delphi?

    OCTAGRAM
    @OCTAGRAM
    Обычно календарь юникса измеряется в секундах, и только в JS исключение с миллисекундами. Если там правда миллисекунды, может, тогда заменить целочисленное деление div на операцию с плавающей точкой /

    Также хорошей практикой будет использовать по возможности не гражданский календарь, а монотонное время. В языке Ada это приложение к стандарту D.8 Monotonic Time, описывающее пакет Ada.Real_Time. В Delphi тот же функционал спрятан в модуль с не очевидным названием System.Diagnostics. Это если программа не перезапускается в течение всего интересующего интервала.
    Ответ написан
    Комментировать
  • Если сидя через VPN загружать картинки со своего жёсткого диска, то IP определяется настоящий?

    OCTAGRAM
    @OCTAGRAM
    Если в картинки стеганографией вшит IP, использовавшийся на момент кешированного запроса, то JavaScript может его прочитать.

    Ключевое слово SuperCookie
    Ответ написан
    Комментировать
  • Какие есть подходы для взаимодействия по websockets?

    OCTAGRAM
    @OCTAGRAM
    Ну как, разрабатываете протокол и воплощаете.

    Протоколы, которые я делал, устроены примерно по такой схеме:

    На каналы WebSocket ставится мультиплексор в оба направления. Мультиплексор различает новые запросы и ответы на старые.

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

    Для получения ответов мультиплексор на стороне JS хранит изнанки обещаний (кортеж из замыканий resolve и reject) в карте по ключам запроса. При получении мультиплексором ответа из карты по ключу извлекается такая изнанка, и вызывается resolve или reject.

    В JavaScript, таким образом, асинхронная функция может сделать await new Promise, с функцией, которая сохранит аргументы-изнанку resolve&reject в карте мультиплексирования, отправит запрос, и такое выражение в асинхронной (async) функции вернёт сразу ответ или исключение. Аналогично делается в Go.

    В итоге получается двусторонний RPC, с обоих сторон вызываемый в синхронном стиле. Придумываете, как сериализовать/распечатывать аргументы, и делаете.

    На стороне Go я бы в качестве аналога кортежа из замыканий resolve и reject использовал монитор. Монитор защищает двух- или одноэлементный объект, в котором одна ячейка выделена для будущего результата, а вторая для ошибки, или они совмещены. Такие объекты с мониторами складываются в карту с ключами. Есть способ при получении ответа от JS положить значение или ошибку в монитор так, чтоб сработала условная переменная. Условная переменная срабатывает, когда под защитой монитора что-то появляется. Горутины, которые хотят от JS ответ, кладут объект с монитором в карту, отправляют по WS запрос и повисают на ожидании условной переменной.
    Ответ написан
    Комментировать
  • Как удалить option'ы с определёнными значениями?

    OCTAGRAM
    @OCTAGRAM
    Можно обходить всех children тега select. Обходить лучше с конца, ведь результат children — массивоподобная штука, обновляющаяся автоматом. Если мы идём в цикле по индексам вперёд и удаляем, то начинаем пропускать. Как вариант, идти вперёд, но после удаления индекс не инкрементировать. Или декрементировать, чтоб на следующей итерации инкремент вернул как было. Или заранее чем-нибудь вроде Array.prototype.slice.call превратить массивоподобный children в настоящий массив, и там уже с этим неживым снимком поработать.
    Ответ написан
    Комментировать
  • Как изменить CORS?

    OCTAGRAM
    @OCTAGRAM
    mode: 'no-cors',
    Убирайте
    Ответ написан
    Комментировать
  • Что нужно исправить что бы не появлялась ошибка крос домен?

    OCTAGRAM
    @OCTAGRAM
    ВКонтакте такого разрешения не давал, вот и всё.

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

    OCTAGRAM
    @OCTAGRAM
    Я бы просто кукис в домене «.имя.домена» использовал. Такие кукисы, с точкой в начале, действуют во всём домене с поддоменами. Другой вариант — подгружаем с поддомена динамический скрипт в домене. Генератор скрипта видит содержимое сессии и генерит скрипт, который покажет или скроет кнопки.
    Ответ написан
    Комментировать
  • Почему не отправляется post запрос (cross domain) из vuejs(axios) в laravel?

    OCTAGRAM
    @OCTAGRAM
    Пожалуйста, обратите внимание: в Access-Control-Allow-Origin запрещено использовать звёздочку * для запросов с авторизационными данными. Там должен быть именно источник, как показано выше. Это дополнительная мера безопасности, чтобы гарантировать, что сервер действительно знает, кому он доверяет делать такие запросы.
    Ответ написан
    Комментировать
  • Как слать запросы к удаленному серверу с localhost, не нарушая cors политику?

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

    Больше зависит от сервера. Если запрос GET, то сервер должен посмотреть, а нет ли в запросе заголовка Origin: http[s]://localhost[:порт] (без / на конце), и если да, то отзеркалить его в Access-Control-Allow-Origin. Если CORS запросы могут поступать с единственного Origin, то можно всем без разбору ставить заголовок Access-Control-Allow-Origin: http[s]://localhost[:порт]

    Для GET этого может быть уже достаточно.

    Для POST и других методов уже надо реализовать OPTIONS, отвечая 204 с заголовками Access-Control-Allow-Origin и Access-Control-Allow-Methods, а потом в ответе на сам POST тоже эти заголовки предоставлять.

    Для разрешения отправления нестандартных заголовков запроса нужен Access-Control-Request-Headers, а для разрешения чтения — Access-Control-Expose-Headers
    Ответ написан
    Комментировать
  • Представление символа в char?

    OCTAGRAM
    @OCTAGRAM
    Поправка: символы в ASCII кодируются от 0 до 127, и знаковость char на них не распространяется.

    Всё, что за пределами 127, — это Latin-1, OEM, ANSI, UTF-8, что угодно, но не ASCII. Пишут, что всё это называют расширенным ASCII, но как можно о чём-то говорить, если это КОИ-8, и другие кодировки.

    Приведённый код не переносим. Например, в Windows 10 есть возможность для старых программ врубить кодировку UTF-8 вместо всяких 1251 и 866. Там ваши ╬ совсем по-другому кодируются. Используйте только Юникод. В разных языках программирования и разных трансляторах качество стандартной библиотеки варьируется. Если стандартная библиотека бяка, придётся через API операционки работать, пока там до этих жирафов дойдёт.

    Хорошим тоном будет, обнаружив консоль, писать в неё через юникодные API, а, обнаружив перенаправление, писать байты UTF-8, игнорируя ACP_OEM и пр., чтоб быстрее похоронить зоопарк всего, отличного от Юникода.
    Ответ написан
    1 комментарий