четверг, 13 ноября 2025 г.

Что такое SQLite?

 Что такое SQLite

SQLite — это внутрипроцессная библиотека, реализующая автономную, бессерверную, не требующую настройки, транзакционную СУБД SQL. Код SQLite находится в открытом доступе и, следовательно, может использоваться бесплатно в любых целях, как коммерческих, так и личных. SQLite — самая распространённая СУБД в мире, имеющая бесчисленное количество применений, включая несколько известных проектов.

SQLite — это встраиваемая СУБД SQL. В отличие от большинства других СУБД SQL, SQLite не имеет отдельного серверного процесса. SQLite выполняет чтение и запись непосредственно в обычные файлы на диске. Полноценная база данных SQL с несколькими таблицами, индексами, триггерами и представлениями хранится в одном файле на диске. Формат файла базы данных кроссплатформенный — вы можете свободно копировать базу данных между 32- и 64-разрядными системами, а также между архитектурами с прямым и обратным порядком байтов. Эти особенности делают SQLite популярным форматом файлов приложений. Файлы баз данных SQLite являются рекомендуемым форматом хранения Библиотекой Конгресса США. SQLite — это не замена Oracle, а замена функции fopen().

SQLite — компактная библиотека. При включении всех функций размер библиотеки может составлять менее 900 КБ, в зависимости от целевой платформы и настроек оптимизации компилятора. (64-битный код больше. А некоторые оптимизации компилятора, такие как агрессивная встраивание функций и развёртывание циклов, могут значительно увеличить объём объектного кода.) Существует компромисс между использованием памяти и скоростью. SQLite, как правило, работает тем быстрее, чем больше памяти вы ей выделяете. Тем не менее, производительность обычно довольно высока даже в средах с ограниченным объёмом памяти. В зависимости от способа использования SQLite может быть быстрее, чем прямой ввод-вывод в файловой системе.

SQLite тщательно тестируется перед каждым выпуском и имеет репутацию очень надёжной библиотеки. Большая часть исходного кода SQLite предназначена исключительно для тестирования и верификации. Автоматизированный набор тестов выполняет миллионы и миллионы тестовых случаев, включающих сотни миллионов отдельных SQL-операторов, и обеспечивает 100% покрытие тестами ветвей. SQLite корректно реагирует на сбои выделения памяти и ошибки дискового ввода-вывода. Транзакции соответствуют принципам ACID, даже если прерываются системными сбоями или перебоями питания. Всё это подтверждается автоматизированными тестами с использованием специальных тестовых программ, имитирующих системные сбои. Конечно, даже при таком количестве тестов ошибки всё равно присутствуют. Но в отличие от некоторых подобных проектов (особенно коммерческих конкурентов), SQLite открыто и честно сообщает обо всех ошибках и предоставляет списки ошибок и поминутную хронологию изменений кода.

Кодовая база SQLite поддерживается международной командой разработчиков, работающих над SQLite на постоянной основе. Разработчики продолжают расширять возможности SQLite, повышать её надёжность и производительность, сохраняя при этом обратную совместимость с опубликованной спецификацией интерфейса, синтаксисом SQL и форматом файла базы данных. Исходный код предоставляется абсолютно бесплатно всем желающим, но также доступна профессиональная поддержка.

Проект SQLite был запущен 9 мая 2000 г. Будущее всегда сложно предсказать, но разработчики намерены поддерживать SQLite до 2050 года. Именно с этой целью и принимаются проектные решения.

Мы, разработчики, надеемся, что SQLite будет вам полезен, и просим вас использовать его с пользой: создавать качественные и красивые продукты, быстрые, надёжные и простые в использовании. Просите прощения себе, как вы прощаете других. И как вы получили SQLite даром, так и отдавайте даром, выплачивая долг вперёд.

понедельник, 23 декабря 2024 г.

Снижение в симуляторе X-Plane

 Допустим, на самолете нет регулятора тяги: самолет типа небольшой турбопроб. На эшелоне, перед снижением убираем газ до нужной скорости. Затем ставим нужную высоту и активируем ее. Нажимаем на автопилоте кнопку IAS. Теперь уменьшаем газ и самолет начинает снижаться. Вертикальная скорость будет тем больше, чем больше уменьшили газ. Автопилот будет стараться сохранить скорость при нажатии IAS снижением.

Цель - не разогнать самолет при снижении.  

вторник, 17 декабря 2024 г.

приоритет в scenery_pack.ini

 Каким должен быть приоритет в scenery_pack.ini?

Порядок и, следовательно, приоритет в «scenery_packs.ini» (вы найдете его в папке «custom scenery») сверху вниз должны быть следующими (от локальных к глобальным):

1 собственные и пользовательские аэропорты

2 оригинальные аэропорты

(Aerosoft…, Global Airports…)

3 дополнительные региональные пейзажи

(VFR-Addons, такие как VFR-Objects, …)

4 X-EUROPE X-AMERICA X-ASIA ….

5 библиотеки

(OpenSceneryX …)

6 наложение фотопейзажей (если установлено, НЕ требуется для пакетов X-…)

(yOrtho4XP_Overlays, если вы используете Ortho4XP сцены)

7 фотопейзажи (если установлены)

(создаются с помощью G2XPL Ortho4XP…)

8 файлы сеток (если установлены)

(HD Scenery Mesh v4)


Обратите внимание, что файлы сеток HD работают только тогда, когда в этом регионе нет активных фотопейзажей, так как фотопейзажи имеют собственную сетку, полученную из стандартного x-plane dsf или из сетки пейзажа hd.

суббота, 27 июля 2024 г.

skycycle Posted Thursday at 01:38 PM

 X-Plane НЕ включает в себя вещи, созданные другими людьми - это то, что указано в «Основном списке библиотек». Вам нужно будет их установить.

НО – имейте в виду, что причина, по которой XP12 называется «XP12», заключается в том, что это НЕ XP10 или XP11. Основные изменения в работе программы в том, что НЕТ НИКАКОЙ гарантии обратной совместимости с вещами, созданными для X-Plane 11.

Просто швырять библиотеки и аэропорты, созданные для более ранних версий X-Plane, это все равно, что играть в русскую рулетку — с пятью патронами в шестизарядном пистолете.

Хотя аэропорты, которые по большей части представляют собой просто неработающие «красивые штучки», несколько более совместимы, чем самолеты.

А вот SAM Scenery Animations Manager, например, больше не работает и больше не обновляется. Таким образом, аэропорты, которые зависят от него, могут не работать - или, по крайней мере, вместо этого могут потребоваться новые дополнения/библиотеки OpenSAM (например openSAM-1.60-b2), обновленные для XP12. Надстройка AutoGate для анимированных трапов в настоящее время практически устарела в XP12 (которая в большинстве мест имеет собственные встроенные анимированные трапы). Better PushBack имеет новую версию для XP12.

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

Рекомендация: Я бы начал с того, что ничего не добавлял в XP12 (у которого теперь есть значительно улучшенные аэропорты). И полетайте на нем месяц «прямо с завода», чтобы посмотреть, действительно ли вам нужны дополнительные аэропорты.

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

Однако я рад видеть, что OpenSceneryX все еще работает.

четверг, 13 июня 2024 г.

Использование функции CURL в CPLUPLUS при считывании страниц HTML

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

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,ФУНКЦИЯ ...
curl читает страницу блоками постоянной длины и передает прочитанный буфер указанной ФУНКЦИИ. 
Она же обязана добавить блок к результату. 
В C++ многие используют лямда функцию вместо ссылки на реальную функцию. При выполнения готового примера 
я столкнулся с аварийным завершением программы: exit value 1073 741 819. В Windows 
это означает защита доступа к памяти!
После длительных поисков я нашел такой текст:
--------------------------------------------------------------------------------------

Curl_easy_setopt документирован сигнатурой

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

