{"id":28220966,"url":"https://github.com/morulus/morulus.github.io","last_synced_at":"2026-01-26T17:01:57.796Z","repository":{"id":66348120,"uuid":"71080351","full_name":"morulus/morulus.github.io","owner":"morulus","description":"ABOUT ME","archived":false,"fork":false,"pushed_at":"2019-11-17T14:54:37.000Z","size":34790,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-10T11:43:25.383Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/morulus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-10-16T22:09:22.000Z","updated_at":"2019-11-17T14:54:39.000Z","dependencies_parsed_at":"2023-02-26T23:30:43.936Z","dependency_job_id":null,"html_url":"https://github.com/morulus/morulus.github.io","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/morulus/morulus.github.io","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morulus%2Fmorulus.github.io","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morulus%2Fmorulus.github.io/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morulus%2Fmorulus.github.io/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morulus%2Fmorulus.github.io/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/morulus","download_url":"https://codeload.github.com/morulus/morulus.github.io/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morulus%2Fmorulus.github.io/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28782623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-18T04:16:34.133Z","updated_at":"2026-01-26T17:01:57.790Z","avatar_url":"https://github.com/morulus.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"Vladimir Kalmykov\n==\n\n![morulus.github.io](./assets/morulus.github.iox256.png)\n\nПрограммист, дизайнер, архитектор и инженер программного обеспечения.\n\n[Github](https://github.com/morulus) | [Twitter](https://twitter.com/Morulus) | [Codepen](https://codepen.io/morulus) | [LinkedIn](https://www.linkedin.com/in/vladimirkalmykov/) | [Facebook](https://www.facebook.com/luciusmorulus)\n\nПубликации на Medium\n--\n\n[Проволочки при проектировании структуры React приложения](https://medium.com/@vladimirmorulus/%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8-%D0%BF%D1%80%D0%B8-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B-react-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-609f80105e2c)\n\n[React PropTypes в функциональном стиле](https://medium.com/@vladimirmorulus/react-proptypes-%D0%B2-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC-%D1%81%D1%82%D0%B8%D0%BB%D0%B5-21064b63b65a)\n\n[Динамический инжект кода в redux-saga](https://medium.com/@vladimirmorulus/%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-%D0%B8%D0%BD%D0%B6%D0%B5%D0%BA%D1%82-%D0%BA%D0%BE%D0%B4%D0%B0-%D0%B2-redux-saga-cf72e19a2e25?source=your_stories_page)\n\n[Веб-анимация на основе спрайтов](https://medium.com/@vladimirmorulus/%D0%B2%D0%B5%D0%B1-%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5-%D1%81%D0%BF%D1%80%D0%B0%D0%B9%D1%82%D0%BE%D0%B2-8786a9cce59b)\n\n[Как я разрабатывал скрипт анимации перемещения элемента по кривой Безье на Javascript](https://medium.com/@vladimirmorulus/%D0%BF%D0%BE%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF%D0%B0-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D0%BF%D1%80%D0%BE%D0%BF%D0%BE%D1%80%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%B1%D0%BB%D0%BE%D0%BA%D0%B0-%D0%B2-html-6198b8612183?source=your_stories_page---------------------------)\n\n[Кастомные атрибуты в React или 5 золотых правил как получить валидность атрибута](https://medium.com/@vladimirmorulus/%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B5-%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D1%8B-%D0%B2-react-%D0%B8%D0%BB%D0%B8-5-%D0%B7%D0%BE%D0%BB%D0%BE%D1%82%D1%8B%D1%85-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB-%D0%BA%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B0-a22fc97be60b)\n\nВидео\n--\n\n[Митап по DDD и DDS в Redux приложении в компании Infotech Group](https://www.youtube.com/watch?v=U8ZYaurjWPI)\n\nПакеты npmjs.org\n--\n\n[stringify-object-extract-functions](https://www.npmjs.com/package/stringify-object-extract-functions)\n\nФорк популярного пакета stringify-object. Добавляет возможность извлекать и сериализовывать тела функций, сожержащихся в свойствах сериализуемого объекта.\n\n[redux-store-emitter](https://www.npmjs.com/package/redux-store-emitter)\n\nОбертка вокруг Redux, позволяющая подписываться на его действия как на классические события.\n\n[import-sub](https://www.npmjs.com/package/import-sub)\n\nВспомогательный инструмент для замены путей по определенным шаблонам.\n\n[webpack-import-sub-plugin](https://www.npmjs.com/package/webpack-import-sub-plugin)\n\nПлагин для webpack, позволяющий динамически подменять пути импорта пакетов.\n\n[postcss-redirect-import](https://www.npmjs.com/package/postcss-redirect-import)\n\nПлагин для postcss, позволяющий динамически подменят пути импорта файлов.\n\n[assign-prop-types](https://www.npmjs.com/package/assign-prop-types)\n\nВспомогательная функция-ХОК для указания propTypes и defaultProps React компонентам ([Статья про инструмент](https://medium.com/@vladimirmorulus/react-proptypes-%D0%B2-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC-%D1%81%D1%82%D0%B8%D0%BB%D0%B5-21064b63b65a))\n\n[connect-context](https://www.npmjs.com/package/connect-context)\nХОК, позволяющий производить и принимать React контекст с функциональными компонентами\n\n[recreator](https://www.npmjs.com/package/recreator)\n\nКонструктор объектов с встроенным механизмом DI\n\n[is-not-production](https://www.npmjs.com/package/is-not-production)\n\nПростая утилита, позволяющая убедиться, что process.env.NODE_END не равен production\n\n[sequ](https://www.npmjs.com/package/sequ)\n\nКомпозиция функций в Javascript через конкатенативную парадигму.\n\n[thens](https://www.npmjs.com/package/thens)\n\nАбстракция над цепочкой промисов с элементами конкатенативной парадигмы\n\n[mark-props](https://www.npmjs.com/package/mark-props)\n\nИнструмент для маркировки объектов с вложенной структурой, позволяющий отследить местоположение объекта или функции внутри этой структуры\n\n[render-react-markdown-loader](https://www.npmjs.com/package/render-react-markdown-loader)\n\nИмпортирует markdown как React компонент с возможностью рендеринга блоков кода\n\n[logdock](https://www.npmjs.com/package/logdock)\n\nИнструмент для создания динамического лога в CLI\n\n[cine](https://www.npmjs.com/package/cine)\n\nНебольшая утилита для анимирования символов в CLI\n\n[extraflow](https://www.npmjs.com/package/extraflow)\n\nИнструмент позволяет последовательно выполнять фабрики функций до достижения финального результата в порядке вложенности\n\n[propsflow](https://www.npmjs.com/package/extraflow)\n\nИнструмент позволяет выполнять цепочки трансформаций объекта по принципу, заложенному в пакете [extraflow](https://www.npmjs.com/package/extraflow)\n\n[invoke-loader](https://www.npmjs.com/package/invoke-loader)\n\nLoader для webpack, позволяющий выполнить другой loader, указанный в опциях\n\n[markdown-heading-loader](https://www.npmjs.com/package/markdown-heading-loader)\n\nLoader для webpack, позволяющий загрузить заголовки markdown документа\n\n[](https://www.npmjs.com/package/markdown-structure-loader)\n\nLoader для webpack, позволяющий загрузить структуру markdown документа\n\n[git-commits-loader](https://www.npmjs.com/package/git-commits-loader)\n\nLoader для webpack, позволяющий загрузить историю git коммитов указанного файла\n\n[complex-loader](https://www.npmjs.com/package/complex-loader)\n\nLoader для webpack, позволющий комбинировать в себе работу нескольких loader'ов одновременно\n\n[sequencex](https://www.npmjs.com/package/sequencex)\n\nЕще одна реализация парадигмы [CSP](https://en.wikipedia.org/wiki/Communicating_sequential_processes) на Javascript\n\n[resource-info-loader](https://www.npmjs.com/package/resource-info-loader)\n\nLoader для webpack, позволяющий получить информацию о файле\n\n[csf](https://www.npmjs.com/package/csf)\n\nИнструмент для создания асинхронных цепочек на базе es6-генераторов\n\n[press-any-key](https://www.npmjs.com/package/press-any-key)\n\nПростая в использовании утилита, позволяющая отследить нажатие любой клавиши в CLI\n\nУтилиты\n--\n\nhttps://github.com/morulus/resolve-up.bash - Утилита для MacOs, написанная на bash, для поиска файлов в старших директориях\n\nЭкспериментальные проекты\n--\n\nhttps://github.com/morulus/quart - Хелпер для написания плагинов для Сhrome\n\nhttps://github.com/morulus/reactive-middleware - Попытка наложить реактивную парадигму на паттерн store\n\nhttps://github.com/morulus/vendor - Альтернатива RequireJs\n\nhttps://github.com/morulus/promiseFactory - Конфигурируемый синтетический Promise\n\nGists\n--\n\nVery lite http server\nhttps://gist.github.com/morulus/9cb31a62743814274113ffaa3a49fa8f\n\n\n\nДемо\n--\n\n### brahma.screens (2015)\n\nПолноэкранный слайдер на jQuery\n\n[![brahma.screens](./assets/demos/brahma.screens.jpg)](http://morulus.github.io/brahma.screens/)\n\nДемо: http://morulus.github.io/brahma.screens/\nИсходник: https://github.com/morulus/brahma.screens\n\n### weddingparty (2016)\n\nСпрайтовая (покадровая) анимация и движение по кривым Безье\n\n[![brahma.screens](./assets/demos/weddingparty.jpg)](https://morulus.github.io/demo-weddingparty/)\n\nДемо: https://morulus.github.io/demo-weddingparty/\nИсходник: https://github.com/morulus/demo-weddingparty\nСтатья: [Как я разрабатывал скрипт анимации перемещения элемента по кривой Безье на Javascript](https://medium.com/@vladimirmorulus/%D0%BF%D0%BE%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF%D0%B0-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D0%BF%D1%80%D0%BE%D0%BF%D0%BE%D1%80%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%B1%D0%BB%D0%BE%D0%BA%D0%B0-%D0%B2-html-6198b8612183?source=your_stories_page---------------------------)\n\n### demo-solomki (2014)\n\nПростая казуальная игра на Javascript и SVG\n\nДемо: https://morulus.github.io/demo-solomki/\nИсходник: https://github.com/morulus/demo-solomki\n\n\n### brahma.cartoon (2015)\n\nДемо: https://morulus.github.io/brahma.cartoon/\nИсходник: https://github.com/morulus/brahma.cartoon\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorulus%2Fmorulus.github.io","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmorulus%2Fmorulus.github.io","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorulus%2Fmorulus.github.io/lists"}