Архив за 21 марта 2017 - 12

Использование ArcGIS API for Python в Jupyter Notebook - 1

Всем привет! Это блог компании "Техносерв". В процессе производства на проектах, которые мы выполняем, рождаются интересные технологические кейсы. Их скопилось такое количество, что мы решили начать делиться ими с миром. И да, это наша первая публикация.

Честь начать блог выпала мне, и я пишу о том, что мне близко и любимо: о геоинформационных технологиях. Я работаю в департаменте Больших Данных, где занимаюсь разработкой высоконагруженных геоинформационных систем и сервисов на базе движков для распределенных вычислений. О высоких материях мы еще поговорим, а сегодня плавно начнем погружение в ГИС.

Все чаще и чаще у аналитиков данных (или как еще их называют — Data Scientist) появляется потребность в визуализации данных на карте. Какой инструмент сейчас считается наиболее удобным для работы аналитика? Конечно же, тетрадки! До последнего времени возможностей по визуализации геоданных было не так много. Можно было делать статические растры в matplotlib, иногда можно было добавлять даже базовые карты. Интересной оказалась библиотека для работы с Leaflet, где можно открывать geojson-файлы. Сегодня же я хочу рассказать об ArcGIS API for Python от компании Esri.

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

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

image

С версии 1.5 компилятор Go поддерживает несколько режимов сборки, определяемых флагом buildmode. Их ещё называют режимами исполнения Go (Go Execution Modes). С их помощью go tool может компилировать пакеты Go в нескольких форматах, включая архивы и библиотеки общего пользования Go (shared libraries), архивы и библиотеки общего пользования Си, а с версии 1.8 — и динамические плагины Go.

В статье мы рассмотрим компилирование пакетов Go в библиотеки Си. В этом режиме сборки компилятор генерирует стандартный бинарный файл объекта (shared object) (.so), передавая функции Go в качестве API в стиле Си. Мы поговорим о том, как создавать библиотеки Go, которые можно вызывать из C, Python, Ruby, Node и Java.

Весь код доступен на GitHub.

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

Компания Intel начала продажи первого устройства, основанного на технологии 3D Xpoint, — Intel Optane SSD DC P4800X. Новый тип памяти обещает более высокие скорости и надежность по сравнению с DRAM. Целевой аудиторией устройства являются владельцы дата-центров, и пока что клиентам доступна только самая первая модель платы объемом 375 Гбайт — 1,5-терабайтные устройства и другие форм-факторы появятся на рынке во второй половине 2017 года.

Intel запускает первый SSD с технологией 3D Xpoint - 1Читать полностью »

Microsoft внедрила в Windows 10 скрытую настройку

Голландская организация по защите прав потребителей выяснила, что софтверный гигант внедрил в операционную систему Windows 10 скрытую рекламную настройку.

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

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

Коллекции

Разработчики, перешедшие на Swift с Objective-C, не могли не заметить удобнейший функционал, который предоставляет Swift для работы с коллекциями. Использование диапазонов в индексах

let slice = array[1..<10]

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

Filter

Самой часто используемой функцией для коллекций, пожалуй, является filter

let alex = Person(name: "Alex", age: 23)
let jenny = Person(name: "Jenny", age: 20)
let jason = Person(name: "Jason", age: 35)
let persons = [alex, jenny, jason]
let jNamedPersons = persons.filter { $0.name.hasPrefix("J") } // [jenny, jason]

Reduce

Реже используемой, но при этом крайне выразительной и удобной является функция reduce


let ages = persons.map{ Float($0.age) }
let average = ages.reduce(0, +) / Float(persons.count)

Можно писать свои функции высшего порядка и это довольно увлекательно:

func divisible(by numbers: Int...) -> (Int) -> Bool {
    return { input -> Bool in
        return numbers.reduce(true) { divisible, number in
            divisible && input % number == 0
        }
    }
}

let items = [6, 12, 24, 13]
let result = items.filter(divisible(by: 2, 3, 4)) // [12, 24]

Map

Функциональные понятия функторов и монад пришли к нам из языка Haskell. Говорят, невозможно просто взять и понять, что такое монада, а уж тем более невозможно это объяснить. Тем не менее мы можем временно отбросить все сложности и объяснить себе только то, что действительно необходимо, а те, кто захочет закопаться поглубже, могут начать с изучения Haskell.

Итак, для простоты мы можем считать, что функтор это контейнер, к которому применима функция map, а монада это функтор, к которому применима функция flatMap.

Поскольку коллекции это контейнеры, и в Swift для них определена функция map, они могут выступать в роли функторов:
для того, чтобы трансформировать коллекцию одного типа в коллекцию другого типа, возьмем наш массив persons и получим из него массив возрастов типа [Int]

let ages = array.map{ $0.age } // [23, 20, 35]

FlatMap

И в роли монад:
для того, чтобы из массива oprtional типов вернуть массив не опциональных значений

let optionalStrings: [String?] = ["a", nil, "b", "c", nil]
let strings = optionalStrings.flatMap { $0 } // ["a", "b", "c"]

для того, чтобы расширить первоначальную коллекцию

let odds = [1,3,5,7,9]
let evensAndOdds = odds.flatMap { [$0, $0 + 1] } // [1,2,3,4,5,6,7,8,9,10]

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

Вместо вступления

Всем привет. Делюсь впечатлениями от обучения в школе скрам-мастеров от ScumTrek, под хабракатом шесть страниц текста моих мыслей и впечатлений по этому поводу. Велкам.

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

Инсайдер Эван Блэсс (Evan Blass), который вчера предоставил официальные изображения смартфона Samsung Galaxy S8 в нескольких цветах, сегодня выложил новые картинки.

Свежая подборка примечательна тем, что на ней также изображена задняя панель смартфонов, позволяющая лучше оценить цвета Orchid Gray и Black Sky. Источник подтвердил, что обои на рабочем столе смартфонов являются официальными.

В 2014 году базы данных на основе блокчейнов начали набирать популярность в финансовой сфере. Банки занялись разработкой концептов и прототипов на основе этой технологии. Например, фондовая биржа NASDAQ планировала использовать протокол Open Assets Protocol, основанный на окрашенных монетах (colored coins), для обеспечения полного цикла контроля за ценными бумагами клиентов.

Крупнейший французский банк BNP Paribas исследует возможность внедрения биткойна в валютную систему. Австралийские банки — Commonwealth Bank of Australia (CBA), Westpac Banking Corporation и Australia and New Zealand Banking Group также экспериментируют с платежами на основе протокола Ripple.

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

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

Экскурсия на московское производство компонентов для сетей связи. Часть вторая - 1
Читать полностью »

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

«Ростелеком» известил клиентов, Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js