Рубрика «Программирование» - 356

кдпв

Мой комментарий к новости про Rust 1.28 с обзором ржавых событий за месяц неплохо зашел, так что вот держите очень субъективный срез ржавых новостей за прошлый месяц.

В этой подборке: Rust 1.29, записи докладов с Rustconf 2018, gfx-rs, Rust2018, порт Flatbuffers, новые версии ripgrep и Alacritty.

Rust 1.29

Вышел Rust 1.29. Основные нововведения — доступные сразу из rustupcargo fix и cargo clippy (подробнее в хабропереводе).

Следом была выпущена версия 1.29.1, закрывшая ошибку в std::repeat (обсуждение).

Rust 1.30 и 1.31 будут очень значительными.

Точного списка пока нет, но ожидается что:

  • в 1.30 (2018.10.26) войдет частичная стабилизация процедурных макросов;
  • в 1.31 (2018.12.07) войдут Rust 2018 + non-lexical lifetimes (NLL).

Читать полностью »

Многие слышали про такие функциональные языки, как Haskell и Clojure. Но есть и такие языки, как, например, Scala. Он совмещает в себе как ООП, так и функциональный подход. А что насчет старой доброй Java? Можно ли на ней писать программы в функциональном стиле и на сколько это может быть больно? Да, есть Java 8 и лямбды со стримами. Это большой шаг для языка, но этого все еще мало. Можно ли что-то придумать в такой ситуации? Оказывается да.

Функциональное программирование на Java с Vavr - 1

Читать полностью »

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год

Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3Читать полностью »

За прошедшее десятилетие у многих появилось один два смартфона лежащих без дела, так и у меня. Решил применить смартфон для управления чем-нибудь, ну например, автомобилем.
Для начала выбрал игрушечный автомобиль из Лего. Он может двигаться вперед и назад, поворачивать вправо и влево и имеет пульт ДУ c ИК лучами. В качестве драйвера двигателей машинки используется микросхема LB1836, которая имеет четыре информационных входа. In1, In2 — управляют ходовым двигателем, In3, In4 — управляют приводом руля, по схеме 0, 0 или 1, 1 — нерабочее состояние. 0, 1 или 1, 0 — вращение двигателя в одну или другую сторону.

Логические 0 и 1 на входах формирует приемник ИК лучей игрушки при получении сигналов от ДУ.

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

Схема передачи сигналов такая. Программа в смартфоне создает световые пятна заданной продолжительности на экране, устройство их регистрирует и формирует логические 0 и 1 той же продолжительности на входах LB1836 без какой либо логической обработки, что очень упрощает конструкцию устройства. То есть, я просто подменил приемник ИК лучей своим устройством.

Устройство приема световых сигналов состоит из 4 ячеек. Каждая ячейка представляет собой фототранзистор L-3DP3C KGB подсоединенный к усилителю на npn транзисторе KT315. Питание берется с управляемой машинки. Выход, как я уже говорил, подсоединяется к соответствующему входу драйвера двигателя. Маломощные двигатели могут питаться прямо от выхода, но вращаться будут только в одну сторону. Но зато их будет четыре!
Читать полностью »

Привет habr.

Тема «магических квадратов» достаточно интересна, т.к. с одной стороны, они известны еще с древности, с другой стороны, вычисление «магического квадрата» даже сегодня представляет собой весьма непростую вычислительную задачу. Напомним, чтобы построить «магический квадрат» NxN, нужно вписать числа 1..N*N так, чтобы сумма его горизонталей, вертикалей и диагоналей была равна одному и тому же числу. Если просто перебрать число всех вариантов расстановки цифр для квадрата 4х4, то получим 16! = 20 922 789 888 000 вариантов.

Подумаем, как это можно сделать более эффективно.
Вычисляем «магические квадраты» с помощью GPU - 1
Читать полностью »

Простейшая игра на Ardruino с дисплеем 1602 — Часть #1 - 1

Вот что у нас должно получиться, ну он еще умеет прыгать, ходить и бить злые кактусы, которые на него нападают, но к этому придем поэтапно :)

ЧАСТЬ #1 основы

Я заказал себе arduino, «так себе игрушка» подумал я, комплект маленький (для пробы) о чем в последствии пожалел. Хотелось раскрыть потенциал, но из-за отсутствия дополнительных модулей этого не выходило, пришлось экспериментировать, подрубал ardruino к системе безопасности и смотрел как датчики делают свою работу, потом решил сделать звуковую сигнализацию (используя пративную пищалку из комплекта), так сказать отучивал собак громко или неожиданно лаять :) и тут мои руки дошли до дисплея 1602. «Хм… это же настоящий дисплей» подумал я, но тут же разочаровался узнав что он сжирает почти половину всех контактов на самой ardruino. Покопавшись я нашел странную плату в комплекте «i2C» и очень подозрительно было ТО! Что количество дырдочек совпало с количеством пимпочек на дисплее. «Хм, не с проста...» подумал я, и решил их спаять. Чуть позже я понял что сделал верную штуку и теперь мой дисплей съедает всего два канала. Начал изучать, что же это за дисплей и что он умеет. Изучив достаточное количество материала я узнал, что дисплей чисто текстовый, но о чудо! Он может обработать 8 новых символов, габаритами 5х8 пикселей. Ну что же, давайте начнем писать игру! Первое, это надо придумать что за игра будет, решил сделать подобие динозаврика гуугл хром, но с парочкой фишек так сказать, для начала я думаю сойдет :)Читать полностью »

Введение

Наверняка у каждого, кто когда — то начинал или только начинает изучать микроконтроллеры STM32, осталась в запасе вот такая отладочная плата китайского производства, метко прозванная интуристами Blue Pill (синяя таблетка).

Такая плата построена на основе чипа STM32F103C8T6, который представляет из себя 32 битный процессор на базе ядра Cortex — M3. Ниже на картинке показана классическая плата и назначение выводов.

Внешний вид классической платы

My Image

Назначение выводов

My Image

Как за 5 минут сделать ПЛК из подручных средств?

Как часто бывает, уроки из интернета научили работать с таймерами, USART — ом, переключать состояния выходов и даже с DMA получилось поработать! И после всех тестов плата благополучно занимает место на полке запасных частей — вещь хорошая, но пока достойного применения не нашлось.
Читать полностью »

Один из пользователей компилятора Visual C++ привёл следующий пример кода и спросил, почему его цикл с условием выполняется бесконечно, хотя в какой-то момент условие должно перестать выполняться и цикл должен закончиться:

#include <windows.h>

int x = 0, y = 1;
int* ptr;

DWORD CALLBACK ThreadProc(void*)
{
  Sleep(1000);
  ptr = &y;
  return 0;
}

int main(int, char**)
{
 ptr = &x; // starts out pointing to x

 DWORD id;
 HANDLE hThread = CreateThread(nullptr, 0, ThreadProc, 0, &id);

 // Ждём, пока другой поток изменит значение по указателю ptr
 // на некоторое ненулевое число
 while (*ptr == 0) { }

 return 0;
}

Читать полностью »

Пятничные вебинары от Skillbox: полезное для новичков и не только - 1

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

Вчера на Хабре был опубликован перевод поста «Не попадитесь в ловушку используя Oracle JDK 11» с последующим обсуждением «платности Java», но не всё так страшно, как кажется на первый взгляд — ниже перевод публикации из блога Oracle с официальной позицией по лицензированию и распространению версий JDK 11+.

Резюме

Начиная с Java 11, Oracle будет выпускать JDK под лицензией GNU General Public License v2, with the Classpath Exception (GPLv2+CPE) и под коммерческой лицензией для тех, кто использует Oracle JDK как часть продуктов или сервисов Oracle, или кто не хочет использовать открытое программное обеспечение. Эта комбинация из OS-лицензии и коммерческой заменяет старую лицензию BCL (Oracle Binary Code License), которая состоит из коммерческих и бесплатных условий использования.

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js