XZTVC.ru | Еще один блог разработчика
Опубликовано: 27 февраля 2023 г. 14:36 | Автор: echodiv | Категория: Разработка | 👁 548
Создание временного файла и временной директории в Golang
Go в своей стандартной библиотеке предоставляет инструменты для создания временного файла и временной директории. Для этого можно использовать пакет "os", в котором есть функции MkdirTemp и CreateTemp. Но для удаления временного файла и директории нужно явно указать их удаление для этого можно использовать os.RemoveAll и os.Remove соответственно.
Опубликовано: 5 декабря 2022 г. 7:21 | Автор: echodiv | Категория: Разработка | 👁 500
Организация SQL кода с использованием шаблонов Go
Как организовать хранение SQL кода внутри проекта? В интрнете можно найти несколько вариантов:
- Использовать файлы
- Использовать константы
- Использовать хранимые процедуры и представления
- Использовать порождающие шаблоны
- Использовать ORM
Мне больше всего нравится второй вариант - хранить запросы в константах внутри кода. Но, честно говоря, необходимости в другом подходе у меня не было. А с использованием шаблонов Go хранение запросов в константах становится крайне удобным. Да, шаблоны можно хранить и в файлах. Но поставлять продукт вместе с файлами, достуаными для редактирования не лучшая идея. Шаблон может сильно отличаться от финального варианта запроса и редактирование его без полного понимания, как он будет обработан не лучшая идея.
Опубликовано: 20 октября 2022 г. 22:52 | Автор: echodiv | Категория: Разработка | 👁 1366
Метки golang
Опубликовано: 25 сентября 2022 г. 21:30 | Автор: echodiv | Категория: Разработка | 👁 1157
Структурные теги в golang
type S struct { Field int `tagname:"uno,dos"` }
Опубликовано: 24 июля 2022 г. 1:39 | Автор: echodiv | Категория: Разработка | 👁 487
Пишем middleware для стандартных net/http хэндлеров
Middleware или промежуточное ПО - распространенный шаблон, помогающий вынести во внешний слой общую логику для разных реализаций одного интерфейса. Думаю такое определение имеет право на жизнь.
Представим, что нам нужно написать веб-сервер на стандартном Go пакете net/http. Как же можно реализовать middleware?
Опубликовано: 23 июля 2022 г. 23:10 | Автор: echodiv | Категория: Разработка | 👁 2839
Тестирование в GO с использованием "моков"
Важной частью создания програмного обеспечения является покрытие кодовой базы тестами.
В основании всем известной пирамиды тестрования лежат юнит тесты. Не будем с ней спорить, а будем писать юниты, много юнит тестов. Не всегда можно просто взять и написать тест, иногда для тестирования нам нужно заглушить какие-то зависимости, будь то доступ в базу данных, сетевое взаимодействие или какая-нибудь магия.
Естественно, для этого придумали "моки". Придумали не только их, но в данной статье речь пойдет только про моки и немного про кодогенерацию, не писать же их руками.
Опубликовано: 12 июля 2022 г. 21:30 | Автор: echodiv | Категория: Разработка | 👁 707
Удалить __pycache__, pyc, pyo файлы после исполнения python программы
После исполнения python программы исходный код компилируется в байт-код для ускорения выполнения программы при повторном вызове.
Иногда это может стать проблемой. Преположим, при деплое какого-нибудь сервиса руками, после выполнения тестов на локальной машине. Без гита, без CD. Иногда так проще.
Как лучше всего удалить все папки __pycache__ и файлы .pyc/.pyo?
Опубликовано: 30 июня 2022 г. 19:20 | Автор: echodiv | Категория: Разработка | 👁 633
Типы данных в Go
Любые данные на компьютере хранятся в виде битов. Это те самые нули и единицы. И именно от типа данных будет зависеть как программа будет интерпретировать эти данные.
Например: один символ в Go представляет собой набор битов с типом rune. Если мы выполним следующий код
package main import "fmt" func main() { var a rune = 'A' fmt.Println(a) }
То увидим не "А", а 65, потому что Go так решил, собственно если мы поменяем rune на int ничего не поменяется. Мы отдали символ, а получили число.
Важно хранить наши биты в нужных типах данных, либо понимать как работает компилятор языка, чтобы не было неожиданностей, но сейчас не об этом.
Так какие же типы данных есть в Go?
Опубликовано: 19 мая 2022 г. 21:10 | Автор: echodiv | Категория: Разработка | 👁 1101
Оптимизация структур в GO выравниванием
Вычислительные мощности растут, компьютеры выполняют всё более сложные задачи, оперируют огромными объёмами памяти.
Методы оптимизации работы с памятью становятся всё более высокоуровневыми, но не стоит забывать о простых старых методах, таких как выравнивание структур в памяти.
В этой статье рассмотрено, как сократить используемую память для хранения разных в структурах оптимизируя сами структуры и ускорить доступ к данным структур за счёт уменьшения команд необходимых для этого.
Опубликовано: 11 мая 2022 г. 19:32 | Автор: echodiv | Категория: Разработка | 👁 598
Добавление favicon.ico в Django
Favicon (сокр. от англ. FAVorite ICON — «значок для избранного») — значок веб-сайта или веб-страницы. Отображается браузером во вкладке перед названием страницы, и в качестве картинки рядом с закладкой, а также в адресной строке в некоторых браузерах. (c) wikipedia.org
Каждый веб-сайт должен иметь иконку, которая передаёт настроение сайта (или нет), большинство браузеров ожидает найти favicon.ico в корневом каталоге вашего веб-сайта (/favicon.ico). Самый простой способ использовать статические файлы, но в Django обычно мы используем поддиректорию для доступа к ним (/static).
В этом руководстве мы настроим Django для отображения favicon.ico.