Хроники лаборатории
Вкратце о текущем состоянии дневника:

В связи с загруженностью очень интересной работой, почти перестал вести блог. Но, как легко убедиться, пролистав блог слегка назад, так было не всегда.
страница: 95 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
Йа колокольчег

Не удержался, купил эту газировку. Раньше как-то не замечал даже. А сейчас - пробило на «га-га». Фотошопа самый минимум. Для тех, кто не в теме: волна всяких «йа», если я не ошибаюсь, пошла от фразы «Йа креведко». Там приводится ссылка на цитату с БашОрга, но хоть убейте, мне кажется, что я ее видел там еще раньше, до цитаты про надпись на парте.

Вот натуральный вид бутыки. Вам тоже пришла ассоциация или меня уже не вылечить?..



комментарии: 1 RSS HTML рубрики: допридуманоjuick twitter facebook вконтакте
Синхронизация с LiveJournal

Статья была написана для HostInfo.ru.

Думаю, мало кто поспорит, что блоги (в частности, сервис LiveJournal) стабильно обосновались в нашей жизни как (как минимум) довольно удобный способ узнать, что нового происходит в жизни друзей и знакомых. Еще интересно бывает следить за блогами незнакомых, но пишущих интересные статьи людей. Не стоит забывать и сообщества, коих великое множество. Таким образом, довольно приличное количество людей начинают свой день (или, напротив, завершают его) просмотром так называемой «френдленты», в которой к одной колонке сводятся все записи из интересующих журналов. Некоторые даже специально заводят аккаунты, которыми пользуются исключительно для того, чтобы одной страницей читать все новости. И нет-нет да и проскакивает мысль: «А как удобно было бы читать вот тот вот сайт в этой же френдленте». Действительно, есть огромное количество сайтов-блогов, ведущихся по тому же принципу, что и на LiveJournal, но на собственном хостинге. Если у вас подобный блог, почему не сделать синхронизацию, чтобы при изменениях на сайте автоматически изменялось его «зеркало» в LiveJournal?

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

Будем считать, что процесс добавления новостей на свой собственный сайт вы наладили, и сосредоточимся на дублировании этих записей непосредственно в «Живой журнал». Собственно, для добавления записи у нас масса возможностей: через SMS, через Jabber, электронную почту. Однако нас интересуют два более гибких интерфейса: Flat- и XML-RPC-протоколы.

Flat Client/Server Protocol Flat Client/Server Protocol представляет собой обработку обычных POST-запросов. Например, страница, содержащая такую форму, может быть использована для добавления сообщений в любой дневник:

 <form accept-charset="UTF-8" method="post" name="postform"

 action="http://www.livejournal.com/interface/flat">

 <input type=hidden name=mode value="postevent">

 <input type=hidden name=user value="username">

 <input type=hidden name=password value="password">

 <input type=hidden name=auth_method value="clear">

 <input type=text name=year value="2007">

 <input type=text name=mon value="05">

 <input type=text name=day value="31">

 <input type=text name=hour value="17">

 <input type=text name=min value="0">

 <input type=text name=subject value="тема"><br /><br />

 <textarea name=event>сообщение</textarea><br /><br />

 <input type=button value="Ok" onclick="postform.submit()"><br />

 </form><br />


Естественно, в поля user и password вписываются логин и пароль журнала, в который, собственно, мы хотим добавить запись. В ответ на эту форму сервер (если данные учетной записи верны) выдаст ответ подобного вида:


 anum

 192

 itemid

 7

 success

 OK

 url

 http://user.livejournal.com/1984.html


Значение success, равное «OK», говорит о том, что сообщение успешно добавлено в журнал. В случае неудачи этот параметр будет равен FAIL. Параметр anum, судя по документации, предназначен для вычисления публичного itemid записи. На самом же деле я так и не встретил ситуации, когда бы этот параметр пригодился. Параметр itemid содержит номер записи в данном дневнике, и его можно, например, запомнить в базе – он может понадобиться для редактирования записи. Последний параметр – url – содержит прямую ссылку на запись.

Вуаля, треть нашей задачи мы осуществили: теперь при добавлении новости на сайт эта же новость без труда дублируется в «ЖЖ». Две оставшиеся трети проблемы решаются следующим образом:


 <form accept-charset="UTF-8" method="post" name="postform"

 action="http://www.livejournal.com/interface/flat">

 <input type=hidden name=mode value="editevent">

 <input type=hidden name=itemid value="7">

 <input type=hidden name=ver value="1">

 <input type=hidden name=user value="username">

 <input type=hidden name=password value="password">

 <input type=hidden name=mode value="editevent">

 <input type=hidden name=auth_method value="clear">

 <input type=text name=year value="2007">

 <input type=text name=mon value="05">

 <input type=text name=day value="31">

 <input type=text name=hour value="17">

 <input type=text name=min value="0">

 <input type=text name=subject value="тема"><br /><br />

 <textarea name=event>сообщение</textarea><br /><br />

 <input type=button value="Ok" onclick="postform.submit()">

 </form> 


Эта форма отличается от первой рассмотренной только второй и третьей строками. Параметр mode мы установили равным editevent и ввели параметр itemid, который содержит номер редактируемой записи в LiveJournal. Причем если поле event будет пустым, сообщение будет стерто.

XML-RPC Interface
Но Flat-интерфейс все-таки не очень удобен. Более гибким и мощным инструментом является XML-RPC-интерфейс. Для реализации работы с этим интерфейсом на PHP я выбрал библиотеку XML-RPC for PHP. Вот пример функции для добавления сообщения в журнал:


 function post_LJ($year,$month,$day,$hour,$minute,$subject,$event) {

 $lj_userid="user";

 $lj_passwd="password";

 

 $client=new xmlrpc_client("/interface/xmlrpc", "www.livejournal.com", 80);

 

 $params = new xmlrpcval( array(

 	 'username' => new xmlrpcval($lj_userid,'string'),

 	 'password' => new xmlrpcval($lj_passwd,'string'),

 	 'ver' => new xmlrpcval('1','string'),

 	 'lineendings' => new xmlrpcval('pc','string'),

 	 'event' => new xmlrpcval($event,'string'),

 	 'subject' => new xmlrpcval($subject,'string'),

 	 'year' => new xmlrpcval($year,'int'),

 	 'mon' => new xmlrpcval($month,'int'),

 	 'day' => new xmlrpcval($day,'int'),

 	 'hour' => new xmlrpcval($hour,'int'),

 	 'min' => new xmlrpcval($minute,'int')),'struct'

 );

 

 $msg = new xmlrpcmsg('LJ.XMLRPC.postevent');

 $msg->addparam($params);

 $client->setDebug(0);

 $result = $client->send($msg);

 if ($result->faultCode() != 0) {

 print "Ошибка: " . $result->faultString();

 } else {

 printf("Сообщение добавлено");

 };

 };


Если рассматривать процедуру вкратце, то мы сначала формируем XML-запрос, а затем отсылаем его серверу на обработку. В ответ мы получаем тоже XML-файл, но уже с результатами. Мы можем получить и распечатать любую запись из дневника:


 function view_LJ($itemid) {

 $lj_userid="user";

 $lj_passwd="password";

 

 $client=new xmlrpc_client("/interface/xmlrpc", "www.livejournal.com", 80);

 

 $params = new xmlrpcval( array(

 	 'username' => new xmlrpcval($lj_userid,'string'),

 	 'password' => new xmlrpcval($lj_passwd,'string'),

 	 'ver' => new xmlrpcval('1','string'),

 	 'lineendings' => new xmlrpcval('pc','string'),

 	 'selecttype' => new xmlrpcval('one','string'),

 	 'itemid' => new xmlrpcval('itemid','string'),

 	 'year' => new xmlrpcval($year,'int'),

 	 'month' => new xmlrpcval($month,'int'),

 	 'day' => new xmlrpcval($day,'int')),'struct'

 );

 

 $msg = new xmlrpcmsg('LJ.XMLRPC.getevents');

 $msg->addparam($params);

 $client->setDebug(0);

 $result = $client->send($msg);

 if ($result->faultCode() != 0) {

 print "Ошибка: ".$result->faultString();

 return;

 };

 

 $v=$result->value();

 $events=$v->structMem('events');

 $event = $events->arrayMem(0);

 $itemid_xml=$event->structMem('itemid');

 $eventtime_xml=$event->structMem('eventtime');

 $subject_xml=$event->structMem('subject');

 $event_xml=$event->structMem('event');

 

 $itemid=$itemid_xml->scalarVal();

 $subject=$subject_xml->scalarVal();

 $eventtime=$eventtime_xml->scalarVal();

 $event=$event_xml->scalarVal();

 

 printf("$eventtime<br /><br />");

 printf("$subject<br /><br />");

 printf("$event<br />");

 

 };


То есть при большом желании можно не хранить записи на сайте, а получать их в момент формирования страницы со своего «ЖЖ»-аккаунта.

Редактирование и удаление записей производится по аналогии с примером, приведенном для Flat-интерфейса:


 function post_LJ($itemid,$year,$month,$day,$hour,$minute,$title,$message) {

 $lj_userid="user";

 $lj_passwd="password";

 

 $client=new xmlrpc_client("/interface/xmlrpc", "www.livejournal.com", 80);

 

 $params = new xmlrpcval( array(

 	 'username' => new xmlrpcval($lj_userid,'string'),

 	 'password' => new xmlrpcval($lj_passwd,'string'),

 	 'ver' => new xmlrpcval('1','string'),

 	 'itemid' => new xmlrpcval($itemid,'int'),

 	 'event' => new xmlrpcval($message,'string'),

 	 'lineendings' => new xmlrpcval('pc','string'),

 	 'subject' => new xmlrpcval($title,'string'),

 	 'year' => new xmlrpcval($year,'int'),

 	 'mon' => new xmlrpcval($month,'int'),

 	 'day' => new xmlrpcval($day,'int'),

 	 'hour' => new xmlrpcval($hour,'int'),

 	 'min' => new xmlrpcval($minute,'int')),'struct'

 );

 

 $msg = new xmlrpcmsg('LJ.XMLRPC.editevent');

 $msg->addparam($params);

 $client->setDebug(0);

 $result = $client->send($msg);

 if ($result->faultCode() != 0) {

 print "Couldn't process request: ".$result->faultString();

 return;

 };

 };


Таким образом можно реализовывать довольно интересные комбинации. Например, вы можете вести дневник на LiveJournal и вкраплять в ленту записей новости своего сайта. Или, напротив, разбавлять новости на главной странице записями из своего «ЖЖ». Также можно не ограничиваться одним аккаунтом, а, допустим, если у вас музыкальная группа, то на странице сайта можно собрать до кучи записи из «ЖЖ»-аккаунтов всех участников. В общем, возможности ограничиваются исключительно вашей фантазией и производительностью сервера.


28 июня 2007

Опубликовано на HostInfo.ru 29 июня 2007.


комментарии: 0 RSS HTML рубрики: приемчикиjuick twitter facebook вконтакте
Специалист широкого профиля

Ко мне нельзя обращаться с вопросом «Ты программист?». Это установлено абсолютно точно. У меня от этого вопроса нервное «хи-хи» начинается. Потому что после этого вопроса можно ждать чего угодно: дискуссии на тему «есть ли жизнь на Марсе», требования прочитать цикл лекций «как сделать сайт», выяснений «почему у меня телефон просто перестал включаться». Короче говоря, предсказать в какую область свернет беседа дальше не возьмется никто. Тема может быть произвольной - от биологии и ядерной физики до юриспруденции и философии. И только примерно в 5% случаев дальнейший разговор касается действительно программирования. Таким вот образованным, оказывается, в наше время должен быть программист.


комментарии: 4 RSS HTML рубрики: жизненноеjuick twitter facebook вконтакте
Обарзевшие спамеры



комментарии: 1 RSS HTML рубрики: смехоспамjuick twitter facebook вконтакте
Чудеса топологии

Вчера под вечер кабинет заполнили причудливые трели: бесперебойники всех компьютеров запищали о том, что в розетках кончилось электричество. Хотя нет, вру, не все. Но об этом чуть позже. Работа встала. Побежали искать электриков. Если вкратце описывать нашу систему энергоснабжения, то это такая система, которую вкратце не опишешь. Это несколько независимых силовых линий, причем каждая линия под свои нужды. Например, пока наши компьютеры простаивали, холодильник с микроволновкой в «бытовом уголке» и освещение исправно работали, поскольку питались от линии освещения. Один компьютер оказался включен в удлиннитель, тянущийся от розетки, от которой запитывается холодильник. Соседние кабинеты тоже спокойно работали, что нас немало озадачило - обычно отключение происходило комплексно. Найденные электрики смотрели на нас такими же выпученными глазами как и мы на них: оказывается, на семь (!) этажей ниже, на этаже с дирекцией что-то ковыряли, и отключили линию освещения туалетов, никак не предполагая, что это кому-то повредит. Через час все заработало, но какое-то странное ощущение осталось. Теперь даже не знаю, как относиться к такому месту в энергосети: или радоваться тому, что запитываемся с этажа дирекции, или обижаться, что наши компьютеры работают от сети освещения туалетов.

