꽃이 모든 것을 바꿔놓았다

번역: coolspeed

아주 오래전에, 보다 정확히는, 2억 년 전에 지구 상에는 꽃이 없었다. 그러다가 양치식물과 선태류가 나타났고 소나무류와 소철류가 나타났다. 하지만 이런 식물은 진정한 꽃과 열매를 형성하지 않았으며 그중 일부는 무성번식이어서 여러 가지 방법으로 자기 자신을 클론 할 뿐이었다. 유성번식은 상대적으로 많은 발전 뒤의 산물이었는데 통상적으로는 꽃가루가 바람이나 물속에 퍼지는 현상과 엮여있었다. 일종의 철저한 우연으로 꽃가루는 이처럼 같은 종의 대른 개체에 도달하는 방법을 얻게 되었고 이로써 하나의 작고 원시적인 씨앗이 형성되었다. 지금과 비교할 때 이 꽃이 생기기 전의 세계는 보다 느리고 간단하며 잠들어있는 세계였다. 이렇게 자연 진화는 계속되었다. 세상의 성(性) 은 드물었다. 그것은 아주 근접하면서도 종속이 밀접히 연계되어있는 식물들에게나 존재했다. 이런 보수적인 번식 방식은 생물학적으로 보다 간단한 세계를 구성하였다 — 그것이 일으키는 신생 사물이나 변화가 상대적으로 적었기에.

열매와 큰 씨앗이 존재하지 않아 많은 온혈 동물들을 지탱할 수 없었기에 파충류 동물들이 세상을 지배하고 있었다. 언제이든지를 막론하고 기후가 추워지면 생명은 파행(爬行) 형태로 퇴화되는 법이다. 당시의 세계는 지금보다 많이 소박했고 더욱 푸르렀으며 꽃과 열매가 선사할 수 있는 빛깔과 형태 패턴들이 적었다 (냄새는 더욱 말할 것도 없다). 아름다움이란 아직 존재하지 않았다. 다시 말해 사물이 관찰되는 방식은 욕망과 관련이 없었다.

꽃이 모든 것을 바꿔놓았다. 속씨식물 — 꽃을 형성할 수 있고 나아가 둘러싸인 씨앗을 형성할 수 있는 식물이 백악기에 나타났다. 드디어, 더 이상 바람과 물에 의뢰해 사처로 유전자를 퍼뜨릴 필요가 없게 되었다. 식물들은 이미 동물들의 도움을 꾀할 수 있게 되었다. 이것은 일종의 공통 진화의 거대한 계약이다: 영양으로 운송을 교환하다. 꽃이 출현함으로 새로운 수준의 복잡성이 이 세계에 나타나게 되었고 더욱 많은 상호 간의 의뢰 관계가 생기게 되었으며 더욱 많은 정보가 생겼고 더욱 많은 교류가 생겼으며 더욱 많은 실험이 진행되었다.

식물의 진화는 새로운 동력에 의해 진행되기 시작했다. 그것은 바로 서로 다른 종들 간의 끌림이다. 이제 자연선택은 꽃가루 운반자의 주의력을 끌 수 있는 꽃들과 채집자를 흡인할 수 있는 열매를 선호하기 시작하였다. 다른 생물의 여러 가지 욕망이 식물의 진화 과정에서 극히 중요해지게 되었다. 원인은 간단하다: 성공적으로 이런 욕망을 만족시킬 수 있는 식물들이 더욱 많은 후대를 갖게 된다. 아름다움은 일종의 생존 책략으로 출현하였다.

새로운 룰은 진화의 발걸음을 가속시켰다. 보다 크고 보다 반짝거리며 보다 달고 보다 향기로운, 새로운 룰에서 모든 질은 재빨리 그 보상을 받았다. 전문화도 보상을 받았다. 식물의 꽃가루는 곤충의 몸에 묻혀 운반하는 것이었기에 잘못된 곳에 배달되는 경우도 있었다. 예를 들면 아무 관련도 없는 꽃으로 배달된다거나. 하여 일종의 낭비가 있었다. 그래서 외형상으로나 향기상으로나 기타 종과 구분된다는 점도 일종의 장점이 되었다. 제일 좋기로는 한가지 종의, 일심전력 헌신을 원하는 곤충을 장악하는 것이다. 그리하여 동물들의 욕망은 해석되었고 세분화되었으며 그에 상응하여 식물들도 전문화되었다. 이렇게 유례없는 꽃의 다양성이 나타났고 그들 대부분은 공통 진화와 아름다움이란 표지를 갖고 있었다.

