분류 전체보기
- Debug Lab 판도라 TV 링크~ 2008.11.25
- [펌] 한글이름용 영어표현 (2002년 2004년도) 2008.10.07 1
- [펌] 실시간 캡춰 라이브러리 2008.09.30
- [DB][펌] MSSQL 2005 Database Limitation 2008.09.11
- [C++][펌] StaticAssert 2008.09.02 1
- Superstitions Worldwide 2008.08.26
- English Language Center in CA 2008.08.13
- [링크] 2007 Macworld Steve Jobs' Keynote 2008.08.13
- [Documentation] [펌] How to Write Great Design Documents 2008.06.25
- [DB] [펌] What is a page split? What happens? Why does it happen? Why worry? 2008.06.10
Debug Lab 판도라 TV 링크~
[펌] 한글이름용 영어표현 (2002년 2004년도)
출처 : http://www.cyworld.com/nsj0907/252140
김슬옹(2004)에서 제시한 한글이름에 사용되는 493개 음절글자 및 김슬옹, 김불꾼, 신연희(2002)에서 제시한 4,823개의 한글이름, 그리고 14,300개의 밝한샘이름말(www.hangulerum.com)에서 사용된 한글이름용 음절글자 547자
[ ㄱ ]
가 gaa 각 gaak 간 gaan 갈 gaal 감 gaam 강 gaang 갖 gaat 개 gae 갠 gan 갤 gal 갸 kyaa 거 guh 걱 guk 건 gun 걸 gul 검 gum 겁 gup 게 keh 겨 kyuh 결 kyul 겹 kyup 고 koh 곤 gohn 곧 goht 골 gohl 곰 gohm 곱 gohp 곳 goht 곶 goht 광 kwaang 구 goo 굳 goot 굴 gool 굼 goom 궁 goong 귀 kwee 그 geu 근 geun 글 geul 금 geum 긋 geut 긍 geung 기 kee 긴 kin 긷 kit 길 kil 김 kim 깁 kip 깃 kit 깊 kip 까 kkaa 깔 kkaal 깨 kkae 꺽 kkuk 께 kkeh 꼬 kkoh 꼭 kkohk 꽁 kkohng 꽃 kkoht 꾸 kkoo 꾹 kkook 꿀 kkool 꿈 kkoom 뀌 kkwee
[ ㄴ ]
나 naa 난 naan 날 naal 남 naam 납 naap 낫 naat 낭 naang 낮 naat 내 nae 낸 nan 낼 nal 냄 nam 냥 nyaang 너 nuh 넉 nuk 넋 nuk 널 nul 넘 num 넝 numg 네 neh 녀 nyuh 녁 nyuk 녘 nyuk 녜 nyeh 노 noh 놀 nohl 높 nohp 누 noo 눈 noon 눌 nool 눔 noom 뉘 nwee 느 neu 늑 neuk 는 neun 늘 neul 늠 neum 능 neung 늬 nui 니 nee 닌 nin 닐 nil 님 nim
[ ㄷ ]
다 daa 단 daan 달 daal 닮 daam 담 daam 답 daap 닷 daat 당 daang 대 dae 댄 dan 댓 dat 더 duh 덕 duk 던 dun 덥 dup 덩 dung 도 doh 독 dohk 돋 doht 돌 dohl 동 dohng 돛 doht 되 doe 두 doo 둔 doon 둘 dool 둥 doong 드 deu 득 deuk 든 deun 들deul 듬 deum 듭 deup 디 dee 딘 din 딤 dim 딪 dit 따 ttaa 딴 ttaan 딸 ttaal 땁 ttaap 땅 ttaang 때 ttae 떨 ttul 또 ttoh 똘 ttohl 뚝 ttook 뜨 tteu 뜰 tteul 뜸 tteum 뜻 tteut 띠 ttee
[ ㄹ ]
라 raa 락 raak 란 raan 랄 raal 람 raam 랏 raat 랑 raang 래 rae 랜 ran 랫 rat 랴 ryaa 러 ruh 럭 ruk 런 run 럼 rum 럽 rup 렁 rung 레 reh 려 ryuh 련 ryun 례 ryeh 로 roh 록 rohk 론 rohn 롤rohl 롬 rohm 롭 rohp 롯 roht 롱 rohng 루 roo 룩 rook 룬 roon 룰 rool 룸 room 르 reu 륵 reuk 른 reun 를 reul 름 reum 릇 reut 리 lee 린 lin 릴 lil 림 lim
[ ㅁ ]
마 maa 막 maak 만 maan 말 maal 맑 maak 맘 maam 맛 maat 망 maang 맞 maat 매 mae 맵 map 머 muh 먼 mun 멀 mul 메 meh 멧 met 며 myuh 멸 myul 명 myung 모 moh 목 mohk 몰 mohl 뫼 moe 무 moo 문 moon 물 mool 뭉 moong 므 meu 믈 meul 미 mee 민 min 믿 mit 밀 mil 밑 mit
[ ㅂ ]
바 baa 박 baak 반 baan 발 baal 밝 baak 밤 baam 밧 baat 방 baang 밭 baat 배 bae 밸 bal 버 buh 벌 bul 범 bum 벗 but 벙 bung 베 beh 벼 byuh 벽 byuk 별 byul 볕 byut 보 boh 복 bohk 본 bohn 볼 bohl 봄 bohm 봇 boht 봉 bohng 부 boo 불 bool 붓 boot 붕 boong 비 bee 빈 bin 빌 bil 빕 bip 빗 bit 빙 bing 빛 bit 빠 ppaa 빤 ppaan 빵 ppaang 뻐 ppuh 뽀 ppoh 뿌 ppoo 쁘 ppeu 쁜 ppeun 쁠 ppeul 쁨 ppeum 삐 ppee
[ ㅅ ]
사 saa 삭 saak 산 saan 살 saal 삼 saam 삽 saap 상 saang 새 sae 샌 san 샐 sal 샘 sam샛 sat 생 sang 서 suh 선 sun 설 sul 섬 sum 섭 sup 섯 sut 성 sung 섶 sup 세 seh 센 sen 셀 sel 셈 sem 셋 set 소 soh 속 sohk 손 sohn 솔 sohl 솜 sohm 솝 sohp 솟 soht 송 sohng 쇠 soe 수 soo 순 soon 술 sool 숨 soom 숫 soot 숭 soong 숲 soop 쉬 swee 스 seu 슬 seul 슴 seum 습 seup 승 seung 시 shee 신 shin 실 shil 심 shim 싯 shit 싱 shing 싸 ssaa 싹 ssaak 쌀 ssaal 쏨 ssohm 쓰 sseu 씨 ssee
[ ㅇ ]
아 ah 안 aan 알 aal 앎 aam 암 aam 앗 aat 앙 aang 앞 aap 애 ae 야 yaa 약 yaak 얀 yaan 얄 yaal 얌 yaam 양 yaang 얘 yae 어 uh 억 uk 언 un 얼 ul 엄 um 에 eh 여 yuh 역 yuk 연 yun 열 yul 염 yum 영 yung 예 yeh 오 oh 옥 ohk 온 ohn 올 ohl 옳 ohl 옴 ohm 옷 oht 옹 ohng 와 waa 외 oe 요 yoh 욘 yohn 용 yohng 우 woo 욱 wook 운 woon 울 wool 움 woom 웃 woot 워 woh 원 won 월 wol 위 wee 윗 wit 유 yoo 윤 yoon 윰 yoom 으 eu 윽 euk 은 eun 을 eul 음 eum 의 ui 이 yee 인 in 일 il 임 im 잇 it 있 it 잎 ip
[ ㅈ ]
자 jaa 작 jaak 잔 jaan 잘 jaal 잠 jaam 장 jaang 재 jae 저 juh 적juk 전 jun 젓 jut 정 jung 제 jeh 조 joh 종 johng 좋 joht 주 joo 줄 jool 중joong 즈 jeu 즐 jeul 지 jee 직 jik 진 jin 질 jil 짐 jim 집 jip 짜 tchaa 짝 tchaak 짬 tchaam 쪽 tchohk 찌 tchee
[ ㅊ ]
차 chaa 착 chaak 찬 chaan 찮 chaan 찰 chaal 참 chaam 찾 chaat 채 chae 처 chuh 철chul 첫 chut 청 chung 초 choh 촘 chohm 추 choo 춘 choon 출 chool 춤 choom 츠 cheu 츨 cheul 츰 cheum 치 chee 친 chin 침 chim
[ ㅋ ]
카 kaa 칸 kaan 캐 kae 캔 kan 커 kuh 콩 kohng 쾌 kwae 쿠 koo 쿨 kool 크 keu 큰 keun 클 keul 큼 keum 키 kee
[ ㅌ ]
타 taa 탁 taak 탐 taam 터 tuh 텃 tut 토 toh 톨 tohl 통 tohng 투 too 트 teu 튼 teun 틀 teul 틈 teum 티 tee
[ ㅍ ]
파 paa 판 paan 팡 paang 퍼 puh 펄 pul 펴 pyuh 포 poh 퐁 pohng 표 pyoh 푸 poo 풀 pool 품 poom 풋 poot 픈 peun 피 pee 핀 pin 필 pil 핌 pim
[ ㅎ ]
하 haa 한 haan 할 haal 함 haam 항 haang 해 hae 햇 hat 헌 hun 현 hyun 혜 hyeh 호 hoh 홈 hohm 홍 hohng 화 hwaa 환 hwaan 활 hwaal 횃 hwat 회 hoe 후 hoo 훤 hwon 휘 hwee 흐 heu 흔 heun 흙 heuk 희 hee 흰 hin 히 hee 힌hin 힘 him
[펌] 실시간 캡춰 라이브러리
http://www.bandisoft.com/bandi_capture_library/
라이브러리를 이용해서 실시간 캡춰 가능하다고 합니다.
아주 가벼운게 특징.. 이걸 토대로 많은 게임에서 동영상 기능을 지원하지 않을까 생각되네요~
경우에 따라서는 아바타 UCC를 타겟으로 한 새로운 게임들도 대거 등장하지 않을까 조심스럽게 점쳐봅니다~
[DB][펌] MSSQL 2005 Database Limitation
Quoting the Books on Line, in the CREATE TABLE command:
"SQL Server 2005 can have up to two billion tables per database and
1,024 columns per table. The number of rows and total size of the
table are limited only by the available storage. The maximum number of
bytes per row is 8,060. This restriction is relaxed for tables with
varchar, nvarchar, varbinary, or sql_variant columns that cause the
total defined table width to exceed 8,060 bytes. The lengths of each
one of these columns must still fall within the limit of 8,000 bytes,
but their combined widths may exceed the 8,060 byte limit in a table.
For more information, see Row-Overflow Data Exceeding 8 KB."
Roy Harvey
Beacon Falls, CT
[C++][펌] StaticAssert
제목 | [dev] A Static Assert implementation |
---|
표준 보기 | 메시지 원본 데이터 출력 |
---|
Date: Tue, 11 Nov 2003 12:10:11 +0000 From: Caolan McNamara <Caolan.McNamara@Sun.COM> Content-type: text/plain Subject: [dev] A Static Assert implementationWe've a number of assert macros which could more profitably be picked up during compile time rather than at run time. Here's an implementation of a staticassert that I've been using successfully in the ww8 filter implemented as sw/source/filter/ww8/inc/staticassert.hxx for some time. An example usage is
StaticAssert((sizeof(stiName) / sizeof(stiName[0])) == 77,
WrongSizeOfArray);
The constraints are that the error message is a plausible class name,
i.e. no spaces and that the test can be done at compile time, e.g. array
size checking etc.
Perhaps this would be useful moved elsewhere as an office wide
construct, instead of just for the ww8 filter.
/*
Lifted direct from:
Modern C++ Design: Generic Programming and Design Patterns Applied
Section 2.1
by Andrei Alexandrescu
*/
namespace ww
{
template<bool> class compile_time_check
{
public:
compile_time_check(...) {}
};
template<> class compile_time_check<false>
{
};
}
/*
Similiar to assert, StaticAssert is only in operation when NDEBUG
is not defined. It will test its first argument at compile time
and on failure report the error message of the second argument,
which must be a valid c++ classname. i.e. no spaces, punctuation
or reserved keywords.
*/
#ifndef NDEBUG
# define StaticAssert(test, errormsg) \
do { \
struct ERROR_##errormsg {}; \
typedef ww::compile_time_check< (test) != 0 > tmplimpl; \
tmplimpl aTemp = tmplimpl(ERROR_##errormsg()); \
sizeof(aTemp); \
} while (0)
#else
# define StaticAssert(test, errormsg) \
do {} while (0)
#endif
C.
--
Caolan McNamara <Caolan.McNamara@Sun.COM>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@openoffice.org
For additional commands, e-mail: dev-help@openoffice.org
Superstitions Worldwide
English Language Center in CA
[링크] 2007 Macworld Steve Jobs' Keynote
[Documentation] [펌] How to Write Great Design Documents
GDC 발표자료인가봅니다. 좋은 내용~
Design 문서를 어떻게 만들것인가..?
기획자 입장에서 쓴 글이지만, 다른 파트의 사람들도 도움이 될 것 같습니다.
[DB] [펌] What is a page split? What happens? Why does it happen? Why worry?
What is a page split? What happens? Why does it happen? Why worry?
You’ve probably heard the term banded around but do you know what it means and what it means to the performance of your application? I’m going to demonstrate a page split, use DBCC PAGE to show what happens, SQL Profiler to show the locks and talk round what’s going on.
Terms
IAM Index Allocation Map
(See http://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/24/645803.aspx for a good talk about these)
GAM Global Allocation Map
SGAM Shared Global Allocation Map
PFS Page Free Space
(See http://blogs.msdn.com/sqlserverstorageengine/archive/2006/07/08/under-the-covers-gam-sgam-and-pfs-pages.aspx for a good talk about these)
Page 8Kbytes of data
Extent 8 Pages (totals 64Kbytes)
Background
A page is 8Kbytes of data which can be index related, data related, large object binary (lob’s) etc...
When you insert rows into a table they go on a page, into ‘slots’, your row will have a row length and you can get only so many rows on the 8Kbyte page. What happens when that row’s length increases because you entered a bigger product name in your varchar column for instance, well, SQL Server needs to move the other rows along in order to make room for your modification, if the combined new length of all the rows on the page will no longer fit on that page then SQL Server grabs a new page and moves rows to the right or left of your modification onto it – that is called a ‘page split’.
Example
Create a new database, a new table and put some rows in it.
use master
go
drop database pagesplit
go
create database pagesplit
go
use pagesplit
go
create table mytest (
something_to_see_in_data char(5) not null constraint pk_mytest primary key clustered,
filler varchar(3000) not null
)
go
insert mytest ( something_to_see_in_data, filler ) values( '00001', replicate( 'A', 3000 ) )
insert mytest ( something_to_see_in_data, filler ) values( '00002', replicate( 'B', 1000 ) )
insert mytest ( something_to_see_in_data, filler ) values( '00003', replicate( 'C', 3000 ) )
go
Now look at the contents of one of your data pages, use DBCC IND to identify what pages are targeted by our object.
DBCC IND ( 0, 'mytest', 1);
GO
We can see that page 80 and 73 have data pertaining to our object, looking at the output, a PageType of 10 indicates an IAM page and a PageType of 1 a data page. I’m not going to go into IAM’s because I’d lose the focus of what I’m talking about, but I’ve put a reference at the top for further reading.
So here we will concentrate on the data page (page 73).
dbcc traceon( 3604 ) -- Output to the console so we can see output
go
dbcc page( 0, 1, 73, 1 ) -- page ( <0 for current db>, <file>, <page>, <level of detail> )
go
Page 73 contains all our data; the row offset table is shown below...
OFFSET TABLE:
Row - Offset
2 (0x2) - 4128 (0x1020)
1 (0x1) - 3112 (0xc28)
0 (0x0) - 96 (0x60)
Before we update our middle row to force a page split we should get SQL Profiler running so we can capture the Locks used so we can identify when the split has occurred and the locks in use.
Start SQL Profiler, New Trace, select ‘blank trace’, now on the events selection bit – choose Locks (Lock:Aquired, Lock:Released and Lock:Esculation), on TSQL choose SQL:StmtStarting and SQL:StmtCompleted. Now remember to set the filter to the SPID that you are going to run the test in.
First, let’s update a row that does not cause a page split...
update mytest
set filler = replicate( 'B', 1000 )
where something_to_see_in_data = '00002'
Looking at the profiler trace (below) we can see there is a simple exclusive lock on the page and key being updated. The important part here is that no other pages are locked, ok, in reality we may have indexes on the columns being updated that would indeed cause locks but I’m keeping it simple!
Lets now update the middle row but this time make it so that the combined length of the rows currently on the page will no longer fit into 8Kbytes.
update mytest
set filler = replicate( 'B', 3000 )
where something_to_see_in_data = '00002'
Before looking at the profiler output, let’s take a look and see what pages we now have allocated to our object...
DBCC IND ( 0, 'mytest', 1);
GO
Interestingly we now have 2 more, page 89 and page 109, looking at the PageType again, page 109 is a data page (type of 1) and 89 is an index page (type of 2); for a single data page there is no balanced tree to speak of because there is a one to one relationship between the root node of the index and the data page. Also, look at the page chain (columns NextPagePID and PrevPagePID ), 109 links to 73 and vice versa. Our IAM is still page 80.
Visualisation of what’s going on
Looking at the Profiler trace we see a number of things have happened...
1) The exclusive lock is taken on the page and key being updated.
2) The IAM page is locked (page 80), well, one of the slots in it – this is because we are being allocated some new data pages and IAM keeps track of these, you will notice that the lock is acquired and released within the transaction and not at the end, this keeps contention low; imagine how much slower inserts would be on a table if you also locked the IAM page until the end of the transaction – it would be disaster.
3) The new index page is locked (page 89), again – notice how that lock is also released before the statement commits, why? Well, you aren’t updating the index keys so effectively there really isn’t a change so a rollback doesn’t really mean anything. One of the recommendations I make is that you be careful what columns you index – be aware of the additional locking time incurred when you are updating columns in an index.
4) The new data page is locked (page 109), notice how that lock is kept until after the update has finished (the transaction completes).
5) The page is split – some of the rows (id 2 and 3) are moved from page 73 to page 109, locks aren’t taken on the keys, in fact if we start a transaction and update row ‘3’ thus to prevent another connection from updating or deleting the row then SQL Server still (under the covers) moves the row to the other page – clever.
Summing Up
A page split does require resources and on a system that has continual page splits then that is going to affect performance and scalability.
Concurrency (blocking) problems are kept to a minimum by some internal tricks so they aren’t as expensive as they used to be in previous editions of SQL Server.
How do you avoid them? There are strategies for doing this, one such strategy is to use a low fill factor when you create and index, but that will be at the expense of read operations and because you usually have more reads to writes then that’s bad.
Personally, the usual thing I recommend (and by no means is this a one box fits all recommendation) is that you defrag indexes using DBCC INDEXDEFRAG (SQL 2000) or the equivalent ALTER INDEX REORGANIZE (SQL 2005), other things are to pre-populate columns so the row length doesn't grow when you update, don't use NULL's everywhere. If you have say a varchar type column that is frequently updated to different sizes then perhaps consider putting that in its own table.
Paul Randal has covered a lot of stuff in this area so make sure you check his blog out.
Background Reading