Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
STJ

Максим Антонихин

Front-end developer
  • 12
    вклад
  • 73
    вопроса
  • 32
    ответа
  • 28%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как настроить деплой приложения?

    Vitaly Karasik @vitaly_il1
    DevOps Consulting
    А что вам не нравится в вашем сегодняшнем методе?
    - есть какие-то ручные шаги?
    - есть какие-то адреса или параметры  hardcoded?

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

    Можно точнее/подробнее? Удалить в принципе можно все, если постараться :-)
    Ответ написан более года назад
    2 комментария
    Нравится 1 2 комментария
  • Как сделать авторизацию веб приложения только для одного компьютера?

    ns174ru
    Artem Ivanov @ns174ru
    https://ns174.ru
    В таком случае нужно использовать ряд параметров для максимальной защиты, на выбор или все разом:
    - ip адрес
    - разрешение экрана
    - идентификатор браузера
    - код из смс
    - при входе с другого пользователя с этим же логином/паролем закрывать другие остальные сессии этого аккаунта
    Ответ написан более года назад
    Комментировать
    Нравится 1 Комментировать
  • Почему нет микрофона на профиле A2DP Sink (High Fidelity Playback)?

    fshp
    Максим Мосейчук @fshp
    Не поможем. A2DP не поддерживает микрофон на аппаратном уровне. Везде так.
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 1 2 комментария
  • Какой фреймворк использовать для создания мобильное приложение?

    gadfi
    Олег Гамега @gadfi
    https://gamega.org
    решения типа phonegap и иже с ним будут тормозить ... увы и ах, но для чего то сложного на android тормоза все равно будут, поэтому остается react native
    сам он пока может и сыроват, но активно пилится, и в отличии от того же angular проблем с миграцией не будет
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 2 Комментировать
  • Как лучше и быстро изучить теорию Javascript?

    IonDen
    Денис Инешин @IonDen
    JavaScript developer. IonDen.com
    https://learn.javascript.ru/
    Вся теория просто с нуля объясняется.

    А вообще, читайте тогда Девида Фленагена (носорог). У него очень глубоко разбирается вся суть JS.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 3 Комментировать
  • Как заставить работать автокомплит и сниппеты в виме?

    AlexMasterov
    Александр Мастеров @AlexMasterov
    Такое совмещение можно получить в связке neocomplete.vim + ultisnips.

    Для neocomplete нужен Vim собранный с поддержкой Lua (почему выбран Lua объясняется здесь). Сборка и компиляция под Linux вполне обычное и не сложное дело, а для Windows можно найти готовую сборку с актуальной версии билда (1, 2, 3 и сам Lua). UltiSnips требует поддержки python, причем вроде только 2-й версии.

    При настройке neocomplete нужно добавить ultisnips в качестве источника:
    let g:neocomplete#sources = {
      \ '_':          ['buffer', 'file/include'],
      \ 'javascript': ['omni', 'file/include', 'ultisnips', 'tag']
      \}

    И сделать так, чтобы поиск в нем начинался с первого символа, а найденное для наглядности было всегда сверху:
    call neocomplete#custom#source('ultisnips', 'rank', 100)
    call neocomplete#custom#source('ultisnips', 'min_pattern_length', 1)

    Если для ручного автодополнения используется Tab, то советую воспользоваться функцией, которая позволит сохранить обычную работу Tab'а с учетом наличия строк и пробелов:
    inoremap <silent> <Tab> <C-r>=<SID>neoComplete("\<Tab>")<CR>
    inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<C-x>\<C-o>"
    
    function! s:neoComplete(key)
      if pumvisible()
        return "\<C-n>"
      endif
      let [curPos, lineLength] = [getcurpos()[4], col('$')]
      let isText = curPos <= lineLength
      let isStartLine = curPos <= 1
      let isBackspace = getline('.')[curPos-2] =~ '\s'
      if isText && !isStartLine && !isBackspace
          return neocomplete#helper#get_force_omni_complete_pos(neocomplete#get_cur_text(1)) >= 0
              \ ? "\<C-x>\<C-o>\<C-r>=neocomplete#mappings#popup_post()\<CR>"
              \ : neocomplete#start_manual_complete()
      endif
      return a:key
    endfunction

    Для раскрытия сниппетов UltiSnips советую использовать почти аналогичную функцию: (пример с тильде)
    inoremap <silent> ` <C-r>=<SID>ultiComplete("\`")<CR>
    xnoremap <silent> ` :<C-u>call UltiSnips#SaveLastVisualSelection()<CR>gvs
    snoremap <C-c> <Esc>
    
    function! s:ultiComplete(key)
      if len(UltiSnips#SnippetsInCurrentScope()) >= 1
        let [curPos, lineLength] = [getcurpos()[4], col('$')]
        let isBackspace = getline('.')[curPos-2] =~ '\s'
        let isStartLine = curPos <= 1
        let isText = curPos <= lineLength
        if isText && !isStartLine && !isBackspace
          return UltiSnips#ExpandSnippet()
        endif
      endif
      return a:key
    endfunction

    В UltiSnips вроде имеется поддержка сниппетов в формате SnipMate, а кроме этого указывается что плагин работает с YouCompleteMe. Но этого я давно не проверял, считая на сегодня плагин YouCompleteMe — излишним нагромождением, а SnipMate вовсе мертвым, авторы которого когда-то так и не смогли договориться, кто кого должен форкнуть.

    При необходимости дополню ответ. Но можно просто посмотреть как это сделано у меня.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
  • Как выполнить экшен после выполнения другого екшена?

    iNikNik
    Никита Гущин @iNikNik
    Единственный способ нативно в редаксе выполнять экшены в определенном порядке - это thunk
    functiob action1Creator() {
      return (dispatch, getState) => {
        fetch(...)
          .then(JSON.parse)
          .then((response) => dispatch(action2Creator(response)))
        ;
      };
    }
    
    function action2Creator(response) {
      return { type: 'SOME', data: response.data[12] };
    }
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
  • Как лучше подключать сторонние стили в react приложении?

    dmitry_pavlov
    Dmitry Pavlov @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    Вот может интересно будет прочитать - Navigating the React.JS Ecosystem - хорошая статья по реакту и как и чем с ним работать в проекте.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
  • Как лучше подключать сторонние стили в react приложении?

    Александр @OneFive
    React.js <3
    webpack и import './clock.scss';
    -components
    --clock
    ---clock.js
    ---clock.scss
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 2 Комментировать
  • Почему лагает X server?

    kompi
    kompi @kompi
    nullstack devoops
    Драйвера на видео поставлены?
    Из wiki арча:
    For the driver to work on the new Intel Skylake (6th gen.) GPUs, i915.preliminary_hw_support=1 must be added to your boot parameters.
    Ответ написан более трёх лет назад
    5 комментариев
    Нравится 1 5 комментариев
  • Почему тормозит VIM после нескольких часов работы?

    AlexMasterov
    Александр Мастеров @AlexMasterov
    Для высвобождения памяти закрывай буферы командой 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
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 2 Комментировать
  • Куда делся модуль react-router/lib/BrowserHistory?

    KonanMentor @KonanMentor
    Все histories вынесли в отдельный модуль https://github.com/rackt/history
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
  • Какой линукс поставить на ноут?

    Neic @thomas_white
    Арч форева
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
  • Какую ОЗУ поставить на lenovo G50?

    dimonchik2013
    Dimonchik @dimonchik2013
    совет, который уже дан - ничего не стоит
    shop.lenovo.com/us/en/laptops/lenovo/g-series/g50-...
    а сейчас там 2Gb всего?

    если да, вынужден разочаровать

    ark.intel.com/products/81071/Intel-Celeron-Process...
    извини, братан, максимум 8

    и то если Ленова не пожлобилась на материнку
    Ответ написан более трёх лет назад
    5 комментариев
    Нравится 1 5 комментариев
  • Какую ОЗУ поставить на lenovo G50?

    DevMan
    DevMan @DevMan
    www.crucial.com/usa/en/compatible-upgrade-for/Leno...
    8/16 gb зависит от кол-ва слотов в вашей модели (1 или 2).
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 5 2 комментария
  • Какую ОЗУ поставить на lenovo G50?

    386DX @386DX
    www.kingston.com/ru/memory/search/Default.aspx?Dev...

    Предположительно эта подойдет, а чтобы точно знать, есть около 10 параметров оперативы, которые влияют на совместимость
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 2 Комментировать
  • Какие плагины VIM'a вы используете для веб-разработки?

    rutaka_n
    rutaka nashimo @rutaka_n
    softwere engineer
    Plugin 'gmarik/Vundle.vim'
    
    Plugin 'Shougo/vimproc.vim'
    Plugin 'nanotech/jellybeans.vim'
    
    Plugin 'tpope/vim-sensible'
    Plugin 'tpope/vim-surround'
    Plugin 'tpope/vim-commentary'
    Plugin 'tpope/vim-sleuth'
    Plugin 'tpope/vim-repeat'
    Plugin 'tpope/vim-unimpaired'
    Plugin 'tpope/vim-fugitive'
    Plugin 'tpope/vim-dispatch'
    Plugin 'bling/vim-airline'
    Plugin 'jeetsukumaran/vim-buffergator'
    Plugin 'ctrlpvim/ctrlp.vim'
    Plugin 'rking/ag.vim'
    Plugin 'vim-scripts/LargeFile'
    Plugin 'scrooloose/syntastic'
    Plugin 'scrooloose/nerdtree'
    Plugin 'Xuyuanp/nerdtree-git-plugin'
    Plugin 'airblade/vim-gitgutter'
    Plugin 'majutsushi/tagbar'
    Plugin 'godlygeek/tabular'
    Plugin 'ervandew/supertab'
    Plugin 'szw/vim-tags'
    
    Plugin '907th/vim-auto-save'
    Plugin 'myusuf3/numbers.vim'
    
    Plugin 'tpope/vim-endwise'
    Plugin 'tpope/vim-rails'
    Plugin 'tpope/vim-rbenv'
    Plugin 'ngmy/vim-rubocop'
    
    Plugin 'fatih/vim-go'
    
    Plugin 'jimenezrick/vimerl'
    Plugin 'vim-erlang/vim-erlang-tags'
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 4 Комментировать
  • Можно ли делать половину приложения на REST половину без него?

    Machez
    Ken Jee @Machez
    Бу!
    Можно. Собственно вам же с этим и работать
    Ответ написан более трёх лет назад
    3 комментария
    Нравится 5 3 комментария
  • Можно ли в tmux при закрытии сессии останавливать процессы?

    mobilesfinks
    Алексей Ямщиков @mobilesfinks
    сисадмин *nix
    1. Ставим vlock
    2. В конфиг ~/.tmux.conf добавляем:
    set -g lock-command "vlock"
    set -g lock-after-time 90
    set -g lock-server on

    проверяем командой: tmux lock-server

    Неактивные вкладки лочатся через 90 секунд (выставь своё значение)
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 1 1 комментарий
  • Есть ли книги по тестированию React приложений?

    AlexMasterov
    Александр Мастеров @AlexMasterov
    Testing in React (04.08.2015)
    Unit testing React components without a DOM (14.06.2015)
    Easily testing React components with react-test-tree (20.05.2015)
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 2 2 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • firedragon
    Владимир Коротенко
    • 11 ответов
    • 0 вопросов
  • Forwatters
    Forwatters
    • 8 ответов
    • 0 вопросов
  • approximate_solution
    approximate solution
    • 7 ответов
    • 0 вопросов
  • opium
    Пума Тайланд
    • 7 ответов
    • 0 вопросов
  • MikUrrey
    • 7 ответов
    • 0 вопросов
  • cicatrix
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации