Pull to refresh
-6
Алексей@java3000

Администратор windows умеющий в программирование

Send message

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

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

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

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

Искусство доставки продукта «быстро и часто»

Reading time6 min
Reach and readers2.8K
«Несколько ясно выраженных проблем проявляются как задержки запуска: слишком медленная работа, неправильное понимание проблемы, страх перед необходимостью обращаться с пользователями, боязнь осуждения, работа со слишком многими разными делами, чрезмерный перфекционизм. К счастью, со всем этим можно справиться простым средством — заставить себя начать что-то делать довольно быстро.» — Пол Грэм «18 ошибок, убивающих стартапы»

Когда вы проходите через венчурный фонд «Y Combinator» («YC»), то один из получаемых советов — «стартуйте как можно раньше», т.е. запускайте дело задолго до того, как вы полагаете, что готовы к этому.

В моём стартапе мы не просто последовали этому совету. Мы ввели его до почти абсурдной степени во всё, что мы делали. Фактически выдача продукта «быстро и часто» является теперь самым желанным действием компании. Это — та самая преобладающая черта компании, которая, как я полагаю, способствовала нашему росту и принятие которой может принести пользу почти каждому бизнесу.

Здесь я хотел бы поделиться некоторыми тактическими соображениями о том, что это значит и как это работает.
Читать дальше →

Прячем фактическое место, где стоит сервер компании: практические методы и вопрос

Reading time3 min
Reach and readers48K
Привет! Я руковожу небольшим ИТ-аутсорсингом, и к нам в прошлом году обратилось сразу несколько клиентов с похожими задачами — сделать так, чтобы никто не узнал, где именно стоят сервера компании.

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

Мы придумали вот такую схему:



В центре — ядро, вокруг ядра — релей-серверы периметра (дешёвые машины-прокси, на каждой — свой сервис), дальше — терминалы конечных пользователей. Покритикуйте, пожалуйста, ну или попробуйте вычислить IP сервера ядра на примере в конце.
Читать дальше →

Никогда не делайте компараторов на базе вычитания

Reading time2 min
Reach and readers20K
Я обратил внимание, что люди, когда они пишут свой компаратор, очень часто любят сравнению чисел предпочитать их вычитание. Такой подход лаконичен и краток, но к сожалению, не всегда корректно работает, поэтому использовать его нельзя. Я сам когда-то на это попадался, и вижу это настолько часто, что решил написать заметку.

Рассмотрим следующий код:
Читать дальше →

Польза от девальвации? Российские компании переносят сборку электроники из Азии в Россию

Reading time2 min
Reach and readers15K
Многие могли заметить, что в последнее время курс рубля к доллару несколько изменился в сторону обвала. Обесценивание собственной валюты — одна из эффективных мер стимулирования экономики во время рецессии. Уменьшается импорт, что стимулирует отечественных производителей. Снижаются зарплаты у населения (в долларовом выражении), это уменьшает себестоимость отечественной продукции и делает её более конкурентоспособной.

Пользу из девальвации рубля извлекли российские производители электроники, пишут «Ведомости».

Например, компания «Датакам» (производит автомобильные видеорегистраторы, рации и др.) перенесла часть сборочного производства с Тайваня в Москву. За счёт экономии на ввозных таможенных пошлинах, сокращения логистических расходов и более низких зарплат работников в целом себестоимость собранных в России регистраторов для «Датакама» на 20% ниже, чем на Тайване, сказал владелец компании Владислав Механцев. Он добавил, что затраты на оплату труда в расчёте на одного работника здесь втрое ниже, чем на Тайване.
Читать дальше →

Использование PowerShell для работы с Veeam Backup Free Edition

Reading time5 min
Reach and readers24K
Коллега написал краткий, но содержательный пост для корпоративного блога, который сегодня и предлагается вашему вниманию (правильнее было бы назвать его «авторская русскоязычная версия, с изменениями и дополнениями»).

День добрый,
Меня зовут Владимир Ерёмин, я работаю в компании Veeam Software на позиции product manager. Одной из вверенных мне областей является PowerShell оснастка к нашему продукту Veeam Backup and Replication, и именно о работе с оной и пойдет речь далее.



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

Ода зимней влажности или user experiences dryness

