Подписаться на блог
В Твиттере

Реплики и ссылки на заметки

В Фейсбуке

Ссылки на заметки

Вконтакте

Ссылки на заметки

В Телеграме

Ссылки на заметки

В Тумблере

Заметки целиком

В Же-же

Заметки целиком

По РСС

Заметки целиком

Если что-то из этого не работает, напишите мне: ilyabirman@ilyabirman.ru.

Веб-разработка

Эмуляция медленного интернета на Маке — 2

Я писал заметку Эмуляция медленного интернета на Маке, но заклинания, которые были там в конце, больше не работают, потому что на современных Макосах нет команды ipfw.

Поэтому теперь другой способ.

Сначала нужно найти файл /etc/pf.conf и сделать его копию. Я её назвал pf-slow.conf. В ней нужно дописать в конце строчку:

dummynet out proto tcp from any to <название домена> pipe 1

В моём случае название домена — e2, потому что я отлаживаю Эгею.

Теперь чтобы соединение с этим доменом тормозило:

sudo dnctl pipe 1 config bw 512Kbit/s delay 300
sudo pfctl -f /etc/pf-slow.conf

Поправьте килобиты по вкусу.

Чтобы работало нормально:

sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf

Может, можно короче как-то, но я вот так разобрался. Смысла написанного не понимаю, использую на свой страх и риск, чего и вам желаю.

10 февраля   веб-разработка   софт

Что почитать на выходных — 145

Вот:

  1. Developers’ side projects. Джоел Сполски рассказывает, как страшно в Америке программистам жить.
  2. The Case Against Progressive Enhancement’s Flimsy Moral Foundation.
  3. Why time management is ruining our lives. «The better you get at managing time, the less of it you feel that you have». Это да. «Part of the problem is simply that thinking about time encourages clockwatching, which has been repeatedly shown in studies to undermine the quality of work». И это да. Но вот это: «Work expands to fill the time available for its completion» — я не понял, почему проблема. Это подаётся так, будто настоящая цель тайм-менеджмента — максимизация времени безделья.
  4. Apple’s 2016 in review. Очередной разнос Эпла. Что-то последнее время их пишут все кому не лень; этот очень хороший. Про Мак Про (который не обновлялся четыре года): «what they built was a device based around their own ego needs of proving their critics wrong, not a device that served the purposes of their power users». И ещё: «They really miss Katie Cotton, because they seem to have gone tone deaf on how they explain the story of the product». Вообще, увольнение Кейти — самое удивительное решение Эпла за последнее время.
  5. Сначала конструкция, потом сетка. Игорь Штанг.
  6. Великая Отечественная Война. В разное время так назывались разные войны.

Однажды в Википедии: Moving sofa problem

Спасибо спонсору рубрики — рассылке «Дизайнерский дайджест». Каждую пятницу её читатели получают большое структурированное письмо с обзором статей и книг, обучающих материалов, инструментария и вдохновляющих проектов в сфере графического дизайна. Свежий выпуск приходит сразу после подписки, присоединяйтесь.

Что почитать на выходных — 142

Вот:

  1. We’ve updated the radios and checkboxes on GOV.UK. С ума сойти. У дизайнеров британских государственных сайтов есть блог о дизайне британских государственных сайтов.
  2. Переверстка № 14. Кейсы консалтинговой компании.
  3. Активный балласт: Для чего в гонке Vendee Globe используют качающийся киль.
  4. The 100% correct way to do CSS breakpoints.
  5. Рынок. На «Словомании» про рынок, маркет, торг, базар и ярмарку.

Спасибо спонсору рубрики — брокерской компании Нэттрэйдер. Компания открывает индивидуальные инвестиционные счета, по которым государство даёт налоговый вычет. Инвестируйте деньги в акции и облигации, а потом получайте в налоговой 13% от вложений.

9 декабря   веб-разработка   дизайн   паруса   чтиво   языки

Что почитать на выходных — 140

Вот:

  1. Про животных и людей. Марина Сафонова законспектировала лекции.
  2. Педант. Недавняя крутая серия техноведра.
  3. Collaborative Editing in JavaScript: An Intro to Operational Transformation. Объяснение OT (я уже давал ссылку на эту статью в недавней заметке про автосохранение в Эгее).
  4. Couples that are comfortable talking about poop are the happiest couples. Как у вас с этим?
  5. Как мгновенно понять, что ты не сечешь фишку. Людвиг.

