Pull to refresh
13
0
mihailt @mihailt

User

Send message

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

Reading time 41 min
Views 134K


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

Делаем очередную .io-игру

Reading time 10 min
Views 39K


Так называемые .io-игры — это браузерные massively multiplayer action-игры, в которых множество людей борются с излишками свободного времени. Massively multiplayer — это значит, что игра представляет собой многопользовательскую массовку из большого количества (сотен+) игроков, играющих в общей локации. Существует мнение, что все началось с игры Agar.io (клетки в чашке Петри). Другими успешными примерами можно назвать Slither.io (змейки) и Diep.io (танчики). Если верить статистике, то каждый день в эти игры играют миллионы игроков. Сегодня существуют десятки различных .io-игр, большинство из которых можно найти, загуглив по запросу «io games list».


Я расскажу о том, как мы делали нашу .io-игру Oceanar.io — игру про рыбок и прочих морских жителей, постараюсь при этом сосредоточиться на вопросах общего технического устройства всей системы, и дам несколько скромных советов.


Читать дальше →
Total votes 35: ↑30 and ↓5 +25
Comments 46

Casual-заготовки под Swift

Reading time 6 min
Views 12K
image

Привет, братья во swift-e. Пришлось и мне освоить сей птичий язык, и нет лучшего способа для обучения, чем сделать программный продукт, работающий на потрепанном iPhone. Меня давно кусала изнутри сложная математическая головоломка, а тут раз! И вдруг свифт. Представленный код местами выглядит смешно, но понятно. Сам алгоритм игры я обсуждать не буду, он слишком сложен для местных модераторов, не умеющих в уме разделить 111 на 3. А вот примеры полезных функций для разработчиков casual game — пожалуйста, обсудим.
Читать дальше →
Total votes 27: ↑19 and ↓8 +11
Comments 14

Полное практическое руководство по Docker: с нуля до кластера на AWS

Reading time 39 min
Views 1.6M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Total votes 125: ↑124 and ↓1 +123
Comments 43

Разработка для коптеров

Reading time 9 min
Views 25K
В последнее время коптеры из игрушек и летающих камер становятся Большим Бизнесом. Коптеры доставляют грузы, делают съемку местности, охраняют периметр, распыляют химикаты в полях и даже красят, в общем выполняют разного рода задания. Разумеется большинство действий делаются не вручную, с пульта, а выполняются программно.


Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 7

7 игр за 7 дней: rewarded video

Reading time 5 min
Views 24K
image

Ты решил выпустить свою игру под iOS? Значит, читай дальше. Яхты, машины, виллы — все это будет твое. Главное — удачно жениться. А разработчикам игр остаются свобода и счастье творчества. Sic!

Да, закатай губу и помни, каждый день в яблочный магазин выкладывается более 1000 игр. Представь, что какой-то тип-игроман заходит в Appstore раз в неделю посмотреть свежие приложения. Его ждет 7*1000=7000 новых игр. И еще миллион старых, которых он не пробовал. Он пролистает 3 страницы с иконками и описаниями, увидит 3 десятка приложений, почитает отзывы и скачает себе пару бесплатных игрушек. Какова вероятность, что он увидит твое гениальное, неслыханное, эпохальное, умопомрачительное приложение? Невелика? Ах, ты с кафедры мат. статистики? Да ладно?! А не переживай. Удача и реклама спасут тебя. Выпусти 100 приложений, размести в них современную рекламу и 50 долларов в день тебе обеспечены до самой смерти.

Я расскажу, как осуществляется автором этот гениальный план, опубликую финансовые итоги 2015 года (тс-с-с), и проинформирую уважаемых читателей о рекламных сервисах, которые, по-моему мнению, самые модные и доходные в этом сезоне. Ссылок на приложения не даю, никого не трогаю, починяю примус.
Читать дальше →
Total votes 48: ↑44 and ↓4 +40
Comments 13

О гриппе А (H1N1) с точки зрения программирования

Reading time 6 min
Views 17K
Учёные уже полностью дизассемблировали H1N1 и занесли его в вирусную базу NCBI Influenza Virus Resource. Там всё задокументировано в подробностях. Например, образец A/Italy/49/2009(H1N1) был обнаружен в носу 26-летней женщины, вернувшейся из Италии в США. Вот первые 120 бит его генетического кода.

atgaaggcaa tactagtagt tctgctatat acatttgcaa ccgcaaatgc agacacatta

Сколько бит убьёт человека?
По приблизительным подсчётам, общий размер исходников H1N1 составляет 26 022 бит, а если исключить служебные стоп-сигналы (указывают на окончание каждой белковой последовательности), то исполняемый код состоит примерно из 25 054 бит. Это число является приблизительным ещё и потому, что в вирусе присутствует механизм генерации избыточного мусора для маскировки от антивирусов.

