💡 Воспользуйтесь прогрессивным улучшением (progressive enchantment)
Всегда принимайте во внимание выключенный JavaScript. Очень соблазнительно думать «Большая часть моих пользователей не отключает JS, так что зачем мне беспокоиться». Тем не менее это большая ошибка.
А не пробовали ли вы на момент взглянуть на ваш красивый слайдер с отключённым JavaScript? (Скачайте the Web Developer Toolbar чтобы быстро проверить это.) Он может сломать полностью весь ваш сайт. Проектируйте дизайн сайта предполагая что JS может быть отключен. И уже после этого начинайте улучшать макет используя JavaScript.
#советы #js
Всегда принимайте во внимание выключенный JavaScript. Очень соблазнительно думать «Большая часть моих пользователей не отключает JS, так что зачем мне беспокоиться». Тем не менее это большая ошибка.
А не пробовали ли вы на момент взглянуть на ваш красивый слайдер с отключённым JavaScript? (Скачайте the Web Developer Toolbar чтобы быстро проверить это.) Он может сломать полностью весь ваш сайт. Проектируйте дизайн сайта предполагая что JS может быть отключен. И уже после этого начинайте улучшать макет используя JavaScript.
#советы #js
🔥 Лучшее на канале за неделю
1. Как выбрать язык программирования для изучения.
2. MassCode - менеджер фрагментов кода с открытым исходным кодом.
3. Самый быстрый способ получить строку в JavaScript.
1. Как выбрать язык программирования для изучения.
2. MassCode - менеджер фрагментов кода с открытым исходным кодом.
3. Самый быстрый способ получить строку в JavaScript.
🛠 Flowy — библиотека, которая позволяет быстро интегрировать красивые блок-схемы в ваше приложение. Flowy не просто отображает блок-схемы - на самом деле это целый редактор перетаскивания с отличным интерфейсом, множеством параметров настройки, прослушивателями событий жестов и другими функциями.
#инструменты
#инструменты
📑 Разбираемся в рекурсии
Про рекурсию ходит много шуток, и она традиционно считается одной из сложных для понимания тем в computer science, поэтому давайте сегодня немного о ней поговорим. А именно, давайте обсудим, как выражать доказуемо завершимые вычисления.
#статьи
Про рекурсию ходит много шуток, и она традиционно считается одной из сложных для понимания тем в computer science, поэтому давайте сегодня немного о ней поговорим. А именно, давайте обсудим, как выражать доказуемо завершимые вычисления.
#статьи
🛠 Magic — отличная коллекция из более чем 50 настраиваемых CSS-анимаций, которые очень простые в использовании. Просто добавьте соответствующие классы к элементам страницы с помощью JS и готово!
#инструменты
#инструменты
💡 Уберите из репозитория ненужные файлы
Выкладывая код на GitHub следует придерживаться правила, в соответствии с которым в репозиторий не должно попадать ничего такого, что создано не владельцем репозитория. Вот хорошее руководство по
Начальный вариант файла
Следующий текст можно рассматривать в качестве начального варианта содержимого
#советы #coding #python
Выкладывая код на GitHub следует придерживаться правила, в соответствии с которым в репозиторий не должно попадать ничего такого, что создано не владельцем репозитория. Вот хорошее руководство по
.gitignore, в котором даётся обзор того, что обычно не стоит включать в репозитории.Начальный вариант файла
.gitignore для Python-проектовСледующий текст можно рассматривать в качестве начального варианта содержимого
.gitignore. Добавьте такой файл в свой проект в самом начале работы над ним.*.pycЕсли вам нужен более масштабный пример
*.egg-info
# Если вы программируете на Mac
.DS_Store
# Если вы пользуетесь виртуальными окружениями
# в проектах. Я, например, обычно ими пользуюсь.
/env
# Настройки и хранение секретных данных
/.env
.gitignore — взгляните на этот файл из коллекции GitHub. Используйте его как источник вдохновения и как базу для вашего .gitignore.#советы #coding #python
📑 Как генерируются UUID
Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.
Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
#статьи
Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.
Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
#статьи
💡 Не храните в коде секретные данные
Часть 1
В репозитории не должно быть никаких паролей к базам данных, ключей к внешним API, секретных ключей систем шифрования! Подобные вещи надо хранить в конфигурационных файлах или в переменных окружения. Ещё один вариант — их чтение из защищённого хранилища. А включать их в код — это в высшей степени неправильно. Вот — отличное руководство на тему хранения конфигурационных данных, подготовленное в рамках проекта The Twelve-Factor App (другие материалы этого проекта тоже весьма полезны).
Неправильно: реквизиты базы данных хранятся в коде
Ниже приведён фрагмент Flask-приложения. Автор хранит реквизиты для доступа к базе данных в коде.
Примеры кода, а также хранение данных в файле
#советы #coding #python
Часть 1
В репозитории не должно быть никаких паролей к базам данных, ключей к внешним API, секретных ключей систем шифрования! Подобные вещи надо хранить в конфигурационных файлах или в переменных окружения. Ещё один вариант — их чтение из защищённого хранилища. А включать их в код — это в высшей степени неправильно. Вот — отличное руководство на тему хранения конфигурационных данных, подготовленное в рамках проекта The Twelve-Factor App (другие материалы этого проекта тоже весьма полезны).
Неправильно: реквизиты базы данных хранятся в коде
Ниже приведён фрагмент Flask-приложения. Автор хранит реквизиты для доступа к базе данных в коде.
from flask import FlaskПравильно: реквизиты хранятся в переменных окружения.
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://user:secret@localhost:5432/my_db"
Примеры кода, а также хранение данных в файле
.env будут в следующей части.#советы #coding #python
🔥 Лучшее на канале за неделю
1. Разбираемся в рекурсии.
2. Flowy — библиотека, которая позволяет быстро интегрировать красивые блок-схемы в ваше приложение.
3. Уберите из репозитория ненужные файлы.
1. Разбираемся в рекурсии.
2. Flowy — библиотека, которая позволяет быстро интегрировать красивые блок-схемы в ваше приложение.
3. Уберите из репозитория ненужные файлы.
📑 7 практик отличных разработчиков
Мы все хотим достичь наших самых больших карьерных целей, но слишком часто мы слишком концентрируемся на цели, а не на методе, который мы используем для достижения этой цели.
Часто это приводит к бесконечному циклу возбуждения, мотивации, неудач, выгорания и сдачи, только чтобы начать цикл снова, когда у нас появляется новое представление о вновь возникшей мотивации.
Когда дело доходит до начала и построения успешной карьеры разработчика, так же важно сосредоточиться на мелочах, которые вы делаете каждый день, как и на своих целях.
#статьи
Мы все хотим достичь наших самых больших карьерных целей, но слишком часто мы слишком концентрируемся на цели, а не на методе, который мы используем для достижения этой цели.
Часто это приводит к бесконечному циклу возбуждения, мотивации, неудач, выгорания и сдачи, только чтобы начать цикл снова, когда у нас появляется новое представление о вновь возникшей мотивации.
Когда дело доходит до начала и построения успешной карьеры разработчика, так же важно сосредоточиться на мелочах, которые вы делаете каждый день, как и на своих целях.
#статьи
Daily Coding 🔥
Выберите правильный вариант 👇🏼 #test #python
Обсудить тест и почитать объяснения можно в нашем чате @dailycoders
🛠 VoxelSpace — генератор бесконечного ландшафта, созданного с нуля. Исходный код содержит множество комментариев, а сам алгоритм рендеринга очень хорошо объяснен в readme. Вы можете посмотреть демо здесь .
#инструменты
#инструменты
💡 Не храните в коде секретные данные
Часть 2
Перед прочтением рекомендуем ознакомиться с первой частью.
Правильно: реквизиты хранятся в переменных окружения
Перенести реквизиты для доступа к базе данных в переменные окружения совсем несложно:
Хранение данных в файле
#советы #coding #python
Часть 2
Перед прочтением рекомендуем ознакомиться с первой частью.
Правильно: реквизиты хранятся в переменных окружения
Перенести реквизиты для доступа к базе данных в переменные окружения совсем несложно:
import osТеперь нужно, перед запуском приложения, инициализировать переменные окружения:
from flask import Flask
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("SQLALCHEMY_DATABASE_URI")
export SQLALCHEMY_DATABASE_URI=postgresql://user:secret@localhost:5432/my_dbПравильно: реквизиты хранятся в файле .env
flask run
Хранение данных в файле
.env будет в следующей части.#советы #coding #python
📑 Вышел новый релиз «Python для браузеров», встречаем Brython 3.9
Разработчики проекта Brython Python выпустили новый релиз, Brython 3.9. Сам проект позиционируется, как «Python для браузера». Он основан на Python 3 и выполняется на стороне браузера, причем для разработки веб-скриптов вместо JavaScript используется Python. Код проекта написан на Python и распространяется под лицензией BSD. Новый релиз совместим с Python 3.9, плюс обновлена стандартная библиотека.
#статьи #python
Разработчики проекта Brython Python выпустили новый релиз, Brython 3.9. Сам проект позиционируется, как «Python для браузера». Он основан на Python 3 и выполняется на стороне браузера, причем для разработки веб-скриптов вместо JavaScript используется Python. Код проекта написан на Python и распространяется под лицензией BSD. Новый релиз совместим с Python 3.9, плюс обновлена стандартная библиотека.
#статьи #python