Архив за 24 октября 2016

Подключение oled дисплея с контроллером SSD1306 к STM32 по I2C - 1Многие, наверное, знают о таких маленьких дешёвых (меньше $3) OLED дисплеях, которые можно найти в огромном ассортименте на ebay или aliexpress. В интернете существует множество различных статей о том, как подключать эти дисплеи к Arduino и другим МК, но для STM32f10x затруднительно найти даже библиотеку. Поэтому я решил написать эту статью.

Данный дисплей имеет разрешение 128х64 пиксела и контроллер SSD1306 и подклчается к микроконтроллеру по интерфейсу I2C.
Читать полностью »

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

1. Нельзя использовать числа в явном виде, кроме 0.
2. Количество разрешённых математических операций тоже было ограничено.

Повторять её на Go я не стал, но решил применить один из вариантов решения, для отображения строки. Идея эта не нова, и на полноправное авторство не претендую, просто решил поделиться.
Читать полностью »

«Великое Тихоокеанское мусорное пятно» – это миф; наблюдения не обнаружили никакого «мусорного острова» - 1

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

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

Фотоэкскурсия по выставке MakerFaire 2016 в Шэньчжене, часть 1 - 1

Пару дней назад завершилась выставка MakerFaire 2016, которая проходила в Китае, в городе Шэньчжень. Китай признанный лидер в электронике, а город Шэньчжень можно назвать столицей электроники в Китае. Поэтому данное мероприятие вдвойне интересно — чтобы посмотреть на новинки рынка DIY электроники и робототехники.

Мы уже рассказывали про выставку MakerFaire в 2015 году, поэтому будет интересно посмотреть, отличия в этом году.

А на фото — девушка с ником «sexy cyborg», жительница Шэньчженя, и поклонница электроники, DIY и 3д печати (да, и на руке у неё два мини коптера).
Читать полностью »

В МТИ запустили нейросеть, генерирующую пугающие изображения - 1

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

Акционер инвесткомпании, созданной бывшими членами РБК ТМТ Investments Артем Инютин передал 2,674 млн акций другому акционеру Герману Каплуну. В результате Каплун аккумулировал 19,28% от всех акций TMT Investments.

Согласно документам, поданным на LSE, сделка была безденежной. Таким образом, Каплун стал крупнейшим акционером компании. По данным ресурса 4-traders, кроме негоЧитать полностью »

Облачное хранилище Yunpan 360 будет закрыто в 2017 году - 1Yunpan 360 — облачное хранилище предоставлявшее пользователям 100Тб места на облачном диске в самом начале своей работы. Постепенно новым пользователям стали давать только 36Тб. На сегодня это 3,6Тб. Это было очень привлекательно иметь такое хранилище.
Но все когда то заканчивается...
Читать полностью »

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

Предыстория

Все началось с того, что я открыл для себя т.н. Double-TRUE VLOOKUP trick (трюк с двойным использованием ВПР и ИСТИНА в 4-м параметре). Развернутое описание алгоритма можно найти в статье Charles Williams «Why 2 VLOOKUPS are better than 1 VLOOKUP» (в конце статьи).

Поняв принцип работы и открыв для себя, что этот подход может быть в тысячи раз быстрее обычного линейного поиска (ВПР с 4-м параметром ЛОЖЬ), я начал продумывать варианты раскрыть его возможности. В ходе реализации получилось несколько годных инструментов для контекстной рекламы, один из которых я еще продолжаю улучшать, и уже посвятил проекту пару статей на Хабре. Чтиво рекомендуется SEO-специалистам и специалистам по контекстной рекламе (сразу оговорюсь, по ссылкам в статьях уже устаревшие версии, последняя версия условно 6.0, ссылки на скачивание всех версий, включая самую свежую, будут в конце этой статьи):
Анализ больших семантических ядер, или «Робот-распознаватель»
Лемматизация в Excel, или «Робот-распознаватель 3.0

Так вот, несмотря на невероятную скорость работы этих файлов (невероятную для Excel), их создание потребовало использования таких же невероятно длинных мегаформул как одной из составляющих работы макросов (в последней из вышеуказанных статей приведен пример — формула на 3215 символов). И всему виной сложный синтаксис функции.
Если набить руку с его использованием, он перестает казаться сложным, но неискушенным пользователям, для которых предназначен такой подход, вряд ли захочется разбираться в нем.

Синтаксис выглядит так: Если(ВПР(искомое; массив;1; ИСТИНА)<искомое;""; ВПР(искомое; массив;n; ИСТИНА))
где n — порядковый номер столбца, из которого мы хотим вернуть значение напротив искомого ключа.
Вместо «ИСТИНА» в 4-м параметре можно использовать «1» для номинального сокращения длины формул, это не меняет их сути.
Если озвучить ход работы формулы, будет нижеследующее:
«Если бинарный поиск ключа по первому столбцу массива возвращает значение, меньшее, чем сам ключ, возвращаем пустую строку. Иначе — возвращаем результат бинарного поиска ключа со смещением n»
Подход используется для того, чтобы не возвращать никаких значений, если искомый ключ в массиве отсутствует, т.к. зачастую, если искомое не найдено — нам не нужно меньшее значение. Так сказать, все или ничего. Вкратце, в этом и есть суть «трюка».

Напомню, на карту поставлен прирост скорости, исчисляющийся трех-четырехзначными числами. Если подходить чисто математически — на массиве в 2^20 строк обычный бинарный поиск будет делать ~10 вычислений, формула выше — около 20, в то время, как линейный поиск — ~500.000, т.е. прирост формулы выше — в 25.000 раз. Если голые цифры не впечатляют, более красноречивое эквивалентное сравнение — 1 секунда против ~7 часов.
На практике прирост не столь существенный (в конце статьи ссылка на статью, где сравнивались разные способы). Это во многом связано с затратами процессорного времени на дополнительные процедуры, которые выполняет программа (например, запись значений в ячейки). НО прирост по-прежнему критически значимый (~4000 раз).

Но одновременно с этим мы имеем сложный, совершенно неюзабельный синтаксис. Не всем смертным дался ВПР, что говорить о комбинациях 2х ВПР с ЕСЛИ.

Вопрос со сложным синтаксисом я решил с помощью VBA — написал UDF (user-defined function, пользовательская функция), которая прячет под капот наши условные конструкции, оставляя нам привычный синтаксис всем известного ВПР.

Код UDF:
Читать полностью »

Компания OmniVision представила датчик изображения, предназначенный для камер видеонаблюдения. По словам производителя, датчик, получивший обозначение OV2775, обеспечивает высокое качество изображения при температурах 0-60°С, сохраняя работоспособность в диапазоне температур от -30°С до 85°С.

Ознакомительные образцы OV2735 уже доступны

Читать полностью »

Иногда у системных инженеров возникает необходимость получить определенный набор данных непосредственно из самой СУБД средствами Powershell. В данной статье хочу продемонстрировать два метода работы c firebird, postgresql через odbc драйвер и клиентскую библиотеку.
Начнем с firebird и работу с базой через ODBC драйвер, для начала нужно зарегистрировать в системе клиентскую библиотеку GDS32.DLL, ее разрядность должна быть такой же как и ODBC драйвера который должен быть установлен далее, скачать можно на сайте производителя, обязательно во время установки необходимо поставить галочку о регистрации библиотеки.

image

Далее устанавливаем сам ODBC, который также берем на сайте производителя, не забываем что его разрядность должна соответствовать разрядности ранее установленного клиента. Теперь собственно сам powershell скрипт, за его основу был взят пример на C# для postgresql.

Читать полностью »