Ответы пользователя по тегу Linux
  • Компиляция php 7.0.xx с использованием libressl?

    Для PHP =< 7.0.15 можно использовать ключ --with-openssl.
    Для PHP >= 7.0.17 используйте ключ --with-openssl=/usr.

    Дальше конфигуратор сам разберется с выбором библиотеки SSL:
    OpenSSL support => enabled
    OpenSSL Library Version => LibreSSL 2.5.4
    OpenSSL Header Version => LibreSSL 2.5.4
    Openssl default config => /etc/ssl/openssl.cnf

    Полезно также знать, что в PHP 7.0 изначально на уровне кода не было поддержки библиотеки OpenSSL 1.1+, но явно на уровне конфигурации это ограничение версии появилось только в 7.0.16. В 7.0.17 такая поддержка появилась.
    На Alpine уже тогда была последняя версия форка OpenSSL (LibreSSL), отчего со сборкой 7.0.16 были проблемы.

    Пример полной сборки PHP на Alpine :)
    Ответ написан
    1 комментарий
  • Как быстро сохранить файл в vim?

    Как пример.

    vimrc
    " Ctrl-Enter: force save file
    nnoremap <silent> <C-Enter> :<C-u>write!<CR>
    
    " Shift-Enter: force save file when buffer was changed
    nnoremap <silent> <S-Enter> :<C-u>update!<CR>

    " Ctrl-s: force save file
    inoremap <silent> <C-s> <Esc> :write!<CR>i

    Для ожидаемой работы <C-s> в терминале, добавить в конфиг:
    bash ~/.bash_profile или ~/.bashrc
    stty ixoff -ixon
    zsh ~/.zshrc
    stty start undef
    stty stop undef
    setopt noflowcontrol
    Ответ написан
    8 комментариев
  • Как эмулировать функционал из emacs в vim?

    Терминал.
    В Vim через плагин: vimshell.vim.
    В Neovim через команду terminal (как в Emacs)
    В любой момент можно начать работать с содержанием буфера (консоли) как с текстом.

    От себя (Vim — 7+ лет) сегодня советую использовать Neovim.
    Ответ написан
    Комментировать
  • Какой самый оптимальный / надежный вариант для хранения данных?

    Я больше в поисках лучшего и самого простого способа для работы/разворачивания с бекапов.

    Попробуйте Tarantool.
    — "персистентность": лог транзакций (.xlog) и полные снимки БД (.snap);
    — простой перенос с сервера на сервер (достаточно скопировать все файлы командой scp);
    — простая система горячего бэкапа и подключения реплики;
    — быстрее чем Redis :)
    Ответ написан
    Комментировать
  • Почему тормозит VIM после нескольких часов работы?

    Для высвобождения памяти закрывай буферы командой bwipeout, или bunload, если нужно оставить название буфера в списке. Скрытые буферы можно массово чистить самописной командой:

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

    let g:bufcleaner_max_save = 2
    
    command! -bar -bang -nargs=? CleanBuffers call s:cleanBuffers("<bang>")
    function! s:cleanBuffers(...) abort
      let force = a:0 >= 1 && a:1 ==# '!'
      redir => bufs
        silent! buffers
      redir END
    
      let hidden = []
      for buf in map(split(bufs, '\n'), 'split(v:val)')
        let bufnr = buf[0] + 0
        let flags = matchstr(join(buf[1:]), '^.*\ze\s\+"')
        let mod = substitute(flags, '\s*', '', 'g')
        let hide = mod ==# 'h' || mod ==# 'h+'
            \ && (force || input(printf("\n%s not saved.\nDelete anyway? [Y]es, (N)o: ",
              \ bufname(bufnr))) =~? '^y\%[es]$')
        if hide
          call add(hidden, bufnr)
        endif
      endfor
    
      let saved = get(g:, 'bufcleaner_max_save', 3) 
      let target = len(hidden) > saved ? join(hidden[0:-saved-1], ' ') : ''
      if !empty(target)
        silent! execute 'bwipeout!' target
      endif
    endfunction

    Очищать при скрытие:

    augroup buffer-cleaner
      autocmd!
      autocmd BufHidden * CleanBuffers
    augroup END
    Ответ написан
    Комментировать