И отдельно про новые Макбуки:

  1. Benjamin Button Reviews The New MacBook Pro. Если бы время шло в обратную сторону.
  2. The MacBook Pro is a lie. Влад Савов замочил на «Вёрдже».
  3. New MacBook Pros and the State of the Mac. Это самое брутальное. Подборка негативных комментариев разных людей к новым компьютерам.

Спасибо спонсору рубрики — брокерской компании Нэттрэйдер. Это удобный вариант для инвестиций в акции на рынках России, Европы и США. Брокерский счёт открывают удалённо и за один рабочий день.

2016   веб-разработка   жизнь   Мак   русский язык   технологии   чтиво   Эпл

Сделать автосохранение в Эгее

Я хочу сделать во всех формах Эгеи автосохранение. Ниже — мои рассуждения на этот счёт. А в конце я позову вас на помощь.

Сейчас в редакторе заметок можно нажать ⌘S в любой момент, и изменения сохранятся на сервере без перезагрузки страницы. Это удобно, но иногда люди, особенно после Гугль-дока, забывают это сделать. Если что-нибудь сломается, текст пропадёт.

Нетрудно сделать автоматическое сохранение раз в несколько секунд. Но такое нельзя делать с опубликованными заметками, ведь изменения будут сразу видны всем, включая промежуточные состояния по ходу внесения правок. Можно, конечно, поддерживать это только в черновиках, но это криво и модально. Хочется, чтобы как-нибудь работало везде.

Для опубликованных заметок можно предусмотреть в базе на сервере поле «неопубликованная версия текста», чтобы все такие вот автосохранённые изменения писались туда, а не в настоящее поле, а публиковались только когда человек руками жмёт кнопку «Сохранить». Но, во-первых, тогда такие дублирующие поля придётся заводить на всё — заголовок, теги, урл. Неэлегантно. Во-вторых, это вызывает вопрос о том, какую версию заметки открывать в редакторе: настоящую или вот такую промежуточную. Если человек забыл о том, что начинал редактировать заметку, и открыл её спустя месяц, а в редакторе показывают не то, что опубликовано, это взорвёт мозг.

Конечно, можно напридумывать интерфейса, чтобы это разрулить: показывать где-то, что открыта несохранённая версия, дать возможность сравнить с сохранённой, откатить изменения... Но это всё какая-то жесть. Я не хочу ничего такого ни реализовывать, ни видеть как пользователь. Я хочу, чтобы просто ничего не терялось.

Дальше. Если уж всем этим заморачиваться вообще, то нужно сохранять не только на сервер, но и локально. Чтобы можно было надёжно редактировать заметки без интернета. То есть сложность вырастает ещё сильнее. Возникает аж три версии у каждой заметки: опубликованная на сервере, сохранённая неопубликованная на сервере и сохранённая локально. Это не считая того, что локально может быть разная на каждом клиенте.

В общем, я прихожу к выводу, что единственный способ сделать эту фичу действительно хорошо и без компромиссов — полноценно реализовать collaborative editing как в Гугль-доке. То есть для меня как пользователя не должно быть вообще никакой разницы между клиентом и сервером. Я должен видеть всё в самом свежем виде, на каком устройстве бы ни открыл редактор заметки. А если интернета нет, то после его появления всё должно смёрджиться максимально чисто.

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

Я не представляю, насколько трудно реализовать надёжное одновременное редактирование с нескольких устройств, но знаю словосочетание operational transformation, погуглив которое можно найти всяких статей на эту тему. Например, Collaborative Editing in JavaScript: An Intro to Operational Transformation (очень клёво объяснён сам принцип).

Я надеялся найти какую-нибудь популярную опенсорсную реализацию этого, но что-то ничего не нашёл. Если покурить Стек-оверфлоу, то можно нарыть десяток разных заброшенных библиотек, но ничего, что выглядело бы обнадёживающим.

Ещё есть Фаерпад, но там только клиентская часть, и он, как я понял, работает только с собственным сервером. А мне нужно сделать сервер частью Эгеи, причём я бы предпочёл, чтобы сервер был как можно тупее, а вся умная логика была реализована в Джаваскрипте.

Внимание, вопрос: что вы посоветуете? Или, может, кто-то из вас захотел бы сделать такой продукт — библиотеку для одновременного редактирования — под моим внимательным взглядом со стороны? А может, вы вообще думаете, что в моих рассуждениях ошибка и надо всё делать иначе? Расскажите в комментариях, пожалуйста.

2016   веб-разработка   Эгея

Что почитать на выходных — 137

Вот:

  1. Левый верхний угол. Игорь Штанг.
  2. Time and money. Олег Андреев.
  3. The 100% correct way to validate email addresses. Кто-то это написал, и поэтому мне не придётся.
  4. Ernst & Young Removes Degree Classification From Entry Criteria As There’s ‘No Evidence’ University Equals Success. Офигеть, даже до динозавров начинает доходить.
2016   веб-разработка   жизнь   типографика   чтиво

Жуэль 2.2

Жуэль 2.2

Жуэль — нормальный аудиоплеер для веба. С прошлого лета его развитием занимается Женя Лазарев.

У нас вышла версия 2.2, и в ней появились плейлисты. Женя объясняет:

Все треки, которые лежат в одном блоке с классом jouele-playlist теперь будут играть друг за другом. Если добавить плейлисту атрибут data-repeat="true", этот плейлист будет играть бесконечно. Естественно, плейлистом можно сделать, в том числе, теги html и body.

В свежей бете Эгеи это используется. Я написал: «Если в заметке есть несколько аудиотреков, они будут играть друг за другом». Это реализовано как раз так, что заметки с аудиофайлами заворачиваются в плейлист. Пример — недавняя заметка про голосовые объявления в метро Стокгольма.

И ещё мы довели до ума управление пробелом. Женя продолжает:

Опции, связанные с пробелом, стали глобальными и управляются одним атрибутом data-space-control="true". Добавив его к любому плейлисту или треку, вы включите перехват нажатия пробела на всей странице. Если ничего не играет, заиграет последний игравший (или первый на странице) трек. Если что-то играет, оно остановится. При этом браузер не будет скроллить страницу, что он обычно делает при нажатии пробела.

Пробел по умолчанию не перехватывается, плейлисты тоже по умолчанию не включаются.

Потанцевать на радостях:

Документацию см. на Гитхабе.

2016   веб-разработка   Жуэль   продукты   проекты   релиз

Встраиваемые системы мгновенных сообщений

У разных сервисов возникает потребность во внутренней системе мгновенных сообщений для пользователей. Такое есть у Авито, у Промодиджея, у Драйва-2, у Эйрбнб. Все эти штуки всегда выглядят и работают хуже нормальных мессенджеров вроде Телеграма.

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

Вот вопрос: почему тому же Телеграму не предоставить OEM-версию себя? Можно встроить в чужой сайт или приложение, а можно доступиться до тех же диалогов изнутри самого Телеграма. Я бы был рад иметь всю переписку в одном месте. Чаты при этом могут быть брендированы логотипом сервиса, если надо.

А может такое уже есть, просто я не в курсе.

2016   веб-разработка   идеи

Жуэль 2.1

Жуэль 2.1

Привет, с вами Дед Мороз!

Как вы знаете, у меня есть нормальный аудиоплеер для веба — Жуэль. С лета его развитием занимается Женя Лазарев.

У нас вышла версия 2.1. Теперь на странице всегда один экземпляр Джейплеера, сколько бы треков вы не ставили, поэтому адские аудиопростыни типа моего поста с голосовыми объявлениями лондонского метро не тормозят браузер. Ещё пробел теперь умеет останавливать трек и играть дальше (но только после того, как вы включили хоть какой-то трек мышкой).

Потанцевать на радостях:

Документацию см. на Гитхабе. Отдельное спасибо Саше Годун за перевод на английский.

2015   веб-разработка   Жуэль   продукты   проекты   релиз

Что почитать на выходных — 122

Вот:

  1. Электронная музыка как объект исследования: в Берлинском университете начали изучать техно. «А вот изучение техно с точки зрения музыки — довольно сложная задача. Поскольку, если применять методы, которым нас научили в музыкальной институтах, мы придем к выводу, что техно — ужасно скучная музыка, в ней ничего не происходит: нет ни развития гармонии, ни сложного контрапункта, ни мелодической трансформации. Но разумеется, виной будут неправильные методы. В техно интересно другое — к примеру, саундшейпинг или микроритмические структуры.»
  2. Why «Mom» and «Dad» Sound So Similar in So Many Languages.
  3. Mobile Web App Checklist. Если вы делаете мобильное приложение, а оно получается слишком кривожопым, потому что на самом деле оно веб-сайт, пройдитесь по этому списку.
2015   веб-разработка   музыка   чтиво
Ctrl + ↓ Ранее