Python генераторы

Опубликовано 2021.08.25 в разделе Python.

Генератор - это обыкновенная функция python. Главное отличие - это то, что данные она возвращает не командой return, а командой yield.

Эта команда и будет генерировать последовательность значений.

И если вызвать такую функцию - она не вернёт объект генератора, не значение. Затем из данного объекта посредством функции next или цикла for удастся получить значения, которые должна была вернуть функция.

Когда генератор вернёт все данные - будет брошен эксепшн типа StopIteration. По сути - генератор это тот же итератор, просто выглядит по-другому.

Php testing - пишем тесты на PHP Unit

Опубликовано 2021.08.22 в разделе Php.

Написание тестов - очень важная часть любого проекта. Если проект большой и сложный-тесты не раз вас спасут.

В чём смысл.

У вас есть какой-то функционал, который работает по определённому алгоритму, который не должен меняться. Тест проверяет, что функционал работает согласно заложенному алгоритму. Если кто-то изменит алгоритм-тест уведомит об этом.

Пример.

Есть бизнес требование "по трём входящим числам найти наибольшее, наименьшее и их сумму".

Решение:

Запуск команды в консоли через php e

Опубликовано 2021.08.22 в разделе Php.

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

Для подобного запуска необходимо открыть терминал(консоль). Это может быть как консоль на вашем локальном компьютере, так и удалённый сервер. Во втором случае нужно подключаться по ssh.

Далее переходите в папку со скриптом и запускаете скрипт командой:

PHP JSON - закодировать и раскодировать

Опубликовано 2021.08.21 в разделе Php.

Json - это формат отображения структурированных данных. Он очень удобен для хранения и передачи. Этот стандарт унифицирован и одинаково работает во всех языках программирования.

То есть, условно, код на Java может упаковать данные в json, сохранить их в БД, php скрипт их прочитает, передаст в браузер и их прочитает JavaScript.

Отличие кавычек в php

Опубликовано 2021.08.21 в разделе Php.

Кавычки в php бывают двух типов - одинарные и двойные.

Если вам нужно просто сохранить или вывести строку - то разницы практически нет.

Разница заключается в том, что при чтении строки в двойных кавычках php будет искать в ней переменные, приведёт их к строковому типу и выведет. В случае с одинарными кавычками php просто выведет все символы строки и всё.

Из этого очевидно, что одинарные кавычки работают быстрее.

Замерить время выполнения скрипта на python

Опубликовано 2021.08.20 в разделе Python.

Чтобы замерить время выполнения python скрипта - достаточно узнать текущее время до его работы и после. Затем вычесть из второго первое и таким образом получить продолжительность работы кода.

Для работы нам потребуется только пакет time

Как создать миграцию в django

Опубликовано 2021.08.11 в разделе Python.

Миграции в django - это программно сгенерированные файлы, создающие таблицы в БД, обновляющие структуру этих таблиц или удаляющие эти таблицы.

Данная процедура обязательна при работе с моделями, которые хранятся в БД

Добавление и удаление связей ManyToManyField

Опубликовано 2021.08.11 в разделе Python.

Очень часто модель надо связать со множеством экземпляров другой модели. Например модель "Город" и модель "Район". В такой логике у нас будет один город и множество районов города. Связать такие модели можно через метод ManyToManyField.

Django objects filter

Опубликовано 2021.08.10 в разделе Python.

Для извлечения из БД списка моделей используется метод модели objects. Далее методом filter можно добавить условия выборки(аналогично where в БД).

Например, выбор всех моделей типа Task, у которых поле size равно 5 и поле approval равно True:

  1. Task.objects.filter(size=5, approval=True)

С этим всё просто. А теперь предположим, что эти фильтры зависят от чего-либо, например от GET-параметров, от пользователя, времени суток или банально страницы сайта. Передать набор фильтров в виде словаря нельзя.

В чём разница между null и blank в моделях django

Опубликовано 2021.08.10 в разделе Python.

В полях моделей django часто встречаются такие свойства как null и blank. В чём же разница между null и blank?

Если установить null = True - то в ячейке таблицы БД значение поля будет равно null(если вы не передадите значение поля в модели).

Свойство blank отвечает за обязательность заполнения поля в админке. То есть если указать blank = True - поле будет необязательным к заполнению. Если указать blank = False - такое поле обязательно нужно будет заполнить.