Introsed의 -i 옵션은 파일을 직접 수정(in-place)하는 기능을 제공한다. 하지만 GNU sed(주로 Linux에서 사용)와 BSD sed(macOS에서 사용) 간의 구현 방식 차이로 인해 같은 명령어라도 다른 결과를 초래할 수 있다. 그 차이는 다음과 같다:GNU sed: -i 뒤에 백업 확장자를 생략하면 원본 파일을 수정하며, 백업 파일을 생성하지 않는다.BSD sed: -i 뒤에 백업 확장자를 반드시 명시해야 한다. 백업을 원치 않으면 빈 문자열('')을 사용해야 한다.예제 비교sed -i 's/hello/bye/g' example.txtGNU sed: 파일을 백업 없이 수정.BSD sed: 's/hello/bye/g'을 백업 확장자로 해석하려다 에러 발생(invalid command ..
Development/Develop Tools 32
IntroLibreOffice Calc를 사용하다 보면 셀을 병합해야 하는 상황이 자주 있다. 하지만 기본적으로 셀 병합 기능에 대한 단축키가 설정되어 있지 않아 매번 메뉴를 찾아 들어가거나 마우스로 클릭해야 하는 불편함이 있다. 문서작업할 때 하나하나 병합하다보면 화가나기도 한다.생산성을 높이기 위해 단축키를 설정해두면 아주 편리하다. 이번 글에서는 LibreOffice에서 셀 병합 기능을 단축키로 설정하는 방법을 알아본다.단축키 설정먼저 LibreOffice Calc를 실행한 다음, 상단 메뉴에서 Tools를 클릭한다. 드롭다운 메뉴에서 Customize를 선택한다.Customize를 선택하면 아래와 같은 창이 나타난다. 여기서 Keyboard 탭을 선택한다.이제 Keyboard 탭에서 단축키 설정하..
IntroLeetCode 문제를 매일 풀이하는 개발자라면 공감할 텐데.. 문제 링크를 찾아가고, 클래스 이름을 짓고, 파일을 생성하는 과정이 굉장히 번거롭다.그래서 이를 간단히 처리하기 위해 leet.sh와 ClassNameFactory.java 두 가지 프로그램을 작성했다.이제 터미널에서 leet 한 줄만 입력하면, 오늘의 문제 링크가 뜨고, 문제풀이용 클래스 이름이 자동으로 클립보드에 복사된다.IDE에서 바로 붙여넣어 클래스를 생성한 뒤 코딩을 시작하면 된다. 비슷한 번거로움을 겪었던 개발자라면 한번 참고해보길 권한다.leet.bash문제 정보 가져오기leet.sh는 LeetCode의 GraphQL API를 이용해 오늘의 문제 정보를 가져온다.GraphQL API는 공식적으로 제공되지 않지만 Leet..
IntroGithub 저장소의 언어 표기는 저장소의 주요 언어를 한눈에 보여주는 유용한 기능이다. 하지만 다양한 파일 포맷을 포함할 경우, 본래 의도한 언어와 다르게 표시될 수 있다. Github은 언어 통계를 위해 Linguist라는 오픈소스 도구를 사용한다. Linguist는 각 파일의 확장자와 내용에 따라 언어를 감지하고, 라인 수를 기준으로 언어 비율을 계산한다. 이때 코드베이스의 양적인 부분만을 반영하기 때문에 핵심 코드가 아닌 파일이 많다면 실제 프로젝트 언어 비율과 다르게 나타날 수 있다.이번 글에서는 .gitattributes 파일을 통해 Github 언어 통계를 조정하고, 불필요한 언어가 표시되지 않도록 하는 방법을 설명하겠다.특정 파일과 폴더 제외 설정.gitattributes.gita..
Intro Heritrix는 웹 아카이빙을 위해 만들어진 웹 크롤러입니다. 2004년 미국의 Internet Archive 의해 최초 공개되었으며, 자바로 작성된 오픈소스입니다. 주요 인터페이스는 웹 브라우저를 사용하여 접근할 수 있으며, 크롤링을 시작하는 데 커맨드 라인으로도 조작할 수 있습니다. 또한, robots.txt 규칙을 존중합니다. 전체 소스코드는 https://github.com/internetarchive/heritrix3 에서 확인할 수 있습니다. Internet Archive에서 아카이브 하는 사이트가 얼마나 많은지, 무려 8,060억개 이상의 웹 페이지를 조회할 수 있다고 합니다. 궁금해서 제 블로그 주소를 입력 해서 확인을 해 보았더니 아래 보이는 것 처럼 처음 작성하기 시작한 2..