Daily Coding 🔥
8.72K subscribers
1.9K photos
6 videos
1 file
1.74K links
Канал, который научит вас программировать лучше и эффективнее.

Интересные задачи, обучающие статьи, советы по стилю кода и многое другое.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/dailycoding
Download Telegram
📑 Как генерируются UUID

Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.

Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.

#статьи
Выберите правильный вариант 👇🏼 #test
💡 Не храните в коде секретные данные

Часть 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. Уберите из репозитория ненужные файлы.
📑 7 практик отличных разработчиков

Мы все хотим достичь наших самых больших карьерных целей, но слишком часто мы слишком концентрируемся на цели, а не на методе, который мы используем для достижения этой цели.

Часто это приводит к бесконечному циклу возбуждения, мотивации, неудач, выгорания и сдачи, только чтобы начать цикл снова, когда у нас появляется новое представление о вновь возникшей мотивации.

Когда дело доходит до начала и построения успешной карьеры разработчика, так же важно сосредоточиться на мелочах, которые вы делаете каждый день, как и на своих целях.

#статьи
Выберите правильный вариант 👇🏼 #test #python
Daily Coding 🔥
Выберите правильный вариант 👇🏼 #test #python
Обсудить тест и почитать объяснения можно в нашем чате @dailycoders
🛠 VoxelSpace — генератор бесконечного ландшафта, созданного с нуля. Исходный код содержит множество комментариев, а сам алгоритм рендеринга очень хорошо объяснен в readme. Вы можете посмотреть демо здесь .

#инструменты
💡 Не храните в коде секретные данные

Часть 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
flask run

Правильно: реквизиты хранятся в файле .env

Хранение данных в файле .env будет в следующей части.

#советы #coding #python
📑 Вышел новый релиз «Python для браузеров», встречаем Brython 3.9

Разработчики проекта Brython Python выпустили новый релиз, Brython 3.9. Сам проект позиционируется, как «Python для браузера». Он основан на Python 3 и выполняется на стороне браузера, причем для разработки веб-скриптов вместо JavaScript используется Python. Код проекта написан на Python и распространяется под лицензией BSD. Новый релиз совместим с Python 3.9, плюс обновлена стандартная библиотека.

#статьи #python
Выберите правильный вариант 👇🏼 #test
💡 Не храните в коде секретные данные

Часть 3

Перед прочтением рекомендуем ознакомиться с первой и второй частями.

Правильно: реквизиты хранятся в файле .env

Для того чтобы перед запуском программы не приходилось бы вручную инициализировать переменные окружения, можно пойти дальше. А именно, речь идёт о том, чтобы сохранить эти данные в файле .env. Далее, нужно установить пакет python-dotenv и инициализировать переменные окружения прямо из Python-кода.

Вот как может выглядеть файл .env:

SQLALCHEMY_DATABASE_URI=postgresql://user:secret@localhost:5432/my_db

Вот как работать с этим файлом из кода:

import os
from dotenv import load_dotenv
from flask import Flask

load_dotenv()

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("SQLALCHEMY_DATABASE_URI")

И надо не забыть добавить запись об .env в .gitignore. Благодаря этому данный файл не будет случайно выгружен в репозиторий.

#советы #coding #python
🔥 Лучшее на канале за неделю

1
. 7 практик отличных разработчиков.

2. VoxelSpace — генератор бесконечного ландшафта, созданного с нуля.

3. Не храните в коде секретные данные.
🛠 Snowpack — инструмент для связывания зависимостей JavaScript. В отличие от Webpack и других сборщиков, которые перекомпилируют ваши ресурсы после каждого изменения файла, Snowpack выполняет только первоначальную настройку. После того, как все будет скомпилировано, любые новые изменения в вашем коде будут сразу же доступны без этапа сборки.

#инструменты #js
📑 Почему так сложно извлекать текст из PDF?

Согласно распространённым представлениям, извлечение текста из PDF не должно быть такой уж сложной задачей. Ведь вот он, текст, прямо у нас перед глазами, и люди постоянно и с большим успехом воспринимают содержимое PDF. Откуда взяться трудностям в автоматическом извлечении текста?

Оказывается, точно так же, как работа с именами людей сложна для алгоритмов из-за множества пограничных случаев и неправильных предположений, так и работа с PDF сложна из-за чрезвычайной гибкости PDF-формата.

#статьи
Выберите правильный вариант 👆 #test