Skip to content

Instantly share code, notes, and snippets.

View betula's full-sized avatar
💭
Open Source lover and Traveler)

Slava Bereza betula

💭
Open Source lover and Traveler)
View GitHub Profile
@betula
betula / 🎵 My Spotify Top Tracks
Created June 21, 2022 13:49 — forked from izayl/🎵 My Spotify Top Tracks
🎵 My Spotify Top Track
bad guy Billie Eilish
ocean eyes Billie Eilish
Throw It Off Khalil Fong
傷不起 Yisa Yu
Playing God Polyphia
雅俗共賞 許嵩
Mad at Disney salem ilese
CX330 VaVa
lovely (with Khalid) Billie Eilish & K
bad guy (with Justin Bi Billie Eilish & J
@betula
betula / 📊 Weekly development breakdown
Created June 21, 2022 13:49 — forked from izayl/📊 Weekly development breakdown
📊 Weekly development breakdown
TypeScript 21 hrs 51 mins █████████████████░░░░ 81.2%
JSON 2 hrs 3 mins █▌░░░░░░░░░░░░░░░░░░░ 7.6%
YAML 43 mins ▌░░░░░░░░░░░░░░░░░░░░ 2.7%
Solidity 42 mins ▌░░░░░░░░░░░░░░░░░░░░ 2.6%
Other 34 mins ▍░░░░░░░░░░░░░░░░░░░░ 2.1%
@betula
betula / flow-demo.ts
Created November 30, 2021 07:18 — forked from askuzminov/flow-demo.ts
flow proposal
// Базовая единица Flow - наблюдающий объект
// Есть 2 подхода: функциональный flow() и классовый new Flow()
// Основным выбран классовый, т.к. он быстрее на 20% (примерно 500000 операций в секунду) и удобнее расширяется (в примере только основные методы)
// Ключевая особенность это синхронная обработка данных, что увеличивает скорость, упрощает отладку приложений и создание SSR
// Для синхронных изменений используются транзакции
// Объекты можно связать друг с другом
// Событие изменений по умолчанию происходит при неравенстве !== финального выражения функции. Другие виды сравнений можно передать как опциональный метод.
// Объекты полностью типизированы
// Можно сделать более прозрачно на Proxy, но нужна была поддержка любых версии браузеров
@betula
betula / Viewport.js
Last active October 1, 2021 04:50
Lazy render viewport virtual
import React, { useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
import { unstable_batchedUpdates } from 'react-dom';
export const ViewportContext = React.createContext(null);
/**
* The viewport item will be change after it appears in the displayed area of the viewport
*
@betula
betula / cookies.js
Created September 15, 2020 10:14 — forked from sergeysova/cookies.js
function readCookies() {
const cookies = document.cookie.replaceAll("; ", "&");
const params = new URLSearchParams(cookies);
return Object.fromEntries(params.entries());
}
@betula
betula / promo-answer-1.md
Last active September 6, 2020 09:42
Promo answer 1

По поводу вопросов:

От чего зависит DIGEST_LOOP_LIMIT? Почему он такой?

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

const u = unit({
  u: null,
 a: 0,
@betula
betula / README.md
Last active September 3, 2020 04:42
Micro Frontends Pic

Micro Frontends Pic

@betula
betula / realar-promo.md
Last active September 5, 2020 05:54
Realar промо на русском

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

Эта библиотека по сути "рефакторинг" существующего использования сторов. Принципы лежащие в её основе привнесены из первого angular, redux и mobx.

Сервисы, как глобально инстанцированные "синглтоны" и аналог контроллеров из первого angular это то, что у нас называется локальные сторы, и всегда используются в формах. А так же иммутабельность в сторах, и по-сути мильтисторовость в идеологии redux, события как аналоги экшинов из redux, и аналог computed в mobx или селектора в redux.

А так же возможность подписываться каждого юнита друг на друга в любых комбинациях с автоматической отпиской и обновлениями через произвольную логику, эта штука новая по большей степени напоминает reaction и autorun в mobx или отдалённо напоминает сагу из redux но только в синхронном её варианте. Служит для создания фу

@betula
betula / macro.js
Created June 25, 2020 05:16
Macro wrap
import { createMacro, MacroError } from 'babel-plugin-macros';
export default createMacro((props) => {
let { babel: { types: t }, references: { default: paths } } = props;
let template = props.babel.template;
let tpl = template("wrap(BODY)");
paths.forEach(({ parentPath }) => {
let path = parentPath.parentPath; // Block Statement
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>