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

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

Ссылка: @Portal_v_IT

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

Канал на бирже: telega.in/c/dailycoding
Download Telegram
💡 Используйте имена столбцов в ORDER BY

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

▍Часть 2

Примеры кода:

▍Не нужно так делать:

   SELECT col, col2, col3
FROM table
ORDER BY 2, 1

А лучше так:

   SELECT col, col2, col3
FROM table
ORDER BY col2, col

#советы #coding #sql
💡 Сохраняйте SQL запросы

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

#советы #coding #sql
💡 Не создавайте много курсоров

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

#советы #coding #sql
💡 Проверяйте и тестируйте условия при UPDATE и DELETE

Совет на собственную проверку. Иногда, когда требуется что-то массово обновить (UPDATE), всегда тестируйте запрос на тестовой базе, иначе, например, одно не верное условие может быть практически необратимо. Поэтому всегда под рукой должна быть тестовая база.

#советы #coding #sql
💡 Используйте понятные названия

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

#советы #coding #sql
💡 Визуализация моделей

Установите Django Command Extensions и pygraphviz и затем используйте следующую команду чтобы получить удобную визуализацию моделей проекта в Django:

./manage.py graph_models -a -g -o my_project.png

Daily Coding #советы #coding #python #django #web
💡 Virtualenv

Virtualenv + Python = палочка-выручалочка. Virtualenv будет изолировать настройки Python/Django для каждого отдельного проекта. Это значит, что изменения одного сайта не затронут другие сайты. Также это может оказаться удобным, когда на сервере необходимо держать разные версии Django или python.

Daily Coding #советы #coding #python #django #web
💡 Используйте Memcache

Когда низкая производительность может стать проблемой, вы скорее всего захотите установить какую-либо систему кеширования. Django предлагает множество вариантов для кеширования, но лучшим из них на сегодняшний день является memcached. Установить и использовать memcached весьма просто, если вы используете модуль cmemcache. После того как модуль будет установлен, вам нужно внести одну строку в конфигурацию, чтобы ваши страницы начали выдаваться еще быстрее.

Daily Coding #советы #coding #python #django #web
💡 Автозагрузка кастомных тегов, которые можно использовать во всех шаблонах

from django import template
template.add_to_builtins('project.app.templatetags.custom_tag_module')

Если добавить это в модуль который загружается по умолчанию (settings.py,urls.py,every app models.py), у вас будут доступны все теги и фильтры из вашего кастомного модуля в любом шаблоне, без использования {% load custom_tag_module %}.

Аргументом к template.add_to_builtins() может быть путь к любому модулю; ваш кастомный модуль не обязательно должен быть привязан к какому то определенному приложению.
Например, это так же может быть модуль расположенный в корневом каталоге проекта (например: 'project.custom_tag_module').

Daily Coding #советы #coding #python #django #web
💡 Стоит ли изучать Django?

Если вы начинающий программист, и задаетесь вопросом: должен ли я изучить Django? Короткий ответ — да.

Если вам потребуется реализовать вашу идею с минимальными затратами и быстро — Django подходящий инструмент. Он бесплатен, свободен и позволяет сделать разработку web-проектов еще проще. Django лучшее решение для разработки прототипов приложений, поскольку он включает все необходимое для создания необходимого функционала прямо из коробки. Например, админка может быть подключена одной строчкой кода.

Если вы разработчик уже знакомый с Python, и находитесь в поисках фреймворка для бэкенда вашего приложения или сайта, Django также будет хорошим выбором. Фреймворк содержит в себе библиотеки и инструменты позволяющие проводить различные операции и эффективно обрабатывать большое количество запросов пользователей в реальном времени.
Поэтому процесс разработки становится быстрым, так как вам не нужно создавать каждый компонент с нуля.

Daily Coding #советы #coding #python #django #web
💡 Команды для Python по работе с файлами и файловой системой

Начинаем новую серию советов: команды для Python по работе с файлами и файловой системой, которые обязательно нужно знать.

▍Показать текущий каталог

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

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

Так вот, для того чтобы показать текущий каталог, нужна встроенная в Python OS-библиотека:

import os
os.getcwd()

Ее легко запомнить, так что лучше выучить один раз, чем постоянно гуглить. Это здорово экономит время.

Daily Coding #советы #coding #python
💡 Команды для Python по работе с файлами и файловой системой

▍Проверяем, существует файл или каталог

Прежде чем задействовать команду по созданию файла или каталога, стоит убедиться, что аналогичных элементов нет. Это поможет избежать ряда ошибок при работе приложения, включая перезапись существующих элементов с данными.

Функция os.path.exists () принимает аргумент строкового типа, который может быть либо именем каталога, либо файлом.

В случае с Google Colab при каждом запуске создается папка sample_data. Давайте проверим, существует ли такой каталог. Для этого подойдет следующий код:

os.path.exists('sample_data')

