Search
Write a publication
Pull to refresh
192
0
Алексей Гришин @GRaAL

Разработчик широкого профиля

Send message

Аргументы против использования фрагментов в Android

Reading time10 min
Views34K
Недавно я выступал на конференции Droidcon в Париже с докладом (оригинал на французском), в котором рассматривал проблемы, возникшие у нас в Square при работе с фрагментами и возможности полного отказа от фрагментов.

В 2011-м мы решили использовать фрагменты по следующим причинам:

  • Тогда мы ещё не поддерживали планшеты, но знали, что когда-нибудь будем. Фрагменты помогают создавать адаптивный пользовательский интерфейс, и потому казались хорошим выбором.
  • Фрагменты являются контроллерами представлений, они содержат куски бизнес-логики, которые могут быть протестированы.
  • API фрагментов предоставляет возможность работы с backstack'ом (в общих чертах это выглядит так же, как и работа со стэком Activity, но при этом вы остаётесь в рамках одной Activity).
  • Так как фрагменты построены на обычных представлениях (views), а представления могут быть анимированы средствами Android-фреймворка, то фрагменты могли в теории дать нам возможность использовать более интересные переходы между экранами.
  • Google рекомендовал фрагменты к использованию, а мы хотели сделать наш код как можно более стандартным.

С 2011-го года много воды утекло, и мы нашли варианты получше.
Читать дальше →

Хакерская ёлка, или Как провести Детский День в недетской компании

Reading time6 min
Views27K


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

На самом деле, в основе мероприятия лежала вполне серьёзная идея: рассказать и показать детям сотрудников Positive Technologies, где и как работают их папы и мамы. Провести эдакую Позитивную Профориентацию.

Для чего? Есть одна проблема, с которой сталкиваются многие родители, работающие в таких абстрактных сферах, как наша. Взрослые каждый день уходят на загадочную работу, которую дети не видят и не понимают. Зато детей заставляют заниматься своими абстракциями в школе — и родители, в свою очередь, не знают, что происходит за школьным порогом. Эта ситуация не улучшает взаимопонимание в семье.
Читать дальше →

На Плутоне есть водяной лед. Много льда

Reading time1 min
Views15K


Ученые продолжают анализировать информацию, присылаемую на Землю аппаратом New Horizons. Передача данных будет продолжаться еще много месяцев, а значит, что открытий будет сделано еще немало. Сейчас стало известно, что на поверхности Плутона можно без труда найти водяной лед, целые горы такого льда. Новая карта от NASA показывает размещения льда из H20 по поверхности планеты.

Это довольно неожиданная новость даже для тех специалистов, кто довольно давно занимается исследованием Плутона. Для того, чтобы получить оценку количества льда на Плутоне, астрономы сравнили «спектральную подпись» отраженного от карликовой планеты света со спектром чистого водяного льда. Как оказалось, льда много, но весь он смешан с метановым льдом, азотным льдом и угарным газом.
Читать дальше →

Нечеткий поиск в словаре с универсальным автоматом Левенштейна. Часть 1

Reading time9 min
Views105K


Нечеткий поиск строк является весьма дорогостоящей в смысле вычислительных ресурсов задачей, особенно если вам необходима высокая точность получаемых результатов. В статье описан алгоритм нечеткого поиска в словаре, который обеспечивает высокую скорость поиска при сохранении 100% точности и сравнительно низком потреблении памяти. Именно автомат Левенштейна позволил разработчикам Lucene повысить скорость нечеткого поиска на два порядка
Читать дальше →

«Галоп пикселя — часть третья» — Анимация

Reading time32 min
Views78K


«Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
«Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
«Галоп пикселя», часть III — Анимация (линк)
«Галоп пикселя», часть IV — Анимация света и тени (линк)
«Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

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

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

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

Лопаты в руки.


Лопатить пиксели

О сложности выращивания сакуры: как я участвовал в Ludum Dare 34

Reading time14 min
Views20K
Привет, хабр!

В данном посте речь пойдет о моем участии в конкурсе Ludum Dare 34, который был около трех недель назад.

В результате получился пазл под названием Growing Sakura, геймплей которой можно видеть на гифке (не пугайтесь, она весит всего 300Кб):


