Как стать автором
Обновить
0
chibun @chibunread⁠-⁠only

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

Отправить сообщение

Зачем нужны сервисы приема SMS и с чем их едят

Время на прочтение4 мин
Количество просмотров66K
Сервисы, предоставляющие временный номер для приема смс онлайн, появились после того как многие социальные сети, торговые площадки и прочие интернет ресурсы перешли с идентификации пользователя, при регистрации, через адрес электронной почты на идентификацию через отправленный код на телефонный номер, а зачастую и код на телефонный номер и подтверждение через электронную почту.

Для кого существуют сервисы, предоставляющие виртуальные номера онлайн?


Всю аудиторию пользователей ресурсов, предоставляющих услуги приема смс на телефонные номера онлайн, можно разделить на группы:
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии25

Как я нашел пасхалку в защите Android и не получил работу в Google

Время на прочтение12 мин
Количество просмотров99K
Гугл любит пасхалки. Любит настолько, что найти их можно практически в каждом продукте компании. Традиция пасхалок в Android тянется с самых первых версий операционной системы (я думаю, все в курсе, что будет, если в настройках несколько раз нажать на строчку с версией Android).

Но бывает и так, что пасхалки обнаруживаются в самых неожиданных местах. Есть даже такая легенда: однажды один программист загуглил «mutex lock», а вместо результатов поиска попал на страницу foo.bar, решил все задачи и устроился на работу в Google.

Реконструкция событий
image

Вот такая же удивительная история (только без хэппи-энда) произошла со мной. Скрытые послания там, где их точно не может быть, реверс Java кода и нативных библиотек, секретная виртуальная машина, прохождение собеседования в Google — все это под катом.
Читать дальше →
Всего голосов 279: ↑277 и ↓2+275
Комментарии302

Подводные камни разработки Google Play Instant

Время на прочтение6 мин
Количество просмотров12K


Привет, Хабр! Меня зовут Камо Сперцян, я занимаюсь Android-разработкой в PROFI.RU. Недавно я написал приложение с мгновенным запуском для наших клиентов. Если вы ещё не знакомы с технологией, приглашаю вас сначала посетить Android Developers.

С презентации Instant Apps (Google Play Instant) на Google I/O 2016 прошло больше двух лет. В сети множество статей о том, как создавать приложения с мгновенным запуском. Судя по ним, ничего сложного в этом нет. Но на деле это не совсем так. Я постараюсь описать основные трудности, через которые мне пришлось пройти от создания пустого проекта до публикации Instant App в Google Play. Надеюсь, статья окажется полезной разработчикам, которым этот путь ещё предстоит.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии11

Мои любимые примеры функционального программирования в языке Kotlin

Время на прочтение5 мин
Количество просмотров29K

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


Мои любимые примеры функционального программирования в языке Kotlin

Читать дальше →
Всего голосов 36: ↑25 и ↓11+14
Комментарии17

Пишем Java-френдли Kotlin-код

Время на прочтение21 мин
Количество просмотров12K
Со стороны может показаться, что Kotlin упростил Android-разработку, вообще не принеся при этом новых сложностей: язык ведь Java-совместимый, так что даже большой Java-проект можно постепенно переводить на него, не забивая ничем голову, так? Но если заглядывать глубже, в каждой шкатулке найдётся двойное дно, а в трюмо — потайная дверца. Языки программирования — слишком сложные проекты, чтобы их совмещение обходилось без хитрых нюансов.

Разумеется, это не означает «всё плохо и использовать Kotlin вместе с Java не надо», а означает, что стоит знать о нюансах и учитывать их. На нашей конференции Mobius Сергей Рябов рассказал, как писать на Kotlin такой код, к которому будет комфортно обращаться из Java. И доклад так понравился зрителям, что мы не только решили разместить видеозапись, но и сделали для Хабра текстовую версию:

текстовая версия
Всего голосов 31: ↑29 и ↓2+27
Комментарии4

Как Amazon пытается спасти древнее индийское ремесло

Время на прочтение5 мин
Количество просмотров13K


Абдул Гафур Кхатри живет на краю гигантских соляных озер в глуши на западе Индии. У него нет смартфона. Он никогда не выходил в интернет. Но всё-таки 53-летний мужчина считает, что глобальная сеть может стать его последней возможностью вернуть жизнь уходящему искусству под названием «роган», которое передавалось в его семье восемь поколений. И он готов ухватиться за этот шанс.

Если я смогу продавать онлайн, спрос тоже пойдет вверх.

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

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии97

Как безопасно программировать в bash

Время на прочтение11 мин
Количество просмотров44K

Почему bash?


В bash есть массивы и безопасный режим. При правильном использовании bash почти соответствует практикам безопасного кодирования.

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

Предисловие


Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.

Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.

Главное, что нужно знать о программировании в bash


Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var и подстановки команд вроде $(cmd) подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать дальше →
Всего голосов 74: ↑73 и ↓1+72
Комментарии39

Книга «Теоретический минимум по Computer Science. Все что нужно программисту и разработчику»

Время на прочтение4 мин
Количество просмотров44K
image


