пятница, августа 29, 2008

Стиль оформления C++ кода от Google

Я ненавижу можно сказать с моего программистского детства неряшливо оформленный код, в котором нет нормальных отступов, на одной строке куча операторов, нет единого стиля кода по всему проекту… ну в общем вы поняли. В своё время у меня много времени отнимало приведение в божеский вид работы безвестных индийских программистов. Так что, IMHO, существование в фирме, занимающейся выпуском ПО code style guide (которого ещё и придерживаются все разработчики)  оказывает значительное влияние на успех или провал всего проекта, ну как минимум существенно влияет на время разработки.


Одного существования в фирме этого документа, конечно, мало… В некоторых конторах style guide существует, но на него все по большому счёту забивают. Так что нужны регулярные тренинги, на которых о его существовании и содержании рассказывают сотрудникам.


Обнаружил благодаря хабрахабру code style guide от Google, и с интересом сейчас его читаю. Много для себя полезного нашёл.

понедельник, августа 18, 2008

Web 2.0 сервисы для совместной работы


Продолжаю исследовать западные web 2.0 сайты. В прошлых сериях - сервисы социальных новостей и топ 20 web 2.0 сайтов по траффику. На этот раз обзор популярных средств для групповой работы. Некоторые из этих сервисов ориентированы на бизнес-аудиторию, и не являются бесплатными.
  • PBWiki - предоставляет площадку для размещения собственного частного wiki-образного контента. Для образовательных учреждений - бесплатно, для коммерческого использования - бесплатно только для 3-х пользователей, за каждого следующего нужно платить от $4-х до $8 в месяц. За пользователей, не обладающих правами править статьи нужно платить только 10% от этой суммы. Отличается простотой в использовании. Видимо, некоторым фирмам дешевле платить им, чем разворачивать собственный интранет.
  • Wikia - бесплатная альтернатива. Каждый желающий может организовать здесь wiki проект. Это подходит в основном для некоммерческого использования, поскольку тут нет ограничения доступа случайных людей и есть реклама. Подходит для фанатов игр или сериалов, например смотрите вики по вселенной Звёздных войн, в которой в данный момент около 59 тыс. статей.
  • Chatzy - сервис для создания собственных приватных или публичных чатов. В отличии от всевозможных мессенджеров не требует установки ПО на компьютер. При создании чата рассылаются приглашения по потенциальным участникам е-майлу, также возможно разместить ссылку на чат к примеру на своём сайте.
  • Про Meebo я уже написал в прошлом посте - это сервис для тех, кто хочет воспользоваться ICQ, jabber, google-talk и т.д. с чужого компьютера или из-за блокирующего файервола.
  • Bubbl.us - сервис для совместного создания карт памяти AKA mind maps. Можно проводить мозговые штурмы в режиме онлайн.
  • Twiddla - графический чат. Пользователи могут совместно рисовать или чертить в браузере. Ещё одно из средств для мозгового штурма в режиме онлайн.
  • Google docsgoogle calendar - средства для личного и/или совместного создания документов и расписаний.

суббота, августа 16, 2008

Top 20 американских web 2.0 сервисов


Предыдущий пост был о западных web 2.0 сервисах, а именно о сайтах социальных новостей.
Недавно компания Hitwise провела исследование, в котором определила 20 самых популярных в США web 2.0 сервисов. Самыми популярными, что не удивительно, являются социальные сети, которые в данный момент мне не очень интересны - myspace, facebook, и т.п. Digg, к моему удивлению, сюда не попал.

1. MySpace — 44.14% market share, социальная сеть, чрезвычайно популярная в Америке, но русская версия пока не сумела победить наших одноклассников и в контакте.
2. eBay — 16.22% market share, он-лайн аукцион. Вещь, конечно, хорошая, но надо с paypal’ом помучаться.
3. Facebook — 13.03% market share, социальная сеть.
4. YouTube — 9.88% market share, хранилище видео-роликов обо всём на свете
5. Wikipedia — 4.76% market share, онлайн-энциклопедия, создаваемая пользователями
6. Craigslist — 3.14% market share, газета электронных объявлений, привязанных к конкретным городам. Для России есть доски объявлений только для Москвы и Петербурга.
7. Yahoo Answers — 1.41% market share, сервис вопросов и ответов.
8. myYearbook — 1.05% market share, социальная сеть американских тинейджеров
9. Tagged — 0.95% market share, ещё одна социальная сеть для школьников и студентов
10. Flickr — 0.86% market share, фотохостинг
11. Bebo — 0.71% market share, социальная сеть
12. Meebo — 0.59% market share, веб-ориентированный клиент для обмена мгновенными сообщениями, в частности, полезная вещь для тех у кого аська на работе заблокирована файерволом.
13. BlackPlanet.com — 0.52% market share, социальная сеть для американских негров
14. GaiaOnline.com — 0.45% market share, социальная сеть для анимешников
15. Blogger — 0.40% market share, блогохостинг от Google, на котором жил в частности мой блог до тех пор, пока не переехал сюда.
16. Adam4Adam — 0.35% market share, социальная сеть для американских гомосексуалистов
17. hi5 — 0.35% market share, ещё одна социальная сеть
18. WikiAnswers — 0.33% market share, сервис вопросов и ответов, построенных на технологии вики.
19. IMEEM — 0.31% market share, социальная сеть, специализирующаяся на мультимедиа-контенте, видео, музыке и т.п.
20. LiveJournal — 0.30% market share, ЖЖ - вряд ли кто-то не в курсе, что это такое.

