목록전체보기 (483)
음악, 삶, 개발
많이 온듯한데 많이 온거같지않은 나날들이 지속되고있다. 많이 온건 맞다. 난 분명히 해낸다.
https://www.npmjs.com/package/objc objc NodeJS ↔ Objective-C bridge www.npmjs.com OS 의 clipboard 에 텍스트 복사는 라이브러리도 있고 Node.js 에도 가능하지만, 파일 복사는 불가능하다. 이를 구현하기위해서 하루종일 구글링을하다가 결국 JUCE 의 가장 밑단 코드들까지 뒤져보게되었고, 결국 macOS 의 native api 를 node.js 에서 호출할수없을까라는 고민까지 하게되었다. JUCE 의 DragAndDropContainer 에서 결국 object-c 로 작성된 코드가 가장 밑바닥에 자리하고있었기때문이다. 지금 나는 JUCE 로 개발하고있지않기때문에 Node.js 에서 os 의 native 함수를 호출할수없나 찾아보게..
개발이 후반부으로 가다보면 작지만 더럽게 널부러져있는 코드를 정리하고, 최적화에 집중하게된다. array 와 루프는 js 코드에서 매우 자주쓰이는 형태인데, 루프를 도는 여러 방법들이 존재하지만, forEach 는 느려서 사용하지않고, 대부분 그냥 for loop 를 사용하였다. 가독성은 조금 떨어지지만 가장 빠르기때문이다. 만약 for loop 의 도는 순서가 반대로 바뀌어도 상관없는 경우에만, 아래의 loop 를 쓰면 가장 빠르다. for (let i = array.length; i--; ) 여기서 i-- 만으로 조건이 확인이된다. i 가 0 일 경우 false 로 간주되기때문이다. 주의할점은 일반적인 for loop 와 달리 --i 를 하면 안된다. 벤치마크 : http://jsbench.githu..
https://codepen.io/AlexWarnes/pen/jXYYKL
보통 client 가 server 에 접속시, path 모듈을 이용해 index.html 이 포함된 폴더를 client 하게 넘기게된다. 이렇게 하기위해서는 결국 client 에서 build 를 해놔야하는데, 개발중에는 매번 빌드하는것이 매우 번거러운 일이다. 따라서 개발시에는 Backend 서버와 FrontEnd 서버 (Vite 같은것) 가 동시에 실행된 상황에서, FrontEnd 속 socket.io-client 는 BackEnd 서버로 접속할수있게 해야한다. Vite 같은경우 npm run dev 를 하였을때, 기본적으로 3000 으로 접속하게된다. Backend 서버가 8000 포트를 사용하고, Frontend 서버가 3000 을 사용하고있다고 해보자. /* back_end_server.js */..
https://stackoverflow.com/questions/4502633/how-to-affect-other-elements-when-one-element-is-hovered
이 사이트가 (https://grid.kiwiberry.nz/) 가상 스크롤의 가장 적절한 예제를 보여주고있다. Vue 로 구현되어있지만, 나는 vanilla HTML 에서 구현해보려한다. 위의 사이트를 스크롤하며 콘솔을 열어 확인해보니 대략 아래와 같은 로직을 확인할수있었다. 1. scroll 을 구현할 div 를 먼저 부모 div 로 감싼뒤 overflow: auto 를 설정한다. 2. 이 div 안에 scroll 을 담당할 div 를 넣고, height 를 item 갯수 * itemHeight 로 매우 길게 생성한다. (이게 중요) (item 갯수가 100000개라고 가정하면 50px 이라해도 500백만 px 이 나온다) 3. 이제 이 scroll 할 div 에 첫 부모 container (view..
자신감을 갖자... 거의다 왔다..
앞서 파트3 에서 [dict] 는 global 하게 [mtr] 전체를 업데이트 한다고 했는데, 각 개별 track inlet 으로 [dict] 를 넘길수있는데, 이에 대한 내용이 공식 문서에 나와있지않았고, 일종에 reverse 엔지니어링을 통해 발견하였다. 먼저 [dict] 속 데이터의 구조는 아래와 같다. { "events" : [ { "time" : 0, "message" : "hello", "args" : [1, 2, 3, 4, 5] } ], "length" : 0.0, "loop" : 0, "trackspeed" : 1.0, "type" : "track" /* 반드시!!!!!!! */ } 반드시 type 속성에 "track" 이라고 명시되어야하며, 이게 없다면 에러가 뜬다. 이를 내가 원하는 해..