LINUX.ORG.RU

Избранные сообщения demidrol

Как писать на C в 2016 году

Форум — Development

Интересная статейка: https://matt.sh/howto-c

PS: царя скастуйте кто-нибудь, пусть выскажет своё икспертное мнение.

 

Oxdeadbeef
()

Мой Firefox

Галерея — Скриншоты

С момента моего прошлого скриншота в галерее конфигурация лисы почти не изменилась, однако там я лишь вскользь упомянул о сделанных мной настройках и установленных дополнениях, иначе пост был бы слишком огромным. Однако, многие заинтересовались, а отвечать каждому было лень, поэтому было решено написать этот пост, где я всё разложу по полочкам. Итак, поехали.
Установленные дополнения (некоторые не столь важные я упоминать не буду):

  • Classic Theme Restorer (Customize UI) - Довольно известное дополнение. Позволяет очень тонко настроить внешний вид браузера
  • Disconnect - Убирает «жучки» с сайтов
  • Download Panel Tweaker - некоторые улучшения для встроенной панели загрузок
  • Greasemonkey - менеджер пользовательских скриптов
  • NoScipt - отключает JavaScript на сайтах
  • Pure URL - убирает всякий мусор из адресной строки
  • Stylish - менеджер пользовательских стилей
  • Tabs Mix Plus - Позволяет очень тонко настроить вкладки и всё, с ними связанное
  • Менеджер сессий - Позволяет сохранять текущие вкладки (сессии)
  • Ublock - Легковесный аналог AdBlock
  • VkOpt - дополниельный набор настроек и функций для вк

Установленные юзерстили:

Установленные юзерскрипты:

  • Anti AdBlock Killer - болкирует блокировщики блокировщика рекламы
  • LOR Code Tools - знаменитый юзерскрипт от Eddy_Em
  • VK Download Media - потому что кнопка «скачать» у vkopt выглядит ужасно

Стартовая страница
Тема: Operafx, также хорошо смотрится с темой Mx4.
Иконки noscript перекрашены для лучшего соответствия общей теме оформления. Как это сделать, можн прочитать тут.
Ш: Arial 16
cast smilessss и shayger как интересующихся

>>> Просмотр в png

>>> Просмотр (3219x2316, 1931 Kb)

 

sudopacman
()

Веб-разработка в Vim

Форум — Web-development

Предлагаю обсудить и поделиться опытом по веб-разработке в Vim.

Я использую Vim в терминале termite (со своими патчами для дефолтного копипаста и прочее) с цветовой схемой gruvbox: как для терминала, так и для Vim.

Этот клавиатура-ориентированный vim-like терминал я упомянул не столько потому, что у него реализованы режимы как Vim (insert mode, selection mode, выделение клавиатурой включая блочное), а потому, что у него есть приятная фича (которую можно наблюдать в iTerm2 для OS X) при работе Vim'а в нём, а именно цвет курсора изменяется в зависимости от цвета символа, на котором находится курсор, а также при выделении цвет выделения повторяет цвет слов/строк (но без инвертирования где нужно, может еще допилят), скриншот.

Менеджер плагинов:

Перед обсуждением плагинов и настроек, хочу подчеркнуть почему я использую менеджер плагинов vim-plug: перепробовав все известные менеджеры плагинов, включая недоменеджер pathogen, остановился именно на vim-plug потому, что он самый быстрый (параллельная установка/обновление, к-во потоков настраивается), имеет приятный интерфейс, краткий синтаксис, а самое главное позволяет настроить загрузку или отключение плагинов по filetype и/или первому вызову самого плагина, это не только ускоряет старт/работу Vim, но и помогает разрулить конфликты некоторых плагинов, простой пример:

Plug 'tpope/vim-endwise',   { 'for': [ 'ruby','vim','sh','zsh' ] }
Плагин endwise будет загружен только для ft=ruby,vim,sh,zsh, т.к. если этот полезный плагин работает одновременно с не менее полезным плагином delimitMate, то возникает конфликт в файлах с ft=css,js и везде, где после открытия скобки нужен автоматический переход на следующую строку и автозакрытие скобки.

Кроме всего прочего, отдельно от веб-разработки-related для самого вима у меня такое:

Автоматическое переключение на английский в Normal mode и обратно на предыдущий в Insert mode:

Конечно же нужно решать проблему с локалями (т.к. веб-разработка, в отличие от программирования иногда ведется на отличных от английского языках), а именно с неудобством при их переключении в Normal mode и обратно, самое лучшее решение, это установка в систему xkb-switch + плагин в Vim для него.

Plug 'lyokha/vim-xkbswitch'
let g:XkbSwitchEnabled       = 1
let g:XkbSwitchLib           = '/usr/lib64/libxkbswitch.so'
let g:XkbSwitchIMappings     = ['ru']
let g:XkbSwitchSkipIMappings = {'*' : ['[', ']', '{', '}', "'"]}
Теперь не нужно переключать на английский входя в Normal mode и на русский обратно в Insert mode, переключение происходит автоматически. Очень удобно.

Линейка номеров строк:

set nu
set nuw=4
autocmd InsertEnter * set nornu
autocmd InsertLeave * set rnu
в Insert mode - с номерами строк всё как обычно, в Normal mode (точнее после первого входа в insert и выхода обратно в normal) включается типа линейки: скриншот.

Автоматическая паста с отступами:

Чтобы навсегда забыть эту проблему и не включать перед пастой каждый раз режим пасты или использовать хитрые хоткеи, можно просто добавить настройку:

let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

Замена заменяемого без удаления (проблема забивания иксового буфера обмена):

Чтобы заменить слово или кусок окруженный делиметрами без удаления в иксовый буфер, можно использовать такую настройку на хоткей S :

nnoremap <silent> S :set opfunc=PasteReplace<CR>g@
function! PasteReplace(type, ...)
    if a:0
        silent exe "normal! `<" . a:type . "`>p"
    elseif a:type == 'line'
        silent exe "normal! '[V']p"
    elseif a:type == 'block'
        silent exe "normal! `[\<C-V>`]p"
    else
        silent exe "normal! `[v`]p"
    endif
endfunction
nmap SS S$
Теперь если нужно заменить слово без его удаления, можно просто: Sw , Si" , Si( , и т.п.

Проекты/сессии:

Плагин vim-startify - стартовый экран, можно настроить на сессии и букмарки, чтобы каждый раз не открывать то же самое в сплиты/табы/буферы.

Документация:

Для открытия документации в браузере (как минимум для того, что нас интересует: HTML, JavaScript, CSS, SCSS, LESS, Ruby, Rails, Django, PHP и т.п.) исходя из из ft= и положения курсора, удобно замапить на F1:

Plug 'Keithbsmiley/investigate.vim'
nnoremap <F1> :call investigate#Investigate()<CR>

Автокомплит и сниппеты:

В отличие от YouCompleteMe, автокомплитер neocomplete не тормозит (при работе и старте), не нужен питон (но нужен lua), а всё остальное такое же (для веб-разработки). Интегрируется с родным движком сниппетов neosnippet, который работает как с родными, так и универсальными vim-snippets (объединенные Snipmate & UltiSnip).

Настройка для навигации по комплиту через Tab (сам комплит всплывает автоматически, можно настроить обратное):

imap <expr><TAB> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
if has('conceal')
  set conceallevel=2 concealcursor=i
endif

ZenCoding/Emmet:

Полнофункциональный Emmet для Vim: emmet-vim

Работает как нужно, но по дефолту неудобный (как по мне) хоткей <c-y>, , я настроил себе на jk . Т.е. Esc у меня kj , а дополнить jk . Первое время пользовался F4, привожу настройки, но jk намного удобнее. Просто на Tab настроить нельзя (иначе как пользоваться Tab?).

Plug 'mattn/emmet-vim',           { 'for': ['html','xhtml','css','sass','scss','less'] }
au FileType html,css,sass,scss,less imap <expr><F4> emmet#expandAbbrIntelligent("\<tab>")
au FileType html,css,sass,scss,less imap <expr>jk   emmet#expandAbbrIntelligent("\<tab>")
au FileType html                    imap <C-\>      <CR><CR><Esc>ki<Tab>
Плагин MatchTag - для отображения парных тегов.

Кроме Emmet'а для Vim существует аналог: Sparkup (нужен питон, не пробовал).

Отображение отступов:

Можно настроить каким символом и цветом отображать линии отступов, я настроил на хоткей <A-i> , альт как непечатаемый символ, так что проще посмотреть настройку склонировав репу на гитхабе и заглянув в .vimrc (или нажать C-v A-хоткей), скриншот.

Plug 'Yggdroot/indentLine'
let g:indentLine_enabled    = 0
let g:indentLine_char       = '¦'
let g:indentLine_color_term = 239
let g:indentLine_color_gui  = '#A4E57E'
nmap ^[i :IndentLinesToggle<CR>

Подсветка синтаксиса:

Plug 'tpope/vim-haml',            { 'for': 'haml'   }
Plug 'wavded/vim-stylus',         { 'for': 'stylus' }
Plug 'groenewege/vim-less',       { 'for': 'less'   }
Plug 'digitaltoad/vim-jade',      { 'for': 'jade'   }
Plug 'slim-template/vim-slim',    { 'for': 'slim'   }
Plug 'othree/html5-syntax.vim',   { 'for': 'html'   }
Plug 'cakebaker/scss-syntax.vim', { 'for': 'scss'   }

Plug 'hail2u/vim-css3-syntax',    { 'for': ['html','css'] }
augroup VimCSS3Syntax
  autocmd!
  autocmd FileType css setlocal iskeyword+=-
augroup END

Проверка синтаксиса:

Для проверки синтаксиса используется Syntastic + сторонние чеккеры:

Plug 'scrooloose/syntastic', { 'for': ['ruby','html','css', 'javascript', 'haml'] }
let g:syntastic_auto_jump           = 1
let g:syntastic_error_symbol        = '✖'
let g:syntastic_warning_symbol      = '►'
let g:syntastic_javascript_checkers = ['jshint'   ] " sudo npm install -g jshint
let g:syntastic_html_checkers       = ['jshint'   ] " sudo npm install -g jshint
let g:syntastic_ruby_checkers       = ['rubylint' ] " gem install ruby-lint
let g:syntastic_haml_checkers       = ['haml-lint'] " gem install haml-lint
let g:syntastic_css_checkers        = ['csslint'  ] " sudo npm install -g csslint
let g:syntastic_css_csslint_args    = "--ignore=zero-units"

Деобфускация / beautify'еры:

Плагин vim-autoformat работает со сторонними 'formatprograms', например js-beautify для HTML, CSS и JavaScript. autopep8 для питона и т.д. Всё это должно быть установленно.

Plug 'Chiel92/vim-autoformat'
let g:formatprg_args_javascript = "-j -q -B -f -"
noremap  <F8>   :Autoformat<CR><CR>
vnoremap <C-F8> gq

JavaScript:

Дефолтная поддержка JavaScript в Vim на довольно низком уровне, так что необходимы плагины как для самого JS, так и для библиотек, плагин javascript-libraries-syntax поддерживает почти все основные либы: jQuery, underscore.js, Backbone.js, AngularJS, RequireJS, Sugar.js, Jasmine и т.д.

Plug 'moll/vim-node'
Plug 'pangloss/vim-javascript',      { 'for': 'javascript' }
Plug 'jelera/vim-javascript-syntax', { 'for': 'javascript' }
let javascript_enable_domhtmlcss = 1
let g:html_indent_inctags        = "html,body,head,tbody"
let g:html_indent_script1        = "inc"
let g:html_indent_style1         = "inc"

Plug 'othree/javascript-libraries-syntax.vim', { 'for': 'javascript' }
let b:current_syntax       = 'javascript'
let g:used_javascript_libs = 'angularjs'

Также полезен tern_for_vim (сам Tern должен быть установлен), который умеет в 'Jump to the definition', 'Find the type' и т.д.

Пробельные символы:

По A-w показывает, по \-dw удаляет. Перевести все табы в пробелы (вдруг кто не знает), в Vim: :retab .

Plug 'ntpeters/vim-better-whitespace'
let g:better_whitespace_enabled = 0
nmap ^[w :ToggleWhitespace<CR>
nmap <Leader>dw :StripWhitespace<CR>

И кое-какие настройки по-мелочи:

set splitbelow
set splitright
inoremap  kj           <Esc>
map       gm           :call cursor(0, virtcol('$')/2)<CR>
nnoremap  <F12>f       :exe ':silent !firefox %'<CR><C-l>
nnoremap  <F12>c       :exe ':silent !chromium-browser %'<CR><C-l>
1-2 строки: для нормального открытия (слева направо) сплитов.
3: Esc на kj - мегаудобно.
4: для попадания на средину строки.
И последние две для предпросмотра в браузерах.

Мой ~/.vimrc

Кто что использует и как, кроме вышеуказанного?

 

VimCasts
()

Владельцам старых нетбуков на заметку

Форум — Linux-hardware

Немного про разгон GMA950.

Не секрет что старенький чипсет 945G, применяемый в первых нетбуках с процессорами Atom обладает завидным аппетитом и жрёт в 5 раз больше чем сам процессор (25W против 4-5). Инженегры Intel не долго заморачиваясь «решили» эту проблему снижением частоты видеоядра с 400 (у настольного 945G) до 166 мегагерц. Но иногда на нетбуке хочется и поиграть. Собственно, предлагаю вашему вниманию простенький скриптик, который умеет менять частоту ГП. Для работы нужен работающий setpci (пакет pciutils в Debian и Ubuntu). Используется крайне просто - ./script.sh -oc меняет частоту на 400MHz, и ./script.sh -dc обратно на 166. На десктопных 945G по идее тоже должен работать, хотя зачем оно может понадобится - не знаю. ЗЫ: Большого прироста производительности оно не даст, ибо на сочетании 950+атом скорость 3D упирается в еле работающий SW TnL. Но зато можно будет поиграть в третий квейк с анизотропной фильтрацией :)

#!/bin/sh
USAGE="USAGE: <$0> [-oc|-dc]"

if [ -z $1 ] ; then
	echo $USAGE
	exit
fi

if [ $1 = "-oc" ] ; then
	echo "Setting GMA950 clock to 400MHz"
	setpci -s 00:02.0 f0.b=00,60
	setpci -s 00:02.0 f0.b=33,05
elif [ $1 = "-dc" ] ; then
	echo "Setting GMA950 clock to default (166MHz)"
	setpci -s 00:02.0 f0.b=00,60
        setpci -s 00:02.0 f0.b=30,05
else
	echo $USAGE
fi

 , ,

svr4
()

Infinity для процессоров Intel Atom (тестовая альфа версия)

Форум — Linux-hardware

Публикую предварительную личную версию 4-го стейджа gentoo для процессоров Intel Atom. Система минимальная, недоделанная, проще говоря сделан скелет системы. В составе иксы, lxde, compiz, emerald, браузер midori, видеопроигрыватель mplayer, плейер audacious, в качестве текстового редактора задействован bluefish, файловый менеджер pcmanfm заменен на spacefm, калькулятор, редактор разделов gparted, для просмотра графики используется gpicview. Всего установлено 515 пакетов, ежели верить eix -Ic)

Шрифты настроены, как говорят, из коробки. Переработан conky, доработаны настройки compiz. До логина на asus n10j теперь менее 20 секунд.

Порядок установки:

1.Скачиваем (минимально достаточно скачать и установить только infinity.tar и portage-and-kernel-sources.tar):

  • Основная система infinity.tar 542Мб (md5sum 3e552757f853880ec337bfaccb3019f1)
  • Портежи, исходники ядра portage-and-kernel-sources.tar 262Мб (md5sum a9f287ca921ac499d6ae31008c6f4a28)
  • Исходники пакетов distfiles.tar 893Мб (md5sum 374a33ef3a3858c6f4ff9bda0fd712f3)
  • Готовые бинарники packages.tar 546Мб (md5sum c8ea553a704405a9786f88535ea13f2c)

2.Создаём раздел для установки с файловой системой ext4, удобным для Вас способом (минимально рекомендую от 16Гб)

3. Примонтируем его, например, к /mnt/gentoo (вместо sdaX впишите свой раздел, например, sda4)

# mkdir /mnt/gentoo
# mount /dev/sdaX /mnt/gentoo

4. Далее распаковываем необходимые части системы (предполагается, что они уже загружены и находятся в корне домашней папки пользователя):

# cd /mnt/gentoo
# time tar -xf ~/infinity.tar
# time tar -xf ~/portage-and-kernel-sources.tar
# time tar -xf ~/distfiles.tar
# time tar -xf ~/packages.tar

По времени полная распаковка займёт около полутора минут. Если устанавливаете только первые два основных пакета, то около 20 секунд.

Далее настраиваем загрузчик. В примере опишу, что нужно внести в grub.conf для grub-legacy (первый grub) при условии, что установка производилась на sda4.

Для Intel видеокарты:

title=Infinity 2013 alpha version (sda4) Intel
root (hd0,3)
kernel /mnt/atom/write/boot/vmlinuz-3.0.17-gentoo-r2 root=/dev/sda4 real_resume=/dev/sda1 rootfs=ext4 vga=0x315 video=uvesafb:ywrap,1024x600-32@60,mtrr:3,splash=verbose,theme:tty1 console=tty1 udev elevator=cfq doscsi cgroup_disable=memory
initrd /mnt/atom/write/boot/infinity.gz
Для Nvidia видеокарты:
title=Infinity 2013 alpha version (sda4) Nvidia
root (hd0,3)
kernel /mnt/atom/write/boot/vmlinuz-3.0.17-gentoo-r2 root=/dev/sda4 real_resume=/dev/sda1 rootfs=ext4 vga=0x36D video=vesafb:ywrap,1024x600-32@60,mtrr:3,splash=verbose,theme:tty1 console=tty1 udev elevator=cfq doscsi cgroup_disable=memory
initrd /mnt/atom/write/boot/infinity.gz

Обратите внимание, что в строке root (hd0,3) указывается номер на единицу меньше, чем в sda.

По умолчанию система настроена для работы Intel видеокарты. Чтобы переключить на Nvidia при первой загрузке из-под суперпользователя выполните:

# eselect opengl set nvidia && cd /etc/X11 && cp -a xorg.conf.nvidia xorg.conf && reboot

Для переключения обратно на видеокарту Intel:

# eselect opengl set xorg-x11 && cd /etc/X11 && cp -a xorg.conf.intel xorg.conf && reboot

Пароли:

  • root = root
  • quest = quest

Тестовая система скомпонована из нескольких блоков:

  • Основная система - /mnt/atom/infinity.squash
  • Портежи - /mnt/atom/portage.squash
  • Исходники ядра - /mnt/atom/kernel.squash

В каталог /mnt/atom/write записываются все изменения, сделанные в системе. По умолчанию домашний каталог сохраняется в /mnt/atom/write/home. Ядро располагается в каталоге /mnt/atom/write/boot. В режиме по умолчанию настройка fstab не требуется.

После первой устновки выполните от root:

# prelink -amRf

В принципе всё. Далее можно работать как с обычной генту-системой, забыв, что она построена на каскадной файловой системе aufs с использованием нескольких частей на squashfs.

При работе с intel видеокартой после старт будет занято около 70Мб, с nvidia около 140Мб оперативки.

Бенчмарк compiz на intel 945GSE ~ 135 FPS

Бенчмарк compiz на nvidia GeForce 9300M GS ~ 460 FPS

К сожалению, всё запланированное не успеваю выполнить до Нового года, буду доделывать в январе-феврале. Пока выкладываю с изъянами. Буду благодарен за адекватную критику и хорошие советы.

Недоработки:

1.Скрипт init нуждается в переработке, пока не решил как именно будет переключаться на основную систему

2.Хорошо настроить работу intel видеокарты пока не получилось. Окна дергаются при включенном режиме вязких окон, хотя этого не должно происходить

3.В настройках compiz не выводятся значки, хотя они присутствуют в системе

4.В grub и xorg система настроена для разрешения 1024x600 под DPI 116х116. Для других значений нужно менять эти параметры самостоятельно

5.Не успел написать xorg.conf для radeon, но сама поддержка этих видеокарт присутствует. Если кто поделится хорошим универсальным вариантом для этих видеокарт, буду признателен.

P.S.

Возможно не смогу быстро отвечать на вопросы в праздники, но буду страться уделить внимание всем адекватным собеседникам по мере появления свободного времени.

Ссылка на предыдущую публикацию, где присутствует описание управления

 , ,

glibych
()

gentoo автомонтирование usb

Форум — Desktop

А что нужно поставить в gentoo и с какими флагами для автомонтирования флешек? Вот dbus cтоит, consolekit тоже. Чего не хватает? Ведро 3.7.1

 , ,

reddaemon
()

Как заставить Emacs игнорировать раскладку.

Форум — Desktop

Помимо программирования, я набираю в emacsе документы (ТеХ), на русском. Как заставить емакс игнорировать раскладку, чтобы не нужно было переключаться на английскую?

 

aptyp
()