Виджет для Elementor: кнопка «показать E-mail»
Виджет для WordPress плагина Elementor. Позволяет скрыть адрес вашей электронной почты под кнопкой и не показывать его на странице в явном виде, чтобы предотвратить его сбор ботами и пауками для спама.
Виджет для 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] |
PHP поддерживает механизм позднего статического связывания. Полное имя класса с учетом статического наследования можно получить с помощью вызова функции:
1 |
get_called_class() |
На примере:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php class Parent { public static function getName() { echo get_called_class(); } } class Child extends Parent { } Parent::getName(); Child::getName(); ?> // Parent // Child |
Для того, чтобы сделать сдвиг значений в списке — переставить значение стоящее на первом месте списка в его конец и наоборот, нужно переформатировать список по двум срезам.
Сдвиг для списка lst:
1 |
lst = [1,2,3,4,5] |
сдвиг вперед:
1 2 3 4 |
lst = lst[1:]+lst[:1] print(lst) [2, 3, 4, 5, 1] |
сдвиг назад:
1 2 3 4 |
lst = lst[-1:]+lst[:-1] print(lst) [1, 2, 3, 4, 5] |
При необходимости циклического сдвига, данную команду следует повторить нужное число раз.
Чтобы узнать установленную на сервере версию linux Debian нужно в командной строке набрать:
1 |
lsb_release -a |
Ответ linux будет следующим:
1 2 3 4 5 |
No LSB modules are available Distributor ID: Debian Description: Debian GNU/Linux 9.1 (n/a) Release: 9.1 Codename: n/a |
Для того, чтобы объекты из словаря сохранялись в json в удобном для просмотра виде, каждый класс объекта должен иметь функцию __repr__, возвращающую текстовое представление объекта.
1 2 3 4 5 6 7 8 |
class TestObj: def __init__(self, x, y): self.__x = x self.__y = y def __repr__(self): return "TestObj({x},{y})".format(x = self.__x, y = self.__y) |
Пример словаря с объектами:
1 |
datadict = {"group": {"Object1": TestObj(10,22), "Object2": TestObj(36,74)}} |
Сохранение словаря с объектами в json:
1 2 3 4 |
with open("c:/file.json", "w", encoding="utf-8") as file: import pprint pprint.pprint(datadict, indent=4, stream=file) file.close() |
Кортежи в python могут быть вложенными.
Если просто добавить один кортеж к другому через операцию конкатенации «+», python сольет значения кортежей:
1 2 3 4 5 6 7 8 |
a = ((1,2), (3, 4)) print(a) # ((1, 2),(3, 4)) b = (5, 6) print(b) # (5, 6) a += b print(a) # ((1, 2), (3, 4), 5, 6) |
Для того, чтобы добавляемый кортеж стал вложенным, нужно после добавляемого кортежа поставить запятую «,»
1 2 |
a += b, print(a) # ((1, 2), (3, 4), (5, 6)) |
Получение координат центральной точки выпуклого многоугольника (полигона), так называемого «центроида», если известны координаты его точек (вершин):
1 2 3 4 5 6 7 |
def centroid(vertexes): _x_list = [vertex[0] for vertex in vertexes] _y_list = [vertex[1] for vertex in vertexes] _len = len(vertexes) _x = sum(_x_list) / _len _y = sum(_y_list) / _len return(_x, _y) |
Входным параметром в функцию подается кортеж с координатами точек многоугольника. Функция возвращает кортеж с координатами центроида:
1 2 |
polygon_data = ((0, 0), (1, 0), (1, 1), (0, 1)) print(centroid(polygon_data)) # (0.5, 0.5) |
Системы управления и контроля версий на сегодня практически обязательны для любого проекта. Одной из известнейших и наиболее популярных систем управления версиями является Git. Рассмотрим работу с Git в связке с GitHub — крупнейшим хостингом для размещения IT-проектов совместной разработки. GitHub позволяет бесплатно размещать на своем сервере проекты с открытым исходным кодом.
В данном примере рассматривается работа с Git на операционной системе Windows.
Что же нужно, для того, чтобы начать практическую работу с Git:
Одной из особенностей циклов for в Python является то, что итерируемая переменная (счетчик) не относится к локальной области видимости цикла.
Например, после исполнения следущего участка кода:
1 2 3 4 5 6 7 |
a = 0 print(a) b = [1,3,7] print(b) for a in b: pass print(a) |
Переменная a, объявленная до цикла for, изменит свое значение, если в качестве счетчика цикла объявить переменную с таким же именем «a».
1 2 3 4 |
# вывод > 0 # print(a) > [1, 3, 7] # print(b) > 7 # print(a) после выполнения цикла |
При построении кода об этой особенности нужно обязательно помнить, во избежание записи в ранее объявленную переменную значений итераторов цикла for.
Для того, чтобы замерить, сколько времени уходит на выполнение участка кода, нужно заключать проверяемый код в следующую конструкцию:
1 2 3 4 5 6 7 |
<?php $StartTime = microtime(true); // Проверяемый код sleep(rand(5,10)); // Конец проверяемого кода echo "Выполнено за: ".(microtime(true)-$StartTime)." сек."; ?> |
Результат выполнения примера — вывод на экран:
Выполнено за: 8.9997079372406 сек.
Символические ссылки в Windows, начиная с версии Vista, создаются с помощью команды mklink.
Для того, чтобы сделать в Total Commander кнопку, создающую символическую ссылку на выделенный файл, нужно выполнить следующие шаги:
1 |
mklink %2 %1 |
Эта команда создает символическую ссылку на файл, переданный в первом входном параметре, и размещает ее в месте, переданном во втором входном параметре.
1 |
%P%N %T%N |
Сохранить изменения.
%P — путь к файлу под курсором в активной панели
%N — имя файла под курсором в активной панели
%T — путь к месту, открытому во второй (неактивной) панели
В результате по нажатию созданной кнопки во второй вкладке будет создаваться символическая ссылка на файл под курсором в активной вкладке с таким же именем файла.
В языке Python не предусмотрено внутреннего синтаксиса для многострочного комментирования кода (наподобие /* … */ в других языках). Есть два варианта обхода этой проблемы:
1 2 3 4 |
''' это многострочный комментарий вторая строка ''' |
Минут данного метода в том, что подобный комментарий остается строковой константой и встраивается в конечный код.
Для снятия комментария со строк, нужно нажать ту же самую комбинацию клавиш на выделенных закомментированных строчках повторно.
Небольшая доработка плагина к WordPress TinyMCE Advanced Editor. Дополнительная кнопка по клику позволяющая задавать начальное значение для нумерованного списка.
Собственно добавляет атрибут start = N к тегу OL.
При открытии html-страницы со встроенным flash-приложением фокус автоматически на приложение не устанавливается. В результате flash-приложение не реагирует на нажатия клавиш на клавиатуре, пока по нему не сделать клик мышкой.
Эту проблему можно обойти путем программной установки фокуса на flash-приложение при загрузке html-странички.
Автоматическая установка фокуса на flash-приложение в браузереRead More »
Проект — Свойства — Свойства конфигурации — С/С++ — Создание кода — Библиотека времени выполнения:
Для Degug: /MTd
Для Release: /MT