꽃은 열매와 씨앗으로 되었고 이것들은 지구 상에서 다시금 생명을 창조했다. 당분과 단백질을 생산해 동물들을 유혹하여 자기의 씨앗을 운송하게 함으로써 속씨식물은 지구 상 식물의 에너지 공급을 늘렸고 이로 인해 대형 온혈 포유동물들의 출현이 가능하게 되었다. 꽃이 없었다면, 열매가 없는 잎사귀 세계 속에서 잘만 살고 있던 파충류들은 아마 아직도 세계를 지배하고 있었을거다. 꽃이 없었다면 인류는 아마 존재하지 않았을 것이다. 꽃이 우리 — 그들 최대의 탄복자들을 만들었다.

출처: 《욕망하는 식물》

[번역] ZeroMQ설계자: 세계를 구원하라

  • 번역: coolspeed

이 글은 ZeroMQ설계자가 지은 책이며 ZeroMQ의 “바이블”이라 불리는 ZGuide 의 머리말이다.

이 책은 다양한 프로그래밍 언어 예시 버전의  PDF, epub 등 이북 포맷으로 다운로드도 가능하고[1], 한글 번역도 온라인에서 읽을 수 있다. 당연히 그속에는 이 머리말의 한글번역도 포함되어 있었다. 다만 번역이 만족스럽지 못해 필자가 직접 번역했다.


ZeroMQ 100 자 요약

ZeroMQ (ØMQ, 0MQ, or zmq 라고도 표기함) 는 임베드블 네트워킹 라이브러리처럼 생겼는데 실제론 컨커런시 프레임웤처럼 작동한다. ZeroMQ 는 원자적으로 메시지를 배송하는 소켓을 제공하는데 그 배송수단으로는 스레드간 통신, 프로세스간 통신, TCP 그리고 multicast 등 다양하다. 당신은 ZeroMQ 소켓을 N-to-N 방식으로, fan-out, pub-sub, task distribution, 그리고 request-reply 등 패턴으로 사용할 수 있다. 이것은 클러스터 제품들의 뼈대로 사용하기에 전혀 문제 없는 높은 성능을 가지고 있다. 이것의 비동기 I/O 모델은 당신이 message-passing task처럼 짜여진, 확장성 있는 멀티코어 애플리케이션을 만들 수 있게 해준다. 언어 API 만큼 고득점을 갖고 있으면서 거의 모든 OS에서 돌아간다. ZeroMQ 는 iMatix 에서 개발했으며 LGPLv3 라이센스로 소스가 오픈되어있다.

 

세상을 구원하다

ZeroMQ 요놈은 정말 좋은데. 어떻게 말로 표현할 방법이 없네.  ZeroMQ의 가치를 설명하기 위해, 일부 사람들은 요놈이 제공하는 모든 훌륭한 기능들을 나열하는 것으로 부터 시작하려고 한다:

  • 이놈은 스테로이드를 처먹은 소켓이야.
  • 이놈은 라우팅 기능이 있는 우편함으로 비유할 수 있지.
  • 존나 빠름.

Continue reading

왜 최근에 빌 게이츠, 엘론 머스크, 스티븐 호킹 등 많은 유명인들이 인공지능을 경계하라고 호소하는가?

저자: Tim Urban

번역: coolspeed

Translated in 27 December, 2015

주: 무단 전재를 허용하지 않습니다. 허락을 받아야 전재를 할 수 있습니다. (링크로 공유하는 것은 환영합니다. 읽고 재미 있으셨다면 SNS에 많은 공유 부탁드립니다.)


인공지능은 인류의 영생이나 멸종을 초래할 수 있는데 이 모든 것은 모두 우리가 살아있을 때 일어날 수 있다고 합니다. 번역하는데 굉장히 오래 걸렸습니다. 이렇게 한 원인은 제가 이 글이 매우 가치가 있다고 생각했었기 때문입니다. 독자들도 인내심있게 다 읽기 바랍니다. 읽고 나면 당신의 세계관이 모두 바뀔지도 모릅니다.


내용 출처: waitbutwhy.com

원문링크:

Part I: The AI Revolution: The Road to Superintelligence

Part II: The AI Revolution: Our Immortality or Extinction


우리는 지금 격변의 변두리에 서있다. 이런 격변은 인류의 출현과 맞먹을 만큼 의미가 중대하다. — Vernor Vinge

당신이 여기 서있다면 무슨 느낌 이겠는가?

00

Continue reading

Skynet 의 UDP 지원

작자: cloudwu

번역: coolspeed

오랜 고민 끝에 결국 skynet (https://github.com/cloudwu/skynet) 에 기본적인 UDP 지원기능을 넣기호 했다. 대부분 경우, 특히 네트워크 게임 영역에 있어서 나는 UDP 프로토콜 사용을 반대하지만 skynet 은 이미 게임영역에만 사용되는게 아니라는 점을 고려하여 UDP 지원을 추가하는게 의미있는 일이라고 생각했다.

그나저나 최근의 피드백상으로 보면 어떤 사람은 skynet 을 이더넷 스위치 (Ethernet Switch, L2스위치) 상에 사용했고 (사용한 CPU 가 powerpc 의것이여서 Big / Small Endian 관련된 버그들을 해결하는데 도움이 됐다고 한다), 증권영역에 사용했다는 사람도 있었다. 그리고 비디오 방송영역에서 사용한다는 사람도 있었다. 그리고 아마 skynet 을 web 개발에 사용하는 사람도 있을 것이다. 간단한 테스트 결과에 의하면 성능면에서 lua 를 nginx 에 접합시켜 사용하는 것보다 못지 않았다.

현재 UDP 부분의 코드는 이미 완성되였는데 github 에서 udp 라는 브랜치에 넣었다. 멀지 않아서 마스터 브랜치에 머지할 생각이다. 나 자신은 이 방면의 니즈가 없어서 이런 니즈가 있는 친구들이 코드를 읽고 실제로 사용해주기를 바란다. 그래야 잠재한 문제점들을 찾을 수 있으니까.

이 부분의 설계와 일부 api 문서들은 wiki 에 보충해넣었다. ( https://github.com/cloudwu/skynet/wiki/Socket ) (중문)

Written in November 13, 2014
Translated in December 24, 2015

원문링크: http://blog.codingnow.com/2014/11/skynet_ae_udp_oeoe.html

Skynet 설계 설명

작자: cloudwu

번역: coolspeed

한달이란 시간에 걸쳐 드디어 skynet (https://github.com/cloudwu/skynet) 의 C 버전을 완성했다. 중간에 여러 모듈을 반복하여 리팩토링 한 결과 최종 남은 코드는 얼마 되지 않았다: 겨우 C 코드 6천여줄, 그리고 Lua 코드 천여줄이었다. 비록 일부 코드는 좀 급하게 짰지만 나 자신의 퀄리티 요구에 부합된다. 버그는 피면하기 어렵겠지만 이정도 작은 규모의 코드베이스는 충분히 명료하여 수정하기가 어렵지 않을 것이다.

Github 에 올린 이 프로젝트를 개발하는데 사용된 시간은 사실 한달도 훨씬 안된다. 나의 대부분 시간은 지난 반년 넘게 짜놓은 Erlang 버전 프레임워크와의 하위호환성과 호환 안되는 Erlang 모듈들을 포팅하는데 허비했다. 이 부분 코드들은 저희의 실 게임프로젝트와 관련 있는 것이어서 오픈하지 않았다. 또한 양이 이보다 몇배나 되는 관련코드들을 왕창 올려봤자 이 오픈소스프로젝트의 의미에 도움이 되지 않을 것이다. 프로젝트에 관심을 가지는 친구들은 그런 별로 중요하지도 않고, 많은 인터페이스들이 레거시 부담으로 추하게 설계된 구조 때문에 오히려 미궁에 빠질 것이다.

저희의 구 프로젝트와 연동시켜 보고 포팅도 다 잘 됐음이 확인된 후에 나는 또 skynet 의 일부 밑층 설계를 수정했다. 안전한 포팅을 보장하는 전제하에서 최대한 개선을 함으로써 히스토리컬 레거시를 최소한으로 걺어지도록 힘썼다. 이런 수정들은 쉽지 않았지만 의미가 있다고 생각한다. 최근 내가 자세하게 생각을 굴린 성과들이다. 오늘의 이 블로그글에서 나는 이번 픽스된 버전을 토대로 설계 설명을 좀 기록하려고 한다. 추후 찾아보기에도 좋게.


Skynet 코어는 어떤 문제를 해결하는가

나는 우리의 게임 서버가 ( 하지만 skynet 이 게임서버에만 사용될 수 있는게 아니다) 충분히 멀티코어의 파워를 이용할 수 있기를 바라며 서로 다른 비즈니스 로직들을 서로 독립적인 실행환경속에서 협동적으로 작동시키기를 원한다. 최초에 나는 이런 실행 환경이 OS 의 프로세스이기를 바랬다. 하지만 후에 발견한건데 만약 우리가 임베디드 언어를 필연적으로 사용하게 된다면, 예를 들어서 Lua, 독립적인 OS 프로세스의 의미가 크지 않을 것이다. Lua State 는 이미 충분히 양호한 샌드박스 환경을 마련해주어 서로 다른 실행환경을 격리해줄 수 있었다. 뿐만아니라 멀티스레딩 방식은 상태 공유를 통해 데이터 교환을 더욱 효율적으로 할 수 있게 해준다. 그러면서 멀티스레딩이 흔히 비평받는 단점들, 이를테면 복잡한 스레드 락, 스레드 스케쥴링 등은 밑단의 규모를 가능껏 제한하고 설계를 최대한 간소화함으로써 최소한의 범위안으로 가두어둘 수 있다. 이런 입장에서 skynet 은 최종적으로 3000 줄 안되는 C 코드로 코어층을 구현했는데 이것은 코딩 좀만 할줄 아는 C 프로그래머라면 빠른 기간내에 이해하고 유지보수 할 수 있는 규모이다.

핵심기능차원에서 skynet 은 오직 한가지 문제만 해결한다:

하나의 규약에 부합되는 C 모듈을 다이나믹 라이브러리 ( so 파일) 로부터 가동시켜 영원히 겹치지 않는 (모듈이 꺼지더라도) 하나의 숫자 id 에 바인딩하여 handle 로 사용하는 것이다. 모듈은 서비스 (Service) 라 불리고 서비스들은 서로 자유롭게 메세지를 보낼 수 있다. 모듈은 skynet 프레임워크에 하나의 callback함수를 등록하여 그것으로 자기에게 보내온 메세지를 받는다. 모듈들은 모두 하나하나의 메세지에 의해 드리븐 되고 메세지가 오지 않을 때에는 펜딩되여있으며 CPU 자원 소모가 0이도록 보장된다. 자발 실행적인 로직이 필요하다면 skynet 시스템에서 제공하는 timeout 메세지를 이용하여 일정 시간마다 트리그 시킬 수 있다.

Continue reading

중문 트위터 글 번역

지은 이는 생략하겠다.

읽는 이가 글로부터 지은 이의 직장과 직종에 대해 얼마만큼 추측해 낼수 있을 지는 잘 모르겠다.

글쓴이의 아메리칸 드림, 그리고 아메리칸 암흑면. 심지어 쪼금의 아메리칸 드림 환멸까지? 관찰 각도에 따라 과장되거나 다소 편파적인 개인 주관적인 소감들이 있을 수 있지만 있다는 게 뻔한 일이지만 그만큼 진솔하게 북미 견문을 체온 있고 촉감 있게 담아냈다고 생각한다.

Continue reading