Сообщения

Показаны сообщения с ярлыком "Блог разработчика"

Git 101

Типичный workflow базового уровня git clone <указатель на репозиторий> - init в таком случае не требуется git fetch (скачать изменения с сервера) git merge (слить изменения в локальную копию) эти две команды заменяются одной: git pull (по ситуации) git status или status -s (короткий формат) git add . git commit -a (all) -m "Quick description"   git push origin main Отмена локальных изменений Отменить коммит, но сохранить изменения в коде: git reset --soft HEAD Отменить два коммита вместе с изменениями кода: git reset --hard HEAD~2 Отменить изменения конкретного файла: git checkout <имя_файла> Отмена изменений на remote Откатиться до конкретного коммита: git reset --hard <commit-hash> ...а затем forced push: git push -f origin main Пара слов про .gitignore Если .gitignore был добавлен ДО версионирования (создания) конкретных файлов: git add . Проверить, какие файлы былидобавлены к индексации, и затем: git reset -- <paths> Чтобы unstage те файл...

Материалы по Headless CMS

Изображение
Сегодня на твиче оказался на стриме Белой Пантеры (GB), которая была занята разработкой фронта на базе Contentful . Что такое Contentful - я толком не понял. Судя по всему - продукт, сочетающий продвинутую Headless CMS и экосистему для деплоя. В общем, пошёл искать информацию о таком феномене как Headless CMS. Ссылки по теме Headless CMS Что касается ссылок, нашёл следующее. Три статьи про Headless на хабре: более общая   более конкретная техническая с примерами и анализом решений. Несколько фреймворков: VuePress Gridsome Hugo NuxtJS Gatsby Фреймворки упоминались в том или ином контексте в отношении Headless CMS и получения данных через API. Часть из них - обычные статические генераторы, и при чём здесь Headless - предстоит выяснить. Ознакомительная статья по GraphQL на Хабре Сайт GraphQL.org И бонус: DevOps статья по инфраструктуре CI/CD (хабр).

Разбираемся в новой волне критики ООП

Изображение
1. Статья с критикой ООП https://tproger.ru/translations/oop-the-trillion-dollar-disaster/ Основная идея: при создании парадигмы (и фреймворка) ООП в шестидесятых, ключевой идеей был именно обмен сообщениями, а не дерево объектов. И при сохранении этой идеи код легче в поддержке, понимании, и более отказоустойчив. Вначале была инкапсуляция - и именно она отражала ключевую идею оригинального ООП (объекты закрыты, сигналы в приоритете). Но в дальнейшем фокус внимания сообщества разработчиков сместился от сообщений к объектам. В результате сформировались полиморфизм и наследование. Последовал эффект бойлерплейт, крупные программы стали характеризоваться сотнями объектов с тысячями возможных состояний. Открытость состояний объектов повышала связность и уменьшала коэффициент сигнал/шум в программе. В результате - избыточность кодовой базы, избыточность тестов, перегруженный процесс поддержки ПО. Объекты связывают функции и структуры данных вместе в неделимых единицах. Я дума...

Вовсе не нуль-процентный день

Итоги дня: - Запостил первую публикацию на Яндекс-дзен про нуль-процентный день. - Привёл в порядок этот блог. - Поработал над прототипом сайта в фигме. - Принял решение уходить в Django, немного привёл мысли в порядок.

DevOps: начало

Запишу на память несколько tips для ускорения развёртки веба. 1. Гайд Бегета по Python/Django/Flask и т.п. https://beget.com/ru/articles/webapp_python 2. Документация по Django https://docs.djangoproject.com/en/3.0/intro/install/ 3. Документация по DjangoCMS https://www.django-cms.org/en/blog/category/tutorials/ https://www.django-cms.org/en/blog/category/technical-articles/ 4. Rich Text редактор SummerNote (MIT License): https://summernote.org/getting-started/ 5. Документация Яндекса по БЭМ: -  https://github.com/bem-site/bem-method/blob/bem-info-data/method/quick-start/quick-start.ru.md -  https://github.com/bem-site/bem-method/blob/bem-info-data/articles/yandex-frontend-dev/yandex-frontend-dev.en.md Гайды по Git: https://githowto.com/ru https://rogerdudler.github.io/git-guide/index.ru.html https://proglib.io/p/git-for-half-an-hour Учебник по Git (ru): https://git-scm.com/book/ru/v2/Введение-О-системе-контроля-версий Гайд по venv  😄 : http...

Запулил всякое

Чертовски интересный декабрь. Освободившись от работы, яростно предался тому, чего так не хватало полгода. Технические впечатления от декабря: Yggdrasil Mesh VPS > SSH > Flask Поднял на Бегете hz13 wave , покувырявшись с composer и версиями php Консоль, много консоли Обновил свой линь, много консоли Внезапно реанимирован hz13.net , подивившись тому, как вдумчиво я подходил к первым шагам его создания два года назад Немного навёл порядок во всём остальном Пригодилась заметка в этом блоге о редиректе с http на https , как знал. А всё остальное набрал из всевозможных мануалов (даже stackoverflow почти не открывал).

Настройка редиректа htaccess с http на https

RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Настройки для свежего Mint в 2018 году

Общие рецепты, как сделать взаимодействие с Linux Mint максимально комфортным ещё при установке. Разметка диска /boot -  не меньше 500 МБ, проверено слезами и болью. / - гигов 200 /home - всё остальное Причем, желательно сделать еще один раздел в NTFS , который чудесным образом будет брать на себя роль бэкапов "по горячим следам", чтобы не копировать всю чушь из /home. Пакеты musthave * в дополнение к дефолтным, конечно. dconf-editor pluma chromium filezilla atom virtualbox-qt audacious blender kdenlive / openshot / shotcut audacity darktable / digikam calligra inkscape shutter krita / mypaint Кодировки в Pluma 1. dconf-editor 2. org/mate/pluma 3. search: "encodings" 4. заменить кодировки на кастомную: ['WINDOWS-1251', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'CP-866', 'UTF-16'] Замена начала недели на Понедельник 1. /etc/default/locale 2. LC_TIME="ru_RU.UTF-8" Убрать Spl...

beget, passenger, java

Как сказали в Бегете , они не разрешают прослушивание портов. Однако, приложения на Python и Node.JS запускают собственные серверы на разных портах из-под докера. Значит, установка XWiki может потребовать колдунства с Passenger, но разработчик Passenger в январе 2017 заявил , что поддержка PassengerAppType java (и в принципе любых приложений) на тот момент отсутствовала. А какие возможности у Passenger сейчас - неизвестно, потому что сайт PhusionPassenger сейчас в отключке. Так как лёгких путей нет, обойдусь пока без XWiki.

Когда делаешь дизайн сайта в WordPad

Изображение
Кто-то дизайнит страницу в Фотошопе, кто-то в GIMP, кому-до достаточно всяких векторных или скетч редакторов. Я же сегодня готовлю дизайн в WordPad! Похоже, удалось достичь большого сходства между дизайном и вёрсткой. :) Следующий шаг - навести порядок в templates и научиться ловчее работать с Jinja2. Дальнейшие шаги - бутстрап и mysql.

static

Пока не понял, что папка "static" таковая по конвенции , тратил нервы на синхронизацию между локальным и удалённым проектом. Картинки на локальной машине почему-то не отображались, что бы я ни пробовал... И перемещал, и переименовывал, и копировал, и прописывал static_folder. Но стоило в шаблонах прописать "/ static /img..." - как тут же все картинки заработали! Почему раньше не работало - так и не разобрался. Теперь, надеюсь, разработка принесёт больше удовольствия.

hz13 и нахлынувшая продуктивность

