[Python] input() vs sys.stdin.readlines() 차이

[Python] input() vs sys.stdin.readlines() 차이 백준 알고리즘 등을 풀다보면 두 방법의 차이가 많이 나는것을 알 수 있다. 파이썬은 동적변수라지만 변수의 형태를 저장하기 위해서 input()메소드 내에서 가공을 해야 한다. raw_input()은 문자열을 반환하고 input()은 raw_input()을 evaluate한 결과를 반환한다. 참고) raw_input()은 문자열만을 받는 input sys.stdin.readline()은 한 줄의 문자열을 반환하는데 이것을 int()로 묶어서 정수로 반환하는게 더 빠르다. 출처 https://www.acmicpc.net/board/view/855

[Database] FOREGIN KEY 제약 조건

[Database] FOREGIN KEY 제약 조건 CASCADE 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어줌 SET SULL 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됨 NO ACTION 참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않는다. SET DEFAULT 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다. RESTRICT 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정 할 수 업습니다. 출처 http://tcpschool.com/mysql/mysql_constraint_foreignKey

[컴퓨터네트워크] Mac address(맥 주소)란?

[컴퓨터네트워크] Mac address(맥 주소)란? IP Address는 논리적 주소체계 반대로 물리적 주소체계도 존재 함 흔히 MAC(Media Access Control)주소 라고 함 다른 이름으로는 Physical Address라고도 함 MAC주소는 장치의 소프트웨어 대신 그 하드웨어에 연결되어 있기 때문에 실제 주소라고 합니다 MAC 주소는 01-23-45-67-89-AB와 같은 형식의 16진수로 표시됩니다. 네트워크 장치의 MAC 주소를 변경할 수 있지만 일반적으로 변경되지 않습니다. 이러한 이유 때문에, MAC 주소는 영구적인 주소로 간주됩니다. IP주소는 쉽게 변경되므로 MAC 주소가 네트워크의 특정 장치를 보다 안정적으로 식별할 수 있는 방법입니다. 이러한 MAC address는 LAN(Local Area Network)또는 Ethernet이라 불리는 망에서 통신을 하기 위하여 사용됨 LAN이라는 이름에서 알 수 있듯이 MAC은 자신이 속한 네트워크 안에서만 통신이 됨 이후 네트워크를 빠져나가는 장치인 Router를 지나게 되면 IP를 이용하여 통신하게 된다. 출처 http://korean-daeddo.blogspot.com/2015/12/ip.html

[컴퓨터네트워크] 서브넷 마스크(subnet mask)란?

이미지
[컴퓨터네트워크] 서브넷 마스크(subnet mask)란? 서브넷 마스크(subnet mask)  네트워크를 알기 위해서 사용함 IP주소를 네트워크 환경에 맞추어 나누어줄때 사용 즉, 커다란 네트워크를 서브넷으로 나눠주는 네트워크 주요방법중 하나 IP주소를 네트워크 환경에 맞추어 나누어줄때 사용한다 나누어줄때도 마구 분배하는게 아니라 개수에 비슷한 단위로 나누어서 분배해야한다. 만약 C클래스를 받게 되면 256개를 받게 되는데 여기서 0과 255를 제외하게 되면 254개를 분배할 수 있다. 만약 PC가 100대가 있다하면 154개는 쓰지않는  IP주소가 된다. 이런 낭비를 안하기 위해서 서브넷을 사용한다. 서브넷의 예 만약에 할당받은 네트워크가 192.192.192.0이라고 한다 192.192.192.0은 2진수로 나타내면 11000000.11000000.11000000.xxxxxxxx이고 서브넷 마스크는 255.255.255.0이다. 255.25.255.0은 2진수로 나타내면 11111111.11111111.11111111.00000000이다. AND 연산을 하게 되면 x가 들어간 자리는 어떤 값이 들어가도 0이 나오게 된다. 이러한 서브넷 마스크를 보면 같은 네트워크를 쓰는 ip인지 알 수 있다. 여기서 서브넷 마스크를 이용해서 네트워크를 나눌수도 있다. 만약 서브넷 마스크를 255.255.255.128이라고 하면 11111111.11111111.11111111.10000000인데 뒤에 0의 개수 7개하면 2의 7승에 0과 127을 빼면 128-2 =126개를 사용 할 수 있다. 그러면 뒷자리수가 1~126까지 같은 네트워크 129~254까지 같은 네트워크로 분리 할 수 있다. 이처럼 네트워크 번호, 서브넷 마스크나 ip주소와 서브넷 마스크만 알고 있어도 그 pc가 속한 네트워크의 IP주소 범위를 알 수 있다. 우리가 주로 공유기 C클래스로 할당 받는데...

