Ответ на пост «Новейшие британские бронемашины за пять миллиардов долларов оказались фуфлом»1
Новые подробности скандала с испытаниями британских бронетранспортеров Ajax.
На этот раз The Times стало известно точное количество пострадавших в ходе испытаний - более 20 военнослужащих потеряли слух, а еще 83 потребуется ежегодное медицинское обследование после длительного нахождения внутри "Аякса".
На следующей неделе британские военные планируют обсудить с промышленностью альтернативные варианты бронетранспортеров для поставок, а Министерство Обороны страны назначило тщательное расследование по вопросам безопасности.
Новейшие британские бронемашины за пять миллиардов долларов оказались фуфлом1
Новейшие бронемашины, на которые Великобритания потратила около пяти миллиардов долларов, оказались практически бесполезными и опасными для экипажа. Об этом сообщает газета The Daily Telegraph со ссылкой на попавший в ее распоряжение правительственный доклад.
В документе говорится, что бронемашины семейства Ajax наносили вред здоровью членов экипажа. После непродолжительной езды на них военные жаловались на отеки суставов, ломоту в конечностях и ощущение постоянного шума в ушах. Поэтому с ноября 2020 года по март 2021-го бронемашины не использовались. К тому же командованию пришлось ввести ограничения для безопасной эксплуатации Ajax. Так, максимальную скорость передвижения снизили вполовину, до 32 километра в час, а экипаж решили заменять каждые полтора часа.
Как отметил один из британских генералов, столь частая ротация экипажа, это просто курам на смех.
- А как эти идиоты собираются проводить замену в бою, возить запасной экипаж в автобусах?
По информации издания, для нужд армии закупили почти 600 бронемашин. Что с ними делать, пока не решили. Невозможность использования машин вызвана их конструктивными дефектами, выражающимися в чрезмерной вибрации. К тому же она не позволяет стрелять во время движения. Что бы произвести выстрел требуется полностью остановить бронемашину, дождаться пока она перестанет трястись, и только потом произвести выстрел. А это весьма сильно снижает как боевые возможности, так и живучесть бронемашин.
По словам инсайдера, армейское руководство Великобритании "находится в столь большом замешательстве, что ему придется признать, что оно провалилось, но оно этого не сделает и будет продолжать закупать бронемашины, надеясь на то, что их никогда не придётся применять".
Напомним, программа Ajax была одобрена в 2010 году. В ее состав вошли 589 машин в шести вариантах. Первые поставки начались в 2019-м и продолжатся до 2025-го.
PHP + JS. Ajax запросы «Для чайников»
Извиняюсь, за исчезновение, был озадачен делами. Те, кто подписались на меня в ожидании каких либо уроков, я планирую их делать, планы не изменились. Последнее время делаю большой гайд по php и js, а пока небольшой материал про Ajax.
Этот урок посвящен простой теме, которая часто бывает непонятна на этапе обучения веб-разработке, запросам к серверу с уже загруженной страницы. Ничего сложного в этом нет, просто нужна практика.
Урок подойдет тем, кто уже немного понимает в js и php, для совсем новичков будет сложно, ждите гайд.
Что будет в уроке:
1. Напишем короткую функцию на js для отправки запросов.
2. Решим дурацкую задачу как пример.
Отправка формы без перезагрузки страницы / HTML & JS
HTML
Создаем форму:
<form action=”https://private-c4cefc-codepenvf.apiary-mock.com/sendform">
<input name=”message” placeholder=”Message” required>
<button>Send</button>
</form>
Я использую сервис apiary чтобы сформировать ответ от сервера в формате JSON:
{
"success": "true",
"message": "The form has been sent!"
}
JavaScript
Находим все, что нам нужно и добавляем слушатель:
let form;
let action;
function findElements() {
form = document.querySelector('form');
({ action } = form);
}
function subscribe() {
form.addEventListener('submit', onSubmit);
}
function init() {
findElements();
subscribe();
}
init();
При отправке формы:
function onSubmit(event) {
event.preventDefault();
const { currentTarget } = event;
sendForm(currentTarget)
.then(response => onSuccess(response, currentTarget))
.catch(onError);
}
— Отключаем стандартное поведение через preventDefault;
— Отправляем форму;
— При успехе вызываем функцию onSuccess;
— Иначе onError.
Отправляем форму
В основе лежит fetch:
function collectData(currentForm) {
const data = new FormData(currentForm);
return data;
}
function setOptions(currentForm) {
return {
method: 'post',
body: collectData(currentForm),
};
}
function sendForm(currentForm) {
return fetch(action, setOptions(currentForm));
}
Первый аргумент — url, по которому нужно обратиться;
Второй — объект, который с данными.
При успехе вызываем функцию onSuccess
function showMessage(data) {
alert(data.message);
}
function onSuccess(response) {
return response.json().then(showMessage);
}
Fetch возвращает Promise, поэтому сначала получаем json, потом вызываем функцию showMessage.
Дабы упростить пример — я вывожу сообщение в alert.
При ошибке вызываем функцию onError
function onError(data) {
console.error(data);
}
В onError, вызванный через catch, уже попадет аргумент с информацией об ошибке.
Полный код
let form;
let action;
function findElements() {
form = document.querySelector('form');
({ action } = form);
}
function showMessage(data) {
alert(data.message);
}
function onSuccess(response) {
return response.json().then(showMessage);
}
function onError(data) {
console.error(data);
}
function collectData(currentForm) {
const data = new FormData(currentForm);
return data;
}
function setOptions(currentForm) {
return {
method: 'post',
body: collectData(currentForm),
};
}
function sendForm(currentForm) {
return fetch(action, setOptions(currentForm));
}
function onSubmit(event) {
event.preventDefault();
const { currentTarget } = event;
sendForm(currentTarget)
.then(response => onSuccess(response, currentTarget))
.catch(onError);
}
function subscribe() {
form.addEventListener('submit', onSubmit);
}
function init() {
findElements();
subscribe();
}
init();
В удобочитаем виде — на codepen.
Посты на эти и другие темы публикую в канале: https://t.me/filimonovvadim