Все потоки
Поиск
Написать публикацию
Обновить
1005.39

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Intel и Google — дружим «облаками»

Время на прочтение1 мин
Количество просмотров2.8K
На проходившей в Сан-Франциско конференции Google Cloud Next ‘17 объявлено о программе стратегического партнерства «Better Together» («Вместе лучше») между компаниями Google и Intel в области облачных технологий и «Интернета вещей». Цель программы — предоставить разработчикам программные и аппаратные компоненты, инструменты и учебные материалы для ускорения процесса создания приложений. При этом Google открывает доступ к своему «облаку» и его функционалу, а Intel обеспечивает программными средствами разработки, такими как Intel IoT Developer Kit и предоставляет шлюзы «интернета вещей» в лице Intel NUC.


Планируется запустить совместные он-лайн ресурсы для разработчиков — главная страница проекта на сайте Intel Developer Zone уже работает — а также провести тренинги и другие мероприятия. В свою очередь, специалисты компаний будут проводить интеграцию между участвующими в программе Intel IoT Developer Kit, Intel NUC и Google Cloud Platform.
Читать дальше →

Как искать паттерны в биржевых данных и использовать их в торговле?

Время на прочтение13 мин
Количество просмотров40K
Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли.

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

В статье есть несколько приятных бонусов в виде кода на Python — Вы сможете сами проанализировать любые (почти) биржевые данные (или значения индикаторов), запустить собственного торгового робота и проверить любую торговую стратегию.

Все условия и определения паттернов в статье приведены для примера, вы можете использовать любые критерии.
Читать дальше →

Изменение размера изображения с учётом содержимого

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

Изменение размера изображения с учётом содержимого (Content Aware Image Resize), жидкое растяжение (liquid resizing), ретаргетинг (retargeting) или вырезание шва (seam carving) относятся к методу изменения размера изображения, где можно вставлять или удалять швы, или наименее важные пути, для уменьшения или наращивания изображения. Об этой идее я узнал из ролика на YouTube, от Shai Avidan и Ariel Shamir.


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


Для подопытной картинки, я поискал по запросу1 "sample image", и нашел её2:


image

Читать дальше →

Что такое Resizable Concurrent Map

Время на прочтение6 мин
Количество просмотров11K
В одном из прежних постов я рассказывал, как реализовать «простейшую в мире lock-free хеш-таблицу» на C++. Она была настолько проста, что было невозможно удалять из нее записи или менять ее размерность. С тех пор прошло несколько лет, и не так давно я написал несколько многопоточных ассоциативных массивов без таких ограничений. Их можно найти в моем проекте Junction на GitHub.

Junction содержит несколько многопоточных реализаций интерфейса map – даже «самая простая в мире» среди них, под названием ConcurrentMap_Crude. Для краткости будем называть ее Crude map. В этом посте я объясню разницу между Crude map и Linear map из библиотеки Junction. Linear — самый простой map в Junction, поддерживающий и изменение размера, и удаление.

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


Читать дальше →

Glitch — новый подход к разработке приложений

Время на прочтение5 мин
Количество просмотров21K
На днях мы наткнулись на интересную статью на блог-платформе Medium, речь в которой идет о свежем проекте компании Fog Creek — Glitch (с английского «глюк», «сбой программы»). Бета-версия проекта стартовала в декабре 2016 года, правда, под другим названием, но об этом позже.

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



Проект призван сделать процесс создания ботов и веб-разработку быстрее и проще. Сервис предлагает бесплатно ознакомиться с примерами работающих приложений, куски кода которых можно использовать для создания собственных продуктов, и дает возможность воспользоваться редактором кода для их модификации. Glitch поддерживает импорт и экспорт проектов из GitHub, в частности вы можете поместить прямо на страницу проекта GitHub особую кнопку, которая позволит новым пользователям запускать его на Glitch одним щелчком мыши.
Читать дальше →

Russian Code Cup снова бросает вызов программистам

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


Крупнейший российский чемпионат по спортивному программированию Russian Code Cup 2017 стартует 19 марта. Талантливые программисты со всего мира вновь будут соревноваться в правильности и скорости решения задач и поборются за призовой фонд в размере 750 тысяч рублей.

Основная программа Russian Code Cup (RCC) традиционно состоит из трех этапов: три квалификационных раунда (2 апреля, 16 апреля и 29 апреля), отборочный раунд (14 мая) и финал (10 сентября). На каждом этапе участникам предстоит решить от четырех до восьми разноплановых задач. Те, кому не повезло в первом квалификационном раунде, могут попытать удачи в следующих. В отборочный тур пройдут по 200 лучших участников с каждой квалификации, а в финале сойдутся 50 лучших программистов.
Читать дальше →

Автоматизация бизнес-процессов. Ad-hoc изменения на примере из жизни. Часть 3

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

