Skip to content

Instantly share code, notes, and snippets.

@madyankin
madyankin / redux.ts
Created August 21, 2021 09:13
Type safe Redux helpers
/* eslint-disable @typescript-eslint/generic-type-naming */
/* eslint-disable @typescript-eslint/no-explicit-any */
import { ActionCreatorsMapObject, Middleware } from "redux";
import { isPlainObject } from "lodash";
// An interface to define action classes
export interface IAction {
readonly type: string;
}

Keybase proof

I hereby claim:

  • I am madyankin on github.
  • I am madyankin (https://keybase.io/madyankin) on keybase.
  • I have a public key ASD9WtSzKnrFR2sdW48DtT_zKefJnYlJiskcHYcCJafhwQo

To claim this, I am signing this object:

@madyankin
madyankin / Coding Guidelines.md
Last active April 30, 2019 05:56
Coding Guidelines

Coding guidelines

General

null and undefined

Use undefined wherever is possible. Do not use null.

Umbrella modules

@madyankin
madyankin / keybase.md
Created July 12, 2017 03:41
keybase.md

Keybase proof

I hereby claim:

  • I am outpunk on github.
  • I am madyankin (https://keybase.io/madyankin) on keybase.
  • I have a public key ASAjnGC7vJVp3fyGWaQe6ppOydAJhTKNbe7R03QPEbSmRwo

To claim this, I am signing this object:

Все в элме хорошо. Пока не надо получить что-то от js. Например, чтобы получить текущее время, надо городить такое:

Elm.Native.TimeUtils = Elm.Native.TimeUtils || {};

Elm.Native.TimeUtils.make = function(localRuntime) {

	localRuntime.Native = localRuntime.Native || {};
	localRuntime.Native.TimeUtils = localRuntime.Native.TimeUtils || {};

Styling native elements

Native HTML controls are a challenge to style. You can style any element in the web platform that uses Shadow DOM with a pseudo element ::pseudo-element or the /deep/ path selector.

video::webkit-media-controls-timeline {
  background-color: lime;
}

video /deep/ input[type=range] {
@madyankin
madyankin / badges
Created December 12, 2014 14:35
EM badges
<a href="https://evilmartians.com/">
<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54"></a>
По центру:
<p align="center"><a href="https://evilmartians.com/">
<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54"></a></p>
@madyankin
madyankin / composition-normalization-and-morons.markdown
Created March 2, 2012 07:19 — forked from julik/composition-normalization-and-morons.markdown
Композиция, нормализация и уроды

В своих разговорах о Юникоде я не затронул несколько интересных моментов, о которых полезно знать. Кофейный столик "Юлик о Юникоде" продолжает прием посетителей.

Байт, кодпойнт, глиф

Юникод - многобайтовый способ кодирования текста. Текст состоит из codepoints (кодовых позиций), все позиции присутствуют в каталоге символов Unicode. Кодпойнты включают базовые компоненты графем и графемы в целом. При этом:

Каждый кодпойнт можно выразить в байтовом виде как минимум 5 разными способами

Один из них - UTF-8, в котором все латинские буквы заменены на однобайтовые ASCII-эквиваленты. Другие варианты - UTF-16 и UTF-32. UTF-16 - стандартный способ хранения Unicode-строк в операционных системах. InDesign импортирует тексты именно в UTF-16 например.