แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒกแƒแƒก

แƒฌแƒ˜แƒœแƒแƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ

แƒ”แƒ แƒ—แƒ›แƒ แƒกแƒแƒ›แƒ”แƒ“แƒ˜แƒชแƒ˜แƒœแƒ แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒ› แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ Orthanc PACS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒ“แƒ Radiant DICOM แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ–แƒ”. แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ˜แƒ”แƒ—, แƒ แƒแƒ› DICOM แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ PACS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

  • แฒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜
  • AE แƒกแƒแƒฎแƒ”แƒšแƒ˜ (แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜)
  • TCP แƒžแƒแƒ แƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก แƒ“แƒ แƒ˜แƒฆแƒ”แƒ‘แƒก DICOM แƒ’แƒแƒ›แƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒก PACS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ (แƒแƒœแƒฃ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒฃแƒ‘แƒ˜แƒซแƒ’แƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ™แƒ”แƒœ - แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก)
  • IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜

Radiant-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ›แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒกแƒแƒคแƒ˜แƒฅแƒ แƒแƒšแƒ˜: แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ–แƒ”แƒ›แƒแƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ•แƒกแƒ”แƒ‘แƒ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒ˜แƒ—. pacs.xml, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒจแƒ˜ (แƒ’แƒ–แƒ: %APPDATA%RadiantViewerpacs.xml). แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒ”แƒ แƒ—แƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒแƒ“แƒ แƒ›แƒ”แƒแƒ แƒ˜แƒกแƒ’แƒแƒœ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒแƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒ— (AE แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒžแƒแƒ แƒขแƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒแƒ“ แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ, แƒ’แƒแƒ แƒ“แƒ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ˜แƒ›แƒแƒ•แƒ” แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” - แƒ˜แƒฅ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒกแƒแƒช แƒฐแƒฅแƒแƒœแƒ“แƒแƒ— แƒ›แƒ˜แƒ”แƒœแƒ˜แƒญแƒแƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜).

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ pacs.xml แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜:

แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒ”แƒฅแƒ•แƒกแƒ˜ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ˜แƒงแƒ, แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ› แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ... แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒฉแƒ•แƒ”แƒœแƒ—แƒแƒœ แƒ›แƒแƒ•แƒ˜แƒ“แƒ.แƒฌแƒงแƒแƒšแƒฅแƒ•แƒ”แƒจแƒ แƒฅแƒ•แƒ”แƒ‘แƒ˜"

  • แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒฎแƒแƒšแƒ˜ PACS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒก แƒซแƒ•แƒ”แƒšแƒก (แƒกแƒแƒ“แƒแƒช แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒ˜ แƒแƒ›แƒแƒ˜แƒฌแƒฃแƒ แƒ). PACS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ–แƒ”แƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ—;
  • แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ แƒแƒ’แƒแƒ แƒ›แƒ” แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒแƒ— แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ (แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒ—) 200 แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ” (แƒ›แƒแƒ—แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ“ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒแƒ“แƒ);
  • แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜แƒก แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ–แƒ แƒ“แƒ˜แƒก แƒขแƒ”แƒ›แƒžแƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒฎแƒ”แƒš, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ“ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, 1-3 แƒ—แƒ•แƒ”แƒจแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš).

แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ.

แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“

แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“, แƒ˜แƒงแƒ แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜, แƒ”แƒžแƒแƒ•แƒแƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒ“แƒ pacs.xml แƒคแƒแƒ˜แƒšแƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก แƒ“แƒ แƒจแƒ”แƒ˜แƒขแƒแƒœแƒ“แƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก PACS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜ AE แƒกแƒแƒฎแƒ”แƒšแƒกแƒ แƒ“แƒ TCP แƒžแƒแƒ แƒขแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ–แƒ” แƒ–แƒ”แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. Windows-แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ˜แƒ› แƒ“แƒ แƒแƒก แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ แƒ แƒแƒ’แƒแƒ แƒช Windows XP-แƒ–แƒ”, แƒแƒกแƒ”แƒ•แƒ” Windows 7-แƒ–แƒ” - แƒแƒกแƒ” แƒ แƒแƒ›, แƒ˜แƒงแƒ แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ แƒแƒ›แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ VBScript-แƒ–แƒ” แƒ“แƒแƒงแƒ แƒ“แƒœแƒแƒ‘แƒ˜แƒ—. แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒแƒกแƒ”แƒ—แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ˜แƒก แƒ“แƒแƒฃแƒคแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒงแƒ, แƒแƒ› แƒ”แƒœแƒแƒ–แƒ” แƒ แƒแƒ˜แƒ›แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ. แƒžแƒแƒ•แƒœแƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒแƒช แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ (แƒแƒฆแƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ, แƒ แƒแƒ› แƒ›แƒ” แƒฃแƒ™แƒ•แƒ” แƒกแƒฎแƒ•แƒ แƒ’แƒ”แƒ’แƒ›แƒ แƒ›แƒฅแƒแƒœแƒ“แƒ แƒ—แƒแƒ•แƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› VBScript-แƒ˜แƒ— 3-4 แƒกแƒแƒแƒ—แƒ–แƒ” แƒ›แƒ”แƒขแƒก แƒแƒ  แƒ•แƒ”แƒฉแƒฎแƒฃแƒ‘แƒ”แƒ‘แƒแƒ“แƒ˜).

แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒ›แƒ” แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜:

  • แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ pacs.xml แƒคแƒแƒ˜แƒšแƒ˜ แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”;
  • แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒจแƒ”แƒชแƒ•แƒšแƒ (แƒ›แƒ” แƒฃแƒ™แƒ•แƒ” แƒ›แƒฅแƒแƒœแƒ“แƒ Perl-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ);
  • แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ แƒฏแƒ’แƒฃแƒคแƒฃแƒ แƒ˜ แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒจแƒ”แƒ“แƒ˜แƒก แƒ›แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒจแƒ˜, แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ— แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš .bat แƒคแƒแƒ˜แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜แƒ:

echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, pacs.xml แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒแƒ›แƒแƒšแƒฃแƒš แƒ แƒ”แƒกแƒฃแƒ แƒกแƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ’แƒแƒœ แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ”แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ.

แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ แƒšแƒแƒ“แƒ˜แƒœแƒ˜, แƒกแƒแƒœแƒแƒ› แƒ”แƒก แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ“แƒ.

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ Perl แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒžแƒ”แƒ แƒšแƒ˜ Windows-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก ActiveState-แƒ“แƒแƒœ, แƒแƒกแƒ”แƒ•แƒ” XML::Writer แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ“แƒ”แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— ppm แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— XML-Writer.

แƒ—แƒแƒ•แƒแƒ“ แƒกแƒชแƒ”แƒœแƒแƒ แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ:

use XML::Writer;
 
# ะžั‚ะบั€ั‹ะฒะฐะตะผ ะฟะฐะฟะบัƒ ั ะพั‚ั‡ะตั‚ะฐะผะธ, ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐะตะผ ััะฟะธัะพะบ (ัƒะดะฐะปัะตะผ ะปะธัˆะฝะตะต):
	$report_dir = "C:Perl64WORKPACS-xml3";
	opendir(DIR, "$report_dir") or die "ะะต ะผะพะณัƒ ะพั‚ะบั€ั‹ั‚ัŒ ะฟะฐะฟะบัƒ ั ะพั‚ั‡ะตั‚ะฐะผะธ!";
	@report_files = readdir DIR;
	shift (@report_files); # ัƒะดะฐะปัะตะผ ั‚ะพั‡ะบัƒ ะธะท ัะปะตะผะตะฝั‚ะพะฒ ะผะฐััะธะฒะฐ (.)
	shift (@report_files); # ัƒะดะฐะปัะตะผ ะดะฒะต ั‚ะพั‡ะบะธ ะธะท ัะปะตะผะตะฝั‚ะพะฒ ะผะฐััะธะฒะฐ (..)
#	print "@report_files";
	closedir(DIR);
 
# ะะฐั‡ะธะฝะฐะตะผ ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ ั„ะฐะนะปั‹ - ะฟะพ ะพะดะฝะพะผัƒ ะทะฐ ั€ะฐะท. ะัƒะถะฝะพ ัั‡ะธั‚ะฐั‚ัŒ ะฟะฐั€ะฐะผะตั‚ั€ AET ะธ ะฝะพะผะตั€ ะฟะพั€ั‚ะฐ ะฒ ะฟะตั€ะตะผะตะฝะฝั‹ะต.
foreach $analiz_file (@report_files) 
{
	$full_path_to_file="C:Perl64WORKPACS-xml3".$analiz_file;
	open (INFO, $full_path_to_file);
 
	while ($line = <INFO>)
	{
		# ะŸะตั€ะตะผะตะฝะฝั‹ะต $aet ะธ $port ัะพะดะตั€ะถะฐั‚ ัƒะฝะธะบะฐะปัŒะฝั‹ะต ะดะฐะฝะฝั‹ะต ะดะปั ะบะฐะถะดะพะณะพ XML ั„ะฐะนะปะฐ:
		my ($other1, $aet, $other2, $port, $other3) = split /"/, $line, 5;
		# ะ•ัะปะธ ะฒัั‚ั€ะตั‡ะฐะตั‚ัั ัั‚ั€ะพะบะฐ listener - ั‚ะพ ะผั‹ ะดะพัˆะปะธ ะดะพ ะฝัƒะถะฝะพะน ัั‚ั€ะพั‡ะบะธ ะธ ะผะพะถะฝะพ ั„ะพั€ะผะธั€ะพะฒะฐั‚ัŒ ะฝะพะฒั‹ะน XML:
		if ($other1 =~ 'listener')
			{
				# ะคะพั€ะผะธั€ัƒะตะผ ะฝะพะฒั‹ะน XML c ะฝัƒะถะฝั‹ะผะธ ะฟะพะปัะผะธ ะธ ะดะฐะฝะฝั‹ะผะธ:
				my $writer = XML::Writer->new(OUTPUT => 'self', DATA_MODE => 1, DATA_INDENT => 2, );
				$writer->xmlDecl('utf-8');
				$writer->startTag('pacs');
				$writer->startTag('listener', ae => $aet, port => $port);
				$writer->endTag();
				$writer->startTag('hosts');
				$writer->startTag('host', name => 'MRT', ae => 'ORTHANC', ip => 'XX.YY.214.17', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
				$writer->endTag();
				$writer->startTag('host', name => 'KT', ae => 'ORTHANC2', ip => 'XX.YY.215.253', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
				$writer->endTag();
				$writer->startTag('host', name => 'R', ae => 'ORTHANC3', ip => 'XX.YY.215.252', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
				$writer->endTag();
				$writer->startTag('host', name => 'KT-20180501-20180831', ae => 'ORTHANC4', ip => 'XX.YY.215.251', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
				$writer->endTag();
				$writer->startTag('host', name => 'KT-20180901-20181130', ae => 'ORTHANC5', ip => 'XX.YY.215.250', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
				$writer->endTag();
				$writer->endTag('hosts');
				$writer->startTag('presets');
				$writer->endTag();
				$writer->startTag('lastsearch', dt => '4', mfid => '1048592');
				$writer->endTag();
				$writer->endTag('pacs');
 
				# ะŸะพะผะตั‰ะฐะตะผ ะณะพั‚ะพะฒั‹ะน XML ะฒ ะฟะตั€ะตะผะตะฝะฝัƒัŽ:
				my $xml = $writer->end();
				# ะŸะพะดะณะพั‚ะฐะฒะปะธะฒะฐะตะผ ั„ะฐะนะป ะดะปั ะฟะตั€ะตะทะฐะฟะธัะธ:
				$rewritexml = $full_path_to_file;
				# ะŸะตั€ะตะฟะธัั‹ะฒะฐะตะผ XML ั„ะฐะนะปั‹ ะฝะพะฒั‹ะผะธ ะดะฐะฝะฝั‹ะผะธ:
				open (NEWXML, ">$rewritexml");
				print NEWXML $xml;
				close (NEWXML);				
			}
	}
 
}

แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜:

  • แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒกแƒœแƒ˜แƒ— แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— pacs.xml แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒ แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒก แƒกแƒ™แƒแƒšแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ˜แƒ•แƒจแƒ˜ (@report_files);
  • แƒ›แƒแƒ แƒงแƒฃแƒŸแƒจแƒ˜ แƒ•แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ— แƒ”แƒ แƒ— แƒคแƒแƒ˜แƒšแƒก แƒ“แƒ แƒ•แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒ— แƒฎแƒแƒ–-แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก;
  • แƒ’แƒแƒงแƒแƒคแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒ•แƒงแƒแƒคแƒ— แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒฎแƒแƒ–แƒก 5 แƒœแƒแƒฌแƒ˜แƒšแƒแƒ“, แƒ‘แƒ แƒญแƒงแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒ›แƒงแƒแƒคแƒ˜;
  • แƒฉแƒ•แƒ”แƒœ แƒ•แƒžแƒแƒฃแƒšแƒแƒ‘แƒ— แƒฎแƒแƒ–แƒก แƒกแƒ˜แƒขแƒงแƒ•แƒ listener-แƒ˜แƒ— แƒ“แƒ แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (AE แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ“แƒ TCP แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜) แƒแƒ  แƒชแƒ•แƒšแƒแƒ“แƒแƒ“;
  • แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฎแƒแƒš XML แƒคแƒแƒ˜แƒšแƒก, แƒจแƒ”แƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ— แƒ›แƒแƒกแƒจแƒ˜ แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ  แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒแƒ•แƒกแƒ•แƒ˜แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก PACS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ— - แƒ˜แƒ›แƒแƒ—. แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜)
  • แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ— แƒแƒฎแƒแƒš XML แƒคแƒแƒ˜แƒšแƒก แƒซแƒ•แƒ”แƒšแƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ”.

แƒฃแƒœแƒ“แƒ แƒแƒฆแƒ˜แƒœแƒ˜แƒจแƒœแƒแƒก, แƒ แƒแƒ› แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒแƒ› แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒก แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒ  แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ - แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒฃแƒš แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒ•แƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘ แƒชแƒแƒšแƒ™แƒ” แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒก แƒ“แƒ แƒ›แƒแƒกแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒ•แƒชแƒ•แƒšแƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒ˜ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ - แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒœแƒแƒฌแƒ˜แƒšแƒ“แƒ”แƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ–แƒ”.

แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒšแƒ˜ pacs.xml แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ

แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ แƒแƒช แƒ’แƒแƒ›แƒแƒฎแƒกแƒ”แƒœแƒ“แƒ แƒ˜แƒงแƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒแƒœแƒ แƒฃแƒ™แƒ•แƒ” แƒ›แƒแƒ›แƒฃแƒจแƒแƒ•แƒ” .bat แƒคแƒแƒ˜แƒšแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒ” แƒฎแƒแƒ–แƒ˜:

If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml

แƒกแƒแƒ‘แƒแƒšแƒแƒ .bat แƒคแƒแƒ˜แƒšแƒ˜ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

@echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒ”แƒก แƒแƒกแƒ”แƒ"แƒ›แƒฃแƒฎแƒšแƒ˜" แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜. แƒฃแƒ™แƒ•แƒ” แƒแƒ แƒฏแƒ”แƒ  แƒ•แƒชแƒแƒ“แƒ”แƒ— (2018 แƒฌแƒšแƒ˜แƒก แƒกแƒ”แƒฅแƒขแƒ”แƒ›แƒ‘แƒ”แƒ แƒจแƒ˜ แƒ“แƒ 2019 แƒฌแƒšแƒ˜แƒก แƒ—แƒ”แƒ‘แƒ”แƒ แƒ•แƒแƒšแƒจแƒ˜), แƒฏแƒ”แƒ แƒฏแƒ”แƒ แƒแƒ‘แƒ˜แƒ— แƒคแƒ แƒ”แƒœแƒ แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜แƒ. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก 100% แƒแƒ  แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒก แƒแƒฎแƒšแƒแƒกแƒแƒ แƒแƒ› แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒกแƒ—แƒแƒœ - แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒแƒ“ แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ—. แƒกแƒชแƒ”แƒœแƒแƒ แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜ แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