Хватит тратить время на скучные академические фолианты! Изучение Computer Science может быть веселым и увлекательным занятием.

Владстон Феррейра Фило знакомит нас с вычислительным мышлением, позволяющим решать любые сложные задачи. Научиться писать код просто — пара недель на курсах, и вы «программист», но чтобы стать профи, который будет востребован всегда и везде, нужны фундаментальные знания. Здесь вы найдете только самую важную информацию, которая необходима каждому разработчику и программисту каждый день.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии24

Java и Linux — особенности эксплуатации

Время на прочтение23 мин
Количество просмотров60K
Java — очень распространённая платформа, на ней пишут очень разные вещи, начиная от Big Data, заканчивая микросервисами, монолитами, enterprise и прочим. И, как правило, всё это развёртывают на Linux серверах. При этом, соответственно, те люди, которые пишут на Java, зачастую делают это совсем на других операционных системах. Там они:

  • пишут код;
  • отлаживают, тестируют;
  • после этого упаковывают в jar;
  • отправляют на Linux, и оно работает.

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



С другой стороны, есть те, кто занимается администрированием серверов, на их сервера устанавливают JVM, отправляют jar и war-файлы, а с точки зрения мира Linux все это:

  • чужеродное;
  • проприетарное;
  • собирается не из исходников;
  • поставляется какими-то jar-архивами;
  • «отъедает» всю память на сервере;
  • вообще, ведёт себя не по-человечески.

Цель доклада Алексея Рагозина на Highload++, расшифровка которого идет далее, была в том, чтобы рассказать особенности Java для «линуксоидов» и, соответственно, Linux — Java-разработчикам.
Всего голосов 55: ↑53 и ↓2+51
Комментарии18

Имитация естественного движения: Steering Behaviors — 2

Время на прочтение24 мин
Количество просмотров11K
Первая часть статьи здесь.


Часть 6. Избегание коллизий


Для правильной навигации NPC часто требуется способность избегать препятствий. В этой части мы рассмотрим steering behavior collision avoidance (избегание коллизий), позволяющее персонажам благополучно уворачиваться от препятствий в окружении.



Введение


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

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


Анализируются препятствия перед персонажем и выбирается ближайшее (наиболее угрожающее).

Поведение избежания коллизий — это не алгоритм поиска путей. Оно заставляет персонажей двигаться по окружению, избегая препятствий, постепенно находя путь сквозь блоки — но в случаях с препятствиями в виде L или T, например, оно действует не очень хорошо.
Всего голосов 25: ↑24 и ↓1+23
Комментарии2

UI-компоненты на пиксельных шейдерах: пишем ваш первый шейдер

Время на прочтение10 мин
Количество просмотров13K
Кого можно назвать «пиксельных шейдеров начальник и пикселов командир»? Дениса Радина, работающего в Evolution Gaming над фотореалистичными веб-играми с использованием React и WebGL: он известен многим как раз под именем Pixels Commander.

В декабре на нашей конференции HolyJS он выступил с докладом о том, как использование GLSL может улучшить работу с UI-компонентами по сравнению с «обычным джаваскриптом». А теперь для Хабра мы подготовили текстовую версию этого доклада — добро пожаловать под кат! Заодно прикладываем видеозапись выступления:


Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии12

Как стать GPU-инженером за час

Время на прочтение20 мин
Количество просмотров25K
Нужно ли iOS-разработчику, не занимающемуся играми, уметь работать с GPU? Нужно ли ему вообще знать о том, что в айфоне есть GPU? Многие успешно работают в iOS-разработке, никогда не задумываясь об этой теме. Но GPU может быть полезен как для 3D-графики, так и для других задач, в ряде случаев оставляя CPU позади.

Когда на конференции Mobius 2017 Moscow Андрей Володин (Prisma AI) рассказал об использовании GPU в iOS, его доклад стал одним из фаворитов конференции, получив высокие оценки зрителей. А теперь на основе этого доклада мы подготовили хабрапост, позволяющий получить всю ту же информацию текстом. Интересно будет даже тем, кто не работает с iOS: доклад начинается с вещей, не привязанных конкретно к этой платформе.
Осторожно, трафик: под катом очень много изображений со слайдов.

Читать дальше →
Всего голосов 47: ↑42 и ↓5+37
Комментарии18

Android Support Library 28. Что нового?

Время на прочтение10 мин
Количество просмотров24K


По давней традиции вместе с новой версией Android выходит обновление Support Library. Пока библиотека вышла в стадии альфа, но список изменений уже намного интереснее, чем такой же список у Android P. Google несправедливо мало рассказал и написал об основных нововведениях главной библиотеки для Android. Приходится читать исходники и разбираться, в чем особенности новых фич и зачем они нужны. Восстановлю справедливость и расскажу, чем нас порадовал Google:

  • RecyclerView selection — выбор элементов теперь из коробки;
  • Slices — новый способ отображать контент другого приложения;
  • новые элементы дизайна: BottomAppBar, ChipGroup и другие;
  • мелкие изменения одной строкой.
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии22

