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

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

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

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

Интервью с разработчиком IOHK Александром Чепурным о программировании криптовалют и будущем блокчейна

Время на прочтение5 мин
Количество просмотров6.1K
Мы продолжаем серию интервью с докладчиками конференции DUMP, которая пройдёт 14 апреля в Екатеринбурге. Готовы интервью с программистом JetBrains Андреем Акиньшиным о том, как начать выступать на конференциях, и разработчиком Dropbox Леонидом Васильевым о жизни и работе в Ирландии.

Под катом — интервью c Александром Чепурным, научным сотрудником в компании IOHK, где он разрабатывает библиотеки с открытым кодом, например, Scorex — библиотеку для построения блокчейн-систем. Александр с 2013 года занимается блокчейн-проектами, разрабатывал ядро платформы Nxt, был одним из основателей smartcontract.com.

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

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

Анонс митапа Sync.NET #4 в Харькове

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


Собираемся на Sync.NET #4, друзья! Традиционно в программе ивента крутые доклады и не менее крутые спикеры, отличный кофе и не менее вкусные сладости, встреча со старыми и новыми знакомыми, приветливый фотограф, дружелюбные бариста и много-много интересного.
Кратко о спикерах и докладах — под катом.
Читать дальше →

Серьёзные ошибки в коде CryEngine V

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


В мае 2016 года немецкая компания Crytek решила опубликовать на GitHub исходный код игрового движка CryEngine V. Проект находится в стадии активной разработки, что влечёт за собой появление множества ошибок в коде. Мы уже проверяли проект с помощью PVS-Studio для Windows, а теперь смогли проверить проект с помощью PVS-Studio для Linux. Материала снова набралось на большую статью с описанием только очень серьёзных ошибок.
Читать дальше →

Рекурсивный фильтр скользящего среднего

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


Да, дорогой читатель, такое тоже бывает, и может быть вкусно и полезно!

Как ты уже наверняка знаешь, дорогой читатель, существует два способа построения цифровых фильтров.
Читать дальше →

Автоматизация печати в корпоративных системах или как подружить свой «велосипед» с принтером

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

С чего все начиналось


А началось все с разработки ERP-платформы в одной торговой компании примерно 2 года назад. Был выбран Linux, стек С++/Qt, PostgreSql и фронт под web. На C++/Qt был реализован сервер приложений и там же, через прослойку JS интерпретатора писалась бизнес логика. Почему так — это отдельная история, здесь рассмотрим, как разрабатывалась система печати.
Читать дальше →

Как мы делали безопасную телефонию для Wheely, мирового сервиса личных водителей

Время на прочтение3 мин
Количество просмотров7.8K
Добрый день, уважаемые читатели. Мы тут недавно осознали простую вещь – наш блог так долго рассказывал о том, как реализовать ту или иную фичу, что мы совершенно упустили из виду зачем. Другими словами, когда есть конкретная задача, найти под нее инструмент бывает несложно. Тем более, что со своей стороны мы сделали максимум для того, чтобы это было просто и недорого.

Однако нам часто встречается ситуация, когда клиент просто не знает, что именно он может сделать. Не «как», а именно «зачем». В результате ты где-нибудь на конференции, мельком, рассказываешь простой случай, а из рядов доносится: «O, а это мысль!»

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

Разработка WebRTC видеочата между iOS, Android и браузером

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

В предыдущей статье мы описывали принципы разработки видеочата между браузером и Android — устройством. Теперь же попробуем усложнить задачу и заимплементить трехсторонний видеочат на следующих платформах: Google Chrome на десктопе, Android приложение на планшете, и iOS приложение для Apple iPhone.
Читать дальше →

Композиция или наследование: как выбрать?

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

В начале...


… не было ни композиции, ни наследования, только код.


И был код неповоротливым, повторяющимся, нераздельным, несчастным, избыточным и измученным.


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


Мрачные были времена.


Но вот лучик ООП воссиял над миром… Правда, несколько десятилетий1 никто этого не замечал. Покуда не появился графический интерфейс2, которому, как выяснилось, очень-очень не хватало ООП. Когда нажимаешь на кнопку в окне, что может быть проще, чем отправить кнопке (или ее представителю) сообщение "Нажатие"3 и получить результат?


И вот тут ООП взлетел. Было написано множество4 книг, расплодились бесчисленные5 статьи. Так что сегодня-то каждый может в объектно-ориентированное программирование, так?


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

Обработка ошибок в C

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


Введение


Ошибки, увы, неизбежны, поэтому их обработка занимает очень важное место в программировании. И если алгоритмические ошибки можно выявить и исправить во время написания и тестирования программы, то ошибок времени выполнения избежать нельзя в принципе. Сегодня мы рассмотрим функции стандартной библиотеки (C Standard Library) и POSIX, используемые в обработке ошибок.
Читать дальше →

Процессоры Intel станут троичными

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


В течение долгих десятилетий рост производительности процессоров, понукаемый законом Мура, достигался за счет улучшения технологического процесса. Однако конец этой гонки уже не за горами: мы вплотную подошли к пределу, диктуемому законами физики. Каким образом мы будем «взбадривать» процессоры дальше? Стратеги Intel два года назад пришли к заключению, что одним из решений данной проблемы может быть переход от двоичной к троичной системе счисления. Ряд шагов в этом направлении уже сделан, и теперь можно с определенностью заявить: уже следующее поколение процессоров Intel Core, а за ними и Intel Xeon, будет троичным.
Читать дальше →

Несколько аргументов против Dependency Injection и Inversion of Control

Время на прочтение9 мин
Количество просмотров21K
Помнится, во времена .NET 1.1 и 2.0 можно было часто увидеть пророчества майкрософтовских евангелистов, мол, скоро любая домохозяйка сможет создавать сайты и писать программы. Большинство программистов посмеялось, но, как выяснилось, кто-то отнёсся к этому серьёзно. Во всяком случае, это объясняет, почему шаблоны проектирования IoC/DI получили второе дыхание в 2000-х, причём даже внутри самой MS (желаю Вам никогда в жизни не столкнуться с SCSF).


С точки зрения теории разработки ПО лично мне гораздо чаще приходилось читать или слышать хвалебные статьи и отзывы об IoC/DI, но, как всегда, критика тоже есть. Можно ознакомиться, например, здесь (англ.), здесь (англ.), тут (Хабр), ещё (англ.). В частности в вину ставится нарушение принципа инкапсуляции в ООП.
Читать дальше →

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Время на прочтение6 мин
Количество просмотров18K
Привет, Хабр! Спешим поделиться радостной новостью – мы выпустили первый в этом году релиз нашей кросс-платформенной IDE для C и C++, CLion 2017.1!

image


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

  • Поддержка C++14 (всё кроме constexpr)
  • Начальная поддержка C++17 (мы начали с самой востребованной возможности – nested namespaces)
  • Возможность конвертировать тип переменной в auto
  • Во время отладки программы, при отсутствии файлов с исходным кодом можно переходить на код на дизассемблере (disassembly view)
  • Поддержка фреймворка для юнит-тестирования Catch
  • Значительное ускорение отклика редактора при печати кода (Zero Latency Typing)
  • И, наконец, экспериментальная поддержка компилятора Microsoft Visual C++!

И это еще не все! Читайте подробности ниже.

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

Самоидентификация программиста

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


uses

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

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

Мифы о Spark, или Может ли пользоваться Spark обычный Java-разработчик

Время на прочтение31 мин
Количество просмотров46K
Продолжаем расшифровывать и местами облагораживать хардкорные доклады спикеров JPoint 2016. Сегодня доклад поменьше, всего час с копейками, соответственно, концентрация пользы и отжига на одну минуту зашкаливает.

Итак, Евгений EvgenyBorisov Борисов о Spark, мифах и немного о том, дествительно ли тексты Pink Floyd адекватнее, чем у Кэти Пэрри.





Это будет необычный доклад о Spark.

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

Как мы портировали программно-аппаратное решение из SPARC Solaris в AMD64 Linux и виртуализировали все это

Время на прочтение5 мин
Количество просмотров7.8K
Эта статья для тех, кто все еще сильно любит древние Unix, но уже понимает, что срочно нужно мигрировать на Linux...
image

Началась эта история с того, что наш уважаемый заказчик решил уменьшить риски эксплуатации оборудования 10-ти летнего возраста, сэкономить на лицензиях и перейти с Unix на Linux, а заодно и виртуализировать это программно-аппаратное решение. Не то, чтобы заказчик не любил Solaris и Unix, просто сама возможность виртуализировать серверное приложение, жестко привязанное к специфической на сегодняшний день архитектуре SPARC и «седеющей» операционной системе Solaris, выглядела для заказчика очень привлекательной. Отдельным пунктом стоял вопрос замены специализированной карты с PCI интерфейсом на доступное «виртуализированное» решение. Мы решили взяться за такую интересную задачу.
Читать дальше →

Приглашаем на Go meetup 14 апреля

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


В пятницу 14 апреля мы приглашаем вас в наш московский офис на Go meetup. Мы послушаем доклады экспертов и пообщаемся на профессиональные темы. В программе встречи пять докладов.

