Обновить
1030.05

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

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

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

Ада Лавлейс. Первая в мире программа и взгляд в будущее

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

Ада Лавлейс

10 декабря 1815 года на свет появилась Ада Лавлейс, большинству из нас известная как самый первый в мире программист. Так уж получилось, что это звание принадлежит представительнице прекрасного пола. Сегодня исполняется двести один год со дня рождения этого человека. И в этом посте я бы хотел немного рассказать о самых интересных моментах из ее жизни, не отделываясь обрывочными фразами, но и не слишком уж углубляясь в детали. Материал можно найти, где угодно, имея под рукой Интернет. Однако мало кто полезет искать его просто ради интереса. Поэтому кому интересно, добро пожаловать под кат.
Читать дальше →

Велосипед для извлечения данных

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

Извлечение данных


Каждому кто занимается промышленной разработкой кровавым энтерпрайзом не раз приходилось сталкиваться с написанием слоя работы с базой данных. С этим столкнулись и мы.


Наш проект построен на финском фреймворке Vaadin и чистым JDBC в основе слоя работы с базой данных. Без опыта работы с JDBC мы нагородили достаточно большой слой спагетти кода, а потом доблестно с ним разобрались.


О том как мы с этим боролись и какой велосипед изобрели под катом.


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

Итоги года: Большой предновогодний дайджест Университета ИТМО

Время на прочтение6 мин
Количество просмотров6.9K
Накануне новогодних праздников мы решили поделиться с вами подборкой самых интересных материалов, которые вышли в блоге Университета ИТМО (и не только) в уходящем году: от научных публикаций до рассказов о предпринимателях и от робототехники до биоинформатики.

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

Отладочная плата ПЛИС — Франкенштейн. Контроллер елочных гирлянд

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

Очередная серия про ПЛИС и отладочную плату Френки. Предыдущие серии 1, 2, 3.


Сделать контроллер елочных гирлянд не просто, а очень просто! Hello World на ПЛИС — это помигать светодиодом. А "С новым годом" на ПЛИС — это помигать несколькими светодиодами. Принцип прост, как и в предыдущих статьях: создаем счетчик, который делит частоту тактового генератора, выбираем биты из слова счетчика, для получения нужной скорости. Несколько бит из этого слова дадут нам определенный шаг отображения (в зависимости от количества выбранных бит 1, 2, 4, 8 и т.д. шагов). В зависимости от номера шага задаем значения для N светодиодов.


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


Дальше

Маршрутизация ортогональных соединений в редакторах диаграмм

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

Маршрутизация ортогональных соединений в редакторах диаграмм


В данной статье я покажу, как решить проблему маршрутизации соединений в редакторе диаграмм типа MS Visio. Здесь будет минимум теории и максимум практики. Если вам нужно быстро реализовать маршрутизацию соединений в двумерной сцене, и вы первый раз сталкиваетесь с подобной проблемой — то эта статья для вас.



Проблематика


К данной проблеме я пришел в процессе разработки своего хобби-проекта ultra_outliner. Грубо говоря, в нем есть двумерная сцена, в которой находится много прямоугольных карточек, которые могут быть связаны между собой. И соединений может быть довольно много — а значит их нужно маршрутизировать, чтобы сегменты не накладывались, не пересекали карточки и др.


Многие из вас работали с Microsoft Visio, и конечно же оценили, как красиво автоматически маршрутизируются стрелочки. Конечно, и Visio не всегда справляется, и для таких случаев есть возможность ручной подгонки. Но тем не менее, не рассматривая крайние ситуации — мне захотелось это повторить. Действительно, ведь там все этим проблемы достаточно неплохо решены.


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

Превращаем свой смартфон в IoT датчик при помощи Bluemix. Пример разработки приложения

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


Bluemix — мощная платформа, которая позволяет быстро и без проблем создавать, разворачивать и администрировать приложения в облаке. Bluemix — это реализация архитектуры IBM Open Cloud Architecture на основе открытого ПО Cloud Foundry, работающего по принципу «платформа как услуга» (Platform as a Service – PaaS).

При помощи этой платформы и службы IBM Watson IoT Paltform можно разработать Bluemix-приложение, которое позволит обрабатывать, визуализировать и сохранять данные, полученные со смартфона. В этой статье показано, как обычный смартфон можно превратить в надежный датчик, подключенный к сети.
Читать дальше →

Вспоминаем 2016-й: наши лучшие посты года

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


Новый год всё ближе, остались считанные дни. Пора подвести итоги. Всего за этот год мы опубликовали почти 200 постов (этот — 198-й) с суммарным рейтингом 6912, получили 6245 комментариев, 21835 добавлений в избранное и почти 3 миллиона просмотров! Мы сели и с умилением и ностальгией вспомнили лучшие посты в нашем блоге за 2016 год. Присоединяйтесь!
Читать дальше →

11 советов, которые помогут сэкономить время при отладке программ

Время на прочтение9 мин
Количество просмотров24K
Программирование — это не только когда пишешь код, запускаешь его и удовлетворенно наблюдаешь за его безупречной работой, ведь зачастую он работает совсем не так, как мы рассчитываем! Возникает необходимость в эффективной отладке приложений, а это, оказывается, целое искусство! В данной статье я привожу свой собственный список советов, которые, как я надеюсь, помогут вам в отладке нативного кода.



Оригинальная статья была написана Bartlomiej Filipek и опубликована в его блоге.

Вспомогательные средства


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

Компиляция Java программ и разрешение зависимостей в runtime

Время на прочтение5 мин
Количество просмотров13K
Как можно совместить некоторые достоинства динамических языков со строгой типизацией в обычном Java коде?
Читать дальше →

Сложнейшая проблема компьютерных наук

Время на прочтение12 мин
Количество просмотров19K
… это, конечно же, именование сущностей. И я говорю не только об именах переменных или новых технологий, нет. Мы не можем договориться даже о самых базовых терминах.

Тысяча диалектов


Знаете ли вы, что спецификация языка программирования С часто упоминает термин «объект»? Нет, это не объект в том понимании, как он описывается в ООП — объект в С определяется как «блок данных в среде выполнения, содержимое которого может представлять некоторое значение». В этом понимании объекта имеет смысл говорить о, например, «объекте типа char».

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

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

Intel Software Guard Extensions, учебное руководство. Часть 4, устройство анклава

Время на прочтение16 мин
Количество просмотров4.3K
В четвертой части серии учебных материалов, посвященных расширениям Intel Software Guard Extensions (Intel SGX), мы займемся созданием анклава и его интерфейса. Мы рассмотрим границы анклава, определенные в третьей части, и определим необходимые функции моста, рассмотрим влияние функций моста на объектную модель и создадим инфраструктуру проекта, необходимую для интеграции анклава в наше приложение. Вместо ECALL анклава мы пока используем заглушки; к полной интеграции анклава мы перейдем в пятой части этой серии.


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

Отладочная плата ПЛИС — Франкенштейн. Звуки и музыка

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

Сегодня у нас самая предновогодняя серия про ПЛИС и отладочную плату Френки. Предыдущие серии 1, 2.


Мы уже передавали тоновые сигналы по радио с помощью нашей платы Франкенштейн. Теперь попробуем воспроизводить звуки и музыку.


Для этого подключим к ПЛИС обычный динамик. К Френки подключен генератор на 25.175 МГц. Если поделить эту частоту до диапазона слышимых частот и подать на вывод ПЛИС, то мы можем услышать звук. Меня частоту мы можем получить разные звуки.


Тестировать качество звучания будет самый лучший слухач в доме — Маша. Диапазон частот в 60 КГц — это вам не шутки! )))


Разовьем эту идею

JetBrains Night в Москве. Видео. Применение ReSharper в командах .NET-разработчиков

Время на прочтение1 мин
Количество просмотров5K
29 сентября в Москве прошла мини-конференция JetBrains Night: 7 часов разработчики из JetBrains рассказывали о том, что компания делает, зачем, и что будет делать дальше, а потом отвечали на вопросы, обсуждали общие проблемы и слушали, как разработчики из других компаний рассказывают им о том, что они делают и почему им удобно или пока еще не очень удобно делать это с помощью того, что делает JetBrains.

На Хабре мы публикуем видео всех докладов, чтобы можно было в комментариях обсудить то, что не успели обсудить на JetBrains Night, особенно с теми, кто не смог приехать лично.

Предыдущие доклады можно посмотреть в прошлых публикациях, а сегодня мы публикуем видео доклада Размика Сейсяна об использовании ReSharper для того, чтобы разрабатывать на C# в командах. Итак, лучшие практики настройки Resharper для команд:

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

Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 2

Время на прочтение8 мин
Количество просмотров13K
Мы продолжаем рассказывать о курсе «How to Win Coding Competitions: Secrets of Champions», который Университет ИТМО запустил на платформе edX в этом году (первую часть материала читайте здесь).

