avr: случайнее random()

В простых встраиваемых устройствах есть большая проблема: очень хочется рандом. Нормальный такой рандом. Но если подумать, то контроллеру совершенно не от чего "рандомизировать" генератор случайных чисел. Ибо каждый старт контроллера "жизнь начинается с 0".

Эта проблема всплыла в пресловутом moodlamp (лампа настроения, переливающиеся цвета светодиода). Хочется чтоб "переливы" каждый раз начинались с нового цвета :)

Read more

Мысли: полосатые проекты

Люди собираются вместе чтоб создать нечто.

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

К сожалению, все эти эмоции часто затмевают реальное положение дел. Горящие глаза видят того, чего нет. Руки делают то, что не будет использоваться. Разум дорисовывает картину мира до идеальной, специально под великий Проект.

Приходит время настоящих действий, принятия решений. Сказочная картина чуть чуть приближается к жизни реальной, а не к жизни которая нужна проекту. И чем дольше идёт процесс создания, тем лучше получается увидеть реальную жизнь, реальные потребности людей. Почему? Одна из самых зажигающих эмоций - энтузиазм (те самые горящие глаза). Он способен заставить людей собраться и создавать нечто, затухает. И Великая идея уже не кажется такой великой.

Read more

brainfuck: java-компилятор

branfuck - это такой простейший язык программирования который реализует некую "полную машину Тьюринга", подробнее в википедии, там же и подробное описание команд. Кому лень - пример, выводящий традиционное Hello world:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.

Для тех, кто видит в первый раз это кажется диким. Ну разе lisp не страшнее?)

Зачем??!

Read more

Event: NevaCamp #2

28 - 30 мая 2010 года в Санкт-Петербурге в стенах выставочного центра у м. Кировский завод состоялась во второй раз не_конференция NevaCamp

Это конференция такого формата(barcamp), когда любой может предложить свою тему рассказа или обсуждения по ходу мероприятия. Всё нацеленно на то - чтоб быть в постоянном контакте с людьми. Создавать и участвовать в дискуссиях.

Ивент проходил в 3 дня:

  1. 28 мая - StartFormers. Выезд на природу(заброшенная военная база в Сертолово), активный отдых.
  2. 29 мая - будущее интернета: версия Opera, IdeaSpace, AR, Opera: HTML5, CSS3, SVG.
  3. 30 мая - технологии MS, директора стратегического развития МТС, Wikinomics, openNotebook, Ingria

/ перечислил только то, что сам захватил и запомнил /

Read more

Linux: простой web сервер на asm

Спятил, да? А ещё если напишу, что планировал сделать многопоточность и нечто CGI-интерфейса? Вполне может быть, в рамках just for fun

Но остановился на том, чтоб отдавать статические страницы - время не дало допилить, да и энтузиазм уменьшился. Идея мне пришла из за курсовой работа по "Системному программированию" В СПбГУ ИТМО. Всех заставили писать резидент под DOS, на 8086 архитектуре. Не торт.

Основные фитчи, которые я успел реализовать:

  • Форк, при необходимости
  • Чтение конфига(ini-like)
  • Создание слушающего сокета, установка параметров
  • Парсер заголовков и запроса
  • Обработчик запросов статического контента(не в /cgi-bin/)
  • В некоторых местах совершенно корявую работу со стеком

Реализовано на NetwideASM, c частичным использованием функций glibc. Работать сервер будет только на 32-битном процессоре i686+, из за того, что дёргается прерывание ядра Linux - а номера функций отличаются в зависимости от процессора.

Read more

Startup Crash Test Piter #5

Снова состоялось ежемесячное мероприятие для стартапов - крэш тест. И даже не в Ингрии, а в гостинице "Ольгино"(за городом, примерно между м. Старая деревня и г. Сестрорецк), причём в рамках СПИК(Санкт-Петербургская Интернет - Конференция). На SCT отвели всего полтора часа, из за этого, видимо не было докладов - только тест стартапов

Ивент прошёл 22 мая 2010, в субботу, в среднем зале отеля

Read more

j2me: пример с падающим мячиком

Хочу поделиться одним своим примером приложения для мобильной java. Основная задача - понять как пишутся такие приложения под телефоны. Вроде задачу выполнил :). В программке можно передвигать мяч, падающий в "гравитационном" поле по законам физики(надеюсь), задавать его скорость и направление движения, как водя по сенсорному экрану телефона(если есть) так и кнопками

В эмуляторе выглядит всё не так красиво, как в живую, поэтому продемонстрирую на телефоне(SE P1i)




Понравилось? Для начала работы с j2me - самое то.
Используется MIDP-2.0, CLDC-1.1.

Read more

Kohana: AJAX контроллер с ловлей ошибок

Продолжая тему написания custom контроллеров не для html вывода предлагаю мой вариант обработчика AJAX-запросов. Напомню, в предыдущий раз я описывал контроллер для консольного демона

Помимо удобной для меня выдаче данных(я предпочитаю в 99% случаев выдвать JSON) есть ещё ряд фитч:

  • Код контроллера многократно используется наследниками класса, которые при необходимости могут перегрузить необходимые методы. В них написать простой ответ клиенту с помощью не сложных функций можно в пару строк - не нужно отвлекаться на создание json ответа, а писать логику.
  • Дефолтные ответы об успешном выполнении запроса, предупреждения или ошибки
  • Ловятся ошибки фреймворка и формируется адекватный отчёт об ошибке, а не километровый HTML от Kohana - просто идеально при использовании fireBug или аналогичных средств отладки.
  • Если вызываемый метод не реализован в наследнике, то будет выдан user-friendly ответ(опять же если использовать регламент возвращаемых структур json)

Read more

Apache: быстрое добавление сайтов

Набросал простой скрипт, для удобного создания VirtualHost в debian.

Наверное тоже надоело лесть, создавать vhost по существующему, править пути, перезапускать сервер и так много раз и по кругу? А ещё не хватало опечататься?

Предлагаю такое решение: скрипт, делающий всю эту рутинную работу. Принимает только 1 аргумент - имя сайта и сам создаёт скелет и VirtualHost по шаблону.

В каталоге с сайтами создаётся папка с указанным именем. В ней - ещё 2 папки - log и www - для логов и сайта соответственно. А так же vhost - файл с описанием виртуального хоста по шаблону, лежащему в папке с сайтами. На этот файл создаётся симлинк в стандартное для дебиановского апача место - /etc/apache2/sites-avalable. После установки прав на созданные папки происходит вызов a2ensite и перезапуск апача. На скриншоте выше - кусочек такого скелета который получился после работы скрипта - из наутилуса

Read more