정규표현식 요약정규표현식의 개념은 1950년대 미국의 수학자 스티븐 콜 클리니(Stephen Cole Kleene)가 형식 언어 이론의 일환으로 도입했다.이후 유닉스 시스템 등에서 텍스트 검색 및 처리에 활용되면서 켄 톰슨(Ken Thompson) 등 여러 컴퓨터 과학자들에 의해 실제 구현 및 발전이 이루어졌다. 아래는 정규표현식의 기본 문법과 고급 문법을 구분하여 표로 정리한 내용이다. 기본 문법구분문법설명리터럴a, 1, @해당 문자를 그대로 매칭메타문자.임의의 한 문자메타문자^문자열의 시작메타문자$문자열의 끝메타문자\이스케이프문자 집합[abc], [a-z], [^abc]대괄호 안의 문자 집합, 범위 지정 및 부정 문자 집합미리 정의된 클래스\d숫자미리 정의된 클래스\w단어 문자 ([a-zA-Z_])미..
어떤 일을 누군가에게 부탁한다면그 일이 언제 완료되는지 궁금한 것이 당연하다.1시간 정도 기다리면 되는지, 오늘 안에 되는지 이번주 안에 되는지 등등.. 얼마나 걸릴지를 얼마나 잘 구하는 것이 정확한 완료 시점을 알 수 있는 방법이다. 하지만 모든 변수를 고려하여 완벽하게 구한다는 것은 당연히 불가능하다.따라서 완벽하지는 않더라도 가능한 선에서 추정을 할 수 밖에 없다. 그리고 그 추정값을 받아들이는 상대편에게도 이것은 고정된 값이 아니고 변할 수 있는 값이며변한다면 어느 정도 변할 수 있는지 미리 이야기를 해두는 것이 나중을 위해 좋을 것이다. 만약 누군가 3일 후에 완료될 것 같다고 말한다면 이것을 어떻게 받아들여야할까?9할 이상 3일 후에 완료되는 것인지 최악의 경우 10일도 걸릴 수 있는 것인지 ..
내가 개발해서 배포한 부분에 대해 버그 리포팅이 들어온다.그럴리 없다, 무언가 잘못 사용한 것일 것이다, 특정 환경에서만 발생하는 희귀한 케이스일 것이다라고 처음에 생각할 수 있다. 하지만 대부분은 정말 그냥 버그인 경우가 많다.내가 해보니 잘되는데 무슨 말이야 라고 생각하며 짜증이 치밀어 오를 수도 있다. 하지만 확인해보자, 정말 버그 리포팅의 재현 경로와 모든 것을 동일하게 했는지재현이 되지 않더라도 동일한 리포팅이 반복되서 올라온다면참말일 가능성 또한 높다. 버그가 존재할 수 있고 내가 무엇인가 실수한 부분이 있을 수 있다는 인정할 때우리는 버그를 한결 쉽게 발견할 수 있다.여러번 보았던 코드임에도 뭔가 놓친 부분이 있을 수 있다는 가능성도 열어두어야 한다. 이것은 버그를 발견하고 고침으로써 사용자..
기분이 좋으면 시스템 2의 통제력이 느슨해져, 더 직관에 의지하고 더 창조적이 될뿐 아니라 경계도 느슨해지고 논리적 오류도 더 많이 나온다.기분이 좋다는 것은 모든 게 그런대로 순조롭고, 주변 환경도 안전하니, 경계를 풀어도 좋다는 신호다. 기분이 나쁘다는 것은 모든 게 그다지 순조롭지 않고, 어쩌면 위협이 있을 수 있으니, 경계를 늦추면 안 된다는 뜻이다. 데니얼 커너먼의 책 생각에 관한 생각에 나오는 내용이다.여기서 시스템 1은 직관적인 생각, 시스템 2는 이성적인 생각 시스템을 의미한다.시스템 1은 작동하는게 큰 노력이 들지 않지만 시스템 2는 노력이 필요하며 에너지를 소모한다. 기분이 좋은 상태에서 폭풍 타이핑을 하며 술술 코드를 작성한 뒤,나중에 보니 온통 에러 투성이인 경우가 종종 있다. 반면..
처음에 시스템을 만들 때는 얼마나 오래갈지 알 수 없다.1년? 5년? 10년? 아니면 그 이상..때문에 설계과 방법에 대한 결정을 할 때 알맞은 결정을 하기 어렵다.오래동안 견고한 시스템을 만드려면 시간과 비용이 그만큼 많이 들기 때문이다. 하지만 생각보다 시스템이 오래 유지되고 살아남는다면,과거에 만들어두었던 짐들이 점점 앞으로 나가는 것을 방해하기 시작한다.개선이 필요한 시점이라고 할 수 있다. 하지만 현재 동작하고 있는 시스템을 문제없이 개선하는 것은 빠르게 하기 어렵다.마치, 가만히 서있는 상태에서는 옷을 갈아입기 쉽지만 걸으면서 갈아입기 쉽지않은 것과 비슷하다.만약 그래야 한다면 걷는 동작 하나하나 신경쓰고 계획하며 넘어지지 않게 조심하며 진행해야 한다. 하지만 때로는 갈아입는데 시간이 너무 오..