반응형
반응형

세월이 지나도
변하지 않는 확고한 사실이 있다.
기초가 튼튼해야 튼실한 구조물을 올릴 수
있다는 것이다. 적조식 건물의 경우 아무리
설계도가 좋고 부지가 있어도 벽돌이 없으면
집을 지을 수 없다. 현대사회에서는 지식과 정보가
그 벽돌 역할을 한다. 하지만 벽돌만 쌓는다고 집이
되는 게 아니다. 설계도면과 땅이 필요하며 어떤
집을 지을지에 대한 비전이 있어야 한다.
이를 체계화하고 자신의 방식으로
구성할 수 있는 능력이 필요하다.


- 김경집의《6I 사고 혁명》중에서 -


* 모래로는 집을 지을 수 없습니다.
시멘트를 섞어 벽돌을 만들어야 합니다.
그것만으로도 안됩니다. 땅이 있어야 하고
설계도면이 필요합니다. 과거 경험, 능력, 비전에
상상력이 더해져야 좋은 설계도면이 나올 수 있습니다.
지식과 정보, 이 현대사회의 기본입니다. 그러나
그것만으로는 가치를 창출할 수 없습니다.
자신의 방식으로 '보배'로 만드는 실력이
필요합니다. 준비하는 사람에게만
주어지는 선물입니다.

반응형

'아침편지' 카테고리의 다른 글

최고의 육아 교육  (0) 2021.08.16
허둥지둥 쫓기지 않으려면  (0) 2021.08.12
나무도 체조를 한다  (0) 2021.08.10
슬픈 일  (0) 2021.08.09
빈둥거림의 미학  (0) 2021.08.09
반응형

[PostgreSQL] 행 순서(ROW NUMBER)에 조건 적용하기

SELECT *
  FROM (SELECT ROW_NUMBER() OVER (ORDER BY DATE) AS ROW, *
          FROM TEST_TABLE LIMIT 10) T;
          
          
          
          
-- 짝수번째 행만 조회하는 쿼리
SELECT *
  FROM (SELECT ROW_NUMBER() OVER (ORDER BY DATE) AS ROW, *
          FROM TEST_TABLE LIMIT 10) T
  WHERE ROW%2 = 0;

 

SELECT
	product_id,
	product_name,
	group_id,
	ROW_NUMBER () OVER (ORDER BY product_id)
FROM
	products;
반응형
반응형

2021년 대체공휴일

 

광복절 2021.08.16

개천절 2021.10.04

한글날 2021.10.11

 

반응형

'LIFE (일상다반사)' 카테고리의 다른 글

미생 마지막회  (0) 2021.09.01
이봐, 해보기나 했어?  (0) 2021.08.16
인생 명언  (0) 2021.07.26
갑자기 꺼내든 '전국 5인 금지'…휴가취소·환불다툼 '대혼란'  (0) 2021.07.19
NATURING 네이처링  (0) 2021.07.19
반응형

[PostgresSQL] 컬럼 내 특정 문자로 split 후 값 출력

    사용법은 split_part('원래 문자열', '자를 문자', 위치) 로 사용한다. 

postgresql 에서 문자열 또는 필드를 붙일 경우는 concat 함수를 사용한다.

  • 문자열 합치기: '||' 연산자
  • 문자열 합치기: CONCAT() 함수
  • 구분자를 포함하여 문자열 합치기: CONCAT_WS() 함수


 

 

-- split_part(컬럼,자르고자하는 문자, 인덱스)


-- ex
select split_part(tel,'-',4)
from test
-- test 테이블의 tel 컬럼에서 - 문자로 자른 후 4번째에 있는 데이터를 출력 (index는 0이 아닌 1부터 시작)




update 테이블이름 set 
  year = split_part(date::TEXT, '-', 1)::SMALLINT
, month=split_part(date::TEXT, '-', 2)::SMALLINT

-- concat 

SELECT employee_id,first_name,last_name,
concat(first_name,'-',last_name) "Name of the Employee" 
FROM employees
WHERE department_id=100;

SELECT	*
	, col_1 || ', ' || col_2 AS db_name
	, id || ' : ' || col_2 AS db_id
FROM char_type_test;

-- (3) CONCAT_WS : CONCAT With Separator
-- : CONCAT_WS(separator, str_1, str_2, ...);

SELECT 	*
	, CONCAT_WS(', ', col_1, col_2) AS db_name_3
	, CONCAT_WS(' : ', id, col_2) AS db_id_3
FROM char_type_test;
반응형
반응형

[Node.js]  Path : 파일 경로를 다루고 변경하는 유틸리티가 포함되어 있다

https://nodejs.sideeffect.kr/docs/v0.10.0/api/path.html

 

Path Node.js v0.10.0 Manual & Documentation

