Наткнулся на статью Джона Рида, содержащую разгромную критику книг Кийосаки (реферат статьи на русском). Для тех кто не в курсе, Роберт Кийосаки - один из наиболее популярных авторов книг по бизнесу. Его серия книг "Богатый Папа, Бедный Папа" на настоящий момент состоит из 18 книг. Роберт Кийосаки основал международную образовательную компанию "Rich Dad`s Organization", которая занимается обущением бизнесу и инвестированию. В его игру "Cashflow" с увлечением играет масса народа.
Сам я за последние полгода с большим интересом прочитал три первые книги из серии "богатый папа". Идеи о четком разделении пассивом и активов, о "бизнесе для меня" и "бизнесе для моих денег", о квадрантах (служащие, предприниматели, бизнесмены, инвесторы) и т.п. - заинтересовали меня. Сам я никогда не думал в таком ключе и не расставлял акценты таким образом. И вот теперь - критика. Причем серьезная.. стоит ли читать книжки Кийосаки?
Необходимо отметить один важный момент. Все книги Кийосаки, которые я прочитал, не содержат какой-либо конкретики. Они содержат, скорее, общие рассуждения о предмете. Излагают общую философию, без конкретных практических рекомендаций. Подобно книгам Юрия Мороза. Увлекательно, интересно и все чертовски правильно написано, но.. что конкретно делать то? :)
На мой взгляд, абсолютное большинство книг по бизнесу страдают одним общим недостатком. Они описывают только вершину айсберга, но не дают фундаментальных знаний. Поясню чуть подробнее.
Когда я учился в университете (физфак), мы активно изучали высшую математику, общую, а затем и теоретическую физику. Я на всю жизнь запомнил то непередаваемое ощущение красоты науки, которое мне довелось несколько раз ощутить. Изучаешь, изучаешь разные предметы, формулы, теории, задачи ... потом вдруг раз - и все разрозненные куски складываются в единую четкую картину. Становится понятно - что, почему и откуда. Сложные, мудреные формулы оказываются вовсе не сложными - вывести их пару пустяков. Теории вдруг становятся логичными. Гипотезы - понятными. Все стало на свои места. Все вдруг стало очень просто. И очень красиво. Такие ощущения возникали у меня, помню, после изучения классической механики, статфизики, методов матфизики.. Правда, после каждого курса следовал следующий.. и оказывалось, что все не так просто, что красивые теории оказались недостаточно общими, поэтому физики и математики двинулись дальше и напридумывали еще кучу других теорий. Которые, кстати, если в них разобраться, не менее красивы :)
Тот, кто хорошо изучил механику и сумел ухватить красоту этой науки, сможет изложить ее "на пальцах". И рассказать о ней так, что другим эта наука покажется простой, элегантной и довольно простой. Но если после такого рассказа вы возьметесь решать реальную задачку по механике, то она окажется вам не по зубам. Если вам в увлекательной форме рассказали о механике, то у вас, скорее всего, не хватит знаний даже для решения простой практической задачи. Вы увидели вершину айсберга, но тело его от вас скрыто. А на практике вершиной не обойтись.. нужны фундаментальные знания.
Вот с книжками по бизнесу та же ситуация. Читаешь - все очень интересно. Но это - верхушка. А фундаментальных знаний вам эти книги не дают. Отмазка стандартная - думайте сами. Отсюда парадокс. Масса людей читает подобные книжки, но не может их применить на практике. Другая масса людей никаких книжек не читает, но успешно действую на практике.. просто путем проб и ошибок. Яркий пример - Ричард Брэнсон. Но он - гений, конечно же.
Возвращаясь к Кийосаки. Книжки, имхо, читать стоит. Даже просто ради того, чтобы немножко въехать в тему пассивов, активов и инвестирования. И начать искать более серьезные источники информации и точки приложения своих сил.
Не берусь сказать, насколько корректна критика Рида. Скорее всего, он несколько перегибает палку. Решайте сами. Но лично меня очень особенно огорчили два момента: основной источник дохода Кийосаки, похоже, его книги, а не инвестирование в недвижимость; "богатый папа" - это мифический персонаж. Все это разом переносит книги Кийосаки из "non-fiction" в "fiction". А фикшин есть фикшин.
P.s. John T. Reed громит не только Кийосаки. Досталось и многим другим гуру: Dolf DeRoos, Carleton Sheets, Donald Trump, Russ Whitney. Лишь сам Рид весь в белом:) И предлагает для обучения процессу инвестирования в недвижимость несколько собственных книжек. Надо будет почитать. Кстати, материалы, размещенные на сайте, весьма интересны.
UpdateБолее серьезный источник информации: цикл статей Сергея Спирина Введение в инвестирование.
суббота, 20 июня 2009 г.
четверг, 11 июня 2009 г.
Opera Links. Синхронизация закладок браузера между компьютерами.
Я регулярно работаю на трех разных компьютерах - домашний, рабочий и ноутбук. На каждом из них установлено по браузеру. Я предпочитаю работать в браузере Opera, остальные браузеры используются лишь для тестов. Так что получается, что работаю я в трех разных экземплярах оперы.
Естественно, в каждой опере у меня отдельный набор закладок. И естественно, меня давно мучает проблема, как бы эти закладки между собой синхронизировать. Недавно дошли руки, и я с этой проблемой разобрался. Решение оказалось на удивление простым - Opera Links. Возможность автоматической синхронизации закладок между компьютерами встроена в Opera.
Выбираем пункт меню "File\Synchronize Opera". Щелкаем кнопку "Sign up". Указываем имя пользователя, пароль и email. Опера создаст вам личный профиль на сайте opera.com. Профиль нужно активировать - ссылку для активации присылают на email в течении нескольких секунд после регистрации. Как только профиль активирован, вводим выбранные имя пользователя и пароль в окне "Opera Links", щелкаем "Opera Link Options", выбираем, какие элементы нужно синхронизировать между компьютерами (закладки, Speed Dial, заметки и т.п.), даем команду "Log in".

Все, синхронизация запущена. Теперь, в течении короткого времени, Opera скопирует все закладки с вашего компьютера в профиль на сайте. В дальнейшем, список закладок на вашем компьютере и список закладок в профиле будут синхронизироваться автоматически. Добавили новую закладку в браузер, Opera тут же скопировала ее в ваш профиль. Позже, закладка автоматически появится в списках закладок оперы на других ваших компьютерах. Только надо не забыть на этих компьютерах запустить синхронизацию в Opera.
Преимущества налицо. Во-первых, автоматическая синхронизация списков закладок между разными компьютерами. Очень удобно. Во-вторых, список закладок теперь можно просматривать online. Причем не только из оперы, но и из любого другого браузера. Достаточно зайти на сайт http://link.opera.com/ и ввести ваше имя пользователя и пароль. В-третьих, автоматически решается проблема резервного копирования списка закладок. В прошлом, я пару раз терял все свои нажитые непосильным трудом закладки - было очень обидно.
Конечно, закладки можно хранить на сервисах типа бобрдобр и delicious.com. Но это - немножко не то. Возможность пометить ссылку тегами хороша - другим пользователям будет проще эту ссылку найти. А самому мне будет гораздо быстрее и проще найти нужную ссылку прямо в браузере, через фильтр в списке закладок. Уж больно он хорошо сделан!
p.s. А профиль на delicious.com я все-таки завел. Уж больно удобен этот сервис для поиска информации. Надо с ним поработать..
Естественно, в каждой опере у меня отдельный набор закладок. И естественно, меня давно мучает проблема, как бы эти закладки между собой синхронизировать. Недавно дошли руки, и я с этой проблемой разобрался. Решение оказалось на удивление простым - Opera Links. Возможность автоматической синхронизации закладок между компьютерами встроена в Opera.
Выбираем пункт меню "File\Synchronize Opera". Щелкаем кнопку "Sign up". Указываем имя пользователя, пароль и email. Опера создаст вам личный профиль на сайте opera.com. Профиль нужно активировать - ссылку для активации присылают на email в течении нескольких секунд после регистрации. Как только профиль активирован, вводим выбранные имя пользователя и пароль в окне "Opera Links", щелкаем "Opera Link Options", выбираем, какие элементы нужно синхронизировать между компьютерами (закладки, Speed Dial, заметки и т.п.), даем команду "Log in".

Все, синхронизация запущена. Теперь, в течении короткого времени, Opera скопирует все закладки с вашего компьютера в профиль на сайте. В дальнейшем, список закладок на вашем компьютере и список закладок в профиле будут синхронизироваться автоматически. Добавили новую закладку в браузер, Opera тут же скопировала ее в ваш профиль. Позже, закладка автоматически появится в списках закладок оперы на других ваших компьютерах. Только надо не забыть на этих компьютерах запустить синхронизацию в Opera.
Преимущества налицо. Во-первых, автоматическая синхронизация списков закладок между разными компьютерами. Очень удобно. Во-вторых, список закладок теперь можно просматривать online. Причем не только из оперы, но и из любого другого браузера. Достаточно зайти на сайт http://link.opera.com/ и ввести ваше имя пользователя и пароль. В-третьих, автоматически решается проблема резервного копирования списка закладок. В прошлом, я пару раз терял все свои нажитые непосильным трудом закладки - было очень обидно.
Конечно, закладки можно хранить на сервисах типа бобрдобр и delicious.com. Но это - немножко не то. Возможность пометить ссылку тегами хороша - другим пользователям будет проще эту ссылку найти. А самому мне будет гораздо быстрее и проще найти нужную ссылку прямо в браузере, через фильтр в списке закладок. Уж больно он хорошо сделан!
p.s. А профиль на delicious.com я все-таки завел. Уж больно удобен этот сервис для поиска информации. Надо с ним поработать..
суббота, 6 июня 2009 г.
среда, 20 мая 2009 г.
Работа с Excel из C#.
Столкнулся с необходимостью поработать с файлами Excel из C#. Задачи простые - считать данные из книги Excel, создать новую книгу Excel, внести в нее данные. Предполагается, что Excel на компьютере имеется, но какой версии, не известно. Файлы по размерам маленькие, скорость работы не критична.
Существует несколько вариантов работы с Excel из C#: автоматизация Excel, подключение через OleDB/ODBC, дополнительные библиотеки (Aspose Excel), работа через XML, через Open XML и т.п.
Наиболее простой вариант - воспользоваться автоматизацией Excel. Да, скорость работы - не блеск. Зато удобно использовать, код пишется быстро, объемы кода не велики. Из .NET автоматизация подключается парой кликов мыши - добавил в References сборку Microsoft.Office.Interop.Excel - и работай с привычными com-объектами Application,Workbook, Worksheet и т.п.
Проблема одна - сборки "Microsoft.Office.Interop.Excel" для каждой версии Excel разные. У меня установлен office 2003 и, соответственно, interop-сборка версии 11. А что делать, если мне нужно разработать приложение, которое может работать с Excel 97? Или с любыми версиями Excel? Для того, чтобы считать или записать пару значений в ячейки листа Excel сложного api не требуется - любой Excel сгодится. А мне приходится привязываться к конкретной версии.
Можно воспользоваться поздним связыванием. Но если его использовать "в лоб", то ни о никаком удобстве работы речи уже не идет - код станет сложным, а вызовы методов - косвенными, нетипизированными. Ошибок будет - вагон.
Выход нашелся. На СodeProject обнаружил замечательную статью "SafeCOMWrapper - Managed Disposable Strongly Typed safe wrapper to late bound COM". В ней изложена элегантная методика использования позднего связывания, устраняющая все проблемы: связывание становится поздним (привязки к конкретной версии Excel нет), для объектов автоматизации автоматически реализуется шаблон IDisposable (отработанные объекты уничтожаются автоматически), все вызовы методов явные.
Идея реализации, вкратце, следующая. Для каждого COM-объекта автоматизации вы прописываете отдельный интерфейс. В интерфейс включаете все методы и свойства, которые вам необходимо использовать у этого COM-объекта. Обратите внимание - только те, которые необходимо использовать, а вовсе не все, реализуемые COM-объектом.
Каждый COM-объект автоматизации "заворачивается" в класс COMWrapper, унаследованный от RealProxy. RealProxy - это стандартный класс, позволяющий организовать перехват вызовов методов. При создании COM-объекта вы создаете экземпляр COMWrapper и указываете требуемый вам интерфейс. Среда динамически генерирует прокси-объект, реализующий этот интерфейс. С этим прокси-объектом вы в дальнейшем и работаете как с объектом автоматизации. Вызов любого метода прокси-объетка перехватывается и транслируется в вызов метода Invoke класса RealProxy, перекрытый в классе COMWrapper. Здесь его можно обработать как душе угодно. В реализации по умолчанию, вызовы свойств транслируются в вызовы соответствующих методов get_ и set_, создаваемых .NET, возвращаемые объекты автоматизации автоматически заворачиваются в COMWrapper и т.п.
В оригинально статье приведен пример использования данной методики для Microsoft.Outlook. Я, на базе приведенных исходных кодов, адаптировал методику для работы с Microsoft.Excel. Естественно, реализовав интерфейсы только для тех объектов автоматизации, которые потребовались мне для работы. Дополнить интерфейсы недостающими методами или добавить интерфейсы для других объектов автоматизации не составляет труда. Достаточно посмотреть через Object Browser метаданные сборки "Microsoft.Office.Interop.Excel" и скопировать оттуда необходимые объявления методов и интерфейсов (с минимальной адаптацией).
Пример кода для работы с Excel:здесь.
Просто надо быть внимательнее.
Существует несколько вариантов работы с Excel из C#: автоматизация Excel, подключение через OleDB/ODBC, дополнительные библиотеки (Aspose Excel), работа через XML, через Open XML и т.п.
Наиболее простой вариант - воспользоваться автоматизацией Excel. Да, скорость работы - не блеск. Зато удобно использовать, код пишется быстро, объемы кода не велики. Из .NET автоматизация подключается парой кликов мыши - добавил в References сборку Microsoft.Office.Interop.Excel - и работай с привычными com-объектами Application,Workbook, Worksheet и т.п.
Проблема одна - сборки "Microsoft.Office.Interop.Excel" для каждой версии Excel разные. У меня установлен office 2003 и, соответственно, interop-сборка версии 11. А что делать, если мне нужно разработать приложение, которое может работать с Excel 97? Или с любыми версиями Excel? Для того, чтобы считать или записать пару значений в ячейки листа Excel сложного api не требуется - любой Excel сгодится. А мне приходится привязываться к конкретной версии.
Можно воспользоваться поздним связыванием. Но если его использовать "в лоб", то ни о никаком удобстве работы речи уже не идет - код станет сложным, а вызовы методов - косвенными, нетипизированными. Ошибок будет - вагон.
Выход нашелся. На СodeProject обнаружил замечательную статью "SafeCOMWrapper - Managed Disposable Strongly Typed safe wrapper to late bound COM". В ней изложена элегантная методика использования позднего связывания, устраняющая все проблемы: связывание становится поздним (привязки к конкретной версии Excel нет), для объектов автоматизации автоматически реализуется шаблон IDisposable (отработанные объекты уничтожаются автоматически), все вызовы методов явные.
Идея реализации, вкратце, следующая. Для каждого COM-объекта автоматизации вы прописываете отдельный интерфейс. В интерфейс включаете все методы и свойства, которые вам необходимо использовать у этого COM-объекта. Обратите внимание - только те, которые необходимо использовать, а вовсе не все, реализуемые COM-объектом.
Каждый COM-объект автоматизации "заворачивается" в класс COMWrapper, унаследованный от RealProxy. RealProxy - это стандартный класс, позволяющий организовать перехват вызовов методов. При создании COM-объекта вы создаете экземпляр COMWrapper и указываете требуемый вам интерфейс. Среда динамически генерирует прокси-объект, реализующий этот интерфейс. С этим прокси-объектом вы в дальнейшем и работаете как с объектом автоматизации. Вызов любого метода прокси-объетка перехватывается и транслируется в вызов метода Invoke класса RealProxy, перекрытый в классе COMWrapper. Здесь его можно обработать как душе угодно. В реализации по умолчанию, вызовы свойств транслируются в вызовы соответствующих методов get_ и set_, создаваемых .NET, возвращаемые объекты автоматизации автоматически заворачиваются в COMWrapper и т.п.
В оригинально статье приведен пример использования данной методики для Microsoft.Outlook. Я, на базе приведенных исходных кодов, адаптировал методику для работы с Microsoft.Excel. Естественно, реализовав интерфейсы только для тех объектов автоматизации, которые потребовались мне для работы. Дополнить интерфейсы недостающими методами или добавить интерфейсы для других объектов автоматизации не составляет труда. Достаточно посмотреть через Object Browser метаданные сборки "Microsoft.Office.Interop.Excel" и скопировать оттуда необходимые объявления методов и интерфейсов (с минимальной адаптацией).
Пример кода для работы с Excel:
using (Application app = ExcelApplication.Create()) {
String s = app.Version;
app.Visible = true; // make excel visible
using (Workbook wb = app.Workbooks.Add(Type.Missing)) {
wb.Title = "new workbook";
using (Worksheets worksheets = wb.Sheets) {
using (Worksheet ws = worksheets[1]) {
//try to assign some values to some cells
using (Range cells = ws.Cells) {
for (int i = 1; i < 10; ++i) {
using (Range r = cells[i, i]) {
r.Value = i * i;
}
}
}
}
}
wb.Saved = true;
wb.Close();
}
app.Quit();
}
Оригинальные исходные коды лежат на codeproject вместе со статьей. Исходные коды, адаптированные для Microsoft Excel, можно взять - Download source codes of Managed Excel project
- View source codes of Managed Excel project
- Short description in English
using (Workbook wb = app.Workbooks.Add(Type.Missing)) {
using (Worksheet ws = wb.Sheets[1])
/*Здесь потерян Dispose у объекта Worksheets, который создается при
вызове wb.Sheets*/
{ .... }}
вместо
using (Workbook wb = app.Workbooks.Add(Type.Missing)) {
using (Worksheets worksheets = wb.Sheets) {
using (Worksheet ws = worksheets[1]) {
.... }}
Просто надо быть внимательнее.
понедельник, 4 мая 2009 г.
Ссылки: доклад Авантюриста, переписка Стругацкого с Ходорковским
Стенограмма доклада Авантюриста о глобальном экономическом кризисе на "Большом кофе-брейке для бизнеса", в г. Томске, 27 марта 2009 года. Вот здесь обработанные выдержки из доклада - уже более официальный источник. P.s.Похоже расшифровка выступления авантюриста изначально взята отсюда.
Во что вкладывать деньги? В профессию и в детей...
Переписка Бориса Стругацкого и Михаила Ходорковского в Новой газете:
письмо 1,
письмо 2,
письмо 3.
Во что вкладывать деньги? В профессию и в детей...
Переписка Бориса Стругацкого и Михаила Ходорковского в Новой газете:
письмо 1,
письмо 2,
письмо 3.
Подписаться на:
Сообщения (Atom)