Search
Write a publication
Pull to refresh
27
0
Владимир @Lertmind

Пользователь

Send message

Переустановка иммунной системы. Радикальный новый метод лечения рассеянного склероза доказал свою эффективность

Reading time6 min
Views44K
Во время клинических тестов хроническое аутоиммунное заболевание удалось остановить у 17 из 24 пациентов, но один умер от осложнений


Результаты магнитно-резонансной томографии здорового мозга (слева) и пациента с рассеянным склерозом (справа). Фото: Jessica Wilson/Science Photo Library

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

Тем не менее, результаты испытаний обнадёживающие. Некоторые пациенты, прикованные к инвалидному креслу, полностью избавились от симптомов и сейчас вернулись к полноценной жизни, что можно назвать чудом.
Читать дальше →

Динамический blur на Android

Reading time4 min
Views35K
Информации о том как быстро размыть картинку на Android существует предостаточно.
Но можно ли сделать это настолько эффективно, чтобы без лагов перерисовывать размытый bitmap при любом изменении контента, как это реализовано в iOS?
Читать дальше →

SSLR: Screen Space Local Reflections в AAA-играх

Reading time6 min
Views83K
image

Привет, друг! В этот раз я опять подниму вопрос о графике в ААА-играх. Я уже разобрал методику HDRR (не путать с HDRI) тут и чуть-чуть поговорил о коррекции цвета. Сегодня я расскажу, что такое SSLR (так же известная как SSPR, SSR): Screen Space Local Reflections. Кому интересно — под кат.
Читать дальше →

C++ без new и delete

Reading time15 min
Views91K
Привет, хабравчане!

Меня зовут Михаил Матросов, я технический менеджер в компании Align Technology. Сегодня я поработаю капитаном и немного расскажу об основах современного С++.

Работая над большим проектом, мне часто приходится смотреть чужой код и порой я вижу странное. А именно, многие даже вполне матёрые программисты на С++ могут не знать некоторых фундаментальных для языка вещей. Ну, это даже не слишком удивительно — язык такой.

Мне бы хотелось поговорить об этих основах и начну я со своей любимой темы. Будем говорить об операторах new и delete. А точнее, об их отсутствии. Я расскажу, как писать надёжный и современный код на С++ без использования операторов new и delete.

Казалось бы, тема стара как мир, Саттер и Майерс в своё время всё разложили по полочкам. Именно поэтому я не буду вдаваться в ненужные подробности, отправляя читателей к первоисточникам. Моя цель собрать информацию по вопросу в одном месте, дать соответствующие ссылки и сформулировать ёмкие рекомендации.

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


Изображение взято с сайта behappy.me
Читать дальше →

Фиеричная система счисления, или почему 1 + 10 = 100

Reading time9 min
Views64K
«10.01 х 10.01 = 1000.1001»
Джордж Оруэлл. «1010001001001000.1001001000100001»


image


Существует ли позиционная система счисления с иррациональным основанием, в которой все натуральные числа записываются конечным числом цифр? В которой число больше единицы, не имеющее цифр после запятой, наверняка не целое и даже не рациональное? В которой 1 + 10 = 100, а 1 + 1 = 10.01?
Я заинтригован и хочу узнать ответ

Программирование — занятие не для каждого

Reading time5 min
Views54K


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

Если вы периодически уделяете внимание культурологическим аферам Кремниевой Долины, то несомненно слышали о движении «Учись программировать» (“Learn to Code”). Политики, некоммерческие организации вроде Code.org, и даже бывший мэр Нью-Йорка Майкл Блумберг занимаются пропагандированием того, что они рассматривают в качестве навыка, который скоро будет необходим всему трудоспособному населению.

Возможно, отчасти это и так.

Но реальная картина получается несколько сложнее.
Читать дальше →

Работа с освещением в Unity — теория и практика

Reading time13 min
Views188K
В видеоиграх красивое освещение в реальном времени сильно бьёт по производительности, что особенно заметно на мобильных устройствах. Таким образом, разработчики вынуждены искать методы обхода этой проблемы. Lightmapping — технология, сохраняющая информацию об освещении в текстуру, что позволяет высвободить вычислительные ресурсы под другие нужды.
В этой статье я познакомлю читателя с теорией освещения в играх, опишу процесс создания “лайтмапа” в Unity 5 и поделюсь рядом советов.
image
Читать дальше →

Домен sci-hub.io заблокирован, но сайт доступен под другими именами

Reading time2 min
Views83K
Сайт для бесплатного доступа к научной литературе Sci-Hub испытывает судебное давление со стороны одного из крупнейших издателей научной литературы Elsevier. В процессе борьбы сайт лишился одного из своих доменных имён, sci-hub.io. Но владельцы не собираются складывать оружие, и уже зарегистрировали несколько новых имён.

