hypo69

hypo69

Пишу код.
Пикабушник
1556 рейтинг 126 подписчиков 178 подписок 105 постов 7 в горячем
55

Удаленка

UPD:

Не надо хейтить (не разводите срач). Это процесс ОБУЧЕНИЯ!

Операторы на Филиппинах, получающие около 250 долларов в месяц, дистанционно управляют роботами, расставляющими товары на полках в японских магазинах.

6

Как подружить редактор Gutenberg с подсветкой синтаксиса Prism в WordPress

Дисклеймер. На pikabu нет редактора кода, поэтому код картинками, но в конце я дам ссылку на github, откуда можно будет скопировать блоки кода.


Когда мы создаем контент WordPress, чаще всего используем редактор Gutenberg. Он появился в версии WordPress 5.0 (в декабре 2018 года) и заменил старый добрый TinyMCE. TinyMCE был текстовым редактором из эпохи Web 1.0: над полем <textarea> находились простые кнопки вроде «жирный», «курсив» и «ссылка». Весь текст хранился одной сплошной лентой HTML-кода, и переместить блок или вставить что-то посередине было крайне (sic!) неудобно. Кроме того, TinyMCE не поддерживал адаптивную 12-колоночную разметку, которая стала стандартом де-факто во времена Web 2.0, поэтому сложные макеты приходилось строить вручную с помощью HTML и CSS.


Gutenberg — редактор нового поколения

Gutenberg решил эти проблемы. Теперь каждая часть страницы существует как блок — заголовок, параграф, цитата, изображение, таблица или фрагмент кода живут отдельно. Это делает редактирование проще, а страницы — гибкими и адаптивными.

Контент должен одинаково хорошо выглядеть на любых устройствах — от телефона до широкоформатного монитора. Когда сайт не адаптируется к экрану, текст «плывёт», изображения обрезаются, а таблицы вылезают за границы блока. Решается это с помощью адаптивной разметки, которая автоматически перестраивается под ширину экрана.

В основе такой разметки лежит 12-колоночная сетка. Она стала стандартом благодаря фреймворкам вроде Bootstrap и Foundation, и Gutenberg использует тот же принцип: ширина контейнера делится на 12 равных частей (по 8.33 % каждая), из которых можно собрать практически любую компоновку:

1 колонка → [████████████] 100%
2 колонки → [██████][██████] 6/6
3 колонки → [████][████][████] 4/4/4 4
4 колонки → [███][███][███][███] 3/3/3/3

На мобильных устройствах колонки выстраиваются вертикально — контент остаётся читаемым при любой ширине экрана.

Внутри Gutenberg эта идея реализована через блок “Колонки” (Columns), который автоматически подстраивает расположение элементов под ширину окна.
На уровне HTML это контейнеры с классами wp-block-columns и wp-block-column, а за выравнивание отвечает Flexbox:

контейнер

контейнер

По сути, Gutenberg автоматически создаёт гибкий контейнер, который можно делить на нужное количество колонок. При уменьшении экрана колонки становятся вертикальными — и это достигается не JavaScript-скриптами, а чисто с помощью CSS.

css

css

Одна и та же страница выглядит корректно и на телефоне, и на мониторе — без единой строчки JavaScript.

Но из всех возможностей редактора сейчас нас интересует всего один элемент — блок кода. Он используется, когда нужно показать пример программы, скрипта, конфигурации или команды терминала. Технически это простой HTML-контейнер: <pre> ... </pre>

Gutenberg и TinyMCE отображают его одинаково — как текст, набранный моноширинным шрифтом (чаще всего Consolas, Courier New или Monaco). Без подсветки, без нумерации строк, без выделения синтаксиса. Это решение логично — большинству пользователей подсветка не нужна, а включи её для всех, и редактор стал бы сложнее и тяжелее. Но если вы публикуете примеры кода, инструкции или статьи для разработчиков, то отсутствие подсветки делает материал трудно читаемым. В этом случае на помощь приходит библиотека Prism.js, которая решает проблему просто и изящно.