где параметр может быть одним из нескольких типов в зависимости от опции. Очевидно, что (как C API, где C не имеет перегрузки) он должен делать что-то странное, и это подтверждается рассмотрением the source, где мы видим, что Curl_easy_setopt реализован с помощью varargs.

CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);

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

Лямбда-выражения без захватов можно явно преобразовать в указатели на функции с помощью унарного +.

                                                                                              // v one char fix! 

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, +[](void *buffer, size_t size, size_t count, std::string *stream) -> size_t { auto s_size = size * count; stream->append((char *)buffer, 0, s_size); return s_size; });

Это преобразование также может происходить неявно, но curl_easy_setopt не предоставляет никакой информации о типе и, следовательно, не запускает преобразование автоматически.

***********************************************************************

Как только я поставил этот плюсик ВСЕ заработало!

 
  

понедельник, 15 апреля 2024 г.

Узлы - Knots

В чем разница между морской милей и узлом?

Морские мили/Nautical Miles

Морские мили используются для измерения расстояния, пройденного по воде. Морская миля немного длиннее, чем миля на суше, и равна 1,1508 наземной (или уставной/statute) мили. Морская миля основана на координатах долготы/longitude и широты Земли: одна морская миля равна одной минуте широты/latitude.

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

Слово «миля» может заставить вас задуматься, существует ли еще «морской километр». Нет. Международная морская миля используется во всем мире. В 1929 году организация, известная как Международная гидрографическая организация, официально установила длину ровно в 1,852 километра. После этого США и Великобритания использовали несколько разные размеры, но США приняли международную морскую милю в 1954 году, а Великобритания - в 1970 году.

Узлы/Knots


Измерение узла в 17 веке.

Узлы, с другой стороны, используются для измерения скорости. Один узел равен одной морской миле в час, или примерно 1,15 статутной мили в час.

Термин «узел» появился в 17 веке, когда моряки измеряли скорость своего корабля с помощью устройства, называемого «обычным бревном». Обычное бревно представляло собой веревку с узлами через равные промежутки времени, прикрепленную к куску дерева в форме куска пирога. Моряки опускали кусок дерева в воду и позволяли ему свободно плавать за кораблем в течение определенного времени (часто измеряемого песочными часами). Когда время истекало, они считали узлы между кораблем и куском дерева, и это число определяло их скорость.

понедельник, 18 марта 2024 г.

Как правильно определить размер обуви?

Как правильно определить размер обуви?

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

Предварительные рекомендации:

Не проводите замеры утром, лучше отложите эту процедуру на более позднее время – вечером стопа немного увеличивается.

Обязательно наденьте носки, с которыми вы планируете носить выбранную пару.

Измерьте обе ноги, и в качестве конечного значения возьмите больший результат.

Определяем длину стопы:


Встаньте на лист бумаги или сядьте, поставив ногу на пол.

Карандашом очертите ступню. При измерении держите карандаш вертикально, прижав к ноге.­

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

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

Определяем обхват в пучках:

 

Для определения объема возьмите сантиметр и измерьте им обхват в самом широком месте. Соотнесите этот размер с длиной стопы по таблицам ниже и узнаете полноту своей стопы.

МУЖСКИЕ РАЗМЕРЫ

Размер обуви3940 41 42 43 44 45 46 47
Длина стопы (мм) 250 257 263 270 277 283 290 297 303
Обхват в пучках (мм) для 6-ой полноты (стандартной) 252 256 260 264 268 272 276 280 284
Обхват в пучках (мм) для 10-ой полноты GRAND (увеличенной) 268 272 276 280 284 288 292 296 300

ЖЕНСКИЕ РАЗМЕРЫ

Размер обуви 35 36 37 38 39 40 41
Длина стопы (мм) 223 230 237 243 250 257 263
Обхват в пучках (мм) для 5-ой полноты (стандартной) 222 226 230 234 238 242 246
Обхват в пучках (мм) для 7-ой полноты GRAND (увеличенной) 230 234 238 242 246 250 254

Мечты о прошлом

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога