Как стать автором
Обновить
3
0.3

Разработчик(в основном на С#)

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

Как выжить SQL-базе в 21 веке: облака, Kubernetes и PostgreSQL multimaster

Время на прочтение8 мин
Количество просмотров7.4K
Привет, хабровчане. Сегодня стартуют занятия в первой группе курса «PostgreSQL». В связи с этим, хотим рассказать вам о том, как проходил открытый вебинар по данному курсу.




В очередном открытом уроке поговорили о том, с какими вызовами столкнулись SQL-базы в эру облаков и Kubernetes. А заодно рассмотрели, как базы данных SQL приспосабливаются и мутируют под воздействием этих вызовов.

Вебинар провёл Валерий Безруков, Google Cloud Practice Delivery Manager в EPAM Systems.
Читать дальше →

Всё про налоги для IT-фрилансеров. Налоговая нагрузка ИП на разных режимах. Часть 3

Время на прочтение4 мин
Количество просмотров21K


Это третья, заключительная часть из цикла. В предыдущей статье мы подробно рассказали об УСН, патенте и налоге для самозанятых. В этой части рассчитаем налоговую нагрузку для ИП с доходом 100, 200 или 300 тыс. руб. в месяц на разных режимах.


Также вы можете зарегистрироваться в онлайн-бухгалтерии 1С: БизнесСтарт и самостоятельно поиграться с цифрами в калькуляторе, чтобы посмотреть какой режим выгоднее для вас.

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

Всё про налоги для IT-фрилансеров. УСН, патент или налог для самозанятых. Часть 2

Время на прочтение9 мин
Количество просмотров29K


Продолжаем рассказывать про налоги для IT-фрилансеров. В первой части мы подробно рассмотрели, когда нужно регистрировать ИП и кто может стать самозанятым. А в этой — сравним налог для самозанятых с УСН и патентом.

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

Всё про налоги для IT-фрилансеров. ИП и самозанятые. Часть 1

Время на прочтение6 мин
Количество просмотров62K


Раньше у IT-фрилансеров было только два варианта работать легально: зарегистрировать ИП на УСН или на патенте. С этого года появилась ещё одна альтернатива — стать самозанятым. Пока новый режим действует только в 4 регионах, но в 2020 году его планируют ввести на всей территории РФ.


Когда регистрировать ИП? Кто такие самозанятые? Какой режим выгоднее для фрилансера? Что выбрать c доходом 100, 200 или 300 тыс. руб. в месяц? Мы подробно ответим на эти и другие вопросы.


Статья состоит из трёх частей. В первой части мы расскажем про ИП и самозанятых. Во второй — сравним УСН, патент и налог для самозанятых. В третьей — рассчитаем налоговую нагрузку для ИП на разных режимах.


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

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

Как научить UITextView красиво выделяться

Время на прочтение6 мин
Количество просмотров6.1K

Постановка задачи


Дано: многострочный текст.
Найти: красиво оформленный фон.

«Да это же на часок», — подумал я. — Нужно всего лишь поставить backgroundColor в attributedText». Но этого оказалось недостаточно. Дело в том, что стандартное выделение — это закрашенный прямоугольник. Некрасиво. Решение — нужен кастом! Тернистый путь его создания натолкнул меня на мысль описать процесс, дабы будущим поколениям не пришлось столько страдать. Заинтересовавшихся прошу под кат.
Читать дальше →

Внедряем Sign in with Apple — систему авторизации от Apple

Время на прочтение6 мин
Количество просмотров54K
Привет, Хабр!

Этим летом на конференции WWDC 2019 Apple представила собственную систему авторизации Sign in with Apple  и сделала ее обязательной для всех приложений в App Store, которые используют вход через соцсети. Исключение составляют образовательные, корпоративные, правительственные и бизнес-приложения, использующие собственную авторизацию. К Sign in with Apple Apple сделала качественную документацию, и в этой статье мы на примере ЦИАН расскажем, как внедрить ее в свой сервис.


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

Xamarin.Forms — простой пример Host-based Card Emulation

Время на прочтение10 мин
Количество просмотров7.8K
В этой статье будем реализовывать так называемую Host-based Card Emulation (HCE, Эмуляция банковской карты на телефоне). В сети много подробных описаний этой технологии, здесь я сделал акцент именно на получении работающих приложений эмулятора и ридера и решении ряда практических задач. Да, понадобятся 2 устройства с nfc.

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

При этом приложение на телефоне, эмулирующем карту, может быть запущено или нет и экран вашего телефона может быть заблокирован.
Читать дальше →

All you need is URL

Время на прочтение13 мин
Количество просмотров8.9K
image

Ежедневно пользователи ВКонтакте обмениваются 10 млрд сообщений. Они отправляют друг другу фотографии, комиксы, мемы и другие вложения. Расскажем, как в iOS-приложении мы придумали загружать картинки с помощью URLProtocol, и пошагово разберём, как реализовать свой.
Читать дальше →

Не всплывай! Прерываемые транзишены в iOS

Время на прочтение8 мин
Количество просмотров11K

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


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

Edge-to-edge в Android: делаем правильно

Время на прочтение8 мин
Количество просмотров19K
Прошедший Google I/O 2019 принёс массу нашумевших новинок, многие из которых будут влиять на индустрию мобильной разработки в ближайшие годы. Не менее интересно было следить за зарождающимися трендами. Сначала в историю ушли механические клавиши управления, экраны смартфонов становились всё больше, а боковые рамки всё незаметнее. На смену экранным системным кнопкам пришли жесты, оставляя всё больше пространства для потребления контента. Приложения отображаются на всей видимой поверхности дисплея, от нижней до верхней рамки, не стесняя себя условными границами статус-бара и навигационной панели. Мы на пороге эры Edge-to-Edge.


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

Практика использования библиотеки lottie в мобильном приложении банка

Время на прочтение5 мин
Количество просмотров6.5K
Привет, Хабр!

В свое время Product Owner попросил подумать нас о создании эффективного процесса по внедрению анимации в наше приложение на android/ios. В то время мы делали задачу по предзаполнению заявки личными данными на кредитный продукт, и на ответ от сервера требовалось некоторое время, во время которого мы хотели показывать красивую анимацию загрузки.

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

Использование UIViewPropertyAnimator для создание пользовательских анимаций

Время на прочтение11 мин
Количество просмотров18K
Создание анимаций это здорово. Они являются важной частью iOS Human Interface Guidelines. Анимации помогают привлечь внимание пользователя к важным вещам или попросту делают приложение не таким скучным.

Существует несколько способов реализовать анимацию в iOS. Вероятно, самым популярным способом является использование UIView.animate(withDuration: animations:). Вы можете анимировать слой изображения с помощью CABasicAnimation. Кроме того, UIKit позволяет настроить кастомную анимацию для отображения контроллера с помощью UIViewControllerTransitioningDelegate.

В этой статье я хочу обсудить еще один захватывающий способ анимирования вьюшек — UIViewPropertyAnimator. Данный класс предоставляет гораздо больше функций управления, чем его предшественник UIView.animate. С его помощью можно создавать временные, интерактивные и прерываемые анимации. Кроме того, имеется возможность быстрой смены аниматора.
Читать дальше →

Безопасные push-уведомления: от теории к практике

Время на прочтение3 мин
Количество просмотров10K
Привет, Хабр!

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

Публикую перевод нашей статьи с Medium с небольшими добавлениями от себя. В ней итоги “расследования” и рассказ о том, как решили проблему.

Исследуем матчасть


В классической модели пуш-уведомления делают мессенджеры уязвимыми для атак MITM (Man-in-the-middle, «Человек посередине»). Например, у Google, Microsoft и в старой версии iMessage приложение отправляет ключи шифрования на серверы Apple — на сервере происходит аутентификация пользователей и дешифровка заголовка сообщения (либо его содержания).



В итоге есть шанс прочесть переписку, получив доступ к серверу пуш-уведомлений. А это значит, что любые шифрования переписки бесполезны: пуш-уведомления все равно оставят возможность для чтения третьими лицами. Подробнее эту возможность обсуждали авторы статьи “Шифруйся грамотно” на Xaker.ru, посвященной способам шифрования сообщений.

Если вам кажется, что серверы Apple и Google 100% не допустят утечки ключей шифрования пользователей, подумайте о том, что к ним имеют доступ их сотрудники. А сотрудники — люди.
При всех уязвимостях пушей, многие «безопасные» мессенджеры, включая Signal и Telegram, используют их. Ведь иначе пользователям придется «вручную» мониторить новые сообщения, постоянно заходя в приложение. Что весьма неудобно, и мессенджеры-конкуренты получат преимущество.

Паранойя и здравый смысл

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

Музыка для ваших проектов: 12 тематических ресурсов с треками по лицензии Creative Commons

Время на прочтение7 мин
Количество просмотров125K
Подборка пригодится разработчикам, дизайнерам, видеорежиссерам и контент-мейкерам, которые ищут музыку для своих проектов — приложений, игр или видеороликов.

Представленные ниже площадки предлагают скачать полноценные композиции. О ресурсах, на которых можно найти отдельные звуки и семплы, мы расскажем в следующий раз.

Получение статистики по всем клиентам из API Яндекс Директ в разрезе дней с помощью Python

Время на прочтение5 мин
Количество просмотров6.2K
В работе часто использую короткую статистику в разрезе дней чтобы отслеживать отклонения трафика.

Более подробно о написании запросов написал в статье « Получение рекламных кампаний Яндекс Директ с помощью API в DataFrame (Python)».

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

Нам следует прописать запрос к серверу как функцию.

Лично я сделал 2 файла: функция с запросом и файл с данными, которые будут передаваться в функцию.

В первом файле пишем функцию


Я запрашиваю по всем проектам одни и те же поля, поэтому мне нужно передавать в запрос только даты, логин и токен.

Передача данных в функцию у меня выглядит следующим образом:

def rep(token,login,date_from,date_to):

Пишем запрос к серверу API Яндекс Директ


Данный запрос запрашивает данные по следующим параметрам:

  • Date
  • Impressions
  • Clicks
  • Ctr
  • Cost
  • AvgCpc
  • AvgImpressionPosition
  • AvgClickPosition
  • AvgTrafficVolume
  • BounceRate
  • AvgPageviews
Читать дальше →

UICollectionView всему голова: Изменение представления на лету

Время на прочтение8 мин
Количество просмотров35K
Привет, Хабр! Представляю вашему вниманию перевод статьи "UICollectionView Tutorial: Changing presentation on the fly".

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

В результате мы получим такой пример:

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

Простое объяснение алгоритмов поиска пути и A*

Время на прочтение13 мин
Количество просмотров71K
image

Часть 1. Общий алгоритм поиска


Введение


Поиск пути — это одна из тех тем, которые обычно представляют самые большие сложности для разработчиков игр. Особенно плохо люди понимают алгоритм A*, и многим кажется, что это какая-то непостижимая магия.

Цель данной статьи — объяснить поиск пути в целом и A* в частности очень понятным и доступным образом, положив таким образом конец распространённому заблуждению о том, что эта тема сложна. При правильном объяснении всё достаточно просто.

Учтите, что в статье мы будем рассматривать поиск пути для игр; в отличие от более академических статей, мы опустим такие алгоритмы поиска, как поиск в глубину (Depth-First) или поиск в ширину (Breadth-First). Вместо этого мы постараемся как можно быстрее дойти от нуля до A*.
Читать дальше →

Слон в посудной лавке: 3D принтеры с огромным полем печати

Время на прочтение5 мин
Количество просмотров12K
Со временем, все сталкиваются с необходимостью производства крупных деталей с помощью аддитивных технологий. А бытовые 3D принтеры, в своей основной массе, имеют относительно небольшой стол для печати (квадрат со стороной 180....220 мм). Маловато. А что делать, если хочется большего?

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


Оптимизируем производительность игры параметрами импорта звука Unity

Время на прочтение12 мин
Количество просмотров24K
image

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

Этот документ разделён на пять частей:

  1. Как звук влияет на производительность
  2. Разбираемся с параметрами импорта
  3. Рекомендуемые мной параметры для PC и консолей
  4. Рекомендуемые мной параметры для мобильных платформ
  5. Предостережения и замечания

Оптимизация параметров импорта звука Unity — один из простейших способов оптимизации. В случае небольшого проекта у вас может уйти меньше часа для достижения значительных улучшений во времени загрузки, занятой ОЗУ и других аспектах производительности. Надеюсь, это руководство окажется полезным для вас. Информация актуальна для Unity версии 2018.3
Читать дальше →

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

Время на прочтение8 мин
Количество просмотров148K
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

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

Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

Итак, сегодня я покажу, как отрисовывать подобные картинки:


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

Информация

В рейтинге
2 342-й
Зарегистрирован
Активность