Skip to content

Instantly share code, notes, and snippets.

View Nitive's full-sized avatar

Maxim Samoilov Nitive

View GitHub Profile
@Nitive
Nitive / promise.js
Last active July 5, 2022 14:55
JavaScript Promise implementation
function addHandler(fn, arg, resolve, reject) {
try {
const result = fn(arg);
if (result instanceof MyPromise) {
result.then(resolve).catch(reject);
} else {
process.nextTick(() => resolve(result));
}
} catch (err) {
process.nextTick(() => reject(err));

Keybase proof

I hereby claim:

To claim this, I am signing this object:

@Nitive
Nitive / forms-developing-checklist.md
Last active March 12, 2018 12:10
Чек-лист разработки форм
  1. Нужно предусматривать состояние ошибки для всех действий, требующих запроса на бекенд
  2. Нужно предусматривать состояние успеха для всех действий
  3. Нужно предусматривать состояние загрузки для всех действий, которые не выполняются мгновенно
  4. Или показывать вместо этого успешное выполнение, и предусмотреть переход в состояние ошибки, если ошибка всё же произойдёт
  5. Для каждого поля должно быть состояние ошибки валидации
  6. Нельзя оставлять придумывание текстов ошибок на программистов, иначе рождаются монстры типа «Форма не должна иметь пустых полей»
  7. Должно быть прописано, когда происходит валидация полей: при вводе, при переходе на следующее поле или при отправке формы
  8. Должно быть прописано, когда исчезает ошибка, полученная при валидации: при фокусе на поле, при изменении текста в поле, при отправке формы или при вводе валидного значения
  9. Для полей ввода должно быть нарисованно состояние фокуса
  10. Для кнопок должно быть нарисованно состояние фокуса (focus), наведения (hover), нажатия (active),
module Main
console.log : Show a => a -> IO ()
console.log = printLn
createComponent : Show a => String -> a -> String
createComponent tag content = "<" ++ tag ++ ">" ++ show content ++ "</" ++ tag ++ ">"
syntax [arr] ".map" [f] = map f arr
syntax [arr] ".forEach" [f] = traverse f arr
@Nitive
Nitive / normalise-html.js
Last active June 26, 2017 15:47
Util to normalise html to compare server and client rendering for react apps
const fs = require('fs')
const posthtml = require('posthtml')
function merge(...objs) {
return Object.assign({}, ...objs)
}
function removeAttr(attr, tree) {
tree.match({ attrs: { [attr]: true } }, node => {
return merge(node, { attrs: merge(node.attrs, { [attr]: undefined }) })
@Nitive
Nitive / icon.jsx
Created June 23, 2017 15:50
Icon component which load icons async on client but sync on server
import * as React from 'react'
// TLDR: This component load icons async on client but sync on server
export default class Icon extends React.PureComponent {
constructor(props) {
super(props)
// We should add DefinePlugin to webpack which replace
// process.env.IS_SERVER_SIDE with true or false.
// Then UglifyJS will remove require() in client code so icons won't be loaded.
@Nitive
Nitive / di.tsx
Created April 14, 2017 07:18
Dependency injection for React
import * as pick from 'lodash/pick';
import * as React from 'react';
import { MobileWebsiteApi } from '../api/api';
import { FixedComponentsStore } from '../components/fixed/store';
import { CookiesUtils } from '../utils/cookies';
// экспортируем типы контекста, чтобы было удобней импортировать
// import { connect, MobileWebsiteApi } from '../../utils/context_provider';
export { MobileWebsiteApi, FixedComponentsStore, CookiesUtils };
@Nitive
Nitive / README.md
Created July 13, 2016 07:44
Список вопросов перед началом работы над frontend-проектом
  1. В каком состоянии бекенд?
  2. В каком состоянии работа над дизайном?
  3. Какие браузеры поддерживаем?
@Nitive
Nitive / ymaps-reqiure.js
Last active July 28, 2016 13:19
Асинхронная подгрузка Яндекс Карт
// <script async src="https://...?lang=ru_RU&load=&onload=_onYandexMapLoaded"></script>
// or use module aload instead of async attribute (github.com/pazguille/aload)
(function () {
var ymapFunctionsStack = [];
var ymapsLoaded = false;
// random postfix to get uniq function name
window._onYandexMapLoaded = function () {
ymapsLoaded = true;
@Nitive
Nitive / clojure.md
Last active April 4, 2016 17:15
Материалы по Clojure и ClojureScript

На русском:

  • Изучите X за Y минут, где X = Clojure ⬈ learnxinyminutes.com
  • Видеокурс «ClojureScript для JavaScript программистов» ⬈ youtube.com
  • Clojure, или «Вы все еще используете Java? Тогда мы идем к вам!» ⬈ fprog.ru

Полезный софт:

  • leiningen — система автомитизации и менеджер зависимостей.
  • planck — ClojureScript REPL

Библиотеки: