среда, 20 июля 2011 г.

суббота, 16 июля 2011 г.

Chiba sensei kote

На канале eurokendo 10 дней назад выложили 9 кусочков с семинара Chiba сенсея в Лондоне 1-3 июля 2010. Несмотря на то, что на некоторых видео идиотский вертикальный кадр, это не очень мешает, т.к. можно (и нужно) переключиться на очень хорошее качество (до 1080п).

На первом видео, например, идет обучение, как растащить соперника и заставить его подставиться под коте или под мен. Но цепляет (и не только меня) не столько это, сколько совершенно шикарные коте:



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

Понятно, что быстрые и точные, но у нас на тренировках, или на последнем Кубке Урала тоже проскакивали быстрые и точные коте, но вот этого ощущения шикарности почему-то при этом не возникало :(.

Пока более-менее выцепил только один момент - наши коте идут четко сверху вниз (ну или вбок, если удар идет не по вертикали), здесь же присутствует явное движение синая вперед в момент удара и даже сразу после попадания.

пятница, 15 июля 2011 г.

Как добраться до острова Веры

Для интересующихся, которые попадают ко мне по этой записи -


upd - Как добраться до острова Веры - 2012

Джереми Робинсон. "Кронос"

LiveLib - социальная сеть читателей книг
Кронос

Ни смысла, ни сюжета, ни характеров. Т.е. автор наверно считал, что если в книге будут библейские мифы, обретение веры в бога, сумасшедший миллионер, крутой "морской котик" с верной подругой и экскурсы в палеонтологию и океанографию, то автоматом получится очередной бестселлер а-ля "Код да Винчи". Увы, получилась пустышка.

четверг, 14 июля 2011 г.

Сокрытое в листве

Если активация windows или подключение к центру обновления обламывается с ошибкой 0x80072F8F нужно проверить дату на компьютере.

Подобными сведениями нужно дорожить. ©

среда, 13 июля 2011 г.

Пара-тройка способов поставить Windows Media Player Plugin на сервер

На многих инет-страничках сейчас воспроизведение аудио, радио и видео сделано на Windows Media Player, при попытке открыть их в FireFox или Chrome предлагается установить плагин:

Однако, если попробовать это сделать на windows-сервере (2003 или 2008), инсталлятор плагина скажет: "Package does not support server operating systems":

Для начала нужно открыть закаченный wmpfirefoxplugin.exe архиватором, например RAR-ом, и извлечь из него все файлы, в том числе ffplugin.msi.

Дальше самые умные берут Orca (редактор MSI), открывают ffplugin.msi и удаляют из него (Drop Row) "лишнюю" проверку:

После этого можно спокойно запускать установку измененного пакета:
msiexec /I ffplugin.msi
Люди попроще вместо Orca открывают в архиваторе уже ffplugin.msi, извлекают оттуда NPMSWMPdll, переименовывают в np-mswmp.dll и кладут ее в C:\Program Files\Mozilla Firefox\plugins.

Самые простые берут C:\Program Files\Mozilla Firefox\plugins\np-mswmp.dll на какой-нибудь машине с XP и копируют к себе.

Результат один - работающий плейер:

воскресенье, 10 июля 2011 г.

Вот что получается...

...когда делаешь сайт знакомств, а получается всемирная соц.сеть:



Пора бы уже Цукербергу пошевелить мозгой и переобозвать этот Like во что-то типа Это важно, Не пропустите или там Всем,всем,всем

Как порезать mp3 на части

Иногда попадаются аудиокниги, подкасты или лекции сделаные в виде одного mp3-файла длительностью час или два. Слушать такие файлы на портативном плейере одно мучение - стоит только случайно или по необходимости переключиться на другую запись и привет, пять-десять минут ковыряния с микроскопическими кнопками плейера для поиска "где же это я остановился примерно во второй половине этого 70-минутного файла" обеспечены.

Вообщем, нужна была утилитка, которая позволяла бы одним ударом порубить mp3 файл на части нужной длины. И таки удалось выцепить нужное - mp3splt - бесплатная, с исходниками, есть варианты для нескольких наиболее распространенных ОС.

Желаемая нирвана теперь достигается одной командой:
mp3splt.exe -t 5.00 input.mp3
всё, рядом с input.mp3 лежит нарезка на 5-минутные кусочки:
input_000m_00s__005m_00s.mp3
input_005m_00s__010m_00s.mp3
input_010m_00s__015m_00s.mp3
input_015m_00s__020m_00s.mp3
input_020m_00s__025m_00s.mp3
input_025m_00s__030m_00s.mp3
input_030m_00s__035m_00s.mp3
input_035m_00s__040m_00s.mp3
input_040m_00s__045m_00s.mp3
input_045m_00s__050m_00s.mp3
input_050m_00s__055m_00s.mp3
input_055m_00s__060m_00s.mp3
input_060m_00s__065m_00s.mp3
input_065m_00s__070m_00s.mp3
input_070m_00s__075m_00s.mp3
input_075m_00s__080m_00s.mp3
input_080m_00s__085m_00s.mp3
input_085m_00s__090m_00s.mp3
input_090m_00s__095m_00s.mp3
input_095m_00s__100m_00s.mp3
input_100m_00s__104m_03s_63h.mp3

Утилитка, кстати, умеет резать еще всяко по-разному - с ручным указанием нужного интервала, по данным из CDDB или из .cue-файлов. Есть также неконсольный вариант:

суббота, 9 июля 2011 г.

Создание сайта на IIS из инсталлятора

Смотрю кого-то занесло ко мне с поиском по фразе "как сделать инсталлятор сайта на iis". На самом деле их есть у меня. Вот выдержки из скрипта для Inno Setup, создающего сайт на основе каталога с файлами.

Несколько общих переменных и констант:
var
  WebSiteNamePage: TInputQueryWizardPage;
  DispatchWebSiteName: string;

const
  IISServerName = 'localhost';
  IISServerNumber = '1';
В самом начале убеждаемся, что все необходимое на месте:
function InitializeSetup(): Boolean;
begin
 // Проверка, что установлено все необходимое ПО
 result := IsDotNet35Installed() and IsSQLServerInstalled() and IsIISInstalled();
end;

// Проверка, что установлен Microsoft IIS
function IsIISInstalled() : Boolean;
var
 IIS: Variant;
begin
  try
    IIS := CreateOleObject('IISNamespace');
    result:=true;
  except
    result:=false;
    MsgBox( CustomMessage('InstallIIS'), mbError, MB_OK );
  end;
end;
Собственно создание сайта у меня происходит в PostInstall(), когда уже скопированы все файлы сайта:
// Действия после установки
procedure PostInstall();
begin
 // Создать виртуальный каталог IIS для сайта
 CreateDispatchVirtualDir();
end;

// Создание сайта на основе каталога со скопированными файлами
function CreateDispatchVirtualDir() : Boolean;
var
 IIS, WebSite, WebServer, WebRoot, VDir: Variant;
 ErrorCode: Integer;
begin
 result:=true;
 // подключение к IIS
 try
  IIS := CreateOleObject('IISNamespace');
 except
  result:=false;
  MsgBox( CustomMessage('InstallIIS'), mbError, MB_OK );
 end;

 if result then
 begin
  try
   // берем рычаги
   DispatchWebSiteName := WebSiteNamePage.Values[0];
   WebSite := IIS.GetObject('IIsWebService', IISServerName + '/w3svc');
   WebServer := WebSite.GetObject('IIsWebServer', IISServerNumber);
   WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');

   // удаляем виртуальный каталог, который собираемся создавать
   try
    WebRoot.Delete('IIsWebVirtualDir', DispatchWebSiteName);
    // сохранить изменения
    WebRoot.SetInfo();
   except
   end;

   // создаем виртуальный каталог
   VDir := WebRoot.Create('IIsWebVirtualDir', DispatchWebSiteName);
   VDir.AccessRead := True;
   VDir.AccessScript:=true;
   VDir.DefaultDoc:='default.aspx';
   VDir.AppFriendlyName := DispatchWebSiteName;
   VDir.Path := ExpandConstant('{app}');
   VDir.AppCreate(True);
   // сохранить изменения
   VDir.SetInfo();

   // открываем сайт в браузере
   ShellExec( 'open', 'http://' + IISServerName + '/' + DispatchWebSiteName + '/', '', '', SW_SHOW, ewNoWait, ErrorCode );
   result:=true;
  except
   MsgBox( CustomMessage('VirtualDirNotInstalled'), mbError, MB_OK );
   result:=false;
  end;
 end;
end;
Ну и удаление при деинсталляции:
// Действия после деинсталляции
procedure PostUninstall();
begin
 DeleteDispatchVirtualDir();
end;

// Удаление виртуального каталога
function DeleteDispatchVirtualDir() : Boolean;
var
 IIS, WebSite, WebServer, WebRoot: Variant;
begin
 result:=true;
 // подключение к IIS
 try
  IIS := CreateOleObject('IISNamespace');
 except
  result:=false;
 end;

 if result then
 begin
  try
   // берем рычаги
   WebSite := IIS.GetObject('IIsWebService', IISServerName + '/w3svc');
   WebServer := WebSite.GetObject('IIsWebServer', IISServerNumber);
   WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');

   // удаляем виртуальный каталог
   try
    WebRoot.Delete('IIsWebVirtualDir', DispatchWebSiteName);
    // сохранить изменения
    WebRoot.SetInfo();
   except
   end;
   result:=true;
  except
   result:=false;
  end;
 end;
end;
Скрипт проверен на windows 2003 и 2008. Надо только не забывать в 2008-й при настройке ролей сервера дополнительно инсталлировать компоненты, обеспечивающие совместимость со средствами управления IIS6:

суббота, 2 июля 2011 г.

«Родовой кинжал»

LiveLib - социальная сеть читателей книг

Александра Руда «Родовой кинжал»

Родовой кинжал

Обычно, когда говорят об отношениях писателя и книги, употребляют выражение "как ребенок", типа писатель с ней носится 9 месяцев или 2 года, потом книгу издают и начинается у нее самостоятельная жизнь, уже от писателя не зависящая.

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

Вообщем, если попытаться передать впечатление после прочтения одним словом, то слово это - недоумение.

А уж если вспомнить известное письмо писателей против пиратов, подписанное автором этой книги... Что тут скажешь... Продолжайте в том же духе и ваши бумажные книги перестанут покупать вообще, только вот кто тут кому злобный буратино?