Path# Stability: 3 - Stable This module contains utilities for handling and transforming file paths. Almost all these methods perform only string transformations. The file system is not consulted to check whether paths are valid. Use require('path') to use

nodejs.sideeffect.kr

path.normalize(p)#

'..'와 '.' 부분을 처리해서 문자열 경로를 정규화한다.

슬래시가 여러 개 있는 경우 슬래시 하나로 교체하고 경로의 마지막에 슬래시가 있는 경우에는 유지한다. windows에서는 역슬래시를 사용한다.

path.normalize('/foo/bar//baz/asdf/quux/..')
// returns
'/foo/bar/baz/asdf'

path.join([path1], [path2], [...])#

모든 아규먼트를 합쳐서 최종 경로로 정규화한다. 문자열이 아닌 아규먼트는 무시한다.

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// returns
'/foo/bar/baz/asdf'

path.join('foo', {}, 'bar')
// returns
'foo/bar'

path.resolve([from ...], to)#

to를 절대경로로 변환한다.

to가 절대경로가 아니면 절대경로를 찾을 때까지 from 아규먼트들을 우측에서 좌측의 순서로 앞에 이어붙힌다.모든 from 경로를 사용한 후에도 절대경로를 찾지 못하면 현재 워킹 디렉토리를 사용한다. 최종 경로는 정규화되고 경로가 루트 디렉토리로 처리되지 않는한 마지막 슬래시는 제거한다. 문자열이 아닌 아규먼트는 무시한다.

이는 쉘에서 cd 명령어를 순서대로 실행한 것과 같다.

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')

//-- 이는 다음과 비슷하다.:

cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd

//--다른 경로라 존재할 필요가 없거나 파일일 수도 있다는 점만이 다르다.

path.resolve('/foo/bar', './baz')
// returns
'/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/')
// returns
'/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
// if currently in /home/myself/node, it returns
'/home/myself/node/wwwroot/static_files/gif/image.gif'

 

path.relative(from, to)#

from에서 to까지의 상대경로를 처리한다.

때로는 두 개의 절대경로를 가지고 있고 하나에서 다른 하나로의 상대경로를 얻어야 한다. 사실 이는 path.resolve의 반대 변환이다. 이 의미를 다음 예제에서 보자.

path.resolve(from, path.relative(from, to)) == path.resolve(to)

//-----------------------------------------------

path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb')
// returns
'..\\..\\impl\\bbb'

path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
// returns
'../../impl/bbb'

path.dirname(p)#

경로의 디렉토리이름을 반환한다. Unix의 dirname 명령어와 비슷하다.

path.dirname('/foo/bar/baz/asdf/quux')
// returns
'/foo/bar/baz/asdf'

path.basename(p, [ext])#

경로의 마지막 부분을 반환한다. Unix의 basename 명령어와 비슷하다.

path.basename('/foo/bar/baz/asdf/quux.html')
// returns
'quux.html'

path.basename('/foo/bar/baz/asdf/quux.html', '.html')
// returns
'quux'

path.extname(p)#

경로의 마지막 부분의 문자열에서 마지막 '.'에서부터 경로의 확장자를 반환한다. 경로의 마지막 부분에 '.'가 없거나 첫 글자가 '.'이라면 빈 문자열을 반환한다. 

path.extname('index.html')
// returns
'.html'

path.extname('index.')
// returns
'.'

path.extname('index')
// returns
''

path.sep#

플랫폼의 파일 구분자. '\\'나 '/'이다.

'foo/bar/baz'.split(path.sep)
// returns
['foo', 'bar', 'baz']

 

path.delimiter#

플랫폼에 특화된 경로 구분자인 ;나 ':'이다.

 

console.log(process.env.PATH)
// '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'

process.env.PATH.split(path.delimiter)
// returns
['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']

반응형
반응형

우리가 페이스북을 죽일 뭔가를 만들어내지 못한다면,
다른 누군가가 만들 것이다. 인터넷은 우호적인 장소가 아니다.
존재감을 유지하지 못하면 폐허를 남기는 사치조차 누릴 수 없다.
흔적없이 사라지고 만다.
- 마크 저커버그, 페이스북 창업자


‘현존하는 모든 제도와 시스템과 상품과 솔루션이
처음 만들어질 때처럼 지금도 여전히 필요한지, 지금도 경쟁력이 있는 건지
주기적으로 검토해, 가치를 창출하지 못하는 것이 발견되면
스스로 파괴’할 줄 알아야 합니다.
스스로 나를 파괴하지 못하면, 남에 의해 파괴될 가능성이 높아집니다.
스스로 파괴하면 더 큰 발전이 따라오지만, 남에 의해 파괴되면 소멸만이 남게 됩니다.
 


반응형

+ Recent posts