컴언

파이썬 객체를 파일로 저장하는 방법 - Serialization (직렬화)

공부/Python

파이썬 객체(Object)를 파일로 출력해서 필요할 때 마다 불러와 쓸 수 있는 방법을 소개한다. 진짜 간단함!


용어 정리: 직렬화와 역직렬화

쉽게 설명하면

직렬화 (Serialization) : 객체를 파일로 내보냄
역직렬화 (Deserialization) : 파일로 내보낸 객체를 다시 읽어들임


파이썬에서는 어떻게?

pickle 이라는 파이썬 표준 라이브러리를 사용하면 된다.


1. 직렬화 (파이썬에서는 pickling 이라고 주로 부른다.)

pickle.dump(내보낼 객체, 파일)



2. 역직렬화 (파이썬에서는 unpickling 이라고 주로 부른다.)

pickle.load(파일)



[자작] web2kindle: 웹페이지를 pdf 로 저장해 킨들 이메일로 보내기

공부/Python

Kindle 이메일에 문서를 보내면 자동으로 동기화하는 기능 아시죠?(참고: Send to Kindle by E-mail) 




저는 이 기능을 인터넷 기사나 블로그 글 같은 것을 옮길 때 쓰는데, 매번 pdf 변환해야하고 이메일 로그인해서 킨들 이메일로 보내야하고 여간 귀찮은 일이 아니더군요. 그래서 킨들로 바로바로 쉽게 보내기 위해 간단한 Python 스크립트를 만들어봤습니다. 


Python 버전은 3.x 이고 사용한 모듈은 pdfkit(웹페이지를 pdf 로 바꿔줌), smtplib(SMTP 서버를 이용해 간단히 이메일 보내기), lxml 입니다. 시간이 되면 제 GitHub 에 꾸준히 개선판을 올리겠습니다. (아직 기능적으로 많이 부족해요 ㅠㅠ 참고만 해주세요)


사용법: 먼저 네이버/다음/지메일 계정으로 로그인한 다음, 본인의 Kindle 이메일 계정을 쓰고 킨들에 전송하고자 하는 사이트의 URL 을 입력하면 됩니다.

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import pdfkit
import getpass
import smtplib
import lxml.html

from email.mime.multipart import MIMEMultipart
from email import encoders
from email.message import Message
from email.mime.base import MIMEBase

NAVER_SMTP = "smtp.naver.com"
NAVER_SMTP_PORT = 587
NAVER_SUFFIX = "@naver.com"

DAUM_SMTP = "smtp.hanmail.net"
DAUM_SMTP_PORT = 465
DAUM_SUFFIX = "@hanmail.net"

GMAIL_SMTP = "smtp.gmail.com"
GMAIL_SMTP_PORT = 587
GMAIL_SUFFIX = "@gmail.com"

# store the webpage in a byte variable
def html2pdf(url):
	# convert the webpage to pdf
	options={
       	'page-size': 'A4',
        'margin-top': '0',
        'margin-right': '0',
        'margin-left': '0',
        'margin-bottom': '0',
        'encoding': "UTF-8",
        'no-outline': None,
    }
	return pdfkit.from_url(url, False, options=options)

def get_title_from_webpage(url):
	# Get the title from url
	t = lxml.html.parse(url)
	return t.find(".//title").text

def send_pdf_to_kindle(server, sender, receiver):
	body = MIMEMultipart()
	body["From"] = sender
	body["To"] = receiver
	body["Subject"] = ""

	url = input("킨들에 전송하고자 하는 url을 입력하세요.")

	title = get_title_from_webpage(url)
	try:
		pdf = html2pdf(url)
	except:
		print("pdf 로 변환하는데 오류가 발생했습니다.")
	#pdf = pdfkit.from_url(url, False)
	#file = html2pdf_as_file(url)

	#file = open("out.pdf", "rb")
	attachment = MIMEBase("application/pdf", "application/x-pdf")
	attachment.set_payload(pdf)
	#attachment.set_payload(file.read())
	#file.close()
	encoders.encode_base64(attachment)
	attachment.add_header("Content-Disposition", "attachment", filename= title + '.pdf')
	body.attach(attachment)

	try:
		server.sendmail(sender, receiver, body.as_string())
		print(receiver +  "로 전송 완료")
		server.quit()
	except:
		print('메일을 전송하는데 오류가 발생했습니다.')

def main():
	# initialize configurations for sending email
	while True:
		email_provider = input("어떤 이메일을 사용할까요? 1. 네이버 2. 다음 한메일 3. 구글 지메일")
		if email_provider == '1':
			smtp_server = NAVER_SMTP
			smtp_port = NAVER_SMTP_PORT
			smtp_suffix = NAVER_SUFFIX
			USE_SSL = False
			break
		elif email_provider == '2':
			smtp_server = DAUM_SMTP
			smtp_port = DAUM_SMTP_PORT
			smtp_suffix = DAUM_SUFFIX
			USE_SSL = True
			print("Kindle 허용 이메일에는 @hanmail.net 이메일로 추가해주세요.")
			break
		elif email_provider == '3':
			smtp_server = GMAIL_SMTP
			smtp_port = GMAIL_SMTP_PORT
			smtp_suffix = GMAIL_SUFFIX
			USE_SSL = False
			break
		else: 
			print("잘못 입력하셨습니다.")
	if USE_SSL:
		server = smtplib.SMTP_SSL(smtp_server, smtp_port)
	else:
		server = smtplib.SMTP(smtp_server, smtp_port)
	username = input("로그인 ID를 입력해주세요.")
	sender_email = username + smtp_suffix
	password = getpass.getpass("비밀번호를 입력해주세요.")
	server.starttls()
	server.login(username, password)
	print("로그인 되었습니다.")
	#print("로그인 실패")

	receiver_email = input("Kindle 이메일 계정을 입력하세요.")

	send_pdf_to_kindle(server, sender_email, receiver_email)

if __name__ == "__main__":
    main()


CSRF (Cross-site Request Forgery, 사이트 간 요청 위조)

공부

요즘 django 공부하면서 신기했던 것이 csrf_token(클릭하면 django Documentation 로 이동합니다.) 라는 CSRF 공격에 대비하기 위해 토큰을 넣어주는 기능이 있다. 예를 들어, form 을 submit 하기 전에 unique token을 같이 보내서 유효성을 검사하는 것. 

실제 사례로 2008년 옥션에서 1800만 명(우리나라 인구의 거의 절반 ㅡ.ㅡ;; )의 개인정보가 해킹된 방식도 CSRF 공격이었다. 해커가 옥션 운영자들에게 CSRF 공격 코드가 심어진 이메일을 보내서 관리자 정보를 알아냈다는... 어쨌든 왜 토큰을 넣어주어야 하는지 등을 알아보기 위해 CSRF 공격의 원리를 정리해본다.


옥션: 윽~ 미안해~ 사실 전체 회원 개인정보가 다 유출 됐었네~~

내 개인정보 ㅠㅠ


쉽게 예를 들어보겠다.


1. 해커 A 와 인터넷 뱅킹 계정을 가진 B 가 있다. B는 현재 인터넷 뱅킹에 로그인되어 있다.

B는 인터넷 뱅킹 http://bank.com 을 이용하는데, 다른 통장에 이체하기 위해서는 관리자로 로그인 유효한 쿠키를 가진 채로 http://bank.com/transfer?amount=[이체금액]&sendTo=[이체할 계좌번호] 에 접속해야 한다.


2. 해커 A 는 다음과 같은 코드가 담긴 이메일을 B에게 보낸다.


<img src="http://bank.com/transfer?amount=1000000&sendTo=[해커의 계좌 번호]">

3. B 가 이 이메일을 열면 이미지 파일을 받아오기 위해 위 URL 을 열게 된다.

4. URL 이 열리면 백만 원이 해커의 통장으로 이체되는 마법이 생겼다. 그것도 B의 컴퓨터에서. 서버는 B의 쿠키가 맞으니 이체를 허락할 수밖에 없다. 





공격 방법이 생각보다 간단한 만큼 막는 방법도 쉽다.


다양한 방법이 있지만 여기서는 unique token 을 이용한 대책을 설명해본다.


