Tag Archives: Linux

Python для иммигрантов

Когда я иммигрировал с Виндовса на Линукс, одной из первых моих проблем была проблема перекодировки моих исходников программ.

Это были не только какие-то программные наработки комповых программ на С/С++, которые не хотелось бы терять. По большей части это были исходники программ для микроконтроллеров, с комментариями и пояснениями.

Читать далее

PyQt. Автоматическая генерация кода

Вообще в программировании принято большие и сложные программы разбивать на несколько функциональных уровней.

Так например, различают уровень представления (иногда его называют фронт-энд), уровень бизнес-логики (бэк-энд), уровень данных. (Слово «бизнес» следует понимать не в узком смысле только экономики, а более широко. «Бизнес» — это производство чего-то, это какое-то дело. То есть, это именно «то», ради чего затеялась движуха.)

Разбивка программы на уровни может быть самая разнообразная. Но что это дает? Прежде всего это дает гибкость в реализации. Так же следует отметить, что разные уровни могут писаться параллельно разными разработчиками, что ускорит выход программы в свет. Ну и не надо забывать про принцип «разделяй и властвуй»!

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

И наоборот, ваш коллега пишет уровень представления. Его не волнуют вопросы как работает программа, как она вычисляет Фурье-преобразование. Он получает готовые данные, и его задача — отобразить их на экране в заданном виде.

Вы улавливаете суть разделения программы на уровни?

Читать далее

PyQt. Инсталляция

В статье речь пойдет о Qt версии 4.х, Python-2.7 и Debian-8.2. Будет рассказано о том, как установить и начать работать. О том, как написать простое стартовое приложение и убедиться, что у вас получилось это сделать и теперь можно «набрать высоту».

Статья рассчитана на тех, кто более-менее может писать yt,jkmibt программы на Python, более-менее управляется в Линуксе и хотел бы начать писать графические проги.

Я в курсе, что в мире уже давно люди работают с Qt версией 5.х. Проблема не в версии. Проблема в том, что первый шаг в неизвестность очень сложный — не понятно куда шагать, что делать. спросить не у кого…

Я попробую помочь вам на сколько смогу. Я выведу вас из тёмного ангара неведения, подведу к взлётной полосе. Затем мы вместе разбежимся и оторвёмся от земли. А куда Вам лететь и на какой высоте — это уже ваше дело. Мая задача — научить вас взлетать.

(Правда, в настоящей авиации проблема посадки намного сложнее, чем проблема взлёта. Но на этом аллегория сравнения программирования с авиацией заканчивается. В программировании вообще нет темы «посадки».)

Отчасти я пишу эту статью и для себя, как краткое изложение тог, что я проделал и у меня получилось. Своеобразная шпаргалка. которая пригодится и мне тоже.

Читать далее

Как приручить свой Bluetooth. Часть 3

В этой части начнем писать код.

Вопрос в том, на чём писать — какой язык программирования выбрать? Если лет 10-15 назад я мог однозначно ткнуть пальцем с C/C++ и не ошибиться, то сегодня я уже впадаю в ступор.

Казалось бы для решения задач работы с оборудованием подходит только C/C++, а на таком языке как Python можно создать только что-то не очень серьезное. Отчасти это так. Но по нынешним временам компьютеры обладают достаточной вычислительной мощностью и могут без особых лагов (кратковременных зависаний) перемалывать интерпретацию Питоновских кодов.

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

Питоновские программы, как правило, распространяются в виде исходных кодов. Я не делаю секрета из программы, которую мы будем писать. Наоборот! Я говорю

— Ребята! Код открыт и прокомментирован. Изучайте работу программы и развивайте её в своем направлении. Дописывайте к ней тот функционал, который вам необходим. Я даже не претендую на авторство и не навешиваю копирайт. Подхватывайте и несите дальше.

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

Читать далее

Как приручить свой Bluetooth. Часть 1

Я собираюсь вести рассказ не столько о Bluetooth, сколько по вопросу —

как в Линуксе создать простое средство (программу) для работы с устройством, которое подключено к последовательному каналу и выполняет AT-команды.

Ну вот так длинное определение темы.

Давайте начнем наше движение с краткого введения в AT-команды.

Читать далее

Терминал, консоль, дисплей…

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

Публикуя эту статью я не претендую на звание гуру и не хочу узурпировать право на истину. Более того, я предполагаю, что статья будет немного изменяться при получении дополнительной информации, которой я не имел на момент её написания.

Вот так получилось, что подавляющее большинство людей, которые сейчас активно используют Линукс, пришло из лагеря Виндовс. И очень незначительное количество людей выросли на UNIX/Linux системах. Речь не о том — плохо ли это или хорошо. Это факт. Просто факт, которому я не буду здесь давать оценку. Просто давайте примем этот факт как некую данность, у которой есть небольшая проблема. Вот эту проблему я и попытаюсь обозначить.

Читать далее

Python-3.x и модуль serial

В какой-то момент времени я решил, что уже пора оставлять Python-2.x и потихоньку перебираться на Python-3.x. Ну, дело-то вроде бы хорошее, но не всё в третьем Питоне так гладко и безупречно, чтобы можно было вот так просто взять и перепрыгнуть на него с малыми затратами.

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

Долгое время я использовал второй Питон. Одной из причин этого была та, что для третьего Питона отсутствовал модуль для работы с последовательным портом. Но летом 2015 года, я обнаружил, что модуль serial для Python-3.x уже создан и с ним уже вроде бы даже можно работать.

Читать далее

Автоматизируй это!

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

#!/usr/bin/env python3
#coding: utf8

''' <имяфайла, назначение> '''

...

и затем наделять его статусом исполняемого.

И что-то так задрал меня этот процесс, что решил я написать утилиту, облегчающую мне жизнь.

Читать далее

Парадигма Windows и парадигма UNIX

На портале easyelectronics.ru некто MikeSmith поднял интересный вопрос. У Михаила возникла проблема при компиляции проекта.

В двух словах, Махаил работает в Виндовсе, компилирует проект GNU-компилятором. Поскольку проект оказался большим, то команда (в командной строке) для компилятора оказалась очень длинной — длиннее, чем допускает Виндовая среда. Компиляция завершилась неудачей.

Особенно мне понравилось вот это место:

Причём любопытно, что выпадает только каждый 8192-й символ, а вся остальная строка передаётся правильно. Ну а верхний лимит командной строки — 32768 байт (проверено), сверх этого передать ничего уже не получится.

http://we.easyelectronics.ru/Soft/problema-2000h-ili-kak-sobrat-gcc-arm-embedded-linkerom-bolshoy-proekt.html

Читать далее

Как копировать файлы по сети?

Примерно год назад я уже поднимал эту тему в публикации Как копировать файлы?

Вчера я зашел на сайт Линукс по-русски и прочитал статью про еще один простой способ подключения к удаленному директорию:

http://rus-linux.net/MyLDP/file-sys/sshfs.html

Предложенный способ мне понравился, и я решил изложить его своим способом, кое-где прибегнув к наглому плагиату. На авторство совсем не претендую, поэтому все плюшки и пиво высылайте на Линукс по русски.

Читать далее