2018년 4월 30일 월요일
OpenCvSharp 메모
OnepCv와 달리 C#용은 별도의 OpenCvSharp 패키지를 사용하는데, 같은건줄 알고 만만하게 봤다가 큰코다쳤습니다.
대부분의 메소드, 메크로 다 바뀌거나 없습니다. 심지어 구동방식도 많이 틀린것 같습니당.
덕분에 하루종일 삽질을 했는데, 필기가 필요한 부분은
http://kimcblog.cpss.co.kr/2017/07/28/c-opencv-opencvsharp-mat-class-to-bitmap/#comment-58
Mat Class를 Bitmap이나, Stream으로 전환하는 방법.
Stream을 File로 출력하는 방법
using(FileStream fs = File.Create(save_path+fileName)){
fs.Write(matBuff,0,matBuff.length);
}
이제 삽질 하나 끗
2018년 4월 29일 일요일
blog porject 1.0 종료
3월부터 공식적으로 작업이 시작된 blog만들기 프로젝트는 종료되었습니다.
Git : https://github.com/juicycool92/blogProjectForjellojay
알려진 버그/ 1.1 버전 계획도 함꼐 포스팅 되어있습니다.
1.1 버전은 바쁜게 끝나면 다시 진행할 예정..
마무리 하는 동안 수시로 코드 스타일이 바뀌어서, 일관성이 떨어집니다.
계속 깔끔하고, 자원을 덜 쓰는 방식을 알아내서, 전체적으로 지저분해진 상황..!
(수정 필요!)
2018년 4월 24일 화요일
javascript function에 관한 노트
서핑중
function foo(){}
나
const foo = ()=>{}
가 같은 의미로 쓰이지만, 특히 후자가 더 선호된다는 이야기를 들었습니다.
궁금증이 좀 생겨서 알아보는데..
1.arrow function 의 인자값이 없다면 _ 로 처리가 가능하다.
const foo = _ =>{}
2. arrow function 은 this 가 없다. 이때 this는 상위 scope를 따라게기 된다.
const foo = _ =>{console.log(this);} 를 현제 웹 페이지의 콘솔에 친다면,
현제 인터넷창 windows가 출력될 것이다!/node shell에서는 node객체가 출력되는것 같다!
3. arrow function에서는 arguments객체가 없기 때문에, 가변 인자의 경우 spread연산자로 변수를 하나 선언하여 담아 보낼수 있다.
정도의 좋은 정보들을 잔뜩 얻게되었습니다.
...
그래서 왜 function (){}보다 arrow function이 좋은가? 에 대해서는 아직까지 명쾌한 해답은 듣지 못했다(...)
function foo(){}
나
const foo = ()=>{}
가 같은 의미로 쓰이지만, 특히 후자가 더 선호된다는 이야기를 들었습니다.
궁금증이 좀 생겨서 알아보는데..
1.arrow function 의 인자값이 없다면 _ 로 처리가 가능하다.
const foo = _ =>{}
2. arrow function 은 this 가 없다. 이때 this는 상위 scope를 따라게기 된다.
const foo = _ =>{console.log(this);} 를 현제 웹 페이지의 콘솔에 친다면,
현제 인터넷창 windows가 출력될 것이다!/node shell에서는 node객체가 출력되는것 같다!
다음으로 넘어가기 전에 잠깐 확실하게 해둘것이 있다.
Parameter와 Argument 의 차이를 짚고 넘어가야 할것 같다.
검색했을때 좋은 예제가 나왔는데,
void Foo(int a,int b){}
void main(){
Foo(1,2);
}
에서 Foo함수의 int a 와 b 를 Parameter,
Foo(1,2)에서의 1과 2를 Argument라고 부른다.
Arguments는 넘겨주는 값/변수/레퍼런스 따위를 부르며,
Parameters는 fuction/block등을 통해 넘겨받은 변수값을 칭한다.
3. arrow function에서는 arguments객체가 없기 때문에, 가변 인자의 경우 spread연산자로 변수를 하나 선언하여 담아 보낼수 있다.
여기서 처음보는 spread연산자가 나타나 내 머리를 헤집기 시작하는데,
간단하게 arguments인자값을 배열 따위로 순차적으로 넣을 수 있게 만드는것 같다.
예제코드를 보면 이해가 쉽다.
function foo ( a, b, c, d, e, f){return a+b+c+d+e+f}
const a = [1,2,3];
const b = 4;
const c = [5,6];
console.log(foo(...a,b,..c));
출력은 21이 찍힌다.
foo의 인자값으로 6개의 변수를 받아야 하는데, a 와 c 배열의 모든 인자값들을 포함하여 6개의 인자를 채우려고 할때, spread연산자를 쓸 수 있다.
... 가 spread연산자 기호이다.
정도의 좋은 정보들을 잔뜩 얻게되었습니다.
...
그래서 왜 function (){}보다 arrow function이 좋은가? 에 대해서는 아직까지 명쾌한 해답은 듣지 못했다(...)
2018년 4월 3일 화요일
[postgresql]Union을 이용하여 하나 이상의 rows의 비 중복 values를 가져오기
보드 게시판에서 카테고리가 두개로 나뉘어져 있습니다.
select Category1 as cat1, Category2 as cat2 from board;
---------------
cat11 | cat2
---------------
Blog | note
Blog | diary
Code | tutorial
Code | tutorial
Code | note
---------------
목적은, 각 카테고리의 값들을 가져오는데, 중복은 재외하는것 입니다.
select district Category1 as cat1 from board;
select district Category2 as cat2 from board;
-------
cat1
-------
Blog
Code
-------
-------
cat2
-------
note
diary
tutorial
note
-------
하지만 굳이 query문을 두번이나 쓸 필요가 있을까 싶었기 때문에, 삽질과 질문을 한 끝에
UNION 을 사용하면 된다는것을 알았습니다.
UNION은 두 select문의 출력할 rows가 동일할때, 두 출력문을 하나로 합치는 기능인데요,
이때 중복 또한 예외처리가 되었습니다.
위의 코드에서 사용하기위해, 각 각의 select문을 동일한 출력으로 만들면 되는데요,
select Category1 as cat1, NULL as cat2 from board
를 치게 되면
----------
cat1 | cat2
----------
Blog | NULL
Blog | NULL
Code | NULL
Code | NULL
Code | NULL
-----------
으로 나오게 됩니다.
동일하게 cat2 에도 같은 select문을 사용하여
select NULL as cat1, Category2 as cat2 from board
---------------
cat1 | cat2
---------------
NULL | note
NULL | diary
NULL | tutorial
NULL | tutorial
NULL | note
---------------
그럼 이제 두 select문을 합치게되면,
SELECT Category1 AS cat1, NULL AS cat2
FROM board
UNION
SELECT NULL AS cat1, Category2 AS cat2
FROM board;
그리고 출력물은
---------------
cat1 | cat2
---------------
NULL | note
NULL | diary
NULL | tutorial
Blog | NULL
Code | NULL
---------------
요로코롬 나오게 됩니다!
이게 쿼리 두번 날리는것보다 빠른건지 데이터가 많이 없어서 증명은 못하겠지만..
더 효율적이라고 판단하고 자위하는중..
제 케이스에서는
각 각 select문은 230ms 가 걸렸으나,
union을 통한 한번의 query문은 280ms가 갈렸습니다
select Category1 as cat1, Category2 as cat2 from board;
---------------
cat11 | cat2
---------------
Blog | note
Blog | diary
Code | tutorial
Code | tutorial
Code | note
---------------
목적은, 각 카테고리의 값들을 가져오는데, 중복은 재외하는것 입니다.
select district Category1 as cat1 from board;
select district Category2 as cat2 from board;
-------
cat1
-------
Blog
Code
-------
-------
cat2
-------
note
diary
tutorial
note
-------
하지만 굳이 query문을 두번이나 쓸 필요가 있을까 싶었기 때문에, 삽질과 질문을 한 끝에
UNION 을 사용하면 된다는것을 알았습니다.
UNION은 두 select문의 출력할 rows가 동일할때, 두 출력문을 하나로 합치는 기능인데요,
이때 중복 또한 예외처리가 되었습니다.
위의 코드에서 사용하기위해, 각 각의 select문을 동일한 출력으로 만들면 되는데요,
select Category1 as cat1, NULL as cat2 from board
를 치게 되면
----------
cat1 | cat2
----------
Blog | NULL
Blog | NULL
Code | NULL
Code | NULL
Code | NULL
-----------
으로 나오게 됩니다.
동일하게 cat2 에도 같은 select문을 사용하여
select NULL as cat1, Category2 as cat2 from board
---------------
cat1 | cat2
---------------
NULL | note
NULL | diary
NULL | tutorial
NULL | tutorial
NULL | note
---------------
그럼 이제 두 select문을 합치게되면,
SELECT Category1 AS cat1, NULL AS cat2
FROM board
UNION
SELECT NULL AS cat1, Category2 AS cat2
FROM board;
그리고 출력물은
---------------
cat1 | cat2
---------------
NULL | note
NULL | diary
NULL | tutorial
Blog | NULL
Code | NULL
---------------
요로코롬 나오게 됩니다!
이게 쿼리 두번 날리는것보다 빠른건지 데이터가 많이 없어서 증명은 못하겠지만..
더 효율적이라고 판단하고 자위하는중..
제 케이스에서는
각 각 select문은 230ms 가 걸렸으나,
union을 통한 한번의 query문은 280ms가 갈렸습니다
피드 구독하기:
글 (Atom)