P.S.
С бинарником из твоего репозитория перестало работать когда обновился до Xcode 4.4. Если не дожидаться Xcode 4.5 release, то как лечить? Тащить исходники в проект?
>>> Советуют добавлять build step и там запускать скрипт с lcov
Это как раз понятно.
>>> Судя по всему, плагина нет
То есть, после этого полученную пачку html заархивировать в виде artefact, качать и смотреть глазами.
Просто при использовании gcovr мне jenkins может нарисовать вот такие веселые картинки.
К тому же, это чудо пытается обсчитывать coverage по классам и conditionals (комбинаторный перебор всех возможных веток if/case путей выполнения). Правда, я пока не совсем понимаю как этим пользоваться, поскольку не видно информации, какие из вариантов остались за бортом.
lcov и coverstory предоставляют лишь покрытие по строкам кода, что также весьма неплохо.
>>> Что касается программной работы со структурой проекта — это прикольно и интересно, я только сходу не могу придумать задач, зачем бы это могло быть нужно.
0. Прибить имеющиеся индексы
1. Заворачиваешь порции Insert-ов по несколько тысяч в транзакции
2. Разделяешь создание запросов и их исполнение по разным thread, ибо первое — CPU, а второе IO bound.
3. Ждешь окончания транзакций и перестраиваешь индексы.
Принадлежность недели к тому или иному году определяется законодательно для каждой страны. И посему зависит от локали. Правила порой бывают гораздо хитрее, нежели вычитание одного дня.
Работа с интервалами дат напрямую — очень трудная задача. Самостоятельно этим заниматься не стоит если имеется такая возможность.
Если у вас есть знакомые «специалисты в разработке под iphone» — посмотрите с ними WWDC 2011 — 117performing_calendar_calculations.
Там очень хорошо описаны нюансы работы с датами и локализациями.
С последующей ручной обработкой дат и агрегацией в ObjectiveC коде. Я считаю данный подход в корне неверным. «Как раз для этих целей» — это SQL.
Свои аргументы я привел уже дважды — в самой статье и предыдущем комментарии. У меня складывается впечатление, что вы не потрудились с ними ознакомиться.
1. Имелось в виду что способ хранения дат не критичен для данной задачи. Стандартные функции SQLite все равно не смогут обработать их с учетом заданной локали.
Если вам известен способ задавать локаль SQLite — пожалуйста, опишите его.
2. Вопросы оптимизации остались за пределами данной статьи. К ним относятся построение индексов, выбор способа хранения дат, детали реализации ObjcFormatAnsiDateUsingLocale.
3. Извольте показать правильный с вашей точки зрения запрос «CREATE TABLE»
На самом деле, нет разницы как хранить даты. Проблема заключалась в том, что SQLite не учитывает локаль при работе с Week Based Calendar
В самой статье я кратко описывал выгоды используемого подхода. Остановлюсь на них более подробно.
Выгоды такого решения очевидны:
мы остаемся в рамках SQL --> более краткий и понятный код в декларативном стиле
не нужно писать лишние циклы на Objective-C --> меньше кода — меньше багов
мы получим потенциально более быстрое исполнение запросов --> форматирование дат в коде означает еще один проход по полученному DataSet
И самое главное — это решение рассчитано на повторное использование --> не нужно вставлять подобные циклы после каждого запроса, требующего Calendar Computations
Думаю о многих библиотеках из вышеперечисленных можно сказать подобное. Потому часто пишу свои велосипеды или не мало времени трачу на допиливание чужих. Из этого всего добра юзал токо: «FMDB», «GHUnit», «cocos2d-iphone» за уже 2.5 года опыта iOS разработки.
А как же benchmark для Fortran?
Этот самый Formula Translator создавался для математических вычислений и, насколько я слышал, делает это еще быстрее, чем C/C++.
Про weak — нагуглился WeakRef, но завести с пол-оборота не вышло.
В сети решений не нашел и придумал свой уродливый костыль:
github.com/dodikk/RubyMotionTestApp/blob/master/vendor/BlockBuilder/BlockBuilder/NSObject%2BBlockForRuby.m
Нормального решения не подскажете, часом?
P.S.
С бинарником из твоего репозитория перестало работать когда обновился до Xcode 4.4. Если не дожидаться Xcode 4.5 release, то как лечить? Тащить исходники в проект?
xcodebuild -version
Xcode 4.4
Build version 4F250
Это как раз понятно.
>>> Судя по всему, плагина нет
То есть, после этого полученную пачку html заархивировать в виде artefact, качать и смотреть глазами.
Просто при использовании gcovr мне jenkins может нарисовать вот такие веселые картинки.
К тому же, это чудо пытается обсчитывать coverage по классам и conditionals (комбинаторный перебор всех возможных
веток if/caseпутей выполнения). Правда, я пока не совсем понимаю как этим пользоваться, поскольку не видно информации, какие из вариантов остались за бортом.lcov и coverstory предоставляют лишь покрытие по строкам кода, что также весьма неплохо.
И просматривать через Jenkins Cobertura plug-in
Раз уж зашла речь об автоматизации — осмелюсь поинтересоваться: «А для lcov есть какой-либо plug-in для jenkins?»
Например, Cocoa Pods.
Вы все правильно сказали.
1. Заворачиваешь порции Insert-ов по несколько тысяч в транзакции
2. Разделяешь создание запросов и их исполнение по разным thread, ибо первое — CPU, а второе IO bound.
3. Ждешь окончания транзакций и перестраиваешь индексы.
Пример кода ( под iPhone + немного страшен из-за некоторых попыток оптимизации )
github.com/dodikk/CsvToSqlite
Дерзай.
Здесь утечка (нет вызова free) — лучше так:
При необходимости учту при дальнейших оптимизациях.
Кроме того, колонку дат можно проиндексировать. Это также должно несколько ускорить выборки.
P.S. опять-таки, лучше не работать напрямую с ticks, а с датами
Больше вероятность того что авторы SQLite/Foundation.framework учли хитрости week based calendar за вас (см. следующий комментарий)
Принадлежность недели к тому или иному году определяется законодательно для каждой страны. И посему зависит от локали. Правила порой бывают гораздо хитрее, нежели вычитание одного дня.
Подробнее можно прочитать на excel.blox.ua либо www.cpearson.com
Если у вас есть знакомые «специалисты в разработке под iphone» — посмотрите с ними
WWDC 2011 — 117performing_calendar_calculations.
Там очень хорошо описаны нюансы работы с датами и локализациями.
С последующей ручной обработкой дат и агрегацией в ObjectiveC коде. Я считаю данный подход в корне неверным. «Как раз для этих целей» — это SQL.
Свои аргументы я привел уже дважды — в самой статье и предыдущем комментарии. У меня складывается впечатление, что вы не потрудились с ними ознакомиться.
Если вам известен способ задавать локаль SQLite — пожалуйста, опишите его.
2. Вопросы оптимизации остались за пределами данной статьи. К ним относятся построение индексов, выбор способа хранения дат, детали реализации ObjcFormatAnsiDateUsingLocale.
3. Извольте показать правильный с вашей точки зрения запрос «CREATE TABLE»
На самом деле, нет разницы как хранить даты. Проблема заключалась в том, что SQLite не учитывает локаль при работе с Week Based Calendar
В самой статье я кратко описывал выгоды используемого подхода. Остановлюсь на них более подробно.
Этот самый Formula Translator создавался для математических вычислений и, насколько я слышал, делает это еще быстрее, чем C/C++.
виноват. недосмотрел.
Однако в сторону $BUILT_PRODUCTS_DIR все-же гляньте.