Колонки одинаковой высоты

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

Рубрика: Полезности | Метки: , , , | Оставить комментарий

Проверка электронной подписи

В электронном документообороте обычно используются разделенные подписи. Т.е. для каждого документа существует два файла. Первый это XML собственно с документом, а второй это подпись этого основного файла. По формату имя файла с подписью формируется из имени файла документа, путем добавления постфикса SGN и расширения sgn.

Таким образом для файла документа «акт_11_октября_2013.xml» должен существовать файл подписи этого файла с помощью ЭЦП, который будет называться «акт_11_октября_2013SGN.sgn»

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

Например: Сервис от КриптоПро или Проверка ЭЦП на сайте госуслуг

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

Рубрика: ЭДО для идиотов | Метки: , | Оставить комментарий

Настройка sudo для пользователя

Задача: разрешить пользователю username выполнять все команды с правами суперпользователя (root) и без запроса пароля. Так же должена работать sudo -i

Настраивается под root. Открываем для редактирования файл /etc/sudoers и в самый конец добавляем строку


username ALL = NOPASSWD: ALL

Важно добавить строку именно в конец файла.

Файл в режиме «только чтение», в том числе и для пользователя root. Поэтому для сохранения в vim вводим w!

Рубрика: Сисадминское | Метки: | Оставить комментарий

КриптоПро: создание тестового сертификата

Про то как работать с КриптоПро, как создавать и добавлять сертификаты на платформе Windows, в интернете куча информации. Для Linux систем информации меньше. И вся она разрозненная. Поэтому немного полезностей для разработчика, работающего в Linux.

Основая задача на сегодня: создать тестовый сертификат и добавить его в систему, чтобы им можно было пользоваться при отладке функционала подписания документов с помощью КриптоПро.
Читать далее

Рубрика: ЭДО для идиотов | Метки: , , | 1 комментарий

Вход на сервер по ключам

Для того чтобы была возможность входить на сервер по ключам надо отредактировать файл /etc/sshd_config.

Добавить или поменять следующие настройки

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

И перезапустить сервер SSH:

service sshd restart

Рубрика: Сисадминское | Метки: | Оставить комментарий

Jenkins деплой из командной строки

Jenkins может использоваться в том числе как и система деплоя веб-приложения на сервера. При всех плюсах — есть одно неудобство — надо заходить в интерфейс деплоя и «кликать мышью». Если делается это долго, то утомляет.
В тоже время вроде бы как в Jenkins есть API. Но я, например, потратив пару часов, так и не понял как через АПИ сделать простой деплой нужного проекта. В результате поиска в гугле и метода проб и ошибок был написан скрипт на bash.
Читать далее

Рубрика: Полезности, Работа | Метки: , | Оставить комментарий

Лицензия на КриптоПро

Программный комплекс КриптоПро CSP просто незаменим при работе с электронным документооборотом. Это и подписывание документов и авторизация по электронной цифровой подписи (ЭЦП). Т.е при разработке или отладке функционала ЭДО наступает момент когда на компьютер разработчика надо ставить КриптоПро. И при длительной работе нужно покупать лицензию. А это не очень просто.
Читать далее

Рубрика: Жизнь, ЭДО для идиотов | Метки: , , | 1 комментарий

mongoexport и даты

У монго есть довольно удобная утилита mongoexport. Как понятно из названия и инструкции она позволяет выгрузить содержимое базы монго в фай формата JSON. При этом есть возможность указать конкретную коллекцию, из которой будет делаться выгрузка. А очень удобный параметра -q позволяет указать условия в формате JSON, в согласии с которым будут выбрана записи для экспорта.

Т.е. это позволяет не выгружать всю коллекцию целиком, например для отладке на тестовом сервере, а получить только «проблемные» записи. Но тут есть подводные камни связанные с датами. Как выяснилось mongoexport не совсем корректно обрабатывает запросы с датами. Если в mongo shell нет проблем с использованием ISODate и различными вариантами new Date, то mongoexport обрабатывает такие запросы не совсем корректно.
Читать далее

Рубрика: Работа | Метки: , | Оставить комментарий

ЭДО для идиотов

По ходу жизни накопилась некоторая информация связанная с электронным документооборотом (ЭДО). Тема в последние время похоже очень сильно развивается. Но каких либо материалов об этом очень мало, либо написаны они так что понять их может только юрист или бухгалтер. Или сделать вид что понял. А вот программисту все это надо разрабатывать, а тестеру проверять. И тут уже умный вид не сделаешь — должно работать. И работать правильно.

И да, небольшое уточнение, говорится здесь будет больше о документообороте между организациями. Т.е. счета, счета-фактуры, акты выполненных работ, акты сверки, накладные и т.п. Т.е. То что предоставляется в налоговые испекции для финансовой отчетности. А значит шаг влево или шаг вправо здесь недопустим.

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

Рубрика: Жизнь, ЭДО для идиотов | Метки: | Оставить комментарий

Стек с изменяемым размером

Стек (stack) является одной из базовых структур хранения данных. Организуется по принципе LIFO (last in first out) т.е. первый пришел, последний вышел. Чаще всего при программировании реализуется с помощью массива и указателя на верхушку стека. При внесении данных (push) элемента записывается в верхушку стека, а указатель увеличивается на единицу. При извлечении данных (pop) элемент извлекается из верхушки стека, а указатель уменьшается на единицу.
Работает все нормально до тех пор, пока количество помещаемых данных не превышает длину выделенного для хранения стека массива. Возникает переполнение стека. Исправить это можно заранее выделив больший объем памяти. Но это не рационально с точки зрения использования памяти. Вполне логичным было бы увеличивать или уменьшать размер стека при необходимости.
Читать далее

Рубрика: Алгоритмы | Метки: | Оставить комментарий