제목은 거창하지만 사실 내용은 별게 없음.

왜냐면 맥북 받고 일주일도 안됬기 때문...


필자의 경우 윈도우만 30년을 써왔고

(물론 핸드폰과 타블렛은 아이폰/아이패드를 사용중)

맥쪽 세계는 먼 나라 이야기와 같았음.


간간히 아이패드를 키보드와 연결해서 쓸때마다 

'어휴 키 어지간히 불편하네' 를 외치며 맥북은 돈낭비다 라고 주장한 사람이었지만


어느새 나도 맥북을 사서 이러한 글을 쓰고 있음.


고민은 약 2달정도 했고 맥북으로 가게 된 가장 큰 이유는 아무래도 폰, 타블렛과의 연동을 극한으로 끌어올리기 위해서였음.

(물론 아직 극한으로 못 끌어올림 -_-)


현재 맥북 1주차인데 기회가 된다면 매주 맥북을 사용하는 느낌을 적으려고함


-1주차까지 한것

- 맥북 상태 검사(각종 액정검사 등)

- 리눅스 터미널 세팅 변경(bash-> zsh)

- 기타 필요 앱 깔기(카카오톡, 노션, 크롬 정도만 설치함)

- 느낀점 : 불편하다. 불편하다 불편하다...


-2주차까지 한것

- 여러 도움되는 앱을 설치함(지터치, 카라브루이너?, 마그넷, 등등)

- 듀엣, 리플렉터 등도 구매함

- 아이폰과 문자 동기화가 되면서 맥북을 사용하게 되는 경우 핸드폰을 굳이 찾을 필요가 없게됨

- 에어드랍을 쓰기 시작하면서 필요한 스샷들을 바로 아이패드로 옮길 수 있음(생각해보니 그냥 바로 아이클라우드로 동기화 해도 될듯?)

- 트랙패드가 너무 편함. 진짜 너무너무 편함.


- 5주차까지 한것

- 중간에 몇주가 사라짐 ㅠㅠ

- 맥 환경에 완전히 적응함

- 트랙패드는 정말 편한데 손목쪽에 무리가 가는 느낌도 듬. 간간히 마우스도 같이 사용해야할듯

- 터치바는 정말 쓸모가 1도 없다. 어떻게 사용하는지도 모르겠다.

- Sequel Pro가 좀 불안정한게 있어서 TeamSql을 깔아봤는데, 이것도 조금 불편한게 있음


- 6주차


- 구매때부터 가지고 다니던 템 세트.. 사실상 거의 3kg 되는듯 전체 다 합치면...

이번에 맡게 된 기능중 되게 쉽게 생각했는데 엄청 고생하고 있는 부분이 있다.


원리는 간단하다.

클라이언트가 요청을 보내고 서버는 응답을 보낸다. 이때 클라이언트로 가는 응답 이외에 다른 내용을 다른 브라우저에 띄워야 한다.

예를 들어 클라이언트가 정보를 요청하면 서버는 해당 클라이언트의 정보를 응답하기에 앞서 서버 브라우저에 요청이 왔음을 알리고 과정을 띄운다.

(과정이 진행되면 계속 내용을 추가해야한다)

라이브 콘솔 같은 개념이다.


여기서 문제가 되는 부분이 바로 저 서버 브라우저이다.


http 통신은 기본적으로 요청과 응답, 이렇게 한쌍이 존재해야한다. 하지만 위와 같은 과정의 경우엔 저 서버 브라우저는 요청한 사람이 없는데

응답을 받게되는 상황이 된다.


그래서 첫번째로 접근한 방법은 서버 브라우저가 response를 알아챌 수 있는가 였다. => 불가

html에 jquery를 암만 찾아봐도 response를 알아낼 방법은 없었다...


두번째로 접근한 방법은 정말 무시한 방법... 호출이 올때마다 서버 브라우저 내용을 가져와서 플라스크 서버에 캐싱을 한 후에

새로 들어온 내용을 추가 한 후 렌더링 하는 것이다...

무식무식..


세번째 방법은 채팅 프로그램처럼 socketio를 사용하는 방법이다.

현재까지는 이 방법이 제일 주효하다. 일종의 채팅과 같은 로직이기 때문이다.


네번째 방법은 polling, sse를 이용하는 방법.

polling, SSE는 위에서 언급했던 요청/응답의 한계를 벗어나 실시간으로 정보를 띄우기 위해 만들어진 방법들이다.

그렇기에 이를 적용하려 했으나 내 이해력이 문제가 되어 수많은 뻘짓 후 포기하였다.


socketio 같은 경우엔 한번 소켓만 연결하면 편하게 계속 정보를 보내면 됬으나 polling, SSE의 경우엔 url을 통해서 연결을 해줘야했다..

그리고 이후에 계속 서버에 요청을 하게끔 무한루프? 처럼 로직을 짜야하는데 서버상에서 내가 이를 어떻게 처리해야할지 이해가 안되다 보니

포기하게되었다.


좀더 찾아본 후에 예제 코드와 추가된 설명을 업데이트 해야지..



웹 상에서 사용가능한 시각화 라이브러리 중 D3를 좀더 이해하기 쉽게 만든것이 C3이다

다양한 그래프 모양을 비교적 손쉽게 사용할 수 있다.


이번에 수정한 것은 tooltip 부분을 보여주는 것을 바꾸는 것이다.

같은 x 값이라도 서로 다른 모양을 갖은 stacked bar에서 마우스 위치에 따라 서로 다른 내용이 나오게끔 하는 것이 목적이다.



finddle

위 링크로 가면 코드를 확인 할 수 있다.
추가로 ttile 부분을 수정하면 결과 값을 보여주는 식으로도 수정이 가능하다.


