Обновить
1020.55

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

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

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

Replication Framework • глубинное копирование и обобщённое сравнение связных графов объектов

Время на прочтение12 мин
Количество просмотров5.5K
Приветствую, читатель!

Хочу познакомить тебя с молодой, но многообещающей библиотекой Replication Framework для платформы .NET (возможно, при наличии достаточного интереса к теме в дальнейшем будет также реализована Java-версия). Библиотека является портабельной (portable) и может быть использована в любом проекте под Microsoft .NET или Mono.

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

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

Работа с периферией из JavaScript: от теории к практике

Время на прочтение8 мин
Количество просмотров22K
Работа сотрудника банка опасна и трудна. В Единой фронтальной системе мы стараемся помочь сотруднику банка и автоматизировать его работу. Одна из многочисленных задач, которую нам нужно решить, — доработать тонкий клиент для возможности работы с периферийным банковским оборудованием. Но сделать это не так-то просто. В данной статье мы расскажем, как мы пытались решить задачу, и к чему это привело.

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


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

Запуск Bare-metal приложения на Cyclone V SoC

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

Введение


Для некоторых людей FPGA SoC является чем-то недоступным пониманию и данная статья должна исправить это недоразумение. Разберем создание программы с нуля, от пустого проекта, до горящего светодиода. Для начала скажу, что проект выполнялся на отладочной плате DE1-SoC, и вы можете с легкостью адаптировать его для других плат с плисами фирмы Аltera, если разберетесь с данным руководством. Начнем!
Читать дальше →

Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (часть 1)

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

«А он еще не умер?»,- спрашивают нас про Dart на каждой фронтенд-конференции. «А как Google поддерживает язык?», «как вы нанимаете разработчиков в команду?», «а почему не TypeScript, если вам нужна типизация?»

Мы решили объединить наиболее частые вопросы и задать их в интервью Игорю Демьянову, менеджеру по разработке Wrike.

Поговорим с ним о том, почему Wrike, с 2 млн строчками кода за спиной больше двух лет назад не побоялся перейти с JavaScript на Dart, как проходила миграция, как рос продукт и увеличивалась команда разработчиков, как развивается язык сегодня, несмотря на разговоры о его стагнации или даже смерти.
Читать

Оптическое распознавание символов на микроконтроллере

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


На сегодняшний день оптическое распознавание символов является частью решения таких прикладных задач, как распознавание и оцифровка текстов, распознавание документов, распознавание автомобильных номеров, определение номеров банковских карточек, чтение показаний счетчиков учета, определения номеров домов для создания карт (Google Street View) и т.д.

Распознавание символа означает анализ его изображения с целью получения некоторого набора признаков для сравнения их с признаками класса [ 1 ]. Выбор такого набора и способы его определения отличают разные методы распознавания, но для большинства из них необходима одномоментная информация обо всех пикселях изображения.

Последнее обстоятельство и достаточно большой объем вычислений делают невозможным использования маломощных вычислительных устройств (микроконтроллеров) для оптического распознавания символов. «Да и зачем?» — воскликнет информированный читатель, «мощности вычислительных устройств постоянно растут, а их цена падает!»[2, 3]. Допустим, что ответ будет такой: просто интересно, возможно ли упростить метод распознавания до такой степени, чтобы можно было бы использовать микроконтроллер?
Читать дальше →

Наслаждайтесь миллиардами цветов с 10-битным HEVC

Время на прочтение6 мин
Количество просмотров77K
Человеческий глаз способен видеть намного больше цветов, чем показывают ему современные видео дисплеи. Каким бы навороченным не был компьютер, он все равно может воспроизвести лишь конечное количество цветов. В этой статье мы расскажем об использовании 10-битной глубины цвета в сравнении с 8-битной, исходя из функционала процессоров Intel Core седьмого поколения и оптимизирующих возможностей Intel Software Tools. В статье вы также найдете ссылку на пример программы, реализующей 10-битное HEVC кодирование.


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

May the Code Review be with you

Время на прочтение9 мин
Количество просмотров27K
Code review может быть большой болью для команды, которая только начинает его внедрять. Вы в любом случае наступите на много граблей: будете проводить ревью дольше, чем пишете код, устраивать смертельные споры про расположение скобочек и разбираться, можно ли сливать ветку в master до аппрува команды или нет. Я собрал ряд практик, которые помогут вам сделать процесс адаптации чуть менее болезненным — по крайней мере, мне они точно помогли.
 
Этот материал — краткая выжимка моего опыта, накопленного за несколько лет работы в крупных командах мобильной разработки. Опыт по большей части в мобильной разработке, что оказало влияние на используемые примеры и ссылки. Для тех, кто предпочитает не читать, а смотреть, в течение пары месяцев должно появиться видео с конференции Mobius, где я рассказываю доклад на эту же тему, но с кучей подробных практических примеров.
 

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

