Pull to refresh
0
0
Boris Khakhin @Jentix

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

Send message

Правильно подключаем тяжелые зависимости к Xcode проекту через Swift Package Manager

Reading time7 min
Views6.8K

В этой статье я расскажу о проблемах с которыми я столкнулся при подключении тяжелых зависимостей к iOS проекту с помощью Swift Package Manager и о способе их решения.

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

Что такое устройство защиты от дугового пробоя (УЗДП) и с чем его едят?

Reading time14 min
Views91K
Продолжаем тему современных устройств защиты для домашних электрощитов. На очереди Устройства защиты от дугового пробоя (УЗДП — формулировка из ГОСТ), они же «Устройства защиты от искрения» (УЗИс) они же  arc-fault detection device (AFDD), они же  arc-fault circuit interrupter (AFCI)… Имен много, а суть одна: это устройство призвано отключить линию, если обнаружится дуговой пробой где-то на линии. Это часть теоретическо-методическая. Тесты и расчленение устройств будет в продолжении.

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

Подробный гайд по Docker на M1

Reading time8 min
Views25K

Я Александр Калинка из компании Evrone. Мы работаем удалённо с 2008 года и делаем это на собственных устройствах. Иногда возникает проблема, как установить, настроить и запустить все приложения и сервисы, необходимые для использования в проекте. Кто-то идет классическим путем, ставит необходимое локально на компьютер и работает с этим стеком. Но есть определенная часть программистов (и, несомненно, проектов), которые для развертывания необходимого зоопарка приложений используют Docker и Docker Compose. Устройства бывают разные, но особенно популярны Apple на чипсете M1 2020 года и на чипсете M2 2022 года. Работа Docker на них имеет некоторые особенности, о которых я хотел бы рассказать.

Читать далее
Total votes 14: ↑10 and ↓4+9
Comments6

7 решений для установки и управления WireGuard на своём сервере

Level of difficultyMedium
Reading time17 min
Views103K

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

Но если клиентов много и нужно время от времени их добавлять и удалять, то становится сложнее за ними уследить. Да и каждый раз генерировать вручную ключи и выбирать IP не очень удобно.

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

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments28

Фасетные фильтры: как готовить и с чем подавать

Reading time6 min
Views24K

О чем речь 


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

  1. как реагирует UI, когда пользователь использует фильтры;
  2. алгоритм формирования значений фильтров; 
  3. шаблоны запросов и структуры индекса ElasticSearch с пояснениями.

Здесь нет готовых решений. Скопировать и вставить не получится. Для решения собственной задачи придется вникнуть.


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

Императивный UIKit‍ vs Декларативный SwiftUI

Reading time15 min
Views12K

Для разработки iOS-приложений можно использовать два основных фреймворка: UIKit и SwiftUI. Однако при переходе на SwiftUI многие разработчики сталкиваются с трудностями, ведь парадигмы программирования у двух инструментов сильно отличаются.

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

Читать далее
Total votes 83: ↑80 and ↓3+82
Comments40

WireGuard. How it was

Reading time9 min
Views60K

Привет. Я Леша, System Infrastructure Engineer в inDriver. В этой статье на конкретных кейсах объясню, почему WireGuard — отличная VPN-система для работы, в чем разница использования разных утилит и что надо помнить, когда с ними работаешь. Прошу под кат!

Окунуться в мир WireGuard
Total votes 18: ↑18 and ↓0+18
Comments32

Фреймворки для тестирования Node: Хорошие, плохие, медленные и ресурсоемкие

Reading time6 min
Views4.5K

Недавно наши интеграционные тесты Jest упали из-за недостатка памяти. Как оказалось, это не было аномалией, и тесты постоянно аккумулировали на себе столько памяти, что единственный процесс Node.js достиг стандартного предела в 4 ГБ, установленного в V8 для размера кучи. У нас около 450 тестов, объединенных в 50 сьютов, которые в основном являются интеграционными: имитированные HTTP-запросы обрабатываются на сервере, который взаимодействует с базой данных Postgres, запущенной в Docker. По этой причине мы используем последовательный запуск, поскольку у нас нет изолированного хранилища для каждого сьюта. После того, как мы обнаружили несколько проблем с Jest, соответствующих нашим диагнозам, одним из действий, которые мы предприняли, было выяснить, сможет ли миграция на альтернативный фреймворк решить наши проблемы.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments1