1) 책 1.5권 읽기(지난달 0.5권 + 이번달 1권)

2) 신기술 공부(1개?)

3) 체지방 1.2kg감량

(8월달 1.3kg 감량 성공)

4) 알고리즘 3개

1. 한달 2권 책 읽기 : 실패(0.7권)

2. 다이어트 및 운동 가기 : 실패...

def g(x):
    col = 'T'+str(x.t)
    data.at[x.seq-1, col] = x.temp
    return x.t

data['t'] = data.apply(g, axis=1)


당연히 data는 DataFrame구조이다.

(여기서 파라미터 x는 현재 axis=1로 줬으므로 로우별 칼럼들이다. x.t 의 뜻는 t 칼럼을 뜻한다. x.name은 네임 칼럼...)


위 코드를 보면 함수가 무슨 작업을 하든 return은 x.t로 해준다.

그리고 아래에서 data['t'] = 가 명시되어있다.


즉 apply 함수를 통해서 데이터 프레임에 변화를 얼마를 주든 간에 return과 칼럼 명시를 같게 해줘야한다.

안그러면 이상한 결과가 탄생한다.


만일 저렇게 하기 싫다고 한다면

def g(x):
    col = 'T'+str(x.t)
    data.at[x.seq-1, col] = x.temp
    return x

data = data.apply(g, axis=1)


이렇게 바꿔주면된다. 바뀐것은 바로 x.t , data['t'] 가 x, data로 바뀌었다는 것이다.


나는 저 두가지 경우를 섞어서 쓴 적이 있는데

그렇게 할 경우 잘 바뀌다가 제일 마지막에 디멘션 에러가 난다.


'초보 프로그래머' 카테고리의 다른 글

9월의 목표  (0) 2018.09.04
8월 한달 통계...  (0) 2018.09.01
SQL, 내가 원하는 값을 다른 테이블에 집어넣기  (0) 2018.08.26
5일차, 용어정리  (0) 2018.08.12
3일차 용어정리  (0) 2018.08.08

                                     


왼쪽 테이블의 u_name을 오른쪽 테이블에 넣고싶다.

그리고 넣을때의 조건은 b_title이 같은 애들에 한해서 u_name을 넣으려 한다.

즉 오른쪽 테이블의 '아침마다 ~~') 는 Dolphin이 들어가길 원한다.


처음에 이러한 조건을 접근햇을때는 insert를 생각했다.

- insert into 오른쪽테이블(u_name) select u_name from 오른쪽테이블 where 오른쪽테이블.u_name = 왼쪽테이블.u_name

이렇게 할 경우 당연히 안들어가진다. 애초에 뭔가 문제가 많다.

inner join이나 join 등으로 시도해봤으니 이 또한 이상하게 들어간다.


정답은 update였다.

- update 오른쪽 테이블 set u_name =

 (select u_name from 오른쪽테이블 where 오른쪽테이블.u_name = 왼쪽테이블.u_name)


이렇게 할 경우 내가 원하는 칼럼에 원하는 조건에 매칭되게끔 값이 들어가진다.





관련 스택오버플로우 글을 보시려면 클릭하세요


'초보 프로그래머' 카테고리의 다른 글

8월 한달 통계...  (0) 2018.09.01
python, pandas , apply 함수 사용시 주의사항  (0) 2018.08.27
5일차, 용어정리  (0) 2018.08.12
3일차 용어정리  (0) 2018.08.08
2일차 용어정리  (0) 2018.08.08

UWSGI

- Web Server Gateway Interface의 약자

(Gateway : 통신을 위해 프로토콜을 맞게 바꿔주는 변환기)

- Nginx에서 받은 요청을 UWSGI가 담당 및 실행함

- 어플리케이션 컨테이너라고도 한다

- WSGI는 python 표준으로 http를 응답함.

- 이를 확장한 미들웨어가 flask


자세한 정보


https://spoqa.github.io/2012/01/16/wsgi-and-flask.html

NGINX 

아파치와 같은 역할(정적서버), 하지만 더 적은 자우너으로 더 빠르게 서비스 한다

비동기 이벤트 기반구조이다

event-driven 구조


Docker(추가)

도커를 사용하는 이유는 인프라 구축을 쉽고 간편하게 하기 위함.

빠르게 개발을 하기 위한 하나의 수단.


'초보 프로그래머' 카테고리의 다른 글

SQL, 내가 원하는 값을 다른 테이블에 집어넣기  (0) 2018.08.26
5일차, 용어정리  (0) 2018.08.12
2일차 용어정리  (0) 2018.08.08
1일차 용어 정리  (0) 2018.08.06
8월의 목표  (0) 2018.08.05

Docker

- 컨테이너 기반의 오픈소스 가상화 플래폼

- 컨테이너? : 컨테이너 안에는 다양한 상품(바나나, 옷, 신발 등 )이 존재

- 서버도 다양한 프로그램, 환경등으로 구성(구글은 20억개 컨테이너로..)

- 서버를 컨테이너처럼!!

- 컨테이너란 격리된 공간에서 프로세스가 동작하도록 하는 것

- 기존의 가상OS보다 더 가볍고 빠르다.

- 이를 위해 이미지를 생성해야함(컨테이너 실행에 필요한 파일, 설정값 등을 포함하고 있는 것)

'초보 프로그래머' 카테고리의 다른 글

5일차, 용어정리  (0) 2018.08.12
3일차 용어정리  (0) 2018.08.08
1일차 용어 정리  (0) 2018.08.06
8월의 목표  (0) 2018.08.05
오픈소스에 대한 고찰  (0) 2018.06.05

+ Recent posts