Изображение
Не знаю, что на меня нашло, но переизбыток информации в голове привёл к оптимизации маршрута. В итоге, вместо настройки MySQL PostgreSQL/MariaDB , вместо подключения шаблонов и прочее, я проскакал галопом по мануалам и подключил к hz13.net следующее: Форму логина и пароля Обработчик введенных данных (то есть, объекты request.form['username'] и session ['username'] Пару вариантов редиректа с http на https: SSLify (кстати, он почему-то показал себя плохо - возможно, я неправильно его использовал). redirect(request.url.replace("http://", "https://")) Вывод Flashing messages И еще немного шаманства с Jinja и шаблонами. В то же время, почему-то экземпляр сайта перестал работать на локальной машине при точном копировании с FTP. Но это небольшая проблема, т.к.редактировал всё "по горячему". Отсюда вырисовываются ближайшие шаги: 1. Подключение Cookies (зачем?) 2. Подключение запросов к БД. 3. Дальнейший тюнинг шаблонов. А...

Несколько важных шагов

Изображение
Даже не знаю, с чего начать... Сегодня я наконец-то разобрался в одном давно волновавшем меня вопросе. Сегодня мне удалось сделать то, что на ранг повышает качество проектов на Python. Мне сегодня вообще много чего удалось сделать. Начну с фразы "много чего удалось сделать" - а что именно? Первое. На хостинге beget установил собственный экземпляр последнего Python 3.6.2 и Flask через Docker. Их мануалы работают. Хотя именно по серверной части мне далеко не все понятно. В общем, сейчас сайт выглядит вот так. Второе. Разобрался на локальном компьютере с новым модулем пайтона - pyvenv или venv, который призван облегчить всем жизнь. Установил Фласк через pyvenv, вернулся в системную среду - фласка нет :) Значит, всё работает. Теперь самое интересное. Мое понимание пайтона было неполноценным из-за всех этих модулей и пакетов. Таково мое восприятие архитектуры крупных приложений: если ты не можешь собрать что-то крупное в пакет и, например, отправить в репозит...

небольшая заметка про организацию своих дел

Сегодня я прихожу к выводу, что мне нужно перестать спать . Нет, не так. Просто я решил начать двигать к цели. Цель пока размыта (то ли за горизонтом, то ли в тумане войны, то ли просто в тумане). Но так будет постоянно. Смысл в том, что несколько моих любимых видов деятельности теперь обнимает одна идея. Так стало проще. А подспорьем всему этому станет то, что я оживлю блог. И буду делиться здесь реальными результатами деятельности. А результатов этих у меня немало (но и не очень-то много). По большому счёту, вся "мозгоёмкая" древовидная структура проектов свелась к обычным таскам в стиле канбан. Вот это прозрение, вот это менеджерский дзен! Это один из примеров того, какое облегчение принесла окрепшая идея: теперь вместо разрозненных кусков формируется нечто одно. Еще есть моменты нерешительности. Скорее всего, их я пройду когда время настанет. Надо будет над ними поразмышлять, а так же дать времени и обстоятельствам сделать свою часть работы. Возможно, какие-то...

Запускаю личный проект

Прежде всего, стоит иронично добавить, что я его уже три года запускаю. Одна из итераций личного сайта aglvov.com функционировала в 2015-м году (статичная страница через flask). С тех пор очень много воды утекло. И я возвращаюсь к работе над собственным ресурсом. Итак, мне понадобится: • два стакана воды • свежие яблоки 2 шт. ( шутка, хотя и с долей правды ). Итак, мне понадобятся: 1. Задизайнить уже готовый прототип сайта. 2. Освоить свежий буцтрап, методом верстания сайта :) 3. Спроектировать базу данных (для этого - быстренько разобраться в MySQL и теории баз данных). 4. Собственно, накодить сайт на Flask (включая шаблонизатор). Цель всего этого - создать личный ресурс, который станет отправной точкой целого ряда активностей. Ресурс, по которому меня будут узнавать, который станет "визитной карточкой" и будет показывать мой уникальный почерк в сфере интернет-технологий. Помимо самой цели, процесс движения к ней также имеет значение. Все перечисленные вы...