А вообще надо купить удлиннитель. Тоже хочу запитываться «от холодильника»...


комментарии: 1 RSS HTML рубрики: жизненноеjuick twitter facebook вконтакте
Кстати о рабочем месте.

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

рис.1


Итак, перед вами типичное рабочее место V.exeR'а (рис. 1). Несомненно, главная роль в нем отводится компьютеру. Визуальный контакт с компьютером устанавливается посредством монитора, сейчас это неплохой NEC'овский ЖК-шник, раньше вместо него была старенькая «трубка», соответствующая ТСО'99. На мониторе нет изображения, но это не значит, что V.exeR ленится работать. Отнюдь! Отсутствие изображения объясняется тем, что пока он искал наиболее удобную точку для съемки, монитор успел перейти в режим ожидания.


рис.2
Корпус компьютера доверительно полуоткрыт, обеспечивая оперативный доступ непосредственно V.exeR'у и пыли. На блоке питания закреплены идейно и жизненно необходимые бумажки (рис. 2): на первой изображены крестики по числу возгласов «ну ты маньяк!» сослуживцев на работе и собеседников в аське. К слову, одна такая бумажка уже полностью заполнена и хранится в архиве. Вторая бумажка имеет огромное практическое значение, поскольку является земным воплощением состояния Нирваны: это священная мантра, ключик к Windows XP. Конечно, на время фотосессии взята пиратская мантра, кто же даст медитировать на собственную (пусть и выданную IT-отделом родной фирмы) лицензионную мантру? То-то же.


Общение с внешним миром происходит посредством GPRS, для чего используется мобильный телефон Motorola L7, коего V.exeR с некоторых пор большой фанат. Мобильный телефон вы видеть тут не можете, потому как им это все снималось.

Между монитором и корпусом обосновалась ключевая фигура рабочего места V.exeR'a - статуэтка Калинина. Это символ интеллекта, монументальной личности и держатель всяческих записочек, если их под него подсунуть.

За могучей статуэткой Калинина скромно виднеется принтер. Так вот, принтер чужой и нагло влез в кадр. Родной принтер находится правее системного блока и в кадр не влез.

Ввод информации происходит, как и в большинстве машин в мире, с помощью клавиатуры и манипулятора типа «мышь». Причем если с мышью все понятно, то с клавиатурой требуется малюсенькое пояснение. Поскольку V.exeR орудует по большей части пальцами, широко используя комбинации клавиш с участием «Insert», «Delete», «Home», «End» и т.п., на клавиатурах нового образца существует тенденция к задеванию дополнительных клавиш «Power Off» и «Sleep», находящихся непосредственно под этими самыми «Insert», «End» и «Page Down». Реакция компьютера на нажатие этих клавиш сопровождается мелодичным завыванием V.exeR'a, перечисляющим разработчиков таких клавиатур, их близких и не очень родственников и тяжких увечий, которые, по его мнению, совершенно необходимо незамедлительно им нанести. Чтобы ритуал завывания не повторялся каждые 2-3 часа, используется клавиатура старого, самого что ни на есть консервативного образца. КПД при работе на такой клавиатуре у V.exeR'а может достигать значений, как это ни парадоксально, близких или даже превышающих 100%.

В общем, рабочее место вполне себе работоспособное. И если иногда V.exeR'у оно кажется неудобным, неуютным, тормозящим, глючащим и своенравным, то это очень ненадолго. Потому что в принципе, каким бы ни было его рабочее место, оно определенно лучше и дружелюбнее, чем изображенное на рис.3. На этом наша экскурсия подошла к концу, всем спасибо, приходите еще.

рис.3


комментарии: 3 RSS HTML рубрики: жизненноеjuick twitter facebook вконтакте
Супер-акция.

Сфотографировано в одном магазинчике, в пяти минутах от дома, в ликеро-водочном отделе. Против халявной банки огурчиков на закуску действительно не попрешь, и правда супер-акция...