Судебный иск против Sci-Hub и нескольких аналогичных сайтов был подан издательством Elsevier в прошлом году. Издательству удалось получить предварительное судебное решение, предписывающее владельцам сайта прекратить предоставлять несанкционированный доступ к материалам, принадлежащим издательству. Но этого, естественно, не произошло.
Читать дальше →

Рендеринг капли с прозрачностью и отражениями на OpenGL

Reading time7 min
Views21K

В этой статье мы рассмотрим как рендерить капли на OpenGL и расчитывать на лету нормаль для отражения и прозрачности. А так же, что такое Metaballs, баги графических чипсетов и какие трюки оптимизации можно применить для 60 FPS на мобильных девайсах.


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

Sound Manager для небольших игр и прототипов на Unity

Reading time6 min
Views32K
Воспроизвести звук в Unity просто. Нужно создать компонент AudioSource прикрепить к нему звуковой файл в виде AudioClip и вызвать audioSource.Play() из скрипта. Или даже поставить автовоспроизведение на при создании объекта(Play on Awake).

Сложности начинаются когда звуков в игре становится много. Их все нужно расставить, прописать приоритеты. Звуки отдельно, музыку отдельно. При регулировке громкости звуков и музыки раздельно тоже сложности. Можно, конечно, регулировать громкость разных каналов в AudioMixer, но он не работает в WebGL. А Webplayer сейчас считается устаревшим.

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

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



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

Найден способ тренироваться в пять раз меньше

Reading time2 min
Views38K
image

Канадские физиологи из Университета Макмастер выяснили, что минута упражнений на пределе выносливости может заменить 50 минут тренировок – для сердечно-сосудистой системы результат будет одинаковым. Минута распределяется на три отрезка по 20 секунд, растянутых на 10-минутную тренировку.

Исследователи сравнивали спринт-тренировки (sprint interval training, SIT) с тренировками средней эффективности (moderate-intensity continuous training, MICT). Для этого группа из 27 человек, ведущих малоподвижный образ жизни, в течение 12 недель занималась тренировками на велотренажёрах по различным методикам.
Читать дальше →

The Art of Rx

Reading time8 min
Views19K
Проблема, друзья. Реактивщина везде, её слишком много и уже никому от неё не спрятаться. Мы с вами все умеем написать ASyncTask, Service или ContentProvider (я в это верю!). Все можем повернуть битмапу или сгонять на сервер за данными. Это все довольно очевидно. Но ещё МЫ ДУМАЕМ, что можем готовить реактивищну правильно. Это далеко не всегда так.

Что такое правильное реактивное программирование на Android?


image

– Добрый день. Расскажи в двух словах о себе. Где работаешь, чем занимаешься, когда начал продвигать реактивный подход?

— Привет. Меня зовут Матвей Мальков (на хабре lNevermore ). Я Android-разработчик уже, наверное, лет 5-6. Конкретно сейчас я занимаюсь Scala-разработкой в одном стартапе. Стартап находится в Москве и о нём я говорить особо много не могу. Но суть в том, что это будет такая комьюнити-платформа, наподобие Телеграма. И её я, собственно, пишу под Android на Scala.

Первый проект, который я полностью перевел на RxJava, у меня был в компании 2GIS. Архитектура, база, работа с сетью — всё. После этого начал активно продвигать фреймворк RxJava и реактивный подход в целом на конференциях. Сейчас пишу на Scala, где использую вовсю функциональный подход, а в свободное время интересуюсь новостями реактивного мира.

– Пользователи Хабрахабра наверняка в курсе концепции реактивного программирования. Расскажи про особенности этой парадигмы на Android и про реактивные потоки данных.

– В программировании под Андроид довольно много особенностей, связанных с реактивным программированием. Я как раз хотел бы сказать о том, что не все принципы реактивного программирования, о которых мы попозже подискутируем, хорошо ложатся на Андроид. Чтобы не быть голословным: есть такое понятие как масштабируемость, под которой обычно понимается масштабируемость на большое количество нод, то есть это какая-то серверная масштабируемость. В Андроиде же это всего лишь масштабируемость на треды, что не есть «настоящая маштабируемость». И она не даёт такого большого мощного импакта на систему в целом. Хотя, конечно, всё равно даёт, но по-другому.

Ещё одна особенность заключается в том, что очень много в Андроиде завязано на императивщину. То есть на мутабельность, на изменяемость данных, и конкретно из-за неё очень сложно всё это завернуть в реактивные потоки. Это приводит к тому, что приходится делать много хаков, что всё очень усложняет. Императивность Android заставляет большое количество разработчиков использовать такие вещи, как сабжекты, которые вообще-то были задуманы и сделаны для того, чтобы сращивать мир реактивный и мир императивный. Но по факту, на самом деле, все пользуются им для того, чтобы что-то легко завернуть в Observable, Это обычно происходит в ущерб архитектуре, особенно на длинной дистанции, на больших проектах. Получается мешанина из императивщины и абы как сделанной на ней реактивщины. А всё потому, что многим людям просто лень сделать правильно или они не знают, как именно правильно.

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

Веб-сайты продолжают использовать «тёмные паттерны»: интерфейсы, предназначенные для обмана

Reading time4 min
Views36K
Вот уже более пяти лет Гарри Бринул (Harry Brignull), независимый дизайнер пользовательских интерфейсов из Лондона, собирает уникальную коллекцию DarkPatterns.org — так называемых тёмных паттернов — реальных примеров, как профессионалы используют специфические приёмы веб-дизайна для обмана интернет-пользователей и побуждения их к «нужным» действиям. Например, принуждения к покупке ненужного товара или переходу по рекламной ссылке.

Коллекция Dark Patterns — вовсе не ошибки дизайна, совсем наоборот. Это результат работы грамотных специалистов, которые сознательно применяют своё мастерство в нечистоплотных целях. Они могут назвать это «эффективным дизайном» или «продающим сайтом», но суть именно в манипуляциях с целью получения выгоды.

К сожалению, в последнее время некоторые сайты снова вернулись к этим грязным трюкам. Это видно на примере онлайн-газеты Boston Globe, которая из-за кризиса на рынке СМИ прибегла к обманным приёмам для увеличения количества платных подписчиков.
Читать дальше →

Рендеринг UTF-8 текста с помощью SDF шрифта

Reading time5 min
Views22K

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


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

Волшебный интерфейс

Reading time11 min
Views33K
Powered Interface

Как-то на днях у меня возникла необходимость распечатать более десяти чеков из моей истории платежей, используя банкомат одного из крупнейших банков. Я перешёл в платежи, выбрал “История”, прокрутив скроллер списка до нужного платежа, выбрал его, а затем нажал кнопку “Операции” и выбрал печать. И так повторялось для каждого чека: каждый раз происходил переход в главное меню и всё начиналось заново. Я задумался — неужели, несмотря на обилие источников информации по UX, до сих пор тратятся огромные бюджеты на подобные неудобные интерфейсы? Почему разработчики не хотят делать интерфейс, позволяющий пользователю почувствовать себя волшебником, а делают пользователей беспомощными в достижении своих целей? Возможно, причина в том, что, несмотря на обилие теории, эти источники предоставляют мало примеров из реальных проектов.

Так как мы с коллегами буквально на прошлой неделе завершили большой проект Web Dashboard'а (точнее — компонента, позволяющего создавать и просматривать ваши собственные дэшборды), в котором как раз стояла цель разработки удобного интерфейса, я решил осветить в статье, на какие основные моменты при проектировании интерфейса стоит обратить внимание, и привёл примеры нашего решения.
Читать дальше →

Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 1. Oil Rush

Reading time18 min
Views109K
Игра Oil Rush


В данной статье, состоящей из двух частей, речь пойдёт об использовании возможностей процедурных генераторов при создании контента для компьютерной игры Oil Rush и бенчмарка Valley (выйдет в феврале), разработанных на нашем собственном движке Unigine.
Читать дальше →

Состояние такое

Reading time9 min
Views9.7K
Опять здравствуйте, Хабровчане! В прошлой статье я рассказывал о командах и как ими пользоваться, а сегодня я буду развивать тему и расскажу как привязать команду к конечному автомату. Тема на хабре не нова, поэтому я не буду углубляться в объяснения что такое конечный автомат и зачем он используется, а сосредоточусь на реализации. Сразу оговорюсь что для понимания лучше прочитать предыдущую статью, ведь команды будут практически без изменения использоваться в качестве состояний. Перед началом хочу сказать спасибо OnionFan за его комментарий — не все привычки хороши и его вопрос позволил сделать удобней типизацию конечных автоматов, про которые я расскажу, просто добавив ключевое слово params (я уже поправил в предыдущей статье).
Читать дальше →

Как это сделано: мобильный кроссплатформенный движок

Reading time6 min
Views23K
Для вас подготовил серию статей о мобильном геймдеве, основанную на полученном опыте и пройдённых граблях. В первой статье речь пойдёт о создании собственного кроссплатформенного движка для мобильных игр. По правде говоря не только мобильных, и не только игр.

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

Quad-tree визуализация в реальном времени на Shader Model 2.0

Reading time6 min
Views17K

Пролог


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


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

Information

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