Pull to refresh
0
0
Glebus @usgleb

User

Send message

Опыт использования MVVM в реальных проектах

Reading time 1 min
Views 26K
Мы продолжаем выкладывать видео выступлений с нашей первой конференции мобильных разработчиков #MBLTDev. Следующий доклад — от iOS-разработчика компании «Одноклассники» Юрия Буянова «Опыт использования MVVM в реальных проектах».


Презентация.

Доклад был посвящён практическим аспектам разработки iOS-приложений с использованием архитектуры MVVM. В частности рассматривались способы осуществления навигации и реализации списков в рамках такой архитектуры. Для слушателей, незнакомых c предметом, в начале доклада было сделано небольшое введение в MVVM и ReactiveCocoa. Также были показаны слайды с белочкой, совушкой и единорогом.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Comments 14

Паттерны проектирования

Reading time 2 min
Views 48K
Здравствуй хаброчеловек!

Так уж случилось, что с этого семестра в своем вузе я записался на спецкурс по паттернам проектирования. Курс проходит в виде семинаров, на которых ты (студент) должен рассказать чему научился за неделю (имеется ввиду, какие паттерны изучил и применил на практике).
Читать дальше →
Total votes 47: ↑37 and ↓10 +27
Comments 29

Меня попросили взломать программу на собеседовании

Reading time 11 min
Views 194K
TL;DR Меня попросили взломать программу на собеседовании. И я получил работу.

Всем привет,

Я собеседовался на позицию инженера программной безопасности, они спрашивали в основном разные низкоуровневые вещи. Некоторые ответы я знал, некоторые нет.
Потом они прислали email с защищённым и зашифрованным бинарником, который нужно было взломать.
Когда я добрался до дома, я скачал его и увидел, что он спрашивает пароль. Они хотели, чтобы я нашёл этот пароль.
Вот что я увидел при первом запуске:
Читать дальше →
Total votes 220: ↑187 and ↓33 +154
Comments 61

Облом прямой трансляции Apple

Reading time 2 min
Views 27K


Прямая трансляция презентации iPhone 6 и Apple Watch с самого начала не задалась. У многих пользователей, включая меня, были проблемы с её просмотром. Вначале я грешил на проблемы у облачного сервиса Akamai, но исследование страницы сайта Apple показало, что больше всего проблем возникло из-за того, как они настроили Amazon S3 и кое-каких других элементов сайта.

В отличие от предыдущей прямой трансляции, в этот раз они решили при помощи JSON добавить интерактивности в страничку, и показывать твиты, относящиеся к событию, внизу страницы. В результате этого страница обновлялась несколько раз в секунду. Из-за решения использовать JSON (прим. перев. – мне кажется, что автор путает JSON и Ajax) сайт перестал кешироваться. Обычно, Apple используют кеширование от Akamai для таких трансляций, однако в этот раз кэшировать страницу было нельзя, что привело к сильному проседанию скоростей загрузки страницы и отображения видеопотока. А так как в Apple вставили видео в страницу, тормоза страницы привели к тормозам видео. В Akamai не захотели комментировать эту проблему, но судя по коду страницы, у них всё равно не получилось бы её кэшировать. Из-за этого также у менял падал Safari, когда я пытался открыть страницу с презентацией на iPad.
Читать дальше →
Total votes 113: ↑65 and ↓48 +17
Comments 47

Почему сеть Фейстеля работает? Объяснение «на пальцах»

Reading time 4 min
Views 54K

В продолжении статьи про blowfish хотелось бы поговорить про его основу — сеть Фейстеля. Люди «в теме» слышали про неё не одну сотню раз — эта сеть используется в подавляющем большинстве блочных шифров. Но вот вам, только честно, что нибудь понятно из картинки справа? Ну, допустим в одну сторону(шифрование) понятно, а обратно?
Если нет, то прошу под коврик
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Comments 10

10 шагов планирования проекта за 25 минут

Reading time 1 min
Views 53K
В прошлом видео мы попросили нашего Ивана Селиховкина (selikhovkin) рассказать, что по шагам нужно делать, когда тебе достается чужой ношеный уже какое-то время идущий проект. В этот раз, как и обещали, о проектах, которые начинаются с нуля. 10 шагов, которые хорошо бы пройти в рамках планирования проекта:



