장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
-
JavaScript 기본 문법0313분토스 프론트 개발자 채용 공고를 봤다.'React, Next.js, Typescript : 컴포넌트 기반의 아키텍쳐로 UI를 효율적으로 구축하고, 정적 타입 검사를 통해 버그를 줄여요.'React : JS lib => 컴포넌트 기반 아키텍처로 재사용 가능한 화면 구현 가능Next.js : React 기반 프레임워크 =>서버 사이드 렌딩(SSR) : 항상 최신 뉴스를 보여주는 (페이지 요청 시 서버에서 데이터를 불러와 새 HTML 생성)정적 사이트 생성(SSG) : 데이터 업데이트가 적은 경우 빠른 페이지 로딩 속도 (빌드 시 HTML 생성)검색 엔진 최적화 (SEO) : 검색 엔진 크롤링 최적화 - SNS에서 잘 보이도록 (메타 태그 활용)TypeScript : JS의 확장된 언어 => 코드 작성 실수 ..
-
티스토리 스킨 수정하기0312분티.꾸를 좀 해볼까 (티스토리 꾸미기)를 생각하다가 괜찮은 스킨을 발견했다.넷플릭스 스킨!https://thelabors.tistory.com/184 [티스토리 스킨 배포] Netflix포함 옵션 반응형 / 내용 요약형 갤러리 / 방명록 / 검색창 최적화 4K 맥 사파리 / 아이폰 11 Pro 스킨 다운로드 (Ver. 2.0) Ver. 2.0 수정사항 ▪︎ 상영등급 아이콘이 변경되었습니다. ▪︎ 내용정보 아thelabors.tistory.com 기존 스킨에서 1. 요소들 위에 마우스 올려놓으면 반응하도록 추가 2. 썸네일 이미지 변경 3. 코드 부분 색상 반전 4. 스크린 크기에 따라 정렬 변경5. 버튼 url 변경 등의 작업을 했다. 썸네일 이미지 변경할 때, 글 자체에 이미지가 없으면 연관글 추천..
-
HTML 기본 구조 - 태그0311분block vs. inlinehtml 구조의 핵심이다. 한 행을 기준으로 \n되냐 내용만큼만 영역을 차지하냐의 차이인데, 요소들 놓을 때 둘의 차이를 잘 고려해야 한다. fieldset: tabletable(표 삽입)은 tr -> th -> td을 순서로 가진다. 비슷하게 목록태그가 있다. ul(unordered list), ol -> li fieldset으로 테두리 두르고 table로 값을 묶어주고, tr : table row , th: table heading(헤더), td : table data input form name name..
-
[데이터베이스] WITH구문 : CTE0308분서브쿼리를 배웠다면 with 구문도 알아야 한다. 둘의 기능은 비슷하나 가독성은 with가 높다. 재사용이 가능하기 때무니다. CTE (Common Table Expression, CTE) : WITHCTE는 쿼리의 시작 부분에 정의되며, 정의된 쿼리는 메인 쿼리에서 여러 번 재사용할 수 있다.코드 공유시 가독성이 높다.복잡한 sql 쿼리의 구조 대신 with를 이용해 단순화한다.WITH {CTE 이름} AS -- 이렇게 시작한다. ❌AS 뒤에 별칭(Alias) 만드는 것이 아니다❌ 별칭은 join 문에서 만들었다. WITH LatestOrders AS ( SELECT customerNumber, MAX(orderDate) AS MaxOrderDate FROM orders GROUP B..
-
[데이터베이스] 서브쿼리0308분쿼리(select ~) 안에 또 쿼리(select from ~ ) 형식을 가지는 것을 서브쿼리라 한다. 즉, JOIN처럼 값을 가져오기 위함인데 가상의 테이블을 만든다고 생각하면 된다. ‼️ 모든 서브쿼리는 괄호() 안에 포함되어야 한다. select, from, where 절에서 사용 가능 Scalar subquery : 단일값Select, where, havingTable subquery : 테이블이 반환 From절에서 사용되는데 별칭 필수 => INLINE VIEWCorrelated subquery : 메인 쿼리의 각 행을 참조하여 수행Where에서 사용 Scalar subquerySELECT productName,buyPriceFROM productsWHERE buyPrice > (SELECT A..
-
[데이터베이스] window 함수0308분window 함수select 구문에서 사용sum(col1) over(partition by col2 order by col3) as new_colpartition by : group by랑 비슷하지만, 집계 결과가 아닌 본래 table 그대로 출력partition by는 생략 가능: 순서대로 누적합order by를 생략하면 누적 합계의 순서(1 + 3 -> 4 (+ 3) -> 7 식으로 나타나지 않고 바로 7이 뜸.cumtomer number 끼리의 amount를 더할건데, pay_date 오름차순으로 더해가는 것 -> 같은 custom_num의 total_amount누적합 개념 group by는 customer number를 하나로 모아서 집계 출력하지만, partition by는 table 모든 행을..
-
[Excel] VBA로 데이터 자동화하기0304분- 인프런 '데이터 자동화(with VBA)' 배영자 님의 강의를 수강했습니다. 엑셀 자동화 코드를 만들어줄 수 있냐는 의뢰를 받았다. 지금 작업 방식은 년도별로 달라지는 데이터를 업데이트하기 위해 각 년도별 파일을 모두 하나하나 열어서, 해당하는 값을 찾고, 데이터 셀을 복사해서 가지고와 붙여넣는다고 하셨다. 분명 자동화하면 도움이 될 것이다. 나는 컴활 1급이 있지만 장롱 컴활이기에 따로 공부를 하면서 만들어보기로 했다. 지금 해야하는 일은 파일 간 데이터 이동이다. 하나의 시트에, 해당하는 년도별 데이터를 종합해 모아놓아야 나중에 업데이트할 때도 편리하다. 지금까지 알고 있는 지식으로는 파일을 모두 열어놓으면 데이터 공유가 가능하다고 알고 있었다. 근데 매번 2013~2023까지의 파일을 모두 열어..
-
[빅데이터분석기사 필기] 키워드 정리0227분데이터베이스 : 일정 구조에 맞게 조직화된 데이터의 집합데이터베이스의 특징공용 데이터: 여러 사용자가 서로 다른 목적으로 데이터 공동 이용통합된 데이터: 동일한 데이터가 중복되어 있지 않음저장된 데이터: 저장매체에 저장변화되는 데이터: 새로운 데이터 추가, 수정, 삭제에도 현재의 정확한 데이터 유지(무결성) 데이터 산업의 이해데이터 사이언스: 정형/비정형 데이터를 막론하고 데이터 분석(총체적 접근법)Analytics: 이론적 지식IT: 프로그래밍적 지식Business: 비즈니스적 능력Hadoop: 여러 컴퓨터를 하나로 묶어 대용량 데이터를 처리하는 오픈 소스 빅데이터 솔루션빅데이터 기술 및 제도빅데이터 플랫폼의 계층 구조소프트웨어 계층 : 데이터 수집 및 정제, 처리 및 분석, 사용자/서비스 관리플랫폼 ..
-
파이썬 가상환경설정0107분1. 프로젝트 별로 가상환경을 따로 관리 - 라이브러리를 관리한다. 라이브러리끼리 의존성 때문에 버전 관리를 위함라이브러리 설치가 파이썬 pipe로 설치되지 않고 해당하는 폴더 밑으로 설치되도록 가상환경 설정2. pip install virtualenv 3. cd 원하는 폴더명python -m venv [생성할 가상환경 이름]4. 가상 환경 활성화 [folder명]/bin/activate- 비활성화는 deactivate이때 실행권한이 없으면 unrestricted 설정해줘야 함chmod +x ./scarapping/bin/activatewindow 기준 powershell에서 관리자 권한으로 set-excutionpolicy unrestrictedmac : source venv/bin/activate5..
토스 프론트 개발자 채용 공고를 봤다.
'React, Next.js, Typescript : 컴포넌트 기반의 아키텍쳐로 UI를 효율적으로 구축하고, 정적 타입 검사를 통해 버그를 줄여요.'
- React : JS lib => 컴포넌트 기반 아키텍처로 재사용 가능한 화면 구현 가능
- Next.js : React 기반 프레임워크 =>
- 서버 사이드 렌딩(SSR) : 항상 최신 뉴스를 보여주는 (페이지 요청 시 서버에서 데이터를 불러와 새 HTML 생성)
- 정적 사이트 생성(SSG) : 데이터 업데이트가 적은 경우 빠른 페이지 로딩 속도 (빌드 시 HTML 생성)
- 검색 엔진 최적화 (SEO) : 검색 엔진 크롤링 최적화 - SNS에서 잘 보이도록 (메타 태그 활용)
- TypeScript : JS의 확장된 언어 => 코드 작성 실수 방지 가능(정적 타입 검사)
js를 기반으로 한 node.js로 프론트엔트와 백엔드 간 일관된 언어로 개발을 구현할 수 있다. js를 잘 아는 것은 매우 중요하다!!
- js로 html, css에 동적 기능이나 상호 작용을 추가할 수 있다.
- 버튼 클릭, 입력값 변경 등 사용자 인터랙션에 실시간 반응형 웹 페이지를 만들 수 있다.
- script src로 불러오면 defer(HTML읽은 후 js 로드)를 잊지말자
- React, Vue, Next.js 등 광범위한 프레임워크 및 라이브러리로 빠른 프론트엔드 개발이 가능하다.
- REST API, WebSockets 등을 통해 서버와 데이터를 주고 받는다.
- 비동기 처리(Asynchronous Processing)를 통해 페이지 새로 고침 없이도 데이터를 주고 받는 SPA(Single Page Application)을 구현할 수 있다.
- AJAX, Fetch API, WebSockets 활용
2015년 이후 JavaScript는 ES6 문법을 기반으로 한다.
- 변수는 var, let, const를 가진다.
- var은 전역변수처럼 동작할 수 있어 자주 사용하지 않는다. {}에 의한 블록 수준의 유효 범위가 없기 때문에 변수를 잘못 설정해도 실행이 되어 (값은 잘못된 값) 오류 찾기 어렵다.
- 표현 형식으로 템플릿 리터럴: `${}` 로 변수, 문자열, 식을 섞어 하나의 문자열을 만드는 방식을 사용한다.
- 아니면 name + " 입니다." 이런 식 묶어서 써야한다.
- 키워드 중에 new 는 객체를 생성하는 생성자 함수로 new Date() : 날짜 형식 객체 처럼 사용된다. Heap에 저장되어도 사용자(개발자)가 메모리를 직접 관리할 일은 없어서 메모리 누수 문제는 걱정하지 않아도 된다.
자료형
- 원시 타입(Primitive: 숫자, 문자열, boolean) : 단일 데이터로 변수에 직접 할당 : stack에 저장
- Object 타입(array, function) : 서로 연관있는 속성과 행동을 묶어서 할당: heap에 저장
'객체'는 { 속성명: 속성값, }으로 되어 있다. 배열이 인덱스로 요소에 접근하면, 객체는 키(속성명)으로 접근한다.
- 객체 for 키 in 객체명
- 배열 for 배열값 of 배열명
let product = {
제품명 : '7D 건조 망고',
유형 : '당절임',
성분 : '망고, 설탕',
eat : function(food) {
console.log(food + `yummy`);
for (let i in product) {
console.log(`${i} : ${product[i]}`); // 객체는 순회한다
});
함수 문법
함수가 이름이 있냐 없냐에 따라 함수 재사용 여부가 나뉜다. 선언형은 선언된 위치와 관계없이 코드 실행 시 자동으로 hoisting되어, 함수 선언 전에 호출할 수 있다. (C++랑 헷갈린다 ㅠ)
- 익명형 function(){} / () => {}
- 선언형 function name() {}
- var도 hoisting 되어 중복 선언에도 오류가 안난다. (잘 안쓰는 이유)
Arrow Function
const add3 = (a,b) => a+b;
이렇게 파라미터를 받아서 화살표가 가리키는 방향처럼 조작(실행) 해달라는 뜻이다.
이런 함수도 있다. 이 ... 을 가변 파라미터(Rest parmeter)라고 한다.
function add(a=0, b=0, ...nums){
console.log(a);
console.log(b);
console.log(nums);
};
add(4, 3, 1, 5, 6);
... 에 해당하는 파라미터는 nums에 배열 형태로 [1, 5, 6] 전달된다.
CallBack Function
const calculator = function(a,b,action){
let result = action(a,b);
console.log(result);
};
calculator(3, 4, add3);
callback(); 콜백 함수는 함수를 다른 함수의 인자로 전달해 실행되는 함수 === 매개변수로 전달된 함수를 호출
- 외부에서 원하는 동작을 사용자가 함수로 작성하여 사용할 수 있다.
- callback 내부에서 정의한 함수는 이름이 없어서 외부에선 사용할 수 없음 (익명 함수)
비동기 작동에서도 콜백함수가 사용된다고 한다. 근데 헷갈려서 async, await을 더 많이 쓰는 듯
콜백 함수 예제를 봐보자.
let fruits = ["Apple", "Banana", "Cherry"];
fruits.forEach(function (fruit, i, arr) {
console.log(`Index: ${i}, Fruit: ${fruit}, Array: ${arr}`);
});
function greet(name, callback) {
console.log(`Hello, ${name}!`);
callback();
}
function sayBye() {
console.log("Goodbye!");
}
greet("Alice", sayBye); // sayBye가 콜백 함수로 전달됨
- forEach 내부에 function() (함수 인자)를 호출했으니 이것도 콜백함수다.
- greet 에 sayBye를 콜백함수(함수인자)로 호출하면, Hello Alice 가 나온 뒤에 GoodBye가 콘솔창에 출력된다.
function displayA() {
console.log('A');
}
function displayB(callback) {
setTimeout(() => {
console.log('B');
callback();
}, 2000);
}
function displayC() {
console.log('C');
}
displayA();
displayB(displayC);
어떻게 출력되게요 ? ㅎ
메서드의 속성 사용 : this
<script>
let obj = {
place: 'Mars',
mars: (person) => alert(`${person} is on ${this.place}!`)};
obj.mars('Elon Musk');
</script>
this는 어디서 사용하냐에 따라 가리키는 객체가 달라진다.
- 화살표 함수(=>)의 this는 자신만의 this를 가지지 않는다
=== 함수가 실행될 때의 상위 스코프(글로벌 객체 또는 undefined)를 가리킨다.
객체의 리터럴{} 내부에서 this는 전역 스코에서 실행되므로 window(브라우저) 또는 Node.js를 가리킬 수 있다. 전역에서 정의된 place가 없으므로 undefined가 나온다.
• 따라서 this.place는 undefined가 되어 오류가 발생한다.
class Planet {
constructor() {
this.place = 'Mars';
}
mars(person) {
alert(`${person} is on ${this.place}!`);
};
};
let obj = new Planet();
obj.mars('Elon Musk');
클래스로 변환하면 this가 정상적으로 동작한다. 클래스 내부의 this는 현재 생성된 인스턴스를 가리키기 때문!!
사용자 상호작용 예제
버튼을 클릭하면 리스트가 나타났다 사라지도록 해보자. 여기서 핵심은 스르륵~ 이다.
/* 내일 해야지 */
버튼을 클릭하면 선택된 값을 전달하도록 해보자.
<html>
<head>
<script>
document.getElementbyId('btn').addEventListenr('click', function(){
const checkedFoods = document.querySelectorAll("input[name='food']:checked");
const checkedValues = Array.from(checkedFoods).map((input) => input.value);
console.log(selectedValues);
});
</script>
</head>
<body>
<form>
<div>
좋아하는 음식은?
<label><input type="checkbox" name="food" value="라면" />
라면</label>
<label><input type="checkbox" name="food" value="만두" />
만두</label>
<label><input type="checkbox" name="food" value="불고기" />
불고기</label>
<input id="btn" type="button" value="전송" />
</div>
</form>
</body>
</html>
- document는 웹 페이지의 DOM(document object model)로 js에서 HTML의 요소를 조작할 때 사용한다.
- fragment라는 빈 객체에 추가해서 한 번에 HTML에 추가하면 성능 최적화가 가능하다.
- 선택자를 고를 때 input[name="food"] 를 이용한다. 그 값을 선택해야 할 때는 아래와 같이 {객체명}[name = ' '].value로 접근
- 배열을 다룰 때 map(input => input.value) 로 배열 구조를 변환하지 않고 값만 변경할 수 있도록 한다.
document.getElementById('btn').addEventListener('click', function(){
const name = document.querySelector("input[name='name']").value;
console.log(name);
});
'KB_ITs_Your_Life_6th > HTML_CSS_JS' 카테고리의 다른 글
비동기 처리 (0) | 2025.03.18 |
---|---|
티스토리 스킨 수정하기 (0) | 2025.03.12 |
HTML 기본 구조 - 태그 (1) | 2025.03.11 |