В моём углубленном курсе компиляторов прошлой осенью мы провели некоторое время, изучая дерево исходников LLVM. Миллион строк кода на C++ выглядят пугающе, но я нахожу это интересным упражнением, и, по крайней мере, некоторые студенты с этим согласны, и я подумал, что я попытаюсь написать что-то подобное. Мы будем использовать LLVM 3.9, но предыдущие (и, возможно, будущие) релизы не сильно отличаются.

Читать полностью »
Рубрика «Программирование» - 490
Путеводитель по исходникам LLVM
2017-11-30 в 2:10, admin, рубрики: LLVM, open source, Компиляторы, ПрограммированиеПарсинг NMEA GNSS для микроконтроллеров и встраиваемых систем
2017-11-29 в 19:01, admin, рубрики: C, GNSS, gps, Программирование, программирование микроконтроллеров
Попал в руки OpenCPU модуль L218. Кроме всего прочего, он имеет на борту GNSS. Соответственно возникла потребность в разборе NMEA фрейма. Поставляемое SDK заточено под «C code», и т.к править кучу Makefile-в было лениво, попытки использовать готовые проекты провалились.
Тогда пришлось написать свою реализацию разбора NMEA сообщений. На эту не самую умную и интересную задачу, пришлось потратить свободный вечер. Будет приятно, если кому-то понадобиться решить похожую задачу и этот пример с этим поможет.
Читать полностью »
Доступен PhpStorm 2017.3
2017-11-29 в 10:54, admin, рубрики: IDE, jetbrains, php, phpstorm, web, web-разработка, Блог компании JetBrains, Программирование, Разработка веб-сайтовВсем привет!
Вот и состоялся очередной релиз PhpStorm, третий в этом году. В этот раз, помимо добавления новых возможностей и исправления старых проблем, мы уделили особенное внимание производительности, повысив отзывчивость редактора при наборе текста и увеличив скорость работы некоторых инспекций. Помимо этого, мы поддерживаем контакт с авторами популярных плагинов, помогая им сделать их как можно быстрее.
Для вступления, я думаю, достаточно. Стоит разве что добавить, что статья является вольным переводом страницы “What’s new”. Скачать новую версию можно по предыдущей ссылке или с помощью Toolbox App. Как всегда, доступна 30-дневная пробная версия. Полную же версию могут использовать обладатели действующей подписки на PhpStorm или All Products pack, а также студенты и разработчики проектов с открытым исходным кодом.
Погнали! (Осторожно, под катом 2873.15 Кбайт картинок.)
В разрезе: новостной агрегатор на Android с бэкендом. Разработка под Android: выработка архитектуры
2017-11-29 в 4:02, admin, рубрики: android, architecture, architecture design, clean architecture, Программирование, Проектирование и рефакторинг, Разработка под androidВводная часть (со ссылками на все статьи)
В водной статье я уже писал о том, что планируемым клиентом для проекта должен стать клиент Android: доступный большой аудитории, лёгкий, функциональный, красивый, быстрый (не приложение, а мечта!). Если с основаниями выбора платформы всё понятно, то с тем как реализовывать на базе неё все перечисленные требования – ясно было далеко не всё.
Ранее разработкой под Android не занимался поэтому достаточно ценными источниками информации для меня являлись:
- Книга «Android Programming: The Big Nerd Ranch Guide» (ознакомление с переводом от издательства «Питер» подтвердило ранее имевшийся принцип: «можешь читать оригинал – читай оригинал»);
- Сайт Google по разработке для Android;
- Книга «Efficient Android Threading» от издательства O’Reilly;
- Видео с проекта Яндекса «Мобилизация».
После изучения указанных источников вопросов с архитектурой Android и взаимодействия их компонентов не осталось. Однако остался один наиважнейший вопрос: какова будет структура самого приложения? Пара примеров и прототипов показала, при росте функционала всё быстро начинало превращаться в «лапшу»:
- Логика работы с объектами Android (Activity, Preferences, TextView ….) перемешивалась с бизнес-логикой;
- Объекты хранения фигурировали в коде построения интерфейса;
- Модульное тестирование превращалось в ад из-за необходимости работы с родными объектами Android и их подмены экземплярами Robolectric;
- Проверка асинхронного кода была возможна только на устройстве или эмуляторе (по принципу: «запустил-проверил-повторил»).
Мини-суперкомпьютер: 1000 Raspberry Pi объединили в кластер
2017-11-28 в 20:27, admin, рубрики: BitScope Cluster, Raspberry Pi, trinity, Железо, Программирование, Процессоры, суперкомпьютеры
Модуль BitScope Cluster содержит 150 мини-компьютеров Raspberry Pi с интегрированными сетевыми коммутаторами. Фото: BitScope
Программисты и учёные не всегда имеют свободный доступ к настоящему высокопроизводительному суперкомпьютеру, чтобы испытать свои программы. Тем более что суперкомпьютеры обычно и так заняты 24 часа в сутки другим софтом. Трудно найти окошко. Нужно заранее писать заявку и становится в очередь. Как же новая программа будет работать в реальной многопроцессорной среде, насколько хорошо распараллеливается задача?
В помощь разработчикам по заказу Отдела высокопроизводительных вычислений Лос-Аламосской национальной лаборатории австралийская компания BitScope разработала «тестовые» вычислительные модули BitScope Cluster из 150 мини-компьютеров Raspberry Pi, которые можно объединять в кластер и проверять на них свои программы.
Читать полностью »
Сравнение качества кода Firebird, MySQL и PostgreSQL
2017-11-28 в 13:40, admin, рубрики: C, c++, cwe, data bases, firebird, Firebird/Interbase, mysql, postgresql, pvs-studio, static code analysis, базы данных, Блог компании PVS-Studio, Программирование, Си, статический анализ кода
Сегодняшняя статья несколько необычна. Как минимум по той причине, что вместо анализа одного проекта, будем искать ошибки сразу в трёх, а также посмотрим, где найдутся наиболее интересные баги. А самое интересное — мы выясним, кто молодец и пишет самый качественный код. Итак, на повестке дня — разбор ошибок в коде проектов Firebird, MySQL и PostgreSQL.
Читать полностью »
Собираем пользовательскую активность в WPF
2017-11-28 в 12:02, admin, рубрики: .net, C#, development, devexpress, logify, wpf, Блог компании DevExpress, Программирование, разработка под windowsНедавно мы рассказывали о том, как можно логировать действия пользователей в WinForms приложениях: Оно само упало, или следствие ведут колобки. Но что делать, если у вас WPF? Да нет проблем, и в WPF есть жизнь!
В WPF не надо будет вешать никаких хуков и трогать страшный винапи, собственно за пределы WPF мы и не выйдем. Для начала вспомним, что у нас есть routed events, и на них можно подписываться. В принципе, это все, что нам надо знать, чтобы реализовать поставленную задачу :)
Читать полностью »
Рождение Software Tools: как и зачем появились GREP и AWK
2017-11-27 в 17:30, admin, рубрики: awk, Brian Kernighan, grep, tools, UNIX, Программирование, системное программирование
Этим летом мне на глаза попалось эссе Брайана Кернигана «Иногда старые способы — лучшие», опубликованное в честь 25-летнего юбилея журнала IEEE Software в 2008 году. В нем профессор Керниган рассказывал о том, какие инструменты он использует в работе.
В тот момент он был занят двумя сложными проектами — один из них подразумевал экспертный анализ проекта на 100 000 строк кода, написанный на C и Assembler в 1990 году, под Windows XP; другой — перенос кода с экзотического языка L1 на не менее экзотический язык L2 при помощи программы, написанной на неназванном скриптовом языке под Linux. Удивительно, но для столь разных задач профессор Керниган вместо IDE использовал один и тот же набор инструментов — grep, diff, sort, awk, wc и прочих «старых знакомых» из эпохи раннего Unix. Более того, многие инструменты и IDE конца прошлого десятилетия он подверг критике за неудобность и несовершенство.
Действительно, к некоторым вещам в своей жизни мы привыкли настолько сильно, что уже воспринимаем их за данность и критиковать их нам даже не приходит в голову — нам кажется, будто они существовали всегда. Подобный образ мышления помогает адаптироваться к потоку новой информации и неизбежен в современном мире, но давайте не будем сегодня отказывать себе в удовольствии «спуститься на уровень ниже», чтобы увидеть, как появилась сама идея программных инструментов (они же далее по тексту — «software tools», утилиты, команды Unix).
Читать полностью »
Реверсим сканер отпечатков и частично запускаем его в Linux
2017-11-27 в 14:49, admin, рубрики: drivers, fingerprint readers, linux, linux kernel, велосипед, информационная безопасность, Программирование, реверсинг железа, сканер отпечатков пальцевВ прошлой статье я писал, как в линуксе написать драйвер для графического планшета. Но на том история не закончилась: вместе с планшетом я купил и ноутбук, на котором установлен сканер отпечатков. Сканер новый, такой, как повсеместно стоит на мобильных телефонах, маленькая прямоугольная площадка на тачпаде.
Драйвера только для Windows 10, и только на сайте производителя ноутбука. Сразу возникла мысль если и не завести его в линуксе, то хотя бы понять, как же он работает. Висит сканер на usb, вместе с тачпадом.
Читать полностью »
Регулярные выражения для самых маленьких
2017-11-27 в 13:46, admin, рубрики: javascript, junior developer, php, regexp, Программирование, Регулярные выраженияПривет.
Под катом я расскажу основы работы с регулярными выражениями. На эту тему написано много теоретических статей. В этой же статье я решил сделать упор на количество примеров. Мне кажется, что это лучший способ показать возможности этого инструмента.
Некоторые из них для наглядности будут показаны на примере языков программирования PHP или JavaScript, но в целом они работают независимо от ЯП.
Из названия понятно, что статья ориентирована на самый начальный уровень — тех, кто еще ни разу не использовал регулярные выражения в своих программах или делал это без должного понимания.
В конце статьи я в двух словах расскажу, какие задачи нельзя решить регулярными выражениями и какие инструменты для этого стоит использовать.
Поехали!



