Search
Write a publication
Pull to refresh
68
0
Nagg @Nagg

Разработчик

Send message

Sasha Goldshtein, гуру .NET Performance, выступит на .NET-конференции в Питере

Reading time3 min
Views11K
В июне к нам на конференцию DotNext приедут две звезды .NET-программирования мирового уровня — Dino Esposito и Sasha Goldshtein.

Оба наших супергостя знамениты двумя вещами:
  • они авторы прекрасных книг;
  • они замечательные спикеры.

Про Дино я уже пару раз писал, и наверное напишу и в этот раз. А сегодня я расскажу вам про Сашу.

Саша Голдштейн / Sasha Goldshtein


Саша Голдштейн — ведущий мировой эксперт по производительности .NET-платформы, восьмикратный Microsoft MVP, автор прекрасной (и, наверное, единственной) серьезной книги по производительности .NET «Pro .NET Performance» (eng, rus).


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

Введение в RxJava: Создание последовательности

Reading time8 min
Views67K
image

Теперь, когда мы понимаем основные принципы Rx, настало время научиться создавать и управлять последовательностями. Стиль управления последовательностями был позаимствован у оригинального C# LINQ, который в свою очередь был вдохновлен функциональным программироанием. Мы поделим все операции по темам, которые отсортированы в порядке возрастания сложности операций. Большинство операторов Rx управляют уже существующими последовательностями, но для начала мы научимся их создавать.

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

Асинхронные операции и пересоздание Activity в Android

Reading time11 min
Views17K
В одной статье на хабре (274635) было продемонстрировано любопытное решение для передачи объекта из onSaveInstanceState в onRestoreInstanceState без сериализации. Там используется метод writeStrongBinder(IBInder) класса android.os.Parcel.

Такое решение корректно функционирует до тех пор, пока Android не выгрузит ваше приложение. А он вправе это сделать.
…system may safely kill its process to reclaim memory for other foreground or visible processes…
(http://developer.android.com/intl/ru/reference/android/app/Activity.html)

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

Синхронизация в онлайн играх

Reading time2 min
Views16K
Многопользовательская онлайн игра – передача пакетов и обмен сообщеями между клиентами и сером(client-server,p2p,tcp/upd, графы)
Представьте себе многопользовательсукую игру по типу lineage
Читать дальше →

Немного о сокетах, redis и битых яйцах

Reading time5 min
Views43K
Работать в пятницу после обеда первого апреля не хочется — вдруг ещё техника выкинет какую-нибудь шутку. Потому решил о чем-либо написать.
Не так давно на просторах хабра в одной статье огульно охаяли сразу Unix-сокеты, mysql, php и redis. Говорить обо всём в одной статье не будем, остановимся на сокетах и немного на redis.
Итак вопрос: что быстрее Unix- или TCP-сокеты?
Вопрос, который не стоит и выеденного яйца, однако, постоянно муссируемый и писать не стал бы если б не опрос в той самой статье, согласно которому едва-ли не половина респондентов считает, что лучше/надёжнее/стабильнее использовать TCP-сокеты.
Тем, кто и так выбирает AF_UNIX, можно дальше не читать.
Читать дальше →

Архитектура Android приложений

Reading time8 min
Views76K

Наше путешествие от стандартных Activity и AsyncTask'ов к современной MVP архитектуре с применением RxJava.



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

Экосистема средств разработки под Android развивается очень быстро. Каждую неделю кто-то создаёт новые инструменты, обновляет существующие библиотеки, пишет новые статьи, или выступает с докладами. Если вы уедете в отпуск на месяц, то к моменту вашего возвращения уже будет опубликована свежая версия Support Library и/или Google Play Services.

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

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

Reading time9 min
Views105K


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

Механизмы и принципы работы памяти головного мозга человека

Reading time6 min
Views123K
image

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

В подготовленном материале постараюсь объяснить механизмы, особенности, функциональность, структурные взаимодействия и особенности в работе памяти. Так же, почему нельзя проводить аналогии с компьютерами в работе мозга и вести исчисления в единицах измерения машинного языка. В статье используются материалы взятые из трудов людей, посвятившим жизнь не легкому труду в изучении цитоархитектоники и морфогенетике, подтвержденный на практике и имеющие результаты в доказательной медицине. В частности используются данные Савельева С.В. учёного, эволюциониста, палеоневролога, доктора биологических наук, профессора, заведующего лабораторией развития нервной системы Института морфологии человека РАН.
Читать дальше →

Наши маленькие радости или чем бюджетно порадовать себя на 23 февраля?

Reading time3 min
Views16K
Близится наш, ежегодный мужской праздник. В этот замечательный день, наши женщины будут дарить нам любовь, ласку и носки. И мы будем искренне изображать на лице радость от столь неожиданного и желанного подарка, ведь мы их любим такими, какие они есть. Я про женщин конечно, впрочем, и про носки тоже.

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

1. Гамак для ног$13.92 (*)
image
Читать дальше →

Низкоуровневая оптимизация параллельных алгоритмов или SIMD в .NET

Reading time12 min
Views47K
image

В настоящее время огромное количество задач требует большой производительности систем. Бесконечно увеличивать количество транзисторов на кристалле процессора не позволяют физические ограничения. Геометрические размеры транзисторов нельзя физически уменьшать, так как при превышении возможно допустимых размеров начинают проявляться явления, которые не заметны при больших размерах активных элементов — начинают сильно сказываться квантовые размерные эффекты. Транзисторы начинают работать не как транзисторы.
А закон Мура здесь ни при чем. Это был и остается законом стоимости, а увеличение количества транзисторов на кристалле — это скорее следствие из закона. Таким образом, для того, чтобы увеличивать мощность компьютерных систем приходится искать другие способы. Это использование мультипроцессоров, мультикомпьютеров. Такой подход характеризуется большим количеством процессорных элементов, что приводит к независимому исполнение подзадач на каждом вычислительном устройстве.
Читать дальше

«IT — это достаточно бедная индустрия» — интервью с Дмитрием Нестеруком из JetBrains

Reading time29 min
Views83K
Всем привет. Это снова «Без слайдов», и сегодня у меня для вас интервью с Дмитрием Нестеруком aka mezastel, техническим евангелистом компании JetBrains. Дмитрия я знаю довольно давно и, не скрою, сам очень долго ждал момента, когда мы наконец поедем на студию и запишемся. Уж больно много вопросов у меня к нему накопилось.



Мы больше часа беседовали с Дмитрием, но не успели затронуть даже половины тем, которые хотелось обсудить. Что Дмитрий успел рассказать мне:
  • Чем технический евангелист отличается от Developer Advocate
  • Как работает евангелизм в JetBrains
  • О восприятии мира настоящими гиками
  • Почему IT — это бедная индустрия
  • Про маржу и инвестиции российских аутсорсеров
  • Про то, какие enterprise решения позорят индустрию и почему
  • Насколько далека JetBrains от своего простого потребителя
  • Об том, как индустрия видеоигр смогла «вырастить» под себя целый сектор железа
  • Что сейчас творится на рынке видеокарт
  • Что еще могут придумать компании, для того, чтобы программы работали быстрее
  • О том, как будет выживать ReSharper и о 64-битных IDE от Microsoft


Вот видео, а под катом, как обычно, текстовая версия этого интервью.


(на одиннадцатой минуте нет звука, к сожалению.)
Читать дальше →

Lumo Lift — электронный корректор осанки для офиса

Reading time4 min
Views20K
Озадаченность «правильным положением спины» подтверждается хотя бы обилием проектов, посвященных позвоночнику и выправке. И самый простой способ поддерживать ровное положение — корректоры осанки, об одном из которых мы расскажем сегодня — Lumo Lift.



Аксиома, которая толкает производителей к созданию «гаджетов для осанки», довольно проста: здоровый позвоночник — гарант нормального функционирования всех систем организма. Однако лечебными свойствами корректоры не обладают. Разве что — профилактическими, а потому и играют с концептом «Осанка».

Здесь тоже следует оговориться, так как в разных научных дисциплинах под осанкой разумеют разные понятия. Скажем, в исторической парадигме под осанкой надо понимать признак, отличающий человека прямоходящего от животного, который был приобретен в процессе эволюции. «Медицинская осанка» — типология нескольких форм позвоночника здорового и искривленного. В лингвистическом смысле слово является однокоренным заимствованным из тюркских языков «сан», что означало «высокое звание, чин» и не было сильно распространено в старославянском языке. Однако и Черных, и Фасмер находят родственные ему в санскрите: «sanu» — вершина, высота, или — продолжая рассуждать — устремление в верх. В этом же ряду слово «приосаниться», принять определенную позу. В рамках этого же семантического ядра толкует «Осанку» и Даль, у которого: «под осанкою разумеют стройность, величавость, приличие и красоту, почему осанистый, стройный телом и приятно величавый в движениях своих».



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

Под капотом Redis: Строки

Reading time9 min
Views32K
Если вы знаете, почему простая строка `strings` в Redis займёт в оперативной памяти 56 байт — вам, думаю, статья не будет интересна. Всем остальным я попробую рассказать, что такое строки в Redis и почему использующему эту базу данных разработчику важно понимать, как они устроены и работают. Это знание особенно важно, если вы пытаетесь рассчитать фактическое потребление памяти вашим приложением или планируете строить высоко нагруженные системы статистики или учёта данных. Или, как часто бывает, пытаетесь срочно понять, почему вдруг ваш экземпляр redis стал потреблять неожиданно много памяти.
Читать дальше →

Введение в RxJava: Жизненный цикл подписки

Reading time4 min
Views60K
image

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

«Хранимые процедуры» в Redis

Reading time5 min
Views30K
image

Многие знают про возможность хранить процедуры в sql базах данных, про это написано немало пухлых руководств и статей. Однако мало кто знает, что схожие возможности имеются и в Redis, начиная с версии 2.6.0. Но так как Redis не является реляционной БД, то и принципы описания хранимых процедур достаточно сильно отличаются. Хранимые процедуры в Redis — практически полноценные Lua скрипты (на момент написания статьи в качестве интерпретатора используется Lua 5.1).
Подробности тут

На рабочем месте за $5900 можно работать стоя, сидя и даже лёжа

Reading time1 min
Views21K


Калифорнийский стартап Altwork занимается решением проблемы с неудобными рабочими местами у всех тех людей, кто весь день трудится, сидя перед компьютером. Скомбинировав различные решения, стартап выдал Altwork Station – комбинацию из рабочего стола и кресла, которые при помощи электромоторов могут превращать ваше рабочее место не только в стоячее и сидячее, но и в лежачее.

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

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

Корректор осанки за $10 млн. Lumo Lift представили новую платформу для контроля за движениями

Reading time3 min
Views11K


Компания Lumo Bodytech, разработчик таких продуктов, как Lumo Lift и Lumo Run, в этом месяце представила сразу две новинки. И если одна из них — умные шорты — кажется вполне ожидаемой, то разработка программной платформы для контроля за движениями во время тренировок вызвала широкий резонанс в прессе и позволила привлечь инвестиции в размере $10 млн. Подробнее внутри.
Читать дальше →

Эра NoSQL позади

Reading time5 min
Views55K

Новый тренд на HighLoad++ — множество докладов об использовании оперативной памяти. Слово Константину Осипову, разработчику платформы Tarantool, автору доклада «Что особенного в СУБД для данных в оперативной памяти».

Ты отвечал в MySQL за производительность, как так получилось, что ты решил разрабатывать свою СУБД?
В MySQL я руководил одной из команд разработки сервера, за производительность там отвечали все.

MySQL по многим параметрам был работой мечты, но, к сожалению после того, как мы стали частью Oracle, многое изменилось.

Несколько моих коллег ушли в MariaDB, кто-то основал свою компанию (SeveralNines, FromDual). Я никогда не чувствовал себя «недогруженным», а с уходом многих ключевых разработчиков работа вообще превратилась в марафон по передаче знаний. Сопротивление поглощению, желание начать всё с чистого листа, бунт против медленного принятия решений большой компанией, нежелание по разным причинам уезжать в США, в конце концов, хорошее предложение от Mail.Ru, которому к этому моменту уже было около года — и я ушёл.

Если бы знал, куда ухожу, ещё десять раз подумал бы. Иногда вообще не было веры, что удастся сделать что-то полезное, чем будут пользоваться за пределами Mail.Ru, да и сейчас Tarantool очень далёк пока от «идеальной СУБД».
Читать дальше →

XMetrics Fit: почти идеальный фитнес-трекер для пловцов

Reading time3 min
Views7.3K


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

Что делать пловцу, который хотел бы получить девайс, который «заточен» исключительно под плавание? Относительно недавно появилось приемлемое решение — трекер XMetrics Fit, который создан пловцами для пловцов. Если кратко, то этот трекер умеет опредялть количество кругов, количество взмахов, общее время тренировки, отслеживать цели и производительность. Но есть и другие возможности, подробнее о них давайте поговорим под катом.
Читать дальше →

Дюк, вынеси мусор! — 1. Введение

Reading time13 min
Views239K


Наверняка вы уже читали не один обзор механизмов сборки мусора в Java и настройка таких опций, как Xmx и Xms, превратилась для вас в обычную рутину. Но действительно ли вы в деталях понимаете, что происходит под капотом вашей виртуальной машины в тот момент, когда приходит время избавиться от ненужных объектов в памяти и ваш идеально оптимизированный метод начинает выполняться в несколько раз дольше положенного? И знаете ли вы, какие возможности предоставляют вам последние версии Java для оптимизации ответственной работы по сборке мусора, зачастую сильно влияющей на производительность вашего приложения?

Попробуем в нескольких статьях пройти путь от описания базовых идей, лежащих в основе всех сборщиков мусора, до разбора алгоритмов работы и возможностей тонкой настройки различных сборщиков Java HotSpot VM (вы ведь знаете, что таких сборщиков четыре?). И самое главное, рассмотрим, каким образом эти знания можно использовать на практике.
Узнать

Information

Rating
4,402-nd
Registered
Activity