1. 은행 서버에서 transfer 전에 무작위 token 을 사용자에게 부여한다. 이 토큰은 사용자 외에는 알 수 없다.

참고로 Django 에서는 다음과 같이 csrf_token 태그를 이용하면 된다.

{% csrf_token %}

2. transfer 시 token 을 대조하여 token 이 없거나 틀리면 이체를 거부한다. 참 쉽죠?





결론


CSRF 은 마치 가스 밸브 같은 존재... 안전상 사용 안 할 때는 당연히 잠가야 하지만 까먹는 경우도 생기기 마련이다. 잠그는 게 어려운 것도 아니고 말이다. CSRF 도 방어가 어렵지는 않다. 다만 웹사이트 제작 과정에서 보안을 고려할 때 간과할 수도 있다. 그러므로 Django 와 같은 웹 프레임워크를 열심히 씁시다.  망할 옥션의 개인정보 유출 사건도 재래적인 CSRF 공격이었다는 것, 이제부터는 조심하자.


참고: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

'공부' 카테고리의 다른 글

CSRF (Cross-site Request Forgery, 사이트 간 요청 위조)  (3) 2016.06.30

플레이 스토어에서 받은 전자책 킨들로 옮기기

공부/전자책

킨들 페이퍼화이트 사용기에서 한국 전자책 시장의 DRM 표준 문제를 언급하면서 대안인 구글 플레이 스토어 (Google Play Store) 를 언급했다. 구글 플레이 스토어가 교보문고 전자책과 같은 한국 전자책과 다른 점은 바로 Adobe DRM 을 쓴다는 점에 있다. 플레이 스토어에서는 구입한 전자책을 내려받으면 acsm 형식인데, 이것이 바로 Adobe DRM 이 적용된 것.


EPUB 으로 내려받기라고 되어있지만, 사실은 acsm 형식으로 받아진다.



위에 사진처럼 epub 으로 내려받아도 결국 받아지는 것은 acsm 형식이라는 것이다. 다행히 Adobe Digital Editions (다운로드) 라는 소프트웨어를 이용해서 acsm -> epub 으로 변환할 수 있다. 물론 이렇게 바뀐 epub 도 DRM 은 걸려있다. 이 DRM은 각종 스크립트를 통해 해제할 수 있다. 내가 쓴 DRM 해제 프로그램은 github 에 올라와 있는 DeDRM. (다운로드)




문제점


1. 법적인 문제

DRM 을 해제하는 것은 엄연히 말해서 불법이라고 한다...


2. 기술적인 문제

플레이 스토어의 일부 책은 변환 시 글자가 깨지는 등 기술적인 문제가 보고된 바 있다. 내가 받은 책 중에는 아직 그런 적이 없어서 그러려니 한다 ㅋㅋ

네이버 기계번역 API 예제 - Java

공부/Java

NAVER Developers 에서 네이버 기계번역 API 를 시범서비스 중이다. 지원되는 번역 방향은 한국어 <-> 일본어, 중국어, 영어 인데, 이 중 한국어 <-> 일본어 번역이 (특히 문법적으로) 꽤 자연스러운 것 같아 진짜 놀라웠다는. 여담으로 네이버 기계번역에서 영어 문장을 한국어로 번역하면 어조가 어색한 경우가 많더라. 아쉽게도 일일 사용제한량으로 10,000 자 제한이 있으니 주의해야한다. 처음 공개했을 때는 1,000 자 였다니깐 감사히 써야지...


자세한 개발 가이드는 https://developers.naver.com/docs/labs/translator 에서 확인할 수 있고, 아래는 Apache HttpClient(다운로드 페이지로 이동) 로 HTTP Request 를 보내서 얻은 JSON 출력을 json-simple(다운로드 페이지로 이동) 로 처리하는 Java 로 된 예제이다. 


import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;

import org.json.simple.*;
import org.json.simple.parser.JSONParser;


public class Translate {
	private String apiClientId;
	private String apiSecret;
	private String text; // text to be translated
	private String sourceLang; // original language of text
	private String targetLang; // target language for translation
	
