Introduction to LLVM (1)

이번 학기에 고급 컴파일러 설계를 수강했습니다. 물론, 대학원 수업이기 때문에 형식적으로 “고급”이 붙었을 뿐이라 정말 완벽하게 고급진 내용은 아니였지만 LLVM의 구조, 철학, 사용하고 있는 이론적 배경 등을 배우는 수업이였기에 LLVM 소개글 정도로 포스팅의 목적을 정했어요. 수업에서 배운 내용을, 그리고 교수님이 내주셨던 과제와 개인이 제안해서 진행했던 과제들을 수행하면서 겪었던 시행착오들을 정리해 봅니다. 대부분의 내용은 Bernd Burgstaller […]

스크립트 언어를 하나쯤 쓰면 좋은 이유

조금 더 정확히는, 인터프리터 언어를 하나쯤 쓰면 좋은 이유로 생각할 수도 있겠다. 이유는 스크립트 언어가 아닌데 인터프리터가 있는 변태 언어, Scala 때문이다. 인터프리터가 주는 편리함은 생각보다 훨씬 좋다. 다음 예제는 엑셀로도 어렵지 않게 할 수 있다. 다만, 나는 조금 더 범용적이고 리눅스에서도 별 생각없이 터미널 창 띄워서 작업하는 그 감성을 좋아할 뿐이다. 위 예제를 보자. […]

Initialize Angular Form Control with Empty Array

Angular에서 폼의 초기값을 넣어줄 때 주의해야할 점이 있다. 폼에서 사용할 FormControlName을 이 곳의 group 에서 넘기는 객체에 미리 선언해야한다. 미리 초기값을 선언한다면 b와 같이, 선언하고 싶지 않다면 a와 같이 선언하면 되는 간단한 API 이다. c는 조금 다르다. 2를 초기값으로 가지며 배열의 유효성 검사가 없다는 뜻이다, c: [2, null]은 c: 2 와 동일하다. 이와 비슷하게, d는 초기값을 2로 […]

LLVM Stable Build with Docker

LLVM을 미리 빌드해놓은 공식 도커 이미지를 찾지 못했다. 직접 빌드 하려고 찾아보니, LLVM 홈페이지에 보면 도커를 이용해 Stable 버전을 빌드 할 수 있는 다음 코드를 발견할 수 있었다. 실제로 실행해보면 공식 문서와는 –d 라는 파라미터가 없다고 불평하니 -d 로 바꿔주자. (위 스크립트에는 이미 반영됨) 사족으로 staging tag도 stable build에는 어울리지 않으니 이 부분도 변경했다. 또한, 빌드 중간에 […]

친구 과제 훈수썰

친구가 이번 학기에 데이터베이스 수업을 듣는다. 나도 학부 때 들었던 수업이거니와 우리 연구실에서 수업/조교하는 과목이기도 하다.  최근 이 수업을 악명높게 만드는 마지막 프로젝트가 나갔는데, 짧게 말하자면 웹사이트 만들라는 얘기다. 회원가입, 로그인, 게시글 작성 등의 기본적인 기능이 있는 웹사이트를 ORM 없이 RAW SQL을 날려서 조작하는 것으로 학생들의 ERD 설계와 SQL 능력을 시험하기 위함 (…) 이라고는 하지만, […]