Pull to refresh
13
0
Олег Кот @k0teg

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

Send message

Redux. Простой как грабли

Reading time5 min
Views189K
Мне уже доводилось заглядывать в репозиторий библиотеки redux, но откуда-то появилась мысль углубиться в его реализацию. Своим в некотором роде шокирующим или даже разочаровывающим открытием я хотел бы поделиться с сообществом.

TL;DR: базовая логика redux помещается в 7 строк JS кода.

О redux вкратце (вольный перевод заголовка на гитхабе):
Redux — библиотека управления состоянием для приложений, написанных на JavaScript.

Она помогает писать приложения, которые ведут себя стабильно/предсказуемо, работают на разных окружениях (клиент/сервер/нативный код) и легко тестируемы.
Я склонировал репозиторий redux, открыл в редакторе папку с исходниками (игнорируя docs, examples и прочее) и взялся за ножницы клавишу Delete:

  • Удалил все комментарии из кода
    Каждый метод библиотеки задокументирован с помощью JSDoc весьма подробно
  • Убрал валидацию и логирование ошибок
    В каждом методе жёстко контролируются входные параметры с выведением очень приятных глазу подробных комментариев в консоль
  • Убрал методы bindActionCreators, subscribe, replaceReducer и observable.

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

А теперь давайте разберём то, что осталось
Читать дальше →
Total votes 52: ↑49 and ↓3+46
Comments159

«Камень-ножницы-бумага» и теория игр

Reading time8 min
Views60K
image

Игра «камень-ножницы-бумага» отлично подходит для того, чтобы решить, кому придётся выносить мусор. Но замечали ли вы, что происходит, когда вместо трёх выбрасываний игра продолжается раунд за раундом? Сначала вы выбираете принцип, который даёт вам преимущество, но потом противник быстро понимает его и обращает в свою пользу. В процессе изменения стратегий вы постепенно достигаете точки, в которой ни одна из сторон не может дальше совершенствоваться. Почему же такое происходит?

В 1950-х математик Джон Нэш доказал, что в любом виде игры с конечным количеством игроков и конечным количеством вариантов (таком, как «камень-ножницы-бумага») всегда существует смешение стратегий, при которой ни один игрок не может показать результатов лучше изменением только собственной стратегии. Теория таких устойчивых наборов стратегий, которые называются "равновесиями Нэша", совершила революцию в области теории игр, изменила направление развития экономики и способы изучения и анализа всего — от политических договоров до сетевого трафика. А ещё она позволила Нэшу получить в 1994 году Нобелевскую премию.

Так как же выглядит равновесие Нэша в игре «камень-ножницы-бумага»? Давайте смоделируем ситуацию, в которой есть вы (Игрок A) и ваш противник (Игрок B), снова и снова играющие в игру. В каждом раунде победитель получает очко, проигравший теряет очко, а ничья засчитывается как ноль очков.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments29

Дайджест интересных материалов из мира Drupal #20

Reading time4 min
Views9.4K

Привет!


Если вы ненавидите свою CMS, то на этих майских самое время посмотреть на альтернативы. Мы в свою очередь с любовью отобрали для вас пару десятков полезных ссылок для изучения Drupal. Внутри опрос!


По-русски


  1. Хватит это терпеть! Большой честный обзор подходов для создания лендингов от соавтора дайджеста k0teg.
  2. Не менее полезный материал от Никиты Малышева. Отец-основатель dru.io делится своим подходом к верске Drupal-сайтов на основе Display Suite.
  3. Хабр заинтересовался вопросами лицензирования: FAQ по лицензированию Drupal, FAQ по лицензированию Backdrop.
  4. Немного старой доброй семёрки: Работа с чистым Token API. Важно понимать, как оно устроено, но на практике бывает удобно сразу интегрироваться с Entity API и его встроенной поддержкой токенов.
  5. К другим новостям. @xandeadx разжился лиценцией на PhpStorm и сразу же начал писать заметки на эту тему. Мы никогда ничего такого не писали, но поведение автора блога xandeadx.ru нас очень удиаляет и возмущает. Когда уже будут заметки по Drupal 8?! :)
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments3

Дайджест интересных материалов из мира Drupal #18

Reading time4 min
Views6.4K
Привет!

Мы собираем полезные статьи и свежие новости из мира Drupal и делимся с вами раз в месяц. В этом выпуске провожаем зиму (и Drupal 6).

По-русски


  1. «Приятно наблюдать, как статьи по Друпал 8 постепенно наполняют русскоязычный сегмент сети...» — пишет автор открывающей статьи рубрики «По-русски». Действительно приятно! Друпал 8: Routing, links, permissions, tabs или "Hello YML" — создаём простой модуль со всеми необходимыми правами и ссылками в меню.
  2. Небольшой обзор Migrate для семёрки от этого же автора.
  3. Похоже, что на Drupal.ru пригласили писать Дэдпула. По крайней мере с чувством юмора у нашего нового Drupal-героя всё впорядке. Уже можно насладиться двумя шедеврами: Drupal 8, Cache & Rock N' Roll и Drupal 8. Entity, мы с тобой одной крови. Автор, некогда объяснять, свяжись с нами срочно!
  4. Ещё на Drupal.ru: анонс модуля render_boost для ускорения семёрки.
  5. Там же на Drupal.ru можно найти информацию по Backdrop CMS, форку семёрки для тех, кому пока велик Drupal 8.
  6. Возвращемся к классике. Новое в блоге xandeadx.ru: полезный сниппет для поддержки алиасов нод в актуальном состоякии.
  7. Там же подробно и со скриншотами, как настроить табы (локальные задачи) во Views. То же самое для восьмёрки.
  8. Интеграция custom entity с Panelizer — продолжение серии статей про сущности в блоге nightdevel.ru.
  9. Модуль Commerce Robokassa обновлен до 7.x-2.0-rc1.
  10. Тема настройки локального окружения никогда не выйдет из моды. На сей раз читайте про настройку xdebug для сложных случаев. Хештеги: #windows #virtualbox #sshtunnel #docker #phpstorm.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments0

Дайджест интересных материалов из мира Drupal #16

Reading time6 min
Views5.5K
Всем привет!

Мы собираем полезные статьи и свежие новости из мира Drupal и делимся с вами раз в месяц. Встречайте новогодний выпуск!



По-русски


  1. Хабр разворачивает Drupal 8: cначала докером, потом Otto, наследником Vagrant.
  2. Как в восьмёрке сделать банальный $node->save() читайте в заметке Drupal 8: Программное создание сущностей Никиты Малышева.
  3. Тот же автор продолжает: как добавить в восьмёрку семантическую разметку и не умереть (это про JSON-LD).
  4. «Что случилось с hook_menu в Drupal 8?» — перевод отличной статьи луллаботов для хабра.
  5. Блоггер Tlito записал свои заметки о восьмёрке для новичков, не знакомых ни с программированием, ни даже с друпалом (1, 2).
  6. @xandeadx написал модуль-хелпер, позволяющий выполнить всю очередь в фоне без вылета по таймауту — Background Queue.
  7. Он же показывает на красивом примере, как использовать теги db-запросов во Views: Необязательное одно из двух значений раскрытого фильтра с оператором BETWEEN
  8. Обзор методов работы с AJAX с примерами кода.
  9. После того, как AJAX-заработал, можно заняться стилизацией стандартной иконки лоадера.
  10. К новостям сообщества. Первоначальный владелец домена drupal.ru опубликовал прощальное письмо и анонсировал передачу домена из своих рук.
  11. На Dru.io, другом сайте сообщества, активно проходят спринты по переводам восьмёрки. Присоединяйтесь!
  12. Питерское сообщество опубликовало презентации и видео четырёх докладов по Drupal 8.
  13. Отгремел DrupalCamp Siberia 2015 в Новосибирске. Пока официальные материалы обрабатываются и выкладываются, можно посмотреть экранку из нашего спец.выпуска (хочу такое получать).

Читать дальше →
Total votes 9: ↑5 and ↓4+1
Comments2

Дайджест интересных материалов из мира Drupal #14

Reading time5 min
Views9.2K
Мы собираем полезные статьи и свежие новости из мира Drupal и делимся с вами раз в месяц. Встречайте октябрьский выпуск!



По-русски


  1. Никита Малышев активно делится своим опытом работы с Drupal 8. Самая свежая заметка на данный момент: Drupal 8 Block Plugin API. Стоит обратить внимание, ведь уже вышел релиз Drupal 8 rc2.
  2. Неплохо поживает и форк друпала Backdrop. Егор Марценюк поделился портом темы Bootstrap на Backdrop CMS.
  3. Для тех, кто ещё не печатает команды драша на автомате, будет полезна заметка Автодополнение команд Drush.
  4. Возвращаясь непосредственно к друпалу, вечно актуальная тема создания сущностей из кода в блоге nightdevel.
  5. Там же вышла заметка о том, как реализовать выбор цвета из палитры в своей форме.
  6. Кажется, синее сердце скоро снова зажжётся на территории России: сибирское друпал-сообщество запланировало DrupalCamp Siberia в Новосибирске. Пока детали уточняются, вы можете отправить предварительную заявку со своими пожеланиями.


Drupal Lite


  1. В лучшей книге про Drupal 7 уже написано 6 глав. Очень рекомендуем!
  2. Ещё один проект на GitBook: набор полезных рекомендаций для разработчиков Drupal Organised.
  3. Важное видео для тех, кто только начинает работать с друпалом и потерялся в тысячах его модулей. Подробная текстовая версия на русском, хоть и немного устарела, но тоже подойдёт: 1, 2, 3.

Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments10

Дайджест интересных материалов из мира Drupal #13

Reading time5 min
Views5.8K
Всем привет!

Мы собираем полезные статьи и свежие новости из мира Drupal и делимся с вами раз в месяц. Встречайте тринадцатый выпуск!



По-русски


  1. Начнём со статей, посвящённых Views. Замечали, что при создании нового представления можно указать теги? Зачем они нужны, читайте в статье Один темплейт для нескольких Views.
  2. Подменить значение раскрытого фильтра Views — небольшой сниппет от @xandeadx.
  3. Views handler для отображения значения поля предыдущей ревизии — пример создания своего нестандартного типа поля.
  4. А вот заметка о другом мощном модуле друпала: Как удалить задачу, запланированную Rules Scheduler.
  5. Всё, что вы хотели знать о рендере таблиц в друпале: Часть 1, Часть 2. В закладки!

Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments2

Дайджест интересных материалов из мира Drupal #11

Reading time5 min
Views7.2K
Всем привет!

Это одиннадцатый выпуск Drupal-дайджеста на хабре. Мы собираем полезные статьи и свежие новости из мира Drupal и делимся с вами раз в месяц.



По-русски


Наша любимая рубрика — друпал в рунете.

  1. «Вставка изображений в CKEditor» — подход, который использует @xandeadx, постоянный участник нашего дайджеста.
  2. silrage написал на хабр, как можно использовать Rules, один из столпов друпала, для ограничения доступа к материалу. И хотя поначалу Rules может показаться сложным и громоздким решением, впоследствии изучение этого инструмента окупится сполна.
  3. Автор блога tlito.ru изучает друпал в прямом эфире, записывая свои наблюдения в блог. Вот пара заметок для примера: блокирование пользователей по IP, перемещение модулей в папку sites/all/modules.
  4. Андрей Малеев написал подробно о токенах: зачем нужны, как использовать и расширять.
  5. Разработчики dru.io ведут всю разработку сайта сообщества открыто на гитхабе и делятся своим опытом с нами. Александр Дубовской про то, как деплоить Views без Features.
  6. Там же Chi анонсировал легкий генератор кода для Drupal.
  7. И последнее с Dru.io на сегодня: Drupal foreign key на уровне БД.
  8. Вышла вторая часть большого сравнения производительности MySQL и PostgeSQL. Как всегда в таких вопросах, однозначного ответа нет. Автор, похоже, остановился на постгрес.

Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments4

Дайджест интересных материалов из мира Drupal #7

Reading time5 min
Views6.9K
Всем привет!

Самое интересное и полезное из мира Drupal за прошедшие 3 недели в нашем седьмом выпуске.

image

По-русски


Начнём с материалов в рунете:

  1. По традиции несколько полезных сниппетов от xandeadx: «Оплата доступа к ноде с помощью Робокассы», «Taxonomy Menu и названия пунктов меню из поля термина», «Программно авторизовать пользователя по uid».
  2. Павла Китаева не отпускает Form API :) Читайте его статью «Создание новых типов элементов формы HTML5».
  3. Макс Корейченко размышляет на тему производительности и делится своим подходом к аяксификации.
  4. «Такой замечательный баг нашел, или это фича?» — пишет автор блога «Make You Live Better | Сексуальные опыты с Drupal CMF» после ночи с модулем Context :)
  5. @kalabro рассказала, как можно подключать PHP-файлы в своём модуле.

Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments4

Дайджест интересных материалов из мира Drupal #3

Reading time3 min
Views7.9K
Всем привет!

Мы отобрали для вас самое интересное и полезное из мира Drupal за первые недели 2015 года.

Druplicon

По-русски



  1. Во-первых, в тестовом режиме запустилась новая площадка сообщества DrupalifeCommunity. Слово автору:
    Сразу скажу о судьбе проекта. Им я не претендую заменить Drupal.ru, это совершенно отдельное и самостоятельное начинание. Скажем так, альтернативное сообщество, как каким-то пытался стать DrupalSN.

    На новой площадке уже замечено несколько друпал-гуру, а это хороший знак :)
  2. Чуть ли не первая серьёзная статья на русском, в которой одновременно встречаются слова Drupal и Postgres: «Тестирование производительности Drupal: MySQL vs PostgreSQL часть 1». Очень ждём следующих частей!
  3. Продолжая тему баз данных, Роман Агабеков подробно пишет про репликацию master-slave MySQL.
  4. Как же без Panels: в этот раз «Добавляем поддержку Token'ов в настройки Panel Pane».
  5. Рубрика «Антиквариат»: код либрусека пятилетней выдержки.

Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments21

Создание гибких анкет в Drupal 7

Reading time9 min
Views19K
Обновлено: 09.06.2012
Выкладываю модуль Webform Multiple Conditions, который реализует описанный в статье функционал без модификации модуля Webform.

В статье предложен патч для модуля Webform, часто используемого в CMF Drupal для создания опросников и анкет. Патч позволяет через административный интерфейс указывать несколько условий для компонентов формы, а также управлять логикой их совместной работы.
Читать дальше →
Total votes 8: ↑5 and ↓3+2
Comments7

Information

Rating
Does not participate
Location
New Jersey, США
Date of birth
Registered
Activity