50 вопросов и ответов для собеседования по Swift в 2022 году

Reading time14 min
Views50K

Перед вами список из 50 вопросов и ответов для собеседования по Swift. Эти вопросы посвящены программированию на Swift и разработке приложений для iOS. Вы должны знать ответы на них, прежде чем у вас появится шанс продемонстрировать свои навыки перед интервьюером.

Кроме того, не стесняйтесь использовать эти вопросы для собеседования по Swift для тренировки перед экзаменом.

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

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments17

Какие вопросы задать работодателю на собеседовании?

Reading time3 min
Views205K

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

Я составил 50 самых важных вопросов будущему работодателю, которые ты обязан задать на собеседовании.

Читать далее
Total votes 22: ↑20 and ↓2+22
Comments18

Задачи на собеседованиях. Event loop. JS

Reading time10 min
Views95K

Почти на каждом собеседовании бывает задачка на событийный цикл. И как я понял, не все до конца понимают как их решать. А решают их обычно в голове, а лучше используя бумажку и ручку. В статье я приведу способ решения через таблицу
Основной поток/Микрозадачи/Макрозадачи

Читать далее
Total votes 18: ↑17 and ↓1+18
Comments26

Всегда ли нужны Docker, микросервисы и реактивное программирование?

Reading time15 min
Views50K


Автор: Денис Цыплаков, Solution Architect, DataArt

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

Если вы не делаете что-то принципиально новое, например, первый в мире интернет-поисковик или искусственный интеллект для управления запуском ядерных ракет, создать дизайн хорошей системы довольно просто. Достаточно учесть все требования, посмотреть на дизайн похожих систем и сделать примерно так же, не совершив при этом грубых ошибок. Звучит как чрезмерное упрощение вопроса, но давайте вспомним, что на дворе 2019 год, и «типовые рецепты» дизайна систем есть практически для всего. Бизнес может подкидывать сложные технические задачи — скажем, обработать миллион разнородных PDF-файлов и вынуть из них таблицы с данными о расходах — но вот архитектура систем редко отличается большой оригинальностью. Главное тут — не ошибиться с определением того, какую именно систему мы строим, и не промахнуться с выбором технологий.

В последнем пункте регулярно возникают типичные ошибки, о некоторых из них я расскажу в статье.
Читать дальше →
Total votes 65: ↑61 and ↓4+57
Comments104

Оффлайн-режим на iOS и особенности его реализации на Realm

Reading time6 min
Views7.5K


Автор: Екатерина Семашко, Strong Junior iOS Developer, DataArt

Немного о проекте: мобильное приложение для платформы iOS, написанное на языке Swift. Цель приложения — возможность шаринга дисконтных карт между сотрудниками компании и их друзьями.

Одной из целей проекта было изучить и попробовать на практике популярные технологии и библиотеки. Для хранения локальных данных выбрали Realm, для работы с сервером — Alamofire, для аутентификации использовался Google Sign-In, для загрузки изображений — PINRemoteImage.

Основные функции приложения:

  • добавление карты, ее редактирование и удаление;
  • просмотр чужих карт;
  • поиск карт по названию магазина/имени пользователя;
  • добавление карт в список избранных для быстрого доступа к ним.

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

Позже мы решили расширить оффлайн, добавив режим записи. Информация об изменениях, сделанных пользователем, сохранялась и при появлении интернет-соединения синхронизировалась. О реализации такого read-write оффлайн-режима и пойдет речь.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments2

Как работает автозаполнение в браузерах и что важно учитывать веб-разработчику

Reading time14 min
Views30K

Если человек пользуется автозаполнением в браузере, он ждёт, что сможет быстро заполнять формы на любом сайте, где посчитает нужным. Наладить такой механизм на стороне сайта или веб-приложения несложно, но важно помнить пару вещей — я покажу кейсы, где подходы «в лоб» приводили к непредсказуемым результатам. Чтобы автозаполнение работало эффективно и не нарушало логику, стоит хотя бы примерно представлять, как оно устроено под капотом разных браузеров, которые могут быть у пользователей. Под катом распишу, каким образом движок подставляет данные в формы.
Читать дальше →
Total votes 29: ↑28 and ↓1+35
Comments3

