Search
Write a publication
Pull to refresh
40
0
sysprg @sysprg

User

Send message

Зачем переходить на DDR4?

Reading time3 min
Views253K

(источник)
Не так давно был опубликован стандарт на DDR4 SDRAM – оперативную память нового поколения. Стандарт во всех деталях описывает устройство памяти, но о том, в чём, собственно, отличия от памяти предыдущего поколения, или какие преимущества сулит переход на DDR4 сказано или совсем немного или не сказано вообще (вероятно, в надежде на фантазию читателей :-) ).
В этом посте я постараюсь изложить основные отличия DDR3 от DDR4, и какие преимущества несет для конечных пользователей новый стандарт памяти.
Читать дальше →

Тайны кнопок в Android. Часть 2: Рефакторинг верстки

Reading time11 min
Views42K
Приветствую, уважаемое сообщество.

В предыдущей статье мы, используя только верстку, сделали кнопку “включить/выключить”, и вот что у нас тогда получилось:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="6dp"
    android:background="#dddddd" >

    <ToggleButton
       android:id="@+id/act_main_btn_telephony"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/button_background"
       android:drawableLeft="@drawable/icon_phone"
       android:drawableRight="@drawable/icon_on_off"
       android:gravity="left|center_vertical"
       android:textOn="Телефония"
       android:textOff="Телефония"
       android:textSize="24sp"
       android:textStyle="bold|italic"
       android:textColor="@color/text_color"
       android:onClick="onToggleButtonClick" />

</RelativeLayout>

XML-код получился довольно увесистый. В этой статье я покажу, как сделать его по-настоящему красивым. Мы сократим код вдвое, убрав все, что может затруднить сопровождение нашего приложения или вызвать недовольство тим-лида. В этой статье мы будем использовать строковые ресурсы (strings.xml), ресурсы размерностей (dimens.xml), стили и темы (styles.xml).
Читать дальше →

Тайны кнопок в Android. Часть 1: Основы верстки

Reading time18 min
Views239K
Приветствую, уважаемое сообщество.

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

Первая часть предназначена для начинающих разработчиков. Я покажу, как сделать достаточно сложную кнопку исключительно версткой, не применяя Java-кода, ни тем более собственных компонентов. Знание этих приемов верстки пригодится и при работе с другими компонентами Android. По ходу статьи я буду подробно пояснять, что означают те или иные константы, атрибуты, команды и тому подобное. Но я также буду давать ссылки на официальную документацию Google, где вы можете подробно изучить каждую тему. Данная статья обзорная, я не ставлю цели привести здесь всю документацию, переведенную на русский язык. Поэтому я рекомендую изучать официальные источники, в частности те статьи, ссылки на которые я привожу здесь.

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

Задача изменения голоса. Часть 1. Что такое голос?

Reading time12 min
Views55K
Этим постом мы хотели бы начать цикл статей, посвященных задаче изменения голоса. В зарубежной литературе данную задачу часто именуют термином voice morphing, в отечественной литературе данная задача ещё не получила достаточного освещения как в научных, так и в инженерных кругах. Тема является достаточно обширной и во многом творческой. В результате работы в данном направлении у нас накопился определенный опыт, который мы планируем систематизировать и изложить, а также передать основную суть некоторых алгоритмов.

image

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

P.S.
Добавил дополнительные ссылки на первоисточники

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

Новые исследования: как ещё связано SEO и социальные сигналы?

Reading time4 min
Views35K
Компания SearchMetrics, разрабатывающая аналитические программы для SEO, ежегодно исследует тысячи сайтов на первых страницах SERP по разным запросам, чтобы выявить закономерности попадания различных ресурсов в выдачи поисковых систем. А далее – определить важность тех или иных факторов при ранжировании этих площадок в Google. В 2013 году сайты, выпадающие на топовых страницах SERP, объединяют сильные социальные сигналы. Среди приблизительно 50 анализируемых факторов на первом месте по важности оказалось число +1 на Google+. Далее в списке идут: количество шеров на Facebook, количество и качество обратных ссылок (заметьте, только третье место), число друзей, лайков, комментариев на Facebook, активность на Pinterest и Twitter и т. д.

image

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

60 FPS? Легко! pointer-events:none!

Reading time2 min
Views99K


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

.hover .element:hover {
  box-shadow: 1px 1px 1px #000;
}
Читать дальше →

Как передавать данные из рекламных систем Яндекс.Директ и Google AdWords в Google Analytics

Reading time3 min
Views27K
Мы уже неоднократно писали и говорили о колоссальных возможностях Google Analytics. Настроив необходимые отчеты, можно отслеживать и анализировать онлайн и оффлайн кампании, а так же многое узнать о посетителях сайта и качественно улучшить взаимодействие с ними. В комментариях к прошлому материалу, посвященному GA, нас попросили подробно рассказать, как связать аккаунт Google Analytics с рекламными системами Яндекс.Директ и Google AdWords.

Передаем данные из AdWords


Как известно, Google Analytics и AdWords – продукты одной компании, поэтому они легко встраиваются и отлично дополняют друг друга. Связывание аккаунтов двух систем позволяет анализировать действия посетителей на сайте, в том числе, как они взаимодействуют с ресурсом после перехода с рекламного объявления: какой показатель отказов, сколько времени они провели на сайте, количество просмотренных страниц, какое количество посетителей впервые пришли на сайт и т.д. В итоге вы будете понимать, какая часть трафика и объема продаж получена благодаря AdWords. Сможете оценить эффективность ваших рекламных объявлений и более рационально управлять кампанией.

После связывания аккаунтов Google Analytics и AdWords они смогут обмениваться данными, а у вас появится возможность:
  • импортировать цели и транзакции Google Analytics в AdWords;
  • просматривать данные Google Analytics о привлечении трафика на сайт в AdWords;
  • создавать в Google Analytics списки ремаркетинга и использовать их в AdWords для таргетинга определенной аудитории;
  • автоматически просматривать данные AdWords о кликах и расходах рядом с данными Google Analytics о привлечении трафика на сайт.

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

Цветовая пипетка на JS, 399 символов (не строк)

Reading time2 min
Views6.9K
(Если уж делать в 5 строк JS+HTML+CSS, то что-то полезное.)

Так называемый Color Picker предназначен для копирования в буфер обмена HEX-кода одного из 216 цветов «безопасной» веб-палитры одним кликом и Ctrl-C.

Пикер умеет много гитик:
1) показывает код цвета по наведению мыши;
2) предоставляет код для копирования по клику;
3) переформатируется в другое количество цветов и ячеек без изменения объёма кода.

<body onload="var H=512,D=51,s='',h=function(a){return a.toString(16).substr(1)},r=256,g,b,v;for(;r<H;r+=D){for(g=256;g<H;g+=D)for(b=256;b<H;b+=D)s+='&lt;b style=&quot;background-color:'+(v=h(r)+h(g)+h(b))+';display:inline-block;width:8px;height:8px;border:1px solid;margin:-1px&quot;onmouseover=this.title=\''+v+'\' onclick=prompt(\'\',\''+v+'\') >&lt;/b>';s+='&lt;br>'}document.body.innerHTML+=s">

Гитхаб-демо (фиддл поддерживать это не умеет)
подробнее

Lock-free структуры данных. Внутри. Схемы управления памятью

Reading time28 min
Views53K

Как я упоминал в своих предыдущих заметках, основными трудностями при реализации lock-free структур данных являются ABA-проблема и удаление памяти. Я разделяю эти две проблемы, хоть они и связаны: дело в том, что существуют алгоритмы, решающие только одну из них.
В этой статье я дам обзор известных мне методов безопасного удаления памяти (safe memory reclamation) для lock-free контейнеров. Демонстрировать применение того или иного метода я буду на классической lock-free очереди Майкла-Скотта [MS98].

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

Латентно-семантический анализ и поиск на python

Reading time7 min
Views58K


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

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

Далее прошу под кат

Латентно-семантический анализ

Reading time4 min
Views100K
Как находить тексты похожие по смыслу? Какие есть алгоритмы для поиска текстов одной тематики? – Вопросы регулярно возникающие на различных программистских форумах. Сегодня я расскажу об одном из подходов, которым активно пользуются поисковые гиганты и который звучит чем-то вроде мантры для SEO aka поисковых оптимизаторов. Этот подход называет латентно-семантический анализ (LSA), он же латентно-семантическое индексирование (LSI)

Латентно-семантический анализ

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

Трагедия общин в реальном мире или купонная лихорадка-2

Reading time6 min
Views110K
Вы знаете, что такое трагедия общин? Это термин из теории игр, ситуация, когда участники игры излишне потребляя какой-либо ресурс, вредят и себе и остальным. Но в то же время, одиночный участник, не потребляя ресурс, не получит выигрыша вообще, в то время как потребление ресурса практически не сократится — остальные потребители-то не поменяют свое поведение. Ничего не напоминает?

Конечно, недавний ажиотаж с купонами для Ebay.
Читать дальше →

ABC-сортировка

Reading time6 min
Views48K

