[컴] 맥의 원격데스크톱에서 한영키 사용하기

원격접속 / 한영키 대체 / 윈도우에서 caps lock 으로 한영키 / in Mac / 맥북

맥의 원격데스크톱에서 한영키 사용하기

한영키 변경

"맥 + 윈도우키보드" 조합을 사용하면서, Remote Desktop App(원격데스크톱) 을 이용해서 windows 10 을 접속할 때, '한/영' 키가 제대로 동작하지 않는다.

그래서 '한/영' 키를 Mac 에서 처럼 CapsLock 으로 대체하는 방법을 사용했다.

이를 위해서 AutoHotKey 를 이용했다. registry 변경등 다른 설정 방법들을 찾아봤지만, 지금으로서는 이방법이 가장 효과적이다.
; key.ahk
; {vk19sc1F1} : 한자키
; shift+space --> {vk15sc138} : 한영키
+space::Send, {vk15sc138}
return

; shift+capslock 으로 CapsLock 을
; caps-lock key 를 "한/영" 키로
+CapsLock::CapsLock
CapsLock::vk15
return



See Also


[컴] edge chromium 의 장점

edge / edg / 크로미엄


작성중...

Edge 의 장점

  • 크롬의 구글 연동 기능이 삭제 : 프라이버시(privacy) 관련하여 구글연동 기능이 제거된 것은 환영할 만 하다.
  • ref 2 에서 크롬이 secret mode 에서도 정보를 빼간다고 했으니, ms 의 edge 가 상대적으로 정보를 덜 빼갈 수도 있다.(물론 MS 에서 더 많은 정보를 빼가려고 할 수는 있다.)


References

  1. MS, '크로미움' 엣지 첫 공개··· "구글 연동 기능 50여 개 삭제" - CIO Korea, 2019-04-12
  2. 구글 집단소송 당해…"크롬 시크릿 모드때도 정보 뻬갔다" - 지디넷코리아, 2020-06-04

[컴][리눅스] cron

크론 / 크론 명령어 / cron command / crontab / how to use crontab

cron

crontab 편집

crontab -e

각 계정에 해당하는 crontab을 편집할 수 있다. sudo crontab -e 를 하면 root의 crontab을 편집하게 된다.

Timezone 설정

crontab 은 timezone 에 따른 시간으로 움직인다.

sudo timedatectl set-timezone Asia/Seoul  


crontab reload

sudo service cron reload
/etc/init.d/cron reload
sudo systemctl start crond.service

crontab 에서 $ 표시는 escape 가 필요하다

echo $(date '+%F_%T') 는 아래처럼 echo $(date '+\%F_\%T') 로 변경돼야 동작한다.

# echo $(date '+%F_%T')
40 10 * * * echo $(date '+\%F_\%T') > ttt.txt

[컴] Slack 에서 특정 Channel 로 메시지 보내기

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


Slack 에서 특정 Channel 로 메시지 보내기

  1. app creation pgae : app 이름 지정해서 app 을 만든다.
  2. Activate Incoming Webhooks 선택 > On
  3. slack 에서 메시지를 뿌려줄 channel 을 하나 만든다.
  4. "Add New Webhook to Workspace" 클릭 > 채널 선택 > Authorize
  5. 아래 curl 명령어를 실행하면, Hello, World 가 channel 에 보이게 된다.
  6. 이제 원하는 메시지를 아래 처럼 json format 으로 보내면 된다. content-type 은 application/json 으로 해야 한다.

// linux
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' YOUR_WEBHOOK_URL_HERE

// windows
curl -X POST -H "Content-type: application/json" --data "{\"text\":\"Hello, World!\"}" YOUR_WEBHOOK_URL_HERE


References

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

[컴][네트워크] DNS over TLS / DNS over HTTPS

인트라 / 클라우드플레어  / vpn / 우회 / 워닝사이트 / warning / EDNS / Encrypted DNS



only DNS over HTTPS (DoH)

이유는 잘 모르겠지만, 대체로 한번에 DNS query 가 제대로 동작하지 않는 느낌이다. (아마도 응답속도의 문제일 수도 있을 듯 싶다.) 몇번 error 를 뿜어내더라도 계속 시도하면 된다. 그 이후로는 cache 를 사용해서 문제가 없을 듯 싶다.

DNS over TLS (DoT)

접속 Test

https://www.coludflare-dns.com/help : DoH 나 DoT 가 설정됐다면 이 곳에 접속이 가능하다.

Tun2socks 

Test

[컴][웹] AdonisJS migration column 변경

아도니스js / adonisjs db migration / db column add / alter table



AdonisJS migration column 변경

migration file 생성

c:\a\proj>adonis make:migration user_hist
> Choose an action Select table
√ create  database\migrations\1553738938867_user_hist_schema.js

file 변경

'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class UserHistSchema extends Schema {
  up () {
    this.table('user_hists', (table) => {
      // alter table
      table.string('power', 124).notNullable().alter();
    })

    // create
    this.create('trans', (table) => {
      table.increments();
      table.integer('user_id').unsigned().notNullable();
      table.string('type', 50).notNullable().collate('utf8_unicode_ci');

      table.timestamps();

      table.index('user_id');
      
      table.charset = 'utf8';
      table.collation = 'utf8_unicode_ci';

      // table 의 collate 을 utf8_unicode_ci 로 설정하기
      // https://adonisjs.com/docs/4.0/migrations#_executing_arbitrary_code
      this.schedule(async (trx) => {
        // ALTER TABLE `cma_transaction` CONVERT TO CHARACTER SET UTF8 COLLATE utf8_unicode_ci
        await Database.raw('ALTER TABLE `trans` CONVERT TO CHARACTER SET UTF8 COLLATE utf8_unicode_ci').transacting(trx)
        
      })
      
    });
  }

  down () {
    this.table('user_hists', (table) => {
      // reverse alternations
      table.string('power', 60).notNullable().alter();
    })
  }
}

module.exports = UserHistSchema


status 보기

c:\a\proj>adonis migration:status
migration:status 를 이용하면 현재 어떤 schema 까지 적용이 됐는지 확인할 수 있다.

run

아래처럼 실행하면 된다.
c:\a\proj>adonis migration:run
migrate: 1553738938867_user_hist_schema.js
Database migrated successfully in 1.25 s

alter

아래 link 에서 table 의 column 추가 등의 변경사항에 관한 부분을 확인할 수 있다.

knex alter

alter 와 관련된 사항은 위의 link 에서 자세히 확인할 수 있다.

기본적으로 table(t) 에 어떤 함수를 부르면 add 의 의미이다.
table.bigInteger('mycolumn') // mycolumn 이란 이름을 가진 bigInteger type 의 column 을 table 에 추가
그래서 위의 경우는 table 에 'mycolumn' 을 추가 하는 의미이다.

그런데, 뒤에 alter() 를 붙이면, 이전의 값을 없애고, 새로운 값으로 변경하는 것이다.
t.integer('mycolumn').alter();

그래서 위의 경우는 이전의 'mycolumn' 이란 column 의 type 을 'integer' 로 변경하는 것이다. 그리고 type 을 변경하면서, not null constraint 와 default value 도 drop 하게 된다.

in production

Error: Cannot run migrations in production. Use --force flag to continue

    at MigrationRun._validateState (/home/ubuntu/new-funded-backend/node_modules/@adonisjs/lucid/commands/BaseMigration.js:58:13)
    ...

기본적으로 "adonis migration:run --force" 를 하지 않으면 error 가 난다.

References

  1. Adonis Migrations

[컴][웹] firefox 에서 ESNI 사용하기

Intra in firefox / 파폭에서 ESNI 사용 / 암호화 DNS 사용 / 우회하기 / warning / 사이트 우회



firefox 에서 ESNI 사용

  1. 주소창에서 about:config
  2. network.security.esni.enabled: true
  3. network.trr.mode : 2 
    1. '2' 로 했을때 '테스트' 를 했는데, 제대로 되지 않으면, '3' 으로 변경해 보자.
    2. Trusted Recursive Resolver
    3. 이 부분이 DNSSEC 을 결정한다.
      • 0: Off by default
      • 1: Firefox will choose based on which is faster
      • 2: TRR preferred, fall back to DNS on failure
      • 3: TRR only, no DNS fallback
      • 5: TRR completely disabled
  4. network.trr.uri : 
  5. network.trr.bootstrapAddress : 1.1.1.1
    1. network.trr.uri 가 동작을 안하면 이 IP 주소를 사용하게 된다.
  6. network.security.esni.enabled: true
  7. 테스트 해보기 : https://www.cloudflare.com/ssl/encrypted-sni/
    1. 혹시 제대로 동작하지 않으면, firefox 를 restart 해보자.
    2. 그리고 한번에 응답을 하지 않으면 여러번 시도해 보자. 응답시간이 늦어서 제대로 안되는 경우가 있는듯 하다. 여러번 시도해서 되는 경우가 있었다.
      아니면, 기존의 OS의 dns cache 때문일 수도 있을 듯 하다. browser 의 cache 가 아닌 이유는 curl 을 사용해도 같은 반응을 보였다.

References