…несмотря на то, что он кое в чём неполон, содержит много сомнительного или,
во всяком случае, вопиюще неточного, он имеет два важных преимущества:
во-первых, он немного дешевле, [...], а во-вторых, на его обложке большими
и приятными для глаз буквами написаны два слова «Без паники!»
— The Hitchhiker's Guide to the Galaxy
Привет, Хабр!
Меня зовут Арсений Батыров, я работаю в отделе QA Badoo и занимаюсь в основном ручным тестированием веб-приложений. А ещё я веду курсы по ручному и автоматическому тестированию мобильных приложений.
Перед запуском нового курса я задумался, о каких инструментах стоит рассказать ученикам. Прошерстил Рунет и англоязычный Интернет в поисках сравнительных статей, но, как ни странно, не нашёл подходящего источника информации. И тогда я решил создать его сам.
Я преследовал три цели:
Классифицировать инструменты в стеке автотестирования, чтобы стали понятны их иерархия и сочетаемость.
Показать, какие инструменты популярны сегодня на рынке.
Рассказать про самые популярные инструменты каждого типа и сравнить их по нескольким параметрам.
Результатом моих трудов стал этот путеводитель по наиболее популярным и простым в освоении инструментам автотестирования мобильных приложений.
Это статья о первых программных синтезаторах, которые были когда-то созданы на самых обычных персональных компьютерах. Я также даю несколько практических примеров по реализации простых методов звукового синтеза в историческом контексте.
Это статья о первых программных синтезаторах, которые были когда-то созданы на самых обычных персональных компьютерах. Я также даю несколько практических примеров по реализации простых методов звукового синтеза в историческом контексте.
Это статья о первых программных синтезаторах, которые были когда-то созданы на самых обычных персональных компьютерах. Я также даю несколько практических примеров по реализации простых методов звукового синтеза в историческом контексте.
Новость Судьба зловреда Exobot, с помощью которого злоумышленники добывали данные банковских карт пользователей еще с 2013 года, сложилась интереснее, чем у большинства подобных троянов — но весьма проблематично для экспертов безопасности. Авторы бота охотно сдавали его в аренду на любой срок, причем сервис оказался столь успешен коммерчески, что появилась даже вторая версия, переработанная практически с нуля. Что характерно, заказчики могли по своему желанию модифицировать троян с помощью контрольной панели, выбирая нужные им функции. Практически фабрика клонов со спецификациями на любой вкус.
А в прошедшем декабре организаторы этого центра клонирования во всеуслышание заявили, что собираются продать исходный код ограниченному кругу покупателей. Якобы они уже срубили с Exobot достаточно и выходят из бизнеса. Заявление звучит не очень логично, но может быть отчасти правдой: если им удалось сорвать большой куш, теперь добыча и собственная свобода перевешивают возможные выгоды. Но скорее всего, операторы Exobot постарались таким образом замаскировать желание уйти в тень и скрыться от пристального внимания. Как бы то ни было, после первых же продаж неприятности не заставили себя ждать: зловред пошел в серию. Читать дальше ->
Новость Судьба зловреда Exobot, с помощью которого злоумышленники добывали данные банковских карт пользователей еще с 2013 года, сложилась интереснее, чем у большинства подобных троянов — но весьма проблематично для экспертов безопасности. Авторы бота охотно сдавали его в аренду на любой срок, причем сервис оказался столь успешен коммерчески, что появилась даже вторая версия, переработанная практически с нуля. Что характерно, заказчики могли по своему желанию модифицировать троян с помощью контрольной панели, выбирая нужные им функции. Практически фабрика клонов со спецификациями на любой вкус.
А в прошедшем декабре организаторы этого центра клонирования во всеуслышание заявили, что собираются продать исходный код ограниченному кругу покупателей. Якобы они уже срубили с Exobot достаточно и выходят из бизнеса. Заявление звучит не очень логично, но может быть отчасти правдой: если им удалось сорвать большой куш, теперь добыча и собственная свобода перевешивают возможные выгоды. Но скорее всего, операторы Exobot постарались таким образом замаскировать желание уйти в тень и скрыться от пристального внимания. Как бы то ни было, после первых же продаж неприятности не заставили себя ждать: зловред пошел в серию. Читать дальше ->
Новость Судьба зловреда Exobot, с помощью которого злоумышленники добывали данные банковских карт пользователей еще с 2013 года, сложилась интереснее, чем у большинства подобных троянов — но весьма проблематично для экспертов безопасности. Авторы бота охотно сдавали его в аренду на любой срок, причем сервис оказался столь успешен коммерчески, что появилась даже вторая версия, переработанная практически с нуля. Что характерно, заказчики могли по своему желанию модифицировать троян с помощью контрольной панели, выбирая нужные им функции. Практически фабрика клонов со спецификациями на любой вкус.
А в прошедшем декабре организаторы этого центра клонирования во всеуслышание заявили, что собираются продать исходный код ограниченному кругу покупателей. Якобы они уже срубили с Exobot достаточно и выходят из бизнеса. Заявление звучит не очень логично, но может быть отчасти правдой: если им удалось сорвать большой куш, теперь добыча и собственная свобода перевешивают возможные выгоды. Но скорее всего, операторы Exobot постарались таким образом замаскировать желание уйти в тень и скрыться от пристального внимания. Как бы то ни было, после первых же продаж неприятности не заставили себя ждать: зловред пошел в серию. Читать дальше ->
В первой части были рассмотрены: структура, топология, функции активации и обучающее множество. В этой части попробую объяснить как происходит обучение сверточной нейронной сети.
Обучение сверточной нейронной сети
На начальном этапе нейронная сеть является необученной (ненастроенной). В общем смысле под обучением понимают последовательное предъявление образа на вход нейросети, из обучающего набора, затем полученный ответ сравнивается с желаемым выходом, в нашем случае это 1 – образ представляет лицо, минус 1 – образ представляет фон (не лицо), полученная разница между ожидаемым ответом и полученным является результат функции ошибки (дельта ошибки). Затем эту дельту ошибки необходимо распространить на все связанные нейроны сети. Читать дальше ->
В первой части были рассмотрены: структура, топология, функции активации и обучающее множество. В этой части попробую объяснить как происходит обучение сверточной нейронной сети.
Обучение сверточной нейронной сети
На начальном этапе нейронная сеть является необученной (ненастроенной). В общем смысле под обучением понимают последовательное предъявление образа на вход нейросети, из обучающего набора, затем полученный ответ сравнивается с желаемым выходом, в нашем случае это 1 – образ представляет лицо, минус 1 – образ представляет фон (не лицо), полученная разница между ожидаемым ответом и полученным является результат функции ошибки (дельта ошибки). Затем эту дельту ошибки необходимо распространить на все связанные нейроны сети. Читать дальше ->
В первой части были рассмотрены: структура, топология, функции активации и обучающее множество. В этой части попробую объяснить как происходит обучение сверточной нейронной сети.
Обучение сверточной нейронной сети
На начальном этапе нейронная сеть является необученной (ненастроенной). В общем смысле под обучением понимают последовательное предъявление образа на вход нейросети, из обучающего набора, затем полученный ответ сравнивается с желаемым выходом, в нашем случае это 1 – образ представляет лицо, минус 1 – образ представляет фон (не лицо), полученная разница между ожидаемым ответом и полученным является результат функции ошибки (дельта ошибки). Затем эту дельту ошибки необходимо распространить на все связанные нейроны сети. Читать дальше ->
В первой части были рассмотрены: структура, топология, функции активации и обучающее множество. В этой части попробую объяснить как происходит обучение сверточной нейронной сети.
Обучение сверточной нейронной сети
На начальном этапе нейронная сеть является необученной (ненастроенной). В общем смысле под обучением понимают последовательное предъявление образа на вход нейросети, из обучающего набора, затем полученный ответ сравнивается с желаемым выходом, в нашем случае это 1 – образ представляет лицо, минус 1 – образ представляет фон (не лицо), полученная разница между ожидаемым ответом и полученным является результат функции ошибки (дельта ошибки). Затем эту дельту ошибки необходимо распространить на все связанные нейроны сети. Читать дальше ->
Форма для печенья от Кристиана (Christian Quest)[1]
Карты
Исследовательская группа GIScience из Гейдельбергского университета сообщает о новой версии OSMlanduse.org. Пробелы в данных OSM (только для Германии), теперь заполнены данными извлечёнными из спутниковых снимков, полученных использованием методов машинного обучения.
Сайт TravelTime предоставляет две интересные карты, основанные на различных источниках, на данных OSM: RadiusMap, который сравнивает простой «радиус доступности» вокруг точки с временем проезда (изохроны) и карту времени только для путешествия, которая включает в себя ходьбу, поездку на велосипеде, автомобиле и на общественном транспорте.
Думаю, большинство джавистов согласится, что java.util.ArrayList — наиболее используемая коллекция в мире Java. Она появилась в версии 1.2 и быстро стала "коллекцией по умолчанию", ведь в большинстве случаев её возможностей вполне достаточно для повседневной работы. В этот класс вносилось множество изменений (см., например, историю изменений в репозитории JDK 8), чтобы сделать его как можно более производительным. В этой заметке я покажу, что даже такой прокачанный компонент, как ArrayList всё ещё хранит в себе возможности для улучшения.
Думаю, большинство джавистов согласится, что java.util.ArrayList — наиболее используемая коллекция в мире Java. Она появилась в версии 1.2 и быстро стала "коллекцией по умолчанию", ведь в большинстве случаев её возможностей вполне достаточно для повседневной работы. В этот класс вносилось множество изменений (см., например, историю изменений в репозитории JDK 8), чтобы сделать его как можно более производительным. В этой заметке я покажу, что даже такой прокачанный компонент, как ArrayList всё ещё хранит в себе возможности для улучшения.
Думаю, большинство джавистов согласится, что java.util.ArrayList — наиболее используемая коллекция в мире Java. Она появилась в версии 1.2 и быстро стала "коллекцией по умолчанию", ведь в большинстве случаев её возможностей вполне достаточно для повседневной работы. В этот класс вносилось множество изменений (см., например, историю изменений в репозитории JDK 8), чтобы сделать его как можно более производительным. В этой заметке я покажу, что даже такой прокачанный компонент, как ArrayList всё ещё хранит в себе возможности для улучшения.
Существует мнение, что использование С++ при разработке программного обеспечения для микроконтроллеров это как стрельба из пушки по воробьям. Мол код получается большого размера и неповоротливый, а мы привыкли бороться за каждый бит в ОЗУ или ПЗУ. И действительно, ведь язык Си был задуман как альтернатива ассемблеру, код должен был быть такой же компактный и быстрый, а читаемость и удобство разработки позволять легко писать довольно большие программы. Но ведь когда-то и разработчики на ассемблере говорили тоже самое про С, с тех пор утекло много воды и программистов, использующих только ассемблер, можно по пальцам пересчитать. Конечно, ассемблер еще играет важную роль в разработке кода для быстрых параллельных вычислений, написании ОСРВ, но это скорее исключение из правил. Так же как когда-то Си пробивал себе дорогу в качестве стандарта для встроенного ПО, так и язык С++ уже вполне может заменить Си в этой области. Современный С++ стандарта С++14 имеет достаточно средств для того, чтобы создавать компактный код, и не уступает по эффективности коду, созданному на Си, а порой, благодаря нововведениям, может быть и рациональнее. Ниже приведен код поиска наименьшего числа в массиве из 5 целых чисел на двух языках Си и С++ на компиляторе IAR for ARM 8.20. Читать дальше ->
Существует мнение, что использование С++ при разработке программного обеспечения для микроконтроллеров это как стрельба из пушки по воробьям. Мол код получается большого размера и неповоротливый, а мы привыкли бороться за каждый бит в ОЗУ или ПЗУ. И действительно, ведь язык Си был задуман как альтернатива ассемблеру, код должен был быть такой же компактный и быстрый, а читаемость и удобство разработки позволять легко писать довольно большие программы. Но ведь когда-то и разработчики на ассемблере говорили тоже самое про С, с тех пор утекло много воды и программистов, использующих только ассемблер, можно по пальцам пересчитать. Конечно, ассемблер еще играет важную роль в разработке кода для быстрых параллельных вычислений, написании ОСРВ, но это скорее исключение из правил. Так же как когда-то Си пробивал себе дорогу в качестве стандарта для встроенного ПО, так и язык С++ уже вполне может заменить Си в этой области. Современный С++ стандарта С++14 имеет достаточно средств для того, чтобы создавать компактный код, и не уступает по эффективности коду, созданному на Си, а порой, благодаря нововведениям, может быть и рациональнее. Ниже приведен код поиска наименьшего числа в массиве из 5 целых чисел на двух языках Си и С++ на компиляторе IAR for ARM 8.20. Читать дальше ->
Существует мнение, что использование С++ при разработке программного обеспечения для микроконтроллеров это как стрельба из пушки по воробьям. Мол код получается большого размера и неповоротливый, а мы привыкли бороться за каждый бит в ОЗУ или ПЗУ. И действительно, ведь язык Си был задуман как альтернатива ассемблеру, код должен был быть такой же компактный и быстрый, а читаемость и удобство разработки позволять легко писать довольно большие программы. Но ведь когда-то и разработчики на ассемблере говорили тоже самое про С, с тех пор утекло много воды и программистов, использующих только ассемблер, можно по пальцам пересчитать. Конечно, ассемблер еще играет важную роль в разработке кода для быстрых параллельных вычислений, написании ОСРВ, но это скорее исключение из правил. Так же как когда-то Си пробивал себе дорогу в качестве стандарта для встроенного ПО, так и язык С++ уже вполне может заменить Си в этой области. Современный С++ стандарта С++14 имеет достаточно средств для того, чтобы создавать компактный код, и не уступает по эффективности коду, созданному на Си, а порой, благодаря нововведениям, может быть и рациональнее. Ниже приведен код поиска наименьшего числа в массиве из 5 целых чисел на двух языках Си и С++ на компиляторе IAR for ARM 8.20. Читать дальше ->
Пожалуй, непопулярное мнение (и тут немного иронии от меня).
Чтобы быть способным и отличным инженером, вам не нужно писать статьи в блоге, участвовать в проектах open source, выступать с техническими лекциями или делать что-нибудь ещё.
Можете оставить свой код в офисе — и это вполне нормально.