Pull to refresh
0
0
Дмитрий Мануйлов @eihwaz07

User

Send message

Расширяемый код Android-приложений с MVP

Reading time7 min
Views51K
От переводчика: — я давненько интересуюсь тем, как сделать код Android-приложений чище, и это, наверное, первая статья, после которой у меня не возникло мыслей: "Зачем вот это вот все?" и "Он вообще пробовал когда-то это использовать в жизни?" Поэтому решил перевести, может, еще кому-то будет полезно.

Написать Hello World всегда легко. Код выглядит просто и прямолинейно, и кажется, что SDK очень адаптирована под ваши нужды. Но если у вас есть опыт написания более сложных Android-приложений, вы знаете, что с рабочим кодом все не так. Можно провести часы за попыткой понять, почему ваша корзина покупок не обновляется после изменения ориентации телефона, если недоступен WiFi. Вы предполагаете, что решением проблемы, возможно, будет добавить ещё один if в 457-строчном методе onCreate() вашей активити — где-то между тем кодом, который исправляет падение на самсунгах с Android 4.1 на борту, и тем, который показывает купон на 5$ в день рождения пользователя. Что ж, есть способ получше.

Мы в Remind (прим. пер. — название компании, где работает автор) выкатываем новые функции каждые две недели, и для того чтобы поддерживать эту скорость и высокое качество продукта, нужен способ сохранять код простым, поддерживаемым, разделённым (прим. пер. — "decoupled", в смысле слабой связанности) и тестируемым. Использование архитектурного паттерна MVP позволяет нам делать это и сосредоточиваться на самой значимой части нашего кода — нашей бизнес-логике.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments9

Первый частный город в России. Часть 2

Reading time14 min
Views35K
Вводная часть: Дизайн российских городов, где он?
Первая часть статьи: Первый частный город в России, быть или не быть?

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


Total votes 39: ↑30 and ↓9+21
Comments252

Первый частный город в России, быть или не быть? Часть 1

Reading time9 min
Views56K
В прошлой своей статье "Дизайн российских городов, где он?" я затронул тему плохой архитектуры в наших с вами городах. Она получило широкий резонанс, набрав более 300 комментариев.

Сегодня поговорим о более практической части и попытаемся вместе ответить на вопрос «Что делать?».


Читать дальше →
Total votes 56: ↑36 and ↓20+16
Comments366

Дизайн российских городов, где он?

Reading time3 min
Views75K
Я вырос в типовом 9-этажном многоквартирном доме, построенном в советские годы. И весь наш микрорайон состоял либо из таких домов, либо из «хрущевок». Большинство людей моего поколения (80-90-го года рождения) так или иначе тоже выросло в таких серых и однотипных «коробках».

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


Читать дальше →
Total votes 71: ↑48 and ↓23+25
Comments357

Релиз Python 3.6 — да, теперь он с нами

Reading time3 min
Views54K


Прошло 15 месяцев, и наконец-то мир увидел релиз языка программирования Python 3.6. Нового довольно много, ведь не зря разработчики ждали целых 15 месяцев. В релизе добавлены новые модули, обновлены стандартные библиотеки, улучшены наборы различных настроек. В целом, Python 3.6 получил много улучшений, что можно считать отличным подарком к Новому Году. Давайте посмотрим подробнее, что принес нам Дед Мороз новый релиз.
Читать дальше →
Total votes 52: ↑45 and ↓7+38
Comments90

Распределение Пуассона и футбольные ставки

Reading time5 min
Views102K



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

ТМ 2.5 ТБ 2.5
Total votes 43: ↑42 and ↓1+41
Comments37

Хаос и гремлины: тестирование веб-интерфейсов

Reading time10 min
Views16K
В мире веб-разработки есть неписаное правило: поведение пользователей предсказать практически невозможно. Это способен подтвердить каждый, кто наблюдал за тем, как некто приступает к работе с новым для него сайтом или веб-приложением. Я, например, уже и не помню, сколько раз мне доводилось видеть подобное. Например, порой думается, что люди просто забывают о том, как пользоваться браузером на мобильнике. Иногда их действия настолько нелогичны, что кажется, будто перед тобой не реальный человек, работающий с реальным веб-сайтом, а пьеса в жанре театра абсурда: необычно, порой более чем, притягательно, есть над чем подумать, но… мы ведь не в театре.