— Go Template Toolkit
Сергей Свистунов, Lazada

В докладе речь пойдет о трансляторе шаблонов в Go-код (https://github.com/go-qbit/template). Получаемый шаблонизатор работает в более чем 10 раз быстрее html/template из стандартной библиотеки. Будет сделан краткий обзор синтаксиса шаблонов, сходства и различия с Perl Template Toolkit. Также спикер расскажет, как Go YACC помог описать грамматику для построения AST, и как из AST получается Go-код. Продемонстрирует, как go tool pprof помог найти неочевидные места, требующие оптимизации.
Читать дальше →

Подводные камни для самодельной распределенности «из коробки» в С++ном акторном фреймворке

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

В комментариях к последней статье про шишки, которые нам довелось набить за 15 лет использования акторов в C++, вновь всплыла тема отсутствия в SObjectizer-5 распределенности «из коробки». Мы уже отвечали на эти вопросы множество раз, но очевидно, что этого недостаточно.


В SObjectizer-5 нет распределенности потому, что в SObjectizer-4 поддержка распределенности была, но по мере того, как расширялся спектр решаемых на SObjectizer задач и росли нагрузки на SObjectizer-приложения, нам пришлось выучить несколько уроков:


  • Под каждый тип задачи желательно иметь свой специализированный протокол. Потому что обмен большим количеством мелких сообщений, потеря части которых не страшна, сильно отличается от обмена большими бинарными файлами;
  • Реализация back-pressure для асинхронных агентов — это сама по себе непростая штука. А когда сюда еще и примешивается общение по сети, ситуация становится гораздо хуже;
  • Сегодня какие-то куски распределенного приложения обязательно будут написаны на других языках программирования, а не на C++. Поэтому требуется интероперабильность и наш собственный протокол, заточенный под C++ и SObjectizer, мешает разработке распределенных приложений.

Далее в статье попробуем раскрыть тему подробнее.

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

Технокубок: итоги финального раунда и разбор задач

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

image


Пятого марта прошел финальный раунд Технокубка — олимпиады по программированию для школьников. В этом году в ней приняли участие 3000 человек, 400 из которых прошли в финал. Предлагаем вам взглянуть итоги финала и разбор задач:


A. Андрюша и носки
B. Место встречи изменить нельзя
C. Андрюша и разноцветные шарики
D. Иннокентий и футбольная лига
E. Подземная лаборатория
F. Аксель и Марстон в Битландии
G. Андрюша и живые барьеры
H. Автобусы и интранет


Что такое Технокубок? Это олимпиада по программированию для учащихся 8-11 классов, организуемая Mail.Ru Group совместно с МГТУ им. Баумана и МФТИ. Она состоит из трех этапов: ознакомительного (онлайн), отборочного (онлайн) и заключительного (очно).

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

Кто-то пытается взломать пользователей GitHub, которые работают под Windows

Время на прочтение5 мин
Количество просмотров15K
С января 2017 года владельцы репозиториев GitHub и другие разработчики свободного программного обеспечения начали получать письма с вредоносным вложением. В письме некто говорит, что якобы заинтересовался репозиторием и может предложить работу над другим программным проектом: условия и расценки во вложении.

В одном из образцов вредоносной рассылки в клуджах зафиксированы российские почтовые серверы:

Return-Path: <ludv.jani-2015@vrg.se>
Received: from unknown (HELO mail.bsme-mos.ru) (95.163.65.54)
by ariel.informaction.com with SMTP; 27 Jan 2017 11:25:22 -0000
Received: from unknown (HELO o) (zayavka@bsme-mos.ru@94.23.58.202)
by mail.bsme-mos.ru with SMTP; 27 Jan 2017 14:25:17 +0300
Subject: question
Date: Fri, 27 Jan 2017 12:25:26 +0100
X-MSMail-Priority: Normal
X-Mailer: Microsoft Windows Live Mail 16.4.3528.331
X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331
This is a multi-part message in MIME format.
Читать дальше →

Конференция разработчиков DUMP: последние новости и финальная программа

Время на прочтение13 мин
Количество просмотров2K
Привет! Осталось две недели до конференции DUMP, которая пройдет 14 апреля в Екатеринбурге. Программа готова. Вас ждёт 61 доклад в секциях FrontTalks, Serverside, Mobile, Design, DevOps, Тестирование, Management, Science.

Этот пост будет полезен для тех, кто до сих пор думает, ехать ему на конференцию или нет.


В этом году выступят докладчики из Dropbox, JetBrains, Mozilla, Mail.Ru, Яндекса, Rambler&Co
Читать дальше →

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