OpenSource #058
В этом выпуске вторая часть моей статьи по схемотехнике в Linux: “Схемотехника в Linux с помощью gEDA. Часть 2: pcb”
Скачать выпуск: http://osa.samag.ru/get/OpenSource058.zip
PS выпуск первоапрельский, но вредительства нет :)
В этом выпуске вторая часть моей статьи по схемотехнике в Linux: “Схемотехника в Linux с помощью gEDA. Часть 2: pcb”
Скачать выпуск: http://osa.samag.ru/get/OpenSource058.zip
PS выпуск первоапрельский, но вредительства нет :)
Относится к расширениям gcc, не претендует на переносимость, но все же: в gcc у case
можно указывать диапазоны значений:
case LOWVAL ... HIVAL:
Например:
switch(var)
{
case 0 ... 2:
/* какой-то код */
break;
case 3 ... 5:
/* какой-то другой код */
break;
default:
/* что делаем, когда ничего не помогает */
}
этот код эквивалентен такому:
switch(var)
{
case 0:
case 1:
case 2:
/* какой-то код */
break;
case 3:
case 4:
case 5:
/* какой-то другой код */
break;
default:
/* что делаем, когда ничего не помогает */
}
ЗЫ про одно полезное расширение gcc я уже писал: 0b00100100
Или: можно ли использовать Qt Creator не для Qt? Если коротко - можно.
Почему он? Потому что оказалось, что он достаточно функционален в мелочах, в частности индексирования кода и автодополнения. Крайне удобен в применении его Locator (что вызывается по стандартному сочетанию клавиш Ctrl+K), применение Локатора вообще сводит использование мыши в Qt Creator к минимуму (что удивительно для среды ориентированной на тулкит Qt4 и создание, в основном, графических приложений). Да, правда обвыкнутся по началу нужно, но потом… Если плагин ( http://gitorious.org/creator-plugins), который добавляет функционал по автоматическому созданию реализации функции/метода по его прототипу, так же Я, до того, как узнал про этот плагин, делал свой патч, со схожим функционалом. В общем, все что нужно для удобной работы с проектом (навигация, дополнения, подсветка синтаксиса, отстройка, отладка и т.п.) здесь есть.
Осталось понять, как это добро использовать. Вопросов нет, когда речь идет о родных средствах, типа .pro файла и qmake, а вот при использовании с не qmake/cmake проектами, можно воспользоваться Generic Project, который используют вашу систему сборки, не вмешиваясь в неё. Подробности всегда можно посмотреть на официальном сайте: http://doc.qt.nokia.com/qtcreator-snapshot/creator-project-generic.html
Собственно по ссылке выше и рассказано все, что нужно знать. Тезисно:
make all
, соответственно там можно задать любую нужную последовательность, которая соответствует вашей системе сборки.#define VERSION "0.0.1"
и т.п.
* project_name.creator - собственно сам файл проекта, его открывать в Creator’е для загрузки проекта, сейчас никаких настроек больше не содержит.
* в процессе работы появится файл project_name.creator.user в котором будут сохранены ваши параметры сборки, очистки проекта, информация о запускаемых модулях.Теперь как это можно использовать? Покажу на примере своего небольшого Makefile:
PROJECT_NAME=empty-test
EXE = $(PROJECT_NAME)
CC = gcc
CXX = g++
CFLAGS += -include $(PROJECT_NAME).config
CXXFLAGS += -include $(PROJECT_NAME).config
BIN_DIR = bin
SRC_CPP = ${shell cat $(PROJECT_NAME).files | grep '.cpp$$'}
SRC_C = ${shell cat $(PROJECT_NAME).files | grep '.c$$'}
OBJ := $(SRC_CPP:.cpp=.o)
OBJ += $(SRC_C:.c=.o)
.PHONY : all clean
all: $(OBJ)
$(CXX) -o $(BIN_DIR)/$(EXE) $(LDFLAGS) $(OBJ)
%.o : %.cpp
$(CXX) -c $(LDFLAGS) $(CFLAGS) $(CXXFLAGS) $< -o $@
%.o : %.c
$(CC) -c $(LDFLAGS) $(CFLAGS) $< -o $@
clean:
rm -f $(OBJ) $(BIN_DIR)/$(EXE)
Что тут делается, во первых - автоматически получается список файлов проекта из project_name.files, далее, компилятором автоматически подключается project_name.config, и все объявленные там макросы будут доступны внутри кода.
Естественно тут нет и намека на множественные цели, но проект можно разбивать на подпроекты, их зависимости друг от друга задавать в Creator’е, а самих объединять в рабочие области (workspace). В общем и целом - ограничено все только вашей фантазией, и, по сути, данные действия превращают Qt Creator в продвинутый редактор кода, с базовыми функциями управления проектами, чего часто бывает достаточно.
Да, индексация проекта происходит при его загрузке, что требует времени, поэтому есть лишний повод бить большие проекты на части :)
Ссылка в мемориз: http://qwt.sourceforge.net/
Из описания: библиотека включает визуальные виджеты, вспомогательные не визуальные классы, полезные в первую очередь для программ технической направленности. Так виджет для 2D построений предоставляет возможности масштабирования, ползунки, круговые органы управления, компасы, термометры, колеса прокрутки, кнопки для контроля или отображения значений переменных, массивов и т.д. Посмотреть все это добро можно на снимках: http://qwt.sourceforge.net/controlscreenshots.html
Библиотека распространяется на условиях модифицированной версии GPL, и достаточно либеральными исключениями, в частности разрешается статическая линковка, без раскрытия исходников, обязательному открытию подлежат только изменения в самой библиотеке. Подробности: http://qwt.sourceforge.net/qwtlicense.html
На странице проекта можно найти ссылки на производные работы, например:
Существуют биндинги к питону и ruby.
Для пользователей ArchLinux в extra есть пакеты:
Очередная версия 0.5, для пользователей ArchLinux в AUR есть правила для сборки git-версии.
Обзор, достаточно добротный: http://www.linuxgraphics.ru/articles.php?article_id=93
Они заново открыли конструктора, наи… всех: http://zeka-vasch.livejournal.com/413228.html
PS ну ну
Навеяно 615012 от камрадки mountain-diu
У всех на слуху очередное нововведение нашего замечательного правительства, о сокращении количества часовых поясов. Что не за очередное блеяние с экрана в исполнении ВВП или МДА, то бред полнейший. А все как мыши: плачут, колются, но продолжают жрать кактус.
Вот несколько ссылок по сабжу (да новостные ленты, я им тоже не верю, но из кучи гумуса можно вытащить по крайней мере червей на рыбалку или золотую монетку):
Россия переводит время зря и цитата отсюда, мне она о многом говорит, особенно если вспомнить, люди из какой партии у власти стоят:
Есть у реформы и сторонники. Они поголовно находятся в административном корпусе регионов. Приблизившись к Москве на час, можно будет оперативнее и полнее взаимодействовать со столичными властями, хором заявляют чиновники в разных концах России.
или:
Недовольны и жители Камчатского края, что отныне и без того короткий световой день (особенно зимой) стал еще меньше. Правда, теперь жители Чукотки и Камчатки в новогоднюю ночь будут смотреть обращение президента не в час ночи, а в полночь. о да! как же, не услышат ровно в 12 часов очередную порцию бреда с экрана телевизора..
Или вот, про переход на 5 часовых поясов: Россия с 5 часовыми поясами - полнейший абсурд хоть и натянутые выкладки, но все равно виден весь бред сего творения.
Ну и ещё один пример отжига в подтверждение первой ссылки: Чукотка перейдет из девятого часового пояса в восьмой:
12 марта дума Чукотского автономного округа поддержала идею о переходе региона в восьмой часовой пояс из девятого. Соответствующее обращение было направлено премьер-министру России Владимиру Путину. Сейчас временная разница между Москвой и Чукоткой — девять часов.
и сразу же:
Стоит отметить, что работники чукотского филиала Северо-восточного НИИ идею о переходе из одного часового пояса в другой не поддержали. “Смена временного пояса скажется на здоровье и производительности труда жителей”, — считают они.
Да нахрена эти ученые нужны, зачем нужна эта какая-то РАН (особенно с последними порывами лихо реформировать академию)!
PS у меня ощущение, что вместо людей в думах у нас зомби и/или манекены, а решения принимает электронный (или даже механический) бредогенератор.
Решил тут собрать небольшое окружение на основе IceWM, вернуться, так сказать к истокам (работал он у меня в бытность ещё P100/24RAM). Но т.к. теперь ему предстояло работать на ноутбуке, в режиме питания от батареи было бы хорошо иметь возможность наблюдать статус разряда.
Можно сказать научно-популярный фильм, да.
это меня проняло:
Еще один процесс, который может породить множество зомби, это демон… Иногда я должен напоминать себе, что пишу статью по программированию, а не сценарий фильма ужасов.
Отсюда: http://ibash.org.ru/quote.php?id=12598 по наводке l1feh4ck3r’а
Задачка: http://bishop-it.ru/2010/03/codeinrussian
Ну там в комментах я написал, в gcc такое не проканывает (пока точно известно, что проканывает в MSVC, а как дела обстоят с компиляторами Intel/Sun/Borland мне не известно). Но… в транслите так же сделал вариант: http://codepad.org/zEs0pjLl или тут:
/*
* Собирать:
* gcc -include stih.h -o stih stih.c
* Посмотреть вывод препроцессора:
* gcc -E -include stih.h -o stih stih.c
*/
/*
* stih.h
*/
#include <stdio.h>
#define NACHALO int main() {<br/>
char *out = NULL; <br/>
char *txt = NULL; <br/>
FILE *fp = NULL;
#define KONETS return 0;}
#define PROGRAMMY
#define Vyvedi
#define tekst
#define na
#define v
#define ekran out = NULL
#define fajl out =
#define nachalo ; if (out == NULL) <br/>
fp = stdout;<br/>
else <br/>
fp = fopen(out, "w"); txt =
#define konets ; if (fp != NULL)<br/>
{<br/>
if (txt != NULL) fprintf(fp, "%s", txt);<br/>
if (fp != stdout) fclose(fp); <br/>
}
#define teksta
/*
* stih.c
* Тут перевел в транслит, т.к. gcc (только ли он?) не поддерживает #define РУССКИЙ
* в общем, сути не меняет
*/
NACHALO PROGRAMMY
Vyvedi tekst na ekran
nachalo teksta
"YA pomnyu chudnoe mgnoven'e: <br/>n<br/>
Peredo mnoj yavilas' ty, <br/>n<br/>
Kak mimoletnoe viden'e, <br/>n<br/>
Kak genij chistoj krasoty."
konets teksta
Vyvedi tekst v fajl "Stikh.txt"
nachalo teksta
"V tomlen'yakh grusti beznadezhnoj<br/>n<br/>
V trevogakh shumnoj suety,<br/>n<br/>
Zvuchal mne dolgo golos nezhnyj<br/>n<br/>
I snilis' milye cherty."
konets teksta
KONETS PROGRAMMY
А в нем и первая часть моей статьи по основам схемотехники в Linux: “Схемотехника в Linux с помощью gEDA. Часть 1: gschem”
Скачать выпуск: http://osa.samag.ru/get/OpenSource057.zip
Есть такой пакет CEDET, в прошлом посте дал ссылочку на статью Алекса Отта по его настройке.
Захотелось получить красивое меню автодополнения после ввода .
или ->
в C/C++ программах. Изучая его же
конфиги (начинающим, и не только - рекомендую, есть интересности, в частности - автовставка шаблона при создании нового файла) наткнулся на интересную минорную моду:
company-mode, которая то, что мне нужно и делает. Причем, по ходу ввода - выбор в меню изменяется.
Подкатом картинка, которая демонстрирует как это работает у меня.
Пасхалки :)