728x90
반응형

깔끔해서 마음에 들었던 Square 스킨.

 

전반적으로 만족하는 편이었지만 폰트 사이즈가 정말 작았다.

홈 상단에 전체 글 목록이 길게 떨어져 있는 것도 아쉬웠고

맨위로 맨아래로 가는 단축버튼도 있었으면 좋겠다고 생각했다.

 

그래서! 개발자답게(?) html과 css를 직접 편집하기로 마음먹고

어제 새벽에 급 스킨 커스텀을 하게 되었다.

 

 

1. 폰트 사이즈 및 폰트 변경

 

- 폰트 사이즈와 폰트 변경을 위해 CSS 내 상단 import 행을 주석처리하고

textarea font-family의 앞쪽 기존 폰트를 애플고딕 폰트로 수정했다. 

 

 

2. 홈 상단 전체글보기 개수 조절 및 페이징처리

 

- 전체글보기 개수는 스킨 편집 첫 화면에서

홈 화면 글 수 5개로 손쉽게 수정이 가능했다.

 

- 페이징처리도 사실 크게 어렵지 않았다.

페이지 하단에 자체적으로 존재하는 페이징부분 코드를 복사해

위 전체 글 보기 영역에 붙여넣었다.

코드 삽입 위치는 주의해서 넣어야 한다.

 

상단 페이징 코드 :

<!-- 상단 페이징 -->
<div id="paging">
<s_paging>
    <a  class="prev ">
        PREV
        <span class="screen_out">
            이전
        </span>
    </a>
    <s_paging_rep><a class="numbox" ></a></s_paging_rep>
    <a  class="next ">
        NEXT
        <span class="screen_out">
            다음
        </span>
    </a>
</s_paging>
</div>
<!-- 상단 페이징 끝 -->

 

 

3. 업데이트 예정(위 아래 바로가기 버튼)

 

 

 

스킨 커스텀 결과는 대만족~!

스킨 하나 만들어내버려?

 

 

728x90
반응형

'Daily > etc' 카테고리의 다른 글

[일상] 신입 개발자 첫 출근  (1) 2023.11.20
[후기] 김영한 강사님의 인생 - 1부  (2) 2023.10.11
[일상] 사이트 노출 기념  (0) 2023.10.10
[Developer] 최고 기술 경영자 CTO  (0) 2023.10.03
728x90
반응형

MySQL과 Nodejs 연동과정에서 에러가 발생했다.

원인은 클라이언트 인증부분을 제대로 인식하지 못해서? 인 것 같다.

 

 

 

에러 내용 :

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client...

cmd) 에러 내용

 

js 파일 내용

 

해결 : 

ALTER USER '[MYSQL 아이디]'@'[MYSQL 주소]' IDENTIFIED WITH mysql_native_password BY '[MYSQL 비밀번호]';

 

실제 내 컴퓨터 기준으로 작성한 코드 :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456789';

 

cmd에서 mysql 진입 후 작성해도 되고, mysql에서 직접 작성해도 된다.

(나는 mysql에서 직접 작성 후 실행했다.)

 

cmd) node.js 실행 결과

728x90
반응형
728x90
반응형

코딩테스트를 풀다 보면, 처음에 길게 작성했던 코드를 다시 봤을 때
정말 엄청나게 간결한 코드로 수정이 가능한 경우가 많았다.
오늘 이같은 상황을 또 한 번 마주하게 되어 기록을 남겨본다.
 
 
첫 풀이 코드

class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[(num_list.length - n) + 1];
        
        for(int i=0,j=n-1; i<answer.length; i++, j++) {
            answer[i] = num_list[j];
        }
        return answer;
    }
}

 
stream 사용 수정 코드

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list, int n) {
        return Arrays.stream(num_list, n - 1, num_list.length).toArray();
    }
}

 
배열 선언과 for문을 사용했던 코드에서 stream을 사용하니
return 한 줄로 간결하게 작성이 가능하다.
 
마법같은 코드 간소화를 통해 stream 공부도 꾸준히 해야함을 느꼈다.
기존에 1회 정독했었던 자바의 정석, 이것이 자바다 책 stream부분을 다시 읽고
유튜브나 인프런 사이트에서 자바 stream 강의를 다시 한 번 공부해야겠다.

728x90
반응형
728x90
반응형

