{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "M9K blog: заметки с тегом python",
    "_rss_description": "Заметки обо всём: devops, lifestyle, культура.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/blog.m9k.space\/tags\/python\/",
    "feed_url": "https:\/\/blog.m9k.space\/tags\/python\/json\/",
    "icon": "https:\/\/blog.m9k.space\/pictures\/userpic\/userpic@2x.jpg?1769095194",
    "authors": [
        {
            "name": "M",
            "url": "https:\/\/blog.m9k.space\/",
            "avatar": "https:\/\/blog.m9k.space\/pictures\/userpic\/userpic@2x.jpg?1769095194"
        }
    ],
    "items": [
        {
            "id": "238",
            "url": "https:\/\/blog.m9k.space\/all\/prettymaps-2\/",
            "title": "Prettymaps в Docker: генератор картографических постеров",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.m9k.space\/pictures\/akademgorodok.png\" width=\"1000\" height=\"1045\" alt=\"\" \/>\n<\/div>\n<p>Поигрался с либой <a href=\"https:\/\/github.com\/marceloprates\/prettymaps\">PrettyMaps<\/a>, которая умеет строить из OSM прикольные постеры.<\/p>\n<p>Собрал контейнер, который позволяет сделать карту.<\/p>\n<p>Сборка без прокси:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">DOCKER_BUILDKIT=1 docker build -t prettymaps-docker-test .<\/code><\/pre><p>Сборка с SOCKS5-прокси:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">DOCKER_BUILDKIT=1 docker build --network=host --build-arg PROXY_SOCKS5=$PROXY_IP:$PROXY_PORT -t prettymaps-docker-test .<\/code><\/pre><p>Запуск:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">docker run --rm \\\n  -v &quot;$(pwd)&quot;:\/work \\\n  -e LAT=54.8482742 \\\n  -e LON=83.0973263 \\\n  -e RADIUS_M=1500 \\\n  -e TITLE=&quot;Академгородок&quot; \\\n  -e OUTPUT_NAME=akadem_coords \\\n  prettymaps-docker-test<\/code><\/pre><p><a href=\"https:\/\/egit.m9k.space\/m9k\/blog_data\/src\/commit\/a8d511f0464360c4696015f1373bf0d49415df00\/PrettyMaps\">Файлы <\/a><\/p>\n",
            "summary": "Поигрался с либой PrettyMaps, которая умеет строить из OSM прикольные постеры",
            "date_published": "2026-09-18T19:57:51+07:00",
            "date_modified": "2026-09-27T20:43:59+07:00",
            "tags": [
                "prettymaps",
                "python",
                "Карты",
                "постер",
                "системное администрирование"
            ],
            "image": "https:\/\/blog.m9k.space\/pictures\/akademgorodok.png",
            "_date_published_rfc2822": "Fri, 18 Sep 2026 19:57:51 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "238",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/blog.m9k.space\/pictures\/akademgorodok.png"
                ]
            }
        },
        {
            "id": "199",
            "url": "https:\/\/blog.m9k.space\/all\/unzip-bez-unzip\/",
            "title": "Unzip без unzip",
            "content_html": "<p>Есть сервер без доступа в интернет, с древней ОС и мёртвыми репозиториями. Нужно распаковать ZIP-архив, но unzip отсутствует, а установить его неоткуда.<\/p>\n<p>Решаем вопрос штатным модулем Python zipfile, без дополнительных зависимостей.<\/p>\n<p>Python 2.7:<\/p>\n<pre class=\"e2-text-code\"><code class=\"python\">python - &lt;&lt;&#039;EOF&#039;\nimport zipfile\nimport os\n\narchive = &#039;archive.zip&#039;\ntarget_dir = &#039;archive&#039;\n\nif not os.path.exists(target_dir):\nos.makedirs(target_dir)\n\nwith zipfile.ZipFile(archive, &#039;r&#039;) as z:\nfor name in z.namelist():\nz.extract(name, target_dir)\nEOF<\/code><\/pre><p>Python 3:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">python3 -m zipfile -e archive.zip archive<\/code><\/pre><p>Для Python 3 достаточно встроенного интерфейса командной строки модуля zipfile. Никаких дополнительных пакетов.<\/p>\n<p>В обоих случаях архив распаковывается в каталог archive. Для Python 3 каталог назначения должен существовать заранее, поэтому при необходимости сначала выполните mkdir -p archive.<\/p>\n",
            "summary": "Есть сервер без доступа в интернет, с древней ОС и мёртвыми репозиториями. Нужно распаковать ZIP-архив, но unzip отсутствует, а установить его неоткуда...",
            "date_published": "2025-08-14T17:07:44+07:00",
            "date_modified": "2026-10-11T23:56:46+07:00",
            "tags": [
                "linux",
                "python",
                "zip",
                "системное администрирование"
            ],
            "_date_published_rfc2822": "Thu, 14 Aug 2025 17:07:44 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "199",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}