Недавно Cбер запустил Салют — семейство виртуальных ассистентов, которые работают на разных платформах. Мы в SberDevices, кроме самого ассистента, занимаемся разработкой инструментов, которые позволяют любому разработчику удобно создавать навыки, которые называются смартапы. Кроме общеизвестных диалоговых сценариев в формате чата — ChatApp, можно создавать смартапы в формате веб-приложения на любых известных веб-технологиях — Canvas App. О том, как создать простейший смартап такого типа на JS, и пойдет сегодня речь.
Пользователь
Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 6 из 6
6 мин
60KТуториал
Содержание основного курса
- Статья 1: алгоритм Брезенхэма
- Статья 2: растеризация треугольника + отсечение задних граней
- Статья 3: Удаление невидимых поверхностей: z-буфер
- Статья 4: Необходимая геометрия: фестиваль матриц
- Статья 5: Пишем шейдеры под нашу библиотеку
- Статья 6: Чуть больше, чем просто шейдер: просчёт теней
Улучшение кода
Official translation (with a bit of polishing) is available here.
Shadow mapping
Ну вот наш краткий курс подходит к концу, задача на сегодня — научиться отрисовывать тени (внимание, просчёт полутеней — это отдельная тема):
Как всегда, код доступен на гитхабе
+62
Несколько полезных CSS-трюков
3 мин
56KВо время работы над последним проектом накопилось несколько интересных CSS-трюков, о которых хочу рассказать. Хотя, возможно, это уже придумано до нас и все об этом уже знают. В примерах используется LESS, а не чистый CSS.
Проблема: узнать, что пользователь воспользовался функцией автоподстановки. Задача была в том, чтобы подсвечивать кнопку Login, если в полях e-mail и password введено что-либо. Проблема в том, что если эти поля заполняются автоподстановкой из ключницы браузера, то событие change на инпутах не выстреливает.
Решение: использовать псевдокласс :valid. Он срабатывает у инпута, если в нем есть контент, который удовлетворяет типу инпута (text, e-mail) и если у этого инпута стоит атрибут required. Правда решение не работает в IE, но нам не требуется поддержка этого браузера.
Событие автоподстановки в инпут поля
Проблема: узнать, что пользователь воспользовался функцией автоподстановки. Задача была в том, чтобы подсвечивать кнопку Login, если в полях e-mail и password введено что-либо. Проблема в том, что если эти поля заполняются автоподстановкой из ключницы браузера, то событие change на инпутах не выстреливает.
Решение: использовать псевдокласс :valid. Он срабатывает у инпута, если в нем есть контент, который удовлетворяет типу инпута (text, e-mail) и если у этого инпута стоит атрибут required. Правда решение не работает в IE, но нам не требуется поддержка этого браузера.
<input required="required" class="email-input" type="email" />
<input required="required" class="password-input" type="password"/>
<div class="go">Login</div>
.email-input:valid ~ .password-input:valid ~ .go {
//стили для активной кнопки Login
}
+53
Руководство хакера по нейронным сетям. Глава 2: Машинное обучение. Обучение сети на основе метода опорных векторов (SVM)
8 мин
15KПеревод
Содержание:
В качестве конкретного примера давайте рассмотрим SVM. SVM – это очень популярный линейный классификатор. Его функциональная форма имеет именно такой же вид, как я описывал в предыдущем разделе — f(x,y)=ax+by+c. На данном этапе, если вы видели описание SVM, вы наверняка ожидаете, что я буду определять функцию потерь SVM и погружаться в пояснения свободных переменных, геометрических понятий больших полей, ядер, двойственности и пр. Но здесь я бы хотел воспользоваться другим подходом.
Глава 1: Схемы реальных значений
Часть 1:
Часть 2:
Часть 3:
Часть 4:
Часть 5:
Часть 6:
Введение
Базовый сценарий: Простой логический элемент в схеме
Цель
Стратегия №1: Произвольный локальный поиск
Часть 2:
Стратегия №2: Числовой градиент
Часть 3:
Стратегия №3: Аналитический градиент
Часть 4:
Схемы с несколькими логическими элементами
Обратное распространение ошибки
Часть 5:
Шаблоны в «обратном» потоке
Пример "Один нейрон"
Часть 6:
Становимся мастером обратного распространения ошибки
Глава 2: Машинное обучение
В качестве конкретного примера давайте рассмотрим SVM. SVM – это очень популярный линейный классификатор. Его функциональная форма имеет именно такой же вид, как я описывал в предыдущем разделе — f(x,y)=ax+by+c. На данном этапе, если вы видели описание SVM, вы наверняка ожидаете, что я буду определять функцию потерь SVM и погружаться в пояснения свободных переменных, геометрических понятий больших полей, ядер, двойственности и пр. Но здесь я бы хотел воспользоваться другим подходом.
+11
Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures»
3 мин
64KТуториал
Привет, Хабр!
Мы (@ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.
В учебнике подробно рассматриваются, объясняются и анализируются наиболее часто используемые структуры данных и алгоритмы. Изложение идёт от простого (что такое алгоритм, как оценить его производительность) к сложному (деревья, графы) с живыми примерами и кодом. В качестве языка программирования выбран Python, а для тех, кто с ним плохо знаком, в первой главе есть большой раздел с его концентрированным описанием.
Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.
Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».
Не обделены вниманием и классические алгоритмы для сортировки и поиска. И, естественно, для каждого из них анализируются производительность и «подводные камни», а так же даются рекомендации по применению. В последних главах, посвящённых деревьям и графам, даётся много материала об их разновидностях и связанных с ними алгоритмах. Изложение тут становится более сжатым, многие моменты просто описываются с тем, чтобы после прочтения главы читатель реализовал их самостоятельно.
Мы (@ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.
О чём?
В учебнике подробно рассматриваются, объясняются и анализируются наиболее часто используемые структуры данных и алгоритмы. Изложение идёт от простого (что такое алгоритм, как оценить его производительность) к сложному (деревья, графы) с живыми примерами и кодом. В качестве языка программирования выбран Python, а для тех, кто с ним плохо знаком, в первой главе есть большой раздел с его концентрированным описанием.
Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.
Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».
Не обделены вниманием и классические алгоритмы для сортировки и поиска. И, естественно, для каждого из них анализируются производительность и «подводные камни», а так же даются рекомендации по применению. В последних главах, посвящённых деревьям и графам, даётся много материала об их разновидностях и связанных с ними алгоритмах. Изложение тут становится более сжатым, многие моменты просто описываются с тем, чтобы после прочтения главы читатель реализовал их самостоятельно.
+48
Компьютер для незрячих становится доступней
1 мин
35KИнтересную разработку на этой неделе представил в Томске программист Михаил Пожидаев. В восемнадцать лет Михаил потерял зрение, но не оставил мечту получить профильное образование программиста. Эта не простая жизненная ситуация подтолкуна его к разработке специального программного обеспечения для слепых и слабовидящих людей.
+48
Восстановить Apple keyboard aluminium после попадания жидкости
4 мин
120KВсе началось с того, что однажды мне залили красным вином проводную клавиатуру от Apple (MB110RS). Максимум, что было сделано до того, когда я об этом узнал, лишь удаление внешних следов попадания жидкости.
Надо отметить, что эта клавиатура не зря считается одной из самых удобных в своем роде в принципе: легкий тихий ход клавиш, полностью свободные и расслабленные руки при работе за ней, приятный дизайн.
Так вот именно своего главного достоинства — легкого хода клавиш — после того, как под них попало вино, клавиатура почти лишилась: стали залипать кнопки в особенности нижнего ряда — Shift, Ctrl, Alt, Cmd и в первую очередь Пробел. Оно и понятно — попавшая жидкость ввиду наклона клавиатуры устремилась в нижнюю ее часть, и вино, вода из которого успела испариться, оставило свой сухой остаток на контактных площадках, пружинящих резинках и под клавишами. Справедливости ради стоит сказать, что даже после этого клавиатура продолжала работать.
+58
Куда исчезает место на жестком диске в Mac OS Х
1 мин
174KЯвляясь счастливым обладателем MacBook Pro с SSD на 256Gb, стал замечать, что система непонятным образом «разрастается».
Вроде бы фильмы качаются на внешний жесткий диск, на SSD находятся только рабочие файлы, а место куда-то исчезает.
Из 256Gb со временем осталось лишь 107Gb.
Утилита OmniDiskSweeper показывала, что должно быть занято около 70 Gb пользовательскими данными. Вопрос — куда делись еще примерно 80Gb?
Набрав в терминале
# du -h -d 1 /
увидел в корне странную папку с названием /.MobileBackups, как раз и занимающую 80Gb.
Дальнейший поиск выяснил — что это локальный бекап, который создает TimeMachine на случай, если у вас не окажется под рукой диска с резервными копиями. Т.е. по сути, когда вы удаляете файлы из корзины, они не удаляются физически, а переносятся в эту папку.
Отключается все это через консоль:
# sudo tmutil disablelocal
Дополнительно можно почитать здесь.
Вроде бы фильмы качаются на внешний жесткий диск, на SSD находятся только рабочие файлы, а место куда-то исчезает.
Из 256Gb со временем осталось лишь 107Gb.
Утилита OmniDiskSweeper показывала, что должно быть занято около 70 Gb пользовательскими данными. Вопрос — куда делись еще примерно 80Gb?
Набрав в терминале
# du -h -d 1 /
увидел в корне странную папку с названием /.MobileBackups, как раз и занимающую 80Gb.
Дальнейший поиск выяснил — что это локальный бекап, который создает TimeMachine на случай, если у вас не окажется под рукой диска с резервными копиями. Т.е. по сути, когда вы удаляете файлы из корзины, они не удаляются физически, а переносятся в эту папку.
Отключается все это через консоль:
# sudo tmutil disablelocal
Дополнительно можно почитать здесь.
+22
Телефон в качестве продвинутой «ленивки» к домашнему медиасерверу
2 мин
7.4KУправлять проигрываемой музыкой из соседней комнаты; помочь домашним с настройками ПО, гуляя у дома с собакой; осуществить техническую поддержку тещи живущей в другом районе, сидя с друзьями в кафе…
Вот лишь несколько вопросов решаемых в данной статье. Мы рассмотрим решение с получением удаленнного рабочего стола по протоколу VNC на примере Android смартфона, но все сказанное будет актуально и для iPhone, iPad и любых других планшетов. Тут я не открою Америки, просто поделюсь своим опытом. Возможно кому-то это покажется интересным.
Вот лишь несколько вопросов решаемых в данной статье. Мы рассмотрим решение с получением удаленнного рабочего стола по протоколу VNC на примере Android смартфона, но все сказанное будет актуально и для iPhone, iPad и любых других планшетов. Тут я не открою Америки, просто поделюсь своим опытом. Возможно кому-то это покажется интересным.
+11
5 советов новоиспеченному начальнику отдела
5 мин
159KХочу поделиться 5 важными, на мой взгляд, вещами, которые должен осознать специалист, внезапно ставший начальником своего отдела. Это скорее напутствие, психологическая накачка, чем конкретные методики, но как мне кажется, карьерные изменения — момент для изменений внутренних. Мне самому повезло стать начальником нового отдела, созданного из сотрудников, занятых определенным направлением, и вот что я успел для себя уяснить.
+54
Я хочу работать в Google! Телефонное интервью (часть 1)
4 мин
31KПривет Хабр! Давно не писал. Да это и понятно. Защита диссертации, получение PhD, а сейчас ещё и активный поиск работы — всё это занимает очень много драгоценного времени. Но разговор сегодня пойдёт не о том. Хотелось бы поделиться с Вами, уважаемые хабралюди, ресурсами и описанием процесса подготовки к телефонному техническому интервью с Гуглом, первый технический этап которого я уже прошёл, и теперь готовлюсь ко второму, который будет в пятницу.
+157
Дарим роботов на Новый год
5 мин
15KНовый год осталось ждать уже недолго и многие уже распланировали свои отпуска. С другой стороны о подарках мы начинаем задумываться зачастую только в последние предновогодние дни. Для тех, кто покупает подарки заранее или просто хочет подготовить необычный подарок, подготовлена данная обзорная статья. Всем остальным рекомендую сохранить статью в закладках, чтобы числа 28го внезапно вспомнить о ней, открыть, и, не ломая голову, бегом в магазин. Как вы уже поняли из заголовка, выбирать мы будем исключительно из роботов, ну и, возможно, пару радиоуправляемых моделей.
+102
iPad как платформа для разработки веб-приложений
3 мин
44KСовременное общество мобильно, легко адаптируется к динамично меняющейся окружающей среде. Мы на связи с глобальной сетью повсюду: в машине, в поезде, в метро, даже в туалете!
По-моему термин On-The-Go! наиболее точно характеризует современного человека.
Сейчас планшетник уже перестал быть роскошью и гаджетом, который есть только у президента. Уже пол года, как я стал счастливым обладателем iPad. В основном я использовал его для серфинга в Интернете, презентаций видеоработ заказчикам, и чтения технической литературы (как это ни странно прозвучит, но художественную мне удобнее читать с iPhone'а). Но с момента покупки меня ниразу не покидала мысль «А можно ли полноценно разрабатывать веб-приложения на iPad? Так, чтобы компьютер был не нужен вообще?». И сегодня я могу сказать — ДА — на iPad можно вести полноценную веб-разработку. Сегодня в AppStore уже есть ряд программ, которые очень сильно помогут при разработке приложений на iPad.
По-моему термин On-The-Go! наиболее точно характеризует современного человека.
Сейчас планшетник уже перестал быть роскошью и гаджетом, который есть только у президента. Уже пол года, как я стал счастливым обладателем iPad. В основном я использовал его для серфинга в Интернете, презентаций видеоработ заказчикам, и чтения технической литературы (как это ни странно прозвучит, но художественную мне удобнее читать с iPhone'а). Но с момента покупки меня ниразу не покидала мысль «А можно ли полноценно разрабатывать веб-приложения на iPad? Так, чтобы компьютер был не нужен вообще?». И сегодня я могу сказать — ДА — на iPad можно вести полноценную веб-разработку. Сегодня в AppStore уже есть ряд программ, которые очень сильно помогут при разработке приложений на iPad.
+36
+240
+397
Разработка привлекательных реалистичных пользовательских интерфейсов
4 мин
15KПеревод
Cекрет разработки привлекательных интерфейсов заключается в реализме. Ваша задача — придать плоским элементам объём, используя свойства реальных объектов, вроде неровностей и шероховатостей, бликов и теней, различных текстур поверхностей. В идеале они должны выглядеть как предметы на вашем столе. Создавая классный интерфейс, в первую очередь нужно думать не «как», а «почему».
+198
Необходимые приложения для Windows Phone 7.5
7 мин
81KВсе началось с того, что я подарил жене на Новый Год телефон на Windows Phone. Собственно, необходимость замены зрела давно, поэтому я активно изучал рынок. Увы, но iPhone, я считаю неоправданно дорогим (особенно, если покупать официальный), а Android, несмотря на всю мою к нему любовь, все еще слишком гиковый и требует множества лишних движений (особенно при обновлении и багфиксах). В общем, выбор пал на Windows Phone как на что-то среднее – все-таки запросы у жены попроще моих. И знаете, я и раньше имел возможность повертеть виндофоны в руках и убедиться в адекватности платформы, но после двух недель обладания (именно обладания) я просто влюбился в платформу. Поверьте, она очень и очень неплоха уже сейчас.
Но отставим лирику. После покупки, естественно, стал вопрос наполнения программами, потому как любая ось, это, прежде всего, предложения. И вот тут я столкнулся с некоторым русскоязычным вакуумом, касающимся приложений для WP7.5. Нет, блогов, посвященных приложения, уже множество. Но все они рассчитаны на регулярное чтение ресурса и выискивание зерен среди плевел. Мне же был нужен, что называется, рейтинг «всех времен и народов», а варианты «лучшая игра первой декады июля» меня мало устраивали. Помыкавшись по ресурсам, я наткнулся на ежемесячно обновляемый рейтинг от Gizmodo. Часть описываемых программ оказалась непригодной для пользователей России, поэтому я решил потратить пару вечеров на опробование, перевод описаний и подбор адекватных для нас замен.
Собственно, под катом и есть тот самый переработанный список лучших приложений под Windows Phone 7.5 Такой, знаете ли, стартовый набор, позволяющий оценить возможности телефона. Надеюсь, данный список будет интересен не только новым и будущим владельцам, но и давним пользователям платформы — наверняка найдется несколько достойных приложений, о которых они не слышали.
Но отставим лирику. После покупки, естественно, стал вопрос наполнения программами, потому как любая ось, это, прежде всего, предложения. И вот тут я столкнулся с некоторым русскоязычным вакуумом, касающимся приложений для WP7.5. Нет, блогов, посвященных приложения, уже множество. Но все они рассчитаны на регулярное чтение ресурса и выискивание зерен среди плевел. Мне же был нужен, что называется, рейтинг «всех времен и народов», а варианты «лучшая игра первой декады июля» меня мало устраивали. Помыкавшись по ресурсам, я наткнулся на ежемесячно обновляемый рейтинг от Gizmodo. Часть описываемых программ оказалась непригодной для пользователей России, поэтому я решил потратить пару вечеров на опробование, перевод описаний и подбор адекватных для нас замен.
Собственно, под катом и есть тот самый переработанный список лучших приложений под Windows Phone 7.5 Такой, знаете ли, стартовый набор, позволяющий оценить возможности телефона. Надеюсь, данный список будет интересен не только новым и будущим владельцам, но и давним пользователям платформы — наверняка найдется несколько достойных приложений, о которых они не слышали.
+20
ПО для взаимодействия ПК и смартфона
7 мин
436KС момента покупки смарта на Android меня заинтересовало его функциональное наполнение. На практике оказалось, что Android способен выполнять практически любую задачу, решаемую на обычном ПK, только медленнее и не всегда удобнее. Зато дополняет ПК он прекрасно, и механизмов использования возможностей смарта на ПК и возможностей ПК на смарте — уйма.
Статья ориентирована в основном на формирующихся и будущих пользователей Android-смартфонов; надеюсь, что продвинутые пользователи также найдут в ней что-то новое и/или внесут свою лепту. Под катом по пунктам, в вопрос-ответном стиле.
Статья ориентирована в основном на формирующихся и будущих пользователей Android-смартфонов; надеюсь, что продвинутые пользователи также найдут в ней что-то новое и/или внесут свою лепту. Под катом по пунктам, в вопрос-ответном стиле.
+118
Отучаем сенсорный экран смещать координаты прикосновений на пару мм вверх
4 мин
6.8KДумаю, мало кто замечал, что физические координаты прикосновения пальца и их программное отображение в iOS немного отличаются: iOS выдаёт точку, смещенную примерно на 1,5 мм вверх относительно реального прикосновения. Это сделано в интересах usability — точка, приближенная к ногтю, кажется более реалистичной, нежели лежащая ниже под подушечкой пальца. Кроме того, так лучше видно область экрана, куда нажимаешь.
Чтобы было понятнее, о чем речь, можно скачать любую рисовалку (например Bamboo Paper, приложение не моё, бесплатное), заблокировать автоповорот экрана, нарисовать небольшую горизонтальную линию, затем перевернуть устройство вверх ногами (обязательно при блокировке автоповорота) и попытаться продолжить нарисованную линию. Скорее всего продолженная линия окажется ниже первоначальной.
Чтобы было понятнее, о чем речь, можно скачать любую рисовалку (например Bamboo Paper, приложение не моё, бесплатное), заблокировать автоповорот экрана, нарисовать небольшую горизонтальную линию, затем перевернуть устройство вверх ногами (обязательно при блокировке автоповорота) и попытаться продолжить нарисованную линию. Скорее всего продолженная линия окажется ниже первоначальной.
+19
Веб-приложение на C++, или укрощение демона FastCGI
8 мин
27KВ настоящее время, благодаря таким инструментам как NodeJS, создание веб-приложения — сущий пустяк. Скачал бинарник, сваял js в 5 строчек кода и можно хвастаться. А если подключить express и добавить ещё 5 строчек, то получим полноценное веб-приложение с роутингом, шаблонами, сессиями и другими прелестями. Так просто, что даже скучно. И стало мне интересно: как обстоят дела у моего старого знакомого С++, с которым уже 5 лет не виделся. В своё время прельстил меня ActionScript и прочий JavaScript, а о добром друге, который не раз выручал, совсем позабыл. В свете недавних статей о Configurable Omnipotent Custom Applications Integrated Network Engine (сокращено Cocaine), попался мне на глаза проект под названием Fastcgi Daemon, на основе которого функционирует HTTP-интерфейс Cocaine. И так, знакомьтесь
+30
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность