지돌이의 블로그 입니다!

IntelliJ를 써보신분은 아마 Double-Shift로 원하는 소스나 클래스를 찾는 Everywhere기능을 애용하셨을 겁니다.

 

Windows에서도 해당 기능이 있었으면 해서 급하게 만들어 봤습니다.

 

(전 IntelliJ를 열몇개씩 띄어놓고 쓰는 편이라.. 이런 기능이 필요합니다..ㅋ

그리고 급하게 만들었다는건.. 완성도가 떨어진다는 뜻이니..ㅠㅠ 양해부탁드리고 혹시나 직접 기능 추가하신다면 추가 후 PR날려주세요 ^^)

 

github 주소 : https://github.com/jc-lab/WinEverywhere

 

github release에서 다운받으실 수 있습니다.

 

사용법은 그저...

 

Double-Alt를 누르면 창이 뜨고, 원하는 창 이름을 입력한 뒤 엔터누르면 해당 창으로 이동합니다.

 

Esc를 누르면 그냥 WinEverywhere 창만 사라지며 프로세스는 죽지 않습니다.

 

X 버튼을 누르면 프로세스를 끄실 수 있습니다.

 

Comment +0

https://mxtoolbox.com/domain/

 

일단 위 사이트에서 확인해보면 웬만한건 해결방법을 알 수 있다.

 

나는 몇군데 blacklist가 걸려서 그랬었는데...

 

https://rabbitchris.tistory.com/819


참고하여 해결하였다.

Comment +0

SafeNet eToken 5110

리뷰s2019.08.14 20:50

RSA는 1024 ~ 2048bit, EC는 256~384bit까지만 지원한다.