Внимание, Хабрахабр: IBM открывает бесплатный доступ к большому количеству своих ресурсов

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


Компания IBM уже много лет публикует материалы о своих разработках на Хабрахабре. Мы рады, что многие статьи интересны читателям. Тем не менее, мы также не раз видели желание наших читателей начать работу с сервисами и ресурсами IBM на бесплатной основе. И сегодня мы рады сообщить о том, что теперь многие пользователи смогут получить бесплатный доступ к большинству ресурсов Академического хаба, IBM Bluemix, когнитивным технологиям IBM Watson и Интернета вещей.

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

Разбираемся в джунглях программирования, или почему Маугли дружил с Python?

Время на прочтение3 мин
Количество просмотров7.6K
В произведении Редьярда Киплинга “Книга джунглей” питон Каа олицетворял собой не только силу, но и мудрость. Маугли быстро смекнул, что такого персонажа лучше взять в союзники — так и в тропических джунглях не пропадёшь, и благодаря его советам хоть чуть-чуть станешь похожим на человека.
Читать дальше →

Советы начинающему скалисту (часть 2)

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

Часть 2. Обо всем и ни о чем


Сегодня мы обсудим ряд скалических идиом, которые не поместились в первую часть статьи. Мы рассмотрим вопросы интероперации языка с Java и, главное, неправильное использование объектно-ориентированных особенностей Scala.

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

Выпуск Rust 1.18

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

Команда Rust рада представить выпуск Rust 1.18.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.


Если у вас установлена предыдущая версия Rust, то для обновления достаточно выполнить:


$ rustup update stable

Если у вас ещё не установлен Rust, вы можете установить rustup c соответствующей страницы нашего веб-сайта и ознакомиться с подробным примечанием к выпуску 1.18.0 на GitHub.

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

Цена ошибки: кто и сколько платит за промахи программистов?

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

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


Picture 4

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

Как масштабировать биткойн-блокчейн

Время на прочтение7 мин
Количество просмотров9.6K
В одном из наших предыдущих материалов мы отмечали, что главными преимуществами блокчейна являются открытость, защищенность и безопасность. Однако любая технология всегда имеет определенные недостатки.

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

  • Какой самый большой недостаток биткойн-блокчейна?
  • Какие решения предлагало мировое сообщество?
  • Какое из них станет частью биткойн-сети?

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

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

Как создать современную CI/CD-цепочку с помощью бесплатных облачных сервисов

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



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


Такой способ создания программного обеспечения используется в процессах Непрерывной интеграции (Continuous Integration) и Непрерывного развертывания (Continuous Deployment), или CI/CD-цепочке. В этой статье мы пройдем по всем шагам настройки такой цепочки, используя для ее построения бесплатные облачные сервисы.

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

Реформа SQL-ориентированного подхода в DAO

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

Вводная


Мне часто в проектах приходится сталкиваться с фреймворками по работе с БД. Концептуально, эти фреймворки можно разбить на 2 больших класса:

  • ORM-ориентированные
  • SQL-ориентированные

Некоторые из них хороши, какие-то не очень. Но субъективно могу сказать: SQL-ориентированные уступают в развитии ORM-ориентированным. Подчеркну, в развитии, а не в возможностях. Хоть изменить эту чашу весов и не получится, но предложить необычный взгляд на мир SQL-ориентированного подхода — вполне. Кому интересно, добро пожаловать под кат
Читать дальше →

Клиент-сервер шаг — за — шагом, от однопоточного до многопоточного (Client-Server step by step)

Время на прочтение11 мин
Количество просмотров20K
Цель публикации показать начинающим Java программистам все этапы создания многопоточного сервера. Для полного понимания данной темы основная информация содержится в комментариях моего кода и в выводимых в консоли сообщениях для лучшего понимания что именно происходит и в какой именно последовательности.

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

Создаём динамическую обложку ВКонтакте

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

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


На примере моего пустого сообщества-песочницы
Читать дальше →

Применение национальных языков в программировании на SPL

Время на прочтение3 мин
Количество просмотров4.4K
Наверняка каждый программист считает само собой разумеющимся, что основной код программы пишется на английском языке. Можно поспорить о том, обязательно ли так должно быть или это просто анахронизм, но бывает и по-другому.
Читать дальше →

Язык программирования SPL — пример решения задачи

Время на прочтение3 мин
Количество просмотров9.9K
В этой статье я расскажу о том, как можно в языке программирования SPL решить классическую задачу: получить список наиболее часто встречающихся в тексте слов. В качестве образца текста возьмем произведение Шекспира Гамлет.
Читать дальше →

Клиент-сервер шаг — за — шагом, от однопоточного до многопоточного (Client-Server step by step)

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

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


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

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

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