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

Понадобилось нам однажды измерять температуру и влажность в одном помещении, несложная задача, стоит обратиться в гугл и там до кучи примеров на ардуино как это сделать, скетчи, схемы и пояснения. Простые задачи подобного рода возникают достаточно часто и каждый раз модифицировать код для контроллера не хотелось. Мы подумали, а что если написать что-то типа интерпретатора для микроконтроллера(МК), который бы принимал команды и выполнял их. Таким образом отпадает необходимость писать софт каждый раз для МК, это занятие требует времени зачастую больше, чем под ПК из-за того, что объем памяти МК ограничен и не попользуешься развитыми средствами типа regex и прочего. Интерпретатор должен быть расширяемый, то есть добавление новой команды, не должно быть зубодробительной операцией. Также в будущем он должен быть легко переносим на ARM Cortex-M3 архитектуру и способен работать через различные интерфейсы связи будь то RS485, Ethernet, ZigBee.

На основании этих требований было решено разработать такое устройство и + библиотеки для работы с ним под несколько языков (сейчас Python и GCC C/C++) и ОС ( Win и Linux) чтобы не париться больше с написанием каждый раз софта для контроллера, который делает рутину — собирает данные или что-то включает или выключает.

Контроллер MeteoBoard
Рис. 1. Контроллер MeteoBoard
Читать полностью »

Все мы пользуемся профайлерами. Традиционная схема работы с ними такова, что приходится изначально запускать программу «под профайлером» а затем, после окончания ее работы, анализировать сырой дамп с помощью дополнительных утилит.
А что делать если мы не имея root'а хотим запрофилировать уже работающую программу, которая долго работала «как надо», а сейчас что-то пошло не так. И хотим это сделать быстро. Знакомая ситуация?
Тогда рассмотрим наиболее популярные профайлеры и принципы их работы. А затем профайлер, который решает именно указанную задачу.

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

Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать полностью »

Оказывается, 31 января вышло обновление Qt 5.0.1 с более 400 улучшений (как сообщается) по сравнению с Qt 5.0.0. Новая версия не приносит новой функциональности, лишь исправления и улучшения.
Читать полностью »

С чего все началось

Я студент технического университета и учусь по направлению: «Высшая математика, информатика и математическое моделирование». Так как я учусь только на втором курсе — мой код совершенным назвать очень сложно. В прошлом семестре мы изучали такую дисциплину как «Современные парадигмы программирования». На одной из лекций мы рассматривали ООП на примере С++ и получили задание написать псевдо-музыкальную библиотеку с использованием структур.

Задание и первая версия программы

Программа должна была использовать структуру из 5-ти полей:
Поле №1: номер записи;
Поле №2: название трека;
Поле №3: имя исполнителя;
Поле №4: время звучания;
Поле №5: год записи.
Это должна была быть консольная программа, все данные в которую вводятся с клавиатуры или с текстового файла (по желанию писавшего). Вводимые данные сохраняются в память компьютера или в файл соответственно. Также программа должна исполнять такие команды:
Поиск: по номеру, названию, исполнителю, времени и году записи а также вывод всех записей на экран;
Изменение данных: удаление, редактирование и добавление новых записей;
Редактирование: возможность изменения всех полей кроме номера записи.
Читать полностью »

Вступление

Добрый день, дорогие друзья! В сети, в частности на хабре можно найти достаточно много статей, по написанию паттерна обработки запросов MVC, но у всех есть свои недостатки. В этой статье, я попробую их все исправить.

Какие же недостатки в прошлых статьях?

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

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

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

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

    Литературы п управлению проектами написано много, но правильного ответа для того, самого животрепещущего, вопроса там нет. И скорее всего не будет. Я попытаюсь посвятить этот пост тому, чтобы максимально занудно описать причины печального положения людей, ищущих опоры и поддержки в своих попытках ответить на один из главнейших вопросов разработки ПО: сколько времени это займет?

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

Alb — новый язык программирования, основанный на арабской вязи

В странах арабского мира, да и во всех странах с языком, отличным от английского, начинающие программисты сталкиваются с одной и той же проблемой, заключающейся в том, что стандарт каждого распространенного языка программирования построен на основе латинской кодировки и слов английского языка, символов и слов, значение которых сначала абсолютно непонятно будущим специалистам. С целью преодоления языкового барьера в программировании Рэмси Нассер (Ramsey Nasser), ученый, работающий в области компьютерных технологий, создал полнофункциональный язык программирования Alb, что в переводе с арабского означает «сердце». Но арабским является не только название этого языка, все языковые конструкции и инструкции записываются с помощью символов и по правилам арабского языка — арабской вязи.
Читать полностью »


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