Оптимизируем изображения в HTML

Level of difficultyEasy
Reading time8 min
Views15K

Вместе со Стивом Сьюэллом, CEO Builder.io, разбираемся, почему с точки зрения оптимизации производительности изображения лучше загружать через HTML, а не через CSS. 

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments10

Понимаем обычное дерево отрезков

Level of difficultyMedium
Reading time13 min
Views13K

Всем привет! Изучив несколько статей по этой теме, у меня остались вопросы, и некоторые моменты по-прежнему были не понятны, поэтому я решил написать свою, которая, как мне кажется, была бы понятна тем, кто не силен в спортивном программировании. В ней я объясняю, как устроено дерево отрезков. Примеры с кодом будут приведены на языке C++, однако на объяснение это не влияет.

Читать далее
Total votes 20: ↑19 and ↓1+24
Comments4

Важные аспекты работы браузера для разработчиков. Часть 1

Reading time9 min
Views86K

Автор: Антон Реймер

Статья основана на вебинаре, который я проводил некоторое время назад. Рассчитана она, в первую очередь на тех, кто не знает, как работают браузеры, или тех, у кого есть пробелы в знаниях. Вероятно, здесь будет много очевидного для тех кто не первый день в веб-разработке. Статью я решил разделить на две части. В первой рассмотрим общие принципы работы браузера. Во второй части я акцентирую внимание на некоторых важных моментах: reflow и repaint, event loop.

Что такое браузер?


Браузер — программа, работающая в операционной системе. Большинство браузеров написано на языке C++. Основное предназначение браузера — воспроизводить контент с веб-ресурсов. В качестве веб-ресурса в большинстве случаев выступает html-страница. Это также может быть pdf-файл, png, jpeg, xml-файлы и другие типы. Среди огромного количества браузеров можно выделить самые популярные: Chrome, Safari, Firefox, Opera и Internet Explorer. Мы рассмотрим браузеры с открытым исходным кодом: Chrome, Firefox, Safari.

Из чего состоит и как работает браузер?



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

Пользовательский интерфейс — то, что видит перед собой пользователь, т. е. адресная строка, элементы навигации, собственное меню и т. д. Несмотря на то что пользовательские интерфейсы очень похожи друг на друга, никакого стандарта, который их описывал бы, не существует. Так исторически сложилось, что браузеры постепенно перенимали интерфейс друг у друга и становились все более похожими.
Читать дальше →
Total votes 32: ↑27 and ↓5+22
Comments30

Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN

Reading time29 min
Views197K

Забавная ситуация: сайтов и сервисов, доступных только через VPN, все больше, но при этом многие российские компании закрывают доступ из-за границы. В результате приходится целыми днями теребить ползунки «вкл-выкл», что утомительно. Я расскажу, как с помощью магии маршрутов и WireGuard, решить эту проблему и сделать «умный» VPN, который не надо отключать.


Если ты пользуешься VPN, то и сам наверняка сталкиваешься с блокировками зарубежного трафика. К примеру, могут не открываться pochta.ru, leroymerlin.ru, rt.ru, avito.ru.


Получается мем.



Каждый с этим борется как может. Например, на устройствах Apple родными средствами можно настроить автоматизацию, которая будет запускать VPN, когда открываешь определенные приложения (например, Twitter), а когда выходишь из них — выключать обратно. Но это костыль, а хочется все сделать красиво, да еще и прокачать навык работы с сетью.


Поэтому мы сейчас попробуем «включать VPN чуть-чуть».

Читать дальше →
Total votes 43: ↑42 and ↓1+51
Comments73

Знакомимся с методом обратного распространения ошибки

Reading time6 min
Views69K
Всем привет! Новогодние праздники подошли к концу, а это значит, что мы вновь готовы делиться с вами полезным материалом. Перевод данной статьи подготовлен в преддверии запуска нового потока по курсу «Алгоритмы для разработчиков».

Поехали!






Метод обратного распространения ошибки – вероятно самая фундаментальная составляющая нейронной сети. Впервые он был описан в 1960-е и почти 30 лет спустя его популяризировали Румельхарт, Хинтон и Уильямс в статье под названием «Learning representations by back-propagating errors».
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments0
1
23 ...

Information

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