[Web] 쿠키 & 세션 & 캐시

이미지
[Web] 쿠키 & 세션 & 캐시 HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용 HTTP 프로토콜의 특징 1. 비연결지향(Connectionless) HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다. 헤더에 keep-alive라는 값을 줘서 커넥션을 재활용하는데 HTTP1.1에서는 이것이 default이다. HTTP가 tcp위에서 구현되기 때문에( tcp는 연결지향, udp는 비연결지향 ) 연결지향이라고 할 수도 있다는 얘기도 있고 논란도 있으나 아직까지는 네트워크 관점에서 keep-alive는 옵션으로 두고 connectionless의 연결비용을 줄이는 것이 명확한 장점이기 때문에 비 연결지향이라고 알아둔다. 2. 상태정보유지안함(Stateless) 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하는 않는 특성이 있다. HTTP의 이 두가지 특성을 보완하기 위해서 쿠키와 세션을 사용하게 되었다. 비연결지향이라는 특성 덕분에 계속해서 통신 연결을 유지하지 않아서 리소스 낭비가 줄어드는 것은 아주 큰 장점이지만, 통신할 때마다 새로 커넥션을 열기 때문에 클라이언트는 내가 누구인지 인증을 계속해야하는 단점이 생긴다. 만약 쿠키와 세션이 없다면 어떤 페이지에서 옮겨 다닐때마다 로그인을 다시 해야 한다. 쿠키 쿠키는 클라이언트 로컬 에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 쿠키에는 이름, 값, 만료날짜(쿠키 저장기간), 경로 정보가 들어있다. 쿠키는 일정시간동안 데이터를 저장할 수 있다.(로그인 상태 유지에 활용) 쿠키는 사용자가 웹사이트에 접속할 때 생성되는 파일이다. 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다. 쿠키는 웹사이트가 생성하고 웹브라우저에 저장된다. 쿠키 프로세스 브라우저에서 웹 페이지 접속 클라이언...

[How to] Visual studio code에서 tab size 조절 방법

이미지
[How to] Visual studio code에서 tab size 조절 방법 (Mac) ","+ command 누르면 세팅 화면으로 넘어감 위의 화면에서 왼쪽은 수정할수 없으므로 오른쪽에 editor.tabsize:2 로 넣자 (넣고 싶은 탭 사이즈를 넣으면 됨)

[Vue] 캘린더 만들기

[Vue] 캘린더 만들기 Vue를 사용하다보면 캘린더를 만들어야 할 때가 있다. Vue에서 캘린더를 Datepicker라고 부른다 install 및 사용 방법은 밑에 참고문서 확인하면 된다. Data  선언 data () { return { state: { highlighted : { dates:[ ], }, disabledDates:{ }}, 특정 요일 higlight하기 methods: { setScenarioDatesList(){ var list =[] for(var i =0;i<this.scenario_dates.objectList.length;i++){ var today_year = this.scenario_dates.objectList[i].substring(0,4); var today_month = this.scenario_dates.objectList[i].substring(4,6); if(today_month.substring(0,1)==="0"){ today_month=today_month.substring(1,2) } var today_date = this.scenario_dates.objectList[i].substring(6); this.state.highlighted.dates.push(new Date(today_year,today_month-1,today_date)) list.push(new Date(today_year,today_month-1,today_date)) } 특정 요일 제외 disabled하기 this.state.disabledDates.customPredictor= function(date){ ...