Pull to refresh
10
0

Software Engineer

Send message

Как сниффить HTTPS-трафик iOS-устройства

Reading time5 min
Views80K


Привет, меня зовут Андрей Батутин, я Senior iOS Developer в DataArt, и сегодня мы будем сниффить HTTPS-трафик твоего «Айфона».
Читать дальше →
Total votes 24: ↑20 and ↓4+16
Comments17

Kivy — фреймворк для кроссплатформенной разработки №1

Reading time7 min
Views76K

В мире кроссплатформенной разработки под мобильные платформы сейчас, наверное, как это не прискорбно, доминируют два фреймворка — Xamarin и React Native. Xamarin — потому что является «приемным сыном» компании Microsoft и, гордо размахивая костылями, активно пиарится последней, а React Native — отпрыск не менее известной Facebook, который с не меньшей долей гордости отращивает бороды уставшим на нем разрабатывать программистам. Для себя я уже давно нашел альтернативу, а тех, кто еще не знаком с фреймворком для кроссплатформенной разработки Kivy, добро пожаловать под кат…
Читать дальше →
Total votes 37: ↑26 and ↓11+15
Comments119

Всё, что нужно знать о сборщике мусора в Python

Reading time7 min
Views120K
Как правило, вам не нужно беспокоиться о сборщике мусора и работе с памятью когда вы пишете код на Python. Как только объекты больше не нужны, Python автоматически освобождает память из под них. Несмотря на это, понимание как работает GC поможет писать более качественный код.

Менеджер памяти


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

Как только один из маленьких объект удаляется — память из под него не переходит операционной системе, Python оставляет её для новых объектов с таким же размером. Если в одном из выделенных блоков памяти не осталось объектов, то Python может высвободить его операционной системе. Как правило, высвобождение блоков случается когда скрипт создает множество временных объектов.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments16

У вас есть право на анонимность. Часть 1. Введение и мировая практика

Reading time6 min
Views48K
image
Право на анонимность уже стало мировым стандартом для обеспечения фундаментальных прав человека и гражданина в цифровую эпоху, прежде всего – права на свободу выражения мнения и права на тайну частной жизни / прайваси.

Так что же такое «право на анонимность», если мы говорим про интернет-пространство:

✓ Право на анонимный сёрфинг (поиск информации в сети) и анонимную отправку личных сообщений (e-mail, мессенджеры)

Анонимное соединение — это главное субъективное право, необходимое любому пользователю Интернета. Анонимным соединением считается соединение с сервером назначения, когда этот сервер не имеет возможности ни установить происхождение (IP-адрес/местонахождение) этого соединения, ни присвоить ему какой-либо идентификатор.

Пользователи должны иметь право на анонимный поиск информации в интернете, в том числе скрывать свои IP-адреса и отправлять сообщения анонимно. Осенью 2016 года Европейский суд справедливости (European Court of Justice) рассмотрел запрос немецкого Федерального Суда, связанного с иском представителя немецкой Пиратской партии к федеральному правительству. Жалоба была подана немецким гражданином в отношении хранения на правительственных сайтах динамических IP адресов после того, как пользователь покидает сайт. Европейский суд в своем решении признал динамический адреса (как и ранее статические адреса) персональными данными и указал, что операторы не имеют права сохранять динамические IP-адреса, кроме как для защиты от кибератак.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments185

Все образовательные проекты Mail.Ru Group

Reading time5 min
Views49K

Мы много рассказываем о своих образовательных проектах, но вдруг поняли, что у нас нет ни одной статьи, где была бы собрана информация обо всех наших образовательных возможностях. Мы решили исправить это досадное упущение. Теперь желающим получить знания не придётся искать по всему Хабру и интернету.
Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments27

Тестируем облачные платформы из Топ-3

Reading time4 min
Views26K
Привет, Хабр! Хочу поделиться своими результатами сравнения облачных платформ AWS, Azure и Google. Под катом – результаты по производительности, которые получает обычный пользователь, и их сравнение по критерию «цена/качество».

image
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments18

Сравнение сервисов автоматизации контекстной рекламы

Reading time2 min
Views21K

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


Проведены тесты:



Получен демо-доступ:


  • Origami

Нет доступа:


  • Marilyn
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments10

Архитектура модульных React + Redux приложений 2. Ядро

Reading time9 min
Views13K
В первой части я уделил внимание только общей концепции: редюсеры, компоненты и экшны чаще меняются одновременно, а не по отдельности, поэтому и группировать и их целесообразнее по модулям, а не по отдельным папкам actions, components, reducers. Также к модулям были предъявлены требования:

  1. быть независимыми друг от друга
  2. взаимодействовать с приложением через API ядра

