Sat Feb 23 23:42:00 2013
До Живой Магии я в основном делал графический интерфейс к программам, кнопочки, формочки... А тут с наглой мордой влез в обработку видео. Приходится много сидеть в терминале, все хорошо, да вот только вы удивитесь, но без мышки никуда, чтобы выделить текст и скопировать его куда-нибудь нужна мышка. Вот уж сюрприз. У меня от мышки плечо болит, в универе занимался самбо и повредил себе плечо. А тут по работе пришлось вообще чуть-ли не жить в терминале, плечо сразу дало о себе знать. Пришлось гуглить, вот что нарыл, в терминале без мышки копировать текст нельзя, но есть специальные программы, одна из них tmux. Я tmux ужа давно пользовался. Так вот в tmux надо нажать Ctrl-B [, потом стрелочками либо поиском (Ctrl-S) подвести курсор к тексту который хочется выделить, потом нажать Ctrl-Space, выделить нужный текст и потом нажать Alt-W.
По стандарту C и C++ длинна массива должна быть константым выражением. Например, в книге Страуструпа написано:
The number of elements of the array, the array bound, must be a constant expression (§C.5). If you need variable bounds, use a vector(§3.7.1, §16.3)
Количество элементов массива, длинна массива, должно быть константным выражением (§C.5). Если вам нужна переменная длина, используйте vector (§3.7.1, §16.3).
Как же я удивился, когда последующий кусок кода откомпилировался без проблем:
int ArraySize = 5;
int MyArray[ArraySize];
Вот тут ответ. Проще говоря, в gcc сделали расширение, если компилятор видит не константное выражение, в месте, где объявляется массив, компилятор выделяет память под него динамически с помощью malloc и, когда переменная выходит из зоны видимости, вызывает для нее автоматически free.
Купил себе недавно блок флейту. Учусь на ней играть, уже довольно неплохо получается. Хорошо, бывает собраться с мыслями, подудеть и как-то мозги прочищаются, но заметил такую вещь, как начинаю играть, так соседка со второго этажа ходить начинает. Подозреваю, что дудит моя флейта довольно громко. Оказывается, для флейт существуют глушилки, по-русски они называются сурдина, а по-английски mute. Надо будет заказать, дабы соседям не мешать.
Ходил как-то в один из моих любимых ресторанов в iHop - на завтрак. Заказал себе T-bone stake. Понятия не имею, как на русский переводиться, в общем такой шмат мяса толщиной в сантиметр и внутри Т-образная кость. И еще pan cake, тоже не знаю как перевести, в общем, толстые блины. Вкусные! Вот полил я это дело сиропом, на столе всегда стоит пять разных баночек: клубничный, кленовый, абрикосовый. И тут я увидел 'pecan'. Выглядел аппетитно, оказался очень вкусным. Pecan это такой орех, похожий по форме и внутренностями на грецкий. Вкусно. Теперь панкейки буду всегда им поливать.
Mon Feb 25 22:42:00 2013
Посмотрел тут на днях несколько эпизодов Prototype This. В этом шоу группа разработчиков в сжатые сроки (одну-две недели) пытаются сделать прототип какого-нибудь устройства.
Я посмотрел, как одни сделали капсулу-будильник. Они сделали ее с постелью и климат контролем. Выглядит, как горизонтальный солярий, только прозрачный. Утром она начинает качаться, а потом поднимается и превращается в вертикальный солярий. Автоматически снимает пижаму, убирает постель. Включает душ, так же выезжает полочка с бритвенными принадлежностями с зубной щеткой, после душа включается сушилка, проектор на обратной стороне стекла показывает новости, сводку погоды и друю важную информацию. Выезжает одежда, человек одевается, уже проснулся и готов бежать на работу.
Так же было интересно посмотреть, как один делали автоматическую станцию спасения на пляже. Каждый, кто купается, может взять с собой специальный браслет. В случае, если человек начинает тонуть, он может нажать на кнопку на браслете и браслет отправляет сигнал спасения. Они сделали два устройства, одно для ближнего радиуса, другое для дальнего. Для ближнего радиуса они сделали пневматическую пушку, которая выстреливает спасательный круг. Устройство для дальнего действия, маленький автономный самолет, который подлетал к тонущему и сбрасывал спасательный круг. Это шоу я досмотреть не смог - уснул. Но уснул не от того, что не интересно, просто спать сильно хотелось.
Ходил в выходные в Barnes & Nobel. Продавец прицепился, не знаю, с чего это на него нашло, обычно им дела нет ни до кого, стал спрашивать, есть ли у меня планшет, потом стал говорить, а стоит ли там Nook приложение, потом сказал, что есть такая же, только для детей. Ну, я пошел, сел в уголочке, установил поставил. В общем очередная читалка. У меня уже и так от самого Apple'а стоит, еще от Amazon'a Kindle стоит и еще приложение для аудиокниг, куча всего накачано, а времени читать особо нет. Из-за жлобской политики Apple, книги для Kindle покупать очень не удобно. Нужно на веб-сайте Amazon'а их покупать из приложения нельзя. Из приложения можно покупать, только через iTunes Store. Та-же самая фигня и у Nook. Я первый раз сильно удивился, вещи то покупать можно, я уже покупал прямо с iPhone'а, а потом решил купить книжку и... национальное эскимосское жилище.
Есть такая штука Arduino. Постоянно на слуху, вечно статьи попадаются на глаза, решил все же узнать, что за зверь такой. Это такая готовая плата с цифровыми и аналоговыми входами и выходами, ее можно подключить к компьютеру и загрузить свою программу. Программа пишется на специальном языке, который по большому счету C++ со специальными наворотами, а скорее с отворотами. Ну, в принципе и все. Штука интересная, вот только думаю, а для чего она мне может понадобиться? Есть еще закрытое решение от Lego, называется Mindstorms. Там выбор побогаче, есть уже готовые различные датчики, на youtube'е куча всяких проектов, кто кубик рубик собирает, кто разноцветные конфетки драже сортирует, еще были умельцы, которые пытались маленький segway сделать - любители, Алексакова на них надо было натравить.
Wed Feb 27 00:00:00 2013
Writing MineSweeper game. Real time. With Russian comments.
Sat Mar 2 23:22:00 2013
Привычка - вторая натура - я пользуюсь emacs. Emacs это такой текстовый редактор, особенно он хорош для программирования. Очень старый, разработка редактора началась в 1970 году. В среде Unix'оидов emacs один из самых распространенных редакторов, с ним наравне идет vi. Между этими двумя лагерями идет война не на жизнь, а на смерть, на многих формах вопрос: что лучше vi или emacs, запрещен модераторами. Чтобы сохранить файл на диск в emacs надо нажать Ctrl-X, Ctrl-S. Ясное дело, я эту комбинацию, нажимаю миллион раз на дню. Так вот, т.к. я много сижу в терминале, иногда, чтобы поправить, какой-нибудь конфигурационный файл, я запускаю vi (ну, не знаю, так проще) так вот, при нажатии комбинации Ctrl-X, Ctrl-S в vi, все зависает, вообще никакой реакции, можно долбить по клавишам как мартышка, ничего не произойдет, в первые разы, я убивал приложение из другого терминала, но в один прекрасный момент, меня это достало. Выше я уже написал: привычка - вторая натура, я в такие ситуации попадал довольно часто. Стал разбираться, как же отвиснуть vi, оказалось, все просто, надо нажать Ctrl-Q. Emacs'оидам на заметку.
На протяжении тысячелетий люди познавали окружающий мир использую очень примитивные приборы. У них даже не было нормальных секундомеров. Руки, да глаза. Например, Эратосфен более чем два тысячелетия тому назад, находясь в городе Сиене, как-то раз посмотрел в колодец и увидел на дне колодца тень от своей головы. А в городе Александрия он уже знал, что в полдень в этот день тень от солнечных часов находится под углом одна пятидесятая от полной окружности (7°12'). Пораскинув мозгами он понял, окружность Земли должен быть равна расстоянию между городами помноженным на 50. Так же он знал, сколько времени занимает прямой путь на верблюдах от Сиены до Александрии. Сопоставив все эти факты он получил 39 500 км. Погрешность порядка 1%. Более двух тысяч лет назад, мужик посмотрел в колодец и смог определить окружность Земли!
Советую еще почитать про то, как померили скорость света, тоже крышу сносит.
Кучу времени потратил на одну ошибку. Я решил, в какой-то из моментов перекомпилировать все с опцией нового стандарта C++-11. И тут один из дев заметил, что звуковые отпечатки стали отставать от потокового видео. Причем довольно существенно, в некоторых случаях на 30 секунд. Я три ночи не спал, Я устал. Мне бы заснуть, Отдохнуть... Так вот после долгих мытарств я понял, что у одной из серверных программ утекает память, в один прекрасный момент системе перестает хватать памяти все начинает жутко тормозить и в этом момент происходит дрейф звуковых отпечатков и потокового видео, некоторые программы падают от нехватки памяти, потом новенькие перезапускаются, и так до следующего переполнения. Стал я разбираться почему память течет, долго разбирался, проблема оказалась не у меня, а у компилятора. Память текла внутри std::string. Пришлось переписывать кучу всего. Но я оставил себе заметку рассмотреть это дело более внимательно. Все еще меня грызет сомнение, может быть я все-таки где-то чего-то не доглядел. Надо все тестировать, даже после небольших изменений.
Mon Mar 11 00:00:00 2013
March 5, 2013 opening. 25000 LED lights.
Sat Mar 16 00:00:00 2013
На этом уроке мы попробуем научить компьютер делить 1 на 9801.
Все уроки: http://www.youtube.com/view_play_list...
Исходный код: http://code.google.com/p/cplusplus-le...
ЧаВо: http://code.google.com/p/cplusplus-le...
Wed Apr 17 12:31:00 2013
Приснился недавно сон про лифт. Мне иногда снятся сны про лифты и они всегда с каким-то мистическим оттенком. В этот раз вообще-то это был сон про мои сны про лифты. Итак сон.
Стою я в моем московском подъезде и вижу лифт поменялся, кнопки этажей снаружи. Чтобы вызвать лифт, нужно нажать кнопку этажа, на который я хочу поехать. Ищу кнопку восемь (этаж на котором я живу). Вижу кнопку 6, 7 и сразу идет 9. Кнопки восемь нет. Я совершенно не удивляюсь, в памяти всплывают все мои старые сны про этот лифт. В моих старых снах чаще всего мне не удавалось попасть на мой этаж, я выходил на лестничную площадку и понимал, что дверь не моя, я говорил про себя: А... это дверь с седьмого этажа, заходил назад в лифт, нажимал восьмой этаж, оказывался на девятом, потом, я думал: видимо лифт сломан, пытался спуститься на мой этаж по лестнице, лестница оказывался разломанной и надо было перепрыгивать. В общем, мне никак не удавалось попасть ко мне домой, либо удавалось, но с большим трудом. А иногда лифт улетал через крышу, но это уже другая история. Вернемся к моему этому сну. Пролетают у меня в голове мои старые сны и причем они воспринимаются мною не как сны, а как будто это происходило со мной на самом деле, и я вспоминаю, что многие жители жаловались на странное поведение лифта, и администрация решила переделать лифт и отменить восьмой этаж, т.к. лифт все равно не хотел ехать на восьмой этаж.
Тут подходит мужик и нажимает на кнопку нужного ему этажа. А я к нему поворачиваюсь и говорю (почему-то по-английски):
- I think this elevator is haunted. We had so much problems with it.
[Мне кажется в лифте живут барабашки. У нас было столько проблем с ним.]
И тут я проснулся.
Обычно мне снится два типа снов про лифты: лифт в моем старом московском доме и лифт на атомных электростанциях. Лифты на атомных электростанциях чаще всего мне снятся горизонтальные, они ездят не вверх и вниз, а по-горизонтали - как вагоны в метро.
А вам часто снятся сны про лифты?
Thu Apr 18 05:00:00 2013
Возникла у меня задача вставить в программу diff (разницу между текущим исходным кодом и кодом в системе контроля версий). Нужно это, чтобы сделать ловлю багов проще. Обычно систему на боевых серверах разворачивает специальный человек, и часто я не знаю, какие изменения в исходном коде он сделал, поэтому удобно включить эти изменения прямо в исходный код. Соответственно мне нужно вывод программы diff вставить прямо в исходный код и откомпилировать его. Просто поставить двойные кавычки пройдет для простых случаев, но в этом случае это не пройдет, т.к. нужно экранировать кучу символов: те-же самые двойные кавычки, переводы строк, обратные слеши и много чего другого. Вдумчивое гугление вывело меня на прекрасную программу под названием xxd. Магия делается вот так:
$ echo const char GitDiff[] = {
$ echo `git diff | xxd -i` };
Wed Apr 24 00:00:00 2013
На этом уроке мы сделаем маленький мультфильм с шагающим человечком.
Все уроки: http://www.youtube.com/view_play_list...
Исходный код: http://code.google.com/p/cplusplus-le...
ЧаВо: http://code.google.com/p/cplusplus-le...
Ссылка на видео, как собирать OpenGL программы: http://www.youtube.com/watch?v=VuGzY3...
Ссылка на программу build: https://github.com/antonte/build_syst...
Thu Apr 25 00:00:00 2013
Got a new web camera, was testing it for my feature projects. Just simple doodling.