Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Sunday, October 21, 2018

CLion: "external file changes sync may be slow" warning

Native file system watcher for Linux

Inotify requires a “watch handle” to be set for each directory it monitors.
Unfortunately, the default limit of watch handles may not be enough for reasonably sized projects.
The current limit can be verified by executing:

cat /proc/sys/fs/inotify/max_user_watches
It can be raised by adding following line to the /etc/sysctl.conf file:

fs.inotify.max_user_watches = 524288
… and issuing this command to apply the change:

sudo sysctl -p

Saturday, January 10, 2015

Использование distutils

Создание пакета:
cd PROJECT_DIR
python3 setup.py sdist

Установка пакета:
tar xzf PACKET.tar.gz
cd PACKET
python3 setup.py install --prefix=TARGET_DIR --record files.txt

Удаление пакета:
cat files.txt | xargs rm -rf

Saturday, January 3, 2015

Утилиты из PyQt 5


  • pylupdate5
    Утилита для выделения строк, подлежащих переводу, из файлов исходного кода в .ts файл.
    Опция -translate-function позволяет задать имя пользовательской функции для перевода с явным указанием контекста.
    pylupdate5 -translate-function translateMe *.py -ts app_ru.ts
  • pyrcc5
    Компилятор ресурсов.
    pyrcc5 -o resources_rc.py resources.qrc
  • pyuic5
    Компилятор форм GUI.
    Если .ui файл формы обращается к файлу ресурсов resources.qrc, в целевой .py файл формы будет добавлена инструкция импорта модуля ресурсов "import resources_rc" ( _rc - суффикс по умолчанию, может быть изменён опцией --resource-suffix= ).
    pyuic5 -o ui_form.py --resource-suffix=_rc form.ui - создание целевого .py файла
    pyuic5 -p form.ui - предпросмотр GUI формы без создания целевого .py файла

Saturday, December 13, 2014

Python virtual environment и pip

Создать виртуальное окружение Python:
  1. cd </path/to/target/project>
  2. </path/to/needed/python>/bin/pyvenv VENV

Сборка Python 3 из исходников в Linux Mint


  1. # apt-get install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm (выбрать нужное)
    libreadline-dev - служит для поддержки автодополнения (Tab), истории и навигации курсора (клавиши со стрелками)
  2. Установить необходимые *-dev пакеты (Tcl/Tk, ncurses, ...) для поддержки среды IDLE
  3. Создать файл install_python.sh со следующим содержимым:

Friday, July 25, 2014

Сборка PyQt 5

Дано: Linux, Python 3, Qt 5
Задача: установка PyQt 5 из исходников

Monday, July 7, 2014

Шпаргалка Git

Добавить новую ветку в удалённый репозиторий:
  1. git checkout -b  <local-branch-name>
  2. git push [-u] <remote-name> <local-branch-name>:<remote-branch-name>, 
где <remote-name> - это стандартный origin или другое имя удалённого репозитория,
      опция -u - установит эту ветку в качестве 'апстрима'.

Удалить ветку из удалённого репозитория:
git push <remote-name>  :<remote-branch-name>

Добавить в локальный репозиторий новую ветку из удалённого репозитория:
git fetch && git checkout <remote-branch-name>

Добавить новый удалённый репозиторий:
git remote add <remote-name> <remote-path>

Установить ветку из удалённого репозитория в качестве апстрима:
git branch -u <remote-name>/<remote-branch-name> [local-branch-name],

если local-branch-name не задана, используется текущая ветка

-----------------------------------------------------------------------------------------------
Создать патч:
git diff COMMIT - патч без учёта автора и подписей
git format-patch START_COMMIT патч с учётом автора и подписей
git format-patch START_COMMIT..END_COMMIT - то же, но для заданного диапазона

Применить патч:
git apply < FILE.patch - применит патч без учёта подписей и автора
git am < FILE.patch - применит патч с учётом подписей и автора

-----------------------------------------------------------------------------------------------
Если изменения были в обеих ветках, которые надо слить:
git rebase -i TARGET_COMMIT - на TARGET_COMMIT накладывается текущая ветка
git rebase -i TARGET_COMMIT SRC_COMMIT на TARGET_COMMIT накладывается SRC_COMMIT

При возникновении конфликтов при поочередном накладывании коммитов работа команды будет останавливаться, а в проблемные местах файлов появятся соответствующие метки. После редактирования — разрешения конфликтов — файлы следует внести в индекс командой git add и продолжить наложение следующих коммитов командой git rebase --continue. Альтернативными выходами будут команды git rebase --skip (пропустить наложение коммита и перейти к следующему) или git rebase --abort (отмена работы команды и всех внесенных изменений).

Если нужно применить выборочный коммит к текущей ветке:
git cherry-pick COMMIT [-n] - ключ -n показывает, что изменения будут применены без индексации и создания нового коммита

Найти коммит в истории изменений, даже если на него нет указателей (он впереди всех):
git reflog

Для редактирования конфликтов:
git mergetool

Удалить лишний файл из всей истории коммитов git:
git filter-branch --tree-filter 'rm <top/secret/file>' HEAD

В результате директория  .git/refs/original будет описывать состояние дел до выполнения операции. Убедиться, что команда filter-branch сделала то, что нужно => и потом можно удалить эту директорию.
Эту директорию нужно удалить, чтобы использовать данную команду снова.

Thursday, June 26, 2014

CLOC

Некоторые метрики проекта:
CLOC - Count Lines of Code
скачать