Расширение Inkscape: Batch Move Guides
Расширение Batch Move Guides для графического 2D редактора Inkscape предоставляет возможность одновременно перемещать все направляющие на нужное расстояние.
Расширение Batch Move Guides для графического 2D редактора Inkscape предоставляет возможность одновременно перемещать все направляющие на нужное расстояние.
В последнее время стало невозможно запустить браузер Internet Explorer на Windows 10/11. Если попытаться запустить его, браузер IE автоматически закроется и запустит браузер MS Edge вместо Internet Explorer.
Но если все же нужно воспользоваться браузером Internet Explorer, его можно запустить из скрипта vbs.
Как запустить браузер Internet Explorer на Windows 10/11Read More »
StarIce — простая CRM с помощью которой вы можете быстро создать договор с партнером из шаблона, добавить к договору технические задачи, выставить по ним крайний срок выполнения — дедлайн, и получить от клиента подтверждение, отправив ему ссылку.
Для того, чтобы убедиться, что список A полностью входит в список B, т.е. все элементы списка A присутствуют в списке B, можно воспользоваться методами «superset» и «subset» стандартного Python класса set.
Конвертация списков в сеты так же позволяет не заботиться о проверке дубликатов, если они имеются в сравниваемых списках.
Метод subset действует от меньшего сета и проверяет, входит ли он в больший сет.
1 2 3 4 5 6 7 8 9 |
A = ['a', 'x', 'z'] A1 = ['a', 'x', 'z', 99] B = list('abcdefghijklmnopqrstuvwxyz') # ['a', 'b', ..., 'z'] print(set(A).issubset(set(B))) # True print(set(A1).issubset(set(B))) # False |
Python: Как проверить, что список A входит в список BRead More »
Андубликатор — это онлайн инструмент для поиска и удаления дубликатов слов.
Этот инструмент поможет быстро найти и удалить все повторяющиеся слова или сроки в тексте или в текстовом списке, разделяя его на элементы по указанным разделителям.
При разработке HTML-страницы часто возникает необходимость расположить колонку с фиксированной шириной в правой части окна браузера, динамически заполняя при этом все оставшееся слева пространство.
Спроектировать подобный шаблон проще всего используя разметку таблицей, однако это вполне возможно и на стандартных элементах «<div>».
HTML-CSS: Создание колонки с фиксированной шириной в правой части страницыRead More »
Для того, чтобы получить информацию об операционной системе, на которой выполняется текущий код, можно воспользоваться модулем platform.
Метод system() возвращает текстовое название операционной системы:
1 2 3 4 5 |
import platform print(platform.system()) # Windows |
WP2D — плагин для WordPress, позволяющий автоматически отправлять в Discord канал анонсы постов из WordPress при их публикации.
Плагин бесплатный. Вы можете поддержать его разработку на Gumroad:
Webhook URL это адресная ссылка, указывающая на определенный канал на сервере в Discord.
Она выглядит следующим образом:
1 |
https://discord.com/api/webhooks/880147380966321/HycCH_DMzkD5zXASVVvj3QRXHUnxs0pxuRzSbBs_UH7p71PS_AXD002Mq |
На этот URL можно отправлять запросы POST для автоматического создания постов на канале Discord.
Это мощный инструмент, который может использоваться, например, для информационных рассылок на канале или кросс-постинга записей из соцсетей.
Copy Permalink to Clipboard — WordPress плагин, добавляющий в интерфейс редактора для работы с постами кнопку «to Clipboard» рядом с полями редактирования ссылки на пост. Нажатие на нее копирует в буфер обмена полную ссылку на пост.
Страница плагина на WordPress.org
Плагин бесплатный. Вы можете поддержать его или скачать с Gumroad:
Для того, чтобы добавить в панель задач Windows 10 кнопку, по клику на которой все открытые окна будут свернуты, нужно:
Кнопка для сворачивания всех окон в панель задач в Windows 10Read More »
InputHint — JQUERY/PHP плагин, добавляющий к полям ввода типа input показ подсказок (вариантов вводимого текста), с возможностью их выбора пользователем, и заполнения поля текстом из выбранной подсказки.
Для того, чтобы уменьшить объем длинной текстовой строки, например для снижения трафика при передаче текстовых данных через Интернет, ее можно сжать перед отправкой и разархивировать после получения. При этом объем передаваемых данных значительно снижается, по сравнению с передачей текстовых строк в их исходном виде.
Чтобы заархивировать текстовую строку в памяти, воспользуемся модулем zlib.
Для сжатия строки мы будем использовать функцию compress. Эта функция принимает во входном параметре строку байт и возвращает эту строку в сжатом виде.
1 2 3 4 5 6 7 8 9 10 11 12 |
import zlib long_text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' print('long_text', len(long_text)) long_text_compressed = zlib.compress(long_text.encode('utf-8')) print('long_text_compressed', len(long_text_compressed)) # long_text 445 # long_text_compressed 270 |
Как видно на простейшем примере, объем строки сократился более чем в полтора раза.
Для того, чтобы добавить вызов программы в контекстное меню Windows Explorer — «Мой компьютер», нужно отредактировать реестр windows.
Редактор реестра windows нужно вызвать с правами администратора и внести в него следующие изменения:
Как добавить вызов программы в контекстное меню Windows ExplorerRead More »
Виджет для WordPress плагина Elementor. Позволяет скрыть адрес вашей электронной почты под кнопкой и не показывать его на странице в явном виде, чтобы предотвратить его сбор ботами и пауками для спама.
Чтобы получить первый найденный по определенному условию элемент из списка или None, если ни одного такого элемента не найдено, можно использовать следующую конструкцию:
1 2 3 4 |
elements_list = ['One', 'Two', 'Three'] element = next(iter([e for e in elements_list if e in ['One', 'Two']]), None) print(element) # 'One' |
Если результат в списке не найден, будет возвращено None
1 2 3 |
element = next(iter([e for e in elements_list if e in ['Four', 'Five']]), None) print(element) # None |
Некоторые параметры в GIMP можно задать используя файл с настройками «по умолчанию» gimprc.
Для того, чтобы быстро и удобно создавать директории с именем состоящим из текущей даты средствами Total Commander:
1 2 |
set dir_name=%date:~6,4%.%date:~3,2%.%date:~0,2% md "%1%dir_name%" |
В первой строчке скрипта формируется имя для директории в формате YYYY.MM.DD.
Вторая строчка скрипта создает директорию с указанным именем по пути, переданном во входящем параметре %1.
Как создать директорию с текущей датой в Total CommanderRead More »
Для того, чтобы узнать, какая версия интерпретатора Python используется для выполнения кода, можно воспользоваться командой version_info из модуля sys:
1 2 3 4 |
import sys print(sys.version_info) # sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0) |
В текущем примере используется версия Python 3.5.2.
Создание точек восстановления Windows — хороший способ помочь в восстановлении своего компьютера в случае возникновения каких-либо неприятностей вроде заражения вирусами или рекламными ботами.
Точка восстановления — это слепок системы, в котором фиксируется ее текущее состояние (настройки, оформление, установленные программы). Создав и сохранив такую точку, можно в любой момент вернуть систему к зафиксированному в ней состоянию.
Если вы случайно открыли какое-нибудь подозрительное вложение в почте, и теперь то и дело на экране появляются рекламные баннеры (в систему установился рекламный бот) — с помощью точек восстановления можно вернуть систему «в прошлое», до момента заражения ботом. Точки восстановления — не панацея абсолютно от всех неприятностей, но очень часто «откат» системы спасает положение и возвращает компьютер в рабочее состояние.
Автоматическое создание точек восстановления Windows по расписаниюRead More »
Список классов, определенных в *.py — файле можно получить с помощью встроенного модуля inspect.
Например для модуля test_cls:
1 2 3 4 5 6 7 |
## test_cls.py class Test1: pass class Test2: pass |
можно получить список классов следующим образом:
1 2 3 4 5 6 7 8 |
## test.py import inspect classes = [cls_name for cls_name, cls_obj in inspect.getmembers(sys.modules['test_cls']) if inspect.isclass(cls_obj)] print(classes) # ['Test1', 'Test2'] |
При разработке онлайн-проектов часто возникает необходимость сохранить html-страничку в виде документа, который можно использовать отдельно, например, отправить по электронной почте, просматривать и редактировать оффлайн. Удобным способом сохранения html таким образом является экспорт в один из наиболее часто используемых текстовых форматов — doc.
Для экспорта html документа в формат doc можно воспользоваться открытым бесплатным php-модулем «html_to_doc». С его помощью можно сохранить html в документ doc, который будет корректно обработан текстовым редактором MS Word. Если в html-страничке присутствуют изображения, они будут встроены в документ doc.
PHP-модуль можно скачать по адресу https://github.com/Korchy/html_to_doc
Если имеется список вида:
1 |
my_list = ['one', 'two', 'three', 'four'] |
Для того, чтобы пройти по элементам списка попарно от текущего к следующему, можно использовать такой код:
1 2 |
for first, next in zip(my_list, my_list[1:]): print(first, next) |
Результат выполнения:
1 2 3 |
one two two three three four |
Некоторые функции принимают в параметрах переменное число аргументов *args, как например функция перебора вариантов itertools.product.
1 2 3 |
list(itertools.product(['a', 'b'], [1, 2])) # [('a', 1), ('a', 2), ('b', 1), ('b', 2)] |
Для того, чтобы передать в такую функцию параметры одним списком, нужно использовать оператор *
1 2 3 4 5 |
my_list = [['a', 'b'], [1, 2]] list(itertools.product(*my_list)) # [('a', 1), ('a', 2), ('b', 1), ('b', 2)] |
Преобразование смешанной строки, в которой заданы, как отдельные числа, так и диапазоны чисел, в полный список значений можно сделать следующим образом:
Пусть имеется исходная строка
1 |
src = '1, 3-5, 8' |
Разобьем строку по разделителю — запятым:
1 |
linearr = [s.strip() for s in re.split(r'[,;]+| ,', src) if s] |
Разделим получившийся список на два списка. В первый список поместим только отдельные значения. Во второй — значения преобразованные из диапазонов чисел.
1 2 |
linearrframes = [int(i) for i in linearr if '-' not in i] linearrdiapasones = sum([list(range(int(i.split('-')[0]), int(i.split('-')[1]) + 1)) for i in linearr if '-' in i], []) |
Объединим полученные списки в один и выкинем повторяющиеся значения.
1 2 |
linearrframes.extend(linearrdiapasones) print(list(set(linearrframes))) |
Полный код преобразования:
1 2 3 4 5 6 7 8 9 |
src = '1, 3-5, 8' print(src) linearr = [s.strip() for s in re.split(r'[,;]+| ,', src) if s] linearrframes = [int(i) for i in linearr if '-' not in i] linearrdiapasones = sum([list(range(int(i.split('-')[0]), int(i.split('-')[1]) + 1)) for i in linearr if '-' in i], []) linearrframes.extend(linearrdiapasones) print(list(set(linearrframes))) # '1, 3-5, 8' # [1, 3, 4, 5, 8] |