-
nginx-01
nginx-01 nginx가 쓸일이 있어서 공부한것을 정리해보았다. docker로 실습 준비 이것저것 해보기 위해서 랩을 만들어야햇다. cd ~/Desktop mkdir nginx cd nginx touch default.conf touch docker-compose.yml cat default.conf server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } cat docker-compose.yml web: image: nginx volumes: - ./default.conf:/etc/nginx/conf.d/default.conf ports: - '80:80' 이제 실행해보자. docker-compose up -d Creating nginx_web_1 ... done...
-
angular file download with browser
angular file download with browser (not xhr) 일반적인 다운로드는 크롬 다운로드창에서 보이면서 경과가 보여진다. 그런데 angular에서 다운로드를 하면 xhr을 사용하여 스트림을 download하기때문에 파일이 완전히 다운로드가 된 후에 download창을 띄운다. 이 경우에는 file download progress를 화면에 보여주면서 고객이 대기하게 만든다. 작은 파일은 괞찮으나 큰 파일은 고객이 페이지를 바꿔버리면 다운로드가 멈추기 때문에 좋아보이지 않았다. 그래서 크롬 다운로드를 이용하기 위한 삽질을 좀 해봤다. xhr을 사용한 다운로드 API [HttpGet("download")] public async Task<IActionResult> Get(string path, string fileName) { if (string.IsNullOrEmpty(fileName))...
-
OpenApi Swagger NSwag dotnet 5
OpenApi, Swagger, NSwag Swagger를 써서 api의 상세스팩을(open api) 만들고 이걸 swagger website를 이용하여 웹화면으로 보게 해준다. openapi 3.0규격에 맞게 문서를 생성해주므로 아주 편하다. 기본 프로젝트 생성 mkdir ~/Desktop/NSwagSample cd ~/Desktop/NSwagSample dotnet new web package install dotnet add package NSwag.AspNetCore dotnet add package NSwag.MSBuild startup.cs public void ConfigureServices(IServiceCollection services) { //jwt token을 사용하여 인증을 통과 후 테스트가 가능하게 services.AddOpenApiDocument(configure => { configure.Title = "My API"; configure.AddSecurity("JWT", Enumerable.Empty<string>(), new OpenApiSecurityScheme { Type = OpenApiSecuritySchemeType.ApiKey, Name = "Authorization",...
-
Prettier-Code Formatter
Prettier-Code Formatter Install CMD+P (Ctrl+P) ext install esbenp.prettier-vscode 설정값 우선순위 settings.json > .editorconfig > .prettierrc 기본 설정 Default Formatter에 설정하면 모든 파일에 적용이된다. { "editor.defaultFormatter": "esbenp.prettier-vscode", "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } } 원하는 언어에만 적용해도 된다. { "editor.defaultFormatter": null, "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } } 추가 옵션 prettier.arrowParens (default: ‘avoid’) “ : arrow 함수에 매개변수에 괄호를 붙임 prettier.bracketSpacing (default: true) prettier.endOfLine (default: ‘auto’) prettier.htmlWhitespaceSensitivity (default: ‘css’) prettier.jsxBracketSameLine (default: false) prettier.jsxSingleQuote (default: false) : jsx에서 single...
-
s3 dotnet api - 02
aws s3 api dotnet core - 02 인증 aws iam에서 계정을 하나 만든다. program only로 만들었다. key/secret둘다 복사해둔다. 맥에서 ~/.aws/credentials를 만들어서 넣는다. [profileName] aws_access_key_id = XXXX aws_secret_access_key = TTTT 이제 개발 프로젝트에 다음처럼 설정한다. nuget package 설치 dotnet add package AWSSDK.Extensions.NETCore.Setup dotnet add package AWSSDK.S3 appsettings.Developement.json "AWS": { "Profile": "profileName", "Region": "us-west-2" }, "AwsS3BucketOptions": { "BucketName": "ur-bucketname" } 이제 startup.cs에서 다음 추가 services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonS3>(); services.AddTransient<IStorageService, AmazonS3Service>(); services.Configure<AwsS3BucketOptions>(Configuration.GetSection(nameof(AwsS3BucketOptions))) .AddSingleton(x => x.GetRequiredService<IOptions<AwsS3BucketOptions>>().Value); service폴더를 만들고 거기에 다음 두개...
-
s3 dotnet api - 01
aws s3 api dotnet core -01 s3를 api로 관리해야할 일이 생겨서 잠시 봤다 적어둘게 생겨서 블로깅 ListObjectsRequest vs ListObjectsV2Request 검색을 해보다 보면 ListObjectsRequest 도 보이고 ListObjectsV2Request도 보인다. 샘플코드들이 대부분 ListObjectsRequest로 보이고 있어서 두개의 차이점이 궁금했다. https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html For backward compatibility, Amazon S3 continues to support the prior version of this API, ListObjects. ListObjectsV2Request 를 사용하면 되겟다. bucket, object ,folder and file 버킷은 제일 상위단계를 말한다. 오브젝트는 bucket하위에 있는 것을 말한다. directory 와 file로 헷갈리기 쉬운데 사실...
-
bash for loop
bash for loop bash를 사용하다보면 루프를 사용하고 싶은때가 있다. 할때마자 찾아봐서 정리해보았다. 루프를 돌아야할 문자열이 있다. a b c d 이 문자열을 변수로 만들어야한다. declare -a arr=( a b c d ) 이제 이 arr변수를 돌면서 하고싶은 일을 하면된다. for i in "${arr[@]}" do #해야할일들 echo "$i" kcn "$i" kubectl delete secret regcred done 이러면 a b c d를 루프 돌면서 하고싶은일을 한다. 너무 간단하지만 매번 찾아보게되서 적어보았다. “a” “b” 이런상태로도 가능하지만 일을 하다보니 문자열별로...
-
Bitwarden Password 매니저
패스워드 보안관련 아침에 아이패드 사파리에서 로그인을 하는데 다음화면처럼 떴다. 음 뭐지 하면서 하나씩 정리해보기로 햇다. apple ios ios에서 비밀번호 leaking이 된걸 확인해서 알람으로 보여준다. 관련기능은 세팅에서 끌수 있다. 동작방식은 어디엔가(정확히는 못찾앗음) 디비가 있고 그걸 로그인시 비교해서 잇으면 알려준다고함. 같은 디비를 쓰는거같은데 다음 사이트가 있어서 거기에서 leaking을 확인할수 있다. https://haveibeenpwned.com 여기서 확인하면 리킹이 있어는지 확인이 된다. 같은 기능이 크롬에도 있고 여러군데 있다. 웹만 사용한다면 크롬도 괞찮은 솔류션인듯 보인다. 그런데 앱등을 같이 사용하고싶다. 해결 방법 일단 해결방법을...
-
독립 인증서버 사용 경험 공유
독립 인증서버 사용경험. 요즘 프로젝트를 하면서 인증서버를 완전 다른 서버로 독립시켜 oauth를 지원하게 만드는것을 저는 선호합니다. 그러다 보니 궁금한게 생겼습니다. 의견이 있으시면 이메일 주세요 teamsmiley@gmail.com 인증서버에서 롤관리 인증서버에서 보통 롤을 관리할수 있습니다. 롤은 인증서버에서 관리하면 편한듯 보입니다. 여전히 인증서버에 롤이 잇는경우 어플리케이션단에서 관리하기가 상당히 불편합니다. 인증서버용 web을 만들어서 어드민(특정 유저)가 들어가서 관리하게 해야할듯 보입니다. 프로파일은 어플리케이션단에서 인증서버에서도 보통 프로파일을 관리할수 있는 기능은 있으나 아무래도 인증서버에 두면 문제가 많이 발생합니다. api단으로 프로파일을 이동해서 두는게 많은 부분에서...
-
gitlab tip - executor, tag, release
gitlab runner executor gitlab runner executor 는 여러가지가 있다. https://docs.gitlab.com/runner/executors/ 기본적인 shell과 docker만 다루어 보겟다. 하나의 장비에서 두개의 runner를 돌려서 tag가 docker가 붙으면 도커 executor가 돌게 해보자. executor 등록 shell executor ssh runner01 gitlab-runner register \ --non-interactive \ --executor "shell" \ --url "https://gitlab.yourdomain.com/" \ --registration-token "xxxNM11xxKvg6TDKtxs3" \ --description "runner01" \ --tag-list "" \ --run-untagged="true" \ --locked="true" docker executor gitlab-runner register \ --non-interactive \ --executor "docker" \ --docker-image alpine:latest \ --url "https://gitlab.yourdomain.com/" \ --registration-token "xxxM11xxKvg6TDKtxs3" \...