Reading time8 min
Reach and readers18K
В общем, как и полагается «брутальному сибирскому мужику», никогда я на такие мелочи, как сухость дома, внимания не обращал. Лишь бы прохладненько было. О влажности вспоминал исключительно летом, когда жарко и влажность переходит в противную сырость.

Но тут с нового года начал я тестить у себя Magic Air и увидел, что зимой, при хорошем проветривании, влажность дома ниже, чем в пустыне Сахара! Мой рекорд – 7%, это вообще дичь и сушь невероятная. По физике-то «и так понятно было», холодный воздух с улицы дома греется и его относительная влажность почти на нет сходит. Но тут, как говорится, лучше один раз увидеть.

Возможно, далее началась классическая ипохондрия, но стало мне не по себе от такого пересыхания. А уж вернувшись из отпуска, где привык к нормальной влажности 60%, совсем беда началась. Горло дерёт от сухости, просыпаешься – нос забит сами-знаете-чем, чувствуешь себя губкой Бобом, которого выкинуло на пляж. Я сначала даже попробовал по старой советской традиции баночки с водой и тряпочки мокрые у батареи ставить, но, как показали замеры, это «пердячий лимонад», эффект близок к нулю.


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

Расщепление воды с эффективностью 100%: полдела сделано

Reading time2 min
Reach and readers83K


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

Теперь учёные решили часть головоломки. Исследователи из Технион-Израильского технологического института разработали метод проведения второго из двух шагов окислительно-восстановительной реакции — восстановления — в видимом (солнечном) свете с энергетической эффективностью 100%, значительно превзойдя предыдущий рекорд 58,5%.

Осталось усовершенствовать полуреакцию окисления.
Читать дальше →

9 секретов онлайн-платежей. Часть 2: регулярные платежи

Reading time6 min
Reach and readers26K
imageНеважно, что вы продаете онлайн, сегодня принимать платежи по банковским картам – это правило «хорошего тона». Однако, в зависимости от типа бизнеса, который вы введете в Интернете, можно не только соблюсти правила, но и настроить прием платежей максимально эффективно и «выжать» из своего сайта максимум прибыли.

В сегодняшнем выпуске, втором из цикла «9 секретов онлайн-платежей», мы расскажем, почему регулярные платежи, которые называют еще «автоплатежами» и «рекуррентными платежами», так важны для любого онлайн-бизнеса, как их воспринимают пользователи, чем заинтересовать и как с помощью них удержать клиента на вашем сайте. Данная серия, посвященная поэтапной настройке платежей на сайте и в мобильных приложениях, содержит восьмилетний опыт работы команды PayOnline, подключившей оплату для более 3 000 интернет-магазинов и сервисов.
Читать дальше →

Персонализация IMGUI и редактора Unity. Часть вторая

Reading time11 min
Reach and readers7.9K
С момента выхода новой системы Unity UI прошло больше года, поэтому Ричард Файн решил написать о ее предшественнице – IMGUI. В прошлой части материала мы разобрали как создать MyCustomSlider. У нас получился простой функциональный элемент IMGUI, который можно использовать в пользовательских редакторах, PropertyDrawers, EditorWindows и т. д. Но это еще не всё. Во второй части статьи мы поговорим о том, как можно расширить его функционал, например добавить возможность мультиредактирования.


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

Стек стеком погоняет, или преобразование байткода виртуальной машины Java в байткод машины Фантом ОС

Reading time5 min
Reach and readers13K
ОС Фантом — экспериментальная операционная система, содержащая на прикладном уровне виртуальную байткод-машину в персистентной оперативной памяти.

Один из двух ключевых запланированных для ОС Фантом путей миграции существующего кода — преобразование байткода Java в байткод Фантом.

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

Обе машины — стековые. Обе оперируют двумя отдельными стеками — стеком для работы с объектами (на стеке лежат только ссылки), и бинарным стеком — для вычислений. Машина Фантома имеет также отдельные стеки для фреймов функций и ловушек исключений. Как эта часть устроена в JVM, я не знаю до сих пор, но полагаю, что вряд ли кардинально отличным образом.

Естественно, что и набор операций стековых машин местами схож как две капли.

Но, безусловно, есть и весьма существенные отличия.
Читать дальше →

