суббота, 15 августа 2009 г.

Iconv JavaScript

function win2unicode (str){
if (str == null){ return null;}
var result = "";
var o_code = "";
var i_code = "";
for (var I=0; I < str.length; I++){
i_code = str.charCodeAt(I);
if (i_code == 184){
o_code = 1105;
} else
if (i_code == 168){
o_code = 1025;
} else
if (i_code > 191 && i_code < 256){
o_code = i_code + 848; }
else {
o_code = i_code;
}
result = result + String.fromCharCode(o_code);
}


var koi2utf={
163:1105,
179:1025,
192:1102,
193:1072,
194:1073,
195:1094,
196:1076,
197:1077,
198:1092,
199:1075,
200:1093,
201:1080,
202:1081,
203:1082,
204:1083,
205:1084,
206:1085,
207:1086,
208:1087,
209:1103,
210:1088,
211:1089,
212:1090,
213:1091,
214:1078,
215:1074,
216:1100,
217:1099,
218:1079,
219:1096,
220:1101,
221:1097,
222:1095,
223:1098
};

function koi2unicode (str){
if (str == null){ return null;}
var result = "";
var o_code = "";
var i_code = "";
for (var I=0; I < str.length; I++){
i_code = str.charCodeAt(I);
if (koi2utf[i_code] != null){
o_code = koi2utf[i_code];
} else
if (i_code > 223 && koi2utf[i_code-32] != null)
{
o_code = koi2utf[i_code-32]-32;

} else {
o_code = i_code;
}
result = result + String.fromCharCode(o_code);
}

return result;
}



return result;
}

четверг, 13 августа 2009 г.

XPathResult документация FireFox

Реализация XPath в Firefox следует общим стандартам DOM и целиком отличается от реализации XPath в IE. Реализация в Firefox позволяет выполнять выражения XPath как в документах XML, так и в документах HTML. В основе реализации находятся два первичных объекта: XPathEvaluator и XPathResult.

Класс XPathEvaluator вычисляет заданное выражение XPath с помощью метода evaluate(), который принимает пять аргументов: строку с выражением XPath, контекстный узел, к которому должно быть применено выражение, интерпретатор пространств имен (функцию, которая будет обрабатывать пространства имен в выражении), тип результата (существует десять различных типов результата) и объект XPathResult, в который будут помещаться результаты выборки (если в этом аргументе передается значение null, будет создан и возвращен новый объект XPathResult).

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

XPathResult. ANY_TYPE не какой-то конкретизированный тип, какой угодно тип. Метод возвращает тип, который естественным образом вытекает из вычисления выражения.
XPathResult.ANY_UNORDERED_NODE_TYPE возвращает набор узлов, состоящий из единственного узла, к которому можно обратиться через свойство singleNodeValue. В случае если требуемый узел не будет найден, возвращается значение null. Возвращаемый узел может быть, а может не быть первым узлом в документе, соответствующим заданному критерию отбора.
XPathResult. BOOLEAN_TYPE возвращает логическое значение.
XPathResult. FIRST_ORDERED_NODE_TYPE возвращает набор узлов, состоящий из единственного узла, к которому можно обратиться через свойство singleNodeValue класса XPathResult. Возвращаемый узел обязательно будет первым узлом в документе, соответствующим заданному критерию отбора.
XPathResult. NUMBER_TYPE возвращает числовое значение.
XPathResult. ORDERED_NODE_ITERATOR_TYPE возвращает упорядоченный (в порядке следования в документе) набор узлов, который можно последовательно обойти с помощью метода (итератора) iterateNext (). Этот метод позволяет обратиться к любому узлу в наборе.
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE возвращает упорядоченный (в порядке следования в документе) статический набор узлов. Модификации узлов, выполняемые в документе, не оказывают влияния на результат.
XPathResult. STRING_TYPE возвращает текстовую строку.
XPathResult.UNORDERED_NODE_ITERATOR_TYPE -возвращает неупорядоченный набор узлов, обойти который можно с помощью уже упоминавшегося метода iterateNext(). Однако порядок следования узлов в наборе может совпадать, а может не совпадать с порядком следования узлов в документе.
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE возвращает неупорядоченный статический набор узлов. Модификации узлов, выполняемые в документе, не оказывают влияния на результат.
Чаще всего используется тип XPathResult. ORDERED_NODE_ITERATOR_TYPE:

var oEvaluator = new XPathEvaluatorO;
var sXPath = "book/author";
var oResult = oEvaluator.evaluateCsXPath.oXmlDorc.documentElement,null, XPathResult.OROERED_NODE_ITERATOR_TYPE, null);
var aNodes = new Array;
if (oResult != null) { var oElement;
while (oElement = oResult. iterateNextO) { aNodes.push(oElement);
}

Этот фрагмент кода создает и вычисляет выражение XPath book/author в контексте корневого элемента документа. Поскольку запрошен результат типа ORDERED_NODE_ITERATOR_TYPE, в качестве результата возвращается набор узлов, обойти который можно посредством метода iterateNextO. По своему действию метод iterateNextO напоминает свойство nextSibling узла DOM в том смысле, что он выбирает следующий узел из результирующего набора и возвращает значение null по достижении конца набора. Эта функция может быть использована в цикле while, как в предыдущем примере, где цикл продолжает работу до тех пор, пока в oElement не появится пустая ссылка, и добавляет очередной узел в массив aNodes с помощью метода push О. Заполненный массив может использоваться, как в IE, что позволяет получать доступ к элементам массива в цикле for.

Мой Пример:

s='/html/body/div/div[3]/div[2]/div/div/div[4]/div/div['+i.toString()+']/table/tbody/tr/td[2]/div/dl/dd/div/a';
headings = document.evaluate(s, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE , null);
//возвращает колличество полученных элементов.
alert(headings.snapshotLength.toString());
//возвращает ссылку [a.href]
userhref=headings.snapshotItem(0).toString();
//возвращает контент snapshotItem(0) -го элемента из возвращенных.
alert(headings.snapshotItem(0).textContent);

//Колличество ссылок в документе:

var linkCount = document.evaluate('count(//a[@href])',
document, null, XPathResult.NUMBER_TYPE, null
).getNumberValue();

пятница, 24 июля 2009 г.

Flash-безопасность.

Данные xml надо разместить на торонний сервер если вы считываете с него данные через Flash с помощью SendAndLoad
_____________________________________________________________________________

<cross-domain-policy>
<allow-access-from domain="*.*" headers="*">
</allow-access-from>
______________________________________________________________________________
<cross-domain-policy>
<site-control policies="master-only">
<allow-access-from domain="*">
<allow-http-request-headers-from domain="*" headers="*">
</allow-http-request-headers-from>
_______________________________________________________________________________

понедельник, 22 июня 2009 г.

PHP : время генерации скрипта

////////////////////////////////////////////////
//Считываем текущее время
$mtime = microtime();
//Разделяем секунды и миллисекунды
$mtime = explode(" ",$mtime);
//Составляем одно число из секунд и миллисекунд
$mtime = $mtime[1] + $mtime[0];
//Записываем стартовое время в переменную
$tstart = $mtime;
////////////////////////////////////////////////
НАШ КОД!!!!!!!!!!!!!!
//////////////////////////////////////////////////
//Делаем все то же самое, чтобы получить текущее время
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
//Записываем время окончания в другую переменную
$tend = $mtime;
//Вычисляем разницу
$totaltime = ($tend - $tstart);
//Выводим не экран
printf ("Страница сгенерирована за %f секунд !", $totaltime);
/////////////////////////////////////////////////////

среда, 17 июня 2009 г.

Статистика. Процент пользователей Linux

Наиболее популярными остаются компьютеры на базе операционной системы Windows, их доля составляет 87,9 %. Второй по популярности является ОС Mac, которая устанавливается на компьютерах компании Apple, с долей 9,73 %.

Количество Linux-устройств, используемых для выхода в интернет, составило 1,02 %.

Такие данные приводит компания Net Applications в своем исследовании. Отмечается, что многие производители сейчас поставляют на рынок компьютеры с предустановленной ОС Linux, а сами Linux-системы становятся более функциональными и простыми в использовании.

JavaScript/ActionScript + JSON

json.as
http://www.json.org/

Пример использования JSON в JavaScript. Для ActionScript работает так же.

http://habrahabr.ru/blogs/javascript/60282/

пятница, 12 июня 2009 г.

3D Размышления о манипуляторах и манипулируемых.

Я сегодня размышлял о манипуляции 3D объектами.
Вопрос заключался в том, кто должен быть главным,
манипулируемый объект(м2), или манипулятор(м1).
А точнее кто должен отлавливать сообщения о воздействии на объект.
Пример:
м1->м2
м1 = человек.
м2 = пульт.
Задача: Человек берёт пульт, или пульт берётся человеком?
1.Если пульт берётся человеком(м2<-м1), в этом случае, у пульта есть ловушка onAction. И она отлавливает воздействия на неё 3-их сил. В данном случае человека. - подумав, и размножив мысленно объекты, пришёл к выводу что будет колоссальная нагрузка на мир(процессор). Посмотрите вокруг, куча объектов, и все они проверяют не пытается ли кто-нибудь взаимодействовать с ними. + объект м2 управляет собой на своём уровне и сам изменяет свои свойства. м1 выполняет только свои роли, не вмешиваясь в жизнь м2. 2.Если человек берёт пульт(м1->м2), то в ловушке событий человека(м1), должно быть воздействие на методы и свойства пульта(м2).
Однако, получается что : м1 вмешивается в природу реакций м2.
К тому же, От этого, метод человека, по взаимодействию на предметы с разной природой будет сильно разбухать.
-> Внешнее воздействие.
-> Если использовать этот вариант, нужно сгруппировать методы и свойства м2, для уменьшения кода в м1.
3. Вариант, группируем 2 и 1 варианты.
Остаются только манипуляторы, как в 1 случае. Только они могут нести воздействие.
Силу для м2 даёт и воздействует м1. м2 создаёт собственную ловушку onAction, для воздействия на объекты, по траектории своего движения [м3-мx].
[м3-мx] при достаточности силы м2, так же станут манипуляторами.

Подумав, я пришёл к выводу, что вариант 2, + ближе к 3-ему предпочтительнее.

Создание cpl в Delpi

По нажатию открывает блокнот. Для добавления привычных функций, подключите в Uses > SysUtils.
Для разработки строго на WinApi, используйте Message.

library TestCpl;

uses
Windows;

const NUM_APPLETS = 1;

{$IFDEF WIN32}
const CPL_DYNAMIC_RES = 0;
{$ENDIF}
const CPL_INIT = 1;
const CPL_GETCOUNT = 2;
const CPL_INQUIRE = 3;
const CPL_SELECT = 4;
const CPL_DBLCLK = 5;
const CPL_STOP = 6;
const CPL_EXIT = 7;
const CPL_NEWINQUIRE = 8;
{$IFDEF WIN32}
const CPL_STARTWPARMS = 9;
{$ENDIF}
const CPL_SETUP = 200;

{$IFNDEF WIN32}
type DWORD = LongInt;
{$ENDIF}

type TCplInfo = record
idIcon : integer;
idName : integer;
idInfo : integer;
lData : LongInt;
end;
PCplInfo = ^TCplInfo;

type TNewCplInfoA = record
dwSize : DWORD;
dwFlags : DWORD;
dwHelpContext : DWORD;
lData : LongInt;
IconH : HIcon;
szName : array [0..31] of char;
szInfo : array [0..63] of char;
szHelpFile : array [0..127] of char;
end;
PNewCplInfoA = ^TNewCplInfoA;

{$IFDEF WIN32}
type TNewCplInfoW = record
dwSize : DWORD;
dwFlags : DWORD;
dwHelpContext : DWORD;
lData : LongInt;
IconH : HIcon;
szName : array [0..31] of WChar;
szInfo : array [0..63] of WChar;
szHelpFile : array [0..127] of WChar;
end;
PNewCplInfoW = ^TNewCplInfoW;
{$ENDIF}

type TNewCplInfo = TNewCplInfoA;
type PNewCplInfo = ^TNewCplInfoA;

function CPlApplet(hWndCPL : hWnd;
iMEssage : integer;
lParam1 : longint;
lParam2 : longint) : LongInt
{$IFDEF WIN32} stdcall; {$ELSE} ; export; {$ENDIF}
begin
case iMessage of
CPL_INIT : begin
Result := 1;
exit;
end;
CPL_GetCount : begin
Result := NUM_APPLETS;
exit;
end;
CPL_Inquire : begin
PCplInfo(lParam2)^.idIcon := 2;
PCplInfo(lParam2)^.idName := 1;
PCplInfo(lParam2)^.idInfo := 2;
PCplInfo(lParam2)^.lData := 0;
Result := 1;
exit;
end;
CPL_NewInquire : begin
PNewCplInfo(lParam2)^.dwSize := sizeof(TNewCplInfo);
PNewCplInfo(lParam2)^.dwHelpContext := 0;
PNewCplInfo(lParam2)^.lData := 0;
PNewCplInfo(lParam2)^.IconH := LoadIcon(hInstance,
MakeIntResource(2));
lStrCpy(@PNewCplInfo(lParam2)^.szName, 'TestCPL');
lStrCpy(PNewCplInfo(lParam2)^.szInfo, 'My Test CPL');
PNewCplInfo(lParam2)^.szHelpFile[0] := #0;
Result := 1;
exit;
end;
CPL_SELECT : begin
Result := 0;
exit;
end;
CPL_DBLCLK : begin
WinExec('Notepad.exe', SW_SHOWNORMAL);
Result := 1;
exit;
end;
CPL_STOP : begin
Result := 0;
exit;
end;
CPL_EXIT : begin
Result := 0;
exit;
end else begin
Result := 0;
exit;
end;
end;
end;

exports CPlApplet name 'CPlApplet';

begin
end.

Размер приложения занял всего 16 кбайт :) После того, как оно был дополнительно сжато UPX, осталось только 9кбайт.

среда, 10 июня 2009 г.

проверка Контента на уникальность

CopyScape ,Антиплагиат, Double Content Finder - Это сервисы для проверки контекста на уникальность.
------------------------------------------------------------------------------
Далее для фильма Секрет описание, пропущенное через мой синонимайзер :)
По крайне мере copyscape не распознал, только что.
Надо страниц тысячу синонимизировать и посмотреть отклик, на сайте.
------------------------------------------------------------------------------
одолжить потайная жила вечно . Ее обнаруживали согласию , ее содержали в тайне , ее лишались и отыскивали заново . За ней били , ее старались испытать целыми доступными множествами и лекарствами . И вот настал время , иногда одолжить потайное познание заново обнаруживается согласию .

Многие большие народы былого имели одолжить познанием : Платон, Леонардо, Галилей, Наполеон, Бетховен, Линкольн, Эйнштейн, Карнеги и многие вторые . пая его заводились в больших маневрах , в литературе, в философских договорах и культовых текстах. впервой в истории целое разрозненные отрывки составлены совместно в одолжить странном письме , коренным типом изменяющем существования тех, кто-нибудь к нему касается .

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

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

вторник, 9 июня 2009 г.

3D Max + Flash == Sandy. Импорт 3D моделей во Flash

Сижу изучаю 3D Max.
Для этого решил воспользоваться уроками на Intuit.ru
Intuit.ru* - Здесь предоставлены бесплатные удалённые курсы по различным направлениям ИТ
После чего займусь экспортом/Импортом во Флеш используя библиотеку Sandy.

