Pull to refresh
69
0
Алексей Гурьянов @Guria

UX Developer, Cerebral JS Core team member

Send message

Доводы в пользу function tree

Reading time13 min
Views19K

В этой статье мы поговорим о написании хорошего кода и о проблемах, с которыми мы при этом сталкиваемся. Понятный, декларативный, компонуемый и тестируемый — эти термины употребляются, когда речь заходит о написании хорошего кода. Решением проблем часто называют чистые функции. Но написание веб-приложений, в основном, связано с побочными эффектами и сложными асинхронными потоками операций, концепциями, которые по своей сути не являются чистыми. Ниже описан подход, который позволяет охватывать работу с побочными эффектами и сложными асинхронными потоками, сохраняя преимущества чистых функций.


Написание хорошего кода


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


function add(numA, numB) {
  return numA + numB
}

Полезным свойством чистых функций является то, что их легко тестировать.


test.equals(add(2, 2), 4)

Компонуемость тоже является их сильной стороной.


test.equals(multiply(add(4, 4), 2), 16)

К тому же их очень легко использовать декларативно.


const totalPoints = users
  .map(takePoints)
  .reduce(sum, 0)

Но давайте взглянем на ваше приложение. Какая его часть действительно может быть выражена чистыми функциями? Насколько часто речь идёт о преобразовании значений, которые традиционно выполняют чистые функции? Могу предположить, что большая часть вашего кода работает с побочными эффектами. Вы выполняете сетевые запросы, DOM манипуляции, используете вебсокеты, локальные хранилища, изменяете состояние приложения и так далее. Это всё описывает разработку приложения, по крайней мере в Интернете.

Читать дальше →
Total votes 40: ↑36 and ↓4+32
Comments34

Ещё один бонус счастливчикам с аккаунтами в wavesandbox.com

Reading time1 min
Views665
Прошло 12 дней после получения от Гугла приглашения в Google Wave Developer Sandbox и заполнения мною соответствующей формы (кому интересно, выглядела она так: wave.google.com/signups/signup1.html). За время ожидания активированного аккаунта я успел получить инвайт Google Wave Preview, всё там изучить и вдоволь наиграться. Поэтому сегодня, когда наконец-то получил на руки активированный аккаунт в wavesandbox, я не ринулся с головой по Волнам, а заинтересовался, что нового мне это даст.
Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments8

Хабрахак. Авторизуемся на Хабре без ввода каптчи

Reading time1 min
Views594
Уже довольно давно я регулярно посещаю Хабрахабр через Оперу Мини со своего скромного мобильного устройства Nokia 3110c. И, не смотря на анонс мобильного Хабра, продолжаю пользоваться более тяжёлым интерфейсом. В первую очередь потому что именно на неё ведут линки из RSS-ленты, а во вторую — иногда хочется и откомментить да в карму плю… сануть. Собственно до вчерашнего дня мне абсолютно ничего не мешало именно так и поступать. Открыв очередной интересный топик из ленты, я обнаружил, что любимый Хабр не узнаёт меня и предлагает пройти Авторизацию. Вроде процесс предстоял привычный, но он неожиданно для меня затянулся. Новая ХабраКаптча и хитрый фирменный рендеринг Оперы Мини решили сыграть надо мной злую шутку: предо мной предстали 6 расплывчатых символов со ссылкой ←обновить поверх них. (Жаль скриншота сделать не могу). Конечно администрация обещала как будет время допилить Хабр под Оперу Мини, но уж как-то не хочется ждать три года. И тут я вспомнил, что в почту периодически приходят оповещения от habrahabr mailer со ссылками, перейдя по которым можно пойти авторизацию без ввода пароля. Бинго! А уж Гугл-то постарался обеспечив к почте удобный доступ с мобильных устройств.

Дабы увеличить полезность поста (а я верю, что не я один додумался да такого решения), добавлю предложение для Администрации:
Предлагаю сделать генерерирование и отправку на мобильное устройство ссылки для беспарольной авторизации штатной функцией, доступной из профиля пользователя


PS Если вы ни разу не получали сообщения от habrahabr mailer, проверьте настройки сайта.
Total votes 49: ↑46 and ↓3+43
Comments17

LaTeX на практике. Анонс

Reading time1 min
Views4.8K
Задавшись целью закрепить навыки работы с Emacs и LaTeX, мною была выбрана первая попавшаяся статья подходящего формата на Хабрахабре, которую я решил LaTeXизировать. Результат мне показался стоящим для публичного ознакомления.

С этой страницы вы можете скачать архив с LaTeX исходниками получившегося файла. Он, как мне кажется, во многом говорит сам за себя и демонстрирует применение базовых возможностей, включая списки, таблицы, рисунки, ссылки, настройки полей и определение собственных команд. В свою очередь также осталась часть вопросов мной не решённых.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments26

Хабраследопыты

Reading time1 min
Views568
По мотивам топика Иллюзия конфиденциальности и его комментариев.

Предлагаю в комментариях устроить небольшую демонстрацию. Желающие отписываются в корне дерева, а остальные находят максимум инфы по нему, используя за отправную точку его хабрапрофиль.

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

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

Disclaimer. Участие в демонстрации означает полное понимание возможных последствий. Автор топика никакой ответственности не несёт.
Total votes 3: ↑3 and ↓0+3
Comments27

Как устроен Интернет-счётчик

Reading time1 min
Views637
По просьбам любопытствующих размещаю историю изготовления и устройство Интернет-счётчика
Плюсуем только оригинальный топик, ибо этому нечего делать на главной.
При тщательном осмотре угла с микроволновкой был найден 3х фазный счётчик (электрический). Счётчик в своё время был заменён на новый, но в целом оставался рабочим. Пока мы его не нашли, естесственно.
Коллегой в лёгкой шутке он был назван Интернет-счётчиком. А мне как шило в… вставило, но я непременно должен был это реализовать.
Первым делом была изготовлена лицевая панель: фотобумага, струйник и OpenOffice Writer для изготовления макета. Вдохновнием послужила оригинальная панель, дизайн которой и был в наглую содран.
В качестве привода решено было использовать корпусной вентилятор, который был лишён лопастей и основного корпуса. Дальнейшие часа полтора были потрачены на подбор размещения вентилятора в корпусе. Для закрепления использованы нейлоновые стяжки и картон от коробки материнской платы. Для передачи крутящего момента использована обычная резинка для денег.
Дальше осталось только прикрутить 4 кабеля витой пары и по одной из них запитать на блок питания смонтированный под столом.
That's all folks…
Total votes 15: ↑10 and ↓5+5
Comments8

Information

Rating
Does not participate
Location
Самарская обл., Россия
Date of birth
Registered
Activity