redcat

Что тут есть

А тут есть нафигация. Это, если кто нипонял, чтобы сразу свалить и не мучить моск. Каждая ссылка отсюда ведет на какую-то тему. Если в теме больше одной записи, то в конце каждой записи, кроме последней, есть ссылка “дальше”, для тех, кому интересно и чей моск еще не сломан. Caveat emptor.

gEDA, KiCAD, Xcircuit - системы проектирования электроники и печатных плат
LibreCAD - 2D черчение. Простая замена AutoCAD для плоских чертежей. 3D - OpenSCAD, Meshlab.
UNIX way


Офис в Linux
redcat

Xcircuit - 1

Хочу рассказать о хорошем редакторе приципиальных схем. Как видно из названия, этот редактор сделан для X (только не надо путать это с десяткой), и рисовать в нем лучше всего схемы. Для машиностроения он подойдет, мягко говоря, не очень. Он замечательно делает иллюстрации к различным текстам на электротехнические/электронные темы. Прямо типографского качества, это хорошо просматривается в PDF. Редактор может быть использован и для многих прочих целей.

Как программа для UNIX и ее клонов, Xcircuit немного вводит обитателей майкрософтовщины в ступор, но это легко проходит. Нужно сказать, что я еще и сам не до конца разобрался в этом редакторе, без конца обращаясь сюда (не бойтесь, мои ссылки не кусаются), но вовсю использую его для иллюстрирования технических текстов, которые иногда готовлю в LibreOffice с небольшой помощью LaTeX. Я не буду писать, где брать xcircuit и как его поставить, в наши дни это должен сообразить линуксоид начального уровня. Самые ходовые дистрибутивы Linux теперь понятнее и проще, чем Windows.

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

Запуск Xcircuit из терминала

Collapse )
redcat

Снайперский прицел (+бонус)

Для поиска в интернете. Дикая вещь!! Пригодится всем, кто ищет информацию. Без всякой рекламной херни и гнилых ссылок. Однако, как говорил один мой знакомый: “В Греции все есть. Но только для греков!” Только для Linux-юзеров. И только для DuckDuckGo. Нашел случайно, почитывая LXF за прошлый год. Не помню, в каком из номеров. Где-то за второе полугодие. Так что, ставьте Linux. Рядом с Windows, если она вам еще нужна.

Я ставил из репы своего дистра. Но можно взять и с github.com/jarun/ddgr, если нет в репозиториях. При использовании программы просто пишете в командной строке ddgr и ваш запрос. Через пару секунд - десять ссылок. Это по умолчанию, кому нужно большее, см. man ddgr

Ссылки дает в высшей степени релевантные! Патамуша посылает всю рекламу сюда. Экономит вам много трафика и времени.
Collapse )
redcat

Вдогонку к предыдущему посту

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

В один прекрасный момент meshlab поздравил меня с “успешным” сотым проектом и попросил написать отзыв для разрабов. Написал: “Can't export to VRML. The app writes error messages everytime while I open a wrl, just created by Meshlab. Would be nice, if the bug fixed. Thank you. Alex.” Разработчики, должно быть, много получают таких дурацких писем от пользователей.

В OpenSCAD сделаем какой-нибудь дурацкий домик, совершенно неважно, какой:
Collapse )
redcat

3D модель небольшого трансформатора

Поскольку заказчики теперь очень приветствуют не только необходимые схемы/платы/исходники прошивок, но и 3D модели, то приходится заниматься ими. Конструкторам легче затолкать/вписать такой модуль в устройство. Но библиотеки, даже в платных альтиумах и менторах не всегда содержат то, что нужно. Приходится допиливать недостающее. В прошлом посте на эту тему мы занимались моделью транзистора. Это была простая задача, теперь чуть посложнее.

Это модель небольшого импульсного трансформатора для преобразователя напряжения (источника питания) 220/5V. Казалось бы, такая ерунда, а нет нигде. Она была сделана в AutoCAD и MeshLab. В автокаде делалась вся геометрия, модель по “деталям”, причем понятие детали тут имеет свой смысл - это группа тел, имеющая одинаковый цвет. Затем каждая “деталь” из сборки экспортировалась в файл STL, ничего другого подходящего в наших условиях автокад предложить не может.

STL по одному открываются в MeshLab специально для окраски, затем экспортируются в файлы VMRL. Наконец, все VRML собираются в одну модель, причем некоторые части приходится перемещать в MeshLab'е снова, - он валит все в кучу. Это конечно, не гарантирует идеального совпадения с исходной сборкой в автокаде, поскольку мешлаб - это программа для дизигинеров. А им, как известно, точность до лампочки.

MeshLab, как программа, для которой родной системой является UNIX-подобная, имеет привычку внезапно падать в Windows.
Collapse )
redcat

C. Глава 6. Структурные типы данных

