Windows에서 정말 자주 쓰고 있지만 옵션 때문에 매번 찾아보고 있어서 포스팅하는 글.

 

xcopy /s /Y C:\__Dev\FOLDER_A C:\__Dev\FOLDER_B

 

xcopy를 이용한 간단한 명령어로 파일을 복사할 수 있다.

/s: Directory와 Subdirectory 모두 복사한다.

/Y: 중복되는 파일이 있으면 자동으로 덮어 쓴다.

 

더 상세한 옵션은 다음 페이지에서 확인하자.

https://www.computerhope.com/xcopyhlp.htm

 

MS-DOS and Windows command line xcopy command

Xcopy command help for MS-DOS and the Windows command line. Includes xcopy command availability, syntax, switches, and examples.

www.computerhope.com

 

 

 

 

 

 

반응형

 

 

Java에서 Actual and formal argument lists differ in length 에러가 발생한 경우 해결 방법에 대해 알아봅니다.

 

 

 

1. 어노테이션 처리 활성화 

 

 

IntellJ의 설정 > 빌드, 실행, 배포 > 어노테이션 프로세서 > 어노테이션 처리 활성화를 체크 해 줍니다.

 

 

 

2. Lombok Gradle 디펜던시 확인.

 

스프링 부트 설정에서 Lombok을 추가한 경우 build.gradle에 Lombok이 다음과 같이 추가되어 있는 경우가 있습니다.

 

 

이 경우 위와 같은 에러가 발생할 수 있으니 Maven Repository로 이동해 Lombok을 검색해 다음과 같이 변경해 줍시다.

 

 

 

 

3. Gradle 설정 변경

 

IntelliJ의 설정 > 빌드, 실행, 배포 > 빌드 도구 > Gradle로 이동해 다음과 같이 설정을 변경하고 저장해준다.

 

 

 

이제 빌드하면 정상적으로 빌드 되는것을 확인할 수 있습니다.

 

 

 

 

 

반응형

'Programming > JAVA' 카테고리의 다른 글

[Lombok] Gradle 빌드시 Cannot find symbol 오류  (0) 2022.06.30

 

앞서 작성한 code-server에 HTTPS를 적용해 보도록 하겠습니다. 이번 글에선 certbot의 nginx옵션 이용해 인증서를 발급받고 적용해 보도록 하겠습니다.

 

편의를 위해 code-server 설치와 nginx를 통한 역방향 프록시 설정에 대한 설명은 스킵하도록 하겠습니다.

 

 

 

01. code-server 설치 및 역방향 프록시 설정.

 

다음 글을 참고하여 code-server를 미리 준비합니다: https://smoh.tistory.com/456

 

[Ubuntu] 아이패드에서 code-server로 코딩 공부 해보기.

아이패드에서 프로그래밍 공부를 해보고자 여러 어플을 찾아봤습니다. 파이썬 같은 경우는 적당한 유료 어플이 있었지만 VSCode와 같은 무료면서 강력한 기능을 가진 어플은 없었습니다. 다양한

smoh.tistory.com

 

** 위 글에선 예시를 위해 AWS의 EC2를 사용하였습니다만 현재는 관리하는 서버에 code-server를 옮겨둔 상태입니다.

** NGINX를 통한 역방향 프록시 설정 방법은 별도로 설명하지 않습니다.

 

 

 

02. CERTBOT 설치.

 

만약 apt 같은 OS 패키지 관리자를 사용하여 설치된 Certbot 패키지가 있는 경우 기존 Certbot은 제거해야 합니다. 다음 명령어로 Certbot을 제거해 주세요.

sudo apt-get remove certbot

 

이제 snap을 사용해 최신 Certbot을 설치해 줍니다. 다음 명령어로 snap을 사용해 Certbot을 설치합니다.

sudo snap install --classic certbot

 

설치가 완료되면 다음 명령어를 실행해 certbot 명령을 실행할 수 있는지 확인합니다.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

이제 다음 명령어를 수행해 인증서를 발급받습니다.

sudo certbot certonly --nginx

 

만약 nginx에 여러 개의 사이트가 등록되어 있으면 위의 그림처럼 리스트가 나열됩니다. 발급을 원하는 사이트의 번호를 입력합니다. 만약 입력하지 않는 경우 모든 사이트가 선택됩니다. 

 

이제 인증서 발급이 완료되었습니다. 인증서의 위치는 /etc/letsencrypt/live/사이트명 폴더에 저장됩니다.

 

 

 

03. NGINX 설정 변경.

 

다음 명령어를 통해 nginx의 설정 파일을 엽니다. 전 별도 설정 파일에 server 설정을 관리하고 있습니다. 설정 파일 이름은 사용자에 따라 다릅니다.

sudo vi /etc/nginx/conf.d/my-server.conf

 

설정 파일을 열고 다음과 같이 설정을 추가합니다.

#/etc/nginx/conf.d/my-server.conf
#code-server
server {
  listen 80;
  server_name your.domain.here;
  location / {
    proxy_pass http://localhost:{PORT};
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Accept-Encoding gzip;
  }
  listen [::]:443 ssl ipv6only=on;
  listen 443 ssl;
  ssl_certificate /etc/letsencrypt/live/your.domain.here/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/your.domain.here/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

 

이제 다음 명령어로 nginx 서비스를 재시작합니다.

sudo service nginx restart

 

접속해서 확인해 봅시다.

 

 

도메인에 접속하면 https가 정상적으로 적용된 것을 확인할 수 있습니다.

 

 

 

 

 

 

반응형

 

 

아이패드에서 프로그래밍 공부를 해보고자 여러 어플을 찾아봤습니다. 파이썬 같은 경우는 적당한 유료 어플이 있었지만 VSCode와 같은 무료면서 강력한 기능을 가진 어플은 없었습니다.

 

다양한 방면으로 찾아보던 중 Code Server라는 기능을 사용하면 웹 브라우저에서 VSCode의 기능을 이용할 수 있다고 하여 사용하는 방법에 대해 포스팅합니다.

 

 

 

1. Code server란?

 

Run VS Code on any machine anywhere and access it in the browser.

* Code on any device with a consistent development environment
* Use cloud servers to speed up tests, compilations, downloads, and more
* Preserve battery life when you're on the go; all intensive tasks run on your server

🔔 code-server is a free browser-based IDE while Coder, is our enterprise developer workspace platform. For more information, visit Coder.com

 

사실상 마지막 줄이 핵심입니다. code-server은 무료입니다!

 

https://github.com/coder/code-server

 

GitHub - coder/code-server: VS Code in the browser

VS Code in the browser. Contribute to coder/code-server development by creating an account on GitHub.

github.com

 

자세한 내용은 깃 허브에서 확인하실 수 있습니다.

 

 

 

2. Code server 설치 서버 요구 사항.

 

우선 Ubuntu 서버를 미리 준비합니다. 서버 스펙의 요구사항은 다음과 같습니다.

  • 1 GB of RAM
  • 2 CPU cores

전 이 글에서 AWS EC2의 Free tier를 사용한 우분투 서버를 사용합니다.

 

 

 

3. Code server 설치.

 

code-server를 설치하는 데는 다음과 같은 세 가지 방법이 있습니다

  • 대부분의 프로세스가 자동화된 설치 스크립트를 사용하는 방법.
  • 수동으로 설치하는 방법.
  • 클라우드 업체에 원버튼으로 배포하는 방법.

 

저는 가장 처음 방법인 설치 스크립트를 사용해 설치를 진행해 보도록 하겠습니다. 

 

SSH를 사용해 우분투 서버에 접속합니다. 접속 후 다음 명령어를 수행해 설치를 미리 테스트해 봅니다.

curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run

위와 같이 드라이 런의 결과를 미리 확인해 볼 수 있습니다.

 

이제 진짜 설치를 진행해 보도록 합니다. 다음 명령어를 수행해 주세요.

curl -fsSL https://code-server.dev/install.sh | sh

설치가 완료되면 다음 명령어로 서버 부팅 시 서비스가 시작될 수 있게 만들어 준 뒤 code-server를 확인해 줍니다.

sudo systemctl enable --now code-server@ubuntu
code-server -h

** @뒤는 유저의 이름을 적절히 변경해 넣어 주셔야 합니다.

 

이제 설정 파일을 수정해 봅시다.

 

 

 

4. 설정 구성.

 

설정 파일은 ~/.config/code-server/config.yaml입니다. 다음 명령어로 설정 파일을 열어줍니다.

sudo vi ~/.config/code-server/config.yaml

파일을 열면 기본 설정 파일은 다음과 같습니다.

외부에서 접속 가능하도록 하기 위해서 127.0.0.1을 0.0.0.0으로 변경하고 포트도 원하시면 변경해 주시면 됩니다.

비밀번호는 자신이 편한 값으로 수정해 주시거나 외울 수 있다면 그래도 쓰시면 됩니다.

cert 옵션은 자체 인증 서버를 사용해 https 통신을 할 때 사용합니다. 우선 그대로 두고 넘어가도록 하겠습니다.

 

설정 파일 변경이 완료되었다면 다음 명령어를 사용해 code-server를 재시작해 줍니다.

sudo systemctl restart code-server@ubuntu

이제 code-server에 접속해 봅시다.

 

 

 

5. 접속 확인.

 

처음 접속하면 다음과 같은 화면을 확인할 수 있습니다.

 

설정에서 변경한 암호를 입력해 줍시다.

이제 맘껏 사용하시면 됩니다!

 

다음 글을 참고하시면 HTTPS 설정을 진행할 수 있습니다: https://smoh.tistory.com/457

 

[Ubuntu] Certbot(Nginx)을 이용해 code-server에 https 적용하기.

앞서 작성한 code-server에 HTTPS를 적용해 보도록 하겠습니다. 이번 글에선 certbot의 nginx옵션 이용해 인증서를 발급받고 적용해 보도록 하겠습니다. 편의를 위해 code-server 설치와 nginx를 통한 역방향

smoh.tistory.com

 

 

 

 

 

 

반응형

 

 

mfc100ud.lib 파일을 열 수 없습니다 문제를 해결하는 방법에 대해 알아봅니다.

 

 

 

1. 현상

 

 

잘 빌드되던 프로젝트를 오래간만에 빌드했더니 "mfc100ud.lib 파일을 열 수 없습니다." 에러가 발생합니다.

 

 

 

2. 원인 

 

암만 생각해도 소스를 변경한 기억이 없었고 뭐가 문제인지 곰곰이 생각해보던 도중 VisualStudio 2022 Pre 버전을 설치했다 지운적이 있었음이 기억났습니다.

 

환경변수를 확인해본 결과 atlmfc 경로가 환경변수에서 빠져있었음을 확인할 수 있었습니다.

 

 

 

3. 수정

 

환경변수에 mfc100 경로를 추가해 줍니다.

 

 

경로 확인 결과 해당 파일이 "C:\Program Files (x86)\Microsoft Visual Studio 10.0"아래에 있음을 확인할 수 있었습니다.

 

"C:\Program Files (x86)\Microsoft Visual Studio 10.0"를 환경 변수에 추가한 뒤에 정상적으로 빌드됨을 확인하였습니다.

 

 

 

 

 

반응형

 

앞선 글

 

지난 8월 Stack Overflow에서 2021 Developer Survey를 공개했습니다. 개인 사정상 두 달이 지난 지금에서야 관련 글을 쓰게 됩니다.

 

개발에 관심이 있거나 개발자분이라면 직접 차근차근 읽어보시는 걸 추천합니다.

 

Stack Overflow 2021 Developer Survey

 

Stack Overflow Developer Survey 2021

In May 2021 over 80,000 developers told us how they learn and level up, which tools they’re using, and what they want.

insights.stackoverflow.com

 

다양한 설문 중 흥미 있는 항목에 대해서만 글을 작성할 예정입니다.

 

 

 

1. Developer Profile - Experience

 

사실 바로 기술적인 내용으로 들어가려 했는데 개발 경험 관련 결과로 흥미로운 결과가 보였습니다.

 

교육을 포함하여 총 몇 년 동안 코딩을 하였습니까?

 

Years coding

 

 

교육은 포함하지 않고 전문적으로 코딩한 기간은 몇 년입니까?

 

Years coding professionally

 

거의 50%에 달하는 개발자는 코딩을 배운 지 10년 미만이며 현직 개발자 셋 중 한 명은 경력이 5년 미만입니다. 제 생각엔 꽤나 놀라운 결과입니다. 

 

지금에 와서야 개발 학원 등 널리 알려졌지만 개발자라고 하면 왠지 엄청 어려운 공부를 오랜 기간 한 뒤에 숙련되어 업무를 수행하는 그런 직종으로 알려져 왔습니다. 특히나 현업에 종사하고 계시는 분들의 셋 중 하나가 경력이 5년 미만이라는 것은 최근 개발자가 되신 분이 그만큼 늘어난 것처럼 보이기도 합니다. 

 

굳이 이런 내용을 왜 가져왔냐고요? 이 글을 읽고 계신 분들 중 개발자가 아닌 분들도 개발에 관심을 갖고 한번 도전해 보시라는 내용을 전달해 드리기 위함입니다. 전혀 늦지 않았다는 걸 알려드리고 싶었습니다.

 

 

 

2. Technology 

 

이제 기술적인 주제로 넘어가 보겠습니다.

 

가장 인기 있는 언어 - 지난 1년 동안 어떤 프로그래밍, 스크립팅 및 마크업 언어에서 광범위한 개발 작업을 수행했으며 내년에는 어떤 작업을 하고 싶습니까?

 

Programming, scripting, and markup languages - Professional Developers

 

개발 언어에 관심이 있던 사람이라면 누구나 예측 가능한 결과가 나왔습니다. 당연히 JS 쪽의 강세로 TS도 뒤따르고 있으며 Node.js 역시 인기입니다. 

 

 

 

가장 사랑받고 두려워하는 프로그래밍, 스크립팅, 마크업 언어

 

Programming, scripting, and markup languages

 

인기 있는 언어와는 또 다른 결과가 나왔습니다. 가장 인기 있던 JS는 중위권에 그쳤으며 TS는 오히려 상위권으로 올라섰습니다. Java 역시 인기투표와는 달리 오히려 C#, C++ 보다 하위권에 위치하였습니다.

 

 

가장 사랑받고 두려워하는 데이터 베이스

 

Databases

 

회사에서 쓰라는 Oracle이 순위가 매우 낮아서 슬픕니다. Redis, pgSql, MongoDB가 차례로 상위권에 위치하고 있습니다. RDB가 인기가 많이 없어진 건 사실인가 봅니다.

 

 

가장 사랑받고 두려워하는 웹 프레임워크

 

Web frameworks

 

스벨트가 가히 압도적입니다. 등장한 지 얼마 되지 않았음에도 불구하고 1위를 차지했습니다. 그 뒤를 dotNet Core, React js, Vuejs가 따르고 있습니다. Angular는 아직 중위권을 유지하고 있습니다. 이제 jQuery와 AngularJs는 그만 놓아주어야 할 때인 것 같습니다.

 

 

가장 많은 임금을 받는 프로그래밍, 스크립팅, 마크업 언어

 

Top paying technologies

 

Perl의 순위가 많이 떨어졌으나 여전히 많은 임금을 받는 언어입니다. 높은 임금을 받는 언어들은 함수형 언어로 보입니다. 하지만 대부분의 개발자들과 개발에 관심이 있는 사람들은 위에 명시된 언어들 중에서 아는 언어가 얼마나 많이 있을까요? 

 

함수형 언어를 잘 알지 못하는 이유는 명확합니다. 그만큼 쓰는 사람이 적어서입니다. 함수형 언어의 최강점은 짧은 코드로 짧은 시간 안에 개발을 해낼 수 있다는 점입니다. 이를 가능하게 해 주는 것은 함수형 언어의 재귀 함수입니다. 이와 동시에 함수형 언어의 진입 장벽이 되는 것이 재귀 함수입니다. 

 

C 언어를 배울 때 재귀 함수 관련 내용을 읽고 따라 해 볼 때를 생각하면 이해하기 쉽습니다. 코드가 엄청나게 간결해짐과 동시에 내 머리는 터져갑니다. 미루어 말해보자면 저 함수형 언어를 사용하는 개발자들은 이미 다른 언어에 매우 숙련된 시니어 개발자일 확률이 높습니다. 처음부터 저런 함수형 언어부터 시작하는 것은 말리고 싶습니다.

 

 

 

맺음글

 

올해도 슬슬 마무리돼가고 있습니다. 몇 년간 그래 왔듯 웹 프레임워크 쪽에서는 매년 난리가 나고 있습니다. 올해도 스벨트가 핫 트렌드로 올라왔습니다. 클로저나 엘릭서와 같은 함수형 언어는 사랑받는 언어긴 하지만 배우고 싶어 하는 언어는 아닙니다. 

 

언어 선택에는 정답이 없습니다. 이런 글을 쓰는 많은 분들이 언어는 도구일 뿐이다 라고 말씀하는 이유가 있습니다. 이런저런 설문조사와 트렌드를 꾸준히 확인하면서 자신의 상황에 맞는 학습 로드맵을 만드는 게 좋다고 생각합니다. 

 

 

 

 

 

반응형

 

Ubuntu Jenkins에서 docker build시 Docker permission denied 문제를 수정하는 방법에 대해 알아봅니다.

 

 

 

1. 문제

 

Ubunto 20.04에 설치된 Jenkins 2.317 버전에서 docker build시 다음 에러 메시지와 함께 permission denied 에러가 발생합니다.

 

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=my-app%3Alatest&target=&ulimits=null&version=1": dial unix /var/run/docker.sock: connect: permission denied

 

 

 

2. 원인 및 수정

 

jenkins 유저가 docker에 접근할 권한을 설정해야 합니다. 다음 명령을 통해 docker에 권한을 부여합니다

 

> sudo usermod -aG docker jenkins

 

이후 Jenkins 서비스를 재시작 합니다.

 

> sudo service jenkins restart

 

이후 다시 빌드를 수행해보면 정상적으로 빌드가 진행되는 것을 확인할 수 있습니다.

 

[MyApp] $ /bin/sh -xe /tmp/jenkins10435575314027477160.sh
+ docker build --tag my-app:latest --file Dockerfile .
Sending build context to Docker daemon 249.9MB
Step 1/5 : FROM mcr.microsoft.com/dotnet/aspnet:5.0
...

 

jenkins 서비스 재시작을 잊지 마세요.

 

 

 

 

 

반응형

 

 

 

1. 현상

 

npx create-react-app을 통해 react 앱을 생성하면 Critical 레벨의 이슈가 포함된 채 생성됩니다.

 

audit fix를 실행해도 해당 문제는 수정되지 않습니다.

 

 

 

2. 원인

 

결론부터 말하면 npm에 대한 버그입니다.

 

보다 자세한 내용은 다음 글을 참고해 주세요: Help, npm audit says I have a vulnerability in react-scripts!

 

Help, `npm audit` says I have a vulnerability in react-scripts! · Issue #11174 · facebook/create-react-app

npm audit is broken for front-end tooling by design Bad news, but it's true. See here for a longer explanation. If you think you found a real vulnerability in react-scripts If you know that it ...

github.com

 

 

 

3. 수정

 

package.json을 열어 다음과 같이 수정해 줍니다

//package.json
...

  "dependencies": {
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "web-vitals": "^1.1.2"
  },
  "devDependencies": {
    "react-scripts": "4.0.3"
  },
  
 ...

 

주요한 수정사항은 react-scripts입니다. 기존 dependencies에 있던 react-scripts를 devDependencies로 이동시킵니다.

그 후 npm audit --production을 실행시킵니다.

취약점 보고 내용이 0건으로 바뀌었습니다.

 

 

 

4. 문제가 해결된 게 아니라 무시한 거 아닌가요?

 

얼핏 보면 위와 같은 수정 내용이 문제를 수정한 게 아닌 devDependencies로 react-scripts를 이동시킴으로써 경고 메시지만 없앤 것처럼 보일 수 도 있습니다. 이 내용은 위의 링크된 원문 글에도 나와있으며 간단히 번역해보면 다음과 같습니다.

 

Create React App은 빌드 도구입니다. 즉, 실행 중인 Node 애플리케이션을 생성하지 않습니다. 개발 중 빌드 시간에 실행되며 정적 자산을 생성합니다.

그러나 npm 감사는 Node 앱용으로 설계되었으므로 프로덕션에서 실제 Node 코드를 실행할 때 발생할 수 있는 문제에 플래그를 지정합니다. 이것은 Create React App이 작동하는 방식이 아닙니다.

이것은 우리가 종속성에 대해 받는 압도적인 양의 "취약성" 보고서가 잘못되었음(false positive)을 의미합니다.

 

애초에 npm audit이 검사하는 방식에 문제가 있음을 내포하고 있습니다.

 

 

 

반응형

 

Fatal error C1083 포함 파일을 열 수 없습니다. 'ctype.h': No such file or directory / Cannot open include file: 'ctype.h': No such file or directory 에러가 발생했을 때 해결 방법에 대해 알아봅니다.

 

 

 

1. 현상

 

최근 C++ 프로젝트에서 curl을 사용할 일이 생겨 소스코드를 받아 빌드를 시도했습니다.

 

한 번에 성공하면 좋았으나 위와 같은 에러가 발생했습니다.

 

 

 

2. 해결

 

에러 로그를 가만 보고 있자니 왜인지 "windows kit 8.1"이 눈에 들어옵니다. 프로젝트 -> 속성 -> 일반으로 이동해 Windows SDK 버전을 변경해 줍시다.

 

 

대상 프로젝트는 VisualStudio 2017에서 사용하므로 SDK 버전을 10.0.17134.0으로 변경해줬습니다.

 

이제 다시 빌드하면 정상적으로 빌드가 되는 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

반응형

 

PowerShell을 통해 Yarn을 수행할 때 발생하는 보안 오류를 해결하는 방법에 대해 알아봅니다.

 

 

 

1. 현상

 

Windows 환경에서 PowerShell을 통해 Yarn을 설치했습니다.

> npm install --global yarn

 

이후 설치 확인을 위해 yarn 명령을 수행하려 하면 보안 오류가 발생합니다.

> yarn --version

 

 

 

 

2. 수정

 

PowerShell의 실행 정책이 "Restricted"로 설정되어 있어서 발생하는 문제입니다. "Unrestricted"로 변경해 줍시다.

 

우선 PowerShell을 관리자 권한으로 실행시킨 뒤 다음 명령어를 수행합니다.

> Set-ExecutionPolicy Unrestricted

이후 변경된 내용을 확인하기 위해 다음 명령어를 수행해 봅니다.

> ExecutionPolicy

 

 

정상적으로 "Unrestricted"로 변경된 것을 확인할 수 있습니다.

 

 

 

3. 확인

 

이제 다시 PowerShell로 Yarn명령어를 수행해 봅시다.

 

 

이제 정상적으로 수행되는 것을 확인할 수 있습니다.

 

 

 

Referenced: [PowerShell] PSSecurityException : UnauthorizedAccess

 

 

 

 

 

 

반응형

+ Recent posts