<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: yuxuan jiang</title>
    <description>The latest articles on DEV Community by yuxuan jiang (@yuxuan_jiang_50486eabe8be).</description>
    <link>https://dev.to/yuxuan_jiang_50486eabe8be</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3661377%2F0208a2ee-22ad-4715-ae0d-bf3ad9ed7112.png</url>
      <title>DEV Community: yuxuan jiang</title>
      <link>https://dev.to/yuxuan_jiang_50486eabe8be</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yuxuan_jiang_50486eabe8be"/>
    <language>en</language>
    <item>
      <title>Why Japanese Character Counting is a Nightmare for Developers (and How to Solve It)</title>
      <dc:creator>yuxuan jiang</dc:creator>
      <pubDate>Fri, 20 Feb 2026 01:24:08 +0000</pubDate>
      <link>https://dev.to/yuxuan_jiang_50486eabe8be/why-japanese-character-counting-is-a-nightmare-for-developers-and-how-to-solve-it-3348</link>
      <guid>https://dev.to/yuxuan_jiang_50486eabe8be/why-japanese-character-counting-is-a-nightmare-for-developers-and-how-to-solve-it-3348</guid>
      <description>&lt;p&gt;As developers, we often think of character counting as a simple &lt;code&gt;string.length&lt;/code&gt; operation. However, when your application hits the Japanese market, this "simple" task becomes a complex maze of encodings, visual standards, and legacy system requirements.&lt;/p&gt;

&lt;p&gt;If you are working on localization (l10n), internationalization (i18n), or SEO for the Japanese market, here is what you need to know.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Encoding Trap: UTF-8 vs. Shift-JIS
&lt;/h2&gt;

&lt;p&gt;While modern web standards favor UTF-8 (where a Japanese character is typically 3 bytes), many Japanese enterprise systems, government databases, and legacy banking platforms still use &lt;strong&gt;Shift-JIS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In Shift-JIS, full-width characters are exactly 2 bytes, and half-width characters are 1 byte. If your database has a strict byte limit based on Shift-JIS, a standard JavaScript character count will fail you, leading to data truncation or system errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Full-Width vs. Half-Width (Zen-kaku vs. Han-kaku)
&lt;/h2&gt;

&lt;p&gt;Japanese text often mixes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full-width Kanji and Kana&lt;/strong&gt; (Visual 1 char, 2-3 bytes)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Half-width Katakana&lt;/strong&gt; (Visual 1 char, but 1-2 bytes depending on encoding)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alphanumeric characters&lt;/strong&gt; (Can be either full-width or half-width)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Counting these correctly for platforms like &lt;strong&gt;X (Twitter)&lt;/strong&gt; — which uses a weighted counting system — requires a specialized algorithm that standard libraries often lack.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The "Genko Yochi" Standard
&lt;/h2&gt;

&lt;p&gt;In Japan, professional writing (novels, essays, academic papers) is still measured by "Genko Yochi" — physical manuscript sheets of 400 characters (20x20). Digital content creators often need to convert their digital word count into this paper-based metric to meet publishing requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep Dive and Technical Guide
&lt;/h2&gt;

&lt;p&gt;I have recently published a &lt;strong&gt;comprehensive technical deep-dive&lt;/strong&gt; into these nuances, covering everything from Shift-JIS byte calculation to "Kanji density" analysis. &lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Read the full guide here:&lt;/strong&gt; &lt;a href="https://telegra.ph/%E5%AE%8C%E5%85%A8%E4%BF%9D%E5%AD%98%E7%89%88%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E6%96%87%E5%AD%97%E6%95%B0%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E5%AE%8C%E5%85%A8%E3%82%AC%E3%82%A4%E3%83%89%E3%83%97%E3%83%AD%E3%81%8C%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%B9%E3%81%8D%E5%9F%B7%E7%AD%86%E8%A6%8F%E6%A0%BC%E3%81%A8%E6%9C%80%E6%96%B0%E3%83%84%E3%83%BC%E3%83%AB%E6%B4%BB%E7%94%A8%E8%A1%93-02-20" rel="noopener noreferrer"&gt;【完全保存版】日本語の文字数カウント完全ガイド：プロが知っておくべき執筆規格と最新ツール活用術&lt;/a&gt; &lt;br&gt;
&lt;em&gt;(Note: The guide is in Japanese as it is intended for localized development and content teams).&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution for Professional Workflow
&lt;/h2&gt;

&lt;p&gt;If you need a reliable tool that handles all these edge cases — including real-time Shift-JIS byte calculation, manuscript paper conversion, and SEO character limit checks — you should use &lt;a href="https://mojisucount.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;mojisucount.com&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is a specialized &lt;a href="https://mojisucount.com/" rel="noopener noreferrer"&gt;Japanese character counter and text analysis platform&lt;/a&gt; that provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time byte estimation&lt;/strong&gt; (UTF-8, Shift-JIS, EUC-JP)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kanji/Kana distribution ratios&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SNS-specific limits&lt;/strong&gt; for X, Instagram, and LINE.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-first processing&lt;/strong&gt; (all counts happen in-browser).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Handling Japanese text shouldn't be a guessing game. By using the right metrics and tools, you can ensure your localized content is professional, technically sound, and SEO-optimized.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;How do you handle multi-byte character limits in your applications? Let’s discuss in the comments!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>japanese</category>
      <category>localization</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop Uploading Sensitive PDFs: How I Built a Client-Side Redactor with Next.js</title>
      <dc:creator>yuxuan jiang</dc:creator>
      <pubDate>Tue, 27 Jan 2026 13:51:40 +0000</pubDate>
      <link>https://dev.to/yuxuan_jiang_50486eabe8be/stop-uploading-sensitive-pdfs-how-i-built-a-client-side-redactor-with-nextjs-4o3e</link>
      <guid>https://dev.to/yuxuan_jiang_50486eabe8be/stop-uploading-sensitive-pdfs-how-i-built-a-client-side-redactor-with-nextjs-4o3e</guid>
      <description>&lt;p&gt;We've all been there. You need to send a bank statement to a landlord, or an ID copy to a recruiter. But there's sensitive data on it—your SSN, your account balance, or your home address.&lt;/p&gt;