Total votes 20: ↑18 and ↓2+16
Comments0

«Полезняшки» или «Реестр Windows как платформа»

Reading time10 min
Views48K
Хочу рассказать вам историю, как решение конкретных прикладных задач привело меня к использованию реестра Windows в качестве платформы для хранения и исполнения кода.
Читать дальше →
Total votes 92: ↑84 and ↓8+76
Comments35

Необычные материалы в DIY. Стоматология + электроника =? Часть 1

Reading time8 min
Views202K
Нет ничего прекраснее, чем сидеть в лаборатории и гладить толстую плешивую крысу в поисках вдохновения.



Итак, сегодня у нас будет немного необычный DIY-пост. Делать руками мы ничего не будем. Arduino и прошивок в 30 строк на Brainfuck тоже не будет. Мы попробуем взглянуть на привычные вещи под необычным углом.
Все мы привыкли к классическим для этой области материалам вроде текстолита, оловянного припоя и прочих радостей любителей повыпиливать лобзиком потравить платы. В этой статье мы попробуем найти интересные альтернативы привычным техпроцессам в несколько непривычной области — стоматологии. Зубные техники и стоматологи работают с целой кучей полимеров, композитов и много с чем еще. Я не буду давать конкретных рецептов применения, а просто дам общее направление для самостоятельных экспериментов.

В сегодняшней программе:
Материалы
  • Силиконы. Как кремний, только интереснее.
  • Супергипс. Гипсее всех гипсов.
  • Пластмассы. Отличный розовый цвет.


В следующей части:
Материалы
  • Фотокомпозиты. Сам себе 3D принтер.
  • Ортофосфорная кислота для травления

Оборудование и инструменты
  • Алмазные и твердосплавные боры
  • Портативные микромоторы. Замена дремеля
  • Обратные пинцеты, зонды и другая мелочь

Читать дальше →
Total votes 197: ↑191 and ↓6+185
Comments171

Как Discord обрабатывает более 1 000 000 push-запросов в минуту с помощью Elixir GenStage

Reading time6 min
Views17K

Discord

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

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

Идеальный шторм: Overwatch и Pokémon GO


Этим летом наша система мобильных push-уведомлений стала скрипеть от нагрузки. Чат /r/Overwatch перевалил за 25 000 одновременных пользователей, а чат-группы Pokémon GO возникали повсеместно, так что внезапные всплески потока уведомлений стали серьёзной проблемой.
Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments28

Какой бывает HTML5-стриминг (и почему mp4-стриминга не существует)

Reading time6 min
Views53K
image

Нередко клиенты спрашивают, умеет ли наш сервер «mp4-стриминг в HTML5». В 99% случаев спрашивающий не понимает о чём говорит. В этом сложно винить клиентов: из-за путаницы с терминами, технической сложности и большого разнообразия вариантов стриминга запутаться очень легко.

В этой статье мы расскажем, какой бывает HTML5-стриминг, какие варианты хорошие, и почему, чёрт побери, нельзя говорить «mp4-стриминг».
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments53

Стабилизация экрана в Android

Reading time8 min
Views40K
image

Пробовали ли Вы читать книгу или статью вроде этой в автобусе или идя по улице? Могу поспорить пробовали! В этом случае Вы должны были заметить что чтение текста таким образом является не лучшей идеей из-за постоянной тряски. Похоже что тряска экрана является достаточно серьезной проблемой и устранение ее может дать очень хорошее улучшение UX. Моя идея состоит в том, чтоб использовать датчики ускорения для компенсации тряски так-же как зеркальные камеры стабилизируют сенсор или линзы. Технически это возможно так что почему бы не попробовать сделать это самому!
Total votes 71: ↑69 and ↓2+67
Comments38

Энтропия? Это просто!

Reading time7 min
Views428K
Этот пост является вольным переводом ответа, который Mark Eichenlaub дал на вопрос What's an intuitive way to understand entropy?, заданный на сайте Quora

