Pull to refresh
0
0
Александр Карпов @Shahmatist

iOS Developer, AWS specialist

Send message

Основные практики обеспечения безопасности iOS-приложений

Reading time9 min
Views13K


При разработке любого мобильного приложения, обрабатывающего пользовательские данные, важно уделить внимание безопасности. Особенно остро этот вопрос стоит для приложений, где фигурируют ФИО, номера телефонов, паспортов и другая личная информация. Наша компания разрабатывала и продолжает развивать несколько проектов такого рода, в частности приложения для клиентов российских банков. На основе этого опыта мы выработали набор требований безопасности, которым руководствуемся. Естественно, каждый год появляются новые технологии и возможности, а вместе с ними — новые особенности поведения и уязвимости. В этой статье мы зафиксировали основные пункты обеспечения безопасности iOS-приложений, актуальные на начало 2018 года.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments14

Чистый код для TypeScript — Часть 3

Reading time9 min
Views9.4K

Заключительная часть статей, посвященных тому, как можно использовать принципы чистого кода в TypeScript(ps. Все эти принципы относятся не только к языку TypeScript).


Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments7

Code style как стандарт разработки

Reading time15 min
Views41K
Давайте сразу, это не про скобочки. Здесь речь пойдет о том, как работает наш мозг и почему code style помогает обеспечивать линейное развитие проекта, значительно ускоряет адаптацию новых сотрудников и, в целом, формирует и воспитывает культуру разработки. Я постарался собрать в одной статье несколько исследований и принципов, посвященных работе мозга разработчика, и тому, как программисты читают код, а также поделился результатами личного эксперимента.

Интересно? Добро пожаловать под кат.


Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments61

Any и AnyObject в Swift. В чем их различие?

Reading time3 min
Views13K
Довольно долгое время в своих проектах при написании когда я использовал тип Any, например при обработке JSON данных. Но также я знал что есть и второй тип — AnyObject. И недавно я задумался о разнице между этими двумя типами.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments2

Как работает Flutter

Reading time18 min
Views59K


Как Flutter работает на самом деле?


Что такое Widgets, Elements, BuildContext, RenderOject, Bindings?..


Сложность: Новичок


Вступление


В прошлом году (прим: в 2018), когда я начал свое путешествие в сказочный мир Flutter, в Интернете было очень мало информации по сравнению с тем, что есть сегодня. Сейчас, несмотря на то, что уже написано много материалов, лишь небольшая их часть рассказывает о том, как на самом деле работает Flutter.


Что же такое Widgets (виджеты), Elements (элементы), BuildContext? Почему Flutter быстрый? Почему иногда он работает не так, как ожидается? Что такое деревья и зачем они нужны?


В 95% случаев при написании приложения вы будете иметь дело только с виджетами, чтобы что-то отображать на экране или взаимодействовать с ним. Но неужели вы никогда не задумывались, как вся эта магия работает внутри? Как система узнает, когда обновить экран и какие части должны быть обновлены?


Содержание:


Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments6

Изучаем SEO самостоятельно: большая подборка материалов

Level of difficultyEasy
Reading time5 min
Views516K
Привет, Хабр!

Меня зовут Артём Сайгин, я веду телеграм канал Growth Lab, в котором делюсь опытом роста IT-продуктов.

Сделал для вас большую подборку материалов о поисковом продвижении для самостоятельного изучения. Эти бесплатные материалы легко заменят вам платные курсы.

Также в конце статьи вы найдёте список книг по SEO, бесплатные курсы, чек-листы SEO-аудита, SEO-сервисы и расширения.

Добавляйте в закладки, чтобы не потерять.

image

Отмечу, что список материалов будет пополняться. Если я не добавил стоящий материал, свяжитесь со мной — добавлю.

Приступим!
Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments9

Лицензии на сайты и интернет-сервисы в Китае

Reading time5 min
Views3K
Про это довольно много написано, но каждый из авторов (сознательно или по незнанию) упускает несколько важных моментов. В этой статье я хотел бы сии пробелы заполнить. Итак, вначале — немного ретроспективы.

Как известно, деятельность сайтов и вообще любая активность в интернете в КНР является объектом государственного регулирования. Это значит то, что без одобрения соответствующих органов (в настоящий момент — отдела пропаганды ЦК КПК, министерства промышленности и информатизации, Гостелерадио и т.д. — для каждого вида деятельности свой) вести деятельность в Интернет нельзя. На тему следующих разрешений мы и поговорим.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments0

