|
|
|
Июнь 17, 2019
04:38 pm - Poetry: быстрая публикация на PyPI

Как опубликовать консольную утилиту на PyPI за 1 минуту
Разработав консольную утилиту, вы решаетесь опубликовать её на PyPI. Ну правда, что может быть лучше, чем сделать её доступной через pip install? Погуглив, что для этого надо, вы, возможно, наткнётесь на единственный найденный мной пост по теме, который мало того что от 2014 года, так ещё и требует от вас создать кучу папок и файлов для совершенно ненужных (вам) вещей.
Как же решить эту задачу без лишней головной боли в 2019 году? Я уже задавался этим вопросом и поэтому, прочитав тонну документации, создал для вас этот туториал. Вот пошаговая инструкция.
1. Создайте аккаунт на PyPI (ссылка для регистрации)
2. Создайте точку входа в приложение (например, файл entry.py со следующим содержимым)
def main():
print("It's alive!")
3. Установите poetry
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
source $HOME/.poetry/env
(poetry можно установить и по-другому, например, pip install --user poetry — прим. перев.)
4. Создайте окружение
cd myproject # Перейдите в папку проекта, который будем паковать
poetry init
5. Настройте консольную команду (для этого добавьте следующие строки в появившийся файл pyproject.toml)
[tool.poetry.scripts]
APPLICATION-NAME = 'entry:main'
APPLICATION-NAME надо поменять на имя консольной команды.
6. Опубликуйте утилиту! (используйте имя пользователя и пароль из шага 1)
poetry publish --username PYPI_USERNAME --password PYPI_PASS --build
Готово! Теперь другому человеку для установки достаточно всего двух команд:
$ sudo pip install PROJECT-NAME
$ APPLICATION-NAME
Где PROJECT-NAME — это имя, которое вы дали проекту на шаге 4, а APPLICATION-NAME — это имя команды из шага 5.
Обновление версии
Всякий раз, когда вы хотите обновить модуль, просто измените номер версии в файле pyproject.toml:
version = "0.1.0"
И повторите шаг 6:
poetry publish --username PYPI_USERNAME --password PYPI_PASS --build
Бонус: настраиваем Travis для авто-публикации
Добавьте следующие строки в файл .travis.yml
language: python
dist: xenial
before_install:
- curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
- source $HOME/.poetry/env
install:
- poetry install
script:
- poetry build
deploy:
- provider: script
skip_cleanup: true
script: poetry publish --username $PYPI_USER --password $PYPI_PASS
on:
branch: master
python: '3.7'
tags: true
И установите переменные окружения PYPI_USER и PYPI_PASS на travis-ci.com. После этого можно будет публиковать пакет с помощью команд:
git tag -a v1.2 # Replace version number with yours
git push --tags
Poetry: новый менеджер зависимостей в Python В последнее время в экосистеме Python часто стали появляться инструменты для управления зависимостями. Оно понятно, стандартный pip уже не отвечает современным требованиям: неудобная работа с зависимостями, много ручной работы при подготовке пакетов, проблемы при установке и обновлении и много чего другого.</p>
С недавних пор я начал использовать новый менеджер под названием Poetry. Именно о нём сегодня пойдёт речь.
Функциональные возможности Poetry:
- Управление зависимостями через toml файл (прощай, requirements.txt)
- Автоматическое создание изолированного виртуального окружения Python (теперь не нужно для этого вызывать virtualenv)
- Удобное создание пакетов (отныне не нужно
копипастить создавать setup.py каждый раз)
- poetry.lock файл для фиксирования версий зависимостей
А особенно радует тандем при работе с pyenv. О pyenv я писал три года назад.
Установка
Исходный код проекта лежит на github. Для установки необходимо выполнить команду:
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
Если установка прошла успешно, то убедиться в этом можно вызвав:
$ poetry --version
Poetry 0.12.8
Стартуем!
Создаём новый проект my-demo-project:
$ poetry new my-demo-project
Заходим в папку:
$ cd my-demo-project/
~/my-demo-project$ ls
README.rst my_demo_project pyproject.toml tests
Poetry автоматически создал все необходимые файлы для будущего пакета, но наибольший интерес представляет файл с названием pyproject.toml, этот файл можно рассматривать как продвинутую альтернативу старичку requirements.txt. Взглянем на содержимое:
[tool.poetry]
name = "my-demo-project"
version = "0.1.0"
description = ""
authors = ["Your Name you@example.com"]
[tool.poetry.dependencies]
python = "^3.6"
[tool.poetry.dev-dependencies]
pytest = "^3.0"
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
Формат файла TOML. Раздел tool.poetry предназначен для описания проекта: название, версия, краткая информация о проекте и т.д. Далее следует tool.poetry.dependencies, именно здесь будут указаны все production зависимости. Их можно указать вручную (привет, requirements.txt), но мы так делать не будем (привет, npm!). Раздел tool.poetry.dev-dependencies предназначен для зависимостей во время разработки (привет, pytest, tox!)
Добавляем зависимости
Давайте добавим к проекту зависимость в виде Luigi.
~/my-demo-project$ poetry add luigi==2.8.0
Creating virtualenv my-demo-project-py3.6 in /home/user/.cache/pypoetry/virtualenvs
Updating dependencies
Resolving dependencies... (24.1s)
Package operations: 12 installs, 0 updates, 0 removals
Writing lock file
- Installing docutils (0.14)
- Installing lockfile (0.12.2)
- Installing six (1.11.0)
- Installing atomicwrites (1.2.1)
- Installing attrs (18.2.0)
- Installing more-itertools (4.3.0)
- Installing pluggy (0.8.0)
- Installing py (1.7.0)
- Installing python-daemon (2.1.2)
- Installing tornado (4.5.3)
- Installing luigi (2.8.0)
- Installing pytest (3.10.1)
Обратите внимание, что Poetry автоматически создал виртуальное окружение через virtualenv при добавлении пакета (т.к. ранее оно не было создано). Все окружения находятся по пути ~/.cache/pypoetry/virtualenvs
Если снова открыть pyproject.toml, то можно увидеть новую запись в разделе зависимостей:
[tool.poetry.dependencies]
python = "^3.6"
luigi = "=2.8.0"
Всю "грязную" работу за нас делает Poetry. Чтобы добавить зависимость для разработки достаточно указать флаг —dev:
$ poetry add tox --dev
Using version ^3.5 for tox
Updating dependencies
Resolving dependencies... (6.3s)
Package operations: 4 installs, 0 updates, 0 removals
Writing lock file
- Installing filelock (3.0.10)
- Installing toml (0.10.0)
- Installing virtualenv (16.1.0)
- Installing tox (3.5.3)
Смотрим содержимое pyproject.toml ещё раз:
[tool.poetry.dev-dependencies]
pytest = "^3.0"
tox = "^3.5"
Чтобы удалить зависимость нужно выполнить:
~/my-demo-project$ poetry remove luigi
Сборка пакета
Отныне забудьте про головную боль с ручным созданием setup.py, прописыванием туда всех зависимостей и запоминанием команд для сборки через pip. Всё стало в разы проще. Чтобы собрать python пакет выполните:
~/my-demo-project$ poetry build
Building my-demo-project (0.1.0)
- Building sdist
- Built my-demo-project-0.1.0.tar.gz
- Building wheel
- Built my_demo_project-0.1.0-py3-none-any.whl
В папке dist будут сформированы пакеты. Чтобы поделиться своим творением с другими разработчиками, например через pypi, выполните:
~/my-demo-project$ poetry publish
Окружение
Для активации виртуального окружения необходимо выполнить команду:
~/my-demo-project$ poetry shell
Вывод
Проект Poetry появился 28 февраля 2018 года, последняя версия 0.12.8. Инструмент молодой, но перспективный и быстроразвивающийся. Уже сейчас он на голову выше старичка pip и по функциональным возможностям и по удобству использования. Советую вам его попробовать и поделиться мнением в комментариях к этой статье. За более подробной информацией об инструменте советую заглянуть на сайт с документацией.
https://pypi.org/project/poetry/ https://poetry.eustace.io/docs/ Goodbye Virtual Environments?
|
Май 25, 2018
Июнь 13, 2017
12:48 am - установка docker на i386 компе, создание образов centos и alpine с python3

Docker на i386-ом компьютере https://launchpad.net/ubuntu/+source/docker.io https://hub.docker.com/r/i386/ https://hub.docker.com/r/i386/centos/
Centos 6
docker search i386/centos docker pull i386/centos:centos6 docker run --name centos6.9_bash -it i386/centos:centos6 /bin/bash docker ps -a
docker start centos6.9_bash docker attach centos6.9_bash
yum install epel-release yum install python34
docker export centos6.9_bash | docker import - uzverss/centos6.9_i386_cython docker images docker save uzverss/centos6.9_i386_cython > centos6.9_i386_cython.tgz docker rmi uzverss/centos6.9_i386_cython docker load -i centos6.9_i386_cython.tgz docker inspect uzverss/centos6.9_i386_cython docker login docker push uzverss/centos6.9_i386_cython:latest docker logout docker search uzverss docker rmi uzverss/centos6.9_i386_cython docker pull uzverss/centos6.9_i386_cython:latest docker rm centos6.9_bash docker run --name centos6.9_bash -it uzverss/centos6.9_i386_cython /bin/bash
Centos 7
docker pull i386/centos:latest docker run --name centos7_bash -it i386/centos:latest /bin/bash
если есть необходимость, то ещё установить python-tools http://ithelp21.ru/ustanovka-python-3-6-na-centos/
cd /usr/src curl -O https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz tar xf Python-3.6.5.tar.xz cd Python-3.6.5
./configure make make install
Сборка с оптимизацией
http://rpm.pbone.net/
вместо make install checkinstall
cd curl -O https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
pip install -U pip pip install -U pyrasite pip install -U virtualenv pip install -U xonsh pip install -U cython
exec "$SHELL" pyenv update pyenv versions pyenv install 3.6.5
напоминалка по командам centos https://habr.com/post/301292/
отображение команд и опций # yum help
список названий пакетов из репозиторий # yum list
список всех доступных пакетов # yum list available
список всех установленных пакетов # yum list installed
установлен ли указанный пакет # yum list installed httpd
список установленных и доступных пакетов # yum list all
список пакетов, относящихся к ядру # yum list kernel
отображение информации о пакете # yum info httpd
список зависимостей и необходимых пакетов # yum deplist httpd
найти пакет, который содержит файл # yum provides "*bin/top"
поиск пакета по имени и описанию # yum search httpd
# yum search yum
получить информацию о доступных обновлениях безопасности # yum updateinfo list security
вывести список групп # yum grouplist
вывести описание и содержимое группы # yum groupinfo "Basic Web Server"
установка группы пакетов «Basic Web Server» # yum groupinstall "Basic Web Server"
удаление группы # yum groupremove "Basic Web Server"
Проверка на доступные обновления # yum check-update
список подключенных репозиториев # yum repolist
информация об определенном репозитории # yum repoinfo epel
информация о пакетах в указанном репозитории # yum repo-pkgs epel list
установить все пакеты из репозитория # yum repo-pkgs reponame install
удалить пакеты установленные из репозитория # yum repo-pkgs reponame remove
создать кэш # yum makecache
проверить локальную базу rpm (поддерживаются параметры dependencies, duplicates, obsoletes, provides) # yum check
# yum check dependencies
просмотр yum истории (вывод списка транзакций) # yum history list
просмотр информации определенной транзакции (установленные пакеты, установленные зависимости) # yum history info 9
отмена транзакции # yum history undo 9
повторить # yum history redo 9
дополнительно можно просмотреть лог # cat /var/log/yum.log
удалить пакеты сохраненные в кэше # yum clean packages
удалить все пакеты и метаданные # yum clean all
установить пакет # yum install httpd
удаление пакета # yum remove httpd
обновить пакет # yum update httpd
обновить все пакеты # yum update
обновить до определенной версии # yum update-to
установить из локальной директории (поиск/установка зависимостей будут произведены из подключенных репозиториев) # yum localinstall httpd.rpm
или # yum install httpd.rpm
установить с http # yum localinstall http://server/repo/httpd.rpm
откатиться к предыдущей версии пакета # yum downgrade
переустановка пакета (восстановление удаленных файлов) # yum reinstall httpd
удаление ненужных более пакетов # yum autoremove
создание локальных репозиториев (createrepo ставится отдельно) # createrepo
установка обновлений по расписанию (yum-cron устанавливается отдельно) # yum-cron
Опции Yum
ответить «yes» при запросе, -y
# yum update -y
ответить «no» при запросе --assumeno
использовать Yum без плагинов --noplugins
или отключить определенный плагин --disableplugin=fastestmirror
включить плагины, которые установлены, но отключены # yum --enableplugin=ps
включить отключенный репозиторий # yum update -y --enablerepo=epel
отключить репозиторий # yum update -y --disablerepo=epel
скачать пакеты, но не устанавливать (на Centos 7 x86_64 будут скачаны в '/var/cache/yum/x86_64/7/base/packages/') # yum install httpd --downloadonly
Cледующие команды доступны после установки пакета yum-utils
найти из какого репозитория установлен пакет # find-repos-of-install httpd
найти процессы, пакеты которых обновлены и требуют рестарта # needs-restarting
запрос к репозиторию, узнать зависимости пакета, не устанавливая его # repoquery --requires --resolve httpd
синхронизировать yum репозиторий updates в локальную директорию repo1 # reposync -p repo1 --repoid=updates
проверить локальный репозиторий на целостность # verifytree URL
завершить транзакции # yum-complete-transaction
установить необходимые зависимости для сборки RPM пакета # yum-builddep
управление конфигурационными опциями и репозиториями yum # yum-config-manager
запрос к локальной базе yum, отображение информации о пакете (использованная команда, контрольная сумма, URL с которого был установлен и другое) # yumdb info httpd
скачать rpm пакеты из репозитория # yumdownloader
скачать src.rpm пакет из репозитория (должен быть подключен соответствующий репозиторий, например в '/etc/yum.repos.d/CentOS-Sources.repo' в CentOS) yumdownloader --source php
Конфигурационные файлы Yum и их расположение
Основной конфигурационный файл /etc/yum.conf
директория, с конфигурациями (например, yum плагины) /etc/yum/
директория, содержащая информацию о репозиториях /etc/yum.repos.d/
Некоторые опции yum.conf:
Директория, где yum хранит кэш и файлы базы (по умолчанию '/var/cache/yum') cachedir=/var/cache/yum/$basearch/$releasever
Определяет должен или нет Yum хранить кэш заголовков и пакетов после успешной установки. Значения: 0 или 1. (по умолчанию 1) keepcache=1
уровень вывода отладочных сообщений. Значения: 1-10 (по умолчанию 2) debuglevel=2
лог файл (по умолчанию '/var/log/yum.log') logfile=/var/log/yum.log
обновлять устаревшие пакеты obsoletes=1
проверка подписи пакетов. Значения: 0 или 1 (по умолчанию 1) gpgcheck=1
включение плагинов. Значения: 0 или 1 (по умолчанию 1) plugins=1
Некоторые полезные плагины
Добавляет опцию командной строки для просмотра ченжлога перед/после обновлениями yum-plugin-changelog
выбирает более быстрые репозитории из списка зеркал yum-plugin-fastestmirror
добавляет команды keys, keys-info, keys-data, keys-remove, которые позволяют работать с ключами. yum-plugin-keys
блокировать указанные пакеты от обновления, команда yum versionlock yum-plugin-versionlock
добавление команд yum verify-all, verify-multilib, verify-rpm для проверки контрольных сумм пакетов yum-plugin-verify
Работа Yum через прокси сервер
Для всех пользователей: добавить в секцию [main] в /etc/yum.conf proxy="http://server:3128"
при необходимости указать пароль, добавить proxy_proxy_username=user proxy_password=pass
указать прокси для отдельного пользователя # export http_proxy="http://server:3128"
Alpine Linux https://alpinelinux.org/downloads/ https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management https://pkgs.alpinelinux.org/packages https://wiki.alpinelinux.org/wiki/XFCE_Setup
docker search i386/alpine docker pull i386/alpine docker run --name alpine_sh -it i386/alpine /bin/sh
apk update apk info apk search apk add python3 apk add cython
cd wget https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
pip install -U pip pip install -U pyrasite pip install -U virtualenv pip install -U xonsh
docker export alpine_sh | docker import - uzverss/alpine_i386_cython docker push uzverss/alpine_i386_cython
чтобы подключаться по ssh под рутом vi /etc/ssh/sshd_config PermitRootLogin yes затем /etc/init.d/sshd restart
uzverss docker команды установка Django в virtualenv с помощью pip через proxy с pyenv
|
Апрель 4, 2017
10:18 pm - Настройка Vim для работы с Python и Django
 Vim — уникальный по своей гибкости редактор, который при должной настройке может едва ли не идеально удовлетворять все пожелания работающего с ним. Правда эта настройка может продолжаться месяцы, а то и годы, что является и достоинством, и недостатком vim’а. Существует множество статей и туториалов по использованию Vim для разработки на Python и Django, надеюсь мне удастся рассказать что-то новое. В своей статье я постараюсь по минимуму упоминать плагины общего назначения, вроде NERDTree или surround.vim и опишу несколько более специализированных расширений и настроек, которые существенно упростили процесс работы на Python.
Настроить Vim под Django оказалось делом довольно непростым, в отличие от использования с тем же Rails, для которого rails.vim решает 80% всех проблем. Но к сожалению Tim Pope ничего подобного для питона не написал, поэтому пришлось собирать все по частям. Вкратце, о чем пойдет речь:
- python-mode
- tagbar
- pydiction
- neocomplcache
Все ниженаписанное было опробовано в gVim для Linux.
Python-mode
Просто низкий поклон Кириллу Клёнову, разработчику данного расширения. Отлично устанавливается и с помощью vundle, и через pathogen и так же отлично работает.
Python-mode устанавливает свои настройки для питон-файлов. Если вас это не устраивает (мне например не нужен set number, который он добавляет), допишите необходимые настройки в .vimrc. Вот пример моих настроек:
let g:pymode_options = 0
let g:pymode_lint_write = 0 “не проверять при каждом сохранении
let g:pymode_folding = 0 “мне не нужен авто-фолдинг
let g:pymode_rope_vim_completion = 0 “не использовать автодополнение rope
Как можно увидеть, я не использую автоматический фолдинг кода, также мне не нужна проверка pylint'ом при каждом сохранении файла(let g:pymode_lint_write = 0), вместо чего можно использовать команду :PyLint, повесив на нее какой-нибудь хоткей. К автодополнению вернемся позже.
Плагин предоставляет несколько удобных хоткеев для перемещения по объектам в питон-коде:
| Сочетание клавиш |
Команда |
| K |
Показать документацию |
| <C-c>g |
Перейти к определению |
| \r |
Запустить код |
| [[ |
Перейти к предыдущему классу или функции |
| ]] |
Перейти к следующему классу или функции |
| aC C |
Выполнить действие для класса. (vaC, daC, dC, yaC, yC, caC, cC) |
| iC |
То же, находясь внутри класса. (viC, diC, yiC, ciC) |
| aM M |
Выполнить действие для функции. (vaM, daM, dM, yaM, yM, caM, cM) |
| iM |
То же, находясь внутри функции. (viM, diM, yiM, ciM) |
Отдельно хотелось бы отметить возможность использовать Rope, в частности команды :RopeGoToDefinition, :RopeFindOccurrences и другие возможности по поиску кода и рефакторингу. просмотреть полный список команд Rope и сокращения к ним можно с помощью :help RopeKeys. Кроме того по умолчанию включена поддержка virtualenv, что значит, что с помощью того же :RopeGoToDefinition вы можете спокойно перейти к определнию функции любой библиотеки, установленной в site-packages вашего virtualenv’а.
Просмотр кода
Хотя самым популярным плагином для этого является Taglist, мне больше нравится Tagbar, также основанный на ctags(которые нужно установить перед использованием плагина). Вешаем :TagbarToggle на какой-нибудь хоткей, например: nnoremap <F8> :TagbarToggle<CR> Выглядит это примерно так:

Пара дополнительных настроек:
let g:tagbar_autofocus = 1
let g:tagbar_sort = 0 "tagbar shows tags in order of they created in file
let g:tagbar_foldlevel = 0 "close tagbar folds by default
Кроме того можно настроить, с какой стороны будет появляться окно тагбара, какими будут отступы, иконки и т.д. Обо всем этом можно узнать через :help tagbar.
Автодополнение
Один из плагинов, который я мог бы посоветовать — Pydiction, дополняющий ключевые слова на основе большого файла словаря. У данного плагина очень много плюсов:
- автодополнение происходит по клавише Tab, не нужно запоминать всякие комбинации с Ctrl
- абсолютно никаких конфликтов, можно одновременно использовать Pydiction с omnicomplete
- автодополнение не затрагивает другие типы файлов
- умеет дополнять импортированные объекты
- довольно легко можно добавить в словарь собственные модули: python pydiction.py module_name
Минус по большому счету только один, но очень существенный на мой взгляд — Pydiction не подхватывает ключевые слова из текущего файла, а это часто бывает гораздо нужнее, чем функции Питона, которые и так знаешь.
Другой способ — использовать neocomplcache. Кроме установки плагина, нужно задать omnifunc для питоновских файлов:
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
Neocomplcache несколько хуже справляется с дополнением из модулей, зато дополняет не только ключевые слова из текущих файлов, но и просто строки. Кроме того присутствует опция автоматически всплывающего дополнения, которое включается с помощью задания настройки:
let g:neocomplcache_enable_at_startup = 1
Шаблоны Django
Vim подерживает синтаксис джанго-шаблонов и подсвечивает их, если задать файлу тип htmldjango. К сожалению автоматически при открытии Vim определяет этот тип только если в начале файла находится джанго-тэг. Решить это можно например с помощью такой функции:
fun! DetectTemplate()
let n = 1
while n < line("$")
if getline(n) =~ '{%' || getline(n) =~ '{{'
set ft=htmldjango
return
endif
let n = n + 1
endwhile
set ft=html "default html
endfun
которую нужно запускать при открытии файла с раширением .html:
autocmd BufNewFile,BufRead *.html call DetectTemplate()
Если вы используете несколько шаблонизаторов, функцию несложно модифицировать под них, правда следует сделать условия определения типа шаблонизатора более строгими.
Случайные настройки
- Питоновские отступы:
autocmd FileType python setlocal ts=4 sts=4 sw=4
- Если вы пользуетесь NERDTree, стоит добавить .pyc в список игнорируемых файлов:
let NERDTreeIgnore=['\.pyc$']
- простое сокращение для вставки дебаггера ipdb в код
iab ipdb import ipdb; ipdb.set_trace()
- сокращение для задания кодировки в начале файла:
iab utf! # -*- coding: utf-8 -*-
- убрать раздражающие всплывающие окна с документацией для omnicompletion:
set completeopt-=preview
- пара цветовых схем:darkspectrum, gruvbox, Lucius
Дополнительные ссылки
1. python-mode
github.com/klen/python-mode
2. Tagbar
github.com/majutsushi/tagbar
3. Pydiction
github.com/rkulla/pydiction
4. Neocomplcache
github.com/Shougo/neocomplcache
https://habrahabr.ru/post/173473/
|
10:12 pm - VIM как IDE для разработки на Python

Данная статья будет посвящена настройке vim, в которой я поделюсь своим «скромным» пониманием того, каким должен быть текстовый редактор, чтобы в нем было удобно/приятно/легко (нужное подчеркнуть) писать код также, как это сейчас возможно во всевозможных IDE типа PyCharm, SublimeText и т.п.
Весь процесс постараюсь описать как можно более подробно, чтобы вопросов по мере чтения для начинающих осваивать vim возникало как можно меньше.
ПредысторияСам я знаком с vim не очень продолжительное время, однако, к его изучению и желанию использовать привело:
- достаточное количество на хабре статей по vim
- большое количество существующих плагинов
- преимущественно, разработчики на Python занимаются написанием кода под Linux (хотя vim — кроссплатформенный)
- собственное любопытство
В настоящее время я использую весьма часто vim как основной инструмент для разработки на Python и нисколько об этом не жалею. Если чего-либо нехватает, то проблема решается гуглением в течении пару минут. Поверьте, vim действительно стоит тех затраченных сил на его изучения. Это достаточно быстро себя «окупает». Было бы только желание и немножечко терпения.
Подготовительный этапИтак. Перейдем непосредственно к подготовительному этапу. Нам понадобится:
- Vim версии 7.4 (получить нужное можно либо скачиванием из репозиториев, либо сборкой вручную)
- Python 2.7 (с установленным pip)
- Клиент для работы с git
После того, как вышеперечисленное у нас имеется, можно приступать непосредственно к настройке и «кастомизации».
Настройка
Самое первой проблемой для любого новичка, который решает обуздать vim, является vimscript. Vimscript — это скриптовый язык, предназначенный для vim. На нем мы будем описывать используемые плагины, горячие клавиши и все тому подобное, чтобы обеспечить себе простую и легкую работу в vim. Для ознакомления советую посетить вот этот и этот сайты. Там достаточно неплохо все описано, что, где, как, и почему.
Первым делом стоит рассказать о том, что конфигурационный файл vim находится в домашнем каталоге пользователя (~/) и называется .vimrc. В нем-то и будут расписываться моменты относительно того, какие шрифты, цветовая схема, хоткеи и т.п. будут использоваться.
Во-вторых, при настойке текстового редактора, иногда будет необходимо заходить в каталог .vim (это скрытый каталог, и он расположен также в домашнем каталоге юзера), в который будут помещен ряд необходимых файлов, рассортированных по каталогам.
Какие включает в себя подкаталоги исходный каталог .vim? Примерно такие:
.vim
|____after
|____autoload
|____colors
|____doc
|____ftplugin
|____indent
|____plugin
|____scripts
|____syntax
Однако, из всех вышеперечисленных каталогов нам понадобится лишь несколько:
- colors — для цветовых схем/тем
- indent — сюда будет скидывать файлы для работы с тегами HTML/XML и т.п.
- scripts — для скриптов
- syntax — файлы синтаксиса
В эти каталоги помещаем соответствующие файлы, взяв их, например, у меня.
До начала установки и работа с менеджером пакетов пропишем в консоли:
pip install pyflakes pep8 pylint ipython
В дальнейшем, эти библиотеки нам пригодятся для того, чтобы отслеживать качество своего кода: ошибки, соответствие его PEP8 и т.п. Последняя же в этом списке библиотека/пакет — ipython нам будет удобна для настройки своего «дебаггера».
Также нам еще необходимо установить Exuberant ctags. Скачать его можно отсюда либо поискать и установить через менеджер пакетов apt-get/aptitude/rmp/pacman/и т.п.
Менеджер плагинов
Для того, чтобы нам было проще с установкой и использованием плагином будем использовать Vundle. Vundle — это пакетный менеджер для Vim, способный:
- настраивать и устанавливать плагины, указанные в. vimrc
- обновлять плагины при необходимости
- удалять неиспользуемые плагины
Однако прежде чем приступать к описанию необходимого набора плагинов в конфигурационном файле, сначала необходимо установить сам Vundle. Для этого делаем следующее:
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
После выполнение этой команды Vundle будет установлен в ~/.vim/bundle/Vundle.vim
Теперь добавим следующую часть в свой новосозданный .vimrc если его еще нет:
set nocompatible " be iMproved, required
filetype off " required
"=====================================================
" Vundle settings
"=====================================================
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim' " let Vundle manage Vundle, required
"---------=== Code/project navigation ===-------------
Plugin 'scrooloose/nerdtree' " Project and file navigation
Plugin 'majutsushi/tagbar' " Class/module browser
"------------------=== Other ===----------------------
Plugin 'bling/vim-airline' " Lean & mean status/tabline for vim
Plugin 'fisadev/FixedTaskList.vim' " Pending tasks list
Plugin 'rosenfeld/conque-term' " Consoles as buffers
Plugin 'tpope/vim-surround' " Parentheses, brackets, quotes, XML tags, and more
"--------------=== Snippets support ===---------------
Plugin 'garbas/vim-snipmate' " Snippets manager
Plugin 'MarcWeber/vim-addon-mw-utils' " dependencies #1
Plugin 'tomtom/tlib_vim' " dependencies #2
Plugin 'honza/vim-snippets' " snippets repo
"---------------=== Languages support ===-------------
" --- Python ---
Plugin 'klen/python-mode' " Python mode (docs, refactor, lints, highlighting, run and ipdb and more)
Plugin 'davidhalter/jedi-vim' " Jedi-vim autocomplete plugin
Plugin 'mitsuhiko/vim-jinja' " Jinja support for vim
Plugin 'mitsuhiko/vim-python-combined' " Combined Python 2/3 for Vim
call vundle#end() " required
filetype on
filetype plugin on
filetype plugin indent on
Как вы видите, места где указаны Plugin 'ссылка_до_плагина' представляет собой ссылки в интернете эти плагины, которые Vundle будет скачивать и в последствии устанавливать. Для себя, я разбивал эти плагины на «категории», но это уже дело вкуса. Сами плагины:
- NERDTree — навигация по файловой/директориям
- TagBar — навигация по классам/функциям/переменным
- vim-airline — строка статуса/состояния
- FixedTaskList — поиск в файле FIXME, TODO и т.п.
- conque-term — используем для вызова дебаггера
- vim-surround — автозакрытие тегов HML/XML/и т.п.
- vim-snipmate — сниппеты
- python-mode — рефакторинг, документация, дебаггер Python и т.п.
- jedi-vim — автодополнение для Python
- vim-jinja — поддержка синтаксиса шаблонов Jinja
В качестве руководства/гайда по использованию Vundle можно зайти сюда. Однако для наших целей будет предостаточно одной:
:PluginInstall
Эта команда сканирует файл .vimrc на наличие списка плагинов прописанных в виде Plugin 'ссылка_до_плагина'.
Для того, чтобы запустить установку набора плагинов, заходим в vim/gvim и прописываем :PluginInstall. Придется немного подождать, поскольку каждый плагин, указанный выше в конфиге, будет скачан с githuba либо еще откуда-то и настроен до установок «по умолчанию», подождите пару минут. Каждый выкачанный и настроенный плагин отмечается как "+". Как только увидите, что все из списка подсвечены "+" — значит, все готово. И для дальнейшего использования необходимо будет перезапустить vim. Однако на этом все еще не оканчивается статья — все необходимо «подкрутить», чтобы работать в vim'е было комфортно.
Общие настройки vim'аЭти настройки для меня являются базовыми. Тут я указываю свои предпочтения относительно парочки плагинов, размера шрифтов, цветовой схемы, отображаемых элементов и т.п.
Добавьте эти строчки в конец своего .vimrc файла:
"=====================================================
" General settings
"=====================================================
set backspace=indent,eol,start
aunmenu Help.
aunmenu Window.
let no_buffers_menu=1
set mousemodel=popup
set ruler
set completeopt-=preview
set gcr=a:blinkon0
if has("gui_running")
set cursorline
endif
set ttyfast
" включить подсветку кода
syntax on
if has("gui_running")
" GUI? устаналиваем тему и размер окна
set lines=50 columns=125
colorscheme molokai
" раскомментируйте эти строки, если хотите, чтобы NERDTree/TagBar автоматически отображались при запуске vim
" autocmd vimenter * TagbarToggle
" autocmd vimenter * NERDTree
" autocmd vimenter * if !argc() | NERDTree | endif
" на маке vim?
if has("mac")
set guifont=Consolas:h13
set fuoptions=maxvert,maxhorz
else
" дефолтный GUI
set guifont=Ubuntu\ Mono\ derivative\ Powerline\ 10
endif
else
" терминал?
colorscheme myterm
endif
tab sball
set switchbuf=useopen
" отключаем пищалку и мигание
set visualbell t_vb=
set novisualbell
set enc=utf-8 " utf-8 по дефолту в файлах
set ls=2 " всегда показываем статусбар
set incsearch " инкреминтируемый поиск
set hlsearch " подсветка результатов поиска
set nu " показывать номера строк
set scrolloff=5 " 5 строк при скролле за раз
" отключаем бэкапы и своп-файлы
set nobackup " no backup files
set nowritebackup " only in case you don't want a backup file while editing
set noswapfile " no swap files
" прячем панельки
"set guioptions-=m " меню
set guioptions-=T " тулбар
"set guioptions-=r " скроллбары
" настройка на Tab
set smarttab
set tabstop=8
" при переходе за границу в 80 символов в Ruby/Python/js/C/C++ подсвечиваем на темном фоне текст
augroup vimrc_autocmds
autocmd!
autocmd FileType ruby,python,javascript,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black
autocmd FileType ruby,python,javascript,c,cpp match Excess /\%80v.*/
autocmd FileType ruby,python,javascript,c,cpp set nowrap
augroup END
" указываем каталог с настройками SnipMate
let g:snippets_dir = "~/.vim/vim-snippets/snippets"
" настройки Vim-Airline
set laststatus=2
let g:airline_theme='badwolf'
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#formatter = 'unique_tail'
" TagBar настройки
map <F4> :TagbarToggle<CR>
let g:tagbar_autofocus = 0 " автофокус на Tagbar при открытии
" NerdTree настройки
" показать NERDTree на F3
map <F3> :NERDTreeToggle<CR>
"игноррируемые файлы с расширениями
let NERDTreeIgnore=['\~$', '\.pyc$', '\.pyo$', '\.class$', 'pip-log\.txt$', '\.o$']
" TaskList настройки
map <F2> :TaskList<CR> " отобразить список тасков на F2
" Работа буфферами
map <C-q> :bd<CR> " CTRL+Q - закрыть текущий буффер
Python-modeОчень нравится этот плагинчик, который кстати, сделан klen. Предоставляет море возможностей при работе с кодом:
- рефакторинг
- автодополнение
- работа с дебаггером
- автофикс PEP8 ошибок
- и многое-многое другое...
Добавьте эти строчки в конец своего .vimrc файла:
"=====================================================
" Python-mode settings
"=====================================================
" отключаем автокомплит по коду (у нас вместо него используется jedi-vim)
let g:pymode_rope = 0
let g:pymode_rope_completion = 0
let g:pymode_rope_complete_on_dot = 0
" документация
let g:pymode_doc = 0
let g:pymode_doc_key = 'K'
" проверка кода
let g:pymode_lint = 1
let g:pymode_lint_checker = "pyflakes,pep8"
let g:pymode_lint_ignore="E501,W601,C0110"
" провека кода после сохранения
let g:pymode_lint_write = 1
" поддержка virtualenv
let g:pymode_virtualenv = 1
" установка breakpoints
let g:pymode_breakpoint = 1
let g:pymode_breakpoint_key = '<leader>b'
" подстветка синтаксиса
let g:pymode_syntax = 1
let g:pymode_syntax_all = 1
let g:pymode_syntax_indent_errors = g:pymode_syntax_all
let g:pymode_syntax_space_errors = g:pymode_syntax_all
" отключить autofold по коду
let g:pymode_folding = 0
" возможность запускать код
let g:pymode_run = 0
Jedi-vimОчень полезный плагин, предоставляющий отличные возможности автокомплита, go to definition, и т.п.
В своем конфиге добавьте в конец этот фрагмент:
" Disable choose first function/method at autocomplete
let g:jedi#popup_select_first = 0
Этой строчкой я отрубаю в автокомплите выбор первой строки из списка выбора метода/библиотеки/класса автокомплита. Это связано с тем, что достаточно часто я выбираю не первую строку из нее, а автоматический выбор раздражает.
После настройки jedi-vim получаем отображение документации по функции

и добротный автокомплит по аргументам функций

ХоткеиТут сложно что-либо посоветовать. У всех различное понимание того, какие хоткеи нужны, а какие-нет. Могу лишь сказать, что для желающих, найти/написать необходимые кусочки vimscript, переопределяющих поведение стандартных горячих клавиш — очень много.
Добавьте этот фрагмент в конец конфига:
"=====================================================
" User hotkeys
"=====================================================
" ConqueTerm
" запуск интерпретатора на F5
nnoremap <F5> :ConqueTermSplit ipython<CR>
" а debug-mode на <F6>
nnoremap <F6> :exe "ConqueTermSplit ipython " . expand("%")<CR>
let g:ConqueTerm_StartMessages = 0
let g:ConqueTerm_CloseOnEnd = 0
" проверка кода в соответствии с PEP8 через <leader>8
autocmd FileType python map <buffer> <leader>8 :PymodeLint<CR>
" автокомплит через <Ctrl+Space>
inoremap <C-space> <C-x><C-o>
" переключение между синтаксисами
nnoremap <leader>Th :set ft=htmljinja<CR>
nnoremap <leader>Tp :set ft=python<CR>
nnoremap <leader>Tj :set ft=javascript<CR>
nnoremap <leader>Tc :set ft=css<CR>
nnoremap <leader>Td :set ft=django<CR>
Отступы, табы, пробелы для разных языковЭто связано с тем, что в том же Python табы не рекомендуется к использованию. Поэтому будем заменять их на пробелы. Один таб = 4 пробелам. Плюс ко всему необходимо помнить, что всегда нужно сделать переход на следующую строку + отступ, чтобы было соответствие операторам for/if/while/и т.п.
Для других языков предостаточно будет указать размер Таба, и замены их на пробелы.
Добавьте этот фрагмент в конец своего конфига:
"=====================================================
" Languages support
"=====================================================
" --- Python ---
"autocmd FileType python set completeopt-=preview " раскомментируйте, в случае, если не надо, чтобы jedi-vim показывал документацию по методу/классу
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8
\ formatoptions+=croq softtabstop=4 smartindent
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
autocmd FileType pyrex setlocal expandtab shiftwidth=4 tabstop=8 softtabstop=4 smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class,with
" --- JavaScript ---
let javascript_enable_domhtmlcss=1
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd BufNewFile,BufRead *.json setlocal ft=javascript
" --- HTML ---
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
" --- template language support (SGML / XML too) ---
autocmd FileType html,xhtml,xml,htmldjango,htmljinja,eruby,mako setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2
autocmd bufnewfile,bufread *.rhtml setlocal ft=eruby
autocmd BufNewFile,BufRead *.mako setlocal ft=mako
autocmd BufNewFile,BufRead *.tmpl setlocal ft=htmljinja
autocmd BufNewFile,BufRead *.py_tmpl setlocal ft=python
let html_no_rendering=1
let g:closetag_default_xml=1
let g:sparkupNextMapping='<c-l>'
autocmd FileType html,htmldjango,htmljinja,eruby,mako let b:closetag_html_style=1
autocmd FileType html,xhtml,xml,htmldjango,htmljinja,eruby,mako source ~/.vim/scripts/closetag.vim
" --- CSS ---
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType css setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4
Подведение итоговПосле прохождения столь длительного процесса настройки у нас получился достаточно гибкий инструмент для работы с Python. При этом, последующая установка, на другие ПК будет представлять только доустановку необходимых библиотек, переноса соответствующего конфига и установку плагинов.
После настройки мы получим примерно такой vim:

В режиме работы с HTML/JavaScript/XML будет все выглядеть примерно так:

Если кому-либо нужен больший функционал (например поддержка автокомплита для любых иных языков), то могу посоветовать лишь поискать необходимые плагины на GitHub'е или на офицальном сайте сайте vim'a.
Полезные ссылки:Раздел script сайта vim.org — тут
wikia по vim'у — тут
OpenVim: уроки по азам в vim — тут
Шрифты для vim-airline — тут
Мой конфиг для vim на GitHub
https://habrahabr.ru/post/224979/ http://freecoder.ru/content/vim-kak-ide-dlya-razrabotki-na-python http://linux.cpms.ru/?p=8339
|
Февраль 13, 2017
Ноябрь 7, 2016
02:50 am - 5 способов создать мгновенный легкий веб-сервер с помощью командной строки Linux

развернуть
1. Python открыть в браузере адреса http://0.0.0.0:8080/ или http://localhost:8080/ или http://127.0.0.1:8080/ без указания порта запустит сервер на порту 8000
python -m SimpleHTTPServer python3 -m http.server
Если есть файл index.html в папке, из которой дан старт команде, то он будет открыт в браузере по умолчанию
запустить HTTP для всех локальных интерфейсов на порту 8080
python -m SimpleHTTPServer 8080 # python2 python3 -m http.server 8080
запустить в папке, где находится каталог cgi-bin, со сценарием cgi
python3 -m http.server 8080 --cgi
запускает сервер SMTP на порту 1025 python -m smtpd -n -c DebuggingServer localhost:1025
запустить сервер SMTP на стандартном порту 25 sudo python -m smtpd -n -c DebuggingServer localhost:25
Привязка любого номера порта ниже 1024 требует привилегии root, в таком случае используйте sudo перед командой
Twisted (Python) $ twistd -n web -p 8000 --path . или $ python -c 'from twisted.web.server import Site; from twisted.web.static import File; from twisted.internet import reactor; reactor.listenTCP(8000, Site(File("."))); reactor.run()'
2. busybox httpd web server busybox httpd --help # show available options busybox httpd -p 127.0.0.1:8080 -h /var/www/ # start httpd # busybox httpd -f -v -p 8080 # вариант pkill busybox # to stop busybox httpd
по умолчанию BusyBox httpd связывает порт 80 со всеми доступными сетевыми интерфейсами и читает /etc/httpd.conf конфигурационный файл.
3. webfsd HTTP server конфигурации webfsd хранятся в файле /etc/webfsd.conf
sudo apt-get install webfs # install webfs in Debian/Ubuntu sudo service webfs start # start the webfs server
$ webfsd -F -p 8000
По умолчанию webfsd связывает порт 8000 со всеми доступными сетевыми интерфейсами с /var/www/html как корневую папку документов в Debian.
4. netcat as a simple web server Netcat используется в основном для обслуживания только текстовых файлов через HTTP, полезных в целях мониторинга Сохраните скрипт с любым именем если вы хотите использовать в сценарии, изменить его в соответствии с вашими потребностями, сделайте его исполняемым с chmod +x и запустите его
напишите в cat /var/www/index.html с тем, что вы хотите сделать, как /sbin/ifconfig eth0 чтобы остановить скрипт нажмите CTRL+C
5. php inbuilt web server
php -S 127.0.0.1:8080
php -S 127.0.0.1:8080 -t $HOME/dev/www
Если есть index.html или index.php файл, то он будет выполнен с помощью этого простого сервера PHP, теперь проверить его можно в вашем веб-браузере.
########################################################################
JS + Node http://www.nodebeginner.ru/ https://metanit.com/web/nodejs/3.1.php
Создайте файл server.js в корневой директории вашего проекта и поместите туда следующий код:
выполните ваш скрипт в Node.js: node server.js
http-server (Node.js) $ npm install -g http-server # install dependency $ http-server -p 8000
Примечание: Этот сервер делает странные вещи с относительными путями. Например, если у вас есть файл /tests/index.html, он загрузит index.html, если вы перейдете в /test, но будет обрабатывать относительные пути так, как будто они исходят из /.
node-static (Node.js) $ npm install -g node-static # install dependency $ static -p 8000
Go https://metanit.com/go/web/1.1.php Базовый веб сервер на Go Простейший веб-сайт на Go
Создайте файл server.go в корневой директории вашего проекта и поместите туда следующий код:
выполните ваш скрипт go run server.go
https://funprojects.blog/2021/04/11/a-web-server-in-1-line-of-bash/
Bash
Веб-сервер Bash, вызывающий команды Bash
Пример использования заголовков figlet, а также датчиков и утилиты vmstat:
https://gist.github.com/willurd/5720255
Ruby $ ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd).start'
Ruby 1.9.2+ $ ruby -run -ehttpd . -p8000
adsf (Ruby) $ gem install adsf # install dependency $ adsf -p 8000
Sinatra (Ruby) $ gem install sinatra # install dependency $ ruby -rsinatra -e'set :public_folder, "."; set :port, 8000'
Perl $ cpan HTTP::Server::Brick # install dependency $ perl -MHTTP::Server::Brick -e '$s=HTTP::Server::Brick->new(port=>8000); $s->mount("/"=>{path=>"."}); $s->start'
Plack (Perl) $ cpan Plack # install dependency $ plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root=>".");' -p 8000
Mojolicious (Perl) $ cpan Mojolicious::Lite # install dependency $ perl -MMojolicious::Lite -MCwd -e 'app->static->paths->[0]=getcwd; app->start' daemon -l http://*:8000
Erlang $ erl -s inets -eval 'inets:start(httpd,[{server_name,"NAME"},{document_root, "."},{server_root, "."},{port, 8000},{mime_types,[{"html","text/html"},{"htm","text/html"},{"js","text/javascript"},{"css","text/css"},{"gif","image/gif"},{"jpg","image/jpeg"},{"jpeg","image/jpeg"},{"png","image/png"}]}]).'
Java jwebserver -p 8080
IIS Express C:\> "C:\Program Files (x86)\IIS Express\iisexpress.exe" /path:C:\MyWeb /port:8000
https://fixmynix.com/create-instant-lightweight-web-server-command-line/ http://uzverss.livejournal.com/33187.html#www Как сделать простой веб-сайт за один час Расшариваем веб-сайт на localhost в глобальную сеть интернет.
|
Сентябрь 14, 2016
Август 23, 2016
07:18 pm - Бесплатный django хостинг
В данной статье рассматривается бесплатный хостинг для django проектов - pythonanywhere.com. Для начала заходим на сайт - https://www.pythonanywhere.com/pricing/ Находим и кликаем по ссылке Create a Beginner account Открывается форма регистрации. В ней вводим данные для регистрации (имя, почта, пароль). После регистрации нас просят подтвердить почту, что и необходимо сделать.( Читать дальше...Свернуть ) http://pygo.ru/django/base/django-hosting-pythonanywhere.html Деплоим на PythonAnywhere из GitHub http://uzverss.livejournal.com/58379.html
|
Август 15, 2016
04:26 pm - Создание deb-пакетов для модулей Python с помощью stdeb
Ставим пакеты stdeb и python-all:
$ sudo apt-get install stdeb python-all Теперь находим архив с нужным нам модулем на pypi.python.org и скачиваем его себе:
$ wget https://pypi.python.org/packages/source/g/grab/grab-0.6.30.tar.gz Теперь можно заглянуть в документацию на stdeb и посмотреть, как это делается. ( Читать дальше...Свернуть ) http://vladimir-stupin.blogspot.ru/2013/10/deb-python.html https://pypi.python.org/pypi/stdeb https://blog.truecrux.org/post/xxxiii
|
Июнь 21, 2016
06:42 pm - Django подборка

развернуть
Сайты
https://www.djangoproject.com/ http://djbook.ru/ http://djangosearch.com/ https://www.djangosites.org/ https://www.django-cms.org/
Блоги
https://vk.com/django_framework http://django-tutorial.blogspot.ru/ https://pythlife.blogspot.ru/search/label/django http://sharelink.ru/ http://dikiigrigorii.ru/
Статьи
Наш опыт работы с Django, или 10 полезных модулей, облегчающих жизнь Эффективный Django. Часть 1 Ещё 10 батареек для джанго Django DB Mailer — простая и удобная батарейка, для отправки почтовых сообщений в вашем проекте Улучшаем админку DjangoCMS2.0 — быстрее, больше, эффективней Python Django CMS - FeinCMS ------------------------------------------------------------------------ Удобная работа с картинками в Django Шаблон проекта на Джанго с инструментами сборки и утилитами Простой блог с комментариями на Django: разработка и развертывание для самых маленьких Django: первые страницы Установка Django CMS в Ubuntu 16.04 64bit Архитектура универсального проекта Django ------------------------------------------------------------------------ Создаем свое первое веб-приложение при помощи Django Современный стек сборки и публикации сайтов на Django Разработка своего плагина для Django-CMS Создание модуля для Django с нуля ------------------------------------------------------------------------ Быстрое начало. Развертывание веб-приложения Python (Django или Flask) в Службе приложений Azure Как я построил проект на Django, Django REST Framework, Angular 1.1.x и Webpack Django проект: с нуля до работающего сервера ------------------------------------------------------------------------ Setting up Django and your web server with uWSGI and nginx Setting up Nginx and uWSGI for CGI scripting Django. Запуск проекта в связке uWSGI и Nginx Развёртывание Django с uWSGI Django на production. uWSGI + nginx. Подробное руководство Django + Python3 + Nginx + Gunicorn + DO Настраиваем Django + virtualenv + nginx + gunicorn + PostgreSQL + memcached + letsencrypt на Ubuntu 16.04 обслуживание приложений django с помощью uwsgi и nginx в debian 8 React+Django как написать Hello World Hello-World туториал на React/Django/RabbitMQ/Websockets Django - Урок 001. Развёртывание сайта на Django + PostgreSQL + Gunicorn + Nginx Как установить Django + Postgres + Nginx + Gunicorn на Ubuntu 14.04. Настройка Gunicorn и uWSGI, сравнение производительности Запуск Django сайта на nginx + Gunicorn + SSL ------------------------------------------------------------------------ Отладка в python через консоль Удобный отладчик для Python/Django проектов Pudb Введение в инструмент отладки Python PuDB Python. Отладка при помощи pdb Отладка Python/Django при помощи PuDB ------------------------------------------------------------------------ https://github.com/lampslave/blog Полезные Django-модули Полезные Django apps ------------------------------------------------------------------------ Асинхронные задания в Django с Celery Как настроить Celery в Django ------------------------------------------------------------------------ Создание sitemap.xml в Django
SublimeText для Python + Django Бесплатный django хостинг установка Django в virtualenv с помощью pip через proxy с pyenv
Книги
http://padabum.net/search.php?tag=Django http://scanlibs.com/tag/django/ Подборка книг по Django Python, Django и PyCharm для начинающих ftp Django1 ftp Django2
Подборки
https://vk.com/wall-101965347?q=django https://vk.com/wall-80984752?q=Django https://habrahabr.ru/hub/django/ https://toster.ru/tag/django/info http://snakeproject.ru/rubric/rubric.php?id=5 http://djangosimple.blogspot.ru/search/label/django http://podavan.ru/tag/django/ http://acman.ru/django/ http://pep8.ru/blog/tag/django https://www.8host.com/blog/tag/django/ https://code-live.ru/tag/django/ http://m05quit0.ru/tag/django/ http://www.odmin4eg.ru/tag/django/ http://dikiigrigorii.ru/articles/tag/django/ http://webdevelop.info/category/django/ http://knigun.com/tags/django/ http://pygo.ru/ http://practice.keyfire.ru/blog/tags/praktikum/ http://webdevelop.info/category/django/ http://programmingnew.tk/blog/veb_django/1-0-3 http://zabaykin.ru/?tag=django http://www.lexev.org/tag/django/ http://www.odmin4eg.ru/tag/django/ https://evileg.com/ru/knowledge/django/
Переводы
https://rtfm.co.ua/books-translations/django-book/
Самоучители
http://djbook.ru/rel1.9/intro/ http://ilnurgi1.ru/docs/django/ http://tutorial.djangogirls.org/ru/ http://www.tutorialspoint.com/django/index.htm http://snakeproject.ru/python/ver1.3.htm https://pythonhosted.org/redsolutioncms/index.html http://ait-susu.narod.ru/django.htm https://rtfm.co.ua/django-primer-sozdaniya-prilozheniya-chast-1-sozdanie-zapusk-proekta/ http://zavx0z-django.blogspot.ru/ http://peterhudec.github.io/authomatic/examples/django-simple.html http://cultofdigits.com/articles/django-cms/ http://spb-tut.ru/ http://vits.pro/info/django-cms/ http://cultofdigits.com/articles/django-cms/ http://djangosimple.blogspot.ru/ https://evileg.com/ru/knowledge/django/ https://proghub.ru/t/django-basic https://evileg.com/ru/knowledge/django/ Руководство по веб-фреймворку Django
Шпоры
http://students.summerisgone.com/help/django_extras.html http://ilnurgi1.ru/docs/django/templates.html https://docs.django-cms.org https://github.com/dikiigr/django-online-shop http://dikiigrigorii.ru/articles/tag/django/ https://cheatsheets.zip/django
Курсы
https://mva.microsoft.com/ru/training-courses/-python-django-11415 DJANGO - РАЗРАБОТКА WEB-ПРИЛОЖЕНИЙ НОУ «ИНТУИТ» Введение в Django НОУ «ИНТУИТ» Технопарк Mail.ru Group: Web-технологии Python + Django Framework школа практического программирования В. Бовсуновского http://itman.in/uroki-django/
Видео
https://vk.com/video?q=django%20python§ion=search ------------------------------------------------------------------------ intopython.ru Первая статическая страница в джанго https://www.youtube.com/watch?v=Iw-CzupverM ------------------------------------------------------------------------ GeekBrains Django Построение веб приложений на Python https://www.youtube.com/watch?v=UnmZMJv4ox8 ------------------------------------------------------------------------ ITVDN Вебинар на тему "Создание первого веб-сайта при помощи Python и Django" https://github.com/aqrln/itvdn-django-webinar https://www.youtube.com/watch?v=IZqBTPmxoew ------------------------------------------------------------------------ Susan Ibach and Christopher Harrison Уроки Python https://www.youtube.com/channel/UCsSQgz9oCdVyvZ-bViMj4_g Уроки Python Разработка веб-сайтов с использованием Python и Django https://www.youtube.com/playlist?list=PLQDKSpN49uZaVuqnQefE_pjX2L1EayPL0 ------------------------------------------------------------------------ shadrus Django https://www.youtube.com/playlist?list=PLpTASIMYgCp8supkEmnnrYa5xi9g91ZPI Mihail Kozlov Python https://www.youtube.com/playlist?list=PL5KGx5_ykLX8qOlP1CaxxlTXKOZhIvfZl ------------------------------------------------------------------------ кузьма кузин как создать сайт на Django Python https://www.youtube.com/playlist?list=PLk3dllNv0g252fFKpiYeJaSRwEpBzhUcu ------------------------------------------------------------------------ Coding Medved Джанго с нуля на примере создания простого интернет-магазина https://www.youtube.com/playlist?list=PLSWnD6rL-m9adebgpvvOLH5ASGJiznWdg Coding Medved GoUpworkIntensive https://www.youtube.com/playlist?list=PLSWnD6rL-m9Zn2JaIfdWA35IpBCwuzS4s Coding Medved Бизнес-процессы и структура базы данных с нуля по разным проектам https://www.youtube.com/playlist?list=PLSWnD6rL-m9ZaiJy6eY19IAEWeSfc4yvS ------------------------------------------------------------------------ Vitaly Pavlenko Веб-программирование на Физтехе https://www.youtube.com/playlist?list=PLzQrZe3EemP5KsgWGnmC0QrOzQqjg3Kd5 ------------------------------------------------------------------------ Владимир Доминион Django - разработка web-приложений https://www.youtube.com/playlist?list=PLw9iStk1sia9yEiv5b7-Flxg6kTE2FAEL Владимир Доминион Django1.8 https://www.youtube.com/playlist?list=PLw9iStk1sia9Nw2ENJRr3d9B30q8E9iI4 Владимир Доминион DJANGO-CMS https://www.youtube.com/playlist?list=PLw9iStk1sia_DbiSqOwpiNE2I-QM_8RMf Владимир Доминион Интернет магазин Django 1.10 https://www.youtube.com/playlist?list=PLw9iStk1sia9xvjLU0l2AXXQpHqXrcWdZ Владимир Доминион Дневник Django developer https://www.youtube.com/playlist?list=PLw9iStk1sia_3TmHeXK4uROHpBhFVE6fB Владимир Доминион Django admin https://www.youtube.com/playlist?list=PLw9iStk1sia9qAP5pOpVKGn5UPFw5BYj7 ------------------------------------------------------------------------ Anton Maistrenko Django Введение https://www.youtube.com/playlist?list=PLH9GfV-TK38h6crIqlzJ__xRocwVgMhyV Anton Maistrenko Django Models https://www.youtube.com/playlist?list=PLH9GfV-TK38iNIWn-YCiz0mtK59gfBkOV Anton Maistrenko Django Project https://www.youtube.com/playlist?list=PLH9GfV-TK38iyjZeW4lw8xssm3UoBAiA3 ------------------------------------------------------------------------ Сергей Балакирев selfedu https://proproprogs.ru/django Django 3 для python (уроки) https://www.youtube.com/playlist?list=PLA0M1Bcd0w8xO_39zZll2u1lz_Q-Mwn1F Уроки по Django REST Framework https://www.youtube.com/playlist?list=PLA0M1Bcd0w8xZA3Kl1fYmOH_MfLpiYMRs ------------------------------------------------------------------------ djlessons Django Channels https://www.youtube.com/playlist?list=PLp_WN118C-Vd4XIIEfbCghVZLRLf1T5sk djlessons Нотификации в Django https://www.youtube.com/playlist?list=PLp_WN118C-VfNw8LgU5XdvIv-XXDFcTAz djlessons Уроки Django. Создание медиапортала https://www.youtube.com/playlist?list=PLp_WN118C-Vfb9QER0cOHLoDWg2_2IqPb djlessons Интернет-магазин на Django 1.11 https://www.youtube.com/playlist?list=PLp_WN118C-VdgBKf_ATbvGI1xX06dZkmF ------------------------------------------------------------------------ Олег Молчанов Уроки Django 2.x https://www.youtube.com/playlist?list=PLlWXhlUMyooaDkd39pknA1-Olj54HtpjX ------------------------------------------------------------------------ Артем Егоров egoroffchannel Курс по Django 3 https://www.youtube.com/playlist?list=PLQAt0m1f9OHvGM7Y7jAQP8TKbBd3up4K2 ------------------------------------------------------------------------ ProgrammingHub Python + Django web framewrok https://www.youtube.com/playlist?list=PLPRsICSqu9FoOpFyr8dlfLh9_n4nt_05u ------------------------------------------------------------------------ WeBest Django https://www.youtube.com/playlist?list=PLfAlku7WMht6echneod-yj9BNx5zaRkJo ------------------------------------------------------------------------ Python и Django по-простому Понравившиеся https://www.youtube.com/playlist?list=LLIVVEmrGyqEleoFbayEHLrg ------------------------------------------------------------------------ Видеоуроки Python Уроки Django https://www.youtube.com/playlist?list=PLMS-se7ZYfuwRpIicQcWW6XyjzqmbcUD9 ------------------------------------------------------------------------ Uproger Django создание сайтов с нуля. https://www.youtube.com/playlist?list=PLysMDSbb9HcyLnXB9eLiYmsznjzEXo_6W ------------------------------------------------------------------------ Moscow Python https://www.youtube.com/user/moscowdjangoru/playlists ------------------------------------------------------------------------ Django API + React + Electron | Course Work https://www.liveedu.tv/dikiigr/ ------------------------------------------------------------------------ Phantomium Разработка на Python, Django. https://www.youtube.com/playlist?list=PL6Fp8QPl6sOi0FXf1XNjt4bNDBJ0wGdGF ------------------------------------------------------------------------
Программное обеспечение
https://github.com/django/ https://pypi.python.org/pypi?:action=browse&show=all&c=523 https://pypi.python.org/pypi/Django http://awesome-django.com/ https://djangopackages.org/
полезные дополнения
https://github.com/django-admin-tools/django-admin-tools https://github.com/sehmaschine/django-grappelli https://github.com/divio/django-cms https://github.com/nephila/djangocms-installer https://github.com/megamark16/django-cms-themes https://github.com/thomaspark/bootswatch https://github.com/anymail/django-anymail https://github.com/darklow/django-suit https://github.com/LPgenerator/django-db-mailer https://github.com/sehmaschine/django-filebrowser http://atmb4u.github.io/django-console/ https://github.com/selectel/pyte https://github.com/eliangcs/http-prompt Средство проверки типа Django URLconf https://pypi.org/project/django-urlconfchecks/ http://free-templates.ru/
Консоль
https://repl.it/ https://www.pythonanywhere.com/ https://pypi.python.org/pypi/django-console https://pypi.python.org/pypi/django-webshell
Посмотреть исходный код
https://github.com/django/django http://nullege.com/codes/search/django https://searchcode.com/?q=django
локально )
$ python
>>> import django
>>> print(django.__path__)
Вопросы, ответы, решения
http://python.su/forum/21/ http://www.cyberforum.ru/python-web/ https://readthedocs.org/search/?q=django http://stofl-ru.com/tags/django
Разное
Pythonix. Первоначальная настройка https://bitbucket.org/tramX/pythonix4/downloads/ Разработка своей системы биллинга на Django https://pypi.python.org/pypi/django-customer-billing OPDS каталог позволяет получать доступ к Вашей библиотеке через Интернет с большинства устройств для чтения электронных книг, планшетов, смартфонов и т.д
------------------------------------------------------------------------ установка Django в virtualenv с помощью pip через proxy Установка веб-фреймворка Django в Ubuntu Делаем из Sublime Text 3 IDE для Python и Django Sublime Text 3 и консоль python
|
Июнь 20, 2016
11:37 pm - Собираем питоновский пакет и выкладываем на pypi
Питоновские пакеты отличный способ повторного использования кода. Если один и тот же код вы уже в третий раз копируете в очередной проект, самое время вынести этот код в отдельный модуль. А еще лучше будет собрать питоновский пакет, который потом будет устанавливаться одной командой. ( Читать дальше...Свернуть ) http://ishalyapin.ru/собираем-питоновский-пакет-и-выклады/
|
09:18 pm - Разворачиваем приватный pypi репозиторий с localshop

развернуть Время от времени, я пишу небольшие утилиты, библиотеки и приложения на python для себя, и не всегда я готов делится этими утилитами и библиотеками, но хотелось бы иметь возможность их удобно устанавливать, и желательно привычным pip в virtualenv. Для этого я довольно давно организовал себе локальный, приватный pypi сервер. Реализаций локальный pypi серверов довольно много, и я перепробовал их все. Большинство из них откровенно неработающие, другие безбожно глючат и падают от малейшего чиха. В конечном итоге для себя я выбрал localshop. В этом небольшом посте я расскажу как настроить локальный, приватный pypi репозиторий на localshop.
Для любителей docker: да, есть ardeois/docker-localshop. Можете поставить его сразу из docker hub, но мне docker не всегда подходит.
Ставим всё необходимое:
На серверах я по прежнему использую исключительно Debian Stable, поэтому название пакетов актуально для данного дистрибутива. Для других название может быть иным.
Из под обычного пользователя создаём виртуальное окружение и активируем его:
cd /home/$USER
virtualenv localshop
cd localshop
source bin/activate
pip install localshop
localshop migrate
Настроим supervisor для запуска localshop. Создадим /etc/supervisor/conf.d/ localshop.conf:
Выше $USER нужно заменить на имя пользователя, под которым Вы развернули virtualenv с localshop.
Запустим:
Теперь настроим nginx. Создадим /etc/nginx/sites-available/localshop :
В листинге выше $USER так же нужно заменить на пользователя в директории которого разместили виртуальную среду с localshop. Активируем конфигурацию nginx:
Скажем systemd запускать supervisor и nginx при старте системы:
После этого заходим по адресу, по которому разместили localshop. В нашем примере - это http://localshop.yourdomain.com. Перед нам откроется главная страница localshop:

Далее в верхнем меню выбираем Permissions, затем CIDRs и нажимаем Create. На странице добавления необходимо добавить IP-Адрес, или сеть из которой будет доступна возможность добавлять пакеты. В моём случае это сеть 192.168.1.0/24. Обращаю внимание, что добавлять необходимо в CIDR нотации. Например, /24 в CIDR нотации - это маска 255.255.255.0. Подробнее можно почитать, например, на википедии.

После добавления:

В localshop в отличии от многих других приватных pypi можно каждому пользователю давать разные ключи для доступа, и при надобности отключить пользователя. Добавим один ключ. Для этого так же в меню выбираем Permissions, затем Credentials и нажимаем Create. Localshop автоматически сгенерирует ключ:

Пользователи имеющие доступ к самому localshop создаются отдельно. Для кого-то это может показаться неудобным, для себя же я нашёл это весьма удобным решением.
Теперь необходимо настроить pip таким образом, чтобы он позволял использовать наш приватный pypi вместе с основным. Откроем файл ~/.pypirc расположенный в домашней директории пользователя, из под которого планируется использовать localshop, и приведем к примерно такому виду:
Пользователя и пароль для localshop находятся на странице Credentials. Там же можно добавить ключ, если на ранних шагах не добавили. Теперь можно скачивать и закачивать пакеты через наш приватный сервер:
Но чтобы каждый раз не указывать его, можно назначить его используемым по-умолчанию. Для этого в домашней директории откройте файл: ~/.pip/pip.conf (создайте если его нет), и добавьте следующее:
Где access_key - это Access Key со страницы Credentials, secret_key - secret key с той же страницы.
https://the-bosha.ru/2016/03/21/razvorachivaem-lokalnyiy-pypi-s-localshop/
|
03:05 am - установка Django в virtualenv с помощью pip через proxy с pyenv

развернуть испробовав разные способы я нашёл этот самым оптимальным при установке через pip3 возникла ошибка: TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
причиной оказалась "докембрийская свежесть" пакета: http://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry
поначалу возникло желание собрать свой пакет с помощью stdeb
Ставим пакеты stdeb и python-all: # apt-get install stdeb python-all Теперь находим архив с нужным нам модулем на pypi.python.org и скачиваем его себе: $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py или $ wget https://bootstrap.pypa.io/get-pip.py Теперь можно заглянуть в документацию на stdeb и посмотреть, как это делается.
Распакуем скачанный архив: $ tar xzvf grab-0.4.12.tar.gz Перейдём в каталог с распакованным модулем: $ cd grab-0.4.12 Подготовим каталог и управляющие файлы для сборки пакета: $ python setup.py --command-packages=stdeb.command sdist_dsc Теперь перейдём в этот каталог и соберём пакет: $ cd deb_dist/grab-0.4.12 $ dpkg-buildpackage -us -uc -rfakeroot В каталоге выше появится готовый deb-пакет, который можно установить в систему. # dpkg -i python-grab_0.4.12-1_all.deb
http://vladimir-stupin.blogspot.ru/2013/10/deb-python.html
sudo apt-get install python-stdeb ..... но свежее окружение проще поддерживать стандартными средствами python, чем самому постоянно ваять пакеты ), посему вбил в консоль это и получил нужный мне результат:
sudo apt-get remove python-pip python3-pip
export https_proxy=http://user:password@proxy-server:port ; export http_proxy=http://user:password@proxy-server:port ; export ftp_proxy=$http_proxy
wget https://bootstrap.pypa.io/get-pip.py
curl -O https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
если ImportError: cannot import name 'sysconfig'
sudo apt-get install python3-distutils
pip install -U pip
pip install -t $HOME/devs/lib/virtualenv virtualenv
chmod +x $HOME/devs/lib/virtualenv/virtualenv.py (для старых версий)
ln -s $HOME/devs/lib/virtualenv/virtualenv.py $HOME/bin/virtualenv (для старых версий)
ln -s $HOME/devs/lib/virtualenv/bin/virtualenv $HOME/bin/virtualenv
echo 'export PYTHONPATH="$HOME/devs/lib/:$PYTHONPATH"' >> $HOME/.profile (или в $HOME/.bashrc)
cd $HOME/devs/virt
virtualenv -p python3 newenv1
source $HOME/devs/virt/newenv1/bin/activate
pip install django
pip install django-admin-tools
django-admin startproject django1
cd django1/
sed -i 's/LANGUAGE_CODE = \x27en-us\x27/LANGUAGE_CODE = \x27ru-ru\x27/' django1/settings.py
python manage.py migrate
python manage.py createsuperuser
x-www-browser 'http://0.0.0.0:8080/admin' &
python manage.py runserver 0.0.0.0:8080
https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/ python3 -m pip install --user virtualenv python3 -m venv env source env/bin/activate deactivate python3 -m pip install requests
https://docs.python.org/3/tutorial/venv.html python3 -m venv tutorial-env source tutorial-env/bin/activate
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. launchpadlib 1.10.13 requires testresources, which is not installed.
sudo apt install python3-testresources
если надо какая нибудь определённая версия Django, то pip install Django==1.8.18
PS следуя талмуду http://djbook.ru/rel1.9/intro/ я вводил всякие команды типа
python manage.py startapp polls python manage.py makemigrations polls python manage.py migrate python manage.py check python manage.py migrate --run-syncdb
и правил конфиги, как в букваре, пока не столкнулся с ошибкой:
url(r'^polls/', include('polls.urls')),
NameError: name 'include' is not defined
вылечилось добавлением этой строки, в файле urls.py, перед urlpatterns
from django.conf.urls import include
в старых версиях лечило
from django.conf.urls.defaults import *
Django 1.9 Flatpages, как настроить URLS? http://python.su/forum/topic/7746/?page=1#post-51255
быстро подправить базу python manage.py dbshell или sudo add-apt-repository -y ppa:linuxgndu/sqlitebrowser sudo apt-get install sqlitebrowser
чтобы PyCharm в virtualenv нормально ставил пакеты через proxy: надо создать файл pycharm, написать в нём:
положить его в папку $HOME/bin и дать права на выполнение chmod +x сам архив с программой распаковать в $HOME/lib
---------------------------------------------------------------------------
Flatpages App
1) устанавливаем. как написано тут https://djbook.ru/rel1.9/ref/contrib/flatpages.html
в settings.py:
INSTALLED_APPS
'django.contrib.sites',
'model1', # подключаемая модель
'django.contrib.flatpages',
MIDDLEWARE добавить прослойку
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
SITE_ID = 7 # цифра = № сайта. созданного в админ панели, узнать номер можно переходом на этот сайт (№ в адресной строке)
urls.py
2) создаём модель django-admin.py startapp model1 python manage.py migrate
3) создаём в модели папки: templates, а в ней папку flatpages, в которой создаём файл default.html как указано тут https://simpleisbetterthancomplex.com/tutorial/2016/10/04/how-to-use-django-flatpages-app.html
или напр. так
удобный визуальный редактор
https://github.com/ITCase-django/django-tinymce-4
pip install django-tinymce-4
в settings.py
INSTALLED_APPS = (
'tinymce_4',
'grappelli',
'filebrowser',
'django.contrib.admin',
)
в urls.py
url(r'^grappelli/', include('grappelli.urls')),
url(r'^admin/', include([
url(r'^', include(admin.site.urls)),
url(r'^filebrowser/', include(fb_site.urls)),
])),
в models.py
from tinymce_4.fields import TinyMCEModelField
from django.db import models
class ModelFoo(models.Model):
content = TinyMCEModelField('Foo content')
напр в
$HOME/devs/virt/newenv3/lib/python3.4/site-packages/django/contrib/flatpages/models.py
добавить from tinymce_4.fields import TinyMCEModelField
а content = models.TextField(_('content'), blank=True) заменить на content = TinyMCEModelField(_('content'), blank=True)
https://djbook.ru/forum/topic/1101/
---------------------------------------------------------------------------
напоминание о читабельном коде
$ pip3 install pep8 $ pep8 optparse.py $ pip3 install autopep8 $ autopep8 --in-place optparse.py ---------------------------------------------------------------------------
Быстрый старт --------------------------------------------------------------------------- работа с virtualenv
$ git clone https://github.com/username/projectname.git $ cd projectname $ virtualenv -p python3 venv $ source venv/bin/activate (venv)$ pip install -r requirements.txt ---------------------------------------------------------------------------
cd $HOME/devs/virt virtualenv -p python3 newenv3 source $HOME/devs/virt/newenv3/bin/activate pip install --upgrade pip pip install djangocms-installer # и это подтянет всё остальное по зависимостям, в т.ч и django нужной версии ) pip freeze > requirements.txt mkdir tutorial-project cd tutorial-project djangocms -f -p . mysite python manage.py createsuperuser python manage.py runserver
в settings.py
SITE_ID = 2 # чтобы создать ещё сайт, (кроме того что в шаблоне по умолчанию, цифра - количество сайтов)
затем python manage.py migrate
войти, создать сайт, папку, загрузить туда рисунки, создать фрагмент с фоновым рисунком, создать страницу
затем dumpdata и loaddata чтобы сдампить одну базу в JSON и восстановить дамп уже на другой базе.
добавление bootstrap3 pip install aldryn-bootstrap3 python manage.py migrate python manage.py collectstatic подробно см тут https://github.com/aldryn/aldryn-bootstrap3
вариант https://github.com/dyve/django-bootstrap3
http://docs.django-cms.org/en/release-3.4.x/introduction/install.html http://docs.django-cms.org/en/latest/introduction/index.html Index of Packages Matching 'djangocms' https://cdnjs.com/libraries (подключаемые библиотеки ) Как растянуть фон на всю ширину окна? неподвижный фон при прокрутке страницы html Как добавить фоновый рисунок на веб-страницу? Перевод первой части документации Django-CMS Вторая часть документации по Django CMS Создание сайта на Django CMS
---------------------------------------------------------------------------
Работа с pip
$ pip help # помощь по доступным командам. $ pip install package_name # установка пакета(ов). $ pip install Django==1.8.18 # установка определённой версии пакета. $ pip uninstall package_name # удаление пакета(ов). $ pip-autoremove package_name # удаление пакета(ов), с установленными зависимостями $ pip install -U # обновление пакета(ов). $ pip install --force-reinstall # при обновлении, переустановить пакет, даже если он последней версии. $ pip list # Смотрим на список установленных (доступных) библиотек $ pip list -o # узнать, какие библиотеки можно обновить $ pip show package_name # узнать версию, местонахождение на диске и зависимости. $ pip search pycp # покажет список всех пакетов, в названии которых есть pycp $ pip --proxy user:passwd@proxy.server:port # использование с прокси. $ pip completion --bash >> ~/.bashrc # Автодополнение http://asvetlov.blogspot.ru/2014/05/pip.html
Как обновить существующие пакеты? (пользоваться осторожно, лучше в virtualenv )
$ pip install pip-review $ pip-review --local --interactive или $ pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U http://python.cx/blog/article/3 http://xgu.ru/wiki/Работа_с_модулями_в_Python
Удаление ненужных пакетов
$ pip install pip-autoremove $ pip install Flask Sphinx $ pip-autoremove Flask Sphinx -y http://python.cx/blog/article/PyPi_pip_python
При сборке собственных пакетов нужно записать все текущие установленные пакеты в файл с именем requirements.txt $ pip freeze > requirements.txt
Команда pip установит перечисленные зависимости, переопределяя зависимости, указанные в подпакетах, в том случае, если возникли конфликты. $ pip install -r requirements.txt
---------------------------------------------------------------------------------
virtualenverapper http://www.unix-lab.org/posts/virtualenv/ https://russianpenguin.ru/tag/python/
$ sudo apt install virtualenvwrapper
Добавляем в .bashrc
export WORKON_HOME=~/.envs source /usr/bin/virtualenvwrapper.sh
Применяем изменения $ source .bashrc
Теперь можно создавать окружения. $ mkvirtualenv proj_env
Активировать окружения. $ workon proj_env
Выходить из окружения $ deactivate
Удалять окружения. $ rmvirtualenv proj_env
При этом все папки окружений будет расположены в одном месте: папке, которая задана через $WORKON_HOME.
---------------------------------------------------------------------------------
вариант с pyenv (удобно) https://github.com/pyenv/pyenv-installer Менеджер версий python Скрипт создаст указанную директорию, вместе со всеми родительскими директориями, если потребуется, и построит виртуальное окружение.
средствами OS $ sudo apt-get install python3-venv $ python3 -m venv $HOME/devs/virt/newenv1 $ pyvenv $HOME/devs/virt/newenv1 $ source $HOME/devs/virt/newenv1/bin/activate
автономная установка (предпочтительней) Управляем разными версиями python
sudo apt install git
перезапустить оболочку $ exec "$SHELL"
Обновление: $ pyenv update
Удаление: $ rm -fr ~/.pyenv и убрать из .bashrc строки (или заккоментить #)
export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
перезапустить оболочку $ exec "$SHELL"
если WARNING: `pyenv init -` no longer sets PATH то убрать из .bashrc и добавить в .profile https://github.com/pyenv/pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile echo 'eval "$(pyenv init --path)"' >> ~/.profile
Использование: $ pyenv $ pyenv versions $ pyenv install 3.6.3 $ pyenv versions $ pyenv global 3.6.3 $ python --version $ pyenv global 2.7.13
~$ mkdir my-project && cd my-project ~/my-project$ python -V # версия python по-умолчанию Python 2.7.13 ~/my-project$ pyenv local 3.6.3 # меняем версию для директории my-project ~/my-project$ python -V # новая версия Python 3.6.3 ~/my-project$ cd .. ~$ python -V # для остальных директорий ничего не поменялось Python 2.7.13 ~$ ls -la ./my-project -rw-rw-r-- 1 user user 10 ноя 8 17:18 .python-version ~$ cat ./.python-version 3.6.3
Если в ходе установки в консоли появятся ошибки значит в системе установлены не все необходимые пакеты. Исправим это, выполнив
если ошибка ModuleNotFoundError: No module named '_lzma' то sudo apt-get install lzma sudo apt-get install liblzma-dev sudo apt-get install libbz2-dev
Виртуальное окружение Добавить плагин легко, просто клонируем его из репозитория pyenv-virtualenv или pyenv-virtualenvwrapper:
Пример использования
$ pyenv versions * system 2.7.5 3.3.2
$ mkdir -p ~/test_project/prj_for_2.7.5 && cd ~/test_project/prj_for_2.7.5 $ pyenv virtualenv 2.7.5 my-virtualenv-2.7.5 $ pyenv local my-virtualenv-2.7.5 $ pip install django==1.4 $ pip freeze Django==1.4 wsgiref==0.1.2 $ python --version Python 2.7.5
$ mkdir -p ~/test_project/test_project && cd ~/test_project/test_project $ pyenv virtualenv 3.3.2 my-virtualenv-3.3.2 $ pyenv local my-virtualenv-3.3.2 $ pip install django==1.5 $ pip freeze Django==1.5 $ python --version Python 3.3.2
самый правильный способ $ pyenv virtualenv virt3.6.3 $ pyenv virtualenvs $ pyenv shell virt3.6.3 $ pyenv activate virt3.6.3 $ pyenv deactivate $ pyenv uninstall virt3.6.3
проверка как работает $ pyenv install 3.6.4 $ pyenv virtualenv virt3.6.4 $ pyenv activate virt3.6.4 $ pip install gunicorn httpbin $ gunicorn httpbin:app $ pyenv deactivate $ pyenv uninstall virt3.6.4 $ pyenv virtualenvs $ pyenv uninstall 3.6.4 $ pyenv versions
ещё пример pyenv versions pyenv install --list pyenv install 3.11.2 pyenv global 3.11.2 pyenv virtualenv virt_3.11 pyenv activate virt_3.11 pip install ipython pip install jupyter pip install jupyterlab-language-pack-ru-RU pip install voila jupyter notebook --port 9999 pyenv deactivate pyenv uninstall virt_3.11
ошибки ModuleNotFoundError: No module named '_lzma' sudo apt install lzma liblzma-dev libbz2-dev
---------------------------------------------------------------------------------
Представляем Pipenv! https://pypi.org/project/pipenv/ https://pypi.org/project/pipsi/
автоматическая активация виртуальных окружений
https://github.com/kennethreitz/autoenv https://nolar.info/automatically-activate-virtualenv-on-cd/ https://gist.github.com/nolar/9702618 http://hmarr.com/2010/jan/19/making-virtualenv-play-nice-with-git/ https://github.com/utahta/pythonbrew
http://itnovella.ru/itnovella/2014/01/16/nastroyki-proksi-v-debian-gnu-linux.html http://pythonworld.ru/osnovy/pip.html https://pip.pypa.io/en/stable/reference/pip_install/#pip-install-options https://qa.mchost.ru/q/ustanovka-bibliotek-python-v-domashniy-katalog http://askubuntu.com/questions/250929/pythonpath-environment-variable «pip -t» — простая альтернатива virtualenv Создание deb-пакетов для модулей Python http://snakeproject.ru/rubric/article.php?art=django19p01 http://defindit.com/ascii.html Одно-строчные скрипты SED - Ant0 Полезные одно-строчные скрипты sed (sed shell) http://asvetlov.blogspot.ru/2014/05/pip.html http://python.cx/blog/article/PyPi_pip_python http://eax.me/python-virtualenv/ Питон в коробке – venv в python 3.3 https://docs.python.org/dev/library/venv.html https://khashtamov.com/2015/12/pyenv-python/ http://proft.me/2010/04/3/python-i-okruzhenie-virtualenv/ https://russianpenguin.ru/2015/04/05/разработка-на-python-с-использованием-virtualenv/ http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html Современный Python: как начать свой проект с нуля при помощи Pyenv и Poetry
Установка Django CMS в Ubuntu 16.04 64bit Ленивый деплой Django проекта UWSGI + NGINX (UBUNTU 20.04) How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 20.04 Запуск Django сайта на nginx + Gunicorn + SSL Настройка Debian, Nginx и Gunicorn для Django проекта
https://www.sinyawskiy.ru/feincms.html http://vits.pro/info/django-cms/ http://cultofdigits.com/articles/django-cms/ 12 не годных cms или как я выбирал нам cms на python — и ничего не выбрал.
uzverss Установка веб-фреймворка Django в Ubuntu uzverss консоль python в роли командной строки
|
Июнь 14, 2016
Апрель 8, 2016
05:18 pm - Raspberry PI, Arduino, Python, JS

раскрыть тему
Сайты
http://raspberry.su/ http://raspberrypi.ru/ http://micropython.org/ http://www.espruino.com/ https://www.arduino.cc/ http://amperka.ru/ http://cxem.net/ http://www.codesys.ru/ https://www.codesys.com/ http://digitrode.ru/ http://plc24.ru/ http://rs232.net.ru https://vk.com/itinside https://2ch.hk/ra/ https://ru.mouser.com/
Статьи
Схема распайки компьютерного порта COM - rs232, DE-9, DB-9, CANNON9 Запись времени захода в комнату или простой пример работы с прерываниями по GPIO на Python Raspberry Pi. Урок 4. Настройка GPIO Raspberry Pi: первое знакомство. Урок 4. Работа с GPIO, мигание светодиодом, Python Система управления умным домом на основе Raspberry Pi Raspberry Pi для домашней автоматизации. Установка Webiopi RASPBERRY PI. ДЕЛАЕМ ПЛАТУ ИНДИКАЦИИ И ПИШЕМ КОД НА PYTHON GPIO button to emulate keyboard Использование GPIO из Python на Raspberry Pi Работа с GPIO пинами Raspberry Pi. Использование SPI из Python на Raspberry Pi От Python скрипта до WSGI приложения Последовательный порт. Да, поможет нам Python! Работа с последовательным портом из консоли Linux Bubot — очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации Веб-контроль Raspberry Pi GPIO Разработка для коптеров Гирлянда на Raspberry Pi Вывод температуры, пробок и курса валют на светодиодную матрицу Raspberry Pi NooLite + Raspberry Pi + Telegram = умный дом «Привет, Siri. Включи обогреватели» — Интеграция умного дома на базе NooLite с Apple HomeKit Подключаем Arduino к Mikrotik. Дешевое и сердитое удаленное управление нагрузками Программное обеспечение для умного дома Как мы сделали малогабаритный облачный видеорегистратор из обычной IP камеры Видеоcъемка и фотосъёмка на Raspberry pi в облако Простой SMS-шлюз на Raspberry Pi «Как зеницу ока...» или делаем простенькую охранную систему на базе микроконтроллера (Сanny или Arduino) и Raspberry PI https://github.com/bosonbeard/Funny-models-and-scripts/tree/master/5.Canny/5.canny_arduino_raspi_uart_security Разминка перед выходными: есть Raspberry Pi, Arduino и свободный вечер Raspberry Pi. Работаем с GPIO на Python - Часть 1 Linux: кнопки, светодиоды и GPIO Соединяем Raspberry Pi с Arduino через Serial GPIO Использование GPIO выводов Raspberry Pi Просмотр видео на Raspberry Pi Медиаплеер из содержимого кладовки Превращаем TV-box в мини-компьютер: установка Linux Armbian на примере X96 Max+ 100W Пишем аудио-разведчик своими руками Управление линиями GPIO на Raspberry Pi Прошивка AVR микроконтроллеров с помощью Orange Pi Удаленное управление мотором постоянного тока с Arduino и Node.js uJVM: платформа для запуска Java-приложений на микроконтроллерах (MCU) Espruino Pico — оригинальная плата Espruino со встроенным интерпретатором JavaScript.
Электроника всем начинающим Разработка одноплатного компьютера с нуля. Пособие для начинающих Разработка одноплатного компьютера. Пособие для продвинутых Микроконтроллер + компьютер + своё программное обеспечение Осваиваем простейший микроконтроллер PIC. Часть 1 Промышленный реверс-инжиниринг GPIO-пины Raspberry Pi и их использование из Python Мой первый радиоуправляемый робот на Arduino Регистры процессора Intel 8086: от чипа к транзисторам Дешевый и полнофункциональный робот-манипулятор своими руками Эмулятор RFID (Смарт-карты Wiegand ) U-boot. Процедура инициализации по шагам как мы нашли, проанализировали (с помощью Reddit) и в итоге поймали виновника вредоносного устройства в нашей сети RogueOne: создание мошеннической точки доступа Wi-Fi с помощью Raspberry Pi Доступ к журналу событий из командной строки Редактирование образа Raspberry Pi с помощью qemu-user-static (Ubuntu 14.04) Введение в реверсинг с нуля, с использованием IDA PRO Вглядываемся в Radare2 Анализ TPM Полноценный Kubernetes с нуля на Raspberry Pi
разное DIY дозиметр за полчаса: так ли фонят набережные Питера?
Книги
http://radio18.ru/catalog/docs/5198.pdf Проекты с использованием контроллера Arduino Виктор Петин Проекты с использованием контроллера Arduino Виктор Петин 2014 Программируем Arduino. Профессиональная работа со скетчами Саймон Монк 2017 Джереми Блум - Изучаем Arduino: инструменты и методы технического волшебства Практическая энциклопедия Arduino Виктор Петин, Александр Биняковский 2017 Джереми Блум - Изучаем Arduino: инструменты и методы технического волшебства [2015] DjVu Подборка книг: Arduino Ассемблер — это просто. Учимся программировать Олег Калашников 2011 Схемотехника. Мастер-класс Гаврилов С.А. 2016 Авдеев В.А. Периферийные устройства: интерфейсы, схемотехника, программирование Микроконтроллеры AVR. От азов программирования до создания практических устройств Белов А.В. подборка книг схемотехника микроконтроллеры
Подборки
http://robocraft.ru/tag/python http://cxem.net/search.php?search_str=raspberry https://geektimes.ru/hub/raspberrypi/ http://abyz.co.uk/rpi/pigpio/python.html http://mediaunix.com/tag/raspberry-pi/ https://habrahabr.ru/hub/controllers/ http://wiki.amperka.ru/ https://zhevak.wordpress.com/
Assembler https://uzverss.livejournal.com/89062.html
Самоучители
Базовый курс на Raspberry PI Подборка материалов Raspberry Pi для домашней автоматизации Ethernet Shield и Arduino – основы GPIO для чайников (часть 1) GPIO для чайников (дополнение) http://www.openfablab.ru/ http://plc24.ru/manual/cds_theory/ Шпаргалка по основным инструкциям ассемблера x86/x64
Видео
https://www.youtube.com/user/Raspberrypipi/videos ------------------------------------------------------------------------ Паяльник TV Для начинающих https://www.youtube.com/playlist?list=PLBLtydguylgB-9FPU63TY_vtsj0xYt5li Паяльник TV Обзоры оборудования https://www.youtube.com/playlist?list=PLBLtydguylgCryZxo0sC-j1INz2XW0WH7 Паяльник TV Ремонт https://www.youtube.com/playlist?list=PLBLtydguylgA3trXhW-QVjGAU9-TqEIJW Паяльник TV Робототехника и ДУ-управление https://www.youtube.com/playlist?list=PLBLtydguylgCOSv5Cn-757nAgMGQKXRAq Паяльник TV Конструкторы https://www.youtube.com/playlist?list=PLBLtydguylgDsjG9L8tSzmJOSXzfwGSBE Паяльник TV Программы https://www.youtube.com/playlist?list=PLBLtydguylgCkhtJWxukOynJztqTVN_Ny Паяльник TV Микроконтроллеры https://www.youtube.com/playlist?list=PLBLtydguylgDUtd9qRAt82u-pUa9x6O8Y ------------------------------------------------------------------------ Радиолюбитель TV Уроки Ардуино / Arduino https://www.youtube.com/playlist?list=PLleXqmo8pio1THWNZlx-py52KgafepaHf Радиолюбитель TV Всё об ARDUINO https://www.youtube.com/playlist?list=PLleXqmo8pio00lUJMZEmJGdCmyPsBUCII Радиолюбитель TV Уроки радиоэлетроники / Радиолюбитель TV https://www.youtube.com/playlist?list=PLleXqmo8pio3f8NuYKnJuWeM-27OBMKLM Радиолюбитель TV Транзистор - это просто https://www.youtube.com/playlist?list=PL44307E6369894ED5 Радиолюбитель TV Как сделать своими руками https://www.youtube.com/playlist?list=PLleXqmo8pio3GRO9303b8_ZXK09F88ZuL Радиолюбитель TV Товары из Китая Радиолюбителю https://www.youtube.com/playlist?list=PLleXqmo8pio1Oh4sFdYAfIKLHsJz1pj8i ------------------------------------------------------------------------ Радиолюбитель Уроки радиоэлектроники https://www.youtube.com/playlist?list=PL_2PkT1Qd7H-yLV_8OMhKbwsoclr13Umk ------------------------------------------------------------------------ AKA KASYAN Как это работает? https://www.youtube.com/playlist?list=PLYWPJHDGvhxGU7wSB-39KNhst_d9d3mOS AKA KASYAN Начинающим радиолюбителям https://www.youtube.com/playlist?list=PLYWPJHDGvhxEZi11LZ8-OXO1bWmtnOUQx AKA KASYAN Обзор устройств https://www.youtube.com/playlist?list=PLYWPJHDGvhxFTXCHEJvCg5Z-XLU2SMHpQ AKA KASYAN Мастерская радиолюбителя https://www.youtube.com/playlist?list=PLYWPJHDGvhxHjgrtkeEVIka58QvsVhp8Q AKA KASYAN Простейшие конструкции для начинающих https://www.youtube.com/playlist?list=PLYWPJHDGvhxFFTRa4TR6i0q8QYr5CCJug AKA KASYAN Особо интересное видео https://www.youtube.com/playlist?list=PLYWPJHDGvhxHPltFftU1oUESYwKaRBAyK ------------------------------------------------------------------------ Обзоры посылок и самоделки от jakson Самоделки и радиоконструкторы https://www.youtube.com/playlist?list=PLIe2lqjafXDf28GsoyeMjGML8zIzWRGdf Собираем интересные схемы. https://www.youtube.com/playlist?list=PLIe2lqjafXDcNvy4lGclWSMsoitDOufVo Радиоконструкторы https://www.youtube.com/playlist?list=PLIe2lqjafXDcvwaQreha6qmyrt5ZYmjv6 ------------------------------------------------------------------------ geekmatic Видео уроки программирования Arduino https://www.youtube.com/playlist?list=PLmYrKfbOTukLzM2oUr4DzZ68vfrB3q5Pt geekmatic Уроки Arduino для новичков от coursera https://www.youtube.com/playlist?list=PLmYrKfbOTukJONp6Mjse7I4cigpChNWwB ------------------------------------------------------------------------ IT Propaganda Программируем Arduino на Python https://www.youtube.com/playlist?list=PLbKwBvrpogbbTfFxr1wEXzLS9VKXsqvxD ------------------------------------------------------------------------ Video Channel AVR https://www.youtube.com/playlist?list=PLZ5OKxpfkh5KfjXFeywXvaam-wTmC35A9 ------------------------------------------------------------------------ Школа программистов Программирование с нуля! (ASM) https://www.youtube.com/playlist?list=PLVBQ16nKzRwqD8qPOldSYBUWEjjFOCPXu ------------------------------------------------------------------------ Основы программирования Ассемблер https://www.youtube.com/playlist?list=PLOrC1aStHSaqGTV5lEx07nKbvDxSiYCJH ------------------------------------------------------------------------ Tempesta ASSEMBLER https://www.youtube.com/playlist?list=PLQ3fZB7WryQCL_U2NnpOx97zW6N9-Een3 ------------------------------------------------------------------------ risctronix Программирование pic контроллеров для начинающих с нуля. https://www.youtube.com/playlist?list=PLt_8RrnK98LnMeOzaW_MpiShY4HGkQtI1 ------------------------------------------------------------------------ MyChipPic Создание схем и программирование на ассемблере микроконтроллеров PIC https://www.youtube.com/playlist?list=PLIMnyb3KvN1j0H3G82zjT6R0KLG77ONvg MyChipPic Программирование микроконтроллеров PIC на ассемблере https://www.youtube.com/playlist?list=PLIMnyb3KvN1hQQfVPeeVTynqG2ni-zoCh MyChipPic Практика https://www.youtube.com/playlist?list=PLIMnyb3KvN1g_xOxtGG7V3vOTnR3Lou85 ------------------------------------------------------------------------ Smart Ptz Orange PI PC https://www.youtube.com/playlist?list=PLuxH0zKcnbRGfdGpHXCw-964tV8y1zgcI Smart Ptz Ардуиномания https://www.youtube.com/playlist?list=PLuxH0zKcnbRG5ymR47m1sRNAYH1MLviMC ------------------------------------------------------------------------ НОУ ИНТУИТ Введение в цифровую электронику https://www.youtube.com/playlist?list=PLDrmKwRSNx7Lk8Lb2Cz2a2JqVXmwqCo6t НОУ ИНТУИТ Архитектура ЭВМ и язык ассемблера https://www.youtube.com/playlist?list=PLDrmKwRSNx7I4QA6z2HlcDkjwW4fpNPva ------------------------------------------------------------------------ Видео уроки по Arduino от Джереми Блума (Jeremy Blum)+книга http://pikabu.ru/story/video_uroki_po_arduino_ot_dzheremi_bluma_jeremy_blumkniga_3901988 ------------------------------------------------------------------------ knowcity Радиоэлектроника. https://www.youtube.com/playlist?list=PLYZm5HGThGRDMQKJyPHWefGPDbvREh4R3 ------------------------------------------------------------------------ ElectronicsClub Электроника для начинающих https://www.youtube.com/playlist?list=PL8uwGGI-Cxq7_82j2kLih6bspk4DkOMec ------------------------------------------------------------------------ Электротехника и электроника для программистов Кодирование сигналов https://www.youtube.com/playlist?list=PL1VvMJF0dnhrcJZBhrAr8OWZKkCtbIBGQ Интерфейсы https://www.youtube.com/playlist?list=PL1VvMJF0dnhrmMtkXu4gOHV5hnGMMPVdU Схемы на биполярном транзисторе https://www.youtube.com/playlist?list=PL1VvMJF0dnhomTRm_Q6qous0s6GcVXDjN ------------------------------------------------------------------------ Заметки Ардуинщика Уроки Arduino https://www.youtube.com/playlist?list=PLgAbBhxTglwmVxDDC5TSYUI91oZ0LZQMw Заметки Ардуинщика Arduino - модули и датчики https://www.youtube.com/playlist?list=PLgAbBhxTglwkg_Q8me6QO3JifVbaGDXAL Заметки Ардуинщика Arduino - полезные трюки https://www.youtube.com/playlist?list=PLgAbBhxTglwnL23mAbz7pleQGOduv-vRF ------------------------------------------------------------------------ it-inside.org Raspberry pi https://www.youtube.com/playlist?list=PLWeA3JK7qaiovJ1kSaiEdDRuzELxcCxfA it-inside.org Python https://www.youtube.com/playlist?list=PLWeA3JK7qaipA13QI9h_4-X40161XZZ39 it-inside.org Scripting https://www.youtube.com/playlist?list=PLWeA3JK7qaiqH4vA78UxoUKsQpFp71bwQ it-inside.org Обзоры и тесты. https://www.youtube.com/playlist?list=PLWeA3JK7qairbhDvcNrMshB3YUXwi1M6c ------------------------------------------------------------------------ arduinoLab https://www.youtube.com/user/0arduinoLab/playlists ------------------------------------------------------------------------ AmperkaRu https://www.youtube.com/user/AmperkaRu/playlists ------------------------------------------------------------------------
Программное обеспечение
https://www.raspberrypi.org/downloads/ https://wiki.debian.org/RaspberryPi http://mirror.centos.org/altarch/7/isos/armhfp/ Дистрибутивы для Raspberry Pi 33 операционные системы для Raspberry Pi https://www.armbian.com/ https://github.com/NickAlilovic/build https://www.webosose.org/ CusDeb Веб интерфейс для создания образов ОС для Raspberry Pi онлайн https://github.com/espruino/Espruino http://pythonhosted.org/RPIO/ https://github.com/pyserial/pyserial https://pypi.python.org/pypi/RPi.GPIO https://sourceforge.net/projects/raspberry-gpio-python/ Distribution List for Raspberry Pi Документация на систему фреймворка LLeo для ESP8266 ------------------------------------------------------------------------ Микроконтроллеры на базе Java? https://www.microej.com/product/vee/ https://developer.android.com/things/index.html https://github.com/OpenSC/OpenSC/wiki/JavaCards http://haiku-vm.sourceforge.net/ http://www.harbaum.org/till/nanovm/index.shtml https://github.com/SINTEF-9012/JArduino/
https://github.com/samsung/uJVM https://www.law.cornell.edu/wex/copyright https://github.com/github/dmca/blob/master/2019/07/2019-07-29-uJVM.md https://zenodo.org/record/2647414 Java VM for microcontrollers uJVM ------------------------------------------------------------------------ http://www.espruino.com/ http://netmf.github.io/
http://www.eluaproject.net/ http://www.ulisp.com/ ------------------------------------------------------------------------ https://www.hex-rays.com/products/ida/support/download_freeware.shtml http://www.windbg.org/ http://store.codesys.com/
https://radare.org/n/ https://github.com/radareorg/radare2-r2pipe https://github.com/dukebarman/awesome-radare2
https://codisec.com/veles/ https://github.com/codilime/veles
https://github.com/pikvm/pikvm
http://opencircuitdesign.com/
Вопросы, ответы, решения
https://micropython.org/unicorn/ http://arduino.ru/forum http://www.cyberforum.ru/arduino/ http://forum.cxem.net/index.php?/forum/99-arduino-и-raspberry-pi/ https://www.raspberrypi.org/forums/viewforum.php?f=84 http://raspberrypi.ru/forum/ https://forum.antichat.ru/threads/424366/ http://forum.amperka.ru/ http://roboforum.ru/ http://forum-ru.codesys.com/index.php http://www.owen.ru/forum/forum.php https://forum.reverse4you.org/ https://telegram.me/r0crew_bot https://t.me/R0_Crew https://t.me/hwnrf Полезные сайты для мастеров.
|
Март 5, 2016
08:28 pm - Как сделать простой веб-сайт за один час, часть 2

Как сделать простой веб-сайт за один час, часть 1
заглянуть
конфигурации сервера
Ставим LEMP https://www.hostinger.com/tutorials/how-to-install-lemp-centos7 https://www.cloudjojo.com/how-to-install-nginx-mariadb-php-lemp-on-centos-7/ https://serveradmin.ru/ustanovka-i-nastroyka-nginx-php-fpm-php7-1-na-centos-7/
1) установка nginx yum install epel-release -y yum install nginx -y systemctl start nginx systemctl enable nginx
2) установка MySQL (MariaDB) yum install mariadb-server mariadb -y systemctl start mariadb systemctl enable mariadb mysql_secure_installation MariaDB запросит пароль root, так как это первоначальная установка, и у вас его нет, поэтому просто нажмите enter. Следующее приглашение спросит, хотите ли вы установить пароль root, введите Y и следуйте инструкциям
3) установка PHP v7.3 yum repolist yum install yum-utils yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm curl -O http://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm yum --enablerepo=remi,remi-php73 install php-fpm php-common
обновить php yum-config-manager --disable remi-php73 yum-config-manager --enable remi-php74 yum update -y
4) настройка связки nginx + php /etc/nginx/conf.d - каталог для запуска конфигураций, сюда добавляем символические ссылки например: ln -s /etc/nginx/virt_host/default_php.conf /etc/nginx/conf.d/ /etc/nginx/virt_host - папка для хранения файлов конфигураций хостов (можно обозвать по другому)
в дебиановых sites-available каталог для хранения файлов хостов sites-enabled каталог, предоставляющий Nginx список хостов, которые нужно обслуживать
Добавление виртуальных хостов на nginx (очень доступно) https://shneider-host.ru/blog/dobavlenie-virtualnyh-hostov-na-nginx.html https://www.8host.com/blog/nastrojka-virtualnyx-xostov-nginx-v-centos-7/ https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-on-centos-7 NGINX - создание виртуальных хостов Один конфиг Nginx для работы с кучей разных сайтов Настройка NGINX для поддержки одного и нескольких сайтов WordPress Несколько сайтов на nginx, один IP-адрес
mkdir /etc/nginx/virt_host nano /etc/nginx/virt_host/default_php.conf
netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9084/php-fpm: maste
nano /etc/php-fpm.d/www.conf Найдите и измените эти строки:
user = nginx group = nginx listen = /var/run/php-fpm/php-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0660
5) проверяем ln -s /etc/nginx/virt_host/default_php.conf /etc/nginx/conf.d/ nginx -t sudo systemctl start php-fpm sudo systemctl enable php-fpm sudo systemctl restart php-fpm nginx
https://nginxconfig.io/ https://www.nginx.com/resources/wiki/start/ https://docs.joomla.org/Nginx https://www.nginx.com/resources/wiki/start/topics/recipes/yii/ https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/ https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/ https://wordpress.org/support/article/create-a-network/ Как создать самоподписанный сертификат SSL для Nginx на CentOS 7 Настройка nginx для работы с сертификатами ГОСТ 2012 года Как добавить модуль gzip в Nginx на CentOS 7 ----------------------------------------------------------------------------------- Документация Основы Веб-программирования WSGI (pep-333) Развертывание приложения Python WSGI с помощью uWSGI+NGINX Настройка uWSGI и NGINX для обслуживания приложений Python в Ubuntu 14.04 веб-интерфейс для python в ubuntu используя nginx и uwsgi Как избежать 10 частых ошибок в настройке NGINX
Как завершить TLS-соединение в Nginx Настройка LEMP-сервера с помощью Ansible для простых проектов. Часть первая: знакомство с Ansible Настройка LEMP-сервера с помощью Ansible для простых проектов: практический курс. Часть первая -----------------------------------------------------------------------------------
Динамические виртуальные хосты (dynamic vhost) в nginx нужно для того, чтобы каждый раз при добавлении домена, не было нужды редактировать файл конфигурации. Достаточно один раз настроить, добавить\обновить DNS запись и добавить директорию на сервер.
проверять наличие директории, и если такой нет - показывать 404 ошибку:
Если необходимо только для поддоменов то:
вместо 404 ошибки можно сделать перенаправление (редирект, если будет угодно) на основной:
универсальный вариант для доменов и поддоменов:
Редирект с www на без www Nginx Редирект с http на https Nginx
обратный прокси (доступ к ресурсу за nat) nginx настраивается как тут добавляется файл server233_reverse.conf в /etc/nginx/virt_host, а символическая ссылка с него - в /etc/nginx/conf.d/
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent sudo firewall-cmd --zone=external --add-port=28080/tcp --permanent sudo firewall-cmd --zone=external --add-port=28888/tcp --permanent sudo firewall-cmd --reload
появится доступ из внутренней сети по порту 8080, из наружной по порту 28080, к сайту на сервере 233, находящемся на порту 8080, с 8888 портом, на котором висит другой сайт - аналогично
Решение с помощью firewall-cmd https://www.dmosk.ru/miniinstruktions.php?mini=router-centos перенаправление сетевых запросов на сервер, стоящий за NAT и не имеющий прямого выхода во внешнюю сеть.
firewall-cmd --zone=external --permanent --add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15
* где 25 — прослушиваемый внешний порт, для которого сработает перенаправление; tcp — используемый транспортный протокол; 8025 — на какой порт перенаправить запрос; 192.168.0.15 — IP-адрес сервера, на который отправляем запросы.
Разрешаем сам порт: firewall-cmd --permanent --zone=external --add-port=25/tcp
Чтобы правило вступило в силу: firewall-cmd --reload
установка squid с доступом по группам в AD, squidGuard, lighttpd+lightsquid, sams2 в centos часть 1 установка squid с доступом по группам в AD, squidGuard, lighttpd+lightsquid, sams2 в centos часть 2
https://nginx.org/ru/docs/http/ngx_http_proxy_module.html https://www.scaleway.com/en/docs/how-to-configure-nginx-reverse-proxy/ https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ https://nginx.org/ru/docs/http/ngx_http_proxy_module.html Настройка обратного прокси Nginx на Linux Проксирование запросов в nginx с помощью proxy_pass Nginx как обратный прокси на Docker Проксирование запросов в nginx с помощью proxy_pass Разбираемся в HTTP прокси NGINX, балансировке нагрузки, буферизации и кешировании Виртуальные хосты на nginx (CSC309)
Примеры редиректов в NGINX
Настройка Nginx для использования в качестве веб-сервера и обратного прокси-сервера для Apache в One Ubuntu 18.04 Server
https://docs.nginx.com/nginx/deployment-guides/load-balance-third-party/microsoft-exchange/ Настройка NGINX для проксирования почты СКРЫВАЕМ ЧАСТЬ РЕСУРСОВ IIS СРЕДСТВАМИ NGINX AS REVERSE PROXY (CENTOS 7) Обратный прокси на Nginx
http://nginx.org/en/docs/http/load_balancing.html
https://wiki.squid-cache.org/SquidFaq/ReverseProxy Reverse proxy from nginx to squid? Требуется связка: client <-> nginx <-> squid <-> site. Обратный прокси от nginx до squid
взаимодействие с CGI Configure Perl-FastCGI on CentOS 7 Nginx Server https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/ http://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html настройка nginx+perl https://www.linode.com/docs/web-servers/nginx/nginx-and-perlfastcgi-on-centos-5/
sudo yum install spawn-fcgi fcgiwrap
nano /etc/nginx/virt_host/default_perl.conf
ln -s /etc/nginx/virt_host/default_perl.conf /etc/nginx/conf.d/
nano /etc/sysconfig/spawn-fcgi
nano /var/www/default_perl/index.pl
systemctl enable --now spawn-fcgi
NGINX Unit http://unit.nginx.org/ https://github.com/nginx/unit http://hg.nginx.org/unit https://hub.docker.com/r/nginx/unit/ https://github.com/miholeus/nginx-unit-python
Remi's RPM repository PHP with the NGINX unit application server
1. Official repository installation
2. Remi repository installation
3. Server and modules installation
4. Test configuration 4.1 Preparation curl -O https://blog.remirepo.net/public/unit.config
4.2 Run the service: # systemctl start unit
4.3 Configuration Configuration is managed through a REST API:
# curl -X PUT --data-binary @unit.config --unix-socket /var/run/unit/control.sock http://localhost/config
And to check running configuration: # curl --unix-socket /var/run/unit/control.sock http://localhost/config
5 Usage You can access the application on each new port:
http://localhost:8300/ for default PHP http://localhost:8356/ for PHP version 5.6 http://localhost:8372/ for PHP version 7.2 etc
https://unit.nginx.org/configuration/ Nginx Unit Веб. Мысли вслух Установка NGINX + PHP7 последних версий Nginx Unit + Django + Virtualenv - Конфигурация Установка WordPress с модулем NGINX Installing WordPress with NGINX Unit - NGINX HOW TO INSTALL NGINX UNIT ON LINUX NGINX Unit – Application Server from Nginx Nginx Unit + Bitrix настройка Настройка NGINX Unit под PHP
phpmyadmin https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-20-04-ru https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-nginx-on-an-ubuntu-18-04-server https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-18-04-ru https://howitmake.ru/blog/ubuntu/93.html
apt install nginx mysql-server apt install php-fpm php-mysql mysql_secure_installation apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
vim /etc/php/7.4/fpm/php.ini
ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
/etc/nginx/sites-available/phpmyadmin
vim /var/www/html/info.php <?php phpinfo() ?>
/etc/nginx/sites-available/default_php
cd /etc/nginx/sites-available/ ln -s ../sites-available/phpmyadmin ln -s ../sites-available/default_php
nginx -t systemctl reload nginx service nginx restart
если 1044 - Для пользователя 'phpmyadmin'@'localhost' доступ к базе данных 'baza' закрыт
https://losst.ru/ustanovka-phpmyadmin-s-nginx-v-ubuntu-20-04 sudo mysql -u root -p После ввода пароля root пользователя MySQL, введите следующие команды: CREATE USER 'test'@'localhost' IDENTIFIED BY 'пароль'; GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost'; FLUSH PRIVILEGES;
lighttpd https://wiki.archlinux.org/index.php/Lighttpd_(Русский)#Виртуальные_хосты https://lorwiki.org.ru/wiki/Lighttpd Веб-сервер Lighttpd - настраиваем виртуальные хосты. Веб-сервер Lighttpd - включаем поддержку SSL. Создание виртуальных хостов с mod_mysql vhost в Lighttpd на Ubuntu
lighttpd в качестве обратного прокси https://wiki.archlinux.org/index.php/Lighttpd_(Русский)#Lighttpd_как_reverse_proxy_для_отдачи_статики https://stackoverflow.com/questions/4859956/lighttpd-as-reverse-proxy Обязательный пакет
server.modules = ( ... "mod_proxy", ... ) Настройка вашего внешнего прокси: для lighttpd.conf @ 192.168.1.10
$HTTP["url"] =~ "^.*DeviceB" { proxy.server = ( "" => (( "host" => "192.168.1.20", "port" => 80 )) ) }
$HTTP["url"] =~ "^.*DeviceC" { proxy.server = ( "" => (( "host" => "192.168.1.30", "port" => 80 )) ) } Для полной документации по lighttpd mod_proxy, вы можете обратиться к http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModProxy
LAMP http://www.apache.org/ https://downloads.apache.org/ https://projects.apache.org/releases.html https://www.apachelounge.com/download/ https://help.ubuntu.ru/wiki/apache2 Большой Мануал по настройке lamp-сервера на Debian: Часть 0. Установка и настройка сервера Apache на ubuntu Установка веб-сервера Apache в CentOS 7 Настройка web сервера в CentOS 7 Веб-сервер Apache: установка, настройка и способы защиты от атак Разработка сайтов на домашней машине с Fedora Установка phpmyadmin на CentOS 7 Настройка Apache + SSL для работы сайта по HTTPS Установка Apache HTTP Server 2.2.22 на Windows Установка Apache и PHP на Windows
https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html How to Configure Apache HTTPS Reverse Proxy on CentOS Linux Настройка mod_proxy в Apache How To Use Apache HTTP Server As Reverse-Proxy Using mod_proxy Extension How To Use Apache as a Reverse Proxy with mod_proxy on CentOS 7 Как использовать Apache в качестве обратного прокси с mod_proxy на CentOS 7 Как использовать Apache в качестве обратного прокси при помощи mod_proxy на Ubuntu 16.04 Настройка Reverse Proxy Apache (Debian 8) с автоматической выдачей Let's Encrypt Using Let's Encrypt and Docker for Automatic SSL Apache2 als Reverse Proxy für Exchange 2010 2013 2016 2019 inklusive Outlook Anywhere RPC over http Настройка Apache Reverse Proxy для MS Exchange 2010, 2013, 2016 (Debian 8 Jessie/Ubuntu 14.04 Trusty Tahr)
HAProxy Разбираем методы проксирования на основе HAProxy Как установить и настроить HAproxy в Ubuntu 20.04 LTS
Самостоятельная настройка VDS / VPS
https://2ton.com.au/standalone_binaries/rwasa https://github.com/caddyserver/caddy
https://letsencrypt.org/ https://whatsmychaincert.com/ Настройка HTTPS с сертификатами Let’s Encrypt
https://www.acme.com/software/thttpd/ thttpd -D -h 0.0.0.0 -p 3000 -d /static-website -u static-user -l - -M 60 https://redbean.dev/
Настройка Linux для высоконагруженных проектов и защиты от DDoS
5 способов создать мгновенный легкий веб-сервер с помощью командной строки Linux
использование docker docker команды centos docker yii подборка по виртуализации и облакам Опыт разработки высоконагруженной системы в рамках HighLoad Cup Разработка под Docker. Локальное окружение. Часть 1 Разработка под Docker. Локальное окружение. Часть 2 — Nginx+PHP+MySql+phpMyAdmin Готовим локальную среду Docker для разработки на PHP https://github.com/PHPtoday-ru/docker-local-conf https://hub.docker.com/_/scratch Как поднять сайт в Docker Настройка веб-сервера в Docker (NGINX + PHP + MariaDB) Используем Docker для развертывания web-приложения bitrix Настройка LEMP сервера с помощью docker для простых проектов. Часть первая: База https://github.com/lipanski/docker-static-website 60+ Best Docker Containers for Home Server Beginners 2023 Docker Media Server Ubuntu 22.04 with 23 Awesome Apps https://github.com/htpcBeginner/docker-traefik
управлялки https://www.webmin.com/ https://cockpit-project.org/ http://vestacp.com/ https://ajenti.org/ https://www.rundeck.com/open-source
контент
RSS https://freshrss.org/ https://tt-rss.org/ https://github.com/fossar/selfoss https://github.com/samuelclay/NewsBlur https://github.com/feedhq/feedhq https://miniflux.app/
https://github.com/DIYgod/RSSHub https://github.com/RSS-Bridge/rss-bridge https://github.com/suin/php-rss-writer/ https://bitbucket.org/fivefilters/full-text-rss/src/master/ https://github.com/Kombustor/rss-fulltext-proxy https://github.com/goutsune/unko https://rssbox.herokuapp.com/
Обзор RSS-ридеров — self-hosted альтернативы Google Reader Почему я по-прежнему пользуюсь RSS Что такое RSS-лента и как ее создать
аудио https://www.musicpd.org/clients/ https://github.com/notandy/ympd https://github.com/YaLiC/mpcwebshell https://github.com/swingmx/swingmusic https://github.com/ampache/ampache
список сетевых служб и веб-приложений свободного ПО , которые можно разместить на вашем сервере https://github.com/awesome-selfhosted/awesome-selfhosted
Трансляция потока с веб-камеры с помощью ffserver Потоковое видео средствами ffserver & ffmpeg Запускаем DOS игру в браузере https://dos.zone/studio/ Пишем онлайн-тренажёр для Python, C++ и Go: опыт Практикума установка Django в virtualenv с помощью pip через proxy с pyenv https://jupyter.org/ Запускаем Jupyter на орбиту LXD Установка GitLab совместно с уже работающим Nginx Рабочий стол Linux в браузере https://github.com/navidrome/navidrome https://www.navidrome.org/docs/installation/linux/ https://browsix.org/ https://github.com/plasma-umass/browsix https://github.com/yudai/gotty https://github.com/os-js/OS.js https://github.com/os-js/osjs-server https://xtermjs.org/ https://bun.sh/blog/the-bun-shell https://github.com/butlerx/wetty https://chromium.googlesource.com/apps/libapps/+/master/hterm/ https://chromium.googlesource.com/apps/libapps/+/master/nassh/ https://github.com/DustinBrett/daedalOS
https://github.com/paradoxxxzero/butterfly https://github.com/BlackArch/webshells https://github.com/epinna/weevely3
Matrix: децентрализованные открытые мессенджеры с E2E-шифрованием. Обзор возможностей и настройка своего сервера https://github.com/element-hq/dendrite
https://github.com/conversejs/converse.js https://open-store.io/app/conversejs.luigi311
https://github.com/digitalblossom/alternative-frontends
Безопасный HTTPS-прокси менее чем за 10 минут https://freemyip.com/ https://github.com/SenseUnit/dumbproxy
https://webvm.io/ https://github.com/leaningtech/webvm Запуск WebVM локально с помощью пользовательского образа Debian
Cloud Commander – веб файловый менеджер для управления файлами и программами Linux через браузер
HTML код для получения видео с камеры, сохранить этот код в файл с расширением .htm и открыть веб-браузером.
Решение проблем неправильной кодировкой веб-страницы Защита контента веб-сайта Сетевой pivoting: понятие, примеры, техники, инструменты 75 фактов, которые полезно знать перед тем, как выложить сайт криптомайнер на основе JavaScript https://doka.guide/
публикация https://localtunnel.github.io/www/ https://ngrok.com/ Как без белого IP локальный веб-сервер сделать доступным из Интернета https://github.com/samyk/pwnat
домен DNS DDNS домен https://www.freenom.com/ https://gen.xyz/ https://ru.hostings.info/domen-xyz https://ru.tld-list.com/tld/xyz https://codd-wd.ru/fwd/domains/ https://atex.ru/ https://sweb.ru/ https://freedns.afraid.org/
Свои DDNS (Dynamic DNS) сервер и клиент на базе Debian Настройка DynDNS на Debian
SSL https://zerossl.com/ https://letsencrypt.org/ сертификат cert.мой_сайт.xyz https://github.com/acmesh-official/acme.sh Acme.sh + Ansible + Alias mode: Автоматизируем получение и распространение TLS сертификатов Начало работы с acme.sh и клиентом Let’s Encrypt SSL Сертификаты Let's Encrypt Установка и автоматизация с помощью acme-tiny Как установить бесплатный сертификат Let’s Encrypt и настроить автоматический перевыпуск Получение бесплатного SSL сертификата Let's Encrypt Получаем сертификаты Let's Encrypt при помощи Certbot Let's Encrypt: получение сертификата по шагам Создание самоподписанного SSL-сертификата для Apache в Debian 10 Настройка Apache + SSL для работы сайта по HTTPS Создание самоподписанного SSL-сертификата Создание самоподписанного SSL-сертификата https://www.altlinux.org/Создание_самоподписанных_сертификатов OpenSSL: принципы работы, создание сертификатов, аудит быстро выпустить свой сертификат через свой CA, добавив его к себе в доверенные центр сертификации от компании SmallStep https://github.com/smallstep/certificates
примеры создания самоподписанного серификата
certificate.crt — сам сертификат; privateKey.key — файл ключа.
Файлы ключа и сертификата будут размещены в каталоге, указанном при вызове команды openssl в параметрах keyout и out. При использовании OpenSSL необходимо также создать ключи Диффи-Хеллмана, чтобы сгенерировать ключи Диффи-Хеллмана длиной 4096 бит и сохранить их в файл /etc/nginx/dhparam.pem: нужно вбить команду
Преобразуйте файл сертификата в доверенный сертификат формата DER для импорта в браузер. Для этого выполните команду:
Импортируйте файл bump.der в список доверенных корневых центров сертификации на компьютерах пользователей. При использовании некоторых браузеров (например, Mozilla Firefox) требуется также добавить сертификат в хранилище браузера.
создание самоподписанного сертификата на примере настойки openvpn Как сделать и настроить собственный VPN
vps Список сетей VPS/выделенных серверов, подвергающихся цензуре в России https://poiskvps.ru/ https://vds.menu/ https://vps.today/
https://github.com/lesichkovm/awesome-vps-price-breakdown https://www.oracle.com/cloud/free/ ? https://cybernews.com/best-web-hosting/free-vps-hosting/ https://www.ionos.com/servers/vps https://www.digitalocean.com/ https://www.vultr.com/products/cloud-compute/ http://lowendstock.com/deals/ https://haphost.com/vps-hosting/ https://www.cloudatcost.com/
? https://justhost.asia/ https://justhost.ru/ https://hshp.host/ https://ztv.su/ https://eurobyte.ru/ https://beget.com/ https://ihor.online/ https://62yun.ru/ https://ruweb.net/ https://weasel.cloud/ https://nuxt.cloud/ https://hip.hosting/ https://pq.hosting/ https://mchost.ru/ https://hostkey.ru/vps/ https://cp.inferno.name/ https://fornex.com/ https://firstbyte.ru/ https://aeza.net/ru https://ishosting.com/ https://timeweb.cloud/ https://serverspace.ru/ https://www.ihc.ru/ https://firstvds.ru/ https://handyhost.ru/ https://www.majordomo.ru/ https://www.ipserver.su/ https://vds.sh/ https://4vps.su/
? https://bitlaunch.io/
https://vpswala.org/cart/index.php?rp=/store/web-hosting https://www.gigarocket.net/free-vps.php
Oracle раздает бесплатные VPS навсегда Бесплатный VPS от Google навсегда Регистрируем бесплатный (Always Free) VPS - сервер от Oracle навсегда, для сервисов Умного дома или чего-то другого. Как получить бесплатный VPS (VDS) сервер навсегда
VPN на своём сервере с IP адресом из США за 1$ в месяц
проверить месторасположение vps https://www.myip.com/ https://whatismycountry.com/
|
03:31 am - Как сделать простой веб-сайт за один час, часть 1

Как сделать простой веб-сайт за один час, часть 2
заглянуть
Как сделать простой веб-сайт за один час с помощью Github От переводчика: инструкция максимально простая, зато на неё можно ссылаться, если новички задают вопрос, как запустить свой сайт в интернете.
Один из моих друзей пару месяцев твердил, что сделает сайт на весенних каникулах. Сейчас каникулы заканчиваются, а он так и не начал. Завтра его день рождения, и я решил как мудак хороший друг сделать ему подарок: написать пошаговую и максимально простую инструкцию.
В реальности, достаточно всего одного часа, чтобы сделать веб-сайт. Я это знаю, потому что засёк время, когда сам выполнял нижеследующие действия, и весь процесс занял чуть меньше часа (я даже зарегистрировал новый домен и создал новый аккаунт на Github для чистоты эксперимента). Код этого сайта тоже можно посмотреть на Github.
1. Идёте на namecheap.com и регистрируете домен. Этот шаг только в том случае, если нужно собственное доменное имя.
2. Создаёте аккаунт Github и скачиваете Git, если это ещё не сделано.
3. Создаёте директорию для размещения веб-сайта и перемещатесь туда командой cd: это команды mkdir my-site && cd my-site. Все будущие команды предполагают, что вы внутри рабочей директории.
4. Делаем новый репозиторий Github для сайта под названием yourusername.github.io. Например, я зарегистрирован под именем smilli, так что мой репозиторий называется smilli.github.io.
5. В рабочей директории запускаем git init и git remote add origin github.com/username/username.github.io.git, где вместо ‘username’ указываем свой имя пользователя.
6. Создаём файл ‘index.html’ в папке с сайтом с HTML-кодом главной страницы. Здесь необязательно тратить много времени, он может быть весьма лаконичным.
<html>
<head>
<title>YOUR SITE TITLE</title>
<-- Add some style to your site, see http://getbootstrap.com for details -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>
<body>
<h1>YOUR SITE TITLE</h1>
<p>Your text blahblahbhalbha</p>
<p>Another paragraph! Maybe more text!</p>
</body>
</html>
7. Пишем в коде главной страницы любой текст. Изменения отображаются локально командой python -m SimpleHTTPServer 8000 и набором адреса localhost:8000 в браузере.
8. Теперь запускаем следующие команды:
git add .
git commit -m "Initial commit"
git push -u origin master
9. Идём на yourusername.github.io. Здесь вы должны увидеть свой сайт! Поздравляю, вы что-то опубликовали в онлайне.
10. Если хотите собственное доменное имя, создаёте файл ‘CNAME’ (всё прописными буквами). Туда добавляете одну строчку ‘'yourdomainname.com' (без http или www). См. подробности конфигурации CNAME здесь.
11. Как и раньше, отправляем все изменения на Github.
git add .
git commit -m "Add CNAME"
git push
12. Теперь авторизуетесь на namecheap.com и щёлкаете по доменному имени, которое нужно, в списке своих доменов. Список будет примерно таким:

После выбора домена, появится ссылка «All Host Records» в левой панели во вкладке «Host Management». Нажмите на неё. Теперь вы увидите настройки по умолчанию, которые Namecheap указал для вашего сайта.

Измените настройки следующим образом (заменив ‘username’ на своё имя пользователя, конечно).

13. После вступления в действие изменений в DNS вы сможете увидеть свой сайт на своём домене! Поздравляю. :)
кратко сайт на Github https://help.github.com/en/articles/about-supported-custom-domains https://htmlacademy.ru/blog/99-github-as-hosting https://ru.hexlet.io/courses/html/lessons/github/theory_unit
- Зарегистрируйтесь на https://github.com/, если еще не сделали этого.
- Создайте новый репозиторий с именем
username.github.io, где username — ваш ник на Github.
- Создайте новый файл. Когда репозиторий не пуст, то в верхнем правом углу есть кнопка Create New File, но сейчас, когда еще нет ни одного файла, создать первый можно по прямой ссылке https://github.com/username/username.github.io/new/master, где
username — ваш ник.
- Введите имя index.html и скопируйте туда содержание файла index.html, который у вас получился в предыдущем уроке.
- Нажмите кнопку "Commit new file".
- Повторите то же самое для файла style.css.
- Через несколько мгновений страница станет доступна по вашему адресу https://username.github.io
сайт на Node.js Как запустить простой статический сайт за пять ≈пятиминутных шагов при помощи Node.js и Express
Шаг 1. Установить движок Node.js в соответствии с инструкциями, имеющимися в вики для каждой из поддерживаемых операционных систем. (Для Windows достаточно скачать и запустить MSI-файл, для CentOS — воспользоваться системным менеджером пакетов, и так далее.)
Шаг 2. Создать пустой каталог и поместить в нём файл «site.js» следующего содержания:
Настройки staticSiteOptions можно переменить по собственному вкусу.
Шаг 3. В том же каталоге подать команду «npm install express», которая автоматически создаст подкаталог «node_modules» и установит туда Express, скачав из Интернета.
Шаг 4. В том же каталоге создать подкаталог «static» и поместить в нём файлы статического сайта. Этот подкаталог станет корнем сайта. Файлы с именами «index.html» будут использоваться как файлы-индексы. Иными словами, при ответе сервера на запрос с адресом, содержащим только имя некоторого каталога (будь то корень сайта или один из его подкаталогов), будет показан файл с именем «index.html» из указанного каталога (если есть).
Шаг 5. В том же каталоге подать команду «node site», которая запустит сервер. Убедившись в её работоспособности, обеспечить автозапуск этой команды в этом каталоге после каждой перезагрузки операционной системы. (Например, на CentOS 6.2 можно использовать upstart для этой цели.)
https://github.com/vercel/next.js https://github.com/visnup/npm-www https://github.com/ceejbot/npm-www https://github.com/ErikHumphrey/Next
работа с nodejs Установка Node.js с помощью NVM Шпаргалка по пакетному менеджеру NPM Автозапуск приложения Node.js на CentOS 6.2
конструкторы статических сайтов https://gohugo.io/ https://github.com/gohugoio/hugo https://jekyllrb.com/ https://github.com/jekyll/jekyll https://github.com/jekyll/jekyll-sitemap https://github.com/planetjekyll/awesome-jekyll-plugins https://guides.hexlet.io/jekyll/ Создаем блог используя Jekyll и GitHub Pages
https://glitch.com/ https://neocities.org/ (замена narod.ru) https://github.com/neocities https://app.netlify.com/drop https://pages.github.com/
https://john-doe.neocities.org/ (веб-сайт представляет собой один HTML - файл) https://j3s.sh/thought/my-website-is-one-binary.html однофайловый распространяемый веб-сервер https://github.com/lipanski/docker-static-website
https://docs.parseplatform.org/parse-server/guide/
разные CMS https://www.host-food.ru/faq/installation/
https://www.drupal.org/download https://www.drupal.org/project/drupal https://ru.wordpress.org/download/ https://downloads.joomla.org/ https://modx.com/download https://get.typo3.org/ https://www.php-fusion.co.uk/home.php https://www.django-cms.org/en/ https://plone.org/ https://www.opencart.com/index.php?route=cms/download https://magento.com/tech-resources/download https://www.prestashop.com/en/download https://www.bitrix24.ru/ https://contao.org/en/ https://strapi.io/ https://apostrophecms.com/ https://github.com/getgrav/grav
LJ https://github.com/dreamwidth/livejournal DW https://github.com/dreamwidth/dreamwidth
Как создать сайт с помощью ChatGPT (руководство 2025 г.)
установка установка LEMP
Веб-сервер на основе Nginx и PHP-FPM Оптимальная настройка Nginx Виртуальные хосты в Apache и Nginx
Установка стека LEMP в Ubuntu 18.04 https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-18-04 Настройка сервера Linux Nginx, PHP 7, MySQL (LEMP) с поддержкой сертификата Let’s Encrypt в Ubuntu Linux 18.04 Bionic https://www.digitalocean.com/community/tutorials/nginx-ubuntu-18-04-ru Руководство по настройке блога WordPress на nginx.
Drupal https://help.ubuntu.ru/wiki/drupal Перед началом использования создайте для Drupal базу данных с помощью клиента mysql: mysql -u root -p -e "CREATE DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;" Также желательно завести отдельного пользователя MySQL, который будет иметь доступ только к созданной базе: mysql -u root -p вводим там запросы:
MySQL: Полный список часто используемых и полезных команд посмотреть всех пользователей SELECT User, Host FROM mysql.user; SELECT User, Host, Password, password_expired FROM mysql.user; увидеть разрешения для пользователя SHOW GRANTS FOR 'test'@'localhost' отзыв всех разрешений REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'test'@'localhost' удалить пользователя test drop user 'test'@'localhost' SHOW DATABASES; удалить базу DROP DATABASE имя_базы_даных;
«Could not load MODX config file» /setup/index.php
http://создаю-сайты.рф/как-войти-на-сайт-в-качестве-администр/ https://2ip.ru/cms/ chrome Wappalyzer
разные фреймворки JavaScript подборка Установка Node.js с помощью NVM Шпаргалка по пакетному менеджеру NPM --------------------------------------------------------------------------------------- Python подборка Django подборка если покопаться, то можно сделать бесплатный сайт на django
Установка Django CMS в Ubuntu 16.04 64bit Ленивый деплой Django проекта UWSGI + NGINX (UBUNTU 20.04) How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 20.04 Запуск Django сайта на nginx + Gunicorn + SSL Настройка Debian, Nginx и Gunicorn для Django проекта
установка Django в virtualenv с помощью pip через proxy с pyenv
Pelican: установка и базовая настройка сайта Pelican. Расширенные настройки блога. --------------------------------------------------------------------------------------- PHP подборка https://www.yiiframework.com/ https://www.yiiframework.com/doc/guide/2.0/ru https://github.com/yiisoft/yii2/tree/master/docs/guide-ru centos docker yii
https://symfony.com/ https://laravel.com/ https://phalcon.io/ru-ru https://nette.org/en/ --------------------------------------------------------------------------------------- https://rubyonrails.org/ http://rusrails.ru/ https://ru.wikibooks.org/wiki/Ruby_on_Rails --------------------------------------------------------------------------------------- https://www.phoenixframework.org/ Начни изучать Elixir прямо сейчас! Перевод всей серии статей готов Разработка приложений на Elixir/Phoenix с помощью Docker --------------------------------------------------------------------------------------- http://zotonic.com/ --------------------------------------------------------------------------------------- Golang подборка Revel — высокопроизводительный веб-фреймворк на языке Go
Разработка Web-приложений и микросервисов на Go с Gin https://github.com/gin-gonic/gin
https://gobuffalo.io/ https://beego.me/
Как развернуть веб-приложение Go с помощью Docker и Nginx в Ubuntu 18.04
--------------------------------------------------------------------------------------- Java подборка https://spring.io/ http://javastudy.ru/frameworks/spring/ https://javaee.github.io/javaserverfaces-spec/ http://javastudy.ru/frameworks/jsf-2-0/ https://vaadin.com/ http://www.gwtproject.org/ https://grails.org/ --------------------------------------------------------------------------------------- подборка С/C++ https://www.gnu.org/software/cgicc/index.html https://github.com/drogonframework/drogon https://www.webtoolkit.eu/wt https://cutelyst.org/ Создание сайта с помощью C++ Сайт на C++ своими руками с помощью библиотеки cgicc Простой backend на C++: это возможно? Полноценный веб-сайт на C++ и немного диванной аналитики
всячина Создаём личный «Архив интернета» https://archiveweb.page/ ------------------------------------------------------------------------ https://www.adminer.org/ https://phpdocker.io/generator https://nginxconfig.io https://github.com/digitalocean/nginxconfig.io
https://ngrok.com/download
------------------------------------------------------------------------ https://www.selenium.dev/ https://www.cypress.io/ https://playwright.dev/ https://nightwatchjs.org/ https://www.npmjs.com/package/puppeteer JavaScript, Node, Puppeteer: автоматизация Chrome и веб-скрапинг ------------------------------------------------------------------------ Возрождение простых сайтов. Статика, 0kB JS, ничего лишнего ------------------------------------------------------------------------ Не ходи в Fediverse, там тебя ждут неприятности. — Ну как же туда не ходить? Они же ждут https://fediverse.party/ https://the-federation.info/ https://joinmastodon.org/ https://github.com/mastodon/mastodon https://hubzilla.org/ https://framagit.org/hubzilla/core https://www.gnusocial.rocks/ https://notabug.org/diogo/gnu-social ------------------------------------------------------------------------ Как взламывают сайты Как взламывают сайты (часть 2) ------------------------------------------------------------------------
хитрости Некоторые приёмы работы в Битрикс на SQL и BASH Как восстановить пароль администратора Битрикс Как сбросить пароль для пользователей Bitrix?
ссылки
https://github.com/ripienaar/free-for-dev
Как сделать простой веб-сайт за один час Как запустить простой статический сайт за пять ≈пятиминутных шагов при помощи Node.js и Express Создаем свой персональный сайт на Github GitHub как хостинг для сайтов Создаем свой блог на Github и Hugo http://webquant.ru/posts/pelican/
Самостоятельная настройка VDS / VPS Как начать участвовать в Open Source Работа с GitHub http://git-scm.com/book/ru/v1 http://hosting101.ru/more-providers.html
http://hldns.ru/ https://github.com/wavedocs/freedns/ Список бесплатных DNS-сервисов
Расшариваем веб-сайт на localhost в глобальную сеть интернет. 5 способов создать мгновенный легкий веб-сервер с помощью командной строки Linux uzverss Бесплатный django хостинг установка dokuwiki centos php nginx
|
Февраль 25, 2016
01:43 am - Python подборка, часть 1

Python подборка, часть 2 Python подборка видео
развернуть
Сайты
http://python.org/ http://python.su/ https://pypi.org http://pep8.ru/ http://pyston.org/ http://python-3.ru/ http://pythonworld.ru/ https://pythono.ru/ http://pythonicway.com/ https://python-scripts.com/ http://pythonz.net/ http://pynsk.ru/ http://djbook.ru/ http://vpython.org/ https://www.djangoproject.com/ http://wsgi.readthedocs.org/en/latest/ http://learning-python.com/ http://www.rmi.net/~lutz/ https://pythonpedia.com/ https://github.com/vinta/awesome-python https://sites.google.com/view/pypry/
Блоги
http://starship.python.net/crew/index.html http://pep8.ru/blog/ http://ru_python.livejournal.com https://vk.com/python_programing https://vk.com/python_progers https://vk.com/python_developers https://vk.com/python_3 https://vk.com/vk_python https://vk.com/django_framework https://vk.com/pythonic_way https://vk.com/club24847633 https://vk.com/club52104930 https://vk.com/iamdev/python https://vk.com/pynsk https://vk.com/tproger/python https://plus.google.com/communities/103393744324769547228 https://plus.google.com/communities/103624658452637344893 http://zelark.ru/blog/tags/python/ http://pythlife.blogspot.ru/ http://pythonblogg.blogspot.ru/ http://asvetlov.blogspot.ru/search/label/python http://koder-ua.blogspot.ru/ http://python4u.blogspot.de/ http://python-lab.blogspot.ru/ http://pythonr.blogspot.ru/search/label/python http://john16blog.blogspot.ru/search/label/python http://gorodovets.blogspot.ru/search/label/Python http://www.haikson.com/Postpart/programming/python/ http://chevalry.livejournal.com/tag/python http://mylinuxprog.blogspot.ru/search?q=python http://poliarush.com/tag/python http://0agr.ru/blog/tag/python/ http://www.odmin4eg.ru/tag/python/ http://www.8host.com/blog/category/python/ http://blog.e0ne.info/category/Python.aspx http://django-tutorial.blogspot.ru/ https://python.ivan-shamaev.ru/ https://proglib.io/
каналы https://t.me/ru_python https://t.me/python_beginners https://t.me/ru_python_beginners https://t.me/propython https://t.me/rudepython https://t.me/rupython https://t.me/pp_telegram
Статьи
Python на Хабре Учебник по языку программирования Python (хабраиндекс) Учим Python качественно Материалы продвинутого уровня по Питону Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» Полезные ресурсы для Python-разработчиков Python для чайников, где взять материалы? Лучшие проекты, в которых стоит поучаствовать, чтобы примкнуть к Open Source движению и развить свои навыки. Часть четвертая. Python ----------------------------------------------------------------------------------- Python: коллекции, часть 4/4: Все о выражениях-генераторах, генераторах списков, множеств и словарей ----------------------------------------------------------------------------------- Как перенести код Python 2 на Python 3 Python, xlsx с картинками, макросами, media-art, внедренными объектами Еще раз о многопоточности в одну строку
Python 3 - Введение в asyncio Примеры использования asyncio: HTTPServer?! Немного фактов о python asyncio Какая асинхронность должна была бы быть в Python Асинхронный python без головной боли Асинхронный python без головной боли (часть 2)
Как устроен GIL в Python GIL и его влияние на многопоточность Python Сложности сборки Python3 + Qt5 приложений под Windows
Многопоточность Python без GIL https://github.com/colesbury/nogil https://hub.docker.com/r/colesbury/python-nogil ----------------------------------------------------------------------------------- 19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 1. Введение 19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 2. Блокирующие сокеты и многозадачность 19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 3. Первый подход к асинхронности 19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 4. Сопрограммы в Python 19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 5. Асинхронное программирование ----------------------------------------------------------------------------------- Ключевые навыки Python-программиста 41 вопрос о работе со строками в Python
Пишем красивый идиоматический Python Как писать питонический код: три рекомендации и три книги Погружение в пучину интерпретатора Python. Ч1 Python(x, y) — набор библиотек и программного обеспечения для численных расчетов, анализа и визуализации данных на основе Python PyBrain работаем с нейронными сетями на Python Пользовательские атрибуты в Python Python: вещи, которых вы могли не знать Непрерывное тестирование питонопроекта Руководство по магическим методам в Питоне Исчерпывающее руководство по множествам в Python Использование регулярных выражений в Python для новичков Регулярки (regex) — основы для решения кейсов, про которые не пишут в статьях про основы Несколько продвинутых приемов языка Python 17 лучших однострочников на Python Решил 50 задач и ответил на вопрос — Python или JavaScript?
----------------------------------------------------------------------------------- Внутри виртуальной машины Python. Часть 1 Внутри виртуальной машины Python. Часть 2 Как устроен парсер Python, и как втрое уменьшить потребление им памяти ----------------------------------------------------------------------------------- Введение в функциональное программирование на Python Руководство по интроспекции на Python Классы, методы Python 3. Примеры ООП (объектно ориентированное программирование) Программирование на Python. Часть 7: Специальные методы и атрибуты классов http://www.ibm.com/search/csass/search/?q=python& Понимаем декораторы в Python'e, шаг за шагом. Шаг 1 Понимаем декораторы в Python'e, шаг за шагом. Шаг 2 Python: декорируем декораторы. Снова Путь к пониманию декораторов в Python Разбираемся с декораторами в Python Упущенные из виду факты о переменных и объектах в Python: все дело в указателях
----------------------------------------------------------------------------------- 22 лучших репозитория на GitHub для новичков, изучающих Python Лучшие библиотеки Python 2024 года Топ-5 лучших библиотек Python с графическим интерфейсом Python + Pyside2 или просто «Калькулятор» Простой GUI калькулятор на Python #1. Создание дизайна приложения Кроссплатформенный переключатель прокси-сервера на Python + Qt Быстрый, мощный интерфейс на Python Старый новый pywinauto: автоматизация Windows GUI на Python на примере install/uninstall Как Numba ускорит ваш код на Python в 13 раз ----------------------------------------------------------------------------------- Создание .exe файла для авторизации и взаимодействия с VK API при помощи Python cx_Freeze + virtualenv = баги и зигзаги Создание запускаемых файлов из скриптов на языке Python с помощью cx_Freeze https://github.com/brentvollebregt/auto-py-to-exe https://pypi.org/project/auto-py-to-exe/ как сделать единый файл exe из скрипта python используя py2exe и PyInstaller Сборка испольняемого файла из скриптов Python Змеиная анатомия. Вскрываем и потрошим PyInstaller
Как ускорить Python с помощью C-расширений ВСТРАИВАНИЕ PYTHON В C/C++: ПЕРВАЯ ЧАСТЬ
Как опубликовать ваш пакет в PyPI используя PyCharm Об одном способе защиты исходников Python-программы Как обезопасить исходники своего python-приложения Исследование защиты Wing IDE Сервис для системного администратора. Часть 1 Прямой доступ к диску из python От Python скрипта до WSGI приложения Некогда объяснять, тебе срочно нужен фронтенд на Brython Змеиный фрукт или фруктовый Питон? ----------------------------------------------------------------------------------- Практическое руководство по разработке бэкенд-сервиса на Python DLL & Python Пишем кросс-платформенную библиотеку на Python Как разрабатывать на Python под Android Полноценное Python приложение на Android Android и Python. Мобильная разработка. Python для Android 10 приложений для изучения Python на Android-устройствах Вирус на Python: Изучаем возможности полноценного злокодинга на интерпретируемом языке Поддержка токенов PKCS#11 с ГОСТ-криптографией в Python. Часть I ----------------------------------------------------------------------------------- Змеиный укус. Python-фреймворк Viper для анализа малвари Защита от "дурака" в программах на языке Python
Установка питона и пакетов Интересные приёмы для Python Python: скрипт инкрементального или полного бекапа файлов
Восстановление (импутация) данных с помощью Python 4х повышение разрешения изображения с использованием ESRGAN Обработка изображений с помощью библиотеки Python Pillow ----------------------------------------------------------------------------------- Собираем питоновский пакет и выкладываем на pypi Пишем обертку над API, делаем из нее PIP-пакет, подключаем тестирование от Travis CI и смотрим на лицензии открытого ПО Использование регулярных выражений в Python для новичков 5 способов использования подчеркивания (_) в Python 6 рекомендаций по определению метода __init__ Что такое *args и **kwargs в Python? Магия __slots__ Специальный атрибут __slots__ класса Python. Python: модуль argparse – опции командной строки в примерах Гайд по магическим методам в Python
Синтез речи под Linux на Python + RHVoice Как с помощью Python создать приложение для расшифровки речи в реальном времени ----------------------------------------------------------------------------------- Автоматизация ip-сети с помощью подручных инструментов (Python) Python для сетевых инженеров: начало пути Автоматизация задач инженера/администратора при помощи Python Составляем DNS-запрос вручную Руководство по модулю клавиатуры Python
HTML парсер на Python Парсинг ресурсов при помощи Python Работа с ssh в Python Python scirpt на службе сетевого администратора telnetlib — Telnet client Скачивание музыки из VK, используя VK api и Python3 Обучаемый Telegram чат-бот с ИИ в 30 строчек кода на Python Парсим мемы в питоне: как обойти серверную блокировку Скачивание любого сайта с помощью Python себе на компьютер https://github.com/rajatomar788/pywebcopy/ https://uzverss.livejournal.com/116630.html Как всегда знать свой адрес в сети и не платить за белый IP Web3.0 на Python, часть 1: основы ----------------------------------------------------------------------------------- Использование Sublime Text Editor 2 в качестве редактора текста Python 3.x Python Developer Tools от Microsoft. Начало работы Особенности Jupyter Notebook, о которых вы (может быть) не слышали Как работать с PyScript — фреймворком для фронтенда на Python Советы, которые могут спасти Вас от ужасов PyYAML ----------------------------------------------------------------------------------- Возьми Python с собой Pelican. Установка блога. консоль python в роли командной строки ----------------------------------------------------------------------------------- СРАВНЕНИЕ ВЕБ-СЕРВЕРОВ ПРИЛОЖЕНИЙ НА ОСНОВЕ PYTHON DHCP+Mysql сервер на Python PYTHON TO JS TRANSLATION
WSGI - протокол связи Web-сервера с Python приложением Документация Основы Веб-программирования WSGI (pep-333) Развертывание приложения Python WSGI с помощью uWSGI+NGINX Настройка uWSGI и NGINX для обслуживания приложений Python в Ubuntu 14.04 веб-интерфейс для python в ubuntu используя nginx и uwsgi Гайд по работе Docker в Python – от установки до сложных примеров ----------------------------------------------------------------------------------- Последовательный порт. Да, поможет нам Python! Bubot — очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации CPython internals: A ten-hour codewalk through the Python interpreter source code Транскомпилируемые языки: проекты конвертации код-в-код Полезные советы по Python, которых вы ещё не встречали перевод статьи "Bookmark this if you are new to Python (especially if you self-learn Python)" Как подружить PyTorch и C++. Используем TorchScript Python: как уменьшить расход памяти вдвое, добавив всего одну строчку кода? Как сделать «двойной break», то есть выйти из вложенного цикла, в Python? Отладка в python через консоль Удобный отладчик для Python/Django проектов Pudb Введение в инструмент отладки Python PuDB Python. Отладка при помощи pdb Отладка Python/Django при помощи PuDB Пишем инструменты командной строки на Python с помощью Click
Как спасти потерянный исходный код на Python, если он все еще не выгружен из памяти Oh no! This package is Python 2 only (что делать если библиотека только на python 2) На чем программировать AI: Theano vs TensorFlow vs Scikit-learn
Чему я научился на своём горьком опыте (за 30 лет в разработке ПО) Обширный обзор собеседований по Python. Советы и подсказки
Книги
http://www.proklondike.com/books/python.html http://padabum.net/search.php?tag=Python http://scanlibs.com/python/ http://bookwebmaster.narod.ru/python.html I am a DEVELOPER Книги по Python http://pyqtforlinguists.appspot.com/book.pdf Построение систем машинного обучения на языке Python Основы программирования на языке Python С. К. Буйначев, Н. Ю. Боклаг 2014 Введение в программирование на Python (2-е изд.) Северенс Ч. 2016 Язык программирования Python (2-е изд.) Сузи Р.А. 2016 Простой Python. Современный стиль программирования Билл Любанович 2016 Программирование на Python для начинающих Майк МакГрат 2015 ----------------------------------------------------------------------------------- Владимир Дронов, Николай Прохоренок Python 3 и PyQt 5. Разработка приложений (2016) Владимир Дронов, Николай Прохоренок Python 3 и PyQt 5. Разработка приложений (2016) Н. Прохоренок, В. Дронов»Python 3 и PyQt 6 ----------------------------------------------------------------------------------- Скотт Мейерс Секреты Python. 59 рекомендаций по написанию эффективного кода Основы Data Science и Big Data. Python и наука о данных Дэви Силен, Арно Мейсман 2017 Райан Митчелл Скрапинг веб-сайтов с помощью Python 2016 Python. Создание приложений (2016) Уэсли Дж. Чан Разработка геоприложений на языке Python Эрик Вестра 2016 Учебник Python 3: быстрый старт Федоров Д. Ю. 2016 ----------------------------------------------------------------------------------- Д. Златопольский «Основы программирования на языке Python» 2017 Д. Златопольский «Основы программирования на языке Python» 2017 Python для детей и родителей Брайсон Пэйн 2017 A Byte of Python (Russian) Версия 2.01 ----------------------------------------------------------------------------------- Программирование на языке Python. Учебный курс (2017) Роберт Седжвик, Кевин Уэйн, Роберт Дондеро Автостопом по Python (2017) Кеннет Рейтц, Таня Шлюссер Автостопом по Python (2017) Кеннет Рейтц, Таня Шлюссер Секреты Python. 59 рекомендаций по написанию эффективного кода (2016) Бретт Слаткин ----------------------------------------------------------------------------------- Дмитрий Мусин "Самоучитель Python" Учебное пособие для вузов Чернышев, С. А. «Основы программирования на Python» 2022 Кольцов Д. М. «Python. Полное руководство» 2022 Кольцов Д. М. «Python. Полное руководство» 2022 Кольцов Д., Дубовик Е. «Справочник Python» 2021 Кори Альтхофф Сам себе программист. Как научиться программировать и устроиться в Ebay? 2018 Кори Альтхофф Computer Science для программиста-самоучки 2023 Основы Python. Научитесь думать как программист [2021] Аллен Б. Дауни Изучаем Python. Программирование игр, визуализация данных, веб-приложения Эрик Мэтиз 2017 Изучаем Python [2020] Эрик Мэтиз Учимся программировать с примерами на Python [2020] Эрик Фримен Учимся программировать с примерами на Python [2020] Эрик Фримен Начинаем программировать на Python (5-е издание) Тони Гэддис Тони Гэддис - Начинаем программировать на Python (5-е изд) - 2022 Алексей Горожанов "PyQT для лингвистов" Построение систем машинноrо обучения на языке Python Программируем коллективный разум ----------------------------------------------------------------------------------- Автоматизация повседневных задач на Python Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих Эл Свейгарт 2016 Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих Эл Свейгарт 2017 Свейгарт Эл «Автоматизация рутинных задач с помощью Python» 2021 Анил Агравал, Сародж Агравал «Автоматизация предприятия с помощью Python» 2022 Ной Гифт, Кеннеди Берман, Альфредо Деза, Григ Георгиу Python и DevOps: Ключ к автоматизации Linux. 2022 Ленц М. Python: Непрерывная интеграция и доставка 2020 ----------------------------------------------------------------------------------- Ной Гифт, Кеннеди Берман, Альфредо Деза, Григ Георгиу «Python и DevOps» 2022
Python 3 для сетевых инженеров Чоу Эрик «Python для сетевых инженеров» 2023 Полное руководство работы с сетями на Python Эрик Чоу ----------------------------------------------------------------------------------- Джастин Зейтц, Тим Арнольд «Black Hat Python» 2022 Джастин Зейтц, Тим Арнольд «Black Hat Python» 2022 Воган Ли «Python для хакеров» 2023 Сборник статей «Python глазами хакера» БХВ-Петербург, 2022 ----------------------------------------------------------------------------------- Бизли Дэвид «Python. Исчерпывающее руководство» 2023 Непрактичный Python: занимательные проекты для тех, кто хочет поумнеть. Ли Воган 2021 Свейгарт Эл «Python. Чистый код для продолжающих» 2022 Бейдер Д. Чистый Python. Тонкости программирования для профи. 2018 Computer Science для программиста-самоучки. Все, что нужно знать о структурах данных и алгоритмах. 2023. Хиллард Дейн Секреты Python Pro. 2021. Такфилд Брэдфорд «Алгоритмы неформально» 2022 Имран Ахмад «40 алгоритмов на Python» 2023 год Чистый Python. Тонкости программирования для профи Бейдер Дэн 2018 Кристиан Майер «Однострочники Python» 2022 Шоу Энтони «Внутри CPython» 2023
Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq http://www.libkruz.com/1-programming.html http://24videokurs.ru/tag/python/ https://vk.com/itcookies/book http://tparser.org/Python ftp Python1
https://codelibs.ru/category/c/ https://codernet.ru/books/python/
поиск по торрентам https://searchtor.to/ https://search.exfreedomist.com/
Переводы
https://digitology.tech/docs/python_3/index.html https://github.com/sfcl/python_doc_3.8.3 https://aliev.github.io/runestone/ https://github.com/aliev/runestone http://juster.fvds.ru/learnwithpython/ru2e/index.html http://wombat.org.ua/AByteOfPython/ http://forum.ubuntu.ru/index.php?topic=218329.0 http://snakeproject.ru/python/ver1.3.htm https://lancelote.gitbooks.io/intermediate-python/content/ https://github.com/borisuvarov/python-cookbook-ru Gray Hat Python (Перевод: Prosper-H, M.Chumichev)
Подборки
Полезные ресурсы для Python-разработчиков https://github.com/TheKnightsWhoSayNi/info/wiki/Hat https://vk.com/page-54530371_48786262 https://vk.com/wall-54530371_1075 http://www.pvsm.ru/cat/python http://www.py-my.ru/#tags=python http://python.rabota-ka.ru/search/label/#python http://ideafix.name/?cat=18 http://zetblog.ru/?s=python http://rtfm.co.ua/tag/python/ http://rtfm.co.ua/category/python/ https://azure.microsoft.com/ru-ru/documentation/articles/?platform=python http://cyberleninka.ru/search?q=python http://jenyay.net/Programming/Python http://intepra.ru/wiki/doku.php?id=about_python http://tparser.org/Python http://jenyay.net/Programming/Python https://tproger.ru/digest/data-science-python/ http://tproger.ru/articles/free-programming-books/#python http://tproger.ru/tag/python/ http://tproger.ru/?s=Python https://tproger.ru/digest/python-articles/ https://xakep.ru/category/coding/python/ http://robocraft.ru/tag/python https://russianpenguin.ru/tag/python/ http://ideafix.name/?cat=18 http://kostikvento.ru/cython/docs/ http://snakeproject.ru/rubric/rubric.php?id=5 http://djangosimple.blogspot.ru/search/label/python http://pygo.ru/ http://itscreen.tk http://www.slideshare.net/search/slideshow?searchfrom=header&q=python&ud=any&ft=all&lang=ru&sort= https://www.8host.com/blog/category/python/ https://uproger.com/category/post/python/ https://habr.com/ru/hub/python/all/
Видео
http://uzverss.livejournal.com/tag/python
|
12:23 am - Python подборка, часть 2

Python подборка, часть 1 Python подборка видео
развернуть
Новости
http://pythondigest.ru/ http://pygo.ru/
Игры
http://www.checkio.org/ http://codecombat.com/ https://www.codingame.com/start http://www.pythonchallenge.com/ https://empireofcode.com/ http://www.cyber-dojo.org/setup/show_exercises/?language=Python&test=py.test http://www.codewars.com/?language=python https://universe.openai.com/ https://github.com/openai/universe
Задачи, тренировка
http://www.codewars.com/?language=python https://www.hackerrank.com/domains/python/py-introduction https://proghub.ru/t/python-basic
Курсы
http://it-students.net/content/course/python https://compscicenter.ru/courses/python/ https://compscicenter.ru/courses/python/2015-autumn/ http://uneex.ru/LecturesCMC/PythonIntro2014 http://uneex.ru/LecturesCMC/PythonDevelopment2015 Дистанционная подготовка / ► Программирование на python http://pythonworld.ru/kursy/free.html https://www.redhat.com/en/services/training/ad141-red-hat-training-presents-introduction-to-python-programming https://github.com/RedHatTraining/AD141-apps ----------------------------------------------------------------------------------- stepik Добрый, добрый Python - обучающий курс от Сергея Балакирева stepik Инди-курс программирования на Python stepic Программирование на Python stepik Python: основы и применение stepik "Поколение Python": курс для продвинутых ----------------------------------------------------------------------------------- https://xakep.shop/pythonivan http://master-develop.com/programmirovaniya-na-python/ DEV-PYTHON. Прикладное программирование на языке Python http://itmo-it.org/python-developer/ http://www.proglive.ru/courses/python https://geekbrains.ru/professions/python_developer geekbrains Python. Быстрый старт http://pro365.net/ http://lessons2.ru/python-for-testers/ http://foxford.ru/wiki/informatika/o-yazyke-python http://www.specialist.ru/dictionary/definition/python https://www.coursera.org/specializations/python intuit Введение в программирование на Python intuit Язык программирования Python Роман Сузи Программирование на языке Python для сбора и анализа данных https://github.com/ischurov/pythonhse https://github.com/Yorko/python_intro http://itvdn.com/ru/shares/free-python-course Младшая лига PyShop https://itproger.com/course/python http://uneex.ru/Python https://mastergroosha.github.io/telegram-tutorial/ Андрей Созыкин Онлайн курс "Программирование глубоких нейронных сетей на Python" Примеры программ ТОП-30 бесплатных курсов обучения по Python 2022 года Топ бесплатных курсов по Python в 2024 году https://katalog-kursov.ru/courses/razrabotka_python/ skillfactory Специалист по нейронным сетям
https://skillfactory.ru/python-developer https://www.udemy.com/ru/topic/python/
Wiki
https://ru.wikibooks.org/wiki/Python https://ru.wikiversity.org/wiki/Программирование_и_научные_вычисления_на_языке_Python http://xgu.ru/wiki/Python_для_сетевых_инженеров https://ru.wikiversity.org/wiki/Курс_по_библиотеке_Tkinter_языка_Python http://younglinux.info/tkinter/tkinter.php http://younglinux.info/book/export/html/48 http://www.russianlutheran.org/python/life/life.htm http://python-lab.ru/ http://www.wikiwand.com/ru/Python http://www.tutorialspoint.com/python/index.htm http://m3.bars-open.ru/stories/move-to-python3.html
Шпоры
http://pythonworld.ru/uploads/mementopython3-russian.pdf http://pythonworld.ru/uploads/python-error.png http://pythonworld.ru/osnovy/programma-ne-raboaet.html https://hsto.org/files/a98/e04/74c/a98e0474c2534e138a265d3b9577caab.png https://psv4.userapi.com/c816129/u183791845/docs/f480a5b1ace9/python_cours_mementopython3-english.pdf Инструменты Python: лучшая шпаргалка для начинающих http://python.cx/blog/article/PyPi_pip_python http://overapi.com/python/ http://iakovlev.org/index.html?p=5791 Руководство по магическим методам в Питоне http://www.michurin.net/tools/python-methods.html http://ps.readthedocs.io/ru/latest/index.html http://overapi.com/python https://python.libhunt.com/ https://cheatsheets.zip/python
стиль написания кода http://pep8.ru/doc/pep8/ http://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html https://habr.com/ru/post/180509/ --------------------------------------------------------------------------- напоминание о читабельном коде $ pip3 install pep8 $ pep8 optparse.py $ pip3 install autopep8 $ autopep8 --in-place optparse.py ---------------------------------------------------------------------------
примеры проверка скорости интернета в консоли
Самоучители
http://pythonworld.ru/samouchitel-python http://pythonworld.ru/uploads/pythonworldru.pdf http://pythontutor.ru/ https://docs-python.ru/ https://pavel-karateev.gitbook.io/intermediate-python/ http://python-rutour.rhcloud.com/ http://learnxinyminutes.com/docs/ru-ru/python-ru/ http://programarcadegames.com/index.php?lang=ru http://juster.fvds.ru/learnwithpython/ru2e/index.html http://jjc.freeshell.org/easytut/Easytut_Russian/ http://progras.ru/uchebnik-programmirovaniya-programmirovanie-eto-interesno/ http://theor.mephi.ru/wiki/index.php?title=Python http://python-lab.ru/index.html http://pythonlearn.ru/ https://codechick.io/tutorials/python/ http://www.uchi-it.ru/9/11/soder.html http://www.inp.nsk.su/~grozin/python/ http://ilnurgi1.ru/docs/python/index.html http://younglinux.info/python.php http://pythoner.name/ http://snakeproject.ru/python/ver1.3.htm https://snakify.org/ https://devpractice.ru/python-lessons/ http://espressocode.top/python/ Язык программирования Python — подробно для начинающих Язык программирования Python за 10 минут Основы Python Хендбук по Python Яндекс Образование Руководство по языку программирования Python Примерный план изучения python по направлениям
Jupyter Notebook для начинающих: учебник
PyQt PyQt6 — полное руководство для новичков PyQt6 — полное руководство для новичков. Продолжение PyQt5 для начинающих Сложности сборки Python3 + Qt5 приложений под Windows Простой GUI калькулятор на Python #1. Создание дизайна приложения Кроссплатформенный переключатель прокси-сервера на Python + Qt Программирование на Python с использованием PyQt4
Flask https://ru.wikibooks.org/wiki/Flask Мега-Учебник Flask, Часть 1: Привет, Мир Мега-Учебник Flask Глава 1: Привет, мир! ( издание 2018 ) http://flask-russian-docs.readthedocs.io/ru/latest/
Работа Zope 3 шаг за шагом Документация Основы Веб-программирования Python Пособие по MySQL на Pythonl Python, осень 2015: Классы 1 https://codeby.net/threads/powershell-python-katalog-statej.65016/ Заметки на тему Python
Реальные примеры приложений на Python и PyQT: от косынки до веб-браузера
Алгоритмы https://github.com/TheAlgorithms/Python/tree/master
Разное (фреймворки, косвенно связанное с python и тд.)
http://cython.org/ http://www.celeryproject.org/ http://nuitka.net https://blog.pyston.org/ https://github.com/numba/numba https://plone.org/ http://www.zope.org/ http://flask.pocoo.org/ https://pyscript.net/ https://github.com/pyscript/pyscript/ http://pythonpaste.org/ http://vpython.org/ http://www.wxpython.org/ http://www.pylonsproject.org/ http://bottlepy.org/docs/dev/index.html http://urwid.org/ http://russianlutheran.org/python/nardo/nardo.html http://www.devdungeon.com/content/gui-programming-python#menu http://orelsokolov.blogspot.ru/2012/11/tk-tutorial-rus.html http://tclstudy.narod.ru/ http://minix3.ru/docs/tcl.pdf http://www.opennet.ru/docs/RUS/tcltk/tk.html Реализация графического интерфейса библиотеки Python Typer для приложений CLI. https://www.pysimplegui.org/en/latest/ Ipython notebook. Часть I — установка в Ubuntu 12.04 и запуск. Ipython notebook. Часть II — пример работы http://flask-russian-docs.readthedocs.org/ru/latest/ http://wiki.python.su/Документации/ВведениеВСредуPyQt4 http://wiki.python.su/Документации/SQLAlchemy https://support.google.com/a/answer/91077?hl=ru https://cloud.google.com/appengine/ http://turbogears.org/ http://doc.sagemath.org/html/ru/tutorial/index.html http://wiki.python.su/Документации/Bluebream https://wiki.python.org/moin/boost.python https://code.google.com/archive/p/unpyc3/ http://pyjs.org/ http://pypyjs.org/ https://github.com/PythonJS https://github.com/getpelican/pelican http://www.espruino.com/ https://pypi.python.org/pypi/RPi.GPIO https://github.com/pyserial/pyserial http://micropython.org/ http://www.skulpt.org/ http://www.numpy.org/ https://github.com/chriskiehl/Gooey https://kivy.org/ https://github.com/quora/asynq https://pypi.python.org/pypi/lys http://docs.grablib.org/ru/latest/ https://html5lib.readthedocs.io/en/latest/ https://github.com/google/python-fire http://www.paramiko.org/ https://github.com/eliangcs/http-prompt https://github.com/dbcli/mycli https://github.com/pallets/click https://github.com/jkbrzt/httpie https://github.com/kennethreitz/pipenv https://github.com/mitsuhiko/pipsi https://github.com/lk-geimfari/expynent https://pypi.python.org/pypi/you-get https://pypi.python.org/pypi/wget https://pypi.python.org/pypi/pyrasite/ https://pypi.python.org/pypi/uncompyle6 https://pypi.python.org/pypi/xonsh https://pypi.python.org/pypi/sh https://pexpect.readthedocs.io/ https://voc.readthedocs.io/en/latest/
https://pypi.org/project/keyboard/
uzverss Raspberry PI, Arduino, Python
django https://www.djangoproject.com/ http://uzverss.livejournal.com/67272.html
Вопросы, ответы, решения
http://python.su/forum/ http://www.cyberforum.ru/python/ http://vresheno.ru/tag/29 http://pytalk.ru/forum/python/ http://forum.vingrad.ru/forum/python-forum.html http://pythonworld.ru/osnovy/faq.html https://ru.stackoverflow.com/questions/tagged/python http://www.stofl-ru.com/tags/python https://toster.ru/tag/python/info https://forum.antichat.ru/search/5995441/?q=Python&o=relevance https://codeby.net/forum/forums/python.136/ http://www.govnokod.ru/python https://github.com/wasmerio/Python-Scripts
привести код в порядок python3 -m pip install flake8 flake8 myscript.py # проверить как и где именно нарушается стиль
python3 -m pip install black black --check myscript.py # проверить будет ли black изменять файл black --diff myscript.py # показать изменения black myscript.py # отформатировать
Посмотреть исходный код
https://github.com/python/cpython https://hg.python.org/ http://nullege.com/ http://www.programcreek.com/python/ http://pastebin.com/ https://searchcode.com/
Консоль
https://www.pythonanywhere.com/ https://repl.it/ https://try.jupyter.org/ http://www.codeskulptor.org/ http://pythonfiddle.com/ https://ideone.com/ https://koding.com/ http://codepad.org/ https://trycode.pw/ http://ideone.com/ http://melpon.org/wandbox https://repl.it/languages/python3 http://live.sympy.org/ http://rextester.com/l/python3_online_compiler http://www.brython.info/tests/console.html http://pythontutor.com/visualize.html http://www.learnpython.org/ http://www.tutorialspoint.com/execute_python3_online.php https://www.tutorialspoint.com/codingground.htm http://www.skulpt.org https://github.com/selectel/pyte https://github.com/eliangcs/http-prompt http://http-prompt.com/ https://micropython.org/unicorn/ http://www.skulpt.org/
https://httpie.org/
http://www.tutorialspoint.com/codingground.htm http://www.pythontutor.com/
uzverss консоль python в роли командной строки
Программное обеспечение
https://www.python.org/downloads/ https://github.com/python/cpython https://pypi.python.org/pypi https://pypi.org https://pythonwheels.com/ https://store.docker.com/images/python https://github.com/dropbox/pyston http://www.activestate.com/activepython http://portablepython.com/ http://python-xy.github.io/ https://www.continuum.io/downloads http://www.lfd.uci.edu/~gohlke/pythonlibs/ http://winpython.github.io/ https://code.google.com/p/pythonxy/ http://www.riverbankcomputing.com/news http://wiki.qt.io/PySide
https://github.com/colesbury/nogil https://hub.docker.com/r/colesbury/python-nogil
https://ipython.org/ http://xon.sh/ https://amoffat.github.io/sh/ https://github.com/selectel/pyte https://github.com/eliangcs/http-prompt http://bpython-interpreter.org/ https://github.com/jonathanslenders/ptpython https://github.com/jonathanslenders/pymux/ https://github.com/jonathanslenders/python-prompt-toolkit
http://ipython.org/notebook.html http://jupyter.org/ https://wingware.com/ https://netbeans.org/ http://nbpython.org/ http://komodoide.com/ http://www.ninja-ide.org/ http://www.aptana.com/ https://www.jetbrains.com/pycharm/ http://www.pydev.org/ http://eric-ide.python-projects.org/ https://github.com/spyder-ide/spyder (sudo apt-get install spyder3) http://www.sublimetext.com/3 http://www.iep-project.org/ http://drpython.sourceforge.net/ http://satsky.spb.ru/codimension/ http://sourceforge.net/projects/pyscripter/ http://sourceforge.net/projects/boa-constructor/ http://sourceforge.net/projects/pycrust/ http://monkeystudio.org/ (sudo apt-get install monkeystudio) http://dashingsoft.com/wp/?page_id=180 http://idlex.sourceforge.net/ http://griffon.lasotel.fr/ https://code.visualstudio.com/ https://marketplace.visualstudio.com/items?itemName=ms-python.python
https://github.com/axcheron/pydasm
Плагины для хрома
Python Shell https://chrome.google.com/webstore/detail/python-shell/diebclfbkfamdacginejnaookipodhng
Python https://chrome.google.com/webstore/detail/python/nodpmmidbgeganfponihbgmfcoiibffi
Python Fiddle https://chrome.google.com/webstore/detail/python-fiddle/imldfcloildiapnfjoocfpdmoajnjelf
Python Editor v5 beta https://chrome.google.com/webstore/detail/python-editor-v5-beta/lldlpeacadpdfaoekhaiphamkndjghgo
Codeanywhere https://chrome.google.com/webstore/detail/codeanywhere/jdofbmaiblhheoneemdjccjeeihbiabl
https://github.com/ohyicong/decrypt-chrome-passwords
ПО для Android
Изображения
https://www.bhmpics.com/python-wallpaper.html https://xakep.ru/wp-content/uploads/2018/07/177015/Python.jpg https://pbs.twimg.com/media/Bv10LFJCcAAjA64.jpg:large https://web.archive.org/web/20190131003746/https://thesoftwarebucket.appspot.com/static/img/portfolio/python.png https://web.archive.org/web/20180318003938/https://www.directed.com.au/wp-content/uploads/2013/09/Python-Logo.png http://img07.deviantart.net/3115/i/2013/303/6/a/wallpaper_python_programming_by_artgh-d6sf9dw.jpg http://orig03.deviantart.net/d6cb/f/2012/292/e/8/wallpaper_python_tierra_by_sapphiregd-d5i9tr3.jpg http://sookyungkim.net/wp-content/uploads/2013/09/python_logo2.png http://images6.fanpop.com/image/photos/35100000/Python-programming-35141649-1680-1050.jpg http://www.cambiadeso.es/wp-content/uploads/2011/04/python-.png https://web.archive.org/web/20160904081832/https://groklearning-cdn.com/static/images/badges/python-for-beginners@2x.png http://a4.mzstatic.com/us/r1000/104/Purple/v4/ae/79/58/ae795815-30ab-4492-4d2b-ddbe2c2e8e00/mzl.gmodzffv.png https://lozingletechblog.files.wordpress.com/2014/03/lozingle_10032014.jpg http://i.imgur.com/kHqKP.png https://s1.hostingkartinok.com/uploads/images/2024/07/45c2daf693a15c176fdf224956af9504.png http://3.bp.blogspot.com/-CJPVGWMheg0/UZv0c6VvObI/AAAAAAAAAEY/aUL20gL7JIk/s1600/python-programming.jpg http://proft.me/static/img/python/python-run.gif https://web.archive.org/web/20150429042220/https://upload.wikimedia.org/wikipedia/ru/2/25/PythonProgLogo.png https://web.archive.org/web/20160417011832/http://www.victorperez.co.uk/images/screencapture_pythonHOME.png
Полезное, не связанное с PL Python
Книги http://www.mccme.ru/free-books/ МЦНМО http://ilib.mccme.ru/ золотой фонд популярной физико-математической литературы http://e-maxx.ru/bookz/ библиотека
Английский http://uzverss.livejournal.com/70895.html
Алгоритмы http://e-maxx.ru/algo/ Алгоритмы Подборка книг по Алгоритмам Алгоритмические трюки для программистов(второе издание)Генри Уоррен 2014 Знай сложности алгоритмов ------------------------------------------------------------------------ Volodya Mozhenkov алгоритмы https://www.youtube.com/playlist?list=PLY7PmJJFH5nSkAteyHnYQzi0FY4JniexT Roman Brovko Введение в алгоритмы https://www.youtube.com/playlist?list=PLwwk4BHih4fjIT5cT4i1s93b99aJScUGB ------------------------------------------------------------------------ http://tproger.ru/translations/sorting-for-beginners/ Алгоритмы и структуры данных https://ru.wikibooks.org/wiki/Реализации_алгоритмов
Задачи http://eax.me/programming-language-learning/
Основы Код. Тайный язык информатики Чарльз Петцольд 2001 http://javarush.ru/cs50.html Гарвардский курс CS50 («Основы программирования и компьютерных наук») https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5
ООП CMTV [Грани Hi-Tech] Изучение программирования. Суть ООП https://www.youtube.com/playlist?list=PLDywto_IU4_5UdZeKaoe-JWSl9LoaWmH9 Yellow-Duck.net Основы основ программирования https://www.youtube.com/playlist?list=PL6LDsbZOeyrwLLZYsBMT6zVS_0jqIf3E6 Yellow-Duck.net Основы объектно-ориентированного програмирования https://www.youtube.com/playlist?list=PL6LDsbZOeyrx462VmH18qS0a9Dw9LwpSu LessonFirst Объектно-ориентированное программирование [завершен] https://www.youtube.com/playlist?list=PLi3gxGWPyGGQvfcZZr04KToj3beWtOz6o
Тестирование ПО https://vk.com/wall-79831840_4507 Тестирование ПО https://www.youtube.com/playlist?list=PLrCZzMib1e9pDKLsabJYuODdVJrHYc4Jd http://svyatoslav.biz/software_testing_book/
Репозиторий публичных API https://github.com/public-apis/public-apis
Си/Си++ https://uzverss.livejournal.com/113036.html
SQL https://uzverss.livejournal.com/116184.html
Assembler https://uzverss.livejournal.com/89062.html
JavaScript http://uzverss.livejournal.com/62394.html
PHP http://uzverss.livejournal.com/76110.html
Java https://uzverss.livejournal.com/103312.html
Erlang Elixir https://www.erlang.org/ https://elixir-lang.org/ https://www.phoenixframework.org/ «Введение в Elixir» — первая книга по Эликсиру на русском Начни изучать Elixir прямо сейчас! Перевод всей серии статей готов Разработка приложений на Elixir/Phoenix с помощью Docker
Прочие языки 93 видео-лекции по Scala ------------------------------------------------------------------------ http://vk.com/dlang D ------------------------------------------------------------------------ http://swiftbook.ru/ Swift ------------------------------------------------------------------------ http://www.lisp.ru/ Lisp http://lisper.ru/ https://habr.com/ru/hub/lisp/ ------------------------------------------------------------------------
http://uzverss.livejournal.com/tag/python
|
Декабрь 25, 2015
02:35 pm - консоль python в роли командной строки часть 2