В общем среди всего этого разнообразия меня заинтересовали сервисы вопросов и ответов, ну и meebo - иногда полезная вещь. Жалко, не знал об этом на предыдущей работе, сейчас это менее актуально. Wikipedia, Youtube и Flickr, само собой.

четверг, августа 14, 2008

Популярные западные web2.0ные проекты


Примерно полгода назад я написал 2 поста о неавтоматизированном data-mining (второй пост тут), личной системе нахождения, систематизации, обработки и использования данных из интернета. Но перед тем как информацию систематизировать, её надо найти. А для этого нужно представлять, как и где искать. В последние годы сервисы с создаваемым пользователями контентом (web 2.0 сервисы) становятся всё популярнее и полезнее в этом плане. В рунете их много, но рунет - это всего лишь маленькая часть всего интернета, основные события происходят всё же за его пределами.
Решил ознакомиться с ситуацией в англоязычном интернете, ну и по ходу дела пост или несколько постов написать по этому поводу. Многие жители рунета, даже знающие английский, не в курсе того, что там происходит. Краткий обзор наиболее  популярных не-рунетовских web2.0 сервисов:
  • Digg.com - сервис социальных новостей. Русские аналоги - news2.ru, в какой-то степени habrahabr.ru. Различие - в посещаемости (на digg’е зарегистрировано больше полумиллиона пользователей, а просто посещают более миллиона в день). Горячие новости с первой страницы мгновенно обрастают сотнями комментариев, благодаря которым можно по этой теме найти много дополнительной информации. Впрочем, в большом количестве пользователей кроме плюсов есть и минусы - каждый час там создают несколько десятков страниц, заполненных ссылками. Так что для эффективного использования этого сервиса необходимо настроить систему фильтров, чтобы видеть только новости на интересующую тебя тему. На хабрахабре я нашёл интересную статью со сравнением хабра с digg’ом.

  • Reddit.com - также сервис социальных новостей. Несколько менее популярный, чем digg, и опять же, из этого проистекают и его плюсы - новости дольше находятся на странице “новых новостей”. Кроме того, для того, чтобы уменьшить влияние внутрисайтовской мафии (которая очень сильна на digg’е, к примеру) в течение первого часа после опубликования новости reddit не показывает количество проголосовавших за или против, позволяя пользователям более объективно её оценить.

  • Slashdot.org- всё ещё работающий предок первых двух сервисов. Сайту уже более 10 лет, первая версия была создана ещё в 1997. По контенту он ближе к habrahabr.ru, то есть ориентирован прежде всего на IT-шную публику. Аудитория, согласно википедии - примерно 5,5 млн пользователей в месяц. Первоначально, аудитория состояла из линуксоидов и прочих опен-сорсников, но к настоящему моменту охват стал шире.



Продолжение следует…  

P.S.
Последние несколько недель в связи с международной обстановкой я пристрастился к чтению новостей на digg’e и reddit’е и с удивлением обнаружил, что судя по комментариям - это прямо таки либеральный оплот борьбы с американскими нео-консерваторами и их политикой.

суббота, августа 09, 2008

Переезжаю на собственный домен

Блог в процессе переезда на wordpress'овский движок.
Отныне он будет находится по адресу computerthings.ru
Пока переходный период возможны всякие глюки.

четверг, августа 07, 2008

Популярно о подкастах

Я не настоящий гик, поскольку информация о многих популярных сервисах, программах, технологиях доходила до меня с большой задержкой. Но почему я злой был - потому что у меня велосипеда не было. Но постепенно я начинаю меняться, особенно с того момента, как интернет у меня дома стал более широким (всё равно, правда, не настоящий анлим, после 2,5 Гб в месяц снижают скорость со 128 до 32 Кб, но хоть что-то). Можно пользоваться в ограниченных количествах torrent'ами, видео смотреть на youtube и т.п. вещи. Нижний всё же провинция в этом плане до сих пор.

podcasts_icon Вот. И по этому поводу у меня наконец-то дошли руки до такого явления, как подкасты. Поскольку гиков даже в развитых странах всего 7%, то я думаю, что ничего страшного, если я про это напишу, всё равно не все знают о таком явлении, вдруг для кого-то открытием станет :)

Подкасты - это аудио-файлы (обычно mp3) распространяемые с помощью подписки на RSS или Atom поток, предназначенные для прослушивания на mp3-плеерах и компьютерах. Обычно похожи на радио передачи определённой тематики, которая зависит от авторов подкаста. Слово "подкаст" происходит от комбинации слов iPod и broadcasting, соответственно, в своё время популярность это явление приобрело благодаря Apple'овским iPod'ам. В виду дешевизны технологии заниматься записью подкастов вполне можно в домашних условиях, достаточно приобрести хороший микрофон и поставить несколько бесплатных программ. В отличие от интернет-радиостанций, вещающих в прямом эфире, тут все в записи, со всеми плюсами и минусами этого.