Итак, получается около 25 килобит или 3,2 килобайта. Таков объём кода для программы, имеющей ненулевые шансы убить человека. H1N1 написан гораздо эффективнее, чем компьютерный вирус MyDoom размером около 22 КБ.

Очень унизительно, что меня могут убить всего 3,2 КБ генетических данных. Впрочем, в 850 МБ человеческого генома по любому должны быть дыры для парочки эксплойтов.
Читать дальше →
Total votes 323: ↑317 and ↓6 +311
Comments 177

Что такое качество в веб-дизайне: примеры и рекомендации. Часть 3

Reading time 6 min
Views 12K
Не забудьте почитать:
Что такое качество в веб-дизайне: примеры и рекомендации. Часть 1. (или здесь)
Что такое качество в веб-дизайне: примеры и рекомендации. Часть 2. (или здесь)

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

05. Сдержанность и деликатность


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

Читать дальше →
Total votes 95: ↑88 and ↓7 +81
Comments 35

Что такое качество в веб-дизайне: примеры и рекомендации. Часть 2

Reading time 5 min
Views 11K
Не забудьте почитать: Что такое качество в веб-дизайне: примеры и рекомендации. Часть 1. (или здесь).

А сегодня поговорим о том, что такое хорошо продуманная типографика и как правильно организовать элементы на странице.

03. Хорошо продуманная типографика


Хотя реальные тексты для сайта будет писать не дизайнер, они играют такую же важную роль, как и общее качество контента. Дизайнер должен потрудиться, чтобы тексты легко читались и удерживали внимание. Существует множество способов сделать текст легко читаемым и приятным глазу. По мере перечисления правил и норм того, что следует и чего не следует делать, я приведу несколько примеров сайтов, где рациональная типографика действительно работает.
Читать дальше →
Total votes 82: ↑74 and ↓8 +66
Comments 24

Создание системы авторизации в высоконагруженном проекте с использованием MemcacheDB

Reading time 4 min
Views 1.8K
Здравствуйте!

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

Где хранить аутентификационную базу пользователей?
Как быстро авторизовать пользователя по его строковому логину?
Как собирать распределенные по нескольким шард-таблицам и нескольким базам данных пользовательские данные?
Как заставить все это работать и как в этом нам может помочь MemcacheDB?

Читать подробности
Total votes 17: ↑17 and ↓0 +17
Comments 31

IT блоггеры Рунета, где вы?

Reading time 2 min
Views 13K
Буквально вчера я понял, что кроме Хабра в моем RSS ридере нет ни одного русскоязычного источника IT информации. Несправедливость какая-то, подумал я и принялся составлять список блоггеров, которых было бы интересно почитать и за которыми хотелось бы активно следить. Задача эта, как ни странно, оказалась не из самых простых. Поэтому и обращаюсь за помощью к Хабрачеловекам.

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

Сразу скажу, что лично меня не интересует: блоги с превалирующей информацией на личные темы; переводчики-кросспостеры информации с западных мейнстримовых блогов (TC, Mashable, Technorati и т.п.), ну и наверное всё.

UPD: Огромное спасибо всем, кто прислал линки! Под катом находится лишь малая доля ссылок, присланных хабрапользователями, основные сливки в комментариях
Читать дальше →
Total votes 119: ↑111 and ↓8 +103
Comments 160

SVN на Маке

Reading time 4 min
Views 6.7K
image
Купив Мак, я озадачился установкой на него софта, который стоял до этого у меня на PC. Перенести удалось почти всё. Для чего-то нашлись маковские версии, для чего-то удалось подобрать замену. Проблемы возникли с Subversion (SVN). На PC я пользовался Visual SVN Server, который не требует практически никакой настройки и работает сразу после установки. На Маке такого удовольствия не оказалось, так что пришлось немного повозиться.
Читать дальше →
Total votes 53: ↑45 and ↓8 +37
Comments 67

Пример использования Mate Flex Framework

Reading time 6 min
Views 3.4K
Mate Flex Framework Сразу же после появления на свет вышеуказанного фреймворка я понял — это именно то, чего так долго не хватало. Влезать в кабалу создания огромного количества классов используя фреймворки Cairngorm или PureMVC очень не хотелось, а с приходом Mate, появилась возможность уменьшить общую связанность компонентов приложения и использовать безболезненный обмен сообщениями(событиями) декларируя их в «родном» mxml.

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

Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 14

Кладезь электронных книг и журналов на английском языке — Netbks

Reading time 1 min
Views 1.8K
Здравствуйте!

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

Читать дальше →
Total votes 59: ↑56 and ↓3 +53
Comments 46

