@ihabdevteam/core 0.311.0 → 0.312.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/dist/components.cjs.js +13 -13
- package/dist/hooks.cjs.js +1 -1
- package/dist/i18n.cjs.js +1 -1
- package/dist/ihabdevteam-core.cjs.js +17 -17
- package/dist/ihabdevteam-core.d.ts +1 -1
- package/dist/packages/core/src/components/Popup/LoadTablePopup.js +3 -1
- package/dist/packages/core/src/components/SideNav.js +24 -5
- package/dist/packages/core/src/components/Tooltip/Tooltip.js +16 -1
- package/dist/packages/core/src/components/Word/WordSearchResultBlock.js +14 -9
- package/dist/packages/core/src/context/WordDataProvider.d.ts +1 -1
- package/dist/packages/core/src/context/WordDataProvider.js +13 -1
- package/dist/packages/core/src/version.d.ts +1 -1
- package/dist/packages/core/src/version.js +1 -1
- package/dist/utils.cjs.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,53 @@ All notable changes to this project will be documented in this file.
|
|
|
7
7
|
> 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
|
|
8
8
|
> 제 이야기를 못 찾는다.
|
|
9
9
|
|
|
10
|
+
## 0.312.0
|
|
11
|
+
|
|
12
|
+
사장님 지시로 돌린 최적화 전수 검수(말귀 `docs/OPTIMIZATION_AUDIT_2026-10-10.md`)에서 코어 몫 셋((113)~(115)).
|
|
13
|
+
셋 다 **값이 틀린 것이 아니라 같은 일을 여러 번 하는** 자리다 — 그래서 못이 세는 것도 *빠른가* 가 아니라
|
|
14
|
+
*그 일을 한 번만 하나* 다.
|
|
15
|
+
|
|
16
|
+
### (113) 한국어 글자 견주기는 **콜레이터 하나로** — 30.3ms → 8.1ms
|
|
17
|
+
|
|
18
|
+
`'가'.localeCompare('나', 'ko')` 는 **비교마다 콜레이터를 만든다.** `WordSearchResultBlock` 은 '시작 우선'
|
|
19
|
+
갈래에서만 만들어 둔 콜레이터를 쓰고 **여섯 갈래는 `localeCompare(…, 'ko')`** 였다 — 하필 기본 정렬이
|
|
20
|
+
`ganada` 라 **주된 길이 느린 쪽**이었다(말귀 실측 6,357개: **30.3ms → 8.1ms**).
|
|
21
|
+
|
|
22
|
+
**자리를 세니 일곱이었다** — 말귀가 짚은 여섯에 `LoadTablePopup` 의 이름 정렬 하나가 더 있었다. 그리고
|
|
23
|
+
그 파일에 **콜레이터가 하나 더** 있었다(`utils/textSort` 에 이미 있는데 또 만들고 있었다) — 그것도 걷었다.
|
|
24
|
+
이제 `한글순` 하나다. ISO 날짜·열쇠를 로케일 없이 `localeCompare()` 로 견주는 자리는 **그대로다**(코드포인트
|
|
25
|
+
차례면 맞고 그쪽이 빠르다).
|
|
26
|
+
|
|
27
|
+
### (114) `WordDataProvider` 의 값을 **기억해 둔다**
|
|
28
|
+
|
|
29
|
+
객체 리터럴을 바로 넘겨 **그릴 때마다 새 객체**였다 — 값이 하나도 안 바뀌어도 쓰는 쪽 **열한 자리가 다**
|
|
30
|
+
다시 그렸다. 이 프로바이더는 앱 전체를 감싼다.
|
|
31
|
+
|
|
32
|
+
> **앱에서는 흠이 아닌 것이 코어에서는 흠이다.** 앱은 React 컴파일러가 이런 자리를 메워 주지만
|
|
33
|
+
> **코어 묶음에는 컴파일러가 안 닿는다**(말귀 실측: `dist` 에 `_c(` 0건). 소비자가 어떤 빌드를 쓰는지
|
|
34
|
+
> 코어는 모르니 **코어는 손으로 적는다.**
|
|
35
|
+
|
|
36
|
+
### (115) 굴림마다 하는 일을 **틀에 한 번**으로 — 다만 닫는 일은 안 미룬다
|
|
37
|
+
|
|
38
|
+
`SideNav` 가 `scroll` 마다 바로 `setState`(값이 같아도 새 객체라 늘 다시 그렸다), `Tooltip` 이 **문서 전체의
|
|
39
|
+
굴림을 capture 로** 받아 `computePosition`(레이아웃을 읽는다)을 매번 돌렸다. 둘 다 rAF 로 모으고, `SideNav`
|
|
40
|
+
는 **값이 그대로면 상태를 안 건드린다.**
|
|
41
|
+
|
|
42
|
+
**닫는 길은 안 미뤘다.** 고정 사각형으로 띄운 툴팁은 굴리면 앵커에서 떨어지므로 그 자리에서 닫아야 한다 —
|
|
43
|
+
한 틀 미루면 **허공에 한 틀 더** 남는다. 미루는 것은 *자리* 뿐이고, 못이 그 가름을 **둘 다** 센다.
|
|
44
|
+
|
|
45
|
+
### 못 셋 중 **둘이 처음엔 아무것도 안 지켰다**
|
|
46
|
+
|
|
47
|
+
- (113) 의 인자 뽑개를 `/\.localeCompare\(([^)]*)\)/` 로 썼다. `label(b)` 처럼 인자 안에 괄호가 있으면
|
|
48
|
+
`[^)]*` 가 **첫 `)` 에서 멈춰** 쉼표를 못 본다 — 옛 꼴로 되돌려 돌렸더니 **조용했다.** 괄호를 세게 고쳤고,
|
|
49
|
+
**뽑개 제 시험**을 함께 두었다.
|
|
50
|
+
- (115) 의 `SideNav` 못은 rAF **예약 수**가 `<= 1` 인지만 봤다. 안 모으는 꼴은 예약을 **아예 안 하므로 0** 이고
|
|
51
|
+
그것도 `<= 1` 이라 통과했다. **한 일**(레이아웃 읽은 횟수)을 세게 고쳤다 — 모았으면 굴림 열 번에 0, 안
|
|
52
|
+
모았으면 10.
|
|
53
|
+
|
|
54
|
+
> **못은 깨뜨려 보기 전까지 못이 아니다** — 오늘 이 자리에서 세 번째다. 그리고 두 번 다 *세는 수가
|
|
55
|
+
> 한 일이 아니라 거드는 일*이었다(예약 수 · 첫 괄호까지의 글).
|
|
56
|
+
|
|
10
57
|
## 0.311.0
|
|
11
58
|
|
|
12
59
|
사용자 지시(2026-10-10): *"오버라이드하거나 반복적으로 주입하는 건 코어에 요청해서 공통으로."* 그 결로
|