Как стать автором
Поиск
Написать публикацию
Обновить
4
0

Пользователь

Отправить сообщение

GNU Make может больше чем ты думаешь

Время на прочтение3 мин
Количество просмотров7K
Как только исходники проекта надо распространять, то возникает необходимость использовать систему сборке, вместо того что нагенерила любимая IDE. В мире unix (с подачи gnu) традиционно используется autotools, ему есть отличные альтернативы в виде cmake или scons. Но почему-то ядро Linux собирается при помощи GNU Make, а вся FreeBSD включая порты при помощи BSD Make. WTF?

Однажды намучившись с autotools, я решил провести эксперимент — насколько можно перелопатить Makefile, чтобы обеспечить себе более-менее удобную сборку.

Читать дальше →

Устрой bug fix day

Время на прочтение1 мин
Количество просмотров1.2K
FIXME, TODO, XXX стандартный способ указать в комментариях: «Эй! Будет время — исправь этот грязный хак!». К примеру любимый (и не любимый) многими Eclipse имеет замечательное окошко где отображаются всё TODO по проекту.
Что нам мешает сделать это в vim? Что для этого нужно? grep и quick fix window.
Выполнив в vim команду :grep или :vimgrep, список совпадений будет доступен в quick fix window, доступное по :copen или :cw
Я повесил это чудо на хоткей:
map <F6> :vimgrep /fixme\\|todo/j *.[c,cpp,h,hpp,py]<CR>:cw<CR>

Поменяй расширения на нужные вам, F6 и начинай наконец фиксить!

Умный make

Время на прочтение1 мин
Количество просмотров4.2K
Большенство адэптов vim, которые использую его для работы с кодом, знают про такие комманды как :make и :cw. Первая запускает make, а вторая выводит список ошибок.
Так уж сложилось, что мои основные рабочие (те которые использую на работе :)) языки это Си и C++. И часто бывает, что нужно написать программку в один файл, дабы проверить какой-то алгоритм, функцию или идею. При том писать makefile для одного файла в лом, а так хочется использовать привычную комбинацию клавиш. Набросал замечательный солюшен:
if filereadable("Makefile")
	set makeprg=make\ -j4
	map <C-b> :make<CR>:cw<CR>
else
	map <C-b> :make %:r<CR>:cw<CR>
endif

Как видно суть в том, что запускать просто make при наличае makefile и make имя_файла при отсутствии. make -j4 указывает на запуск четырёх потоков сборки, для двухядерных процессоров самое оно, особенно в сочетании с ключеком -pipe для gcc :)

Окна и буферы

Время на прочтение2 мин
Количество просмотров46K
В vim 7 появились табы — привычный способ навигации по файлам. Когда я работал в eclipse я не раз замечал, что часто скакать между табами не удобно, а знакомство с буферами в emacs натолкнуло на прочтение документации по окнам/буферам в vim.

Читать дальше →

О Viacom и Google

Время на прочтение1 мин
Количество просмотров565
Я думаю вы слышали о судебном разбирательстве между Google и Viacom, которое обязало Google предоставить Viacom все ip адреса и логины с которых были просмотрены ролики (или даже вообще все данные, не уверен).

Вот любят спекулировать параноики о том, как плох google, он следит за нами и т.д., а настоящая опасность исходит от правительств и медиа-холдингов. Представьте будущее, где вы не можете дать почитать книгу другу, а библиотеки (бумажные/электронные) будут отсутствовать как класс. И всякий творческий порыв в музыке или литературе, будет обращаться в коммерцию. И прогресс будет бесконечно тормозиться монополиями и патентами, и будем мы все обламываться так же как и обламываемся сейчас из-за нефтяных баронов.

Звук по сети

Время на прочтение1 мин
Количество просмотров15K
Стоит у меня дома большой комп, используется в основном как телевизор. Кино смотрим на ноутбуке, ибо монитор не сильно больше, а стоит далеко от дивана. Поэтому приходится подключать к ноутбуку либо наушники, либо вторые колонки, либо ползать под стол и вытаскивать из компа шнур. Надоело.

Звуковые серверы в *nix есть давно, arts, esd — классика. Сейчас стандартом заслуженно становиться pulseaudio, в Ubuntu он устанавливается с релиза 8.04, а в Fedora с 8.
Читать дальше →

Бесконечные циклы

Время на прочтение1 мин
Количество просмотров14K
Как ивестно простейший способ получить диапазон чисел в Python это использовать range(). range возвращает список но когда нужно пройтись по большому диапазону лучше использовать xrange(), который вместо списка, возвращает итератор. Но как быть, когда конец диапазона не известен, а использовать while True кажется не эстетичным.
Очень просто:
from itertools import count
for i in count(1): DoSomeWith(i)

Разумеется как только мы получим результат, можем спокойно сделать break.

Расшифруй меня

Время на прочтение1 мин
Количество просмотров856
Дан массив:
int s[26] = {46, 47, 44, 119, 108, 96, 38, 97, 109, 104, 126, 126, 126, 104, 46, 102, 99, 49, 125, 99, 113, 123, 56, 57, 54, 25};
он содержит зашифрованные данные, алгоритм по детски простой. Кто первый расшифрует?

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность