이번에 비가 너무 많이 와서 천정에 누수가 있었다...

전에 살던 아파트에선 단체 시공을 했었는데 마감도 불량이고 큰 비 오면 다시 누수 생겨서 개 고생했던 기억 때문에

이번엔 숨고, 블로그 등 하루종일 알아보고 업체를 선택했다.

선택의 기준

1. 보험 처리 관련 문서를 챙겨주는지

2. A/S 가능한지

3. 블로그가 활성화 되어 있는지

4. 외국인 노동자나 용역 업체 사람이 와서 시공하는 업체는 제외

 

그래서 서칭해본 결과 코킹24라는 업체로 선정하였다.

선정한 이유는 업체 블로그를 가보면 알것!

https://blog.naver.com/jyh9050

 

아파트 베란다 코킹 창틀 누수 코킹24 : 네이버 블로그

안녕하세요. 아파트 베란다 외벽 창틀 코킹 전문 업체 코킹 24!입니다. 빗물로 인한 누수, 곰팡이, 마룻바닥 침수 등의 문제점을 10년 이상 노하우로(직접 책임 시공) 창틀 코킹 공사를 통해 해결

blog.naver.com

 

죽었던 블로그에 글을 올릴만큼 만족함.

누수 시공은 이게 큰 비가 오지 않는 이상 잘됐는지 확인하기 어려움

그래서 꼼꼼하게 시공해야 함 장마 끝나고 시공 받고 내년 장마에 확인 가능할 수 도 있음 시공 잘됐는지

그래서 블로그 활성화된 업체가 중요함 연락안되면 대략 난감

 

암튼 내돈내산 시공 후기 끝!

블로그 이미지

스마트전

,

SELECT *  FROM (

     SELECT * FROM TABLE WHERE X = X

          OREDER BY price ASC

)  GROUP BY code ORDER BY ORDER

 

Mysql 에서 가격이 데일리로 들어가 있는경우 낮은 가격을 가져오고 서브쿼리에서 크룹핑하고 순서를 줬다

 

마리아 DB에선 내부쿼리에서 order 불허!!!!!!!!

 

편법 생각하자.....

SELECT *  FROM (

     SELECT * FROM TABLE WHERE X = X

          GROUP BY code , price

)  GROUP BY code ORDER BY  order

 

내부쿼리에 그룹에 두번째 디폴트 낮은 순이니 다시 그룹으로 ㄱㄱ

 

블로그 이미지

스마트전

,

character 한번에 바꾸기

MySQL 2019. 10. 16. 18:36

alter table table_name convert to character set UTF8;

블로그 이미지

스마트전

,

달력 숫자 채우기

MySQL 2019. 10. 16. 18:35

create table t (n int);

 

insert into t values (1);

 

insert into t select * from t; -- 이걸 13번 반복하면 4096행이 생성됨. 10년치 데이터라면 대략 3650일이므로 이정도면 충분

 

create table date_t (d date, ds char(8)); -- 날짜를 저장할 테이블

 

insert into date_t

select d, date_format(d, '%Y%m%d') from (

  select @rnum:=@rnum+1 as rownum, date(adddate('2009-01-01', interval @rnum day)) as d

  from (select @rnum:=-1) r, t

  ) t

where year(d) < 2019;

 

참고로, 날짜는 date 타입에 저장하는 것이 yyyymmdd형식의 문자열로 저장하는 것보다 좋습니다

 

insert into high_block (stay_code , room_code , r_block ,  chk_date )

SELECT 'high01' , '1001' , 0 , date_format(d, '%Y-%m-%d') from (

select @rnum:=@rnum+1 as rownum, date(adddate('2019-01-01', interval @rnum day)) as d

from (select @rnum:=-1) r, t

) t

where year(d) < 2021;

 

 

은근 많이 쓰는거

블로그 이미지

스마트전

,

프로젝트 임포트 시 Web App Libraries 못가져 올땐  Add Library 로 따로 불러오자 맨날 까묵

블로그 이미지

스마트전

,

node.js 설치 

centOS


#npm 설치

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash --


#node 설치

yum install nodejs -y


#버전확인

node --version

npm --version


#express 설치

npm install -g express-generator


#express 폴더 지정 후 이동

express /home/nodejs && cd /home/nodejs


#종속성 모듈 설치

npm install -d


#node 전역으로 패키지 실행

/etc/profile  혹은 /etc/enviroment 혹은 .bash_profile에 넣습니다.(저는 /etc/profile에 넣고 # source /etc/profile 해주었습니다.)


export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules:/usr/lib/node_modules

export NODE_PATH=$NODE_PATH:노드설치경로:/usr/lib/node_modules







블로그 이미지

스마트전

,

MySQL 5.5 INSERT IGNORE & REPLACE v1.0

Date

Ver

Etc.

12.11.28

1.0

<!--[if !supportLists]-->1. <!--[endif]-->INSERT IGNORE & REPLACE

기존 rows overwrite 하기 위해서는 insert 대신해replace 를 사용해야 한다.

replace insert ignore duplicate 상태의 entry 를 처리하는 방법이 다르다.

insert ignore 의 경우 duplicated entry 를 단순히 폐기하지만,replace 의 경우는 기존의 duplicated entry 를 새 값이 대체한다. 최신의 값으로 update 된다고 생각하면 된다.

매뉴얼에서는 insert ignore 를 사용한 경우 중첩된 entry 가 발생할 때 warning 이 발생한다고 하나, 실제로 확인해 보면 아무런 error / warning 이 없다. 참고로 ignore 가 없는 경우 위 에러가 발생하면 duplicate-key error 와 함께 statement 수행이 중지된다.

insert ignore 의 효과는 partitioned table 에서 주어진 값에 맵핑되는 파티션이 없을 때도 비슷한 효과를 가진다. 이를테면 insert 구문안의 값이 들어갈 파티션이 있으면 정상수행되고 없으면 해당 rows 는 입력에서 제외된다.

<!--[if !supportLists]-->2. <!--[endif]-->Sample

예제를 만들기에 앞서 다음과 같이 테이블과 데이터를 구성했다.

mysql> create table insert_ign(

-> id1 int,

-> id2 int,

-> primary key (id1));

Query OK, 0 rows affected (0.01 sec)

mysql> insert into insert_ign values(1,1),(2,2),(3,3);

Query OK, 3 rows affected (0.01 sec)

Records: 3 Duplicates: 0 Warnings: 0

위 상황에서 (3,4)데이터를 넣으면 당연히도 Duplicate error 가 발생한다.

하지만 IGNORE 옵션을 사용하면 에러없이 수행이 성공한다.

mysql> insert into insert_ign values(3,4);

ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY'

mysql> insert ignore into insert_ign values(3,4);

Query OK, 0 rows affected (0.00 sec)

mysql> select * from insert_ign;

+-----+------+

| id1 | id2 |

+-----+------+

| 1 | 1 |

| 2 | 2 |

| 3 | 3 |

+-----+------+

3 rows in set (0.00 sec)

위와같이 쿼리 수행을 성공했으나 실제로 테이블 내용을 보면 변경 된 rows 가 없다. Duplicate row 에 대해 실제 적용이 되지 않았음을 알 수 있다. 또 쿼리 수행에 에러가 없었고, alert log 에도 아무런 메시지가 남지 않았다.

위와 같이duplicated entry discard 되는게 아니라 새로운 값으로 update 되길 원한다면 replace 명령어를 사용해야 한다.

mysql> replace into insert_ign values(1,10),(2,20),(3,30);

Query OK, 6 rows affected (0.02 sec)

Records: 3 Duplicates: 3 Warnings: 0

mysql> select * from insert_ign;

+-----+------+

| id1 | id2 |

+-----+------+

| 1 | 10 |

| 2 | 20 |

| 3 | 30 |

+-----+------+

3 rows in set (0.00 sec)

replace 명령을 사용하는 경우 duplicated entry 에 대해 새로운 값으로 update 된다. 특이한 점은 3개의 rows 에 대해 변경이 있었는데 ‘6 rows affected’ 로 나오는 부분이다. 1개의 duplicated entry 에 대해 replace 하는 경우엔 ‘2 rows affected’ 가 결과로 나온다.

하나의duplicated entry 와 새로운 entry 를 입력하는 replace 경우 다음과 같은 결과가 나온다.

mysql> replace into insert_ign values(3,3),(4,40);

Query OK, 3 rows affected (0.00 sec)

Records: 2 Duplicates: 1 Warnings: 0

mysql> select * from insert_ign;

+-----+------+

| id1 | id2 |

+-----+------+

| 1 | 10 |

| 2 | 20 |

| 3 | 3 |

| 4 | 40 |

+-----+------+

위 결과로 보아 ?rows affected ? 부분의 값은Records + Duplicates 값으로 보인다.

<!--[if !supportLists]-->3. <!--[endif]-->References

<!--[if !supportLists]-->A. <!--[endif]-->INSERT syntax | http://dev.mysql.com/doc/refman/5.5/en/insert.html

<!--[if !supportLists]-->B. <!--[endif]-->REPLACE | http://dev.mysql.com/doc/refman/5.5/en/replace.html

 

블로그 이미지

스마트전

,

JSON 문법

카테고리 없음 2013. 3. 29. 09:55

JSON이란 무엇이고 어떻게 쓰이는지 알아보도록 하겠습니다.


1. JSON이란

JSON : JavaScript Object Notation


영어 그대로 해석하자면 자바스트립트를 객체형식으로 표현하는 것입니다.


JSON은 XML보다 빠르고 변환하기도 쉬워 많이 대체해서 쓰고 있습니다. 그리고  적은양의 데이터가 송수신 되므로 모바일쪽에서 쓰기에도 부담이 적습니다.


2. JSON 표기법


JSON의 표기법은 다음과 같습니다.


JSON 데이터는 key/value형식으로 구성되어 있습니다.

"firstName" : "김"


알아보기 쉽게 자바스크립트 문장으로 바꾸면 다음과 같습니다.

firstName = "김"


이중에서 value에는 다음과 같은 형식을 넣을 수 있습니다.

  •  a number(integer or float)
  •  a string(큰 따옴표 포함)
  •  a boolean(true or false)
  •  an object(중괄호 포함)
  •  an array(대괄호 포함)
  •  null


[a number]

integer형이나 float형을 넣을 수 있습니다.  

"clickNumber" : 1



[a string]

string형을 표현하고 싶을 때는 큰 따옴표로 묶어줍니다.

"name" : "홍길동"



[a boolean]

true 나 false를 넣을 수 있습니다.

"bResult" : true



[an object]

여러개의 key/value를 입력하여 중괄호로 둘러싸여집니다.

{"firstName" : "길동", "lastName" : "홍"}



[an array]

  여러개의 object를 대괄호를 통해 둘러싸여집니다.

{

  "employees" : [

    {"firstName" : "길동", "lastName" : "홍"},

    {"firstName" : "철수", "lastName" : "김"},

    {"firstName" : "영순", "lastName" : "박"}

  ]

}


JSON은 자바스크립트 문법을 사용하기 때문에, JSON으로 작업할 때 별도의 소프트웨어가 필요없습니다.

자바스크립트를 사용해서 다음과 같이 생성할 수 있습니다.


var employees = [

   {"firstName" : "길동", "lastName" : "홍"},

   {"firstName" : "철수", "lastName" : "김"},

   {"firstName" : "영순", "lastName" : "박"}

];



3. JSON 예제


<html>

  <header></header>

  <body>

Name: <span id="jname"></span><br /> 

Age: <span id="jage"></span><br /> 

Address: <span id="jstreet"></span><br /> 

Phone: <span id="jphone"></span><br /> 

  </body>


  <script type="text/javascript">

    var employees = {

"name":"홍길동",

"street":"서울시 서초구 서초동", 

"age":33,

"phone":"010-1234-5678"};


document.getElementById("jname").innerHTML=employees.name 

document.getElementById("jage").innerHTML=employees.age 

document.getElementById("jstreet").innerHTML=employees.street 

document.getElementById("jphone").innerHTML=employees.phone 

  </script>

블로그 이미지

스마트전

,