윈도우 xp 사용 중 원본 파일이 변경되었을 경우, 원본 파일로 복구하는 방법입니다.
1. 윈도우 설치시 사용한 CD/DVD 를 CD/DVD 롬에 삽입니다.
2. [시작] 버튼을 누릅니다.
3. [실행(R)] 을 클릭합니다.
4. sfc /scannow 라고 적은 후 엔터키를 누릅니다.
2010년 12월 22일 수요일
2010년 12월 15일 수요일
windows XP 복구방법
부팅이 불가능 할 경우 xp 의 복구콘솔을 이용해 부팅 파일을 복구 시킬수 있습니다.
순서는 다음과 같습니다.
우선 Windows XP Pro 설치시디를 시디롬에 넣고 재부팅 합니다.
재부팅시 del 또는 F2 키를 이용해 cmos 로 들어가서 첫번째 부팅순서를 CD-Rom 으로 설정한뒤 저장하고 나옵니다.
CD-Rom 에서 xp 설치 시디를 읽으면서 Press Key... 가 나오면 아무키나 눌러줍니다.
XP 설치 화면으로 바뀌고 계속설치(ENTER) , 복구콘솔(R) 화면이 나올때 R 키를 누릅니다.
키보드 및 운영체제 위치를 선택해 줍니다.
XP 설치시 입력했던 administrator 비밀번호를 입력합니다.
복구콘솔이 나오면 C:\Windows> 이 화면에서 CD 를 입력해 C:\> 으로 이동합니다.
C:\>Fixmbr \device=harddisk0 입력 합니다. 만약 물리적인 하드가 두개고 두번째 하드에 XP 가 설치되어 있다면 harddisk1 로 입력해 주십시오. Y/N 이 나오면 Y 를 선택합니다.
C:\>Fixboot c: 입력 후 엔터
C:\>Chkdsk c: 입력 후 엔터
다 끝나면 C:\>Exit 입력 후 시디롬에서 XP 시디를 빼고 정상부팅이 되는지 확인합니다.
2010년 11월 16일 화요일
열린포트 확인하는 방법
시스템 명령어인 netstat 를 사용하는 방법
#netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)
포트스캔 명령어로 확인 하는 방법
# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*
lsof 명령어로 확인 방법
# 모든 네트워크 소켓 확인
lsof -I
#netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)
포트스캔 명령어로 확인 하는 방법
# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*
lsof 명령어로 확인 방법
# 모든 네트워크 소켓 확인
lsof -I
tomcat 여러개의 포트 사용하기
톰캣에서도 MS의 IIS와 같이 포트 번호에 따라 호스팅하는 것이 가능하다.(근데 웨케힘드노)
TOMCAT_HOME\conf\server.xml 을 열고 아래와 같이 Service 엘리먼트를 추가한다.
아래 좋은 블로그가 있어서 펌해왔다. ^__^) b
아파치와 연동없이 톰캣만으로도 하나의 IP로 다수의 웹사이트를 운영하는 것이 가능하다.
(아파치와 톰캣을 연동하는 방법에 대해서는 차후에 자세히 올리도록 하겠다)
특히 개발자의 경우 여러개의 프로젝트를 개발하거나 테스트하고자 할 때 웹사이트를 여러개 운영해야한다. 다수의 웹 사이트를 세팅하는 방법은 크게 2가지가 있다.
(아파치와 톰캣을 연동하는 방법에 대해서는 차후에 자세히 올리도록 하겠다)
특히 개발자의 경우 여러개의 프로젝트를 개발하거나 테스트하고자 할 때 웹사이트를 여러개 운영해야한다. 다수의 웹 사이트를 세팅하는 방법은 크게 2가지가 있다.
- 가상호스트를 이용하는 방법
- IP Address의 port를 여러개 사용하는 방법
가상호스트를 이용하는 방법은 도메인을 이용하여 실제로 서비스를 운영하는 경우가 아니면 개발자에겐 별 의미가 없다. 여기서는 두번째 방법인 IP 어드레스의 포트를 이용하는 방법에 대해서 설명하겠다. (바로가기 : 톰캣에서 가상 호스트를 이용하는 방법)
우선 설치 환경은 다음과 같다.
- O/S : Windows XP (난 아직 리눅스를 잘 모른다. 비슷하겠지만 테스트해보지 않았다)
- Tomcat 6.0 (정확히는 6.0.10) : 다운로드
설명의 편의를 위해 톰캣의 설치 디렉토리는 'TOMCAT_HOME' 으로 표기할 것이다. 참고로 내 경우는 C:\Server\Tomcat6.0 이다.
설정하는 방법은 간단하다. /TOMCAT_HOME/conf/에 있는 server.xml 파일만 수정하면 끝이다. server.xml의 쓸데없는 주석부분을 다 없애고 핵심부분만 남겨놓으면 아래와 같다.
설정하는 방법은 간단하다. /TOMCAT_HOME/conf/에 있는 server.xml 파일만 수정하면 끝이다. server.xml의 쓸데없는 주석부분을 다 없애고 핵심부분만 남겨놓으면 아래와 같다.
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
우선 빨간색으로 표시한 부분만 이해하고 넘어가도 상관없다.
Connector port="8080"은 HTTP로 넘어오는 포트를 지정하는 것이다. 톰캣의 기본 포트가 8080인 이유가 여기에 있다. 따라서 8080 대신 기본 80포트를 사용하고 싶다면? 바로 이 부분을 port="80"으로 바꾸어주면 된다.
다 음, Host 지시어의 appBase="webapps" 는 웹어플리케이션(웹사이트)의 위치를 나타낸다. appBase="./webapps"와 같은 의미다. 실제 위치는 TOMCAT_HOME/webapps이다. 물론 "d:/weapps/myweb1" 과 같이 절대경로로 지정하는 것도 가능하다.
그럼 웹사이트를 하다 더 추가하고 싶다면? 위의 <Service>...</Service>를 하나 더 만들어 버리면 된다. 위의 코드를 복사한 다음 server.xml 에 추가한다. 그리고 빨간색으로 표시한 부분만 수정하자.
<Service name="Catalina2">
<Connector port="9090" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="d:/webapps/myweb2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
다른 웹어플리케이션을 돌리기 위해 서비스를 하나 더 추가한 것이다.
port="9090" 은 새로 추가하고 싶은 포트이다.
appBase="d:/webapps/myweb2"는 9090 포트에서 돌아갈 웹사이트 위치이다.
이제 server.xml 설정은 끝난 것이다.
마지막으로 웹사이트의 ROOT 디렉토리를 지정해주자. 아래의 폴더를 생성한다.
d:/webapps/myweb2/ROOT/ (
d:/webapps/myweb2/ROOT/WEB-INF/
(WEB-INF 폴더를 만들고 web.xml 파일을 추가한다. 그냥 /TOMCAT_HOME/webapps/ROOT/WEB-INF/에 있는 web.xml 을 복사하면 된다.
무지 간단하다. 하지만 난 이 간단한 것을 위해서 하루종일 삽질해야만 했다. 검색해 보아도 문서는 많은데 실제 도움이 될만한 것이 별로 없었다.
테스트하기 위해 ROOT/index.html 또는 index.jsp를 만든다.
이제 톰캣을 재시작하고 웹브라우저로 접속해 보자.http://localhost:8080
http://localhost:9090
2010년 11월 15일 월요일
Unix 명령어
파일의 겟수를 체크할 경우
ls -l |wc -l
(예시)
nsdiap2:tmax [/app/tcpor/webapps.bak/WEB-INF/lib]# ls -l /app/tcpor/webapps/WEB*/lib |wc -l
ls -l |wc -l
(예시)
nsdiap2:tmax [/app/tcpor/webapps.bak/WEB-INF/lib]# ls -l /app/tcpor/webapps/WEB*/lib |wc -l
2010년 11월 11일 목요일
크롬 에러시 조치 방법
\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" --no-sandbox --new-http
no-sandbox --new-http
을 단축키에 추가해준다
no-sandbox --new-http
을 단축키에 추가해준다
2010년 11월 4일 목요일
FireBug Tips and Tricks
FireBug Tips and Tricks
There is so much power packed into this little FireFox plug-in. It is truly a revolutionary tool for web developers. Here is a quick and dirty set of its most powerful features.To get started, open up firebug using F12 or by clicking its icon
in the lower right corner of FireFox. To jump straight to the console and start typing commands you can use the Ctrl+Shift+L keyboard shortcut.
From here you can type commands. Try entering document. This will bring up the document DOM object and you can click on that link to get to the DOM and inspect all of the properties of the document object. A shortcut is also available by typing inspect(document) etc. You can use $ and $$ as in Prototype, such as $(‘firebug’) and inspect($$(‘.firebug’)). Use the up and down arrows to cycle through command history.
- Use console.log and sprintf formatting commands for debugging.
- Use console.info, console.warn and console.error to set your debugging levels.
- Use console.time to log the time your functions take to run.
- Use the error console to view the stack trace of the errors.
Try Console logging test using console.log You can use sprintf formatting here.
function consoleIntro(){ var x = "fubar"; var y = 543; console.log("value of x is %s and value of y is %d", x, y); }
function consoleLogLevels(){ var a = "This is an info level message"; var b = "This is a warn level message"; var c = "This is an error level message"; console.info(a); console.warn(b); console.error(c); }
function timeThisTask(){ console.time("Sample Timer"); for(x=100000;x>0;x--){} console.timeEnd("Sample Timer"); }
function stack1(){ var d = "fu";var e = "bar";var f = stack2(d,e) console.log(f); } function stack2(d,e){return stack3(d,e);} function stack3(d,e){return UndefinedVariable;}

Use the debugger to add breakpoints, debug JavaScript code and step through your code.
There are 3 ways to trigger the debugger:
- Use the debugger command.
- Add a breakpoint by clicking on the line number
- Enable the “Break on All Errors” option for the Script tab.
function debugMe(){ debugger; var g = 1; var h = new Date().getMilliseconds(); while(g < 100){ g *= 10; h -= g; } }


Use the profiler to record detailed statistics on your Script calls and DOM events. This works very much like macros. To manually start profiling click on the profile button in the Console tab. Then try performing some actions on the page. When you are done click on the profile button again. A report is returned which captures the funtions that were called within that time period.
The report output data can be sorted. Own Time tells you how much time each function call took in milliseconds and as a percentage of the total time which can be useful in finding bottlenecks in your code.
Try Manual Profiler test using the manual profile feature
function profileMe(){ timeThisTask(); var timerlink = document.getElementById("tabs"). getElementsByTagName('li')[2].firstChild; var typeNode = timerlink.nodeType; var nameNode = timerlink.nodeName; var valuNode = timerlink.nodeValue; }
Try the Coded Profiler using console.profile|profileEnd command
function profiledFunction(){ console.profile("Test Auto Profiler"); timeThisTask(); profileMe(); console.profileEnd("Test Auto Profiler"); }

You can log calls to a specific function call and see what parameters are being passed to it and how many times it is being called. To do this open the script tab, find your function and right click within it. From the popup menu choose the “log calls to “function name”".

Now whenever that function is called you get a nice message in the console along with the parameter values sent to it.
Try the Logged Function test with logged functions
function callLoggedFunction(){ for(x=0;x<2;x++){for(y=1;y>0;y--){loggedFuction(x,y);}} } function loggedFuction(x,y){ if(y>x) console.info("y is greater than x"); }

In the HTML tab you can also log events for specific elements. This can be useful when you are creating elements on the fly via the DOM and want to track all the events happening behind the scenes.
The Net tab is quite useful for tracing HTTP request and responses. Network traffic can be filtered by type (HTML, CSS, JS, Images, XmlHttpRequest). The Params tab is very handy and shows you the request parameters in a table format. This is great for tracing your Ajax requests. The issue with this that I found is that once a request is made which leaves the current page you loose the previous pages net events. Maybe a feature for the next version of FireBug?

From the HTML tab you can use the Layout tab to view and edit any element’s offset, margin, border, padding and dimension values on the fly.
In the Style sub tab of the HTML tab you can choose an option to “Show Computed Style” which shows you the final style values of the selected HTML element. Another neat trick is that you can click on any CSS property and edit it inline in real time. You can use the up/down keys and page up/page down keys to change numeric values and see your changes in real time, for example padding etc.
2010년 11월 1일 월요일
Sharing Fonts in ActionScript 3.0 - Part 1: Creating a Font SWF
Sharing Fonts in ActionScript 3.0 - Part 1: Creating a Font SWF
By: Robert Reinhardt
In this tutorial series, you learn how to use the new Font class in ActionScript 3.0 and Flash Player 9. The Font class enables you to embed one or more fonts in a Flash movie (SWF file), and reuse the font with other SWF files. In this tutorial, you learn how to create a font SWF file and load it into another Flash movie.NOTE: In order to follow along with the tutorials in this series, you need to use Adobe Flash CS3 Professional. The font sharing techniques discussed in this series require ActionScript 3.0 and Flash Player 9.
Developing a font sharing strategy
Before you embark on building a reusable system of font SWF files, you should carefully consider how you will implement the fonts in your Flash project. You have several options for structuring your font data in a SWF file:- Individual font and font style: You can embed one font (and only one style for that font) per font SWF file, and build a library of individual font SWF files. For example, if your Flash project needs BlurMedium, Big Caslon Bold, and Myriad Pro, you would create three Flash files (ActionScript 3.0). Each Flash file's library would contain only one font symbol. The benefit to this approach is that the file size of each font SWF should be rather small, enabling a shorter load time into other SWF files that require the font(s). You would also avoid loading font data that wasn't being utilized by other SWF files--for example, if you're project only required Verdana in Normal style, and your font SWF contains Verdana, Verdana Bold and Verdana Italic, the latter two styles are soaking up file size (and causing a longer download time) even though they're not being used by the project. Another benefit to this approach is that you can develop a large catalog of font SWFs that you can reuse from project to project. The drawback to this approach is that you'll need to manage more font SWF files.
- Multiple fonts and/or font styles: You could also opt to build a Flash file (ActionScript 3.0) that contains multiple font symbols. The font SWF file would contain more data, and would require a longer download time into other SWF files. However, if you need to use several fonts in a movie, downloading one font SWF file may be easier to manage than downloading multiple font SWF files.
- Use the font's name: If you want an easy system to maintain, simply name each font symbol after the font's name and style. For example, if you want to add BlurMedium Bold to your font SWF file, name the font symbol and font class BlurMediumBold.
- Create a name based on style: You can develop a font SWF that contains font symbols named after a style usage, enabling you to change specific font faces and styles without needing to update the font name used in other SWF files. For example, you could create a font symbol whose class name is BodyFont and set its font choice to Verdana. In your other SWF files that require the BodyFont style, you can refer to the term BodyFont instead of Verdana. In this way, should you ever need to change the font choice for the BodyFont symbol, you don't need to update your ActionScript code.
Creating and Registering a Font Symbol
Some of the steps to build an ActionScript 3.0 (AS3) font SWF are identical to those used to create shared fonts in runtime shared libraries (RSL's) available in previous versions of the Flash Player. (You can still use RSL's in Flash Player 9 as well.) Perform the following steps to create an AS3 font SWF for the common typeface, Verdana.- Open Flash CS3, and create a new Flash file (ActionScript 3.0). Save this file as Verdana.fla.
- Open the Library panel (Ctrl/Cmd+L). Click this panel's options menu in the top right corner and choose New Font. In the Font Symbol Properties dialog, choose Verdana in the Font menu. In the Name field, type Verdana as shown in Figure 1. Click OK.

Figure 1 - The Font Symbol Properties dialog - Right-click (or Ctrl+click on Mac) the Verdana font symbol in the Library panel, and choose Linkage. In the Linkage Properties dialog (Figure 2), select the Export for ActionScript check box. By doing so, the Export in first frame option is automatically selected as well. In the Class field, type Verdana. Now, the Verdana symbol is officially an ActionScript 3.0 class that you can use in your AS3 code. Click OK.

Figure 2 - The Linkage Properties dialog - In the Timeline window, rename Layer 1 to actions.
- Select frame 1 of the actions layer, and open the Actions panel (F9, or Option+F9 on Mac). Add the code shown in the following code block. The Font.registerFont() method enables you to make a font symbol available to any other SWF file that loads the SWF file containing the Verdana symbol. import flash.text.Font;
Font.registerFont(Verdana); - Save the Flash file, and test the movie (Ctrl/Cmd+Enter). The font SWF will not create anything on the stage, but the font is embedded in the SWF file. You can open the Bandwidth Profiler (View > Bandwidth Profiler) in the Test Movie environment to see that the SWF file is 19 KB, the size of the embedded Verdana font.
Loading the Font SWF into Another Flash movie
After you've created an AS3 font SWF file, you're ready to test the font by loading the SWF into another Flash movie. In this section, you create a tester that loads the font SWF and shows the name of the embedded font in the Output panel. Complete the following steps to load the font SWF file ito another Flash movie:- In Flash CS3, create a new Flash file (ActionScript 3.0). Save this file as font_tester.fla. Save this file in the same location as the Verdanda.swf file created in the last section.
- Rename Layer 1 to actions. Select frame 1 of the actions layer, and open the Actions panel (F9, or Option+F9 on Mac). Add the code shown in the following code block. This code create a new Loader instance to grab the Verdana.swf created in the last section. When the SWF has finished the loading, the Font.enumerateFonts() method is used to list all of the embedded fonts available to use in the Flash movie. import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import flash.events.Event;
var fontLoader:Loader = new Loader();
var fontLoaderInfo:LoaderInfo = fontLoader.contentLoaderInfo;
fontLoaderInfo.addEventListener(Event.COMPLETE, onFontLoaded);
fontLoader.load(new URLRequest("Verdana.swf"));
function onFontLoaded (e:Event):void {
var info:LoaderInfo = e.currentTarget as LoaderInfo;
var loader:Loader = info.content as Loader;
var embeddedFonts:Array = Font.enumerateFonts(false);
for(var i:Number = 0; i < embeddedFonts.length; i++){
var item:Font = embeddedFonts[i];
trace("[" + i + "] name:" + item.fontName + ", style: " + item.fontStyle + ", type: " + item.fontType);
}
} - Save the Flash file, and test the Flash movie (Ctrl/Cmd+Enter). Once the Verdana.swf file loads into the font_tester.swf file, the onFontLoaded() function is invoked. The Output panel in Flash CS3 should show the following message: [0] name:Verdana, style: regular, type: embedded
Conclusion
You now know how to build an AS3 font SWF and load it into another Flash movie with ActionScript 3.0 code. In the next tutorial of this series, you learn how create a text field which displays text using an embedded font symbol from another SWF file.2010년 10월 28일 목요일
SWF Font Embed
Range 설정으로 전체 Font에 대한 SWF 파일 사이즈가 줄어든다.
즉, FLEX 3.0 내부에서 FONT를 Embed 하는 것은 폰트 파일 안에 포함된 전체 Character Set을 Embed 하는 것이기 때문에 용량이 클 수 밖에 없다.
그러나 FLASH 에서 FONT Range 설정으로 실제로 쓰게될 Character Set만 Embed 하게 되므로 전체 용량은 줄어 들 수 밖에 없다.
정말 좋은 팁이군 ㅋㅋ
히밤.. 윤고딕 폰트 크기가 1.77MB 다. 지금 Application 전체 용량이 1MB 가 안되는 이시점에서 이게 웬 귀신 풀 뜯어 먹는 애기란 말인가...
망설일것 없이 바로 적용해야지 !

1. CSS에서 불러오기
@font-face{
2.MXML에서 불러오기
[Embed (source='../assets/myFont.swf', fontName='Yoon 윤고딕 530_TT')]
1, 2 방법 중 편한것을 사용하자. 2의 방법을 사용하면 폰트를 제어하기가 더욱 편리하다.
이렇게 하면 이제 윤고딕 530을 쓸 수 있다.
fontFamily에서 이름은 아무 이름이나 쓸 수 있는 것이 아니다.
플레시에서 노출되는 이름을 그대로 써 주어야 한다.
그렇지 않으면 아래와 같은 오류가 발생할 것이다.
(Errors : font 'OOO' with normal weight and regular style not found, Unable to transcode OOOOO.swf.)
advancedAntiAliasing 속성은 적지 않는다. 이미 플레시에서 정의했으므로 플렉스에서 정의할 수 없다.
참고 : Help > Adobe Flex 3 Help > User Interfaces > Using Fonts > Embedding fonts from SWF files
즉, FLEX 3.0 내부에서 FONT를 Embed 하는 것은 폰트 파일 안에 포함된 전체 Character Set을 Embed 하는 것이기 때문에 용량이 클 수 밖에 없다.
그러나 FLASH 에서 FONT Range 설정으로 실제로 쓰게될 Character Set만 Embed 하게 되므로 전체 용량은 줄어 들 수 밖에 없다.
정말 좋은 팁이군 ㅋㅋ
히밤.. 윤고딕 폰트 크기가 1.77MB 다. 지금 Application 전체 용량이 1MB 가 안되는 이시점에서 이게 웬 귀신 풀 뜯어 먹는 애기란 말인가...
망설일것 없이 바로 적용해야지 !
플레시를 이용해서 SWF 폰트 만들기
- Text를 하나 생성한다. 반드시 글이 들어가야 한다. 텍스트의 이름을 넣어주면 차후 사용하기 편리할 것이다.
- 원하는 Font Family를 선택한다.
- Dynamic Text를 선택한다.
- 플렉스에서 advanced anti-aliasing을 사용하고 싶으면 Anti-Alias for Readability나 Custom Anti-Alias를 선택해 준다.
- Embed버튼을 누른다.
- [중요]Character Embedding창에서 원하는 Range를 선택해 준다.
- Range가 추가될 때 마다 용량이 커진다.
- TypeFace(Bold, Italic)를 여러가지 만들고 싶으면, 원하는 TypeFace별로 1~6과정을 반복한다.
Flex Application에 SWF파일 불러오기
SWF파일 : assets 폴더 안에 myFont.swf인 경우1. CSS에서 불러오기
@font-face{
src:url("../assets/myFont.swf");
fontFamily : "Yoon 윤고딕 530_TT";
}2.MXML에서 불러오기
[Embed (source='../assets/myFont.swf', fontName='Yoon 윤고딕 530_TT')]
1, 2 방법 중 편한것을 사용하자. 2의 방법을 사용하면 폰트를 제어하기가 더욱 편리하다.
이렇게 하면 이제 윤고딕 530을 쓸 수 있다.
fontFamily에서 이름은 아무 이름이나 쓸 수 있는 것이 아니다.
플레시에서 노출되는 이름을 그대로 써 주어야 한다.
그렇지 않으면 아래와 같은 오류가 발생할 것이다.
(Errors : font 'OOO' with normal weight and regular style not found, Unable to transcode OOOOO.swf.)
advancedAntiAliasing 속성은 적지 않는다. 이미 플레시에서 정의했으므로 플렉스에서 정의할 수 없다.
참고 : Help > Adobe Flex 3 Help > User Interfaces > Using Fonts > Embedding fonts from SWF files
2010년 10월 10일 일요일
windows XP 로그인 암호를 잊었을때 해결 방법
이건 Administrator의 계정암호를 삭제하는 거지만 Administratior말고 Owner 계정암호를 삭제한다 라고 생각하시고 따라하시면 됩니다
-----------------------------------
<먼저 부팅시 F8을 눌러 안전 모드(도스 프롬프트로 부팅)을 선택하여 부팅한다.
그러면 다시 로그인 화면이 뜬다.
그 화면에서 Ctrl+Alt 키를 동시에 누른 상태에서 Del 키를 두번 누르면 윈도우 로그인 화면이 새로 뜬다,
거기서 로그인 ID에 administrator 를 치고 비밀번호 없이 바로 엔터를 친다.
그러면 도스 모드로 부팅된다.
자 지금부터 이대로 따라 하시오.
c:>net user 계정아이디 * 까지 치고 엔터
여기서 계정 아이디는 현재 썼던 아이디 입니다.(띄우기 하세요)
새 비밀번호 를 입력 하라고 나옵니다. 그러면
새비밀번호를 입력후 엔터를 친다
(주의:비밀번호 칠때 커서는 변하지 않으니 잘 기억하면서 치세요)
다시한번더 비밀번호 입력 후 엔터 후 재부팅 하고 바뀐 비밀번호로 부팅하면 됨
XP 를 시작하면 사용자 계정 암호를 까먹었는데.. 알수있는 방법은 없나요?
윈도우xp시작할때 로그온시 비밀번호를 푸는방법좀
1. 사용하시던 계정이 administrator 가 아닐경우
2.사용자 아이디를 administrator 입력후 로그인
사용자 계정 변경 혹은 삭제함.
사용하시던 계정이 administrator 인 경우
1시스템을 부팅할 때 [F8]키를 눌러 안전모드(명령 프롬프트 사용)모드로 부팅
2. "del C:\winnt\system32\config\SAM" 를 입력하고 [Enter
위의 방법이 젤 좋은 것인데,네이버 많은 사람이 짧으니까 싫어하더군요.
1. 하드 디스크를 떼어 내어 정상적으로 운영되는 컴퓨터에 장착합니다.
2. 정상적으로 부팅한 후 패스워드를 잊어버린 디스크에서 \WINNT\system32\config 안에
있는 sam 파일을 정상적인 시스템의 임시 폴더에 복사합니다.
3. 실행창에서 반드시 "regedt32"로 레지스트리 편집기를 실행합니다.
4. HKEY_LOCAL_MACHINE를 선택한 후 레지스트리 메뉴바에서 하이브로드를 선택합니다.
5. 2번에서 복사한 SAM파일을 선택하고 아무 이름이나 지정한 후 하이브로드 합니다.
6. HKEY_LOCAL_MACHINE 창에서 하이브로드한 파일을 선택하고 메뉴바의 보안을 선택한 후 Administrator가
모든 권한을 가지게 설정합니다
7. 이제 하이브로드한 SAM파일에서 administrator 의 패스워드를 null값으로 바꾸어 줍니다. Administrator의 계정은
SAM\SAM\Domains\Account\Users\000001F4 입니다.
이 값을 선택하면 오른쪽 창에 F:REG_Binary 를 더블클릭하여 열어보면 암호화된 관리자의 패스워드가 보입니다.
모든 값을 지워버리고 공백으로 만듭니다. 즉 패스워드를 null값으로 만들겠다는 뜻입니다.
8. 설정값을 저장한 후 하이브로드한 SAM파일을 다시
하이브 언로드 시킵니다.
9. 이제 이 SAM파일을 원래 패스워드를 잊어버린 시스템에 다시 복사하면 됩니다. 물론
안전을 기하는 의미에서 기존의 SAM파일은 다른 곳에 이동시켜놓는 것이 안전하겠지요...
10. 패스워드가 null값으로 수정된 하드 디스크를 원래의 시스템에 장착한 후 다시 부팅하면 관리자 패스워드를
아무 값이나 넣어도 로그온이 가능하게 됩니다.
윈도우XP 에서 Administrator 계정 비밀번호 알아내기
비밀번호 알 필요 없이 모든 사용자의 암호 변경방법
기존의 비밀번호를 알 필요 없이 모든 사용자의 비밀번호 변경하기
이 트윅은 좋은 용도로, 또는 나쁜 용도로 사용자에게 기회를 제공합니다.
사용자에게 기존의 비밀번호를 알 필요가 없이 아무 계정에서나 다시 비밀번호를 입력할 수 있게 해주며,
또한 현 체제에 존재하는 모든 계정을 보여줍니다 (숨겨져 있을지라도 말이죠).
관리자 계정의 비밀번호를 잃어버렸을 경우와 어떠한 이유 때문에 관리자 계정으로 로그인해야
할 필요가 있는 경우 사용하면 좋은 도구가 됩니다.
모든 사용자 계정을 보는 방법:
1) 컴퓨터에 로그인한
상태에서, [시작]→[실행]→CMD 라고 입력합니다.
2) 명령 프롬프트 창에서, NET USERS 라고 입력합니다.
이렇게 하면 컴퓨터 상에서 숨겨져 있는 계정이나 숨겨져 있지 않은 계정 모두 보여줄 것입니다.
계정 비밀번호를 변경하는 방법
1) 관리자 권한이 있는 계정으로 컴퓨터가 로그온 되어 있는 상태에서,[시작]→[실행]→CMD 라고 입력합니다.
2) NET USER 라고 입력하고 계정의 이름 뒤에 * 를 입력하고 Enter 키를 누릅니다.
예를 들자면: ① NET USER administrator *
② NET USER "존 스미스" *
공간을 포함한 경우 " 를 앞 뒤에 써둡시다. 공간을 포함하지 않는 경우 " 를 쓸 필요는 없습니다
3) 새로운 비밀번호를 물을 것입니다. 새로운 비밀번호를 입력하세요.
(매우 신중하게 입력하십시오 - 명령 창에는 당신이 입력하고 있는 것이 보이지 않을 테니까요)
그리고 한번 더 확인 입력하세요.
명령이 성공적으로 진행되었다는 메시지가 뜨면 다 된 것입니다!!!
---------------------------------------------
-----------------------------------
<먼저 부팅시 F8을 눌러 안전 모드(도스 프롬프트로 부팅)을 선택하여 부팅한다.
그러면 다시 로그인 화면이 뜬다.
그 화면에서 Ctrl+Alt 키를 동시에 누른 상태에서 Del 키를 두번 누르면 윈도우 로그인 화면이 새로 뜬다,
거기서 로그인 ID에 administrator 를 치고 비밀번호 없이 바로 엔터를 친다.
그러면 도스 모드로 부팅된다.
자 지금부터 이대로 따라 하시오.
c:>net user 계정아이디 * 까지 치고 엔터
여기서 계정 아이디는 현재 썼던 아이디 입니다.(띄우기 하세요)
새 비밀번호 를 입력 하라고 나옵니다. 그러면
새비밀번호를 입력후 엔터를 친다
(주의:비밀번호 칠때 커서는 변하지 않으니 잘 기억하면서 치세요)
다시한번더 비밀번호 입력 후 엔터 후 재부팅 하고 바뀐 비밀번호로 부팅하면 됨
XP 를 시작하면 사용자 계정 암호를 까먹었는데.. 알수있는 방법은 없나요?
윈도우xp시작할때 로그온시 비밀번호를 푸는방법좀
1. 사용하시던 계정이 administrator 가 아닐경우
2.사용자 아이디를 administrator 입력후 로그인
사용자 계정 변경 혹은 삭제함.
사용하시던 계정이 administrator 인 경우
1시스템을 부팅할 때 [F8]키를 눌러 안전모드(명령 프롬프트 사용)모드로 부팅
2. "del C:\winnt\system32\config\SAM" 를 입력하고 [Enter
위의 방법이 젤 좋은 것인데,네이버 많은 사람이 짧으니까 싫어하더군요.
1. 하드 디스크를 떼어 내어 정상적으로 운영되는 컴퓨터에 장착합니다.
2. 정상적으로 부팅한 후 패스워드를 잊어버린 디스크에서 \WINNT\system32\config 안에
있는 sam 파일을 정상적인 시스템의 임시 폴더에 복사합니다.
3. 실행창에서 반드시 "regedt32"로 레지스트리 편집기를 실행합니다.
4. HKEY_LOCAL_MACHINE를 선택한 후 레지스트리 메뉴바에서 하이브로드를 선택합니다.
5. 2번에서 복사한 SAM파일을 선택하고 아무 이름이나 지정한 후 하이브로드 합니다.
6. HKEY_LOCAL_MACHINE 창에서 하이브로드한 파일을 선택하고 메뉴바의 보안을 선택한 후 Administrator가
모든 권한을 가지게 설정합니다
7. 이제 하이브로드한 SAM파일에서 administrator 의 패스워드를 null값으로 바꾸어 줍니다. Administrator의 계정은
SAM\SAM\Domains\Account\Users\000001F4 입니다.
이 값을 선택하면 오른쪽 창에 F:REG_Binary 를 더블클릭하여 열어보면 암호화된 관리자의 패스워드가 보입니다.
모든 값을 지워버리고 공백으로 만듭니다. 즉 패스워드를 null값으로 만들겠다는 뜻입니다.
8. 설정값을 저장한 후 하이브로드한 SAM파일을 다시
하이브 언로드 시킵니다.
9. 이제 이 SAM파일을 원래 패스워드를 잊어버린 시스템에 다시 복사하면 됩니다. 물론
안전을 기하는 의미에서 기존의 SAM파일은 다른 곳에 이동시켜놓는 것이 안전하겠지요...
10. 패스워드가 null값으로 수정된 하드 디스크를 원래의 시스템에 장착한 후 다시 부팅하면 관리자 패스워드를
아무 값이나 넣어도 로그온이 가능하게 됩니다.
윈도우XP 에서 Administrator 계정 비밀번호 알아내기
비밀번호 알 필요 없이 모든 사용자의 암호 변경방법
기존의 비밀번호를 알 필요 없이 모든 사용자의 비밀번호 변경하기
이 트윅은 좋은 용도로, 또는 나쁜 용도로 사용자에게 기회를 제공합니다.
사용자에게 기존의 비밀번호를 알 필요가 없이 아무 계정에서나 다시 비밀번호를 입력할 수 있게 해주며,
또한 현 체제에 존재하는 모든 계정을 보여줍니다 (숨겨져 있을지라도 말이죠).
관리자 계정의 비밀번호를 잃어버렸을 경우와 어떠한 이유 때문에 관리자 계정으로 로그인해야
할 필요가 있는 경우 사용하면 좋은 도구가 됩니다.
모든 사용자 계정을 보는 방법:
1) 컴퓨터에 로그인한
상태에서, [시작]→[실행]→CMD 라고 입력합니다.
2) 명령 프롬프트 창에서, NET USERS 라고 입력합니다.
이렇게 하면 컴퓨터 상에서 숨겨져 있는 계정이나 숨겨져 있지 않은 계정 모두 보여줄 것입니다.
계정 비밀번호를 변경하는 방법
1) 관리자 권한이 있는 계정으로 컴퓨터가 로그온 되어 있는 상태에서,[시작]→[실행]→CMD 라고 입력합니다.
2) NET USER 라고 입력하고 계정의 이름 뒤에 * 를 입력하고 Enter 키를 누릅니다.
예를 들자면: ① NET USER administrator *
② NET USER "존 스미스" *
공간을 포함한 경우 " 를 앞 뒤에 써둡시다. 공간을 포함하지 않는 경우 " 를 쓸 필요는 없습니다
3) 새로운 비밀번호를 물을 것입니다. 새로운 비밀번호를 입력하세요.
(매우 신중하게 입력하십시오 - 명령 창에는 당신이 입력하고 있는 것이 보이지 않을 테니까요)
그리고 한번 더 확인 입력하세요.
명령이 성공적으로 진행되었다는 메시지가 뜨면 다 된 것입니다!!!
---------------------------------------------
2010년 8월 27일 금요일
Balsamiq(발사미크) 웹기획 Mockup 툴 한글 폰트 사용
Balsamiq(발사미크) 웹기획 Mockup 툴
아틀라시안 사에서 내어놓은 웹페이지 mockup 툴로
quick으로 웹기획을 할 때 매우 훌륭한 툴입니다
jira, confluence 등과 연계가 되므로, 글로벌 하게 사업하는 곳에서는 훌륭한 툴인 것 같네요..
디폴트로는 한글이 불가능하지만. 약간의 수정을 가하면 한글 사용도 가능합니다.
- OS별 한글 폰트 추가 위치
On Windows XP: C:\Documents and Settings\<username>\Application Data\BalsamiqMockupsForDesktop.#numbers#\Local Store
On Mac OS X: <your user home>/Library/Preferences/BalsamiqMockupsForDesktop.#numbers#/Local Store
On Windows Vista: C:\Users\<yourusername>\AppData\Roaming\BalsamiqMockupsForDesktop.#numbers#\Local Store
On Linux: ~/.appdata/BalsamiqMockupsForDesktop.#numbers#/Local Store
The config file might look like this:
<config>
<fontFace>Architect Small Block</fontFace>
<rememberWindowSize>false</rememberWindowSize>
<useCookies>false</useCookies>
</config>
운영체제 별로 해당하는 경로를 찾아가서 BalsamiqMockups.cfg 라는 파일을 만드시고 그 내용으로 위에 있는 xml을 입력 하고 다른건 특별히 건드리지 않고 <fontFace></fontFace>에 공란으로 두시거나, 한글폰트명을 적고, balsamiq을 재시작 하면, 한글이 정상적으로 나타납니다~!
아틀라시안 사에서 내어놓은 웹페이지 mockup 툴로
quick으로 웹기획을 할 때 매우 훌륭한 툴입니다
jira, confluence 등과 연계가 되므로, 글로벌 하게 사업하는 곳에서는 훌륭한 툴인 것 같네요..
디폴트로는 한글이 불가능하지만. 약간의 수정을 가하면 한글 사용도 가능합니다.
- OS별 한글 폰트 추가 위치
On Windows XP: C:\Documents and Settings\<username>\Application Data\BalsamiqMockupsForDesktop.#numbers#\Local Store
On Mac OS X: <your user home>/Library/Preferences/BalsamiqMockupsForDesktop.#numbers#/Local Store
On Windows Vista: C:\Users\<yourusername>\AppData\Roaming\BalsamiqMockupsForDesktop.#numbers#\Local Store
On Linux: ~/.appdata/BalsamiqMockupsForDesktop.#numbers#/Local Store
The config file might look like this:
<config>
<fontFace>Architect Small Block</fontFace>
<rememberWindowSize>false</rememberWindowSize>
<useCookies>false</useCookies>
</config>
운영체제 별로 해당하는 경로를 찾아가서 BalsamiqMockups.cfg 라는 파일을 만드시고 그 내용으로 위에 있는 xml을 입력 하고 다른건 특별히 건드리지 않고 <fontFace></fontFace>에 공란으로 두시거나, 한글폰트명을 적고, balsamiq을 재시작 하면, 한글이 정상적으로 나타납니다~!
2010년 8월 17일 화요일
Eclipse 플러그인으로 코드 품질 높이기
원문 URL : http://www.ibm.com/developerworks/kr/library/j-ap01117/
사람을 위한 자동화: Eclipse 플러그인으로 코드 품질 높이기다섯 개의 유용한 플러그인으로 Eclipse 내에서 코드 품질 분석 자동화 하기
Paul Duvall, CTO, Stelligent Incorporated
Paul Duvall은 Stelligent Incorporated의 CTO이다.UML™ 2 Toolkit Toolkit을 공동 집필했으며 곧 출간될 Addison-Wesley Signature Series, Continuous Integration: Improving Software Quality and Reducing Risk의 공동 저자이다.
요약: 코드를 빌드하기 전에 코드에서 중대한 문제를 발견할 수 있다면 어떨까요? 재미있게도, 소프트웨어에 문제가 드러나기 전에 문제를 발견할 수 있도록 해주는 JDepend와 CheckStyle 같은 Eclipse 플러그인이 있습니다. 사람을 위한 자동화 시리즈에서는, 자동화 전문가 Paul Duvall이 Eclipse에서 정적인 분석 플러그인을 설치, 구성, 사용하는 방법을 예제를 통해 설명합니다. 이제 여러분도 개발 사이클에서 문제를 조기에 방지할 수 있습니다.
이 연재 자세히 보기
이 기사에 테그: 애플리케이션_개발, 이클립스
여기에 태그 달기!
원문 게재일: 2007 년 4 월 24 일
난이도: 초급
페이지뷰: 698 회
의견: 0 (의견 추가)
평균 평가 등급 (총 25표)
시리즈 소개개발자로서, 사용자를 위해 프로세스를 자동화 하고 있습니다. 하지만, 정작 우리들 자신의 개발 프로세스를 자동화 할 수 있는 기회를 간과하고 있습니다. 따라서, 사람을 위한 자동화 시리즈에서는 소프트웨어 개발 프로세스를 자동화 하는 방법을 연구하고, 자동화를 적용할 시기와 방법을 설명합니다.소프트웨어를 개발할 때, 필자가 기본적으로 강조하는 부분은 결함이 코드 베이스에 들어가지 않도록 하는 것 또는 이것의 수명을 제한하는 것이다. 다시 말해서, 가능하면 빨리 결함을 찾으려고 노력한다. 더 나은 코드를 작성하는 방법을 배우고, 소프트웨어를 효과적으로 테스트 하는 방법을 배워갈수록, 결함을 더욱 잘 찾아내게 된다. 하지만, 중대한 결함을 찾을 수 있는 보안 망(safety net)도 갖고 싶기는 하다.
본 시리즈의 8월 기사에서, 감시 툴을 빌드 프로세스에 통합하면(Ant 또는 Maven을 사용함) 잠재적 결함들을 찾는데 효과적이라는 결론을 내렸다. 비록, 이러한 방식이 일관성을 유지하고 IDE를 능가하는 부분도 있지만, 약간 보수적(reactionary)이기도 하다. 여러분은 소프트웨어를 로컬에서 구현하거나, Continuous Integration 빌드가 실행되기를 기다려야 한다. 하지만, Eclipse 플러그인을 사용하면, Continuous Integration을 통해 빌드 또는 통합하기 전에 위반 사항들을 발견할 수 있다. 바로 이것을 진보적인 프로그래밍(progressive programming)이라고 할 수 있으며, 코딩 하면서 품질 체크도 실행할 수 있다.
이 글에서는 "5대" 코드 분석 영역에 대해 설명하겠다.
코딩 표준
코드 중복
코드 커버리지
의존성 분석
복잡성 모니터링
이러한 분석 영역들은 다음과 같은 Eclipse 플러그인을 사용한다.
CheckStyle: 코딩 표준
PMD의 CPD: 코드 중복 발견
Coverlipse: 코드 커버리지 측정
JDepend: 의존성 분석 제공
Eclipse Metrics 플러그인: 복잡성 탐지
Eclipse는 빌드 시스템이 아닙니다.Eclipse 플러그인을 사용한다고 해서 빌드 프로세스의 일부로 이러한 감시 툴을 사용하지 못하게 하는 것은 말도 안 된다. 사실, Eclipse 플러그인을 사용하는데 따르는 규칙들은 빌드 프로세스에도 똑같이 적용되는 규칙들이다.Eclipse 플러그인 설치하기
Eclipse 플러그인 설치는 매우 간단하며, 단지 몇 단계만 거치면 된다. 시작하기 전에, 플러그인의 다운로드 사이트의 URL을 파악하는 것이 좋다. 표 1에서 필자가 이 글에서 사용하는 플러그인 리스트를 정리했다.
표 1. 코드 향상 플러그인과 설치 URL 리스트
툴 목적 Eclipse 플러그인 URL
CheckStyle 코딩 표준 분석 http://eclipse-cs.sourceforge.net/update/
Coverlipse 코드 커버리지 테스트 http://coverlipse.sf.net/update
CPD Copy/Paste 탐지 http://pmd.sourceforge.net/eclipse/
JDepend 패키지 의존성 분석 http://andrei.gmxhome.de/eclipse/
Metrics Complexity monitoring http://metrics.sourceforge.net/update
이제 여러분은 유용한 플러그인을 어디서 구하는지 알았으니, 설치는 간단하다. Eclipse를 시작하고 다음 단계들을 수행한다.
Help
Software Updates
Find and Install을 선택한다. (그림 1)
그림 1. Eclipse 플러그인 찾기 및 설치
Search for new features to install 라디오 버튼을 선택하고 Next를 클릭한다.
New Remote Site를 클릭하고, 원하는 플러그인의 이름과 URL을 입력한다. (그림 2) OK를 클릭한 다음 Finish를 클릭하면 Eclipse Update Manager가 디스플레이 된다.
그림 2. 새로운 원격 사이트 구성하기
Eclipse Update Manager에서, 플러그인의 다양한 측면을 볼 수 있는 옵션이 있다. 일반적으로 위에 있는 것을 선택한다. (그림 3) 선택을 하고 Finish를 클릭한다. Eclipse는 이때 플러그인을 설치한다. Eclipse 인스턴스를 재시작 해야 한다.
그림 3. Eclipse 플러그인 설치하기
이 단계를 수행하면 Eclipse 플러그인이 설치된다. 플러그인의 이름과 관련 다운로드 위치를 변경하라.
--------------------------------------------------------------------------------
위로
CheckStyle로 표준 수정하기
코드 베이스에 대한 관리능력은 소프트웨어의 총 비용에 직접적인 영향을 미친다. 더욱이, 관리능력은 개발자의 욕구 불만에도 기여한다. 코드 변경이 쉬울수록, 새로운 제품 기능을 추가하기도 쉽다. CheckStyle 같은 툴은 큰 클래스, 긴 메소드, 사용되지 않는 변수 등에 대한 관리능력에 영향을 미치는 코딩 표준의 위반 사항들을 찾는데 도움이 된다.
PMD에 대해서PMD라고 하는 오픈 소스 툴은 CheckStyle과 비슷한 기능을 제공한다. 나는 CheckStyle을 선호하지만, PMD도 강력하고 전문적이기 때문에, 여러분도 한번 사용해 보길 권한다.Eclipse용 CheckStyle 플러그인을 사용하면 코딩 하면서 소스 코드 내에서 다양한 위반 사항에 대해 알 수 있고, 개발자들이 체크인 전에 위반 사항을 고치게 된다. CheckStyle 플러그인을 지속적인 코드 리뷰에 사용하는 것으로 생각하면 된다.
CheckStyle 플러그인을 설치하고, 다음과 같이 구성한다. (그림 4)
Eclipse 메뉴에서 Project를 선택한 다음 Properties 아이템을 선택한다.
CheckStyle active for this project 체크 박스를 선택하고 OK를 클릭한다.
그림 4. Eclipse에서 CheckStyle 플러그인 구성하기
Eclipse는 워크스페이스를 재구현 하고 Eclipse 콘솔 안에 코딩 위반 사항들을 발견해 낸다. (그림 5)
그림 5. Eclipse내에 나타난 CheckStyle 위반 사항 리스트
CheckStyle 플러그인을 사용하여 Eclipse 내에 코딩 표준 검사를 포함시키면, 코딩 하는 동안 코드를 향상시킬 수 있고, 개발 사이클에서 조기에 소스 코드의 잠재적 결함을 발견할 수 있다. 여러분의 시간, 좌절감, 나아가서 프로젝트 비용까지 줄일 수 있다는 이점도 있다.
--------------------------------------------------------------------------------
위로
Coverlipse로 커버리지 확인하기
Coverlipse는 상응하는 테스트를 갖고 있는 소스 코드의 비율을 평가하는데 사용할 수 있는 Eclipse 플러그인이다. Coverlipse를 사용하여 코드를 작성하는 동안 코드 커버리지를 평가할 수 있다. 벌써 패턴을 인식하고 있나?
Coverlipse 플러그인을 설치하고 Run Eclipse 메뉴 아이템을 선택하여 JUnit과 연결시킨다. 이렇게 하면 JUnit, SWT 애플리케이션, 자바™ 애플리케이션 같은 실행 구성들이 나타난다. 오른쪽 클릭하여 JUnit w/Coverlipse 노드에서 New를 선택한다. 여기서부터, JUnit 테스트의 위치를 규명해야 한다. (그림 6)
그림 6. Coverlipse를 구성하여 코드 커버리지 확보하기
Run을 클릭하면, Eclipse는 Coverlipse를 실행하고 소스 코드에 마커를 삽입한다. (그림 7) 이것은 JUnit 테스트로 연결되었던 코드의 부분들을 나타낸다.
그림 7. Coverlipse에 의해서 생성된 리포트와 삽입된 클래스 마커
보다시피, Coverlipse Eclipse 플러그인을 사용하여 훨씬 더 빠르게 코드 커버리지를 결정할 수 있다. 이 기능은 코드를 CM 시스템에 체크인 하기 전에 테스팅 하는데 도움이 된다. 이 얼마나 진보적인 프로그래밍인가?
--------------------------------------------------------------------------------
위로
CPD로 코드 중복 발견하기
PMD 플러그인은 CPD(Copy Paste Detector)라고 하는 기능을 제공하는데, 이것은 중복된 코드를 찾아낸다. Eclipse에서 이 툴을 사용하려면, CPD 유틸리티가 포함된 PMD용 Eclipse 플러그인을 설치해야 한다.
중복 코드를 찾아내려면, Eclipse 프로젝트를 오른쪽 클릭하고, PMD
Find Suspect Cut and Paste를 선택한다. (그림 8)
그림 8. CPD 플러그인을 사용하여 Copy and Paste 체크 실행하기
CPD를 실행했다면, report 폴더가 Eclipse 루트 디렉토리에 생성되고, 여기에는 cpd.txt라는 파일이 포함된다. 이곳에 모든 중복 코드들이 나열된다. cpd.txt 파일 예제는 그림 9를 참조하라.
그림 9. Eclipse 플러그인에서 생성된 CPD 텍스트 파일
중복 코드를 직접 찾기란 어려운 일이지만, CPD 같은 툴을 사용하면 코딩 하는 동안 중복 코드를 빠르게 찾아낼 수 있다.
--------------------------------------------------------------------------------
위로
JDepend를 이용한 의존성 검사
JDepend는 무료로 사용할 수 있는 오픈 소스 툴로서, 패키지 의존성에 대한 객체 지향식의 측정법을 제공한다. 코드 베이스의 복원력에 대한 지표라고 할 수 있다. 다시 말해서, JDepend는 아키텍처의 정합성을 측정하는데 사용된다.
Eclipse 플러그인 외에도, JDepend는 Ant 태스크, Maven 플러그인, 자바 애플리케이션을 사용하여 측정 결과를 얻는다. 각각은 같은 정보를 다르게 전달한다. 하지만, Eclipse 플러그인이 가진 중요한 차이점 및 효과라고 한다면 정보를 (여러분이 코딩한 대로) 소스 코드에 매우 근접하게 제공한다는 점이다.
그림 10은 소스 폴더를 오른쪽 클릭하고, Run JDepend Analysis를 선택하여 JDepend용 Eclipse 플러그인을 사용하는 방법을 보여준다. 소스 코드를 갖고 있는 폴더를 선택하라. 그렇게 하지 않으면, 메뉴 옵션을 볼 수 없다.
그림 10. JDepend Analysis를 사용하여 코드 분석하기
JDepend 분석을 실행할 때 생성되는 리포트는 그림 11에 나와있다. 왼쪽 패인은 패키지를 나타내고, 오른쪽 패인은 각 패키지의 의존성을 나타낸다.
그림 11. Eclipse 내 프로젝트의 패키지 의존성
JDepend 플러그인은 이 아키텍처가 시간이 흘러도 유지될 수 있는지의 여부를 볼 수 있는 많은 정보를 제공하고 있다. 가장 중요한 것은 코딩 하는 동안 데이터를 볼 수 있다는 점이다.
--------------------------------------------------------------------------------
위로
Metrics로 복잡성 평가하기
"5대" 코드 분석 영역의 마지막 영역은 복잡성이다. Eclipse는 Metrics라고 하는 플러그인을 제공한다. 이것은 복잡성을 포함하여 유용한 코드 메트릭스를 제공하는데, 이것은 메소드의 고유 경로의 수를 측정한 것이다.
Metrics 플러그인을 설치하고 Eclipse를 재시작 한다. 다음 단계들을 수행한다.
프로젝트를 오른쪽 클릭하고, Properties 메뉴를 선택한다. 결과 윈도우에서, Enable Metrics plugin 체크 박스를 선택하고 OK를 클릭한다. (그림 12)
그림 12. Metrics 구성하기
Eclipse에서 Window 메뉴를 선택하여 Metrics 뷰를 열고 Show View
Other...를 선택한다.
Metrics
Metrics View를 선택하여 윈도우를 연다. (그림 13) 자바 퍼스펙티브를 사용하고 프로젝트를 재구현 하여 메트릭스를 디스플레이 한다.
그림 13. Eclipse에서 Metrics View 열기
OK를 클릭하면 그림 14에 나온 것 같은 윈도우가 디스플레이 된다.
이 경우, 나는 개별 메소드의 복잡성을 보고 있다. 정말로 좋은 점은 Metrics 리스트에서 메소드를 더블 클릭할 수 있고, 플러그인이 Eclipse 에디터에서 그 메소드용 소스 코드를 연다는 점이다. 정정하기가 아주 쉬워졌다.
그림 14. 메소드용 Cyclomatic Complexity 보기
앞서 언급했지만, Eclipse Metrics는 소프트웨어를 개발하는 동안 코드를 향상시킬 수 있는 강력한 메트릭스를 제공한다.
--------------------------------------------------------------------------------
위로
직접 사용해 보기
이 글에서 언급한, 코딩 표준, 코드 중복, 코드 커버리지, 의존성 분석, 복잡성 모니터링 등 "5대" 코드 품질 평가를 하는 것이 중요하다고 생각한다. 개발 사이클에서 조기에 코드의 품질을 향상시킬 수 있는 PMD와 FindBugs 같은 기타 Eclipse 플러그인들도 많이 있다는 것도 알아두기 바란다. 원하는 툴이나 선호하는 평가 방식과 별도로, 코드를 적극적으로 향상시키려는 노력을 기울여야 하며, 수동의 코드 리뷰 프로세스도 더욱 효율성 있게 해야 한다. 이 툴을 사용해 보면, 그 동안 이 툴 없이 어떻게 살았는지에 대한 의문이 일 것이다.
기사의 원문보기
Automation for the people: Improving code with Eclipse plugins
참고자료
교육
사람을 위한 자동화 (Paul Duvall, developerWorks): 시리즈 정복하기
"Improving Code Quality with PMD and Eclipse" (Levent Gurses, Jacoozi, 2005년 1월)
"Measure test coverage with Cobertura" (Elliotte Rusty Harold, developerWorks, 2005년 5월)
"Don't be fooled by the coverage report" (Andrew Glover, developerWorks, 2006년 1월)
"Managing Your Dependencies with JDepend" (Glen Wilcox, OnJava, 2004년 1월)
"Code quality for software architects" (Andrew Glover, developerWorks, 2006년 4월)
" 사람을 위한 자동화: Continuous Inspection" (Paul Duvall, developerWorks, 2006년 8월)
"Detecting Duplicate Code with PMD's CPD" (Tom Copeland, OnJava, 2003년 3월)
"Maintain organizational standards with code audits" (testearly.com)
한국 developerWorks 자바 존: 자바 프로그래밍 관련, 다양한 기술자료 보기
제품 및 기술 얻기
Eclipse plugin for PMD
Eclipse plugin for JDepend
Eclipse plugin for Coverlipse
Eclipse Metrics
Eclipse plugin for CheckStyle
토론
자바 포럼
필자소개
사람을 위한 자동화: Eclipse 플러그인으로 코드 품질 높이기다섯 개의 유용한 플러그인으로 Eclipse 내에서 코드 품질 분석 자동화 하기
Paul Duvall, CTO, Stelligent Incorporated
Paul Duvall은 Stelligent Incorporated의 CTO이다.UML™ 2 Toolkit Toolkit을 공동 집필했으며 곧 출간될 Addison-Wesley Signature Series, Continuous Integration: Improving Software Quality and Reducing Risk의 공동 저자이다.
요약: 코드를 빌드하기 전에 코드에서 중대한 문제를 발견할 수 있다면 어떨까요? 재미있게도, 소프트웨어에 문제가 드러나기 전에 문제를 발견할 수 있도록 해주는 JDepend와 CheckStyle 같은 Eclipse 플러그인이 있습니다. 사람을 위한 자동화 시리즈에서는, 자동화 전문가 Paul Duvall이 Eclipse에서 정적인 분석 플러그인을 설치, 구성, 사용하는 방법을 예제를 통해 설명합니다. 이제 여러분도 개발 사이클에서 문제를 조기에 방지할 수 있습니다.
이 연재 자세히 보기
이 기사에 테그: 애플리케이션_개발, 이클립스
여기에 태그 달기!
원문 게재일: 2007 년 4 월 24 일
난이도: 초급
페이지뷰: 698 회
의견: 0 (의견 추가)
평균 평가 등급 (총 25표)
시리즈 소개개발자로서, 사용자를 위해 프로세스를 자동화 하고 있습니다. 하지만, 정작 우리들 자신의 개발 프로세스를 자동화 할 수 있는 기회를 간과하고 있습니다. 따라서, 사람을 위한 자동화 시리즈에서는 소프트웨어 개발 프로세스를 자동화 하는 방법을 연구하고, 자동화를 적용할 시기와 방법을 설명합니다.소프트웨어를 개발할 때, 필자가 기본적으로 강조하는 부분은 결함이 코드 베이스에 들어가지 않도록 하는 것 또는 이것의 수명을 제한하는 것이다. 다시 말해서, 가능하면 빨리 결함을 찾으려고 노력한다. 더 나은 코드를 작성하는 방법을 배우고, 소프트웨어를 효과적으로 테스트 하는 방법을 배워갈수록, 결함을 더욱 잘 찾아내게 된다. 하지만, 중대한 결함을 찾을 수 있는 보안 망(safety net)도 갖고 싶기는 하다.
본 시리즈의 8월 기사에서, 감시 툴을 빌드 프로세스에 통합하면(Ant 또는 Maven을 사용함) 잠재적 결함들을 찾는데 효과적이라는 결론을 내렸다. 비록, 이러한 방식이 일관성을 유지하고 IDE를 능가하는 부분도 있지만, 약간 보수적(reactionary)이기도 하다. 여러분은 소프트웨어를 로컬에서 구현하거나, Continuous Integration 빌드가 실행되기를 기다려야 한다. 하지만, Eclipse 플러그인을 사용하면, Continuous Integration을 통해 빌드 또는 통합하기 전에 위반 사항들을 발견할 수 있다. 바로 이것을 진보적인 프로그래밍(progressive programming)이라고 할 수 있으며, 코딩 하면서 품질 체크도 실행할 수 있다.
이 글에서는 "5대" 코드 분석 영역에 대해 설명하겠다.
코딩 표준
코드 중복
코드 커버리지
의존성 분석
복잡성 모니터링
이러한 분석 영역들은 다음과 같은 Eclipse 플러그인을 사용한다.
CheckStyle: 코딩 표준
PMD의 CPD: 코드 중복 발견
Coverlipse: 코드 커버리지 측정
JDepend: 의존성 분석 제공
Eclipse Metrics 플러그인: 복잡성 탐지
Eclipse는 빌드 시스템이 아닙니다.Eclipse 플러그인을 사용한다고 해서 빌드 프로세스의 일부로 이러한 감시 툴을 사용하지 못하게 하는 것은 말도 안 된다. 사실, Eclipse 플러그인을 사용하는데 따르는 규칙들은 빌드 프로세스에도 똑같이 적용되는 규칙들이다.Eclipse 플러그인 설치하기
Eclipse 플러그인 설치는 매우 간단하며, 단지 몇 단계만 거치면 된다. 시작하기 전에, 플러그인의 다운로드 사이트의 URL을 파악하는 것이 좋다. 표 1에서 필자가 이 글에서 사용하는 플러그인 리스트를 정리했다.
표 1. 코드 향상 플러그인과 설치 URL 리스트
툴 목적 Eclipse 플러그인 URL
CheckStyle 코딩 표준 분석 http://eclipse-cs.sourceforge.net/update/
Coverlipse 코드 커버리지 테스트 http://coverlipse.sf.net/update
CPD Copy/Paste 탐지 http://pmd.sourceforge.net/eclipse/
JDepend 패키지 의존성 분석 http://andrei.gmxhome.de/eclipse/
Metrics Complexity monitoring http://metrics.sourceforge.net/update
이제 여러분은 유용한 플러그인을 어디서 구하는지 알았으니, 설치는 간단하다. Eclipse를 시작하고 다음 단계들을 수행한다.
Help
Software Updates
Find and Install을 선택한다. (그림 1)
그림 1. Eclipse 플러그인 찾기 및 설치
Search for new features to install 라디오 버튼을 선택하고 Next를 클릭한다.
New Remote Site를 클릭하고, 원하는 플러그인의 이름과 URL을 입력한다. (그림 2) OK를 클릭한 다음 Finish를 클릭하면 Eclipse Update Manager가 디스플레이 된다.
그림 2. 새로운 원격 사이트 구성하기
Eclipse Update Manager에서, 플러그인의 다양한 측면을 볼 수 있는 옵션이 있다. 일반적으로 위에 있는 것을 선택한다. (그림 3) 선택을 하고 Finish를 클릭한다. Eclipse는 이때 플러그인을 설치한다. Eclipse 인스턴스를 재시작 해야 한다.
그림 3. Eclipse 플러그인 설치하기
이 단계를 수행하면 Eclipse 플러그인이 설치된다. 플러그인의 이름과 관련 다운로드 위치를 변경하라.
--------------------------------------------------------------------------------
위로
CheckStyle로 표준 수정하기
코드 베이스에 대한 관리능력은 소프트웨어의 총 비용에 직접적인 영향을 미친다. 더욱이, 관리능력은 개발자의 욕구 불만에도 기여한다. 코드 변경이 쉬울수록, 새로운 제품 기능을 추가하기도 쉽다. CheckStyle 같은 툴은 큰 클래스, 긴 메소드, 사용되지 않는 변수 등에 대한 관리능력에 영향을 미치는 코딩 표준의 위반 사항들을 찾는데 도움이 된다.
PMD에 대해서PMD라고 하는 오픈 소스 툴은 CheckStyle과 비슷한 기능을 제공한다. 나는 CheckStyle을 선호하지만, PMD도 강력하고 전문적이기 때문에, 여러분도 한번 사용해 보길 권한다.Eclipse용 CheckStyle 플러그인을 사용하면 코딩 하면서 소스 코드 내에서 다양한 위반 사항에 대해 알 수 있고, 개발자들이 체크인 전에 위반 사항을 고치게 된다. CheckStyle 플러그인을 지속적인 코드 리뷰에 사용하는 것으로 생각하면 된다.
CheckStyle 플러그인을 설치하고, 다음과 같이 구성한다. (그림 4)
Eclipse 메뉴에서 Project를 선택한 다음 Properties 아이템을 선택한다.
CheckStyle active for this project 체크 박스를 선택하고 OK를 클릭한다.
그림 4. Eclipse에서 CheckStyle 플러그인 구성하기
Eclipse는 워크스페이스를 재구현 하고 Eclipse 콘솔 안에 코딩 위반 사항들을 발견해 낸다. (그림 5)
그림 5. Eclipse내에 나타난 CheckStyle 위반 사항 리스트
CheckStyle 플러그인을 사용하여 Eclipse 내에 코딩 표준 검사를 포함시키면, 코딩 하는 동안 코드를 향상시킬 수 있고, 개발 사이클에서 조기에 소스 코드의 잠재적 결함을 발견할 수 있다. 여러분의 시간, 좌절감, 나아가서 프로젝트 비용까지 줄일 수 있다는 이점도 있다.
--------------------------------------------------------------------------------
위로
Coverlipse로 커버리지 확인하기
Coverlipse는 상응하는 테스트를 갖고 있는 소스 코드의 비율을 평가하는데 사용할 수 있는 Eclipse 플러그인이다. Coverlipse를 사용하여 코드를 작성하는 동안 코드 커버리지를 평가할 수 있다. 벌써 패턴을 인식하고 있나?
Coverlipse 플러그인을 설치하고 Run Eclipse 메뉴 아이템을 선택하여 JUnit과 연결시킨다. 이렇게 하면 JUnit, SWT 애플리케이션, 자바™ 애플리케이션 같은 실행 구성들이 나타난다. 오른쪽 클릭하여 JUnit w/Coverlipse 노드에서 New를 선택한다. 여기서부터, JUnit 테스트의 위치를 규명해야 한다. (그림 6)
그림 6. Coverlipse를 구성하여 코드 커버리지 확보하기
Run을 클릭하면, Eclipse는 Coverlipse를 실행하고 소스 코드에 마커를 삽입한다. (그림 7) 이것은 JUnit 테스트로 연결되었던 코드의 부분들을 나타낸다.
그림 7. Coverlipse에 의해서 생성된 리포트와 삽입된 클래스 마커
보다시피, Coverlipse Eclipse 플러그인을 사용하여 훨씬 더 빠르게 코드 커버리지를 결정할 수 있다. 이 기능은 코드를 CM 시스템에 체크인 하기 전에 테스팅 하는데 도움이 된다. 이 얼마나 진보적인 프로그래밍인가?
--------------------------------------------------------------------------------
위로
CPD로 코드 중복 발견하기
PMD 플러그인은 CPD(Copy Paste Detector)라고 하는 기능을 제공하는데, 이것은 중복된 코드를 찾아낸다. Eclipse에서 이 툴을 사용하려면, CPD 유틸리티가 포함된 PMD용 Eclipse 플러그인을 설치해야 한다.
중복 코드를 찾아내려면, Eclipse 프로젝트를 오른쪽 클릭하고, PMD
Find Suspect Cut and Paste를 선택한다. (그림 8)
그림 8. CPD 플러그인을 사용하여 Copy and Paste 체크 실행하기
CPD를 실행했다면, report 폴더가 Eclipse 루트 디렉토리에 생성되고, 여기에는 cpd.txt라는 파일이 포함된다. 이곳에 모든 중복 코드들이 나열된다. cpd.txt 파일 예제는 그림 9를 참조하라.
그림 9. Eclipse 플러그인에서 생성된 CPD 텍스트 파일
중복 코드를 직접 찾기란 어려운 일이지만, CPD 같은 툴을 사용하면 코딩 하는 동안 중복 코드를 빠르게 찾아낼 수 있다.
--------------------------------------------------------------------------------
위로
JDepend를 이용한 의존성 검사
JDepend는 무료로 사용할 수 있는 오픈 소스 툴로서, 패키지 의존성에 대한 객체 지향식의 측정법을 제공한다. 코드 베이스의 복원력에 대한 지표라고 할 수 있다. 다시 말해서, JDepend는 아키텍처의 정합성을 측정하는데 사용된다.
Eclipse 플러그인 외에도, JDepend는 Ant 태스크, Maven 플러그인, 자바 애플리케이션을 사용하여 측정 결과를 얻는다. 각각은 같은 정보를 다르게 전달한다. 하지만, Eclipse 플러그인이 가진 중요한 차이점 및 효과라고 한다면 정보를 (여러분이 코딩한 대로) 소스 코드에 매우 근접하게 제공한다는 점이다.
그림 10은 소스 폴더를 오른쪽 클릭하고, Run JDepend Analysis를 선택하여 JDepend용 Eclipse 플러그인을 사용하는 방법을 보여준다. 소스 코드를 갖고 있는 폴더를 선택하라. 그렇게 하지 않으면, 메뉴 옵션을 볼 수 없다.
그림 10. JDepend Analysis를 사용하여 코드 분석하기
JDepend 분석을 실행할 때 생성되는 리포트는 그림 11에 나와있다. 왼쪽 패인은 패키지를 나타내고, 오른쪽 패인은 각 패키지의 의존성을 나타낸다.
그림 11. Eclipse 내 프로젝트의 패키지 의존성
JDepend 플러그인은 이 아키텍처가 시간이 흘러도 유지될 수 있는지의 여부를 볼 수 있는 많은 정보를 제공하고 있다. 가장 중요한 것은 코딩 하는 동안 데이터를 볼 수 있다는 점이다.
--------------------------------------------------------------------------------
위로
Metrics로 복잡성 평가하기
"5대" 코드 분석 영역의 마지막 영역은 복잡성이다. Eclipse는 Metrics라고 하는 플러그인을 제공한다. 이것은 복잡성을 포함하여 유용한 코드 메트릭스를 제공하는데, 이것은 메소드의 고유 경로의 수를 측정한 것이다.
Metrics 플러그인을 설치하고 Eclipse를 재시작 한다. 다음 단계들을 수행한다.
프로젝트를 오른쪽 클릭하고, Properties 메뉴를 선택한다. 결과 윈도우에서, Enable Metrics plugin 체크 박스를 선택하고 OK를 클릭한다. (그림 12)
그림 12. Metrics 구성하기
Eclipse에서 Window 메뉴를 선택하여 Metrics 뷰를 열고 Show View
Other...를 선택한다.
Metrics
Metrics View를 선택하여 윈도우를 연다. (그림 13) 자바 퍼스펙티브를 사용하고 프로젝트를 재구현 하여 메트릭스를 디스플레이 한다.
그림 13. Eclipse에서 Metrics View 열기
OK를 클릭하면 그림 14에 나온 것 같은 윈도우가 디스플레이 된다.
이 경우, 나는 개별 메소드의 복잡성을 보고 있다. 정말로 좋은 점은 Metrics 리스트에서 메소드를 더블 클릭할 수 있고, 플러그인이 Eclipse 에디터에서 그 메소드용 소스 코드를 연다는 점이다. 정정하기가 아주 쉬워졌다.
그림 14. 메소드용 Cyclomatic Complexity 보기
앞서 언급했지만, Eclipse Metrics는 소프트웨어를 개발하는 동안 코드를 향상시킬 수 있는 강력한 메트릭스를 제공한다.
--------------------------------------------------------------------------------
위로
직접 사용해 보기
이 글에서 언급한, 코딩 표준, 코드 중복, 코드 커버리지, 의존성 분석, 복잡성 모니터링 등 "5대" 코드 품질 평가를 하는 것이 중요하다고 생각한다. 개발 사이클에서 조기에 코드의 품질을 향상시킬 수 있는 PMD와 FindBugs 같은 기타 Eclipse 플러그인들도 많이 있다는 것도 알아두기 바란다. 원하는 툴이나 선호하는 평가 방식과 별도로, 코드를 적극적으로 향상시키려는 노력을 기울여야 하며, 수동의 코드 리뷰 프로세스도 더욱 효율성 있게 해야 한다. 이 툴을 사용해 보면, 그 동안 이 툴 없이 어떻게 살았는지에 대한 의문이 일 것이다.
기사의 원문보기
Automation for the people: Improving code with Eclipse plugins
참고자료
교육
사람을 위한 자동화 (Paul Duvall, developerWorks): 시리즈 정복하기
"Improving Code Quality with PMD and Eclipse" (Levent Gurses, Jacoozi, 2005년 1월)
"Measure test coverage with Cobertura" (Elliotte Rusty Harold, developerWorks, 2005년 5월)
"Don't be fooled by the coverage report" (Andrew Glover, developerWorks, 2006년 1월)
"Managing Your Dependencies with JDepend" (Glen Wilcox, OnJava, 2004년 1월)
"Code quality for software architects" (Andrew Glover, developerWorks, 2006년 4월)
" 사람을 위한 자동화: Continuous Inspection" (Paul Duvall, developerWorks, 2006년 8월)
"Detecting Duplicate Code with PMD's CPD" (Tom Copeland, OnJava, 2003년 3월)
"Maintain organizational standards with code audits" (testearly.com)
한국 developerWorks 자바 존: 자바 프로그래밍 관련, 다양한 기술자료 보기
제품 및 기술 얻기
Eclipse plugin for PMD
Eclipse plugin for JDepend
Eclipse plugin for Coverlipse
Eclipse Metrics
Eclipse plugin for CheckStyle
토론
자바 포럼
필자소개
2010년 8월 11일 수요일
Concurrent Remote Desktop Sessions in Windows XP SP2
원문 URL : http://sig9.com/node/110
Concurrent Remote Desktop Sessions in Windows XP SP2
I mentioned before that Windows XP does not allow concurrent sessions for its Remote Desktop feature. What this means is that if a user is logged on at the local console, a remote user has to kick him off (and ironically, this can be done even without his permission) before starting work on the box. This is irritating and removes much of the productivity that Remote Desktop brings to Windows. Read on to learn how to remove that limitation in Windows XP SP2
A much touted feature in SP2 (Service Pack 2) since then removed was the ability to do just this, have a user logged on locally while another connects to the terminal remotely. Microsoft however removed the feature in the final build. The reason probably is that the EULA (End User License Agreement) allows only a single user to use a computer at a time. This is (IMHO) a silly reason to curtail Remote Desktop's functionality, so we'll have a workaround.
Microsoft did try out the feature in earlier builds of Service Pack 2 and it is this that we're going to exploit here. We're going to replace termserv.dll (The Terminal Server) with one from an earlier build (2055).
To get Concurrent Sessions in Remote Desktop working, follow the steps below exactly:
1.Download the termserv.zip file below and extract it somewhere. (You have to be registered to see the file)
2.Reboot into Safe Mode. This is necessary to remove Windows File Protection.
3.Copy the termserv.dll in the zip to %windir%\System32 and %windir%\ServicePackFiles\i386. If the second folder doesn't exist, don't copy it there. Delete termserv.dll from the dllcache folder: %windir%\system32\dllcache
4.Merge the contents of Concurrent Sessions SP2.reg file into the registry.
5.Make sure Fast User Switching is turned on. Go Control Panel -> User Accounts -> Change the way users log on or off and turn on Fast User Switching.
6.Open up the Group Policy Editor: Start Menu > Run > 'gpedit.msc'. Navigate to Computer Configuration > Administrative Templates > Windows Components > Terminal Services. Enable 'Limit Number of Connections' and set the number of connections to 3 (or more). This enables you to have more than one person remotely logged on.
7.Now reboot back into normal Windows and try out whether Concurrent Sessions in Remote Desktop works. It should!
If anything goes wrong, the termserv_sp2.dll is the original file you replaced. Just rename it to termserv.dll, reboot into safe mode and copy it back.
The termserv.dl_ file is provided in the zip is for you slipstreamers out there. Just replace that file with the corresponding file in the Windows installation disks.
I've added in extra information from the comments below... thanks for all who researched! :-)
Other links of interest:
MSFN Board, termserv.dll
Another related MSFN thread.
Another similar HOWTO
An installer for the above
Please note that I haven't tried out any of the links above. YMMV.
Attachment Size
termserv.zip 357.92 KB
If anything doesn't work with my procedure above though, post a comment here and I'll try to help!
Concurrent Remote Desktop Sessions in Windows XP SP2
I mentioned before that Windows XP does not allow concurrent sessions for its Remote Desktop feature. What this means is that if a user is logged on at the local console, a remote user has to kick him off (and ironically, this can be done even without his permission) before starting work on the box. This is irritating and removes much of the productivity that Remote Desktop brings to Windows. Read on to learn how to remove that limitation in Windows XP SP2
A much touted feature in SP2 (Service Pack 2) since then removed was the ability to do just this, have a user logged on locally while another connects to the terminal remotely. Microsoft however removed the feature in the final build. The reason probably is that the EULA (End User License Agreement) allows only a single user to use a computer at a time. This is (IMHO) a silly reason to curtail Remote Desktop's functionality, so we'll have a workaround.
Microsoft did try out the feature in earlier builds of Service Pack 2 and it is this that we're going to exploit here. We're going to replace termserv.dll (The Terminal Server) with one from an earlier build (2055).
To get Concurrent Sessions in Remote Desktop working, follow the steps below exactly:
1.Download the termserv.zip file below and extract it somewhere. (You have to be registered to see the file)
2.Reboot into Safe Mode. This is necessary to remove Windows File Protection.
3.Copy the termserv.dll in the zip to %windir%\System32 and %windir%\ServicePackFiles\i386. If the second folder doesn't exist, don't copy it there. Delete termserv.dll from the dllcache folder: %windir%\system32\dllcache
4.Merge the contents of Concurrent Sessions SP2.reg file into the registry.
5.Make sure Fast User Switching is turned on. Go Control Panel -> User Accounts -> Change the way users log on or off and turn on Fast User Switching.
6.Open up the Group Policy Editor: Start Menu > Run > 'gpedit.msc'. Navigate to Computer Configuration > Administrative Templates > Windows Components > Terminal Services. Enable 'Limit Number of Connections' and set the number of connections to 3 (or more). This enables you to have more than one person remotely logged on.
7.Now reboot back into normal Windows and try out whether Concurrent Sessions in Remote Desktop works. It should!
If anything goes wrong, the termserv_sp2.dll is the original file you replaced. Just rename it to termserv.dll, reboot into safe mode and copy it back.
The termserv.dl_ file is provided in the zip is for you slipstreamers out there. Just replace that file with the corresponding file in the Windows installation disks.
I've added in extra information from the comments below... thanks for all who researched! :-)
Other links of interest:
MSFN Board, termserv.dll
Another related MSFN thread.
Another similar HOWTO
An installer for the above
Please note that I haven't tried out any of the links above. YMMV.
Attachment Size
termserv.zip 357.92 KB
If anything doesn't work with my procedure above though, post a comment here and I'll try to help!
How to Enable Concurrent Sessions for Remote Desktop in Windows 7 RTM
원문 URL : http://www.blogsdna.com/4560/how-to-enable-concurrent-sessions-for-remote-desktop-in-windows-7-rtm.htm
원문 요약
In past we had posted hack to enable Multiple users access (Concurrent sessions) for Remote desktop on Windows 7 Beta. For those who don’t know what’s a Concurrent session for Remote Desktop, with remote desktop you can connect to windows computer remotely however in Windows 7 there is restriction and only one user at a time can connect to Windows 7 Computer via remote desktop.
Unfortunately that hack is not compatible with latest Windows 7 RTM Build. But don’t worry we have got solution to enable Concurrent Session for Remote desktop on final Windows 7 Build thanks to missingremote.com.
Follow below instructions to enable Concurrent Sessions in Windows 7 RTM
How to Enable Concurrent Sessions for Windows 7 RTM
1. Download Concurrent Sessions enabler file
2. Once downloaded, extract the files into a directory (for the purposes of this guide, it will be assumed that the files have been extracted to the folder C:\Win7RDP )
3. Open Windows Explorer to the above folder
4. Right Click on “install.cmd” and select “Run as Administrator”
5. Wait for the script to run entirely. At the end, you should see something similar to the below…
원문 요약
In past we had posted hack to enable Multiple users access (Concurrent sessions) for Remote desktop on Windows 7 Beta. For those who don’t know what’s a Concurrent session for Remote Desktop, with remote desktop you can connect to windows computer remotely however in Windows 7 there is restriction and only one user at a time can connect to Windows 7 Computer via remote desktop.
Unfortunately that hack is not compatible with latest Windows 7 RTM Build. But don’t worry we have got solution to enable Concurrent Session for Remote desktop on final Windows 7 Build thanks to missingremote.com.
Follow below instructions to enable Concurrent Sessions in Windows 7 RTM
How to Enable Concurrent Sessions for Windows 7 RTM
1. Download Concurrent Sessions enabler file
2. Once downloaded, extract the files into a directory (for the purposes of this guide, it will be assumed that the files have been extracted to the folder C:\Win7RDP )
3. Open Windows Explorer to the above folder
4. Right Click on “install.cmd” and select “Run as Administrator”
5. Wait for the script to run entirely. At the end, you should see something similar to the below…
피드 구독하기:
덧글 (Atom)