[컴][웹] vuejs 에서 enter 를 칠 때, 다음 input 으로 focus 를 옮기는 법

 

focus 변경 ui / tabindex / 엑셀 처럼 엔터 치면 다음 셀로 옮기는 방법

vuejs 에서 enter 를 칠 때, 다음 input 으로 focus 를 옮기는 법

여기서의 예제는 component 에서 ref 를 제공하지 않을때 방법이다.

결국 여기서는 마땅히 방법이 없었다. 그래서 ref 를 직접 사용하지 못하고, getElementsByTagName를 써서 원래 ref 로 가져오려했던 element 에 접근해야 했다.

this.$refs.myref.$el.getElementsByTagName('input')[0].focus()

<template>
  <div>
    <template v-for="(val, idx) in mydata">
      <MyInput
        :ref="`myinput${idx}`"
        @keypress="onKeyPressInput($event, idx)"
      />
    </template>
  </div>
</template>

...
export {
  ...
  data() {
    return {
      mydata: [0,1,2],
    }
  },
  methods: {
    onKeyPressInput(evt, idx) {
      if(evt.charCode === 13){
        // when pressing the 'Enter' key
        const nextIdx = (idx + 1) % mydata.length
        this.$refs[`myinput${nextIdx}`].$el.getElementsByTagName('input')[0].focus()
      }
    },
  }

Reference

  1. Focus management with Vue refs - Learn web development | MDN
  2. Component Instance | Vue.js

[컴][웹] user agent stylesheet 이 다르게 나오는 이유

user agent stylesheet / 유저 에이전트 / css 차이 / doctype html / 스타일 차이 / 다른 스타일

user agent stylesheet 이 다르게 나오는 이유

css 에서 user agent stylesheet 이 다르게 나온다면 <!DOCTYPE html> 를 확인해 보자.

table tag 에 대해서 다른 user-agent 가 나와서 이유를 찾아보니, <!DOCTYPE html> 의 유무에 따라 browser 가 다른 user agent stylesheet 을 사용하고 있었다.

사용한 browser : chrome 108.0.5359.125(공식 빌드) (64비트)

<html lang="ko">
<table></table>
</html>
<!DOCTYPE html>
<html lang="ko">
<table></table>
</html>

See Also

  1. User Agent Style Sheets: Basics and Samples · Jens Oliver Meiert
  2. css - User agent stylesheet overriding my table style? Twitter Bootstrap - Stack Overflow

[컴] 왜 javascript 에서 object key 의 순서는 보장되지 않는가?

 

js object key order

왜 javascript 에서 object key 의 순서는 보장되지 않는가?

간만에 의문이 들어 찾아봤다. 아래 StackOverflow 답변(ref.1)이면 충분할 듯 하다.

정리를 하면,

  • 아직 ECMA-262 에 key 가 보장된다는 이야기가 없다.
  • ES6 spec 에 Object.keys 가 ownPropertyKeys 에 의존한다고 정의했다. 그래서 보장된다고 볼 수도 있다.
  • ref. 3 글을 보면, 여전히 문제는 compatability 인 듯 하다.

from : ES5, https://262.ecma-international.org/5.1/#sec-15.2.3.14

15.2.3.14 Object.keys ( O )

When the keys function is called with argument O, the following steps are taken:

If the Type(O) is not Object, throw a TypeError exception.
Let n be the number of own enumerable properties of O
Let array be the result of creating a new Object as if by the expression new Array(n) where Array is the standard built-in constructor with that name.
Let index be 0.
For each own enumerable property of O whose name String is P
    Call the [[DefineOwnProperty]] internal method of array with arguments ToString(index), the PropertyDescriptor {[[Value]]: P, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}, and false.
    Increment index by 1.
Return array.

If an implementation defines a specific order of enumeration for the for-in statement, that same enumeration order must be used in step 5 of this algorithm.

아래처럼 변경됐다.

from : ES6, https://262.ecma-international.org/6.0/#sec-object.keys

19.1.2.14 Object.keys ( O )

When the keys function is called with argument O, the following steps are taken:

Let obj be ToObject(O).
ReturnIfAbrupt(obj).
Let nameList be EnumerableOwnNames(obj).
ReturnIfAbrupt(nameList).
Return CreateArrayFromList(nameList).

If an implementation defines a specific order of enumeration for the for-in statement, the same order must be used for the elements of the array returned in step 4.

개인적인 결론

아직까지는 object 의 key 순서는 보장되지 않음을 전제로 프로그래밍을 해야 하지 않을까 싶다.

See Also

  1. Does JavaScript guarantee object property order? - Stack Overflow : key 의 순서가 보장된 object 를 원한다면, Map 을 사용하면 된다고 한다.

Reference

  1. Javascript - maintain key order when going from object -> array - Stack Overflow
  2. Property order is predictable in JavaScript objects since ES2015 | Stefan Judis Web Development
  3. Property order is predictable in JavaScript objects since ES2015 : javascript

[컴][보안] ’기기’에서 고유한 키를 생성하는 새로운 방법

iot 에서 보안 / 신뢰성 높일 기술 / unique key 생성 방법 / 고유한

’기기’에서 고유한 키를 생성하는 새로운 방법

물리적 복제 방지기능(Physically Unclonable Function, PUF)

  • 개개의 ‘기기’(device)는 ‘공정 과정에서 발생하는 오차’ 가 있다.
  • 이 오차로 인해서 ’서로다른 응답 특성’을 갖게 된다.
  • 이것이 PUF 이다.
  • 취약점
    • 이 특성만을 사용해 보안키를 생성하고 사용자 인증을 진행하는 경우 --> 신호 도청을 기반으로 하는 재전송 공격에 취약하다. --> (me: 즉, 그대로 신호를 복사해서 전송하는 것으로 보면 될 듯)

채널 상태 정보(CSI)

  • me: 이것은 현재 ’채널’의 상태를 이야기하는 것으로 보인다.
  • 채널 상태 정보(CSI)는 물리적 환경의 ‘공간적 특성이 반영돼 측정’ --> 측정하는 환경에 따라 그 값이 다르다
  • 공격
    • 공격을 하려면, 도청해서 그 신호를 그대로 재전송하는 것으로는 안된다. 재전송하는 위치에서 만든 ’채널’의 상태가 ’원래 채널’의 상태와 다르기 때문에, CSI 값이 다를 것이다.

평가결과

연구팀이 32bits 길이의 보안키를 사용해 재전송 공격에 대한 신원 인증 성능을 평가한 결과:

  • 기존 PUF를 활용한 인증기법은 50만 번의 공격 중 약 0.5% 확률로 공격자의 인증 시도가 허용
  • 새로운 인증기법은 공격자의 인증 시도를 모두 차단

Reference

  1. 지스트 연구진, IoT 보안 신뢰성 높일 기술 ‘美 특허’ 출원, 2022-12-14

[컴] Slack 에서 특정 Channel 로 file upload 하기

슬랙 에서 메시지 전성 / webhook / hook / web hook / 슬랙 메세지 / send a message

Slack 에서 특정 Channel 로 file upload 하기

slack 채널등에 file upload 를 하려면, fiiles:write 라는 권한이 필요하다.

권한 추가 방법

  • Your Apps 메뉴
    • --> app 선택
    • --> Features –> OAuth & Permissions
    • --> Scopes –> Bot Token Scopes
    • --> ‘Add an OAuth Scope’ 을 선택
    • --> files:write 을 선택
    • --> app 을 reinstall 해야된다고 하면서 link 가 보인다. link 를 click

사용법

Examples 에 보면, 사용법이 나와있다.

curl -F file=@mypic.gif -F "initial_comment=Shakes the cat" -F channels=<ch1_id>,<ch2_id> -H "Authorization: Bearer xoxb-xxxxxxxxx-xxxx" https://slack.com/api/files.upload

토큰

토큰은 다음 위치에서 찾을 수 있다.

  • Your Apps 메뉴
    • --> app 선택
    • --> Features –> OAuth & Permissions
    • --> OAuth Tokens for Your Workspace

채널 id 얻기

채널에서 마우스context 메뉴 -> ‘채널 세부정보 보기’ –> 창 하단에 ‘채널 ID’ 보인다.

채널에 bot 추가하기

메시지는 bot 을 따로 초대하지 않아도 가능하지만, file upload 는 그 채널에 bot 을 추가해 줘야 한다. 방법은 다음과 같다.

  1. 채널에 들어간다.
  2. /invite @my-bot-name

See Also

  1. 쿠…sal: [컴] Slack 에서 특정 Channel 로 메시지 보내기

References

  1. Hello world: sending your first Slack app message | Slack

[컴][머신러닝] ChatGPT

 

ChatGPT

ChatGPT 는 website 에서 제공하는 서비스라고 보면될듯 하다. SaaS

https://chat.openai.com/chat 는 OpenAPI 쪽에서 자신들의 GPT 를 대화하는 방식으로 사용될 수 있도록 ’ChatGPT라는 Model’을 만들었는데, 이것을 훈련시키려고 만든 사이트라고 보면 될 것 같다.

현재 연구용 prview (research preview) 상태이고, 그래서 무료라고 한다.

ChatGPT 능력들

from ref.2

김수현 한국과학기술연구원(KIST) 인공지능연구단 책임연구원은 “기존 GPT-3는 텍스트를 입력해서 뒤에 어떤 텍스트가 이어질 지 예상하는 방식으로 작동했는데, 아무래도 패턴만을 배우다보니 자연스러운 대화의 맥락을 만드는 건 어려움이 있었다”며 “GPT-3.5는 텍스트에 대한 사람의 판단을 함께 가르치다보니 훨씬 자연스러운 대화가 가능해졌다”고 설명했다.

ChatGPT의 한계[ref. 2]

  • 현재 공개된 ChatGPT는 2021년까지의 데이터를 기반으로 학습 --> 기본적으로 최신 정보를 가지고 있지 않다.
  • 실시간으로 정보를 찾는 것도 아니다. --> 현재 상황에 맞는 정보를 제공할 수도 없다.
  • 정보의 신뢰도의 한계
    • 주어진 데이터를 바탕으로 학습하는 AI의 특성상 잘못된 정보가 섞여 있으면 ChatGPT가 내놓는 답변 자체가 잘못될 가능성
    • 공신력 있는 정보를 가려내지 못한다.
  • Stack Overflow temporarily bans answers from OpenAI’s ChatGPT chatbot | ZDNET : StackOverflow 쪽에서는 ChatGPT를 이용해서 빠르게 여러질문에 답하는 것을 금지시켰다. 이 답들이 그럴싸 해보이지만, 틀린부분도 많은데, 이것이 검증없이 너무 많은 양의 답변들이 올라오게 되니 문제가 되는듯 하다.

References

  1. “구글의 시대 끝났다” 평가 나온 Chat GPT… AI 대화가 검색 대체할까 - 조선비즈, 2022-12-06

[컴] WebAssembly 관련 자료 모음, 2022-12

 

웹 어셈블리 / 어셈 / 와슴, /wasm

WebAssembly 관련 자료 모음, 2022-12

요즘 GeekNews 를 알았는데, 좋은글이 많다. 그중에 WebAssembly 관련 글들을 몇개 모아봤다.