&lt;p&gt;You Google "free pdf editor", upload your file, draw a black box, and download it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wait.&lt;/strong&gt; 🛑&lt;/p&gt;

&lt;p&gt;Did you just upload your unredacted tax return to an anonymous server? Do they delete it? Do they analyze it? You have no idea.&lt;/p&gt;

&lt;p&gt;As a developer, this frustrated me. The web is powerful enough to handle image processing locally. Why are we still sending files to the cloud just to draw a black rectangle?&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;&lt;a href="https://secureredact.tech" rel="noopener noreferrer"&gt;SecureRedact&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: "Fake" Redaction and Server Uploads
&lt;/h2&gt;

&lt;p&gt;There are two main issues with existing tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Server-Side Risks:&lt;/strong&gt; Most free tools upload your file to process it. I recently wrote a detailed breakdown on why this architecture is obsolete in my &lt;strong&gt;&lt;a href="https://sites.google.com/view/secureredact/home" rel="noopener noreferrer"&gt;analysis of document security standards&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Cosmetic Redaction:&lt;/strong&gt; Many tools just put a black layer over the text. The underlying data is still there and can be copy-pasted.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Solution: 100% Client-Side Processing
&lt;/h2&gt;

&lt;p&gt;I wanted to build a tool that lives in the browser but acts like desktop software.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Stack:&lt;/strong&gt; Next.js (for the framework) + Web Workers (for non-blocking processing).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy:&lt;/strong&gt; The file never leaves the user's device. No API calls to a backend storage service.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Sanitization:&lt;/strong&gt; The tool flattens the document into images, ensuring the redacted text is physically destroyed, not just hidden.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are interested in the non-technical side of how to properly sanitize documents to prevent identity theft, I published a &lt;strong&gt;&lt;a href="https://telegra.ph/The-Ultimate-Guide-to-Securely-Redacting-PDFs-in-2026-Protect-Your-Identity-Without-Software-Installation-01-27" rel="noopener noreferrer"&gt;comprehensive guide here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works Under the Hood
&lt;/h2&gt;

&lt;p&gt;The core challenge was performance. Rendering large PDFs in the browser can freeze the UI.&lt;/p&gt;

&lt;p&gt;To solve this, the application offloads the rendering and image manipulation tasks to a &lt;strong&gt;Web Worker&lt;/strong&gt;. This keeps the main thread free, ensuring that the UI remains responsive even when you are scrubbing a 50MB contract.&lt;/p&gt;

&lt;p&gt;You can try the &lt;strong&gt;&lt;a href="https://secureredact.tech/editor" rel="noopener noreferrer"&gt;online PDF redaction tool&lt;/a&gt;&lt;/strong&gt; yourself to see how fast the local processing is compared to cloud uploads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source?
&lt;/h2&gt;

&lt;p&gt;Security requires trust. You shouldn't trust a tool that claims to be "secure" if you can't see the code.&lt;/p&gt;

&lt;p&gt;By making the project open source, anyone can inspect the network tab and verify that &lt;strong&gt;zero requests&lt;/strong&gt; are sending file data out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Privacy shouldn't be a premium feature. It should be the default.&lt;/p&gt;

&lt;p&gt;I'd love for you to check out &lt;strong&gt;&lt;a href="https://secureredact.tech" rel="noopener noreferrer"&gt;SecureRedact&lt;/a&gt;&lt;/strong&gt; and let me know what you think. Does it load fast enough? Is the UI intuitive?&lt;/p&gt;

&lt;p&gt;Let's stop uploading our passports to random servers in 2026. 🚀&lt;/p&gt;

&lt;h1&gt;
  
  
  opensource #privacy #webperf #react
&lt;/h1&gt;

</description>
      <category>opensource</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>I built a Free Privacy-First Signature Generator (No Sign-Up required)</title>
      <dc:creator>yuxuan jiang</dc:creator>
      <pubDate>Sun, 14 Dec 2025 14:04:48 +0000</pubDate>
      <link>https://dev.to/yuxuan_jiang_50486eabe8be/i-built-a-free-privacy-first-signature-generator-no-sign-up-required-1pfh</link>
      <guid>https://dev.to/yuxuan_jiang_50486eabe8be/i-built-a-free-privacy-first-signature-generator-no-sign-up-required-1pfh</guid>
      <description>&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I recently needed to sign a digital contract but was frustrated by tools asking me to create an account or pay a subscription just to download a PNG.&lt;/p&gt;

&lt;p&gt;So, I built my own minimal tool: &lt;strong&gt;&lt;a href="https://signaturesketch.tech" rel="noopener noreferrer"&gt;Signature Sketch&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 What makes it different?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;No Sign-Up:&lt;/strong&gt; Just open the link and draw.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy First:&lt;/strong&gt; It runs locally in your browser (Canvas). Your signature is never uploaded to a server.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Transparent PNG:&lt;/strong&gt; Automatically removes the background so you can paste it into Word or Google Docs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Mobile Friendly:&lt;/strong&gt; Works great on touch screens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a simple tool, but it does one thing well.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Try it here: &lt;a href="https://signaturesketch.tech" rel="noopener noreferrer"&gt;https://signaturesketch.tech&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me know if you have any feedback!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