Программа следующая:
1.Ссылка на уроки 3d max.
2.Ссылка на уроки импорта 3dmax объектов в Sandy. Так же там рассказано про ActionScript и основы проектирования MMPORG игр.
Доступно рассказывается об использовании библиотеки Sandy.

PS: Sandy рабоает и с другими моделями. Например из Maya. Все поддерживаемые 3D редакторы, полную документацию и примеры можно найти на их сайте

пятница, 29 мая 2009 г.

Анализ Русского Языка

Склонение слов.



На сайте Морфей расположена программа, позволяющая склонять слова в различных падежах.
На указанной странице также содержатся аналогичные программы.
+ RCO (http://www.rco.ru)
-----------
Она платная, однако использовать в PHP можно и бесплатно, при помощи POST запроса.

Программный разбор синтаксиса языка. Теория.


ВЕРОЯТНОСТНЫЙ СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР ДЛЯ ИНФОРМАЦИОННО-ПОИСКОВОЙ СИСТЕМЫ

четверг, 28 мая 2009 г.

Disassembler.[ Swf to fla ]

Для преобразования Swf в Fla, были найденны следующие программы.

среда, 27 мая 2009 г.

Подгонка субтитров

и так, решил я изучать Английский. Видео было благополучно найдено. А вот с субтитрами пришлось чуть-чуть поразбираться.

Введение

Где скачать русские/английские субтитры.
http://subs.com.ru/

Текстовые субтитры:
* srt — программы SubRip. Это основной Формат.
Т.к. почти везде на него я и натыкался.

* smi (smil) — текстовый формат субтитров, основанный на SGML.
* s2k — субтитры программы Sasami.
* ssa —субтитры программы Sub Station Alpha.
* ass — продолжение из серии ssa.

Двоичный формат
субтитров :
* sub/idx — используются в программе VobSub. Это графические субтитры, вырезанные из DVD (например, DVD Decrypter-ом).

Как просматривать субтитры?

Как было указанно выше, просматриваются они обычным редактором текста.

как открыть, субтитры: *.srt, ?

Для их проигрывания, был использован DVD плеер: CyberLink PowerDVD.
[Player].[Правая Кнопка]=>Subtitles=> Выбор необходимых Вам субтитров(или CTRL+U)

Что бы субтитры отображались, в списке, вам нужно что-бы имя субтитров совпадало с названием фильма.

Как подогнать субтитры в фильме


Вы заметили, что субтитры отстают от фильма?
Нарушена синхронизация. Сейчас мы с Вами её наладим :)

Как было сказано выше. В основном субтитры в текстовом формате.
Но в ручную перевбивать время для отрезков субтитров, долго.
Поэтому есть автоматизированные споособы правки.

Сделаем это!
-------*.srt--------
Используем программу dsrt для того что бы подогнать субтитры.
  1. Открыть Srt-файл время в котором Вы хотите сдвинуть.
  2. Выделить весь текст.
  3. [Скрипт]=>[Сдвинуть или ретаймировать]=>[Сдвинуть скрипт/Выделенного фрагмента]
  4. произвести сдвиг.
Готово теперь Ваш фильм идёт синхронно с переводом. Наслаждайтесь. Вы заслужили! :)

понедельник, 25 мая 2009 г.

ShareWare. Процесс создания


Схема написания ShareWare продукта.

Общая схема получения ShareWare программы.

  • Написание программы.
  • Ограничение использования
  • Создание сайта фирмы
  • Договоры с регистраторами и сборщиками денег
  • Открыти счёта
  • Сопроваждение программы
  • Получение денег.


суббота, 23 мая 2009 г.

Hex Editor : Компонент-Редактор бинарных данных

Компонент : TMPHexEditor

Описание: HEX-Редактор. Компонент предназначен для экспорта/импорта и редактирования бинарных данных(Binary data)

Адрес Автора: mirkes.de


Письмо от Google на 1800 рублей

Сегодня пришло письмо от Google Off-line.
Акция: 1800 рублей на рекламу.
Акция продлиться до 30 июня, как будто специально к моему дню рождения.
Я рад :)
Да, для активации всё же надо внести 200 рублей.
И всё равно это очень выгодное предложение!

четверг, 21 мая 2009 г.

Заработок в сети.

На данный момент мне известны следующие распространённые способы заработка в сети для onLine обывателя:
1. Реклама
2. Инвестирование денег
2.1. HYIP(высоко-доходные инвестиционные проекты) -
Выплты в 30-50% ежемесячно, или 0,5-2% в день сдесь обычная ситуация. При обещании 200% выручки, будьте уверенны, вы имеете мошенниками.
На данный момент львиная доля из них работает с Liberty Reserve.

см. в wikipedia.org

2.2. Золотые кошельки - отошли деньги на такой-то кошелёк и тебе придёт в x2 раза больше.
По интернету ходит куча таких историй, однако я не буду углубляться в данную тему, т.к. и так думаю понятно что это лажа.
2.3. Финансовые пирамиды -

Летопись:
Америка: Первая пирамида была придумана Американцем
Чарльзом Понти в 1919 году. Он отрыл компанию «Сохранение и безопасность бизнеса». Инвесторы вкладывали деньги под высокие % но денежная масса просто накапливалась, а % выплачивались за счет новых вкладов.
СССР: Всем известная МММ , товарища Мавроди. Стоит заметить, что пирамиды в оффЛайне по прежнему здравствуют. Полгода назад, в нашем городе закрылось две таких структуры. Изначальные 25%, скатились до 18% и на фоне шумихи с кризисом по тихому свернулись.
Интернет: Вот где свобода. Именно сдесь пирамиды расцветают пышным цветом. Как и HYIP больщинство находятся на Liberty Reserve.
3. Предоставление услуг - Художники, писатели, певцы, переводчики, музыканты...
Данный перечень не полон и поэтому эта статья будет развиваться.

В начале было слово...

PHP
echo("Hello world");'
Delphi/Pascal
writeln('Hello world');
Человеческое
К барьеру граждане, точнее к трибуне :)