Pull to refresh
  • by relevance
  • by date
  • by rating

AMD Brook+: с места в карьер

Computer hardware
Про nVidia CUDA хабровчане уже наслышаны, теперь настал черед и AMD Brook+. Brook+ позволяет вам писать программы на С и запускать их на видеокартах AMD (ну и как опция — автоматически можно сгенерировать CPU версию со средним качеством кода). Достижимая производительность — порядка 600млрд операций на AMD 4870.

NB: Статья — краткое введение, не стоит ожидать освещения тут всех аспектов программирования на Brook+ :-)
Читать дальше
Total votes 32: ↑29 and ↓3 +26
Views 1.5K
Comments 14

VLC: Стрим и Стрим-Сервер #1

Working with video *Software
По просьбам трудящихся, начинаем потихоньку разворачивать тему стриминга при помощи VLC, но для начала немного вводной информации, о которой стали часто спрашивать после Двух серьезных разговоров о VLC
image
Читать дальше →
Total votes 39: ↑36 and ↓3 +33
Views 28K
Comments 50

Видеообзор Stream: Android-флагман от Acer

Nomobile.Ru corporate blog
Редактор раздела «Смартфоны» сайта Nomobile.ru Алексей goncharow тщательно обозрел асеровскую бомбу и особенно его новый интерфейс. В целом понравилось



Полный текстовый обзор здесь
Total votes 31: ↑17 and ↓14 +3
Views 8.3K
Comments 37

std::stringstream и форматирование строк

C++ *
Ввод и вывод информации — критически важная задача, без выполнения которой любая программа становится бесполезной. В C++ для решения данной задачи традиционно применяются потоки ввода-вывода, которые реализованы в стандартной библиотеке IOStream.

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

В библиотеке IOStream есть также класс stringstream, который позволяет связать поток ввода-вывода со строкой в памяти. Всё, что выводится в такой поток, добавляется в конец строки; всё, что считыватся из потока — извлекается из начала строки.

Он позволяет делать весьма забавные вещи, например, осуществлять преобразование типов:

Читать дальше →
Total votes 38: ↑31 and ↓7 +24
Views 167K
Comments 32

Шпора на контрольную по теме «Класс Stream и произодные от него в .Net»

.NET *
Даже когда я уже неплохо умел педалить, я никак не мог запомнить иерархию наследования и то, как использовать классы вроде Stream, StreamWriter, HttpWriter в .Net. Решил это простым способом — выписал их все (основные), написал пару слов о каждом.
Для тех, кому тема знакома совсем ничего ничего нового тут не будет.
Читать дальше →
Total votes 27: ↑7 and ↓20 -13
Views 1.3K
Comments 1

Как я с компьютера на Android планшете потоковое торрент видео смотрел

Working with video *
Sandbox


Здравствуйте уважаемые Хабрачане!
Небольшая предыстория:
Меня давно интересовала возможность стриминга видео с домашнего компьютера на мой андроид планшет.
Не долго лазя по маркету нашел такое приложение как VLC Direct Pro Free, которое прекрасно справлялось с поставленой задачей (хоть и были косяки, но не смертельные), теперь я мог находясь даже далеко от дома, с относительно быстрым WI-FI соединением просматривать свою домашнюю медиатеку. (Компьютер включал благодаря WOL и управлял им с помощью PhoneMyPC) Пересмотря все что у меня было на жестком диске начал задумываться, а можно ли передавать torrent-поток на планшет? Разумеется, можно было просто удаленно поставить фильм на загрузку и подождать, но такой вариант меня совершенно не устраивал. Не найдя в интернете ничего по этой теме начал самостоятельно искать такой способ, и нашел, возможно, не совсем элегантный, но тем не менее рабочий, быть может кому-то еще пригодиться.
Читать дальше →
Total votes 39: ↑29 and ↓10 +19
Views 5K
Comments 18

Стрим с mpd на смартфон или вся музыкальная коллекция в кармане

Configuring Linux *
Sandbox

Я любитель послушать музыку в дороге и на работе, при этом накопил немалую коллекцию музыки в lossless на домашнем компьютере. Хочется иметь доступ к музыке не только дома но и на смартфоне. Ограниченная память не позволяет уместить всю мою коллекцию, какими бы картами памяти я ее не расширял. Да и не хочется память на это тратить, ведь есть еще множество вещей которые туда хочется записать. Раньше я старался успеть перед выходом на работу собрать все, что хочется сегодня послушать, переконвертировать это в сжатый формат (я считаю lossless на мобильном устройстве это излишки) и записать на мобильное устройство. Но как всегда не успевал, и зачастую приходилось довольствоваться старым заезженным плейлистом. Потом у меня появился безлимитный мобильный интернет и я совсем забросил «перекидывание» музыки, стал слушать интернет радиостанции. Приходилось постоянно прыгать между станциями, и еще эти диджеи постоянно вклиниваются. И тут мне пришла идея сделать свой персональный стрим, с блекджеком и… всеми вытекающими.
Решено было установить на домашнем сервере mpd, на смартфоне приложение для прослушивания интернет радио и клиент mpc, чтобы на лету выбирать музыку. Если интересно как, прошу под кат.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views 11K
Comments 28

Реализуем полезный лог на основе потоков

Programming *C++ *
Sandbox
Среди программистов очень много увлеченных людей. Проявлять искренний интерес к своей работе, читать специальные книги и форумы даже в свободное время в этой среде, если не правило, то точно и не исключение. Тогда почему в результате столько некачественного программного обеспечения? Как получается, что студент, с горящими глазами спорящий о недостатках целых языков программирования и знающий не меньше дюжины паттернов проектирования, вдруг принимает активное участие в создании некачественной системы? Не в начале своей карьеры, а год за годом.

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

На мой взгляд, основных причины здесь две. С первой ничего не поделать. Это время, или, как чаще говорят, постоянные изменения. При разработке программного продукта, даже если он соответствует всем требованиям заказчика, в дальнейшем потребуются доработки, часто неожиданные для исполнителя. Они практически неминуемы и не всегда вписываются в архитектуру системы. Со временем программный комплекс приходит в негодность. Но время разрушало вещи и крупнее – удивляться нечему.

Вторая причина гораздо более прозаична. Невнимание к мелочам. Особенно в начале проекта. И чем моложе команда, тем эффект катастрофичнее. Конечно, гораздо интереснее обсуждать перспективы использования мультиметодов [1], чем следить за тем, чтобы операторы отделялись пробелами. Да и к конечной функциональности подобные мелочи особого отношения не имеют. Не лучше ли сначала сконцентрироваться на первоочередных требованиях, ведь время проекта и бюджет ограничены…
Читать дальше →
Total votes 18: ↑10 and ↓8 +2
Views 13K
Comments 2

Удобный двоичный источник данных взамен Stream

Programming *.NET *C# *
Sandbox
Как обычно получают двоичные данные ваши .NET-компоненты? Если отбросить примитивный случай когда все данные уже в байтовом массиве, то уверен что в виде System.IO.Stream. В общем случае он позволяет собственно только одну операцию — считать в указанный байтовый массив (буфер) указанное количество байтов. При выполнении чтения с помощью этой операции возникают два вида затруднений и одно нерациональное использование ресурсов.

Затруднение номер один: если данные одного и того же источника нужны в нескольких компонентах, то после того как один компонент считал какие то данные из Stream, то он их «потребил», и другим компонентам они уже никак не достанутся. Затруднение номер два: данные нам нужны в виде некоторых блоков, а в результате чтения блок может оказаться в буфере лишь частично (только три байта 32-х битного числа, только половина букв слова и т.д.). Нерациональное использование ресурсов возникает из-за того, что каждый читающий данные компонент должен создавать свой собственный буфер для чтения. Далее я предлагаю простое в использовании решение указанных затруднений, которое позволит очистить ваш код, получить высокую производительность чтения и получать универсальные компоненты.
Читать дальше →
Total votes 11: ↑7 and ↓4 +3
Views 7.7K
Comments 41

Анализ потока данных в реальном времени с помощью Azure Stream Analytics

Microsoft corporate blog Big Data *Microsoft Azure
Translation


Недавно Microsoft анонсировала предварительную версию нового сервиса – Azure Stream Analytics, созданного для потоковой обработки данных в режиме близкого к реальному времени.

Текущая версия Azure Stream Analytics подключается к Azure Event Hub и Azure Blob Storage для получения потока данных (носят название Inputs), а также к Event Hubs, Blob Storage, Azure SQL Database для записи результатов (Outputs). Обработчик потока (stream processor) проектируется с использованием языка похожего на SQL, что позволяет задавать обработку и преобразование потоковых данных в достоверную информацию в реальном времени.
Читать дальше →
Total votes 18: ↑12 and ↓6 +6
Views 6.1K
Comments 0

VKPLS — Генерация потокового аудио-плейлиста из vk.com

Website development *PHP *VK API *
Sandbox
image

Хочу поделиться с читателями «Хабрахабра» небольшим веб-сервисом (скриптом), который написал для себя.

С появлением социальных сетей и их широким распространением пользователи довольно много времени проводят в онлайне. Все любят музыку, а лично я без нее жить не могу. Так вышло, что всю свою музыкальную коллекцию храню в профайле «Вконтакте». Поскольку всегда в курсе новинок, не трачу свое время на поиск и скачивание, а возможность доступа к своей музыке почти с любого гаджета в любом месте где есть интернет придает максимум удобства. Я очень рад, что прошли те деревянные времена, когда хороший интернет был роскошью. Больше нет необходимости хранить такую информацию на своем жестком диске. Все, что не конфиденциально, выбрасываю в облако.

Большую часть своей работы я выполняю за компьютером, а это значит, что музыка мне необходима как кислород — чтобы сконцентрироваться на поставленных задачах. Врубаешь любимый альбом в 5.1 и творишь. Но есть одно но: чтобы послушать музыку в VK.com, я должен зайти в онлайн, а если заходишь в онлайн — то непременно получаешь кучу сообщений и затягиваешься в нежелательные беседы. Я человек добрый и отзывчивый, поэтому не могу игнорировать своих друзей с их постоянными проблемами. Но ведь мне нужно сконцентрироваться на работе, а вся моя музыка там, где меня всегда что-то отвлекает.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Views 42K
Comments 30

Прокачиваем Stream API, или нужно больше сахара

Java *
Не так давно удалось перевести на Java 8 один из проектов, над которым я работаю. Вначале, конечно, была эйфория от компактности и выразительности конструкций при использовании Stream API, но со временем захотелось писать ещё короче, гибче и выразительнее. Поначалу я добавлял статические методы в утилитные классы, однако это делало код только хуже. В конце концов я пришёл к мысли, что надо расширять сами интерфейсы потоков, в результате чего родилась маленькая библиотека StreamEx.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 26K
Comments 8

Шпаргалка Java программиста 3. Коллекции в Java (стандартные, guava, apache, trove, gs-collections и другие)

Luxoft corporate blog Website development *Programming *Java *Algorithms *
Tutorial
Сегодня я хотел бы поговорить о коллекциях в Java. Это тема встречается практически на любом техническом интервью Java разработчика, однако далеко не все разработчики в совершенстве освоили все коллекции даже стандартной библиотеки, не говоря уже о всех библиотеках с альтернативными реализациями коллекций, таких как guava, apache, trove и ряд других. Давайте посмотрим какие вообще коллекции можно найти в мире Java и какие методы работы с ними существуют.



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


Читать дальше →
Total votes 57: ↑57 and ↓0 +57
Views 232K
Comments 40

Слово на букву «М», или Монады уже здесь

ООО «ЦИТ» corporate blog Java *Scala *Functional Programming *


Про монаду ходит множество мемов и легенд. Говорят, что каждый уважающий себя программист в ходе своего функционального возмужания должен написать хотя бы один туториал про монаду — недаром на сайте языка Haskell даже ведётся специальный таймлайн для всех отважных попыток приручить этого таинственного зверя. Бывалые разработчики поговаривают также и о проклятии монад — мол, каждый, кто постигнет суть этого чудовища, начисто теряет способность кому-либо увиденное объяснить. Одни для этого вооружаются теорией категорий, другие надевают космические костюмы, но, видимо, единого способа подобраться к монадам не существует, иначе каждый программист не выдумывал бы свой собственный.

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

Именно поэтому важно если не постичь глубинную суть этого паттерна, то хотя бы научиться распознавать примеры использования монады в уже существующих, окружающих нас API. Конкретный пример всегда даёт больше, чем тысяча абстракций или сравнений. Именно такому подходу и посвящена эта статья. В ней не будет теории категорий, да и вообще какой-либо теории. Не будет оторванных от кода сравнений с объектами реального мира. Я просто приведу несколько примеров того, как монады уже используются в знакомом нам API, и постараюсь дать читателям возможность уловить основные признаки этого паттерна. В основном в статье пойдёт речь о Java, и ближе к концу, чтобы вырваться из мира legacy-ограничений, мы немного коснёмся Scala.
Читать дальше →
Total votes 43: ↑39 and ↓4 +35
Views 38K
Comments 33

Эволюция Java на примере чтения строк из файла

Website development *Programming *Java *
Tutorial
Приведу небольшой и интересный, на мой взгляд, пример, как изменилась жизнь простого крестьянина Java разработчика, на примере задачи чтения и печати строк из файла.



Многие из нас помнят

'до Java 7' мучения:


        BufferedReader reader = null;
        try {
            reader = new BufferedReader(
                        new InputStreamReader(
                            new FileInputStream(FILE_NAME), Charset.forName("UTF-8")));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            // log error
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    // log warning
                }
            }
        }

Читать дальше →
Total votes 34: ↑18 and ↓16 +2
Views 121K
Comments 17

Шпаргалка Java программиста 4. Java Stream API

Luxoft corporate blog Website development *Programming *Java *Functional Programming *
Tutorial


Несмотря на то, что Java 8 вышла уже достаточно давно, далеко не все программисты используют её новые возможности, кого-то останавливает то, что рабочие проекты слишком сложно перевести с Java 7 или даже Java 6, кого-то использование в своих проектах GWT, кто-то делает проекты под Android и не хочет или не может использовать сторонние библиотеки для реализации лямбд и Stream Api. Однако знание лямбд и Stream Api для программиста Java зачастую требуют на собеседованиях, ну и просто будет полезно при переходе на проект где используется Java 8. Я хотел бы предложить вам краткую шпаргалку по Stream Api с практическими примерами реализации различных задач с новым функциональным подходом. Знания лямбд и функционального программирования не потребуется (я постарался дать примеры так, чтобы все было понятно), уровень от самого базового знания Java и выше.

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

Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views 866K
Comments 20

Java 8 в параллель. Учимся создавать подзадачи и контролировать их выполнение

Programming *Java *Concurrent computing *
Продолжаем цикл статей, посвященный обработке больших объемов данных в параллель (красивое слово, неправда?).

В предыдущей статье мы познакомились и интересным инструментарием Fork/Join Framework, позволяющим разбить обработку на несколько частей и запустить параллельно выполнение отдельных задач. Что нового в этой статье – спросите Вы? Отвечу – более содержательные примеры и новые механизмы для качественной обработки информации. Параллельно я вам расскажу о ресурсных и прочих особенностях работы в этом режиме.



Всех заинтересованных приглашаю под кат:
Читать дальше →
Total votes 15: ↑11 and ↓4 +7
Views 31K
Comments 10

Сравниваем Java 8, RxJava, Reactor

Programming *Java *Development of mobile applications *Development for Android *
Translation
От переводчика:
Я подготовил для вас адаптированный перевод с небольшими дополнениями и исправлениями. Я сохранил несколько пропагандистский стиль оригинальной статьи, но, сама по себе, информация в ней интересная, поэтому решил, все же, перевести.

Люди часто спрашивают меня:
Зачем мне вообще использовать RxJava или Reactor, если то же самое можно сделать с помощью Streams, CompletableFutures и Optionals?


image


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


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

Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Views 26K
Comments 6