<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:ifelser</id>
  <title>ifelser</title>
  <subtitle>ifelser</subtitle>
  <author>
    <name>ifelser</name>
  </author>
  <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom"/>
  <updated>2009-10-19T20:40:33Z</updated>
  <lj:journal userid="17488854" username="ifelser" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://ifelser.livejournal.com/data/atom" title="ifelser"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:6387</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/6387.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=6387"/>
    <title>Модельки в переходе</title>
    <published>2009-10-19T20:40:33Z</published>
    <updated>2009-10-19T20:40:33Z</updated>
    <content type="html">&lt;lj-embed id="6" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:5974</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/5974.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=5974"/>
    <title>Автоэкзотика 2009</title>
    <published>2009-07-11T21:45:13Z</published>
    <updated>2009-07-11T21:45:13Z</updated>
    <content type="html">Сходил, посмотрел. Вердикт - если вы не автолюбитель, то делать там нечего. Машины стоят на траве, дороги подчас в громадных лужах (а это был солнечный день, в дождик там вообще делать нечего), основная масса машин - не интересны, всякие вазы, москвичи, волги, запоры - ну чего на них смотреть? феррарей, ламборгини, бентлей и тд (пагани, бугатти) не было. В воздухе подчас попахивает навозцем, чтобы чтото купить (из еды) надо очередь отстоять нехилую. Вот ролик, в котором собрано лучшее что было:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;lj-embed id="5" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:5466</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/5466.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=5466"/>
    <title>540 kick</title>
    <published>2009-06-30T17:21:44Z</published>
    <updated>2009-06-30T17:21:44Z</updated>
    <content type="html">&lt;lj-embed id="4" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:5124</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/5124.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=5124"/>
    <title>Ржал по страшному</title>
    <published>2009-06-29T19:38:26Z</published>
    <updated>2009-06-29T21:27:55Z</updated>
    <content type="html">&lt;lj-embed id="2" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;lj-embed id="3" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:5092</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/5092.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=5092"/>
    <title>Работа со сканером под C#</title>
    <published>2009-06-28T18:41:26Z</published>
    <updated>2009-06-28T18:43:47Z</updated>
    <category term="Ц"/>
    <content type="html">Вопщем надо было поработать со сканером в с# - ну там получить изображение прежде всего. Вникание в тему дало такие аксиомы - есть два типа драйверов под сканеры - WIA и TWAIN.  WIA - это виндовоская приблуда, работает через COM, соответственно в шарпе надо просто экспортнуть из интерфейса и вперед. Почитать можно в MSDN про сие дело. Но промышленный стандарт это именно TWAIN (переводится как &amp;quot;технология без интересного имени&amp;quot;) и так совпало что сканер с которым мне надо было наладить связь не поддерживал WIA, пришлось заморочиться с TWAIN, хотя WIA выглядел проще (надо заметить что видимо любой сканер поддерживает TWAIN, а вот виа - не любой). TWAIN реализуется в виде библиотеки twain_32.dll, есть документация на сотни страниц, так что если вам делать нечего можно ее почитать. Я благо наткнулся на статейку на codeproject где вобщем то есть исходники для работы с сим чудом (линк - &lt;a href="http://www.codeproject.com/KB/dotnet/twaindotnet.aspx"&gt;http://www.codeproject.com/KB/dotnet/twaindotnet.aspx&lt;/a&gt;). Основная идея - экспорт функций из dll и дальше работа с ними. По самим функциям TWAIN могу вынести резюме - есть одна громадная функция которая путем комбинации параметров выполняет все что надо.&lt;br /&gt;Успехов!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:4693</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/4693.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=4693"/>
    <title>Маховое сальто</title>
    <published>2009-06-27T18:54:37Z</published>
    <updated>2009-06-27T19:07:32Z</updated>
    <content type="html">&lt;lj-embed id="1" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:4517</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/4517.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=4517"/>
    <title>Работа с Excel в VisualStudio c++</title>
    <published>2009-06-18T19:27:49Z</published>
    <updated>2009-07-02T20:09:44Z</updated>
    <content type="html">В принципе кто ищет тот обрящет, но так сразу у меня не получилось найти как работать, хотя формально все просто - импортируешь из excel.exe интерфейсы, а дальше пытаешься наощупь понять какие методы нужны. Но на стадии импорта уже столкнешься с проблемой что вылезут неодназначности и там нужно будет проделать хитрость - подменить названия некоторых импортируемых методов чтобы не было конфликтов.&lt;br /&gt;&lt;br /&gt;Вот код классца который помог легко решать мои задачи, а именно обеспечил простой доступ к содержимому ячеек первой страницы (необходимости читать все не было):&lt;br /&gt;&lt;br /&gt;WorkWithExcel.H&lt;br /&gt;&lt;br /&gt;#ifndef _WORKWITHEXCEL_H&lt;br /&gt;#define _WORKWITHEXCEL_H&lt;br /&gt;&lt;br /&gt;#pragma once&lt;br /&gt;&lt;br /&gt;#include &lt;string&gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;//вспомогательные интерфейсы, они видимо нужны&lt;br /&gt;#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL"&lt;br /&gt;&lt;br /&gt;#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB"&lt;br /&gt;&lt;br /&gt;//импорт интерфейсов екселя с подменой названий методов&lt;br /&gt;#import "C:\\Program Files\\Microsoft Office\\Office12\\excel.exe" \&lt;br /&gt;		rename( "DialogBox", "ExcelDialogBox" ) \&lt;br /&gt;    rename( "RGB", "ExcelRGB" ) \&lt;br /&gt;    rename( "CopyFile", "ExcelCopyFile" ) \&lt;br /&gt;    rename( "ReplaceText", "ExcelReplaceText" ) \&lt;br /&gt;		rename( "Rectangle", "ExcelRectangle" ) \&lt;br /&gt;		rename( "Arc", "ExcelArc" ) \&lt;br /&gt;		rename( "Picture", "ExcelPicture" ) \&lt;br /&gt;		rename( "Font", "ExcelFont" ) &lt;br /&gt;&lt;br /&gt;//---------------------------------------------&lt;br /&gt;class CWorkWithExcel&lt;br /&gt;{&lt;br /&gt;	Excel::_ApplicationPtr m_pApplication;;&lt;br /&gt;	Excel::_WorkbookPtr m_pBook;&lt;br /&gt;	//текущая страница с которой читаются значения&lt;br /&gt;	Excel::_WorksheetPtr m_pActiveSheet;&lt;br /&gt;public:&lt;br /&gt;	CWorkWithExcel(wstring file);&lt;br /&gt;	~CWorkWithExcel();&lt;br /&gt;&lt;br /&gt;	int m_Error;&lt;br /&gt;&lt;br /&gt;	double GetDoubleVal(int row, int col);&lt;br /&gt;	_variant_t GetVal(int row, int col);&lt;br /&gt;};&lt;br /&gt;//---------------------------------------------&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;WorkWithExcel.cpp&lt;br /&gt;&lt;br /&gt;#include "windows.h"&lt;br /&gt;#include "atlbase.h"&lt;br /&gt;#include "atlcom.h"&lt;br /&gt;&lt;br /&gt;#include "WorkWithExcel.h"&lt;br /&gt;&lt;br /&gt;//не используется в .h ибо идет перекрытие методов&lt;br /&gt;using namespace Excel;&lt;br /&gt;//---------------------------------------------&lt;br /&gt;CWorkWithExcel::CWorkWithExcel(wstring file)&lt;br /&gt;{&lt;br /&gt;	m_pBook = 0;&lt;br /&gt;	m_pActiveSheet = 0;&lt;br /&gt;	m_Error = 0;&lt;br /&gt;&lt;br /&gt;	HRESULT hr = m_pApplication.CreateInstance( _T("Excel.Application"));&lt;br /&gt;&lt;br /&gt;	if (FAILED(hr))&lt;br /&gt;		return;&lt;br /&gt;&lt;br /&gt;//тут try ибо в случае если файл не находится, то вываливается ексепшн, а не //возвращается код ошибки, впрочем слышал что можно импортнуть так, чтобы //возвращался код ошибки&lt;br /&gt;&lt;br /&gt;	try&lt;br /&gt;	{&lt;br /&gt;		m_pBook = m_pApplication-&amp;gt;Workbooks-&amp;gt;Open(_bstr_t(file.c_str()));&lt;br /&gt;	}&lt;br /&gt;	catch(...)&lt;br /&gt;	{&lt;br /&gt;		m_Error = 1;&lt;br /&gt;		return;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	m_pActiveSheet = m_pBook-&amp;gt;Sheets-&amp;gt;Item[1];&lt;br /&gt;}&lt;br /&gt;//---------------------------------------------&lt;br /&gt;CWorkWithExcel::~CWorkWithExcel()&lt;br /&gt;{&lt;br /&gt;	if (m_pBook)&lt;br /&gt;	//	m_pApplication-&amp;gt;Workbooks-&amp;gt;Close();&lt;br /&gt;&lt;br /&gt;		m_pBook-&amp;gt;Close();&lt;br /&gt;}&lt;br /&gt;//---------------------------------------------&lt;br /&gt;double CWorkWithExcel::GetDoubleVal(int row, int col)&lt;br /&gt;{&lt;br /&gt;	double res = 0;&lt;br /&gt;&lt;br /&gt;	if (m_pActiveSheet &amp;&amp; col &amp;lt;= m_pActiveSheet-&amp;gt;Columns-&amp;gt;Count&lt;br /&gt;			&amp;&amp; col &amp;gt;= 0 &amp;&amp; row &amp;lt;= m_pActiveSheet-&amp;gt;Rows-&amp;gt;Count &amp;&amp; row &amp;gt;=0)&lt;br /&gt;	{&lt;br /&gt;		Excel::RangePtr rp; &lt;br /&gt;		rp = m_pActiveSheet-&amp;gt;Cells-&amp;gt;Item[row][col];&lt;br /&gt;		&lt;br /&gt;		res = rp-&amp;gt;Value.dblVal;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	return res;&lt;br /&gt;}&lt;br /&gt;//---------------------------------------------&lt;br /&gt;_variant_t CWorkWithExcel::GetVal(int row, int col)&lt;br /&gt;{&lt;br /&gt;	_variant_t res = 0;&lt;br /&gt;&lt;br /&gt;	if (m_pActiveSheet &amp;&amp; col &amp;lt;= m_pActiveSheet-&amp;gt;Columns-&amp;gt;Count&lt;br /&gt;			&amp;&amp; col &amp;gt;= 0 &amp;&amp; row &amp;lt;= m_pActiveSheet-&amp;gt;Rows-&amp;gt;Count &amp;&amp; row &amp;gt;=0)&lt;br /&gt;	{&lt;br /&gt;		Excel::RangePtr rp; &lt;br /&gt;		rp = m_pActiveSheet-&amp;gt;Cells-&amp;gt;Item[row][col];&lt;br /&gt;		&lt;br /&gt;		res = rp-&amp;gt;Value;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	return res;&lt;br /&gt;}</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:4252</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/4252.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=4252"/>
    <title>Как снимал хату</title>
    <published>2009-05-05T19:23:34Z</published>
    <updated>2009-05-05T19:23:34Z</updated>
    <content type="html">Снимал в районе Октябрьского поля - Щукинской - Тушино. Использовал сайт cian.ru. На Тушино квартир нет - в основном предложения по Красногорску (ближайшее замкадье). На щукинской тоже вообщем то немного, в основном ориентировался на Поле. Тут достаточно близко к центру, поэтому цены несколько повыше, чем у мкада. Фонд в основном пятиэтажки сталинки, есть прилично двухэтажок, ну и есть многоэтажки. Хорошая квартирка стоит от 25 - это хороший ремонт, пластиковые окна, вобщем все очень культурно, есть конечно неадекватные предложения, но их в топку. Основная минимальная цена на приемлимую квартиру - 23 тыры. Можно и за 20 и даже 18, но это будут либо в стремном состоянии, либо может в хорошем, но малогаборитки - скажем 12-15 квадратов. Время активного поиска составило месяц, так что имейте ввиду что приличный вариант за разумные деньги за 2 дня не найдешь, впрочем если не жалко 25 (плюс свет - телефон) то можно и за день-два найти. За 23&amp;nbsp;в основном характеризуются свежей бытовой техникой, мебель может быть как 90 годов, так и парулетняя (может быть и 80х, но такое лучше не рассматривать). Фотки квартир имеются гдето в 20 процентах случаев, в основном как мне показалось, когда квартира несколько дней не сдается, то выкладывают чтобы лишний раз не бегать. Были предложения которые висели по 2-3 недели (это пока я следил). Ради интереса посмотрел что предлагается на севере Москвы, в районе петровско - разумовской - ситуация значительно лучше, за 20 предлагается то что на поле стоит 23-25, причем много разных вариантов, а на поле вариантов не очень много (хотя может раз на раз не приходится). Лучше конечно смотреть на хаты с фотками, ибо по описанию ничего не поймешь, если написано свежий ремонт, то это вовсе не значит что хата будет приятной, зачастую бывает неприкрытое вранье, когда по описанию все ништяк, а на самом деле атас.&lt;br /&gt;Над агентами поржал - первой была бабушка, бомжеватого, да простит меня, вида.&amp;nbsp;Когда ее увидел захотелось пройти мимо, был еще студент, но пара была и приличных товарищей, видимо зависит от того кто это - частник или представитель агентства.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:3972</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/3972.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=3972"/>
    <title>Мнение о шаблонах проектирования</title>
    <published>2009-02-21T17:24:39Z</published>
    <updated>2009-02-21T17:24:39Z</updated>
    <content type="html">Теперь я почти их все знаю, могу высказать резюме - до некоторых вещей и так допрешь с опытом, а в основном вся суть этих паттернов - использование интерфейсов и ничего более. Попытался применить шаблон стейт (было 2 состояния), плюнул на 10% деле, ибо задолбалсо, так как методы мало пересекаются (чтобы и там и тут было) и приходится плодить пустые, плюс если сделал в одном то надо и во втором сделать (хотя бы пустой) и в интерфейс добавить, то есть прибавляется дофига работы. Хотя конечно не скажу что эти знания бесполезны, нормальный прогер конечно должен такое знать. К слову говоря основная идея шаблонов (напомню, интерфейсы) к примеру реализована в COM'е.&lt;br /&gt;Некоторые шаблоны конечно же применяю, более успешно, но к слову те, которые и без книги знал, просто теперь я более четко знаю возможности ООП (шаблоны то на ООП построены), быстрее вижу выходы из ситуаций, причем красивые выходы а не абы как. У меня весьма удачно получилось применить к примеру шаблон модель - представление.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:3829</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/3829.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=3829"/>
    <title>Сравнение сред Builder C++ (6.0) и Visual Studio (2005)</title>
    <published>2009-02-15T20:36:07Z</published>
    <updated>2009-02-15T20:36:07Z</updated>
    <content type="html">С билдер проработал год профессионально и гдето 2 года лабы в инсте делал. Со студией уже полгода профессионально (Qt)&amp;nbsp;и еще немного до этого имел дело. Сразу оговорюсь что возможно некоторые проблемы как-то решаются, но я не знаю этих способов, хотя и искал.&lt;br /&gt;Итак. Первый же существенный минус студии - нельзя переключаться между хедером и его сиплюсплюсником (файлом), а также формой, соответствующей данному файлу (это Qt). Можно только сделать go to header. Это крайне существенный минус, который не дает нормально работать, ибо задалбливаешься мышкой щелкать, да еще надо найти файл (в закладках хотя бы).&lt;br /&gt;И в той и в другой среде бывают косяки со списком методов класса (это когда в срр тыкнуть в какойто метод и наверху в комбобоксе появятся методы класса в который тыкнули), то есть они не видятся при какихто условиях. Разумеется это тоже не добавляет удобства ибо когда файл большой то задолбаешься искать. В таких случаях в студии не работает и go to definition.&lt;br /&gt;Компиляция - здесь с громадным отрывом лидирует студия, ибо ребилд среднего приложения (12-15 файлов срр) занимает (точно не засекал) секунд 40, тогда как примерно такого же уровня приложение в билдере может по 300 секунд занимать (без всяких шуток, ребилд в билдере это вещь конечно приятная, ибо несколько минут можно о чемто помечтать, но все таки иногда на это уходит слишком много времени). Также в билдере есть другая беда - зачастую надо ребилдить весь проект, ибо не хватает перекомпиляции только файлов в которых были произведены изменения (с учетом зависимых хедеров), за полгода ни разу не столкнулся с такой бедой в студии.&lt;br /&gt;В студии есть неплохая возможность располагать файлы в 2 таба, то бишь видеть сразу 2 файла на экране, в принципе помогает, я ей всегда пользуюсь, еще бы экран так в 22 инча...&lt;br /&gt;В студии также можно проект сразу билдить в либу или длл (всего лишь указав в опциях тип выхода), в билдере для этого надо создавать отдельный проект специального типа.&lt;br /&gt;Вобщем это были основные моменты которые для меня имеют большое значение. Про дизайнер говорить не хочется ибо там билдер на 10 корпусов впереди Qt-шного.&lt;br /&gt;Конец.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:3481</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/3481.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=3481"/>
    <title>Критика QTableWidget</title>
    <published>2009-02-07T13:32:14Z</published>
    <updated>2009-02-07T13:32:14Z</updated>
    <content type="html">&lt;br /&gt;Пришлось поюзать, вот мнение, возможно где-то не прав. Итак:&lt;br /&gt;1. Нет мастер-детайл.&lt;br /&gt;Конечно это продвинутая функция, но всетаки.&lt;br /&gt;2. Нельзя получать доступ к столбцам по их имени, заодно и проверять существует ли столбец с таким именем. Это офигенный косяк, который не дает красиво и продуктивно работать. Для проверки наличия столбца нужна как дурак перебирать все. Даже сурцы просканировал, так и не нашел возможности. &lt;br /&gt;3. Нельзя обратиться к ячейке (взять текст) если не был установлен item. Из-за этого если в ячейку на этапе загрузки не надо ничего писать, то либо все равно надо создавать item, либо потом в просмотре проверять а есть ли item, чтобы сделать item-&amp;gt;text(). Неужто сделано для экономии памяти? Бред.&lt;br /&gt;4. Когда создавал динамически колонки и поставил чтобы их ширина автоматически выравнивалась по содержимому, то последняя колонка выравнивалась по содержимому ячейки, а так как содержимое хедера было шире, то он обрезался, что было очень некрасиво. Как ни бился побороть не смог. Косяк.&lt;br /&gt;Итог: хреновато, слабо. При том что цена Qt от 1780 до 6600 баксов (&lt;a href="http://www.ii-system.com/partners/trolltech/qt/pricing.htm"&gt;http://www.ii-system.com/partners/trolltech/qt/pricing.htm&lt;/a&gt;). Билдер покупался за штуку, компоненты DevExpress пару сотен стоят и получается убер - система, но конечно не кросс. Да и первый выход в свет библиотеки Qt состоялся в мае 1995 года, то есть время то было.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:3310</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/3310.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=3310"/>
    <title>Дорога на работу в Москве</title>
    <published>2009-01-18T19:32:24Z</published>
    <updated>2009-01-22T20:28:14Z</updated>
    <content type="html">Одним из факторов по которому не хотелось ехать в Москоу, было время затрачиваемое на дорогу &lt;br /&gt;на работу. Мне тяжело было представить как можно тратить 3 часа в день только на добирание &lt;br /&gt;до работы, учитывая что сама работа 8 часов. Но все таки приехал. &lt;br /&gt;&amp;nbsp;Итак, сколько я трачу времени и денег на дорогу. Сначала нужно добраться до метро - 15 минут &lt;br /&gt;средним ходом, либо 4-5 мин на газели (20-25 руб в зависимости от номера), сначала правда её &lt;br /&gt;нада дождаться и сесть (может быть забита). Дождаться в зависимости от случая 0 - 10 мин, &lt;br /&gt;да до остановки 1 минута хода. Можно поехать на автобусе, его тоже надо дождаться и едет он &lt;br /&gt;прилично медленней ибо останавливается на каждой остановке и если народу много то долго длится &lt;br /&gt;процесс посадки ибо все заходят в одну дверь. Стоимость - 17 руб если купить билеты в киоске и &lt;br /&gt;25 если у водителя. Таким образом видим что городские автобусы дороже и медленнее чем газели. &lt;br /&gt;Затем подъезжаю к метро, спускаюсь, сажусь - это 2 - 4 минуты. &lt;br /&gt;&amp;nbsp;На метро еду с одной пересадкой, при пересадке нужно пройтись метров 250, впрочем переход не &lt;br /&gt;самый страшный, бывают значительно хуже, я уж не говорю если надо 2 раза пересаживаться и &lt;br /&gt;на переполненных станциях - там веселуха мама не горюй. До пересадки еду гдето 35-40 мин, &lt;br /&gt;пересадка около 3 мин, далее до станции работы гдето 12 мин. Потом до проходной если пешем &lt;br /&gt;то 11 мин (все время хожу пешем, ибо автобусы/газели надо ждать, платить, а выигрыша особого &lt;br /&gt;не будет, а места там достаточно приятные и идти не скушно, особенно с музоном), далее 10 мин &lt;br /&gt;от проходной до рабочего места. &lt;br /&gt;&amp;nbsp;Итого - 1,5 часа и денег от 35 (газель + оптом за метро дешевле чем 1 поездка (а одна поездка &lt;br /&gt;нынче стоит 22 руб)) до 63 руб в одну сторону. Вот так вот. Могу сказать что расстояние гдето 25 км. На тачке кстати если б была хрен добере- &lt;br /&gt;шься.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:2897</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/2897.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=2897"/>
    <title>нету рефлектинга в с++. Why?</title>
    <published>2009-01-11T20:14:54Z</published>
    <updated>2009-01-11T20:14:54Z</updated>
    <content type="html">Вроде любят говорить что с++ самый мощный, ну или во всяком случае очень мощный язык, а такой подчас нужной вещи как рефлекшн нету. Может будет?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:2586</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/2586.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=2586"/>
    <title>Юзание потоков на QT</title>
    <published>2008-12-28T19:01:20Z</published>
    <updated>2008-12-28T19:18:49Z</updated>
    <content type="html">&lt;p&gt;Короче задача у меня была следующая - нужно было чтоб при длительной загрузке данных &lt;br /&gt;визуальный интерфейс не зависал, а отображал окно прогресса.&lt;br /&gt;Это можно сделать и без потоков, если бы не было вызовов функций, &lt;br /&gt;которые долго (0-5 сек в среднем, но в принципе до бесконечности)&lt;br /&gt;&amp;nbsp;не возвращали управление. Да и вообще наверно не хорошо чтобы в любой функции были вызовы репаинта интерфейса. &lt;br /&gt;При этом хотелось бы чтобы логика вызова функций была неразвывной, &lt;br /&gt;то есть такой как будто не используются потоки а идет вызов обычной функции. &lt;br /&gt;Также поток должен был жить на протяжении жизни самого приложения, ибо в нем создавались объекты,&lt;br /&gt;которые создавать каждый раз при запуске нового потока не есть гуд. Также не надо было &lt;br /&gt;чтобы параллельно с работой потока еще чтото делалось, &lt;br /&gt;поэтому нормально было чтобы программа не реагировала на воздействия во время загрузки.&lt;br /&gt;Короче как я это сделал. Создал класс наследник QThread Mythread, а также класс ThreadObject &lt;br /&gt;(наследник QObject чтоб подключить события) посредсвом которого будет происходить &amp;quot;незаметный&amp;quot; вызов методов объектов, &lt;br /&gt;живущих в дочернем потоке. У Mythread в run написал что-то типа &lt;br /&gt;run()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;threadobject = new ThreadObject();&lt;br /&gt;&amp;nbsp;exec(); //включение цикла обработки сообщений потока, чтоб поток жил пока ему не пошлется сообщение выхода quit&lt;br /&gt;&amp;nbsp;delete threadobject;&lt;br /&gt;}&lt;br /&gt;Здесь надо бы упомянуть что чтобы вызвать код в другом потоке можно воспользоваться следующим способом применительно к Qt. &lt;br /&gt;Если объект создан в потоке Х, то вызов его слотов будет происходить в потоке Х &lt;br /&gt;(если не изменить последний параметр функции connect). Именно поэтому threadobject создается в run, &lt;br /&gt;тк run - это другой поток, а скажем конструктор Mythread - это тот же поток в котором происходить создание объекта &lt;br /&gt;этого класса (Mythread). В конструкторе ThreadObject происходит подключение событий, &lt;br /&gt;посредством которых код вызывается в нужном потоке:&lt;/p&gt;&lt;p&gt;class ThreadObject&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;signals:&lt;br /&gt;&amp;nbsp;void StartProcess():при вызове этого сигнала сработает слот Process, который будет работать в потоке в котором создан объект ThreadObject&lt;br /&gt;&amp;nbsp;slots:&lt;br /&gt;&amp;nbsp;void Process();&lt;/p&gt;&lt;p&gt;InParameters m_InParameters;&lt;br /&gt;OutParameters m_OutParameters;&lt;/p&gt;&lt;p&gt;ThreadObject()&lt;br /&gt;{&lt;br /&gt;connect(this, SIGNAL(StartProcess()), SLOT(Process()));&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Слот Process имеет такой код:&lt;br /&gt;void Process()&lt;br /&gt;{&lt;br /&gt;switch (state)&lt;br /&gt;{&lt;br /&gt;case GetValueA:&lt;br /&gt;..... //какой-то код&lt;br /&gt;SetEvent(ProcessComplete);//говорим что обработка завершилась&lt;br /&gt;break;&lt;br /&gt;case GetValueB:&lt;br /&gt;OutParameters.doubleval = GetValueBMethod(InParameters.intval);//чтобы Process не стал бесконечно длинным вынос длинных методов&lt;br /&gt;SetEvent(ProcessComplete);//говорим что обработка завершилась&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;int ThreadObject::GetValueBMethod(double val)&lt;br /&gt;{&lt;br /&gt;//тут может быть любой код, если он вызывается из метода Process то будет работать в том потоке в котором создан &lt;br /&gt;//ThreadObject (ибо его в принципе можно вызвать и непосредственно, тогда он исполнится в том потоке, в котором был вызван)&lt;br /&gt;return (int)val / 2;&lt;br /&gt;}&lt;br /&gt;Для того чтобы обеспечить передачу параметров внутри ThreadObject есть классы для входных и выходных параметров:&lt;br /&gt;class InParameters&lt;br /&gt;{&lt;br /&gt;int intval;&lt;br /&gt;double doubleval;&lt;br /&gt;vector&amp;lt;int&amp;gt; vectorintval;&lt;br /&gt;.... //описываются все необходимый входные данные&lt;br /&gt;};&lt;br /&gt;class OutParameters&lt;br /&gt;{&lt;br /&gt;int intval;&lt;br /&gt;double doubleval;&lt;br /&gt;....&lt;br /&gt;};&lt;br /&gt;Теперь посмотрим как выглядят функции для вызова извне, то есть те через которые собственно и будут получаться данные:&lt;br /&gt;int ThreadObject::GetValueBMethod_(double val)&lt;br /&gt;{&lt;br /&gt;state = GetValueA;&lt;br /&gt;InParameters.intval = val;&lt;/p&gt;&lt;p&gt;ResetEvent(ProcessComplete);//сбрасываем событие&lt;br /&gt;while (WaitForSingleObject(ProcessComplete, 10) == WAIT_TIMEOUT)//ждем когда обработка завершится, &lt;br /&gt;&amp;nbsp;QCoreApplication::processEvents();//а чтобы интерфейс обновлялся делаем processEvents&lt;/p&gt;&lt;p&gt;return OutParameters.doubleval;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Замечание: Используются события винды, но можно заменить чем-нить другим.&lt;br /&gt;Замечание: Код может быть слегка неправильным, ибо описываю основную идею, а не конкретику.&lt;/p&gt;&lt;p&gt;Итак, если бы нам нада была вызвать GetValueBMethod в этом же потоке то вызываем ThreadObject-&amp;gt;GetValueBMethod(5);&lt;br /&gt;если из другого, то ThreadObject-&amp;gt;GetValueBMethod_(5);&lt;br /&gt;При этом логика вызова будет одна и та же, можно абсолютно безболезненно заменить вызов метода &lt;br /&gt;в другом потоке и ничего не придется менять.&lt;/p&gt;P.S. Тутошний редактор не понимает rtf поэтому такой стремный стиль.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:2443</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/2443.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=2443"/>
    <title>Установка qwt</title>
    <published>2008-12-23T20:18:08Z</published>
    <updated>2008-12-23T20:23:19Z</updated>
    <content type="html">&lt;span lang="EN"&gt;&lt;p&gt;&amp;nbsp;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;В принципе ничего сложного, но для тех кто особо нерешителен и сомневается выбрать ли ему квт опишу процесс. Правда только под студию, в которую уже интегрирована &lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;qt&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;. Итак качаем исходники с сайта, открываем файл проекта &lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;.pro&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt; в студии через пункт меню &amp;quot;&lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;Qt =&amp;gt; open solution from ,pro&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;&amp;quot;, билдим. Появляются файлики &lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;qwt.lib &lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;и &lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;qwt.dll&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;. Длл бросаем в кюте/бин или систем32, а в проекте где будете юзать квт (или в настройки среды, чтоб не указывать для каждого проекта) добавляете пути к инклудникам (&lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;.h&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;) квт и &lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;.lib&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;. И все&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Следует помнить что если идет дебаг-версия проекта, то и дллку нужно юзать, собранную в дебаг-режиме, для релиза - релиз - версию, а то будет вылетать, а вы будете долго чесать репу почему.&lt;/p&gt;&lt;p&gt;Если хотите заюзать в наследнике класса &lt;font size="2"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;qwtplot &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;а возможно и любого из библы квт&lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt; такую фигню как макрос &lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;Q_OBJECT&lt;/font&gt;&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;, то неплохо бы в дефайны проекта добавить директивку &lt;/span&gt;&lt;font size="2"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;QWT_DLL&lt;/font&gt;&lt;/span&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;font face="Arial CYR" size="2"&gt;&lt;span lang="RU"&gt;. Успехов! &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/span&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:2069</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/2069.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=2069"/>
    <title>Группа ХЗ</title>
    <published>2008-12-20T16:27:33Z</published>
    <updated>2008-12-20T16:27:33Z</updated>
    <content type="html">ХЗ - хуй забей. Не слышал о ней никогда, а на работе дали послушать. Проникся, предлагаю:&lt;br /&gt;Гость с Альдебарана&lt;br /&gt;&lt;a href="http://webfile.ru/2494551"&gt;http://webfile.ru/2494551&lt;/a&gt;&lt;br /&gt;Буй&lt;br /&gt;&lt;a href="http://webfile.ru/2494547"&gt;http://webfile.ru/2494547&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:1603</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/1603.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=1603"/>
    <title>Опишу собеседования на которых я был. 1. RBCsoft</title>
    <published>2008-12-18T21:03:35Z</published>
    <updated>2008-12-18T21:08:05Z</updated>
    <content type="html">&lt;font size="2"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;span style="font-size: small"&gt;RBCsoft - пришел сказали что надо Си + мускул (проект loveplanet)(я как то думал что с++ (ну еще там чтото)), поэтому желание работать сразу пропало. Но стал отвечать на вопросы, они были не сложные, но я лоханулся примерно на таком вопросе&lt;br /&gt;функция должна вернуть строку, как правильно?&lt;br /&gt;char* func()&lt;br /&gt;{&lt;br /&gt;return &amp;quot;Ok&amp;quot;;&lt;br /&gt;}&lt;br /&gt;char* func()&lt;br /&gt;{&lt;br /&gt;char str[] = &amp;quot;Ok&amp;quot;;&lt;br /&gt;return str;&lt;br /&gt;}&lt;br /&gt;и еще какието не варианты. Ну меня перекосячило и я сказал 2 (чото подумал что там динамическое выделение и поэтому все верно). Сказалось то, что в рабочей практике не работаю с char*, в билдере - AnsiString, std::string. Понятно что после такого отказали (еще пару вопросов небольших, вроде ответил пральна). Ну да и ладно.&lt;/span&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:1402</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/1402.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=1402"/>
    <title>про qt qwt</title>
    <published>2008-12-16T19:54:19Z</published>
    <updated>2008-12-16T19:54:19Z</updated>
    <content type="html">так получилось что пришлось делать проект на с++ + qt. И жизненно необходимы были&lt;br /&gt;диаграммы (чарты), причем qt до этого в глаза не видел, только слышал что есть &lt;br /&gt;(в вакансиях часто требуется). Полазив по интернету пришел к выводу что практически единственное&lt;br /&gt;и самое популярное средство (во всяком случае бесплатное, по платным ситуацию уже&lt;br /&gt;не помню) - это библиотека qwt. Когда скачал, перехотелось её использовать,&lt;br /&gt;ибо там было великое множество классов и методов и все только для того чтобы делать чарты.&lt;br /&gt;В дизайнере разумеется ни хрена ничего не настраивается. При этом разумеется её надо было &lt;br /&gt;собрать, с чем возникло тоже полно трудностей (в сумме наверно пол рабочего дня потратил на сборку).&lt;br /&gt;В итоге волей-неволей пришлось изучать, смотря хелп и примеры, кои есть в достаточном количестве.&lt;br /&gt;Причем фишка в том что в интернете про её использование не найти инфы, а на приличном форуме&lt;br /&gt;по qt тоже не нашлось человека хорошо в ней разбирающегося (или все молчали). Нет, пару&lt;br /&gt;человек сказали что использовали, но на вопросы (простейшие) никто не отвечал. Поэтому вкратце&lt;br /&gt;скажу что я о ней думаю после 3 месяцев работы с qwt (не все разумеется 3 месяца, но постоянно приходилось &lt;br /&gt;возиться).&lt;br /&gt;Если вы до этого сидели на билдере с++ (как я), то конечно жопа полная. В билдере все&lt;br /&gt;настраивается через дизайнер, ну чтото в коде (в основном то что тяжело через дизайнер),&lt;br /&gt;тут же все вперед ручками. Для тех кто сидел на к'юте до этого это вобщем то не страшно,&lt;br /&gt;ибо в к'юте в основном все ручками фигарится - это громаднейший минус. Причем к'юте платная&lt;br /&gt;для использования в коммерции и к слову очень даже платная. Да и вообще, проработав уже 3 месяца&lt;br /&gt;на к'юте в общей совокупности особых плюсов не заметил. &lt;br /&gt;Но вернемся к qwt. Итак чтобы настроить к приеру шкалы нужно получить доступ к классу и через&lt;br /&gt;него все настраивать, причем названия методов (а в кюте все делается через методы, а не &lt;br /&gt;к примеру атрибуты (хотя бы какаято часть)) не больно то логичны, то есть с наскоку не &lt;br /&gt;возьмешь. Чтобы сделать сетку нужно добавить специальный класс, чтобы сделать выделение&lt;br /&gt;мышкой - тоже спец класс, а самое что убило - нет автонастройки лэйблов по осям, то есть&lt;br /&gt;если вы хотите к примеру по оси х выводить дату, то придется унаследоваться от класса оси&lt;br /&gt;и переопределить один метод, сделав преобразование из типа дабл к нужному нам типу по какой то&lt;br /&gt;функции ибо по осям кюте понимает только дабл. При этом еще компонент еще и подглючивал - &lt;br /&gt;рисовал метки за границей себя (для исправления этой фигни пришлось переписать пару методов (конечно&lt;br /&gt;было изменено немного, но получилось очень некрасиво)). &lt;br /&gt;&amp;nbsp;Основная идея чартов - рисовать графики и соответственно нада загнать кудато данные.&lt;br /&gt;Вот тут еще одна жопа - в qwt нет метода типа Линия-&amp;gt;addvalue(x,y), там нада выделять динамически&lt;br /&gt;массив даблов, его забивать и передавать в функцию, указывая длину - и такой бред в конце&lt;br /&gt;2008 года! Пришлось написать свой собственный адаптер для перевода скажем вектора значений&lt;br /&gt;в эту байду.&lt;br /&gt;В целом сложилось впечатление что компонент тормознутый (нет, он аццки не тормозил, но не было&lt;br /&gt;какойто легкости, как когда создаешь пустую форму на билдере с каким то еще компонентом и это&lt;br /&gt;просто ЛЕТАЕТ), при этом комп - двухядерный кор на 2,4 ггц. Да и полное создание такого&lt;br /&gt;компонента (с настроенными осями и тд) занимало не позволительное время - пришлось&lt;br /&gt;создавать их не скопом, а по мере необходимости, ибо создание протормаживало интерфейс, что&lt;br /&gt;крайне неприятно.&lt;br /&gt;Кароче вывод такой - уж если связались с кюте, то видимо будете вынуждены использовать&lt;br /&gt;и qwt (когда нужны будут диаграммы), а следовательно - готовьтесь!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:1122</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/1122.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=1122"/>
    <title>Как я искал работу в Москве в августе</title>
    <published>2008-12-15T19:57:36Z</published>
    <updated>2008-12-15T19:57:36Z</updated>
    <content type="html">Я имел опыт работы год на С++ Builder + Firebird в Самаре, также высшее образование программиста.&lt;br /&gt;Вначале хотел пойти в геймдев, так как люблю игры, но попосылав резюме таким товарищам как акелла, нивал и не&lt;br /&gt;которым другим меня туда не пригласили. В итоге договорился только с одной небольшой фирмочкой&lt;br /&gt;чуть-чуть за мкадом, но пройдя собеседование (или наоборот не пройдя) и заявив что хочу 50 тыр, мне отказали &lt;br /&gt;(не сразу, сказали подумаем, но потом так и не ответили, пришлось самому связываться с ними).&lt;br /&gt;В итоге пришел к выводу что в геймдев могут идти либо профи с некоторой потерей в зп но зато&lt;br /&gt;заниматься любимым делом либо студенты - москвичи, которым меньше денег нада.&lt;br /&gt;Соответственно пришлось обратить взор на обычную программерскую работу.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ifelser:984</id>
    <link rel="alternate" type="text/html" href="http://ifelser.livejournal.com/984.html"/>
    <link rel="self" type="text/xml" href="http://ifelser.livejournal.com/data/atom/?itemid=984"/>
    <title>Про метро</title>
    <published>2008-12-13T18:34:17Z</published>
    <updated>2008-12-20T13:19:52Z</updated>
    <content type="html">&lt;div&gt;Метро, сука, веселое. В нем утром и вечером очень много народу, толстые собаки, валяющиеся по среди прохода как свиньи, бомжи, спящие на лавочках. Очень весело с утра садиться на конечных станциях - все как спринтеры готовятся к прыжку в разверзнувшиеся двери, при этом никому не будет пощады, бабушки будут лететь в стороны, будет давка. Все ломанутся на свободные места, по опыту знаю что тут главное не суетиться, а идти к какойто одной лавочке, ибо обычно всегда на некоторое время остается одно место, к нему надо идти с решительным видом чтобы другие нащупавшие его взглядом&amp;nbsp; не стали попусту тратить силы на доставку своего тела на вакантное место. Треть людей обычно чтото читает, половина книги, газеты, другая чтото с девайсов. Здесь много пенсионеров с кпкашками, становятся популярными электронные книги.&lt;br /&gt;&amp;nbsp;&lt;/div&gt;</content>
  </entry>
</feed>
