ROUTINE
SELF-STUDY
1. 자바의 정석 (30분)
printf()
: 지시자를 통해 변수의 값을 여러가지 형식으로 변환하여 출력%d | 10진(decimal) 정수의 형식으로 출력 |
---|---|
%x | 16진(hexa-decimal) 정수의 형식으로 출력 |
%f | 소수점(floating-point)의 형식으로 출력 |
%c | 문자(character)로 출력 |
%s | 문자열(string)로 출력 |
%n | 줄바꿈 |
Integer.parseInt()
: 문자열을 int타입의 정수로 변환하는 메서드
타입 간의 변환방법
i. 숫자→문자 : 순자에 ‘0’을 더한다
(char)(3 + ‘0’) → ‘3’
ii. 문자→숫자 : 문자에서 ‘0’을 뺀다
‘3’ - ‘0’ → 3
iii. 숫자→문자열 : 숫자에 빈 문자열(””)을 더한다
3 + “” → “3”
vi. 문자열→숫자 : Integer.parselnt() 또는 Double.parseDouble()을 사용한다
Integer.parseInt(”3”) → 3
Double.parseDouble(”3.14”) → 3.14
v. 문자열→문자 : charAt(0)을 사용한다
“3”.charAt(0) → ‘3’
vi. 문자→문자열 : 빈 문자열(””)을 더한다
‘3’ + “” → “3”
2. 강의
3. 모각코 : 2일차
4. 알고리즘 1문제
ord()
함수: 특정한 한 문자를 아스키 코드 값으로 변환해 주는 함수chr()
함수: 아스키 코드 값을 문자로 변환해 주는 함수 (10진수, 16진수 사용 가능)def find_alphabet_occurrence_array(string):
alphabet_occurrence_array = [0] * 26
for char in string: # 문장의 문자들 인식
if not char.isalpha(): # 해당 문자들이 알파벳인지 판단
continue # 알파벳 아닌 경우, 다음 인덱스로 넘김
arr_index = ord(char) - ord("a") # a=0으로 값 지정 (ASCII 참고)
alphabet_occurrence_array[arr_index] += 1
# arr_index를 가진 alphabet_occurrence_array의 값을 각각 확인
return alphabet_occurrence_array
print(find_alphabet_occurrence_array("hello my name is sparta"))
5. 이것이 취업을 위한 코딩이다 (1시간)
PROJECT : 아나바다(ANABADA)
1. 오늘 한 일
2. 문제점 및 해결방법
문제 1) h2-console 접근 불가, css 적용 불가
- @EnableWebSecurity
: Spring Security 지원을 가능하게 함.
얘 때문이었음.
해결 1) web.ignoring().antMatchers("/h2-console/**");
(설정한 리소스의 접근을 인증절차 없이 허용한다는 의미)
- 아예 login과 signup 페이지만 작동되는 걸 보고 WebSecurityConfig
클래스에서 유일하게 두 페이지만 입력했던 게 생각났다.
- 혹시 몰라 h2-console 접속 안 될 때를 검색해서 .ignoring().antMatchers()
를 사용해줬더니 해결이 됐다 (css도 .antMatchers("/css/**").permitAll()
사용).
이렇게 따로 설정해주지 않으면 개미 한 마리도 허용 안 되더라. (그래서 ant인가)
3. 느낀점
기능을 어떻게 구현해야 될지 모르는 상황일 때, 방법을 다 알고나서 구현하려고 하지 말자. 물론 중요하지만, 지금처럼 엄청난 기술을 필요로 하는 게 아닌데 시간은 촉박한 상황에선 일단 검색 후 복붙하고 그 뒤에 찬찬히 뜯어보자.
오늘같이 공부 먼저 하려 들면 더 늘어진다. 공부는 아무리 해도 부족하게 느껴지지만, 구현은 당장 눈에 결과물이 보여야 하기 때문에 아무래도 상대적으로 더 빠릿하게 집중할 수 있을 것 같다.
열심히 코딩을 짜다 아차했다. API 설계를 안 했다. 언니한테 말을 했는데, 반응이 없었다. 오늘 git bash를 사용해서 github에 커밋 올리는 방법에 익숙해지려고 집중하는 것 같아서 일단은 기본적인 뼈대들을 잡은 후에 다시 말해보려고 한다.
TODAY'S MEMO
UserRole Enum
: 일반사용자와 관리자를 구분
.ignoring() .antMatchers(””);
와 .ignoringAntMatchers("");
차이가 뭘까? 그리고 .antMatchers("").permitAll();
은 또 뭐가 다른 걸까?
csrf
: 해커들의 공격 방법 중 하나.
사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법. (그런데 왜 무시하지?)
오늘 본격적으로 뼈대를 잡고 기능들을 구현하면서, 결심했던 몇 가지 루틴을 잠시 제외하고 간소화시킬 필요성을 느꼈다.
코테 공부와 프로젝트 사이에서 밸런스를 고민했지만, 지금 보니 내가 이력서에 적은 프로젝트조차 제대로 설명하지 못하고, 심지어 기술했던 기능들을 구현하지 못하는 일도 생겼다.
코테 공부를 아예 놓겠다는 건 아니고, 조급하긴 해도 최소 1문제는 꾸준히 붙들고 가되 지금은 프로젝트에 적용하는 기능들에 대한 구현과 지식을 더 단단히 잡을 때라고 판단했다.
✔ 스파르타 스프링 복습 강의 쭉 돌리기(아침)
✔ 개인회원 / 기업회원 구분하기(오전)
✔ 간소화 : 자바의 정석, 모각코, 이취코 독서 시간