консоль python в роли командной строки часть 1
заглянуть
Работа с WWW
сервер запускает HTTP для всех локальных интерфейсов на порту 8080 python -m SimpleHTTPServer 8080 # python2 python3 -m http.server 8080
python3 -m http.server 8080 --cgi # запустить в папке, где находится каталог cgi-bin # со сценарием cgi
открыть в браузере адреса http://0.0.0.0:8080/ или http://localhost:8080/ или http://127.0.0.1:8080/
python -m SimpleHTTPServer # без указания порта запустит сервер на порту 8000 python3 -m http.server
запускает сервер SMTP на порту 1025 python -m smtpd -n -c DebuggingServer localhost:1025 запустить сервер SMTP на стандартном порту 25 sudo python -m smtpd -n -c DebuggingServer localhost:25
http://rus-linux.net/nlib.php?name=/MyLDP/consol/oneliners.html
работа с http
import webbrowser webbrowser.open('http://www.habrahabr.ru/') # открыть ссылку в браузере webbrowser.open(u'file://home/user/mysite.html') webbrowser.open(u'mailto:foo@bar.com?subject=Feedback%20message') # открыть почтовый клиент создать письмо http://habrahabr.ru/post/62383/ если нет модуля webbrowser то apt-get install python-pip python3-pip pip install webbrowser http://rtfm.co.ua/python-utilita-pip-pypi/ http://asvetlov.blogspot.ru/2014/05/pip.html import urllib2 urllib2.urlopen('http://www.example.com/').read() # скачать файл по протоколу http
работа с ftp
from ftplib import FTP f = FTP('ftp.gnu.org') f.login('','') # f.login('login', 'password') for x in f.nlst()[:9]: print(x) L = [] f.dir(L.append) for x in L[:15]: print(x) f.nlst() f.dir() f.nlst()[17] remotefiles=f.nlst()[17] localdir = '/home/user/path/' localpath = os.path.join(localdir, remotefiles) localfile = open(localpath, 'wb') f.retrbinary('RETR ' + remotefiles, localfile.write) localfile.close() import os os.listdir()
pypi install wget import wget wget.download("http://www.python.org/")
Экранирование тегов html
>>> import cgi >>> cgi.escape('a < b > c & d "spam"', 1) 'a < b > c & d "spam"' >>> s = cgi.escape("1<2 <b>hello</b>") >>> s '1<2 <b>hello</b>' >>> >>> import html >>> html.escape('a < b > c & d "spam"', 1) 'a < b > c & d "spam"' >>> s = html.escape("1<2 <b>hello</b>") >>> s '1<2 <b>hello</b>'
>>> import cgi, html.parser >>> s = cgi.escape("1<2 <b>hello</b>") >>> s '1<2 <b>hello</b>' >>> >>> html.parser.HTMLParser().unescape(s) '1<2 <b>hello</b>' >>> >>> import html, html.parser >>> s = html.escape("1<2 <b>hello</b>") >>> s '1<2 <b>hello</b>' >>> html.parser.HTMLParser().unescape(s) '1<2 <b>hello</b>'
>>> import urllib.parse >>> urllib.parse.quote("a & b #! c") 'a%20%26%20b%20%23%21%20c' >>> urllib.parse.quote_plus("C:\stuff\spam.txt") 'C%3A%5Cstuff%5Cspam.txt' >>> x = urllib.parse.quote_plus("a & b #! c") >>> x 'a+%26+b+%23%21+c' >>> urllib.parse.unquote_plus(x) 'a & b #! c'
Экранирование адресов URL
>>> import urllib.parse
>>> b='http://lurkmore.to/Монти_Пайтон'
>>> urllib.parse.quote(b)
'http%3A//lurkmore.to/%D0%9C%D0%BE%D0%BD%D1%82%D0%B8_%D0%9F%D0%B0%D0%B9%D1%82%D0%BE%D0%BD'
>>> d=urllib.parse.quote(b)
>>> d
'http%3A//lurkmore.to/%D0%9C%D0%BE%D0%BD%D1%82%D0%B8_%D0%9F%D0%B0%D0%B9%D1%82%D0%BE%D0%BD'
>>> urllib.parse.unquote(d)
'http://lurkmore.to/Монти_Пайтон'
Экранирование адресов URL с якорями
python3
>>>
>>> import urllib.parse
>>> s='http://lurkmore.to/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BF%D0%B0%D1%81%D1%82%D0%B0:Python#.D0.9E.D1.80.D0.B8.D0.B3.D0.B8.D0.BD.D0.B0.D0.BB'
>>> (a,b)=s.split('#')
>>> a
'http://lurkmore.to/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BF%D0%B0%D1%81%D1%82%D0%B0:Python'
>>> b
'.D0.9E.D1.80.D0.B8.D0.B3.D0.B8.D0.BD.D0.B0.D0.BB'
>>> b=b.replace('.','%')
>>> b
'%D0%9E%D1%80%D0%B8%D0%B3%D0%B8%D0%BD%D0%B0%D0%BB'
>>> j=a+'#'+b
>>> j
'http://lurkmore.to/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BF%D0%B0%D1%81%D1%82%D0%B0:Python#%D0%9E%D1%80%D0%B8%D0%B3%D0%B8%D0%BD%D0%B0%D0%BB'
>>>
>>> l=urllib.parse.unquote(j)
>>> l
'http://lurkmore.to/Копипаста:Python#Оригинал'
Почтовые вложения и ссылки base64
>>> import base64
>>> base64.b64decode('aHR0cDovLzR1ZnJlZS50ay9tZWRpYTcyMzY0Ni9mdWVuZi8wMzYubXAz')
b'http://4ufree.tk/media723646/fuenf/036.mp3'
Шифрование
a ^ b ^ b == a
>>> 1925^99
2022
>>> 2022^99
1925
шифрование искажение символов (простое)
sys.stderr.write('using simple\n')
adder = 1
def do_encode(pswd):
pswd = 'vs' + pswd + '48'
res = ''
for char in pswd:
res += chr(ord(char) + adder) # увеличить каждый код ASCII
return str(res)
def do_decode(pswd):
pswd = pswd[2:-2]
res = ''
for char in pswd:
res += chr(ord(char) - adder)
return res
http://pythonlearn.ru/без-рубрики/shifrovanie-strok-s-pomoshhyu-modulya-hashlib-python/
>>> import hashlib
>>> h = hashlib.sha1(b"password")
>>> h = hashlib.sha1()
>>> h.update(b"password")
>>> h = hashlib.sha1(b"password")
>>> h.digest()
'[\xaaa\xe4\xc9\xb9??\x06\x82%\x0bl\xf83\x1b~\xe6\x8f\xd8'
>>> h.hexdigest()
'5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8'
>>> import hashlib
>>> h = hashlib.md5(b"password")
>>> p = h.hexdigest()
>>> p
'5f4dcc3b5aa765d61d8327deb882cf99'
>>> p # Пароль, сохраненный в базе
'5f4dcc3b5aa765d61d8327deb882cf99'
>>> h2 = hashlib.md5(b"password") # Пароль, введенный пользователем
>>> if p == h2.hexdigest(): print("Пароль правильный")
...
Пароль правильный
http://ivinside.blogspot.ru/2012/04/aes-pycrypto.html
from Crypto.Cipher import AES
import base64
import os
# размер блока шифрования
BLOCK_SIZE = 32
# символ, использующийся для дополнения шифруемых данных
# до размера, кратного 32 байтам
PADDING = '{'
# функция дополнения
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
# функции шифрования и расшифрования
# результат дополнительно обертывается в base64
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)
# генерируем ключ
secret = os.urandom(BLOCK_SIZE)
# создаем объект
cipher = AES.new(secret)
# шифруем строку
encoded = EncodeAES(cipher, 'password')
print 'Encrypted string:', encoded
# расшифровываем строку
decoded = DecodeAES(cipher, encoded)
print 'Decrypted string:', decoded
Простое шифрование с openssl http://www.py-my.ru/post/554f1ca43ad2ff04ff2d41ba Шифруем: openssl aes-256-cbc -in input_file -out output_file Дешифруем: openssl aes-256-cbc -d -in input_file -out output_file При выполнении запрашивается пароль.
Изображения
мануал
Pillow $ pip install Pillow from PIL import Image, ImageFilter # Считываем изображение im = Image.open( 'image.jpg' ) # Показываем изображение im.show() # Применяем фильтр к изображению im_sharp = im.filter( ImageFilter.SHARPEN ) # Сохраняем отфильтрованное изображение в новый файл im_sharp.save( 'image_sharpened.jpg', 'JPEG' ) # Разбиваем изображение на соответствующие bands (то есть на красный, зеленый # и синий для RGB) r,g,b = im_sharp.split() # Просматриваем данные EXIF, встроенные в изображение exif_data = im._getexif() exif_data
Как легко вырезать фон на изображении с помощью Python # pip install rembg pillow from rembg import remove from PIL import Image input_path = "in.png" output_path = "out.png" input = Image.open(input_path) output = remove(input) output.save(output_path)
python rembg - изменить цвет фона это даст вам вывод с полностью красным фоном. removeim = remove(im,bgcolor=[255,0,0,255]) измените bgcolor=[255,0,0,255] на bgcolor=[0,255,0,255], чтобы получить полностью зеленый фон.
cv2 распознавание лиц в реальном времени, видео в реальном времени https://github.com/Itseez/opencv/blob/master/samples/python/facedetect.py
http://tinyurl.com/opencv3-py-tutorial http://tinyurl.com/opencv3-py3-ubuntu http://tinyurl.com/opencv3-py3-anaconda
from cv2 import * import numpy as np # Считываем изображение img = cv2.imread('testimg.jpg') # Показываем изображение cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() # Применяем к изображению фильтр Grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Сохраняем отфильтрованное изображение в новый файл cv2.imwrite('graytest.jpg',gray)
Scikit-Image http://scikit-image.org/docs/dev/auto_examples/
Разные модули
модуль Wget https://pypi.python.org/pypi/wget
>>> import wget
>>> wget.download("http://www.python.org/")
или python -m wget [options]
модуль xonsh http://xon.sh/ Xonsh is a Python-ish, BASHwards-looking shell language and command prompt.
модуль sh http://amoffat.github.io/sh/
>>> from sh import tar
>>> tar("cvf", "/tmp/test.tar", "/my/home/directory/")
>>> from sh import ls
>>> print(ls("/"))
>>> from sh import ifconfig
>>> print(ifconfig("wlan0"))
>>> from sh import find
>>> find("/tmp")
psutil https://github.com/giampaolo/psutil
>>> import psutil
>>> psutil.cpu_times()
>>> psutil.virtual_memory()
>>> psutil.swap_memory()
>>> psutil.disk_partitions()
>>> psutil.disk_usage('/')
>>> psutil.net_io_counters(pernic=True)
>>> psutil.net_connections()
>>> psutil.net_if_addrs()
>>> psutil.net_if_stats()
>>> psutil.users()
....................
PyAutoGui модуль управления компьютером pip install pyautogui
import pyautogui as pg
# Получение позиции мыши и вывод в консоль print(pg.position())
# Передвижение мыши pg.move(50, 50, duration=0.5) pg.moveTo(150, 200, 0.5) # Передвигаем к точке относительно экрана
# Нажатие мышкой по определенной точке pg.click(769, 101) pg.doubleclick(769, 101) # двойное нажатие pg.rightclick(769, 101) # нажатие правой кнопкной мыши pg.leftclick(769, 101) # нажатие левой кнопкной мыши
# Ввод текста pg.typewrite("itproger.com") # Выполнения нажатия на клавишу pg.typewrite(["enter"])
# Выполнения нажатия на сочетание клавиш pg.hotkey("winleft") pg.hotkey("winleft", "up") pg.hotkey("ctrl", "t")
# Вызов различных всплывающих окон pg.alert("Окно с информацией", "Название окна", button="Текст на кнопке") age = pg.prompt("Укажите возраст: ", "Название окна") print(age) pg.confirm("Вам больше 18?", "Название окна", ("Да, точно", "Нет")) pg.password("Введите пароль", "Название окна")
# Создание скриншота pg.screenshot("yourPic.png")
# Мини программа website = pg.prompt("Введите название сайта:", "Веб сайт", "https://") pg.click(769, 101) pg.typewrite(website) pg.typewrite(["enter"]) pg.screenshot("yourPic.png")
Отладка в python через консоль
href="http://www.py-my.ru/post/4e37737b1d41c8451b000002
Запуск скрипта в отладчике
$ python -m pdb script.py
Либо можно прописать запуск отладчика в самом скрипте, для этого нужно добавить код
import pdb pdb.set_trace()
Команды
help Список команд
list Отображение листинга, отображает точки останова - "B" в начале строки
list s,e Часть листинга: s - начальная строка, e - конечная строка
next Выполнить следующую команду текущего метода
step Выполнить следующую команду со входом внутрь методов
return Выполнить текущий метод до конца
until Выполнить до конца метода/цикла
args Вывести список локальных переменных
locals() Отображение текущей области видимости (команда не отладчика)
quit Выйти из отладчика
where Определить текущее местоположение
up Перемещение по стеку вверх
down Перемещение по стеку вниз
p value Вывести на экран значение (print)
pp value Более красивый вывод на экран
!command Выполнить произвольную команду
jump Перейти на строку (выполнить до строки)
run [ 'script.py', 'a', 'b', 'c'] Перезапуск скрипта с параметрами
alias pl pp %1 Создать алиас команды, %1 - входящий параметр
unalias pl Удаление алиаса
Точки останова
break Просмотр установленных т.о. и их номеров
disable 1 Отключить т.о. по номеру
enable 1 Включить т.о. по номеру
break 15 Установить т.о. на указанной строке
break foo Установить т.о. на методе
break ../script2.py:15 Установить т.о. в другом файле
break 15, i>7 Установить т.о. с условием
condition 1 i>0 Назначить условие на существующую т.о.
tbreak 15 Временная т.о., удаляется при достижении
continue Продолжить выполнение скрипта
clear Удалить все т.о.
clear 1 Удалить т.о. под номером 1
ignore 1 10 Установка счетчика "не срабатывания", для т.о. 1, пропустить 10 остановок
commands 1
...
end Создать сценарий для т.о. 1
Настройки по умолчанию можно сохранить в файле ~/.pdbrc и ./.pdbrc (последний переопределяет настройки первого)
Кратко в деталях https://unixhow.com/3849/kak-zapustit-python-skript-v-rezhime-otladki
Вам нужно запустить ваш скрипт на пайтоне, используя модель pdb (Python Debug):
python -m pdb merge_lists.py
Увидите нечто такое:
python -m pdb merge_lists.py
> /Users/and3001/Documents/Personal/Coding/Python/merge_lists.py(3)()
-> my_list = [3, 4, 6, 10, 11, 15]
(Pdb)
Что бы продолжить работу, нажмите n (next). Так пошагово разберете все шаги вашего скрипта.
(Pdb) n
> /Users/and3001/Documents/Personal/Coding/Python/merge_lists.py(4)()
-> alices_list = [1, 5, 8, 12, 14, 19]
(Pdb)
Что бы выйти, нажмите q
Разное
выполнение строки python3 -c "print(bin(255))" echo "print(bin(255))" |python3
документация по модулям pydoc -p 8080 http://localhost:8080/
вывод AST и cкомпилированного кода в веб-интерфейсе $ pip install instaviz vi test.py
python3 test.py
printf https://stackoverflow.com/questions/63627692/making-the-printf-function-of-c-into-python https://stackoverflow.com/questions/19457227/how-to-print-like-printf-in-python3
импорт из Си
import ctypes
libc = ctypes.cdll.LoadLibrary("libc.so.6")
printf = libc.printf
printf(b'num: %d, txt: %s\n', 42, b'Hello World') # b' - обязательно
импорт из sys
import sys
def printf(format, *args):
sys.stdout.write(format % args)
printf('num: %d, txt: %s\n', 42, 'Hello World')
сделать функцию
def printf(text, *args):
print(text % args)
printf('num: %d, txt: %s\n', 42, 'Hello World')
привести код в порядок python3 -m pip install flake8 flake8 myscript.py # проверить как и где именно нарушается стиль
python3 -m pip install black black --check myscript.py # проверить будет ли black изменять файл black --diff myscript.py # показать изменения black myscript.py # отформатировать
показать текущее время с датой >>> impotr time >>> time.ctime(time.time()) >>> time.asctime()
Uuid
>>> import uuid >>> print uuid.uuid4() # e7bafa3d-274e-4b0a-b9cc-d898957b4b61
Progressbar
узнать все зарезервированные слова
>>> import keyword
>>> keyword.kwlist
li=[] if not li: print "empty" # проверить список на пустоту
"12345".zfill(10) # дополнить строку нулями
hasattr(a,'attributename') # узнать имеет ли объект атрибут в Python?
сделать отсортированный список по значениям из cловаря
newlist = sorted(list_to_be_sorted, key=lambda k: k['name'])
разбить список на части одинакового размера
def chunks(l, n):
for i in xrange(0, len(l), n):
yield l[i:i+n]
выполнить код в зависимости от версии интерпретатора
import sys
import __future__
if sys.version_info[0] == 2:
# Python 2 code
else:
# Python 3 code или
if sys.version[:1] == '2':
# Python 2 code
else:
# Python 3 code
найти файл либы аналог ldconfig -p |grep udev
import ctypes.util ctypes.util.find_library("udev")
в сборке с musl не работает, поэтому патч https://git.alpinelinux.org/aports/tree/main/python3/musl-find_library.patch
Поймать несколько исключений в одной строке except (Exception1, Exception2) as e: pass
http://www.user.su/Основы_Python http://jenyay.net/Programming/Python
легендарный FuzzBuzz https://megamozg.ru/post/23556/ https://megamozg.ru/post/10308/ В поисках компактного FizzBuzz на Python
a = list(range(1, 101))
for i in a:
if i%15 == 0: print(i, 'FuzzBuzz')
if i%3 == 0 and i%15!=0: print(i, 'Fuzz')
if i%5 == 0 and i%15!=0: print(i, 'Buzz')
Начнём со стандартного, классического решения:
for i in range(1, 101):
if i%3==0 and i%5==0:
print('FizzBuzz')
elif i%3==0:
print('Fizz')
elif i%5==0:
print('Buzz')
else:
print(i)
Укладываем стандартное решение в стандартный однострочник
print('\n'.join('FizzBuzz' if i%3==0 and i%5==0 else 'Fizz' if i%3==0 else 'Buzz' if i%5==0 else str(i) for i in range(1, 101)))
Избавляемся от Join, приручаем Print
[print('FizzBuzz' if i%3==0 and i%5==0 else 'Fizz' if i%3==0 else 'Buzz' if i%5==0 else i) for i in range(1, 101)]
Добавляем срез, укрощаем if else
[print('FizzBuzz'[4 if i%3 else 0:4 if i%5 else 8] or i) for i in range(1, 101)]
Оптимизируем срез, избавляемся от if else
[print('FizzBuzz'[i*i%3*4:8--i**4%5] or i) for i in range(1, 101)]
Сократили неплохо. Но, похоже с этой вариацией дальше не продвинуться. Пробуем иной вариант.
Заменяем срез конкатенацией, вертаем оператор modulo
[print('Fizz'*(i%3==0)+'Buzz'*(i%5==0) or i) for i in range(1, 101)]
Оптимизируем решение. Выравниваем по длине со срезом
[print((i%3<1)*'Fizz'+(i%5<1)*'Buzz' or i) for i in range(1, 101)]
Уходим в отрыв. Модифицируем окончательный вариант
[print(i%3//2*'Fizz'+i%5//4*'Buzz' or i+1) for i in range(100)]
А если избавиться от списка, будет ещё короче и, возможно, быстрее:
for i in range(100):print(i%3//2*'Fizz'+i%5//4*'Buzz'or i+1)
pyperclip взято тут видеоуроки по теме
pip3 install pyperclip
Занимательные фигуры на Python в одну строку странности
(Link)
>>> type( {} ),type( { () } )
(, )
>>> 1, + 2,
(1, 2)
>>> (1,) + (2,)
(1, 2)
>>> (1,) + 2,
Traceback (most recent call last):
File "<input ... >", line 1, in
(1,) + 2
>>> __ = [1,2]; _= range(5);[_ for _ in _ if _ not in __]
[0, 3, 4]
>>> __
[1, 2]
Кристиан Майер «Однострочники Python» 2022 https://github.com/finxter/PythonOneLiners
|
03:37 am - консоль python в роли командной строки часть 1

консоль python в роли командной строки часть 2
заглянуть
Модули
Шоу Энтони «Внутри CPython» 2023
узнать конфигурацию сборки python python3 -m sysconfig
документация по модулям pydoc -p 8080 http://localhost:8080/
импорт из github.com https://github.com/nvbn/import_from_github_com pip install import_from_github_com
чтобы загрузить модуль нужно его импортировать: import модуль, например import os удалить модуль (или переменную) del os
узнать все модули: pydoc3 -b pydoc -b
или вбить в консоли python help('modules') pip freeze
узнать что входит в модуль: import sys sys. # нажать на Tab
узнать где расположен файл с модулем import модуль print(модуль.__file__)
Встроенные функции Python содержатся в модуле __builtin__(импортировать его для использования функций не нужно): dir(__builtins__) __builtins__. # нажать на Tab
В возвращаемом функцией dir() списке не содержится встроенных функций и переменных. Если вы хотите получить их список, то они определены в стандартном модуле builtins builtins - встроенные модули, у которых отсутствует имя файла
>>> import builtins
>>> dir(builtins)
>>> import pprint, sys
>>> pprint.pprint(sys.modules)
>>> pprint.pprint(sys.path)
sys.path представляет собой список файловых путей, в которых лежат модули интерпретарор ищет модули вначале в текущем каталоге, а затем в каталогах, указанных в переменной окружения PYTHONPATH
Получаем список переменных внутри функции >>> print(locals()) >>> print(globals()) Функция locals() возвращает словарь переменных из текущего пространства имён Ключи словаря — названия переменных, а значения — это их значения. С помощью похожей функции globals() можно получить все переменные конкретного модуля в таком же виде
пути загрузки модулей import sys print(sys.path)
автоматический путь к каталогу с модулями import sys sys.path.append(f"/usr/lib/python{sys.version_info.major}.{sys.version_info.minor}/mprdaemon")
import platform print(f'/usr/lib/python{platform.python_version()[:3]}/distutils') # каталог distutils дан для примера sys.path.append(f'/usr/lib/python{platform.python_version()[:3]}/distutils')
Откуда грузятся модули? __import__ sys.modules sys.path .pth файлы sys.meta_path sys.path_hooks sys.path_import_cache http://pep8.ru/doc/tutorial-3.1/6.html http://asvetlov.blogspot.ru/2010/05/2.html
Решение проблем с модулями и пакетами Python
impotr time time.ctime(time.time()) # показать текущее время с датой time.asctime()
import os os.system('команда') # запустит команду, напр. os.system('mc') os.getcwd() # узнать местонахождение os.chdir('/home') # переместится в /home os.listdir('/usr/src') # узнать что находится в /usr/src print os.path.isfile('fname') # проверить, существует ли файл os.stat('/home/user/2') # узнать сведения о файле или каталоге /home/user/2 os.path.getsize('/home/user/path/hello.txt') # узнать размер файла list(os.popen('du -sh /home/user/path')) # узнать размер каталога path os.mkdir('/home/user/path') # создать каталог /home/user/path os.makedirs('/home/user/path/1/1/1/1') # Создать каталог и промежуточные каталоги os.rmdir('/home/user/path') # удалить каталог /home/user/path os.removedirs('/home/user/path/1/1/1/1') # автоматически удалит все пустые родительские каталоги (~/1/1/1) os.remove('/home/user/path/hello.txt') # удалит файл hello.txt os.rename('/home/user/path', '/home/user/tmp/path') # переименует (или перенесёт в существующий каталог) каатог или файл os.symlink('/home/user/path', '/home/user/22') # создаст символическую ссылку с именем 22 os.system('id') # узнать свой id os.chown('/home/user/path', uid, gid ) # сменить владельца -uid, группу - gid uid root - 0, gid root - 0 os.chmod('/home/user/path' 0o100644) # дать права (в восьмеричной системе)
oct(число) # число в восьмеричной системе hex(число) # в шестнадцатеричной bin(число) # в двоичной int(0o1000) # 512 в десятеричной int(0b1000) # 8 int(0x1000) # 4096
import shutil shutil.copyfile('/home/user/path/hello.txt', '/home/user/tmp/hel.txt') # cкопирует файл с именем hel.txt, метаданные (права и тд) не копирует shutil.copy('/home/user/path/hello.txt', '/home/user/tmp/hel.txt') # cкопирует файл с именем hel.txt, копирует метаданные shutil.copy2('/home/user/path/hello.txt', '/home/user/tmp/hel.txt') # cкопирует файл с именем hel.txt, полное копирование метаданных shutil.move('/home/user/path', '/home/user/tmp/tmp/tmp') # переместить/переименовать каталог/файл если промежуточных каталогов нет, то создаст оные shutil.move('/home/user/path/hello.txt', '/home/user/tmp') # перенесёт с тем же именем в каталог tmp shutil.copytree('/home/user/path', '/home/user/tmp/new') # скопирует каталог path со всем содержимым (дерево каталогов) в tmp с именем new shutil.rmtree('/home/user/tmp/new') # удалит каталог new со всем содержимым
Управление модулями, pip
wget https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
$ pip help # помощь по доступным командам. $ pip install package_name # установка пакета(ов). $ pip uninstall package_name # удаление пакета(ов). $ pip-autoremove package_name # удаление пакета(ов), с установленными зависимостями $ pip install -U # обновление пакета(ов). $ pip install --force-reinstall # при обновлении, переустановить пакет, даже если он последней версии. $ pip list # Смотрим на список установленных (доступных) библиотек $ pip list -o # узнать, какие библиотеки можно обновить $ pip show package_name # узнать версию, местонахождение на диске и зависимости. $ pip search pycp # покажет список всех пакетов, в названии которых есть pycp $ pip --proxy user:passwd@proxy.server:port # использование с прокси. $ pip completion --bash >> ~/.bashrc # Автодополнение http://asvetlov.blogspot.ru/2014/05/pip.html
Как обновить существующие пакеты? (пользоваться осторожно, лучше в virtualenv или pyenv )
$ pip install pip-review $ pip-review --local --interactive или $ pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U $ for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done $ sudo pip install -U $(pip freeze | awk '{split($0, a, "=="); print a[1]}') $ sudo pip install -U $(pip freeze | cut -d '=' -f 1)
http://python.cx/blog/article/3 http://xgu.ru/wiki/Работа_с_модулями_в_Python
Удаление ненужных пакетов
$ pip install pip-autoremove $ pip install Flask Sphinx $ pip-autoremove Flask Sphinx -y http://python.cx/blog/article/PyPi_pip_python
Проверка наличия
Проверка существования переменной в локальной видимости if 'myVar' in locals(): # myVar exists
Проверка существования переменной в глобальной видимости if 'myVar' in globals(): # myVar exists
Проверка существования переменной используя исключения try: myVar except NameError: myVar = None
Проверка существования ключа в словаре способ 1 if key in dictname: # key exists in dictname
Проверка существования ключа в словаре способ 2 try: dictname['key'] except KeyError: dictname['key'] = None
Проверка существования индекса в списке try: dictname['1'] except IndexError: dictname['1'] = None
Проверка наличия метода, свойства в объекте if hasattr(obj, 'attr_name'): # obj.attr_name exists
Оболочки, библиотеки
https://ipython.org/ http://xon.sh/ https://amoffat.github.io/sh/ https://github.com/selectel/pyte https://github.com/eliangcs/http-prompt http://bpython-interpreter.org/ https://github.com/jonathanslenders/ptpython https://github.com/jonathanslenders/pymux/ https://github.com/jonathanslenders/python-prompt-toolkit
Исходный код
Посмотреть код функции:
>>> import inspect
>>> import abc
>>> print(inspect.getsourcefile(abc))
/usr/lib/python3.4/abc.py
>>> print(inspect.getsource(abc))
# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.
"""Abstract Base Classes (ABCs) according to PEP 3119."""
from _weakrefset import WeakSet
.................
>>> print(inspect.getmodule(abc))
<module 'abc' from '/usr/lib/python3.4/abc.py'>
при попытке посмотреть код созданной в интерпретаторе функции выдаст ошибку:
>>> def object():
... print("hello")
...
>>> print(inspect.getsource(object))
..................
OSError: could not get source code
но это возможно в IPython:
In [1]: def object():
...: print("hello")
...:
In [2]: import inspect
In [3]: print(inspect.getsource(object))
def object():
print("hello")
или с помощью сторонних модулей: нужно установить dill
sudo apt install python3-dill
или
sudo pip3 install dill
>>> def object():
... print("hello")
...
>>> import dill
>>> print(dill.source.getsource(object))
def object():
print("hello")
>>> import dis
>>> dis.dis(object)
2 0 LOAD_GLOBAL 0 (print)
3 LOAD_CONST 1 ('hello')
6 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
>>>
Операции с числами
round(632.742774, 3) # округлит до 632.743 (3 - сколько знаков после запятой)
a=[1, 2, 3, 4] for x in a: print(x + 3, end = ',') list(map((lambda x: x + 3), a))
from math import * D={'S':sin, 'C':cos, 'E':exp} D['S'](pi/2) D['C'](pi) D['E'](1)
http://ru_python.livejournal.com/337028.html >>> from decimal import Decimal >>> Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3') Decimal('0.0') >>> from fractions import Fraction >>> Fraction(1,10)+Fraction(1,10)+Fraction(1,10)-Fraction(3,10) Fraction(0, 1)
from fractions import Fraction as fr >>> fr('1/3') + fr('1/3') + fr('1/3') Fraction(1, 1) >>> fr('9/7') - fr('20/21') Fraction(1, 3) >>> >>> from sympy import * >>> x = Symbol('x') >>> y = Symbol('y') >>> x + x + y*3 -y 2*x + 2*y >>> expand((x+1)*(y-1)**3) x*y**3 - 3*x*y**2 + 3*x*y - x + y**3 - 3*y**2 + 3*y - 1 >>> expand(cos(x+y), trig=True) -sin(x)*sin(y) + cos(x)*cos(y) >>> simplify((x+x*x*y)/x) x*y + 1 >>> solve(x**2 - y, x) [-sqrt(y), sqrt(y)] >>> solve(exp(x)+1, x) [I*pi]
особенности двоичной математики >>> 0.1+0.1+0.1-0.3 5.551115123125783e-17 >>> 0.7-0.5-0.2 -5.551115123125783e-17 >>> (0.1+0.1+0.1-0.3)-(0.7-0.5-0.2) 1.1102230246251565e-16 >>> (0.7-0.5-0.2)-(0.1+0.1+0.1-0.3) -1.1102230246251565e-16
зато тут магия куда то делась >>> (0.1+0.1+0.1-0.3)+(0.7-0.5-0.2) 0.0
>>> 0.1 + 0.1 + 0.1 - 0.3 == 1.0 / (2**54) True >>> 0.7-0.5-0.2 == -1.0 / (2**54) True >>> 5.551115123125783e-17 == 1.0 / (2**54) True >>> 0.1 + 0.1 + 0.1 - 0.3 == math.pow(2, -54) True
Работа с файлами
open('/home/user/path/hello.txt', 'w') # создаст пустой файл (аналог touch hello.txt)
f=open('/home/user/path/hello.txt', 'w') # создать или открыть существующий файл hello.txt на запись 'r' открытие на чтение (является значением по умолчанию). 'w' открытие на запись, содержимое файла удаляется, если файла не существует, создается новый. 'x' открытие на запись, если файла не существует, иначе исключение. 'a' открытие на дозапись, информация добавляется в конец файла. 'b' открытие в двоичном режиме. 't' открытие в текстовом режиме (является значением по умолчанию). '+' открытие на чтение и запись 'r+' означает, что файл доступен как для чтения, так и для записи, при этом содержимое существующих файлов сохраняется 'w+', позволяет выполнять операции чтения и записи, но создает файл заново, уничтожая прежнее его содержимое
f.write('Привет, всё норм.') f.close()# закрыть файл
f=open('/home/user/path/hello.txt', 'r') # открыть файл на чтение
f.read(8) # читает 8 символов f.readline() # читает построчно f.__next__() next(f) f.readlines() # читает файл целиком f.readlines(200) # читает 200 символов f.seek(0) # перейти в начало файла # цифры - позиция f.close()
f=open('/home/user/path/hello.txt', 'a') # открыть файл на дозапись ABC='очень,очень,многобукав' # создание переменной ABC
f.writelines('ABC') # допишет в файл буквы ABC f.writelines(ABC) # допишет в файл очень,очень,многобукав
for line in output.splitlines(): print(line) # разбить текст на отдельные строки
file.writelines(['Hello file world!\n', 'Bye file world.\n']) # записывает все строки из списка
list(map(str.rstrip, open('/home/user/path/hello.txt').readlines(200))) # прочтёт 200 символов, без /n перевода строки list(map(str.splitlines, open('/home/user/path/hello.txt').readlines(200)))
open('somefile.txt', 'w').write("G'day Bruce\n") # записать во временный файл open('somefile.txt', 'r').read() # прочитать временный файл
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close: file.close() with open(filename) as myfile # с применением менеджера контекста (гарантировано закрыть файл после использования)
пример передачи данных с текстового файла в переменную
cat /path/to/file
NAME="file1"
VERSION=1.1.1
def get_version():
with open('/path/to/file','r') as myfile:
content = myfile.read()
values = content.split("\n")
get_version_file = str(content.split("\n")[content.count('VERSION')]).split('=')[-1]
return get_version_file
#file_src = get_version()
file_src = '"{0}"'.format(str(get_version())) # чтоб в кавычках было
print("version = ", file_src )
поиск файлов
import glob glob.glob('/usr/src/*.deb') # покажет список deb пакетов в /usr/src, поиск файлов по маске os.system('grep -r /usr/lib/python3 -e __all__ ')
сравнение файлов
import filecmp filecmp('/home/user/path/hello.txt', '/home/user/tmp/hello.txt') # сравнение файлов True - совпадают, False - нет
сравнение каталогов
filecmp.dircmp('/home/user/path', '/home/user/tmp').report() # сравнение каталогов diff_files - сообщает о разнице меж одноимёнными файлами same_files - сообщает о идентичных файлах в двух каталогах common - выводит список общих имён и каталогов report() - подробный отчёт о сравнении каталогов report_full_closure() - подробный отчёт сравнения всех каталогов, вложенных файлов и каталогов
http://iakovlev.org/index.html?p=577&m=1&l1=2
Сортируем файлы с помощью Python https://github.com/lesskop/file-sorter
Работа с БД
C:\...\PP4E\Dbase> python
>>> import dbm # получить интерфейс: bsddb, gnu, ndbm, dumb
>>> file = dbm.open('movie', 'c') # создать файл DBM с именем 'movie'
>>> file['Batman'] = 'Pow!' # сохранить строку с ключом 'Batman'
>>> file.keys() # получить список ключей в файле
[b'Batman']
>>> file['Batman'] # извлечь значение по ключу 'Batman'
b'Pow!'
>>> who = ['Robin', 'Cat-woman', 'Joker']
>>> what = ['Bang!', 'Splat!', 'Wham!']
>>> for i in range(len(who)):
... file[who[i]] = what[i] # добавить еще 3 "записи"
...
>>> file.keys()
[b'Cat-woman', b'Batman', b'Joker', b'Robin']
>>> len(file), 'Robin' in file, file['Joker']
(4, True, b'Wham!')
>>> for key in file.keys(): print(key, file[key])
>>> for key in file: print(key.decode(), file[key].decode())
>>> file['Batman'] = 'Ka-Boom!' # изменить значение ключа Batman
>>> del file['Robin'] # удалить запись Robin
>>> file.close() # иногда требуется закрывать явно
упаковка объектов
pickle
>>> table = {'a': [1, 2, 3],
'b': ['spam', 'eggs'],
'c': {'name':'bob'}}
>>>
>>> import pickle
>>> mydb = open('dbase', 'wb')
>>> pickle.dump(table, mydb)
C:\...\PP4E\Dbase> python
>>> import pickle
>>> mydb = open('dbase', 'rb')
>>> table = pickle.load(mydb)
>>> table
{'a': [1, 2, 3], 'c': {'name': 'bob'}, 'b': ['spam', 'eggs']}
shelve import shelve dbase = shelve.open("mydbase") dbase['key'] = object # сохранить объект value = dbase['key'] # извлечь объект len(dbase) # количество хранящихся элементов dbase.keys() # список ключей хранящихся элементов
JSON http://python-lab.ru/documentation/27/stdlib/json.html https://pythonworld.ru/moduli/modul-json.html
Кодирование JSON
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> import json
>>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
'[1,2,3,{"4":5,"6":7}]'
Красивый вывод:
>>> import json
>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True,
... indent=4, separators=(',', ': '))
{
"4": 5,
"6": 7
}
Декодироние JSON
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
Использование json.tool из шелла для проверки и красивого вывода:
$ echo '{"json":"obj"}' | python -mjson.tool
{
"json": "obj"
}
sqlite3
>>> import sqlite3
>>> conn = sqlite3.connect('dbase1') # при необходимости используйте полный путь к файлу
# можно передать специальную строку «:memory:», чтобы создать временную базу данных в памяти
>>> curs = conn.cursor()
>>> tblcmd = 'create table people (name char(30), job char(10), pay int(4))'
>>> curs.execute(tblcmd)
>>> curs.executemany('insert into people values (?, ?, ?)',
... [ ('Sue', 'mus', '70000'),
... ('Ann', 'mus', '60000')])
>>> rows = [['Tom', 'mgr', 100000],
... ['Kim', 'adm', 30000],
... ['pat', 'dev', 90000]]
>>> for row in rows:
... curs.execute('insert into people values (? , ?, ?)', row)
...
>>> conn.commit() # сохранить изменения в базе
>>> curs.execute('select * from people') # выбрать записи
>>> curs.fetchall() # извлечь записи
[('Bob', 'dev', 5000), ('Sue', 'mus', 70000), ('Ann', 'mus', 60000), ('Tom',
'mgr', 100000), ('Kim', 'adm', 30000), ('pat', 'dev', 90000)]
>>> for (name, job, pay) in curs.fetchall():
... print(name, ':', pay)
>>> curs.execute('select * from people')
>>> colnames = [desc[0] for desc in curs.description]
>>> colnames
['name', 'job', 'pay']
>>> for row in curs.fetchall():
... for name, value in zip(colnames, row):
... print(name, '\t=>', value)
... print()
>>> curs.execute('delete from people where name = ?', ['Bob'])
>>> curs.execute('delete from people where pay >= ?',(90000,))
>>> curs.execute('select * from people')
>>> curs.fetchall()
[('Sue', 'mus', 70000), ('Ann', 'mus', 65000), ('Kim', 'adm', 65000)]
>>> conn.commit()
>>> curs.execute('select * from people')
>>> colnames = [desc[0] for desc in curs.description]
>>> rowdicts = [dict(zip(colnames, row)) for row in curs.fetchall()]
>>> rowdicts[0]
{'pay': 70000, 'job': 'mus', 'name': 'Sue'}
>>> from sqlite3 import connect
>>> conn = connect('dbase1')
>>> curs = conn.cursor()
>>> curs.execute('delete from people') # очистить таблицу
>>> curs.execute('select * from people')
>>> curs.fetchall()
[]
>>> file = open('data.txt')
>>> rows = [line.rstrip().split(',') for line in file]
>>> rows[0]
['bob', 'devel', '50000']
>>> curs.execute("select sum(pay), avg(pay) from people where job = 'devel'")
>>> curs.fetchall()
[(150000, 50000.0)]
http://www.internet-technologies.ru/articles/article_2190.html
records
>>> import records
>>> db = records.Database('sqlite:///mydb.db')
>>>
>>> rows = db.query('SELECT * FROM cheese')
>>> print(rows.dataset)
name |price
-------------|-----
red leicester|1.0
wensleydale |2.2
>>>
>>> print(rows.export('json'))
[{"name": "red leicester", "price": 1.0}, {"name": "wensleydale", "price": 2.2}]
$ records 'SELECT * FROM cheese' yaml --url=sqlite:///mydb.db
- {name: red leicester, price: 1.0}
- {name: wensleydale, price: 2.2}
$ records 'SELECT * FROM cheese' xlsx --url=sqlite:///mydb.db > cheeses.xlsx
Работа с архивами
создание архива
$ python3
>>> import shutil
>>> shutil.make_archive('/home/user/каталог/имя_архива', 'zip', '/home/user/path')
сделает архив содержимого каталога path и положит в указанном месте с указанным именем,
добавив расширение сжатия (zip), форматы сжатия zip gztar bztar xz
распаковка архива
$ python3
>>> import zipfile
>>> zipfile.ZipFile('/home/user/file.zip').extractall('/home/user/tmp/new')
распакует архив в папку new, папка будет создана, если её нет
или просто в консоли использовать модули python: https://docs.python.org/3/library/tarfile.html
$ python3 -m tarfile -c $HOME/tmp/new_archiv.tar.bz2 $HOME/tmp/rt/ - создать архив $ python3 -m tarfile -e $HOME/tmp/new_archiv.tar.bz2 $HOME/tmp/rt/1 - распаковать архив
аналогично для форматов tar.gz и tar.xz
Работа со строками
Строки. Функции и методы строк Использование регулярных выражений в Python для новичков 41 вопрос о работе со строками в Python
в python3 достаточно просто присвоить строку
$ python3
>>> str='Самой используемой кодировкой в мире является utf8'
>>> str
'Самой используемой кодировкой в мире является utf8'
в python2 чуть больше телодвижений
$ python
>>> str=u'Самой используемой кодировкой в мире является utf8'
>>> print str
Самой используемой кодировкой в мире является utf8 Кодировки в python
Методы строк str.find(substr) Выполняет поиск подстроки. str.replace(old, new) Выполняет подстановку подстроки. str.split(delimiter) Разбивает строку по указанному разделителю или пробельным символам. str.join(iterable) Объединяет подстроки, вставляя разделители между ними. str.strip() Удаляет ведущие и завершающие пробельные символы. str.rstrip() Удаляет только завершающие пробельные символы, если они имеются. str.rjust(width) Выравнивает строку по правому краю в поле фиксированной ширины. str.upper() Переводит все символы в верхний регистр. str.isupper() Проверяет – все ли символы в строке являются символами верхнего регистра. str.isdigit() Проверяет – все ли символы в строке являются цифрами. str.endswith(substr-or-tuple) Проверяет присутствие подстроки (или одного из вариантов в кортеже) в конце данной строки. str.startswith(substr-or-tuple) Проверяет присутствие подстроки (или одного из вариантов в кортеже) в начале данной строки.
преобразование строк в кортеж, список и обратно
>>> 'spam eggs ham'.split()
['spam', 'eggs', 'ham']
>>> tuple(['spam', 'eggs', 'ham'])
('spam', 'eggs', 'ham')
>>> list(('spam', 'eggs', 'ham'))
['spam', 'eggs', 'ham']
>>> list('spam eggs ham')
['s', 'p', 'a', 'm', ' ', 'e', 'g', 'g', 's', ' ', 'h', 'a', 'm']
>>> ''.join(['s', 'p', 'a', 'm', ' ', 'e', 'g', 'g', 's', ' ', 'h', 'a', 'm'])
'spam eggs ham'
>>> '*'.join('spam eggs ham')
's*p*a*m* *e*g*g*s* *h*a*m'
>>> 's*p*a*m* *e*g*g*s* *h*a*m'.split('*')
['s', 'p', 'a', 'm', ' ', 'e', 'g', 'g', 's', ' ', 'h', 'a', 'm']
>>> ''.join(['s', 'p', 'a', 'm', ' ', 'e', 'g', 'g', 's', ' ', 'h', 'a', 'm'])
'spam eggs ham'
вредный совет
выпрямить вложенные списки с помощью функции sum()
>>> l=[['a', 'b', 'c'], ['1', '2'], ['#']]
>>> sum(l, [])
['a', 'b', 'c', '1', '2', '#']
столбик
типа
perl -pa0e'$_=join",",@F' 1.txt > 2.txt
sed ':a;N;$!ba;s/\n/ /g' my.txt > my1.txt
>>> s="""
... Keujiuz8
... ze5iiFee
... chuF7hae
... Quah8equ
... UZiloh9A
... quiWin0d
... Fael9uo8
... pheeph7M
... """
>>> s
'\nKeujiuz8 \nze5iiFee \nchuF7hae \nQuah8equ \nUZiloh9A \nquiWin0d \nFael9uo8 \npheeph7M\n'
>>> ' '.join(s.split())
'Keujiuz8 ze5iiFee chuF7hae Quah8equ UZiloh9A quiWin0d Fael9uo8 pheeph7M'
>>> d=s.split()
>>> for i in range(len(d)): print(d[i])
...
Keujiuz8
ze5iiFee
chuF7hae
Quah8equ
UZiloh9A
quiWin0d
Fael9uo8
pheeph7M
>>> a=['sjdej', 'jsjjjsj', 'jdeechfeo']
>>> for i in a: print(i)
...
sjdej
jsjjjsj
jdeechfeo
>>> for i in range(1,4): print ("abc"*i)
...
abc
abcabc
abcabcabc
>>> for i in range(2, 22, 3): print('Номер ('+ str(i)+')')
...
Номер (2)
Номер (5)
Номер (8)
Номер (11)
Номер (14)
Номер (17)
Номер (20)
>>> supplers = ['pens', 'staplers', 'binders']
>>> for i in range(len(supplers)):
... print('Index ' + str(i) + ' in supplers is: ' + supplers[i])
...
Index 0 in supplers is: pens
Index 1 in supplers is: staplers
Index 2 in supplers is: binders
регистр строки
>>> str='blablabla'
>>> str=str.upper()
>>> str
'BLABLABLA'
>>> str=str.lower()
>>> str
'blablabla'
>>> str=str.capitalize()
>>> str
'Blablabla'
>>> str=str.swapcase()
>>> str
'bLABLABLA'
>>> str=str.title()
>>> str
'Blablabla'
>>> 'bLABLABLA'.casefold()
'blablabla'
перевернуть строку
>>> a=list('habrahabr')
>>> a.reverse()
>>> ''.join(a)
'rbaharbah'
>>> 'hanrahabr'[::-1]
'rbaharnah'
Работа с ошибками
>>> import difflib
>>> capitals = ('Montgomery', 'Juneau', 'Phoenix', 'Little Rock')
>>> difflib.get_close_matches('Fenix', capitals)
['Phoenix']
разные манипуляции
>>> 'spam eggs ham'[5:10] # извлечение среза: подстрока
'eggs '
>>> 'spam ' + 'eggs ham' # конкатенация (и *, len(), [ix])
'spam eggs ham'
>>> 'spam %s %s' % ('eggs', 'ham') # выражение форматирования: подстановка
'spam eggs ham'
>>> 'spam {} {}'.format('eggs', 'ham') # метод форматирования: альтернатива %
'spam eggs ham'
>>> 'spam = "%-5s", %+06d' % ('ham', 99) # более сложное форматирование
'spam = "ham ", +00099'
>>> 'spam = "{0:<5}", {1:+06}'.format('ham', 99)
'spam = "ham ", +00099'
>>> '-'.join([str(i) for i in range(10)])
'0-1-2-3-4-5-6-7-8-9'
>>> "bla {} blabl {} lala {}".format(1,2,3)
'bla 1 blabl 2 lala 3'
>>> "bla {2} blabl {0:=10} lala {1}".format(1,2,3)
'bla 3 blabl 1 lala 2'
>>> "bla blabl lala ".split()
['bla', 'blabl', 'lala']
>>> "blahblablhlala".split('h')
['bla', 'blabl', 'lala']
>>> "blahblablhlala".replace('a','z')
'blzhblzblhlzlz'
>>> '_'.join([str(i) for i in range(10)])
'0_1_2_3_4_5_6_7_8_9'
>>> y = {c.upper() * 4 for c in 'spamham'} # генератор множеств
>>> y
{'SSSS', 'AAAA', 'MMMM', 'HHHH', 'PPPP'}
>>>
>>> list(set([1, 2, 3, 1, 2])) # удалит дубликаты из списка
[1, 2, 3]
>>> L = [{'n':3}, {'n':20}, {'n':0}, {'n':9}]
>>> L.sort(key=lambda x: x['n'])
>>> L
[{'n': 0}, {'n': 3}, {'n': 9}, {'n': 20}]
>>> L = [2, 4, 1, 3, 5]
>>> L.reverse()
>>> L
[5, 3, 1, 4, 2]
>>> L = [2, 4, 1, 3, 5]
>>> list(reversed(L))
[5, 3, 1, 4, 2]
>>> 'A B C D'.split()
['A', 'B', 'C', 'D']
>>> 'A+B+C+D'.split('+')
['A', 'B', 'C', 'D']
>>> '--'.join(['a', 'b', 'c'])
'a--b--c'
>>> 'aaa--bbb--ccc'.split('--')
['aaa', 'bbb', 'ccc']
>>> 'aaa--bbb--ccc'.replace('--', '...')
'aaa...bbb...ccc'
>>> x=[34,56]
>>> print((''.join(list(map(str,x)))),)
3456
удалить общие строки из двух списков
>>> a="abb bbb ccc eee".split()
>>> b="aab bbb ccd eee".split()
>>> aa=set(a)
>>> bb=set(b)
>>> c = bb.difference(aa)
>>> print(c)
{'aab', 'ccd'}
удаление повторяющихся в списке значений:
>>> nums = [1, 3, 2, 3, 1, 2, 3, 1, 2]
>>> unique_nums = list(set(nums))
>>> unique_nums
[1, 2, 3]
замена символов
Замена в строке с помощью Python
аналог sed 's/Windows/Linux/g'
>>> s='Windows Windows Windows'
>>> s.replace('Windows', 'Linux')
'Linux Linux Linux'
аналог sed -i 's/Windows/Linux/g' text
>>> old="Windows"
>>> new="Linux"
>>> text="Windows Windows Windows"
>>> import re
>>> print(re.sub(r'\bWindows\b', 'Linux', line))
быстро заменить в файле каждый символ табуляции четырьмя точками
from sys import *
stdout.write(('.' * 4).join(stdin.read().split('\t')))
[a-zA-Z0-9_]+ соответствует самой длинной строке из одного или более символов букв, цифр или подчеркиваний.
\w Любой алфавитно-цифровой символ ([a-zA-Z0-9_] для ASCII)
[\t ]* соответствует нулю или более табуляций и пробелов
>>> table = "".maketrans('12', '34', 'cs')
>>> '1212cs 5612cs cscs'.translate(table)
'3434 5634 '
>>> intab = "aeiou"
>>> outtab = "12345"
>>> trantab = str.maketrans(intab, outtab)
>>> str = "this is string example....wow!!!"
>>> print (str.translate(trantab))
th3s 3s str3ng 2x1mpl2....w4w!!!
strip() удаляет начальные и конечные пробелы
replace() удаляет все пробелы из строки
translate() избавиться от всех пробелов, а также от символов новой строки
" ".join(s.split()) избавиться от всех повторяющихся пробелов и символов новой строки
'строка'[1:] удалить первый символ строки
добавить символы в начало и конец строки
yourstring = "L{0}LL".format(yourstring)
yourstring = ''.join(('L','yourstring','LL'))
yourstring = "L%sLL" % yourstring
yourstring = "L" + yourstring + "LL"
yourstring = '"'{0}'"'.format(yourstring) добавить кавычки в начало и конец строки
Очистка входных строковых данных Полезные советы по Python, которых вы ещё не встречали
user_input = "This\nstring has\tsome whitespaces...\r\n"
character_map = {
ord('\n') : ' ',
ord('\t') : ' ',
ord('\r') : None
}
user_input.translate(character_map) # This string has some whitespaces... "
модуль re
аналог sed -i 's/Windows/Linux/g' text
>>> old="Windows"
>>> new="Linux"
>>> text="Windows Windows Windows"
>>> import re
>>> print(re.sub(r'\bWindows\b', 'Linux', line))
>>> import re
>>> re.split('--', 'aaa--bbb--ccc')
['aaa', 'bbb', 'ccc']
>>> re.sub('--', '...', 'aaa--bbb--ccc') # случай с единственным разделителем
'aaa...bbb...ccc'
>>> re.split('--|==', 'aaa--bbb==ccc') # разбить по -- или ==
['aaa', 'bbb', 'ccc']
>>> re.sub('--|==', '...', 'aaa--bbb==ccc') # заменить -- или ==
'aaa...bbb...ccc'
>>> re.split('[-=]', 'aaa-bbb=ccc') # односимвольные альтернативы
['aaa', 'bbb', 'ccc']
>>> re.split('(--)|(==)', 'aaa--bbb==ccc') # результат разбиения
['aaa', '--', None, 'bbb', None, '==', 'ccc'] # включает группы
>>> re.split('(?:--)|(?:==)', 'aaa--bbb==ccc') # часть выражения, не группы
['aaa', 'bbb', 'ccc']
использование обратного слэша
>>> a='Это не будет развернуто: \nновая строка'
>>> print(a)
Это не будет развернуто:
новая строка
>>> a='Это не будет развернуто: \tновая строка'
>>> print(a)
Это не будет развернуто: новая строка
>>> a='Это не будет развернуто: \vновая строка'
>>> print(a)
Это не будет развернуто:
новая строка
>>> a='Это не будет развернуто: \fновая строка'
>>> print(a)
Это не будет развернуто:
новая строка
>>> a='Однажды Арнольд сказал: "I\'ll be back"'
>>> print(a)
Однажды Арнольд сказал: "I'll be back"
5 СПОСОБОВ ФОРМАТИРОВАНИЯ СТРОК
https://shultais.education/blog/python-f-strings
>>> name = "User"
>>> age = 100
>>> print("Меня зовут " + name + ". Мне " + str(age) + " лет.")
>>> Меня зовут User. Мне 100 лет.
>>> name = "User"
>>> age = 100
>>> print("Меня зовут %s. Мне %d лет." % (name, age))
>>> Меня зовут User. Мне 100 лет.
>>> print("Меня зовут %(name)s. Мне %(age)d лет." % {"name": name, "age": age})
>>> Меня зовут User. Мне 100 лет.
>>> from string import Template
>>> name = "User"
>>> age = 100
>>> s = Template('Меня зовут $name. Мне $age лет.')
>>> print(s.substitute(name=name, age=age))
>>> Меня зовут User. Мне 100 лет.
>>> name = "User"
>>> age = 100
>>> print("Меня зовут {}. Мне {} лет.".format(name, age)
>>> Меня зовут User. Мне 100 лет.
>>> print("Меня зовут {name} Мне {age} лет.".format(age=age, name=name)
>>> Меня зовут User. Мне 100 лет.
# начиная с Python 3.6
>>> name = "User"
>>> age = 100
>>> print(f"Меня зовут {name} Мне {age} лет.")
>>> Меня зовут User. Мне 100 лет.
ПОГРУЖЕНЕ В F-СТРОКИ
>>> "обычная строка"
>>> f"f-строка"
f-строки также поддерживают расширенное форматирование чисел:
>>> from math import pi
>>> print(f"Значение числа pi: {pi:.2f}")
>>> Значение числа pi: 3.14
С помощью f-строк можно форматировать дату без вызова метода strftime():
>>> from datetime import datetime as dt
>>> now = dt.now()
>>> print(f"Текущее время {now:%d.%m.%Y %H:%M}")
>>> Текущее время 24.02.2017 15:51
Они поддерживают базовые арифметические операции. Да, прямо в строках:
>>> x = 10
>>> y = 5
>>> print(f"{x} x {y} / 2 = {x * y / 2}")
>>> 10 x 5 / 2 = 25.0
Позволяют обращаться к значениям списков по индексу:
>>> planets = ["Меркурий", "Венера", "Земля", "Марс"]
>>> print(f"Мы живим не планете {planets[2]}")
>>> Мы живим не планете Земля
А также к элементам словаря по ключу:
>>> planet = {"name": "Земля", "radius": 6378000}
>>> print(f"Планета {planet['name']}. Радиус {planet['radius']/1000} км.")
>>> Планета Земля. Радиус 6378.0 км.
Причем вы можете использовать как строковые, так и числовые ключи. Точно также как в обычном Python коде:
>>> digits = {0: 'ноль', 'one': 'один'}
>>> print(f"0 - {digits[0]}, 1 - {digits['one']}")
>>> 0 - ноль, 1 - один
Вы можете вызывать в f-строках методы объектов:
>>> name = "User"
>>> print(f"Имя: {name.upper()}")
>>> Имя: User
А также вызывать функции:
>>> print(f"13 / 3 = {round(13/3)}")
>>> 13 / 3 = 4
zip + list
http://blog.lerner.co.il/implementing-zip-list-comprehensions/
>>> s = 'abc'
>>> t = (10, 20, 30)
>>> u = (-5, -10, -15)
>>> list(zip(s,t,u))
[('a', 10, -5), ('b', 20, -10), ('c', 30, -15)]
>>> [(s[i], t[i]) for i in range(len(s))]
[('a', 10), ('b', 20), ('c', 30)]
>>> [(s[i], t[i]) for i in range(len(sorted((s,t), key=len)[0]))]
[('a', 10), ('b', 20), ('c', 30)]
>>> def shortest_sequence_range(*args):
... return range(len(sorted(args, key=len)[0]))
...
>>> [(s[i], t[i]) for i in shortest_sequence_range(s,t) ]
[('a', 10), ('b', 20), ('c', 30)]
>>> g = ((s[i], t[i]) for i in shortest_sequence_range(s,t) )
>>> for item in g: print(item)
...
('a', 10)
('b', 20)
('c', 30)
>>> names = ['Tom', 'Dick', 'Harry']
>>> ages = [50, 35, 60]
>>> dict(zip(names, ages))
{'Harry': 60, 'Dick': 35, 'Tom': 50}
Работа с текстом
Сравнение содержания двух текстовых файлов http://www.cyberforum.ru/python/thread1452346.html http://aidalinux.ru/w/Grep grep: коллекция примеров использования
вместо
grep -F -f 2.txt 1.txt > 3.txt (все совпадающие)
grep -Fv -f 2.txt 1.txt > 3.txt (разница)
grep -i -Fv -f 2.txt 1.txt > 3.txt (разница без учёта регистра)
pcregrep -vFf 2.txt 1.txt
эти точнее
diff --old-line-format=$'%l\n' --new-line-format='' --unchanged-line-format='' <(sort -u 2.txt) <(sort -u 1.txt)
comm -23 1.txt 2.txt
comm -13 <(sort -u 1.txt) <(sort -u 2.txt)|cat > output
Compare-Object (gc 1.txt) (gc 2.txt) -PassThru
$ cat 1.txt
one two three four
$ cat 2.txt
two three one
вначале привести к одинаковому регистру
типа
$ tr '[:upper:]' '[:lower:]' lower.txt
Все буквы будут большими:
$ sed -i 's/.*/\U&/' 1.txt
Все буквы будут маленькими:
$ sed -i 's/.*/\L&/' 1.txt
>>> with open('1.txt', 'r', encoding='utf-8-sig') as fileinput: fileinput.read().lower();
>>> data = [set(open(i).read().split()) for i in ('1.txt', '2.txt')]
>>> print(data[0].difference(data[1]))
nano diff_files1.py
python3 -m diff_files1
# запись with open("filename.txt", "w") as file: file.write("hello world")
# чтение целиком for line in open('filename.txt'): print(line) # построчное чтение
for line in open('filename.txt').xreadlines(): print(line) # в python2x
for line in open('filename.txt').readlines(): print(line, end='') # в python3x
B = 'spamspamspam' open('savetree.txt', 'w').write(str(B)) # Сохранить в файл для последующего просмотра open('latindata', 'w', encoding='latin-1').write(B) # Запись в latin-1 open('utf8data', 'w', encoding='utf-8').write(B) # Запись в utf-8 open('latindata', 'r', encoding='latin-1').read() # Декодирование выполняется при чтении open('utf8data', 'r', encoding='utf-8').read() # в соответствии с названием кодировки open('latindata', 'rb').read() # Прочитать двоичные данные
import pysed print(pysed.replace("очень очень много букв", 'о', '!!!!')) http://rtfm.co.ua/python-modul-pysed-rasshirennyj-analog-redaktora-sed/ https://pypi.python.org/pypi/pysed
правильное чтение
найти слово в тексте https://pynative.com/python-search-for-a-string-in-text-files/
транслитерация
pip install transliterate >>> from transliterate import translit >>> print(translit(u"всякий разный текст", 'ru', reversed=True))
Кодировки
# -*- coding: utf-8 -*- или # coding: utf8
import sys sys.getdefaultencoding() # Кодировка по умолчанию import encodings.aliases list(encodings.aliases.aliases) print(encodings.aliases.aliases)
import encodings.aliases
arr = encodings.aliases.aliases
keys = list(arr.keys())
keys.sort()
for key in keys:
print("%s => %s"% (key, arr[key]))
>>> from encodings.aliases import aliases
>>> def find(q):
... return [(k,v) for k, v in aliases.items() if q in k or q in v]
...
>>> find('1252') # multiple aliases
[('1252', 'cp1252'), ('windows_1252', 'cp1252')]
>>> find('koi')
[('cskoi8r', 'koi8_r')]
>>> a=find('')
>>> a.sort()
>>> print(a)
[большой список]
import pkgutil
import encodings
false_positives = set(["aliases"])
found = set(name for imp, name, ispkg in pkgutil.iter_modules(encodings.__path__) if not ispkg)
found.difference_update(false_positives)
print(found)
>>> import chardet >>> s = '\xe2\x98\x83' # ☃ >>> chardet.detect(s) {'confidence': 0.505, 'encoding': 'utf-8'}
from encodings.aliases import aliases print aliases.keys()
import os import encodings os.listdir(os.path.dirname(encodings.__file__))
https://docs.python.org/3/library/codecs.html#standard-encodings https://docs.python.org/3/library/codecs.html#python-specific-encodings http://stackoverflow.com/questions/1728376/get-a-list-of-all-the-encodings-python-can-encode-to
Шестнадцатеричное значение кода ASCII
>>> hex(ord('&'))
'0x26'
>>> hex(ord('+'))
'0x2b'
|
Декабрь 10, 2015
12:31 am - вирус на python: изучаем возможности полноценного злокодинга на интерпретируемом языке
Новый год — самое время для легких извращений. Хотя для тебя, читающего эту статью практически весной, год уже не новый, да и сама идея изучения вируса, написанного на питоне, может показаться вовсе даже не легким извращением… ( Читать дальше...Свернуть ) https://xakep.ru/2011/03/13/55980/
|
Ноябрь 30, 2015
Октябрь 24, 2015
03:14 am - 11 наиболее часто используемых фрагментов кода на Python
Python — один из наиболее популярных языков программирования, превзошедший по популярности по индексу TIOBE язык PHP. Синтаксис Python может показаться странным по началу, особенно для разработчиков на Java. Некоторые фрагменты кода используются довольно часто, но для новичков их воспроизведение может оказаться не под силу. Такие фрагменты называют «идиомами». Их прочтение может оказаться зачастую полезным для изучения нового языка программирования. В этой статье мы познакомим вас с некоторыми из наиболее популярными фрагментами кода. ( Читать дальше...Свернуть )
|
Сентябрь 30, 2015
Сентябрь 29, 2015
05:32 pm - Сборка исполняемого файла из скриптов Python

Писать программы на питоне быстро, просто, удобно, и приятно, но поставлять их конечному пользователю не очень легко. Тут мы сталкиваемся по меньшей мере с двумя проблемами:
углубиться в тему Во-первых поставляя исходный скрипт нужно позаботится о присутствии интерпретатора нужной версии у пользователя да еще и нужных модулей.
Во-вторых отдавая пользователю текстовый скрипт он получает возможность изменять его, что для некоторых приложений крайне недопустимо. Этот пункт касается не только python а и других динамических языков с интроспекцией. Безусловно, любой исполняемый файл написанный на компилируемом языке можно дезасемблировать, но это требует от злоумышленника большего опыта и больший усилий. А вот получить даже из байт-кода в .pyc файле текстовый .py может любой кто умеет пользоваться google.
В этой статье мы попробуем разобраться с решением обоих проблем.
Будем создавать 32-х битный файл для винды, собрать 64-бит версию вы сможете по аналогии, но х32 версия обязательна так как может работать как на 32-битных виндовсах так и на 64-х. Эта инструкция в принципе должена работать и под linux с небольшими изменениями.
Установка cython
У меня уже установлен python версии 3.4.2 (32 бит):
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32
Разработку скрипта я веду в виртуальном окружении, то есть начиная новый проект я выполняю:
c:\Python34\python.exe -m venv project_env
При этом в текущей папке создается папка project_env с копией интерпретатора и туда мы можем ставить любые модули не засоряя системный python. Правда перед началом работы нужно активировать виртуальное окружение выполнив:
project_env\Scripts\activate.bat
При этом в приглашении в командной строке должно быть видно "(project_env)". Если вы используете среду разработке (например eclipse или PyCharm), то в ней нужно задать интерпретатор из папки project_env.
Для компиляции исходных кодов .py в архитектурный код мы должны установить модуль cython. Он позволит собирать наши скрипты в объектный код путем преобразования программ на питоне в язык си. Но для этого нам нужно настроить компилятор С. Тут у нас есть два решения: либо использовать Microsoft Visual C, либо открытый gcc из mingw, совместимый с MVC. Конечно же мы выбираем gcc.
Устанавливая Mingw нужно выбрать пакеты:

Установив компилятор мы должны прописать к нему путь в PATH добавив туда: C:\MinGW\bin;C:\MinGW\msys\1.0\bin . После этого нужно перезапустить cmd в которой запущено виртуальное окружение и затем проверить прописался ли path, выполнив echo %PATH%. Потом повторно активировать окружение.
Осталось указать компилятор установщику pip. Для этого создаем файл c:\Python34\Lib\distutils\distutils.cfg и в него добавляем:
[build] compiler=mingw32
Примечание: идеологически файл distutils.cfg мы должны создавать в виртуальном окружении а не в папке Python. Но в силу непонятных причин pip отказался его подхватывать из project_env\Lib\distutils\distutils.cfg либо из project_env\pydistutils.cfg. Если у кого-то получится - пишите в комментариях.
Наконец запускаем в нашем окружении project_env:
pip install cython
В конечном итоге все должно закончится фразой типа:
Successfully installed cython-0.22
Кроме cython нам опционально понадобится пакет pywin32. Он понадобится для включения в exe-файл информации о версии. Для python 2.7 его можно установить через pip, однако для 3.4 пока поддерживается только отдельный инсталлятор, который можна найти тут: http://sourceforge.net/projects/pywin32/files/pywin32/ Так как мы используем venv, устанавливать нужно при помощи easy_install -N, например:
easy_install -N "Downloads\pywin32-219.win32-py3.4.exe"
Работа над проектом
Наконец можем приступать к компиляции рабочего проекта. Смысл состоит в том чтобы вынести весь код который мы хотим скрыть в пакеты и оставить в рабочем каталоге только основной файл, например main.py, в котором будет минимум вашего кода. Выбор имени главного модуля повлияет на название исполняемого файла (например main.exe), так что выбирайте его согласно названию вашей программы. Пакетом в питоне как известно считается папка в которой присутствует файл __init__.py (желательно что бы он был пустой, так как он не будет компилироваться).
Например мы можем разместить файлы проекта в такую структуру:
каталог_проекта
|
|-- gui
| |
| |-- __init__.py
| |-- login_window.py
| |-- main_window.py
|
|-- logic
| |
| |-- __init__.py
| |-- program_logic.py
|
|-- defs
| |
| |-- __init__.py
| |-- program_logic.py
|
|-- res
| |
| |--appicon.ico
| |--applogo.png
|
|-- main.py
В проекте у меня три пакета:
- gui - пакет с файлами определения графических интерфейсов. Например я использую кросс-платформенный открытый PySide основный на Qt.
- logic - пакет со всякими модулями определяющими логику работы программы
- defs - пакет с константами и определениями.
Кроме того у меня есть папка res для всяких ресурсов (иконок картинок и т.д.), которые нужно будет поставлять вместе с программой.
Для сборки релиза я предлагаю создать ряд скриптов, которые позволят автоматизировать процесс.
Генерация файла версии
Начнем со скрипта генерирующего версию программы gen_version.py. Его нужно создать в каталоге проекта(рядом с main.py) Этот скрипт не есть обязательным но очень полезным с точки зрения сопровождения программы. Скрипт достает номер ревизии и хеш коммита из репозитория системы контроля версий git, находящегося в папке проекта. Если вы используете другую СКВ, например svn, вам не составит труда адаптировать скрипт. Если вы не используете системы контроля версий вообще, но все же хотите генерировать файл версии, то простым решением будет обычный инкримент номера (до открытия файла на записать нужно открыть его для чтения вычитать текущий номер, если удалось сделать +1, иначе присвоить ноль). Кроме этого gen_version.py подсчитывает CRC32 всех исходников .py и записывает время запуска этого скрипта (типа время и дата сборки). Вот его код:
Выполнив функцию create_version_file(путь_к_файлу_версии), мы получаем файл вроде такого:
COMMIT_REVISION = 3 COMMIT_HASH = 0x11b38900 SOURCES_CRC = 0xac699a53 BUILD_TIME = 1425129933.589303
COMMIT_REVISION можно использовать как версию программы (он будет увеличиваться от коммита к комиту при условии что мы будем делать релизы из одной ветки), COMMIT_HASH поможет нам найти коммит, из которого создавалась версия, например мы сможем на него вернутся и протестировать багу. SOURCES_CRC покажит реальное сотояние исходников, что позволит определить был ли реально сделан коммит или нет, а BUILD_TIME содержит timestamp указывающий на дату и время сборки.
Компиляция пакетов при помощи cython
Создаем файл compile.py в каталоге проекта.
Создание исполняемого файла
Создаем в папке проекта скрипт makebin.py
Если вы не используете генерацию версии замените строку COMMIT_REVISION на свое значение. Также укажите свои "имя_программы", "Короткое описание программы", путь к иконке res/appicon.ico. Также обратите внимание что в packages нужно перечислить используемые в импортах пакеты, в том числе внешние, например "os", "Crypto" и т.д.
Скрипт сборки
Ну и последнее что осталось сделать, это создать наконец окончательный скрипт который будет вызывать другие скрипты. В папке проекта создаем build_release.py:
Тут мы выполняем генерацию версии в файл defs/version.py а затем копируем рекурсивно все содержимое папки проекта в под-папку building, переходя в нее мы и начинаем сборку. Это позволяет нам не изменять основную папку и не создавать в ней всякого мусор. Папка building при каждой новой сборке полностью удаляется что позволяет избавиться от конфликтующих или просто ненужных файлов в процессе сборки.
Затем мы выполняем компиляцию модулей в пакете, и после этого удаляем все .py, .c, .pyc файлы в пакетах (кроме пустых __init__.py, которые по прежнему определят пакет). Так мы гарантируем, что исходных файлов не осталось в пакетах, а остались только скомпилированные cython-ом.
Ну и напоследок мы собираем все в .exe файл, и копируем папку с релизом, в которую войдут папка ресурсов res и необходимые библиотеки. Все это будет находится в building\build\exe.win32-3.4\. Эту папку можно завернуть в SFX архив, или в какой-нибудь инсталлятор (например InnoSetup).
Запуск скрипта нужно выполнять в виртуальном окружении при помощи:
python build_release.py
Бонус: создание инсталлятора для Windows при помощи Inno Setup
Скачать Inno Setup, тут: http://www.jrsoftware.org/isdl.php
В папке проекта создаем папку inno_setup, в нее помещаем два bmp-файла:
- WizModernImage-IS.bmp
- WizModernSmallImage-IS.bmp
Скопировать их можно из "c:\Program Files (x86)\Inno Setup 5\" (или без x86) и по желанию подредактировать под свои нужды, например используя GIMP (Формат bmp должен быть 24 разряда на цвет пикселя).
Также создаем скрипт формирования иснталлятора proj.iss (кодировка ANSI cp1251):
Первые 4-5 срок скрипта измените под свой проект. Теперь в build_release.py можем добавить:
print(">> Building installer") os.system('"c:\Program Files (x86)\Inno Setup 5\ISCC.exe" inno_setup\proj.iss')
После запуска "python build_release" в папке \building\inno_setup\installer забирайте свежий инсталлятор! ____________________________________________________ ____________________________________________________
ещё способы, для простых вещей: cython --embed my_script.py -o my_script.c gcc -g -O2 -o my_script.exe my_script.c `python-config --includes --ldflags`
Ставится Cython через pip: pip install Cython
Cython → C: cython -2 pi_approximater.pyx -o pi_approximater.c
Компилируем С-шный код: gcc -g -O2 -shared -o pi_approximater.so pi_approximater.c python-config --includes --ldflags -fPIC
http://nuitka.net/doc/user-manual.html pip install -U nuitka nuitka --module some_package --recurse-directory=some_package nuitka --recurse-all my_proga.py
Ставится через pip: pip install nuitka
Для генерации исполняемого файла достаточно выполнить команду: python -m nuitka --follow-import some_program.py
Для компиляции модуля: python -m nuitka --module some_module.py
Для компиляции пакета: python -m nuitka --module some_package --include-package = some_package
либо
http://www.pyinstaller.org/ PyInstallerGUI How to create Python executables python drag and drop explorer files to tkinter entry widget Convert Python application to exe file Python для Начинающих - Конвертирование .py в .exe
ссылки Компиляция Python https://web.archive.org/web/20161108064748/http://bovs.org/post/144/sborka-ispolnyaemogo-faila-iz-skriptov-python http://nuitka.net/doc/user-manual.html Компиляция Windows программы в Ubuntu Linux http://blog.golovin.in/portable-mingw-and-msys/ https://cygwin.com/index.html https://msys2.github.io/ https://habrahabr.ru/post/282359/ cx_Freeze + virtualenv Python Tools для Visual Studio, о новинках из первых рук https://github.com/Microsoft/PTVS/wiki/PTVS-Installation Параметры компилятора, упорядоченные по категориям Python 3. Компиляция в EXE и MSI Python компилятор - Бета-тестирование ?? Tutorial: Compile Python to EXE как сделать единый файл exe из скрипта python используя py2exe Как защитить Python-код от модификации? Компилятор GCC Использование GCC С++ для начинающих MinGW командная строка. Работа из консоли Windows MXE (M кросс-среда) - это GNU Makefile, компилирует кросс-компилятор и кросс-компилирует множество библиотек О GCC, компиляции и библиотеках GCC online documentation
|
Август 20, 2015
12:45 am - как сделать единый файл exe из скрипта python используя py2exe и PyInstaller

открыть, глянуть 1. скачать и установить свежую версию Python тут, не забыть добавить Python в переменные среды https://www.python.org/downloads/
2. установить py2exe в командной строке переходим в папку с установленным питоном cd C:\Python34
и устанавливаем py2exe pip install py2exe
3. создать файл setup.py с таким содержимым
from distutils.core import setup import py2exe setup(console=['myscript.py'], zipfile=None) # myscript.py - скрипт из которого будет exe
4. собираем экзешник setup.py py2exe -b 0
5. экзешник находится в каталоге dist C:\Python34\dist
6. проверяем как работает cd C:\Python34\dist myscript.exe
PS. альтенатива:
cython --embed my_script.py -o my_script.c gcc -g -O2 -o my_script.exe my_script.c `python-config --includes --ldflags`
ещё:
pyinstaller -D -F -n=ExeFileName -w PythonModule.py Аргументы: -D собрать в одну директорию -F собрать в один файл -n= имя выходного исполняемого файла -w оконный режим
http://nuitka.net/doc/user-manual.html pip install -U nuitka nuitka --module some_package --recurse-directory=some_package nuitka --recurse-all my_proga.py
http://www.pyinstaller.org/ PyInstallerGUI How to create Python executables python drag and drop explorer files to tkinter entry widget Convert Python application to exe file Python для Начинающих - Конвертирование .py в .exe
PyInstaller компиляция в единый файл https://www.youtube.com/watch?v=9bK5JJFVMbk Хауди Хо™ - Просто о мире IT! Учим Python Kivy #5 - Компиляция под Windows
spec файл из ролика
Как преобразовать скрипт Python в .exe файл Как создать exe файл для Python кода с помощью PyInstaller https://pypi.org/project/auto-py-to-exe/ https://github.com/brentvollebregt/auto-py-to-exe http://pythonworld.ru/osnovy/program-compilation-with-cx-freeze.html Компиляция модулей Python - Python Tutorial: Compile Python to EXE Делаем standalone exe на IronPython Создаём окружение для PyQt5 в Linux MInt (Ubuntu) tutorial pyqtdeploy, или упаковываем Python-программу в exe'шник… the hard way PyQt5 GUI-тулза которая конвертирует из .py в .exe
Как защитить Python-код от модификации? Сборка испольняемого файла из скриптов Python
|
Август 13, 2015
Июль 3, 2015
10:51 pm - mps-youtube - мультиплатформенный плеер для YouTube в командной строке

раскрыть Использование: Запускается mps-youtube с помощью команды
mpsyt
Найти нужный ролик:
/название_ролика
проиграть его - поставить цифру выбранного ролика
выбранный_номер
скачать:
d выбранный_номер
получить url и информацию о ролике
i выбранный_номер
играть ролик по прямой ссылке:
playurl ссылка
установка
sudo apt-get install pip3 sudo pip3 install mps-youtube
обновление
pip3 install mps-youtube --upgrade
Просмотр текущих настроек:
set
Сброс изменений настроек:
set all default
Отключение опции поиска только музыки:
set search_music False
mps-youtube по умолчанию воспроизводит только аудио, активировать воспроизведение видео можно отключив эту опцию командой:
set show_video True
В качестве медиаплеера "по умолчанию" mps-youtube использует MPV, заменить его (например на MPlayer) можно командой:
set player mplayer
Для использования других клавиатурных сочетаний можно импортировать соответствующий файл (input.conf) из MPV или MPlayer (в ~/.config/mps-youtube).
https://github.com/mps-youtube/mps-youtube https://pypi.python.org/pypi/mps-youtube http://zenway.ru/page/mpsyt http://rus-linux.net/MyLDP/consol/youtube-player-in-consol.html
|
Июль 2, 2015
Июнь 19, 2015
Апрель 21, 2015
04:39 pm - Pelican. Расширенные настройки блога.
Начало читаем в предыдущей статье как установить Pelican.
Чтобы было полегче с настройками, необходимо выбрать хорошую тему, в которой предустановлено большинство нужных вещей, а потом уже допиливать её по необходимости :)
Все изменения вносятся в основной файл настроек pelicanconf.py ( Читать дальше...Свернуть ) http://webquant.ru/posts/pelican-extra/ Расшариваем веб-сайт на localhost в глобальную сеть интернет.
|
04:31 pm - Pelican. Установка блога.
Подготовка зависимостей
Для того чтобы сделать блог, нам понадобиться установить генератор статических сайтов (наш блог будет на Pelican), который будет преобразовывать все текстовые записи в Markdown в статичные HTML страницы. Начнем с подготовки и установим все необходимые зависимости: ( Читать дальше...Свернуть ) http://webquant.ru/posts/pelican/
|
04:04 am - Создаем свой персональный сайт на Github.
Mало кто знает, что Github кроме превосходного хостинга ваших Git проектов может также хостить ваш персональный сайт. Например на нем расположен этот блог. В своей первой статье я расскажу как максимально удобно настроить эту функциональность. ( Читать дальше...Свернуть ) http://klen.github.io/github-blog.html
|
Март 5, 2015
01:32 am - Возьми Python с собой
Думали ли вы (в очередной раз подготавливая среду для Python) о том, как было бы здорово, если бы не приходилось настраивать с нуля рабочее окружение (да ещё и под разными операционными системами), а можно было бы сесть и просто начать писать? Я случайно открыл для себя pythonanywhere.com — сервис, позволяющий вести разработку на Python онлайн, прямо в браузере. Под катом — описание сервиса с картинками и видео. ( Читать дальше...Свернуть ) http://www.pvsm.ru/python/8193 портабельный python
PS плагины для хрома
Python Shell https://chrome.google.com/webstore/detail/python-shell/diebclfbkfamdacginejnaookipodhng
Python https://chrome.google.com/webstore/detail/python/nodpmmidbgeganfponihbgmfcoiibffi
Python Fiddle https://chrome.google.com/webstore/detail/python-fiddle/imldfcloildiapnfjoocfpdmoajnjelf
|
Декабрь 26, 2014
05:31 pm - Sublime Text 3 и консоль python

развернуть Есть неплохой редактор Sublime Text, в нём удобно редактировать код, для того чтобы можно было сразу смотреть на его исполнение необходимо:
1. Установить Sublime Package Control, он поможет легко управлять плагинами, нажимаем ctrl+` и в открывшейся консоли вставляем код
если возникает ошибка Error validating download (got ...... ), please try manual install то взять код здесь https://packagecontrol.io/installation#st3
2. Устанавливаем необходимые плагины Preferenses -> Package Control -> Install Package в окно вставляем плагины: SublimeREPL SublimePythonIDE если нужно http://damnwidget.github.io/anaconda/ и прочие необходимые, которые находятся по запросу в Install Package устанавливаем их список годных схем оформления и плагинов:
3. Создаём для запуска горячую клавишу: Preferenses -> Key Bindings-User вставить в Key Bindings-User следующий код:
Теперь при нажатии win+z происходит исполнение кода
Прочие мелочи: Preferenses -> Settings-User вставить в Settings-User следующий код:
или например этот:
Sublime Text можно настроить на любой вкус, чтобы изменить тему нужно в Settings-User всавить вместо приведённой "theme": "Sunrise.sublime-theme" вот некоторые из тёмных тем:
темы и стили оформления можно посмотреть тут:
https://packagecontrol.io/search/Theme https://colorsublime.github.io/
горячие клавиши:

русификация меню (если нужна) есть по ссылке http://dimox.name/sublime-text-russian-menu/ http://files.is-best.net/Public/Sublime_Text_2/SublimeTextRussianMenu/
скрипт, чтоб не заморачиваться, использовать если нет каталогов $HOME/.config/sublime-text-3/Packages/Default/ и $HOME/tttmppp
Для того чтобы код выполнялся в интерпретаторе python3 необходимо:
1. Изменить PYTHONPATH: Preferences -> Package Setting -> SublimeREPL -> Setting - Default - копируем содержимое Preferences -> Package Setting -> SublimeREPL -> Setting - User вставляем содержимое, заменяя "default_extend_env": {}, на "default_extend_env": {"PYTHONPATH": "YOU_PATH"}, Где вместо YOU_PATHs - прописываем нужные вам пути узнать PYTHONPATH можно так: запускаем интерпретатор python3 вбиваем там import sys print(sys.path) получаем ['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-i386-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
2. в Preferenses -> Key Bindings-User изменить "cmd": ["python", "-u", "$file_basename"], на "cmd": ["python3", "-u", "$file_basename"],
Sublime Text 3 и gcc Как установить Sublime Text для работы с C/C++ Sublime Text как IDE для ARM на примере STM32
нужно установить All autocomplete, C++ completions, C++ snippets и (если есть необходимость) SublimeGDB запуск на компиляцию (и выполнение): Ctrl + b
советы Как скомпилировать и запустить C в sublime text 3? Для системы сборки sublime, реализующей команду меню Выполнить : Перейдите в меню Инструменты->Система сборки->Новая система сборки... Или Создать файл ~/.config/sublime-text-3/Packages/User/GCC.sublime-build И вставьте это:
1. Создайте новую систему сборки в Sublime: Инструменты > Система сборки > Новая система сборки. .. 2. Будет создан новый файл с именем untitled.sublime-build . Если нет, перейдите в Настройки > Обзор пакетов > Пользователь Если файл untitled.sublime-build есть , откройте его , если его нет , создайте его вручную и откройте . 3. Скопируйте и вставьте приведенный ниже код в вышеупомянутый файл untitled.sublime-build и сохраните его.
Закройте файл. Вы почти закончили! 4. Наконец , переименуйте свой файл с untitled.sublime-build на myC.sublime-build , или вы можете также показать свое творчество здесь. Просто сохраните расширение файла таким же. 5. Наконец , установите для текущей системы сборки имя файла, которое вы написали на предыдущем шаге. В этом случае это myC
Помеченные строки (Bookmarks) Ctrl + F2 (по ней же и снимается), чтобы была возможность делать кликом мыши:
nano $HOME/.config/sublime-text-3/Packages/Default/Context.sublime-menu
добавить строчку:
{ "command": "toggle_bookmark", "caption": "Отметить строку" },
И в контекстном меню появится соответствующая команда.
Как вернуть верхнюю панель инструментов в Sublime Tex 2.02? если случайно скрылось меню ;)
Нажимаете Alt, затем «View» ► «Show menu»
для Linux: ctrl+shift+p, в водим в поиске "menu" и выбираем "View: Toggle Menu".

чтобы сохранить сессию
Preferences > Package Control), select Package Control: Install package, and search for “Session Manager”. https://packagecontrol.io/packages/Session%20Manager The commands, accessible through the command palette (ctrl+shift+p), are:
Session Manager: Save Session Session Manager: Load Session Session Manager: Delete Session
горячие клавиши
Работа с текстом
| Хоткей |
Описание |
| ctrl+l |
Выделить строку. |
| ctrl+shift+m |
Выделить текст между двумя парными скобками. |
| ctrl+shift+a |
Выделить текст между двумя парными тегами. |
| ctrl+shift+j |
Выделить текст с соответствующим отступом. |
| ctrl+shift+space |
Выделить по контексту. |
| ctrl+shift+left |
Выделить слово слева. |
| ctrl+shift+right |
Выделить слово справа. |
| ctrl+a |
Выделить весь текст. |
| ctrl+shift+l |
Разделить выделенные строки на независимые участки редактирования. |
| ctrl+shift+up |
Переместить выделенные строки вверх. |
| ctrl+shift+down |
Переместить выделенные строки вниз. |
| ctrl+shift+d |
Дублировать строку. |
| ctrl+shift+k |
Удалить строку. |
| ctrl+backspace |
Удалить часть слова до курсора. |
| ctrl+delete |
Удалить часть слова после курсора. |
| ctrl+shift+backspace |
Удалить текст от курсора и до начала строки. |
| ctrl+k, ctrl+backspace |
Удалить текст от курсора и до начала строки. |
| ctrl+shift+delete |
Удалить текст от курсора и до конца строки. |
| ctrl+k, ctrl+k |
Удалить текст от курсора и до конца строки. |
| ctrl+j |
Объединить выделенные строки. |
| alt+q |
Объединить строки в параграфе. |
| ctrl+enter |
Добавить пустую строку под курсором. |
| ctrl+shift+enter |
Добавить пустую строку над курсором. |
| ctrl+alt+up |
Добавить курсор на следующей или предыдущей строке. |
| ctrl+alt+down |
Добавить курсор на следующей или предыдущей строке. |
| ctrl+/ |
Добавить или убрать однострочный комментарий. |
| ctrl+shift+/ |
Добавить или убрать блочный комментарий. |
| f9 |
Отсортировать строки в алфавитном порядке. |
| ctrl+f9 |
Отсортировать строки в алфавитном порядке с учетом регистра. |
| ctrl+k, ctrl+l |
Трансформировать выделенный текст в нижний регистр. |
| ctrl+k, ctrl+u |
Трансформировать выделенный текст в верхний регистр. |
| ctrl+t |
Транспонировать текст. |
| alt+. |
Закрыть незакрытый тег. |
| alt+shift+w |
Обернуть тегом выделенный текст. |
| insert |
Переключить режим ввода: вставка или замена. |
| ctrl+k, ctrl+space |
Установить метку. |
| ctrl+k, ctrl+a |
Выделить текст от курсора до метки. |
| ctrl+k, ctrl+x |
Поменять местами метку и курсор. |
| ctrl+k, ctrl+w |
Удалить метку. |
| ctrl+k, ctrl+g |
Удалить все метки. |
| ctrl+] |
Убрать отступ. |
| ctrl+[ |
Добавить отступ. |
| ctrl+y |
Повторить последнее действие. |
| ctrl+c or ctrl+insert |
Копировать. |
| ctrl+v or shift+insert |
Вставить. |
| ctrl+shift+v |
Вставить с отступом. |
| ctrl+x |
Вырезать. |
| shift+delete |
Вырезать. |
| ctrl+z |
Отмена последнего действия. |
| ctrl+shift+z |
Повторить последнее отмененное действие. |
| ctrl+u |
Отменить последнее выделение. |
| ctrl+shift+u |
Повторить последнее отмененное выделение. |
Поиск и замена
| Хоткей |
Описание |
| ctrl+f |
Открыть панель поиска. |
| ctrl+h |
Открыть панель поиска и замены. |
| ctrl+shift+f |
Открыть панель поиска и замены по всем файлам проекта. |
| ctrl+i |
Открыть панель быстрого поиска и поиск. |
| ctrl+shift+i |
Открыть панель быстрого поиска и поиск в обратном направлении. |
| alt+a |
Включить или выключить режим сохранения регистра на панели поиска и замены. |
| alt+r |
Включить или выключить использование регулярных выражений на панели поиска и замены. |
| f6 |
Включить или выключить проверку правописания. |
| alt+c |
Включить или выключить чувствительность к регистру на панели поиска и замены. |
| alt+w |
Включить или выключить режим поиска слова целиком на панели поиска и замены. |
| alt+enter |
Найти все. |
| ctrl+` |
Показать панель. |
| shift+enter |
Поиск в обратном направлении. |
| ctrl+alt+enter |
«Заменить все» на панели поиска и замены. |
| ctrl+shift+h |
Заменить текст далее. |
| f3 |
Поиск. |
| shift+f3 |
Поиск в обратном направлении. |
| f4 |
Переход к следующему результату поиска по всем файлам. |
| shift+f4 |
Переход к предыдущему результату поиска по всем файлам. |
| ctrl+f3 |
Быстрый поиск. |
| ctrl+shift+f3 |
Быстрый поиск в обратном направлении. |
| ctrl+d |
Найти и выделить текст. |
| ctrl+k, ctrl+d |
Пропустить выделенный текст. |
| alt+f3 |
Найти все. |
| ctrl+e |
Скопировать слово или выделенный текст в окно поиска. |
| ctrl+shift+e |
Скопировать слово или выделенный текст в окно замены. |
| ctrl+f6 |
Перейти к следующей ошибке. |
| ctrl+shift+f6 |
Перейти к предыдущей ошибке. |
| ctrl+p |
Открыть окно поиска файла «Goto Anything…». |
| ctrl+r |
Открыть окно перехода к функциональному блоку. |
| ctrl+g |
Открыть окно для перехода к заданной строке. |
| ctrl+; |
Открыть окно для перехода к заданному слову. |
Фолдинг
| Хоткей |
Описание |
| ctrl+shift+[ |
Свернуть код. |
| ctrl+shift+] |
Развернуть код. |
| ctrl+k, ctrl+1 – 9 |
Свернуть код соответствующего уровня. |
| ctrl+k, ctrl+0 or ctrl+k, ctrl+j |
Развернуть все. |
| ctrl+k, ctrl+t |
Свернуть атрибуты тегов. |
Навигация
| Хоткей |
Описание |
| ctrl+alt+p |
Открыть окно выбора проектов. |
| ctrl+f2 |
Установить или снять закладку. |
| f2 |
Перейти к следующей закладке. |
| shift+f2 |
Перейти к предыдущей закладке. |
| alt+f2 |
Выделить все закладки. |
| ctrl+shift+f2 |
Удалить все закладки. |
| ctrl+k, ctrl+c |
Переместить экран к курсору. |
| ctrl+up |
Прокрутка окна редактирования. |
| ctrl+down |
Прокрутка окна редактирования. |
| ctrl+m |
Переместить курсор к парной скобке. |
Управление окнами
| Хоткей |
Описание |
| alt+0 – 9 |
Выбор соответствующей вкладки. |
| ctrl+f4 |
Закрыть вкладку. |
| ctrl+tab |
Переключиться на следующую вкладку. |
| ctrl+shift+tab |
Переключиться на предыдущую вкладку. |
| ctrl+pageup |
Переключиться на вкладку слева. |
| ctrl+pagedown |
Переключиться на вкладку справа. |
| alt+shift+1 – 5 |
Управление количеством и расположением областей редактирования. |
| alt+shift+8 – 9 |
Управление количеством и расположением областей редактирования. |
| ctrl+1 – 4 |
Переключиться в соответствующую область. |
| ctrl+shift+1 – 4 |
Переместить вкладку в соответствующую область. |
| f11 |
Развернуть окно во весь экран. |
| shift+f11 |
Переключиться в «Отвлеченный режим». |
| ctrl+k, ctrl+b |
Показать или скрыть боковую панель. |
| ctrl+0 |
Переключить фокус на боковую панель. |
| ctrl+n |
Создать новую вкладку. |
| ctrl+w |
Закрыть текущую вкладку. |
| ctrl+shift+n |
Создать новое окно. |
| ctrl+shift+w |
Закрыть окно. |
Работа с файлами
| Хоткей |
Описание |
| ctrl+o |
Вызвать окно «Открыть файл». |
| ctrl+shift+t |
Открыть последний закрытый файл. |
| ctrl+s |
Сохранить текущий файл. |
| ctrl+shift+s |
Вызвать окно «Сохранить как». |
| alt+o |
Переключение между файлами представления и реализации. |
Разное
| Хоткей |
Описание |
| ctrl+shift+p |
Открыть окно списка функций. |
| ctrl++ |
Увеличить размер шрифта. |
| ctrl+- |
Уменьшить размер шрифта. |
| ctrl+q |
Запустить или остановить запись макроса. |
| ctrl+shift+q |
Воспроизвести макрос. |
| ctrl+alt+shift+p |
Отобразить в статусной строке название контекста, в котором находится курсор. |
| f7 |
Выполнить |
| ctrl+b |
Выполнить |
| ctrl+shift+b |
Выполнить |
| ctrl+break |
Отменить выполнение |
доп. плагины https://packagecontrol.io/packages/Terminus https://github.com/daveleroy/sublime_debugger
удалённое редактирование конфигов вставить в свой файл /etc/ssh/sshd_config на стороне сервера: Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server закомментить #Subsystem sftp /usr/lib/openssh/sftp-server
systemctl restart sshd
в /etc/sudoers просто поместите новые записи после них. sudo visudo Новая запись должна выглядеть myuser ALL=(ALL) NOPASSWD: ALL для одного пользователя, или %sudo ALL=(ALL) NOPASSWD: ALL для группы.
разное отредактировать хоткей множественного курсора https://www.sublimetext.com/docs/multiple_selection_with_the_keyboard.html
Preferenses -> Key Bindings
в CudaText В command-palette нажми F9 для задания хоткея. Для команд "carets extend: ..........."
Просмотр и редактирование окончаний строк в Sublime Text установить RawLineEdit Ctrl+Shift+P Raw Line Edit: Toggle Line Edit Mode Raw Line Edit: View Line Endings
ссылки Использование Sublime Text Editor 2 в качестве редактора текста Python 3.x Настройка Sublime Text для Python
https://sublime.wbond.net/installation https://sublime.wbond.net/packages/SublimeREPL http://sublimetext.ru/documentation/горячие-клавиши http://sublimetext.ru/documentation/параметры djbook.ru Рецепты Sublime Text 3 Делаем из Sublime Text 3 IDE для Python и Django Sublime-Text 3. Коротко о главном Как sublimerepl установит на горячую клавишу? Отображение непечатных символов в SublimeText2 как это делается в vim'e Шпаргалка по Sublime Text 2 http://coddism.com/zametki/nastrojka_sublime_text http://blog.brainf.net/soft/nastrojjki-sublime-text/ http://iklmn.net/blog/moi-nastroki-sublime-text-3.html Превращаем Sublime Text 2 в Notepad++ Интегрируем Git в Sublime Text Лучшие плагины Sublime Text 3 Top 12 Sublime Text Plugins Sublime Text 2 хитрости Небольшой обзор Sublime Text 2 Sublime Text — горячие клавиши uzverss JavaScript в консоли Sublime Text uzverss Настройка Sublime Text для работы через прокси ------------------------------------------------------------------------ Олег Молчанов Sublime Text 3 https://www.youtube.com/playlist?list=PLlWXhlUMyooYUgxmybYJiYNTicSHR8nme ------------------------------------------------------------------------ Web Developer Blog Sublime Text 2 https://www.youtube.com/playlist?list=PLVfMKQXDAhGXTtaRwrHzPLNQALkVhGWKj ------------------------------------------------------------------------
|
Декабрь 20, 2014
07:21 pm - IEP тема оформления
есть годный, лёгкий редактор кода IEP но у него по умолчанию гадкая тема оформления, простыми способами её не изменить 1. скачиваем с поддержкой gtk отсюда 2. отрыть в редакторе (с подсветкой кода) файл (где находится программа)iep/source/iep/codeeditor/base.py и добавить в метод __init__ стиль (добавляем сюда)
def __init__(self,*args, **kwds):
....
S["Editor.Line numbers"] = "back:%s, fore:%s" % (back2, back3)
# Apply style
self.setStyle(S)
.... ( Читать дальше...Свернуть ) http://blogs.univ-poitiers.fr/laurentsignac/2013/09/01/sublime-dark-iep/
чтобы переключить настройки ("продвинутые") нужно вбить iep.resetConfig() либо iep.resetConfig(True) в консоль логгера (Tools -> Logger) и перезапустить IEP
|
Июнь 29, 2014
08:07 pm - портабельный python
В линуксе питон всегда с тобой, но в винде это не так ( Решил я сию беду так: дабы на каждый комп не устанавливать в локальной сетке сделал папку с правом на чтение только для избранных ;) так как флешки у компов отрублены, ибо секурность, и большая часть компов вообще на втвари Python взял отсюда Поскольку стандартная консоль винды убога весьма, сделал запуск python в ConEmu для сего в папку App с программой разархивировал то что скачал тут и сотворил там же батник запуска с таким содержимым:
start /b "" "%~dp0ConEmu" python
ссылку на батник отправил на свой рабочий стол теперь мой python всегда со мной )
Возьми Python с собой http://portablepython.com/ Альтернативный терминал для Windows Запуск .bat файла из сетевой папки Урок bat-аники Использование переменных среды в Cmd.exe http://настройкапк.рф/bat_файлы/
|
Декабрь 19, 2011
11:47 pm - конвертирования музыкальной библиотеки
Для полного конвертирования всей музыкальной библиотеки будем использовать скрипт mid3iconv, который поставляется в комплекте пакета python-mutagen. Для правильной работы пакет python-mutagen должен быть версией не ниже 1.1.
1. Устанавливаем пакет python-mutagen:
Debian, Ubuntu, Kubuntu..:
# sudo apt-get install python-mutagen
2. Переходим в директорию с Вашей музыкальной библиотекой:
# cd /home/ВАШ_ЛОГИН/Музыка
Возможно директория с музыкальной библиотекой у Вас будет другой.
3. Конвертируем библиотеку:
# find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1
|
09:33 pm - Скачивание любого сайта с помощью Python себе на компьютер
____ _ __ __ ______ _____
/ __ \__ _| | / /__ / /_ / ____/___ ____ __ __ /__ /
/ /_/ / / / / | /| / / _ \/ __ \/ / / __ \/ __ \/ / / / / /
/ ____/ /_/ /| |/ |/ / __/ /_/ / /___/ /_/ / /_/ / /_/ / / /
/_/ \__, / |__/|__/\___/_.___/\____/\____/ .___/\__, / /_/
/____/ /_/ /____/
раскрыть https://github.com/rajatomar788/pywebcopy/
pip install pywebcopy pip install validators
взято тут
|
|
|