관리자

`http:localhost:8888`은 안드로이드 디바이스의 localhost를 의미한다.

- 에뮬레이터에서 접속할 때,

`http:10.0.2.2:8888/`

 

- 디바이스에서 접속할 때,

실제 내부 ip(ipv4)로 접속해야한다.

 

'기타' 카테고리의 다른 글

jupyterlab 설치  (0) 2021.01.15
Cygwin  (0) 2021.01.13
chrome 개발자 도구(developer tool) freeze/pause screen (debug/breakpoint)  (0) 2021.01.13
AOP(Aspect Oriented Programming)  (0) 2021.01.07
  1. docker에서 port open

  2. generate config file
    jupyter server --generate-config

-> ~/.jupyter폴더에 jupyet_server_config.py가 생성된다.

  1. update jupyet_server_config.py
    c.ServerApp.password_required = True
    c.ServerApp.port = 8888
    
    c.NotebookApp.ip = '*'
    c.ServerApp.allow_origin = '*'
    c.ServerApp.allow_root = True
  2. jupyter lab --port=8888

 

https://jupyter-notebook.readthedocs.io/en/stable/public_server.html

Windows에서 unix를 기준으로 작성된 source code를 사용할 수 있도록 runtime environment를 제공하는 POSIX(Portable System Interface).

 

Cygwin의 설치 디렉토리는 unix system의 root directory과 비슷한 구성을 가지고 있다.(/bin, /home 같은)

 

처음 개발된 이유도, linux 기반으로 만들어진 프로그램을 손쉽게 Windows에서도 빌드하기 위해서이다.

 

아래 두 가지로 구성된다.

- DLL: API(C standard library 형태)

- unix 시스템을 사용하는 것 같은 느낌을 주는 software tools and application로 구성되어있다.

 

아래의 다양한 feature를 갖는다.

FE에서 dom element가 hover 같은 이벤트에 의해 동적으로 변경될 때가 있다.

이때 개발자 도구에서 뭔가 확인하기 위해서 마우스를 이동하면 element가 원래대로 돌아가서

마우스를 움직일 수가 없다

 

element > 우클릭 > break on > 을 통해서 breakpoint를 걸 수도 있지만,

event 발생시 변경되는 element가 동적으로 생성되는 경우, 이 방법은 통하지 않는다...

 

 

대신 `F8`(window) / `Fn + F8`(mac)을 누르면 debugger가 pause 된다.

당연히 화면도 멈추니, 이 상태에서 개발자 도구로 이동해서 열심히 탐색(?)하면 된다.

'기타' 카테고리의 다른 글

안드로이드에서 로컬 서버 접속하기  (0) 2021.02.16
jupyterlab 설치  (0) 2021.01.15
Cygwin  (0) 2021.01.13
AOP(Aspect Oriented Programming)  (0) 2021.01.07

을 분리하는 프로그래밍 패러다임.

 

 

 

로깅, data validation, DB transaction 처리 등은 여러 곳에서 이용되지만, 분명히 프로그램의 핵심 로직은 아니다.

 

그렇다보니 Object가 하나의 책임과 역할을 수행하는 OOP를 적용하기에는 불편하고,
프로그램 로직과는 별개로 관리하는 것이 편리하다.

 

간단한 예시를 생각하보자.
- 로깅을 하기 위해서 모든 함수의 parmater로 logger를 포함해야한다거나,
- 모든 함수에서 사용자의 권한을 확인하는 코드를 호출해야한다면,

 

중복 코드로 가독성이 떨어지고, 프로그램 로직과 부차적인 코드를 구별해서 관리하기가 어렵다.

로깅 형식을 바꾼다던가, type을 변경하려고만 해도 여기저기 흩어져있는 관련된 코드를 모두 수정해야한다.

 

AOP에서는 이처럼 여러 곳에 사용되는(흩어져서 존재하는) 기능을 모듈화하고,
이용되는 상황을 정의? 조건화?하여 반복 코드를 줄인다.

 

wikipedia의 아래 설명이 제일 믿을만하고 명료했다.

An aspect of a program is a feature linked to many other parts of the program, but which is not related to the program's primary function.
(https://en.wikipedia.org/wiki/Aspect_(computer_programming))

 

This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code, core to the functionality.
(https://en.wikipedia.org/wiki/Aspect-oriented_programming)

 

(한 페이지 설명: https://www.simplilearn.com/spring-aop-tutorial)

 

 

- 이해하기가 조금 어렵고,

- control flow를 관리하기 어려워 GOTO 보다 나쁘다는 평가도 있다.

- 여러 곳에 흩어져있는 코드를 하나로 관리하다보니, 하나를 수정했을 때 전체 영향을 미칠 수 있다.

 

 

* 비고

AOP의 개념보다도, 이 문제를 해결하기 위해서 AOP를 사용하는 것이 맞는가? 라는 판단을 내리는 게 더 어려운 것 같다.

 

Cross-cutting concerns의 예시

'기타' 카테고리의 다른 글

안드로이드에서 로컬 서버 접속하기  (0) 2021.02.16
jupyterlab 설치  (0) 2021.01.15
Cygwin  (0) 2021.01.13
chrome 개발자 도구(developer tool) freeze/pause screen (debug/breakpoint)  (0) 2021.01.13

+ Recent posts