5월은 여러가지 일이 있어 참 바빴던 달이라 이제서야 후기를 적는다. MelbJS은 매달 정기적으로 열리는 멜번 JavaScript 밋업이다. 멜번에서도 다양한 밋업이 정기적으로 열리고 있는데다 한결 같이 흥미로운 주제라 자주 가고 싶지만 끝나고 집에 가는 것이 애매해서 1년에 두어 번 정도 가지 못할 뿐더러 가더라도 막차를 타야해서 앞 세션만 듣고 나와야 하는 아쉬움이 늘 있다. 관심있는 주제도 있고 새로운 자극도 받을 겸 시간내서 참가했다.

Aconex 1

밋업은 매월 Aconex 오피스에서 진행하고 있다. 식당 공간을 다용도로 사용할 수 있도록 잘 만들어둬서 올 때마다 사무실이 생기면 꼭 이렇게 공간을 꾸며야겠다는 생각이 든다. 벽 한 켠은 칠판으로 만들어 둬 현재 이 회사에서 진행중인 프로젝트를 힐끔 살펴볼 수도 있다. (밋업을 가면 분위기라는게 있는데 Python 밋업은 학구적인 모임, JS 밋업은 힙스터 모임, .Net 밋업은 제2의 회사로 출근한 분위기다. 흐흐.) 스폰서가 많아 생맥주에, 피자에, 장소까지 풍성하다. 음식을 제공하는 행사마다 채식, 할랄 푸드를 먹는 사람을 위한 메뉴를 두는 모습이 참 보기 좋다.

Smarter CSS Builds with Webpack

envato의 개발자인 Ben Smithett의 세션이었는데 Webpack을 이용해서 CSS를 패키징하는 방법을 보여줬다. 패키징 자체는 크게 새로운 얘기가 아니었지만 컴포넌트 단위의 개발에서 CSS를 편리하게 적용할 수 있는 방법을 제시했다. 어플리케이션에서 실제로 필요하지 않은 CSS까지 전부 불러오는 것이 아니라 컴포넌트에서 필요한 CSS만 불러오는 형태로 작성해, 컴포넌트 단위 구성을 스타일까지 확장할 수 있게 된다.

물론 컴포넌트 단위로 사용하려고 하면 CSS도 컴포넌트 단위에 맞는 접근이 필요하다. CSS pre-compiler를 사용하게 되면 변수의 scope가 전역적으로 다뤄지기 마련이라 각 컴포넌트를 독립적인 css로 관리하는데 불편함이 있는데 각각 독립된 컴포넌트에서 필요한 변수셋을 불러오는 형태로 그 의존성을 분산할 수 있다.

컴포넌트를 더 컴포넌트답게 활용할 수 있게 하는 아이디어라서 더욱 마음에 들었던 세션이었다. react로 개발하고 있다면 살펴볼 만한 좋은 주제다. 전체 세션의 내용은 Ben Smithett의 블로그 포스트에서 확인할 수 있다.

React Native — One of these things is not like the other

Matt Delves의 세션으로 react native에 대한 전반적인 이야기를 다뤘다. 이전에 공식 문서 튜토리얼을 살펴봤을 때랑 많이 달라지지 않아 크게 새로운 이야기는 없었지만 flux 아키텍쳐에 대해 알게된 후 듣는 react native라서 기분이 새로웠다. 세션 중간에 Colin Eberhardt를 인용했는데 react에 대해 정확하게 표현하는 느낌이다.

“React는 사용자 인터페이스를 생성하는데 독창적이며 급진적인, 고수준의 함수형 접근을 도입했다. 간단히 말해, 어플리케이션의 UI는 단순히 현재 어플리케이션의 상태를 표현하는 함수 역할을 한다.”

“React introduces a novel, radical and highly functional approach to constructing user interfaces. In brief, the application UI is simply expressed as a function of the current application state.”

아직 구현되지 않은 view도 많고 부족한 부분이 있지만 계속 개선되고 있어서 더욱 더 기대되는 라이브러리다. 전체 발표 내용은 GitHub Repo.에 올려져 있다.

Aconex 2