Как собрать низкочастотные ключи для SEO: 4 нетривиальных способа

Reading time5 min
Views12K
Как собрать низкочастотные ключи для SEO: 4 нетривиальных способа

Низкочастотные запросы (для экономии чернил будем называть их НЧ) в SEO нужны. Особенно когда по СЧ и ВЧ топ забит колдунщиками, контекстом и агрегаторами. С НЧ при небольшом бюджете можно занять верхние строчки выдачи и получать недорогой и стабильный трафик.


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

Читать дальше
Total votes 7: ↑5 and ↓2+3
Comments2

Начинающим о SEO

Reading time5 min
Views32K
Доброго времени суток, Хабровцы.

Любой начинающий веб-мастер, создавший свой первый сайт, ждет огромного числа посетителей, желательно уже на второй день после того как залил сайт на хостинг. Первым делом вешается счетчик посетителей, который зафиксирует сей исторический факт, а во сне на нем появляются магические цифры: 100000, 200000, 1000000 хостов… Жаль, что только во сне. На утро суровая реальность лупит между глаз наотмашь: 0… 0… 1… (причем 1 – это ты сам). И вот именно в этот момент обязательно наступает прозрение – похоже не все так просто, а память услужливо вытаскивает из каких-то закоулков неизвестно как туда попавшее слово «SEO».

Да, SEO – именно то, что нужно в этой ситуации. Это сила, которая выносит на пьедестал и осыпает богатством того, кто ей повелевает, но с такой же легкостью забрасывает на задворки цивилизации неумех, которые вообразили себя профи. Поэтому не будем торопиться, а маленькими шажочками разберемся с чем нам придется иметь дело.
Читать дальше →
Total votes 19: ↑11 and ↓8+3
Comments4

20 SEO-мифов, которые должны умереть в 2020

Reading time17 min
Views42K
Хабр читают не только разработчики, и не только люди связанные с IT, некоторые из моих клиентов иногда кидали мне ссылки на Хабр, и среди них были такие, которые совсем далеки от IT. Поэтому в этой статье будет максимально простым языком объясняться некоторые аспекты SEO. К сожалению, тренд последних лет о том, что контент стоит во главе всего, многие мои “коллеги по цеху” воспринимают так, что “вещать” в своем корпоративном блоге можно, что угодно и как угодно. Это рождает массу бредовых мифов о SEO.


Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments11

От чего зависит позиция сайта на поисковой странице?

Reading time8 min
Views13K
Когда сайт уже запущен и продает товары или услуги, оценить его успешность можно: достаточно проанализировать позицию, которую он занимает в поисковой системе, продажи, рентабельность инвестиций в разработку сайта и т.д.

Но как быть, если сайт только создан и продаж еще нет? Можно ли спрогнозировать, на какую позицию на поисковой странице можно рассчитывать при введении запроса?

Наша цель – создать инструмент для количественного анализа нового сайта, проведения сравнения с другими сайтами и оценки шансов на попадание в топ поисковой системы.
Мы провели эксперимент – взяли 18 новых сайтов, созданных студентами 4-го курса, и протестировали их на предмет наличия параметров, влияющих на позицию сайта внутри поисковой системы.

Для проведения нашего анализа мы опирались на исследование, проведенное «Ашманов и партнеры», в котором приведены результаты анализа «силы» параметров, влияющих на попадание сайта в топ выдачи поисковой системы. В нашем исследовании мы рассматривали результаты, применимые к поисковой системе Яндекс.

Т.к. в нашем эксперименте мы используем результаты исследования, проведенного «Ашманов и Партнеры», приведем их собственное описание проделанной работы.

«Мы ежемесячно оцениваем одну и ту же «исследовательскую» выборку из 160 запросов. Мы постарались сделать ее сбалансированной по тематикам и частотам запросов. Это не вполне получилось, и, наверное, было бы лучше, если бы она была немного больше. Но важнее другое: выборка не меняется с марта 2015 года, и по ней мы можем отследить изменения в ранжировании, накапливавшиеся от месяца к месяцу».
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments5

Фронтенд-2019: итоги года

Reading time19 min
Views25K
В 2019 году мир фронтенд-разработки, как уже бывало, развивался с головокружительной скоростью. Материал, перевод которого мы сегодня публикуем, посвящён обзору важных событий, новостей и трендов 2019 года.



А вот, кстати, аналогичный материал, опубликованный нами в 2018 году. Там, в конце, есть раздел прогнозов на 2019 год. На наш взгляд, многие из них оправдались. Не обойдётся без прогнозов и эта статья, но не будем забегать вперёд.
Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments20

Скрытая цена CSS-in-JS-библиотек в React-приложениях

Reading time11 min
Views17K
В современных фронтенд-приложениях технология CSS-in-JS пользуется определённой популярностью. Всё дело в том, что она даёт разработчикам механизм работы со стилями, который удобнее обычного CSS. Не поймите меня неправильно. Мне очень нравится CSS, но создание хорошей CSS-архитектуры — задача не из простых. Технология CSS-in-JS может похвастаться некоторыми серьёзными преимуществами перед обычными CSS-стилями. Но, к сожалению, применение CSS-in-JS способно, в определённых приложениях, привести к проблемам с производительностью. В этом материале я попытаюсь разобрать высокоуровневые особенности наиболее популярных CSS-in-JS-библиотек, расскажу о некоторых проблемах, которые иногда возникают при их использовании, и предложу способы смягчения этих проблем.


Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments5

Обзор 14 headless cms 2019

Reading time25 min
Views40K
Некоторое время назад в одной заметной на российском рынке публичной компании, в которой я работал, встал вопрос об использовании headless cms. Среди множества реализаций нужно было выбрать одну. Это рассказ о том, как я формировал критерии выбора, как анализировал cms-ки, и как этот анализ привел меня к мысли, что нужно писать свою. Обзор 14 headless cms под катом.


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

Разработка статического блога на Gatsby и Strapi

Reading time10 min
Views37K
Статические веб-сайты содержат страницы с неизменным содержимым. Технически — это набор HTML-файлов, которые, для каждого посетителя сайта, выглядят одинаково. В отличие от динамических веб-сайтов, для разработки таких сайтов не нужно серверное программирование или базы данных. Публикация статического веб-сайта проста: файлы выгружают на обыкновенный веб-сервер или в некое хранилище. Два основных преимущества статических веб-сайтов — это безопасность и скорость. Тут нет базы данных, поэтому отсюда нечего красть, и тут нет нужды программно генерировать страницу для каждого запроса, что ускоряет работу.

Для того чтобы упростить создание статических веб-сайтов, создано множество опенсорсных инструментов. Например, это Jekyll, Hugo, Hexo, и другие. Работа по подготовке содержимого сайта ведётся путём редактирования чего-то вроде файлов с разметкой, или через некое API для управления контентом. После того, как данные готовы к публикации, генератор берёт эти данные, внедряет их в шаблоны и создаёт множество HTML-файлов, готовых для публикации.

Сегодня мы расскажем о быстрой разработке проектов с помощью Gatsby — генератора статических прогрессивных веб-приложений, и Strapi — системы управления контентом. В результате после того, как вы освоите это руководство, у вас будет работающий статический блог и масса идей, касающихся его развития.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments7

Венеция: дикий профит на паре голых скал

Reading time13 min
Views40K
В посте про транспортную систему Венеции я обещал чуть больше рассказать про сам город и острова. Поэтому ниже — минутка пятничного урбанизма.



Примерно в 452 году зажиточные крестьяне убегали от варваров под предводительством Аттилы, бродящих толпами по материку. Лагуна мелкая, но для переправы нужны лодки, потому что проплыть 6 километров на коне как-то сложно. Ну и Аттила законно подозревал, что десантирование на острова — далеко не его основной бизнес.

Место оказалось внезапно удачным. Венеция находится в лагуне, которую образует куча рек, впадающих в море. Они несут песок и прочие штуки и лепят из этого острова. Вот по карте хорошо видно этот процесс:


Эту картинку NASA открыла для Вики, а я добавил выделение Венеции

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

Оставалась только одна проблема — вокруг был тотальный голяк. То есть можно было рыбачить, но зажиточные крестьяне всё же хотели большего. Ну и дальше пошла история Серениссимы, Светлейшей республики. Одной из самых странных стран в истории человечества: фактически, без территорий, но зато с обширными морскими владениями.
Читать дальше →
Total votes 142: ↑137 and ↓5+132
Comments57

