Search
Write a publication
Pull to refresh
6
0
Сергей Петрук @SPetruk

Dev2Dev Lead at Qiwi

Send message

Типичные ошибки начинающего технического директора в ИТ — мнения экспертов

Reading time8 min
Views38K

Изображение с сайта tech.co

От некоторых сотрудников ИТ-компаний до сих пор можно услышать такую реплику: «Я не совсем понимаю точное значение должности Технический директор». Как отметил в предельно простой форме один из пользователей «Тостера», «CTO — технический человек, который что-то понимает в бизнесе». Если рассматривать это понятие чуть шире, то можно сказать, что он балансирует на стыке между разработкой ИТ-продуктов с командой технических специалистов и принятием бизнес-решений совместно с менеджерами.

Соответственно, для специалистов, желающих занять позицию технического директора в ИТ, существует, как минимум два пути:

  1. стандартный — «Developer -> Senior -> Team lead -> CTO»;
  2. гуманитарный – «PM -> Senior PM -> CTO».

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

Но достигнув желаемого, в целом, опытный специалист переходит как бы в разряд начинающих. Он становится этаким Junior-CTO и сталкивается с новыми вызовами.

О том, какие ошибки и подводные камни ожидают новоиспеченных технических директоров в ИТ-сфере, мы попросили рассказать экспертов отрасли.
Читать дальше →

Вся правда о целочисленных типах в C

Reading time3 min
Views142K
Для начала несколько вопросов:

  1. Тип char по умолчанию знаковый или нет? А int?
  2. Законно ли неявное приведение (signed char *) к (char *)? А то же для int?
  3. Сколько бит в unsigned char?
  4. Какое максимальное число гарантированно можно поместить в int? А минимальное?
  5. Тип long определённо больше, чем char, не так ли?

Разумеется, экспериментально искать ответы на эти вопросы с помощью вашего любимого компилятора в вашей любимой системе на вашем любимом компьютере1) — не лучшая идея. Мы говорим о стандарте языка (С99 и новее).

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

Предположу, что вы ответили
  1. Знаковые оба.
  2. Законны оба.
  3. 8.
  4. 2147483647. -2147483648.
  5. Конечно, Кэп.


А правильные ответы такие
  1. char — не регламентируется, int — знаковый.
  2. Для int — законно, а для char — нет.
  3. Не менее 8.
  4. 32767. -32767
  5. Вообще говоря, нет.



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

Функторы, аппликативные функторы и монады в картинках

Reading time5 min
Views195K
Вот некое простое значение:


И мы знаем, как к нему можно применить функцию:


Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


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


data Maybe a = Nothing | Just a

Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
Читать дальше →

Пишем текстовую игру на Python/Ren'Py ч.2: мини-игры и подводные камни

Reading time7 min
Views39K
Краткое содержание предыдущих двадцати пяти тысяч серий: мы пишем текстовую игру про плавание по морю и ввязывание в истории. Пишем мы её на движке Ren'Py, который изначально предназначен для визуальных новелл, но после минимальной настройки способен делать всё, что нам надо. В прошлой статье я рассказал, как сделать простенькую интерактивную читалку, а в этой мы добавим ещё пару экранов с более сложными функциями и наконец поработаем на питоне.
image

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

Нейронные сети на Javascript

Reading time7 min
Views169K
image
Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

Мы создадим нейронную сеть, с помощью которой будем распознавать ручное написание цифры от 0 до 9. Рабочий пример займет несколько строк. Код будет понятен даже тем программистам, которые не имели дело с нейронными сетями ранее. Как это все работает, можно будет посмотреть прямо в браузере.
Читать дальше →

Уведомления в iOS 10

Reading time7 min
Views44K

Уведомления в iOS 10


Говорят, что на этом WWDC не было ничего интересного, кроме интерактивных уведомлений. Действительно, новые уведомления одна из самых интересных новых фич. Не только для разработчиков, но и для простых пользователей. В iOS 10 попытались унифицировать работу с локальными и пуш-уведомлениями и добавили для этого новый фреймворк UserNotifications.framework. Старое API теперь запрещено (deprecated), но его можно использовать до тех пор, пока вы поддерживаете iOS 9.


Новые уведомления умеют:


  • показывать вложения (картинки и видео)
  • отображать кастомный UI
  • показывать стандартный UI в активном приложении (why so long!11)
  • удалять себя из центра уведомлений (!!1)

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

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

Интеграция Siri или «Вот что мне удалось найти в вашем приложении»

Reading time5 min
Views15K


На WWDC 2016 Apple представила миру SiriKit — API для работы с голосовым помощником.

Если вы не смотрели WWDC сессию про SiriKit и ждёте, что сможете использовать Siri в любом приложении, то вам стоит знать, что на данный момент поддерживается всего несколько типов сервисов:

