반응형

샘플 코드(코드골프 서적)

http://www.hanbit.co.kr/exam/2167 

 

한빛출판네트워크

출판사, IT전문서, 대학교재, 경제경영, 어린이/유아, MAKE, 실용/여행, 전자책, 인터넷 강의

www.hanbit.co.kr

나의 답안

자동미로생성(385자)

function yourCode() {
a="",w=55,h=35,p=[];for(i=w;i<w*h-w;)e[i]=((i+++1)%w>1);
function b(c){return t.splice(c,1)[0]};
for (i=0;t=[0,1,2,3],i<24;)p.push([b(i/6),b(i%6/2),b(i++%2),t[0]]);e(w-5,4,0);
for(i=0;i<w*h;)a+=" ■"[~~e[i++]]+(i%w?"":"\n");
return a;
}function e(x,y,i){n=p[(x+3)*(y+5)*7%24][i];q=(n-1)%2,r=(n-2)%2,s=x+q*2,t=y+r*2;if(e[s+w*t]|0)e[s+w*t]=e[(x+q)+w*(y+r)]=0,e(s,t,0);if(++i<4)e(x,y,i);
}
반응형
반응형
반응형
반응형
반응형
반응형
반응형

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

종이접기(아이스크림)  (0) 2019.10.10
프랙탈(fractal)  (0) 2019.08.12
티니안섬  (0) 2019.08.03
에라토스테네스의 체  (0) 2019.07.29
검색엔진에서 GitHub 페이지 검색 가능하게 하기(링크)  (0) 2018.05.10
반응형

코드골프란, 골프의 타수를 줄이듯이 같은 코드를 최대한 짧게 줄이는 놀이이다.

코드골프를 하는 목적은, 실제 업무에 사용하기보다는

퍼즐게임처럼 즐기는 가운데 발상의 전환을 훈련하는 데 있다.

실제 업무에서는 가독성이 중요하기 때문에, 일반적으로는 코드골프에서처럼 코딩하면 안된다.

하지만, 웹사이트의 자바스크립트 용량을 줄이기 위한 목적으로

실제 업무에 응용할 수도 있다.

 

코드골프

 

더 나은 프로그래밍을 위한 코드골프 : 즐기면서 배우는 자바스크립트 코드 퍼즐과 알고리즘

이 책은 코드골프와 알고리즘에 관한 책입니다. 코드골프는 언어명세의 지식과 알고리즘에 대한 이해, 그리고 유연한 발상을 요구하는 프로그래머를 위한 퍼즐 게임입니다. 또한 알고리즘이란 어떤 목적을 달성하기 위해 고안된 일련의 처리 순서입니다. 5개의 코드골프 문제와 6개의 알고리즘 문제가 수록되어 있고 모두 모두 자바스크립트로 작성되어 있습니다.

www.hanbit.co.kr

 

이 책에는, 코드골프를 즐기기 위한 코드를 줄이는 기법과 함께,

부수적으로 흥미로운 몇가지 알고리즘을 소개한다.

소수를 걸러내는 알고리즘, 미로를 자동생성하는 알고리즘, 최소 비용 경로 계산 알고리즘,

이미지 확대축소 알고리즘, 게임 월드맵 생성 알고리즘 및 최종적으로는 간단한 게임에 이르기까지

다른 곳에서는 찾아보기 힘든 흥미로운 내용들과 구현 방법들을 소개한다.

 

코드를 줄이기 위해서는 변수명 길이나 공백, 주석 등을 최소화하는 방법 이외에도,

같은 문제에 대한 다른 알고리즘(해결책)을 찾아내는 상상력이 필요하다.

이러한 과정을 통해 언어에 대한 이해도가 높아질 수 있고,

보는 시각을 달리 함으로써 같은 일 속에서도

기존에 발견 못한 새로운 면들을 발견할 수 있다.

 

이 책은 자바스크립트를 기본 언어로 한다.

코드를 이해하는 과정에서 머리는 좀 아프지만,

상당히 흥미롭게 페이지를 넘기면서 읽어나가고 있다.

반응형
반응형

사이판, 괌, 하와이 등을 검색하다가 우연히 발견한 섬이다.

사이판 보다 조금 작고, 사이판에서 경비행기를 타고 갈 수 있다고 한다.

