분류 전체보기
-
[Jenkins] 외부에서 Jenkins 호출하기2023.04.03
-
[C#] C#에서 TLS 1.2를 사용하도록 변경하기2023.03.24
-
[Python] 파이썬 입력 함수 - input()2023.03.21
-
[Python] 파이썬 출력 함수 - print()2023.02.17
[Github] Windows Git 이용 시 Logon failed 오류 해결 방법
들어가며 |
개인적인 프로젝트의 경우에는 Github를 이용해서 git Repository를 구성해서 사용하고 있습니다. 한동안 사용을 못하고 있다가 오랜만에 github 프로젝트를 접근 했었는데요. Site 상에서는 로그인이 정상적으로 진행이 되는데, 저장소 pull 을 땡기면, failed to excute prompt script (exit code 1) 오류가 발생해서 한참을 검색했는데요.
01. 오류화면 |
오류 메시지에 대한 내용은 아래 화면과 같았습니다.
Logon failed, use ctrl+c to cancel basic credential prompt.
원인을 찾아보니, 바로 Windows의 Git 버전때문이였습니다.
꽤 오랜시간 Git의 버전을 업데이트 하지 않은 상태이긴 했었는데요.
버전이 문제가 될 지는 몰랐네요.
02. Windows의 Git 버전 업데이트 |
Git Bash 창을 열어주고, 아래의 명령어를 입력해주면 됩니다.
$> git update-git-for-windows
해당 명령어를 입력하게 되면, 위와 같은 화면이 보여지고, 설치하겠냐는 질문에 y 를 입력해서 진행하시면 됩니다.
그러면 일반적인 git 설치 화면이 나오게 됩니다.
그리고 나서, 다시 pull 을 땡기면, 로그인 화면이 보여지고
정상적으로 github을 이용하실 수 있습니다.!!
참조 |
END
'Git, SVN' 카테고리의 다른 글
[SVN] TortoiseSVN 저장소 주소 변경하는 방법, Relocate (0) | 2024.04.25 |
---|---|
[Git] 6. Git 태그 생성 및 사용방법 - tag (0) | 2021.11.18 |
[Git] 5. Git 브런치 생성 및 이동 (branch / checkout) (0) | 2021.11.17 |
[Git] 4. Git 기본명령어 - add, commit, push, fetch, pull (0) | 2021.11.16 |
[Git] 3. Git 저장소 생성 - init, clone (0) | 2021.11.11 |
들어가며 |
IIS 서버를 이용해서 PHP 프로젝트를 설정할 경우 아래와 같은 오류가 발생했을때, 해결하는 방법을 정리했습니다.
에러메시지는 아래와 같은데요.
Internal Server Error <handler> scriptProcessor could not be found in <fastCGI> application configuration.
01. 500.0 - Internal Server Error |
IIS에 PHP로 구성된 프로젝트를 설정하고 있던 도중, 위와 같은 에러메시지가 나타 났는데요.
"<handler> scriptProcessor를 <fastCGI> 애플리케이션 구성에서 찾을 수 없습니다."
자세한 오류 정보:
모듈 FastCgiModule
알림 ExecuteRequestHandler
처리기 PHP FastCgi
오류 코드 0x80070585
처음 보는 에러 메시지여서, 차근차근 확인해 봤는데요.
web.config 파일에 대한 이슈인 듯 해서 해당 부분에 대해서 확인 했습니다.
02. web.config 파일 확인 |
FastCgiModule 를 설정 하는 파일에 위치가 잘못 되었을까 해서, 확인 했는데 정상적이였습니다.
그래서 혹시나 싶어 web.config 파일을 열어봤는데요!
Fast CGI 경로를 설정하면서, Web.config 파일에 경로가 잘못 들어갔으며, 중복으로 두개가 들어가 있었습니다.
03. php-cgi 경로 수정 |
중복으로 들어가있던, 하나의 CGI 경로는 주석처리를 했고요.
나머지 하나의 php-cgi 경로는 실제 존재하는 위치로 수정했더니, 500.0 에러 없이 정상적으로 접속이 가능했습니다!
참조 |
END
'WebServer' 카테고리의 다른 글
IIS Worker Process (w3wp) 로 높은 CPU 사용량 문제를 해결하는 방법 (1) (0) | 2023.09.19 |
---|---|
[IIS] PHP 업로드 용량 관련 설정하기 (0) | 2023.05.08 |
[IIS] Web App 최적화 설정하는 방법 (0) | 2022.05.11 |
[ASP.NET] IISRESET 오류 대처 방안 (0) | 2021.04.19 |
[IIS] IIS 내에서 ASP.NET은 어떻게 동작 하는가. (2) | 2020.01.01 |
[Jenkins] 외부에서 Jenkins 호출하기
들어가며
Jenkins를 이용해서 간단한 DevOps 환경을 구성하다 보면, 권한을 부여해서 컨트롤 할 수 도 있지만, 시스템 자동화를 위해서 외부에서 API를 이용해서 Jenkins를 호출 해야 하는 상황이 발생하기 도 합니다.
간편하게 Plug In을 설치하면, 외부에서 Jenkins를 호출 할 수 있습니다.
01 Jenkins 플러그인 설치
외부에서 Jenkins 를 호출하기 위해서는 먼저, Build Authorization Token Root Plugin 을 설치해야 합니다.
Jenkins 관리 > 플러그인 관리 메뉴에 들어가서, Available Plugins 를 선택해서
"Build Authorization Token Root" 해당 플러그인을 검색해서 설치 해 줍니다.
02 빌드 유발 수정
플러그인 설치가 준비가 되었다면, 외부에서 호출을 하려는 프로젝트 관리메뉴에 접속합니다.
중간에 위치한 빌드 유발 설정 부분에 "빌드를 원격으로 유발" 을 선택해주고,
Authentication Token 을 작성해 줍니다.
그러면서, 원격 빌드 유발에 Sample URL 이 명시가 되어 있는데요.
예를 들면 아래와 같은 형태입니다. <> 괄호안에 내용은 각 프로젝트에 맞게 변경되어야 합니다.
http://<JENKINS_URL>/job/<PROJECT_NAME>/build?token=<TOKEN_NAME>
03 외부에서 호출시 로그인 화면 출력
원격환경에서 URL을 호출하게 되면, 위와 같이 로그인 화면이 출력되어, 원하는 Jenkins가 정상적으로 호출 되지 않는데요.
https://plugins.jenkins.io/build-token-root/
해당 플러그인 사이트에 방문하게 되면, URL 형식이 다르다는 것을 알 수 있습니다.
04 호출 URL 변경
http://<JENKINS_URL>/buildByToken/build?job=<PROJECT_NAME>&token=<TOKEN_NAME>
호출하는 URL을 Build Authorization Token Root 에서 제공하는 방식으로 변경했더니, 별도의 로그인 없이도 Jenkins를 외부에서 호출 할 수 있었습니다.
참조
https://plugins.jenkins.io/build-token-root/
END
'CI' 카테고리의 다른 글
[Jenkins] 젠킨스 Agent 노드 추가 및 설정 방법 (1) | 2023.05.23 |
---|---|
[Jenkins] Jenkins 복구 후, git cloning remote repo 'origin' 오류 해결 (0) | 2023.05.02 |
[Jenkins] 매개변수를 이용한 Git Tag 빌드 (0) | 2023.01.11 |
[Jenkins] Git Branch 매개변수를 이용한 빌드 (0) | 2020.07.14 |
[Jenkins] 파워쉘을 이용해서 git log 관리하기 (0) | 2020.07.02 |
[C#] C#에서 TLS 1.2를 사용하도록 변경하기
.
들어가며
.NET Framework 4.8 개발 환경에서, 기본적인 TLS 전송에 대한 프로토콜 버전이 1.0으로 전송된다는 얘기를 전해들었습니다. 이와 관련해서 서버에서는 1.2 를 지원하고 있어서 원활한 통신이 안되고 있다는 얘기에, 관련상황을 정리하였습니다.
TLS란?
TLS(전송 계층 보안) 프로토콜은 인터넷을 통해 전달되는 개인 정보를 보호하는 데 도움이 되도록 설계된 업계 표준입니다.
TLS는 국제 표준 기구인 IETF(Internet Engineering Task Force)에 의해 제안되었으며 프로토콜의 첫 번째 버전은 1999년에 발표되었습니다. 가장 최신 버전은 2018년에 발표된 TLS 1.3입니다.
TLS는 Netscape가 개발한 SSL(Secure Sockets Layer)이라고 불리는 이전의 암호화 프로토콜에서 발전한 것입니다.
TLS 버전 1.0은 SSL 버전 3.1로서 개발을 시작했지만 Netscape와 더 이상 연관이 없음을 명시하기 위해 발표 전에 프로토콜의 이름이 변경되었습니다.
이러한 역사 때문에 용어 TLS와 SSL은 가끔 서로 바꿔서 사용됩니다.
.NET Framework TLS 1.2에 대한 지원
앱이 TLS 1.2를 협상하려면 OS 및 .NET Framework 버전이 모두 TLS 1.2를 지원해야 합니다.
- TLS 1.2의 경우 앱에서 .NET Framework 4.7 이상 버전을 대상으로 하고, WCF 앱에서 .NET Framework 4.7.1 이상 버전을 대상으로 합니다.
- TLS 1.3의 경우 .NET Framework 4.8 이상을 대상으로 합니다.
현 상황
위에 표를 보게 되면 Windows Server 2012 상위 버전은 기본적으로 사용하도록 설정된다고 하였으나,
실질적으로 테스트 했을때는 그러지 않았습니다.
동일한 현상에 대해서 테스한 코드가 있어서 참조하였습니다.
string url = "https://www.google.com";
var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
var resp = req.GetResponse();
var outStream = resp.GetResponseStream();
string output = "";
using (StreamReader rdr = new StreamReader(outStream))
{
output = rdr.ReadToEnd();
}
저희 코드의 개발환경은 2016 Server에 .NET Framework 4.8 이였습니다.
TLS 1.2 활성화
위에 처럼 진행했을 경우, TLS 가 1.0 버전으로 통신이 되어, 아래처럼 코드를 수정해서 테스트 했습니다.
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
...
...
(HttpWebRequest)WebRequest.Create(url) 이전에
추가로 프로토콜을 명시해 줌으로써, TLS 1.2 로 통신하는 모습을 확인 할 수 있었습니다.
동일한 현상을 겪었으나, 이미지 캡쳐본이 사라져서 타 blog 의 이미지를 첨부하였습니다.
MSDN
MSDN 에서는 .NET Framework 애플리케이션이 안전하게 유지되도록 하려면, TLS 버전을 하드 코드 하면 안된다고 합니다. .NET Framework 애플리케이션에서는 OS가 지원하는 TLS 버전을 사용해야 한다고 하지만,
기본적으로 사용하도록 설정된다고 하는데, 실질적으로는 코드상에서 프로토콜을 명시해줬어야 했습니다.
추가적으로 설정이 필요한것인지는 모르겠으나, regist 파일까지 수정해가면서 하고싶진 않아서, 코드상에서 처리하였습니다.
참조
http://csharp.tips/tip/article/802-using-tls-1-2-in-csharp
https://learn.microsoft.com/ko-kr/dotnet/framework/network-programming/tls#support-for-tls-12
END
'Program Language > C#' 카테고리의 다른 글
[C#] 문자열 서식, string.Format() 및 보간을 이용한 간격 맞추기 (1) | 2023.12.18 |
---|---|
[C#] ObsoleteAttribute 특성을 사용하여, 사용안하는 메소드 표시 (0) | 2023.09.11 |
[C#] 특정 소수점 이하 올림, 버림 처리하기 (0) | 2022.05.19 |
[C#] C#에서의 반올림, 올림, 버림 처리 (0) | 2022.05.18 |
[C#] HttpWebRequest 사용시 2개의 연결 수정 (0) | 2022.03.22 |
[Python] 파이썬 입력 함수 - input()
들어가며
Python을 공부 하면서 그때마다의 내용을 정리하고, 복습해보려고 합니다. 전반적으로 내용을 정리해서 작성하는게 아니여서 중복된 내용이 작성될 수 있습니다. 참고해주세요.
input()
input("Age : ")
print("Age is " + input("Age : "))
//결과화면
Age : 16
Age : 16
Age is 16
파이썬에서 데이터에 대한 입력은 input() 메소드를 이용해서 진행합니다.
input 메소드에 문자열 형태의 prompt가 있는 경우, 줄바꿈 없이 화면에 출력됩니다. 그런 다음 입력에서 한 줄을 읽고 문자열로 변한 후 반환합니다. (자동적으로 줄바꿈 제거)
그렇기 때문에 input 으로 입력받은 데이터는 기본적으로 문자열 형태여서, 형 변환 후 이용해야 합니다.
변수를 이용한 입력
위에 입력에 대한 부분은 input() 메소드에 대한 기본적인 내용이며, 변수를 이용해서 입력된 내용을 사용 할 수 있습니다.
name = input("Age : ")
print("Age is " + name)
// 출력
Age : 16
Age is 16
참조
https://docs.python.org/3/library/functions.html?highlight=input#input
END
'Program Language > Python' 카테고리의 다른 글
[Python] 파이썬 핵심만 정리한 반복문 for/while (0) | 2023.09.04 |
---|---|
[Python] 파이썬 핵심만 정리한 조건문 if/else (0) | 2023.06.12 |
[Python] 파이썬 출력 함수 - print() (0) | 2023.02.17 |
[Python] 가볍게 파이썬 학습 및 디버깅하기 좋은 툴 추천! Thonny (1) | 2023.02.01 |
[Python] Windows 환경에 Python 설치하기! (0) | 2023.01.27 |
[Python] 파이썬 출력 함수 - print()
들어가며
Python을 공부 하면서 그때마다의 내용을 정리하고, 복습해보려고 합니다. 전반적으로 내용을 정리해서 작성하는게 아니여서 중복된 내용이 작성될 수 있습니다. 참고해주세요.
print()
print ( * objects , sep = ' ' , end = '\n' , file = None , flush = False )
print 메소드는 위와 같은 인자를 가지고 있습니다.
객체를 텍스트 스트림 파일 에 인쇄하며, sep 로 구분 하고 end 가 뒤에 옵니다.
sep , end , file 및 flush 는 키워드 인수로 제공되어야 합니다.
키워드가 아닌 모든 인수는 str() 같은 문자열로 변환되고 스트림에 기록되며 sep 로 구분되고 뒤에 end 가 옵니다.
sep 와 end는 모두 문자열이어야 합니다. None의 경우 기본 값의 사용을 의미합니다.
file 인수는 write(string) 메서드 가 있는 객체여야 합니다. None 또는 값을 제공하지 않는 경우 sys.stdout을 사용합니다.
인쇄된 인수는 텍스트 문자열로 변환되기 때문에 print()는 바이너리 모드 파일 객체와 함께 사용할 수 없습니다. 이를 위해 file.write(...)를 대신 사용하십시오.
출력이 버퍼링되는지 여부는 일반적으로 파일에 의해 결정되지만 flush 키워드 인수가 true이면 스트림이 강제로 플러시됩니다.
버전 3.3에서 변경: flush 키워드 인수를 추가했습니다 .
기본 print() 출력 샘플
print("Hello world")
print("My Name is \"Jeff\"")
print('My Name is "Jeff"')
print("My Name is 'Jeff'")
print("My Name is " + "Jeff")
print(1, 2, 3, 4, 5)
Hello world
My Name is "Jeff"
My Name is "Jeff"
My Name is 'Jeff'
My Name is Jeff
1 2 3 4 5
sep, end 인자값을 이용한 출력
print(1, 2, 3, 4, 5, sep=" : ", end=",")
1 : 2 : 3 : 4 : 5,
중간의 구분되는 문자열을 sep 인자로 설정 할 수 있으며, end 인자로는 출력의 마지막 문자열을 설정 할 수 있습니다.
file 인자값의 이용
with open('test.txt', 'w') as file:
print('Hello World!', file=file)
file 인자값을 이용할 경우, 위에서 언급한 대로, 표준출력이 아닌, 파일에 해당
flush 인자값의 이용
대부분의 입력의 경우 buffer의 영역에 데이터가 입력이 되고, 일정양, 혹은 일정 시간동안 보관된 buffer 의 내용이 화면에 노출이 되게 됩니다. flush의 인자값을 사용할 경우, buffer에 보관하지 말고 바로 출력하라는 의미로 해석 될 수 있습니다.
해당 내용을 어떻게 샘플링 할 수 있을까 했는데, 다른 블로그 분이 샘플링 한게 있어서 URL을 참조 영역에 첨부 하오니 참고 부탁드립니다.
import time
for i in range(10):
print(i, end=' ', flush=False)
time.sleep(0.1)
해당 인자가 False의 경우에는 한번에 화면에 출력되지만, True 일 경우에는 0 ~ 9까지 순차적으로 표기됩니다.
참조
https://docs.python.org/3/library/functions.html?highlight=print#print
https://velog.io/@janeljs/python-print-sep-end-file-flush
END
'Program Language > Python' 카테고리의 다른 글
[Python] 파이썬 핵심만 정리한 반복문 for/while (0) | 2023.09.04 |
---|---|
[Python] 파이썬 핵심만 정리한 조건문 if/else (0) | 2023.06.12 |
[Python] 파이썬 입력 함수 - input() (0) | 2023.03.21 |
[Python] 가볍게 파이썬 학습 및 디버깅하기 좋은 툴 추천! Thonny (1) | 2023.02.01 |
[Python] Windows 환경에 Python 설치하기! (0) | 2023.01.27 |