Обновить
4
0
Stepan@redchrom

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

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

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

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

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

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

Устрой bug fix day

Время на прочтение1 мин
Охват и читатели1.3K
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.4K
Большенство адэптов 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 мин
Охват и читатели47K
В vim 7 появились табы — привычный способ навигации по файлам. Когда я работал в eclipse я не раз замечал, что часто скакать между табами не удобно, а знакомство с буферами в emacs натолкнуло на прочтение документации по окнам/буферам в vim.

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

О Viacom и Google

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

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

Звук по сети

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

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

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

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

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

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

Время на прочтение1 мин
Охват и читатели896
Дан массив:
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};
он содержит зашифрованные данные, алгоритм по детски простой. Кто первый расшифрует?

Информация

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