Отечественный игрострой в деле: аркада Creepy Road вышла на Kickstarter

Reading time2 min
Reach and readers4.4K


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

Сейчас появилась еще одна игра, получившая название Creepy Road. Анонсировали ее еще в прошлом году, на выставке «ИгроМир 2015». Писали о ней на 3dnews, Gamedis и прочих ресурсах (на Geektimes только пару раз упоминали в комментариях). Сюжет игрушки заключается в том, что главный герой отправляется к своей подруге, но в итоге оказывается в гуще проблем — вокруг враги, куча злобных животных (даже птицы и те похожи на исчадий ада) и довольно странное окружение.
Читать дальше →

Сделай сам: SQL JOIN на Java

Reading time7 min
Reach and readers86K
Я часто собеседую разработчиков и часто задаю им простой, как кувалда, вопрос — как внутри работает JOIN в SQL? В ответ я обычно слышу бессвязное мычание про волшебные деревья и индексы, которые быстрее. Когда-то мне казалось, что каждый программист специалист должен знать то, с чем работает. Впоследствии жизнь объяснила мне, что это не так. Но мне все еще не понятно, как можно годами теребить базёнку, даже не догадываясь, а что там у нее «под капотом»?

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

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

Протез на 4-летие мальчика Феди, стилизованный под любимого персонажа

Reading time3 min
Reach and readers9.4K
Федя, которому только что исполнилось четыре года, на День рождения получил функциональный протез от российского стартапа из Томского наноцентра «Моторика». Протез шестого поколения можно спокойно ронять с полутора метров, настраивать на нём разные хваты и крепить дополнительные подарки — пульт для квадрокоптера и фонарик.

Смотрите видео, снятое после установки. А о том, на что способен протез, как его получить и почему он так выглядит — читайте под катом.


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

Анонсирован моноблочный компьютер “Таволга Терминал TP-T22BT” на базе процессора “Байкал-Т1”

Reading time6 min
Reach and readers41K
Приветствуем наших уважаемых читателей на страницах блога iCover! Выставка Embedded World, проходившая в Нюрнберге (Германия) с 23 по 25 февраля, как и одно из крупнейших событий года в мире высоких технологий MWC 2016 в Барселоне на этот раз подарила множество интересных сюрпризов. На минувшей неделе мы рассказали об анонсе процессорного модуля SF-BT1 от отечественной компании “Т-платформы”. Еще одним интересным событием, связанным с именем этой достаточно молодой, но перспективной команды стал анонс моноблока “Таволга Терминал TP-T22BT”, также созданного на базе процессора “Байкал-Т1”. Приглашаем поделиться своим мнением о представленной новинке.

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

Pathfinding: До одури простая реализация алгоритма воронки (Funnel Algorithm)

Reading time3 min
Reach and readers20K


Алгоритм воронки — это простой алгоритм поиска наипростейшего пути, проходящего через «порталы». Наиболее подробное описание можно найти по ссылке Efficient Triangulation-Based Pathfinding (2)
Здесь же этот алгоритм будет реализован до одури просто. Вместо использования очередей и прочих очешуительных вещей, наша простейшая реализация перезапускает цикл каждый раз, когда обнаруживает очередной угол. Это значит, что некоторые порталы будут опрашиваться таки чаще, чем должны были бы, тем не менее, делая реализацию всяко проще.
Читать дальше →

Как балансируются настольные и разные другие игры – краткий обзор способов

Reading time10 min
Reach and readers65K


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

Конечная цель любой балансировки игры – увеличение возврата игроков или времени партии. То есть играбельности механики:
  • Не должно быть однозначной ультимативной стратегии победы, иначе игра потеряет вариативность и интерес.
  • Игрок должен чувствовать, что от его действий и навыков зависит игра. Иначе получится Mass Effect, который, скорее, фильм, нежели RPG.
  • Баланс должен быть «амортизированным», то есть прощать некоторые ошибки – иначе запоздалый на миллисекунду клик в Starcraft по первому рабочему из-за «эффекта бича» вызывал бы проигрыш через 4 часа идеальной партии. Наша настольная формула – 5-7 важных решений за игру, в двух можно ошибиться.
  • У настолок есть ещё социальное условие: игроки не должны выпадать по ходу пьесы – интересно должно быть всем и до конца.

