프로그래밍(Web)

    [바미] 배열의 특정 요소만 맨 뒤 또는 맨 앞으로 옮기기

    ex) 배열 값 중 1인 값만 앞으로 내보내기 var arr1 = [1,0,2,3,1,4,5,6,7]; 위와 같은 배열일 때 moveforward(arr) { return arr.filter((x) => x === 1).concat(arr.filter((x) => x !== 1)); } filter() 함수는 첫번째 인자에 어떤 조건식을 세우면 그 조건식에 해당하는 요소들로 새로운 배열을 만들어서 반환하게 됩니다. 즉 x라는 인자에 x !== 0 이라는 조건식을 세웠으므로 0이 아닌 요소들만 가져와서 새로운 배열을 만들어 return하게 되죠. 두번째 filter()로는 x 인자가 1이 아닌 요소들로만 배열을 만듭니다. 그리고 concat()함수로 두 배열을 합쳐서 return해줍니다. 그러면 1인 값은..

    [바미] Go 1.18 Release Notes

    언어의 변경사항 Generics Go 1.18에는 유형 매개변수 제안에 설명된 일반 기능의 구현이 포함되어 있습니다. 여기에는 언어에 대한 주요 변경 사항이 포함되지만 완전히 이전 버전과 호환됩니다. 이러한 새로운 언어 변경에는 프로덕션 설정에서 중요한 테스트를 거치지 않은 많은 양의 새 코드가 필요했습니다. 이는 더 많은 사람들이 일반 코드를 작성하고 사용함에 따라 발생할 것입니다. 우리는 이 기능이 잘 구현되고 고품질이라고 믿습니다. 그러나 Go의 대부분의 측면과 달리 실제 경험으로는 그 믿음을 뒷받침할 수 없습니다. 따라서 합리적인 경우 제네릭을 사용하는 것이 좋지만 프로덕션 환경에 제네릭 코드를 배포할 때는 적절한 주의를 기울여야 합니다. 다음은 가장 눈에 띄는 변경 사항의 목록입니다. 보다 포괄..

    [바미] 2022년 웹 개발에서 고려해야 할 환경

    TL;DR: 2022년 웹 개발에서 고려해야 할 환경은, 성능 측면에서는 저사양의 Android 기기, 웹 표준 측면에서는 2년 전의 Safari, 네트워크 측면에서는 4G입니다. 웹은 대체적으로 이와 같은 니즈에 적절히 대응하지 못하고 있습니다. 특히 성능 관점에서 JavaScript에 과도하게 의존하는 것과 같은 요소들이 웹 사이트의 성능을 끌어내리고 있습니다. 안녕하세요! LINE에서 프런트엔드 엔지니어로 일하고 있는 Alan Dávalos입니다. 이 글의 제목이 그저 클릭을 유도하려는 미끼라고 생각하실 수 있겠지만, 조금만 더 읽어주시길 바랍니다. 분명 읽을 만했다고 생각하실 겁니다. 2021년과 2022년 사이에 웹에는 몇 가지 큰 변화가 있었는데요. 이 변화가 전반적인 웹 개발 방식에 영향을 ..

    [바미] Go 1.17 Release Notes

    Go 1.17 소개 최신 Go 릴리스인 버전 1.17은 Go 1.16 이후 6개월 후에 출시됩니다. 대부분의 변경 사항은 도구 체인, 런타임 및 라이브러리의 구현에 있습니다. 항상 그렇듯이 릴리스는 호환성에 대한 Go 1 약속을 유지합니다. 우리는 거의 모든 Go 프로그램이 계속해서 이전과 같이 컴파일 및 실행될 것으로 기대합니다. 언어 변경 부분 Go 1.17에는 언어에 대한 세 가지 작은 개선 사항이 포함되어 있습니다. 슬라이스에서 배열 포인터로의 변환: []T 유형의 표현식 s는 이제 배열 포인터 유형 *[N]T로 변환될 수 있습니다. a가 이러한 변환의 결과이면 범위에 있는 해당 인덱스는 동일한 기본 요소를 참조합니다. &a[i] == &s[i] for 0

    [바미] 백오피스를 고민하다

    좋은 백오피스란 무엇일까, 그리고 어떻게 만들 수 있을까. 의도하지는 않았지만, 저는 항상 백오피스 개발을 맡아왔고, 외부 고객이 바라보는 프로덕트 이상으로 내부 고객이 사용하는 백오피스에 대한 고민을 많이 해왔습니다. 회사마다 팀마다 사정이 다 다르지만, 공통적으로 적용될 부분이 있다고 생각합니다. 백오피스? 일단 보편적인 정의를 먼저 살펴보겠습니다. 국문으로 검색해보면 '어드민 페이지'나 'ERP'와 백오피스를 동일하게 보는 글이 많습니다. 영문으로 검색하면 조금 다른데, 위키피디아 백오피스 항목을 보면 회사 내부자가 사용하는 툴이라고 하더라도 고객을 바라보는 CRM같은 툴은 front-office로 보고, 고객과 무관하게 회사 내부적인 비즈니스 운영을 위한 관리도구를 back-office로 보는군요..

    [바미] 무지성 코딩을 줄여보자.

    인터넷 상에 누군가가 진담반 농담반으로 그랬습니다. 개발자가 가장 필요한 덕목중에 하나는 복붙, 구글링이라구요.. 그러면서 위 사진을 덧붙였죠. 이번에 다룰 내용은 무지성으로 복붙, 구글링을 하다 생겨난 일이 였습니다. 개발을 하다보면 마감에 쫓기게 되는걸 여러번 느끼실 때가 있을겁니다. 저 역시 한참 압박에 시달릴 때 였습니다. 물론 회사에서 푸쉬를 하지는 않습니다만, 제가 생각한 일정에 맞는 결과가 나오지 않으면 저 혼자서 생각한 일정에 맞게 개발이 되야 한다는 엄청난 압박에 시달리더라구요.. 그러다보니 당장 눈앞에 보이는 결과에만 목이 매이게 되고, 그 결과물을 만들기 위해 하게되는 구글링과 복붙이 더 좋지 않은 상황에 몰고 가게 되었습니다. 제가 요번에 이 일이 있게 된 일 중에 하나가 '시간'과..

    [바미] JS에서 for-in 보다 for문을 더 쓰자!

    얼마전에 저를 힘들게? 했었던 코드가 하나 있었습니다. for (let i in this.array) { if (this.array[i].choice) this.index = i; } 이런 형태의 코드 였습니다. 저 부분에서 int형의 값을 가져와야 하는데 자꾸 "1", "2,"와 같은 문자형으로 가져왔고, 해당 부분은 제가 작성한 코드의 부분이 아니였기 때문에 어디 부분이 문제였었는지 파악하는데 더 애를 먹었었습니다. 그러다 알게 된 건 for-in 을 쓰게 되면 i가 오브젝트도 통과가 된다는 사실을 알게 되었습니다. 그래서 저 문법이 조금 위험할 수 있다는 걸 알게 되어 for (let i = 0; i < this.array.length; i++) { if (this.array[i].choice) t..

    [바미] 전문 통신과 TR 통신에 대해서.

    오늘 전문 통신과 TR 통신에 대해 접할 기회가 생겨 정리해보았습니다. 전문 통신 전문(全文) - 서로 주고 받을 데이터의 포맷을 약속(프로토콜)한 후 약속된 데이터 패킷을 전송하고 수신하는 것을 말합니다. 영어로는 full-text 라 불리고 특성상 고정 길이로 전송하죠. 예전에는 바이트배열 형태로 통신을 했습니다. (언어는 달라도 바이트 배열은 다 사용이 가능하니까요.) C언어와 자바와의 통신도 바이트배열은 가능합니다. (바이트는 어느 언어에서든 사용하는 자료형이니까요.) 이때 양측에서 정해진 규칙에 따라 통신을 하게 되는데 대강 이런 형식입니다. 예를 들어 총 길이가 8인 전문 통신을 한다고 가정할 때, 0 ~ 3 길이까지는 사용자 아이디로 4 ~ 7 길이까지는 금액이라고 데이터 포맷을 설정 합니다..

    [바미] Go - os.Args를 이용하여 localhost port 번호 지정하기.

    안녕하세요. 오늘은 Golang에서 지정한 포트번호로 localhost를 접속해야 할 때 방법을 공유해보려 합니다. 커맨드라인 인자 (Command-line arguments)는 프로그램의 실행을 매개변수화하는 일반적인 방법입니다. 예를 들어, go run hello.go는 go 프로그램에 run과 hello.go를 인자로 사용합니다. os.Args는 커맨드라인 인자를 그대로 접근하는 방법을 제공합니다. 보통 "net/http"를 사용하여 간단한 핸들러 추가하여 서버를 실행시키실 때 package main import ( "fmt" "net/http" "os" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request)..