Для того, чтобы следить за подкастом и выкачивать его себе на компьютер используются различные программы: классикой жанра является iTunes, также есть альтернативы - JuiceDoppler.

Для России и ближнего зарубежья самым популярным порталом для подкастов является rpod.ru, хотя по интерфейсу мне больше нравится podfm.ru. На подобных порталах подкастеры выкладывают свои творения, обычно под определённой рубрикой - IT и компьютеры, Авто, Аудиокниги, Бизнес, Мужчина и Женщина, Музыка, Новости, Спорт, Юмор и т.д. Помимо чисто любительских проектов (хотя и среди них встречаются шедевры) в последнее время этим занялись многие издательства, журналы и т.п. публика. Те, кто подкастингом занимается серьёзно, обычно со временем переходят на свои платные площадки, насколько я знаю в wordpress'е есть для этого плагин.

Несколько примеров, что тут можно найти:
Кстати, по другую сторону океана всё, конечно, намного более развито. Одна из лежащих на поверхности идей - использовать их подкасты для изучения языка (например, рекомендуюwww.businessenglishpod.com). Популярные англоязычные подкаст-порталы:
Что еще почитать на эту тему:

среда, августа 06, 2008

Процесс разработки программного обеспечения

На моей предыдущей работе был очень детализированный процесс внесения изменений в код, никто не мог просто исправить свой или чужой баг и внести изменения в код. Нужно было следовать определённому процессу, а именно создать в специальной базе данных CR - change request, в котором описать проблему, методы воспроизведения бага, версию ПО, на котором баг воспроизводится и т.п. Затем, после того, как этот CR просмотрит специально обученный человек, который принимает решение, стоит ли овчинка выделки, надо эту ошибку исправлять или нет, а если надо, то с какой срочностью, CR назначался на определённого человека, который уже должен исправить эту ошибку. Этот человек может быть, а может и не быть тот, кто создал описание этого бага.

Далее, если эту CR назначили на тебя, ты исправляешь баг, затем, когда ты уверен, что всё сделал, перед тем как вносить эти изменения в общее хранилище кода (в систему контроля версий ) назначаетсяформальная инспекция, на которую ты обязан позвать нескольких человек, как правило 2-3-х, обычно своих ближайших коллег, чтобы они просмотрели твои изменения с помощью Diff-tool'а (конкретно там использовался Araxis Merge, хотя вообще таких программ много, в том числе неплохой бесплатныйWinMerge, которым я пользуюсь в настоящий момент). Это вообще-то весьма полезная практика, обычно другие люди видят в твоём коде то, на что у тебя уже замылен взгляд. По результатам инспекции в описание CR вносятся все найденные ошибки, недочёты, проблемы и т.д, найденные в её ходе, причём если их 0, то есть ничего не найдено, то считается, что инспекция проведена некачественно, так что для всех лучше, если хоть что-нибудь найдут и опишут. Дальше разработчик проводит работу над ошибками, правит свои изменения, и процесс повторяется, в случае серьёзных изменений назначает новую инспекцию.

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

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

вторник, августа 05, 2008

Хороший ресурс для программистов с бесплатными книгами

Наткнулся недавно на сайт с бесплатными книгами по программированию (на английском). Точнее, не с самими книгами, а с ссылками, где их можно взять. Кроме книг там можно найти ещё много всего вкусного, например, мне понравились шпаргалки по Perl'у и по Ruby:
  • Ruby QuickRef
  • Perl QuickRef (тоже самое в PDF)  - эту книжку из 31 страницы продают в магазинах, но как то жалко покупать, поскольку информации мало. Но для того, чтобы освежить память или как справочник иногда полезно. На этом же сайте есть 1-2-х страничные шпаргалки по регулярным выражениям, можно распечатать и повесить перед носом.
На сайте есть ссылки на книги по Ajax, по C#, по Java (в том числе по J2EE), по PHP, поRuby, по Perl'у, по шаблонам проектирования (design patterns) - ну там примеры только по J2EE отчего-то, по шаблонам я другой сайт нашёл, http://sourcemaking.com/, он куда круче. Также есть книги по алгоритмам и структурам данных и по объектно-ориентированному программированию.

Желающим учить PHP и обладающим знанием английского и толстым интернетом можно посоветовать онлайн видео с youtube.com PHP Tutorials. Я, правда не смотрел, судя по всему это коллекция мини уроков минут по 5 каждый с обзором основных конструкций языка. Есть люди, органически не желающие учиться, читая книги, судя по всему для них это выход :) Я думаю, если поискать на youtube можно и по другим языкам что-то похожее найти.

А кроме youtube есть и более специализированные ресурсы онлайн-видео, например http://skillopedia.ru/, на который выкладывают видео уроки по разным областям, в том числе по IT. Например, я нашёл там уроки по C++, PHP и MySQL.