Обнаружение сетевых устройств

Время на прочтение7 мин
Количество просмотров84K
Сканирование сети с построением списка устройств и их свойств, таких как перечень сетевых интерфейсов, с последующим снятием данных в системах мониторинга, если не вникать в происходящее, может показаться особой, компьютерной, магией. Как же это работает — под катом.


Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии12

Щи, или Распознавание 330 млн лиц на скорости 400 фото / сек

Время на прочтение11 мин
Количество просмотров43K

Распознаванием лиц в 2018 году никого не удивишь – каждый студент, может, даже школьник, его делал. Но всё становится немного сложнее, когда у вас не датасет на 1 млн пользователей, а:


  • 330 миллионов пользовательских аккаунтов;
  • ежедневно заливается 20 млн пользовательских фотографий;
  • максимальное время на обработку одного фото не должно превышать 0.2 сек;
  • ограниченные объемы оборудования для решения задачи.


В этой статье мы поделимся опытом разработки и запуска системы распознавания лиц на пользовательских фотографиях в социальной сети Одноклассники и расскажем про все ”от А до Я”:


  • математический аппарат;
  • техническую реализацию;
  • результаты запуска;
  • и акцию StarFace, которую мы использовали для PR-а нашего решения.

Распознавание лиц Одноклассников в деталях
Всего голосов 65: ↑63 и ↓2+61
Комментарии25

Руководство по фоновой работе в Android. Часть 2: Loaders

Время на прочтение6 мин
Количество просмотров16K
Это вторая из серии статей об инструментах и методах фоновой работы в Android. Ранее уже были рассмотрены AsyncTask, в следующих выпусках — ThreadPools с EventBus, RxJava 2 и корутины в Kotlin.


Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии9

Я создал приложение, которое делает изучение алгоритмов и структур данных гораздо интереснее

Время на прочтение7 мин
Количество просмотров52K
image

Интерфейс CS-Playground-React

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

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

Зайдите на CS-Playground-React, простую браузерную JavaScript-песочницу для изучения и практикования алгоритмов и структур данных.

Это приложение не требует регистрации и автоматически сохраняет ваши достижения, предлагает решения когда вы застряли, и имеет кучу ссылок на полезные статьи, туториалы, и другие ресурсы, чтобы помочь сделать ваше обучение не очень болезненным, как было у меня.
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии38

Чему робототехника может научить игровой ИИ

Время на прочтение32 мин
Количество просмотров13K

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

В процессе изучения разработки игр я находил множество туториалов, в которых рассказывалось о планировании движения (обычно в литературе по разработке игр оно называется «поиском пути»), но большинство из них не вдавалось в подробности того, в чём заключается планирование движения с теоретической точки зрения. Насколько я могу судить, в большинстве игр редко используется какое-то иное планирование движения, кроме одного из трёх серьёзных алгоритмов: поиск по сеткам A*, графы видимости и поля течения. Кроме этих трёх принципов, существует ещё целый мир теоретических исследований планирования движения, и некоторые из них могут быть полезными разработчикам игр.

В этой статье я хотел бы рассказать о стандартных техниках планирования движения в своём контексте и объяснить их преимущества и недостатки. Также я хочу представить основные техники, которые обычно не используются в видеоиграх. Надеюсь, они прольют свет на то, как их можно применять в разработке игр.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии4

5 лучших стран для IT бизнеса

Время на прочтение11 мин
Количество просмотров31K
Придумана идея вашего бизнеса или бизнес уже начал работать, а вам хочется расти дальше? Окружающие вас ресурсы являются неоптимальными — дорогая аренда, сложность ведения бизнеса, высокая заработная плата сотрудников, затруднительный доступ к большим объемам электроэнергии и неразвитость IT инфраструктуры? Давайте подумаем о будущем вашего бизнеса вместе. На основе множества критериев, таких как легкость регистрации и ведения бизнеса, эффективные способы защиты интеллектуальной собственности, уровень налогообложения и международной торговли, степень государственной поддержки и защищенности бизнеса, уровень доступности электросетей и конкурентной IT инфраструктуры, я отобрал 5 лучших стран и собрал отзывы от успешных компаний, имеющих бизнес, представительства или просто партнеров в этих странах. На основе этих данных составлен рейтинг и рекомендации, которыми я с радостью поделюсь с вами.

5-е место. Южная Корея


“+”


Южная Корея редко приходит на ум, когда возникает идея открыть бизнес за границей. При этом, экономика Южной Кореи, по разным данным, находится на 11-15 месте в мировом рейтинге и является одной из самых быстрорастущих.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии21

Красный, белый, голубой: восемь правил подбора цветовой палитры, которые должны знать все

Время на прочтение10 мин
Количество просмотров80K
Взаимодействие человека с компьютером во многом опирается на графические элементы интерфейса, и цвет играет в этом процессе не последнюю роль. Как однажды сказал Pierre Bonnard: «Цвет не просто делает дизайн приятным для глаз, но и подкрепляет его».

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


Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии10
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Дата рождения
Зарегистрирован
Активность