[Из песочницы] Хранение изображений с помощью Django/Django REST
Проблема
Мне в ходе разработки часто приходится работать с моделями, в которых должны быть изображения. Для удобной организации я использую древовидную структуру папок. В целом, Django предоставляет инструмент для работы с изображениями. Например, вот вопрос на Хабр Q&A о том, как работать с пикчами в Django: использовать ImageField
class Article(models.Model):
title = models.CharField(max_length=255)
content = models.TextField()
img = models.ImageField(upload_to='/article', height_field=100, width_field=100)
Параметр upload_to указывает название папки, в которую нужно загрузить вашу пикчу. И получается, что в рантайме мы никак не сможем повлиять на место куда будет загружено ваше изображение. Выходит что для одной модели, все изображения будут складываться в одну папку. Беспорядок и непорядок какой-то в общем.
Читать дальше → http://amp.gs/WEu8
Проблема
Мне в ходе разработки часто приходится работать с моделями, в которых должны быть изображения. Для удобной организации я использую древовидную структуру папок. В целом, Django предоставляет инструмент для работы с изображениями. Например, вот вопрос на Хабр Q&A о том, как работать с пикчами в Django: использовать ImageField
class Article(models.Model):
title = models.CharField(max_length=255)
content = models.TextField()
img = models.ImageField(upload_to='/article', height_field=100, width_field=100)
Параметр upload_to указывает название папки, в которую нужно загрузить вашу пикчу. И получается, что в рантайме мы никак не сможем повлиять на место куда будет загружено ваше изображение. Выходит что для одной модели, все изображения будут складываться в одну папку. Беспорядок и непорядок какой-то в общем.
Читать дальше → http://amp.gs/WEu8
Перестать выращивать динозавров. Как эволюционирует архитектура приложения http://amp.gs/WEwU
Хабр
Перестать выращивать динозавров. Как эволюционирует архитектура приложения
Привет, меня зовут Виталий Корж, я Dev Lead из Luxoft. Последние пару лет мы с командой занимаемся разработкой в области Digital Asset Management. Эта статья — н...
Alpine.js – события и глобальное хранилище данных
В прошлый раз, когда мы делали to-do на Alpine.js, меня очень сильно расстроило, что, хоть я и могу создавать вложенные компоненты, я не могу получать данные из родителя. Через какую-нибудь переменную, $parent, например.
Поэтому мне пришлось запихивать все яица в одну корзину. Свойства и методы, отвечающие за добавление новых задач, перемешались со всеми остальными. Я хотел выделить отдельный компонент, но необходимость доступа к массиву todos меня ограничивала.
Если вы подумали, что это не очень хорошо, то вы не правы. На самом деле, это ужасно.
Всё, расходимся? Нет. Я еще раз полисал документацию и вспомнил про магическое свойство $dispatch. Ну, конечно… однопоточная связь, проброс событий. Ну давайте попробуем. А потом еще переосмыслим всё с глобальным store. Читать дальше → http://amp.gs/WVjU
В прошлый раз, когда мы делали to-do на Alpine.js, меня очень сильно расстроило, что, хоть я и могу создавать вложенные компоненты, я не могу получать данные из родителя. Через какую-нибудь переменную, $parent, например.
Поэтому мне пришлось запихивать все яица в одну корзину. Свойства и методы, отвечающие за добавление новых задач, перемешались со всеми остальными. Я хотел выделить отдельный компонент, но необходимость доступа к массиву todos меня ограничивала.
Если вы подумали, что это не очень хорошо, то вы не правы. На самом деле, это ужасно.
Всё, расходимся? Нет. Я еще раз полисал документацию и вспомнил про магическое свойство $dispatch. Ну, конечно… однопоточная связь, проброс событий. Ну давайте попробуем. А потом еще переосмыслим всё с глобальным store. Читать дальше → http://amp.gs/WVjU
[Перевод] Правда о регистре символов, которую должны знать программисты http://amp.gs/WVt3
Хабр
Правда о регистре символов, которую должны знать программисты
На конференции North Bay Python в 2018 году я делал доклад об именах пользователей. Информация из доклада по большей части была собрана мною за 12 лет поддержки...
[Перевод] 5 уроков, которые я извлек для себя, продолжая осваивать ZIO http://amp.gs/WVBp
Хабр
5 уроков, которые я извлек для себя, продолжая осваивать ZIO
Всем привет. В преддверии старта курса "Scala-разработчик" подготовили для вас полезный перевод.Еще в январе 2020 года я написал два поста (I, II) о подводных ка...
Уязвимости в реализации межпроцессного взаимодействия в Android-приложениях http://amp.gs/WVnM
Хабр
Уязвимости в реализации межпроцессного взаимодействия в Android-приложениях
Последние 6 лет я работаю экспертом по информационной безопасности в Одноклассниках и отвечаю за безопасность приложений. Мой доклад сегодня — о механизмах межп...
Работа с памятью в Tarantool: Small — Specialized Memory ALLocators http://amp.gs/WV79
Хабр
Работа с памятью в Tarantool: Small — Specialized Memory ALLocators
Tarantool — это персистентная NoSQL СУБД в памяти с хранимыми процедурами на Lua. В него встроен SQLite и дисковый движок (Vinyl). Также для Tarantool написано...
Система под контролем: как автоматизировать интеграционные тесты http://amp.gs/WVNN
Хабр
Система под контролем: как автоматизировать интеграционные тесты
Привет! Меня зовут Ксения Якиль. Я пишу core-сервисы на C и Go в бэкенд-отделе Badoo и Bumble. Наш бэкенд — это высоконагруженная распределённая система, обслужи...
У нас появился новый образ в маркетплейсе: VPS с Joomla 3.9 на Centos 8 http://amp.gs/WV0O
Хабр
У нас появился новый образ в маркетплейсе: VPS с Joomla 3.9 на Centos 8
Joomla — третья по популярности (после Wordpress и Shopify) система управления контентом, написанная на языке PHP и использующая в качестве хранилища данных ре...
[Из песочницы] Настройка синхронизации google calendar с web приложением http://amp.gs/WVcy
Хабр
Настройка синхронизации google calendar с web приложением
В данной статье рассматривается ситуация, когда приложению необходимо получить доступ к одному или нескольким календарям, находящимся под управлением владельца п...
Этичный хакинг: как взламывать системы и при этом зарабатывать легально http://amp.gs/WVbC
Хабр
Этичный хакинг: как взламывать системы и при этом зарабатывать легально
Кто такой хакер? Большинство людей, которые далеки от программирования, представляют перед собой злостного преступника, взламывающего системы безопасности банк...