Эта же команда подходит и для работы с файлами:

os.path.exists('sample_data/README.md')

Если папки или файла нет, команда возвращает false.

Daily Coding #советы #coding #python
1
💡 Команды для Python по работе с файлами и файловой системой

▍Объединение компонентов пути

В предыдущем примере был намеренно использован слеш "/" для разделителя компонентов пути. В принципе это нормально, но не рекомендуется. Если вы хотите, чтобы ваше приложение было кроссплатформенным, такой вариант не подходит. Так, некоторые старые версии ОС Windows распознают только слеш "\" в качестве разделителя.

Но не переживайте, Python прекрасно решает эту проблему благодаря функции os.path.join(). Давайте перепишем вариант из примера в предыдущем совете, используя эту функцию:

os.path.exists(os.path.join('sample_data', 'README.md'))

Daily Coding #советы #coding #python
💡 Команды для Python по работе с файлами и файловой системой

▍Создание директории

Ну а теперь самое время создать директорию с именем test_dir внутри рабочей директории. Для этого можно использовать функцию os.mkdir():

os.mkdir('test_dir')

Рекомендуется всегда проверять наличие каталога с определенным названием перед созданием нового:

if not os.path.exists('test_dir'):
os.mkdir('test_dir')

Еще один совет по созданию каталогов. Иногда нам нужно создать подкаталоги с уровнем вложенности 2 или более. Если мы все еще используем os.mkdir (), нам нужно будет сделать это несколько раз. В этом случае мы можем использовать os.makedirs (). Эта функция создаст все промежуточные каталоги так же, как флаг mkdir -p в системе Linux:

os.makedirs(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

Daily Coding #советы #coding #python
💡 Команды для Python по работе с файлами и файловой системой

▍Показываем содержимое директории

Еще одна полезная команда — os.listdir(). Она показывает все содержимое каталога.

Команда отличается от os.walk (), где последний рекурсивно показывает все, что находится «под» каталогом. os.listdir () намного проще в использовании, потому что просто возвращает список содержимого:

os.listdir('sample_data')

В некоторых случаях нужно что-то более продвинутое — например, поиск всех CSV-файлов в каталоге «sample_data». В этом случае самый простой способ — использовать встроенную библиотеку glob:

from glob import globlist(glob(os.path.join('sample_data', '*.csv')))

Daily Coding #советы #coding #python
💡 Команды для Python по работе с файлами и файловой системой

▍Перемещение файлов
| Часть 1

Время попробовать переместить файлы из одной папки в другую. Рекомендованный способ — еще одна встроенная библиотека shutil.

Сейчас попробуем переместить все CSV-файлы из директории «sample_data» в директорию «test_dir». Ниже — пример кода для выполнения этой операции:

import shutilfor file in list(glob(os.path.join('sample_data', '*.csv'))):
shutil.move(file, 'test_dir')

Кстати, есть два способа выполнить задуманное. Например, мы можем использовать библиотеку OS, если не хочется импортировать дополнительные библиотеки. Как os.rename, так и os.replace подходят для решения задачи.

Но обе они недостаточно «умные», чтобы позволить перемесить файлы в каталог.

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

Daily Coding #советы #coding #python
💡 Команды для Python по работе с файлами и файловой системой

▍Перемещение файлов
| Часть 2

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

Ниже — код, который это позволяет сделать:

for file in list(glob(os.path.join('test_dir', '*.csv'))):
os.rename(
file,
os.path.join(
'sample_data',
os.path.basename(file)
))

Здесь функция os.path.basename() предназначена для извлечения имени файла из пути с любым количеством компонентов.

Другая функция, os.replace(), делает то же самое. Но разница в том, что os.replace() не зависит от платформы, тогда как os.rename() будет работать только в системе Unix / Linux.

Еще один минус — в том, что обе функции не поддерживают перемещение файлов из разных файловых систем, в отличие от shutil.

Поэтому лучше использовать shutil.move() для перемещения файлов.

Daily Coding #советы #coding #python
👍1
💡 Команды для Python по работе с файлами и файловой системой

▍Копирование файлов

Аналогичным образом shutil подходит и для копирования файлов по уже упомянутым причинам.

Если нужно скопировать файл README.md из папки «sample_data» в папку «test_dir», поможет функция shutil.copy():

shutil.copy(
os.path.join('sample_data', 'README.md'),
os.path.join('test_dir')
)

Daily Coding #советы #coding #python
💡 Команды для Python по работе с файлами и файловой системой

▍Удаление файлов и папок

Разберёмся с процедурой удаления файлов и папок. Нам здесь снова поможет библиотека OS.

Когда нужно удалить файл, нужно воспользоваться командой os.remove():

os.remove(os.path.join('test_dir', 'README(1).md'))

Если требуется удалить каталог, на помощь приходит os.rmdir():

os.rmdir(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

Продолжение следует...

Daily Coding #советы #coding #python