본문 바로가기

전체 글

오묘한 서술어의 세계 (4) 한국어는 서술어의 언어 영어는 주어의 언어이고, 한국어는 서술어의 언어입니다. 영어에선 ‘I’ ‘We’ ‘They’ ‘This’와 같은 주어를 빠뜨리면 안 됩니다. 하지만 우리말에선 자주 생략됩니다. 대신 서술어가 절대적입니다. 감탄문 외의 글에서 동사와 형용사 같은 서술어를 빠뜨리면 문장이 되질 않습니다. 앞 장에서 말씀드린 “착한데 맛있다.”을 기억해보세요. 주어는 보이질 않지만 서술어만으로도 충분히 그 뜻을 알 수 있습니다. 서술어의 다양함과 오묘함 서술어의 다양함과 오묘함은 우리말과 글의 빼어난 특성입니다. 기본적으로는 같은 뜻이라도 문장의 뉘앙스에 따라 얼마든지 바꿔 쓸 수 있는 서술어들이 있습니다. ‘뛰다’라는 말을 ‘달리다’ ‘달음박질치다’ ‘쫓다’ ‘질주하다’ ‘냅다 달리다’ ‘내처달리다’.. 더보기
주어와 서술어의 짝짓기(3) 주어와 짝이 맞는 서술어가 있습니다. 모든 서술어가 어떤 주어에나 다 어울리는 건 아닙니다. 똑같은 사이즈의 신발이라도 자기 발에 꼭 맞는 신이 따로 있듯이 주어와 딱 어우러지는 서술어가 따로 있습니다. 그런데 글을 쓰다보면 주어와 서술어의 짝짓기가 생각보다 쉽지 않습니다. 주어와 서술어의 간격이 좁은 글에선 조금만 신경을 쓰면 그나마 어렵지 않게 찾아낼 수 있습니다. 주어와 서술어가 멀리 떨어져버린 경우가 문제입니다. 글을 쓰다보면 자기도 모르게 문장이 길어지고, 문장이 길어지다 보면 전혀 어울리지 않는 서술어가 문장 끝에 떡하니 자리 잡은 채 진짜 짝인 척 하는 경우입니다. 주어와 서술어가 두 개 이상 나타나는 중문이나 복문이 되면 문제가 더 심각해집니다. 주어와 서술어가 각각 한 개씩 있는 단문일 .. 더보기
주어와 서술어는 최대한 가까이(2) 단문으로 쓴다는 게 사실 쉬운 일은 아닙니다. 쉬울 것 같지만 어쩌면 글을 쓰는데 있어서 가장 높은 단계의 문장일지도 모릅니다. 그런데 왜 단문으로 써야 한다고 강조하는 걸까요? 무엇보다 뜻을 정확하게 전달하기 위해서입니다. 생각해보세요. 우리가 글을 쓰는 이유를. 물론 다른 사람이 읽을 일도 없고, 읽을 필요도 없으며, 읽어서 이해하지 못해도 상관없는 글쓰기도 있을 수 있습니다. 자기만족 그 자체를 위한 글쓰기라면 말입니다. 하지만 글을 쓰는 이유는 대부분 어떤 뜻을 다른 사람에게 전달하기 위해서입니다. 내 생각을 밝히고 전해서 상대방의 마음을 움직이기 위해 글을 씁니다. 이런 기본적인 목적을 달성하는 데에 단문이 적격이란 얘기입니다. 그렇다고 모든 문장을 단문으로 쓸 수 있는 것은 아닙니다. 중문으로.. 더보기
주어와 서술어는 오직 하나만(1) 문장을 구성하는 가장 기본적인 요소는 주어와 서술어입니다. 국어든 영어든 중국어든 모든 문장은 주어와 서술어를 갖추고 있습니다. 간혹 횡설수설하는 정치인들의 말처럼 주어가 숨겨져 있어서 보이지 않을 때도 있지만 그래도 모든 문장에는 반드시 주어가 있게 마련입니다. 그리고 그 주어가 하는 행동이나 상태 등을 설명해주는 서술어가 뒤따르게 됩니다. 서술어가 없으면 그 뜻을 알 수 없습니다. 물론 이런 서술어도 가끔씩 보이지 않을 때가 있죠. 그래도 눈에만 보이지 않을 뿐 서술어는 존재합니다. 주어와 서술어는 우리의 생각, 행동, 상태 등을 나타내는 문장의 핵심 요소이니까요. “겨울이 왔다.”처럼 주어와 서술어가 각각 한 개만 있는 문장을 단문이라고 합니다. ‘홑문장’이라고도 하지요. 국립국어원의 표준국어대사전.. 더보기
직장인/대학생을 위한 글쓰기 글을 쓸 수 있는 기회가 부쩍 많아졌습니다. 누구나 작가가 될 수 있는 시대입니다. 나의 소소한 일상이 다른 이들의 마음을 움직이는 지렛대가 되곤 합니다. 테크놀로지와 미디어의 발전이 가져다 준 새로운 세상입니다. 때때로 어쩔 수 없이 글을 써야 하는 경우도 있습니다. 회사에서, 학교에서, SNS 세상에서 마치 하기 싫은 숙제처럼 글로써 나의 생각을 전해야 하고, 글로써 다른 사람의 마음을 움직여야 할 때도 있습니다. 원하든 원치 않든 우리는 글을 쓰고 있고, 글을 써야 합니다. 그런데 글을 쓴다는 게 그리 쉬운 일이 아닙니다. 자기 생각을 조리 있고 논리적으로 정리하는 게 간단한 일이 아닙니다. 쓰다보면 본디 하고 싶었던 말은 온데간데없이 사라져버리고 전혀 엉뚱한 곳에서 헤매고 있기 일쑤입니다. 논리는.. 더보기
glVertexAttribPointer 사용법 void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); index : Vertex shader의 layout(location=x)에서 x에 해당한다. size : Vertex Attrib를 구성하는 멤버의 개수. 가령, Vertex position 속성이라면 x,y,z,w로 구성된다면 4, x,y,z로 구성된다면 3. 그러므로, 1,2,3,4 값만 가능. type : Vertext Attribㄹ 구성하는 멤버의 타입. Vertex position이 float로 구성된다면, GL_FLOAT. 그 외에도 다양한 타입이 존재. norma.. 더보기
iOS 상위 100 앱에서 사용하는 오픈소스 통계 iOS 개발시 많이 사용하는 라이브러리 리스트입니다. 사용 안해본 라이브러리도 많네. 무슨 라이브러리인지 알아볼 만 할 듯. https://medium.com/ios-os-x-development/libraries-used-in-the-top-100-ios-apps-5b845ad927b767facebook-ios-sdk 48Bolts-iOS 39AFNetworking 38Google-Mobile-Ads-SDK 38Reachability (Apple) 37Crashlytics 31Flurry-iOS-SDK 30CocoaPods 29GoogleConversionTracking 26SDWebImage 25Fabric 25mopub-ios-sdk 23Unity 22AdColony 20GoogleAnalytics.. 더보기
Shader와 Uniform으로 데이터 공유하기 Shader와 Uniform을 이용하여 데이터를 공유하는 방법을 소개한다. Vertex shader/fragment shader 모두에 적용이 가능하다. 1. default uniform block을 이용하는 방법 예제 Vertex shader의 코드는 다음과 같다. #version 300 es layout(location = 0) in vec4 vPosition; uniform vec3 shiftLocation; uniform mat4 shiftLocationMat; void main() { gl_Position = shiftLocationMat * (vPosition + vec4(shiftLocation, 0)); } shiftLocation이라는 x,y,z 벡터와 4x4 행렬인 shiftLocati.. 더보기