Pull to refresh
7
0
Павел @kkmspb

фулстек разработчик С, С++,PHP,JS

Send message

Переименовали свои классы в QpSqlRelationalTableModel, т.е. с префиксом Qp.

Используем в коммерческом проекте несколько лет, все в целом устраивает, понемногу допиливаем/шлифуем функционал.

Идея нашего QpSqlRelationalTableModel в том, чтобы в select запросе добавлялось ещё и значение int id внешней связи, кроме тестового представления.

В QpTableView int id визуально скрывается, так что для пользователя ничего внешне не меняется.

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

Этот подход решает все проблемы со связанными таблицами. Не надо делать никакие лишние запросы.

На самом деле сервер (под виндой) принимает по http команды на Пробитие чека на кассовом аппарате. Понятно, что это занимает несколько секунд. Другой http запрос сервер в этом момент примет, т.к. в QTcpServer создаётся ещё отдельный поток, далее мы помещаем и это задание в очередь основного потока для пробития чека, но смысла тут мало, т.к. касса в этот момент занята другим заданием и пихать туда ещё одно не разумно, лучше клиенту ответить, что касса занята.

Я сагрился именно на символ '[' в зависимости от того куда вы потом перенаправляете он может интерпретироваться как символ regex

Но на нескольких других компьютерах с другими версиями curl ничего не теряется (у клиента)

https://kkmspb.ru/software/BIT-driver-KKT/download/

Я тут выложил тестовую программку под виндой для отладки АПИ с честным знаком в 2025г., там есть логи.

Это по итогам первоначального тестирования.

Я рад за пользователей Qt 6.4. Но все надо проверять и в Qt тоже не идеально все, я например помню недоделку QSqlRelationalTableModel, которую до сих пор никто до ума не довел... Это только небольшая часть развитие которой я сделал сам.

Правда, это на торговых автоматах, но там касса-то тоже есть

Я разрабатывал пока только для пользователей, у который ПК под виндоус. Я думаю понятно, что чужаку получить доступ к пк сложно будет.

Так падал клиент или сервер?

  1. Клиент не падает, а принимает через старый curl некорректно тело от сервера (или декодирует криво - непонятно)

  2. Обновить curl клиента не представляется возможным (в ближайшее время), т.к. он на линакс сервере живет, который чуть тронешь и крешится. Этот сервер пользователь использует много лет и там много функционала, от которого не отказаться ради кассы.

Вы в каком десятилетии живете? Windows Server можно установить как версию без Гуя вообще начиная с 2008 года. Амазон предлагает виртуальные машины с виндой с доступной машине памятью начиная от половины гигабайта. Также как и линукс

Вы вообще читаете? Я не про то какой мне сервер установить и где. Сервер является частью приложение, написанного на с++. В приложении много чего есть, в том числе и http сервер для получения команд из сети.

Речь была только о нюансах http клиента и как их решить удалось. Если у кого есть ещё похожие проблемы хотелось бы услышать.

Посмотрел, на самом деле 34Мб (в памяти).

Да, обеспечить конкуренту проблемы это весьма реальный, годный мотив.

Вы представляете "обычного" пользователя, ну с оборотом до 10млн.р/год. Вот у него одна касса.

Кому он конкурент? И кто ему на кассе захочет миллиард пробить? Кинокомедия.

Я программу для таких пользователей пишу.

Починить сервер, чтобы от неожиданного запроса не крашился

Вы вообще читаете? Чей сервер? Это у пользователя для клиента используется php на его линакс сервере, где его база товароучетки хранится и куча сопутствующих библиотек задействовано. И он не может свой сервер обновлять, вот тогда он крэшится.

Так я и говорю, что желание-то может возникнуть.

Ну допустим возникло желание пробить чек на чужой кассе, какая "вам" выгода? Нагадить конкуренту? Ну допустим.

Кстати можно не больше 21миллиона пробить.

Ну допустим пробили, пользователь увидел, сделал возврат конечно.

Далее начал пользовать использовать код проверки данных из ЛК и добавлять в данные чека непонятный хеш. Сервер проверяет этот хеш, он знает как он вычисляется , а вы нет.

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

Если речь идёт о миллиардах, найдутся способы.

О каких миллиардах? Не смешите...

Ну, ваш пользователь молодец. И вы молодец, если смогли пропихнуть HelloWorld на прод 

Почему Hello world? Поддержка атол, штрих, меркуриев по одному протоколу. Банковское терминалы протокол аркус.

Курьеры со смартфона чеки бить могут.

Маркировка в разрешительном режиме на днях будет готова.

По моему все варианты управления кассой реализованы.

Плагины есть для админки ВордПресс, джумла, Битрикс.

Чего забыли?

У curl changelog длиннее бороды Карла Маркса. Читайте, что там за issues и где они исправлены

Вы не внимательно читали. Ситуация была такова, что пользователь не мог переустановить curl на другую версию, т.к. у него кастомный линакс тянул обновления всех зависимостей и потом сервер крэшился. Надо было выкручиваться как-то по другому. Через сокет все нормально заработало.

То есть задача стояла помочь пользователю избежать лишних проблем.

Вообще, довольно любопытно полагаться на «кто захочет пробивать чеки на наших ккт». Ну, предположим, что я захочу, и пробью вам 8 миллиардов рублей, удачи с налоговой.

А кож проверки целостности данных как узнаете, он только в ЛК у пользователя виден.

Новичок, который взял qt4 и давай херячить ПО для кассы, какой то странный.

У меня пользователь только-что установил этот сервер себе на ПК , сделал сам себе товароучетку в облаке на php/js/mysql и бьёт чеки из товароучетки и все у него норм.

Ктож серверы под Виндой гоняет? Там же ГУЙ, на него надо еще пару-тройку (админы поправят) гигов памяти.

Каких гигов памяти, у меня до 100МБ все приложение в памяти.

Сервер... http сервер... на кутях... Мсье знает толк (с)

Надо пояснить, что http сервер является частью приложения под виндой, написан на С++, как все приложение соответственно. Сервер принимает по сути одно соединение и не предназначен для приема нескольких соединений одновременно.

Ну да... curl сволочь такая теряет... исправить нельзя... Виновато всё вокруг за исключением своих рук.

Я бы хотел поверить, что curl 7.29.0? нормальный и я что-то не так делаю, но точно такой же запрос на сокете работает полноценно, а на curl-е точно такой же (вижу на логе сервера) не работает. Как об'яснить?

1
23 ...

Information

Rating
Does not participate
Location
Парголово, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Senior
From 250,000 ₽
OOP
Database
MySQL
PHP
C++
Programming microcontrollers
Qt
Software development
Development of drivers
C