Мне, почему-то кажется, что программисты Pikabu работают на Gutenberg. А потому, что в Gutenbergе нет подсветки синтаксиса языков программирования. Сейчас я покажу, как решить этот вопрос без установки внешних плагинов. Нам понадобятся: Prism.js, Prism.css 👇👇👇👇


Prism.js — библиотека для подсветки кода

Prism.js — лёгкая и быстрая библиотека, созданная специально для подсветки синтаксиса на веб-страницах. Она не перегружает редактор и делает статьи с кодом читаемыми и профессионально оформленными. Таже она не требует серверных модулей и работает полностью в браузере: скрипт на JavaScript анализирует содержимое тегов <pre><code>..., а таблица стилей prism.css раскрашивает ключевые слова, строки, комментарии и другие элементы кода.

По сути, Prism делает для веб-страниц то же, что IDE делает для программистов — делает код понятным и визуально структурированным.
Поддерживаются десятки языков программирования — от HTML, CSS и JavaScript до Python, PHP и Go — и множество плагинов: нумерация строк, подсветка отдельных строк, отображение языка, копирование в буфер, тёмные и светлые темы.

Пример разметки:

После подключения Prism.js и Prism.css этот код автоматически подсвечивается в браузере, без дополнительного вмешательства.

Библиотека особенно хорошо сочетается с Gutenberg, потому что не требует изменения самого редактора — она работает уже на этапе отображения статьи, обрабатывая всё, что находится между тегами <pre> и <code>.


Что такое тема в WordPress и почему работать нужно через дочернюю.

В WordPress тема — это набор файлов, которые определяют внешний вид сайта: шаблоны страниц, стили оформления, типографику, шапку и подвал, поведение меню и многое другое. Проще говоря, именно тема отвечает за то, как ваш сайт выглядит и реагирует на действия пользователя. Тему можно установить прямо из админки — Внешний вид → Темы → Добавить— или загрузить архив вручную в папку /wp-content/themes/. После активации она начинает управлять всей визуальной частью сайта.

Однако вносить правки напрямую в файлы темы — плохая идея. Как только разработчики выпустят обновление родительской темы, WordPress заменит старые файлы новыми, и все ваши изменения будут утеряны. Вся. написанное вами в functions.php или CSS-правило в style.css исчезнут после обновления.

Чтобы избежать этого, в WordPress предусмотрен безопасный механизм — дочерние темы. Дочерняя тема наследует всё содержимое родительской, но хранит собственные правки отдельно. Таким образом, вы можете обновлять родительскую тему сколько угодно, а весь ваш код, настройки и стили останутся нетронутыми. Создать дочернюю тему просто. В каталоге /wp-content/themes/ создайте папку, например mytheme-child, и добавьте в неё файл style.css с базовым описанием. Важно: параметр Template должен точно совпадать с названием папки родительской темы.

style.css

style.css

1. Theme Name

Это отображаемое имя темы.
Оно появится в панели администратора WordPress в разделе Внешний вид → Темы.
Можно написать что угодно — главное, чтобы название было понятным и уникальным.
Пример: Theme Name: Neve Child


2. Template

Это самое важное поле во всём блоке.
Оно говорит WordPress, от какой родительской темы наследуется данная дочерняя тема.
Значение должно в точности совпадать с именем папки родительской темы (а не с её названием в админке).
Например: если родительская тема находится по пути `/wp-content/themes/mytheme/`
то в поле должно стоять:
Template: mytheme

Если ошибиться — WordPress не распознает родителя, и дочерняя тема просто не активируется.

3. Version

Это внутренний номер версии вашей темы — для порядка и контроля изменений.
WordPress не использует это поле функционально, но оно помогает вести версионирование и отличать ваши обновления.

  • Обязательные поля: Theme Name, Template

  • Необязательное, но полезное: Version

  • Дополнительно можно добавить Description, Author, Author URI, Tags, License и т. д.

Далее создайте functions.php и подключите стили родительской темы, а затем — свои собственные.

functions.php

functions.php

