{"id":202792,"date":"2013-11-20T01:12:03","date_gmt":"2013-11-19T21:12:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=202792"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=202792","title":{"rendered":"<span class=\"post_title\">\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0437 Web \u0438 Firewall \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 MS TMG \u0432 \u0431\u0430\u0437\u0443 MySQL<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!<br \/>  \u0423\u0434\u043e\u0431\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0442\u0447\u0451\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c.<br \/>  \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 (WEB) \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u043c \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0430 (FWS) \u0441\u0435\u0440\u0432\u0435\u0440\u0430 MS TMG \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u0443 MySQL. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043f\u043e \u044d\u0442\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0442\u0447\u0451\u0442\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041d\u043e, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 SQL Server Express Edition (\u0431\u0430\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c MS TMG) \u0432 \u0431\u0430\u0437\u0443 MySQL. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0447\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c bat-\u0444\u0430\u0439\u043b. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430:  <\/p>\n<pre><code class=\"dos\">cscript &quot;start.vbs&quot; %1 <\/code><\/pre>\n<p>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 start.vbs:  <\/p>\n<pre><code class=\"vbscript\">On Error Resume Next  const gsHelpFile = &quot;c:\\script\\TMG\\help.txt&quot;      ' &lt;-- \u0412 \u0444\u0430\u0439\u043b\u0435 help.txt \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430. 'const gbDebugModeON = false dim gsRunCmd  gsNormalDate = fuNormalizeSystemDate(cStr(DateAdd(&quot;d&quot;, -1, Date))) \t' &lt;-- \u042d\u0442\u043e \u0434\u043b\u044f \u043e\u0442\u0447\u0435\u0442\u0430 \u0437\u0430 \u0432\u0447\u0435\u0440\u0430 (\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c)  if Wscript.Arguments.Count &gt;= 1 then \tif fuNeedHelp(lCase(Wscript.Arguments(0))) then \t\tfuTypeTextfile(gsHelpFile) \t\tWScript.Quit 0 \telse  \t\tgsNormalDate = Wscript.Arguments(0) \tend if end if  wscript.echo gsNormalDate  Set WshShell = CreateObject(&quot;WScript.Shell&quot;) gsRunCmd = &quot;get-TMGReports.bat &quot; & gsNormalDate wscript.echo gsRunCmd WshShell.Run gsRunCmd  ' \u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 function fuNormalizeSystemDate(lsDate) \t'wscript.echo &quot;Function get: &quot; & lsDate \tlsNormalizeDate = lsDate \t \tif InStr(lsDate, &quot;.&quot;) then \t\tlArrDate = Split(lsDate, &quot;.&quot;) \t\tlsNormalizeDate = lArrDate(2) & lArrDate(1) & lArrDate(0) \telseif InStr(lsDate, &quot;\/&quot;) then \t\tlArrDate = Split(lsDate, &quot;\/&quot;) \t\tlsNormalizeDate = fuCheckDatePart(lArrDate(2)) & fuCheckDatePart(lArrDate(0)) & fuCheckDatePart(lArrDate(1)) \telseif InStr(lsDate, &quot;\\&quot;) then \t\tlArrDate = Split(lsDate, &quot;\\&quot;) \t\tlsNormalizeDate = fuCheckDatePart(lArrDate(2)) & fuCheckDatePart(lArrDate(0)) & fuCheckDatePart(lArrDate(1)) \tend if \t \tfuNormalizeSystemDate = lsNormalizeDate end function   function fuNeedHelp(lsPar) \tlbFoo = false \tif  InStr(lsPar, &quot;-h&quot;) or InStr(lsPar, &quot;help&quot;) or InStr(lsPar, &quot;\/h&quot;) or InStr(lsPar, &quot;?&quot;) then \t\tlbFoo = true \tend if \tfuNeedHelp = lbFoo end function   function fuTypeTextfile(lsTextfile) \tSet objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;) \tSet objTextFileShowHelp = objFSO.OpenTextFile(lsTextfile, 1) \tDo Until objTextFileShowHelp.AtEndOfStream \t\twscript.echo objTextFileShowHelp.Readline \tLoop \tobjTextFileShowHelp.Close end function   function fuCheckDatePart(lsDate) \tlsNormalizeDate = lsDate \t \tif len(lsDate) &lt;= 1 then \t\tlsNormalizeDate = &quot;0&quot; & lsDate \tend if \t \tfuCheckDatePart = lsNormalizeDate end function  <\/code><\/pre>\n<p>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 get-TMGReports.bat:  <\/p>\n<pre><code class=\"dos\">bcp.exe &quot;SELECT DISTINCT UrlDestHost,ClientUserName,SUM(processingtime) as processingtime,SUM(bytesrecvd) as bytesrecvd,SUM(bytessent) as bytessent,ClientIP FROM [ISALOG_%1_WEB_000].[dbo].[WebProxyLog] where resultcode not in (12202,12302) GROUP BY ClientUserName,UrlDestHost,ClientIP&quot; queryout &quot;ISALOG_%1_WEB_000.xls&quot; -c -T -S TMG-SERVER\\MSFW copy ISALOG_%1_WEB_000.xls \\\\WEB-SERVER\\c$\\script\\TMG\\Export\\2012\\1\\ISALOG_%1_WEB_000_01.xls  bcp.exe &quot;SELECT DISTINCT UrlDestHost,ClientUserName,SUM(processingtime) as processingtime,SUM(bytesrecvd) as bytesrecvd,SUM(bytessent) as bytessent,ClientIP,convert(varchar, logTime, 108),uri FROM [ISALOG_%1_WEB_000].[dbo].[WebProxyLog] where resultcode not in (12202,12302) GROUP BY ClientUserName,UrlDestHost,ClientIP,convert(varchar, logTime, 108),uri&quot; queryout &quot;ISALOG_%1_WEB_000_FULL.xls&quot; -c -T -S TMG-SERVER\\MSFW move ISALOG_%1_WEB_000_FULL.xls \\\\WEB-SERVER\\c$\\script\\TMG\\Export\\2012\\2\\ISALOG_%1_WEB_000_FULL_01.xls  bcp.exe &quot;SELECT [servername],[ClientUserName],[logTime],[Action],[resultcode],[rule],[protocol],[SourceIP],[SourcePort],[DestinationIP],[DestinationPort],[OriginalClientIP],[SourceNetwork],[DestinationNetwork],[ApplicationProtocol],[bytessent],[bytessentDelta],[bytesrecvd],[bytesrecvdDelta],[connectiontime],[connectiontimeDelta],[DestinationName],[ClientAgent],[sessionid],[connectionid],[InternalServiceInfo] FROM [ISALOG_%1_FWS_000].[dbo].[FirewallLog] WHERE [ClientUserName] &lt;&gt; '-' AND [protocol] = 'TCP'&quot; queryout &quot;ISALOG_%1_FWS_000.xls&quot; -c -T -S TMG-SERVER\\MSFW copy ISALOG_%1_FWS_000.xls \\\\WEB-SERVER\\c$\\script\\TMG\\Export\\2012\\fws\\ISALOG_%1_FWS_000_01.xls <\/code><\/pre>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 \u0431\u0430\u0437\u0435 MySQL:  <\/p>\n<pre><code class=\"sql\">CREATE TABLE IF NOT EXISTS ISALOG_WEB_000 (   dt date NOT NULL,   UrlDestHost varchar(2048) NOT NULL,   ClientUserName varchar(1024) NOT NULL,   processingtime int(11) NOT NULL,   bytesrecvd int(11) NOT NULL,   bytessent int(11) NOT NULL,   ClientIP varchar(64) NOT NULL,   KEY ClientUserName (ClientUserName(1000)),   KEY UrlDestHost (UrlDestHost(1000)),   KEY dt (dt) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='\u0414\u0430\u043d\u043d\u044b\u0435 \u0441 01.01.2013' \/*!50100 PARTITION BY RANGE ( TO_DAYS(dt)) (PARTITION p2013_01 VALUES LESS THAN (735265) ENGINE = MyISAM,  PARTITION p2013_02 VALUES LESS THAN (735293) ENGINE = MyISAM,  PARTITION p2013_03 VALUES LESS THAN (735324) ENGINE = MyISAM,  PARTITION p2013_04 VALUES LESS THAN (735354) ENGINE = MyISAM,  PARTITION p2013_05 VALUES LESS THAN (735385) ENGINE = MyISAM,  PARTITION p2013_06 VALUES LESS THAN (735415) ENGINE = MyISAM,  PARTITION p2013_07 VALUES LESS THAN (735446) ENGINE = MyISAM,  PARTITION p2013_08 VALUES LESS THAN (735477) ENGINE = MyISAM,  PARTITION p2013_09 VALUES LESS THAN (735507) ENGINE = MyISAM,  PARTITION p2013_10 VALUES LESS THAN (735538) ENGINE = MyISAM,  PARTITION p2013_11 VALUES LESS THAN (735568) ENGINE = MyISAM,  PARTITION p2013_12 VALUES LESS THAN (735599) ENGINE = MyISAM,  PARTITION p2014_01 VALUES LESS THAN (735630) ENGINE = MyISAM,  PARTITION p2014_02 VALUES LESS THAN (735658) ENGINE = MyISAM,  PARTITION p2014_03 VALUES LESS THAN (735689) ENGINE = MyISAM,  PARTITION p2014_04 VALUES LESS THAN (735719) ENGINE = MyISAM,  PARTITION p2014_05 VALUES LESS THAN (735750) ENGINE = MyISAM,  PARTITION p2014_06 VALUES LESS THAN (735780) ENGINE = MyISAM,  PARTITION p2014_07 VALUES LESS THAN (735811) ENGINE = MyISAM,  PARTITION p2014_08 VALUES LESS THAN (735842) ENGINE = MyISAM,  PARTITION p2014_09 VALUES LESS THAN (735872) ENGINE = MyISAM,  PARTITION p2014_10 VALUES LESS THAN (735903) ENGINE = MyISAM,  PARTITION p2014_11 VALUES LESS THAN (735933) ENGINE = MyISAM,  PARTITION p2014_12 VALUES LESS THAN (735964) ENGINE = MyISAM,  PARTITION p2015_01 VALUES LESS THAN (735995) ENGINE = MyISAM,  PARTITION p2015_02 VALUES LESS THAN (736023) ENGINE = MyISAM,  PARTITION p2015_03 VALUES LESS THAN (736054) ENGINE = MyISAM,  PARTITION p2015_04 VALUES LESS THAN (736084) ENGINE = MyISAM,  PARTITION p2015_05 VALUES LESS THAN (736115) ENGINE = MyISAM,  PARTITION p2015_06 VALUES LESS THAN (736145) ENGINE = MyISAM,  PARTITION p2015_07 VALUES LESS THAN (736176) ENGINE = MyISAM,  PARTITION p2015_08 VALUES LESS THAN (736207) ENGINE = MyISAM,  PARTITION p2015_09 VALUES LESS THAN (736237) ENGINE = MyISAM,  PARTITION p2015_10 VALUES LESS THAN (736268) ENGINE = MyISAM,  PARTITION p2015_11 VALUES LESS THAN (736298) ENGINE = MyISAM,  PARTITION p2015_12 VALUES LESS THAN (736329) ENGINE = MyISAM,  PARTITION p2016_01 VALUES LESS THAN (736360) ENGINE = MyISAM,  PARTITION p2016_02 VALUES LESS THAN (736389) ENGINE = MyISAM,  PARTITION p2016_03 VALUES LESS THAN (736420) ENGINE = MyISAM,  PARTITION p2016_04 VALUES LESS THAN (736450) ENGINE = MyISAM,  PARTITION p2016_05 VALUES LESS THAN (736481) ENGINE = MyISAM,  PARTITION p2016_06 VALUES LESS THAN (736511) ENGINE = MyISAM,  PARTITION p2016_07 VALUES LESS THAN (736542) ENGINE = MyISAM,  PARTITION p2016_08 VALUES LESS THAN (736573) ENGINE = MyISAM,  PARTITION p2016_09 VALUES LESS THAN (736603) ENGINE = MyISAM,  PARTITION p2016_10 VALUES LESS THAN (736634) ENGINE = MyISAM,  PARTITION p2016_11 VALUES LESS THAN (736664) ENGINE = MyISAM,  PARTITION p2016_12 VALUES LESS THAN (736695) ENGINE = MyISAM,  PARTITION p2017 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) *\/;  CREATE TABLE IF NOT EXISTS ISALOG_WEB_000_FULL (   dt date NOT NULL,   UrlDestHost varchar(2048) NOT NULL,   ClientUserName varchar(1024) NOT NULL,   processingtime int(11) NOT NULL,   bytesrecvd int(11) NOT NULL,   bytessent int(11) NOT NULL,   ClientIP varchar(64) NOT NULL,   tm time NOT NULL,   uri varchar(2048) NOT NULL,   KEY ClientUserName (ClientUserName(1000)),   KEY UrlDestHost (UrlDestHost(1000)),   KEY dt (dt) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='\u0414\u0430\u043d\u043d\u044b\u0435 \u0441 19.07.2013' \/*!50100 PARTITION BY RANGE ( TO_DAYS(dt)) (PARTITION p2013_01 VALUES LESS THAN (735265) ENGINE = MyISAM,  PARTITION p2013_02 VALUES LESS THAN (735293) ENGINE = MyISAM,  PARTITION p2013_03 VALUES LESS THAN (735324) ENGINE = MyISAM,  PARTITION p2013_04 VALUES LESS THAN (735354) ENGINE = MyISAM,  PARTITION p2013_05 VALUES LESS THAN (735385) ENGINE = MyISAM,  PARTITION p2013_06 VALUES LESS THAN (735415) ENGINE = MyISAM,  PARTITION p2013_07 VALUES LESS THAN (735446) ENGINE = MyISAM,  PARTITION p2013_08 VALUES LESS THAN (735477) ENGINE = MyISAM,  PARTITION p2013_09 VALUES LESS THAN (735507) ENGINE = MyISAM,  PARTITION p2013_10 VALUES LESS THAN (735538) ENGINE = MyISAM,  PARTITION p2013_11 VALUES LESS THAN (735568) ENGINE = MyISAM,  PARTITION p2013_12 VALUES LESS THAN (735599) ENGINE = MyISAM,  PARTITION p2014_01 VALUES LESS THAN (735630) ENGINE = MyISAM,  PARTITION p2014_02 VALUES LESS THAN (735658) ENGINE = MyISAM,  PARTITION p2014_03 VALUES LESS THAN (735689) ENGINE = MyISAM,  PARTITION p2014_04 VALUES LESS THAN (735719) ENGINE = MyISAM,  PARTITION p2014_05 VALUES LESS THAN (735750) ENGINE = MyISAM,  PARTITION p2014_06 VALUES LESS THAN (735780) ENGINE = MyISAM,  PARTITION p2014_07 VALUES LESS THAN (735811) ENGINE = MyISAM,  PARTITION p2014_08 VALUES LESS THAN (735842) ENGINE = MyISAM,  PARTITION p2014_09 VALUES LESS THAN (735872) ENGINE = MyISAM,  PARTITION p2014_10 VALUES LESS THAN (735903) ENGINE = MyISAM,  PARTITION p2014_11 VALUES LESS THAN (735933) ENGINE = MyISAM,  PARTITION p2014_12 VALUES LESS THAN (735964) ENGINE = MyISAM,  PARTITION p2015_01 VALUES LESS THAN (735995) ENGINE = MyISAM,  PARTITION p2015_02 VALUES LESS THAN (736023) ENGINE = MyISAM,  PARTITION p2015_03 VALUES LESS THAN (736054) ENGINE = MyISAM,  PARTITION p2015_04 VALUES LESS THAN (736084) ENGINE = MyISAM,  PARTITION p2015_05 VALUES LESS THAN (736115) ENGINE = MyISAM,  PARTITION p2015_06 VALUES LESS THAN (736145) ENGINE = MyISAM,  PARTITION p2015_07 VALUES LESS THAN (736176) ENGINE = MyISAM,  PARTITION p2015_08 VALUES LESS THAN (736207) ENGINE = MyISAM,  PARTITION p2015_09 VALUES LESS THAN (736237) ENGINE = MyISAM,  PARTITION p2015_10 VALUES LESS THAN (736268) ENGINE = MyISAM,  PARTITION p2015_11 VALUES LESS THAN (736298) ENGINE = MyISAM,  PARTITION p2015_12 VALUES LESS THAN (736329) ENGINE = MyISAM,  PARTITION p2016_01 VALUES LESS THAN (736360) ENGINE = MyISAM,  PARTITION p2016_02 VALUES LESS THAN (736389) ENGINE = MyISAM,  PARTITION p2016_03 VALUES LESS THAN (736420) ENGINE = MyISAM,  PARTITION p2016_04 VALUES LESS THAN (736450) ENGINE = MyISAM,  PARTITION p2016_05 VALUES LESS THAN (736481) ENGINE = MyISAM,  PARTITION p2016_06 VALUES LESS THAN (736511) ENGINE = MyISAM,  PARTITION p2016_07 VALUES LESS THAN (736542) ENGINE = MyISAM,  PARTITION p2016_08 VALUES LESS THAN (736573) ENGINE = MyISAM,  PARTITION p2016_09 VALUES LESS THAN (736603) ENGINE = MyISAM,  PARTITION p2016_10 VALUES LESS THAN (736634) ENGINE = MyISAM,  PARTITION p2016_11 VALUES LESS THAN (736664) ENGINE = MyISAM,  PARTITION p2016_12 VALUES LESS THAN (736695) ENGINE = MyISAM,  PARTITION p2017 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) *\/;  CREATE TABLE IF NOT EXISTS ISALOG_FWS_000 (   dt date NOT NULL,   tm time DEFAULT NULL,   servername varchar(128) DEFAULT NULL,   ClientUserName varchar(514) DEFAULT NULL,   `Action` int(3) DEFAULT NULL,   resultcode int(11) DEFAULT NULL,   rule varchar(128) DEFAULT NULL,   protocol varchar(32) DEFAULT NULL,   SourceIP varchar(64) DEFAULT NULL,   SourcePort varchar(6) DEFAULT NULL,   DestinationIP varchar(64) DEFAULT NULL,   DestinationPort varchar(6) DEFAULT NULL,   OriginalClientIP varchar(64) DEFAULT NULL,   SourceNetwork varchar(128) DEFAULT NULL,   DestinationNetwork varchar(128) DEFAULT NULL,   ApplicationProtocol varchar(128) DEFAULT NULL,   bytessent int(11) DEFAULT NULL,   bytessentDelta int(11) DEFAULT NULL,   bytesrecvd int(11) DEFAULT NULL,   bytesrecvdDelta int(11) DEFAULT NULL,   connectiontime int(11) DEFAULT NULL,   connectiontimeDelta int(11) DEFAULT NULL,   DestinationName varchar(255) DEFAULT NULL,   ClientAgent varchar(255) DEFAULT NULL,   sessionid int(11) DEFAULT NULL,   connectionid int(11) DEFAULT NULL,   InternalServiceInfo int(6) DEFAULT NULL,   KEY ClientUserName (ClientUserName),   KEY dt (dt) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 \/*!50100 PARTITION BY RANGE ( TO_DAYS(dt)) (PARTITION p2013_01 VALUES LESS THAN (735265) ENGINE = MyISAM,  PARTITION p2013_02 VALUES LESS THAN (735293) ENGINE = MyISAM,  PARTITION p2013_03 VALUES LESS THAN (735324) ENGINE = MyISAM,  PARTITION p2013_04 VALUES LESS THAN (735354) ENGINE = MyISAM,  PARTITION p2013_05 VALUES LESS THAN (735385) ENGINE = MyISAM,  PARTITION p2013_06 VALUES LESS THAN (735415) ENGINE = MyISAM,  PARTITION p2013_07 VALUES LESS THAN (735446) ENGINE = MyISAM,  PARTITION p2013_08 VALUES LESS THAN (735477) ENGINE = MyISAM,  PARTITION p2013_09 VALUES LESS THAN (735507) ENGINE = MyISAM,  PARTITION p2013_10 VALUES LESS THAN (735538) ENGINE = MyISAM,  PARTITION p2013_11 VALUES LESS THAN (735568) ENGINE = MyISAM,  PARTITION p2013_12 VALUES LESS THAN (735599) ENGINE = MyISAM,  PARTITION p2014_01 VALUES LESS THAN (735630) ENGINE = MyISAM,  PARTITION p2014_02 VALUES LESS THAN (735658) ENGINE = MyISAM,  PARTITION p2014_03 VALUES LESS THAN (735689) ENGINE = MyISAM,  PARTITION p2014_04 VALUES LESS THAN (735719) ENGINE = MyISAM,  PARTITION p2014_05 VALUES LESS THAN (735750) ENGINE = MyISAM,  PARTITION p2014_06 VALUES LESS THAN (735780) ENGINE = MyISAM,  PARTITION p2014_07 VALUES LESS THAN (735811) ENGINE = MyISAM,  PARTITION p2014_08 VALUES LESS THAN (735842) ENGINE = MyISAM,  PARTITION p2014_09 VALUES LESS THAN (735872) ENGINE = MyISAM,  PARTITION p2014_10 VALUES LESS THAN (735903) ENGINE = MyISAM,  PARTITION p2014_11 VALUES LESS THAN (735933) ENGINE = MyISAM,  PARTITION p2014_12 VALUES LESS THAN (735964) ENGINE = MyISAM,  PARTITION p2015_01 VALUES LESS THAN (735995) ENGINE = MyISAM,  PARTITION p2015_02 VALUES LESS THAN (736023) ENGINE = MyISAM,  PARTITION p2015_03 VALUES LESS THAN (736054) ENGINE = MyISAM,  PARTITION p2015_04 VALUES LESS THAN (736084) ENGINE = MyISAM,  PARTITION p2015_05 VALUES LESS THAN (736115) ENGINE = MyISAM,  PARTITION p2015_06 VALUES LESS THAN (736145) ENGINE = MyISAM,  PARTITION p2015_07 VALUES LESS THAN (736176) ENGINE = MyISAM,  PARTITION p2015_08 VALUES LESS THAN (736207) ENGINE = MyISAM,  PARTITION p2015_09 VALUES LESS THAN (736237) ENGINE = MyISAM,  PARTITION p2015_10 VALUES LESS THAN (736268) ENGINE = MyISAM,  PARTITION p2015_11 VALUES LESS THAN (736298) ENGINE = MyISAM,  PARTITION p2015_12 VALUES LESS THAN (736329) ENGINE = MyISAM,  PARTITION p2016_01 VALUES LESS THAN (736360) ENGINE = MyISAM,  PARTITION p2016_02 VALUES LESS THAN (736389) ENGINE = MyISAM,  PARTITION p2016_03 VALUES LESS THAN (736420) ENGINE = MyISAM,  PARTITION p2016_04 VALUES LESS THAN (736450) ENGINE = MyISAM,  PARTITION p2016_05 VALUES LESS THAN (736481) ENGINE = MyISAM,  PARTITION p2016_06 VALUES LESS THAN (736511) ENGINE = MyISAM,  PARTITION p2016_07 VALUES LESS THAN (736542) ENGINE = MyISAM,  PARTITION p2016_08 VALUES LESS THAN (736573) ENGINE = MyISAM,  PARTITION p2016_09 VALUES LESS THAN (736603) ENGINE = MyISAM,  PARTITION p2016_10 VALUES LESS THAN (736634) ENGINE = MyISAM,  PARTITION p2016_11 VALUES LESS THAN (736664) ENGINE = MyISAM,  PARTITION p2016_12 VALUES LESS THAN (736695) ENGINE = MyISAM,  PARTITION p2017 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) *\/; <\/code><\/pre>\n<p>\u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e \u043c\u0435\u0441\u044f\u0446\u0430\u043c. \u0421\u0434\u0435\u043b\u0430\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u0434\u0430\u0442\u0435. <\/p>\n<p>  \u041d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <a href=\"http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=24659\">logparser<\/a>.<br \/>  \u0421\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0430\u0437\u0443 MySQL.<br \/>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 bat-\u0444\u0430\u0439\u043b\u0430:  <\/p>\n<pre><code class=\"dos\">logparser &quot;select * into c:\\script\\TMG\\Export\\2012\\1\\2012.xls from c:\\script\\TMG\\Export\\2012\\1\\ISALOG_201*.xls&quot; -i:csv -headerRow:OFF -o:tsv -oSeparator:tab cscript \/\/nologo &quot;c:\\script\\TMG\\Scripts\\make-reportFile.vbs&quot; c:\\script\\TMG\\Export\\2012\\1\\2012.xls c:\\script\\TMG\\Export\\2012\\1\\ISALOG_WEB_000.csv  logparser &quot;select * into c:\\script\\TMG\\Export\\2012\\2\\2012.xls from c:\\script\\TMG\\Export\\2012\\2\\ISALOG_201*.xls&quot; -i:csv -headerRow:OFF -o:tsv -oSeparator:tab cscript \/\/nologo &quot;c:\\script\\TMG\\Scripts\\make-reportFile-full.vbs&quot; c:\\script\\TMG\\Export\\2012\\2\\2012.xls c:\\script\\TMG\\Export\\2012\\2\\ISALOG_WEB_000_FULL.csv  logparser &quot;select * into c:\\script\\TMG\\Export\\2012\\fws\\2012.xls from c:\\script\\TMG\\Export\\2012\\fws\\ISALOG_201*.xls&quot; -i:csv -headerRow:OFF -o:tsv -oSeparator:tab cscript \/\/nologo &quot;c:\\script\\TMG\\Scripts\\make-reportFile-fws.vbs&quot; c:\\script\\TMG\\Export\\2012\\fws\\2012.xls c:\\script\\TMG\\Export\\2012\\fws\\ISALOG_FWS_000.csv  del c:\\script\\TMG\\Export\\2012\\1\\2012.xls del c:\\script\\TMG\\Export\\2012\\2\\2012.xls del c:\\script\\TMG\\Export\\2012\\fws\\2012.xls  cd\\ subst Z: e:\\WebServers Z: cd\\ cd usr\\local\\mysql-5.1\\bin\\ mysqlimport.exe -u username -p12345678 --fields-terminated-by=\\t --fields-enclosed-by=&quot;&quot; --fields-escaped-by=\\ --lines-terminated-by=\\n --local my_base c:\\script\\TMG\\Export\\2012\\1\\ISALOG_WEB_000.csv mysqlimport.exe -u username -p12345678 --fields-terminated-by=\\t --fields-enclosed-by=&quot;&quot; --fields-escaped-by=\\ --lines-terminated-by=\\n --local my_base c:\\script\\TMG\\Export\\2012\\2\\ISALOG_WEB_000_FULL.csv mysqlimport.exe -u username -p12345678 --fields-terminated-by=\\t --fields-enclosed-by=&quot;&quot; --fields-escaped-by=\\ --lines-terminated-by=\\n --local my_base c:\\script\\TMG\\Export\\2012\\fws\\ISALOG_FWS_000.csv  move c:\\script\\TMG\\Export\\2012\\1\\ISALOG_201*.xls e:\\Export\\2013 move c:\\script\\TMG\\Export\\2012\\2\\ISALOG_201*.xls e:\\Export\\2013 move c:\\script\\TMG\\Export\\2012\\fws\\ISALOG_201*.xls e:\\Export\\2013  del c:\\script\\TMG\\Export\\2012\\1\\ISALOG_WEB_000.csv del c:\\script\\TMG\\Export\\2012\\2\\ISALOG_WEB_000_FULL.csv del c:\\script\\TMG\\Export\\2012\\fws\\ISALOG_FWS_000.csv <\/code><\/pre>\n<p>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.<br \/>  make-reportFile.vbs:  <\/p>\n<pre><code class=\"vbscript\">dim gsDevider dim record dim recordResult  if Wscript.Arguments.Count = 2 then \tsgFilename = Wscript.Arguments(0) \tsgFilenameResult = Wscript.Arguments(1) elseif Wscript.Arguments.Count = 1 then \tsgFilename = Wscript.Arguments(0) \tsgFilenameResult = &quot;c:\\script\\TMG\\Export\\2012\\1\\ISALOG_WEB_000.csv&quot; else \tsgFilename = InputBox(&quot;\u0418\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430&quot;, &quot;\u0412\u0432\u0435\u0434\u0438\u0442\u0435&quot;, &quot;&quot;) \tsgFilenameResult = InputBox(&quot;\u0418\u043c\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430&quot;, &quot;\u0412\u0432\u0435\u0434\u0438\u0442\u0435&quot;, &quot;&quot;) end if  gsDevider = VBTab record = &quot;&quot; recordResult = &quot;&quot;  Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;) Set objTextFileOpen = objFSO.OpenTextFile(sgFilename, 1) Set objTextFileWrite = objFSO.CreateTextFile(sgFilenameResult, True)  Do Until objTextFileOpen.AtEndOfStream \trecord = trim(objTextFileOpen.Readline)  \tif InStr(record, &quot;Filename\tRowNumber\tField1&quot;) = 0 then \t\tif inStr(record, gsDevider) then \t\t\tlArr = split(record, gsDevider) \t\t\trecordResult = \tfuNormalyzeDate(lArr(0)) & gsDevider & _ \t\t\t\t\t\t\tlArr(2) & gsDevider & _ \t\t\t\t\t\t\tfuNormalyzeAccount(lArr(3)) & gsDevider & _ \t\t\t\t\t\t\tlArr(4) & gsDevider & _ \t\t\t\t\t\t\tlArr(5) & gsDevider & _ \t\t\t\t\t\t\tlArr(6) & gsDevider & _ \t\t\t\t\t\t\tlArr(7) \t\tend if \t\tobjTextFileWrite.WriteLine recordResult \tend if Loop  objTextFileWrite.Close objTextFileOpen.Close  WScript.Echo &quot;* \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430.&quot;   function fuRemoveExtention(lsFilename) \tlRes = lsFilename \tif InStr(lsFilename, &quot;.&quot;) then \t\tlRes = Left(lsFilename, Len(lsFilename)-4) \tend if \tfuRemoveExtention = lRes end function   function fuNormalyzeDate(lsDate) \tlRes = lsDate \tif InStr(lsDate, &quot;\\&quot;) then \t\tlArrDate = Split(lsDate, &quot;\\&quot;) \t\tlRes = lArrDate(uBound(lArrDate)) \t\t \t\tlArrDate = Split(lRes, &quot;_&quot;) \t\tlRes = lArrDate(1) \t\t \t\tlRes = Left(lRes, 4) & &quot;-&quot; & Mid(lRes, 5, 2) & &quot;-&quot; & Right(lRes, 2) \tend if \tfuNormalyzeDate = lRes end function   function fuNormalyzeAccount(lsAccount) \tlRes = lsAccount \tlRes = Replace(lRes, &quot;DOMAIN\\&quot;, &quot;&quot;) \tfuNormalyzeAccount = lRes end function  <\/code><\/pre>\n<p>  make-reportFile-full.vbs  <\/p>\n<pre><code class=\"vbscript\">dim gsDevider dim record dim recordResult  if Wscript.Arguments.Count = 2 then \tsgFilename = Wscript.Arguments(0) \tsgFilenameResult = Wscript.Arguments(1) elseif Wscript.Arguments.Count = 1 then \tsgFilename = Wscript.Arguments(0) \tsgFilenameResult = &quot;c:\\script\\TMG\\Export\\2012\\1\\ISALOG_WEB_000.csv&quot; else \tsgFilename = InputBox(&quot;\u0418\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430&quot;, &quot;\u0412\u0432\u0435\u0434\u0438\u0442\u0435&quot;, &quot;&quot;) \tsgFilenameResult = InputBox(&quot;\u0418\u043c\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430&quot;, &quot;\u0412\u0432\u0435\u0434\u0438\u0442\u0435&quot;, &quot;&quot;) end if  gsDevider = VBTab record = &quot;&quot; recordResult = &quot;&quot;  Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;) Set objTextFileOpen = objFSO.OpenTextFile(sgFilename, 1) Set objTextFileWrite = objFSO.CreateTextFile(sgFilenameResult, True)  Do Until objTextFileOpen.AtEndOfStream \trecord = trim(objTextFileOpen.Readline)  \tif InStr(record, &quot;Filename\tRowNumber\tField1&quot;) = 0 then \t\tif inStr(record, gsDevider) then \t\t\tlArr = split(record, gsDevider) \t\t\trecordResult = \tfuNormalyzeDate(lArr(0)) & gsDevider & _ \t\t\t\t\t\t\tlArr(2) & gsDevider & _ \t\t\t\t\t\t\tfuNormalyzeAccount(lArr(3)) & gsDevider & _ \t\t\t\t\t\t\tlArr(4) & gsDevider & _ \t\t\t\t\t\t\tlArr(5) & gsDevider & _ \t\t\t\t\t\t\tlArr(6) & gsDevider & _ \t\t\t\t\t\t\tlArr(7) & gsDevider & _ \t\t\t\t\t\t\tlArr(8) & gsDevider & _ \t\t\t\t\t\t\tlArr(9) \t\tend if \t\tobjTextFileWrite.WriteLine recordResult \tend if Loop  objTextFileWrite.Close objTextFileOpen.Close  WScript.Echo &quot;* \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430.&quot;   function fuRemoveExtention(lsFilename) \tlRes = lsFilename \tif InStr(lsFilename, &quot;.&quot;) then \t\tlRes = Left(lsFilename, Len(lsFilename)-4) \tend if \tfuRemoveExtention = lRes end function   function fuNormalyzeDate(lsDate) \tlRes = lsDate \tif InStr(lsDate, &quot;\\&quot;) then \t\tlArrDate = Split(lsDate, &quot;\\&quot;) \t\tlRes = lArrDate(uBound(lArrDate)) \t\t \t\tlArrDate = Split(lRes, &quot;_&quot;) \t\tlRes = lArrDate(1) \t\t \t\tlRes = Left(lRes, 4) & &quot;-&quot; & Mid(lRes, 5, 2) & &quot;-&quot; & Right(lRes, 2) \tend if \tfuNormalyzeDate = lRes end function   function fuNormalyzeAccount(lsAccount) \tlRes = lsAccount \tlRes = Replace(lRes, &quot;DOMAIN\\&quot;, &quot;&quot;) \tfuNormalyzeAccount = lRes end function  <\/code><\/pre>\n<p>  make-reportFile-fws.vbs  <\/p>\n<pre><code class=\"vbscript\">dim gsDevider dim record dim recordResult  if Wscript.Arguments.Count = 2 then \tsgFilename = Wscript.Arguments(0) \tsgFilenameResult = Wscript.Arguments(1) elseif Wscript.Arguments.Count = 1 then \tsgFilename = Wscript.Arguments(0) \tsgFilenameResult = &quot;c:\\script\\TMG\\Export\\2012\\fws\\ISALOG_FWS_000.csv&quot; else \tsgFilename = InputBox(&quot;\u0418\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430&quot;, &quot;\u0412\u0432\u0435\u0434\u0438\u0442\u0435&quot;, &quot;&quot;) \tsgFilenameResult = InputBox(&quot;\u0418\u043c\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430&quot;, &quot;\u0412\u0432\u0435\u0434\u0438\u0442\u0435&quot;, &quot;&quot;) end if  gsDevider = VBTab record = &quot;&quot; recordResult = &quot;&quot;  Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;) Set objTextFileOpen = objFSO.OpenTextFile(sgFilename, 1) Set objTextFileWrite = objFSO.CreateTextFile(sgFilenameResult, True)  Do Until objTextFileOpen.AtEndOfStream \trecord = trim(objTextFileOpen.Readline)  \tif InStr(record, &quot;Filename\tRowNumber\tField1&quot;) = 0 then \t\tif inStr(record, gsDevider) then \t\t\tlArr = split(record, gsDevider) \t\t\trecordResult = \tfuNormalyzeDateTime(lArr(4),0) & gsDevider & _ \t\t\t\t\t\t\tfuNormalyzeDateTime(lArr(4),1)  & gsDevider & _ \t\t\t\t\t\t\tlArr(2)  & gsDevider & _ \t\t\t\t\t\t\tfuNormalyzeAccount(lArr(3)) & gsDevider & _ \t\t\t\t\t\t\tlArr(5)  & gsDevider & _ \t\t\t\t\t\t\tlArr(6)  & gsDevider & _ \t\t\t\t\t\t\tlArr(7)  & gsDevider & _ \t\t\t\t\t\t\tlArr(8)  & gsDevider & _ \t\t\t\t\t\t\tlArr(9)  & gsDevider & _ \t\t\t\t\t\t\tlArr(10) & gsDevider & _ \t\t\t\t\t\t\tlArr(11) & gsDevider & _ \t\t\t\t\t\t\tlArr(12) & gsDevider & _ \t\t\t\t\t\t\tlArr(13) & gsDevider & _ \t\t\t\t\t\t\tlArr(14) & gsDevider & _ \t\t\t\t\t\t\tlArr(15) & gsDevider & _ \t\t\t\t\t\t\tlArr(16) & gsDevider & _ \t\t\t\t\t\t\tlArr(17) & gsDevider & _ \t\t\t\t\t\t\tlArr(18) & gsDevider & _ \t\t\t\t\t\t\tlArr(19) & gsDevider & _ \t\t\t\t\t\t\tlArr(20) & gsDevider & _ \t\t\t\t\t\t\tlArr(21) & gsDevider & _ \t\t\t\t\t\t\tlArr(22) & gsDevider & _ \t\t\t\t\t\t\tlArr(23) & gsDevider & _ \t\t\t\t\t\t\tlArr(24) & gsDevider & _ \t\t\t\t\t\t\tlArr(25) & gsDevider & _ \t\t\t\t\t\t\tlArr(26) & gsDevider & _ \t\t\t\t\t\t\tlArr(27) \t\tend if \t\tobjTextFileWrite.WriteLine recordResult \tend if Loop  objTextFileWrite.Close objTextFileOpen.Close  WScript.Echo &quot;* \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430.&quot;   function fuRemoveExtention(lsFilename) \tlRes = lsFilename \tif InStr(lsFilename, &quot;.&quot;) then \t\tlRes = Left(lsFilename, Len(lsFilename)-4) \tend if \tfuRemoveExtention = lRes end function   function fuNormalyzeDate(lsDate) \tlRes = lsDate \tif InStr(lsDate, &quot;\\&quot;) then \t\tlArrDate = Split(lsDate, &quot;\\&quot;) \t\tlRes = lArrDate(uBound(lArrDate)) \t\t \t\tlArrDate = Split(lRes, &quot;_&quot;) \t\tlRes = lArrDate(1) \t\t \t\tlRes = Left(lRes, 4) & &quot;-&quot; & Mid(lRes, 5, 2) & &quot;-&quot; & Right(lRes, 2) \tend if \tfuNormalyzeDate = lRes end function   function fuNormalyzeDateTime(lsDateTime, liFlag) \tlRes = lsDateTime \tif InStr(lsDateTime, &quot; &quot;) then \t\tlArrDate = Split(lsDateTime, &quot; &quot;) \t\tlRes = lArrDate(liFlag) \t\tif liFlag = 1 then \t\t\tlArrTime = Split(lRes, &quot;.&quot;) \t\t\tlRes = lArrTime(0) \t\tend if \tend if \tfuNormalyzeDateTime = lRes end function   function fuNormalyzeAccount(lsAccount) \tlRes = lsAccount \tlRes = Replace(lRes, &quot;DOMAIN\\&quot;, &quot;&quot;) \tfuNormalyzeAccount = lRes end function  <\/code><\/pre>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0432 \u0431\u0430\u0437\u0443 MySQL. \u041c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0442\u0447\u0435\u0442\u044b \u0438 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a \u043d\u0438\u043c.<br \/>  \u042f \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e (\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u0443\u044e, \u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0430 \u0425\u0430\u0431\u0440\u0435) \u0438 14 \u043e\u0442\u0447\u0451\u0442\u043e\u0432. <br \/>  \u0412\u043e\u0442 \u0442\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u043e\u0432:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/2b2\/b9f\/8ee\/2b2b9f8ee13cfbdf1f7077e9224c7c24.png\"\/><\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0442\u0447\u0451\u0442\u043e\u0432.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/66c\/636\/dca\/66c636dca0dd2385cdd460086689db82.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/359\/bcc\/30f\/359bcc30fd868a62171efedfee947594.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/1ef\/a32\/305\/1efa323059f900b2d16ef766c96a4cce.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/dbe\/c7f\/25e\/dbec7f25e43ab7cbde6fe2a55d8fba79.png\"\/> \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/202792\/\"> http:\/\/habrahabr.ru\/post\/202792\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!<br \/>  \u0423\u0434\u043e\u0431\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0442\u0447\u0451\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c.<br \/>  \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 (WEB) \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u043c \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0430 (FWS) \u0441\u0435\u0440\u0432\u0435\u0440\u0430 MS TMG \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u0443 MySQL. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043f\u043e \u044d\u0442\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0442\u0447\u0451\u0442\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-202792","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/202792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=202792"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/202792\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=202792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=202792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=202792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}