Что делать если размер запроса больше чем размер буфера?Читать в цикле. read вообще не гарантирует, что заполнит буфер полностью, но больше его размера он точно за раз не прочитает. А еще он возвращает
io::Result<usize>
, в котором сообщает, сколько реально байт было прочитано.1.1) Нужно будет читать пока не найдется CRLF в буфере ?Пока read не вернет
Ok(0)
, ну или ошибку. Хотя с ошибкой не все так однозначно, согласно доке может вылететь Err(io::ErrorKind::Interrupted)
при котором стоит повторить попытку чтения. Вообще CRLF будет после каждого заголовка, а когда заголовки закончатся будет 2 CRLF подряд, а потом еще может быть тело запроса, а может и не быть.1.2) для этого мне нужно пройтись по буферу и искать CRLF . если его нет то очистить буфер и продолжать читать ?нет, нужно распарсить то что пришло, куда-то сохранить, а потом продолжить чтение.
2) Как отделять один http запрос от другого ?Если у нас не keep-alive, то каждый запрос будет в отдельном соединении, но keep-alive наступает только если обе стороны прислали заголовок
Connection: keep-alive
Можете сделать по простому, и отвечать с заголовком Connection: close
, все равно в учебном проекте производительность у Вас будет никакая. Но если хотите все же заморочиться, то правило тоже не сложное - следующий запрос начинается в следующем же байте, где закончился текущий. Размер тела запроса в байтах можно узнать из заголовка Content-Length, а если его нет, то можете считать, что его значение 0.что-то мне кажется что надо слеши экранировать пробовал так /\ ничего не выходитДа, обратный слэш нужно экранировать, так как он сам является экранирующим символом, прямой же слэш не экранирует, поэтому ничего не выходит
path.normalize( '//192.168.1.5/C$/data/data.json' )
const cnt = document.querySelector('.container')
тип можно вывести однозначно - это тип Element, а все потому, что TS знает, что значение в const точно не изменится и просто берет возвращаемый тип для document.querySelector и выводит подсказки для него.// @ts-check
в начало файла, и Вы получите сразу и больше подсказок, и некоторый контроль типов. Так же добавлю, что в js файлах можно аннотировать типы через jsdoc:// @ts-check
export class Page {
constructor(selector, options) {
/** @type Element */
this.$element = document.querySelector(selector)
this.$element // тут работают подсказки после точки для типа Element
}
}
declare module '*.css' {
const classes: Readonly<Record<string, string>>;
export default classes;
}
fetch(object.options.url,settings).then(function(response){
response.json();
})
.then(function(body){
console.log(body); // здесь всегда будет undefined, независимо от ответа
})
подумайте почему такруки бы оторвал...var db = event.target.result,storage,transaction,data;
Мне нужно, чтобы у меня убирались все символы после точки
const p = text.indexOf('.');
const result = p === -1 ? text : text.slice(0, p);
console.log(result);
пробовал вот так:text.replace(/\[.][A-Z]/, "");
Данная регулярка найдет первую точку, сразу за которой следует заглавная латинская буква и вырежет только конкретно это сочетание, что совсем не соответствует заданному вопросу. <template>
<swiper v-if="isShown" ref="mySwiper" :options="swiperOption">
<swiper-slide>
<div class="slideItem"></div>
</swiper-slide>
</swiper>
</template>
import { Swiper, SwiperSlide, directive } from 'vue-awesome-swiper'
import 'swiper/css/swiper.css'
export default {
name: 'SwiperCarousel',
components: {
Swiper,
SwiperSlide
},
data() {
return {
isShown: false,
swiperOption: {
// direction: 'vertical',
}
}
},
mounted() {
const media = window.matchMedia('(max-width:768px)');
const listener = e => this.isShown = e.matches;
listener(media);
media.addListener(listener);
this.$once('hook:beforeDestroy', () => media.removeListener(listener));
}
}