SFML(Simple and Fast Multimedia Library)은 멀티미디어 제작을 쉽게 하기 위해 단순한(simple interface) API를 제공하는 C++로 작성된 크로스 플랫폼 Library이다. SFML은 System, Window, Graphics, Audio, Network 등의 모듈을 제공한다. 또한 OpenGL 컨텍스트를 만들고 관리한다. 기존의 크로스 플랫폼 멀티미디어 API인 SDL(Simple DirectMedia Layer)은 C언어를 바탕으로 만들어져 객체 지향의 아쉬움이 있는데, 비해 SFML은 C++로 작성되었으며 버전이 올라가면서 이제 다양한 바인딩 언어(C#, Java, Python etc)를 지원한다. 참고(위키, 나무위키, SFML사이트)
2019년 4월 2일 Microsoft는 Visual Studio 2019를 발표했다. 코딩을 빨리 시작할 수 있는 새로운 시작 창, 검색기능 및 성능향상과 더불어 Visual Studio IntelliCode AI를 지원한다. 개발자의 코딩 스타일을 개발 툴이 머신러닝한 후 최적화하여 보여준다. 윈도의 경우 .NET Core 3으로 WinForm, WPF를 개발할 수 있는데 초기 버전에서 통합된 모습은 보여주지 않았지만 5월에 있을 Microsoft의 연례 Build 개발자 콘퍼런스에서는 자세한 로드맵이 나올 것으로 보인다. Microsoft는 올 하반기에 .NET Core 3 정식 버전을 발표할 예정이다. 개인적으로는 Blazor에 관심이 많은데 Angular(JS), React(JS)를 C#언어 차원에서 코딩할 수 있기 때문이다. 물론 Blazor가 모든 프론트엔드를 대체할 수 없을 것이다. 아래의 동영상 강좌는 Blazor의 Hello World를 경험할 수 있게 해준다.
한 row에 어떠한 column 집합을 연속적으로 연결해서 보여주고 싶을 때가 있다. 특히 데이터를 연결해서 보여줄 때 comma separated list, delimiter를 사용한다. MySQL은 GROUP_CONCAT, Oracle은 LISTAGG, SQL Server는 STRING_AGG를 사용한다. 그러나 string_agg 함수는 sql server 2017부터 지원하는 함수이다. 이전에는 stuff, for xml, path를 사용하여 구현하였다. 대용량이 아닐 경우는 아래와 같이 sqlclr을 사용하면 group concat을 쉽게 구현할 수 있다.
-- dbo.GROUP_CONCAT(VALUE)
-- dbo.GROUP_CONCAT_D(VALUE, DELIMITER)
-- dbo.GROUP_CONCAT_DS(VALUE, DELIMITER, SORT_ORDER)
-- dbo.GROUP_CONCAT_S(VALUE, SORT_ORDER) -- 1:asc, 2:desc
SELECT some_id,
dbo.GROUP_CONCAT(some_column) as delimited_list
FROM dbo.some_table
GROUP BY some_id;