Чем планирование софтверных проектов похоже на написание книги, как гуры экспертного управления планировали бы написание продолжения “Войны и мира”, и что такое метод оценки трех П — обо всем этом в новом видео.
Читать дальше →
Total votes 39: ↑33 and ↓6 +27
Comments 6

Почему истории успеха настолько бесполезны

Reading time 6 min
Views 144K
Этот пост понравится мизантропам: ведь он про то, что нет ничего бесполезнее, чем чужой успех. Вот если бы было место, где люди честно бы делились своими планами, а потом можно было бы следить поэтапно за их реализацией и фиксировать не только удачи, но и провалы в итоге… Ой, я же пишу в блоге такого проекта. Заходим на «СмартПрогресс», выбираем меню Цели, сортировку «проваленные», добавляем параметр «лучшие за все время» — и смотрим список самых громких фейлов на проекте.



Поскольку каждая история сопровождается подробным описанием, можно разобрать причины чужих неудач достаточно подробно — настолько, насколько пользователи позволяют себе быть откровенными. Ведь мы не хотим совершить ошибку, которую совершают все, кто изучают чужие истории успеха, забывая истории неудач – ошибку выжившего.
Читать дальше →
Total votes 163: ↑144 and ↓19 +125
Comments 189

Реализуем видео звонки в iOS приложении (на примере детского монитора и без WebRTC)

Reading time 10 min
Views 12K
imageВ данном посте пойдет речь о том, как написать приложение — baby monitor, когда одно устройство (планшет) вы устанавливаете возле кроватки ребенка, а второе (телефон), берете с собой, скажем на кухню, и время от времени поглядываете за ребенком через экран.

Как новоиспеченный родитель, хочу сказать, что такое приложение экономит кучу нервов — не нужно прислушиваться к каждому шороху или детскому крику с улицы, можно одним взглядом убедиться, что c чадом всё в порядке. Немного о технической части: в приложении используется наша библиотечка iOS видеочата, включая серверную часть (сигналинг и TURN сервер для NAT traversal), это всё в открытом доступе. Видеопоток будет работать как через Wi-Fi, так и через 2G/3G/4G. В аппсторе до недавнего времени не было приложения детского видеомонитора, который бы работал через мобильный интернет (видимо из-за трудностей с NAT traversal), но пока мы прокрастинировали готовили пост, одно из приложений лидеров выпустили платную версию с поддержкой этого функционала. В любом случае, статья будет полезна вам, если вы хотите запилить видеомониторинг или двухсторонний видеозвонок в своём iOS приложении. Специально указываем, что это версия без WebRTC, потому что о веб-совместимой версии (как и об Android) собираемся написать отдельно, там есть свои нюансы.

Читать дальше →
Total votes 23: ↑18 and ↓5 +13
Comments 11

4 причины, почему люди чего-то не делают или “Как раскачать low-performer’а”

Reading time 8 min
Views 102K
Так получилось, что тесть и теща у меня доктора педагогических наук. Что приводит к тому, что волей-неволей начинаешь постигать различные полезные методики :)

Однажды, после какого-то ученого совета за виски чаем на кухне тесть говорит: Саш, а вот как ты считаешь, почему люди чего-то не делают?

Честно сказать, вопрос поставил меня в тупик. Я начал фантазировать: ну, обстоятельства мешают, черты характера, недостаток опыта…

Не-не, сказал, тесть, все не так. Если люди чего-то не делают, для этого может быть 4 причины. После чего мой арсенал управленческих инструментов пополнился еще одним. И именно об этом инструменте мы сегодня поговорим, а заодно разберем несколько историй из реальной жизни:
  • Почему менеджеров проектов надо пересаживать в отдельное здание
  • Что делать, когда ваш заказчик не пользуется вашей системой отчетов
  • Как раскачать low-performer’а


Читать дальше →
Total votes 139: ↑111 and ↓28 +83
Comments 66

Алгоритмы и структуры данных поиска. Лекции и курсы от Яндекса

Reading time 4 min
Views 154K
Сегодня мы завершаем новогоднюю серию постов, посвященных лекциям Школы анализа данных. Последний по порядку, но никак не по важности курс — «Алгоритмы и структуры данных поиска».

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

