$('.js-user-link').each(function() { console.log({ userId: $(this).data('user-id'), username: $(this).data('username'), fullName: $(this).find('.gl-avatar-labeled-label').text().trim(), email: $(this).find('.gl-avatar-labeled-sublabel').text().trim(), avatar: $(this).find('img').attr('src'), isAdmin: $(this).find('.badge').text().includes('Admin') }); });
about billson
Gathering & Sharing
2026-06-12
javascript to collect keycloak user list
$('.js-user-link').each(function() { console.log({ userId: $(this).data('user-id'), username: $(this).data('username'), fullName: $(this).find('.gl-avatar-labeled-label').text().trim(), email: $(this).find('.gl-avatar-labeled-sublabel').text().trim(), avatar: $(this).find('img').attr('src'), isAdmin: $(this).find('.badge').text().includes('Admin') }); });
2026-03-25
繁體中文=正體字,那简体呢?
这是一个非常敏锐的问题!在语言学和政治文化语境中,它们确实有不同的称呼。
如果说繁体中文常被称为「正体字」,那么简体中文在不同的语境下也有几种常见的称呼:
1. 规范汉字 (Standardized Chinese Characters)
这是中国大陆官方最正式的称呼。自1950年代推行简化字以来,官方将其定义为「规范」的写法,意指在法律、教育和公文中使用的一套标准化文字。
2. 简化字 (Simplified Characters)
这是最准确的称呼。因为「简体」指的是一种字体的风格(笔画少),而「简化字」特指中国大陆通过《汉字简化方案》正式推行的那套字表。
3. 简体字 (Simplified Chinese)
这是大众口语中最普遍的称呼,也是在全球化软件(如手机语言设置)中最常看到的词汇。
词汇背后的微妙差异
关于这两个词的叫法,往往反映了不同的侧重点:
正体 vs. 简体: 这种叫法带有一种「正统与否」的对比。支持称之为「正体」的人认为繁体字承载了更多的文化基因和造字逻辑。
繁体 vs. 简体: 这种叫法比较中立,仅仅是从**笔画多寡(繁复与简略)**的角度来进行物理描述。
小知识:
其实在古代就有「简体字」的存在(称为俗体字或手写体),但我们现在所说的「简体中文」,主要是指 20 世纪中叶以后经由官方系统性整理并推行的版本。
您是想了解更多关于这两个系统在字体结构上的差异,还是想看看某个名字在不同系统下的写法?
2026-01-12
Eclipse - Subclipse 4.3.4 - 2026
Cannot complete the install because of a conflicting dependency.Software being installed: Subclipse Integration for Mylyn (Optional) 4.2.0.1 (org.tigris.subversion.subclipse.mylyn.feature.feature.group 4.2.0.1)Software currently installed: Mylyn Context Connector: Eclipse IDE 4.7.0.v20250326-1000 (org.eclipse.mylyn.ide.feature.feature.group 4.7.0.v20250326-1000)Only one of the following can be installed at once:Mylyn Team UI 4.7.0.v20250326-1000 (org.eclipse.mylyn.team.ui 4.7.0.v20250326-1000)Mylyn Team UI 4.0.0.v20230804-1109 (org.eclipse.mylyn.team.ui 4.0.0.v20230804-1109)Mylyn Team UI 3.24.0.v20170629-2230 (org.eclipse.mylyn.team.ui 3.24.0.v20170629-2230)Mylyn Team UI 4.9.0.v20251121-0621 (org.eclipse.mylyn.team.ui 4.9.0.v20251121-0621)Cannot satisfy dependency:From: Mylyn Context Connector: Eclipse IDE 4.7.0.v20250326-1000 (org.eclipse.mylyn.ide.feature.feature.group 4.7.0.v20250326-1000)To: org.eclipse.equinox.p2.iu; org.eclipse.mylyn.team.feature.feature.group [4.7.0,4.8.0), filter=(!(org.eclipse.equinox.p2.exclude.import=true))Cannot satisfy dependency:From: Mylyn Context Connector: Team Support 4.7.0.v20250326-1000 (org.eclipse.mylyn.team.feature.feature.group 4.7.0.v20250326-1000)To: org.eclipse.equinox.p2.iu; org.eclipse.mylyn.team.ui [4.7.0.v20250326-1000,4.7.0.v20250326-1000]Cannot satisfy dependency:From: Subclipse Integration for Mylyn 3.x 4.2.0.1 (org.tigris.subversion.subclipse.mylyn 4.2.0.1)To: osgi.bundle; org.eclipse.mylyn.team.ui [3.0.0,4.2.0)Cannot satisfy dependency:From: Subclipse Integration for Mylyn (Optional) 4.2.0.1 (org.tigris.subversion.subclipse.mylyn.feature.feature.group 4.2.0.1)To: org.eclipse.equinox.p2.iu; org.tigris.subversion.subclipse.mylyn [4.2.0.1,4.2.0.1]
xxx - missed out 1 of the screenshot...
Restart eclipse to complete the installation.
2025-12-31
svn ignore resources
"C:\Program Files\TortoiseSVN\bin\svn.exe" propset svn:global-ignores "target bin .*" .
for /d %i in (*) do (if /i NOT "%i"==".project" "C:\Program Files\TortoiseSVN\bin\svn.exe" propset svn:ignore "target bin .*" "%i")
"C:\Program Files\TortoiseSVN\bin\svn.exe" cleanup .
2025-12-16
LHDN MyInvoice Error - Validation Error - After added jasperreports 7.0.3
For Error:
400 Bad Request on POST request for "https://preprod-api.myinvois.hasil.gov.my/api/v1.0/documentsubmissions": "{<EOL> "error": {<EOL> "code": "ValidationError",<EOL> "message": "JSON is not valid",<EOL> "target": "submission",<EOL> "details": [<EOL> {<EOL> "code": "ValidationError",<EOL> "target": "submission",<EOL> "message": "JSON is not valid"<EOL> }<EOL> ]<EOL> }<EOL>}"
after added jasperreports
LHDN MyInvoice - preprod.myinvois.hasil.gov.my
LHDN MyInvoice Error - Validation Error - Business activity description is required
LHDN MyInvoice Error
2025-11-11
Recommended NVM for Windows Versions
Gemini:
| Node.js Major Version | Angular Version Range | Recommended NVM for Windows Version | Rationale (Confirmed Bug Fixes/Workarounds) |
| Node 18, 20, 22, 24 | Angular v15 - v20 | Latest Stable Release (e.g., v1.2.2) | Best for current LTS versions. Includes fixes for modern download servers (Cloudflare) and new features. |
| Node 12, 14, 16 | Angular v8 - v14 | v1.1.12 | CRITICAL for EOL versions. This specific version avoids the bug in NVM v1.2.0+ that causes the "cannot find the file specified" error when attempting to install old bundled npm versions (due to an undetected URL formatting issue in Node versions below 18.0.0). |
2025-10-29
Angular SSR (working with version 18)
Perfect! Let’s map out Angular Material & CDK services/components and classify them for SSR safety. This will clarify why your current mocks are necessary.
SSR Safety Map for Angular Material / CDK
| Service / Component | Server-Safe? | Notes / SSR Issue | Recommendation |
|---|---|---|---|
| MatDialog | ❌ Not safe | Calls Overlay.create(), which touches document. |
Mock with MockMatDialog |
| MatSnackBar | ❌ Not safe | Similar to Dialog, uses Overlay internally. | Mock with MockMatSnackBar |
| Overlay (CDK) | ❌ Not safe | Core DOM service for popups/portals. Always crashes on SSR. | Must mock (MockOverlay) |
| MatBottomSheet | ❌ Not safe | Uses Overlay under the hood. | Mock (MockMatBottomSheet) |
| MatTooltip | ⚠️ Usually safe | Mostly attaches to host element lazily, but Overlay internally may be used. |
Optional mock for default options, safe to just provide MAT_TOOLTIP_DEFAULT_OPTIONS |
| MatMenu | ⚠️ Usually safe | Uses Overlay internally. Will crash if opened on server. | Guard .open() calls or mock Overlay |
| MatSelect | ⚠️ Usually safe | Overlay for dropdown panel, crash if server tries to render panel. | Mock Overlay or lazy browser-only usage |
| MatAutocomplete | ⚠️ Usually safe | Overlay for dropdown panel. | Same as MatSelect |
| MatTable | ✅ Safe | Purely DOM table rendering. | No mock needed |
| MatPaginator / MatSort | ✅ Safe | Only logic, no Overlay/DOM issues | No mock needed |
| MatFormField / MatInput | ✅ Safe | Basic input rendering | No mock needed |
| MatCheckbox / MatRadio / MatSlideToggle | ✅ Safe | No Overlay, purely DOM | No mock needed |
| MatStepper | ✅ Safe | Pure DOM | No mock needed |
| CDK DragDrop | ⚠️ Conditional | Needs document for coordinates if used |
Guard with isPlatformBrowser |
Summary
-
Must Mock: Dialog, SnackBar, Overlay, BottomSheet
-
Optional / Conditional: Tooltip, Menu, Select, Autocomplete, DragDrop (only if used on server)
-
Safe: Form controls, tables, steppers, checkboxes, radios, inputs
Why Angular doesn’t provide this out-of-the-box
Angular Material assumes browser usage. Server rendering is secondary, so Angular provides no default SSR-safe mocks for Overlay or related services. You must provide them yourself—or guard usage.
If you want, I can enhance your SSR mocks even further so they cover tooltips, menus, selects, and autocomplete safely, without breaking SSR.
Do you want me to do that?