комментарии: 0 RSS HTML рубрики: жизненноеjuick twitter facebook вконтакте
Бонусная функция.

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

- К тому же это еще и фонарик!

Несомненно, это наиболее полезная функция шокера. Я не шучу: надо же видеть, кого ты током шарахнуть собрался. Вдруг это тебя с ночной электрички друг с пивом встречает.


комментарии: 0 RSS HTML рубрики: жизненноеjuick twitter facebook вконтакте
Наш ответ «письмам щастья»

Для человека с контакт-листом в более чем 700 человек я очень необщителен. За весь день могу поговорить только с 3-4 людьми, потому как даже просто поздороваться со всеми появившимися в онлайне я просто не могу - как-никак, еще и работать помимо Интернета надо... В принципе, все мои контакты уже привыкли к тому, что у меня постоянно статус «away», и без дела никто не теребит. Бывает, конечно, пятнадцать раз один и тот же анекдот пришлют, но это ничего, отправить пятнадцать смайликов в ответ у меня руки не отсохнут. Зато совершенно замечательно наблюдать какой-либо психоз вроде «Не принимайте контакт такой-то, это вирус!!!» или «Разошли это сообщение 555 контактам и твой цветок станет серобурмалиновым в крапинку!». Особенно хорошо наверное расходятся сообщения с припиской «А если не перешлете это никому, то ваш хомячок повесится над кроватью и пятнадцать лет вас никто любить не будет». Над этим можно посмеяться раз, другой, но когда сотня-другая контактов теребит эту тему в течении трех-четырех дней, засыпая мессагами с обязательной припиской «Не виноватая я, оно само пришло!», становится как-то тоскливо. Поэтому было придумано «АНТИ-письмо щастья». Ниже цитирую его текст. Пользуйтесь на здоровье.

Если вы не прекратите слать мне всякую фигню, то ваша вторая половина рискует не дождаться вас сегодня с 21.00 до 24.00 домой. Завтра с 8.00 до 10.00 ждите сильнейшего шока при просмотре зеркала и 20 лет джихада, если эта цепь не оборвется сейчас же. Пошли этот текст тому, кто шлет всякую лабуду и удали его из контакт-листа. Аминь.


комментарии: 8 RSS HTML рубрики: это я так шучуjuick twitter facebook вконтакте
Учимся по-новому!

Увидев у младшего брата упражнения по русскому языку под названием «Подбери слово!», я невольно вспомнил про брутфорс и перебор паролей по словарю. В качестве бонуса вспомнил рассказ Орсона Скотта Карда «Гастролер» (слушать, ~105мб), в котором пароли подбирались исходя из психологического портрета человека. Затем минуту-другую я соображал, зачем в пятом классе на уроке русского языка подбирать пароли. Когда картина мира окончательно пришла в норму, я сфотографировал злосчастную книженцию и засел за фотошоп. Слева вы можете созерцать результат двухчасового глумежа.

А вот как выглядела книжечка натурально.



комментарии: 1 RSS HTML рубрики: допридуманоjuick twitter facebook вконтакте
страница: 95 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
Подписаться


Рубрики:

жизненное
аудио-я
видеомонтаж
фотоохота
ремонт
стихи
рассказы
синематограф
библиотека
фонотека
точка зрения
FAQ
приемчики
придумалось
ожидания-прогнозы
допридумано
рингтоны
это я так шучу
обои
микрозарисовки
опасный Интернет
я в печати
поездки-тусовки
смехоспам
мой код
футболки
игродром
подводная жизнь
сайтоводство
программы
персоны
LI.ru
аватарки
курсоры


Разное:

Полка с фильмами
Книжная полка
Полка с играми
Фотоальбом
Избранное


Календарь записей

2017 (9)
май (1)
1 8 15 22 29
2 9 16 23 30
3 10 17 24 31
4 11 18 25
5 12 19 26
6 13 20 27
7 14 21 28
апрель (1)
март (2)
январь (5)
2016 (10)
2015 (3)
2014 (12)
2013 (10)
2012 (17)
2011 (84)
2010 (172)
2009 (228)
2008 (263)
2007 (154)
2006 (4)
2005 (1)
2004 (1)
2002 (1)
2001 (9)
2000 (9)
1999 (1)
© сайт разработан и поддерживается мной.