Обновить
1397.1

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Часть 2. СППР Универсальные алгоритмы – Алгоритм для службы поддержки

Время на прочтение4 мин
Охват и читатели8.9K
В следующей статье описан еще один подход по реализации системы поддержки принятия решений. На основе этой СППР был реализован алгоритм для службы поддержки.

Исходное состояние – я руководил службой внедрения и сопровождения в частной медицинской компании. Филиальная сеть отделений в регионах, которая работает под управлением единой системы. Так же используется схожее оборудование на всех объектах. Фактически все оборудование подключено в систему и отдает данные (диализные аппараты, лабораторные анализаторы, аппараты УЗИ и кардиографы, измерители веса и давления, водоподготовка, система вентиляции, датчики температуры и влажности).

Сеть отделений постоянно расширяется. В каждом отделении есть ИТ-специалист. Далеко не всегда этот специалист компетентен в различных областях. Задача стояла достаточно масштабная по обеспечению работоспособности довольно сложной с точки реализации системы.
Читать дальше →

Мифы и легенды о переполнении целых чисел в Rust

Время на прочтение10 мин
Охват и читатели12K

Примитивные целочисленные типы, поддерживаемые процессорами, являются ограниченным приближением к бесконечному набору целых чисел, которыми мы привыкли оперировать в реальной жизни. Это ограниченное представление не всегда совпадает с "реальными" числами, например 255_u8 + 1 == 0. Зачастую программист забывает об этой разнице, что легко может приводить к багам.

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

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

Простой, универсальный и надёжный язык управления принтером IDOL

Время на прочтение5 мин
Охват и читатели7.8K

В сети часто можно встретить разногласия между профессионалами и «не очень» по поводу, как же он правильно называется. То язык управления принтером, то язык программирования принтера, то язык разметки документа. Корень сей дилеммы находится в аббревиатурах разработчиков оных средств коммуникации принтеров с компьютерами, а точнее — с соответствующим программным обеспечением.


Язык разметки страницы, он же язык разметки документа, он же PDL, что расшифровывается как Page Description Language и переводится дословно как язык описывающий страницу. Понятие же «язык управления принтером» пришло из перевода выражения Printer Control Language или сокращенно PCL.


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

О том, как мы на PHP запускали настоящий MS Excel и что из этого вышло

Время на прочтение6 мин
Охват и читатели29K
Не секрет, что зачастую PHP-программистам приходится решать задачи, весьма далёкие от бытового представления о «веб-разработке». Развитие языка в последние годы привело к тому, что PHP всё чаще считают языком общего назначения, пригодным не только для сайтов, но и для других задач.

Одну из таких «других» задач мне с коллективом пришлось решать совсем недавно. Мы решили поделиться «картой граблей» с теми, кто, возможно, пойдет по этому же пути.

Дано


  • Многие наши партнёры (скажем прямо — это крупные банки) любят считать что-то в Excel. Причем «любят» — это очень нежно сказано. Сложнейшие скоринговые модели могут быть «запрограммированы» в Excel, в файле из сотни листов с десятками макросов
  • Перевести «программы», написанные в Excel на какой-либо язык программирования — практически нереально. Это займет уйму времени, а проблема постоянного обновления и проверки корректности делает такую задачу и вовсе нерешаемой


Требуется


  • Основная информационная система нашей компании написана на PHP. Она содержит в себе как веб-интерфейсы, так и множество консольных сервисов и воркеров.
  • С этими «программами» в Excel нужно как-то взаимодействовать из консольных приложений на PHP — передавать в них данные, обсчитывать, получать результаты

Некоторое время нам хватало возможностей популярной библиотеки PHPExcel. Но когда от бизнеса поступило очередное требование «нужно, чтобы работали макросы, и еще бы хорошо всё это сохранять в PDF», стало понятно, что выбранный путь — тупиковый. Нужно не парсить файлы xlsx, не имитировать просчёт, и даже не использовать Open Office, а научиться взаимодействовать с «настоящим» Microsoft Excel.


Что из этого вышло - под катом

Даты среди цифр числа Пи: некоторые мысли с позиции статистики и нумерологии

Время на прочтение11 мин
Охват и читатели25K

Перевод поста Майкла Тротта (Michael Trott) "Dates Everywhere in Pi(e)! Some Statistical and Numerological Musings about the Occurrences of Dates in the Digits of Pi".
Код, приведенный в статье, можно скачать здесь.
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе и подготовке публикации

Содержание
Получим все даты за последние 100 лет
Найдём все даты в цифрах числа пи
Статистика всех дат
Первые появления дат
Даты в других представлениях и других константах
В недавнем своём посте (см. перевод поста "3/14/15 9:26:53 Празднование «Дня числа Пи» века, а также рассказ о том, как получить свою очень личную частичку числа пи" на Хабре) Стивен Вольфрам писал об уникальном положении векового дня числа пи и представил разные примеры содержания дат в цифрах числа пи (здесь и далее — в десятичном представлении). В этом посте я рассмотрю статистику распределений всех возможных дат за последние 100 лет в первых 10 миллионах цифр числа пи. Мы увидим, что 99,998% цифр представляют собой какую-то дату, и что можно обнаружить миллионы дат в первых десяти миллионах цифр числа пи.

Я сосредоточусь на датах, которые могут быть заданы не более чем шестью цифрами. То есть я смогу одназначно задавать даты в промежутке длительностью в 36 525 дней, начиная с 15 марта 1915 года и заканчивая 14 марта 2015 года.
Читать дальше о датах в цифрах числа Пи...

Управление Docker проектом со множеством git репозиториев

Время на прочтение4 мин
Охват и читатели40K

Команда, в которой я работаю, использует микросервисную организацию в проектах.
У каждого микросервиса свой репозиторий. Каждый микросервис это docker контейнер.
Для среды разработки, чтобы запустить все вместе, мы используем docker-compose.


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


Мы столкнулись с двумя проблемами:


  1. При первоначальном разворачивании среды разработки, приходится обьяснять программисту, либо писать скрипт инициализации, который склонирует и создаст необходимую иерархию папок из нескольких репозиториев.
  2. docker-compose не может собрать приложение, а потом упаковать в идижд. он умеет только запускать docker build.

Для решения этих проблем мы сделали управляющий скрипт docker-project, который оказался очень удобным в работе.
Чем мы и хотим поделиться с open-source сообществом.

Далее

Делаем многоканальную полнодуплексную рацию

Время на прочтение2 мин
Охват и читатели12K
Однажды к нам постучись за помощью – сделать сервис-рацию. После продолжительных поисков клиенту не удалось найти подходящее решение, поэтому он обратился в VoxImplant. Нам стало интересно, что же он там такое задумал и сможем ли мы реализовать его задумку на своей платформе. Нам редко удавалось найти сценарий, который на ней сделать невозможно. В общем, пообщались мы, все внимательно выслушали и пошли писать код. Рация должна была уметь подключаться к нескольким каналам одновременно (аналогично частотам в аналоговых рациях), а также давать возможность говорить в один из подключенных каналов + было желательно отображать активность в канале. Под катом рассказ о том, как мы сделали этот сервис за несколько часов.
Читать дальше →

10 ошибок, приводящих к оверинжинирингу ПО

Время на прочтение9 мин
Охват и читатели55K
Несколько вещей гарантированно будут увеличиваться со временем: расстояния между звёздами, энтропия вселенной и бизнес-требования к ПО. Многие статьи пишут «Не усложняйте!», но не пишут почему или как это сделать. Вот вам 10 ясных примеров.

1. Инженерам виднее

Мы, инженеры, считаем себя умнейшими людьми. Ну, поскольку мы создаём разные штуки. И эта ошибка часто приводит к оверинжинирингу. Если вы спланировали и построили 100 модулей — Бизнес всегда попросит у вас 101-ый, о котором вы никогда не задумывались. Если вы соберётесь с силами и решите 1000 проблем — они придут к вам и выложат на стол 10 000 новых. Вы считаете, что у вас всё под контролем, а на самом деле вы даже не представляете, в каком направлении вас завтра поведёт дорога.

image

За мои 15 лет работы программистом я ещё ни разу не видел, чтобы Бизнес выдал законченные и стабильные раз и навсегда требования к ПО. Они всегда меняются, расширяются. И это природа бизнеса, а не ошибки людей, управляющих им.