요즘 쏟아지는 수많은 라이브러리를 다 써보지 못해서 늘 아쉬운 기분이 든다. 실무에서 사용하지 않고 있다면 개인 프로젝트로라도 진행해서 써봐야 이해도 되고 손에도 익는데 무언가 만들고 싶은 욕구가 덜해서 고민이 많다. 아무리 바쁘더라도 한 발자국 물러나면 별 일도 아닌 일인 경우가 너무나도 많은데 쉽지 않다. 여유를 다시 찾고 다시 재미있게 코드를 만들 수 있었으면 좋겠다.

멜버른에도 많은 개발자 모임이 활성화되어 있고 세션이 운영되고 있는데 그 중 MPUG(Melbourne Python Users Group)에서 매월 첫주 월요일에 열리는 meetup에 처음으로 다녀왔다. 장소는 협업 공간인 Inspire9이고 Richmond역에서 3분 정도 거리에 있다.

Don’t do this! — Richard Jones

어떤 방식으로 파이썬 코드를 작성해야 하는가에 대한 세션으로 동일한 내용을 PythonAU 2013에서 진행했었다고. 많은 코드 예제들과 함께 어떤 방식으로 작성하면 좋은지에 대해 세세하게 설명해줬다. 디버깅을 위한 q1와 Java와 같은 방식으로 overload할 수 있게 도와주는 Overload2에 대한 이야기3가 인상적이었다.

Show and Tell: The Great Language Game — Lars Yencken

근래 여러번 트윗에 남겼던, Great Language Game에 대한 세션. 멜버른 대학교에서 개발한 langid.py를 이용하면 해당 문자열이 어떤 언어로 작성되었는지 알 수 있는데 그걸 음성 데이터를 불러와 어떤 언어인지 판단하도록 만들었다고. 슬라이드에 개략적인 내용이 잘 정리되어 있다.

HN에 뜬 이후 방문자에 엄청 몰렸는데 geventflask로 문제 없이 잘 버티고 있다는 후기를 메일링 리스트에 남겼다.

PyPy.js: towards a fast and compliant python shell for your browser — Ryan Kelly

이 날 가장 핫한 주제였던 PyPy.js는 주제도 흥미로웠고 내용도 재미있었다. 발표자는 현재 모질라에서 일하고 있다고. asm.js이라는 low-level subset이 있는데 슬라이드에서처럼 asm.js + PyPy = PyPy.js의 아이디어로 시작했다고 한다. 시연에서 실제로 구동하는 모습을 보여줬는데 Python 표준 라이브러리를 포함해 275MB 크기(…)의 js가 나오고 그걸 구동하는데 FF가 스피너마저 굳는 모습을 보여줬지만 신기하게 잘 동작했다.

JIT에 대한 설명도 있었는데 내가 JIT에 대해 잘 몰라서… 이렇게 깊은 얘기까지 할 줄 몰랐다.

나도 처음 들었을 때 똑같은 의문이 들었는데 역시나 사람들이 물어봤다. 이거 완전 멋지다. 근데 왜만듬ㅋ? 답변도 역시, 브라우저에서 되면 쿨하잖아? (쿨문쿨답)

일단 구현이 완료되고 실용적으로 쓸만큼 안정적인 환경이 된다면 Python을 웹으로 바로 포팅도 가능한데다 Firefox OS에서의 Python app까지 고려할 수 있을 만큼 재미있는 아이디어라고. 앞으로 가능성도, 수효도 분명 많을 프로젝트라는 설명.

생각 조각들

  • 처음이라 어색했지만 꾸준히 와야겠다는 생각. 그래도 분위기가 딱딱하지 않아서 좋았다.
  • 연령대가 상당히 다양했다.
  • 첫 세션에서 C API 부분까지 내려가서 이야기 하는 것을 보고, Python을 잘 하려면 C에 대해서도 잘 알아야겠구나 싶었다.
  • 다녀오기 전까지는 메일링 리스트에 가입되어 있어도 별 관심이 없었는데 다녀오니 내용도 재밌고 관심도 더 생겼다. 좋은 자극.

Footnotes

  1. q — pypi

  2. overload — pypi

  3. 딜리게이터를 이용해 overload를 할 수 있도록 구현해줬는데 다들 왜 이런게 필요하지? 식의 반응. Python 커뮤니티 답다.

색상을 바꿔요

눈에 편한 색상을 골라보세요 :)

Darkreader 플러그인으로 선택한 색상이 제대로 표시되지 않을 수 있습니다.