Программирование → Программирование для PlayStation 2 — старт

Каждый справляет новый год по разному.
Кто-то помнит его, а кто-то нет.
Я стоял на балконе и курил, наблюдая салют. Вобщем-то, я ждал когда запишется диск.
Диск было не жалко ради такого эксперимента – он того стоил.
Это было мое первое приложение под PlayStation 2. Правда, все, что оно умело – это выводить клавиатуру и, с помощью джойстика, печатать, но это был уже прогресс!
Итак, запуск! Работает!
Сама суть
Так я начинаю цикл статей по программированию для PlayStation 2
Сначала будет длинная теория.
Потом практика. Поскольку я не профессионал С++ (или С — кому как нравится, но я буду рассказывать на С++), то прошу строго не судить о коде.
Также, по PlayStation 2 SDK желательно использовать Red Hat 6 или выше, однако, я пишу все это под Windows 7. Хоть все и работает криво, но работает – и ладно.
К началу практических экспериментов советую иметь чипованную PlayStation 2 и сетевой кабель. Для моих экспериментов выбрана PlayStation 2 Slim 90006 формата NTSC чипованная и сетевой кабель синего цвета =) (Я не использовал для дебага режим iLink, поскольку драйвера в комплекте идут только под Linux, да и жесткий диск нужен).
Алгоритмы → Попытка ускорить запись на flash-ки
Введение
Многие сталкивались с проблемой того, что нужно быстро записать данные на flash-ку, но
Задумавшись об этом, я начал размышлять: каким же образом можно ускорить запись, не покупая новый девайс. О том что я придумал, и почему у меня ничего не получилось и будет этот пост.
.NET → Работа с EXIF геотегами в C# из песочницы
После того как я закончил программу для геотегинга, появилась мысль написать данную статью – дабы поменьше людей наступало на те же грабли, так как толковой информации по данным вопросам не так уж и много.
Итак, я не собираюсь рассказывать, что такое геотегинг или EXIF, об этом можно и в Википедии почитать. А вот как сделать программку на C#, которая бы считывала и записывала данные в EXIF я и собираюсь рассказать.
Итак, я не собираюсь рассказывать, что такое геотегинг или EXIF, об этом можно и в Википедии почитать. А вот как сделать программку на C#, которая бы считывала и записывала данные в EXIF я и собираюсь рассказать.
.NET → Интегрируем MATLAB в С#.NET из песочницы
Вступление
В этой статье я постараюсь максимально полно и пошагово рассказать, как связать MATLAB с С#.NET и сделать приложение с интерфейсом на примере построения 3D-плоскости.
Зачем это нужно?
Очень часто перед программистом встает задача вычисления сложной математики. MATLAB в свою очередь является отличным средством для решения, но слаб в создании полноценного пользовательского приложения (можно воспользоваться инструментами GUI MATLAB'a, но это меня не устроило).
Компиляторы → Основы конструирования компиляторов. Лексический анализ на C# из песочницы
Задачей лексического анализа является разбить входную последовательность (в моем случае код на языке «Паскаль») на слова и лексемы.
Для начала я создал 5 типизированных листов для хранения данных, а именно: идентификаторов, констант, ключевых слов, разделителей и свертки. Также необходим массив разделителей
и массив ключевых слов. Я ограничился одиннадцатью ключевыми словами, так как статья написана как начальный пример реализации лексического анализа языка «Паскаль» на языке C#.
Итак, массив ключевых слов:
Для начала я создал 5 типизированных листов для хранения данных, а именно: идентификаторов, констант, ключевых слов, разделителей и свертки. Также необходим массив разделителей
static char[] limiters = {',', '.', '(', ')', '[', ']', ':', ';', '+', '-', '*', '/', '<', '>', '@'};и массив ключевых слов. Я ограничился одиннадцатью ключевыми словами, так как статья написана как начальный пример реализации лексического анализа языка «Паскаль» на языке C#.
Итак, массив ключевых слов:
static string[] reservedWords = { "program", "var", "real", "integer", "begin", "for", "downto", "do", "begin", "end", "writeln" };.NET → Делаем сами remote-desktop клиент для смартфона. Часть 1: серверная из песочницы
Я всегда хотел себе портативный удалённый рабочий стол на телефоне, чтобы, например, когда кто-то стучится в аську, а я на балкон покурить вышел, можно было не уходя с балкона посмотреть на телефоне, кто там. Ну или, например, переключить трек, принимая ванну. Да, я знаю, что всевозможные VNC-клиенты уже написаны, но я решил сделать такую программу сам.
В первой части статьи я ограничусь только созданием несложного remote desktop приложения, в котором и сервер, и клиент будут работать на обычных настольных компьютерах. Во второй и третьей части я рассмотрю сжатие изображения и программирование собственно телефона.
Конечную функциональность я представляю себе так: на дектопе (сервер) резидентно висит программка, которая, по пришедшему снаружи UDP-пакету начинает передавать фрагменты изображения на обратный адрес. На телефоне (клиент) отображаются присланные фрагменты. Пользователь может сдвинуть оконо отображения или кликнуть внутри него. Информация о сдвигах и кликах передаётся на сервер так же – по UDP.
В первой части статьи я ограничусь только созданием несложного remote desktop приложения, в котором и сервер, и клиент будут работать на обычных настольных компьютерах. Во второй и третьей части я рассмотрю сжатие изображения и программирование собственно телефона.
Конечную функциональность я представляю себе так: на дектопе (сервер) резидентно висит программка, которая, по пришедшему снаружи UDP-пакету начинает передавать фрагменты изображения на обратный адрес. На телефоне (клиент) отображаются присланные фрагменты. Пользователь может сдвинуть оконо отображения или кликнуть внутри него. Информация о сдвигах и кликах передаётся на сервер так же – по UDP.
DIY или Сделай Сам → Цветомузыка или визуализации музыки из песочницы
Все началось с одного очень заинтересовавшего меня поста о создании лазерного шоу. Это было как раз под новый год и нужно было что-то придумать для надвигающейся новогодней вечеринке. А лазерное шоу, управляемое музыкой, было тем, что доктор прописал! Китайские указки горели одна за одной, да и яркость их была весьма посредственной. Как раз где-то нашел статью как сделать лазерную указку из DVD-привода. Новый год уже давно прошел, LPT порт сгорел, но зато пришел заказанный мной ATTiny2313 и куча других электронных компонентов. Много времени прошло за паяльником, много переделанных плат, собранных граблей… В конце концов я решил заказать мощный RGB светодиод на 3W. Тогда уже лазерное шоу работало на зеленом лазере 30mW с помощью плагина визуализации Winamp через COM порт. В общем, светодиод произвел на меня огромное впечатление, и я решил добавить к лазерному шоу еще и цветомузыку.
DIY или Сделай Сам → Домашняя автоматизация
Накопил немного информации с инета по схемотехнике, контроллерам, различным примерам. Как подтверждение моему небольшому развивающемуся проекту, решил написать сею статью…
Итак имеем:
Роутер dir-320( с dd-wrt, процесс установки описан на нашем личном блоге, если нужно статью дополню ссылками на блог), контроллер ATmega8535, небольшая схема управления на оптодрайвере, обьект управления ( настольная лампа, усилитель звуковой, домашний водонагреватель ), немного проводов, паяльник, свободное время.
Что хотелось бы получить: программное управление питанием обьектов, питающихся от сети ~220 В.
На Хабре был целый цикл статей про «как включать настольную лампу от LPT» и прочее… НО! Здесь предлагается более-менее продвинутая, безопасная и автономная система по управлению.
Для небезлимитов — под катом картинки.
Итак имеем:
Роутер dir-320( с dd-wrt, процесс установки описан на нашем личном блоге, если нужно статью дополню ссылками на блог), контроллер ATmega8535, небольшая схема управления на оптодрайвере, обьект управления ( настольная лампа, усилитель звуковой, домашний водонагреватель ), немного проводов, паяльник, свободное время.
Что хотелось бы получить: программное управление питанием обьектов, питающихся от сети ~220 В.
На Хабре был целый цикл статей про «как включать настольную лампу от LPT» и прочее… НО! Здесь предлагается более-менее продвинутая, безопасная и автономная система по управлению.
Для небезлимитов — под катом картинки.
.NET → C#: Этюды, часть 7
Сегодня простой этюд, почти без кода.
Допустим, есть некий класс и его статический конструктор:
Как известно, статические конструкторы вызываются до первого использования типа. Других ограничений нет, поэтому время его вызова вы не можете контролировать (он может вызваться как в самом начале программы, так и при первом обращении). В частности, если два класса используют друг друга в статических конструкторах, поряд вызова этих конструкторов не определен.
В общем, все очень сложно. Тем не менее, напишите код, который гарантированно вызывает указанный выше статический конструктор как раз в нужном месте.
Допустим, есть некий класс и его статический конструктор:
static C()
{ Console.WriteLine("from static ctor"); }
Как известно, статические конструкторы вызываются до первого использования типа. Других ограничений нет, поэтому время его вызова вы не можете контролировать (он может вызваться как в самом начале программы, так и при первом обращении). В частности, если два класса используют друг друга в статических конструкторах, поряд вызова этих конструкторов не определен.
В общем, все очень сложно. Тем не менее, напишите код, который гарантированно вызывает указанный выше статический конструктор как раз в нужном месте.
Console.WriteLine("before static ctor");
// нужно вызвать здесь
Console.WriteLine("after static ctor");
Веб-разработка → Язык Go с точки зрения PHP-разработчика
Go — это язык, придуманный Робертом Гризмером (Robert Griesemer), Робом Пайком и Кеном Томпсоном, который был анонсирован в ноябре 2009 с версиями под Linux и Mac OS X. Сейчас разработчики работают в Google, но и задолго до этого были очень известными и уважаемыми людьми (к примеру, кодировка UTF-8 была изобретена Томпсоном и Пайком для использования в качестве основной кодировки в Plan 9).Лично я решил посмотреть, что это за язык после того, как тут опубликовали вот это видео выступления Роба Пайка. Я изучаю Go не очень долго, но даже за те две недели, что я потратил на его изучение, я успел сделать несколько проектов на нём, например backend для библиотеки JsHttpRequest (JsHttpRequest; мой backend на Go). Я до сих пор использую JsHttpRequest из-за её удобства (как со стороны JS, так и со стороны PHP). В статье я хочу рассказать исключительно о моих ощущениях после программирования на PHP и Javascript, практически без примеров кода.