При решении задач комбинаторики часто возникает необходимость в расчете биномиальные коэффициентов. Бином Ньютона, т.е. разложение также использует биномиальные коэффициенты. Для их расчета можно использовать формулу, выражающую биномиальный коэффициент через факториалы: или использовать рекуррентную формулу: Из бинома Ньютона и рекуррентной формулы ясно, что биномиальные коэффициенты — целые числа. На данном примере хотелось показать, что даже при решении несложной задачи можно наступить на грабли.
Читать полностью »
Рубрика «C» - 80
Расчет биномиальных коэффициентов на Си (С++)
2016-01-08 в 16:08, admin, рубрики: C, c++, Биномиальные коэффициенты, расчет, треугольник Паскаля, метки: Биномиальные коэффициенты, расчет, треугольник ПаскаляКак я написал компилятор C за 40 дней
2016-01-08 в 12:13, admin, рубрики: 8cc, C, self-hosting compiler, Компиляторы Предлагаю вам перевод дневника Руи Уэяма (Rui Ueyama), программиста из Google, который он вел во время работы над реализацией компилятора языка C около трех с половиной лет назад.
Этот дневник не несет какой-то практической пользы и не является туториалом, но мне было очень интересно его прочитать, надеюсь и вам эта история тоже понравится :)
Я написал C компилятор за 40 дней, который назвал 8cc. Это дневник написанный мной в то время. Код и его историю можно посмотреть на GitHub.
Читать полностью »
Как я стал самым маленьким программистом в республике точно
2016-01-07 в 20:43, admin, рубрики: 11лет, C, C#, c++, длиннопост, ОС, Программирование, метки: 11лет Привет! Я, наверное, самый маленький программист в республике, если не в стране. Сейчас мне всего 11, но я хорошо знаю Си и C++. Давайте приступим к теме статьи — о моем пути программиста. Продолжение под катом.
Читать полностью »
Пишем на Java в Arduino
2016-01-05 в 21:19, admin, рубрики: arduino, AST, C, c++, haikuvm, java, lejos
В статье расскажу как можно писать на Java для Arduino.
Почему Java? Если кратко — just for fun!
Я Java программист и в свободное время играюсь с Arduino и хотелось перенести свои знания Java в мир микроконтроллеров и embedded устройств.
На данный момент есть несколько возможностей запускать Java на embedded устройствах. В этой статье я рассмотрю их.
Читать полностью »
Пишем DXE-драйвер для снятия скриншотов с BIOS Setup и других UEFI-приложений
2016-01-04 в 1:06, admin, рубрики: BIOS Setup, C, DXE-драйвер, open source, UEFI, костыли и подпорки, разработка, системное программирование, скриншоты В прошлой статье про SecureBoot мне очень не хватало возможности сделать снимок экрана при настройке UEFI через BIOS Setup, но тогда выручило перенаправление текстовой консоли в последовательный порт. Это отличное решение, но доступно оно на немногих серверных материнских платах, и через него можно получить только псевдографику, а хотелось бы получить настоящую — она и выглядит приятнее, и вырезать ее каждый раз из окна терминала не надо.
Вот именно этим мы и займемся в этой статье, а заодно я расскажу, что такое DXE-драйвер и как написать, собрать и протестировать такой самостоятельно, как работают ввод с клавиатуры и вывод на экран в UEFI, как найти среди подключенных устройств хранения такое, на которое можно записывать файлы, как сохранить что-нибудь в файл из UEFI и как адаптировать какой-то внешний код на С для работы в составе прошивки.
Если вам все еще интересно — жду вас под катом.
Читать полностью »
Printf Oriented Programming
2015-12-30 в 10:00, admin, рубрики: C, printf, security, информационная безопасность
Intro
К своему удивлению не нашел статей на хабре по этой теме и этой статьей я хотел бы исправить положение дел. В ней я постараюсь максимально доходчиво рассказать со стороны атакующего о Format String Attacks, однако с некоторыми упрощениями. На практике они достаточно просто разрешаются, но не очень хочется на них зацикливаться. Кроме того, самых стойких, долиставших до конца, помимо бесценных знаний ждет небольшой бонус.
Читать полностью »
Intel® Tamper Protection Toolkit — обфусцирующий компилятор и средства проверки целостности кода
2015-12-23 в 6:04, admin, рубрики: C, c/c++, c++, Блог компании Intel, Компиляторы, обфускатор, обфускация, проверка целостности кода, Программирование
Совсем недавно компания Intel выпустила очень интересный набор инструментов для разработчиков программного обеспечения, позволяющий добавить защиту программного кода от взлома и существенно усложнить жизнь взломщикам программ. Этот набор включает в себя обфусцирующий компилятор, средство для создания файла подписи, используемого для проверки целостности загружаемых динамических библиотек, а также библиотеку функций проверки целостности и дополнительные полезные инструменты. Intel Tamper Protection Toolkit beta можно совершенно бесплатно скачать на сайте Intel.
Читать полностью »
Программный многозадачный таймер на МК
2015-12-14 в 12:18, admin, рубрики: C, алгоритм, Алгоритмы, Программирование, Программный таймер на МК, разработка, метки: Алгоритм, Программный таймер на МКВ различного рода сложности реализуемых алгоритмов при программировании МК, всегда возникают рутинные циклические и не очень задачи. Одни требуют повышенной точности, другие таким критерием не обязаны обладать. Аппаратных таймеров на борту МК может быть приличное количество, например STM32F4 — аж 14 штук, и это не считая SysTick (системного), а в других и пара тройка за счастье: тот же PIC16, например.
Для решения таких не спешных, не критичных ко времени задач можно и нужно применить программный таймер, на базе одного из аппаратных. Но обо всем по порядку...Читать полностью »
Как сжать плоского кота
2015-12-14 в 8:32, admin, рубрики: C, Алгоритмы, встраиваемые системы, обработка изображений, сжатие без потерь, сжатие данныхОднажды в студеную зимнюю пору… ровно год назад, у нас появилась нетривиальная задача. Есть экран на электронных чернилах, есть процессор 16МГц (да-да, во встраиваемой электронике, особенно сверхнизкого энергопотребления, встречаются и такие) и совсем нет памяти. Ну, т.е. килобайтов 8 RAM и 256 Flash. Килобайтов, Карл. И в эти унылые килобайты необходимо запихнуть несколько изображений 800х600 в четырех оттенках серого. Быстро перемножив в уме 800 на 600 и на 2 бита на пиксель получаем 120 тысяч байтов. Несколько не влезает. Надо сжимать.
Так перед нами появилась задача: «как сжать плоского кота»? Почему кота? Да потому, что на котиках тестировали, на чем же еще черно-белые картинки проверять. Не на долларовых банкнотах же.
Читать полностью »
Начался 8-й конкурс Underhanded C для программистов-хакеров
2015-08-16 в 19:34, admin, рубрики: C, Nuclear Threat Initiative, инспекция, информационная безопасность, подделка, Программирование, ядерное оружиеПо условиям конкурса Underhanded C, исходный код программы должен быть читаемым, ясным, простым и совершенно невинным для постороннего взгляда. При этом программа выполняет некую вредоносную функцию, которая совершенно не очевидна при изучении исходного кода.
В этом году конкурсное задание основано на реальной проблеме контроля за ядерными вооружениями. Задание составлено совместно с некоммерческой организацией Nuclear Threat Initiative, которая борется с ядерным, химическим и биологическим оружием, отслеживая состояние ядерных программ во всех странах мира.
По правилам, программа должна обработать исходные данные и подделать результат обработки. Приз за победу — $1000.
Читать полностью »