Skip to content

Instantly share code, notes, and snippets.

Avatar
👹

Andrey Sitnik ai

👹
View GitHub Profile
View autoprefixer-10-2021.txt
➜ npx autoprefixer --info
Browsers:
Chrome for Android: 94
Firefox for Android: 92
QQ Browser: 10.4
UC for Android: 12.12
Android: 94
Chrome: 94, 93, 92, 91
Edge: 94, 93, 92
Firefox: 93, 92, 91, 78
View nanostores-new-api.md

New API for Nano Stores

We split all stores to 2 categories: store (for any store) and map (for key-value object and special helpers to work with keys).

Memory store is a regular store, which keep value in the memory (and do not clean it until page will be closed).

import { memoryStore } from 'nanostores'

let profileCache = memoryStore<Profile>(guestProfile)
View autoprefixer-2021.md
$ npx autoprefixer --info
Browsers:
  Chrome for Android: 90
  Firefox for Android: 87
  QQ Browser: 10.4
  UC for Android: 12.12
  Android: 90
  Chrome: 90, 89, 88, 87
  Edge: 90, 89, 88
View logux-state-desc.md

Краткая характеристика:

  1. У него много сторов и сторы могут зависеть друг от друга, а не один большой стор и селекторы. То есть он ближе к Эфектору, чем в Редаксу/MobX. Всё ради tree shaking.
  2. Он ближе к стору прямых измений. В публичном API нет экшенов. Но всё-таки value = 1 на манер MobX запрещены — значения можно менять только через спец. методы. И в синхронизации состояния с сервером экшены есть (просто скрыты из публичного API).

Плюсы:

  1. Может работать без Логакса, чисто как стейт-менеджер.
  2. API специально создан, чтобы хранить в сторах бизнес-логику, чем разгружать компоненты и упрощать переносимость приложения между фреймворками.
  3. От 157 байт (!) в вашем JS-бандле.
  4. Расчитан на агрессивный tree shaking, чтобы в JS-бандле был только код того состояния, которые используются в текущих страницах.
  5. Очень ленивый — сторы на которых никто не подписан выгружаются из памяти, а их бизнес-логика останавливается.
View logux-types.ts
class Post {
title: string = ''
text: string = ''
}
class Group {
title: string = ''
roles: string = ''
}
View logux-data.md

Logux Data API Proposal

Logux Data is a new state manager for Logux with: built-in CRDT types, GraphQL-like data loading, good tree-shaking and types support.

Client

Initialization

React

View zero-knowledge-auth-proposal-en.md

Zero-knowledge Auth

The modern email/password authentication does not protect users from bad practices and, in the secure version (with 2FA), is difficult to use.

The IT world needs more discussion about authentication mechanisms to find more convenient and secure options.

This proposal contains an unusual authentication for a small subset of use cases. What problems does it have in terms of security and usability?

Task

View zero-knowledge-auth-proposal-ru.md

Идея механизма авторизации с нулевым знанием

Современный механизм авторизации через почту/пароль поощряет пользователя на опасные привычки и в безопасной версии (с 2FA) сложен в использовании.

ИТ-миру нужно больше обсуждения механизмов авторизации, чтобы прийти к более удобный и безопасным вариантам.

Это предложение содержит необычный формат авторизации для узкого круга задач. Какие ошибки в нём могуть быть в плане безопасности и удобства использования?

@ai
ai / cloudflare-matomo-worker.js
Last active Apr 30, 2020
Cloudflare worker to send statistics to Matomo
View cloudflare-matomo-worker.js
async function trackVisit (request, visitorId) {
let data = {
token_auth: 'secret',
country: request.headers.get('CF-IPCountry'),
urlref: request.referrer || request.headers.get('Referer'),
idsite: 1,
lang: request.headers.get('Accept-Language'),
apiv: 1,
rand: Math.random().toString(16).slice(2),
url: request.url,