"Структура - это одна или несколько переменных (возможно, различных типов), которые для удобства работы с ними сгруппированы под одним именем. Структуры помогают в организации сложных данных (особенно в больших программах), поскольку позволяют группу связанных между собой переменных трактовать не как множество отдельных элементов, а как единое целое."
"Единственно возможные операции над структурами - это их копирование, присваивание, взятие адреса с помощью & и осуществление доступа к ее элементам. Копирование и присваивание также включают в себя передачу функциям аргументов и возврат ими значений. Структуры нельзя сравнивать. Инициализировать структуру можно списком константных значений ее элементов; автоматическую структуру также можно инициализировать присваиванием."
(Б. Керниган, Д. Ритчи "Язык программирования C")


1. Группировка данных

Про структуры уже почти все сказано в цитатах к этой главе. Но давайте рассмотрим один полезный пример. Обычно в литературе идет пример с записью из таблицы базы данных: имя, должность, зарплата… или что-то в таком духе, просто, чтобы объяснить синтаксис объявлений и способы обращения со структурами. Но лучше взять какой-нибудь более полезный пример. Базы данных – штука весьма непростая и бесполезный пример будет неинтересным.
Collapse )
redcat

C. Глава 5. Аргументы функции main

"В операционной среде, обеспечивающей поддержку Си, имеется возможность передать аргументы или параметры запускаемой программе с помощью командной строки. В момент вызова main получает два аргумента. В первом, обычно называемом argc (сокращение от argument count), стоит количество аргументов, задаваемых в командной строке. Второй, argv (от argument vector), является указателем на массив символьных строк, содержащих сами аргументы. Для работы с этими строками обычно используются указатели нескольких уровней. "
(Б. Керниган, Д. Ритчи "Язык программирования C")


1. Параметры запуска приложения

Именно для этого функции main нужны аргументы. На самом деле, аргументов у main даже три, – последний указывает на блок переменных окружения. Аргументы извлекаются операционной системой из командной строки, при запуске программы, и передаются функции main. С помощью аргументов, каковые используются в форме ключей и имен файлов, мы можем управлять режимом работы программ. Они являются аналогом главного меню оконного приложения, но только для командной строки.
Collapse )
redcat

C. Глава 4. Стандартная библиотека libc

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

(Б. Керниган, Д. Ритчи "Язык программирования C")


1. Библиотека как набор функций

Если заглянуть в наш каталог c/bin, то там настоящее нагромождение файлов. Еще немного и недолго запутаться или потерять что-нибудь важное. Пришло время навести порядок. Мы можем собрать все объектные модули отдельных функций в один архивный файл, откуда компоновщик будет извлекать их по мере необходимости.

Если посмотреть на размер наших последних программ, то он окажется относительно большим (последняя версия strings весит 3272 байта, а это страшно много по нашим масштабам). Это происходит оттого, что мы до сих пор связываем все подряд объектные модули, и в нашей программе получается, так называемый, мертвый код. Использование правильно созданной библиотеки исключит его.
Collapse )
redcat

C. Глава 3. Строки

"Текстовый поток – это последовательность символов, разбитая на строки, каждая из которых содержит нуль или более символов и завершается символом новой строки. Обязанность следить за тем, чтобы любой поток ввода-вывода отвечал этой модели, возложена на библиотеку: программист, пользуясь библиотекой, не должен заботиться о том, в каком виде строки представляются вне программы."
(Б. Керниган, Д. Ритчи "Язык программирования C")


1. Самый распространенный вид массива

Это массив элементов типа char. Другими словами, строки. Каждая строка заканчивается символом новой строки только в файловом потоке. В памяти дело обстоит немного иначе, строка заканчивается нулем. На длину строки не накладывается никаких ограничений. Что касается байтов, то здесь ограничения есть. В текстовых строках можно использовать только печатаемые символы. Такими символами являются буквы, цифры, знаки препинания, пробелы и иногда символы псевдографики (теперь устарели). Символы могут быть многобайтовыми (UNICODE).

Непечатаемые символы, за исключением символа новой строки, не поддерживаются текстовыми редакторами, и вообще, портят текстовые форматы. Поэтому файлы и делят на текстовые и двоичные. В этой главе мы займемся строками и операциями над ними.
Collapse )
redcat

C. Глава 2. Целые числа (окончание)

Предыдущий пост оказался слишком большим для нерезинового старого добого редактора. Здесь заканчиваем вторую главу.



Компилятор обрезал числа, в которых были переполнения.

Теперь поглядим, как в дампе программы выглядит секция данных. Для этого сначала скомпилируем программу полностью, как говорится в таких случаях, "построим":

$ m ovf
. . . 
$ objdump -dj .data ovf > ovf-dump.txt
$ 
Лст. 2-23. Получение дампа отдельного раздела (.data).

В полученном дампе нужны будут некоторые пояснения.
Collapse )