Pull to refresh
4
0

User

Send message

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

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

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

Читать дальше →
Total votes 45: ↑35 and ↓10+25
Comments60

Устрой bug fix day

Reading time1 min
Views1.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 и начинай наконец фиксить!
Total votes 43: ↑39 and ↓4+35
Comments14

Умный make

Reading time1 min
Views4K
Большенство адэптов 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 :)
Total votes 19: ↑13 and ↓6+7
Comments2

Окна и буферы

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

Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments34

О Viacom и Google

Reading time1 min
Views534
Я думаю вы слышали о судебном разбирательстве между Google и Viacom, которое обязало Google предоставить Viacom все ip адреса и логины с которых были просмотрены ролики (или даже вообще все данные, не уверен).

Вот любят спекулировать параноики о том, как плох google, он следит за нами и т.д., а настоящая опасность исходит от правительств и медиа-холдингов. Представьте будущее, где вы не можете дать почитать книгу другу, а библиотеки (бумажные/электронные) будут отсутствовать как класс. И всякий творческий порыв в музыке или литературе, будет обращаться в коммерцию. И прогресс будет бесконечно тормозиться монополиями и патентами, и будем мы все обламываться так же как и обламываемся сейчас из-за нефтяных баронов.
Total votes 17: ↑7 and ↓10-3
Comments27

Звук по сети

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

Звуковые серверы в *nix есть давно, arts, esd — классика. Сейчас стандартом заслуженно становиться pulseaudio, в Ubuntu он устанавливается с релиза 8.04, а в Fedora с 8.
Читать дальше →
Total votes 53: ↑48 and ↓5+43
Comments26

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

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

Разумеется как только мы получим результат, можем спокойно сделать break.
Total votes 10: ↑8 and ↓2+6
Comments19

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

Reading time1 min
Views807
Дан массив:
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};
он содержит зашифрованные данные, алгоритм по детски простой. Кто первый расшифрует?
Total votes 29: ↑17 and ↓12+5
Comments24

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity