전체 글

전체 글

    [소프트웨어 아키텍처 101] Ch06. 아키텍처 특성 측정 및 거버넌스

    6.1 아키텍처 특성 측정 아키텍처 특성을 정의할 때 흔히 다음과 같은 문제들이 발생한다. 물리학이 아니다 : 아키텍처 특성은 대부분 의미가 모호하다. 정의가 너무 다양하다 : 부서마다 정의를 통일하기 전까지는 원활한 소통이 어렵다. 너무 복합적이다 : 바람직한 아키텍처 특성은 대부분 더 작은 다른 여러 특성들로 구성된다. 이 세가지 문제들은 아키텍처 특성을 객관적으로 정의하면 모두 해결된다. 6.1.1 운영적 특성 아키텍처 특성은 성능, 확장성처럼 비교적 정확하게 측정할 수 있는 것도 많지만, 팀 목표에 따라 그에 따른 해석은 미묘하게 갈릴 때가 많다. 예를 들어 특정 요청에 대한 평균 응답 시간을 측정할 경우, 어떤 경계 조건 때문에 1%의 요청이 다른 요청보다 처리 시간이 10배 오래 걸리면 어떻게..

    [C.C.I] 02. 연결리스트

    2.1 중복 없애기 정렬되어 있지 않은 연결리스트가 주어졌을 때 이 리스트에서 중복되는 원소를 제거하는 코드를 작성하라. 연결리스트에서 중복되는 원소를 제거하기 위해서는 원소를 추적할 수 있어야 한다. 여기서는 해시 테이블을 사용해서 처리한다. 연결리스트를 순회하며 각 원소를 해시 테이블에 저장한다. 그러다가 중복된 원소를 발견하면, 그 원소를 제거한 후 계속 진행한다. void deleteDups(LinkedListNode n) { HashSet set = new HashSet(); LinkedListNode previous = null; while (n != null) { if (set.contains(n.data)) { previous.next = n.next; } else { set.add(n.d..

    [C.C.I] 01. 배열과 문자열

    1.1 중복이 없는가? 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라. 자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘 또한 고민하라. 문자열은 ASCII 문자열임을 가정하자. 문자 집합은 boolean 타입의 배열로 만들어서 i 번째 원소는 문자열에 해당 인덱스의 문자가 존재하는지를 확인한다. 배열의 길이는 128이 아니라 256이 되어도 괜찮다. boolean isUniqueChars(String str) { if (str.length() > 128) return false; boolean[] charSet = new boolean[128]; for (int i = 0; i < str.length(); i++) { int val = str.cha..

    [FeBase S3] SVG, Canvas, viewport와 viewbox

    이번 포스팅에서는 SVG와 Canvas, viewport 그리고 viewbox에 대한 개념을 간단하게 정리해 보려고 한다. 1. SVG란? 바로 찾아볼 수 있는 레퍼런스 중 가장 공신력 있다고 판단되는 Mozilla Developer Network(MDN)에서 SVG에 대해서 다음과 같이 설명하고 있다. SVG(Scalable Vector Graphics)는 2차원 벡터 그래픽을 서술하는 XML 기반의 마크업 언어입니다. SVG는 텍스트 기반의 열린 웹 표준 중 하나로, 모든 사이즈에서 깔끔하게 렌더링되는 이미지를 서술하며 CSS, DOM, JavaScript, SMIL 등 다른 웹 표준과도 잘 동작하도록 설계되었습니다. SVG는 달리 말하면 HTML과 텍스트의 관계를 그래픽에 적용한 것입니다. SVG는..

    [Troubleshooting] Next.js에서 dynamic routing 새로고침 에러

    회사에서 Next.js 프로젝트를 개발하다가 이슈를 만났다. /pages/some...path/[id]/index.tsx 이런 식으로 컴포넌트를 만들었고 이 페이지 url은 id=123인 경우 https://domain..name/some...path/123 이렇게 된다. 라우터 훅을 사용해서 router.push('/some...path/123') 이렇게 처리를 하면 동적 라우팅(dynamic routing) 처리가 되어 문제 없이 해당 페이지로 페이지가 이동한다. 문제는 이 페이지에서 새로고침(refresh)을 할 경우이다. 분명히 컴포넌트가 있는데 새로고침을 하면 403 에러가 뜨면서 접근을 할 수가 없다고 나오는 것이 아닌가? 분명히 페이지는 처음에 잘 나타났는데, 이후에 새로고침을 하면 페이지가..

    [소프트웨어 아키텍처 101] Ch04~05. 아키텍처 특성 정의, 식별

    4. 아키텍처 특성 정의 아키텍트는 개발팀과 함께 도메인 또는 비즈니스 요구사항을 정의할 수 있지만, 주로 소프트웨어로 처리할 일 중 도메인 기능과 직접적인 관련이 없는 모든 것들, 즉 아키텍처 특성(architectural characteristic)을 정의, 발견, 분석하는 일을 수행한다. 아키텍처 특성은 다음 세 가지 기준을 충족한다. 비도메인(nondomain) 설계 고려 사항을 명시한다. 어플리케이션 설계 시 어플리케이션으로 처리할 일은 구체적인 요구사항으로 정리한다. 아키텍처 특성은 이 요구사항을 구현하는 방법, 어떤 선택을 하게 된 이유와 관련된 운영/설계 기준을 명시한다. e.g. 일반적으로 어느 정도의 어플리케이션의 성능은 중요한 아키텍처 특성이지만, 요구사항 정의서에는 적혀있지 않는 경..

    [연봉] 2~3년차 개발자들은 연봉을 얼마나 받을까?

    제.곧.내. 나도 그렇고 많은 사람들이 궁금해 할 내용일 것 같아서 한 번 조사를 해 보게 되었다. 본격적인 내용을 들어가기에 앞서, 한 가지 당부하고 싶은 말이 있는데 다른 사람과 나 자신을 너무 비교하면서 힘들지는 않았으면 좋겠다. 2~3년차는 아직 한참 배워야 하는 시기이고(나 포함), 경력보다는 성장가능성을 더 기대하는 시기이며, 어짜피 여기서 많이 받나 적게 받나 이것만 가지고는 집 못산다. 그냥 참고 정도로만 봐주시고 많이 받으시는 분들은 저한테 아이스크림 하나씩만 사주시면 참 고마울 것 같다. 오픈되어 있는 웹사이트(ex. 잡플래닛 같은 채용 플랫폼)에 나와있는 정보들은 아마 다 각자가 확인해 볼 수 있을 것 같아서 그건 제외하고, 내가 지금 속해 있는 개발자 오픈 카톡방에서 익명으로 자신의..

    [패캠] The RED : 김민태의 React와 Redux로 구현하는 아키텍처와 리스크 관리

    오늘은 패스트캠퍼스에서 최근에 수강했던 김민태님의 강의를 듣고 학습했던 내용을 정리해 보려고 한다. 시작하기에 앞서서 이 강의는 패캠에서 어떠한 대가도 제공받지 않고 직접 수강하고 내용을 정리하는 것임을 밝힌다. 목차 1. 프론트엔드 개발자가 갖춰야 할 필수 소프트 스킬 한 회사에 종속된 기술을 사용하는 것은 위험하다. e.g. Flash 개발자가 개발만 잘 한다고 좋은 제품이 나오는 것은 아니구나. e.g. 모바일 서비스 어떻게 하면 기술을 쉽게 이해할 수 있을까? e.g. 외계어 스터디 WEB 개방형 스탠다드 웹을 제외하고는 벤더 디펜던시가 있다(iOS, Android, Java-Spring 등) 웹도 지금 100% 개방형 기술이라고 보기는 어렵다. FRONT 제일 앞에 있다. 시각적 요소 중요 EN..