젠킨스 플러그인 설치가 AWS 서울 리전에서 계속 이슈인데 풀지를 못하고 있습니다.

10분 넘게 기다려도 에러에러에러

로그를 보니 https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ 주소가 나옵니다. 집에서는 잘 접속됩니다. 문제는 AWS EC2에서 `노답`이라는 것이죠.

위는 집 네트워크, 밑은 ap-northeast-2 EC2

  jenkins curl https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

curl: (28) Failed to connect to mirrors.tuna.tsinghua.edu.cn port 443 after 131899 ms: Couldn't connect to server

 

문제 해결은 aws `도쿄` 리전이었습니다. 당분간 Jenkins는 일본에서 테스트해야 겠습니다.

팍팍하네요.

길막힘이 빨리 해결되길 바랍니다.

CLI: Command Line Interface

  • Windows의 CMD, PowerShell, Git Bash 대상
  • 자주하는 실수는 현재 위치를 무시하고 명령을 날려서 *** 파일이 없습니다 로 진행이 막힌다.

주의할 점

  • 현재 경로에 파일이 있는지 확인한다.
    • ls, dir
  • 환경변수 %Path%, $PATH 에 원하는 파일의 경로가 있는지 확인한다.
    • which java

  • `explorer .` (윈도우) 현재 경로로 탐색기가 열린다.
  • `open .` (맥) 현재 경로로 Finder가 열린다.
  • 탐색기에서 ctrl + L 하면 주소줄에 포커스가 간다. 이때 cmd 입력하고 엔터치면 해당 경로의 cmd 창이 뜬다.

CLI

image from: https://en.wikipedia.org/wiki/Command-line_interface

클린 코드는 개발자 커뮤니티에서의 `최고의 실천 방법`(Best Practices) 중 하나로 여겨지며,
소프트웨어 개발 과정에서 가독성, 유지보수성, 생산성 등의 측면에서 큰 장점을 제공합니다.

image from: firefly.adobe.com

  1. 가독성: 클린 코드는 읽기 쉽고 이해 용이
    1. 코드의 의도와 동작을 쉽게 파악 가능
    2. 가독성이 높은 코드는 코드 리뷰, 유지보수, 버그 수정 등의 작업 효율성 극대화
  2. 유지보수성: 클린 코드는 유지보수 쉬움
    1. 코드의 구조가 명확하고 일관성이 있기 때문에 새로운 기능을 추가하거나 버그를 수정하는 작업이 간단
    2. 코드의 중복을 제거하고 모듈화하여 변경 사항에 대한 영향을 최소화 가능
  3. 버그 감소: 클린 코드는 버그가 발생하기 어려운 구조
    1. 작은 함수와 모듈을 사용하면 코드의 일부분만 수정해도 되므로 다른 부분에 영향을 미치는 버그 감소
    2. 명확한 변수명과 주석을 통해 개발자는 코드를 더 정확하게 이해하고 버그 예방 가능
  4. 생산성 향상: 코드를 이해하고 수정하는 데 소요되는 시간 감소
    1. 가독성이 높은 코드는 협업을 향상
    2. 다른 개발자와의 코드 공유와 리뷰가 원활하게 진행
    3. 개발자의 생산성을 향상시키고 프로젝트의 진행 속도 안정화
  5. 테스트 용이성: 클린 코드는 테스트 최적화 됨
    1. 작은 함수와 모듈은 단위 테스트를 작성하기에 이상적
    2. 테스트 가능한 코드는 버그를 발견하고 수정하는 데 도움을 주며 소프트웨어의 품질을 향상

 

예를 들면 다음과 같습니다.

✅Good

def calculate_total_price(items):
    total_price = 0
    for item in items:
        total_price += item.price * item.quantity
    return total_price

 

🚫Bad

def calc(items):
    tp = 0
    for i in items:
        tp += i.p * i.q
    return tp

