반응형

# 1. Language 56

웹페이지(사이트)가 검색되지 않도록 하는 방법

아래 사이트를 참고하여 robots 메타 태그를 사용하여 검색 결과로 노출되지 않는 웹사이트를 만들었다. 사이트가 검색엔진의 검색결과에 표시되지 않도록 하는 올바른 방법 사이트가 검색엔진에 완전히 노출되지 않도록 하기 위해 robots.txt 파일을 사용하여 구글, 네이버, 빙 등의 검색엔진에서 사이트를 인덱싱하지 않도록 하는 경우가 있습니다. 이 경우 어떤 식으로 www.thewordcracker.com

모바일 환경에서 화면 확대/축소(Pinch Zoom) 비활성 하기

웹페이지를 모바일 환경에서 볼 때, 사용자가 손가락을 사용하여 화면을 확대 혹은 축소를 하지 못하도록 만들어보자. [참고] Pinch Zoom 사용자가 직접 두 손가락을 사용해 화면을 확대 혹은 축소를 하는 경우 Android 우선 삼성폰. 즉, Android환경에서는 다음의 코드로 손쉽게 확대 및 축소 기능을 비활성화할 수 있다. (기존의 viewport 메타태크에 user-scalable=no만 추가한 형태이다.) iOS 그런데 아이폰. 즉, iOS에서는 위의 태그로는 줌을 할 수 없도록 만드는 것이 불가능하다. 왜냐하면 언제나 줌을 허용하도록 iOS측에서 임의로 정책을 바꿨기 때문이다. 따라서 StackOverFlow 사이트에 검색하여 다음의 코드를 style태그 안에 붙여줬더니, 비활성되었다. b..

CSS 포지션/배치 연습하는 웹사이트

Flexbox Froggy CSS 포지션/배치를 연습하기에 좋은 웹사이트 Flexbox Froggy A game for learning CSS flexbox flexboxfroggy.com 회사에서 갑자기 프론트단을 조금 만져야하는 상황에 부딪히게되었는데 정말 프론트가 하나도 기억나지 않아서 절망했는데 많은 도움을 받은 사이트다! 하다가 정답을 모르겠다면 아래의 웹사이트에서 answer을 참고하며 공부하면 된다. 플렉스 개구리 공략집( Flexbox Froggy Solutions ) Front-End 개발을 해보신 분이라면 한번쯤은 들어보셨을 수도 있는 (제가 푼) 플렉스 개구리(https://flexboxfroggy.com/#ko)의 공략집 입니다. 공략을 보지 않고도 충분히 해결할 수 있지만, 해답이..

ubuntu EC2 서버 mysql 연결 에러 # Can't connect to local mysql server through soket '/var/run/mysqld/mysqld.sock' (2)

Ubuntu에서 나의 서버에 접속해(로컬X) $ sudo mysql 해주었을 때 ERROR 2002 (HY000): Can't connect to local mysql server through soket '/var/run/mysqld/mysqld.sock' (2) 의 에러가 떴다. 그리고 Workbench에서는 아래와 같은 에러가 떴다. Cannot Connect to Database Server Your connection attempt failed for user 'root' to the MySQL server at x5x103.x.ssafy.io:3306: Unable to connect to localhost 그래서 Ubuntu 환경에서 아래와 같이 mysql을 일단 멈추고 다시 시작해보았다. ..

JPA # 저장할 때와 수정할 때의 동작과정

저장할때 JPA 의 경우 트랜잭션 실행 단위안에서 동작한다. 엔티티 매니저에 의해서 생성된 객체를 영속성 컨텍스트에 등록한다. 이때 해당 객체는 영속상태가 되어 1차 캐시에 저장된다. 또한 insert 쿼리는 쓰기지연 SQL저장소에 저장이된다. 트랜잭션이 끝나는 시점에 쓰기 지연 SQL 저장소에 있는 쿼리문들이 flush가 되고 트랜잭션 커밋이 된다. 수정할때 우선 수정할 엔티티를 찾는다. 이때 1차 캐시에 올라가고 영속상태가 된다. 즉 영속성 컨텍스트가 관리하는 상태가 된다. 그리고 set~~()으로 데이터를 수정한다. 이때 JPA는 데이터베이스 트랜잭션 커밋 시점에 내부적으로 flush가 되는데 영속성 컨텍스트 기능중 변경감지 기능이 있어서 이 것이 현재 1차 캐시의 엔티티와 최소 1차 캐시에 등록된..

DTO와 VO

DTO Data Transfer Object 계층간 데이터 교환을 위한 객체(Java Beans)이다. 즉, 데이터를 객체로 변환시킨다. C#과는 달리 Java에서는 프로퍼티를 문법적으로 제공해주지 않기 때문에 getter/setter에서 get과 set 다음에 나오는 단어가 프로퍼티라고 약속해주었다. 즉, getter/setter에 의해 만들어진 것에 의해 프로퍼티가 결정된다는 말이다. 자바에서는 다양한 프레임워크에서 데이터 자동화 처리를 위해 리플렉션 기법을 사용한다. 그런데 이 데이터 자동화 처리에서 가장 중요한 것이 표준규격이다. 즉, DTO에서 프로퍼티가 name, age면 여기에 키값으로 들어온 데이터는 리플렉션에 의해 setter를 실행시켜 데이터를 넣을 수 있는 것이다. 그런데 setter..

Boolean과 boolean의 차이 = 참조타입과 원시타입의 차이

우선, Boolean과 boolean의 차이를 알아보자. Boolean (참조타입; reference type) true, false, null 값을 가진다. ∴ Null 체크를 필요로할 때 참조형을 사용하자. boolean (원시타입; primitive type) true, false 값을 가진다. ∴ Null 체크가 불필요한 경우 자료형을 사용하자. (Unboxing을 해줄 필요가 없기 때문에 시간을 단축시킬 수 있다.) 참조타입과 원시타입의 차이 자료형 : int, float, double, char, boolean 참조형 : Integer, Float, Double, Boolean 자료형을 객체로 감싼 것이 참조형이다. 원시타입은 null을 담을 수 없는 반면에 참조 타입은 null을 입력값으로 ..

SpringBoot # Controller-Service-DAO-mapper.xml

Mybatis의 기능 DB 커넥션을 맺고 끝는 것을 자동화해줌. SQL 쿼리를 실행 및 결과를 DTO에 알아서 세팅해줌. mapper.xml DAO의 요청에 따라 사용할 SQL 쿼리문을 작성하는 곳. .xml에 정의된 이름과 DAO인터페이스에 정의된 메소드 이름이 같은 것 끼리 매핑된다. DAO(Data Access Object) 실제로 DB에 접근해 데이터를 조회 및 조작하고 그 결과값을 리턴해 준다. .xml에 정의된 이름과 DAO인터페이스에 정의된 메소드 이름이 같은 것 끼리 매핑된다. DB에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용. DTO(Data Transfer Object). Request와 Reponse가 일어날 때 DTO의 틀에 맞게 데이터를 담아 Service나 Cont..

JPA의 Entity와 Repository

Entity 데이터 베이스에 저장하기 위해 정의한 클래스. Domain이라 생각하면 된다. 유저가 직접 정의한 클래스다. RDBMS의 테이블을 객체화시킨 것과 같다. 따라서 테이블의 이름과 컬럼 정보들을 가지고 있다. @Id PK값으로 두려는 변수를 선언. @GeneratedValue 어노테이션을 통해 Id값을 어떻게 생성할지에 대해 설정할 수 있다. @Table 별도 이름을 가진 DB 테이블과 매핑하며, @Table(name=" ")와 같은 방식으로 사용한다. 풀어서 설명하자면, 기본적으로 @Entity로 선언된 클래스 이름은 실제 DB의 테이블 명과 일치하는 것을 매핑함. 따라서 @Entity의 클래스 이름과 DB 테이블 명이 다른 경우에 매핑할 때 사용한다. @Column @Column(name="..

자주 사용되는 Lombok 어노테이션

Lombok이란? VO, DTO, Entity 등을 쉽게 작성할 수 있도록 도와주는 라이브러리. 코드를 깔끔하게 작성할 수 있어 가독성이 좋아진다. 하지만 제대로 알지 못한채 사용하게 되면 예상치 못한 문제가 발생할 수 있다. @Getter @Setter 자동으로 get, set 메소드를 생성해준다. 기본적으로 public으로 생성된다. AccessLevel 옵션을 사용하여 접근권한 설정을 달리해줄 수 있다. @NoArgsConstructor 파라미터가 없는 기본 생성자를 만들어준다. 이 역시 AccessLevel 옵션을 사용하여 접근권한 설정을 달리해줄 수 있다. 이 때 PROTECTED로 설정하여 안전성을 보장해주자. 예) access = AccessLevel.PROTECTED @Tostring to..

반응형