스프링 이니셜라이저를 사용하여 프로젝트를 생성 할 때 궁금했던 부분을 정리해보고자 한다.

 

 

나같은 경우 STS툴 썼을 땐 메이븐(Maven), IntelliJ툴 썼을 땐 그레들(Gradle) 둘 다 써본 입장으로

메이븐이 기본 세팅 부분이나 의존성 추가하는 부분에 있어서 꽤 편리했다고 생각한다!

지금도 개인 프로젝트는 그레들로 만들고 있지만, 둘 다 익숙해지기 위해서

편향적으로 선택해 작업하기 보다는 골고루 익혀두면 실무에서도 유용할 것 같아

다음번에는 오랜만에 메이븐으로 프로젝트 도전해 보는 걸로 :)

 

spring initializr

 

Gradle과 Maven은 주요 빌드 도구로, Java와 다른 JVM 언어를 사용하여 프로젝트를 관리하고 빌드하는 데 사용된다.

다음은 Gradle과 Maven의 주요 특징과 차이점이다.

Maven
- XML 기반 설정: Maven은 프로젝트 구조와 라이프사이클 관리를 위해 XML 기반의 설정 파일(pom.xml)을 사용한다. 이 설정 파일은 프로젝트 정보, 의존성, 빌드 설정 및 플러그인 설정을 포함한다.
- 약속된 라이프사이클: Maven은 표준 빌드 라이프사이클을 정의하고, 각 라이프사이클에 연결된 특정 명령어를 제공한다. 이를 통해 빌드, 패키징, 테스트, 배포 등의 작업을 간단하게 수행할 수 있다.
- 중앙 저장소: Maven은 중앙 저장소를 통해 프로젝트 의존성을 관리하며, 필요한 라이브러리 및 아티팩트를 다운로드한다.
- 제한된 스크립팅 언어: Maven은 XML 기반으로 설정되어 있어서 복잡한 빌드 작업을 수행하기 위해 스크립팅 언어를 사용하기 어렵다.

Gradle
- Groovy 또는 Kotlin 기반 DSL: Gradle은 Groovy 또는 Kotlin 기반의 스크립트로 빌드 스크립트를 작성한다. 이를 통해 빌드 스크립트를 보다 간결하게 작성할 수 있다.
- 라이프사이클 기반이 아닌 작업 지향: Gradle은 태스크(Task)라는 개념을 사용하여 빌드 작업을 정의한다. 이는 더 세밀한 커스터마이징을 가능하게 한다.
- 용도에 맞게 다양한 플러그인: Gradle은 다양한 플러그인을 지원하며, Java, Android, 웹 개발, 프로젝트 관리 등 다양한 용도의 프로젝트에 대응할 수 있다.
- 멀티 프로젝트 빌드: Gradle은 멀티 프로젝트 구성을 지원하고 각 프로젝트 간에 의존성을 관리할 수 있다.
- 빌드 캐싱: Gradle은 빌드 캐싱을 지원하여 중복된 작업을 최소화하고 빌드 속도를 향상시킬 수 있다.

 


빌드 도구를 선택할 때 고려사항:
- 프로젝트 요구사항:

프로젝트의 규모, 복잡성 및 요구사항에 따라 Gradle 또는 Maven을 선택

Maven은 단순한 프로젝트 빌드 및 종속성 관리에 적합

Gradle은 더 복잡한 프로젝트 및 커스터마이징된 빌드 스크립트에 적합

- 언어 선호도:

Groovy 또는 Kotlin이 편하다 > Gradle

XML 기반 설정이 익숙하다 > Maven 선택 추천


코틀린(Kotlin)그루비(Groovy)는 둘 다 자바 가상 머신(JVM) 위에서 동작하는 프로그래밍 언어이다.

그러나 이 두 언어 간에는 몇 가지 중요한 차이점이 있다.

1. 컴파일러와 정적 타입 검사
- 코틀린은 정적 타입 검사(static type checking)를 갖는 언어로, 컴파일러가 코드를 미리 분석하여 타입 불일치 오류를 발견할 수 있다. 이로 인해 런타임에 발생하는 많은 예외를 방지할 수 있다.
- 그루비는 동적 타입 언어(dynamic typing)로, 변수의 타입을 런타임에 결정한다. 따라서 컴파일러는 타입 오류를 잡을 수 없고, 런타임 오류가 발생할 가능성이 높다.

 

2. 선택한 언어의 목적
- 코틀린은 주로 안드로이드 앱 개발 및 서버 측 개발을 위한 현대적이고 정적 타입의 언어로 개발되었다.
- 그루비는 스크립트 언어로 시작하여 빌드 스크립트, 테스트 스크립트, DSL(Domain-Specific Language) 개발 및 간단한 웹 애플리케이션을 작성하기 위한 목적으로 사용된다.

 

3. 표현력
- 그루비는 매우 간결하고 표현력이 뛰어난 언어로, 코드를 더 읽기 쉽게 만들 수 있다. 그루비는 동적인 언어로서 매우 유연한 문법을 갖고 있다.
- 코틀린도 간결한 문법을 갖고 있지만, 정적 타입 검사로 코드 안정성을 높인다.

 

4. 자바 호환성
- 코틀린은 자바와 완벽하게 상호 운용 가능하도록 설계되었다. 따라서 기존 자바 코드와의 통합이 매우 쉽다.
- 그루비도 자바와의 호환성이 높지만, 타입 안정성 측면에서 코틀린에 비해 제한적이다.

 

5. 성능
- 코틀린은 정적 타입 검사로 인해 실행 시간에 불필요한 타입 검사를 줄이고 최적화할 수 있어서 실행 속도가 빠를 수 있다.
- 그루비는 동적 타입 언어이기 때문에 실행 시간에 더 많은 타입 검사와 오버헤드가 발생할 수 있다.

 

따라서 코틀린과 그루비는 각각의 사용 사례와 선호하는 프로그래밍 스타일에 따라 선택해야 한다.

코틀린은 안정성과 성능을 중요하게 생각하는 프로젝트에 적합하며, 그루비는 스크립트 및 빠른 프로토타이핑을 위한 작업에 적합하다.

728x90
반응형
728x90
반응형

StringBuilder & StringJoiner

둘 다 문자열을 효율적으로 처리하고 연결하는 데 사용되는 클래스이다.

각각의 목적과 사용법에 약간의 차이가 존재한다.

 


StringBuilder

StringBuilder는 단일 스레드 환경에서 문자열을 빠르게 수정하고 연결하기 위해 사용된다.
StringBuilder 객체는 가변이며, 내부적으로 버퍼를 사용하여 문자열을 구성한다.

이로 인해 문자열을 변경할 때마다 새로운 문자열 객체를 생성하지 않고도 문자열을 효율적으로 처리할 수 있다.
StringBuilder의 주요 메서드로는 append, insert, delete, replace 등이 있다.

class Solution {
    public String solution(String[] arr) {
        StringBuilder answer = new StringBuilder();
        for(String s : arr) {
            answer.append(s);
        }
        return answer.toString();
    }
}

 

 

StringJoiner
StringJoiner는 주로 문자열을 결합하기 위한 작업에 사용된다.
주로 문자열 컬렉션을 연결할 때 사용하며, 요소 간의 구분자를 지정할 수 있다.
예를 들어, 문자열 배열을 연결하고 각 요소를 쉼표로 구분하려면 StringJoiner를 사용할 수 있다.
StringJoiner의 주요 메서드로는 add, setEmptyValue, toString 등이 있으며, 요소를 추가하고 문자열로 변환하는 데 사용된다.

import java.util.StringJoiner;

class Solution {
    public String solution(String[] arr) {
        StringJoiner joiner = new StringJoiner("");
        for (String s : arr) {
            joiner.add(s);	// Java 8 이상에서 'String.join' 메서드 사용 가능
        }
        return joiner.toString();
    }
}

 

 

간단히 말하면, StringBuilder는 문자열을 구성하고 수정하는 데 사용되는 범용 클래스이며, 

StringJoiner는 문자열을 결합하고 요소 간에 구분자를 추가하는 데 특화된 클래스이다다.

따라서 사용 목적에 따라 두 클래스 중 하나를 선택하면 된다.

728x90
반응형

'Coding > Study' 카테고리의 다른 글

[IT 용어] API (Application Programming Interface)  (0) 2023.10.14
[JAVA] 람다식 Lambda  (0) 2023.10.05
[JSP] JSP 강의평가 웹 사이트 개발하기 완료  (0) 2023.10.02
[GitHub] 깃, 깃허브  (0) 2023.09.28
[Kotlin] 코틀린 맛보기  (0) 2023.09.22

+ Recent posts