	public Translate(String apiClientId, String apiSecret){
		// provide the api key info for Naver Open API Translator here
		this.apiClientId = apiClientId;
		this.apiSecret = apiSecret;
	}
	
	public String translateText(String text, String sourceLang, String targetLang){
		
		/* Method: POST
		 * Request URL: https://openapi.naver.com/v1/language/translate
		 * Return type: JSON
		 * Required Parameters (1) source
		 *					   (2) target
		 *					   (3) text
		 */
		
		
		try{
			String url = "https://openapi.naver.com/v1/language/translate";
			
			HttpClient client = HttpClientBuilder.create().build();
			HttpPost post = new HttpPost(url);
			
			// Set headers for API key authorization 
			post.addHeader("X-Naver-Client-Id", apiClientId);
			post.addHeader("X-Naver-Client-Secret",apiSecret);
			
			// Add parameters for POST
			List<NameValuePair> urlParams = new ArrayList<NameValuePair>();
			urlParams.add(new BasicNameValuePair("source", sourceLang));
			urlParams.add(new BasicNameValuePair("target", targetLang));
			urlParams.add(new BasicNameValuePair("text", text));
			
			// 한국어 일본어 중국어 깨짐 방지!
			post.setEntity(new UrlEncodedFormEntity(urlParams, "UTF-8"));
			
			// Response received after POST. The type of the output is JSON.
			HttpResponse response = client.execute(post);

			BufferedReader rd = new BufferedReader(
			        new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
	
			StringBuffer result = new StringBuffer();
			String line = "";
			while ((line = rd.readLine()) != null) {
				result.append(line);
			}


			// Using json-simple to manipulate the JSON response
			String resultText = result.toString();
			Charset.forName("UTF-8").encode(resultText);
			JSONParser parser = new JSONParser();
			JSONObject obj = (JSONObject) parser.parse(resultText);
			JSONObject message = (JSONObject) obj.get("message");
			
			JSONObject res = (JSONObject) message.get("result");

			String translatedText = (String) res.get("translatedText");
			
			return translatedText;
			
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
	
		
	}
}


'공부 > Java' 카테고리의 다른 글

네이버 기계번역 API 예제 - Java  (2) 2016.06.16

킨들 페이퍼화이트 한 달 사용기

공부/전자책




아마존에 들어가면 항상 광고에 뜨던 Kindle... 전자책 가격이 종이책 보다 싸다는 장점도 있고, 웬지 모르게 눈이 가던 기기였다. 옛날에 교보문고에서 본 전자책 리더의 e-ink 액정판이 신기하기도 했고. 그러다가 학기 말에 친구와 Amazon 을 보다가 킨들 $20 할인 행사를 보게 됐는데, "야 이거 살까?" 라고 친구한테 물어봤을 때 "ㅇㅇ 일본보다 싼데? 사자" 해서 사버렸다. 기기가 도착하기 전까지는 충동구매가 아니었나 후회하기도 했는데, 막상 와서 써보니 이거 정말 물건이다. 


한 달 가량 써보며 느낀 점을 아래에 나열해본다.



1. 독서량이 늘었다.

들고 다니기가 정말 편리하다. 크기는 대충 비유하자면 갤럭시 노트보다 크고 넥서스7 보다 작은 중간 정도의 느낌? 실제 액정 크기는 6인치다. 그래서 버스/지하철 이동시나 길에서 (조심해야한다ㅋㅋ) 걸어다닐 때도 읽을 수 있다. 킨들을 사기 전에는 여유가 날 때나 읽던 책을 매일 매일 자투리 시간에 차곡차곡 읽을 수 있으니 독서량이 늘은 것은 당연한 결과 아닌지? 


Huawei | Nexus 6P | Normal program | Center-weighted average | 1/43sec | F/2.0 | 4.7mm | ISO-640 | Off Compulsory

볼펜이랑 비교하면 이 정도 크기


또한 전자 잉크 패널의 장점 -- 진짜 종이책 보는 것 같다. 물론 책 냄새(...) 라던가 북마크 같은 종이책의 감성을 좋아하는 사람도 있지만 나는 전자책이 오히려 종이책 보다 읽기가 편하다는 생각이 든다. 너무 Paperback 만 읽어서 그럴수도. 그리고 배터리가 대박 오래간다. 와... 완충 한 번 하고 지금까지 다섯 권 정도 책을 읽었는데 배터리가 40% 정도 남아있는 듯. 무시무시하다. 



2. 막강한 영문 전자책 시장과 부가 기능. 그러나 한국어 전자책을 읽기 쉽지 않다.


내가 읽고 싶은 대부분의 영문 책들은 모두 다 아마존에 Kindle eBook (azw3 형식) 으로 올라와있었다. 그리고 부가 기능으로 Word Wise 라는 어려운 단어 위에 짤막한 뜻을 달아주는 기능이 있는데, 사전에 쳐보지 않아도 되니 이게 진짜 유용하다. 본인의 어휘 실력에 따라 쉬운 단어는 5단계로 제외 시킬 수도 있으니 정말 필요한 단어만 뜻이 나오게 할 수도 있다. 


또한 감동받은 것은 다른 사용자들이 많이 형광펜 친(highlight) 구절도 책 내부에서 알려준다는 점이다. 다른 사람은 이런 구절을 감명 깊게 봤구나 느끼면서 비교하는 재미도 있다. 내가 이번에 읽기 시작한 책은 Korea: The Impossible Country 라는 The Economist 지의 영국 특파원이 한국에 있으면서 느낀 한국이란 나라에 대해 쓴 책인데, 다른 사람이 많이 친 형광펜 부분 등을 보며 한국 문화를 모르는 사람들은 이런게 신기할 수도 있겠구나 하는 생각을 했다. 


평범한 사전 기능과 형광펜 기능을 응용한 기능들... goodreads 와 연동도 가능하던데 잘 써보지 않아서 잘 모르겠다.




설명한 두 기능은 아마존에서 산 전자책에만 해당되는 단점이 있다... 


이어서 한국어 전자책에 대한 얘기를 해보자면


알라딘 같은 대형 서점에서 판매하는 전자책은 넣을 수가 없다. 큰 문제다. 한국의 전자책 시장의 DRM (일종의 복사 방지 장치) 표준 문제 때문인데, 대안으로 Google Play Store 이 있어서 다행이긴 한데 대형서점 만큼의 전자책이 없다는 것이 문제. 대형서점 만큼은 아니지만, 꽤나 많은 베스트 셀러 책들이 올라와 있었다.


Google Play Store 에서 내려받은 전자책을 킨들로 옮기는 방법에 대해서는 아래 글을 참고해주세요.


2016/06/24 - [공부/전자책] - 플레이 스토어에서 받은 전자책 킨들로 옮기기




Amazon 에도 한국 전자책이 올라 오긴 하는데 그 수가 너무 적어서... 혹시 알고 싶다면 코끼리북(http://www.kokilibook.com/) 에서 검색해 볼 수 있다.



3. 책 뿐만 아니라 pdf 등 일반 문서도 읽을 수 있음


ㅋㅋㅋ 이 기능 때문에 학교 수업 프린트는 그냥 무조건 킨들에 다 넣어버렸다. 나는 프린트 정리하는 걸 진짜 못해서 필기한 것도 자주 잃어버리곤 했는데 그럴 일도 없을 것 같다. 필기도 되면 진짜 좋을텐데... 


흔히 사람들이 "pdf 의 사진이나 수식은 잘 나오냐?" 물어보는데, 미적분학 교과서를 킨들에 넣어서 쓴 경험이 있는 사람으로서 답은 "그렇다." 이다. 하지만 일반 A4 사이즈 보다는 작으니 확대 해서 봐야하는 경우가 좀 많이 있었다. 그래도 종이책 같은 느낌 때문에 크게 별로라고 느낀 적은 없는 것 같다. 


pdf 나 전자책 넣을 때에는 컴퓨터에 직접 연결해서 해도 되는데, 나는 주로 이메일로 보내기 기능을 이용한다. 아마존에서 계정마다 @kindle.com 이메일 계정을 주는데 이 곳으로 pdf 같은 파일을 보내면 자동으로 킨들이 동기화 해서 내 Library 에 띄워준다. 무선 생활에 익숙한 사람들에게는 진짜 편리한 기능.




독서량이 늘었다는 것만 해도 진짜 잘 산 기기라고 생각한다. 과거에는 대중교통 이용하면서 책 읽은 적이 없어서 몰랐는데, 요즘은 목적지에 도착하는게 가까워질 수록 얼마나 아쉬운지 모른다. "이 챕터까지만 끝내게 지하철아 좀 천천히 가줘..." 아무튼 평소에 책을 좋아한다면 꼭 사용해보기를 추천하는 기기!




이메일로 에버노트 노트 등록 방법

공부/전자책

계정 설정 에 들어가시면 "고유 이메일 주소" 라는 항목이 있습니다.

이 고유 이메일 주소 (~~~@m.evernote.com)로 이메일을 보내거나, 이메일을 전달하시면 자동으로 에버노트에 등록됩니다.

저는 고유 이메일을 주소록에 추가해놓고 영수증 등을 전달하는 용도로 활용합니다.

 

 

보내실 때 이메일 제목을

 

(노트 제목) !(다시알림 날짜) @(노트북) #(태그)

 

예) 아마존 영수증 @2015/05/02 @영수증 #아마존 #전자기기

 

처럼 설정해서 분류도 가능합니다.

포르보(Forvo) - 각 국의 언어를 원어민의 발음으로 들을 수 있는 데이터베이스

공부/영어


외국어를 배우다가 이 단어가 어떻게 발음 되는지 궁금한 적이 한 번쯤은 있을 것입니다. 필자 같은 경우에는 TTS 나 전문 성우의 노잼 발음 말고 실제 원어민들은 어떻게 말하는지에 대해서도 알고 싶은 적이 많았습니다. 특히, 영어에서 Meese... 미쓰? 미씨??...  처럼 인명이나 지명의 철자가 조금 awkward 할 때 발음이 굉장히 힘들었습니다. 나아가, scientific 한 범주로 나아가면 화학 명칭들의 발음이 굉장히 궁금하곤 했는데, 구글에 meese pronunciation 을 검색하다가 포르보(Forvo) 라는 사이트를 발견했습니다.



http://forvo.com/

포르보는 로고 밑의 설명에서 알 수 있듯이 전 세계의 모든 단어가 발음된 음성을 들을 수 있는 사이트입니다. (All the words in the world. Pronounced.) 이용료는 무료이고 각 국의 회원들의 기여(contribution)로 운영됩니다. 영어 뿐만 아니라, 독일어, 포르투갈어, 한국어는 물론, 심지어 인공어인 볼라퓌크의 발음까지 등록되어 있어요. 현지 원어민들의 발음이기 때문에 조금 더 친숙하고, 여러분들도 한국어 기여자(contributor)의 일원으로 참여하실 수 있습니다.



등록된 각 국 단어들의 개수

10만개 이상에는 독일어, 영어, 러시아어, 타타르어, 포르투갈어, 프랑스어, 

5만개 이상에는 스페인어, 이탈리아어, 아랍어, 폴란드어, 일본어, 스웨덴어, 체코어, 만다린어, 마리어

1만개 이상에는 한국어가 포함되어있네요.


[발음 듣기]

 

검색창에 원하는 단어를 검색하면...


성별, 액센트 등을 골라서 들을 수 있습니다. 참 쉽죠?





[발음 녹음]

나아가, 여러분들도 한국어 원어민으로서 이 방대한 발음 데이터베이스에 기여할 수 있습니다!

1. 회원가입을 하셔야 해요. 발음을 듣기만 한다면 회원가입이 필요없지만, 녹음을 할 때는 가입이 필요해요.

http://www.forvo.com/signup/ 에서 완료하시면 됩니다.


2. 가입을 성공적으로 하셨다면, 이제 발음을 추가하면 됩니다.방법에는 여러가지가 있어요.

첫번째, Add Words 를 이용해서 여러분이 원하는 단어를 바로 녹음하실 수 있습니다.



두번째, Pronounce 를 이용해서 다른 사용자가 요청한 발음을 녹음하실 수 있습니다.



주로 Add Words 를 이용하면 딱히 생각나는 단어도 없어서 처음에는 Pronounce 를 통해 녹음을 하시는게 더욱 재밌을 것이라고 생각합니다. 



나아가, Add Words 를 통해 단어를 등록하려고 했는데 이미 등록이 되어있더라도 다시 등록을 하셔도 됩니다. 애초에 성별, 억양등의 다양성을 지향하는 데이터베이스이니까요!


한국어 사용자분들이 많이 가입하셔서 한국어 발음 데이터베이스도 커졌으면 좋겠습니다!

RIP 의 뜻 + 그 외 여러 약어(abbreviation)들

공부/영어

휘트니 휴스턴의 사망 소식에 굉장히 놀랐다. 


그녀의 사망 전 "100달러가 없어서 소속사에서 도움을 받는다" 요런 루머가 돌았었는데 아직 사인 미상이라니 내가 성급히 무어라 언급할 수는 없겠지만  'I Will Always Love You', 'Greatest Love of All' 등의 명곡을 남긴 팝의 디바...



그녀의 사망 소식 기사를 들어가 보니 위와 같이 R.I.P. 이라는 내용이 들어간 댓글들이 많이 있었다. 애도의 물결을 전해야할 댓글에 설마 "찢다"라는 rip 의 의미는 아닐것이라고 생각해 영어사전을 찾아보았는데, Rest In Peace 라는 말의 약어(abbreviation) 이었다. 해석하면 "편히 잠들다."

따라서 우리말로는 "삼가 고인의 명복을 빕니다." 가 있겠다.


 그래서 왼쪽 사진과 같이 묘석에도 R.I.P 을 새겨넣기도 한다고...



R.I.P. = REST IN PEACE!






그 외에도 영어에는 많은 abbreviation 이 있는데, 아래에 그 예를 나열해 보았다. 인터넷 약어도 있다.

RSVP : 편지에 보면 아래에 RSVP 라고 쓰여져 있는 경우를 볼 수 있는데 répondez s'il vous plaît(please reply)라는 "회답 바람" 프랑스어의 약어라고 한다.

ASAP : As Soon As Possible   사용예 : Please reply me ASAP.

FYI : For Your Information (그냥 알아둬)

AKA : Also Known As (~ 로 알려진)

AFIK, AFAIK : As Far As I Know (잘은 모르지만 아마도)

AFK : Away From Keyboard (잠수)

TGIF : Thank God It's Friday    이런 신조어도.. (Twitter/Google/iPhone/Facebook)

BTW : By The Way

BRB : Be Right Back

TTYL : Talk To You Later

OMG : Oh My God

FTW : For The Win

ROFL : Rolling On The Floor Laughing

BOGOF : Buy One, Get One Free

등등 여러가지가 있지만 재미있는것만 써보았다. http://www.abbreviations.com/ 이곳에 가면 더욱 많은 약어들을 찾을 수 있다.


재미있어서 가져와보았습니다. abbreviation 의 모순?? ㅋㅋ


yada yada의 뜻.. 구글 메인에서

공부/영어


구글이 개인정보 정책을 변경한다는 공지를 홈에 띄워두었다. 글귀는 "We're changing our privacy policy and terms. Not the usual yada yada."인데 yada yada 는 처음 들어보는 말일 뿐더러 어감도 이상한데 이런 말이 구글 홈에 쓰였길래 궁금하여 검색해보았다.







phrases.org.uk 에서 찾아본 의미는 "An indication that something spoken or written is predictable, repetitive or tedious." 이다. 말이나 글이 예상가능하거나 반복되거나 지루한것을 나타내는 말이라는 뜻인데, blah blah 랑 비슷한 의미인것 같다. 한국어로는 "..등등" 이 있겠다.


그러니까 구글이 뜻한 바는 평소처럼 그냥 그런 변경이 아닌 중요한 변경이 이루어졌으니까 꼭 보라는 것 같다. 참고로 구글 코리아에는 "개인정보취급방침 및 약관이 변경됩니다. 중요한 내용입니다."와 같이 번역되었다.