아직 잘 알려져 있지 않아서인지, 사이판과 다르게 한적하고

원시 자연이 잘 보존되어 있다고 한다.

별처럼 생긴 모래(별모레)도 볼 수 있디고 한다.

 

하지만, 의외로 역사적인 곳이기도 하다.

한때 일본이 점령했던 곳이고,

강제징용으로 와서 일하다 이곳에서 죽은 한국인들이 5,000명 이상이라고 한다.

그후에 미국이 점령한 후에, 일본에 투하한 두개의 원자폭탄을 모두

이 섬에서 실었다고 한다.

 

한번 가보고 싶은 곳이다.

위키백과

 

티니언섬 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 티니언섬(Tinian)은 미국 자치령인 북마리아나 제도의 섬으로 괌 섬 북쪽 160 km에, 사이판에서 약 8km 떨어진 곳에 위치해 있다. 보잉 B-29 슈퍼포트리스 폭격기인 에놀라 게이가 티니언에서 원자폭탄을 탑재하고 이륙, 2531 km 떨어진 일본 히로시마에 투하했다. 세계 최초의 핵공격이었다. 농축우라늄탄인 리틀 보이가 사용되었다. 선사시대~스페인 통치기[편집] 티니안 섬은 한때 원주민인 차모로인들이 자급 자족을

ko.wikipedia.org

 

반응형
반응형

프로젝트에서 Tibero DB를 사용중인데,

개인정보보호 관련해서

사용자별 접속기록과 열람, 처리 등으로 구분되는 간단한 처리기록을

년 2회정도 보고하고 확인받아야 한다.

현재 주어진 환경에서 위와 같은 업무를 수행하려면

어떻게 하면 좋을지 구상중이다.

물론 상용 툴을 설치하면 간단히 해결될 수 있을 것이지만,

느닷없이 상용 툴을 살 수 없는 상황이라,

일단은 기존의 로그를 이용해서 방법을 찾아보고 있다.

 

확인 결과, 일단 Audit file과 Listener로그를 활용할 만하다.

Audit file의 사용 쿼리 기록을 토대로 열람, 처리 등을 구분할 수 있고,

Listener로그를 통해서는 접속 IP를 알 수 있다.

이것을 시간대별로 정리해 주면 요구사항의 3분의 2는 달성된다.

Tibero의 경우, TIP(Tibero Initial Parameter)파일을 통해 환경을 설정해 주는데,

오라클의 initSID.ora과 동일한 개념이라고 한다.

내 경우에는, 다음 경로에 위치해 있었다.

/tibero/tibero6/config/[시스템명].tip

이 파일을 열어보면, 각종 LOG 및 Audit관련 설정을 확인할 수 있다.

 

한편, 접속과 관련해서 좀더 목적에 부합하는 로그를 남기기 위해서는,

다음 사이트의 내용을 참고할 만하다.

로그온 트리거를 통한 접속로그 기록

 

데이터 전문가 지식포털 DBGuide.net

특별한 작업 없이 확인하시려면 listener.log 파일을 보시면 됩니다. 다만, 접속 로그가 많으면 보기가 힘들수 있습니다. 편하게 확인하시려면 로그온 트리거를 만드는게 어떨까 싶습니다. 로그온 시마다 sys_context function을 호출해서 파일 혹은 테이블에 기록하시면.. 쉽게 사용자 접속 정보를 확인할 수 있습니다. 물론 보안툴 이용하시는게 가장 손쉽긴 하지만요... 참고로 로그온/로그오프 트리거 샘플 복사해 드립니다. # trigger

www.dbguide.net

 

 

 

반응형
반응형

야나이 마사카즈의 "더 나은 프로그래밍을 위한 코드골프"라는 책을 읽다가,

'에라스토테네스의 체'라는 내용이 나와서 좀더 자세히 알아보게 되었다.

소수를 구하는 알고리즘인데,

1부터 n까지의 모든 소수를 구한다고 할 때

n까지 다 계산할 필요 없이

sqrt(n)까지만 계산하면 되는 방법이다.

무작정 n까지 다 계산하는 방법보다는 훨씬 나은 방법이다.

즉, 종이에 1부터 n까지 모두 써 놓고,

일단 1을 지운 다음,