>pkcs11-tool.exe --module eTPKCS11.dll -M
Using slot 0 with a present token (0x0)
Supported mechanisms:
  DES-MAC, keySize={8,8}, sign, verify
  DES-MAC-GENERAL, keySize={8,8}, sign, verify
  DES3-MAC, keySize={24,24}, sign, verify
  DES3-MAC-GENERAL, keySize={24,24}, sign, verify
  AES-MAC, keySize={16,32}, sign, verify
  AES-MAC-GENERAL, keySize={16,32}, sign, verify
  RC4, keySize={8,128}, encrypt, decrypt
  DES-ECB, keySize={8,8}, encrypt, decrypt, wrap, unwrap
  DES-CBC, keySize={8,8}, encrypt, decrypt, wrap, unwrap
  DES-CBC-PAD, keySize={8,8}, encrypt, decrypt, wrap, unwrap
  DES3-ECB, keySize={24,24}, hw, encrypt, decrypt, wrap, unwrap
  DES3-CBC, keySize={24,24}, hw, encrypt, decrypt, wrap, unwrap
  DES3-CBC-PAD, keySize={24,24}, hw, encrypt, decrypt, wrap, unwrap
  AES-ECB, keySize={16,32}, hw, encrypt, decrypt, wrap, unwrap
  AES-CBC, keySize={16,32}, hw, encrypt, decrypt, wrap, unwrap
  AES-CBC-PAD, keySize={16,32}, hw, encrypt, decrypt, wrap, unwrap
  mechtype-0x1086, keySize={16,32}, hw, encrypt, decrypt, wrap, unwrap
  mechtype-0x1088, keySize={16,32}, hw, encrypt, decrypt, wrap, unwrap
  RSA-PKCS-KEY-PAIR-GEN, keySize={1024,2048}, hw, generate_key_pair
  RSA-PKCS, keySize={1024,2048}, hw, encrypt, decrypt, sign, sign_recover, verify, verify_recover, wrap, unwrap
  RSA-PKCS-OAEP, keySize={1024,2048}, hw, encrypt, decrypt, wrap, unwrap
  RSA-PKCS-PSS, keySize={1024,2048}, hw, sign, verify
  SHA1-RSA-PKCS-PSS, keySize={1024,2048}, hw, sign, verify
  SHA256-RSA-PKCS-PSS, keySize={1024,2048}, hw, sign, verify
  SHA384-RSA-PKCS-PSS, keySize={1024,2048}, hw, sign, verify
  SHA512-RSA-PKCS-PSS, keySize={1024,2048}, hw, sign, verify
  MD5-RSA-PKCS, keySize={1024,2048}, hw, sign, verify
  SHA1-RSA-PKCS, keySize={1024,2048}, hw, sign, verify
  SHA256-RSA-PKCS, keySize={1024,2048}, hw, sign, verify
  SHA384-RSA-PKCS, keySize={1024,2048}, hw, sign, verify
  SHA512-RSA-PKCS, keySize={1024,2048}, hw, sign, verify
  ECDSA-KEY-PAIR-GEN, keySize={256,384}, hw, generate_key_pair, other flags=0xd00000
  ECDSA, keySize={256,384}, hw, sign, verify, other flags=0xd00000
  ECDSA-SHA1, keySize={256,384}, hw, sign, verify, other flags=0xd00000
  ECDSA-SHA256, keySize={256,384}, hw, sign, verify, other flags=0xd00000
  ECDSA-SHA384, keySize={256,384}, hw, sign, verify, other flags=0xd00000
  mechtype-0x80000045, keySize={256,384}, hw, sign, verify, other flags=0xd00000
  ECDSA-SHA512, keySize={256,384}, hw, sign, verify, other flags=0xd00000
  ECDH1-DERIVE, keySize={256,384}, hw, derive, other flags=0xd00000
  RC4-KEY-GEN, keySize={8,128}, generate
  DES-KEY-GEN, keySize={8,8}, generate
  DES2-KEY-GEN, keySize={16,16}, generate
  DES3-KEY-GEN, keySize={24,24}, generate
  AES-KEY-GEN, keySize={16,32}, generate
  PBE-SHA1-RC4-128, keySize={128,128}, generate
  PBE-SHA1-RC4-40, keySize={40,40}, generate
  PBE-SHA1-DES3-EDE-CBC, keySize={24,24}, generate
  PBE-SHA1-DES2-EDE-CBC, keySize={16,16}, generate
  GENERIC-SECRET-KEY-GEN, keySize={8,2048}, hw, generate
  PBA-SHA1-WITH-SHA1-HMAC, keySize={160,160}, hw, generate
  PBE-MD5-DES-CBC, keySize={8,8}, generate
  PKCS5-PBKD2, generate
  MD5-HMAC-GENERAL, keySize={8,2048}, sign, verify
  MD5-HMAC, keySize={8,2048}, sign, verify
  SHA-1-HMAC-GENERAL, keySize={8,2048}, sign, verify
  SHA-1-HMAC, keySize={8,2048}, sign, verify
  mechtype-0x252, keySize={8,2048}, sign, verify
  SHA256-HMAC, keySize={8,2048}, sign, verify
  mechtype-0x262, keySize={8,2048}, sign, verify
  SHA384-HMAC, keySize={8,2048}, sign, verify
  mechtype-0x272, keySize={8,2048}, sign, verify
  SHA512-HMAC, keySize={8,2048}, sign, verify
  MD5, digest
  SHA-1, digest
  SHA256, digest
  SHA384, digest
  SHA512, digest
  mechtype-0x80006001, keySize={24,24}, generate

 

1024bit는 Smartcard HSM 보다 느리지만 2048bit는 Smartcard HSM보다 빠르다.

2048bit기준 SmartcardHSM은 20여초, eToken은 15초 정도이다.

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 6
Milliseconds      : 902
Ticks             : 69027467
TotalDays         : 7.98929016203704E-05
TotalHours        : 0.00191742963888889
TotalMinutes      : 0.115045778333333
TotalSeconds      : 6.9027467
TotalMilliseconds : 6902.7467




C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool --module eTPKCS11.dll -l -p "P@ssw0rd" --keypairgen --key-type rsa:2048 --id 11}"
Using slot 0 with a present token (0x0)


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 15
Milliseconds      : 34
Ticks             : 150344055
TotalDays         : 0.000174009322916667
TotalHours        : 0.00417622375
TotalMinutes      : 0.250573425
TotalSeconds      : 15.0344055
TotalMilliseconds : 15034.4055

C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool --module eTPKCS11.dll -l -p "P@ssw0rd" --keypairgen --key-type EC:prime256v1 --id 13}"
Using slot 0 with a present token (0x0)


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 282
Ticks             : 42824181
TotalDays         : 4.95650243055556E-05
TotalHours        : 0.00118956058333333
TotalMinutes      : 0.071373635
TotalSeconds      : 4.2824181
TotalMilliseconds : 4282.4181




C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool --module eTPKCS11.dll -l -p "P@ssw0rd" --keypairgen --key-type EC:secp384r1 --id 14}"
Using slot 0 with a present token (0x0)


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 175
Ticks             : 41751352
TotalDays         : 4.83233240740741E-05
TotalHours        : 0.00115975977777778
TotalMinutes      : 0.0695855866666667
TotalSeconds      : 4.1751352
TotalMilliseconds : 4175.1352

Comment +0

C:\Program Files\OpenSC Project\OpenSC\tools>pkcs11-tool.exe --list-mechanisms
Using slot 0 with a present token (0x0)
Supported mechanisms:
  SHA-1, digest
  SHA256, digest
  SHA384, digest
  SHA512, digest
  MD5, digest
  RIPEMD160, digest
  GOSTR3411, digest
  ECDSA, keySize={192,521}, hw, sign, other flags=0x1d00000
  ECDSA-SHA1, keySize={192,521}, hw, sign, other flags=0x1d00000
  ECDH1-COFACTOR-DERIVE, keySize={192,521}, hw, derive, other flags=0x1d00000
  ECDH1-DERIVE, keySize={192,521}, hw, derive, other flags=0x1d00000
  ECDSA-KEY-PAIR-GEN, keySize={192,521}, hw, generate_key_pair, other flags=0x1d00000
  RSA-X-509, keySize={1024,4096}, hw, decrypt, sign, verify
  RSA-PKCS, keySize={1024,4096}, hw, decrypt, sign, verify
  SHA1-RSA-PKCS, keySize={1024,4096}, sign, verify
  SHA256-RSA-PKCS, keySize={1024,4096}, sign, verify
  SHA384-RSA-PKCS, keySize={1024,4096}, sign, verify
  SHA512-RSA-PKCS, keySize={1024,4096}, sign, verify
  MD5-RSA-PKCS, keySize={1024,4096}, sign, verify
  RIPEMD160-RSA-PKCS, keySize={1024,4096}, sign, verify
  RSA-PKCS-PSS, keySize={1024,4096}, hw, sign
  SHA1-RSA-PKCS-PSS, keySize={1024,4096}, sign
  SHA256-RSA-PKCS-PSS, keySize={1024,4096}, sign
  RSA-PKCS-KEY-PAIR-GEN, keySize={1024,4096}, generate_key_pair

 

위에는 RSA 4096bit까지 지원한다는데 아래를 보면 4096bit 키 생성에 실패한다.

C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool -l -p 123456 --keypairgen --key-type rsa:1024 --id 10}"
Using slot 0 with a present token (0x0)


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 3
Milliseconds      : 816
Ticks             : 38160192
TotalDays         : 4.41668888888889E-05
TotalHours        : 0.00106000533333333
TotalMinutes      : 0.06360032
TotalSeconds      : 3.8160192
TotalMilliseconds : 3816.0192




C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool -l -p 123456 --keypairgen --key-type rsa:4096 --id 11}"
Using slot 0 with a present token (0x0)
error: PKCS11 function C_GenerateKeyPair failed: rv = CKR_DATA_INVALID (0x20)
Aborting.


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 1
Milliseconds      : 448
Ticks             : 14481619
TotalDays         : 1.67611331018519E-05
TotalHours        : 0.000402267194444444
TotalMinutes      : 0.0241360316666667
TotalSeconds      : 1.4481619
TotalMilliseconds : 1448.1619




C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool -l -p 123456 --keypairgen --key-type rsa:2048 --id 11}"
Using slot 0 with a present token (0x0)


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 18
Milliseconds      : 22
Ticks             : 180227754
TotalDays         : 0.0002085969375
TotalHours        : 0.0050063265
TotalMinutes      : 0.30037959
TotalSeconds      : 18.0227754
TotalMilliseconds : 18022.7754




C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool -l -p 123456 --keypairgen --key-type rsa:2048 --id 12}"
Using slot 0 with a present token (0x0)


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 29
Milliseconds      : 775
Ticks             : 297756544
TotalDays         : 0.00034462562962963
TotalHours        : 0.00827101511111111
TotalMinutes      : 0.496260906666667
TotalSeconds      : 29.7756544
TotalMilliseconds : 29775.6544

