전체 글 39

왜 우리는 사변(思辨)해야 하는가

이전 글에서 언급했듯이, 디자인은 공예로부터 출발하였다고 여겨집니다. 디자인에게 주어진 첫 역할은 기능과 형태가 거의 완성된 디자인 대상물에 심미적인 요소를 더하여 상품성을 더 올리는 것이었는데, 이로 인해 디자인은 '제작 과정에서 장식을 더해 더 높은 값으로 판매하려 하는' 일종의 상술처럼 여겨지기도 했습니다. 물론 이 당시 기준으로는 그렇게 볼 수도 있었겠지만, 이것은 오래된 오해일 뿐입니다. 디자인의 역할과 개념이 더 발전하면서 디자인은 공정의 초기 단계로 점차 옮겨 참여하게 되었는데, '기능과 형태를 어떻게 정할지' 고민하는 역할로 그 지위가 점차 바뀌게 된 것입니다. 이는 소비자들이 점차 상품 구매 결정에 심미성을 중요하게 반영하기 시작했기 때문이었는데, 그렇게 보다 결정권을 가지기 시작한 디자..

미래를 위한 디자인 시작하기

스페큘러티브 디자인(Speculative Design)이라는 개념이 있습니다. '디자인(Design)'이라는 개념은 처음에 공예(Craft)로부터 출발했다고 여겨지는데요, 공산품에 예술을 더하는 공예의 개념에서 점차 공산품을 만드는 과정에서 예술을 생각하는 식으로 분화되어 나온 것이라고 할 수 있겠습니다. 그런 식으로 무언가의 공정에서 그 목적과 효율성에 맞춰 기획하고 조율하는 것으로 의미가 확장되어 오던 '디자인'에 추측, 전망을 뜻하는 '스페큘레이션(Speculation)'이 붙은 것이지요. 즉, 미래를 예측하고 전망하는 디자인을 뜻하는 개념인데, 사실 이 자체는 '디자인'이라는 개념에는 자연스럽습니다. 디자인은 원래 그 목적물의 사용자와 사용환경을 예측하고 사용 목적에 맞춰 효율화된 형태를 제공해왔..

[AI-14] 근접 영역 속에서 나를 찾도록 : k-Nearest Neighbors

k-NN 알고리즘(k-Nearest Neighbors)은 레이블이 지정되어 분류된 기존의 데이터 분포에 새로운 데이터를 배치시키면서 임의의 k값을 기준으로 근처에 위치한 데이터들이 갖는 레이블로 데이터를 분류하는 분류 방법이다. 일단은 레이블 개념이 등장하는 것부터 알 수 있듯이, 기본적으로 지도학습(Supervised Learning)에 속한다.그런데 분류하는 방법은 위에서 설명한 바와 같이 비지도학습인 군집분석(clustering)과 유사한 방식을 취한다. 즉 특별히 어떤 학습을 거치지 않고 마치 군집화하듯이 데이터 간의 거리를 계산해 그 분포로 데이터를 파악하는데, 이러한 접근이 '비지도학습적'으로 느껴질 수 있어 비지도학습으로 분류하거나 준지도학습(Semi-supervised)으로 따로 보려는 접..

[Canvas] 선을 그리는 다양한 방법들 - 직선

Canvas에서 가장 기본적인 드로잉 개체는 역시 '선'일 것이다. 선은 크게 직선과 곡선으로 나뉘는데, 먼저 직선부터 살펴보고자 한다.직선을 그릴 때에는 간단하게 lineTo라는 메소드를 사용하면 된다. 직선을 그릴 때 필요한 것은 시작점과 끝점인데, 시작점은 현재위치가 되므로, lineTo 메소드는 끝점의 좌표만을 인자로 한다. 즉, lineTo(x,y)를 하면 x,y를 향해 선을 그리게 된다. 시작점은 (0,0)이 기본인데, 아무 것도 그리지 않고 시작점을 그리기 위해서 moveTo를 사용할 수 있다. Canvas의 호출부터 하면 아래와 같다. (HTML 문법)(10,10)에서 (90,90)으로 선을 그렸는데 아무 것도 보이지 않는다. 선의 색깔과 그리기 명령이 빠졌기 때문이다. 재미있는 것은 선을..

ETC 2024.11.28

[Canvas] Canvas API에 대해 알아보자.

최근 참여 중인 프로젝트에서 SVG 못지 않게 많은 부분을 차지하고 있는 것이 바로 이 Canvas인데, 그 전에도 QML쪽에서 어떤 요소들을 그릴 때 가볍게는 사용해 본 적이 있지만 아주 본격적으로 써본 적은 없어서 많은 어려움을 겪었었고, 지금도 살짝 남아있다. Canvas에 대해서도 공부해보면서 그 기록을 남기고자 한다.Canvas API는 Javascript를 활용해 그림을 그리는 API(Application Program Interface)로, 주로 2D 그래픽에 초점을 두고 있으나 3D 그래픽도 제한적으로 지원하는 인터페이스이다. 때문에 Javascript 문법을 많이 따르며, Javascript 숙련도가 높으면 비교적 쉽게 다룰 수 있는 API이다.HTML의 엘리먼트나 QML의 Canvas..

ETC 2024.11.27

[SVG] SVG에 대해 알아보자.

최근 작업 중인 프로젝트에서 SVG를 조작하고 사용할 일이 있는데, 아직 SVG에 대해 자세히 알지 못하는 부분들이 있다보니 꽤 어려움을 겪었던 내용이 있었다. 그래서 이번 기회에 SVG에 대해서 자세히 알아보면서 내용을 정리해두고자 한다.1. SVG란SVG를 그 전에도 많이 접하고 직접 많이 만들기도 했었는데, 정확한 용어의 정의는 이번에 알게 되었다. SVG는 Scalable Vector Graphic의 약자로, '크기 조작이 가능한 벡터 그래픽'이라는 의미이다. 말 그대로 벡터 그래픽이기 때문에 확대하거나 축소해도 래스터화(Rasterized) 된 비트맵(Bitmap) 이미지와 달리 계단 현상(Aliasing) 문제가 생기지 않는데, 그래픽 자산 자체가 선과 색상 정보 등을 좌표와 코드로 가지고 있..

ETC 2024.11.26

[QML] 반복되는 요소 구현하기: Repeater

우리가 기계를 사용할 떄 얻을 수 있는 이점은 크게 두 가지인데, 누군가 관리하고 있지 않아도 알아서 조건에 맞춰 동작하는 것(조건화)과 반복적인 일을 대신하는 것(반복화)일 것이다. 흔히 if절과 for절로 설명되는 이 두 기능은 많은 코딩언어에서 비슷한 문법으로 작동하는, 매우 주요한 기능이기도 하다.그러나 QML에서는 이들이 조금 다르게 작동하는데, 어디까지나 마크업 언어이기 때문에 일반적인 프로그래밍 언어에서처럼 if절이나 for절을 선언할 수 없기 때문이다. 그래서 if절도 for절도 각각 우회적인 방법으로 구현되는데, 그 중 오늘은 for절과 대응되는 컴포넌트인 Repeater를 살펴보고자 한다.Repeater는 이름 그대로, 반복되는 요소를 넣기 위한 컴포넌트 요소이다. 지난 글에서의 Row..

Qt 2024.11.25

[QML] 레이아웃 잡기 : Grid, Row, Column

마크업에서 가장 많이 사용하는 것 중 하나가 바로 레이아웃 관련된 내용일 것이다. QML에서는 레이아웃에 관련하여 세 가지 기능을 제공하는데, Grid와 Row와 Column이 그들이다. 이들을 잘 몰랐을 때에는 Item에서 살펴봤던 anchors 속성을 사용하거나 x.y 좌표를 사용해 배치를 잡는 경우가 많았는데, 각각 특성이 있어 원하는 목적에 따라 잘 알고 사용해야 하며, 사실 레이아웃을 위해 만들어진 컴포넌트는 이 셋이므로 되도록 이들을 사용하는 것이 안전하다.1. RowRow는 말 그대로 행으로 배치되는 요소들을 정의한다. 즉, Row의 자식 요소들은 자동으로 가로로 배치된다.Row { width:parent.width height:200 spacing:5 Item { id:i..

Qt 2024.11.24

[QML] 가장 기본적인 컴포넌트, Item

HTML(HyperText Markup Language)에서 가장 기본적인 요소를 꼽으라면 와 같은 태그가 될 텐데, QML에서는 Item이 이와 비슷한 지위를 갖는다. Item은 말 그대로 단순히 어떤 물체를 정의하는 것인데, 많은 컴포넌트 요소가 이 Item을 상속받아 사용하며, 따라서 Item이 가진 속성의 대부분이 공용되는 반면에 Item은 다른 컴포넌트의 많은 속성들을 사용할 수 없기도 하다.Item이 갖는 대표적인 속성들이 주로 크기와 위치에 관계된 속성들로, 예를 들어 x,y, width, height와 같은 기본적인 레이아웃 관련 속성들과 anchors와 같은 바인딩 관련 속성이 그것이다. 우선 x, y, width, height의 경우 그 이름 그대로 x좌표, y좌표, 너비, 높이를 의미..

Qt 2024.11.23

[AI-13] 단순하지만 강력하게 평균으로 모으기 : K-means Clustering

통계에서 means는 의미가 아닌 '평균'을 의미하는 말로, K-means의 means 역시 이름을 보면 평균을 활용하는 군집분석(Clustering)일 것임을 알 수 있다. 그렇다면 K-는 무엇일까? 일반적으로 K-라는 말이 상징하는 수많은 단어들이 떠오르지만, 사실 여기에서 K는 큰 의미가 없이 단지 미지수 x나 정해지지 않은 숫자를 표현할 때 주로 사용되는 n과 같은 의미이다, 일상에서는 이러한 경우에 n이 더 많이 사용되지만, 수학이나 알고리즘에서는 k가 많이 사용되는 것이 그 이유라고 할 수 있다.즉 이 방법의 이름을 정리하면 K개의 평균으로 군집화하는 분석이라고 설명할 수 있다.그래서 K-means Clustering의 가장 첫 번째 절차는 몇 개(k)의 군집을 만들 것인지를 정하는 것이다. ..

728x90
반응형