Язык | Код | Результат |
---|---|---|
php: | echo (int)08; | 0 |
javascript: | alert(parseInt("08")); | 0 |
c/c++: | int main() { printf("%d\n", 08); } | error: invalid digit "8" in octal constant |
python: | print 08 | SyntaxError: invalid token |
Erlang: | B = 08. | 8 |
Идеи приходящие в голову. Надеюсь они кому-то помогут. Заранее благодарен за комментарии.
Sunday, November 7, 2010
Восмеричность(octal)
Пример почти рабочего кода с иногда неожиданным результатом:
Tuesday, November 2, 2010
Видео с конференции Yandex
Конференция проходила 1 октября.
Наиболее интересное по моему мнению:
- 'Базовые оптимизации' Петр Попов - Краткие описания оптимизации алгоритмов в основном хранения индексов.
- 'Построение системы видеокоммуникаций для большого числа пользователей в сети Интернет' Вячеслав Борилин - Текущее состояние передачи видео в конференциях, какие существуют проблемы.
- 'Танки в Лунапарке' Андрей Кузьмичев - Просто интересный(веселый) доклад.
- 'Веб-сервер Phantom' Влад Селиверстов - Описание архитектуры их вебсервера, легковесные потоки и состояния - но на С++, а не на экзотических языках. Тестовые данные несколько сомнительны, но как доказательство что можно и без экзотики создать быстрое решение.
- 'Как мы охотимся на гонки (data races)' Константин Серебряный - Теория определения гонок и как они их выявляют, инструменты.
Sunday, October 31, 2010
Компиляция новой прошивки для D-Link 2650
По пунктам:
- Загружаем и устанавливаем в виртуальной машине Fedora 9.
- Загружаем исходные коды прошивки.
- Распаковываем и запускаем(в виртуальной машине) install.sh на все вопросы отвечаем утвердительно.
- В результате в систему устанавливаются crosstools для mips(/opt/toolchanins).
- Заходим в /opt/DLink DSL-2650U и пишем make PROFILE=DSL-2650U
- Все первая прошивка готова, она будет собрана в images
- Теперь идем в userapps/opensource/busybox
- Копируем brcm.config в .config, если еще его нет
- Запускаем make menuconfig выбираем нужные нам программы(ls, cp) так в стандартной прошивке их нет. Особо экономить на включении не нужно там оригинальная прошивка немного больше 4мегабайт и вполне хватить места еще под пару программок в оставшемся свободном месте 8 мегабайтной внутренней флешки.
- Сохраняем полученный .config в targets/DSL-2650U/brcm.config
- Пересобираем прошивку
- Все - прошиваем и проверяем.
Возможно можно использовать другую версию, но на 9 все работает. Для того чтобы использовать на других нужно пересобирать crosstools и проще просто поставить виртуальную машину чтобы не морочить голову с версиями. В прошивке используется старое ядро 2.6.9 и старый busybox(даже не стабильная версия, а 1.0.0-rc3). Обновить ядро наверное не очень получиться так как часть модулей, если посмотреть по структуре директорий, уже в бинарном виде.
Для экспериментов можно использовать программы записанные на USB флешку, так как при монтирование разрешено запускать программы с флешки и они вполне работают.
Saturday, October 23, 2010
Конвертация тегов в mp3
Очень простой скрипт:
find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1
Sunday, October 10, 2010
Смена темы загрузки ubuntu
Или миссия не выполнима:-)
В последних версиях(наверное уже выпусков 4) ubuntu отсутствует возможность смены темы загрузки с меню пользователя, например в старом gdm можно было выбрать пункт в самом меню выбора имени пользователя. Варианты решения:
- Замена картинки grub: в файле /etc/grub.d/05_debian_theme заменить имя картинки на нужную(строка WALLPAPER="), желательно брать картинку из пакета: grub2-splashimages
- Замена темы plymouth: ставим нужную тему и набираем sudo update-alternatives --config default.plymouth
- Смена картинки в gdm(как сменить полностью тему я не нашел): выходим из системы, чтобы было видно окно выбора пользователя, и вводим: DISPLAY=:0.0 sudo -u gdm gnome-appearance-properties и меняем значение фоновой картинки.
Все пункты проверены в 10.10.
Sunday, September 12, 2010
Ubuntu beta: Hybrid graphics
В бета версии(как у знал в понедельник это бета версия) ubuntu в настройках ядра включили поддержку vgaswitcheroo. Переключать можно только магической посылкой определенной комбинации символов в определенный файл:-) Или проще говоря поддержки на уровне пользовательских программ нет, переключать можно только применяя команды описанные ранее.
Толку для игр от этого мало - так как в бета релизе у меня не работает нормально opengl - картинка представляет собой появляющиеся и исчезающие полигоны, играть нормально нельзя.
Зато проверил hdmi(фильмы на большом экране смотреть:-)) он нормально работает экранами через пользовательские программы можно управлять, звук есть. Ранее проверить нельзя было, так как разьем выведен с 3650 и управлять им с 3200 нельзя. Зато глюков с экранами нет - windows иногда забывала где основной и выводила на hdmi приглашения входа.
P.S.: Плюс очень большое количество fps в glxgears: 3200 - 270fps, 3650 - 320fps. Но я думаю эту мелкую неудобность к релизу исправят.
Monday, September 6, 2010
Асинхронно выводить на экран?
Или маленькая мысль о том:
так ли X-протокол безнадежно устарел.
А зачем нужно не дожидаться завершения операции? Это хорошо когда нужно следить за большим количеством редко случающихся событий (делаем только по событию), но не очень хорошо при прорисовке, я думаю лучше все же иметь возможность отменить посылки до того как они полностью отосланы.
В общем идея такая: в отдельном потоке держать обработку списка задач которые синхронно отсылаются на сервер (возможно похоже на случай с Beos, где в app-server запущен еще один дополнительный поток на каждое окно, если верить некоторым публикациям), если потребность в них отпала - пользователь или кто то еще изменил существенно прорисовку зачем продолжать? Так мы можем определить, что за секунду мы прорисовываем 1000 примитивов и постепенно прорисовывать их пока не закончиться временной лимит, или кто-то не отменит прорисовку. В результате того как сейчас работает X протокол мы можем, если пользователь был не очень активен последнее время - с устройств ввода не было событий мы можем спокойно поставить проверку на ввод после n-го элемента(или по времени смотря что раньше произойдет), что выведет проверку на состояние каждые 1 секунду, и когда появляется активность ставить проверку на десятые доли секунды. Думаю это существенно снизит нагрузку на процессор.
Для OpenGL- есть примерно подобная идея - создавать буфер для списка отображаемых объектов (буфер глубины), но не для конечных точек, а для больших объектов. И отбрасывать сразу целыми объектами, и если мы не попадаем в какой-то лимит отображения за время, например кадров секунду, отбрасывать все мелкие объекты(или те которые большие, но далеко) и следующий кадр рисовать уже без них, так как в основном все кадры подобны это должно дать несколько дерганое время прорисовки кадров, которое стремится оптимизироваться под соотношение размер элемента/время кадра. Правда я не уверен, есть ли сейчас отбрасывание объектов сразу при начале заполнения очереди, но отбрасывания по размерам объектов (не примитивов) я не слышал, и в классическом рисунке графического конвейера его не видно.
Мітки:
Beos,
mesa,
xorg,
мелочь,
мнение,
просто интересно,
размышления,
упрощение
Subscribe to:
Posts (Atom)