https://techblog.lycorp.co.jp/ko/about-atlassian-jira-ranking-algorithm-lexorank Jira의 이슈 정렬 방식이 Integer 방식이 아니라고?! 들어가며 안녕하세요. LINE+ Contents Service Engineering 조직에서 백엔드 개발을 하고 있는 김한솔, 문다정, 이현동, 조강훈입니다. 저희 조직에서는 그룹... techblog.lycorp.co.jp 예전 내일배움캠프 프로젝트 중, 트렐로와 같은 협업 프로젝트를 진행한 적이 있었다. 이걸 진행할 때 카드 정렬을 구현하고자 정말 많이 고민했었는데, 나는 저기 후보 중 LinkedList 방식을 고안했었다가 코스트가 많이 든다는 피드백으로 고민하다 다른 팀에서 가중치 방식을 고안..
지식 한 조각 🍰
⭐ 용어 정리 중첩 클래스 (nested class) : 다른 클래스 안에 정의된 클래스. 중첩 클래스는 자신을 감싼 바깥 클래스에서만 쓰여야 하며, 그 외의 경우는 톱레벨 클래스로 만들어야 한다. 톱레벨 클래스 : 소스파일에서 가장 바깥에 존재하는 클래스. 중첩 클래스의 종류는 정적 멤버 클래스 (비정적) 멤버 클래스 (*) 익명 클래스 (*) 지역 클래스 (*) 이 중 첫 번째를 제외한 나머지는 내부 클래스(inner class)에 해당한다. (위에서 * 표시 한 부분) 이번 아이템에서는 각각의 중첩 클래스를 언제 그리고 왜 사용하는지에 대해 다룬다. ⭐ 1. 정적 멤버 클래스 다른 정적 멤버와 똑같은 접근 규칙을 적용받아서, private으로 선언하면 바깥 클래스에서만 접근할 수 있다. 정적 멤버 ..
키오스크 만드는 자바 개인 프로젝트 하면서 인텔리제이로 자바 프로젝트를 만들었다. .idea 디렉터리와 .iml 파일이 생겼는데, 일단 이게 머냐 하면, .idea 디렉터리 : 인텔리제이의 IDE 옵션을 저장하는 디렉터리다. 보니까 설치한 플러그인에 대한 정보도 있었다. .iml 파일 : IntelliJ IDEA Module 의 약자로, Module 구성을 XML 형태로 작성한 파일이다. 이걸 .gitignore 에 넣어야 하나 고민돼서 이 사이트에서 intellij, java, gradle 로 검색해서 보니까 이거 자체는 넣지 않았는데 대신 .idea의 특정 디렉터리는 막고 있었다. 구글링을 더 해보니 각 컴퓨터 환경에 맞춰 변경된다기에 그냥 깃에 저장 안 해도 되어서 추가해주었다. 또 .iml 파일을..
메모리 계층구조 메모리 계층구조를 보면, 위로 갈수록 빠르지만 비싸고, 밑으로 내려갈수록 느리지만 저렴해지는 특징이 있다. 지금 제가 쓰는 맥북은 12MB의 Cache Memory에 16GB의 DRAM, 256GB의 SSD를 사용하고 있다. 12MB의 캐쉬메모리는 매우 빠르지만 용량이 너무 작아 DB로 쓰기에는 무리가 있다. 그리고 256GB의 SSD는 용량이 크고, 비휘발성이라 컴퓨터가 꺼져도 데이터를 잃지 않기 때문에 일반적인 DB에 사용이 된다. 하지만 SSD는 위 계층들보다 느려서 요청이 많으면 매번 디스크에 접근하여 부하가 걸려 느려질 수 있다는 문제가 있다. 그래서 적당히 빠르면서도 적당히 비싸며, 용량도 DB로 쓰기에 적당한 메인 메모리(DRAM)를 사용하는 데이터베이스를 in-memory ..
1. 깃 브랜칭 전략 우리가 깃과 깃허브를 사용할 때 보통 혼자 개발하게 되면 레포지토리의 master 브랜치 하나에 작성한 코드를 기록한다. 이는 자신만의 규칙들을 정하고 그것을 따르기만 하면 문제가 생기지 않는다. 하지만 팀으로 프로젝트를 진행하면서 하나의 레포지토리에 코드를 기록하다 보면 배포용, 개발용의 구분과 같이 브랜치를 여러 개로 관리할 필요가 생기고, 이 브랜치를 규칙 없이 무분별하게 사용하게 되면 어떤 브랜치가 언제, 무엇을 위해 생성됐으며, 삭제되어야 하는데 방치되고 있는지, 아니면 이후 필요한 브랜치인지 정확히 알기 어렵다. 이에 따라서 깃 브랜칭 전략이 나오게 되었다. Git Branching 전략이란, 다수의 개발자가 1개의 저장소를 효과적으로 사용하기 위한 work flow이다...
1990년대 중반, 웹사이트는 모두 Static site, 즉 정적 웹사이트여서 서버에 이미 만들어져있는 HTML 문서를 브라우저에서 요청이 올 때마다 꺼내어 주는 형태였다. 그러다가 90년대 후반~ 2000년대 초반까지 도입된 기술들(iframe, XMLHttpRequest, AJAX 등)은 하나의 HTML 문서에서 서비스를 제공할 수 있게 했고, 또 php나 jsp 같은 기술들은 서버에서 HTML을 재구성하여 보내줄 수 있게 되었다. 여기서 하나의 HTML 문서에서 다른 페이지로의 이동 없이 서비스를 제공하는 웹사이트를 SPA(Single Page Application) 이라고 하고, 위의 기술들(AJAX)을 이용하여 첫 HTML 문서만 받은 후로는 필요한 데이터를 서버로부터 받아 문서 내의 일부만을..
1. 웹, 웹서버, 와스 웹 : World Wide Web, 줄여서 www 또는 web 이라고도 하며, 많은 사람들이 인터넷과 웹을 동일한 것으로 착각하는데, 웹은 네트워크의 애플리케이션 계층에서 동작하는 하나의 애플리케이션이며 인터넷 위에서 동작한다. 웹은 주소에 해당하는 URI, 통신규칙에 해당하는 HTTP, HTML을 비롯한 콘텐츠들인 Resource로 구성된, 인터넷 상에서 정보를 검색할 수 있는 시스템이며 브라우저라고 하는 클라이언트를 통해 웹사이트를 조회할 수 있다. 서버: 클라이언트로부터 요청을 받아 그에 따른 적절한 응답을 해주는 소프트웨어 (또는 컴퓨터). 그러면 위의 내용을 조합하면, Web Server : 웹브라우저와 같은 클라이언트로부터, HTTP 요청을 받아 HTML, CSS, J..