C:\Program Files\OpenSC Project\OpenSC\tools>powershell "Measure-Command{.\pkcs11-tool -l -p 123456 --keypairgen --key-type rsa:2048 --id 13}"
Using slot 0 with a present token (0x0)


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 20
Milliseconds      : 652
Ticks             : 206522924
TotalDays         : 0.000239031162037037
TotalHours        : 0.00573674788888889
TotalMinutes      : 0.344204873333333
TotalSeconds      : 20.6522924
TotalMilliseconds : 20652.2924

용량을 잘 모르겠다.

일단 RSA 1024 * 8, RSA 2048 * 10 => 28672bit -> 28672 byte 까지는 된다.

 

4kb 인가?

Comment +0

JCE Provider를 개발 및 배포하려면 Oracle으로부터 발급받은 JCE Code Signing Certificate를 통해 클래스들을 서명해야 합니다.

그렇지 않으면 디버깅조차 되지 않습니다.

Exception in thread "main" java.lang.SecurityException: JCE cannot authenticate the provider CustomProvider
	at javax.crypto.Cipher.getInstance(Cipher.java:656)
	at MyTestMain.main(MyTestMain.java:16)
Caused by: java.lang.SecurityException: Cannot verify jar:file:/....

위와 같은 오류를 보게 됩니다..

 

JCE Code Signing Certificate를 발급받는 과정은 아래와 같습니다.

 

참고 : https://www.oracle.com/technetwork/java/javase/tech/getcodesigningcertificate-361306.html

 

Get A JCE Code-Signing Certificate

Obtain a JCE Code Signing Certificate JCE Code Signing Certification Authority IMPORTANT NOTE: Oracle does not issue general code-signing certificates for applet or Web Start deployment. The process described here is only for obtaining certificates for use

www.oracle.com

https://docs.oracle.com/javase/10/security/howtoimplaprovider.htm

 

How to Implement a Provider in the Java Cryptography Architecture

An algorithm parameter specification is a transparent representation of the sets of parameters used with an algorithm. A transparent representation of parameters means that you can access each value individually, through one of the get methods defined in t

docs.oracle.com

(아래 내용은 Oracle사의 사정에 따라 변할 수 있으니 위 링크를 보시고, 아래 내용은 방법만 참고해 주시기 바랍니다~)

 

1. jce-cert-request_ww_grp@oracle.com 이 주소로 제목을 정확히 Request a Certificate for Signing a JCE Provider 이라고 써서 메일을 보내야 합니다.

메일에 작성해야 하는 내용은 아래와 같습니다.

 

Include the following contact information in the body of your message:

  • Company Name
  • Street Address (Not a post office box)
  • City
  • State/Province
  • Country
  • Company Telephone Number
  • Company Fax Number
  • Requester Name
  • Requester Telephone Number
  • Requester Email Address
  • Brief description of your company (size, line of business, etc.)
  • Purpose of Requested JCE Code Signing Certificate (for example: "Signing JCE providers containing Ciphers/Mac/KeyAgreement implementations")

그리고 PEM형식으로 인코딩된 CSR을 메일에 첨부파일로 첨부합니다.

CSR(인증서요청파일)을 만드는 방법은 두번째 링크에 있습니다. 아래와 같은 명령으로 생성 가능합니다.

keytool -genkeypair -alias <alias> \
        -keyalg RSA -keysize 2048 \
        -dname "cn=<Company Name>, \
        ou=Java Software Code Signing, \
        o=Oracle Corporation" \
        -keystore <keystore file name> \  
        -storepass <keystore password>

설명에는 10일 정도 걸리는걸 생각하라고 써있는데.. 메일을 보냈더니 저는 5 Business day 가 걸렸습니다.

 

그런데 여기서 끝이 아닙니다...ㅋ

 

몇일 후에 Confirmation of JCE Code Signing Certificate Request 라는 메일이 오는데 거의 물어봤던 내용을 다시 물어봅니다.

이 메일에 CSR request number 라는것이 발급되고 pdf파일 링크하나를 줍니다.

