Search
Write a publication
Pull to refresh
0
@smuravread⁠-⁠only

User

Send message

Как разрабатывается 1С:ERP (и не только)

Reading time17 min
Views82K
Привет, Хабр!
В одной из предыдущих статей рассказывалось, как организован процесс разработки платформы «1С:Предприятие». А сегодня мы хотим рассказать, как разрабатывается (с помощью средств платформы «1С:Предприятие») самое, пожалуй, насыщенное по функциональности прикладное решение 1С – «1С:ERP Управление предприятием 2».
«1С:ERP Управление предприятием» — инновационное решение для построения комплексных информационных систем управления деятельностью многопрофильных предприятий, в том числе с технически сложным многопередельным производством, с учетом лучших мировых и отечественных практик автоматизации крупного и среднего бизнеса.
Немного инфографики:
image
Читать дальше →

6 типичных ошибок при заключении договоров на разработку ПО

Reading time9 min
Views34K
В очередной раз хотим затронуть тему, когда компания разработчик ПО выполняет свою работу, но заказчик не хочет ее оплачивать. И судя по количеству публикаций на подобную тему, актуальность данного вопроса для отечественных разработчиков ПО растет.

Описанная ниже ситуация — это ситуация из жизни. В момент написания статьи данная ситуация еще не получила окончательного положительного разрешения для компании разработчика ПО (далее будем называть ее ИТ компания, название компании в данный момент раскрыть не можем), с которым мы работаем вот уже более года по взысканию семизначной суммы задолженности. Возможно, для кого-то данная статья окажется полезной и позволит избежать подобной участи, либо позволит минимизировать возможные потери если ситуация еще не сильно запущена.
Читать дальше →

Управление задачами на разработку. История из жизни

Reading time6 min
Views13K
О том, когда задач больше чем ресурсов на их выполнение, очередь задач со временем увеличивается и часть из них можно смело назвать «дурацкими».
Дурацкая задача – когда ожидаемая от реализации польза не оправдывает количества необходимых ресурсов, но Заказчик настаивает на необходимости её выполнения.
О
  • управлении потоком задач на разработку,
    Как избавится от «дурацких» задач?
  • управлении расходами на разработку,
    Как определить и выбрать самые выгодные задачи?
  • распределении ограниченных ресурсов.
    Как сделать так, чтобы все Заказчики были довольны, а количество ресурсов при этом осталось тем же?

Читать дальше →

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

Reading time12 min
Views74K

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


Читать дальше →

Домашний хостинг сайтов с динамическим IP

Reading time6 min
Views155K
У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

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

В то-же время в наличии имеется:

  • Домашний сервер на Ubuntu
  • Быстрый ethernet-интернет от МТС

Но не имеется ключевого — статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com, но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).
Читать дальше →

Логирование Git revision в Java с помощью Maven

Reading time5 min
Views18K
Наша компания перешла с mercurial на Git, после чего мне пришлось разобраться как у нас до этого выводилась в лог информация о развертывающейся ветки и переписать это под git. Возможно, кто-то в будущем столкнется с такой же проблемой, так как Git набирает популярность и многие компании мигрируют на него.

Моя цель показать Вам, как с помощью нескольких maven plugin-ов можно сделать вывод в лог Вашей java программы названия ветки и хэш коммита из Git. Это полезно при анализе логов, если у Вас давно не было деплоя и история Вашего инструмента CI затерлась.
Читать дальше →

Простой подход к версионированию баз данных MS SQL Server

Reading time8 min
Views12K

Простой подход к версионированию баз данных MS SQL Server



Предисловие.

Очень часто в прикладных программах возникает необходимость использовать современные базы данных, которые предоставляют разработчику очень большой функционал, основанный не только на уровне данных, но также и созданию собственного API для предоставления доступа к этим данным, посредством хранимых процедур, триггеров, функций. Очевидно, что во всей этой структуре в зависимости от обстоятельств, могут понадобятся какие-либо изменения. И в самом безобидном случае, когда разработчик имеет дело с одним клиентом и одной изменяющейся базой данных (предположим на небольшом предприятии), процесс обновления выглядит просто – мы делаем необходимые изменения в структуре, сравниваем с помощью специальных утилит, например SQL Examiner, старую и новую версию и накатываем сгенерированный sql-скрипт на существующую базу. Как видно в описанном случае, миграция данных происходит каждый раз при обновлении структуры базы. Но к сожалению, описанная ситуация встречается крайне редко, чаще — клиенты и соответствующих для них базы данных для какого-либо продукта у разработчиков исчисляется сотнями, если не больше. Таким образом, для нормального жизненного цикла базы данных необходима система версионирования (не путать с системами версионирования исходников типа Subversion).
Читать дальше →

