Pull to refresh
23
0
Андрей Хамидулин@fransua

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

Send message

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

Reading time3 min
Reach and readers8.9K

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

Погружаемся

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

Reading time5 min
Reach and readers25K

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

Читать далее

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

Level of difficultyEasy
Reading time3 min
Reach and readers5.7K

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

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

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

Читать далее

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

Reading time4 min
Reach and readers6.5K

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

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

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

Читать далее

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

Reading time2 min
Reach and readers3.5K

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

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

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

Reading time8 min
Reach and readers3.4K

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

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

Читать далее

Кешируем CRUD в IndexedDB

Reading time3 min
Reach and readers3.4K

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

Читать далее

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

Reading time2 min
Reach and readers6.1K
Если уж есть необходимость скрещивать WebWorker с XMLHttpRequest, то пора бы скрестить его с любой функцией, а заодно разобраться с обещаниями ES6.

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

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

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

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

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

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

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

Information

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

Specialization

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