Рубрика «разработка» - 221

boxshell

ROTE — простая библиотека на языке C, служащая для эмуляции терминала VT100. Она создает терминал и предоставляет доступ к его состоянию в виде структуры языка C. В терминале можно запустить дочерний процесс, «нажимать» в нем клавиши и смотреть, что он рисует на терминале. Кроме того, есть функция для отрисовки состояния терминала в окне curses.

Зачем на практике может потребоваться эмулировать терминал и взаимодействовать через него с дочерним процессом? В первую очередь это нужно для автоматического тестирования программ, рисующих что-то на терминале с помощью curses, по моему мнению. Как иначе написать тесты для программы, которая ждёт, что пользователь нажмёт клавишу, и выводит результаты в определенное место экрана средствами curses?

Несмотря на всё удобство и внутреннюю красоту ROTE, использовать её напрямую в тестах было бы громоздко. Поэтому я решил упростить задачу, привязав ROTE к языку Lua, который я очень люблю и знаю, как писать тесты. Так и родилась библиотека lua-rote, о которой я хочу рассказать.
Читать полностью »

Что такое хорошо: как мы разрабатывали критерии для оценки качества вёрстки веб-проектов - 1

На Хабре уже было немало материалов о том, как проводить качество вёрстки веб-проектов (вот отличная статья на эту тему) — как правило, речь в таких топиках идёт о коммерческих сайтах. В ходе развития образовательного проекта HTML Academy мы также столкнулись с необходимостью выработки критериев для оценки работ учеников.

Очевидно, что учить нужно так, чтобы потом люди (не все из которых «технари») могли приходить в компании и работать «правильно» — то есть создавая вёрстку, которая красиво выглядит и не требует больших усилий по поддержке. Процесс создания списка универсальных критериев для оценки занял довольно длительное время и был сопряжён с рядом трудностей. Сегодня мы расскажем о том, что же у нас в итоге получилось.Читать полностью »

В этой статье я расскажу о решении проблемы кодогенерации при разработке приложений для СУБД Oracle. Хотя написанное ниже можно частично применить и к другим СУБД, и для генерации не только кода.

Проблема

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

Специфика кодогенерации при разработке приложений для СУБД состоит в том, что метаданные, как правило, хранятся в ней же.

Приведу несколько примеров задач, в которых востребована кодогенерация:

  • формирование SQL/DML/DDL-выражений на основе пользовательского выбора;
  • создание процедуры загрузки в систему-приемник очередного источника данных по его метаописанию в удаленной (remote) системе-источнике;
  • разворачивание системы в разных окружениях, версиях и редакциях СУБД, где необходимо (де)активировать некоторые опции или создать вспомогательные объекты: например, при разворачивании Oracle-приложения на редакции EE секционировать таблицы и строить локальные индексы; или при разворачивании на версии Oracle ниже 11 вместо виртуальных колонок и индексов по ним создавать представления-обертки с дополнительными вычислимыми колонками и строить function-based-индексы.

Читать полностью »

Ночь программиста. 4-5 апреля, Нижний Новгород. IoT хакатон Microsoft и Intel - 1
Что можно делать субботней апрельской ночью? Вариантов, конечно, масса, но мы предлагаем еще один — наверняка, самый оригинальный. Всего одну ночь, с 4 на 5 апреля, компания Microsoft при участии Intel устраивает интеллектуальную вечеринку для программистов — хакатон по разработке решений для Интернета вещей на базе платформы Intel® Galileo и облачного сервиса Microsoft Azure.
Читать полностью »

image
При проектировании промышленных приборов, к которым предъявляются повышенные требования по надёжности, я не раз сталкивался с проблемой защиты устройства от неправильной полярности подключения питания. Даже опытные монтажники порой умудряются перепутать плюс с минусом. Наверно ещё более остро подобные проблемы стоят в ходе экспериментов начинающих электронщиков. В данной статье рассмотрим простейшие решения проблемы — как традиционные так и редко применяемые на практике методы защиты.
Читать полностью »

Microsoft идет на Стачку! Подробности о нашем участии на конференции - 1

Конференция Стачка, которую проводят в славном городе Ульяновске, уже давно полюбилась нашей команде в Microsoft. Не смогли мы пропустить ее и в этом 2015 году, став в очередной раз генеральным спонсоров этой замечательной конференции.

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

Миллениум наступил, конца света не случилось, и это, вероятно, весьма обрадовало разработчиков компьютерных игр. Хотя, скорее всего, радовались они дополнительным возможностям: к этому времени рынок видеоигр значительно расширился за счет новых консолей, а также компьютеров на Windows и Mac OS. Каждая студия старалась выпустить нечто особенное в 2000 году. Изменения коснулись и рекламных трейлеров.
Прошлое и будущее игровых трейлеров. Часть вторая: начало новой эры - 1
Читать полностью »

Мне нравится язык D. Давно слежу за его развитием. Для D есть несколько GUI библиотек и биндингов, но я решил изобрести свой велосипед.
Хочу рассказать о своём проекте DlangUI. Надеюсь, что он кому-нибудь будет полезен.

DlangUI — кросплатформенный GUI для D (Часть 1) - 1

На КДПВ скриншот DlangIDE — приложения, написанного на DlangUI.

Особенности:

  • Кроссплатформенность — поддерживаются Windows, Linux, Mac OSX; легкость портирования на другие платформы
  • Написан на D — легкорасширяемый
  • Использование Layouts для позиционирования элементов интерфейса
  • Масштабирование шрифтов и иконок в приложении в зависимости от разрешения экрана
  • Поддержка Unicode
  • Интернационализация — поддержка перевода UI на несколько языков
  • Аппаратное ускорение с помощью OpenGL (опционально)
  • Возможность отрисовки виджетов поверх OpenGL сцены (например, для UI в игре)
  • Небольшой размер исполняемого файла
  • Внешний вид интерфейса настраивается с помощью тем (две стандартные темы — светлая и темная)
  • Встраивание ресурсов в исполняемый файл
  • Открытый исходный код, под лицензией Boost License 1.0

Читать полностью »

IT-компании, и мы в том числе, запускают и развивают образовательные проекты для студентов вузов — будущих разработчиков и прочих it-шников. Этим уже никого не удивишь (:

После погружения в студенческую среду мы решили, что надо увеличивать область воздействия и двигаться к истокам — в школы. Расширять, так сказать, воронку продаж :) Этим мы и занимаемся уже два года, а недавно, волей случая, подключились к созданию профориентационного мультика. И да, акцент сместился на школьников не только у нас.

Компания Парамульт снимает для школьников мультики про современные профессии. А в Контуре знают, как и зачем становятся разработчиками. Соединив наши кристаллы знания, мы начали делать мотивирующий мультик про профессию разработчика.

Опустим подробности обсуждений и подготовки — сейчас готов аниматик. Это такой недомультик, который уже можно смотреть и предлагать правки.

Всем любопытствующим — добро пожаловать под кат :)
Читать полностью »

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

На самом деле, расчет себестоимости по списку деталей — это неприятный и рутинный процесс, связанный с долгими поисками по on-line каталогам, обзвоном дистрибуторов, перепиской и ожиданием ответов и проч. и проч. Но хуже даже не это, а то, что это итерационный процесс. Увидев вдруг, что себестоимость оказалась выше допустимой, разработчик начинает искать другие варианты схемотехники и другие комплектующие. И снова поиски…. А рутина — это враг разработчика. Чтобы ее избежать, многие жертвуют оптимальностью. Но, к счастью, эту проблему можно облегчить.
Читать полностью »


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