Мораль: Казино (бизнес) всегда побеждает.
Читать дальше →

Переход от режима Hand в Intel RealSense SDK R4 (v6.0) к режиму Cursor в Intel RealSense SDK 2016 R1

Время на прочтение4 мин
Охват и читатели2.8K

После появления камеры Intel RealSense SR300 и пакета Intel RealSense SDK 2016 R1 появился новый режим взаимодействия с помощью жестов — режим указателя (Cursor), доступный только при использовании камеры SR300. В этом учебном руководстве описываются изменения кода, необходимые для задействования этой новой функциональности.
Читать дальше →

Oracle, обход мутирующих таблиц

Время на прочтение3 мин
Охват и читатели46K

Рис.1 – художники мутанты ниндзя черепашки

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

Рассмотрим два способа обхода данной ситуации. Первый – через пакет – древний, как удар маваши гери с разворота, смотрится эффектно, но долго готовится и сложен в исполнении. Второй – более свежий и простой – с использованием составных триггеров.
Читать дальше →

Онлайн-конференция RuHaxe 5

Время на прочтение1 мин
Охват и читатели4.7K
ruhaxe logoУже сегодня, в воскресенье 24 июля в 15:00 по Москве состоится пятая онлайн-конференция русскоязычного Haxe сообщества. Как и на прошлых конференциях, можно будет не только посмотреть и послушать доклады на темы технологий, связанных с Haxe, но и задать любые вопросы их авторам.

Update: изменения в составе участников. SlavaRa не сможет выступить из-за внезапно возникших обстоятельств. Вместо него Ярослав Сиваков расскажет про создание NanoFL и возможности, которые предоставляет этот редактор разработчикам и аниматорам.

Если вы пока не знаете, что такое Haxe, можно прочитать краткое описание, а затем посмотреть слайды и запись доклада с недавнего выступления Даниила Коростелева в компании Невософт.

Под катом подробнее о темах докладов:
Читать дальше →
Женские вкусы — штука изменчивая. Судить можно хотя бы по популярным песням. Вспомните: «Парней так много холостых, а я люблю женатого», потом «Любите, девушки, простых романтиков, отважных лётчиков и моряков», в 90-е — «А я люблю военных, красивых, здоровенных...крутых и всяких деловых», в начале 2000-х — «Робот, робот, робот, я тебя люблю, мы так хотели…» Хотя, погодите, всё началось ещё в далёком 1965 году — тогда Алла Пугачёва пела «Неужели в две тысячи первом году нам заменят сердца на транзисторы?… Робот - это выдумка века. Я прошу, ну попробуй, стань опять человеком…» И вот настала очередь создателей роботов и приложений — программистов и инженеров. «Мой парень-программист» из мемов и забавных записок в ЖЖ превратился в социальное явление. Попробуем разобраться, почему это произошло, на что способны программисты и какой он, идеальный мужчина XXI века?
Читать далее

Strata + Hadoop 2016 review

Время на прочтение10 мин
Охват и читатели5.7K


В последний год в Badoo стали очень активно использовать связку Hadoop + Spark и построили свою систему сбора и обработки десятков миллионов метрик при помощи Spark Streaming.
Для того чтобы расширить наши знания и познакомиться с последними новинками в этой сфере, в конце мая этого года разработчики отдела BI (Business Intelligence) отправились в Лондон, где проходила очередная конференция серии Hadoop + Strata, посвященная широкому спектру вопросов в области машинного обучения, обработки и анализа больших данных.
Читать дальше →

Ближайшие события

Modern Code. Программируй современно

Время на прочтение1 мин
Охват и читатели10K


По программированию написано много хороших книг. Однако профессиональный ландшафт разработчика сейчас меняется так стремительно, что печатная литература не всегда успевает вовремя: появляются новые программные средства и аппаратные компоненты, внедряется поддержка прогрессивных технологий, на «железо» переносится всё больше программных функций… как уследить за этим профессиональным калейдоскопом, как не отстать от жизни? Intel предлагает свое решение этой проблемы.