2를 소수 리스트에 추가하고 종이에서 2의 배수를 모두 지운다.

다음 숫자들에 대해서도 2에 대한 과정을 반복하되,

이미 지운 숫자는 건너뛰고,

현재의 숫자의 제곱이 n보다 작을 때까지만 반복한다.

현재의 숫자의 제곱이 n보다 커지면,

종이에 남은 숫자를 모두 소수 리스트에 추가하면 된다.

 

현재의 숫자의 제곱이 n보다 커졌을 때 남은 숫자를

모두 소수 리스트에 추가할 수 있는 이유는 다음과 같다.

현재의 숫자를 i라고 할 때,

i보다 작은 수들의 배수는 이미 목록에서 지워졌고,

i 및 i보다 큰 수의 배수는 최소값이 i * i보다 커야 하는데 i * i가 n보다 크므로,

n이하의 남은 수들은 1과 자신 이외의 약수가 존재하지 않는다.

따라서, 모두 소수 리스트에 추가할 수 있다.

 

위키백과

 

에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수학에서 에라토스테네스의 체는 소수(소쑤)를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[편집] 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 자기 자신을 제외한 2의 배수를 모두 지운다. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초

ko.wikipedia.org

 

관련 블로그 및 기타

에라토스테네스의 체 및 기타 소수 판별법

 

[소수 알고리즘] 소수의 특성과 에라토스테네스의 체

[소수 알고리즘] 소수의 특성과 에라토스테네스의 체 소수의 특성 소수(Prime Number)는 약수로 1과 자기 자신만을 가지는 정수이다. 정수론의 기본 정리에 의해 모든 자연수는 단 하나의 소수들의 곱으로 표현된..

ledgku.tistory.com

소수 구하기 알고리즘

 

소수 구하기 (Finding Primes) 알고리즘

어떤 자연수 n 이 소수인지 구할때, n 이 작을 경우에는 다음과 같은 방법을 사용한다. 1. Trial Division 소수의 성질을 이용, 어떤 수 n 이 소수인지 판별하기 위해 n 을 2 부터 n-1 까지 하나씩 나누어보아 나..

soyoja.com

에라토스테네스의 지구 둘레 계산

 

지구 둘레 구하는 가장 쉬운 방법 - 이웃집과학자

 

www.astronomer.rocks

에라토스테네스

 

에라토스테네스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 에라토스테네스(Ερατοσθένης, 기원전 274년 ~ 기원전 196년)는 고대 그리스의 수학자이자 천문학자이다. 헬레니즘 시대 이집트에서 활약했으며, 문헌학 및 지리학을 비롯해 헬레니즘 시대 학문 다방면에 걸쳐 업적을 남겼지만, 특히 수학과 천문학의 분야에서 후세에 남는 큰 업적을 남겼다. 지구의 크기를 처음으로 계산해 냈으며, 또 소수를 걸러내는 에라토스테네스의 체를 고안한 것으로도 알려져 있다. 이런 업적으로 제2

ko.wikipedia.org

 

반응형
반응형

크로스플랫폼 전략은, 개발에 들어가는 노력을 줄이기 위한 대책이다.

원래대로 모든 디바이스에서 사용 가능하도록 앱을 개발하려면,

PC용 버전, 안드로이드 버전, 아이폰 버전, 윈도우즈폰 버전을 

해당 언어로 제각각 개발해야 한다.

하지만, 크로스플랫폼 프레임워크를 이용한 개발은

한번 개발한 소스를 다양한 디바이스에 활용할 수 있게 해 줌으로써

이러한 노력을 줄여준다.

결과물에 따라, HTML을 이용하여 웹뷰 환경에서 돌아가게 해주는 하이브리드 앱과,

네이티브 코드로 변환되어 돌아가는 형태로 나뉘어 지는 것 같다.

그리고 현재 이러한 개발을 가능케 해 주는 여러가지 도구들이 출시되어 있다.

그중에 흥미로운 것들 몇개를 추려서 살펴보면 다음과 같다.

1. Apache Cordova

 - 하이브리드앱 개발 도구이다.

 - 웹뷰에서 실행된다.

 - Visual Studio 및 Visual Studio Code에서 사용가능하다.

 - HTML 및 Javascript, CSS를 사용할 수 있다.

 - HTML5의 범위를 벗어나는 기능(디바이스 고유 기능)에 대해서는, 해당 기능을 연결시켜주는 컴포넌트를 추가해서 제어할 수 있다.

   (누군가 개발해 준 컴포넌트가 존재해야 하는데, 대체로 존재한다.)

 - 속도의 한계, 복잡한 기능 구현에 있어서 코딩의 한계가 있을 수 있다.

 - 실제로 간단한 게임 개발을 위해 사용해 본 결과, 괜찮은 편이다.

 

2. Xamarine

 - 크로스플랫폼을 논할 때 빠지지 않고 등장하는 편이다.

 - 네이티브 앱으로 변환된다.

 - C#기반이며, OpenPlatform이다.

 - 좋다는 평도 있고, 버그 등의 여러가지 이유로 불편하다는 평도 있다.

 - 언어적으로 C#의 탈을 썼을 뿐, 결국 IOS나 안드로이드를 연구해야 한다고 한다.

 

3. React Native

 - Javascript 및 React기반으로 크로스플랫폼 개발을 하는 도구이다.

 - 네이티브 앱으로 변환된다.

 - 최근 인기가 상승세인가보다.

 

4. Electron

 - Chromium과 Node.js를 사용한다. (HTML, Javascript, CSS를 통한 개발)

 - 웹기술을 사용하는 하이브리드앱에 속할 것 같다.

 - 깃허브에서 개발중이다.

 - 데스크탑(Desktop) 어플리케이션 개발도 가능하다.

 - Visual Studio Code등과 같은 훌륭한 프로그램 개발사례들이 있다.

 

이밖에도 여러가지 도구들이 있고, 

자고 일어나면 많은 변화가 생기고 있다.

기존에 없던 기능이 추가되거나 신규 경쟁자들의 진입이 활발하며,

금새 쇠락의 길을 걷기도 한다.

지금 내게 무언가를 선택하라고 한다면, Electron을 선택할 것 같다.

하지만, 언제 맘이 바뀔지는 나도 모른다.

반응형
반응형

처음 이 책을 읽게 된 것은, 사실

이광근 교수의 '컴퓨터 과학이 여는 세계'라는 책의 참고 서적에

언급이 되어 있어서였다.

'컴퓨터 과학이 여는 세계'라는 책은

제목은 평범하지만 내용은 정말 좋았는데,

컴퓨터 과학과 관련된 여러가지를책을 

알기 쉬우면서도 깊이있게 다루었다.

이 책 역시 제목 자체에서 웬지 비슷한 느낌을 받아서

선뜻 읽어보게 되었다.

책을 읽어본 결과, 기대만큼은 아니지만

여전히 재밌고 유익한 내용이다.

 

세상에 수많은 알고리즘이 존재하지만,

그중에서도 지금까지의 컴퓨터 발전에 있어서 가장 큰 영향을 끼친

아홉가지의 중요한 알고리즘을 저자 나름대로 선별하고

소개하고 설명하는 내용이다.

그 아홉가지는 다음과 같다.

  1. 검색엔진 인덱싱
  2. 페이지랭크
  3. 공개키 암호화
  4. 오류 정정 코드
  5. 패턴 인식과 인공지능
  6. 데이터 압축
  7. 데이터베이스 관련 기술
  8. 디지털 서명
  9. 계산 가능성과 결정 불가능성

이 아홉가지는, 현재 우리가 컴퓨터, 휴대폰 및 인터넷을 사용하면서

알게 모르게 매일 접하는 기술들이다.

그런 기술 이면에 숨겨진 갖가지 트릭 내지는 구현원리 등을

비유를 들어 알기 쉽게 설명한다.

예를 들어, 암호 알고리즘을 설명하기 위해

물감(페인트) 섞기를 이용한다든지 하는 등이다.

쉬운 말로 설명하기 때문에,

읽는 동안에는 비교적 재밌고 자연스럽게 이해가 된다.

하지만, 다루는 내용 자체가 그렇게 쉬운 내용은 아니라서,

읽은 내용이 오래도록 기억되지 않는다.

하지만 소프트웨어 개발에 필요한 지혜를 주는 책이고,

나중에 필요할때 필요한 부분을 찾아서

좀더 읽어볼 만한 책인 것 같다.

반응형

+ Recent posts