728x90
반응형

새로 받은 Mac에 Java 설치

 

먼저  Homebrew를 설치한다.

 

1. Java (OpenJDK) 설치

$ brew install cask
$ brew tap adoptopenjdk/openjdk

- OpenJDK8 설치

$ brew install --cask adoptopenjdk8

 

2. Java 버전  변경

- 설치된 JDK 버전 확인

$ /usr/libexec/java_home -V

- 변경

# 1.8 버전으로 변경
$ export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

# 11 버전으로 변경
$ export JAVA_HOME=$(/usr/libexec/java_home -v 11)

 

728x90
반응형
728x90
반응형

10분이라도 시간을 내어 내가 좋아하는 회사 선배님께서 추천해주신 책을 읽고 있다.

'이펙티브 엔지니어'라는 책인데 개발자의 인생을 바꾸는 효율성의 법칙을 중심으로 여러 가지 개념, 자세(?) 등을 설명해준다.

https://book.interpark.com/product/BookDisplay.do?_method=Detail&sc.shopNo=0000400000&dispNo=&sc.prdNo=354815916&sc.saNo=002001023&bkid1=category&bkid2=ct028023&bkid3=c1&bkid4=001 

 

싸니까 믿으니까 인터파크도서

조인석(Elastic 수석 기술지원 엔지니어 & 솔루션 테크 리드) 이 책을 접한 여러분은 행운입니다. 이 책으로 지금 여러분이 속한 조직의 부족한 부분을 확인하고, 보완하기 위한 구체적인 솔루션을

book.interpark.com

개인적으로는 동기부여가 정말 많이 되는 책이라서, 이제 막 개발자로 일을 시작하는 신입 개발자분들부터 팀 리더급인 분들에게까지 추천하고 싶은 책이다.

아직 읽어야 할 페이지가 많이 남아서 더욱 기대된다. 

 

레버리지

단위 시간당 생산하는 가치라는 개념으로 레버리지를 소개한다. 

지금 하는 일이 현재 목표를 이루기 위해 가장 높은 레버리지를 내는가? 라는 질문을 꾸준히 하며 레버리지가 높은 일들을 우선적으로 함으로써 생산성과 효율성을 높여야 한다.


먹고 놀고 일하느냐 바쁜 현대사회, 정말 단 10분 시간 내어 보거나 지하철(탈 일이 거의 없지만,,)에서 틈틈이 읽고 있다.

읽다가 '어맛, 이건 꼭 기억하고 싶어!' 하는 내용이 있어 책상에 앉은 김에 오늘은 독서 대신 기록을 하려고 한다.

 

근무 시간을 활용해서 새로운 기술을 발전시켜라

회사에서 해야 할 일이 너무 많아 부담을 느낄 수 있는데, 20% 시간 동안, 즉 일주일 중 하루에 해당하는 시간을 회사를 더 발전시킬 사이드 프로젝트에 씀으로써 장기적으로 개발자의 성장과 회사의 발전에 투자하는 것이 좋다고 한다.

직장에서 이용할 수 있는 자원을 활용하는 10가지 방법을 제안하는데

  1. 회사에서 가장 뛰어난 개발자가 작성한 코어 추상화 코드를 연구하라
    • 대규모 코드 베이스의 초창기 개발자가 작성한 코어 라이브러리 코드를 읽어보고
    • 어떤 점을 배울 수 있는지 고민하며, 이전 버전 코드에서 재작성된 코드를 중점적으로 이해해라
  2. 더 많은 코드를 작성하라
    • 프로그래밍 실력이 부족하다고 느낀다면 회의나 제품 설계에 쓰는 시간을 줄이고 코드를 만들고 작성하는 시간을 늘려라
    • 기억에서 지식을 불러올 때 더 잘 익힐 수 있다.
    • 능동적으로 프로그래밍해라.
    • 프로그래밍 기술을 발전시키는 활동은 레버리지가 높은 활동이다.
  3. 내부에서 제공되는 기술 교육 자로를 꼼꼼히 살펴보라
    • 설계 문서나 기술 강연을 학습에 활용하라
    • (온보딩 등 교육 프로그램이 있어야 하는 이유!)
  4. 자신이 사용하는 프로그래밍 언어를 마스터하라
    • 언어별로 좋은 책 한두 권을 읽어라
    • 각 언어의 고급 개념을 제대로 이해하고 코어 라이브러리에 익숙해져라
  5. 코드 리뷰는 가장 혹독한 리뷰어에게 부탁하라
    • 언제나 더 좋아질 수 있다.
    • 아무에게나 리뷰 부탁은 지양, 꼼꼼히 검토할 수 있는 리뷰어에게 부탁하자.
  6. 발전하고 싶은 분야에 관한 수업을 수강하라
    • 기업에서 연계된 교육을 적극 활용
  7. 관심 있는 프로젝트 설계 논의에 참여하라
    • 초대받기를 기다리지 마라.
  8. 다양한 프로젝트에 참여하라
    • 비슷한 방법으로 비슷한 일을 해서는 성장하기 어렵다.
    • 다양한 프로젝트에 교차로 참여하여 여러 기술을 교차로 연습해라.
  9. 보고 배울 만한 것이 있는 시니어 개발자가 최소한 몇 명 이상 되는 팀에 머물러라.
    • 그렇지 않다면 팀을 바꾸는 것을 고려
  10. 모르는 코드에 용감하게 뛰어들어라
    • '자신이 모르는 코드에 뛰어드는 것을 겁내지 않는 것'이 엔지니어링 분야에서의 성공과 큰 연관이 있다.
    • 실패를 두려워하지 말고 모르는 분야를 파헤치는 연습을 많이 해라. 그래야 발전한다

 


 

정말 피가 되고 살이 되는 말이다. 그런데 정리를 하고보니..

회사에서 정말~~~~ 바쁘게 있어야 할 것 같다. ㅋㅋㅋㅋ

다양한 프로젝트에 참여도 해야 하고 그 와중에 코드도 많이 작성해야 하는데 불필요한 회의나 설계는 빠져야 하는데 또 관심 있는 프로젝트 설계 논의에는 참여해야 한다. ㅋㅋㅋㅋㅋ

화이팅~

728x90
반응형
728x90
반응형

Python Fast API 활용하여 간단한 알람 기능을 수행하는 API를 개발중인데,
점점 알람을 보내는 endpoint 가 증가하며 API에 기능이 추가됨에 따라 상태 코드를 세분화할 필요성을 느꼈다.

200 번대 response가 OK인 것은 알겠는데,,

{a요청, b요청} --> 처리 --> {a: 실패, b: 성공} 

위와 같이 두가지 요청 중 한가지만 성공 했을 때 HTTP response 상태코드는

200이어야할지 400, 500 대의 에러코드여야할지 고민이 들었다.

Multi-Status Response: 207
200대 OK 에도 multi-status response 번호인 207 response를 사용하면 partial 한 failure에 대해 응답을 줄 수 있다.
참고: https://datatracker.ietf.org/doc/html/rfc4918#section-13

 

RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)

 

datatracker.ietf.org

HTTP response 더 공부해야겠다..

728x90
반응형
728x90
반응형

변수 이름이 'type' 이어야 하는 경우가 생겼다.

Json 파싱 해야하는데 key 이름이 'type'이다. 난감..

스칼라는 대소문자를 구분하니 'type'의 t라도 대문자였으면 문제가 없는데...

알아보니 backticks(`) 를 쓰면 된다!

 

아래와 같이 사용하면 된다는 것!

var `type` = 10


case class Policy (
		Name:		String,
                `type`: 	String,
                Versions: 	Int )
728x90
반응형
728x90
반응형

파이썬... 

 

sql 문장을 만들거나 어떠한 이유로 python 코딩을 하다가 다중 라인의 스트링을 입력해야 할 때가 있습니다.

심지어 변수도 들어가게 되면 코드는 더러워지게 마련입니다.

 

문제는 없지만 보기가 너무 더럽고 관리하기 어려우니 여러 해결 방법이 있습니다.

https://stackoverflow.com/questions/10660435/pythonic-way-to-create-a-long-multi-line-string

 

Pythonic way to create a long multi-line string

I have a very long query. I would like to split it in several lines in Python. A way to do it in JavaScript would be using several sentences and joining them with a + operator (I know, maybe it's n...

stackoverflow.com

제가 참고한 글입니다.

 

아니면 f-string이었나? string intnerpolation 이라고 

f"""value1={value1}""" 이렇게 값을 감싸고 문자열에 바로 변수 값을 집어넣는 기능을 사용할 수 있습니다.

 

이 방법의 경우 파이썬 3.5부터 지원됩니다.

728x90
반응형
728x90
반응형

심심하니까 푸는 프로그래머스 코테 문제

 

이번에 푼 문제는 '완주하지 못한 선수'

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

문제 캡쳐본

예전에 한 번 C++로 풀어봤다. 이런저런 방법으로 풀다가 결국 해설을 봤던 것 같다.

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    
    for(int i = 0; i < participant.size(); i++){
        if(participant[i] != completion[i])
            return participant[i];
    }

    return participant[participant.size()];
}

 


 

이번에 고랭으로 풀어보려고 했는데 C++로 어떻게 풀었는지 이미 봐버려서 그대로 풀어버렸습니다 ㅠㅠ  근데 이 문제는 고랭은 지원하지 않아서 그냥 맞겠지 하고 풀었어요 ㅎㅎ

package main

import (
	"fmt"
	"sort"
)

func solution(participant []string, completion []string) string {
	sort.Strings(participant)
	sort.Strings(completion)
	
	for i:=0; i < len(completion); i++{
		if(participant[i] != completion[i]){
			return participant[i]
		}
	}
	return participant[len(participant)-1]
}

func main() {
	participant := []string{"leo", "kiki", "eden"}
	completion := []string{"eden", "kiki"}
	ret := solution(participant, completion)
	fmt.Println(ret)
}

sort 내장 모듈을 지원해주니 이 모듈을 사용했고 정확히 C++로 푼 방법과 똑같이 풀어버렸습니다 ㅋㅋㅋ 그래도 고랭 익숙해지는 거라고 생각하면 여전히 문제 풀어보는 건 좋지요!

728x90
반응형

+ Recent posts