В этой части я расскажу о структуре ядра, подходящей для разработки data-driven систем.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments3

Публикация постов Вконтакте через Trello

Reading time3 min
Views14K

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


image

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

Работа с PostgreSQL: настройка и масштабирование. 5-е издание

Reading time1 min
Views16K


Добрый день, хаброжители. Прошло много времени с выпуска 4 версии книги по PostgreSQL — успела выйти версия 9.5 и 9.6 этой замечательной базы данных. Материалов по практическому использованию этой БД также накопилось немало, поэтому я решил выпустить обновление по книге. Итак, встречайте:«Работа с PostgreSQL: настройка и масштабирование», 5-е издание.

Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments11

Эффективное использование Github

Reading time13 min
Views124K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Total votes 149: ↑148 and ↓1+147
Comments38

Создание игры на движке Sprite Kit (Часть 1)

Reading time71 min
Views158K
С появлением iOS 7 мир узрел новый игровой движок от Apple — SpriteKit. В свете того, что он появился совсем недавно об этом движке еще мало что написано, конечно в сети можно найти несколько tutorial -ов по нему но в основном все они на Английском языке. И по этому я задалась целью написать подробный Туториал об этом замечательном движке.

Итак, что же такое SpriteKit?


SpriteKit — это 2D движок, оптимизированный для создание игр для устройств от компании Apple. В его основе лежит популярный физический движок Box 2D. Поскольку разработчики создавали его заточенным специально для устройств Apple он существенно выигрывает в скорости у остальных движков.
В SpriteKit всю роль по оптимизации и рисованию графики берет на себя OpenGl, это все происходит на низком уровне и по этому вы можете сосредоточить свои усилия на решении проблем более высокого уровня и создание больших 2D игр. Для создание игр на SpriteKit используется язык Objective-c, но с выходом iOS 8 и нового языка Swift, игры также можно создавать и на нем.
От себя хотела бы добавить, что в некотором роде на Swift писать даже легче, так что если вы только начинаете и думаете какой язык выбрать то советую выбрать Swift.

Ниже, я предоставила видео с демонстрацией игрового процесса SpriteKit, если вам стало интересно то милости прошу.



Подробности
Total votes 39: ↑36 and ↓3+33
Comments15

Использование паттерна SchedulableObject для выделения бизнес-логики в отдельный поток

Reading time12 min
Views14K


Интерфейс мобильного приложения — это лицо продукта. Чем более отзывчив интерфейс, тем больше радости приносит продукт. Однако удовлетворённость от использования приложения зависит прежде всего от объёма его функций. По мере увеличения количества и сложности задач они требуют всё больше и больше времени. Если архитектура приложения предполагает, что все они выполняются в главном потоке, то задачи бизнес-логики начинают конкурировать за время с задачами отрисовки интерфейса. При таком подходе рано или поздно обязательно находится сценарий, исполнение которого приводит к залипанию приложения. Для борьбы с этой напастью существует три принципиально разных подхода:

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

Паттерн SchedulableObject позволяет аккуратно реализовать третий сценарий. Под катом рассматриваются его части с примерами реализации на Swift, а также преимущества и недостатки по сравнению с первыми двумя подходами.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments2

JetBrains и Django анонсировали 30% распродажу PyCharm, c передачей всех денег в фонд Django

Reading time3 min
Views13K
После нескольких лет поддержки фреймворка Django в PyCharm, JetBrains и Django Software Foundation договорились о партнерстве и проведении двухнедельной распродажи лицензий PyCharm c последующей передачей всех заработанных на распродаже денег в фонд Django на развитие различных проектов и инициатив. В дополнение к распродаже, частью партнерства является внедрение нового стандарта аннотаций типов в Python (PEP 484 Type Hints) в будущие версии Django.



Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments14

Dive into Centrifugo

Reading time26 min
Views21K
В предыдущей статье о Центрифуге я рассказывал, что сервер был переписан с Python на Go (код Centrifugo на github, описание на opensource.mail.ru). C тех пор прошло несколько месяцев, за это время Центрифуга успела получить версию 1.0.0 и даже уйти немного дальше (последняя версия на момент этого поста — 1.4.2).

В этой статье нас ждет быстрый старт работы с Центрифугой, примеры реального использования, размышления о месте и предназначении Центрифуги в реалиях 2016 года, описание некоторых архитектурных особенностей/возможностей реал-тайм-сервера и примеры кода на Go, отвечающие за реализацию главных фич. Welcome aboard!
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments19

Разработка web API

Reading time9 min
Views289K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше
Total votes 235: ↑224 and ↓11+213
Comments128

Information

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