가독성: 첫 번째 예제는 변수와 함수의 이름이 명확하게 지어져 있어 코드를 읽기 쉽고 이해하기 쉽습니다.
변수명인 total_price, item.price, item.quantity는 코드의 의도를 명확하게 전달합니다.
두 번째 예제의 경우, 약어와 알파벳 하나로 이루어진 변수명인 tp, i.p, i.q는 코드의 의미를 이해하기 어렵게 만듭니다.

유지보수성: 첫 번째 예제는 구조가 명확하고 일관성이 있습니다. 
calculate_total_price 함수는 단일 기능을 수행하며, 변수명과 주석을 통해 코드의 동작을 명확히 설명합니다. 이는 새로운 기능 추가 또는 수정 시 코드의 변경 범위를 최소화하고 유지보수를 쉽게 만듭니다. 
반면, 두 번째 예제는 변수명이 알기 어려우며 함수의 목적과 동작을 파악하기 어려워 야근을 겪을 수 있습니다.

버그 감소: 첫 번째 예제는 변수와 함수의 이름을 명확하게 지어 코드를 이해하기 쉽게 만듭니다. 
따라서 코드를 더 정확하게 이해하고 버그를 예방하는 데 도움이 됩니다.
두 번째 예제는 변수명이 약어로 되어 있고, 코드의 의도가 분명하지 않기 때문에 버그 발생 가능성이 높아집니다.

script from: chatgpt

 

 

물론 이런 방법도 있습니다.

평생 개발자로 먹고 살 수 있다 free pdf

https://m.hanbit.co.kr/store/books/book_view.html?p_code=E2375873090 

 

유지보수하기 어렵게 코딩하는 방법: 평생 개발자로 먹고 살 수 있다

이 책은 코드를 이해하기 어렵게 작성하는 방법을 설명한다. 다른 사람들이 쉽게 이해할 수 없도록 코드를 작성하여, 유지보수를 어렵게 하고 자신의 가치를 유지하도록 도와준다. 반대로 도서

m.hanbit.co.kr

 

일단 단어의 차이가 있습니다.

CS(Computer Science) 라고 하는 학문과 Scientist

컴퓨터 사이언스와 사이언티스트(물리학, 화학, 생물학)

과학(科學) 또는 사이언스(영어: Science)는 사물 구조, 성질, 법칙 등을 관찰 가능한 방법으로 얻어진 체계적이고 이론적인 지식의 체계를 말한다. 좁게는 인류 경험주의 방법론 자연주의에 근거하여 실험을 통해 얻어낸 자연계에 대한 지식들을 의미한다.[1] 과학자들은 자연계에서 관찰되는 현상들을 과학적 방법에 따라 자연적인 (초자연적이지 않은) 이론으로 설명하려고 시도한다.

from: https://ko.wikipedia.org/wiki/%EA%B3%BC%ED%95%99

영어와 프랑스어인 ‘science’는 ‘자연 현상에 대한 체계적인 지식’이자 ‘추상적 논리체계’를 뜻한다. 과학은 어떤 사물을 ‘안다’라는 라틴어 ‘scire’에서 유래됐다. 그리스어 sophia(知)에 바탕을 둔 philosophia(哲學 : philosophy)와 관계가 있다. 그래서 19세기 초까지 자연과학(natural science)을 자연철학(natural philosophy)이라고 했다.

from: https://www.sciencetimes.co.kr/news/science과학科學-잘못된-번역/#:~:text=영어와%20프랑스어인%20'science,philosophy)와%20관계가%20있다.

 

컴퓨터로 일하는 것은 과학입니다.



image from: https://prezi.com/zktllzmaipum/ai/

 

좋은 팀을 만나면, 일을 하는 것이 즐겁습니다.

업무적인 성장도 매우 액티브하게 됩니다.

그 팀의 우산 같은 역할을 하는 것이 팀장이죠.

 

ai에게 물어 보았습니다.

취업, 이직할 때 좋은 팀장 만나는 법

ChatGPT

취업하거나 이직할 때 좋은 팀장을 만나는 것은 직무 만족도와 성장에 매우 중요한 영향을 미칩니다. 아래는 취업하거나 이직할 때 좋은 팀장을 찾는 데 도움이 될 수 있는 몇 가지 방법들입니다:

  1. 회사 연구 및 조직 문화 이해: 취업하려는 회사나 이직하려는 회사의 조직 문화와 가치를 이해하세요. 회사의 리더십 스타일과 문화가 팀장에게 어떤 영향을 미칠지 파악하는 것이 중요합니다.
  2. 인터뷰 과정 활용: 면접 과정을 활용하여 팀장 후보의 리더십 스타일, 커뮤니케이션 능력, 문제 해결 능력 등을 평가해보세요. 질문을 통해 그들의 리더십에 대한 관점을 알아낼 수 있습니다.
  3. 현직 팀원과의 대화: 가능하다면 현직 팀원들과 대화해보세요. 그들의 경험을 듣고 팀장의 역량과 팀 내 환경에 대한 직접적인 정보를 얻을 수 있습니다.
  4. 사내 소셜 미디어 및 평판 조사: 회사나 팀장 후보에 대한 사내 소셜 미디어 또는 리뷰를 조사해보세요. 이를 통해 그들의 리더십과 팀 내에서의 평판을 파악할 수 있습니다.
  5. 업계 리더십 평가: 해당 업계에서 어떤 팀장들이 성과를 거두고 있는지 조사해보세요. 업계 내에서 좋은 평가를 받고 있는 리더들을 살펴보는 것이 도움이 될 수 있습니다.
  6. 멘토 및 네트워킹 활용: 전문적인 멘토나 네트워크를 통해 팀장 후보를 찾아보세요. 업계 내에서의 커넥션을 통해 믿을 수 있는 정보를 얻을 수 있을 것입니다.
  7. 회사 내부 리더십 개발 프로그램: 회사 내부에서 리더십 개발 프로그램을 제공하는 경우, 이를 통해 팀장 후보를 발굴하고 평가해볼 수 있습니다.
  8. 자신의 가치와 목표와의 일치 검토: 자신의 가치관과 목표와 팀장 후보의 리더십 스타일 및 조직문화와 얼마나 일치하는지를 고려해보세요. 이를 통해 팀장과의 궁합을 평가할 수 있습니다.

취업하거나 이직할 때 팀장은 업무 경험과 성장에 큰 영향을 미치는 요소 중 하나입니다.

이상적인 대답입니다만, 접근제한이 있을 뿐 이상한 대답은 없네요.

서류 통과 후 면접 시간에는 개발팀장이 오게 되어 있습니다. 이때 회사에 대한 팀장에 대한 질문을 잘해야 합니다. 관상을 볼 줄 안다면, 저 분이 왕이 될 상인가도 볼 수 있겠죠.

팀원들에게만 좋은 팀장은 오래 가기 쉽지 않습니다. 왜냐하면 회사에 개발팀만 있는 것이 아니기 때문이죠. 좋은 팀장이 오래 가려면 회사내의 위상이 중요합니다. 회사에 큰 공을 세워도 내쳐지는 경우가 대부분입니다. 왜냐하면 회사는 계속 새로운 성과가 매년 필요하기 때문이죠. 팀 자체가 프로젝트(비즈니스)라고 생각하시면 될 것입니다.

좋은 팀장 만나시길 바랍니다. 그리고 좋은 팀 만드시길 바랍니다.

image from: https://www.skillscamp.co/the-boss-vs-the-leader/

블로그보다 유튜브가 좋은 점이 많습니다. 하지만, 유튜브의 경우 시간이 이슈입니다.

그 고민을 해결해주는 플러그인이 있습니다.

https://glasp.co/youtube-summary

영상 오른쪽 상단에 Transcript & Summary 클릭하면, 텍스트가 나옵니다.

그리고 AI 아이콘을 클릭하면 요약본이 나옵니다.

 

`한국어로` 라고 입력하면 간편하게 동영상 요약을 볼 수 있습니다. 물론 긴 영상은 token 제약 때문에 전반부만 요약이 됩니다.

https://glasp.co/youtube-summary

맥북 에어 M1 사용하고 있습니다. 스토리지가 작아서 저장 공간이 신경이 쓰이는데, Docker를 사용해야 되서, 점점 더 관심을 갖게 되는 것이 여유 공간입니다.

제가 추천하는 것은 Disk Inventory X 입니다. 옛날 윈도우에서 쓰던 디스크 조각 모음과는 다릅니다.

Disk Inventory X 분석 결과

http://www.derlien.com/ 에서 다운로드 받아서 사용할 수 있습니다.

생각보다 Caches 파일 용량이 많이 들고, 네트워크로 다운로드 파일 받는 것들은 설거지 느낌으로 관리할 필요가 있다고 생각이 드는 지금입니다.

뭐, 귀찮다면 저장용량이 큰 것을 구입하거나, 그냥 맥을 주기적으로 초기화하는 것도 괜찮은 방법입니다. 중요한 자료는 클라우드가 있으니까요.

 

인지상정(人之常情): 사람이면 누구나 가지는 보통의 마음.

익숙하지 않은 것에 대한 두려움은 인지상정입니다. 누군가에겐 도전일 수 있지만, 다른 누군가에게는 도박으로 느껴지기 때문입니다.

경험의 동물인 인간은 경험하지 못한 것에 대한 두려움이 있습니다. 특히 프로그래밍에 있어서 경험은 손가락 근육으로 집중됩니다. 입으로 코딩하는 것은 아니니까요. 심지어 개발툴도 바꾸기 쉽지 않습니다. 단축키가 다르면 스트레스를 많이 받게 되기 때문이죠.

자바 개발 20+년 경력자라도 파이썬이나 React쪽으로 가면 익숙하지 않은 환경을 거치게 됩니다. 프로그래밍이라는 행태는 같지만, 맥락이 다르기 때문입니다. 익숙하지 않은 환경을 경험하는 것은 모험가 기질이 있다면 재미가 되지만, 관성을 좋아하는 성격이라면 스트레스 만빵입니다.

제가 84년 처음 프로그래밍을 할 때는 인터넷이 없던 세상이었습니다. 그저 책과 잡지만 있었지요.

94년 복학했을 때 처음으로 PC통신을 경험했고, 웹 페이지도 처음 만들어 봤습니다.

98년 두루넷 사용하는 사람들이 ADSL보다 빠르다고 말했을 때는 믿기지 않았지만, 2001년 집에 두루넷 깔리고, 몇 개월동안 okjsp 사이트를 집에 있는 PC로 운영했던 적도 있습니다.

image from: https://4rang.tistory.com/1463

2016년 이세돌 vs 알파고 바둑이 1:4로 끝났을 때, 임계점을 넘었다는 생각이 들었습니다. 더 이상 마차 타고 다니는 시대가 아니구나 느낌이었습니다. 그래서, TensorFlow도 공부하고 그랬지만, 제 일에 적용하기는 어려웠습니다. 덕분에 파이썬만 조금 배웠죠.

 

빠르게 세상이 변하는 중에 아직도 AI를 안 쓴다면, 도전해 보라고 추천합니다. 익숙하지 않지만, 자꾸 경험해야 익숙해지기 때문입니다. ChatGPT(https://ai.com) 무료로 사용할 수 있습니다. 그리고 플러그인 GitHub Copilot도 30일은 무료입니다. 경험해 보지 않은 세상은 상상조차 안되기 때문입니다.

 

 

주변에 좋은 코드가 있어서 오픈 소스를 하라고 하면, 대체로 코드 정리 좀 하겠다는 말을 많이 합니다.

일단 돌아가게 만드는 것에 중심을 두어서겠죠.

오픈 소스는 클린하지 않아도 된다고 생각합니다. 누군가 코드를 잘 정리해 줄 수도 있으니까요.

코드가 클린하다는 것은 어떤 의미일까요.

가독성이 좋다는 뜻으로 저는 이해합니다.

  • 읽기 쉬운 코드: 코드를 작성할 때 다른 사람이 읽기 쉽도록 작성해야 합니다. 변수와 함수의 이름은 명확하고 직관적이어야 하며, 주석을 사용하여 코드의 의도와 동작을 설명해야 합니다. 코드 블록을 적절하게 들여쓰기하여 구조를 명확하게 표현해야 합니다.
  • 작은 함수와 모듈: 함수는 작고 간단하며 한 가지 기능만 수행해야 합니다. 긴 함수보다는 작은 함수를 작성하는 것이 좋습니다. 모듈은 잘 정의된 기능을 가지고 있어야 하며, 필요한 경우 모듈을 적절히 분리하여 재사용성을 높여야 합니다.
  • 주석의 적절한 사용: 주석은 코드의 동작을 설명하고 의도를 전달하는 데 사용되어야 합니다. 그러나 주석만으로 코드의 이해를 대체하는 것은 좋지 않습니다. 주석은 코드가 이해하기 어려울 때 도움이 되어야 합니다.
  • 일관성 있는 명명 규칙: 변수, 함수, 클래스 등의 명칭에 일관성 있는 규칙을 적용해야 합니다. 명명 규칙은 가독성을 높이고 코드의 이해를 도울 수 있습니다. 개발 팀 내에서 동일한 명명 규칙을 사용하는 것이 좋습니다.
  • 중복 코드의 제거: 중복된 코드는 버그 발생의 원인이 될 수 있으며 유지보수를 어렵게 만듭니다. 중복 코드를 최소화하고 재사용 가능한 함수나 클래스를 작성하여 코드의 일관성을 유지해야 합니다.
  • 테스트 가능한 코드 작성: 코드를 작성할 때 테스트 가능성을 고려해야 합니다. 테스트 케이스를 작성하기 쉬운 코드는 버그를 발견하고 수정하는 데 도움이 됩니다. 모듈화된 코드와 작은 함수를 작성하여 단위 테스트를 수행할 수 있도록 해야 합니다.
  • 주기적인 리팩토링: 코드를 지속적으로 개선하고 리팩토링해야 합니다. 기능을 추가하거나 수정할 때마다 코드를 정리하고 개선하는 습관을 가져야 합니다. 리팩토링을 통해 코드의 가독성, 성능, 유지보수성을 향상시킬 수 있습니다.

클린 코드의 목표는 코드의 가독성과 유지보수성을 높이는 것입니다. 이는 개발자 간의 협업을 촉진하고 프로젝트의 생산성을 향상시킬 수 있습니다.

ai.com 의 클린 코드에 대한 설명입니다.

Clean Code

image from: https://blog.knoldus.com/clean-code-robert-c-martins-way/ , https://biratkirat.medium.com/clean-code-series-i-e1d60fc6d6ec

리눅스의 기본 Shell은 bash가 기본 쉘입니다.

Bash(배스) 한국에서는 생태교란종 어류이죠.

bash

오라일리 책 표지도 bash 입니다.

O'Reilly bash shell

 

bash쉘도 충분히 적응이 되었지만, 개인적으로는 몇 년 전부터 사용하는 zsh이 더 좋습니다. 특히 oh-my-zsh죠.

설치 방법은 간단합니다.

sudo dnf install zsh #zsh설치
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

 

aws Amazon Linux 2일 경우 다음과 같이 설치가 가능합니다.

sudo yum install zsh git util-linux-user -y
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

로그아웃하고 다시 들어오면 zsh 프롬프트가 나타날 것입니다.

 

bash로 돌아가려면 다음 명령으로 가능합니다.

sudo chsh -s $(which bash) $(whoami)

 

 

zsh에서 가장 좋았던 것은 `take` 명령어입니다.

mkdir ~/git && cd~/git

이 명령을

take ~/git 으로 됩니다.

 

써 보면 좋은데, 글로 표현하기 힘드네요.

여튼 bash도 좋지만, 저는 zsh입니다.

https://okdevtv.com/mib/zsh zsh의 plugin 설정도 있습니다.

 

zsh

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

okdevtv.com

 

+ Recent posts