이 글을 보는 모든 프로그래머에게 엄청나게 유용한 프로그램을 소개한다.
바로 API-Guide..
물론 아는 사람들도 많겠지만, 프로그래머를 바보로 만드는 유명한 프로그램이라 소개한다.
비주얼베이식 프로그래머들의 고질적인 단점이 뭘까...
바로.. Win32 API 가 뭔지도 모른다는거다. 비베의 한계를 뛰어넘기 위해서는
Win32 API를 써야 함에도 불구하고 많은 후잡 프로그래머들은 비베의 한계를 느끼고
프로그래밍을 접거나, MFC 쪽으로 넘어가고 만다.
이 글을 쓰고 있는 나도 고등학생때까지 비베에서 API라는 걸 쓰는 건 알고 있었지만
어떻게 써야 하는지 전혀 몰랐다.
자.. 여기 그런 프로그래머들을 위한 프로그램을 소개한다.
API Guide 는 약 1000개정도의 비주얼 베이식에서 사용할 수 있는 API를 간편하게 정리해놓은
프로그램이다. 물론 덤으로 그에 따른 예제까지 실어주고 있다.
너무 좋아하지는 마라..
이런 프로그램.. 예를 들어 VA(Visual Assistance)와 같이 프로그래머의 손을 더 쉽게 해주는 프로그램을 많이 쓰면 어느 순간에 그런것들이 없으면 프로그래밍이 불가능한 바보가 될지도 모르니깐... 정말 모를때만 쓰고 왠만하면 MSDN을 참고하는 습관을 들이자.
MSDN에는 API가 C 문법 위주로 나와 있는데 데이터 형만 잘 이해하고 있다면
Visual Basic에서도 얼마든지 사용 가능하다.
이상!
2007년 12월 15일 토요일
API Guide
2007년 12월 14일 금요일
Linux Tomcat 설치
톰캣 다운로드
다운로드 URL : http://tomcat.apache.org/
위의 URL에서 톰캣을 다운받는다.
이 문서에서는 apache-tomcat-5.5.17.tar.gz 를 다운받았다.
톰캣 설치
다운 받은 apache-tomcat-5.5.17.tar.gz를 /usr/local/src 로 옮겼다.
#tar xvfz apache-tomcat-5.5.17.tar.gz [enter]
/usr/local/src/apache-tomcat-5.5.17 디렉토리가 생기고 그 안에 톰캣이 깔린다.
이 디렉토리를 /usr/local 로 옮겼다.
#mv apache-tomcat-5.5.17 /usr/local [enter]
톰캣 실행
# cd /usr/local/apache-tomcat-5.5.17/bin [enter]
# ./startup.sh [enter]
톰캣 실행 확인
브라우저에서 http://192.168.0.2:8080 를 넣어 고양이가 나오는지 확인
톰캣 관리화면 활성화 시키기
다음 파일을 편집한다.
# vi /usr/local/apache-tomcat-5.5.17/tomcat-users.xml [enter]
다음 내용을 추가시킨다.
<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>
톰캣을 다시 재실행한다.
#/usr/local/apache-tomcat-5.5.17/bin/shutdown.sh [enter]
#/usr/local/apache-tomcat-5.5.17/bin/startup.sh [enter]
톰캣 관리화면을 열어본다.
브라우저에서 http://192.168.0.2:8080/manager/html
ID : admin
Password : admin
톰캣 클래스패스 설정하기
#vi /etc/profile [enter]
다음 내용을 넣는다.(주로 가장 마지막에...)
CATALINA_HOME="/usr/local/apache-tomcat-5.5.17"
export CATALINA_HOME
CLASSPATH=".:$CATALINA_HOME/lib/servlet.jar"
export CLASSPATH
* 위에서 CLASSPATH의 경우는 이미 CLASSPATH가 정해져 있다면
처음에 $CLASSPATH를 넣어주거나
기존의 CLASSPATH 정의부분의 뒤쪽에 이어서 입력해 준다.
저장하고 나온 후
#source /etc/profile [enter]
---- 참고 ----
http://cafe.naver.com/bestreal.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=221
2007년 12월 12일 수요일
Fedora 4 YUM 설정
원래 들어있는 파일은 6개다.
fedora.repo
fedora-devel.repo
fedora-extras-devel.repo
fedora-extras.repo
fedora-updates.repo
fedora-updates-testing.repo
여기에서 인스톨에 fedora.repo, 업데이트에 fedora-updates.repo를 쓴다. 일단 요것만 고쳐보자.
<원본 fedora.repo>
name=Fedora Core $releasever - $basearch - Base한글
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/
mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
baseurl에 주석 처리가 되어있으니 결국 mirrorlist 행이 관건인 셈이다. $releasever는 자기 페도라 버전에 따라 현재까지 1~5로 나타난다. 그럼 주소에 나와 있는 fedora-core-4 파일을 열어보자.
http://download.fedoraproject.org/pub/fedora/linux/core/4/$ARCH/os/
http://mirror.linux.duke.edu/pub/fedora/linux/core/4/$ARCH/os/
http://fedora.mirrors.tds.net/pub/fedora-core/4/$ARCH/os/
...
...
가능한 미러가 66개 나와있다. 그런데 제일 느린 서버가 1순위이므로 접속은 되지만 느려터져 답답하다. 따라서 커스텀 미러 리스트 파일을 작성하자. Updates가 들어있는 디렉토리 주소가 조금 다르다. 한국 서버가 가장 빠르기는 하지만 이 포스트를 작성하는 시점에서 404 에러를 토했기 때문에 속도는 조금 떨어져도(200-500kB/s 정도) 믿음직스러운 kernel.org를 1순위로 잡았다.
<custom-BASE>
http://mirrors.kernel.org/fedora/core/4/$ARCH/os
ftp://ftp.kreonet.re.kr/pub/Linux/fedora/core/4/$ARCH/os
ftp://mirror.hostway.co.kr/pub/fedora/4/$ARCH/os
ftp://ftp.kaist.ac.kr/pub/fedora/linux/core/4/$ARCH/os
<custom-UPDATES>
http://mirrors.kernel.org/fedora/core/updates/4/$ARCH
ftp://ftp.kreonet.re.kr/pub/Linux/fedora/core/updates/4/$ARCH
ftp://mirror.hostway.co.kr/pub/fedora/updates/4/$ARCH
ftp://ftp.kaist.ac.kr/pub/fedora/linux/core/updates/4/$ARCH
그럼 fedora.repo, fedora-updates.repo 기존의 mirrorlist를 주석처리하고, 새로운 주소로 설정하자.
gpgcheck도 꺼놓으면 성가시지 않다.
<고친 fedora.repo>
mirrorlist=file:///etc/yum.repos.d/custom-base
gpgcheck=0
<고친 fedora-updates.repo>
mirrorlist=file:///etc/yum.repos.d/custom-updates
다시 실행할 서비스 없이 다음에 yum 실행할 때 바로 적용된다.
2007년 12월 11일 화요일
Tomcat in Fedora4
설치순서
1. apache(httpd-2.0.54, source)
2. apache-tomcat-connector(jakarta-tomcat-connectors-1.2.14.1-src, source)
3. tomcat(jakarta-tomcat-4.1.31, binary)
4. setting
1-1) ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-modules=so --with-mpm=worker
1-2) make
1-3) make install
1-4) echo "/usr/local/apache2/lib" >> /etc/ld.so.conf
echo "/usr/local/apache2/modules" >> /etc/ld.so.conf
ldconfig
============================================================================================================
2-1) ./buildconf.sh
2-2) ./configure --with-apxs=/usr/local/apache2/bin/apxs
2-3) make
2-4) make install
2-5) /usr/local/apache2/conf/httpd.conf 파일수정
모듈추가라인 가장 아래 다음과 같이 추가
LoadModule jk_module modules/mod_jk.so
============================================================================================================
3-1) /usr/local/tomcat 에 설치
3-2) /usr/local/tomcat/conf/server.xml 파일수정
서비스 컨텍스트 추가
<Host name="xxx.xxx.co.kr">
<Context path="" docBase="/home/xxx/public_html"
reloadable="true"/>
<Alias>xxx.xxx.co.kr</Alias>
</Host>
============================================================================================================
4-1) /usr/local/tomcat/conf/auto/mod_jk.conf 파일수정(없으면 생성)
다음과 같이 생성
<IfModule !mod_jk.c>
LoadModule jk_module libexec/mod_jk.so
</IfModule>
JkWorkersFile "/usr/local/tomcat/conf/jk/workers.properties"
JkLogFile "/usr/local/tomcat/logs/mod_jk.log"
JkLogLevel emerg
<VirtualHost localhost>
ServerName localhost
JkMount /tomcat_admin ajp13
JkMount /tomcat_admin/* ajp13
JkMount /webdav ajp13
JkMount /webdav/* ajp13
JkMount /examples ajp13
JkMount /examples/* ajp13
JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13
JkMount /manager ajp13
JkMount /manager/* ajp13
</VirtualHost>
4-2) /usr/local/tomcat/conf/jk/workers.properties 파일수정(없으면 생성)
다음과 같이 생성
# Start setup file
#
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=/
worker.list=ajp12, ajp13
# Definition for Ajp13 worker
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# End setup file
4-3) /usr/local/tomcat/conf/web.xml 파일수정
<web-app> tag 내에 추가
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC_KR</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
4-4) 한글변환 문자 셋 / 디렉토리에 압축 풀기 (tar -zxvf classes.tgz -C /)
4-5) /usr/local/apache2/conf/httpd.conf 파일수정
다음과 같이 추가
JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties
Include /usr/local/tomcat/conf/auto/mod_jk.conf
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel emerg
4-6) /usr/local/apache2/conf/httpd.conf 파일수정
버츄얼 호스팅 설정
#NameVirtualHost *:80 (주석제거)
다음과 같이 추가
<VirtualHost *:80>
ServerAdmin root@xxx.xxx.co.kr
DocumentRoot /home/xxx/public_html
ServerName xxx.xxx.co.kr
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
</VirtualHost>
4-7) /etc/profile(환경변수 수정)
export LC_ALL=ko_KR.eucKR
export LANG=ko_KR.eucKR
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CATALINA_HOME
export set CLASSPATH=.:$CLASSPATH=/usr/local/java/lib/tools.jar:.:/usr/local/java/lib/dt.jar:/home/xxx/public_html/WEB-INF/lib/jCharts-0.7.0.jar:/home/xxx/public_html/WEB-INF/lib/Acme.jar:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/home/xxx/public_html/WEB-INF/lib/mysql-connector-java-3.1.7-bin.jar:/home/xxx/public_html/WEB-INF/lib/jxl.jar:/home/xxx/public_html/WEB-INF/lib/activation.jar:/home/xxx/public_html/WEB-INF/lib/mail.jar:/usr/local/java/lib/jfreechart-0.9.16.jar:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/home/xxx/public_html/WEB-INF/classes:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/home/hurec/public_html/WEB-INF/classes:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/usr/local/tomcat/common/lib/servlet.jar:.:
아파치와 톰캣 연동(펌)
mod_jk를 사용해서 아파치 2 와 톰캣 5.5를 연동하기
httpd-2.0.55의 소스를 받아 설치한다.
./configure --enable-so --enable-mods-shared=most --prefix=/usr/local/apache2.
2: 자바(JDK 1.5이상)를 설치한다.
/usr/local/java 등의 위치에 설치하고, /etc/profile 제일 아랫줄에
ln -s /usr/local/apache-tomcat-5.5.12 /usr/local/tomcat
groupadd tomcat
chown -R tomcat.tomcat /usr/local/apache-tomcat-5.5.12 /usr/local/tomcat
/etc/profile에 아래의 내용을 추가하고 적용한다.
export PATH=$PATH:/usr/local/bin:/usr/local/tomcat/bin
export JAVA_HOME=/usr/java/jdk1.5.0_05
export CATALINA_HOME=/usr/local/tomcat
위의 내용을 추가했으면,
source /usr/profile을 실행
톰캣 서버 실행 테스트
톰캣 디렉토리의 bin디렉토리가 PATH에 포함된 것을 확인하고,
을 실행하면 톰캣이 실행된다.
ps -def | grep tomcat
tomcat 18591 1 88 06:40 pts/0
ps -def | grep tomcat
을 실행하면 위의 내용이 보이지 않게 된다.
4: mod_jk 설치하기
jakarta-tomcat-connectors-1.2.14.1-src.tar.gz 를 다운받고 아래처럼 실행한다.
cd jakarta-tomcat-connectors-1.2.14.1-src/jk/native
./buildconf.sh
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
make install
mod_jk.so 가 /usr/local/apache2/modules 디렉토리 안에 있고, 권한은 755로 설정되어있는지 확인한다..
5: 아파치를 톰캣에 연결하기
/usr/local/apache2/conf 디렉토리에 workers.properties 라는 이름의 파일을 만들고 아래의 내용을 입력한 후 저장한다.
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/java/jdk1.5.0_05
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
httpd.conf 에 아래의 내용을 추가한다.
#
# Mod_jk settings
#
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send JSPs for context /jsp-examples to worker named default
JkMount /jsp-examples/*.jsp default
# Send servlets-examples to worker named default
JkMount /servlets-examples/* default
Keep editing httpd.conf and add following Alias directives (for example under the entry for the icon Alias). These directives tell Apache to map /jsp-examples and servlets-examples to the sample directories that ship with Tomcat.
# Static files in the jsp-examples webapp are served by apache
Alias /jsp-examples "/usr/local/tomcat/webapps/jsp-examples/"
Options FollowSymLinks
AllowOverride None
Allow from all
# The following line prohibits users from directly access WEB-INF
AllowOverride None
deny from all
# Static files in the servlets-examples webapp are served by apache
Alias /servlets-examples "/usr/local/tomcat/webapps/servlets-examples/"
Options FollowSymLinks
AllowOverride None
Allow from all
# The following line prohibits users from directly access WEB-INF
AllowOverride None
deny from all
아파치를 재구동한다.
http://Web_server_name_or_IP:8080에 접속해 본다.
http://Web_server_name_or_IP/jsp-examples 과
http://Web_server_name_or_IP/servlets-examples 에 접속하여 연동을 확인한다
2007년 11월 14일 수요일
What's the smallest Windows CE 5.0 configuration that you can target from Visual Studio 2005?
What's the smallest Windows CE 5.0 configuration that you can target from Visual Studio 2005?
Very small! The DeviceEmulator nk.bin can be as small as 1.3mb! With that 1.3mb OS image, you can deploy and debug native applications using Visual Studio for Devices. Here's how...
In Platform Builder
Install the Device Emulator BSP from http://www.microsoft.com/downloads/details.aspx?FamilyID=474b03a6-e87d-455d-bc16-b8cf18ef39b4&displaylang=en. Pay special attention to the non-skin configuration options in the SDK XML file.
Create a new platform using the wizard...
- Step 4 - choose custom device
- Step 5 (Applications and Services Development) - check "C Libraries and Runtimes" (which checks everything underneath it)
- Step 6 (Applications - End User) - leave everything unchecked
- Step 7 (Core OS) - check "Power Management (Minimal)", "Device Manager", and "Debugging Tools \ Toolhelp API"
- Step 8 (Networking Features) - check "Networking Features \ Winsock Support"
- Step 9 (Device Management) - leave everything unchecked
- Step 10 (File Systems and Data Store) - check "File System - Internal (Choose 1) \ RAM and ROM File System" and "Registry Storage (Choose 1) \ Hive-based Registry"
- Step 11 (Fonts) - leave everything unchecked
- Step 12 (International) - check "Locale Services (Choose 1) \ National Language Support (NLS)"
- Step 13 (Internet Client Services) - leave everything unchecked
- Step 14 (Grahics and Multimedia Technologies) - leave everything unchecked
- Step 15 (Security) - leave everything unchecked
- Step 16 (Shell and User Interface) - check "Graphics, Windowing and Events \ Minimal Input Configuration"
- Step 17 (Windows CE Error Reporting) - leave everything unchecked
- Step 18 (Voice over IP Phone Services) - leave everything unchecked
- Finish!
Now, go to the Platform\Settings menu, and for the release configuration, switch to the Build Options tab and uncheck "Enable CE Target Control Support (SYSGEN_SHELL=1)" and "Enable KITL (no IMGKITL=1)".
Then switch to the Environment tab and add "BSP_NOTOUCH" with value "1"
Now build it using the Platform Builder "Build OS \ Sysgen" menu. The retail nk.bin image will be about 1.3mb in size.
Next, create an SDK for it. Go to Platform Builder's "Platform \ SDK \ New SDK..." menu, fill in the details on the first page, then leave the defaults for the rest.
Finally, build the SDK using the Platform Builder "Platform \ SDK \ Build SDK" menu.
Install the SDK
Install the new SDK on your Visual Studio 2005 machine.
Now comes the hacky part of the process you need to hack your datastore a little.
- Navigate to C:\Documents and Settings\All Users\Application Data\Microsoft\corecon\1.0\addons and look for the newest .xsl file whose name is a GUID. Open that file in notepad or your favorite XML editor
- Edit the RemoteCcClientFile, RemoteCcShutdownFile, RemoteCcTransportLoaderFile and RemoteCcCMAcceptFile properties, removing the "%CSIDL_WINDOWS%" text and just deploying to the root directory. There are two instances of each property, one for emulator targets and one for hardware device targets. Edit both instances of each property.
- Edit the RemoteTransportFile property, again, removing the %CSIDL_% constant, so that the dmatrans.dll deploys to the root directory.
ie.
<PROPERTY ID="RemoteCcCMAcceptFile" Protected="true">%CSIDL_WINDOWS%\CoreCon%CcVersion%\CMAccept.exe</PROPERTY>
becomes
<PROPERTY ID="RemoteCcCMAcceptFile" Protected="true">\CoreCon%CcVersion%\CMAccept.exe</PROPERTY>
If something goes wrong, delete the XML file, uninstall and reinstall your SDK, and it will be recreated.
Use the SDK from Visual Studio 2005
Launch Visual Studio, and do a File/New Project, to create a new C++ SmartDevice project. Pick your SDK from the list of targets, and select "Console" as the application type, with no ATL or MFC support.
Once the wizard has finished, there are a few work items left:
- Remove the #include of commdlg.h from the top of the wizard-generated .cpp file
- Remove the #include of atlcecrt.h from the bottom of stdafx.h
- In the project properties, make the following edits in the "All Configurations" configuration:
- Under Configuration Properties \ Linker, click on Additional Dependencies then type in this text: coredll.lib corelibc.lib $(NOINHERIT)
- Under Configuration Properties \ Deployment, edit the "Remote Directory" entry, removing the "%CSIDL_PROGRAM_FILES%" text. Deploy your app into a subdirectory under the root directory.
- Make the following edit to your project properties under both the Debug and Retail configurations:
- Under Configuration Properties \ Debugging, remove the "%CSIDL_PRGORAM_FILES%" text. The remote executable is in a subdirectory under the root directory.
Now, F5 should build your app, launch the emulator, deploy and debug.
Diagnosing Problems
- If the emulator launches but deployment isn't happening, you might have left a %CSIDL_*% constant in a path somewhere.
- Go to VS's Tools/Options dialog and navigate to "Device Tools \ Devices", click on your emulator entry and click Properties. In the emulator properties dialog, click "Emulator Options" then on the Peripherals tab, check the "Create text console for serial port 1" checkbox. This will cause the emulator to open a console window as it launches, that will show you diagnostics output from the Windows CE kernel.
What's with the CSIDLs?
Visual Studio for Devices must resolve %CSIDL_% symbols in pathnames by executing code on the device/emulator, that calls SHGetSpecialFolderPath(). The OS image size grows substantially if we pull that API in, as it only comes in as part of the GUI shell.
We must painstaking remove all %CSIDL_% symbols from the datastore and project properties. Otherwise, VSD's device-side code will go into a long polling loop waiting for the shell APIs to come online, and when the timeout eventually expires, the VSD operation will fail.
2007년 10월 22일 월요일
광산김씨
신라 신무왕의 셋째아들 흥광(興光)을 시조로 하는 광산김씨(光山金氏)는 한국의 대표적인 가문의 하나로서 '광김'으로 일컫는다. 이 가문은 조선시대에 총 265명의 문과 급제자를 배출하여, 본관별 서열로 제5위가 되었다. 여기에서 정승이 5명, 대제학이 7명, 청백리가 4명, 왕비가 1명이 나왔는데, 특히 대제학 7명은 ‘광김’을 더욱 빛나게 한 사계(沙溪) 장생(長生)의 자손이다.
광산김씨는 고려 초기 삼중대광(三重大匡)에 오른 3세손 길(佶)로부터 8대에 걸쳐 평장사(平章事)를 배출하여 명문 가문의 기반을 이루었으며, 15세손으로 역시 삼중대광에 오른 정(鼎)의 아들인 약채(若采)·약항(若恒)·약시(若時) 3형제대에서 더욱 번창하기 시작하였다. '광김'의 첫 정승(좌의정)을 지낸 국광(國光)과 영의정을 지낸 극성(克成)은 이들의 후손이며, 장생은 국광의 5대손이다. 그는 예학(禮學)의 태두로서 그의 학문은 이조판서를 지낸 아들 집(集)에게 계승되어 부자가 문묘(文廟)에 배향(配享)되는 전무후무한 영광을 누리기도 하였다. 집의 아우 반(槃)의 여섯 아들은 모두 출중하고, 후손이 크게 번창하여 ‘광김’의 전성기를 이루었다.
《청구영언》을 낸 가인(歌人) 천택(天澤), 영의정 상복(相福), 우의정 희(喜), 이조판서 상휴(相休)·기만(箕晩)·기은(箕殷), 대제학 만기(萬基)·만중(萬重) 형제 등이 모두 이들의 후손이다. 이 가운데 총융사(摠戎使)를 지낸 만기와 《구운몽》 《사씨남정기》의 작가로 유명한 만중의 후손 중에서 많은 인물이 나와 ‘사계 자손’의 주축을 이루었다.
예조판서·대제학을 지낸 진규(鎭圭)는 만기의 아들이며, 대제학·영의정을 지낸 양택(陽澤)은 진규의 아들로서 3대 대제학, 형제 대제학의 진귀한 기록을 남기기도 하였다. 시문집 10권을 남긴 문인 춘택(春澤), 고종 때 이조판서·대제학을 지낸 영수(永壽)는 진규의 형이며, 판서·참찬을 지낸 진구(鎭龜)의 후손이다. 2000년 인구조사에서 25만 8936가구에 83만 7008명이 살고 있는 것으로 나타났다.