Данная разновидность поразрядной MSD-сортировки «заточена» для строк. Впрочем, алгоритм так назван отнюдь не за лексическую специализацию. Автор Аллен Бичик (Allen Beechick) выбрал название в честь себя любимого, ABCsort расшифровывается как Allen Beechick Character sort.

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

Что касается алгоритма, то это единственно известная мне сортировка, за использование которой её изобретатель требует деньги.
Богоугодная сортировка за 88 у.е.

Пять удивительных математических фактов

Reading time4 min
Views153K
Для начала небольшой спойлер

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

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

Некоторые люди считают математику скучной. Следующие примеры показывают, что она какая угодно, но не такая
Читать дальше →

Lock-free структуры данных. Основы: Модель памяти

Reading time18 min
Views103K

В предыдущей статье мы заглянули внутрь процессора, пусть и гипотетического. Мы выяснили, что для корректного выполнения параллельного кода процессору необходимо подсказывать, до каких пределов ему разрешено проводить свои внутренние оптимизации чтения/записи. Эти подсказки – барьеры памяти. Барьеры памяти позволяют в той или иной мере упорядочить обращения к памяти (точнее, кэшу, — процессор взаимодействует с внешним миром только через кэш). “Тяжесть” такого упорядочения может быть разной, — каждая архитектура может предоставлять целый набор барьеров “на выбор”. Используя те или иные барьеры памяти, мы можем построить разные модели памяти — набор гарантий, которые будут выполняться для наших программ.

В этой статье мы рассмотрим модель памяти C++11.
Читать дальше →

10 советов по борьбе с патентными троллями

Reading time13 min
Views38K
Доброе утро, Хабр! Нет, сегодня не про вирусы, и даже не про антивирусы. Сегодня про троллей. Патентных. Как вы, возможно, уже слышали, недавно мы («Лаборатория Касперского») задавили еще одного из них — Lodsys. Битва была во всех смыслах эпической: мало того, что само разбирательство длилось аж полтора года, а количество ответчиков превышало 50 штук, так еще и до финиша мы добрались в полном одиночестве, заставив гадину бежать с поля боя, трусливо поджав патенты. Так вот, учитывая, что это была далеко не первая (и не последняя) схватка, можно смело говорить о том, что у нас накопился внушительный опыт в борьбе с патентными троллями разных мастей, размеров и степени наглости. И таким опытом очень хочется поделиться с вами.

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

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

Нормализация образования в резюме на hh.ru

Reading time6 min
Views26K


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

Соискатели, со своей стороны, указывают образование в резюме не очень охотно. Аббревиатура в поле образования – это еще хороший вариант. Часто можно встретить просто «техническое» или «именем Ленина».

На hh.ru «образование» до недавних пор было свободным текстовым полем, что не позволяло полноценно искать кандидатов по этому критерию, зрительно легко считывать информацию об образовании в резюме, а нам – строить статистику, полезную рынку. Поэтому настало время помочь пользователям, создав справочник вузов и нормализовав это поле.

О том, как мы решали эту задачу с 11 млн резюме и как реагировали пользователи, – в этой статье.
Читать дальше →

Юзабилити посадочного талона: как спасти две человеческие жизни в год

Reading time4 min
Views155K
У авиакомпаний было 90 лет, чтобы нарисовать посадочный талон, и они все равно облажались. Я предлагаю сделать так:


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

Алгоритм Ахо-Корасик

Reading time8 min
Views106K

Вступление


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

Начальное описание


Алгоритм Ахо-Корасик реализует эффективный поиск всех вхождений всех строк-образцов в заданную строку. Был разработан в 1975 году Альфредом Ахо и Маргарет Корасик.
Опишем формально условие задачи. На вход поступают несколько строк pattern[i] и строка s. Наша задача — найти все возможные вхождения строк pattern[i] в s.

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

Алгоритм поиска наименьшего общего предка в дереве

Reading time5 min
Views35K
На досуге мне пришла интересная идея, которую я развил в алгоритм нахождения наименьшего общего предка(LCA) двух вершин в дереве. До появления этой идеи других алгоритмов для поиска LCA я не знал. Проверив корректность работы я поспешил изучить другие алгоритмы для решения этой задачи, но аналогичных моему я не нашел. Теперь поспешу поделиться им с сообществом.

Введение

Деревом называется неориентированный связный граф из N вершин и N-1 ребер. Из любой вершины до любой другой существует ровно один простой путь.
Корнем дерева будет называться такая вершина, от которой задано направление движения по дереву при его обходе.
Наименьшим общим предком двух вершин u и v будет называться такая вершина p, которая лежит на пути из корня и до вершины v, и до вершины u, а также максимально удаленная от него.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity