수직 정렬에서 가장 간단한 방법은 CSS로 vertical-align 속성에 middle을 주는 것입니다.

그러나 vertical-align 속성은 inline 요소 혹은 table-cell 요소에만 적용이 된다는 한계점이 있습니다.

 

그래서 div태그에서 vertical align을 하기가 굉장히 까다롭습니다.

div태그는 태그 중에서 block 요소에 속하기 때문에 위에 있는 vertical-align 요소가 동작하지 않기 때문입니다.

 

그러나 css에서는 요소의 특징을 변경할 수 있는 display라는 속성을 제공하는데, 바로 이것을 가지고 div태그의 요소를 바꾸어 간단하게 수직 정렬을 적용할 수 있는 방법을 알아보겠습니다.

 

CSS에서

div {

  display: table-cell;

  vertical-align: middle;

}

이렇게 적용해 주시면, 바로 div 태그에 수직정렬이 적용되는 것을 보실 수 있습니다.

 

table-cell이외에도 inline에도 vertical-align이 적용되지만, inline을 요소로 적용하게 되면, 미리 div에서 적용하였던 width와 height 등 여러 속성이 적용이 안되는 문제점이 있기 때문에 바로 table-cell로 바꾸어 준 것입니다.

 

그리고 vertical-align은 top, middle, bottom으로 설정해주시면 각 수직 상단, 중단, 하단으로 정렬됩니다.

 

 

여담으로 요소를 flex로 만들어서 수직 중앙정렬을 먹일수도 있습니다.

div {

  display: flex;

  align-items: center;

}

 

 

* 사실 이 방법은 약간의 꼼수에 가까운데, table : table-cell의 관계를 무시한 채 강제적으로 div의 block 요소만 table-cell요소로 바꾸어준 것이기 때문입니다. table : table-cell 요소는 html에서 <table> : <td>의 요소이며, 사실 html에서는 <table> 아래에 <td>가 들어가야 제대로 동작하는 것에 비교해보면 사실 상위에 div를 하나 더 만들어서 그 상위 div를 display: table;로 만들어주는 것이 엄밀하게 제대로 사용한 것이라고 볼 수 있습니다.

정말 거두절미하고

https://visualstudio.microsoft.com/ko/vs/

에 들어가서 중간에 'Visual Studio 다운로드' 버튼에 마우스 가져다 대면 드롭다운으로 'community, professional, enterprise'세개가 뜨는데 community로 클릭해서 받으면 끝.

 

다운 이후엔 원하는 언어만 쏙쏙 골라서 설치하기 누르면 알아서 다운되고 설치된당.

 

별에 별 광고링크, 낚시링크 빡친당.

 

할게 없어서 이런걸로 낚시하냥.

:wq - 저장 후 끄기(커맨드라인 복귀)

:q - 끄기(변경사항 발생시 안꺼짐)

:q! - 강제로 끄기(변경사항 발생시 저장 안됨)

Mac OS 업데이트 시마다 거의 연례행사로 업데이트 후에 전에는 잘 되던 것이 왕왕 문제가 터지곤 한다.

 

오늘 터졌던 문제는 git 입력시에 바로 여러 추가 커맨드 문구가 나와야 하는데, 그러지 않고

xcrun error invalid active developer path

라는 에러가 출력되었던 것이다.

 

원인을 찾아보니

MacOS Mojave 업데이트 시 발생

MacOS High Sierra 업데이트 시 발생
MacOS Sierra 업데이트 시 발생
OS X El Capitan 업데이트 시 발생

등 참 여러 업데이트 시에도 발생하였다...

 

해결법은 의외로 간단한데, 터미널에서 xcode-select --install 만 쳐주면 된다.

 

그러면 대부분의 경우 설치 완료와 함께 문제가 해결되었을 터이나...

 

항상 예외는 나한테만 터지는지 저거를 커맨드 라인에 실행하고 프로그램이 실행되었는데

'소프트웨어 업데이트 서버에 접속할 수 없습니다.'

혹은

'소프트웨어 업데이트 서버에 접속할 수 없거나 일시적으로 사용할 수 없기 때문에 지금 업데이트 할수 없습니다'

라는 에러가 발생하였다.

(이렇게 불확실한 이유는 해결법을 찾고 너무 좋아서 그냥 작업하다가 원래 검색 페이지를 잃어버렸기 때문...)

 

혹시나 해서 git을 다시 쳐봐도 에러는 그대로인 상태.

 

여러 해결방안을 찾아보다가 '프로그램에서 알아서 업데이트 못해주면 내가 설치해버리자'는 생각에 무작정 애플 디벨로퍼에 쳐들어가 command line tools for Xcode를 수동으로 받고 설치하였다.(https://developer.apple.com/download/more/?name=for%20Xcode)

 

결과는 대성공.

 

다운 받을 때 주의 사항은 위에 메뉴에서 사과버튼 클릭해서 '이 Mac에 관하여'를 클릭했을 때 나오는 버전보다는 낮은 command line tools를 설치해야 한다는 것이다.

괴짜 : 기이한 행동을 하는 이상한 사람 => 당연한 상식이라고 생각하는 것을 뒤집어 보는 사람들

         => 편견에 사로잡히지 않고 편실에 입각한 가장 합리적인 결과

 

통념과 편견의 오류에서 벗어나 괴짜처럼 현명하게 생각하기

 

"어떻게 하면 더 많은 핫도그를 먹을까?" => "어떻게 하면 핫도그를 더 쉽게 먹을 수 있을까?"

"병의 원인이 다른 데 있을 수도 있지 않을까?"

기부금 걷기 문제 -

 기부를 꺼리는 사람에게 최고의 인센티브는?

  1) 타인을 도울 수 있다는 이타주의?

  2) 남을 도움으로써 느낄 수 있는 자기 만족감?

  3) 인간적 동기?

  => 답은 단 1회성으로 끝낼 수 있다는 것

 

모른다는 사실을 먼저 인정하기

아이처럼 재미있고 소소한 것 중시

기회비용을 생각하면 절대 포기하지 않는 정신보다 포기하는 것이 실은 더 현명한 것일 수도 있다. [매몰비용]

역발상

 

괴짜처럼 생각하는 것이 결국은 본질에 대해 날카롭게 집중하는 것이다.

'ETC > 책리뷰' 카테고리의 다른 글

고민하는 힘  (0) 2019.05.09
보이게 일하라  (0) 2019.05.08

1종 오류 - 실제로는 없는데 있다고 착각하는 데서 발생하는 오류
2종 오류 - 실제로는 있는데 없다고 착학하는 데서 발생하는 오류

한 폴더 내의 모든 텍스트 문서를 하나의 텍스트 문서로 합치고 싶으면?

 

1) ctrl+r

2) cmd

3) enter

4) cd 를 이용하여 원하는 폴더로 이동

5) copy *.txt 파일명.txt

6) 파일명.txt로 폴더 내의 모든 .txt 문서가 합쳐짐

Trouble Shooting-

 * Linux: apt install 에서 "Unable to locate package"에러가 나는 경우 sudo apt-get update를 해주면 해결 된다.

 * pip를 업데이트 하였다가 "cannot import name 'main'"이란 에러가 발생하는 경우

      1) which pip를 커맨드 라인에 치면 pip의 위치가 나옵니다. [/usr/bin/pip]

          보통 이 pip 위치에서 하면 되는데 가끔 전혀 다른 곳에서 pip가 문제가 되는 경우 상단의 에러메시지와 함께 어떤 위치에서 발생하였는지 나오기 때문에 그 위치의 pip 파일을 수정해 주시면 됩니다.

      2) sudo nano pip라고 치시면 nano editor가 작동하며 파일이 열립니다. vim으로 작성하셔도 크게 문제 없습니다.

      3) 파일을 열면
from pip import main
if __name__ == '__main__':
     sys.exit(main())

 

이렇게 나와 있을 것인데, 이것을

import sys
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())

 

로 바꿔주시고, ctrl+o를 눌러서 저장한다고 하시고 엔터 치신 뒤 ctrl+x로 빠져나오시면 됩니다.

그리고 이후에 pip이용시에는 문제가 되지 않을 것입니다.

   

