-
Code Review - 1
code review - 초보자용 시간 날 때마다 코드 리뷰를 해보고 문서를 작성하자. 앵귤러 6.0 작업 중 코드를 보는 순간 뭐가 이상하다고 생각됐다. 왜 이렇게 어렵지? 라는 생각이 제일 먼저 났다. 다음처럼 고쳐봤다. 간단해졌는데. 이런 걸 신입 개발자에게 어떻게 설명을 해야 할지는 잘 모르겠다. update (bool:any,post:any) 일단 bool이 변수명이고 타입이 any다 잘못됨 isPublish: boolean, post:Post 이렇게 타입을 정해줘야한다. 그리고 코드를 보니 단지 토글을 해 준다. 그럼 isPublish가 굳이 들어갈 필요가 없는듯 post.isPublish 가 있기 때문에 post.isPublish...
-
Swagger - NotSupportedException
Swagger NotSupportedException api에 Get함수가 두개가 있거나 하면 에러가 난다. http://localhost:62000/swagger /swagger/v1/swagger.json 이 없다고 에럭 난다. http://localhost:62000/swagger/v1/swagger.json 을 해보면 다음처럼 에러가 난다. An unhandled exception occurred while processing the request. NotSupportedException: HTTP method “GET” & path “boards/{boardname}/documents/{id}” overloaded by actions - API.Controllers.BoardDocumentsController.GetBoardDocument (rc-API),API.Controllers.BoardDocumentsController.GetBoardDocumentWithPublish (rc-API). Actions require unique method/path combination for Swagger 2.0. Use ConflictingActionsResolver as a workaround 해결 방법은 아래와 같다. services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "API", Version = "v1" }); c.ResolveConflictingActions(apiDescriptions...
-
Angular 6 SSR(Server Side Rendering)
angular 6 SSR download sample file https://angular.io/guide/universal 여기에서 Download the finished sample code 를 클릭하여 다운받는다. https://angular.io/generated/zips/universal/universal.zip package.json update cd C:\Users<your-id>\Desktop\universal code . package.json을 열어서 rc가 붙은건 다 지운다. angular cli 6.0으로 샘플 프로젝트를 만들어서 거기에 있는 package.json하고 버전을 같게 만든다. 업데이트후 코드 { "name": "angular-io-example", "version": "1.0.0", "private": true, "description": "Example project from an angular.io guide.", "scripts": { "ng": "ng", "build": "ng build --prod", "start": "ng serve", "test": "ng test", "lint": "tslint ./src/**/*.ts -t...
-
dotnet core 2 서버에서 log 보기
aspnet core log 확인하기 배포시 logs폴더를 생성한다 project.csproj 파일을 수정한다. <Target Name="CreateLogsFolderDuringCliPublish" AfterTargets="AfterPublish"> <MakeDir Directories="$(PublishDir)logs" Condition="!Exists('$(PublishDir)logs')" /> </Target> <Target Name="CreateLogsFolderDuringVSPublish" AfterTargets="FileSystemPublish"> <MakeDir Directories="$(PublishUrl)logs" Condition="!Exists('$(PublishUrl)logs')" /> </Target> 배포후 web.config를 수정한다. <!-- <aspNetCore processPath="dotnet" arguments=".\rc-idp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" /> --> <aspNetCore processPath="dotnet" arguments=".\rc-idp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" /> <!--true로 변경--> 또는 앞에 포스트처럼 nlog를 설정하여 로그를 본다.
-
dotnet core 2 project nlog 추가
dotnet core 2 project에 nlog추가 nuget 설치 NLog.Web.AspNetCore nlog설정 추가 nlog.config <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="logfile" xsi:type="File" fileName="logs/nlog-${shortdate}.log" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> </rules> </nlog> Program.cs 변경 public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseNLog() //추가 .Build(); build 설정 변경 nlog.config » property » copy to output directory » Copy always logs폴더를 배포시 만들어준다. project.csproj 파일을 수정한다. <Target Name="CreateLogsFolderDuringCliPublish" AfterTargets="AfterPublish"> <MakeDir Directories="$(PublishDir)logs" Condition="!Exists('$(PublishDir)logs')" /> </Target> <Target Name="CreateLogsFolderDuringVSPublish" AfterTargets="FileSystemPublish"> <MakeDir Directories="$(PublishUrl)logs" Condition="!Exists('$(PublishUrl)logs')" /> </Target>...
-
Angular 4 i18n with ngx-translate
angular i18n 지원 angular 6와 ngx를 사용하지않고 기본 패키지를 사용해서 i18n을 구현은 다음 링크를 보세요 https://teamsmiley.github.io/2018/07/29/angular6-i18n-ssr-aot/ i18n 지원 angular 4.2를 기준으로 사용하는 패키지가 다른다. 4.3부터는 최신버전 4.2까지는 하위버전 .. 4.2 이하 패키지 추가 cmd (administrator) npm install @ngx-translate/core@^7.2.2 -D npm install @ngx-translate/http-loader@0.1.0 -D npm install @types/node -D npm install @ngx-cache/core@4.0.1 -D npm install @ngx-universal/translate-loader@4.0.1 -D webpack.vendor.js 설정 추가 const treeShakableModules = [ '@angular/animations', '@angular/common', '@angular/compiler', '@angular/core', '@angular/forms', '@angular/http', '@angular/platform-browser', '@angular/platform-browser-dynamic', '@angular/router', '@ngx-translate/core', '@ngx-translate/http-loader', 'zone.js', ];...
-
Angular Route
angular route 가져오기 url을 파싱해서 값을 가져오기 url 대소문자를 구분한다.(나중에 이것도 처리해야함) component가 자기자신에게 돌아오지 않는경우 let pagesize = this.route.snapshot.paramMap.get('pagesize'); let pagesize = this.route.snapshot.queryParamMap.get('pagesize'); 컴포넌트가 자기자신에게 돌아올 때 this.route.queryParamMap .subscribe(params => { let pageSize = params.get('pagesize'); //'pagesize'가 다 소문자여야함. this.query.pageSize = (pageSize == null) ? this.query.pageSize : +pageSize; console.log(pageSize); let currentPage = params.get('currentpage');//'currentpage'가 다 소문자여야함. this.query.currentPage = (currentPage == null) ? this.query.currentPage : +currentPage; console.log(currentPage); this.postsService.getAll("documents", this.query) .subscribe(result => { this.posts = result.payload; this.pagination =...
-
Angular dotnet core project Aot Fail
angular dotnet core project aot build시 실패 실패 만들기 angular 프로젝트에서 다음처럼 해보자. dotnet publish -c Release -o app 이상하게 다음 에러를 내면서 성공이 안된다 Module not found: Error: Can't resolve './../$$_gendir/ClientApp/app/app.browser.module.ngfactory' 다음처럼 npm을 하나 설치해주자 npm install enhanced-resolve@3.3.0 재도전 dotnet publish -c Release -o app 성공한다.
-
Dotnetcore Ef Seed Data
EF Core seed data DesignTimeDbContextFactory ERROR DBContext 있는 폴더에 클래스를 만든다. public static class DBContextExtensions { public static void EnsureSeedDataForContext(this DBContext context) { //init seed data var costEstimator = new List<CostEstimator>() { new CostEstimator() { Application = "maya", Core = 12, Email = "abcd@abcd.com", }, new CostEstimator() { Application = "3dmax", Core = 8, Email = "12345", }, }; context.CostEstimators.AddRange(costEstimator); context.SaveChanges(); } } Startup.cs에서 다음을 추가한다. public void Configure(IApplicationBuilder app, IHostingEnvironment env,DBContext dbContext) { await...
-
Angular Custom Header
Angular Custom Header Angular 프로젝트를 하던중 삽질을 한것이 있어서 적어둔다. api 는 다음과 같다. [HttpGet("{id}", Name = "GetBoardDocument")] public IActionResult GetBoardDocument(int id, [FromQuery] string fields) { var apps = _unitOfWork.BoardDocuments.Get(id); if (apps == null) { return NotFound(); } var result = Mapper.Map<BoardDocumentVM>(apps); Response.Headers.Add("X-SubjectId", "test"); return Ok(result.ShapeData(fields)); } 앵귤러 기존코드 getAllQueryString(queryString : string) { let options = this.setHeader('application/json'); return this.http.get(this.url + queryString,options) .map(response => response.json()) .catch(this.handleError); } 헤더를 가져와 보자. getAllQueryString(queryString : string) { let options...