Кратко о правилах игры: изначально у нас есть гексагональное поле и несколько корневых бутонов (или один, как на гифке выше). Из него можно пустить 3 ветки (двумя способами — кликая левой или правой кнопкой мыши). Из каждого бутона на ветке левым кликом мыши можно сделать Y-разветвление, а правым — просто продолжить ветку дальше (I-разветвление). Если в каком либо направлении ветка расти не может (соответствующая клетка занята или в нужном направлении нет клетки) — то ветка не растет. В соответствии с последним условием нужно правильно выбирать порядкок «разворачивания» веток. В итоге получится дерево (или несколько деревьев) такое, что между двумя смежными ветками нет острых углов. Цель игры — покрыть все клетки игрового поля.

Не заглядывая под кат попробуйте подумать секунд 10 и прикинуть, насколько сложной может быть эта игра.
Читать дальше →

«Сатурн-5»: как можно утерять технологию ракеты

Reading time7 min
Views126K


В СМИ всё чаще говорят о так называемом «лунном заговоре», конспирологической теории, которая утверждает, что полёт и высадка на Луну в рамках космической программы «Аполлон» были сфабрикованы. Является ли это политической спекуляцией, какие цели преследуют эти обсуждения — это немного другой вопрос. Иногда незамутнённые потоки сознания выплёскиваются и на «Гиктаймс».

Часто говорят, что ракета «Сатурн-5» была слишком хороша для того, чтобы быть реальной. Если она существовала, зачем нужно было начинать программу шаттлов, которые в конечном итоге оказались дороже предшественника? Если она существовала, зачем сейчас вести с нуля разработку сверхтяжёлой ракеты SLS с похожими характеристиками? Как вообще можно утерять технологию производства?
Читать дальше →

Собака бегает на напечатанных на 3D-принтере протезах передних лап

Reading time1 min
Views11K
Дерби родился с деформированными передними лапами. Хозяева отказались от него и собирались отдать в приют, но организация «Peace and Paws Dog Rescue» забрала пса. Тогда Дерби попал на воспитание к Таре Андерсон, директору 3D Systems. Теперь благодаря напечатанным на 3D-принтере лапам Дерби может бегать и сидеть, как любой другой пес.

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

Как я в 2015 году космонавтику популяризовывал

Reading time4 min
Views11K


Одно из моих первых воспоминаний — в три года я искренне радуюсь, что наступает такой замечательный 1989 год. Сейчас Новый Год превратился в гильотину, которая отрезает последние дни года и ехидно ухмыляется «Не успел!» Что ж, хочешь, не хочешь, надо отчитываться за 2015 год. Может быть, кому-нибудь это будет полезно.
Читать дальше →

История победы на ежегодном соревновании Russian AI Cup 2015

Reading time15 min
Views31K
Хочу рассказать о своем участии и победе в ежегодном соревновании по программированию ИИ «Russian AI Cup 2015» от Mail.Ru Group. Посмотреть подробные правила соревнования и записи игры желающие могут на сайте соревнования russianaicup.ru.

image

В этом году соревнование было организовано на совершенно новом уровне. Изменения произошли как в масштабности игрового мира, в котором действует ИИ, так и на сайте соревнования. Благодаря трехмерной визуализации, игры смотрелись гораздо увлекательнее. По зрелищности, на мой взгляд, соревнование значительно превзошло прошлогодний хоккей, и «солдатиков» 2013 года.

Участнику предлагалось написать ИИ для управления автомобилем в гонках на выживание. Как и в прошлом году, задача была «с физикой». Но на это раз исходники «физического движка» были открыты. Еще, в отличие от прошлого года, на этот раз все случайные явления в игровом мире были наглядны — случайная карта, случайно расставленные бонусы. Сразу было видно — когда удача на твоей стороне, а когда она от тебя отвернулась. В прошлогоднем хоккее, даже наблюдая за игрой значительно отличающихся по силе противников, было трудно понять произошел выигрыш благодаря случаю или мастерству. Думаю, это положительно сказалось на зрелищности соревнования.

Краткое описание правил


Цель — проехать 2 круга по замкнутой трассе быстрее всех. Точнее надо набрать больше всех очков, но приехать первым — это основной способ заработать очки. Еще очки дают за сбор бонусов по дороге и нанесение урона противникам. Трасса, как конструктор, собирается из квадратных «тайлов», это прямолинейные участки трассы, углы (поворот трассы на 90 градусов), или перекрестки (Т образные и обычные). Нужно ехать по ключевым точкам («тайлам») трассы в определенном порядке – иногда приходится делать петли, иногда вообще ехать назад. Еще у машинок есть возможность разливать за собой лужи мазута, стрелять друг в друга специальными снарядами (шины и шайбы), и использовать особый ускоритель «нитро». Заряды для всех этих приспособлений ограничены, и пополняются подбиранием случайно разбросанных по карте бонусов.

Расскажу, как устроен мой ИИ, и благодаря чему (как я думаю) удалось победить.
Читать дальше →

Корейцы обнаружили простое средство для борьбы с болезнью Альцгеймера

Reading time3 min
Views14K
image

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

Препарат, оказавший такое удивительное воздействие на мозг млекопитающих – это довольно известное соединение EPPS (или HEPPS — 3-[4-(2-Hydroxyethyl)-1-piperazinyl]propanesulfonic acid). В биохимии и биологии оно используется в качестве буферного раствора, сохраняющего кислотность при добавлении в смесь кислот или оснований.

Наукой пока не установлены причины и протекание болезни Альцгеймера. Симптомами болезни являются расстройство кратковременной памяти, нарушение речи и когнитивных функций. Известно лишь, что примерно 1% случаев заболеваний происходят по генетическим причинам. Болезнь Альцгеймера – самая распространённая причина деменции.

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

Итоги 2015: веб-разработка

Reading time7 min
Views17K
Представители КРОК, Traffic Inspector, WebMoney Transfer и Softline рассказали, что принес 2015-й год в сферу веб-разработки. Эксперты перечислили важнейшие события индустрии и отметили основные тренды уходящего года.



Ключевые события и тренды


2015-й – это год утверждения стандарта HTTP/2 (предыдущая версия протокола была принята в 1999). Это год массового перехода на стандарт HTML-5 с устаревшего Flash, который уже не поддерживается большинством современных браузеров. Это год появления WebAssembly, который в дальнейшем позволит перенести требовательные к производительности приложения в Web, что по мнению Сергея Дорогина, ведущего инженера-разработчика Департамента информационных технологий компании КРОК, означает “начало нового мира”.

Большинство тенденций уходящего года в сфере веб-дизайна, связаны с ростом популярности гаджетов и распространением мобильного интернета. Среди них такие как использование адаптивной верстки вместо создания отдельной мобильной версии сайта. Один из основных трендов – минималистичный дизайн, заданный Apple, помимо этого эксперты пророчат долгоиграющую популярность материальному дизайну от Google.
Читать дальше →

Нейросеть в 11 строчек на Python

Reading time8 min
Views550K

О чём статья


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

Дайте код!


X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
for j in xrange(60000):
    l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
    l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
    l2_delta = (y - l2)*(l2*(1-l2))
    l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
    syn1 += l1.T.dot(l2_delta)
    syn0 += X.T.dot(l1_delta)


Слишком сжато? Давайте разобьём его на более простые части.
Читать дальше →

Чтобы распознавать картинки, не нужно распознавать картинки

Reading time18 min
Views237K
Посмотрите на это фото.



Это совершенно обычная фотография, найденная в Гугле по запросу «железная дорога». И сама дорога тоже ничем особенным не отличается.

Что будет, если убрать это фото и попросить вас нарисовать железную дорогу по памяти?

Если вы ребенок лет семи, и никогда раньше не учились рисовать, то очень может быть, что у вас получится что-то такое:
Осторожно, тяжелые гифки

CoffeeScript array comprehensions — модно, стильно, медленно

Reading time4 min
Views13K
В детстве мне часто говорили, что сахар — белая смерть. Позже я понял, что калории есть калории, а разглагольствующие о вреде сахара зачастую просто не владеют матчастью.

