{"id":316766,"date":"2021-01-22T09:00:43","date_gmt":"2021-01-22T09:00:43","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=316766"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=316766","title":{"rendered":"\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434 \u043d\u0430 Java, C, NodeJS, C#, Python \u0438\u0437 InterSystems IRIS"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<h1 id=\"vvedenie\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS \u2014 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c. \u041e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c \u0432\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438 \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u043a\u0430\u043a \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u0434\u0430 \u0438\u0437 InterSystems IRIS, \u0442\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f API \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 InterSystems IRIS \u0438\u0437\u0432\u043d\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u043e \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u2014 \u0432\u044b\u0437\u043e\u0432\u0435 \u043a\u043e\u0434\u0430 \u0438\u0437 InterSystems IRIS. \u0426\u0435\u043b\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0445\u043e\u0442\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0435\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439), \u0432\u0441\u0451 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0445 \u0432\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439, \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u0432\u044b\u0437\u043e\u0432\u0430\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u2014 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 DELFATE \u0438\u0437 <a href=\"https:\/\/zlib.net\/\">\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 zlib<\/a>. <\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"nodejs\">NodeJS<\/h1>\n<p>  <\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0432\u043e\u0442 <a href=\"https:\/\/community.intersystems.com\/post\/story-support-how-quest-raw-deflate-compressiondecompression-function-leads-node-callout-server\">\u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e<\/a>. \u0420\u0435\u0447\u044c \u0442\u0430\u043c \u0438\u0434\u0435\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u043e \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 DELFATE \u043d\u0430 NodeJS \u0438\u0437 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b InterSystems IRIS, \u0438 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0430 \u043c\u0435\u043d\u044f \u043d\u0430 \u043c\u044b\u0441\u043b\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u0434\u0430 \u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.<br \/>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u043d\u0435\u043c \u0441 NodeJS. \u042f \u0431\u0435\u0440\u0443 \u043a\u043e\u0434 \u043f\u043e\u0447\u0442\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u0411\u0435\u0440\u043d\u0434\u0430, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043d\u0435\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b, \u0430 \u043f\u0440\u044f\u043c\u043e\u0435 http-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u0446\u0435\u043b\u043e\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0435\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0437\u0430\u043f\u0440\u043e\u0441, \u0442\u0430\u043a \u0438 \u043e\u0442\u0432\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 base64. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u043e\u0442 <a href=\"https:\/\/github.com\/intersystems-ru\/zlibisc\/blob\/master\/node\/zlibserver.js\">\u043a\u043e\u0434<\/a>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\/\/zlibserver.js const express = require('express'); const zlib = require('zlib');  var app = express();   app.get('\/zlibapi\/:text', function(req, res) {     res.type('application\/json');      var text=req.params.text;      try {                 zlib.deflate(text, (err, buffer) =&gt; {            if (!err) {                 res.status(200).send(buffer.toString('binary'));             } else {                 res.status(500).json( { &quot;error&quot; : err.message});             \/\/ handle error             }         });      }     catch(err) {       res.status(500).json({ &quot;error&quot; : err.message});       return;     }  }); app.listen(3000, function(){     console.log(&quot;zlibserver started&quot;); });<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u041e\u0421 (\u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b <code>node<\/code> \u0438 <code>npm<\/code>):<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">cd &lt;repo&gt;\\node npm install node  .\/zlibserver.js<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442? \u0421\u043b\u0443\u0448\u0430\u0435\u043c \u043f\u043e\u0440\u0442 <code>3000<\/code>, \u0441\u0436\u0438\u043c\u0430\u0435\u043c DEFLATE \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0441\u0436\u0430\u0442\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0442\u0432\u0435\u0442. \u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 InterSystems IRIS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/irisdocs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GNET_http\">http \u0437\u0430\u043f\u0440\u043e\u0441<\/a> \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c API:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\/\/\/ NodeJS implementation \/\/\/ do ##class(isc.zlib.Test).node() ClassMethod node(text As %String = &quot;Hello World&quot;, Output response As %String) As %Status {     kill response     set req = ##class(%Net.HttpRequest).%New()     set req.Server = &quot;localhost&quot;     set req.Port = 3000     set req.Location = &quot;\/zlibapi\/&quot; _ text     set sc = req.Get(,,$$$NO)     quit:$$$ISERR(sc) sc     set response = req.HttpResponse.Data.Read($$$MaxStringLength)     quit sc }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e \u0442\u0440\u0435\u0442\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <code>set sc = req.Get(,,$$$NO)<\/code> \u2014 <code>reset<\/code> \u0440\u0430\u0432\u043d\u044b\u043c \u043d\u0443\u043b\u044e. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e http(s) \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p>  <\/p>\n<h1 id=\"java\">Java<\/h1>\n<p>  <\/p>\n<p><a href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=EJVG\">Java Gateway<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 Java-\u043a\u043e\u0434. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e \u043d\u0435\u0433\u043e <a href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/522230\/\">\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e<\/a>. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 <code>Deflater<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">package isc.zlib;  import java.util.Arrays; import java.util.zip.Deflater;  public abstract class Java {      public static byte[] compress(String inputString) {         byte[] output = new byte[inputString.length()*3];         try {             \/\/ Encode a String into bytes             byte[] input = inputString.getBytes(&quot;UTF-8&quot;);              \/\/ Compress the bytes              Deflater compresser = new Deflater();             compresser.setInput(input);             compresser.finish();             int compressedDataLength = compresser.deflate(output);             compresser.end();             output = Arrays.copyOfRange(output, 0, compressedDataLength);          } catch (java.io.UnsupportedEncodingException ex) {             \/\/ handle         }          return output;     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 <code>byte[]<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 InterSystems IRIS. \u042f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438, \u043a\u0430\u043a \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 <code>byte[]<\/code>. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0434\u0435\u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439.<br \/>  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u0434, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 jar \u0438\u0437 <a href=\"https:\/\/github.com\/intersystems-ru\/zlibisc\/releases\">\u0440\u0435\u043b\u0438\u0437\u043e\u0432<\/a> \u0432 \u043f\u0430\u043f\u043a\u0443 <code>&lt;instance&gt;\/bin<\/code>, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043a\u043e\u0434 \u0432 \u0441\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 InterSystems IRIS \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">write $System.Status.GetErrorText(##class(isc.zlib.Utils).createGateway()) write $System.Status.GetErrorText(##class(isc.zlib.Utils).updateJar())<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 <code>createGateway<\/code> \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c. \u0412\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <code>javaHome<\/code> \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>JAVA_HOME<\/code> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u043f\u0443\u0442\u044c \u0434\u043e Java 1.8 JRE. \u0414\u043b\u044f \u0441\u0436\u0430\u0442\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 <code>text<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">set gateway = ##class(isc.zlib.Utils).connect() set response = ##class(isc.zlib.Java).compress(gateway, text)<\/code><\/pre>\n<p>  <\/p>\n<h1 id=\"c\">C<\/h1>\n<p>  <\/p>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 InterSystems <a href=\"https:\/\/irisdocs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=BGCL_library\">Callout<\/a> \u044d\u0442\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u0437 InterSystems IRIS.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043d\u0430\u0448\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">#define ZF_DLL  \/\/ Ugly Windows hack #ifndef ulong    typedef unsigned long ulong; #endif  #include &quot;string.h&quot; #include &quot;stdio.h&quot; #include &quot;stdlib.h&quot; #include &quot;zlib.h&quot; #include &lt;cdzf.h&gt;  int Compress(char* istream, CACHE_EXSTRP retval) {     ulong srcLen = strlen(istream)+1;      \/\/ +1 for the trailing `\\0`     ulong destLen = compressBound(srcLen); \/\/  estimate size needed for the buffer     char* ostream = malloc(destLen);     int res = compress(ostream, &amp;destLen, istream, srcLen);     CACHEEXSTRKILL(retval);     if (!CACHEEXSTRNEW(retval,destLen)) {return ZF_FAILURE;}     memcpy(retval-&gt;str.ch,ostream,destLen);   \/\/ copy to retval-&gt;str.ch     return ZF_SUCCESS; }  ZFBEGIN     ZFENTRY(&quot;Compress&quot;,&quot;cJ&quot;,Compress) ZFEND<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 <code>dll<\/code> \u0438\u043b\u0438 <code>so<\/code> \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b <a href=\"https:\/\/github.com\/intersystems-ru\/zlibisc\/releases\">\u0440\u0435\u043b\u0438\u0437\u043e\u0432<\/a> \u0432 \u043f\u0430\u043f\u043a\u0443 <code>&lt;instance&gt;\/bin<\/code>. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. <\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>Linux: <code>apt install build-essential zlib1g zlib1g-devel<\/code><\/li>\n<li>Windows: <a href=\"http:\/\/win-builds.org\/doku.php\">WinBuilds<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Callout \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">set path =  ##class(isc.zlib.Test).getLibPath() \/\/get path to library file set response = $ZF(-3, path, &quot;Compress&quot;, text)       \/\/ execute function do $ZF(-3, &quot;&quot;)                                  \/\/unload library<\/code><\/pre>\n<p>  <\/p>\n<h1 id=\"python\">Python<\/h1>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/486984\/\">Python Gateway<\/a> \u0432\u044b\u0437\u043e\u0432\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">import zlib zlib.compress(b'text')<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0437 InterSystems IRIS: <code>set out = ##class(isc.py.Callout).SimpleString(&quot;import zlib&quot; _ $$$NL _ &quot;x = zlib.compress(b'&quot; _ text _ &quot;')&quot;, &quot;x&quot;)<\/code><\/p>\n<p>  <\/p>\n<h1 id=\"c-1\">C<\/h1>\n<p>  <\/p>\n<p><a href=\"https:\/\/irisdocs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=BGNT\">Net Gateway<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C#. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e \u043d\u0435\u0433\u043e <a href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/522230\/\">\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e<\/a>.<br \/>  \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 C# \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a, \u0430 \u043d\u0435 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">using System; using System.IO; using System.IO.Compression;  namespace isc.zlib {     public class Net     {         public static byte[] compress(String str)         {             using (MemoryStream output = new MemoryStream())             {                 using (DeflateStream gzip = new DeflateStream(output, CompressionMode.Compress))                 {                     using (StreamWriter writer = new StreamWriter(gzip, System.Text.Encoding.UTF8))                     {                         writer.Write(str);                     }                 }                  return output.ToArray();             }         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 <code>zlibnet.dll<\/code> \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b <a href=\"https:\/\/github.com\/intersystems-ru\/zlibisc\/releases\">\u0440\u0435\u043b\u0438\u0437\u043e\u0432<\/a> \u0432 \u043f\u0430\u043f\u043a\u0443 <code>&lt;instance&gt;\/bin<\/code>. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">write $System.Status.GetErrorText(##class(isc.zlib.Utils).createNetGateway()) write $System.Status.GetErrorText(##class(isc.zlib.Utils).updateNet())<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u0436\u0430\u0442\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 <code>text<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">set gateway = ##class(isc.zlib.Utils).connect() set response = ##class(isc.zlib.Net).compress(gateway, text)<\/code><\/pre>\n<p>  <\/p>\n<h1 id=\"intersystems-objectscript\">InterSystems ObjectScript<\/h1>\n<p>  <\/p>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u0445 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043d\u043e \u0432 ObjectScript \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/docs.intersystems.com\/latest\/csp\/documatic\/%25CSP.Documatic.cls?PAGE=CLASS&amp;LIBRARY=%25SYS&amp;CLASSNAME=%25SYSTEM.Util#METHOD_Compress\">Compress<\/a> (\u0438 \u043f\u0430\u0440\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Decompress). \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a: <code>set response = $extract($SYSTEM.Util.Compress(text), 2, *-1)<\/code><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 <a href=\"https:\/\/community.intersystems.com\/\">Developers Community<\/a> \u043c\u043e\u0436\u0435\u0442 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0430\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>  <\/p>\n<h1 id=\"sravnenie\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u042f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0435\u0441\u0442 (1Kb text, 1 000 000 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439) \u043d\u0430 Linux (VPS) \u0438 Windows (\u041d\u043e\u0443\u0442\u0431\u0443\u043a) \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>Windows: <\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>\u041c\u0435\u0442\u043e\u0434<\/th>\n<th>\u0421<\/th>\n<th>ObjectScript<\/th>\n<th>Python<\/th>\n<th>Java<\/th>\n<th>NodeJS<\/th>\n<th>\u0421#<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0412\u0440\u0435\u043c\u044f<\/td>\n<td>22,77<\/td>\n<td>33,41<\/td>\n<td>91,52<\/td>\n<td>152,73<\/td>\n<td>622,51<\/td>\n<td>216,43<\/td>\n<\/tr>\n<tr>\n<td>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c (Kb\/s)<\/td>\n<td>43912<\/td>\n<td>29927<\/td>\n<td>10670<\/td>\n<td>6547<\/td>\n<td>1606<\/td>\n<td>4512<\/td>\n<\/tr>\n<tr>\n<td>\u0420\u0430\u0437\u043d\u0438\u0446\u0430, %<\/td>\n<td>-\/-<\/td>\n<td>46,73<\/td>\n<td>401,93<\/td>\n<td>570,75<\/td>\n<td>2633,90<\/td>\n<td>950,5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>Linux:<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>\u041c\u0435\u0442\u043e\u0434<\/th>\n<th>C<\/th>\n<th>ObjectScript<\/th>\n<th>Python<\/th>\n<th>Java<\/th>\n<th>NodeJS<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0412\u0440\u0435\u043c\u044f<\/td>\n<td>76,3541<\/td>\n<td>76,499<\/td>\n<td>283,84<\/td>\n<td>147,2436<\/td>\n<td>953,7311<\/td>\n<\/tr>\n<tr>\n<td>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c (Kb\/s)<\/td>\n<td>13097<\/td>\n<td>13072<\/td>\n<td>3440<\/td>\n<td>6791<\/td>\n<td>1049<\/td>\n<\/tr>\n<tr>\n<td>\u0420\u0430\u0437\u043d\u0438\u0446\u0430, %<\/td>\n<td>-\/-<\/td>\n<td>0,19<\/td>\n<td>371<\/td>\n<td>92,84<\/td>\n<td>1149,09%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043a\u043e\u0434 \u0438 \u0432\u044b\u0437\u043e\u0432\u0438\u0442\u0435: <code>do ##class(isc.zlib.Test).test(textLength, iterations)<\/code><\/p>\n<p>  <\/p>\n<h1 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0421 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 InterSystems IRIS \u0432\u044b \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0440\u044f\u0434\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u044b\u0431\u043e\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u0440\u0438\u043a, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043b\u0430\u043d\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  <\/p>\n<h1 id=\"ssylki\">\u0421\u0441\u044b\u043b\u043a\u0438<\/h1>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/intersystems-ru\/zlibisc\/\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/intersystems-ru\/zlibisc\/releases\">\u0411\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438<\/a><\/li>\n<li><a href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GNET_http\">Http \u0437\u0430\u043f\u0440\u043e\u0441\u044b<\/a><\/li>\n<li><a href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=EJVG\">Java Gateway<\/a><\/li>\n<li><a href=\"https:\/\/irisdocs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=BGNT\">Net Gateway<\/a><\/li>\n<li><a href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=BGCL_library\">\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Callout<\/a><\/li>\n<li><a href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/documatic\/%25CSP.Documatic.cls?PAGE=CLASS&amp;LIBRARY=%25SYS&amp;CLASSNAME=%25SYSTEM.Util#METHOD_Compress\">Compress<\/a><\/li>\n<\/ul>\n<\/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=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/536940\/\"> https:\/\/habr.com\/ru\/company\/intersystems\/blog\/536940\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<h1 id=\"vvedenie\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS \u2014 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c. \u041e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c \u0432\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438 \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u043a\u0430\u043a \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u0434\u0430 \u0438\u0437 InterSystems IRIS, \u0442\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f API \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 InterSystems IRIS \u0438\u0437\u0432\u043d\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u043e \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u2014 \u0432\u044b\u0437\u043e\u0432\u0435 \u043a\u043e\u0434\u0430 \u0438\u0437 InterSystems IRIS. \u0426\u0435\u043b\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0445\u043e\u0442\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0435\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439), \u0432\u0441\u0451 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0445 \u0432\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439, \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u0432\u044b\u0437\u043e\u0432\u0430\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u2014 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 DELFATE \u0438\u0437 <a href=\"https:\/\/zlib.net\/\">\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 zlib<\/a>. <\/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-316766","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316766","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=316766"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316766\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}