var text = 'Привет, мир!';
var u8a = new TextEncoder().encode(text);
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var bytes = u8a, i, len = bytes.length, base64 = '';
for (i = 0; i < len; i += 3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if (len % 3 === 2) {
base64 = base64.substring(0, base64.length - 1) + '=';
}
else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + '==';
}
console.log(base64);
var text = 'Привет, мир!';
var blob = new Blob([ text ]);
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function() {
var base64 = reader.result.split(',')[1];
console.log(base64);
};
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
# экранировать переводы строк надо
RUN apt update && \
apt install -y nginx curl php && \
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
composer install # Что инстал та? Нет composer.json
COPY ./hosts/my-application.local.conf /etc/nginx/sites-enabled/my-application.local.conf
WORKDIR /var/www/my-application.local
VOLUME /var/www/my-application.local
# бесполезная директива
EXPOSE 80
CMD [ "nginx", "-g", "daemon off;"]
Всегда тело запроса ассоциировалось с методом POST
Возможно ли отправлять тело запроса
'click'
, 'right-click'
и 'double-click'
.tray.setContextMenu(menu)
- устанавливает переданное в параметре menu
меню как контекстное меню иконки трея. tray.popUpContextMenu([menu, position])
открывает установленное либо переданное в параметре menu
контекстное меню трея. Оба параметра menu
и position
не обязательны tray.closeContextMenu()
закрывает открытое меню трея.icon
. const onFocus = (ev: FocusEvent) => {
(ev.currentTarget as HTMLInputElement)?.removeAttribute('readonly');
};
<input
...
onFocus={onFocus}
readOnly
/>
interface INavDataBase {
name: string;
link: string;
}
interface INavDataChilds {
name: string;
children: INavDataBase[];
}
type TNavData = INavDataBase | INavDataChilds;
export const navData: TNavData[] = [
{
name: "Название меню 1",
link: "path_to_page",
},
{
name: "Название меню 2",
children: [
{
name: "Название меню 1",
link: "path_to_page",
},
{
name: "Название меню 2",
link: "path_to_page",
},
],
},
];
// Здесь можно по разному проверять и hasOwnProperty или "link" in navData
export const isNavDataBase = (navData: TNavData): navData is INavDataBase =>
navData.hasOwnProperty("link");
export const isNavDataChilds = (navData: TNavData): navData is INavDataChilds =>
navData.hasOwnProperty("children");
navData.forEach((data) => {
if (isNavDataBase(data)) {
// Здесь будет автокомплит при обращении - data.link
} else {
// И здесь, хотя второго защитника мы не использовали - data.children
}
});