И вдруг выяснилось, что всё, чем меня пугали взрослые — чистая правда. Сахар жуткая вещь, которая убивает мозг и медленно ведёт нас к альцгеймеру. Его нельзя есть никому и никогда. Эта тема подробно раскрыта в книге Гэрри Тауба Good Calories Bad Calories, а также в книге Дэвида Перлмуттера Grain Brain.

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

К счастью, я наделён редким даром. Я всегда узнаю зло, и неважно в какие одежды оно вырядилось на этот раз.
Ужасная правда

4 правила интерфейсов управления контентом, которые никто не соблюдает

Reading time5 min
Views23K
Это первый пост в блоге проекта Флоксим — российской open-source CMS, которую разрабатывает наша команда. Совсем скоро мы откроем бета-версию и расскажем о том, зачем миру нужна новая CMS, что мы можем предложить пользователям и разработчикам и какие у нас планы. А в этой статье я расскажу о нашем подходе к управлению контентом и постараюсь доказать, что это действительно важно.
Читать дальше →

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

Reading time8 min
Views20K
Как вы могли заметить, у нас тут затишье. Но наш творческий поиск не прекращается, и первая октябрьская публикация будет посвящена ACO (Ant Colony Optimization)



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

А ваш язык программирования необоснованный? (или почему предсказуемость важна)

Reading time15 min
Views35K
Как должно быть очевидно, одна из целей этого сайта — убедить принимать F# всерьёз в роли универсального языка разработки.

Но в то время как функциональный стиль всё больше проникает в массы, и C# уже получил такие функциональные средства как лямбды и LINQ, кажется, что C# всё больше и больше наступает на пятки F#. Так что, как это ни странно, но я стал всё чаще слышать как высказывают такие мысли:

  • «C# уже обладает большей частью инструментария F#, и зачем мне напрягаться с переходом?»
  • «Нет никакой необходимости что-то менять. Всё, что нам нужно сделать, так это пару лет подождать, и C# получит достаточно от F#, что обеспечит практически все плюшки.»
  • «F# только чуть лучше, чем C#, но не настолько, чтобы в самом деле тратить время с переходом на него.»
  • «F# кажется действительно неплох, хоть и пугает местами. Но я не могу найти ему практического применения, чтобы использовать вместо C#.»

Не сомневаюсь, что теперь, когда и в Java тоже добавлены лямбды, подобные комментарии зазвучали в экосистеме JVM при обсуждении «Scala и Closure против Java».

Так что в этой статье я собираюсь отойти от F# и сосредоточиться на C# (а на его примере и на других популярных языках), чтобы показать, что даже с реализацией всех мыслимых средств функциональных языков программирование на C# никогда не будет таким же, как на F#.
Читать дальше →

Издательско-писательская кухня

Reading time8 min
Views13K
image
Фото: Fotolia/PhotoXPress.ru

Приветствую, Geektimes! Сегодня я хочу поговорить с вами об издательско-писательской кухне, рассказать о том, что происходит на самом деле на издательском рынке СНГ и какой путь проходит рукопись от автора до конечного читателя. На этом пути нам придётся развеять несколько устоявшихся мифов, кратко пробежаться по статистике и узнать почему книг на прилавках много, а читать нечего. Кроме того, вы узнаете сколько зарабатывают писатели и как выжить начинающему автору в Рунете. В первую очередь мой пост будет интересен любителям научной фантастики и фэнтези, так как именно об этом сегменте рынка пойдет речь ниже. Но тем не менее, он позволит составить краткое представление и о “средней температуре по больнице”.

И прежде, чем начать наш диалог я должен сделать ещё одно важное уточнение. В данном посте я сознательно ввожу одно не совсем корректное обобщение, подразумевая под фантастикой всю совокупность жанров и направлений, начиная от hard fiction и заканчивая городской мистикой. Это сделано специально, чтобы каждый раз не перечислять, что “… я подразумеваю в данном случае фэнтези, фантастический боевик и паноптикум литературы о попаданцах”.


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

Как работает реляционная БД

Reading time51 min
Views559K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →

Information

Rating
Does not participate
Location
Алматы (Алма-Ата), Алма-Атинская обл., Казахстан
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
From 5,000 $