본문 바로가기

전체 글

[퀴즈] 프로그래머를 위한 문제 #3 - 미로 찾기 [퀴즈] 프로그래머를 위한 문제 #3 요즘 퀴즈를 풀다보니 재미가 들렸나, 필자가 문제를 하나 내보려고 한다. 어려울 수도, 그렇지 않을 수도 있는 문제이며, 효율적인 코드를 작성하는 것 보다 최대한 짧게 짜는 것이 목적이다. 문제의 유형과 정답의 유형은 지난 문제를 참고하면 된다. [퀴즈] 프로그래머를 위한 문제 #1 [퀴즈] 프로그래머를 위한 문제 #2 미로 찾기 게임 문제는 미로 찾기 게임이다. 10 x 6 (가로, 세로) 크기에 * 문자가 채워진 직사각형 미로의 크기가 변해도 실행 가능해야 한다. 문자 S 는 입구 위치, 문자 E는 출구 위치이다. S 문자와 E 문자 사이에는 공백으로 연결된 길이 있고, 길은 여러 갈래일 수 있다. 길(공백)은 2x2(가로, 세로) 이상의 공간을 가질 수 없다. .. 더보기
[퀴즈] 프로그래머를 위한 문제 #2 - 스택 프레임(Stack Frame) 프로그래머를 위한 문제 #2 얼마 전 OKJSP 를 통해 이런 문제를 보았다. 문제는 아래의 코드 중 /* INPUT */ 주석에 알맞은 코드를 넣어, victory() 메서드가 호출되도록 완성하여라. 필자의 컴퓨터에서는 답이 (function-48)(); 로 나왔다. typedef int (*f)(); int variable = 1; int function() { if(variable == 1 ) return /* INPUT */ 5; victory(); } int main() { function(); return 0; } [문제 코드] 위의 INPUT 주석에 알맞은 코드를 넣어라. 단 제약 조건이 있습니다. 다음의 문자는 사용할 수 없음 : main, victory, asm, %, *, _, #, /.. 더보기
[TFS] 팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #2 팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #2 팀 파운데이션 서버(Team Foundation Server) 는 2005년 처음 시장에 공개되었다. 이 시기에 많은 버그와 설치 자체가 매우 난이도가 높아서 많은 사람들의 원망을 샀다. 참고 - TFS를 쓰지 말아야 하는 진짜 이유 #1 (링크) TFS를 쓰지 말아야 하는 진짜 이유 #1을 정리해 본다. 통합? 모든 것을 만족할 수 있지만, 어느 것도 만족할 수 없다. 특정 제품(Visual Studio)에 완벽하게 통합되어 외부와 완벽하게 격리된 솔루션이다 우리나라에는 전문가가 없다 전문가적인 서비스를 제공하는 업체도 없다 마이크로소프트 제품으로 발라야 한다 예측할 수 없는 잦은 장애, MS 제품에 잔.. 더보기
[불편한 진실] 한국 마이크로소프트의 세미나에 갈 때 주의사항 불편한 진실, 한국 마이크로소프트가 주최/후원하는 세미나에 갈 때 주의사항 예전에는 한국 마이크로소프트에서 직접 주최하거나 후원하는 세미나가 매우 많았다. 아마도 MS 기반의 플랫폼 개발자들에게 가장 생기가 넘치던 때가 아닌가 싶다. 필자는 오랫동안 한국 마이크로소프트의 관계자에게 압력을 받아왔다. 사용자 입장에서의 피드백이나 단점을 지적하게 되면 개인 SNS와 블로그, 커뮤니티를 가리지 않고 감시하고, 필자가 올린 글을 내리라고 한다. 그렇게 필자가 압력을 받아 내리게 된 글이 수 건이나 된다. 마이크로소프트는 소프트웨어 개발사로 매우 존경한다. 하지만, 한국 마이크로소프트는 철저한 영업 조직인 만큼 물건 팔 때 방해가 되는 것은 도를 넘어서라도 한낱 개인에게 까지 압력을 행사하는 머 그런 곳인가 보다.. 더보기
[퀴즈] 프로그래머를 위한 문제 #1 - 1부터 8만까지 8의 개수 프로그래머를 위한 문제 프로그래머라면 알쏭달쏭한 논리적인 문제를 좋아하는 편인 것 같다. 답이 팍~ 나오는 문제보다 역량에 따라 코드의 아름다움이 달라지는 것을 추구하는 프로그래머라면 더욱 그렇다. 문제: 1부터 1만까지 8은 모두 몇 개가 나오나? 문제는 쉽다. 1부터 1만까지 8이라는 문자 개수만 카운팅하면 된다. 그런데 이렇게 간단한 문제를 코딩해 놓고 보면 맘에 안든다. 더 짧게…. 아래의 문제를 각 언어별로 풀어보았는데, 바이트 수는 캐러지 리턴(carriage return) 문자를 모두 제거한 바이트 수이다. 참고로, 이 문제는 ‘닷넷(.NET) 프로그래머 모임’ 에서 처음 본 문제인데, 오래 전의 일이라 게시글의 링크를 도저히 찾기가 힘들어서 링크를 남기지 못했다. 여러분 중 문제를 풀어보려.. 더보기
[Javascript] jQuery 1.7.1 버그 패치를 공유합니다. jQuery 1.7.1 버그 패치를 공유합니다.jQuery 1.7.1 의 정식 버전은 인터넷 익스플로러(IE; Internet Explorer) 10 버전에서 런타임 버그가 존재한다. 이 버그는 jQuery 1.7.1 내부적으로, 그리고 jQuery UI 에 영향을 미친다.그러므로 현재 jQuery 1.7.1 버전을 사용하는 버전에서는 필자가 공유한 코드를 사용하거나 패치 방법으로 코드를 수정하면 된다. 다운로드 및 추가정보github의 프로젝트 페이지 : https://github.com/powerumc/jquery.1.7.1-patch 더보기
[Google] 구글에서 활동한 내 모든 정보 백업 받자 구글에서 활동한 내 모든 정보 백업 받기 최근 구글이 리더 서비스를 종료하면서 필자도 구글 리더 백업을 시작했다. 구글 리더는 OPML로 RSS 목록을 내보내려면 구글이 아닌 다른 서비스의 도움이 필요합니다만, 다음과 같은 방법으로 구글에서 활동한 자신의 모든 정보까지 백업 받을 수 있다. 구글리더, 구글 플러스, 구글 드라이브, 유튜브에 업로드한 동영상, 주소록, 리더 OPML 등 거의 모든 데이터를 다운로드 받을 수 있다. 구글 사이트에 로그인 후 ‘계정’ 클릭 ‘내 데이터 다운로드’ 클릭 ‘내 데이터 다운로드’ 클릭 테이크 아웃의 하단에 ‘보관함 만들기’ 클릭 구글이 내 데이터를 모으는 중… 준비가 되면 ‘다운로드’ 클릭 다운로드 된 압축 파일을 풀면 된다. 더보기
[TFS] 팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #1 팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #1 필자는 얼마 전에 다음과 같은 글을 썼다. TFS를 그다지 좋아하지 않는 분의 글을 검색 중에 우연히 찾게 되었고, 이에 대해 필자의 의견을 남긴 적이 있다. TFS 어떤 개발자의 외침. “왜 TFS를 쓰기 싫을까? - TFS is suck.” 1/2 TFS 어떤 개발자의 외침. “왜 TFS를 쓰기 싫을까? - TFS is suck.” 2/2 개인적인 의견에 필자가 반박한 것이기도 했지만, 필자는 기능적인 면에서 반박을 한 것이라 상대방의 마음이 상할지 몰랐으나, 다시 돌이켜보면 미안한 맘이 계속 든다. 과거 필자는 MS Visual Studio ALM MVP 로서 이 제품을 써야할 이유를 말할 수 있었으.. 더보기
[JavaScript] Javascript Array Extensions 소스코드 오픈 (웹브라우저, Node.js 사용 가능) Javascript Array Extensions Array Extensions는 Node.js 와 브라우저에서 사용할 수 있는 배열 라이브러리이다. 요즘 자바스크립트(JavaScript) 를 만지는 날이 많아져서 JavaScript 로 뭘 만들 수 있을까 하는 생각에 기억을 더듬어 보니 JavaScript 에서 배열을 다루는 일이 많았다. jQuery의 selector 등으로 DOM을 다루는데 효과적이지만, 배열을 다룰 때는 모라는 점이 많았다. 인터넷에 찾아보면 자바스크립트(JavaScript)로 배열을 다루는 오픈 소스를 발견하였다. 그 중 가장 호감이 가는 자바스크립트(JavaScript) 오픈 소스를 발견하였다. 자바스크립트로 C#과 가장 비슷하게 Enumerable과 LINQ를 구현한 자바스크.. 더보기
[VS2012] VISUAL STUDIO 2012 UPDATE 2 한국어 패치 배포 VISUAL STUDIO 2012 UPDATE 2 한국어 패치 한국어 패치 개요 비주얼 스튜디오(Visual Studio) 2012 Update 2 버전을 설치한 사용자는 일부 프로젝트 템플릿의 주석 및 실행 결과가 영문으로 변경된다. 이 경우 여러 사람과 함께 소스 저장소로 체크인이 있을 경우 소스 코드의 포함된 한글/영문을 제대로 인식하지 못해 충돌(conflict)가 발생할 수 있다. 이 문제를 해결하기 위해 프로젝트 템플릿을 기존의 Visual Studio 2012 Update 1 ASP.NET MVC 프로젝트 템플릿에 포함된 한글로 모두 변경하였다. 파이썬(Python)으로 설치 파일을 만들었는데, 예외 처리를 하지 않아서 오류가 있을 수 있으니 오류 발생 시 수동으로 진행해 주시면 됩니다. 업.. 더보기
[TFS] 팀 파운데이션 서버(Team Foundation Server)의 $tf 폴더의 정체 $tf 폴더 팀 파운데이션 서버(Team Foundation Server) 2012 버전부터 로컬 워크스페이스(local workspace) 에 매핑된 폴더 중 $tf 파일이 생긴 것을 알 수 있다. 이 폴더는 숨김(hidden) 속성이 적용되어 있어 안보인다면 숨김 폴더도 보이도록 윈도우 익스플로어(Windows Explorer) 에서 설정을 변경하면 된다. 이 폴더는 여러분이 주로 작업하는 작업 영역(Workspace)일 경우 생각하는 것 보다 훨씬 많은 용량을 차지하고 있다. 이 폴더는 특성상 늘어나면 늘어나지 절대 줄어들 일이 없다. 대부분의 시간이 지날수록 코드의 라인은 늘어나고 변경이 일어나는 부분도 많아진다. 이 폴더가 내심 꺼림직해서 지워도 또 다시 생긴다. 이 폴더는 Team Founda.. 더보기
[TFS] 팀 파운데이션 서버(Team Foundation Server) 의 다양한 오류 유형 및 정보 들어가기 앞서 팀 파운데이션 서버(Team Foundation Server) 는 구성과 운영이 매우 까다로운 ALM(Application Lifecycle Management) 솔루션 중의 하나다. 그간 오류에 대해 정리하는 의미로 팀 파운데이션 서버(Team Foundation Server) 를 운영하면서 겪을 수 있는 여러 가지 경우의 오류를 리스트업 해본다. 앞서, 마이크로소프트(Microsoft)의 제품이 가지는 여러 통합 제품은 공통적인 단점을 가지는데 그것은 통합되는 요소들이 모두 자사 제품임에도 불구하고 환경적인 요소에 매우 민감하다는 점이다. image–1 통합된 만큼 오류 유형도 광범위 팀 파운데이션 서버(Team Foundation Server)는 윈도우 서버, SQL 서버, 웹 응용 .. 더보기
윈도우 8, 무서운 드라이버와 궁합 윈도우 8, 무서운 드라이버와 궁합 최악의 궁합, 윈도우 8 윈도우를 여지껏 사용하면서 드라이버와 충돌이 나면 이런 참사가 발생하는지 처음 알았다. 아니, 이렇게 발생할 수도 있는 것 자체가 신기하다. SONY VPCZ115 시리즈를 사용하는데 SONY 노트북은 전통적으로(?) 그래픽 드라이버를 새로운 운영체제에 맞게 업데이트 안해준다. 그렇다고 공식 NVIDIA 사이트에서 받아서 설치하면 좋겠지만, 설치가 안된다. 드라이버 sys 엎어쳐도 보고 별짓을 다 해봤지만… 어느 날, 이 광경을 보자마자 순간 멍~~~ [이미지] 윈도우 잠금 상태가 한 쪽 모니터에서 풀린 사진 위 이미지의 증거 샷은 점심 시간이라 CTRL+ALT+DEL 키를 눌러서 윈도우를 잠궜다. 윈도우 8이 설치된 노트북으로 외부 모니터를 .. 더보기
[Javascript] 자바스크립트(Javascript) 개발 팁과 가이드 (Tips & Guide) 필자는 최근 자바스크립트(Javascript)를 자주 만지게 되면서 몇 가지 팁 또는 가이드 정보를 공유하고자 한다. 자바스크립트(Javascript)를 좋아하지만 잘 하지는 못한다. 그래서 먼저 개념적으로 잘못된 부분이 있으면 정중하게 미리 양해를 구하고자 한다. 1. 익명의 즉시 실행 함수로 스크립트를 시작하자 익명(Anonymous)의 즉시 실행 함수(Immediately Invoked Function Expression)는 다음의 코드와 같이 정의된다. (function() { // ... 코드 생략 ... }()); 익명 함수(Anonymous Function)는 자바스크립트(Javascript)가 런타임(Runtime)에 구문을 해석하여 실행한다. 이는 외부의 접근을 제한함을 의미한다. 그러므.. 더보기
[ALM] 13. 불완전한 통합, 팀 파운데이션 서버(Team Foundation Server) 불완전한 통합, 모든 것을 만족할 수 있지만, 어느 것도 만족시킬 수 없다. 팀 파운데이션 서버(Team Foundation Server)는 모든 것을 통합한 마이크로소프트(Microsoft)의 ALM(Application Lifecycle Management) 솔루션이다. 통합… 모든 것을 만족할 수 있지만, 어느 것도 만족시킬 수 없다.이 통합이라는 것은 이 시대엔 단점으로 작용될 수도 있다는 생각이 든다. 지난 2005년부터 2010년까지 ‘통합’ 이라는 것이 장점이라고 생각했었다. 모든 것을 올인원(All in One) 해 놓았다는 것만으로 주목을 끌 수 있었지만, 2013년 최근에는 이제 더 이상 ‘통합’이 장점이 될 수 없다는 결론을 내렸다. [이미지] 통합... 현실적인 통합과 이상적인 통합.. 더보기
[ALM] 12. 중앙집중형 - 분산제어형 소스제어 컨트롤 비교 최근 Git이나 Mercurial 과 같은 분산제어 방식의 소스 제어 제품을 무조건 맹신하고 찬양하거나 분산제어 방식보다 중앙집중형 소스제어 방식을 무조건 배척하는 현상이 일부 나타나고 있다. 리누스 토발즈(Linus Tovalds)와 같은 공산주의(Communism) 사상의 이상을 강조하는 철학이 담긴 Git은 GitHub.com을 통해 소스 코드를 공유함으로서 오픈 소스 진영에 매우 발전적인 기여를 하고 있음은 확실하다. 리누스 토발즈(Linus Tovalds)가 만든 것이라 그런지 훨씬 더 주목받고 있는 것 같다. 중앙집중 소스제어와 분산제어 소스제어 방식은 그 원칙과 근본적인 가치에 차이가 있는, 방법론으로 접근해야 할 것이다. 따라서 각 소스 제어의 방식마다 특징과 장단점이 있으며 ‘좋은 게 좋.. 더보기
Umc Core IoC 통합 컨테이너 #1 객체지향 프로그래밍 이야기 IoC(Inversion of Contol)[1], 우리말로는 ‘역전제어’라고 한다. 객체지향 프로그래밍의 기본은 만들어진 객체를 잘 쓰는 것 부터 시작한다. 이 경우 개체(Object)를 인스턴스화(Instance)하기 위해 개체(Object)를 직접 참조해야 한다. 개체(Object)는 class 로 선언되는 빌딩의 명세서(설계도?)와 같고, 인스턴스(Instance)는 만들어진 빌딩(Building-건물)을 의미한다. 전자를 개체(Object)라고 부르며, 후자를 객체(Object) 또는 인스턴스라고 부른다. 명세서를 찍어내는 방법은 매우 간단하다. Building b = new Building() 이것이 객체지향에서 개체를 인스턴스화 하는 코드가 되겠다. 그런데 현실에서.. 더보기
Umc.Core 프레임워크 다이나믹 프록시(Dynamic Proxy) #1 요즘 참 할일도 많은데 할 수 있는 일이 점점 줄어든다. 필자는 블로그 버킷 리스트(bucket list)를 작성하는데 블로그가 사망하기 전에 꼭 해야 할 일을 목록으로 만들어 놓고 하나 하나씩 글을 써 나간다. 근데 할 일이 늘어만 간다. ㅠ 당장 쓸 수 있는 글 39개 사소한 개발 기술부터 심도있는 내용으로 흐리멍텅한 개념을 글을 쓰면서 잡아 나가는 것들 개발 후 산출물로 쓸 글 37개 오픈소스로 내놓을 계획, 또는 알고 있는 것들에 대한 증명이 필요하고 그 후에 쓸 수 있는 글 연구개발 11개 배우고 싶은 것, 하고 싶은 것, 해야 하는 것들이고 공부해야 쓸 수 있는 글들 아무튼 점점 쓸 것들이 늘어만 가지만, 하나 하나 하다보면 쓸게 없어 지는 날이 올거라 믿는다 >.,< #1 - Umc.Core.. 더보기
memcached, 분산 캐시를 이용하여 분산 Session 성능 향상 (2/2) 세션 저장소 커스터마이징 지금까지 살펴본 바 세션 정보를 memcached를 이용하여 세션 정보를 성능과 관리, 그리고 확장가능성 측면에서 만족할 만한 솔루션이다. 여기에서 좀 더 나아가 쿠키 등을 이용하여 서브 도메인(Sub Domain)의 웹 응용 프로그램에 인증을 하거나 브라우저를 닫고 새로운 브라우저로 재접속 한 경우 기존 세션을 유지할 수 있도록 기능을 개선할 수 도 있다. 과거에는 SSO(Single-Sign-On)을 구현하기 위해 쿠키로 서브 도메인을 인증하는 경우 domain 에 의해 쿠키가 공유가 가능하다는 점을 이용하여 구현하기도 했다. 물론, SSO 솔루션들이 많이 있었지만, 수천 수만명의 사용자가 관리 대상이 아니라면 굳이 비싼 SSO 솔루션을 쓸 필요는 없었다. 세션 저장 방법 커.. 더보기
memcached, 분산 캐시를 이용하여 분산 Session 성능 향상 (1/2) 필자는 일전에 이와 관련되어 상당한 분량의 포스팅을 올린 적이 있다. 총 5회의 아티클 중 마지막 회를 모두 작성하지는 못했지만, 지금 이 내용이 그 마지막 회의 내용과 어느 정도의 내용과 유사하다고 보면 된다. .NET/ASP.NET - 실전 ASP.NET Session 1 - 쿠키를 이용한 상태관리와 위험성 .NET/ASP.NET - 실전 ASP.NET Session 2 - 상태관리의 종류 .NET/ASP.NET - 실전 ASP.NET Session 3 - 다양한 세션 관리 방법 .NET/ASP.NET - 실전 ASP.NET Session 4 - 세션상태 마이그레이션 그 중, 4회 아티클 ‘[실전 ASP.NET Session [4] - 세션상태 마이그레이션]5’의 내용은 본 아티클의 내용에서 매우 중.. 더보기