imageТема внедрения изменений в бизнес-процессы дошла и до Российского отделения международной Ассоциации BPM-профессионалов (ABPMP Russian Chapter) в виде статьи президента этой ассоциации г-на Белайчука под названием "С чего начинается управление изменениями". Точнее г-н Белайчук поделился с читателями своего блога переводом статьи с англоязычного ресурса.


В статье речь идёт об управлении изменениями в бизнес-процессах. Основная мысль заключается в том, что "начинать управлять изменениями надо намного раньше — уже на первом этапе проекта BPI, когда разрабатывается устав, проводится выявление процесса и его моделирование". Автор статьи даёт понять, что управление изменениями должно носить систематический характер, и необходимо принимать во внимание, что в работе любой организации постоянными могут быть только изменения.


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


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


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


Суть подхода заключается в следующем:


Читать дальше →

Фильтрация и создание цепочек в функциональном JavaScript

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


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

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

Хотя JavaScript поддерживает методики функционального программирования, он не оптимизирован для полноценного использования этой парадигмы, как Haskell или Scala. Не обязательно добиваться того, чтобы ваши JS-программы полностью соответствовали концепциям функционального программирования. Но их применение помогает поддерживать чистоту кода и концентрироваться на создании архитектуры, которая легко тестируется и может использоваться в нескольких проектах.
Читать дальше →

Что нам стоит сервис email-маркетинга построить? Взгляд изнутри, часть вторая

Время на прочтение11 мин
Количество просмотров11K
Насколько сложно построить полноценный сервис email-маркетинга? Что для этого нужно предусмотреть? Какие подводные камни могут встретиться на пути пытливых умов разработчиков?

image

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

Сразу оговорюсь, что в статье рассмотрена только техническая сторона вопроса.
Читать дальше →

Имена или семантика классов в программировании

Время на прочтение2 мин
Количество просмотров13K
1. При программировании на придумывание имен может уходить ощутимо много времени. Казалось бы, такая маловажная вещь, как имя. И вот только сегодня я осознал, почему я трачу на это время, и почему, в итоге, это не напрасная трата времени.

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

Выбор имени — это один из этапов проектирования, когда какие-то сложные вещи — операции, объекты, отношения, скрываются уровнем абстракции. То есть скрываются за назначенным именем.

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

Как вы яхту назовете, так она и поплывет.
Читать дальше →

Практическое применение преобразования Фурье для обработки сигналов

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

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

Данный опус не претендует на полноту и связность изложения.
Читать дальше →

Тёмный путь

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

image


Предлагаю вашему вниманию перевод оригинальной статьи Роберта С. Мартина.


За последние несколько месяцев я попробовал два новых языка. Swift и Kotlin. У этих двух языков есть ряд общих особенностей. Действительно, сходство настолько сильное, что мне стало интересно, не является ли это новой тенденцией в нашей языкомешалке. Если это действительно так, то это тёмный путь.


Оба языка включают в себя некоторые функциональные характеристики. Например, в них обоих есть лямбды. В целом, это хорошая штука. Чем больше мы узнаем о функциональном программировании, тем лучше. Эти языки далеки от по-настоящему функционального языка программирования; но каждый шаг в этом направлении — хороший шаг.


Проблема в том, что оба языка сделали ставку на сильную статическую типизацию. Кажется, оба намерены заткнуть каждую дыру в своём родном языке. В случае со Swift – это странный гибрид C и Smalltalk, который называется Objective-C; поэтому, возможно, упор на типизацию понятен. Что касается Kotlin – его предком является уже довольно строго типизированная Java.


Я не хочу, чтобы вы думали, что я против статически типизированных языков. Я не против. Есть определенные преимущества как для динамических, так и для статических языков; и я с удовольствием пользуюсь обоими видами. Я предпочитаю динамическую типизацию, и поэтому я иногда использую Clojure. С другой стороны, я, вероятно, пишу больше Java, чем Clojure. Поэтому вы можете считать меня би-типичным. Я иду по обеим сторонам улицы — если так можно выразиться.


Дело не в том, что меня беспокоит статическая типизация Swift и Kotlin. Скорее меня беспокоит глубина статической типизации.

Погрузиться в пучину тьмы

DIY в телефонии: простые конструкторы на основе API

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

Не обязательно быть программистом, чтобы интегрировать друг с другом IT-сервисы. Открытый API + простой сервис-конструктор — и rocket science становится доступным условному гуманитарию. Покажу три наиболее интересных, на мой вкус, конструктора и расскажу, как их можно применить в телефонии.


Читать дальше →

Ближайшие события

Фильтрация изображения на FPGA

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


Данная статья является продолжением моей предыдущей статьи о детектировании движения на ПЛИС. В ней я хочу рассмотреть реализацию трёх алгоритмов фильтрации изображения, один из которых является наиболее важным при разработке детектора движения.
Читать дальше →

Лекция Чарльза Мура, создателя Forth: 144-ядерный процессор, зачем? Сложно ли запрограммировать 144 вычислительных ядра?

Время на прочтение8 мин
Количество просмотров15K
Создатель 144-ядерного процессора GA144 и языка программирования Forth, известный программист Чарльз Мур (Charles H. Moore), известный также под именем Чак Мур (Chuck Moore), в своей лекции рассказывает о перспективах применения 144-х ядерного асинхронного чипа, созданного его компанией, GreenArrays, а также его программировании. Ведь его чип потребляет всего лишь 7 пДж энергии (при выполнении базовой инструкции ALU, что занимает 1.5 наносекунды), что делает его незаменимым в случаях, когда процессор может питаться лишь от автономного источника энергии без возможности подзарядки, начиная от разработок в сфере медицины и заканчивая робототехникой. Незадействованные ядра потребляют всего 100 нановатт, в то время, как активным, требуется всего 4 милливатта при обработке 666 MIPS: плотный код сводит к минимуму количество выполняемых инструкций, уменьшая количество выборки команд, переключения транзисторов и рабочего цикла.

Так как лекция еще не публиковалась ранее, мы опубликовали её для Вас на youtube:



Если кто-то будет в состоянии сделать субтитры — пишите, добавим, будем очень признательны, если кто-то найдет время для выполнения столь важной работы.

Сам процессор поступил в продажу в 2011-м году, по цене $20. В этой публикации мы постарались систематизировать имеющуюся новую информацию и заполнить пробелы, которые могут возникнуть после чтения документации от GreenArrays.

Я — самозванец

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

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

Переведено в Alconost

«Самозванец» — сильное слово, но именно так я чувствую себя на протяжении всей своей карьеры профессионального веб-разработчика. Мне кажется, что я, хоть и не прекращаю учиться каждый день, все равно отстаю. Мне кажется, что меня воспринимают как эксперта там, где я считаю себя затаившейся катастрофой. Я полный самозванец. Мошенник.
Читать дальше →

Сага о том, как Java-разработчики должны тестировать свои приложения. Часть 2

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

Сага о том, как Java-разработчики должны тестировать свои приложения. Часть 1

Перед вами вторая часть Саги от Николая xpinjection Алименкова о том, как Java-разработчики должны тестировать свои приложения, речь в которой пойдет о TDD, BDD, тестировании FTP, UI, web-UI, JMS и баз данных.

Итак, шёл второй час…


Читать дальше →

Конфигурирование стиля кода в Visual Studio 2017

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

Предлагаю вашему вниманию перевод полезной статьи о том, как настраивать и применять правила написания кода в вашей команде.

Visual Studio 2017 обеспечивает соблюдение стиля написания кода и поддержку EditorConfig. Новая версия включает в себя больше правил для code style и позволяет разработчикам настраивать стиль кода через EditorConfig.
Читать дальше →

PG Metricus — сбор метрик из plpgsql кода или как три строчки кода упростили жизнь

Время на прочтение4 мин
Количество просмотров10K
Начнем с того, что все ваши объявления живут в базе PostgreSQL. До сих пор львиная часть бизнес-логики скрыта в хранимых процедурах, и не всегда их работу удобно контролировать.



Для нас хранимые процедуры удобны, в первую очередь тем, что не надо передавать гигабайты данных между базой и приложением. Удобно сделать несколько действий с разными таблицами в базе, а в приложение только отчитаться о том, что всё было выполнено успешно. Это действительно удобно, но в то же время это привносит и ряд проблем. Бизнес-логика частично прячется в базе, механизмы, которые используются для отладки и мониторинга на PHP/Go/Python/etc неприменимы на стороне СУБД. Конечно, есть свои замечательные средства, например, pg_stat_statements, но иногда они не могут в полной мере ответить на вопрос, какой именно кусок кода в нашей большой и сложной хранимке работает не так. Предложенное нами решение не претендует на звание «серебряной пули», но может помочь быстро определить среднее время выполнения кусков кода внутри хранимой процедуры, которая выполняется тысячи раз в секунду, и сделать это без создания лишней нагрузки. Интересно? Добро пожаловать!
Читать дальше →

Как пробудить приложение в iOS: по расписанию и не очень

Время на прочтение3 мин
Количество просмотров12K
Пуш-уведомления – хороший способ взаимодействия с пользователями, их вовлечения и возврата в приложения (кто хоть раз не просыпался ночью от не вовремя доставленного уведомления?). Однако есть у пушей и еще одна интересная функция, о которой не все знают.

Представьте, что ваш мессенджер, так любимый пользователем, отправляется в фоновый режим и там «засыпает». Как ему принять звонок, будучи не подключенным к серверу? Ответ как раз и заключается в пуше – сообщение «будит» приложение, оно переходит в активный режим и уже может принять звонок.
Читать дальше →

Вклад авторов