Рубрика «Программирование» - 1079

Добрый день, уважаемые читатели!

Симулятор для тестирования ПО АСУТП

Расскажу вам о своём проекте, который делаю в свободное время уже три года.

Работаю в компании занимающейся автоматизацией на должности программиста контроллеров. Последнее время, в основном, используем Siemens, ПЛК SIMATIC S7 и пакет визуализации WinCC, но есть опыт и по другим производителям. Профиль компании – нефтегазовый сектор (резервуарные парки, насосные, железнодорожные эстакады, причальные комплексы, системы пожаротушения).

Наверное, с самого первого проекта, меня интересовал вопрос тестирования программного обеспечения до этапа пуско-наладки на реальном оборудовании. Не так давно, на хабре был пост — Программирование ПЛК Siemens на Simatic Step7, и адреналин, про который говорилось в комментариях, знаком мне не понаслышке.

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

Введение

Структуры данных можно разделить на две группы: эфемерные (ephemeral) и персистентные (persistent).

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

Далее будет рассмотрено дерево отрезков и его полностью персистентная версия.
Весь код доступен на GitHub.
Читать полностью »

JavaScript скриптинг — вот тема данного поста. Рассмотрю я в нем некоторые программы и постараюсь описать личные ощущения и проблемы.

Итак, предисловие (или введение)

Програмым на JavaScript были всегда, начиная с первого браузера. Хотя если быть честным, то они появились еще во времена программируемой бытовой техники. Обычно программы делаются для интерактивности, либо это какие-то мелкие рюшечки плюшечки, которыми увешаны страницы для красоты.

Забавы ради

Создание приложений на языке JS требует тщательного подхода и множественных тестов, так как у них есть одно свойство — это некроссбраузерность, однако есть и второе свойство — кроссбраузерность. Вроде я что-то напутал, но давайте разберемся.
Читать полностью »

Давно, в 2005 году, мне купили первый телефон с камерой — Siemens M65. После того, как было сделано приличное количество снимков, возникла нужда их упорядочить — была написана небольшая программа на Delphi, которая упорядочивала и позволяла просматривать изображения по дате — путём выбора нужного года, месяца и числа. Шло время, увеличивались мощности телефонов, количество мегапикселей, появилась поддержка видео — и всё это по мере появления было встроено в программу. Позже появилась версия программы и под Mac OS X, которая была написана с использованием фреймворков, доступных в этой ОС для работы с изображениями(Core Image) и видео(AV Foundation). О первом фреймворке и создании для него своего фильтра поговорим более подробно.
Читать полностью »

В прошлой статье я затронул тему работы с Microsoft Kinect for Windows и продемонстрировал возможности сенсора на примере игры в кубики. Замечу, что слежение за фигурой (skeleton tracking) не единственная возможность сенсора, и сегодня мне бы хотелось рассказать о распознавании речи.
Читать полностью »

Читал на Хабре статью об инструментах бизнес планирования, бизнес моделях и прочее.
Также речь шла о 8 или 10 вопросах, которые следует задать себе прежде, чем начать свое дело.
Первое, что пришло в голову, это простой вопрос: «Как же я могу достичь большего успеха в какой-то сфере, чем конкуренты, выполняя доступные всем методики, т.е. используя существующие бизнес модели, анализирую свою идею вопросами и прочее?»

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

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

Хотя, может все таки не все мы? Быть может у программистов с таким самоанализом дела обстоят несколько иначе? Надеюсь что это так, и подобные мысли возникают не у меня одного. В качестве более наглядного примера произведу тут небольшой самоанализ, возможно он поможет кому нибудь взглянуть на обыденные вещи немного с другой стороны. Быть может мое мышление на самом деле ошибочно и сообщество укажет мне на это. Все может быть, но пока-что слишком рано подводить какие либо итоги, так что — приступим!
Читать полностью »

Люди, использующие системы контроля версий исходного кода (SVN, Mercurial, Git и т.п.), наверняка часто пользуются возможностью сравнения версий файлов для просмотра внесенных пользователями изменений. Существует множество независимых программ сравнения версий (WinMerge, BeyondCompare и др.). При сравнении версий, как правило, две версии файла показываются рядом друг с другом таким образом, чтобы одинаковые (неизменившиеся) части документов были расположены напротив друг друга, а изменившиеся (добавленные и удаленные) выделяются соответствующим цветом.
Уверен, многим было бы интересно узнать, какие алгоритмы могут использоваться для реализации такого сравнения.
Читать полностью »

Недавно познакомился со структурами C/C++ — struct. Господи, да «что же с ними знакомиться» скажете вы? Тем самым вы допустите сразу 2 ошибки: во-первых я не Господи, а во вторых я тоже думал что структуры — они и в Африке структуры. А вот как оказалось и — нет. Я расскажу о нескольких жизненно-важных подробностях, которые кого-нибудь из читателей избавят от часовой отладки…

Расставим точки над структурами C/C++
Читать полностью »

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

Внутренность boolinq для взрослых
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js