Теперь – методы.
Читать дальше →

This is Science: плазмонный камуфляж — уже реальность

Reading time4 min
Reach and readers26K

Привет всем любителям новостей науки и технологий!

Сегодня мы поговори о плазмонном хамелеоне, о реальном можно почерпнуть тут.

Любой металл – это прежде всего массив свободно движущихся электронов, своеобразный резервуар с электронным газом. А металл, находящийся в наноразмерном состоянии, обладает одним удивительным свойством – плазмонным резонансом. Группа китайских учёных совместно с американскими коллегами использовала эту особенность наночастиц при создании плазмонного камуфляжа.

О том, что же это такое и с чем это едят, Вы узнаете под катом.
Цветные подробности

Как новые руководители разрушают доверенные им компании

Reading time26 min
Reach and readers407K
Эта статья – о рисках смены руководства в больших компаниях и характерных явлениях при попытках игнорировать закон эффективного управления собственностью:
Эффективно управлять можно только той собственностью, которую мог бы создать сам.
Кто не может создать, – будет только разрушать!
И.А. Дедюхова, Кодекс Хамурапи
Картинка для привлечения внимания читателей из поколений Y и Z:


Краткое содержание


Новый директор себе в подчиненные и советники пригласит своих «проверенных людей». Увеличение штата топ-менеджеров в условиях фиксированного ФОТ повлечет за собой сокращение рядовых сотрудников на значительный процент.
Новый директор в первую очередь будет сокращать те подразделения, работу которых он не понимает. Под прессом психологического давления руководители этих подразделений возмут на себя обязательства самостоятельно разработать планы по сокращению и принять на себя все риски их реализации.
Сокращения пройдут под флагом повышения эффективности, но для «непонятных директору» подразделений не смогут сформулировать критерии этой эффективности, кроме «минимизации затрат». Цель по минимизации затрат без дополнительных обоснованных ограничений – это цель по уничтожению, и не имеет отношения к настоящей оптимизации.
Отсекая непонятные ему части компании (выводя в аутсорс и т.п.), директор попытается превратить компанию в ту, работу которой он полностью способен понять, которой он в полной мере способен управлять.
Проблему нехватки знаний в технической области новый директор и его команда компенсируют «помощью» от западных консалтинговых компаний. Это приведет к ситуации внешнего управления, причем без всякой ответственности за диктуемые извне решения.
Внешняя и внутренняя отчетность о работе компании до самого конца не будет показывать никаких признаков проблем, т.к. тому, кто принес плохие вести не выдают премию, а рубят голову.


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

Segmentation Fault (распределение памяти компьютера)

Reading time16 min
Reach and readers129K


Когда я делаю ошибку в коде, то обычно это приводит к появлению сообщения “segmentation fault”, зачастую сокращённого до “segfault”. И тут же мои коллеги и руководство приходят ко мне: «Ха! У нас тут для тебя есть segfault для исправления!» — «Ну да, виноват», — обычно отвечаю я. Но многие ли из вас знают, что на самом деле означает ошибка “segmentation fault”?

Чтобы ответить на этот вопрос, нам нужно вернуться в далёкие 1960-е. Я хочу объяснить, как работает компьютер, а точнее — как в современных компьютерах осуществляется доступ к памяти. Это поможет понять, откуда же берётся это странное сообщение об ошибке.

Вся представленная ниже информация — основы компьютерной архитектуры. И без нужды я не буду сильно углубляться в эту область. Также я буду применять всем известную терминологию, так что мой пост будет понятен всем, кто не совсем на «вы» с вычислительной техникой. Если же вы захотите изучить вопрос работы с памятью подробнее, то можете обратиться к многочисленной доступной литературе. А заодно не забудьте покопаться в исходном коде ядра какой-нибудь ОС, например, Linux. Я не буду излагать здесь историю вычислительной техники, некоторые вещи не будут освещаться, а некоторые сильно упрощены.
Читать дальше →

Information

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

Specialization

Десктоп разработчик, Администратор серверов
Младший
From 110,000 ₽
Java
Java Spring Framework
RESTful WebServices.
PostgreSQL
SQL
Hibernate
Linux
Базы данных
Microsoft SQL Server
Разработка программного обеспечения