После этого активируйте дочернюю тему в разделе “Внешний вид → Темы” — и с этого момента работайте только с ней, ваши изменения будут защищены: даже если родительская тема обновится до новой версии, код в дочерней теме не исчезнет и продолжит работать без изменений.


Как подключить Prism.js к WordPress

По сути, Prism делает для веб-страниц то же самое, что делают IDE для программистов — делает код понятным и визуально структурированным. Поддерживаются десятки языков программирования (от HTML, CSS и JavaScript до Python, PHP и Go) и множество плагинов: нумерация строк, подсветка конкретных строк, отображение языка, копирование в буфер, тёмная и светлая темы.


Все действия выполняются в❗ дочерней теме❗, чтобы при обновлении родительской вы не потеряли свой код.


Подключить Prism.js к WordPress можно в несколько шагов — быстро и без плагинов.

Шаг 1. Скачиваем сборку

Сайт: https://prismjs.com/download.html

чекбоксы выбора языков для вкючения их подсветки

чекбоксы выбора языков для вкючения их подсветки

Настройка сборки

Раздел Download состоит из нескольких блоков.

- Compression level. Выберите параметр Minified — это минимизированная версия библиотеки, она весит меньше и загружается быстрее.
- Core. Этот блок включён по умолчанию и обязателен — он содержит основное ядро библиотеки Prism.
- Languages. Выберите языки, для которых хотите включить подсветку синтаксиса.
Рекомендуемый набор:

  • HTML (Markup)

  • CSS

  • JavaScript

  • PHP

  • Python

  • JSON

При необходимости добавьте другие языки — например, Bash, SQL, C-like, Markdown, YAML, Go и т.д.

Plugins.
Вы можете добавить дополнительные функции.
Наиболее полезные из них:

  • Line Numbers — нумерация строк

  • Toolbar — панель инструментов

  • Copy to Clipboard Button — кнопка для быстрого копирования кода

  • (опционально) Show Language — отображение языка над блоком

  • (опционально) Highlight Lines — подсветка отдельных строк


Скачивание файлов

После того как вы выбрали нужные компоненты, прокрутите страницу вниз и нажмите две кнопки:

  • DOWNLOAD JS — чтобы скачать файл prism.js

  • DOWNLOAD CSS — чтобы скачать файл prism.css

Оба файла необходимо поместить в папку вашей дочерней темы, например:
/wp-content/<themes>/<my-child-theme>/prism.js
/wp-content/<themes>/<my-child-theme>/prism.css

Подключение файлов в WordPress

Когда файлы prism.js и prism.css размещены в папке дочерней темы, их нужно подключить.
Для этого откройте файл functions.php вашей темы и добавьте следующий код:

Добавляем автоматическую нумерацию строк

Чтобы не добавлять класс вручную, используем фильтр WordPress, который добавит его ко всем блокам кода:

Экранируем HTML-символы

Если в коде встречаются символы < или >, браузер может попытаться интерпретировать их как HTML-теги. Чтобы этого избежать, добавим фильтр, который заменяет эти символы на безопасные HTML-сущности при сохранении поста:

5. Добавляем стили оформления

Добавьте в style.css дочерней темы:

Показать полностью 13
0

Эра непрофессионализма

Национальный музей спецподразделения ВМС США «морские котики» опубликовал поздравление с 250-летием флота, использовав фотографию российского ракетного крейсера «Варяг».

Национальный музей спецподразделения ВМС США «морские котики» опубликовал поздравление с 250-летием флота, использовав фотографию российского ракетного крейсера «Варяг».

Национальный музей спецподразделения ВМС США «морские котики» опубликовал поздравление с 250-летием флота, использовав фотографию российского ракетного крейсера «Варяг». На публикацию музея в соцсети X обратил внимание журналист издания The Wall Street Journal Дэвид Браун.

«Сегодня мы празднуем день рождения Военно-морских сил Соединенных Штатов — 250 лет чести, храбрости и преданности. Спасибо всем, кто служил и продолжает служить нашему народу», — написал музей 13 октября.