Программа Modern Code — это обучающая платформа в режиме реального времени, позволяющая разработчику оставаться в курсе последних событий в программировании. Программа состоит из трех частей:
Читать дальше →

Самообучение шахматной программы

Время на прочтение13 мин
Охват и читатели27K
Здравствуй, Хабр!

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

К сожалению, непосредственная подстановка скорректированных значений для фигур не усилила программу автора — во всяком случае, больше, чем в рамках статистической погрешности. Применение же исходного метода «в лоб» к другим параметрам оценочной функции давало несколько абсурдные результаты, алгоритм оптимизации явно нуждался в некоторой доработке. Тем временем, автор решил, что очередной релиз его движка станет заключительным в длинной серии версий, берущих своё начало в коде десятилетней давности. Была выпущена версия GreKo 2015, и дальнейшие изменения в ближайшем будущем не планировались.

Картинка для привлечения внимания

Всем интересующихся тем, что было дальше — после просмотра картинки для привлечения внимания добро пожаловать под кат.
Читать дальше →

GPS трекер на Qt, карта и трек

Время на прочтение2 мин
Охват и читатели23K

Решил попрактиковаться в программирование под Android на Qt. В качестве темы выбрал GPS трекер.
Набор функций этого трекера:


  • снимать измерения с GPS приемника;
  • экспортировать трек в GPX (GPS eXchange Format);
  • выводить трек на карту;
  • выводить время в пути, длину пути, среднюю скорость.

Под катом будет приведен пример работы с картой в QtQuick.


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

Релиз CLion 2016.2: удаленная отладка, поддержка формата Doxygen, новые возможности кодогенерации и многое другое

Время на прочтение7 мин
Охват и читатели13K
Привет, Хабр!

Чуть больше года прошло с момента первого релиза нашей кросс-платформенной IDE для разработки на C и C++. За это время у нас появились десятки тысяч пользователей, среди клиентов встречаются такие организации, как NASA и AirBnB, а самый популярный запрос в трекере набрал более 500 голосов. И кстати, мы не зря просим вас голосовать за те запросы, которые вам наиболее интересны или актуальны. Наша очередь задач на разработку зависит от вашего мнения и ваших голосов в первую очередь. Именно поэтому релиз 2016.2 включает в себя так много долгожданных возможностей!



А теперь обо всем по порядку.
Читать дальше →

PDF-отчет за 4 минуты

Время на прочтение1 мин
Охват и читатели8.1K
Данный топик не про реальное программирование, это — концепт.
Видео — не настоящее, это все Paint и видео-редакторы.
Но вы можете потратить 4 минуты своей жизни на него.

Видео на английском, но знания языка не требуется. Для большего понимания привожу расшифровку.
Требуется создать отчет в формате PDF на основе данных от сервера Zabbix. Отчет содержит данные за вчера.
Я создаю коннектор к Zabbix и пустой отчет.
Далее двойным кликом по иконке отчета попадаю в графический редактор, где накидываю элементы отчета и затем прописываю запросы данных прямо в этом отчете.
Для одного столбца прописывается зависимость цвета текста от содержимого ячейки таблицы.
В последней части вызывается метод сохранения отчета в PDF и демонстрируется результат работы программы.
Читать дальше →

C--. Первое знакомство

Время на прочтение4 мин
Охват и читатели55K

Процесс портирования и создания средств разработки программ для KolibriOS продолжается. По наиболее активно используемым языкам программирования мы публикуем статьи. Сегодня мы начинаем рассказывать о языке С--, вокруг которого сложилось активное сообщество в 2000-е годы. Подробности под катом.

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

Текстовые редакторы vs IDE

Время на прочтение5 мин
Охват и читатели16K
В последнее время наблюдается тенденция бессмысленных, с моей точки зрения, дискуссий относительно того, что лучше, — текстовый редактор или IDE. При этом, в темах, где обсуждается данный вопрос, зачастую 400 и более комментариев. Значит, людей этот вопрос интересует. Значит, надо писать статью.

Итак, какие цели статьи?
1. Что же лучше для программирования: текстовый редактор или IDE
2. Vim и Emacs — не текстовые редакторы
Читать дальше →

Вклад авторов