Когда был в школе и работал/играл с советскими клонами Sinclair 48К, мечтал о соседском 8086.
Когда появился 486DX66, мечтал снова о Z80. Так и пронес свою любовь к ретрокомпьютерам в настоящее. И хотя сейчас пытаюсь в железе воплотить себя как “конструктора ПК”, и даже обладая некоторой коллекцией раритетных и не очень ЦПУ, всегда хотел сделать виртуальную версию сам. Но то знаний не хватало, то ещё чего-нибудь; чаще всего — времени. В итоге решил попробовать. Мечтой был запуск СВМ для ЕС ЭВМ, да и Elite снова увидеть на чем-то, сделанном самим. Но так как дом строят с фундамента, решил начать с начала.
Читать полностью »
Рубрика «Программирование» - 933
Эмулятор Chip-8 для GTK+ на практике
2013-11-14 в 8:02, admin, рубрики: Программирование, разработка, эмулятор, метки: c++, эмуляторИспользуем 32битные библиотеки в 64битных программах
2013-11-13 в 18:38, admin, рубрики: linux, библиотеки, Программирование, метки: 64 бит, linux, библиотекиМожно ли использовать 32битные библиотеки в 64битных программах? Скорее нет. А если очень нужно? Тогда скорее да!
Для одного проекта мне нужно работать с 32битными проприетарными библиотеками. Под виндой нет проблем — компилируем все в 32 бита и вперед. Но под линуксом дела обстоят хуже. Собирать все в 32 бита и цеплять в RPM 32битные версии свободных библиотек некрасиво, более того у меня есть API для плагинов. Совсем не хочется заставлять юзеров ставить ради несчастного плагина 32битный компилятор. Поэтому я решил сделать переходник из кота в мышь, который будет вызывать функции из 32битных библиотеке в отдельном процессе. Сначала я хотел сделать его на питоне, но скомпилировать питон в бинарник у меня не получилось. Потом добрые люди на IRC канале PyPy подсказали мне, что можно использовать libffi прямо из C! Дальше дело за малым.
Читать полностью »
Как ExpressionTrees помогают тестировать WebApi
2013-11-13 в 16:13, admin, рубрики: .net, Программирование, тестирование, метки: .net, expression trees, web apiВсем хороши ApiController'ы, да не создают они WSDL и нельзя просто так взять и получить proxy. Да, ApiController'ы неплохо тестируются unit-test'ами. Но юниты пропускают ошибки транспортного уровня и в целом без парочки end-to-end сценариев как-то неудобно. Можно конечно смириться, взять HttpClient и написать примерно такой код:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:56851/");
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("api/User").Result;
if (response.IsSuccessStatusCode)
{
var users = response.Content.ReadAsAsync&
<IEnumerable<Users>>().Result;
usergrid.ItemsSource = users;
}
else
{
MessageBox.Show("Error Code" +
response.StatusCode + " : Message - " + response.ReasonPhrase);
}
Но как же это муторно каждый раз лезть в описание контроллеров, проверять типы, короче хочется вот так:
var resp = GetResponse<SomeController>(c => gc.SomeAction(new Dto{val = "123"}));
Как выяснилось, это вполне можно реализовать применив немного уличной магии деревья выражений
Читать полностью »
The art of Generics
2013-11-13 в 13:27, admin, рубрики: .net, generics, Программирование, метки: .net, c++, genericsУниверсальные шаблоны – они же generics, являются одним из мощнейших инструментов разработки.
CLR поддерживает их на уровне MSIL, и всего рантайма, что позволяет нам совершать некоторые трюки с типобезопасностью.
Если Вы знакомы с шаблонами C++, но хотели бы провернуть, если не вычисления на этапе компиляции, то по изяществу ничем не уступающие операции на C#, то эта статья поможет в этом.
Читать полностью »
Папа Карло и инкрементальные компиляторы
2013-11-13 в 9:17, admin, рубрики: eclipse, IDE, idea, intellij idea, java, peg, scala, sublime text, Компиляторы, Программирование, метки: Eclipse, IDE, idea, intellij idea, java, peg, scala, sublime text, компиляторы, парсинг, Программирование 
Коллеги,
а помните была такая статья-перевод на Хабре Чек-лист разработчика языка программирования Колина Макмиллена о проблемах новых языков программирования? Статья просто изумительная! Если не читали — обязательно посмотрите.
Одна из ключевых проблем, о которых говорит Колин: языки без хорошей поддержки IDE никому не нужны. Конечно это не единственная проблема, которая стоит перед разработчиком языка программирования. Но, я думаю, все согласятся с тем, что при прочих равных язык, поддерживаемый многими редакторами, уже будет иметь неплохое конкурентное преимущество.
По стечению обстоятельств я как раз занимаюсь компиляторами и языковыми плагинами для IDE уже не первый год. И буду рад поделиться с вами опытом, рассказав о том, как сделать компилятор, который будет намного легче интегрироваться со множеством современных редакторов кода. А заодно немного расскажу о своих собственных наработках в этой области.
Читать полностью »
Пример использования WxPython для создания нодового интерфейса. Часть 5: Соединяем ноды
2013-11-13 в 4:48, admin, рубрики: framework, Node, python, wxpython, граф, интерфейс, нодовый интерфейс, Программирование, разработка, метки: framework, Node, python, wxpython, граф, интерфейс, нодовый интерфейс Медленно, но верно, я продолжаю делать серию туториалов о WxPython, где я хочу рассмотреть разработку ферймворка для создания нодового интерфейса с нуля и до чего-то вполне функционального и рабочего. В прошлых частях уже рассказано как добавлять ноды, в этой же части, мы их будем соединять, а на этой картинке показан результат, который мы в этой статье получим:

Еще не идеально, но уже вырисовывается что-то вполне полезное и рабочее.
Прошлые части живут тут:
Часть 1: Учимся рисовать
Часть 2: Обработка событий мыши
Часть 3: Продолжаем добавлять фичи + обработка клавиатуры
Часть 4: Реализуем Drag&Drop
Подробное руководство по разработке мобильных приложений AngularJS
2013-11-12 в 14:00, admin, рубрики: android development, AngularJS, ios development, javascript, Программирование Мобильные приложения, это не будущее разработки, это уже настоящее. В настоящее время пользователей мобильных приложений уже 1.2 млрд. человек, и это количество постоянно растет (Wikipedia). Вскоре количество мобильных устройств превзойдет количество людей на планете. Если скорость роста количества мобильных устройств останется неизменной, то к 2017 году ими будут пользоваться 5.1 млрд. человек.
Для нас, как для разработчиков приложений, важно разрабатывать свои приложение с учетом мобильных пользователей, если мы хотим чтобы они были востребованы. В AngularJS реализована поддержка мобильных устройств, написанная как командой AngularJS, так и сообществом.
В этой статье мы будем работать с двумя различными способами, чтобы дать читателям опыт в разработке мобильных приложений.
Читать полностью »
Способы борьбы с закладки в компиляторах
2013-11-12 в 8:38, admin, рубрики: информационная безопасность, Компиляторы, Программирование, уязвимости, метки: информационная безопасность, Программирование, уязвимостиВ своей прошлой статье «Теория «Черного лебедя» и фундаментальная уязвимость автоматизированных систем» я описал программные закладки добавляемые в программы с открытым исходным кодом бинарной версией компилятора, при этом новые версии компилятора скомпилированные этим компилятором также будут создаваться с закладками.
В этой статье я предложил эталонное решение и несколько рекомендаций по снижению вероятности реализации данной угрозы.
Читать полностью »
Пример использования WxPython для создания нодового интерфейса. Часть 4: Реализуем Drag&Drop
2013-11-12 в 5:15, admin, рубрики: framework, python, wxpython, интерфейс, Программирование, разработка, метки: drag and drop, framework, python, wxpython, интерфейсВ небольшом цикле статей будет описано использование WxPython для решения вполне конкретной задачи по разработке пользовательского интерфейса, да еще и то, как сделать это решение универсальным. Туториал этот расчитан на тех, кто уже начал изучать эту библиотеку и хочет увидеть что-то более сложное и целостное, чем простейшие примеры (хотя начнется все с относительно простых вещей).

В этой части мы добавим поддерку Drag&Drop к нашему приложению и научим его таким образом создавать новые ноды.
Часть 1: Учимся рисовать
Часть 2: Обработка событий мыши
Часть 3: Продолжаем добавлять фичи + обработка клавиатуры
Часть 4: Реализуем Drag&Drop
Кому интересно, добро пожаловать под кат…
Читать полностью »
Пример использования WxPython для создания нодового интерфейса. Часть 3: Продолжаем добавлять фичи + обработка клавиатуры
2013-11-11 в 19:02, admin, рубрики: evt.Skip(), framework, python, wxpython, интерфейс, интерфейсы, Программирование, метки: framework, python, wxpython, интерфейсВ небольшом цикле статей будет описано использование WxPython для решения вполне конкретной задачи по разработке пользовательского интерфейса, да еще и то, как сделать это решение универсальным. Туториал этот расчитан на тех, кто уже начал изучать эту библиотеку и хочет увидеть что-то более сложное и целостное, чем простейшие примеры (хотя начнется все с относительно простых вещей).
В прошлой части мы реализовали обработку событий мыши, а теперь мы добавим еще одну фичу и реализуем обработку событий от клавиатуры.
Часть 1: Учимся рисовать
Часть 2: Обработка событий мыши
Кому интересно, добро пожаловать под кат…
Читать полностью »