Мы учли то, о чём нас просили в комментариях к прошлым курсам — теперь при желании можно не только смотреть/скачивать лекции по отдельности, но и загрузить всё разом в виде открытой папки на Яндекс.Диске. Кстати — в предыдущих постах тоже появились такие же апдейты (вот ссылки для удобства: «машинное обучение», «дискретный анализ и теория вероятностей», «параллельные и распределённые вычисления»).



Лекции читает Максим Александрович Бабенко, заместитель директора отделения computer science, ассистент кафедры математической логики и теории алгоритмов механико-математического факультета МГУ им. М. В. Ломоносова, кандидат физико-математических наук.
Содержание курса, тезисы лекций и ссылки на видео
Total votes 115: ↑108 and ↓7 +101
Comments 18

Создаем свое AppStore для распространения по программе iOS Enterprise Distribution

Reading time 5 min
Views 13K
В developer подписках Apple есть возможность разрабатывать приложения для внутрикорпоративного использования. При этом приложения не проходят проверку со стороны Apple и не обязаны «светится» в AppStore. Всё выше сказанное относится и к Ad Hoc приложениям, они принципиально ничем не отличаются, разве что временем жизни после создания.

Для распространения приложения хотелось решить задачи:
  1. пользователь самостоятельно мог установить приложение на свое устройство
  2. только авторизированный пользователь мог устанавливать приложение
  3. простая публикация приложения на сервере

Подробности
Total votes 19: ↑15 and ↓4 +11
Comments 8

Multipeer connectivity framework в iOS7

Reading time 3 min
Views 18K
Multipeer Connectivity Framework передает текстовые сообщения, потоки и файлы между iOS устройствами, находящимися рядом. Для этого используются WiFi сети, прямое WiFI соединение и Bluetooth. То есть интернет не требуется.

Фреймворк позволяет взаимодействовать устройствам из разных сетей, например у смартфона №2 включен только WiFi, а у №3 только Bluetooth. Если в радиусе доступности этих устройств будет третий смартфон с включенным Wifi и Bluetooth, смартфоны №2 и №3 смогут прозрачно обмениваться
данными.


Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Comments 6

Вопросы на собеседование middle/senior iOS Developer

Reading time 4 min
Views 128K
Все мы ходили/ходим на собеседования. Каждый раз при подготовке к очередному собеседованию просматриваем основные темы, вспоминаем вопросы, которые нам задавали в предыдущие разы, или вопросы, которые сами задавали. Ниже хочу представить основные вопросы, которые часто (основано на личном опыте) можно получить на собеседовании на должность middle/senior iOS Developer. Так сказать, шпаргалка. Заодно можно проверить свой уровень знания платформы.
Список вопросов
Total votes 45: ↑34 and ↓11 +23
Comments 60

Objective-C Runtime. Теория и практическое применение

Reading time 6 min
Views 61K
В данном посте я хочу обратиться к теме, о которой многие начинающие iPhone-разработчики часто имеют смутное представление: Objective-C Runtime. Многие знают, что он существует, но каковы его возможности и как его использовать на практике?
Попробуем разобраться в базовых функциях этой библиотеки. Материал основан на лекциях, которые мы в Coalla используем для обучения сотрудников.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 8

Магия в рантайме: меняем Objective-C метод на лету

Reading time 8 min
Views 6.4K
Читая Mac OS X 10.6 Reference Library, я испытал смешанные эмоции: столько новых возможностей, но если их использовать, программы не смогут запуститься на PowerPC маках, и к тому же не все захотят ставить Снежного Барса, если их вполне устраивает Лео. Самым простым решением кажется не использовать эти возможности, но это значит ограничить себя. Не знаю как вы, но я не люблю, если меня ограничивают. Хочется чтобы программа использовала все преимущества Снежного Барса, но в то же время могла работать на прежней версии Mac OS X. Возможно ли это?
Читать дальше →
Total votes 4: ↑3 and ↓1 +2
Comments 0

Взаимодействие клиентов SIP. Часть 1

Reading time 5 min
Views 231K


Месяц назад я начал свое знакомство с IP-телефонией, а именно с Lync и Asterisk. И заметил следующую картину: в сети очень много интересных статей по практической стороне вопроса (как и что делать) и очень мало внимания уделено теории (в конце статьи приведены ссылки). Если Вы хотите разобраться с SIP, то извольте либо читать RFC 3261, либо одну из «этих толстых книг». Это, естественно, полезно, но многим хочется в начале изучить некую выжимку, а уж потом бросаться в омут с головой. Эта статья как раз для таких людей.
Поехали
Total votes 23: ↑22 and ↓1 +21
Comments 11