FigmaGen: Автоматизация стилей в iOS-приложении

Reading time7 min
Views5.7K


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


Дело в том, что в hh для проектирования UI используется небезызвестный сервис Figma, который, кроме прочих своих плюсов, имеет открытый API. А это в свою очередь открывает широкие возможности для разработчиков, чем мы и решили воспользоваться.


Так родилась идея проекта FigmaGen - инструмента, который синхронизирует код с библиотекой компонентов в Figma. Сначала он выглядел, как эксперимент, специфичный только для нашего продукта, но получилось более универсальное решение, и в этой статье мы поделимся первыми плодами своей разработки.

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2

Многопоточность (concurrency) в Swift 3. GCD и Dispatch Queues

Reading time28 min
Views320K
Надо сказать, что многопоточность (сoncurrency) в iOS всегда входит в вопросы, задаваемые на интервью разработчикам iOS приложений, а также в число топ ошибок, которые делают программисты при разработке iOS приложений. Поэтому так важно владеть этим инструментом в совершенстве.
Итак, у вас есть приложение, оно работает на main thread (главном потоке), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (UI). Как только вы начинаете добавлять к вашему приложению такие «затратные по времени» куски кода, как загрузка данных из сети или обработка изображений на main thread (главном потоке), то работа вашего UI начинает сильно замедляться и даже может привести к полному его «замораживанию».



Как можно изменить архитектуру приложения, чтобы таких проблем не возникало? В этом случае на помощь приходит многопоточность (сoncurrency), которая позволяет одновременно выполнять две или более независимые задачи (tasks): вычисления, загрузку данных из сети или с диска, обработку изображений и т.д.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments14

Xcode 11 и XCFrameworks: новый формат упаковки фреймворков

Reading time9 min
Views17K


В жизни многих компаний, которые имеют и развивают свой стек библиотек и компонентов, наступает момент, когда объёмы этого стека становится сложно поддерживать.


В случае разработки под платформу iOS, да и в целом, экосистему Apple, есть два варианта подключать библиотеки в качестве зависимостей:


  1. Собирать их каждый раз при сборке приложения.
  2. Собирать их заранее, используя уже собранные зависимости.

При выборе второго подхода становится логичным использовать CI/CD системы для сборки библиотек в готовые к употреблению артефакты.


Однако, необходимость собирать библиотеки под несколько платформ или архитектур процессора в экосистеме Apple, зачастую, требует проводить не всегда тривиальные операции, как при сборке библиотеки, так и конечного продукта, который её использует.


На этом фоне, было сложно не заметить и крайне интересно изучить, одно из нововведений от Apple, представленное на WWDC 2019 в рамках презентации Binary Frameworks in Swift — формат упаковки фреймворков — XCFramework.


XCFramework имеет несколько преимуществ, в сравнении с устоявшимися подходами:


  1. Упаковка зависимостей под все целевые платформы и архитектуры в единый bundle из коробки.
  2. Подключение bundle в формате XCFramework, как единой зависимости для всех целевых платформ и архитектур.
  3. Отсутствие необходимости в сборке fat/universal фреймворка.
  4. Нет необходимости избавляться от x86_64 слайсов (slice) перед загрузкой конечных приложений в AppStore.

В этой статье мы расскажем, зачем был внедрён этот новый формат, что он из себя представляет, а также, что он даёт разработчику.

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

Стратегии локализации контента

Reading time6 min
Views3K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Strategien zur Lokalisierung von Content» автора Nicolai Goschin.

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

Предпосылки и предварительные соображения


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

По мере того как мы углубимся в тему локализации в этой статье, есть два механизма, которые нам необходимо понять с самого начала. Первый — это настройка языка браузера, а второй — IP-адрес пользователя.

Настройка языка браузера


Каждый раз, когда запрашивается веб-сайт, веб-браузер автоматически отправляет на сервер язык браузера, который может быть настроен пользователем через настройки браузера. Язык по умолчанию — это язык операционной системы. Важно знать, что большинство пользователей не знают, что они могут изменить язык. Каждый язык обычно состоит из двух параметров: самого языка и региона. Германия использует de-de, то есть, Германия-Германия, Австрия использует de-at, что означает «Германия-Австрия», а США используют en-us.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments4
1
23 ...

Information

Rating
Does not participate
Location
Milano, Lombardia - Milano, Италия
Date of birth
Registered
Activity