참고-

 복붙은, GUI환경에서 ctrl+c 후에 linux cli환경에서 마우스 오른쪽 클릭으로 됩니다.

 

리눅스-

먼저 리눅스 설치가 기반이므로 리눅스 설치를 일단 설명한 뒤 윈도우 설치로 넘어가도록 하겠습니다.

나이브 linux subsystem(ubuntu)에서 까는 것으로 가정하고 서술하겠습니다.

일단 python 2.7로 깔고 이후에 pyenv등을 통하여 3.대와 같이 사용하도록 하겠습니다.

 

1) 먼저 pip가 인스톨 되어 있지 않을 것이니 apt install python-pip(혹은 sudo apt install python-pip)를 해줍니다.

2) git도 안깔려 있을테니 apt install git 해줍니다.

3) unzip도 안깔려있습니다. apt install unzip 해줍니다.

4) pip install tensorflow-gpu

5) sudo apt-get install protobuf-compiler python-pil python-lxml python-tk

   pip install --user Cython
   pip install --user contextlib2
   pip install --user jupyter
   pip install --user matplotlib

6) git clone https://github.com/cocodataset/cocoapi.git

7) git clone https://github.com/tensorflow/models

8) cd cocoapi/PythonAPI

9) make

10) cp -r pycocotools [/root]/models/research/

   pycocotools를 앞서 다운받은 models 안에 있는 research 폴더 안에 넣어야 합니다. 앞에서 다운받은 models위치를 확인하여 주시고 (보통 위에것을 그대로 실행하셨다면 최상위 디렉토리에 models가 다운되었을 것입니다. 최상위 디렉토리 이름은 유저네임과 동일하므로 /[user name]/models...으로 진행하여 주시면 됩니다. 저는 유저네임을 root로 하였기에 다음과 같은 주소입니다. [/root/models/research/]

11) cd

12) curl -OL https://github.com/google/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_64.zip

13) unzip protoc-3.2.0-linux-x86_64.zip -d protoc3

14) ~/protoc3/bin/protoc --help

     위 명령어를 입력한 후에 뭔가가 주르륵 나오면 설치 완료입니다.

15) cd models/research

16) ~/protoc3/bin/protoc object_detection/protos/*.proto --python_out=.

17) export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

18) python object_detection/builders/model_builder_test.py

 

윈도우-

 윈도우 버전에서는 저번에 CUDA환경을 만들어 놓은 Anaconda 환경에서 진행하도록 하겠습니다. [https://omnil.tistory.com/64?category=777916]

 리눅스와 다르게 GUI시스템 기반이라 수기로 옮겨주고 처리해야 하는 등 리눅스보다는 조금 더 많이 왔다갔다 해야 합니다.

 0) Anaconda prompt를 열어줍니다.

 1) pip install git

    일단은 git 정도가 깔려있는지 확인해 줍니다.

 2) 이미 tensorflow는 전에 CUDA환경을 만들면서 설치하였기 때문에 넘어갑니다.

 3) windows는 apt-get 을 통한 protobuf-compiler의 인스톨이 불가하므로 pip로 대체합니다.

  pip install --user Cython 
  pip install --user contextlib2 
  pip install --user pillow 
  pip install --user lxml 
  pip install --user jupyter 
  pip install --user matplotlib

  보통 아나콘다를 깔면 위의 것들 중 많은 것이 깔리지만 일단은 확인 차원에서 한번씩 다 실행해 줍니다.

 4) git clone https://github.com/tensorflow/models

  이번에는 모델을 먼저 받아줍니다. cocoapi부분이 윈도우에서는 좀더 설명이 필요하기 때문에 간단한 것 먼저 진행합니다.

 5) linux와 다르게 윈도우에서는 깃에서 클론한 cocoapi를 사용하는 대신 바로 설치를 해버릴 것입니다.

  그 이유는 일단 윈도우 안에서 make 명령어가 없으며, make를 돌아가게하는 패키지를 conda로 깔아도(conda install makeconda install -c anaconda make) 마이크로 소프트 비쥬얼 스튜디오 버전이니 cl.exe니 하면서 과거 CUDA에서 저를 괴롭혔던 것들이 막 튀어나오거든요..

  그리고 다른 이유로는 과거에는 cocoapi가 공식적으로 windows를 지원하지 않았으나 이번에는 지원하는 것으로 나왔기 때문에 시스템 안정성 측면에서도 공식 서포트되는 것이 좋기 때문입니다. [https://github.com/philferriere/cocoapi]

  명령줄에

    pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

  를 입력해주시면 됩니다. 그러면 알아서 다운받고 설치까지 합니다. 이 상황에서 위의 리눅스와는 다르게 따로 설치하고 파일을 옮겨줄 필요 없이 자동으로 잘 동작합니다.

 6) protoc도 윈도우즈 용으로 따로 받아줄 것 입니다.

  아나콘다 프롬프트에서도 CURL 명령어가 먹기는 하지만, 그냥 브라우저상에서 https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-win32.zip를 입력하거나 그냥 링크를 클릭하셔서 protoc를 다운 받으십시오. 윈도우에서는 3.4 이상에서 버그픽스가 있었는지 많이들 권하는 버전이 3.4입니다.

 7) 이 파일을 받으신 뒤 윈도우에서 GUI로 압축을 해제하여 주시고 폴더 이름을 단순하게 지어주십시오. 경로는 가장 간편한 경로가 좋습니다. 왜냐하면 윈도우즈에서는 CLI환경에서 상대주소를 사용하기가 힘들(저는 거의 불가능이)기 때문에 시스템 path로 등록해주고 그냥 바로 이름만 써서 사용할 것 입니다.

 8)  시스템 패스를 설정합니다.

 => 시작메뉴 오른클릭 '시스템'

    -> 검색창에 '고급' 검색

      -> 검색된 결과 중 '고급시스템설정보기' 클릭

        -> 하단의 '환경변수' 버튼 클릭

          -> 하단의 '시스템 변수' 리스트 중 'Path'를 찾아 클릭하고 하단의 '편집' 버튼 클릭

            -> '새로만들기' 버튼 클릭 후 새로나오는 입력창에서 '압축푼 폴더\[압축 푼 이름]\bin\'을 입력합니다. 경로는 절대경로이어야 하며, 보통의 경우 '사용자' 아래에 바로 저장할 경우 C:\Users\[유저 이름]\압축 푼 폴더 이름\bin\'이라고 입력하면 됩니다.

              -> 이후 모든 창에서 '확인'을 눌러서 종료해주시면 됩니다.

 9) protoc --help 치면 무언가가 주르륵 뜰 것입니다. 절반의 성공입니다.

 10) 왜냐하면 위의 리눅스처럼 윈도우는 *.proto 가 먹지 않기 때문입니다. 그럼 지옥처럼 모든 proto파일마다 하나하나 protoc를 먹여주어야 하느냐.. 하면 그건 또 아닙니다. models/research 폴더로 가셔서,

      명령줄에

       for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.

      를 입력하여 주십시오. 명령줄에서 for문이라니! 하실 수도 있지만, 제대로 잘 작동합니다. 위의 linux의 *.proto와 같은 기능으로 파일 내 모든 .proto 파일을 protoc로 컴파일 합니다.

      잘 되었는지는 object_detection\protos에 가서 보시면 .py파일이 .proto아래 생겨있으면 성공입니다.

 11) CLI상에서 환경변수 설정하는 방법도 linux와는 약간 다르게, models/research 폴더 상에서

       SET PYTHONPATH=%cd%;%cd%\slim

      를 입력하시면 됩니다. 특이점이라면 %cd%와 %cd%사이가 콜론(:)이 아니라 세미콜론(;)입니다.

      지금까지 사용해 본 결과로는 매번 실행할 때마다 새로 해주어야 하는 것 같은데, 이는 추후에 더 확인해보고 계속 초기화 되면 시스템 패스에 등록한 뒤 제대로 작동되나 확인해보고 추가하겠습니다.

 12) python C:\Users\[유저 이름]\models\research\object_detection\builders\model_builder_test.py 를 입력하시면 OK사인이 나옵니다. GPU환경에서요. (여담이지만 윈도우즈에서는 대괄호 안에 넣은 절대주소를 이용하는 것이 속이 편합니다.)

윈도우즈 10 64bit에서부터 ubuntu가 공식적으로 윈도우즈의 subsystem으로 들어왔습니다.

 

그리고 이를 따라서 하신다면 VMware에서 말고도 윈도우즈 자체에서 linux bash등 linux system을 사용할 수 있기 때문에 좀 더 빠른 환경을 가지실 수 있습니다.

 

1) 시작메뉴에서 '제어판'을 실행합니다.

2) 프로그램 및 기능을 선택합니다.

3) 왼쪽의 Windows 기능 켜기/끄기를 선택합니다.

4) 목록에서 Windows subsystem for Linux를 체크하고 확인을 누릅니다.

5) 컴퓨터를 재시작 하라는 안내가 나오면 재시작 합니다.

6) Microsoft store에서 linux를 검색하고, 아래에 'Windows에서 Linux의 모든 것을 누리세요' 하단의 '앱 다운로드'를 클릭합니다.

7) 사용 가능한 linux 배포판이 리스팅 되어 있습니다. 저희는 Ubuntu를 설치할 것이므로, Ubuntu를 클릭하시고 '무료' 혹은 '다운로드'를 클릭하셔서 다운 받으신 뒤 '설치'를 눌러주시면 설치가 진행됩니다.

8) 설치가 다 되면 시작메뉴에서 ubuntu를 검색한 뒤에 그냥 클릭해주시면 자동으로 ubuntu system이 가동됩니다.

9) 첫 실행시에는 Unix username과 password를 입력하는 것이 뜰 것입니다. 작성하고 싶으신 username과 password를 입력해주시면 됩니다.

 

10) 윈도우즈 내에 linux ubuntu subsystem 설치를 완료하였습니다.

 

이후에는 linux에서 사용하듯이 명령어를 입력하여 linux환경 혹은 bash 환경을 설정할 수 있습니다.

고민하는 것이 사는 것이며, 고민하는 힘이 살아가는 힘이다.

 

1) 나는 누구일까?

 사람과 사람의 관계에 있다 : ~의 아빠, ~의 남편.

                                      나란 존재는 타자와의 관계 속에서만 성립할 수 있다. => 타인은 나의 지옥이다

                                      => 주변 사람들을 소중하게 생각해야

 

2) 우리는 무엇을 위해 일을 하는가

 콤플렉스 : 일을 하지 않으면 제 구실을 하지 못한다.

 사회 속에서 자기 존재를 인정 받는다.

 

3) 제대로 안다는 것은 무엇인가

 정보를 더 많이 가지고 있는 것을 지성으로 착각하고 있는 것은 아닌가?

 알고 있다(know)와 사고하다(think)는 다르고, 또한 정보(information)와 지성(intelligence)은 다르다.

 세상을 움직이는 지식은 정보가 아니라 진리이다.

 

4) 늙어서 우리는 어떻게 살아야 할까

 늙지 않는 것을 꿈꾸지 말고, 늙으면서 얻는 가치를 이용하라.

 제 2의 인생에 도전 : 인생을 두 번 살 수 있는 기회

 

진정한 문제는 밑바닥을 치는 고민을 통해 해결.

큰 고민이 위대한 역사를 만든다.

 

감상: 사람은 고민하는 만큼 성장한다고 하였다. 갓 태어난 새는 자신만의 세계를 부리가 부러질 정도로 쪼아대어야 새로운 세상으로 나아갈 수 있다고 하였다. 이것은 자신만의 고민에도 해당되는 것 같다. 자기자신에 대한 고민을 죽을정도로 할 때, 그 해답에서 자신의 세상이 그만큼 넓어지는 것이라 생각한다. 또한 일을 하면서도 고민을 통해 어떻게 하면 더 효율적으로 일할 수 있을까를 고민하다보면 그만큼 요령이 생긴다. 고민 없는 삶이 좋은 것 같지만 미꾸라지와 잉어의 이야기처럼 적절한 스트레스(고민)은 일상생활을 더 활력있게 만든다.

'ETC > 책리뷰' 카테고리의 다른 글

괴짜처럼 생각하라  (0) 2019.05.30
보이게 일하라  (0) 2019.05.08

+ Recent posts