Совершенный код и реальные проекты

Reading time 12 min
Views 82K
У меня есть проблема — я перфекционист. Я люблю совершенный код. Ведь это не только правильный подход к написанию программ, но и настоящее искусство. От чтения хорошего листинга я получаю не меньше удовольствия, чем от чтения хорошей книги. Проектировать архитектуру большого проекта ничуть не легче, чем проектировать архитектуру большого здания, а в случае хорошей работы — результат не менее прекрасен. Порой меня завораживает то, как изящно переплелись паттерны проектирования в создании совершенной программной системы. Меня восхищает внимание к деталям, когда абсолютно каждый метод настолько прост и понятен, что претендует на место классического примера совершенного кода.

Но, увы, всё это великолепие разбивается о суровую действительность и реальные проекты. Если мы говорим о продакшн-проекте, то пользователей не волнует, насколько красив ваш код и насколько хороша архитектура, их волнует, чтобы проект хорошо работал. Но я всё равно считаю, что в любом случае нужно стремиться писать правильно, просто при этом фанатизма быть не должно. После чтения различных холиваров на тему правильных подходов к написанию кода мне в глаза бросилась одна тенденция: каждый пытается применить означенные подходы не в целом к программированию, а только к своему опыту разработки, к своим проектам. Многие не осознают, что хорошие практики — это не абсолютные правила, которые должны строго соблюдаться в 100% сценариев, это лишь советы о том, как следовало бы поступать в большинстве ситуаций. На каждую хорошую практику всегда можно придумать несколько дюжин примеров, в которых она работать не будет. Но это вовсе не означает, что хорошая практика не такая уж и хорошая, просто её применили не к месту.

Читать дальше →
Total votes 114: ↑101 and ↓13 +88
Comments 99

FightCode: танковые войны на JavaScript

Reading time 5 min
Views 68K
FightCode — это онлайн-игра для программистов, построенная по образу и подобию классической Robocode. Для программирования танков используется JavaScript, все сражения происходят прямо в браузере, а редактор кода на сайте имеет встроенную «песочницу», которая позволяет в реальном времени видеть эффект от изменений кода. В отличие от многих других подобных игр, создатели неплохо поработали над дизайном — игровое поле и весь сайт в целом выглядят привлекательно и ярко.



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

Каждый участник может иметь сколько угодно роботов. Создание нового робота начинается с примитивного шаблона, который не делает почти никаких осмысленных действий. Добавив обработчики основных событий, таких как столкновения или попадания вражеского снаряда можно дать роботу набор «безусловных рефлексов», которые сделают его поведение более целесообразным и послужат отправной точкой для дальнейшего развития.
Вот как это делается:
Total votes 88: ↑87 and ↓1 +86
Comments 70

Vow: самые быстрые промисы

Reading time 1 min
Views 13K
Хочу предоставить вашему вниманию библиотеку Vow, которую написал мой коллега Дмитрий Филатов dfilatov.

Библиотека реализует Promises/A+, работает очень быстро и требует малого объема памяти. По тестам производительности сильно опережает Q, но при этом сохраняет асинхронную манеру работы.

Работа с Vow выглядит так же просто, как работа с Q. Из недостатков (по сравнению с Q) можно лишь выделить отсутствие progress.

Пример кода с использованием Vow:
function readFile(filename, encoding) {
    var promise = Vow.promise();
    fs.readFile(filename, encoding, function(err, data) {
        if (err) return promise.reject(err);
        promise.fulfill(data);
    });
    return promise;
}
Vow.all([readFile('test1.txt', 'utf8'), readFile('test2.txt', 'utf8')]).then(function(results) {
    console.log(results.join('\n'));
});

Читать дальше →
Total votes 43: ↑36 and ↓7 +29
Comments 19

Нужна идея на миллион баксов? Придумай или укради ее!

Reading time 4 min
Views 53K


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

Тебе сейчас 20-25 и тебя прет от кучи идей чего можно сделать. Это классно. Я серьезно.Когда вы фонтанируете идеями — вы фартовый. Однако, как показывает практика сами идеи довольно мало стоят.
Читать дальше →
Total votes 76: ↑51 and ↓25 +26
Comments 68

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity