Skip to content

Instantly share code, notes, and snippets.

View o0's full-sized avatar
🎯
Focusing

Igor Alexeenko o0

🎯
Focusing
View GitHub Profile
@o0
o0 / OSX-tweaks.md
Created November 4, 2015 17:07 — forked from qrohlf/OSX-tweaks.md
Disable/enable drop shadows in OSX screenshots
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --app=http://www.yourwebsite.com
@o0
o0 / fp-monad-maybe.js
Last active November 23, 2016 02:21
Maybe monad. Requires monet.js library
const user = {
lang: {
current: 'ru'
}
};
const userDefaultLang = Maybe
.fromNull(user.lang.default)
.orElse(Some('en'))
@o0
o0 / fp-monad-validation.js
Created November 23, 2016 02:20
Validation monad with errors accumulation. Naïve version. Requires monet.js library
'use strict';
const User = {
age: 14,
female: false,
isPretty: false
};
@o0
o0 / fp-monad-either.js
Created November 23, 2016 02:45
Either monad countdown timer. Requires monet.js
'use strict';
const tick = level => level.time === 1 ?
Left(`Time's up`) :
Right(Object.assign({}, level, { time: level.time - 1 }));
const countdown = (level) => {
console.info(level.time);
@o0
o0 / fp-monad-either-promise.js
Created November 23, 2016 02:49
Version of Either monad(https://gist.github.com/o0/d517fbedd73ee759cb3beaf7574bd048) without external requirements on ES2015 Promises
'use strict';
const tick = level => level.time === 1 ?
Promise.reject(`Time's up`) :
Promise.resolve(Object.assign({}, level, { time: level.time - 1 }));
const countdown = (level) => {
console.info(level.time);
@o0
o0 / new-project-spec.md
Created May 18, 2018 12:26
ТЗ на новый проект для интенсива

Описание проекта

Интернет-магазин необычных сладостей (жвачка со вкусом бекона, мороженое со вкусом драников и тд). Проект представляет собой одностраничное приложение. Пользователи, находясь на странице, собирают заказ и затем оформляют доставку.

Сценарии поведения пользователя на сайте

Просмотр каталога товаров

Каталог товаров выглядит как набор карточек.

Карточка товара:

@o0
o0 / spec-kino.md
Last active February 10, 2019 21:28

Сервис для киноманов

Личный проект для обновленного интенсива JS2 (Objects). Сайт, для обучения студентов HTML Academy программированию на JavaScript.

Одностраничное приложение. Требуется придумать название, если нужно, прототип дизайна и предоставить окончательный дизайн проекта. Название и стиль могут быть произвольными. Язык может быть русским или английским.

Описание проекта

Сервис для любителей кино. Показывает новинки из мира кино. Предоставляет пользователям возможность формировать списки "К просмотру", "Просмотрел", "Избранное" и получать всевозможную статистику (потратил времени на просмотр, количество просмотренных фильмов в день/месяц/год/жизнь, количество в разрезе жанров и т.д.). На основании статистики сервис присваивает пользователю один из предопределенных статусов (любитель, сериальный маньяк, фанат большого кино, поклонник ужасов, герой боевика, кино-маньяк).

- [x] Провести опрос среди выпускников, почему они оказываются в индустрии
- [ ] Поговорить с разработчиками из Яндекс.Карт
- [ ] Написать вращение Земли
- [ ] Написать нейронку
- [ ] Футболка с самолётом
В каждой области, есть люди, неизвестные широким массам, но которых ценят специалисты в этой области. Например есть музыканты, о которых мы с вами не слышали, но другие музыканты их котируют. Вы слышали о Роберте Бартини? Да, никто про него не слышал, даже люди, которые жили в его время. А это был крутой советский авиаконструктор. Его очень уважали другие авиаконструкторы, например Туполев (который строил самомлёты Ту), а Сергей Королев, чье имя вы точно знаете, вообще называл его своим учителем.
Что сделал Бартини? До войны он строил самолёты, которые ставили рекорды скорости, а в шестидесятые вообще придумал новую область в самолетостроении: экранопланов и экранолетов, самолетов, которые до сих пор считаются перспективными. При этом у Бартини не было сильного математического аппарата: он всегда полагался
@o0
o0 / promise.js
Created December 19, 2019 17:11
Нюансы работы промисов
let myPromise = null;
const getNewPromise = () => {
if (!myPromise) {
myPromise = new Promise((resolve, reject) => {
setTimeout(() => { resolve('done'); }, 5000);
});
}
return myPromise;
};