Семь основных методологий разработки
В современной практике модели разработки программного обеспечения многовариантны. Нет единственно верной для всех проектов, стартовых условий и моделей оплаты.
Самые используемые методологии:
1. «Waterfall Model» (каскадная модель или «водопад»)
2. «V-Model»
3. «Incremental Model» (инкрементная модель)
4. «RAD Model» (rapid application development model или быстрая разработка приложений)
5. «Agile Model» (гибкая методология разработки)
6. «Iterative Model» (итеративная или итерационная модель)
7. «Spiral Model» (спиральная модель)
В статье вы найдете детальнее про каждую методологию и рекомендации когда их применять
В современной практике модели разработки программного обеспечения многовариантны. Нет единственно верной для всех проектов, стартовых условий и моделей оплаты.
Самые используемые методологии:
1. «Waterfall Model» (каскадная модель или «водопад»)
2. «V-Model»
3. «Incremental Model» (инкрементная модель)
4. «RAD Model» (rapid application development model или быстрая разработка приложений)
5. «Agile Model» (гибкая методология разработки)
6. «Iterative Model» (итеративная или итерационная модель)
7. «Spiral Model» (спиральная модель)
В статье вы найдете детальнее про каждую методологию и рекомендации когда их применять
This media is not supported in your browser
VIEW IN TELEGRAM
HTML | Datalist
Тег datalist позволяет добавить к полю выпадающие подсказки без сторонних библиотек
Когда пользователь будет набирать текст в поле ввода, снизу будет появляться дропдаун с подсказками и пользователь сможет выбрать один из предложенных вариантов, не заканчивая ввод
Если autocomplete включен (по умолчанию включен), то к значениям, которые вы задали в теге datalist, будут добавляться значения, которые пользователь вводил в это поле ранее
Тег datalist позволяет добавить к полю выпадающие подсказки без сторонних библиотек
<input
type="text"
list="country-value"
autocomplete="off"
>
<datalist id="country-value">
<option value="HTML">HTML</option>
<option value="JS">Javanoscript</option>
<option value="PHP">PHP</option>
</datalist>
Когда пользователь будет набирать текст в поле ввода, снизу будет появляться дропдаун с подсказками и пользователь сможет выбрать один из предложенных вариантов, не заканчивая ввод
Если autocomplete включен (по умолчанию включен), то к значениям, которые вы задали в теге datalist, будут добавляться значения, которые пользователь вводил в это поле ранее
Node.js | ZIP files
Модуль adm-zip npm экспортирует класс AdmZip.
1. С помощью Node.js buffer
Модуль adm-zip npm экспортирует класс AdmZip.
const AdmZip = require('adm-zip');
const file = new AdmZip();
Добавлять можно и файлы и папкиfile.addLocalFile('./package.json');
file.addLocalFolder('./node_modules', 'node_modules');
Запись в архив может осуществиться несколькими способами, например :1. С помощью Node.js buffer
const fs = require('fs');
fs.writeFileSync('output.zip', file.toBuffer());
2. С помощью writeZip()file.writeZip('output.zip');
Распаковка файлаconst AdmZip = require('adm-zip');
const file = new AdmZip('./output.zip');
file.extractAllTo('./output');PHP | JSON
Рассмотрим как обновить данные в файле json с помощью php
Основной принцип работы php с json - декодирование или кодирование данных, где данные представлены как массив.
Рассмотрим как обновить данные в файле json с помощью php
Основной принцип работы php с json - декодирование или кодирование данных, где данные представлены как массив.
<?phpВ статье вы найдете также пример добавления/удаления
// Переменная для обновления
$old = trim($old);
// Переменная для обновления старого значения
$new = trim($name);
// Открыть файл data.json
$file = file_get_contents('php/data.json');
// Декодировать в массив
$list=json_decode($file,TRUE);
// Найти в массиве
foreach ( $list as $key => $value){
// Совпадение значения переменной
if (in_array( $old, $value)) {
// Присвоить новое значение
$list[$key] = array('name'=>$new);
}
}
// Перекодировать в формат и записать в файл.
file_put_contents('php/data.json',json_encode($list));
// Очистить переменную
unset($list);
?>
SQL | UNION
Оператор UNION используется для объединения результатов двух или более запросов SELECT
Oсновные правила объединения наборов результатов двух запросов SELECT с помощью UNION:
- Количество и порядок столбцов должны быть одинаковыми во всех запросах.
- Типы данных соответствующих столбцов должны быть совместимыми.
Пример, нужно получить всех пользователей ( платных и в пробной версии):
+---------------+-------------——-+
| first_name | last_name |
+---------------+-------------——-+
| Ethan | Hunt |
| Tony | Montana |
Оператор UNION используется для объединения результатов двух или более запросов SELECT
SELECT column_list FROM table1_name
UNION SELECT column_list FROM table2_name;
Операция UNION отличается от использования JOIN. Операция UNION создает новую таблицу, помещая все строки из двух исходных таблиц в одну таблицу.Oсновные правила объединения наборов результатов двух запросов SELECT с помощью UNION:
- Количество и порядок столбцов должны быть одинаковыми во всех запросах.
- Типы данных соответствующих столбцов должны быть совместимыми.
Пример, нужно получить всех пользователей ( платных и в пробной версии):
SELECT first_name, last_name FROM trial
UNION
SELECT first_name, last_name FROM premium;
Результат:+---------------+-------------——-+
| first_name | last_name |
+---------------+-------------——-+
| Ethan | Hunt |
| Tony | Montana |
Что означает ошибка Reference Error в Node.js?
Anonymous Quiz
43%
Переменная, которая не определена
18%
Не валидный код для JS
21%
Аргумент вне диапазона
18%
Не допустимый тип аргумента
PHP | Сортировка массива
sort($array, $flag); — по возрастанию.
rsort($array, $flag); — по убыванию.
asort($array, $flag); — подходит для ассоциативных массивов, cсортирует по значению элементов с сохранением связи «ключ — значение».
arsort($array, $flag); — антагонист asort.
ksort($array, $flag); — аналог asort, сортировка не по значениям, а по ключам.
shuffle($array); — перемешает массив и разместит его элементы в случайном порядке.
usort($array, ‘function’); — сортировкa массива без сохранения связи «ключ-значение» в соответствии с пользовательской функцией.
uasort($array, ‘function’); — аналогично usort, но сохраняет связь «ключ-значение».
ukrsort($array, ‘function’); — oтличие от usort заключается в том, что сортировка происходит по ключам элементов.
array_multisort($array1, $array2, $flag); — первый параметр – сортируемый массив, в качестве второго массива указывается порядок сортировки первого, после чего второй массив сортируется по аналогии с первым
sort($array, $flag); — по возрастанию.
rsort($array, $flag); — по убыванию.
asort($array, $flag); — подходит для ассоциативных массивов, cсортирует по значению элементов с сохранением связи «ключ — значение».
arsort($array, $flag); — антагонист asort.
ksort($array, $flag); — аналог asort, сортировка не по значениям, а по ключам.
shuffle($array); — перемешает массив и разместит его элементы в случайном порядке.
usort($array, ‘function’); — сортировкa массива без сохранения связи «ключ-значение» в соответствии с пользовательской функцией.
uasort($array, ‘function’); — аналогично usort, но сохраняет связь «ключ-значение».
ukrsort($array, ‘function’); — oтличие от usort заключается в том, что сортировка происходит по ключам элементов.
array_multisort($array1, $array2, $flag); — первый параметр – сортируемый массив, в качестве второго массива указывается порядок сортировки первого, после чего второй массив сортируется по аналогии с первым
JS | map vs forEach
Метод map() вызывает функцию для каждого элемента массива и возвращает новый массив.
Пример: преобразование массива в верхний регистр.
Пример: вывести измененные элементы массива на странице.
Метод map() вызывает функцию для каждого элемента массива и возвращает новый массив.
Пример: преобразование массива в верхний регистр.
var low = ['a', 'b', 'c'];forEach() ничего не возвращает, а просто вызывает функцию для каждого элемента массива
var upper = low.map(function(v) {
return v.toUpperCase();
});
// теперь upper = ["A", "B", "C"]
// а low все еще ['a', 'b', 'c']
Пример: вывести измененные элементы массива на странице.
var low = ['a', 'b', 'c'];
var upper = low.forEach(function(v){
console.log(v.toUpperCase());
});
// A , B , C
// upper = undefined, low = ['a', 'b', 'c'];
SQL | TRUNCATE TABLE
Команда TRUNCATE TABLE удаляет данные внутри таблицы, но не саму таблицу.
Используйте TRUNCATE TABLE, если вы просто хотите удалить все строки и заново создать всю таблицу.
Команда TRUNCATE TABLE удаляет данные внутри таблицы, но не саму таблицу.
TRUNCATE TABLE table_name;TRUNCATE TABLE работает быстрее и использует меньше системных ресурсов, чем DELETE, потому что DELETE сканирует таблицу для создания количества удаляемых строк, затем удаляет строки одну за другой и сохраняет в лог каждую из них, тогда как TRUNCATE TABLE просто удаляет все строки без сохранения дополнительной информации. Но в TRUNCATE TABLE отсутствует оператор WHERE.
Используйте TRUNCATE TABLE, если вы просто хотите удалить все строки и заново создать всю таблицу.
PHP | checkdate
Как проверить, что пользователь передал правильную дату вашей программе?
Нужно передать месяц, день и год функции checkdate, которая вернет значение TRUE, если ей передана допустимая дата, или значение FALSE в противном случае.
Например, если введена дата 30 февраля любого года, то она в любом случае будет недопустимой.
Как проверить, что пользователь передал правильную дату вашей программе?
Нужно передать месяц, день и год функции checkdate, которая вернет значение TRUE, если ей передана допустимая дата, или значение FALSE в противном случае.
Например, если введена дата 30 февраля любого года, то она в любом случае будет недопустимой.
<?php
if (checkdate(2, 30, 2020)) echo "Допустимая дата";
else echo "Недопустимая дата";
// Недопустимая дата
?>
Node.js | multer
Одной из наиболее часто встречаемых задач в Node.js является загрузка файлов на сервер. В Node.js для этого нет встроенных инструментов. Одним из популярных пакетов является multer, который работает поверх Express.
Для конфигурации в функцию multer передается объект, в котором параметр dest указывает на путь, по которому будет загружаться файл. В данном случае это папка uploads:
Настроив multer, мы можем при обработке запроса получить файл через req.file.
В статье более вы найдете подробную информацию, и узнаете как как загрузить несколько файлов.
Одной из наиболее часто встречаемых задач в Node.js является загрузка файлов на сервер. В Node.js для этого нет встроенных инструментов. Одним из популярных пакетов является multer, который работает поверх Express.
Для конфигурации в функцию multer передается объект, в котором параметр dest указывает на путь, по которому будет загружаться файл. В данном случае это папка uploads:
app.use(multer({dest:"uploads"}).single("filedata"));
app.post("/upload", function (req, res, next) {
let filedata = req.file;
console.log(filedata);
if(!filedata)
res.send("Ошибка при загрузке файла");
else
res.send("Файл загружен");
});
В index.html <input type="file" name="filedata" />;, поэтому в функцию single() передается соответствующее значение.Настроив multer, мы можем при обработке запроса получить файл через req.file.
В статье более вы найдете подробную информацию, и узнаете как как загрузить несколько файлов.
SQL | Подзапрос с EXISTS
Например выберем всех клиентов, которые совершили покупки до конца зимы:
Например выберем всех клиентов, которые совершили покупки до конца зимы:
select id, company_nameОператор EXISTS используется для проверки существования любой записи в подзапросе. Если подзапрос возвращает одну или несколько записей, то возвращается true. Обычно EXISTS используется в зависимых (коррелирующих) подзапросах.
from client
where exists (select *
from purchase
where client.id = purchase.client_id
where date > '2020-28-02')
👍1
Node.js | Streams
Стрим — это концепция, c помощью которой можно обрабатывать данные небольшими частями, что позволяет задействовать небольшой объем оперативной памяти.
Например нужно записать "тяжелый файл"
Модуль fs.createReadStream может предоставить нам Stream
В статье вы найдете больше информации и где еще применяют потоки.
Стрим — это концепция, c помощью которой можно обрабатывать данные небольшими частями, что позволяет задействовать небольшой объем оперативной памяти.
Например нужно записать "тяжелый файл"
const fs = require('fs');
const file = fs.createWriteStream('./big.file');
for(let i=0; i<= 1e6; i++) {
file.write('Длинный текст\n');
}
file.end();
Запуская сервер мы получим нагрузку на оперативную память ~ 400 MBМодуль fs.createReadStream может предоставить нам Stream
const fs = require('fs');
const server = require('http').createServer();
server.on('request', (req, res) => {
const src = fs.createReadStream('./big.file');
src.pipe(res);
});
server.listen(8000);
Когда клиент запросит этот файл, мы транслируем его по частям, что означает, что мы вообще не буферизуем его в памяти. Использование памяти снизилось до 25 МБ.В статье вы найдете больше информации и где еще применяют потоки.
Кто такой Deno?
Deno – это новая runtime-среда для JavaScript и TypeScript от создателя Node.js. Инструмент построен на V8 (JavaScript-движок ), Rust (производительный и безопасный язык) и Tokio (асинхронный рантайм для Rust).
Преимущества
- Модули Deno могут быть размещены в любом месте ( локально кэшируются, не используется "package.json" )
- Безопасность ( не имеет открытого доступа к файловым или сетевым ресурсам по умолчанию)
- Встроенный TypeScript
- Тестирование ( в ядре )
- Форматирование кода
- Дебаг
- Compile/Bundle
- Deno HTTP server смогло обработать 25 тысяч запросов в секунду с максимальной задержкой в 1.3 миллисекунд. В Node.js аналогичное приложение обработало 34 тысячи запросов в секунду, но задержки колебались от 2 и 300 миллисекунд
- Все скрипты приложения могут быть объединены в один JavaScript файл
Deno имеет все шансы стать более продуманной средой выполнения Javanoscript, чем Node.js.
Deno – это новая runtime-среда для JavaScript и TypeScript от создателя Node.js. Инструмент построен на V8 (JavaScript-движок ), Rust (производительный и безопасный язык) и Tokio (асинхронный рантайм для Rust).
Преимущества
- Модули Deno могут быть размещены в любом месте ( локально кэшируются, не используется "package.json" )
- Безопасность ( не имеет открытого доступа к файловым или сетевым ресурсам по умолчанию)
- Встроенный TypeScript
- Тестирование ( в ядре )
- Форматирование кода
- Дебаг
- Compile/Bundle
- Deno HTTP server смогло обработать 25 тысяч запросов в секунду с максимальной задержкой в 1.3 миллисекунд. В Node.js аналогичное приложение обработало 34 тысячи запросов в секунду, но задержки колебались от 2 и 300 миллисекунд
- Все скрипты приложения могут быть объединены в один JavaScript файл
Deno имеет все шансы стать более продуманной средой выполнения Javanoscript, чем Node.js.
This media is not supported in your browser
VIEW IN TELEGRAM
CSS | Плавная прокрутка
Раньше, для оснащения страницы плавной прокруткой, требовалось задействовать несколько строк JS-кода. А теперь эта задача может быть решена исключительно средствами CSS
Раньше, для оснащения страницы плавной прокруткой, требовалось задействовать несколько строк JS-кода. А теперь эта задача может быть решена исключительно средствами CSS
html {
scroll-behavior: smooth;
}
После этого кода все якорные ссылки на странице будут прокручиваться плавно.Его пока не поддерживают Edge, IE и Safari (настольная и мобильная версии)