Архив рубрики: Без рубрики

Таблица умножения на Python за 2 строчки

>>> for i in range(1, 11):
...     print(" ".join(map(str, [i*j for j in range(1, 11)])))
...
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
>>> for i in range(1, 11):
...     print("".join(map(lambda x: str(x).rjust(4), [i*j for j in range(1, 11)])))
...
   1   2   3   4   5   6   7   8   9  10
   2   4   6   8  10  12  14  16  18  20
   3   6   9  12  15  18  21  24  27  30
   4   8  12  16  20  24  28  32  36  40
   5  10  15  20  25  30  35  40  45  50
   6  12  18  24  30  36  42  48  54  60
   7  14  21  28  35  42  49  56  63  70
   8  16  24  32  40  48  56  64  72  80
   9  18  27  36  45  54  63  72  81  90
  10  20  30  40  50  60  70  80  90 100
>>>

Решено: если не работает буфер обмена при RDP-подключении

Варианты:

  1. Найти в диспетчере задач и прибить процесс «Монитор буфера обмена RDP«
  2. В командной строке выполнить:
taskkill /F /IM rdpclip.exe

Pygame — рисование линий, кругов и прямоугольников

>>> import pygame
pygame 2.0.1 (SDL 2.0.14, Python 3.8.10)
Hello from the pygame community. https://www.pygame.org/contribute.html
>>> from pygame.locals import *
>>> pygame.init()
(7, 0)
>>> window = pygame.display.set_mode((800, 600))
>>> window.fill((255, 255, 255))
<rect(0, 0, 800, 600)>
>>> pygame.draw.rect(window, (0, 0, 255), (100, 100, 400, 100), 2)
<rect(100, 100, 401, 101)>
>>> pygame.draw.circle(window, (0, 255, 0), 
...                    [300, 300], 170, 3)
<rect(130, 130, 340, 340)>
>>> pygame.draw.polygon(window, (255, 0, 0), 
...                     [[300, 300], [100, 400],
...                      [100, 300]])
<rect(100, 300, 201, 101)>
>>> pygame.draw.line(window, (0, 0, 0), 
...                  [100, 300], 
...                  [500, 300], 5)
<rect(100, 298, 401, 5)>
>>> pygame.display.update()

Pillow — открытие картинок, рисование, просмотр и сохранение

Открыть файл-картинку:

>>> from PIL import Image
>>> image = Image.open("bike.png")
>>> image.show()
>>>

Сгенерировать, сохранить и открыть картинку:

>>> from PIL import Image
>>> from PIL import ImageDraw
>>> i = Image.new("RGB", (200, 200))
>>> d = ImageDraw.Draw(i)
>>> d.ellipse((100, 100, 150, 200), fill='red', outline=(0, 0, 0))
>>> d.rectangle((20, 10, 30, 20), fill='blue', outline=(255, 255, 255))
>>> d.line((35, 20, 45, 10), fill='pink', width=10)
>>> i.save('draw-ellipse-rectangle-line.jpg', quality=95)
>>> i.show()
>>> 

Как в Python запустить отвязанный (detached) от основной программы процесс

>>> import subprocess
>>> subprocess.Popen(["notepad", r"c:\windows\system.ini"])
<subprocess.Popen object at 0x000001E78BFB6400>
>>>

При таком запуске основная программа не будет дожидаться, пока закончит работу запущенная ей другая программа.

Установка и запуск Trac чисто попробовать

Документация здесь https://trac.edgewall.org/wiki/TranslationRu/TracGuide

Trac можно устанавливать как модуль для Python (https://pypi.org/project/Trac/)

$ pip install Trac

Под проекты создадим папку например в домашней

$ mkdir ~/trac

После установки будут доступны программы tracd — веб-сервер и trac-admin — для администрирования через командную строку.

Команда для запуска веб-сервера:

$ tracd -p 8000 --env-parent-dir ~/trac

После запуска можно войти через браузер на страницу http://127.0.0.1:8000/. Здесь будут отображаться ссылки на доступные проекты, но сначала их надо добавить через trac-admin. Например создадим тестовый проект

$ trac-admin ~/trac/test initenv
Создание нового окружения Trac в ~/trac/test

Trac will first ask a few questions about your environment
in order to initialize and prepare the project database.

 Please enter the name of your project.
 This name will be used in page titles and descriptions.

Название проекта [My Project]> Test project

 Please specify the connection string for the database. By default,
 a local SQLite database is created in the environment directory.
 It is also possible to use an existing MySQL or PostgreSQL database
 (check the Trac documentation for the connection string syntax).

Строка подключения к базе данных [sqlite:db/trac.db]> 

Project environment for 'Test project' created.

You may configure the environment by editing the file:

  ~/trac/test/conf/trac.ini

You can run the Trac standalone web server `tracd` and point
your browser to http://localhost:8000/test.

  tracd --port 8000 ~/trac/test

Navigate to "Help/Guide" to browse the documentation for Trac,
including information on further setup (such as deploying Trac
to a real web server).

The latest documentation can also be found on the project
website:

  https://trac.edgewall.org/

Теперь после перезапуска tracd по адресу http://127.0.0.1:8000/ в списке появится Test project, в который можно заходить.

По умолчанию в созданном проекте ничего нельзя делать — нет прав. Управление правами производится через trac-admin. Поскольку мы установили trac чисто посмотреть покрутить, то включим полные права всем анонимным пользователям без всякого входа

$ trac-admin ~/trac/test permission add anonymous TRAC_ADMIN

Теперь можно перезапускать tracd, будет всё можно.

Прочая полезная информация для общего понимания:

  • лог для тестового проекта будет писаться в ~/trac/test/log/trac.log
  • данные сайта будут храниться в ~/trac/test/db/trac.db (формат SQLite, можно открывать любым подходящим просмотрщиком)
  • настройки — в ~/trac/test/conf/trac.ini, для вступления изменений в силу нужно перезапустить tracd