코딩테스트 연습 - 조건에 맞는 사용자 정보 조회하기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
SELECT U.USER_ID, U.NICKNAME, CONCAT(U.CITY,' ',U.STREET_ADDRESS1,' ',U.STREET_ADDRESS2) AS 전체주소, CONCAT(SUBSTR(TLNO,1,3),'-',SUBSTR(TLNO,4,4),'-',SUBSTR(TLNO,8,4)) AS 전화번호
FROM USED_GOODS_BOARD B INNER JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY U.USER_ID
HAVING COUNT(*) >= 3
ORDER BY U.USER_ID DESC;
concat()을 이용하여 둘 이상의 문자를 합칠 수 있다, 여기서 문자뿐 아니라 컬럼 그 자체도 전달이 가능하다는 것을
알게되었다,
SUBSTR() 을 사용하여 문자열을 원하는 부분부터 원하는 길이까지 추출이 가능
SUBSTR(str,a,b) 로 인자를 전달하면 str의 a번 문자부터 b개의 글자를 추출(이때 a번은 0번 인덱스를 제외한 번호를 의미)
SUBSTR(str,a)로 인자를 전달하면 str의 a번 문자부터 끝까지 글자를 추출(이때 a번은 0번 인덱스를 제외한 번호를 의미)
window.location.reload()??
if (name !== '' && guestBook !== '' && password !== '') {
let docData = {
name: name,
guestBook: guestBook,
password: password,
Date: new Date(),
}
await addDoc(collection(db, 'guestBook'), docData)
alert('작성 되었습니다.!')
window.location.reload()
} else {
alert('빈칸을 작성해주세요^^')
}
소개 페이지의 js 코드를 살펴보는 중 발견한 window.location.reload()
읽고나서 느낀점은 윈도우 객체의 현재 위치를 리로드 한다 의미이지않을까?
우선은 작성한 내용을 보아하니 방명록을 addDoc()으로 추가하고 추가한 내용이 반영되어야하므로(다시 get으로 불러와서 화면에 출력하는 과정이 필요함)
window.location.reload()를 함수에 묶어서 실행시켰다고 볼 수 있다.
TMI : window는 모든 객체의 조상격으로 생략이 가능하다고 한다 location.reload()만 사용해도 동일한 동작.
location.reload()를 사용하면 현재 페이지의 모든 상태와 데이터가 초기화되며 사용자의 입력에 의해 변경된 내용도 모두 사라진다.
실제로 저 부분을 주석 처리하고 방명록을 남겨보면 내가 작성한 방명록이 표시되지도 않고, 작성했던 방명록 내용도
그대로 남아있는것을 볼 수 있다, 여기에서 F5를 눌러보자, 그러면 주석을 해제한것과같이 내가 작성했던 방명록 내용도 사라지고, 작성한 방명록이 등록되는것과 동일하게 동작하는것,
즉, F5 와 location.reload()는 같은 역할을 한다는 것을 알 수 있었다.
여기까지가 코드에 대한 대략적인 이해이고 여기서 벗어나 더 확장된 내용을 찾아보면
location은 현재 페이지에 대한 URL에 접근을 하는데 사용하기도 한다.
location.href="url" 을 사용하여 a태그를 사용하지 않고 javascript를 사용해 페이지의 이동을 할 수 있다.
location.href, location.assign, location.replace 가 있고 href와 assign은 history 관리가 가능하고
replace는 history 관리를 하지 않는다고 한다, 이 차이는 페이지를 앞으로가기, 뒤로가기를 할 수 있는지의 유무이므로
페이지 새로고침 시에 사용법에 따라 다르게 사용할 때가 있을것이다.
그리고 방금 알아봤던 location.reload()
여기에서도 다른부분이 존재한다.
//cache
window.location.reload() //reload(false)가 default로 생략되어있다.
//server
window.location.reload(true)
reload의 인자로 true를 전달할 경우 달라지는게 있는데, 기존에는 캐시에서 파일을 찾고 없으면 서버에서 찾아온다면
reload(true)를 한다면, 무조건! 서버에서 파일을 찾아 가져온다고 한다.
여기까지만 정리하고, 더욱 자세하고 섬세한 부분은 여기 좋은 정리글을 발견하여 첨부한다.
'부트캠프 > TIL' 카테고리의 다른 글
[부트캠프] TIL - 깊은복사, 얕은복사, Java Collections, IntelliJ plugin (1) | 2024.07.23 |
---|---|
[부트캠프] TIL - MySQL(CASE), Java 기초 , Wrapper클래스 (0) | 2024.07.22 |
[부트캠프] TIL - Java의 Call by Value, Call by Reference (2) | 2024.07.20 |
[부트캠프] TIL - 코드카타(2016년, MySQL 최댓값), jQuery click & on('click',..) (0) | 2024.07.19 |
[부트캠프] TIL - 링크 태그<a> 및 파일 경로 (0) | 2024.07.17 |