Если вы используете Mercurial, то в списке ресурсов будут раздражающие файлы из каталога .hg. Чтобы их убрать, сначала в списке каталогов проекта выключаем скрытие файлов, начинающихся с точки, кликаем правой кнопкой по папке .hg, выбираем Properties и там включаем крыжик «Derived».
Очередная статья из цикла, посвящённого системам управления проектом (процессом). На этот раз немного структурированного формализма: общий план, сравнения, цели, перспективы. По сути, этот текст — самый первый документ, который пишется перед началом любого проекта. Целью проекта является продукт.
Эту статью можно рассматривать как первый шаг в долгом пути построения системы управления софтварным проектом. Под «софтварным проектом» я имею в виду создание программного продукта. А под «системой управления» — интегрированный набор инструментальных средств, обеспечивающих (и автоматизирующих) различные этапы создания продукта. В статье же пойдёт речь о самых базовых вещах, например, целевой аудитории подобной системы.
У каждого программного проекта есть жизненный цикл. Для разных этапов такого цикла есть средства управления — багтрекеры, системы документирования, тестирования. Однако хочется найти полноценную систему для управления всеми этапами жизненного цикла проекта.
Если совсем упрощать, этапы жизненного цикла такие:
- сбор требований
- проектирование
- реализация
- рецензирование кода
- контроль исполнения задач
- тестирование
- внедрение
- поддержка/сопровождение
Для некоторых этапов есть различные инструментальные средства, например, для автоматизации тестирования есть TestLink, для контроля исполнения задач — разнообразные трекеры, например, Bugzilla, JIRA, Trac; для документирования есть разнообразные WIKI-системы. Есть попытки построить интегрированные решения из нескольких компнентов, например, линейка продуктов компании Atlassian — Confluence, JIRA и другие. Однако полноценного продукта, охватывающего ВСЕ этапы, мне не встречалось вообще.
Далее пойдут мои размышления на тему ожидаемой функциональности от подобного продукта.
В этой заметке в деталях описывается процесс создания собственного Центра сертификации и последующая генерация сопутствующих файлов: сертификатов, запросов на сертификат и так далее. Считаем, что работаем в терминале на линукс/юникс машине с установленным openssl.
Заметка является вольным переложением на русский язык вот этой статьи (плюс мой собственный материал). Здесь описываются базовые «низкоуровневые» команды для работы с сертификатами (x509, req и т.п.)
Больше о цифровых сертификатах в других постах:
Базовые команды и некоторые скрипты и конфиги для редактора VIm. Дырявая память заставила это всё написать.
Перевод статьи Сары Шерд «Life Cycle of a Silver Bullet», 2003 г.
«Внимание! Выбросьте из головы другие методы оптимизации — мы открыли самый лучший. С нашим методом уровень качества у вас будет расти, а стоимость и время разработки — падать». Практически любой метод оптимизации провозглашается лучшим способом спасти молодой бизнес от проблем. К сожалению, спустя несколько лет этот же самый метод оказывается уже разгромленным и разнесённым в пух и прах, и заменяется новым. В этой притче рассказывается, как это происходит.
Спасибо лору.
convmv --notest -r -f cp-1252 -t cp-850 /path/to/unzipped/files
convmv --notest -r -f cp-866 -t utf-8 /path/to/unzipped/files
-
Подготовка файлов. Создаём каталоги
res
иocr
, разбираем PDF на страницы:pdftoppm -png file.pdf res/out
-
Подготовка страниц; нужно увеличить разрешение, подкорректировать яркость и контрастность для лучшего распознавания:
cd res FILES=`ls *.png` cd .. for f in $FILES; do convert -geometry 1000x -modulate 90 -gamma 0.9 -contrast -fx G res/$f ocr/$f.tif done
-
Распознавание
cuneiform out-014-g.tif -o out-014-g.tif.txt
Примечания¶
- без корректировки яркости и контрастности результат распознавания был ужасным;
- вывод в PNG почему-то вызывал сегфолт у
cuneiform
.
У гугла есть отличный поисковик по исходным кодам различных проектов. Фигово только, что в результаты поиска выводятся порциями по десять элементов. Фиксим это при помощи юзерскрипта для оперы.
// ==UserScript==
// @name google codesearch improvements
// @include http://*.google.com/codesearch
// @include http://google.com/codesearch
// ==/UserScript==
(function(){
var e = document.createElement('INPUT');
e.type = 'hidden';
e.name = 'num';
e.value = '100';
document.forms[0].appendChild(e);
})();
Максимальное количество элементов на странице — сто.