Энтропия. Пожалуй, это одно из самых сложных для понимания понятий, с которым вы можете встретиться в курсе физики, по крайней мере если говорить о физике классической. Мало кто из выпускников физических факультетов может объяснить, что это такое. Большинство проблем с пониманием энтропии, однако, можно снять, если понять одну вещь. Энтропия качественно отличается от других термодинамических величин: таких как давление, объём или внутренняя энергия, потому что является свойством не системы, а того, как мы эту систему рассматриваем. К сожалению в курсе термодинамики её обычно рассматривают наравне с другими термодинамическими функциями, что усугубляет непонимание.
энтропия
Так что же такое энтропия?
Total votes 65: ↑63 and ↓2+61
Comments58

Правильный оффер при устройстве программиста в офис

Reading time6 min
Views56K
В этой статье я хотел бы поделиться своими заметками связанными с трудоустройством программистов в офис.



У меня веб-студия в Москве, в подчинении более 70 человек. Опыт работы с 2001 г. Начинали с обычных веб-сайтов: друг делал дизайн, а я программировал по ночам. За все время прошел долгий путь от простых сайтов-визиток до сложных интеграционных решений.
Читать дальше →
Total votes 72: ↑38 and ↓34+4
Comments77

Змеиный фрукт или фруктовый Питон?

Reading time23 min
Views33K

