с какими библиотеками?всем только библиотеки подавай... браузеры и без библиотек много чего умеют
typedef struct {
char* buffer;
size_t capacity;
size_t length;
} string;
и дальше бы работал с ней, заодно разбив код на небольшие функции. Но преподы программирования народ от разработки далекий, и кроме своих лабараторок в программировании не бум-бум в большинстве своем. А в комментах к вопросу было про то, что структуры нельзя...#include <stdio.h>
#include <stdlib.h>
int main() {
size_t capacity = 1 << 4; // на старте буду выделять 16 байт
size_t length = 0; // строка пока пустая, поэтому 0
char* str = malloc(capacity);
if (str == NULL) { // с памятью в куче может и облом быть
return 1; // вернем код ошибки
}
printf("Write string and press ENTER to continue:\n");
while(1) { // читать символы будем до скончания веков ))
char c = getchar();
if(c == 13 || c == 10) break; // ну или пока юзер не нажмет ентер
length++; // увеличим счетчик символов
if(length > capacity) { // если новый символ не влазит в выделеную память
capacity <<= 1; // то удвоим ее
char* new_str = realloc(str, capacity); // и перевыделим
if (new_str == NULL) { // опять чекнем, вдруг облом
free(str); // ресурсы надо освобождать
return 1; // вернем код ошибки
}
str = new_str; // в str теперь невалидный указатель, можем его заменить
}
str[length - 1] = c; // запомним считанный символ
}
// Здесь решение с вставкой подстроки
// с учетом того, что у нас строка str
// с длиной length и выделеной памятью под нее capacity
free(str); // ресурсы надо освобождать
return 0; // вернем код успешного завершения
}
с самой вставкой подстроки надеюсь справитесь? Как в Laravel-mix отключить версионность?не использовать mix.version()
Но у меня версия добавляется всегда, если хотя бы к одному правилу применен version()У mix нет "правил", у него есть лишь методы, которые мутируют внутреннее состояние модуля laravel-mix
$(function (){
var toRed = true;
function red(){
function changeFontRed() // Черный сменяется на Красный
{
$('#red').toggleClass('red-black');
$('#red').toggleClass('red');
yellow();
}
setTimeout(changeFontRed, 1500 )
}
function yellow(){
function changeFontYellow() // Черный сменяется на Желтый
{
$('#yellow').toggleClass('yellow-black');
$('#yellow').toggleClass('yellow');
if(toRed) { red(); }
else { green(); }
toRed = !toRed; // для желтого будем менять направление по этой переменной
}
setTimeout(changeFontYellow, 1500 )
}
function green(){
function changeFontGreen() // Черный сменяется на Зеленый
{
$('#green').toggleClass('green-black');
$('#green').toggleClass('green');
yellow();
}
setTimeout(changeFontGreen, 1500 )
}
green(); // сразу зажигаем только 1 из цветов
});
const consoleArray = Object.keys(console).filter(
k => typeof console[k] === 'function'
).reduce(
([cnsl, acc], key) => [Object.assign(cnsl, {
[key]: (original => (...args) => (
acc.push(...args),
original.call(cnsl, acc)
))(cnsl[key])
}), acc],
[console, []]
)[1];
qwe[2] = 77
Тут просто сразу 2 ошибки типов:[string, number]
- это вполне себе сахар над типом{readonly length: 2; 0: string; 1: number} & Readonly<typeof Array.prototype>
'length' | 0 | 1 | keyof typeof Array.prototype
# переименуем master в experiment
git checkout master
git branch -m experiment
# удалим удаленный master
git push --delete origin master
# зальем текущую ветку на удаленный репо:
git push -u origin experiment
# переключимся на комит с которого пойдет мастер по его хэшу:
git checkout 3624ce5
# ответвимся от сюда в новую ветку с именем master
git checkout -b master
# и залем ее на удаленный репо
git push -u origin master
Math.floor(1.1) // 1
parseInt(1.1) // 1
1.1 | 0 // 1
1.1 ^ 0 // 1 - как уже писал выше, эффект будет 1 в 1, как и с |
// пока все было ок, но как насчет отрицательных чисел?
Math.floor(-1.1) // -2 - округляем в сторону -Infinity
parseInt(-1.1) // -1 - отбрасываем экспоненту
-1.1 | 0 // -1 - отбрасываем экспоненту и не только (но тут не имеет значения пока)
// попробуем с чем-нибудь побольше
2 ** 31 // 2147483648
2147483648 | 0 // -2147483648
/*
не зная как преобразовывается число выше, это было бы не очевидно
но смотрим выше "он просто берет младшие 32 бита значимой части и кладет их в int32 контейнер"
2 ** 31 в двоичном виде - это единичка и 31 нолик
и эта единичка попала в бит знака при переноси в int32
тем самым мы получили самое маленькое число в int32
*/
// давайте еще пример, набью как я большое число от балды:
34646456436346346212424 // 3.464645643634635e+22
34646456436346346212424 | 0 // 1178599424
/*
ну в первом примере мы видим интересную особенность чисел с плавающей запятой
мы можем хранить не только дробные числа, но и очень большие целые, правда с потерей точности
e+22 - это и есть экспонента, это значит число до e нужно умножить на основание системы счисления (10) в степени +22
а при бинарной операции эта экспонента отбрасывается, как и старшие биты значимой части
в 32 младших битах осталось 1178599424
забавно, что я случайно вбил такое число, у которого 32 бит содержал 0 (шансы были 50/50)
если бы там оказалась 1, то я бы вновь получил отрицательное число
*/
Подскажите возможна ли прокачка алгоритмов без хорошего знания синтаксиса, насколько вообще важны алгоритмы, где они точно могут пригодиться а где нет и где их можно прокачать?
1) Отдельно собирать scss файлы из точки входа index.scssПримерно такой конфиг:
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
entry: path.join(__dirname, 'src/styles/entry.scss'),
output: {
filename: 'drop-it.js', // от js артефакта никуда не деться, но файл по сути будет пустой
path: path.join(__dirname, 'dist')
},
module: {
rules: [{
test: /\.scss$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
}]
},
plugins: [new MiniCssExtractPlugin({
filename: 'styles.css'
})]
};
Отдельно собирать ts файлы из точки входа index.tsда без проблем, опять таки нужен будет ts-loader. Ну и скажу свое ИМХО тут, что транспайлинг лучше не доверять тайпскрипту, а подключить бабель с пресетом env
Отдельно проходиться по всем html файлам из папки src/html и складывать их в /output/с этим уже по заморочнее будет