Во второй части нашей беседы с авторами и инструкторами курса — Максимом Буздаловым и Павлом Кротковым, чемпионами ACM ICPC, и Дарьей Яковлевой, призером Google Code Jam for Women, речь пойдет о том, важен ли победителям олимпиад правильный настрой, как развить навык поиска креативных решений и кому будет полезен курс от чемпионов Университета ИТМО.

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

Простейший вывод звука с помощью библиотеки Audiere

Время на прочтение7 мин
Количество просмотров49K
Приветствую! Данная заметка ориентирована на начинающих программистов, самых, что ни на есть новичков. Она о простой библиотеке Audiere. Если вы когда-то хотели вывести звук просто и быстро, то Audiere вам скорее всего понравится!

Для начала расскажу немного о том, что это:

Audiere — это высокоуровневый аудио-API с открытым исходным кодом под лицензией LGPL. Его можно использовать во множестве языков, включая Java, C++, Python, Delphi и др. Разрешается использовать в коммерческих приложениях свободным образом, если исходный код не будет затронут (подробности в документации к библиотеке).
Читать дальше →

Создавая хтонических чудовищ, документируй

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

Под данным изречением-мемом, взятым с замечательной картинки Владимира Филонова, поставит свою подпись каждый человек, имеющий хотя бы отдалённое отношение к программированию. Весь вопрос, как? Как именно документировать-то?


Нижележащий текст преследует несколько целей:


  1. Дать краткий обзор (читай — немного погундеть на тему) неудовлетворительного состояния инструментария, применимого к хтоническим чудовищам мира C/C++;
  2. Предложить своё альтернативное решение (бесплатно-без-СМС-и-регистрации — проект некоммерческий и выложен на GitHub под MIT-лицензией);
  3. Призвать сообщество пообщаться на тему и собрать идеи;
  4. Пригласить присоединиться к разработке проекта на GitHub.

Сразу оговорюсь, что хотя проект создавался в первую очередь как альтернатива, а точнее, дополнение Doxygen для сишных и плюсовых API, архитектурно он в равной степени пригоден и для других языков. Это позволяет создавать порталы документации разноплановых библиотек — сами библиотеки могут быть написаны на разных языках, а в документации будет единство стиля во внешнем виде и поведении.



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

«Программист — Аналитическое мышление = 1С программист» и другие результаты GoToHack

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

С 9 по 11 декабря состоялся наш второй хакатон GoToHack для ребят до 20 лет, посвященный применению технологий машинного обучения в сфере образования и HR.

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

О проектах и забавных моментах можно прочесть под катом.
Читать дальше →

Искусственный интеллект «Мира дикого запада» HBO: тогда и сейчас

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

Так же, как и сегодня, в 1973 году (в год, когда Майкл Кричтон выпустил «Мир дикого запада») всех завораживала идея искусственного интеллекта. Фильм имел огромный кассовый успех, хотя был выпущен в том же году, когда люди начали охладевать к идее ИИ: массивное истощение ресурсов ИИ, обманутые ожидания и, как следствие, угасающий интерес в последующие годы.

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

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

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

Неинициализированные переменные: ищем ошибки

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

Большое количество научных исследований используют код, написанный на языке Фортран. И, к великому сожалению, «научные» приложения тоже не застрахованы от банальных ошибок, таких как неинициализированные переменные. Стоит ли говорить, к чему могут приводить подобные вычисления? Иногда эффект от таких ошибок может довести до «серьёзных прорывов» в науке, или стать причиной действительно больших проблем – кто знает где полученные результаты могут быть использованы (но, мы догадываемся где)? Хотелось бы привести ряд простых и эффективных методов, которые позволят проверить существующий код на Фортране с помощью компилятора Intel и избежать подобных неприятностей.
Читать дальше →

Использование send для удобства, от безысходности и ради развлечения

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


Один из методов библиотеки Sidekiq. Объяснение смайла


send в Ruby вызывает методы объектов по имени. Вот очевидный способ применения:


# До: явно используем присваивание. Неудобно, если полей много или они определяются в рантайме.
user.name = "Иван"
user.age = 29

# После: передаём имя атрибута параметром. Решает проблемы первого способа.
def set(field, value)
  send("#{field}=", value)
end
user.set(:name, "Иван")
user.set(:age, 29)

А ещё вы наверняка видели такие строки:


after_create :send_email

Да-да, коллбэки в рельсах внутри реализованы тоже с помощью send.


Что ещё умеет send?

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