1) Аудио и видео вызовы,
2) Сообщения,
2) Платежи,
3) Поиск фото,
4) Тренировки,
5) Поездки (бронирование).

Также, как гласит документация, существуют возможность взаимодействия с автомобилем с помощью CarPlay (INSetClimateSettingsInCarIntent, INSetSeatTemperatureInCarIntent, etc.).

Таким образом, Siri можно дать команду "<позвони тому-то, отправь сообщение, поищи фото, etc.> через <название вашего приложения>".
Все устроено таким образом, что взаимодействовать напрямую с нейросетью не придется — SDK предоставляет простые протоколы и набор легковесных классов для передачи информации в методах. Разработчику остается только реализовать эти протоколы.

Для ленивых в конце статьи ссылка на демо-приложение (отправляем с помощью Siri сообщение своим друзьям из ВК).
Добавляем Siri в свой проект

Как за день поднять CI для iOS-разработчиков. Часть 2

Reading time8 min
Views9.3K
Всем привет. Это продолжение статьи о том, как iOS-отдел компании Лайв Тайпинг внедрил методологию CI и развернул сервер для автоматизации сборок на Jenkins. Как мы и обещали, вторая часть посвящена тому, как получить основные метрики кода, заархивировать проект в .ipa и настроить взаимодействие со Slack.
Читать дальше →

Как за день поднять CI для iOS-разработчиков

Reading time9 min
Views27K
Cборка проекта требует от разработчика кучи утомительных операций. Когда менеджеру нужно отчитаться перед заказчиком о ходе работы, разработчик тратит время на выкачивание репозитория, подтягивание библиотек, установку сертификатов, сборку, проверку, выкладывание сборки на сервер и прочие промежуточные этапы. Но на Земле становится всё меньше рутинных действий, которые не подверглись бы автоматизации. Прогрессивная часть девелоперской среды практикует методику непрерывной интеграции (CI), и iOS-отдел компании Лайв Тайпинг решил к ней примкнуть, развернув сервер для сборок на платформе Jenkins. С тех пор началась совсем другая жизнь.
Читать дальше →

Дайджест игровой разработки

Reading time4 min
Views9.1K
Примеры превосходной игровой физики, урок по созданию FlowGraph в C++, психология правильного дизайна игры для VR, туториалы, исследования и многое другое вы найдете в нашем ежемесячном дайджесте.


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

12 недельный скетч марафон, сделать или умереть

Reading time4 min
Views18K
image

Наверняка вы видели в моей ленте на Dribbble или Behance за последние 4 месяца много красочных и бессмысленных интерфейсов :) Если нет, то это был 12 недельный sketch марафон в котором я на протяжении 12 недель (включая выходные) делал по 1 shot каждый день. Ниже я расскажу о том что из этого вышло.
Читать дальше →

Регулярные выражения для простых смертных

Reading time6 min
Views46K
Здравствуйте, уважаемые дамы и господа.

Мы активно ищем свежую литературу на тему регулярных выражений для начинающих. Причем в данном случае нас бы скорее привлекла не переводная, а исходно русскоязычная книга, которая каким-то образом затрагивала бы и регулярные выражения при обработке естественного языка. Хотим предложить вашему вниманию следующий текст — во-первых, напомнить об этой теме, во-вторых, продемонстрировать примерный уровень сложности, который нас интересует
Читать дальше →

RxSwift шпаргалка по операторам (+ PDF)

Reading time41 min
Views140K


Заинтересовавшись темой функционального программирования я встал на распутье, — какой фреймворк выбрать для ознакомления. ReactiveCocoa — ветеран в iOS кругах, по нему вдоволь информации. Но он вырос с Objective-C, и хотя это не является проблемой, но все же в данный момент я в основном пишу именно на Swift, — хотелось бы взять решение изначально спроектированное с учетом всех плюшек языка. RxSwift же порт Reactive Extensions, имеющего долгую историю, но сам порт свежий и написанный именно под Swift. На нем я и решил остановиться.
Но специфика документации по RxSwift в том, что описание всех команд ведет на reactivex.io, а там в основном дается общая информация, руки у разработчиков не дошли еще сделать документацию именно для RxSwift, что не всегда удобно. Некоторые команды имеют тонкости в реализации, есть те, о которых в общей документации нет ничего кроме упоминания.
Прочитав все главы вики с RxSwift гитхаба, я сразу решил поразбираться с официальными примерами, тут то и стало ясно, что с RX такое не пройдет, нужно хорошо понимать основы, иначе будешь как мартышка с копипастом гранатой. Я начал разбирать самые сложные для понимания команды, потом те, что вроде понятны, но задав себе вопросы по ним я понял, что лишь догадываюсь на то как верно ответить, но не уверен.
В общем ничтоже сумняшеся я решил проработать все операторы RxSwift. Лучший способ что то понять в программировании — запустить код и посмотреть как он отработает. Затем учитывая специфику реактивного программирования — очень полезны схемы, ну и краткое описание на русском. Закончив сегодня работу, я подумал, что грех не поделиться результатами с тем, кто лишь присматривается к теме реактивного программирования.
Много картинок и текста под катом, очень много!
Читать дальше →

