Thursday, December 23, 2010

Year 2010

The last January I've posted my SDP (Self-development plan). Let's have fun.

1. Learn C++ and it's idioms, boost and stl
I've spent some time learning it. Despite I had no luck having C++ projects this year, I've been developing all these skills. Not to say I'm proud with my results, but there's a progress.

2. Learn C++0x. Read the Standard at least once.
I got an excellent excuse - there's no way I can read it. I don't want to use a laptop to read it. I don't have it printed. My chinese tablet is broken and even if it wasn't, it can be used to read .pdf. Is that great? More of that, nothing of the kind, I did nothing with 0x at all.

3. Get more than 4.5 in a C++ Brainbench assessment :-)
Looks like there were no free C++ BB assessments this year. I feel like I won't get 4.5 event if I had that free assessment.

4. Learn basic design patterns.
Yes! I've learned some of them. Mmm... how'd you call it... a singleton? Really, I've read a few books.

5. Re-read all books I have about software design.
I've been reading them, but not too actively. Now I think it's a waste of time.

7. Get introduced with Android, have some Hello Worlds done, learn Java to the level I know C#.

Yes. I have some experience with Android. I've made a small training task. I like Android. Both Java and C# are similar for me now. But it doesn't mean I have progress with Java. I just forgot C# :-)

7. Improve my English.
Don't know. Looks like I have a D+ :-)

8. Finish my compiler implementation. Make an Open Source project out of it.
No. In progress. No results.

9. Learn Python, start using it.
Yes. No pleasure. Learning it is inefficient. No results.

10. Get introduced with Django.
Got introduced, see previous post. No pleasure.

11. Figure out sound linux. Find out the software to make music.
Got it. It's possible to record guitar. It's possible to have real-time audio processing like Guitar Rig. And that's all. All this software is weird and unusable. Will wait for a couple of years.

12. Buy a new guitar and learn how to play it.
Yes. I spend for about 30 minutes almost every day.

13. Start riding my bike.
There was a couple of rides. I'm now 30 kg less.

14. Learn modern .NET and get certified.
No.

15. Start playing with ATMEGA32 again.
No.

16. Learn to get interesting projects.
No.

17. Learn software for software development: libraries, source control software, code-generators and so on.
I've spent a lot of time mergin the code with Araxis Merge. I had some experience with Subversion. I had some experience with TeamCity and even developed a plugin for it.

18. Learn multithreading.
No.

И снова JavaScript

Я сегодня понял 2 вещи.

Первая - нет в интернете такой статьи про JavaScript, читая которую периодически будешь повторять про себя: "Логично". ВСЕ статьи про JavaScript строятся в форме:
- Вы хотите X?
- Ну давайте попробуем вот так (далее идёт небольшой листинг, который хочется назвать "логичным")
- Не получилось? Потому что нужно вот так! (далее идёт, возможно, такой же по размеру листинг, только после предложенных правок логичным его точно не назовёшь. После листинга идёт не менее броузерной страницы чистого текста с попытками объяснить хитрожопость JavaScript).

Надо признать, что старость - не радость. Моё подростковое "со всем можно разобраться" становится всё слабее. С одной стороны хочется сказать, что время, которое я уже потратил на JS просто не окупается, а разобраться-то вообще можно, но нет. На самом деле ощущения сейчас идут больше в сторону "тошнит и не хочу". Я не в состоянии разобраться как писать нормальные программы на JS, потому что меня слишком сильно тошнит.

Вторая вещь, которую я понял - я больше никогда даже пытаться не буду писать на JavaScript. Потому что даже зацепиться не за что. Всё не так как должно быть. Более того, всё более явно приходит "профессионализм". Я сейчас не про тот профессионализм, который в смысле "много знать, много уметь", а про тот, при котором понимаешь, что если забьёшь на одну тему, от которой тошнит, ничего не потеряешь, а скорее даже приобретёшь.

Tuesday, December 14, 2010

Про динамическую типизацию. Особенно слабую.

Есть такая замечательная страничка, на которой можно посмотреть рейтинг разных ЯП. Зачем смотреть и откуда они берут информацию я не знаю, поэтому иногда смотрю чисто поржать.

Если прокрутить вниз до "Very Long Term History", можно наткнуться на замечательный факт: Objective C с 42го места в 2005 году поднялся до 8 места в 2010. Причина, естественно, не в том, что все резко поняли, какие они идиоты и осознали как прекрасен Objective C, а в том, что из-за iPhone/iPad он сейчас востребован.

Ситуация исключительно идиотская. Objective C - это полная хрень. Это такая лажа, что просто выворачивает. Если взять всё самое плохое из C и JavaScript, получится нечто получше Objective C - настолько он хреновый.

Я вообще о чём... А, вспомнил. Я вчера пытался отрефакторить свой хреновый код, написанный на JavaScript с использованием jQuery и понял несколько вещей:
1. JavaScript - это полнейший фуфел.
2. jQuery, из-за того что JavaScript, это тоже полнейший фуфел.
3. Динамическая типизация, а особенно слабая динамическая типизация - это жопа.
4. Буду в дальнейшем избегать динамической типизации при любой возможности.

Когда человек пишет программу, у него достаточно вещей, которыми нужно заняться. Нужно подумать как сделать архитектуру вменяемой, нужно подумать какие инструменты использовать, нужно ещё о куче всего подумать. И, блин, этих развлечений вполне достаточно. А когда пишешь на языке с динамической типизацией (особенно со слабой), появляется новое развлечение, которое называется "вспомни, что тут должно быть". Это когда пишешь функцию, у которой есть аргументы, а потом её вызываешь где-то и думаешь: "Блин, а что я сюда передаю вообще?".

Кто мне покажет прелести слабой динамической типизации? Вот прям какой-нибудь пример, чтоб я прозрел?

Monday, December 13, 2010

Немного про веб #2

Не так давно я написал про веб. С тех пор поковырялся ещё немного, отношение немного изменилось.

Ниже идут только эмоции, если вам хочется мыслей, этот пост не читайте.

Django
Django заканчивается там, где заканчивается их первый туториал. Вы ставите Django, начинаете читать введение. Там рассказывают как сделать блог. Пока вы делаете этот блог, всё исключительно позитивно. Там фактически нужно сделать 2 пустых файла и 3 команды в шелле выполнить и получается блог. Я, конечно, утрирую, но это довольно реалистичное описание. После этого хочется верить, что Django весь такой. Белый и пушистый, гибкий, универсальный и всё нахаляву.

На самом деле - нет. Единственное, что с помощью Django можно сделать легко - это блог. Ну и всё остальное, что хоть как-то похоже на блог. На этом халява заканчивается. Гибкость и универсальность исчезает. Остаётся недофреймворк, в котором для получения нужного поведения нужно половину реализовать руками. Я опять утрирую, но это близко к истине.

Например, как я понял, модель непосредственно завязана на sql. Причём завязана она непосредственно на select/insert/update/delete. А у вас хранимые процедуры? Ну... гугл, красные глаза, возможно что-то и выйдет.

Python
Питон нынче моден. Быстрое прототипирование, биндинги чуть ли не со всеми существующими библиотеками, и т.д. При этом при всём с ним что-то не то. Когда я изучал C#, было просто интересно. Т.е. он не напрягал, он заставлял решать маленькие задачки, которые действительно интересно было решать. Когда я изучал Java, там вообще смешно было. Java ничем не отличается от C#. И всё было как-то легко и непринуждённо. Любезный читатель может здесь указать на то, что все эти 3 языка совершенно одинаковые. Соглашусь.

А вот с питоном как-то не срослось. Как обычно, делал лабораторные, как обычно читал книжки и статьи, но почему-то не цепляет. Странный он. То ли это динамическая типизация, то ли ещё что-то. Короче, сильное ощущение дискомфорта.

JavaScript и jQuery
JavaScript ужасен сам по себе. jQuery интересен только пока смотришь короткие примеры. JavaScript - это такая жопа, самая большая жопа из всех популярных на сегодняшний день ЯП. Слабая динамическая типизация - это ужаснейшая идея. Это фишка, которая позволяет из простого hello world сделать такой ужас, что потом не разберёшь. jQuery интересен тем, что он есть и популярен - это единственная причина, по которой я решил его использовать (т.к. проект у меня сейчас учебный, делаю выбор в сторону попсы).

Так вот, если от Python можно отказаться и использовать что-нибудь другое, то от JavaScript уже не откажешься. Потому что альтернатив нет.

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

Любезный читатель может сказать, что у меня руки из жопы растут. Возможно. Речь не об этом. Речь о том, что нет удовольствия от веба.

Friday, December 10, 2010

Rework

Недавно купил на Озоне книжку Rework. Потому что модно. Вчера получил и прочитал. Книжка тонкая, буквы большие, поля большие, картинок бессмысленных много. Книжки делятся на те, из которых можно что-то узнать и те, которые можно прочитать. Rework относится ко вторым. Основные тезисы можно выделить так:

1. Думай меньше.
2. Слушай меньше.
3. Делай хоть что-то.

Сложилось впечатление, что книга держится исключительно на ЧСВ авторов: у них так работает, значит это хорошо и может заработать у кого-нибудь ещё. Книгу стоило бы назвать "Что 37signals думают о самих себе". Почти никакого анализа - просто факты.

Thursday, December 2, 2010

Про методы разработки

Обнаружил крайне интересную статью, рекомендую к прочтению.

Wednesday, December 1, 2010

Маразм

"26 ноября 2010 года программист из Магадана, автор бухгалтерской компьютерной программы "СЛВ-Зарплата" Жуков В.В. был осужден за защиту своих авторских прав.

Суд посчитал программу Жукова вредоносной (блокирующей информацию), поскольку по истечении срока лицензии программа перестает работать."

Если есть пара минут, сходите сюда и подпишитесь под обращением.

eBay

Оказывается, живя в Росии вполне можно покупать на eBay. Сегодня приехали 2 посылки - чай и рюкзак. Чай из Тайланда, рюкзак из Штатов. Теперь я могу положить чай в рюкзак. Чай из Тайланда в рюкзак из Штатов.

Болеро

Мне очень нравится интернет-магазин Болеро. Сегодня они прислали мне список новых книг. Это последовательная выборка из их списка:
1. К черту все! Берись и делай!. Издание 2
2. Клиенты на всю жизнь
3. Управление жизненным циклом корпорации
4. Годовой отчет - 2010 (комплект из 2 книг)
5. Правоохранительные органы Российской Федерации
6. История судебной системы в России. Издание 2
7. Комментарий к Уголовному кодексу Российской Федерации. Издание 7

Tuesday, November 30, 2010

Software Engineering

Несколько вещей по поводу инженерии ПО, которые я субъективно нахожу категорически интересными.

Первый интересный источник - книга Стива Макконнелла "Профессиональная разработка программного обеспечения". "Совершенный код" много кто читал, а "Профессиональная разработка", по-моему, не очень популярна. Там нет никаких практических советов типа "не делайте в цикле то, что можно сделать завтра". Там речь, в основном, идёт о самой отрасли - о специфике, о нюансах. Книга тонкая и очень интересная.

Ещё есть книжка "Программист-прагматик". В ней авторы рассказывают как не быть быдлом. Тоже тонкая и тоже интересная.

На сайте ACM есть страничка с "Кодексом программного инженера". Там есть 2 версии: покороче и подлиннее. О чём идёт речь - понятно из названия. Очень рекомендую прочитать хотя бы раз длинную версию и поделиться ссылкой с коллегами.

А сегодня в рассылке The Code Project обнаружилась исключительно интересная ссылка - Programmer Competency Matrix. Тоже рекомендую ознакомиться, очень демотивирует :-)

Thursday, November 18, 2010

Немного про веб

Так сложилось, что у меня исключительно разноплановые интересы.

"Профессиональным разработчиком" я стал в 2002ом году. Я тогда был то ли в 9ом, то ли в 10ом классе. У меня тогда уже был небольшой опыт разработки для веб. Помню, что написал счётчик посещений на Перле, и на нём же - ужасный движок форума. Потом что-то делал на PHP, не помню уже. И вот, на меня, уже снова не помню, откуда свалился фрилансовый проект. Я тогда не знал такое слово - фриланс. Но он на меня свалился. Что интересно, сумма была довольно интересная по тем временам - 5000 рублей.

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

После этого я "устроился" (почему в кавычках - не скажу, но кавычки тут в тему) веб-разработчиком. Нужно было писать на PHP. Около года прозанимался этим, появилось дикое отвращение к вебу. Вообще ко всему вебу. Я тогда сказал себе - больше не буду заниматься вебом. С тех пор прошло 8 лет. Все эти 8 лет я почти никакого отношения к вебу не имел. Периодически почитывал статьи, слушал страшные слова типа ASP .NET, jQuery и т.д.

И вот некоторое время назад случилось так, что мне предложили потимлидить команду из двух человек, которая занималась багфиксом веб-приложения на ASP .NET. У меня было исключительно смутное понимание того, как это всё работает, но было понимание, что это дотнет. А дотнет, как известно, всегда одинаковый - белый и пушистый.

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

Почти параллельно с этим возникла необходимость сделать простенькую фигню на Flash. Я помню в школе тоже как-то Flash поставил. Посмотрел - и сказал: ненене, Дэвид Блейн. Сейчас же, за несколько вечеров удалось более менее разобраться. Очень порадовало, что многое можно сделать вообще без мышки. Тупо на Action Script. А Action Script оказался не страшный, вполне себе такой.. странноватый, но ненапряжный. Сделал фигню.

Сейчас решил посмотреть как работает современный веб. Ковыряю Django, jQuery, Google Maps API. Собственно, ради чего я это всё пишу. Хочется просто сказать, что оно не такое уж и противное. Django/Python - исключительно позитивная вещь. Вдвойне позитивная после того, как я поставил Aptana Studio, у которой есть PyDev. Не противно! jQuery так вообще - ахтунг. Весёлая такая штука. У Google Maps API настолько хорошая документация и настолько много официальных примеров использования, что вообще вопросов не возникает.

Короче, вебом можно заниматься. Не так чтоб совсем, но можно.

Saturday, November 6, 2010

Про роботов

Это я к чему... А хз.

Saturday, October 2, 2010

Рабочее место


Я тут недавно решил ознакомиться с разработкой для iPhone, но т.к. комп у меня исключительно древний, пришлось просить, чтоб на работе мне сделали виртуалку с макосом. В убунте vpn работает как-то исключительно хреново, поэтому решил использовать 2 компа - один чтоб гуглить, а другой - для удалённой виртуалки. Слева-направо: винда, макос, убунта, убунта.

Thursday, September 23, 2010

Monodroid preview 2

Быстренько пощупать не получилось. Я и не предпологал, что поднятие виртуалки со всем минимальным софтом займёт столько времени.

Задача у меня была простая - поднять какой-нибудь простой вебсервис с одним методом и сделать для него клиента под андроид, используя Monodroid. Сервис написался на Моно под линуксом за 5 минут, т.к. писать там кроме аттрибутов нечего. А вот для клиента пришлось поднять виртуалку с виндой и студией. Заняло кучу времени и утомило. Клиент сделался за 2 минут. Потому что на клиенте делать вообще нечего. Даже аттрибуты не надо писать. Он сам делает. И вот, запускаю я, значит клиента, нажимаю кнопку и жду. Долго жду. Потом активити падает. Как выяснилось - падает из-за таймаута. Вспомнил, что пермишны для своего пакета не прописал. Добавил доступ в интернет и всё заработало.

Практически можно утверждать, что Monodroid - это круто. Потому что как дотнет. Всё так же легко и непринуждённо. С другой стороны, есть какой-то негативный осадок. Возможно, это связано с тем, что у меня медленный комп и вместо 7ки на виртуалке нужно было поднять XP. Возможно, глупое занятие запускать на виртуалке и без того не очень быстрый эмулятор Андроида. Не знаю. Но вот сложилось такое ощущение, что процесс как-то хреново идёт. Возможно, более быстрый комп всё исправит.

Выводы:
1. Monodroid - это то, что и ожидалось.
2. Он пока сыроват.
3. Почему установленный hello world занимает 15 метров? Apk занимает 3 метра, а после установки - 15?

Wednesday, September 22, 2010

Monodroid preview

Вчера мне прислали приглашение поучаствовать в закрытом превью проекта Monodroid. Сегодня удалось потратить на это час времени. Проверил как работает их стандартный hello world. Работает. Очень даже. Грузится, конечно, значительно дольше, чем аналог на Java, но грузится и работает. Проверял на эмуляторе и на своём HTC Tattoo. Что сказать... впечатляет.

Вечером планирую потратить ещё пару часов - посмотреть как там обстоят дела с дотнетным фреймворком. Наверное попробую поднять дотнетный вебсервис, а для андроида реализовать клиента. Если будет работать, буду ещё сильнее впечатлён.

P.S. Небольшой апдейт. Обнаружил сейчас, что monodroid runtime занимает чуть больше 30 метров, а сама программка (hello world, одна кнопка с простым обработчиком), тут внимание, 15(!) метров :-) Неожиданно.

Sunday, September 19, 2010

CrystaX's Android NDK

Как известно, спустя некоторое время после выхода Android SDK, Google выпустил Android NDK. Это такой тулкит, позволяющий писать для андроида нативный код на C/C++. О UI речь конечно же не идёт, речь идёт о задачах, жадных до процессора. Так вот, при всей своей замечательности, у Android NDK есть ряд недостатков. Как минимум, это отсутствие поддержки RTTI и исключений. Нет исключений - нет STL. Нет STL - нет boost.

Есть такой замечательный проект по переделке Android NDK:
http://www.crystax.net/android/ndk-r4.php

Дмитрий сделал поддержку RTTI, исключений и стандартной библиотеки. Сегодня у меня наконец-то дошли руки пощупать это чудо. Оно действительно работает! Удалось даже частично поюзать boost (в маленьком объёме) - только shared_ptr, но оно работает и по-моему это очень круто.

В письменном виде сказал Дмитрию спасибо. Потому что Дмитрий реально крут и делает реально крутую вещь.

Friday, September 17, 2010

Под Андроид на Питоне

Нашёл интересный проект - Android Scripting. Поставили себе задачу - сделать скриптинг для Андроида. Доступны несколько скриптовых языков (среди них - Python). Также, как я понял, частично доступен API андроида (в плане работы с сенсорами, камерой и т.д.). Писать можно как на самом андроидном девайсе, так и на компе, а на девайсе только запускать. Вот мой хелло ворлд:

Пытаюсь представить как такое развлечение будет выглядеть на моём HTC Tattoo. По-моему это невозможно. Если на каком-нибудь таблете... всё равно кнопок типа page up и end там нет, а без них совсем не тру. А вот для быстрого прототипирования наверное использовать вполне можно: писать на компе, а запускать на девайсе.

Wednesday, September 15, 2010

Как-то.

В школе, наверное во втором классе, мы начали изучать "как пишутся программы". Однажды домой нам задали написать алгоритм чистки зубов. Я задание сделал, но получил тройку. Потому что у меня в алгоритме был такой кусок:
открыть рот,
закрыть рот,
отрыть рот,
вставить зубную счётку
(вообще там было штук 20 пунктов)

Только сейчас, спустя много лет, я понимаю весь маразм этой ситуации. Правильный алгоритм чистки зубов такой:
почистить зубы
Всё.

Ну, максимум такой:
подготовиться к чистке зубов,
чистить зубы,
вытереть кровь со стен убрать за собой.

Именно это - алгоритм. Вы спросите: "а что же такое [подготовиться к чистке зубов]"? "А это совершенно другая задача", - отвечу я. И буду прав. Потому что кто как привык, так и готовится. По-моему этот алгоритм достаточно абстрактен для того, чтобы подходить людям, которые либо не убирают за собой, либо чистят зубы без подготовки. Отличный такой generic алгоритм. Но есть большие сомнения, что за такой алгоритм я бы получил хорошую оценку.

Что удивительнее всего. Есть множество больших бородатых дядек, которые такой подход не осилили. Эти дядьки, видимо, готовятся к чистке зубов, потом проверяют, не вторник ли сегодня, и если вторник, проверяют, не пуст ли тюбик. У них, очевидно, не всегда получается почистить зубы. Есть даже такие, которые, чистку зубов перемешивают с закрытием хендлов.

И ведь работает. Как-то.

Tuesday, September 14, 2010

MPL

Открыл для себя сегодня boost MPL. От половины велосипедов теперь смело можно избавиться.

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

#include <boost/mpl/list.hpp>
#include <boost/mpl/contains.hpp>
#include <boost/utility/enable_if.hpp>

struct A {};
struct B {};
struct C {};

struct D {
typedef boost::mpl::list<A, B> good_types;

template<class T>
void func(
T const& x,
typename boost::enable_if<
typename boost::mpl::contains<good_types, T>::type
>::type* dummy = 0) {
}
};

int main() {
D d;
d.func(A());
d.func(B());
d.func(C()); // тут ошибка компиляции - можно только A и B

return 0;
}

Без буста, очевидно, строчек на 100 больше было бы.

Tuesday, August 31, 2010

SQL в C++

Недавно упомянул "реализацию" SQL в C++. Сегодня случайным образом наткнулся на Boost.RDB. Естественно, в настоящем boost её пока нет. Также, случайно наткнулся вот на такой список, первый раз его вижу. Удивлён.

Saturday, August 28, 2010

Wine

Сегодня от нечего делать решил посмотреть что же такое Wine. Приятно удивило то, что удалось поставить мой любимый старый WinAMP 2.78 и ACDSee 3.0. Т.е. вот прям поставились и работают в линуксе. Также решил попробовать FL Studio. На винде у меня стоит 8.0, она на Wine поставилась, но работать не захотела. Зато 7.0 отлично заработала. Ну как отлично... с тормозами конечно, но работает. Кроме этого прочитал, что Proteus 7.5 тоже должен работать в нужном мне объёме. (Update: Proteus 7.5 отлично работает)

А как же мой любимый FAR Manager? А вот и он:

Tuesday, August 24, 2010

Про Стандарт

Сегодня я написал глупое письмо Эндрю Кёнигу (Andrew Koenig) с вопросом: "где бы мне взять бумажную версию черновика Стандарта". На что он ответил, что не знает. Так и живём.

Ubuntu 10.04

Некоторое время назад я перешёл с Ubuntu 9.10 на Ubuntu 10.04. Зачем? Ну по большому счёту причина была всего одна: я переустанавливал систему и подумал - зачем мне качать старую, если есть новая. (да, я не из тех, кто умеет переставлять линукс с одного компа на другой копированием файлов и настройкой загрузчика).

Установка прошла без проблем, проблемы начались позже.

1. Почему-то отказался работать внешний монитор. Есть подозрение, что это моя личная вина, т.к. я за 3 года пользования этим буком так и не смог понять как работает кнопка переключения монитора: то ли она чисто программная, то ли есть какие-то аппаратные эффекты. Проблема решилась за час копания интернета.
2. Кнопки у окошек слева, а не справа. 10 минут копания в интернете.
3. Засыпание бука при закрытой крышке. 10 минут копания в интернете.

Между 9.10 и 10.04 особой разницы не увидел. Ubuntu нравится. Геморроя столько же, сколько в винде, при этом есть инструменты, которых нет в Windows.

Идею заниматься музыкой под Linux я так и забросил. Похоже, не созрел Linux ещё в этом плане. Т.е. я конечно верю, что это всё возможно, но не хочется тратить на всю эту хитрую настройку силы и время. Благодаря новому винту на 500 гигабайт, я могу себе позволить держать параллельно винду и линукс. Винду чисто для звука.

Saturday, August 21, 2010

DSL в C++

Меня в последнее время повсеместно приследует желание применять DSL. Везде. Началась эта болезнь с тех самых пор, как я решил разобрать реализацию Boost Spirit. На мой неокрепший юношеский ум этот код произвёл сильнейшее впечатление. Сегодня вот случайным образом набрёл на небольшой пост. Идея очень интересная и, что ещё интереснее, правильная. Чувак просто взял и по-тупому сделал очень красивое решение. Вдохновил его, конечно, LINQ, но это фигня. Интересно, что для красивой работы с LINQ в C# пришлось расширять синтаксис, а C++ как был, так и остался - достаточно десятка шаблонных классов.

Friday, August 20, 2010

Android 2.1 для HTC Tattoo