Не библейская история



  1. И сотворил Google Android. Поселил его в саду мобильных платформ, дав ему жену — Java.
  2. И повелел Google Javе: создавай программы Androidу, красивые и быстрые, и Androidу сказал: не следует тебе брать других жен, кроме Javы. И запретил им вкушать плодов от древа познания фреймворков и языков программирования, дабы не сделались их программы медленными и неугодными пользователю.
  3. Хитрейшим же на том древе был древний змий — динамический Python. Долгое время наблюдал он за Androidом и, наконец, подстерег его прогуливающимся в тени деревьев. Тогда спросил хитрый Python Androidа: правду ли сказал тебе Google, не вкушать плодов от древа познания фреймворков и языков программирования, дабы не сделались твои программы медленными и неугодными пользователю?
  4. Точно так заповедовал мне всемогущий Google, ответил Android и прогаммы создает мне жена моя — Java.
  5. Обманул тебя Google, прошипел хитрый Python, ибо знает он, что в тот день, когда ты вкусишь плодов от древа познания фреймворков и языков программирования, прозреешь ты и потянутся к тебе другие разработчики и станут создавать программы, и появятся у тебя приложения такие же красивые и быстрые, как от жены твоей Java, и будут они кроссплатформенны!
  6. И сорвал Python плод от древа познания фреймворков и языков программирования и протянул Android`у, и тот ел.
  7. Имя того плода — Kivy.

Книга фреймворка Kivy (Глава 2, стих 1-7)

Читать дальше →
Total votes 36: ↑27 and ↓9+18
Comments20

Рунетология (83): генеральный директор интернет-магазина «Холодильник.ру» Валерий Ковалев

Reading time1 min
Views1.5K
Валерий Ковалев — о том, как «Холодильник.ру» стал одним из лидеров электронной коммерции в Рунете, о специфике интернет-торговли бытовой техникой, о конкуренции с федеральными сетями, о внутреннем устройстве «Холодильника.ру» и принципах семейного бизнеса, а также о том, почему его компания не продается.
Читать дальше →
Total votes 39: ↑27 and ↓12+15
Comments5

Товарные объявления Google: разбор полетов

Reading time3 min
Views9.6K
Хочу рассказать о прекрасном инструменте, который позволяет показывать ваш товар лицом именно в тот момент, когда пользователь, он же потенциальный покупатель, ищет его в Google. Примечательно, что пользователь увидит намного больше информации, нежели в традиционном текстовом рекламном блоке: стоимость товара, название вашего магазина, и самое главное – изображение.

Объявления данного типа обладают наиболее высоким процентом CTR, а также очень вкусной стоимостью клика (ввиду не очень большой конкуренции). Оплата осуществляется за переход по товарному объявлению. Вы назначаете максимальную цену за клик, которую
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments7

Каково это — быть разработчиком, когда тебе сорок

Reading time18 min
Views229K
Примечание от переводчика:

Этот пост был написан и опубликован на Medium разработчиком приложений Адрианом Космачевским из Швейцарии. Кроме подготовки перевода его публикации, я также пригласил и самого автора, Адриана ( akosma ), на Хабр, для того, чтобы он смог лично ответить на любые вопросы участников сообщества, если таковые возникнут. Думаю, для общего удобства при общении в комментариях с ним стоит использовать английский (и, при желании, дублировать на русском).



Привет всем, я — сорокадвухлетний программист-самоучка, а это моя история.

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

image

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

Я дебютировал в роли разработчика программного обеспечения в 10 часов утра 6 октября 1997 года, в городе Оливос, к северу от Буэнос-Айреса, в Аргентине. Был понедельник. Не так давно я праздновал свой 24-й день рождения.

Мир в 1997 году


Тогда он был немного другим. На веб-сайтах не было предупреждений об использовании cookie. Новаторскими в сети были сайты вида Excite.com, а моим любимым поисковиком был AltaVista.

Мой электронный ящик имел вид kosmacze@sc2a.unige.ch и был расположен на личном веб-сайте, который размещался по адресу http://sc2a.unige.ch/~kosmacze. Тогда мы еще оплакивали принцессу Диану, а Стив Джобс только-только вернулся на роль CEO и убедил Microsoft «вбросить» в Apple Computer 150 миллионов долларов. Digital Equipment Corporation подала в суд на Dell, останки Че Гевары вернули на Кубу, только начался четвертый (!) сезон «Друзей». Был убит Джанни Версаче, скончались Мать Тереза, Рой Лихтенштейн и Жанна Кальман. Люди зависали за Final Fantasy 7 на PlayStation, будто бы были наркоманами, Би-Би-2 начал вещание телепузиков, а Кэмерон только собирался показать миру свой «Титаник».
Читать дальше →
Total votes 200: ↑194 and ↓6+188
Comments321

Правильная обработка ошибок в JavaScript

Reading time7 min
Views52K
Обработка ошибок в JavaScript — дело рискованное. Если вы верите в закон Мёрфи, то прекрасно знаете: если что-то может пойти не так, именно это и случится! В этой статье мы рассмотрим подводные камни и правильные подходы в сфере обработки ошибок в JS. А напоследок поговорим об асинхронном коде и Ajax.

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

Все примеры будут рассмотрены применительно к клиентскому JavaScript. В основу повествования легли идеи, озвученные в статье «Исключительная обработка событий в JavaScript». Название можно перефразировать так: «При возникновении исключения JS проверяет наличие обработчика в стеке вызовов». Если вы незнакомы с базовыми понятиями, то рекомендую сначала прочитать ту статью. Здесь же мы будем рассматривать вопрос глубже, не ограничиваясь простыми потребностями в обработке исключений. Так что когда в следующий раз вам опять попадётся блок try...catch, то вы уже подойдёте к нему с оглядкой.
Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments11

Выжимаем максимум из DDMS

Reading time6 min
Views35K
DDMS (Dalvik Debug Monitor Server) — безумно полезный инструмент для отладки приложений, который идет в комплекте с Android SDK, о котором почему-то особо и не сказано на хабре, впрочем как и в примерах google он представлен в очень скромном виде. Я бы хотел раскрыть его возможности и показать на что он способен. Вкратце:
  • изучать информацию о работающих потоках;
  • анализировать heap на количество свободной и занятой памяти;
  • анализировать какие объекты чаще создаются, их размер и другое (Allocation tracker);
  • находить проблемные участки кода, которые долго работают и требуют оптимизации (Method profiling). Это я советую знать всем.

Об этих вещах будет рассказано в рамках данной статьи. И для справки, менее интересное, что довольно тривиально и о чем НЕ будет рассказано в рамках данной статьи:
  • работать с файловой системой эмулятора или устройства;
  • находить информацию об ошибках (привет LogCat);
  • эмулировать звонки/смс/местоположение;
  • использовать инструмент Network Statistics.


Если заинтересовались, прошу под кат.
Total votes 34: ↑34 and ↓0+34
Comments6

Information

Rating
Does not participate
Date of birth
Registered
Activity