Золотая пора научно-популярной публицистики

Reading time5 min
Views36K


В СССР популяризации науки всегда придавалось большое значение. Страна старалась быть во всём самодостаточной, а это требовало подготовки достаточного количества научных кадров и квалифицированных работников. И научные журналы выполняли задачу приобщения населения к знаниям. Многие из них отличались высоким качеством материала и оказали влияние не на одно поколение жителей одной шестой части суши. Мы решили отдать должное людям, благодаря которым издания выходили в печать, вспомнив некоторые наиболее памятные научно-популярные журналы СССР.
Читать дальше →

Graylog2 стал удобнее и быстрее

Reading time6 min
Views89K
Записывая для VPSVille три ролика по Graylog понял, что на хабре по нему только одна обзорная статья, а мануалы на любом языке запутаны из-за различной работы компонентов в разных версиях ПО. Потратив сутки на переваривание всей этой красоты пишу мануал: как настроить сервер Graylog для сбора событий из Windows и Linux.

Кто очень хочет понимать Linux, но не поймет с чего начинать — прошу ко мне на канал.

image

Вместо введения: Graylog это open source программное обеспечение, предназначенное для сбора логов в гигантских сетях их огромного количества источников различными способами. В нем можно удобно организовать сбор событий, фильтрацию, поиск, автоматизацию (всякие алерты) и т.д. Аналогичных средств множество, но Graylog предлагает нереальную производительность с использованием современных компонентов, удобную аналитику и красивый интерфейс.
Для работы ему нужна Java, конфигурацию он будет хранить в MongoDB, для поиска и хранения логов — использовать ElasticSearch. Про сбор информации из WIndows будет ниже, но спойлер — агенту больше не нужна Java.
Читать дальше →

Чтение больших объемов данных в Python/Postgresql

Reading time3 min
Views27K
Стек рассматриваемых технологий: Postgresql 9.3, Python 2.7 с установленным модулем «psycopg2».

Проблема


Как часто в вашей практике приходилось сталкиваться с задачей обработки таблиц большого объема (более 10 млн. записей)? Думаю вы согласитесь, что данная задача является довольно ресурсоемкой как в плане времени обработки, так и задействованных ресурсов системы. Сегодня я постараюсь показать альтернативный способ решения задачи.

Предложение:


В СУБД Postgresql есть прекрасный оператор для работы с большими объемами информации, а именно «COPY». Применение данного оператора позволяет нам читать и записывать огромные объемы информации в таблицу. В данной статье мы будем рассматривать режим чтения.

Согласно документации оператора «COPY» нам доступны несколько режимов чтения в файл либо в поток STDOUT, а также различные форматы, в том числе и «csv». Как раз его мы и постараемся использовать с максимальной пользой.
Читать дальше →

Пишем shell скрипты на Python и можно ли заменить им Bash

Reading time6 min
Views130K
В этой небольшой статье речь пойдет о том, можно ли легко использовать Python для написания скриптов вместо Bash/Sh. Первый вопрос, который возникнет у читателя, пожалуй, а почему, собственно, не использовать Bash/Sh, которые специально были для этого созданы? Созданы они были достаточно давно и, на мой взгляд, имеют достаточно специфичный синтаксис, не сильно похожий на остальные языки, который достаточно сложно запомнить, если вы не администратор 50+ левела. Помните, ли вы навскидку как написать на нем простой if?

if [ $# -ne "$ARGCOUNT" ]
then
    echo "Usage: `basename $0` filename"
    exit $E_WRONGARGS
fi

Элементарно правда? Интуитивно понятный синтаксис. :)

Тем не менее в python эти конструкции намного проще. Каждый раз когда я пишу что то на баше, то непременно лезу в поисковик чтобы вспомнить как писать простой if, switch или что-то еще. Присвоение я уже запомнил. :) В Python все иначе. Я хоть и не пишу на нем круглые сутки, но никогда не приходилось лезть и смотреть как там сделать простой цикл, потому что синтаксис языка простой и интуитивный. Плюс ко всему он намного ближе к остальным мейнстримовым языкам типа java или c++, чем Bash/Sh.

Также в стандартной и прочих библиотеках Python есть намного более удобные библиотеки чем консольные утилиты. Скажем, вы хотите распарсить json, xml, yaml. Знаете какой я недавно видел код в баше чтобы сделать это? Правильно:

python -c "import json; json.loads..." :)

И это был не мой код. Это был код баше/питоно нейтрального человека.

То же самое с регексом, sed бесспорно удобная утилита, но как много людей помнит как правильно ее использовать? Ну кроме Lee E. McMahon, который ее создал. Да впринципе многие помнят, даже я помню как делать простые вещи. Но, на мой взгляд, в Python модуль re намного удобнее.

В этой небольшой статье я хотел бы представить вам диалект Python который называется shellpy и служит для того, чтобы насколько это возможно заменить Bash на python в скриптах.

Велкам под кат.
Читать дальше →

Покончите с беспределом: внедрите бизнес-процессы в CRM

Reading time11 min
Views80K
2006 год. На форуме специалистов SQL неожиданно поднимается вопрос о целесообразности моделирования бизнес-процессов в CRM-системах. Звучат слова: долго, дорого, Siebel, не нужно, сложно.
2014 год. Все чаще клиенты просят посоветовать CRM с возможностью построения и запуска бизнес-процессов. В чем причина? Первое подозрение — где-то услышали и теперь тянутся за модой. На вопрос «Зачем?» поступает взвешенный ответ: «Устали от беспредела и путаницы в организации работ. Хотя бы в часто повторяющихся действиях нужен порядок». Нельзя не согласиться с тем, что основное назначение регламентации бизнес-процессов в компании — именно порядок. Признайтесь, приятно осознавать, что многие процессы в организации проходят четко, слаженно, быстро, с минимальной нервозностью.
Читать дальше →

Приручение строптивого

Reading time10 min
Views22K


Любите ли вы разрабатывать базы данных? Нет, не новомодные NoSQL, а старые добрые реляционные, где вы можете описывать отношения и хранимые процедуры для доступа к данным и логики. Может быть, вы разрабатываете базы данных для PostgreSQL? Если да, то отлично — этот пост определенно для вас.
Все ли инструменты разработки для PostgreSQL вам известны?

Векторный, открытый и удобный: Inkscape 0.91

Reading time4 min
Views45K
Давно увлекаюсь векторной графикой, особенно ее созданием, отрисовкой с нуля. Много программ я пробовал, но в основном моим рабочим инструментом был CorelDraw, который меня всем устраивал. Не помню, почему и зачем я начал искать ему альтернативы, но в один прекрасный день я наткнулся на Inkscape. Это была любовь с первого взгляда…

Я все ждал, что на Хабре появится статья-обзор новых возможностей версии Inkscape 0.91, а ее все нет. Решил написать сам, если что не так – не судите строго, пишу редко.

Под катом будет много иллюстративных примеров и технических деталей.

image
Читать дальше →

Используем официальный docker-образ NGINX в InfoboxCloud: часть 1

Reading time12 min
Views61K
За последний год в Docker Hub стало доступно уже более 100 000 образов, а загружались образы с Docker Hub уже более 300 миллионов раз. Из них более 20 миллионов загрузок пришлись на 70 официальных образов разработчиков Docker, таких как Oracle, CentOS и NGINX.

NGINX используется на более 40% самых больших сайтов в мире, не только как веб-сервер, но и как реверс-прокси сервер, балансировщик нагрузки и HTTP кэш. Официальный образ NGINX был загружен 3.4 миллиона раз.



В этой статье вы узнаете:
  • как развернуть и использовать Docker-образ с NGINX.
  • как быстро развернуть реверс-прокси на NGINX и несколько сайтов в Docker
  • как развернуть геораспределенную инсталляцию, состоящую из нескольких сайтов и реверс-прокси в каждом из 3х регионов InfoboxCloud.

Если раньше вы не использовали Docker, рекомендуется к прочтению:
Используем Docker и не волнуемся о vendor-lock
Погружаемся в Docker: Dockerfile и коммуникация между контейнерами
Обзор новшеств Docker Engine с 1.0 до 1.8. Введение в Docker Compose

В конце статьи мы раздаем пробные версии InfoboxCloud бесплатно.
Читать дальше →

«Под капотом» индексов Postgres

Reading time7 min
Views53K

Капитан Немо у штурвала «Наутилуса»

Индексы — один из самых мощных инструментов в реляционных базах данных. Мы используем их, когда нужно быстро найти какие-то значения, когда объединяем базы данных, когда нужно ускорить работу SQL-операторов и т.д. Но что представляют собой индексы? И как они помогают ускорять поиск по БД? Для ответа на эти вопросы я изучил исходный код PostgreSQL, отследив, как происходит поиск индекса для простого строкового значения. Я ожидал найти сложные алгоритмы и эффективные структуры данных. И нашёл.

Здесь я расскажу о том, как устроены индексы и как они работают. Однако я не ожидал, что в их основе лежит информатика. В понимании подноготной индексов также помогли комментарии в коде, объясняющие не только как работает Postgres, но и почему он так работает.
Читать дальше →

Автоматический ресайз иконок для мобильных приложений, или как Inkscape + bash упрощают жизнь

Reading time3 min
Views15K
Решение, изложенное в статье, расписано для пользователей OSX. Но его достаточно просто можно адаптировать и под другие популярные операционные системы.

Началось все с нетривиальной задачи: когда создается веб-сервис и мобильное приложение, неизбежно возникает потребность сделать под него презентабельную или не очень презентабельную иконку. Но стоит начать создание приложения для IOS в XCode, как тут же узнаешь, что от тебя требуется не одна иконка, а примерно десяток, причем разных размеров. Вот только часть из них:
  • иконка для отображения на вкладках браузеров;
  • иконка веб-приложения, отображаемая в safari mobile;
  • иконка мобильного приложения, отображаемая на главном экране в ios;
  • большая иконка для app store;
  • маленька иконка для app store;
  • иконка для поиска в spotlight.

А теперь внимание: практически для каждого пункта из этого списка есть еще и свои собственные размеры — в зависимости от типа устройства и версии iOS. Подробная спецификация иконок для веб-приложения и приложения для ios находится здесь.
Читать дальше →

Защита от прослушивания разговоров — строим безопасную SIP телефонию своими руками

Reading time7 min
Views77K
image
Привет, Хабр!
В этот раз хочу рассказать о технологиях шифрования VoIP звонков, о том какую защиту дают разные подходы и как организовать наиболее защищенную от прослушивания голосовую связь с технологическими гарантиями безопасности.
В статье я постараюсь доступно изложить особенности таких технологий как SIP\TLS, SRTP и ZRTP. И продемонстрирую конкретные схемы использования на примере нашего сервиса ppbbxx.com

Читать дальше →

Стань повелителем загрузки Linux

Reading time24 min
Views93K
Сначала мы познакомимся с udev и научимся с его помощью исследовать установленные в компьютере устройства прямо во время загрузки: в качестве примера будем автоматически выбирать настройки видеокарт для Xorg. Затем решим задачу работы с одним образом на десятках компьютеров одновременно путём внедрения собственного обработчика в initramfs, а заодно оптимизируем систему для сетевой загрузки. Чтобы дополнительно уменьшить время загрузки и снизить нагрузку на сеть попробуем NFS заменить на NBD, и помочь TFTP с помощью HTTP. В конце вернёмся в начало — к загрузочному серверу, который также переведём в режим «только для чтения».



Данная статья — скорее исследование, а не готовое руководство (все решения работают, просто они не всегда оптимальны). В конце у вас появится достаточно знаний, чтобы сделать всё так, как захотите именно вы.

Начало смотрите здесь:
Первоначальная настройка сервера
Подготовка образа для загрузки по сети
Читать дальше →

Распознавание Паспорта РФ на мобильном телефоне. (UPD: 28.03.2015 + выложили программу в App Store)

Reading time8 min
Views64K
На сегодняшний день трудно найти человека, который хоть раз в жизни не сталкивался прямым или косвенным образом с распознаванием документов. Действительно, когда в мире для совершения любого сколь угодно серьезного дела необходима идентификация личности мы то и дело слышим «Можно ваш паспорт», чтобы очередной раз ввести ваши данные в компьютер с целью проверки разрешен ли вам вход, нет ли каких-либо неоплаченных долгов и так далее.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity