Обновить
23
0
Андрей Хамидулин@fransua

Пользователь

Отправить сообщение

Публикация PWA в App Store и Play Store на github actions

Время на прочтение3 мин
Охват и читатели8.9K

Понадобилось мне как-то раз сделать из PWA мобильные приложения. Приключение на 20 минут, зашли и вышли - подумал я и пропал на пару месяцев. В статье будет гремучая смесь из Java, C#, NodeJS, Swift, bash, Dockerfile и github actions. Но в результате возможность непрерывно поставлять свежие сборки в магазины приложений.

Погружаемся

Почему мы все еще храним код в текстовых файлах?

Время на прочтение5 мин
Охват и читатели25K

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

Читать далее

Один из способов ускорения компиляции TypeScript

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.7K

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

Некоторые библиотеки предоставляют много возможностей, из которых в вашем проекте используется от силы пара процентов. В бандл сборки они не входят благодаря tree-shaking, но жрут ресурсы во время компиляции: процессор и память.

В этой небольшой заметке я расскажу, как обнаружить прожорливые библиотеки и ускорить компиляцию.

Читать далее

Наследование прав доступа

Время на прочтение4 мин
Охват и читатели6.5K

"Это пшеница, что в темном чулане хранится, в доме, который построил Джек"

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

В статье расказывается, как сделать авторизацию в произвольном распределенном направленном графе объектов с наследованием доступа за почти наверное константное время.

Читать далее

Как опричники с аджайлом боролись

Время на прочтение2 мин
Охват и читатели3.5K

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

А в той стране тем временем...

Что такое SOLID project и как его можно использовать прямо сейчас

Время на прочтение8 мин
Охват и читатели3.4K

Про Solid Project за 5 лет его существования было написано множество статей с громкими заголовками и захватывающими воображение картинами будущего, где связанные данные свободны, а пользователи не боятся бана в твиттере. В таких материалах подробно рассказывается какие изменения несет Solid, но весьма поверхностно затрагивается вопрос, что же это такое, из чего он состоит, какие в нем есть технические проблемы и подводные камни.

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

Читать далее

Кешируем CRUD в IndexedDB

Время на прочтение3 мин
Охват и читатели3.4K

Допустим, у нас есть бекенд, который умеет хранить какие-то сущности. И у него есть апи для создания, чтения, изменения и удаления этих сущностей, сокращенно CRUD. Но апи на сервере, а пользователь забрался куда-то глубоко и половина запросов валится по таймауту. Не хотелось бы показывать бесконечный прелоадер и вообще блокировать действия пользователя. Offline first предполагает загрузку приложения из кеша, так может быть и данные брать оттуда?

Читать далее

Скрещиваем WebWorker и Promise

Время на прочтение2 мин
Охват и читатели6.1K
Если уж есть необходимость скрещивать WebWorker с XMLHttpRequest, то пора бы скрестить его с любой функцией, а заодно разобраться с обещаниями ES6.

Цель — научиться делать вот так:
new PromiseWorker(array => array.sort()).Invoke([3,2,1]).then(result => console.log(result));
(Здесь и далее используются arrow functions для краткости)

Читать дальше →

Разделение приложения AngularJS на изолированные модули

Время на прочтение3 мин
Охват и читатели14K
При разработке достаточно большого приложения неизбежно возникает момент, когда приложение наконец-то становится достаточно большим чтобы тормозить. Для AngularJS существует множество методик позволяющих добиться нужной производительности: bindonce, фильтрация списков, использование $digest вместо $apply, ng-if вместо ng-show (или наоборот), и другие. Но все они позволяют делать только локальные улучшения, не помогая в глобальном плане: избавиться полностью от вызовов $rootScope.$digest не получается, а проверка состояния всего приложения может идти очень долго.

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

Асинхронные шаблоны в Knockout.JS

Время на прочтение2 мин
Охват и читатели11K
Knockout.JS — хорошая библиотека для создания сложных веб-приложений. Долгое время мне в ней не хватало асинхронного механизма шаблонов. Реализовать его не получалось, пока я не узнал что window.setTimeout вызывает свой callback не раньше окончания работы текущего контекста. Т.е. в коде
setTimeout("console.log(window.Value)",0),(function (){while (Math.random() < 0.9999999);window.Value = 1;})()
вывод на консоль произойдет только после завершения долгой функции случайного поиска числа очень близкого к единице.
Статья для разбирающихся в механизме биндинга knockout.js и умеющих писать customBindings.
Реализация

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Разработчик баз данных