앞에서 설명한 것처럼 우리 몸의 여러 가지 활동들은 체액이 어디로 몰려 있는가로 설명될 수 있다.

여기서 '어디로'를 설명할 때 우리 몸의 구획을 나누어서 설명하면 단순하고 이해하기 쉽다.


먼저 머리, 가슴, 배로 나누는 것은 아주 자연스럽다.

머리는 따로 떨어져 나와 있고 가슴과 배는 가로막으로 구분되어 있다.

배는 다시 윗배와 아랫배로 구분될 수 있다.


 

 기관

 기능

 머리 

 뇌

 정신 활동

 가슴

 심장, 폐

 호흡, 혈액 순환

 윗배

 간, 위, 췌장, 비장, 소장

 소화, 흡수

 아랫배

 신장, 대장, 방광, 생식기

 배설, 생식


신장의 경우 위치상으로는 윗배의 뒤쪽에 있지만 복부동맥의 분지 상으로 볼 때 아랫배에 분류하는 것이 자연스럽다.

상장간막동맥 아래쪽에서 동맥이 분지되는 기관의 경우 아랫배에 해당하는 것으로 생각할 수 있다.


이렇게 나누면 이제마가 동의수세보원 장부론에서 신체를 폐비간신 네 부위로 나눈 것과 비슷하게 된다.


여기에 인체를 둘러싸고 있는 피부를 추가하면 아래와 같은 그림이 된다.

심장이 1분동안 박출하는 혈액용량(L/min)을 심박출량이라고 한다.

이 값을 단위만 m3/s로 바꿔주면 가슴 부위의 혈류량이 된다.

혈액이 몸에서 빠져나가지 않으면 총량은 일정해야 하므로 아래과 같은 관계가 성립된다.


QT = { QC + ( QUA + QLA ) } + QD


QT : 가슴(thoracic) 부위 혈류량

QC : 머리(cephalic) 부위 혈류량

QUA : 윗배(upper abdominal) 부위 혈류량

QLA : 아랫배(lower abdominal) 부위 혈류량

QD : 피부(dermal) 부위 혈류량


괄호는 연관성을 가지고 변화하는 무리를 표시한다.

{ }는 인체 내부, ( )는 하행대동맥에 연결된 복부이다.

체표로 혈액이 몰릴 때는 QD가 증가하고 QC + QUA + QLA 가 감소한다.

가슴을 중심으로 위쪽으로 혈액이 몰릴 때는 QC가 증가하고 QUA + QLA 가 감소한다.

하행대동맥으로 가는 혈류량이 감소하는 것이다.


이 식을 통해 앞서 말한 몰아주기가 간단히 설명된다.

QT가 일정할 때 QUA가 증가하면  QC + QLA + QD 가 감소한다.

더 정확하게는 QUA가 증가하기 위해  QC + QLA + Q가 감소해 주는 것이다.

윗배로 혈액이 몰리기 위해서는 머리, 아랫배, 피부가 혈관을 수축시켜서 혈류량을 줄여 양보하는 것이다.

윗배에서 음압을 발생시켜서 혈액을 능동적으로 끌고 가는 체계가 아니기 때문이다.

말 그대로 혈액을 몰아주는 것이다.


스트레스받았을 때 밥 먹으면 소화가 안 될 때가 있다.

QC가 감소할 수 없는 상황이기 때문에 QUA가 필요한 만큼 증가하지 못한 것이다.


  



보일러 배관에는 각 방으로 가는 물의 양을 조절하는 밸브가 있다.

밸브를 조절해서 어떤 한 방으로만 물이 더 많이 가게 할 수 있다.

보일러에서 나오는 물의 양이 일정할 경우에 다른 방은 상대적으로 물이 적게 가게 된다.


우리 몸에서는 심장이 피를 뿜어낸다.

각 장기로 가는 피의 양은 혈관의 확장과 수축에 의해 조절된다.

밥을 먹으면 소화기 쪽으로 피가 몰리고 다른 부분은 상대적으로 피가 적게 가는 식이다.


이때 '많다, 적다'라는 표현은 시간당 흐른 부피로 명확하게 정의할 수 있다.

몸에서는 피가 흐르는 것이므로 이것이 곧 혈류량이다.

혈류량은 다시 혈관의 단면적과 혈류 속도의 곱으로 나타낼 수 있다.


Q= v × A


Q : 혈류량(m3/s)

v : 혈류 속도(m/s)

A : 혈관 단면적(m2)


인간은 항온 동물이다.

우리 몸은 항상 일정한 체온을 유지하려고 한다.

이와 비슷한 시스템이 집마다 하나씩 있다.

바로 보일러이다. 

보일러는 집안 온도를 항상 설정된 온도로 유지해 준다.


보일러에는 연료를 태워서 열을 내는 부분이 있다.

열 발생이 제대로 되지 않으면 집이 춥다.

우리 몸에서도 열 발생이 제대로 되지 않는 경우가 있는데 이것을 양허(陽虛)라고 한다.


물을 데울 때 물의 양이 너무 부족하면 열용량이 작아서 물의 온도가 급격히 올라간다.

이것이 음허(陰虛)이다.


보일러에서 물이 데워지면 펌프가 물을 돌려서 배관을 따라 따뜻한 물이 이동하게 된다.

아무리 따뜻한 물이 있더라도 물이 돌지 않으면 집은 춥다.

물의 운동성이 떨어져서 에너지 전달이 잘 안 되는 상태, 이것이 기허(氣虛)이다.


혈허(血虛)의 경우에는 위의 보일러 모델로는 잘 설명이 되지 않는다.

혈허는 적혈구를 통한 산소 운반에 장애가 있는 상태이다.

혈허의 증상, 혈허에 쓰이는 본초들을 통해 역으로 생각해 볼 수 있다.



우리 몸의 절반 이상은 물로 되어있다.

물리적으로 물이 갖는 특성 중 중요한 것은 비열이 크다는 것이다.

비열이 크면 에너지의 출입이 있어도 온도 변화가 크지 않다.

바로 이런 특성이 우리 몸의 항상성 유지에 도움을 준다.

물은 기화열도 크다.

적은 양의 물을 증발시켜도 쉽게 온도 조절을 할 수 있다. 

우리 몸은 이런 원리를 이용해서 효율적으로 체온을 조절하는 시스템을 가지고 있다.


그 때문에 건강한 몸을 위해서는 적정량의 수분 보유가 중요한 문제가 된다.


1991년 리누스 토발스는 유닉스의 기능을 하는 리눅스라는 소프트웨어를 개발해서 그 소스를 세상에 공개했다.

그 이후 리눅스는 폭발적으로 성장해서 세상을 바꾸었다.

오늘날 사람들 손에 들려있는 스마트폰, 인터넷의 수많은 서버에 리눅스가 들어가 있다.


2018년 나는 한의학의 기능을 하는 오픈소스 한의학을 개발해서 세상에 공개하려 한다.

오픈소스 한의학은 한의학 고서에 담겨 있는 인체에 대한 깊은 이해를 물리적인 모델로 재해석하고 검증하는 것이다.

이 과정에서 사용되는 용어들은 압력, 온도와 같은 측정 가능한 물리량들이다.

설명 모델은 우리가 감각을 통해서 직관적으로 이해할 수 있는 고전물리적인 모델이다.

검증은 학문 분야에 상관없이 다양한 현대과학의 성과물들을 이용할 수 있다.


과학적인 사고력과 통찰력을 가진 사람은 누구나 오픈소스 한의학 개발에 참여할 수 있고 그로 인해 발전은 더욱 가속될 것이다.

건강에 관심이 있는 사람은 누구나 우리 몸이 가진 논리 체계를 들여다볼 수 있을 것이다.


한의학은 한의사들만이 아는 그 무엇이 아니라 인류 모두의 것이 될 것이다.

오픈소스 한의학은 세상을 바꿀 것이다.


목차

  1. 보일러와 기혈음양
  2. 몰아주기
  3. 구획 나누기
  4. 체질의 탄생
  5. 에어컨과 선풍기 - 오한과 오풍
  6. 발열이라는 부작용
  7. 저절로 나는 땀 - 자한
  8. 새는 바가지 - 치밀이음(Tight Junction)


한의학에서는 체액 분포를 조절해서 병을 치료한다.

이것을 달리 표현하면 '기(氣)를 조절하는 것'이다.

체액 분포를 조절하는 방법은 여러 가지가 있다.

한의학의 치료법인 한약, 침, 뜸, 부항, 도인, 안마 등등이 모두 이러한 원리로 설명될 수 있다.

또 이러한 원리에 기반한 치료법은 얼마든지 새로이 추가될 수 있다.



Before you start

prj 

- wxWidgets

- RapidSVN

  • All target Platform is set to Win32.

1. wxWidgets

  • Open Visual Studio Solution file 'wxWidgets/build/msw/wx_vc15.sln'.
  • On the toolbar, choose Release from the Solution Configurations list box.
  • Build solution.

2. RapidSVN

  • Open Visual Studio Solution file 'RapidSVN/build/vc2005/rapidsvn.sln'.
  • On the toolbar, choose Unicode Release from the Solution Configurations list box.
  • Select librapidsvn project and open project properties.
    • C++ -> Preprocessor -> Preprocessor Definitions : Remove snprintf=_snprintf;
    • Repeat for libsvncpp and rapidsvn project.
  • Select rapidsvn project and open project properties.
    • Linker -> Input -> Additional Dependencies :
      Replace wxbase30u.lib;wxmsw30u_core.lib;wxmsw30u_adv.lib; with wxbase31u.lib;wxmsw31u_core.lib;wxmsw31u_adv.lib;
    • Linker -> General -> Additional Library Directories : 
      Replace $(SUBVERSION)/lib/apr;$(SUBVERSION)/lib/apr-util;$(SUBVERSION)/lib/apr-iconv;$(SUBVERSION);
      with $(SUBVERSION)/../apr/Release;$(SUBVERSION)/../apr-util/Release;$(SUBVERSION)/../apr-iconv/Release;$(SUBVERSION)/Release/build/win32;
  • Find '*.lib' files under svn/Release/subversion and move to svn/Release/build/win32.
  • Copy apr-util/xml/expat/lib/LibR/libexpat.lib to svn/Release/build/win32.
  • View -> Other Windows -> Property Manager
    • Select librapidsvn, libsvncpp, rapidsvn and right click -> Add New Project Property Sheet... -> Add
    • Expand 'librapidsvn' tree view -> Unicode Release | Win32 -> PropertySheet
      • User Macros -> Add Macro
        • Name : WX
        • Value : ..\..\..\..\wxWidgets
      • User Macros -> Add Macro
        • Name : SUBVERSION
        • Value : ..\..\..\..\svn
      • C++ -> General -> Additional Include Directories :
        Set to $(SUBVERSION)/subversion/include;$(SUBVERSION)/../apr/include;$(SUBVERSION)/../apr-util/include
  • Build rapidsvn project.


Before you start

prj (Created folder)

- svn (Subversion)

- zlib

- apr

- apr-util

- xml (apr-util has this folder)

- expat

- sqlite

- serf (Created folder)

- openssl

- serf

- scons

- nasm

- svn-win32-libintl

- gettext

1. zlib

  • Open Visual Studio Solution file 'zlib/contrib/vstudio/vc14/zlibvc.sln'.
  • On the toolbar, choose ReleaseWithoutAsm from the Solution Configurations list box.
    (Asm version does not work correctly.)
  • Select zlibstat project and open project properties (Below is needed to work with subversion.)
    • C++ -> Preprocessor -> Preprocessor Definitions : Remove ZLIB_WINAPI;
    • C++ -> Code Generation -> Runtime Library : Set to Multi-threaded DLL (/MD)
  • Build zlibstat project. This will create 'zlibstat.lib'
  • Move 'zlibstat.lib' from 'zlib/contrib/vstudio/vc14/x86/ZlibStatReleaseWithoutAsm' to 'zlib/' for later use.

2. expat

  • Extract 'expat' folder in source to 'apr-util/xml/expat/'
  • Open 'apr-util/xml/expat/expat.sln'.
  • On the toolbar, choose Release from the Solution Configurations list box.
  • Select expat project and open project properties
    • General -> Windows SDK Version : Set to <inherit from parent or project defaults> or Installed SDK version
    • C++ -> Code Generation -> Runtime Library : Set to Multi-threaded DLL (/MD)
    • Linker -> General -> Output File : Set to .\LibR\libexpat.dll
    • Linker -> Advanced -> Import Library : Set to .\LibR\libexpat.lib
  • Build expat project. This will create 'libexpat.dll' and libexpat.lib'

3. apr, apr-util, apr-iconv

  • Open 'apr-util/aprutil.dsw'.
  • On the toolbar, choose Release from the Solution Configurations list box.
  • View -> Other Windows -> Property Manager
    • Right click libaprutil -> Add New Project Property Sheet... -> Add
    • Expand 'libaprutil' tree view -> Release | Win32 -> PropertySheet
      • User Macros -> Add Macro
        • Name : XML_PARSER
        • Value : .\xml\expat\lib\LibR\libexpat
  • Build libapr and libaprutil project

4. openssl

  • Open 'Developer command prompt for vs2017'.
  • Go to 'prj/serf/openssl' (In my case, Z:\prj\serf\openssl)
    cd prj\serf\openssl
  • Add nasm folder to path
    PATH=%PATH%;Z:\prj\serf\nasm
  • Modify 'openssl/Configurations/10-main.conf'

    (Line 1299) "/MT /Zl"
             =>  "/MD /Zl"

    (Line 1312) "/MT"
             =>  "/MD"
  • Configure

    perl Configure zlib --with-zlib-include=../../zlib --with-zlib-lib=../../zlib/zlibstat.lib no-shared enable-capieng VC-WIN32
  • Build
    nmake
  • Move 'libcrypto.lib', 'libssl.lib' from 'serf/openssl' to 'serf/openssl/lib/' for later use.

4. serf

  • Open 'Developer command prompt for vs2017'.
  • Go to 'prj/serf/serf' (In my case, Z:\prj\serf\serf)
    cd prj\serf\serf
  • Modify 'serf/SConstruct'

    (Line 143) allowed_values=('14.0', '12.0',
             => allowed_values=('14.1', '14.0', '12.0',

    (Line 329) 'zlib.lib'
             => 'zlibstat.lib'

    (Line 338) ['libeay32.lib', 'ssleay32.lib']
             => ['libcrypto.lib', 'libssl.lib']

    (Line 346) '$OPENSSL/inc32'
             => '$OPENSSL/include'

    (Line 347) '$OPENSSL/out32dll'
             => '$OPENSSL/lib'
  • Configure & Build

    ..\scons\scons.py APR=../../apr APU=../../apr-util OPENSSL=../openssl/ ZLIB=../../zlib LINKFLAGS=/SAFESEH MSVC_VERSION=14.1

5. Subversion

  • Open 'Developer command prompt for vs2017'.
  • Go to 'prj/svn' (In my case, Z:\prj\svn)
    cd prj\svn
  • Add gettext folder to path
    PATH=%PATH%;Z:\prj\gettext\bin
  • Modify 'svn/build.cfg'. Add following line in [libsvn_ra_serf] section

    msvc-libs = Crypt32.lib
  • Modify 'svn-win32-libintl/inc/libintl.h'. Add following line at the top of the file

    #define LIBINTL_VERSION 0x00000e01
  • Copy 'prj/svn-win32-libintl/' to 'prj/svn/build/win32' (Subversion's build script cannot find this library correctly)
  • Configure
    gen-make.py --vsnet-version=2017 --with-apr=..\apr --with-apr-util=..\apr-util --with-apr-iconv=..\apr-iconv --with-zlib=..\zlib --with-sql=..\sqlite --with-libintl=..\svn-win32-libintl --with-serf=../serf/serf --with-openssl=../serf/openssl --with-static-openssl
  • Build

    msbuild subversion_vcnet.sln /t:__MORE__ /p:Configuration=Release


I used RapidSVN as subversion GUI client for my Windows desktop.

I like it because it's lightweight standalone application.

Unfortunately, it is not updated anymore and it does not work with latest subversion.


I decided to make it work again for myself.

Finally, I succeeded.

Here is how I did.

Tools

  1. Visual Studio Community 2017
    On Windows 7, you need to install Windows 8.1 SDK too with Visual Studio Installer.
  2. Python (2.7.15)
    Subversion's build script is based on Python 2.x. (Python 3.x is not supported)
  3. Perl (strawberry-perl 5.28.0.1)
    Required to build openssl
  4. nasm (2.14rc15)
    Required to build openssl
  5. Scons (scons-local-3.0.1)
    Required to build serf

Source Codes and Libraries

  1. Subversion (1.10.2)
    1. zlib (1.2.11)
    2. expat (2.2.6)
    3. apr (1.6.3-win32)
    4. apr-util (1.6.1-win32)
    5. apr-iconv (1.2.2-win32)
    6. sqlite (sqlite-amalgamation-3240000)
    7. openssl (1.1.0i)
    8. serf (1.3.9)
    9. svn-win32-libintl
    10. gettext-0.14.4-bin.zip, gettext-0.14.4-dep.zip
  2. wxWidgets (3.1.1)
  3. RapidSVN



똥을 가장 편하게 싸는 방법은?


마려울 때 싸는 것이다.

마렵지 않을 때 아무리 아랫배에 힘을 주어도 똥은 나오지 않는다.


삶도 그와 같다.

삶에서 원하는 것이 있다면

이루어지려 할 때 행하는 것이 가장 쉬운 방법이다.


'응가야 나와라' 하면서 힘만 잔뜩 주고 있는 것은 아닌지 돌아본다.


+ Recent posts