전체 글 212

[자바스크립트] Associative array 정렬하기

Javascript에서 Associative array는 C++의 map이나 Python의 dictionary와 같은 데이터 타입이다. Javascript의 Array의 경우 손쉽게 prototype에 정의된 sort를 사용할 수 있으나, Associative array의 경우 사용자 정의 데이터 타입에 가깝기 때문에 Compare 함수를 만들어 줘야한다. Associative array가 key : value 타입으로 정의되어 있다면, 아래와 같이 만들면 된다. function aasort(arr){ var tuples = []; for (var key in arr) tuples.push([key, arr[key]]); tuples.sort(function(a, b) { a = a[1]; b = b[1..

[티스토리] 티스토리 OPEN API 이용하여, Access token 발급받기 (2020.12.10 업데이트)

티스토리 OPEN API를 이용하면, 사용자가 직접 로그인하지 않아도 글을 쓰거나, 수정, 삭제, 조회할 수 있습니다. 이런 CRUD 작업을 REST API를 바탕으로 수행하기 위해서는, 작업을 수행하는 자가 본인임을 인증해야 합니다. 이러한 인증을 Authentication이라고하며, 그중 티스토리는 OAuth2.0을 지원합니다. OAuth 2.0 인증 절차의 끝은 Access token을 발급받는 과정이고, 이 Access token을 이용하여 현재 Rest API를 사용하는 자가 본인임을 증명하는 것입니다. 우선 Tistory의 Access token을 발급 받는 방법은 두가지로 나뉩니다. 자신이 직접 웹 서버나, 응용 프로그램을 만들고 이를 지원하거나 누군가 만들어 놓은 서버를 이용하여 사용하거나..

[서버] 웹 서비스 단일 로그인 (아이디당 1세션 유지)

대부분의 웹 서비스 프레임워크에서 세션을 관리하는 기능을 제공한다. 이런 세션 기능들은 1번 로그인을 하면, 브라우저내의 어떤 탭에서도 로그인이 유지된다. 하지만 일부 프로젝트는 반드시 1계정 1세션 유지가 정책이 되어야 하는 경우도 있다. [세션의 정의와 세션 관리 기능이 동작하는 방법] 어떤 프레임워크를 사용하든지, 세션은 서버 기준의 1개의 일시적인 연결이다. 즉, 어떤 클라이언트가 접근하였을때 세션 ID를 만들고, 로그인시 클라이언트의 정보를 해당 세션 ID(Key)에 대한 값(Value)로 저장한다. 그리고 마지막으로 클라이언트 브라우저에게 해당 세션 ID(세션 ID, 세션 Key를 혼용하겠음)를 전달해주면서, 해당 세션키를 이후 모든 연결에 전달하라고 요구한다. 이 경우 브라우저는 이 세션키를..

[자바스크립트] Node.js, 자바스크립트 Object(Associative array) 종료 및 콜백

jQuery에서 동일한 DOM의 반복적인 selector를 사용을 방지하기 위해서나, K-V 형식으로 데이터를 저장할때 Object를 많이 사용한다. 이런 Object안에서 전체 Key를 찾아 순회할 때, Object.keys(obj)형식을 많이 사용한다. 특히, Object.keys(obj).forEach(function(k,v){})를 이용하여 Loop 문까지 한번에 처리하는 경우가 많은데, 여기서 Callback을 사용하는 경우 callback 호출후에도 루프가 Break되지 않는 문제가 생긴다. var obj = { 'abc':1 , 'bcd':2'}; function run(obj, callback){ Object.keys(obj).forEach(function(k,v){ if(k == 'abc..

[컴퓨터] 제온 워크스테이션 조립 및 윈도우 설치

이전글 보기 : [컴퓨터] 개인 워크스테이션 구축 E5-2680v2, X9DRi-LN4F+ 정말 험란했다. 케이스 조립과 화면 출력만 거의 1시간을, 윈도우 설치 시도만 거의 6시간을 썼다. 그리고 문제를 깨달고 이를 해결하는데만 2시간이 걸렸다. 도합 9시간짜리 작업이었다. 어제부로 기존 시스템에서 돌리고 있던 MSSQL 서버 2008를 다른 컴퓨터로 이전하고, 오후 9시부터 본격적으로 설치하기 시작했다. 1. 24핀, 8핀 연장선 설치 우선 어제 도착한 마지막 드래곤볼중 하나인 맥스파인더 연장선을 설치했다. 맥스파인더가 다른 일반 케이블보다 3~4배 가량 비싸서, 워크스테이션에 과연 적합한가 고민을 많이 했었다. 그러나 일반 케이블 판매처에서 케이블 두께에 대해서 언급도 안되있고 아무리 좋은 것을 써..

일상/리뷰 2019.03.10

[C/C++] Simple Polygon의 Triangulation – OpenGL

1. Visual Studio 2015와 OpenGL 사용 아래 글 참조 http://fatc.club/2017/03/25/1814 2. 코드 https://github.com/ChangdaeJeong/triangluation-openGL 위의 깃허브 참조 3. 데모 영상 콘솔창 + OpenGL 영상 https://www.youtube.com/watch?v=pxCs9ynF_OA&feature=youtu.be OpenGL 영상 https://www.youtube.com/watch?v=fBwQU2o17aQ 4. 기타 Triangulation 할때, Upper & Lower Chain을 이미 알고 있다는 가정하에, 구현하였음. 초기 시작시 X-coordinate 순으로 점이 추가됨. 그 다음 Upper Cha..

[VB] 윈도우에서 프로그램을 백그라운드로 실행하는 방법

1. 백그라운드 프로세스 백그라운드 프로세스는 화면에 출력되지 않고, 서비스 처럼 동작하는 프로세스로 호출하기 위해서는 아래와 VBS 코드를 작성하면 된다. 2. VBS VBS 코드란 Visual Basic Script로 MS의 Visual Basic 언어로 작성된 스크립트 파일을 말한다. VBS는 Windows 98 이후쭉 내장되어 왔다. 3. 코드 Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "절대/상대 주소" & Chr(34), 0 Set WshShell = Nothing 위의 코드를 메모장에 복사하고 저장한다. 그리고 .txt를 .vbs 확장자로 바꾸어 준다. 여기서 절대 주소는 "C:\Users\UserName\Desk..

[컴퓨터] 개인 워크스테이션 구축 E5-2680v2, X9DRi-LN4F+

테스트 서버를 개인 데스크톱에 구성해서 프로젝트를 진행하다 보니, 어느새 내 컴퓨터에 돌아가는 Mongodb, Redis등을 제외한 RDBMS만 3개가 되어가고 WAS, 웹서버 그리고 가상머신까지 돌아간다. 여기에 컴퓨터를 전혀 끄지 않고, 크롬을 열어두다 보니 메모리 점유율이 50프로가 기본이다. 물론 기존 사양은 i7 2600, DDR3 16GB이므로 썩 나쁜편(?)은 아니다. 사실상 2세대 이후로 매 세대마다 약 5~6%정도 밖에 성능향상이 안되었으니,최신 i7이나 라이젠 1800으로 교체한다고 하더라도 언젠가는 다시 사양 문제에 부딪히게 될 것이다. 물론 i9이나 스레드리퍼를 사용하게 된다면, 위의 CPU보다도 오래 버틸 수 있을 테지만 너무 가격이 비싸다. 그리고 그렇게 높은 클럭이 필요하지 않..

일상/리뷰 2019.03.05

[VMware] Host와 VM 인스턴스간 파일 공유 - 우분투

웹 서버 개발시, 개인적으로 VM이나 AWS으로 서버를 생성한다. 그래야 나중에 뒷처리도 깔끔하고 향후 웹 서버 세팅시 바닥환경부터 필요한 패키지등등을 알 수 있기 때문이다. 그러나, VM을 설치할 때마다 필요한 파일을 USB나 기타 방법으로 옮길 수는 없다. 그래서 사용한것이 VMware에서 제공하는 파일 공유. (1) 현재 작업중인 인스턴스의 Settings->Options ->Shared Folders 에서, Add를 눌러 추가할 수 있다. (2) VM 웨어 세팅 VM웨어에서 바로 세팅된다면, 그대로 사용해도 무방하다. 만약 에러가 발생하여, 리눅스상에서 폴더가 설정되지 않는다면 VM 툴을 재설치 해야한다. 현재 사용중인 인스턴스탭을 우클릭하여, Reinstall VM tools를 선택하자.그러면 ..

[C, C++] 1~N 연속된 수로 이루어진 랜덤 배열

1~N, N~M으로 이루어진 배열 또는 이미 지정된 값들로 구성된 배열을 랜덤하게 생성하는 방법에 대해 누군가 질문한 적이 있다. 만일 테스트 용도로 그 값들을 랜덤하게 생성해야 한다면, 시간에 따른 RAND함수로 도출하는 것은 절대적으로 리소스 낭비가 크다. 예를 들어, 1~10까지의 수로 이루어진 배열 [1,2,3,4,5,6,7,8,9,10]을 랜덤하게 뽑으려면 확률상 몇번의 RAND()를 불러야 할까? 따라서 랜덤으로 배열을 만드는 것 보다. 이미 만들어진 배열을 랜덤으로 섞는 것이 더 유리하다. C++이나 Java와 같은 언어에서는 이미 이런 기능을 함수로 만들어 제공한다. 함수의 이름은 Shuffle이다. 만약 셔플 함수를 제공하지 않는 다면 아래와 같이섞을 수 있다. void shuffle(i..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사