Журналист опубликовал целую подборку ошибочных публикаций о годовщине основания американского флота. Так, он заметил, что аккаунт госсекретаря штата Аризона поздравил жителей фотографией советского крейсера «Михаил Кутузов». Сейчас это судно переоборудовано в музей и находится в порту Новороссийска.

Также Браун обнаружил посты о 250-летии ВМС США с фотографиями военных кораблей из Индии и Дании. Кроме этого, некоторые аккаунты использовали изображения кораблей, сгенерированные искусственным интеллектом.

Фото: Dave Brown / X


Показать полностью 1
12

Создание аддонов для FreeCAD. Урок 3. Создание 3D-объектов: параметрический бокс

Серия Создание аддонов для FreeCAD

Урок 3. Создание 3D-объектов: параметрический бокс

Цель урока: научиться создавать твёрдые тела (коробки, цилиндры) через Python, понять структуру документа FreeCAD и сделать аддон, который строит параметрическую деталь.


🧱 Часть 1. Как устроен документ в FreeCAD?

Прежде чем создавать объекты, важно понять иерархию данных в FreeCAD:

  • Document — это открытый файл (.FCStd). Всё, что вы создаёте, находится внутри документа.

  • Object — это параметрический объект: коробка, цилиндр, эскиз и т.д.

  • Shape — это геометрическое тело (B-Rep), которое можно визуализировать.

💡 Вы всегда работаете в контексте активного документа.

Как получить текущий документ?

doc = FreeCAD.ActiveDocument

doc = FreeCAD.ActiveDocument

Если документа нет — создайте новый:

doc = FreeCAD.newDocument("MyDesign")

doc = FreeCAD.newDocument("MyDesign")


📦 Часть 2. Создание коробки (Box) через Python

Самый простой 3D-объект в FreeCAD — это Part::Box.

Пример кода:

Что происходит здесь?

  1. doc.addObject("Part::Box", "MyBox")
    → создаёт новый объект типа Box с именем "MyBox"

  2. У объекта есть параметрические свойства: Length, Width, Height

  3. doc.recompute()
    → перестраивает модель (обязательно после изменения параметров!)

🔸 Все размеры — в миллиметрах (по умолчанию в FreeCAD).


🛠 Часть 3. Аддон: «Параметрический бокс»

Теперь создадим аддон, который создаёт коробку с заданными размерами.

Шаг 1. Создайте папку

.../Mod/ParamBoxAddon/

Шаг 2. Файл InitGui.py

Шаг 3. Файл param_box_workbench.py

код: https://github.com/hypo69/1001-python-ru/blob/master/ru/arti...


▶️ Шаг 4. Проверка работы

  1. Сохраните файлы

  2. Перезапустите FreeCAD

  3. Выберите рабочую среду «Parametric Box»

  4. Нажмите кнопку «Create Box»

✅ Должен появиться серый параллелепипед в 3D-окне.

Проверьте параметричность!

  1. В дереве проекта (Model) дважды кликните по MyParamBox

  2. В панели Data измените, например, Length на 50

  3. Нажмите Enter → модель автоматически обновится!

Это и есть параметрическое моделирование.


🔍 Часть 4. Другие базовые объекты

Вы можете создавать не только коробки. Вот несколько примеров:

Цилиндр

Сфера

Конус

💡 Все эти объекты находятся в модуле Part, который встроен в FreeCAD.


🧪 Практическое задание

  1. Измените аддон так, чтобы он создавал цилиндр, а не коробку.

  2. Сделайте так, чтобы при создании объект получал уникальное имя (например, Box_1, Box_2...), если объект с таким именем уже есть.

  3. Добавьте вторую команду — «Create Cylinder» — в ту же рабочую среду.

Подсказка для уникального имени:


💡 Советы по отладке

  • Всегда вызывайте doc.recompute() после изменения параметров.

  • Используйте FreeCAD.Console.PrintMessage("Текст\n") для отладки (сообщения появятся в Report View).

  • Проверяйте, существует ли документ перед работой с ним.


▶️ Что дальше?

В Уроке 4 мы:

  • Научимся создавать графический интерфейс (GUI) с полями ввода.

  • Сделаем окно, где пользователь вводит длину, ширину и высоту.

  • И по нажатию кнопки — строится бокс с этими параметрами.

Это уже будет настоящий инструмент, а не просто демонстрация.

Показать полностью 9
7

Создание аддонов для FreeCAD. Урок 2. Ваш первый аддон: «Hello World»

Серия Создание аддонов для FreeCAD

Цель урока: создать простой аддон, который добавляет новую рабочую среду с кнопкой, и при нажатии показывает сообщение.


Дисклеймер. На pikabu нет редактора кода, поэтому код картинками, но в конце я дам ссылку на github, откуда можно будет скопировать блоки кода.


📁 Шаг 1. Подготовка папки аддона

Убедитесь, что у вас есть папка:

.../FreeCAD/Mod/HelloWorldAddon/

Если нет — создайте её.

💡 Имя папки важно: оно должно совпадать с именем модуля в коде.
Мы будем использовать HelloWorldAddon.

Внутри этой папки создайте два файла:

❗ Не используйте пробелы или кириллицу в именах файлов и папок!


📄 Шаг 2. Файл InitGui.py — точка входа

Этот файл автоматически запускается FreeCAD при старте, если лежит в папке аддона.

Откройте его в редакторе и вставьте следующий код:

🔍 Что делает этот код?

  1. Импортирует нашу рабочую среду из файла hello_workbench.py

  2. Регистрирует её в интерфейсе FreeCAD через FreeCADGui.addWorkbench()

⚠️ Обратите внимание:
from HelloWorldAddon.hello_workbench — здесь HelloWorldAddon — это имя папки, а hello_workbench — имя файла без расширения .py.


📄 Шаг 3. Файл hello_workbench.py — логика аддона

Теперь создадим саму рабочую среду.

Вставьте в hello_workbench.py следующий код:

к коду: https://github.com/hypo69/1001-python-ru/blob/master/ru/articles/FreeCAD/2.md#-шаг-3-файл-hello_workbenchpy--логика-аддона

🔍 Разбор кода по частям:

1. Команда (HelloWorldCommand)

  • GetResources() — описывает, как команда выглядит в интерфейсе

  • Activated() — что происходит при нажатии

  • IsActive() — когда кнопка активна (например, только если есть документ)

2. Рабочая среда (HelloWorldWorkbench)

  • Наследуется от FreeCADGui.Workbench

  • Метод Initialize() добавляет команды на панель и в меню

  • GetClassName() говорит FreeCAD: «это Python-рабочая среда»

3. Регистрация

  • FreeCADGui.addCommand() связывает имя "HelloWorldCommand" с классом


▶️ Шаг 4. Запуск и проверка

  1. Сохраните оба файла

  2. Закройте FreeCAD (если был открыт)

  3. Запустите FreeCAD заново

💡 FreeCAD загружает аддоны только при старте, поэтому перезапуск обязателен.

Как проверить, что аддон работает?

  1. В правом нижнем углу FreeCAD нажмите на название текущей рабочей среды (например, «Part Design»)

  2. В выпадающем списке найдите «Hello World» и выберите его

  3. На панели инструментов появится кнопка «Say Hello»

  4. Нажмите её → должно появиться окно с приветствием!

Поздравляем! Вы создали свой первый аддон!


🔍 Шаг 5. Отладка (если что-то не работает)

Если аддон не появился или выдал ошибку:

  1. Откройте Report view:
    View → Panels → Report view

  2. Ищите красные сообщения об ошибках

Частые проблемы:

ПроблемаРешениеModuleNotFoundError: No module named 'HelloWorldAddon'Проверьте имя папки — оно должно быть точно таким же, как в from HelloWorldAddon...Кнопка есть, но ничего не происходитПроверьте, нет ли ошибок в Activated() (например, забыли import QtGui)Аддон не появляется в спискеУбедитесь, что файл называется именно InitGui.py (не initgui.py, не InitGUI.py)Ошибка синтаксисаПроверьте отступы (в Python они важны!) и скобки

💡 Совет: в Windows имена файлов не чувствительны к регистру, но в Linux/macOS — чувствительны. Лучше писать точно: InitGui.py.


🧪 Практическое задание

  1. Измените текст сообщения в Activated() на свой

  2. Попробуйте добавить вторую команду (например, «Say Goodbye»)

  3. Добавьте её в тот же список self.list и проверьте, что появляются две кнопки

Пример второй команды:

class GoodbyeCommand: def GetResources(self): return {"MenuText": "Say Goodbye", "ToolTip": "Bye!"} def Activated(self): QtGui.QMessageBox.information(None, "Bye", "До свидания!") def IsActive(self): return True # Не забудьте зарегистрировать! FreeCADGui.addCommand("GoodbyeCommand", GoodbyeCommand())

И обновите список:

self.list = ["HelloWorldCommand", "GoodbyeCommand"]


▶️ Что дальше?

В Уроке 3 мы:

  • Научимся создавать настоящие 3D-объекты (коробки, цилиндры)

  • Разберёмся, как устроена документная модель FreeCAD

  • Сделаем аддон, который строит параметрическую деталь


  • Понравилось — ставь «+»
    Полезно? Подпишись.

    Так я буду знать, какой контент вам интересен.
    Вопросы можно задавать в комментариях 👇👇👇
    Удачи! 🚀

Статья на github: https://github.com/hypo69/1001-python-ru/blob/master/ru/articles/FreeCAD/2.md#-шаг-3-файл-hello_workbenchpy--логика-аддона

Показать полностью 2
6

Создание аддонов для FreeCAD. Урок 1. Подготовка среды разработки

Серия Создание аддонов для FreeCAD

Цель урока: настроить всё необходимое, чтобы создавать, тестировать и отлаживать аддоны без лишних усилий.


Дисклеймер. На pikabu нет редактора кода, поэтому код картинками, но в конце я дам ссылку на github, откуда можно будет скопировать блоки кода.


🔧 Шаг 1. Убедитесь, что у вас установлен FreeCAD

Требования:

  • FreeCAD версии 0.20 или новее (лучше 1.0+)

  • Работает на Windows, Linux или macOS

👉 Если у вас ещё нет FreeCAD — скачайте его с официального сайта:
🔗 https://www.freecad.org/downloads.php

Выберите:

  • Windows: .exe (установщик) или .7z (portable)

  • Linux: AppImage или пакет из репозитория

  • macOS: .dmg

💡 Совет: для обучения лучше использовать установленную версию (через установщик), так как она стабильнее и проще в настройке.


📁 Шаг 2. Найдите папку для аддонов

FreeCAD ищет пользовательские аддоны в специальной папке Mod.
Путь зависит от вашей ОС и типа установки.

✅ Как найти папку точно?

  1. Запустите FreeCAD.

  2. Откройте Python Console:
    View → Panels → Python console

  3. Введите команды:

> import FreeCAD
> print(FreeCAD.getUserAppDataDir())

  1. Нажмите Enter.

Вы увидите путь, например:

  • Windows (установленная версия):
    C:\Users\ВашеИмя\AppData\Roaming\FreeCAD\

  • Windows (portable):
    D:\FreeCAD\data\

  • Linux:
    /home/ваше_имя/.local/share/FreeCAD/

  • macOS:
    /Users/ваше_имя/Library/Application Support/FreeCAD/

➕ Создайте папку Mod

Внутри этой директории должна быть папка Mod.
Если её нет — создайте вручную.

Пример для Windows:

C:\Users\ВашеИмя\AppData\Roaming\FreeCAD\Mod\

💡 Быстрый способ открыть папку на Windows:
Нажмите Win + R → введите %APPDATA%\FreeCAD → Enter


🖥 Шаг 3. Настройте текстовый редактор (опционально, но очень рекомендуется)

Хотя можно писать код в Блокноте, удобнее использовать редактор с:

  • Подсветкой синтаксиса Python

  • Автодополнением

  • Возможностью запуска скриптов

🔹 Рекомендую: Visual Studio Code (VS Code)

  1. Скачайте и установите: https://code.visualstudio.com/

  2. Установите расширение Python (от Microsoft)

🔹 Как открыть папку аддона в VS Code?

  1. Запустите VS Code

  2. File → Open Folder

  3. Выберите папку Mod (или отдельный аддон внутри неё)

Теперь вы видите структуру проекта и можете редактировать файлы с комфортом.


🛠 Шаг 4. Изучите встроенные инструменты FreeCAD

FreeCAD уже содержит всё, что нужно для разработки.

1. Python Console

  • Меню: View → Panels → Python console

  • Позволяет выполнять команды в реальном времени

  • Пример: введите App.newDocument() → создастся новый документ

2. Report View

  • Меню: View → Panels → Report view

  • Показывает ошибки, предупреждения, логи

  • Обязательно держите открытым при тестировании аддона!

3. Macro Recorder

  • Меню: Macro → Macros...

  • Кнопка Record — записывает ваши действия в Python-код

  • Отличный способ изучить API FreeCAD

💡 Попробуйте:

  1. Нажмите Macro → Start recording

  2. Создайте коробку (Part → Box)

  3. Остановите запись

  4. Откройте макрос — вы увидите реальный код создания объекта.


🧪 Шаг 5. Проверка: создайте тестовую папку

Чтобы убедиться, что всё работает:

  1. В папке Mod создайте подпапку:

    TestAddon

  2. Внутри создайте файл __init__.py (может быть пустым) — это говорит Python, что папка — модуль.

  3. Перезапустите FreeCAD.

  4. Откройте Report view.

Если вы не видите ошибок — значит, FreeCAD успешно сканирует папку Mod.

❗ Если появится ошибка вида ImportError — проверьте:

  • Правильность имени папки (без пробелов и кириллицы)

  • Наличие __init__.py (в новых версиях не всегда обязательно, но безопаснее добавить)


🗂 Структура папки разработчика (итог)

К концу этого урока у вас должна быть такая структура:

И вы знаете:

  • Где лежит Mod

  • Как открыть Python Console и Report View

  • Как использовать Macro Recorder

  • Как настроить VS Code (опционально)


✅ Практическое задание

  1. Найдите папку Mod через FreeCAD.getUserAppDataDir()

  2. Создайте папку MyFirstAddon внутри Mod

  3. Добавьте в неё пустой файл __init__.py

  4. Перезапустите FreeCAD

  5. Убедитесь, что в Report view нет ошибок

🎯 Цель: FreeCAD должен запуститься без ошибок и "увидеть" вашу папку.


▶️ Что дальше?

В Уроке 2 мы создадим рабочий аддон:

  • Добавим кнопку

  • Сделаем, чтобы она что-то делала

  • Научимся регистрировать команды и рабочие среды


    Понравилось — ставь «+»
    Полезно? Подпишись.

    Так я буду знать, какой контент вам интересен.
    Вопросы можно задавать в комментариях 👇👇👇
    Удачи! 🚀

Статья на github: https://github.com/hypo69/1001-python-ru/blob/master/ru/articles/FreeCAD/урок 1. Подготовка среды разработки.md

Показать полностью 1
9

Как сделать мультиязычный сайт на поддоменах в WordPress. Часть 2. Включение и настройка режима WordPress Multisite

Серия wordpress

В первой части я показал, как настроить поддомены, dns записи и ssl.

Сегодня мы настроим конфигурацию wordpress для мультисайтов


Прежде, чем мы продолжим обязательно сделайте:

  1. Сделайте резервную копию файлов wp-config.php и .htaccess

  2. Сделайте резервную копию базы данных

  3. Проверьте резервную копию базы данных!


Сначала нам нужно "сказать" WordPress, что мы вообще собираемся активировать Multisite. По умолчанию эта функция скрыта.

  1. Подключитесь к вашему сайту по FTP или через файловый менеджер на хостинге.

  2. Откройте файл wp-config.php в корневой папке вашего сайта.

  3. Чтобы разблокировать скрытую функцию мульти сайта найдите строку, которая выглядит так:
    /* That's all, stop editing! Happy publishing. */
    перед ней добавьте строку
    define('WP_ALLOW_MULTISITE', true);

  4. Сохраните файл и загрузите его обратно на сервер.

  5. В административной панели появится новый пункт Настройки -> Установка сети

7. Выберите его. Перед вами откроется окно с двумя блоками кода, которые следует скопировать и вставить с соответствующие файлы wp-config.php и .htaccess

8. Сохраните оба файла. После этого WordPress "выкинет" вас из админки. Это нормально! Это означает, что система переключилась в новый режим.

9. Войдите в систему заново. В меню появятся новые пункты:

Чтобы добавить новый сайт выберите пункт меню Добавить -> Сайт

Заполните префикс, язык, название сайта и электропочту администратора

Аналогично для остальных языков.


Если что-то пошло не так.

Когда на сайте "белый экран смерти" или что-то работает не так, режим отладки — ваш лучший друг.

Включить режим отладки:
WP_DEBUG: Главный "рубильник". Включает (true) или выключает (false) режим отладки.

WP_DEBUG_LOG: Если true, все ошибки будут записываться в файл /wp-content/debug.log. Это лучший способ анализировать проблемы на рабочем сайте, не показывая ошибки посетителям.

WP_DEBUG_DISPLAY: Если true, ошибки будут выводиться прямо на экран. Используйте только на локальном или тестовом сайте!

Рекомендуемая конфигурация для разработки:
Эта комбинация будет записывать все ошибки в файл, но не будет показывать их пользователям:

// Включаем режим отладки
define( 'WP_DEBUG', true );
// Включаем запись ошибок в лог-файл
/wp-content/debug.log define( 'WP_DEBUG_LOG', true );
// Отключаем показ ошибок на экране
define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );

Для рабочего сайта убедитесь, что WP_DEBUG установлен в false.

define( 'WP_DEBUG', false );

Как повысить безопасность сайта

wp-config.php позволяет отключить несколько потенциально небезопасных функций.

Как запретить редактирование файлов тем и плагинов из админки:
Это не позволит администратору (или злоумышленнику, получившему его пароль) редактировать PHP-файлы напрямую из админ-панели.

define( 'DISALLOW_FILE_EDIT', true );

Как принудительно использовать SSL для входа и админ-панели:
Эта настройка гарантирует, что логин и пароль всегда передаются по зашифрованному каналу.

define( 'FORCE_SSL_ADMIN', true );

Как управлять производительностью и ресурсами

Как увеличить лимит памяти для PHP:
Иногда сложные плагины или темы требуют больше оперативной памяти, чем выделено по умолчанию, что приводит к ошибке "Allowed memory size... exhausted".

// Устанавливаем лимит в 128 мегабайт
define( 'WP_MEMORY_LIMIT', '128M' );
// Для админ-панели можно выделить еще больше
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

Как отключить встроенный CRON:
WordPress запускает свои запланированные задачи (проверка обновлений, публикация отложенных постов) при каждом посещении сайта. На высоконагруженных проектах это может вызывать задержки. Опытные администраторы отключают встроенный CRON и настраивают его запуск через планировщик на сервере.

define( 'DISABLE_WP_CRON', true );

Как управлять ревизиями и корзиной

WordPress сохраняет копию каждой вашей правки (ревизии), что может быстро "раздувать" базу данных.

define( 'WP_POST_REVISIONS', false );

Как ограничить количество ревизий (например, до 5):

define( 'WP_POST_REVISIONS', 5 );

Как изменить время автоочистки корзины (по умолчанию 30 дней):

// Очищать корзину каждые 7 дней
define( 'EMPTY_TRASH_DAYS', 7 );
// Чтобы отключить корзину (удалять навсегда сразу)
define( 'EMPTY_TRASH_DAYS', 0 );


В следующей части я покажу, как настроить плагины для мультиязычного содержимого вашего сайта.

Понравилось — ставь «+»
Полезно? Подпишись.

Так я буду знать, какой контент вам интересен.
Вопросы можно задавать в комментариях 👇👇👇
Удачи! 🚀

Показать полностью 7
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества