Other
초보 개발자가 오픈소스에 기여하는 방법
필자는 깃허브에 있는 오픈소스 프로젝트를 자주 들여다 봅니다. 뛰어난 개발자분들이 작성한 코드를 보고 새로운 언어 기능이나 구조를 보며 배우는 것이 무척 많습니다. 그러던 중 기여할 수 있는 부분이 생기면 여러번 고민해보고 PR 을 보내기도 합니다. 처음에는 확신이 없었고 민폐가 아닌가? 하는 생각이 들었지만 에러를 해결하고 나서 많은 분들이 좋은 피드백을 주셨던 경험이 있습니다. 그 후 개선할 부분을 발견하면 이슈를 꼼꼼히 확인하고 PR 을 올리는 습관을 가질 수 있었습니다. Swift 첫 오픈 소스 기여 후기 ( Open Source PR ) 오픈소스라 하면 거대한 프로젝트이고, 뛰어난 개발자분들이 기여하기 때문에, 입문 개발자가 쉽게 접근하기 어렵다고 생각했습니다. 하지만 베타 Xcode 에서 컴파..
MAKE US IT 동아리 6기 후기 및 간단 회고
필자는 전자공학을 전공하고 있는 학부생으로 "개발"과는 크게 인연이 없었습니다. 그러던 중 IT 회사에서 아르바이트를 하게 되었고 IT 특유의 수평적인 문화를 경험할 수 있었습니다. 이 때 좋은 분들을 많이 만났고 회사 분위기를 간접적으로 느끼며 개발자가 되고 싶다는 생각이 들었습니다. 그 후로 각종 컨퍼런스에 참가하며 무작정 다양한 플랫폼들을 공부하기 시작했습니다. 보안, 웹 프론트/백엔드, 리눅스... 등 ( 지금 생각하면 다양한 CS 배경 지식을 쌓는데 큰 도움이 되었다고 생각합니다 ) - 첫걸음을 위한 조언 - 같이 공부할 좋은 동료를 찾으세요. 혼자 헤쳐나가기엔 힘들고 외로울 수 있습니다. 대외활동이나 동아리, 또는 다른 경로로 친구를 찾아보되, '조직에 소속된 후 배우겠다' 생각 말고 혼자 공..
크롬 확장앱(Chrome extension) 리액트 적용하기
크롬 확장앱은 순수 자바스크립트(Vanilla JS)로 개발할 수 있지만, 구조가 복잡한 앱의 경우 프론트엔드 라이브러리를 사용하는 것이 좋은 방안이 될 수 있습니다. 그래서 크롬 확장앱을 개발할 때 리액트 환경을 구축하는 방법을 알아보도록 하겠습니다. 아래와 같은 코드들을 입력해줍니다. yarn create react-app "project-name" // 리액트 프로젝트 생성하기 cd "project-name" // 해당 디랙토리로 이동하기 yarn start // 프로젝트 시작 yarn start 명령어를 입력하면 자동으로 테스트용 웹 서버가 시작되고, 브라우저에서 해당 화면이 출력됩니다. 위 화면을 크롬 확장앱에서 보여줄 수 있도록 작업하겠습니다. yarn build // 배포할 수 있도록 빌드하..
자바 빌더 패턴 ( Builder Pattern )
롬복을 사용하면서 @Builder 어노테이션을 접하게 되었습니다. 빌더 패턴이 정확히 어떤 역할을 하는지 정리하고자 합니다. public class Student { // 필수 인자 private String name; private int age; // 선택 인자 private String grade; // 생성자 public Student(String name, int age, String grade) { this.name = name; this.age = age; this.grade = grade } } 먼저 일반적으로 볼 수 있는 생성자 패턴 방식입니다. Student 클래스에 필수 인자는 "name" "age" 이고 선택적 인자는 "grade"로 가정하겠습니다. 위 클래스를 인스턴스로 생성하려면..
IntelliJ "No tests found for given includes" 오류 해결
No tests found for given includes 테스트 코드를 작성하고 실행시켰는데, 위와 같은 오류가 발생했다. 해결방법은 Intellj 기준으로 File > Settings > Build > Build Tools > Gradle 에서 Run tests using 을 IntelliJ IDEA 로 바꿔주면 된다. 아래 처럼 테스트코드가 정상적으로 동작하는 것을 볼 수 있다.
IntelliJ 에서 Gradle 다운 그레이드 하기
스프링 부트 테스트 코드를 작성하고 실행했을 때 아래와 같은 오류가 발생했습니다. variable name not initialized in the default constructor 그 이유는 예제로 진행한 환경이 Spring 2.1.7, Gradle 4 버전에서 진행했기 때문입니다. 필자가 설치된 환경은 Gradle 5 버전 이므로, 상황에 맞게 설정을 바꾸는 방법도 있었지만 Gradle 4 버전으로 다운그레이드 해서 문제를 해결하기로 했습니다. 아래 코드를 IntelliJ 터미널에서 입력하면 됩니다. gradlew wrapper --gradle-version "4.10.2" // 다운그레이드할 버전을 입력하면 된다 * git clone 으로 프로젝트를 받았을 때에는 gradlew 실행 권한이 제거되..
IntelliJ IDEA 에서 git 저장소에 있는 .idea 제거하기
IntelliJ IDEA 에서 깃 저장소 관리를 위해 .ignore 플러그인을 주로 사용합니다. 하지만 이렇게 .idea 를 추가해도 commit 을 할 때 그대로 .idea 폴더가 남아있는 경우가 있습니다. 이 경우에 git 캐시를 삭제해주면 제대로 동작하게 됩니다. 커맨드 라인에서 아래 코드를 입력해줍니다. git rm -r --cached . git add .
리눅스 tree 명령어 사용하기
우분투에서 tree 명령어 설치하기 apt-get install tree $ apt-get install tree $ tree ├── workspace │ ├── \ │ ├── random.sh │ ├── input2.c │ ├── list.sh │ ├── local.sh │ ├── range.sh │ └── random.sh 명령어를 설치하지 않고 find 명령어로 간단하게 출력할 수 있다. find | sed 's|[^/]*/|- |g' $ find | sed 's|[^/]*/|- |g' - workspace - - random.sh - - input2.c - - range.sh - - list.sh - - input2 - - \ - - local.sh
파이썬에서 여러 값 입력받기
공백이 있는 여러 값을 한꺼번에 입력받으려면 python2 a, b, c ,d = raw_input().split() python3 a, b, c ,d = input().split() 결과 >>> print("{0}, {1}, {2}, {3}".format(a, b, c, d)) 0, 1, 2, 3 인풋값은 문자로 저장되기 때문에 연산하려면 캐스팅 과정이 필요합니다. >>> type(a)