Какая боль! Толпы против Веб — 2:0. Эпизод два — клоны заходят в полдень

Reading time 5 min
Views 547
Продолжаем warstory оптимизации PHP+mySQL сайта редчайших слов. Одним майским днем, копаясь в словах, мне пришла в голову мысль — расставить под этими словами textbox'ы — использовать [модный для Web 2.0] crowdsourcing. Заполняй чем хочешь, только про это конкретное слово. Но, должно было работать collaborative — как Google Docs — если ты и еще кто-то редактируют слова на одной и той же странице — изменения будут отображаться одновременно. Или, например, кто-то редактирует слово «google» на странице Гугла, а на странице TechMeme, к примеру, есть тоже слово «google» — и им в real-time покажутся эти изменения со страницы Гугла [это необязательно понимать]. Знал бы я какие последствия эта веселая задумка на mySQL окажет позже…

Сделать это оказалось несложно: prototype.js — в руки, ajax — каждые 10 секунд, смотрим в базе что менялось за последние 10 секунд, делаем пересечение со словами на текущей странице, отправляем js highlight effect и новый текст — вуаля. Людей было, но мало кто что-то вводил, тогда я придумал повесить в уголок страницы блок «только что было сказано». Например: «На странице 'fibonacci.com' только что было сказано, что 'fibonacci' → 'crazy math scientist'». Это уже значительно заинтересовало людей и заполняемость выросла в разы. Все видели движения на сайте и сами вовлекались.

Собственно, я сделал достаточно функционала для довольно забавной игрушки — «войны сайтов редкими словами», авто-категоризатор, синонимизатор и т.п. Я сидел мирно редактировал «живой» сайт, загружал новый файл, если видел ошибку — исправлял, не переживая, что это кто-то может видеть. Не подозревал я, что уже тысячи людей видят это. После очередной ошибки в названии функци что-то произошло… я не смог загрузить на FTP index.php… это был TechCrunch....
Читать дальше →
Total votes 98: ↑84 and ↓14 +70
Comments 43

SQA в PHP

Reading time 1 min
Views 506
Приветсвую всех.
Случилось так, что на работе нужно более глубоко использовать SQA (software quality assurance). Погуглив, сделал пока выводы, что можно использовать

1. phpunit как средство тестирования кода (simpleTest как альтернатива, и другие фрейворки для тестирования кода)
2. Selenium как средство тестирование веб интерфейса
3. code review для повышения качества кода. (он же рефакторинг)
upd:
4. code coverage by phpunit+xdebug для установления какой код не используется
5. багтрекер на основе trac

а что можно еще использовать чтобы повысить качество кода? какие методики?

спасибо за внимание
Total votes 25: ↑20.5 and ↓4.5 +16
Comments 43

Пишем расширения для PHP на C (Си)

Reading time 7 min
Views 3.4K
Современному PHP разработчику это знание может понадобиться скорее для расширения сознания, чем непосредственное руководство к действию, но несмотря на то, что в PHP уже встроено практически все необходимое, а в разнообразных PEAR и PECL репозитариях можно найти пакет дополнений на любой вкус, многим думаю будет интересно, а некоторым и полезно узнать как и что работает внутри PHP.

И раз уж Zend предоставил нам такие удобные инструменты, почему бы ими не воспользоваться? Например для оптимизации каких-то процессов, сокрытия своего когда в коммерческих приложениях и встраивания механизма лицензий, реализации многопоточности или для чего-то еще…

Читать дальше →
Total votes 32: ↑29.5 and ↓2.5 +27
Comments 12

Коллекции иконок? Легко! Тысячи иконок в сетах.

Reading time 2 min
Views 39K
В продолжении поста "Ресурсы по поиску качественных иконок" представляю свою коллекцию сайтов, на которых вы найдёте очень(!) много качественных наборов иконок. Все сайты проверены руками, следовательно открываются и скачиваются легко.
Читать дальше →
Total votes 159: ↑135.5 and ↓23.5 +112
Comments 36

О некоторых современных технологиях разработки веб-интерфейсов

Reading time 6 min
Views 2.4K

Наступление


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

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

Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Comments 21

Как «pecl» зол порой бывает

Reading time 2 min
Views 489
Сегодня столкнулся с проблемой прикрутки memcache к PHP собранному из сырцов. А именно при попытке выполнить:
[root@idev bin]# ./pecl install memcache

Я получал следующий результат:
downloading memcache-2.2.3.tgz…
Starting to download memcache-2.2.3.tgz (27,304 bytes)
.........done: 27,304 bytes
11 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
ERROR: `phpize' failed

Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 17

Information

Rating
Does not participate
Location
Латвия
Date of birth
Registered
Activity