그럼 해당 파일을 인쇄하셔서 CSR request number와 몇가지 정보를 작성하고 (https://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/402171.txt)  (https://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/402171.txt) 자필 서명해서 스캔해서 다시 이메일(exporteccn_ww@oracle.com) 혹은 FAX으로 보내면 됩니다.

 

그런데 저는 여기서 엄청 오래걸렸습니다.. 10 Business day 가 넘어도 답장이 없길래...

 

Confirmation of JCE Code Signing Certificate Request 를 보내준 사람에게 질문했는데 해당 메일을 자기한테 CC(참조)걸어서 다시 보내보라고 해서 그렇게 했더니 3일 후에 발급된 인증서를 받아 볼 수 있었습니다.

 

암튼... 거의 3주 좀 안되는 시간만에 발급받았네요...ㅠㅠ

 

JCE 인증서 요청하시는 분은 미리.. 두번째 메일은 exporteccn_ww@oracle.com와 함께 첫번째 답장한 사람을 CC로 걸어서 보내보세요..

 

그리고 여유로움과 인내를...ㅋㅋ

 

Comment +0

단순 예제임.

사용법 없음..ㅋ

Jenkins -> item추가 -> Pipeline 으로 프로젝트 생성하고

Gitlab Integration에서 push event에 대한 WebHook을 jenkins으로 걸어놓고

Jenkins에서는 해당 이벤트를 받으면 gradle build -> Docker 이미지 생성 -> Docker Registry에 배포 -> 결과 전송 (Jandi Webhook)

이런 구조임..

프로젝트 git에는 docker폴더에 Dockerfile이 있어야 함.

import groovy.json.JsonOutput

version = ""
imageName = ""

def sendMessage(title, data) {
    def post = new URL("JANDI Web Hook URL").openConnection();

    data.body = "[[${env.JOB_NAME}]](${env.RUN_DISPLAY_URL}) push by ${env.gitlabUserName}: ${title}"

    post.setRequestMethod("POST")
    post.setDoOutput(true)
    post.setRequestProperty("Accept", "application/vnd.tosslab.jandi-v2+json")
    post.setRequestProperty("Content-Type", "application/json")
    post.getOutputStream().write(JsonOutput.toJson(data).getBytes("UTF-8"));
    def postRC = post.getResponseCode();
    return postRC
}

node('linux-agent-1') {
    try {
        stage('Preparation') {
            sendMessage("start build", [:])

            git(
                    url: env.gitlabSourceRepoURL,
                    credentialsId: 'gitlab-jenkins-1',
                    branch: env.gitlabTargetBranch
            )
        }
        stage('Build') {
            // 아래는 Artifactory 필요한 경우
            withCredentials([usernamePassword(credentialsId: 'artifactory-jenkins-pipeline', usernameVariable: 'ARTIFACTORY_USERNAME', passwordVariable: 'ARTIFACTORY_PASSWORD')]) {
                sh 'chmod +x gradlew'
                sh 'rm -rf build/libs/'
                sh './gradlew bootJar'
            }
        }
        stage('Publish') {
            version = sh(returnStdout: true, script: 'find build/libs/*.jar | sed -r \'s/^.*-([0-9.]+)\\.jar$/\\1/\'').trim()
            imageName = "Docker Registry 주소/네임스페이스/${env.JOB_NAME}:${env.gitlabTargetBranch.substring(7)}-${version}"
            sh 'cp build/libs/*.jar ./docker/app.jar'
            withDockerRegistry([url: "Docker Registry 주소"]) {
                def buildedDockerImage = docker.build(imageName, "./docker/") 
                buildedDockerImage.push()
            }
        }
        stage('Results') {
            def data = [
              "connectColor": "#FAC11B",
              "connectInfo": [
                [
                  "title": "version",
                  "description": version
                ],
                [
                  "title": "published image",
                  "description": imageName
                ]
              ]
            ]
            sendMessage("build success", data)
        }
    }catch(Exception e){
        def data = [
            "connectColor": "#FAC11B",
            "connectInfo": [
                [
                  "title": "version",
                  "description": version
                ],
                [
                  "title": "Exception",
                  "description": e.getMessage()
                ]
              ]
            ]
        sendMessage("build failed. [[Click]](${env.BUILD_URL}/console) to see more information.", data)
        throw e
    }
}

Comment +0

모든 ECDSA인증서는 아니고 secp521r1 등의 curve인 인증서를 서버 인증서로 사용할 때 문제가 발생합니다.

 

현재 크롬 최신 버전인 76.0.3809.87 에서 지원하는 Curve는 아래와 같습니다.

 

Wireshark으로 캡처한 TLS Client Hello 패킷 중

x25519, secp256r1, secp384r1 만이 지원되고 있습니다.

 

저는 secp521r1 인 인증서를 사용했는데 그래서 문제가 발생한 것이었습니다.

 

이에 대해서 2015년에 이슈가 올라온 내용이 있습니다.

https://bugs.chromium.org/p/chromium/issues/detail?id=477623

 

secp521r1을 크롬 개발자는 "의도적"으로 삭제했다고 했습니다.

 

이로인해 싸움에 가까운..? 토의가 있었습니다.

 

Firefox등은 secp521r1을 지원하지만 chrome만 유난히 secp521r1을 지원하지 않네요.

 

일부러 더 안전한 curve를 지원하지 않는게 참 이상합니다..

 

https://forum.nginx.org/read.php?2,248325,248402

 

nginx 에서도 비슷한 논의가 있었습니다.

 

여기서는 secp521r1이 RSA-16384급의 CA가 아닌이상 쓰일 필요가 없다. CPU자원만 낭비할 뿐이라고 말하면서 제거했다고 합니다.

 

Chrome도 비슷한 이유일런지..

Comment +0

 그냥 오늘 개발하면서.. spring-boot프로젝트 한번 켜고 테스트하는데 파일몇개 안되는 프로젝트인데도 40초(빌드제외)가 걸려서.. 너무 답답해서 속도를 올리기 위한 삽질을 좀 해봤습니다.

 

1. .gradle디렉터리를 램디스크 바꿈.

https://jsty.tistory.com/180

위는 제 블로그인데요 여기서 소개한 램디스크를 썼습니다.

램디스크 생성하고 꺼질 때 자동저장되게 해서 10GB의 용량을 잡아주었습니다. (덕분에 컴퓨터끄는시간이 3분정도 더 걸립니다...ㄷㄷ)

그리고 Users/name/.gradle 파일을 복사하고 정션으로 링크해주었습니다.

(오우.. 기존 파일 옮기는데만 20분이 걸렸습니다.. 용량은 7GB정도.. 윈도 탐색기복사가 넘 느려서 FastCopy란 프로그램을 썼습니다. (큐랑 버퍼사이즈 키워야 빠름))

 

빌드 및 dependency관련 속도가 빨라졌습니다.

 

근데 프로젝트시작하는데 40초가 걸리는건 마찬가지..

 

2. spring boot프로젝트의 프로퍼티에 debug=true 추가하고 실행하면 콘솔에 Conditional 매치 결과등이 나옵니다. 거기서 사용하지 않아도 되는 것들을 찾아서 dependency에서 지워줍니다. dependency에서 지울 수 없다면 프로퍼티에서 enabled=false으로 해당 기능을 정지시킵니다.

 

몇가지 없앴더니 20초대로 줄어들었습니다.

좀 낫습니다.

 

 

그런데 이보다 더 빠르게 하고싶은데..

소스를 뜯어고칠 차례인가 봅니다..

 

3. Visual Studio 활용법

 

CPU성능은 좋은데.. 빌드할 때 CPU성능을 100%활용하지 못하더라구요.. IO병목현상이라 생각되었습니다.

 

C:\Users\(이름)\AppData\Local\Temp 을 램디스크로 정션을 만들고 빌드했더니

 

모든 코어 100%로 사용하면서 빌드가 됩니다! 빌드 속도도 눈에띄게 향상되었네요~

(물론 컴파일옵션에서 /MP (멀티쓰레드 컴파일)을 설정해야합니다.)

 

 

지난번 쓴 글에 램디스크관련 글이 있습니다.

https://jsty.tistory.com/180

 

Dataram RAMDisk 속도측정/비교

컴파일 속도 향상을 위해 Ramdisk를 찾다가.. Dataram RAMDisk 이라는 것이 있어서 설치 및 테스트를 해 보았다. CDM으로 테스트한 결과이고 아래는 작업관리자에서 본 평균응답시간이다. 설명처럼 좌측의 결과..

ablog.jc-lab.net

사용한 램디스크 :

datagram 홈페이지 가기

Comment +0