NCP 에서 신규 서버를 생성하면 AWS 와는 다르게 root 계정과 패스워드를 발급해 줍니다. 해당 계정정보를 잘 보관한 후 실제 사용할 계정을 생성해서 서버를 관리하게 됩니다. 1. 우선 ubunbu 에서 신규 계정을 생성 합니다. # adduser namsan cs namsan 이라는 계정을 생성하고 패스워드를 설정하였습니다. 2. 신규 생성된 계정으로 전환 후 명령어를 실행해 봅니다. su 명령어를 통해 신규 생성 계정으로 전환 합니다. # su namsan cs sudo 명령어를 실행해 보겠습니다. # sudo date cs “namsan is not in the sudoers file. This incident will be reported.” cs sudoers file 에 해당계정이 포함 되어있지 않다는 메시지가 출력됩니다. /etc/sudoers 에 신규 계정이 추가 되어 있지 않아 표출되는 에러 메시지 입니다. 다시 root 계정으로 전환하여 sudoers 파일을 수정해보겠습니다. su 명령어를 통해 다시 root 계정으로 전환 합니다. # su root cs 3. vi 명령어를 통해 /etc/sudoers 파일을 편집합니다. # vi /etc/sudoers cs # User privilege specification 항목에 아래와 같이 신규 생성된 계정 정보를 추가합니다. root ALL=(ALL:ALL) ALL namsan ALL=(ALL:ALL) ALL cs 이제 신규 생성된 사용자로 전환하여 sudo 명령어 실행 시 정상적으로 작동하는 것을 확인 할 수 있습니다.
안녕하세요. 남산돈가스 입니다. 오늘은 Spring Boot JPA를 이용하여 API 개발 시 간단하게 Pagination 와 Sorting을 처리할 수 있도록 도와주는 Pageable에 대해서 알아보려고 합니다. 웹 개발 시 Pagination 과 Sorting은 필수적이라 할 수 있지만, 실제 개별적으로 구현 시 번거로운 작업이 생기기 마련입니다. 또한 각 데이터베이스마다 페이징 쿼리가 다를 수 있다는 점에서 모든 요구조건을 만족하기 어려운 부분들이 존재하기 마련입니다. Spring Data JPA와 Pageable을 이용하면 이런 문제들을 아주 쉽게 해결할 수 있어 비즈니스 로직에 집중할 수 있게 도와줍니다. 우선 Pageable을 사용하여 얻을 수 있는 이점은 대표적으로 두 가지 입니다. 요건에 맞는 Pagination을 구현할 수 있다. 정렬이 필요한 데이터를 쉽게 Sorting 할 수 있다. 예제를 들어 설명하겠습니다. @Entity @Table (name= "post" ) @Getter public class Post extends Audity { @Id @GeneratedValue (strategy = GenerationType.IDENTITY) @Column (name= "id" ) private Long id; @Column (name= "title" ) private String title; @Column (length = 2000 , name= "content" ) private String content; @Column (length = 50 , name= "writer" ) private String writer; } 간단한 예제를 들기 위하여, "Post" 라는 Entity를 작성하였고, 예제를 위하여 약 20건
안녕하세요 명동 콜링입니다. 오늘은 Android에서 Model Class를 다룰 때 사용하는 Serializable 의 한 분류인 Parcelable에 대해 써보려고 합니다. 일단 Serializable이란 무엇인가, 영어의 뜻을 풀이하자면 '직렬화' 라고 얘기할 수 있는데 막연히 '직렬화' 라고 얘기하기엔 무슨 뜻인지 이해 하기 어렵습니다. 그래서 Android 시스템에서 동작하는 방식으로 이야기 하자면, A Activity에서 B Activity로 데이터를 전달할 때, 데이터를 묶어서 전달한다 라고 쉽게 풀이할 수 있습니다. 이해를 하는데 도움이 되도록 많이 함축된 문장이지만 이 안에는 "하나의 Class화 된 여러 데이터들이 순서대로 Byte형식으로 변환되어 A -> B로 전달된다." 는 식의 어려운 말 들이 포함되어 있기 때문에 패스를 하도록 하겠습니다. 여기까지 Serializable의 정의에 대해 간단히 알아봤고 이제는 본격적으로 이 글의 주제인 Parcelable에 대해 알아보도록 합시다. 일단 Parcel, '소포', '꾸러미' 라는 뜻을 가지고 있습니다. 이 단어의 뜻처럼 Android에서의 Parcel이라는 것도 "여러 데이터가 하나의 꾸러미(Class) 안에 담겨 있다." 라는 의미를 가지게 됩니다. 그래서 이 데이터 꾸러미가 A Activity에서 B Activity로 한꺼번에 전달되고 받아 볼 수 있도록 해 주는 것이 Parcelable의 의미가 되겠습니다. 그럼 이 Parcelable을 어떻게 사용하는 지 보도록 하겠습니다. 1. 클래스 정의 먼저 Data(Model) Class를 하나 만들어 보도록 합니다. public class ProfileCls { String name ; int age ; String gender ; }
먼저 SPA (Single Page Application)가 필요한 이유부터 살펴 보면, 단일 페이지 응용 프로그램은 수년간 사용되어 왔지만 일반적인 웹상에서는 찾아보기가 어렵습니다. 그렇지만, 앞으로 많은 웹사이트가 SPA로 개발될 아주 좋은 계기가 있습니다. SPA는 SaaS (Software as a Service) 플랫폼 또는 인터넷 서비스의 상황판 같은 대시보드 부분을 구축하고 기업의 데이터 기반 및 폼 기반 애플리케이션을 구축하기 위해 지난 몇 년 동안 많이 채택되어 왔으며, 추후에 개발될 웹 어플리케이션에서 우선적으로 고려될 것으로 예상되어 집니다. 그러면 Angular2(이하 Angular)로 개발하는 어플리케이션은 SPA로 개발해야 하는 건가요? 처음 Angular2를 접하게 되면 당연히 SPA로 개발 된다고 생각할수 있지만, 다르게 구축할 수도 있습니다. SPA는 단순하게 다음과 같이 정의해 볼 수 있습니다. 1개의 페이지만 있는 어플리케이션 실제 SPA 확인해보고 싶으시면 남도패스 사이트(https://m.namdopass.co.kr)를 방문해보면 알수 있습니다. 하단의 홈/지역별/로그인/남도패스 각각 메뉴를 이동해 보면 실제 하나의 페이지에서 내용만 바뀌는 것을 확인할 수 있습니다. 웹사이트를 둘러보기를 시작하면 페이지가 완전히 다시 로드되지 않는다는 것을 알 수 있습니다. 화면 전환 시마다 REST API 서버를 통해 데이터를 바인딩하고 있습니다. 그럼 SPA 구축 할 때의 장점은 무엇이며 어떻게 작동하는지 살펴보면 남도패스 사이트(https://m.namdopass.co.kr) 첫화면을 소스보기 해보면 다운로드되는 페이지는 첫 번째 요청입니다. 즉, 애플리케이션의 문자 그대로 단일 페이지입니다. 한 가지만 주목하면 이 페이지는 거의 비어 있으며 태그를 제외하고는 많은 것이 없습니다. 이 소스는 실제 Amazon S3 버킷의 정적 호스팅을 통해 전송됩니다. 단일 페이
HTML 으로 코딩된 테이블, 그림, 글자 등 다양한 요소가 섞여 있는 문서를 PDF 또는 A4용지로 출력했을 때 각 요소가 중간에 끊어지지 않고 보기좋게 출력할 수 있는 방법이 있는지 알아보았습니다. 방법은 생각보다 간단한데요, CSS의 @media print 속성을 이용하면 가능했습니다. @media print 는 인쇄할 때만 적용되는 것으로 다양한 기능이 있지만 바쁜 분들을 위해 핵심 CSS만 보면, 이 두 개만 알아도 충분한 것 같습니다. @media print { .page-divide { page-break-after: always; } } .page-divide 라는 클래스를 준 요소 뒤에는 언제나 페이지를 분할하도록 하는 CSS 입니다. table, figure, .sector { page-break-inside: avoid; } table, figure 또는 sector 라고 클래스를 지정해 준 요소는 페이지 때문에 끊기지 않도록 처리해주는 구문입니다. 이렇게 지정한 요소가 만약 A4 용지 단위로 프린트물이 나올 때 중간에 걸리게 되면 통째로 그 다음 장으로 넘어가게 처리해줍니다. 간단 예제 소스보기 <style> @media print { .page-divide { page-break-after: always; } .no-print-page { display: none; //작업의 편리함을 위해 넣은 페이지 구분선. 프린트 시에는 보이지 않음 } } h1, h2, h3, h4, h5 { page-break-after: avoid; } table, figure, .sector { page-break-inside: avoid; } .table { width: 100%;
댓글
댓글 쓰기