Perfect — REST сервер на Swift

Reading time12 min
Views37K
image
Большинству iOS разработчиков рано или поздно становится тесно в мире iOS SDK. И причина, отнюдь, не в том, что у IOS недостаточно возможностей для серьезной разработки, а в том, что большинство современных серьезных приложений имеет клиент -серверную архитектуру, но разработчикам iOS оказывается доступен только Клиентский мир. Серверная разработка отдана на откуп серверным оленям программистам, которые, весьма ревностно относятся к требованиям мобильных разработчиков что-то изменить в API. Не добавляет оптимизма тот факт, что для реализации простейшего API приходится изучать другой язык программирования, со своими парадигмами и нюансами. Даже для того чтоб обкатать какую-нибудь пилотную идею приходится либо привлекать людей со стороны, либо погружаться в мир чужеродных грез (PHP, Pyton, Ruby, C#). Все ли так плохо в стане Objectove-C / Swift? Оказалось, что совсем нет. Немного погуглив на предмет серверной разработки я наткнулся на довольно любопытное начинание, претендующее на то, чтоб стать реальным кросс-платформенным решением — т. е. работающим одинаково хорошо как в среде OSX, так и *nix систем (про Windows не говорю, там С# вряд ли кто подвинет — слишком много вкусностей).

Perfect — как заявляют создатели проекта — Идеальный веб-сервер и инструментарий для разработчиков, использующих Swift язык программирования для создания приложений и других служб REST. Понятно, что «Идеальный» — это не более чем игра слов, но вместе с тем, после знакомства с предлагаемым решеним начинаешь склоняться к тому, что толика правды в этом утверждении есть.

В «прессе» пробегали статьи о том, что на подходе новый язык программирования, который может стать промышленным стандартом с легкой подачи Apple. Язык, который базируется на продвигаемом в массы Swift. Как правило, статьи об этом вызывали больше вопросов, и еще больше раздражения у тех, кому надоело все переучивать (Swift сам по себе довольно быстро меняется). Однако, углубившись в изучение вопроса, становится понятным, что все намного лучше чем, кажется.

Perfect — это не новый язык, серверной разработки. Perfect это серверное окружение, которое позволяет создавать REST API сервисы используя исключительно Swift последней реализации (на момент написания статьи Swift 2.2) Там нет ничего, выходящего за рамки того, что приходится делать ежедневно клиентским разработчикам.
Читать дальше →

Как это сделано: мобильный кроссплатформенный движок

Reading time6 min
Views23K
Для вас подготовил серию статей о мобильном геймдеве, основанную на полученном опыте и пройдённых граблях. В первой статье речь пойдёт о создании собственного кроссплатформенного движка для мобильных игр. По правде говоря не только мобильных, и не только игр.

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

Архитектурные паттерны в iOS

Reading time14 min
Views207K

Введение в MVP, MVC, MVVM и VIPER. Что между ними общего и в чем разница.



Делаете все по MVC, а получается некрасиво? Сомневаетесь, переходить ли на MVVM? Слышали о VIPER, но не уверены, стоит ли оно того?

В этой статье я кратко рассмотрю некоторые популярные архитектурные паттерны в среде iOS и сравню их в теории и на практике. Больше информации вы найдете при переходе по ссылкам, указанным в тексте.
Читать дальше →

Как заработать $500K на машинном обучении и высокочастотном трейдинге — Часть 1

Reading time5 min
Views180K

Изображение: Kevin Ku — Unsplash

На Хабре часто появляются материалы о том, как IT-специалисту сохранить и приумножить свои деньги. Неудивительно, что тема вызывает интерес и все больше дискуссий. На днях мне попалась статья парня, который, применив свои технологические навыки, смог за год заработать полмиллиона долларов. Мне кажется, его опыт может быть интересен многим (даже если отбросить тот факт, что он не первый день на бирже), поэтому я предлагаю обсудить его мысли. Но сделать это в два подхода — оригинальный пост достаточно объемный для одного хабратопика.
Читать дальше →

Дизайн уровней для игр три в ряд

Reading time5 min
Views42K


Три в ряд — один из самых популярных игровых жанров. Игр существует десятки тысяч, при этом в интернете довольно мало статей по дизайну уровней, а они — основная составляющая игры. Правим этот недостаток, размещая на Хабре свои мысли и опыт в виде тезисов, заметок по сути и по делу, с рассуждениями и картинками.
Читать дальше →

Как подружить iOS-приложение с типографикой

Reading time4 min
Views13K


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

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

Information

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