분류 전체보기242 type alias & readonly & type alias extends, literal type과 as const 타입을 다 기재할 필요 없이 변수에 담아 사용 가능하다. // 아래 변수의 타입을 let value: string = "lee"; // alias해서 사용 type Name = string; let newValue: Name = "lee"; const 변수는 값을 바꿀 수 없지만, object의 내용은 바꿀 수 있다. 그래서 그 값을 변경하지 못하도록 readonly로 만들 수 있다. const name = "lee"; name = "kim";// 에러 const value = { name : "lee", age : 25 }; value.name = "kim";// 에러 안남 type Person = { readonly name : string, age : number } const newValue : .. 2022. 1. 1. 맥북 한영키 오른쪽 CMD키로 변경하기 1. 오른쪽 커맨드를 한영키로 사용하시는 분들을 위한 팁입니다. Big Sur에서는 Karabiner가 작동하고 있지 않습니다. 애플에서 자체적으로 지원하고 있는 방법이 있는데요. hidutil을 이용하는 방법입니다. 터미널을 켜셔서 --> 아래서 부터 mkdir -p /Users/Shared/bin printf '%s\n' '#!/bin/sh' \ 'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000e7,"HIDKeyboardModifierMappingDst":0x70000006d}]}'"'" \ >/Users/Shared/bin/userkeymapping chmod 755 /Users/Shar.. 2021. 12. 29. 맥북 더 높은 해상도 추가하기 대부분 1680 1050으로 쓰실거라 생각됩니다. 저도 그랬고요 1920 1200으로 써도 그렇게 안 불편할거 같은데 왜 안되지 해서 찾아보니 저같은 생각을 하신 분들이 이미 계시더라구요 https://x86.co.kr/macos/5837023 https://x86.co.kr/macos/6063023 이 사이트를 보고 파일을 받아 적용해보니 1920 1200 해상도가 추가는 되는데 기존 1680 1050 해상도가 없어지더군요 1600 1000 해상도로 바뀌는데 그냥 기존 해상도 + 추가 해상도로 안되나 해서 기존 파일과 합쳐보니 바로 잘 적용되네요 hidpi 잘 적용됩니다. 써보니 2048 1280 해상도도 글씨가 작긴해도 hidpi가 적용되니 쓸만합니다 https://mega.nz/file/c1cnHK.. 2021. 12. 29. (Union | any | unknown) 타입들, 안전하게 코딩하기 위한 Narrowing과 Assertion에 대한 짧은 이야기 특수한 타입으로 볼 수 있는 세가지 타입에 대해 이야기한다. Union은 여러개의 타입 중 하나가 들어갈 수 있는 것(or 개념) any는 js처럼 모든 타입을 허용한다. 연산 등에서도 에러를 뱉지 않기 때문에 사실상 ts를 사용하는 의미를 상실한다. unknown은 any와 용도가 비슷하지만 몇가지 상황에 대해 타입 체크를 하여 연산 등을 허용하지 않아 더 안전하다. any를 사용해야 한다면 unknown으로 하자. 예제는 아래 // 여러가지를 쓸 수 있는 유니온타입 type Union = (string | number | boolean)[] let members: Union = [1,2,3,'lim',true]; // 아무거나 다 되는 애니타입 // 타입스크립트의 의미가 없어진다. let ay: an.. 2021. 12. 29. typescript의 변경 규칙을 위한 환경설정파일(tsconfig.json) typescript 그대로는 브라우저가 읽지 못하기 때문에 js로 변환이 되어야 한다. 변환될 때 어떤 규칙에 따라서 할 것인지를 설정하기 위한 파일이 tsconfig.json이며, package.json과 같은 root에 위치한다. 기본적으로는 아래처럼 작성한다.(intellij 기준 자동으로 아래처럼 채워진다) target은 어떤 버젼의 js로 변환할지 결정한다. 더 신버젼을 원할 경우 es2016, esnext 등으로 기입한다. module은 import export 규칙을 결정한다. commonjs는 require문법, es2016, esnext는 import 문법 브라우저 호환성을 위한다면 아래 기본형태가 낫겠고, 일렉트론 같이 특정 브라우저 한정으로 돌아가는 애플리케이션이라면 가능한 최신 문법.. 2021. 12. 29. Typescript 기본 문법 정리 typescript의 간단한 기본 문법을 정리한다. 기본적으로 타입스크립트의 사용 목적 자체가 특정 객체(변수, 함수, 클래스의 파라미터 등등)에 타입을 지정하고 다른 타입의 사용을 막아서 예기치 않은 에러를 막기 위함이다. 코틀린의 문법과 상당히 유사하게 사용되기 때문에 형태에 이질감은 없었다. 아래 나열 // 변수 만들기 // 문자만 넣을 경우 let name1: string = 'kim'; // name1 = 1; // 에러 남 // 문자열 배열 let array: string[] = ['김','박']; // let array1: string[] = ['김',3]; // 문자열 아닌걸 넣으면 에러 let obj: { name: string } = { name: 'kim'}; let obj1: { n.. 2021. 12. 29. swagger 로 api문서를 만들어보자 restful api 서버를 만들 때 몇가지 고민이 있었는데, 우리가 만드는게 서버에서 api를 제공하는 단순 구조가 아니라 C++ binary api > napi 작성 후 .node 변환 > .node를 rest 로 작성 이라는, 몇가지 단계가 있었기 때문에 rest api의 검증이라던지, 추후에는 사용자에게도 배포를 할 것이기 때문에 문서를 어떻게 할지 고민이 되던 차에 swagger를 이용해 검증도 하고 사용자 배포용으로 쓰기로 결정 swagger에 대해 찾아보면서 너무나 다양한 케이스가 발견되었는데 그 중에서 아래와 같이 결정하였다. 1. swagger2.0 / swagger3.0(openAPI 3.0) 2. annotation(in code) / json / YAML 결정한 이유는 다음과 같다... 2021. 12. 9. react - node 서버와 연동 node 프로젝트 생성 npm init 기본 설정 const express = require('express'); const path = require('path'); const app = express(); app.use(express.static(path.join(__dirname, 'public'))); app.use('/favicon.ico', (req, res) => { res.status(204); }) app.use("/", (req, res) => { console.log("루트루트"); res.status(200).json({ result : "" }); }) app.listen(8989, () => { console.log("시작시작 8989"); }) node 프로젝트 안에 react.. 2021. 11. 12. message 통신으로 문자열 데이터를 주고 받기 로봇 상위제어기가 n개 실행되는 케이스가 발생해 제어기 간 문자열 데이터를 주고 받을 수 있는 메세지 통신 기능을 만든 적이 있다. 그걸 조금 다듬어 V2.0으로 개선했는데 해당 부분을 간략하게 기록한다. 먼저 구조는 다음과 같다. 1. 컨트롤러 - 메세지를 보내는 기능(제일 많이 개선됨) - 요청 명령을 구분하여 정의된 함수를 찾아(generic) 실행해주는 기능 2. 요청 명령 구분자 - 보내는 요청의 종류를 정해놓은 기능 - 중복 요청을 막아야하는 리스트 관리 - 그 외 구분이 필요한 그룹을 생성해서 관리하기 용이하도록 구조 1. 컨트롤러(많은 부분은 생략했지만...) @Suppress("unused", "UNUSED_PARAMETER", "RedundantSuspendModifier") class.. 2021. 11. 12. 이전 1 ··· 4 5 6 7 8 9 10 ··· 27 다음