Skip to content

Instantly share code, notes, and snippets.

Keybase proof

I hereby claim:

  • I am ai on github.
  • I am iskin (https://keybase.io/iskin) on keybase.
  • I have a public key whose fingerprint is BF0B F36F 0C23 36C7 A197 F941 A9E0 9B94 1F71 0E4D

To claim this, I am signing this object:

body {
display: -ms-grid;
display: grid;
-ms-grid-rows: 30px auto 30px;
grid-template-rows: 30px auto 30px;
-ms-grid-columns: 3fr 1fr;
grid-template-columns: 3fr 1fr;
grid-template-areas: "🎩 🎩"
"🍔 📰"
"👞 👞";
@ai
ai / prefixes-2018
Last active November 1, 2018 13:08
➤ ./bin/autoprefixer --info
Browsers:
Chrome for Android: 69
Firefox for Android: 62
And_qq: 1.2
UC for Android: 11.8
Android: 67, 4.4.3-4.4.4
Baidu: 7.12
Chrome: 69, 68
Edge: 17, 16
@ai
ai / requirements.md
Last active December 19, 2023 14:19
Website requirements

Amplifr logo

Amplifr Landings Rules

Amplifr’s rules for landing pages created by outsource.

Requirements

@ai
ai / prefixes-2019
Last active April 25, 2019 02:14
Actual prefixes of Autoprefixer for default target browsers
➜ ./bin/autoprefixer --info
Browsers:
Chrome for Android: 71
Firefox for Android: 64
And_qq: 1.2
UC for Android: 11.8
Android: 67, 4.4.3-4.4.4
Baidu: 7.12
Chrome: 73, 72
Edge: 18, 17

Принципы разработки Амплифера

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

Ценности

  1. Пользователь. Если что-то сильно мешает UX или есть критическая ошибка, то в первую очередь мы спасаем пользователей. Для этого иногда надо взять ответственность на себя, переубедить толпу, написать плохой код.

Онбординг фронтендера на Амплифере

Дать доступ. Менеджер и Макс даёт доступ. Фронтовый тимлид пинает их, уточняет у нового фронтендера дали ли ему все доступы, пинаем ещё раз, если надо.

  1. Выдать почту на @amplifr.com
  2. Доступ в Slack
  3. Доступ в Trello
  4. Доступ в GitHub
  5. Доступ в Zeplin
  6. Доступ в Sentry
// Глобальный счётчик запросов
let lastRequest = 0
export function send (...args, callback) {
// Запоминаем какой номер у этого запроса
const thisRequest = ++lastRequest
fetch(...args).then(responce => {
// Игнорируем ответ, если номер этого запроса
// не совпадает с номером последнего
if (thisRequest !== lastRequest) return
@ai
ai / cloudflare-matomo-worker.js
Last active March 28, 2024 19:11
Cloudflare worker to send statistics to Matomo
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,