Около года назад в целях "поковырять" я приобрёл HTC Tattoo. Смартфон на базе Android. Штука со всех сторон крайне приятная. Не тормозит, приятно выглядит. Даже софт под неё приятно писать (написал целый 1 софт). Короче, 2 месяца поковырял и забросил.

Периодически я мониторил ситуацию по поводу обновлений. Очень хотелось посмотреть на Android 2.1, т.к. судя по общему настроению, улучшения там должны были быть. Все результаты мониторинга привели к моей полной уверенности, что версия 2.1 для HTC Tattoo будет.

Сегодня была очередная итерация мониторинга. Android 2.1 для HTC Tattoo не будет. Очень огорчило, т.к. получается, что отдал что-то типа 12тыр за совершенно бесполезную и, что важнее, бесперспективную вещь. На 1.6, очевидно, с каждым днём становится всё меньше и меньше нового софта, т.к. разработчикам уже просто смысла нет что-то писать под "старую" версию.

Отношение к HTC изменилось в худшую сторону.

Thursday, August 19, 2010

C++ IDE для Linux

Как известно, самая крутая IDE для C++ - это Visual Studio. Отчасти, потому что я к ней привык за 10 лет. Отчасти, потому что таких возможностей дебага больше нет нигде.

Я как-то однажды изучал уже какие бывают IDE для C++ под Linux.

Бывает KDevelop. Он... с первого раза не заработал. Я понимаю, что линукс, но когда пишешь hello world, больше всего хочется чтобы он просто заработал.

Бывает Eclipse. Он с первого раза заработал. Есть у него свои тупизмы типа несохранения файлов в тот момент, когда запускаешь билд проекта, но в целом - очень даже ничего. Ну тормозной конечно, чего уж там.

Бывает NetBeans. Эта штука никогда никакого негатива у меня не вызывала. Не бесит, не раздражает. Работает, тормозит меньше, чем Eclipse. Я от неё отказался. Потому что писать под андроид на Eclipse, а не под андроид на NetBeans, это глупо. Глупо, потому что лучше знать одну IDE хорошо, чем знать 2 хреново.

Вот сегодня меня опять достал Eclipse и я решил посмотреть, что же за фигня такая - CodeBlocks. Блин. Я смог сделать проект только с 5ой попытки. Не собрать. Просто сделать. Короче, сразу полетел в ведро.

Что ж за нафиг-то такой.

Wednesday, August 18, 2010

О шантаже

Уже около года у меня была навязчивая идея купить книгу Кормена и Ко "Алгоритмы: построение и анализ". Теоретически она должна в первом приближении перекрыть один из разделов моего Плана Саморазвития.

Однажды я видел её в книжном, но жаба задушила. Потом отложил её себе на Болеро. В результате, когда созрел, в книжный было идти лень, а на Болеро они кончились.

Поддавшись на постоянный позитив в сторону Books.Ru со стороны постоянного читателя этого блога, решил посмотреть, есть ли она у них. Она у них оказалась за 1599 р. Ну, теоретически, конечно, не очень много за такую толстую фундаментальную книжку. Сильно смутило, что на том же Озоне она стоила 1312 р. Предполагалось, что на Books.Ru должно быть дешевле.

Было принято решение написать Books.Ru письмо с просьбой пересмотреть цену. Отправил им ссылку на их цену и на цену Озона. Спустя несколько часов понизили до 1199 р. Ну т.е. на 400 р.

Как и обещал, заказ сделал не у Озона, а у них.

Спасибо, Books.Ru.
Большое вам уважение за адекватную реакцию.

Monday, August 16, 2010

Велосипедное

К нам на работу недавно взяли нового сотрудника. Он ездит на работу на велосипеде. По велосипеду сразу видно, что человек его использует. Боевой такой велосипед. Сначала я на этот велосипед смотрел и думал что с ним не так. Потом дошло - передняя покрышка одета наоборот. С задней всё в порядке. Сегодня обнаружил, что этот товарищ поменял заднее колесо вместе с покрышкой. Так вот задняя покрышка теперь тоже наоборот.

Хотя, конечно, есть ненулевая вероятность, что чувак на самом деле катает стрит и ему намного важнее ездить задом, чем передом. В этом случае всё становится на свои места.

Хотя, конечно, выглядит он не как стритер.

Monday, August 9, 2010

Boost

Я тут недавно осознал, что чтение документации по boost поднимает настроение. Нет, я серьёзно.

Tuesday, May 18, 2010

О велосипедах


struct X {};

struct A {
template<class T>
struct B;

template<>
struct B<X> {};
};

int main() {
typedef A::B<X> b_t;
b_t b;
return 0;
}

Вот по какой-то причине так нельзя.

template<class T1, class T2>
struct Helper;

template<class T>
struct Helper<T, T> {};

struct X {};

struct A {
template<class T>
struct B : public Helper<T, X> {};
};

int main() {
typedef A::B<X> b_t;
b_t b;
return 0;
}

А так велосипед. Есть вариант покороче?

Wednesday, March 31, 2010

C# to JS

Вчера обнаружил забавнейшую вещь:
http://projects.nikhilk.net/ScriptSharp

Цель проекта - трансляция кода C# в JS. Т.е. вот буквально ставите эту штуку, в студии появляется несколько новых типов проектов. Пишете в одном из них некий код, билдите и на выходе получаете .js (набор .js). Глубоко не копал, не могу точно сказать, насколько у этой штуки есть возможность транслировать BCL, но с core-language, как я понял, оно работает нормально.

Tuesday, February 23, 2010

24.

У меня сегодня деньрожденье. Мне подарили чудесную штуку, о которой я давно мечтал. EasyAVR6. С ней в комплекте идёт микроконтроллер ATMEGA16, который я раньше программировал только на симуляторе. Сегодня первый раз мигал лампочками на реальной железке. Сколько помню своих деньрождений, это первый подарок, который реально бестолковый и реально радует :-)

Sunday, January 10, 2010

Dean Vendetta


В выходные купили мне новую гитару, Dean Vendetta 1 F. Об этой гитаре я мечтал около двух лет, но подходящие обстоятельства сложились только сейчас. В магазине пощупал 4 гитары, из них однозначно была выбрана Vendetta. К гитаре ещё как-то сам по себе приобрёлся комбик Roland Cube 15x. Показалось, что вместе им хорошо.

Звук в Linux

Сегодня потратил очередные 3 часа на настройку звука в линукс. Пробовал разные настройки Jack, крутил все возможные микшеры и всё такое прочее. В результате звук заработал, но как-то неубедительно. Чувствуется, что звук приходит искаженный, слишком много низких. В результате попробовал записать в Ardour - пишется и играется, тормозов нет. Попробовал рил-тайм обработку в Creox, ну, вроде, тоже что-то работает и не очень сильно тормозит. Но всё как-то очень неубедительно. Настолько неубедительно, что вижу всего 2 варианта:
1. Попробовать Ubuntu Studio (уже скачал).
2. Поставить Windows в качестве второй системы.

Wednesday, January 6, 2010

Планы на 2010

Планы на 2010 год.

1. Изучить C++ и его идиомы, Boost и STL.
2. Изучить C++0x. Полностью прочитать новый стандарт 1 раз.
3. Сдать BB более чем на 4.5 :-)
4. Изучить основные паттерны проектирования.
5. Перечитать все книжки по проектированию.
6. Познакомиться с платформой Android, написать несколько hello world'ов, продолжить изучать Java до нынешнего уровня C#.
7. Улучшить английский.
8. Дописать свою реализацию языка программирования в виде подмножества C. Сделать из этого open source проект.
9. Продолжить изучение Python, начать применять его на практике.
10. Познакомиться с Django.
11. Разобраться со звуком в Linux. Настроить звук и подобрать софт для музыки.
12. Купить новую гитару и разобраться с техникой.
13. Начать кататься на велосипеде.
14. Ознакомиться с актуальным .NET, сдать экзамен и получить сертификат.
15. Вернуться к издевательствам над ATMEGA32.
16. Научиться искать интересные проекты.
17. Познакомиться с чем-больше-тем-лучше инструментов для разработки (и управления разработкой) ПО: библиотеки, source control, кодогенераторы.
18. Разобраться с многопоточностью.

Sunday, January 3, 2010

Android

Забавно, удалось поставить Android SDK и даже запустить тестовый проект.