เครื่องคำนวณเส้นรอบวงที่เปียกสำหรับรูปทรงต่างๆ

คำนวณเส้นรอบวงที่เปียกสำหรับรูปทรงช่องต่างๆ รวมถึงรูปสี่เหลี่ยมคางหมู สี่เหลี่ยม/สี่เหลี่ยมจัตุรัส และท่อกลม สำคัญสำหรับการวิศวกรรมไฮดรอลิกและการประยุกต์ใช้กลศาสตร์ของไหล

เครื่องสร้าง ULID

ULID ที่สร้างขึ้น:

โครงสร้าง ULID


เวลาประทับ (10 ตัวอักษร)

ความสุ่ม (16 ตัวอักษร)
📚

เอกสารประกอบการใช้งาน

ULID Generator

Introduction

ULID (Universally Unique Lexicographically Sortable Identifier) คือ รหัสประจำตัวที่ไม่ซ้ำกันซึ่งรวมเอาเวลาที่แน่นอนเข้ากับข้อมูลสุ่มเพื่อสร้างสตริง 26 ตัวอักษร ULID ถูกออกแบบมาให้เรียงลำดับได้ตามลำดับในขณะที่ยังคงความไม่ซ้ำกันและความสุ่มสูง

Structure of a ULID

ULID ประกอบด้วยสองส่วนหลัก:

  1. Timestamp (10 ตัวอักษร): 10 ตัวอักษรแรกแสดงถึงเวลาในมิลลิวินาทีตั้งแต่ Unix Epoch (1970-01-01)
  2. Randomness (16 ตัวอักษร): 16 ตัวอักษรที่เหลือถูกสร้างขึ้นโดยใช้ข้อมูลสุ่มที่ปลอดภัยทางการเข้ารหัส

สตริง 26 ตัวอักษรที่ได้จะถูกเข้ารหัสโดยใช้อักษรฐาน 32 ของ Crockford (0-9 และ A-Z โดยไม่รวม I, L, O, และ U)

Formula

ULID ถูกสร้างขึ้นโดยใช้ขั้นตอนดังนี้:

  1. สร้าง timestamp ขนาด 48 บิต (มิลลิวินาทีตั้งแต่ Unix Epoch)
  2. สร้างข้อมูลสุ่มขนาด 80 บิต
  3. เข้ารหัสข้อมูล 128 บิตที่รวมกันโดยใช้การเข้ารหัสฐาน 32 ของ Crockford

Calculation

ตัวสร้าง ULID จะทำตามขั้นตอนดังนี้:

  1. รับ timestamp ปัจจุบันในมิลลิวินาที
  2. สร้าง 10 ไบต์สุ่ม (80 บิต) โดยใช้ตัวสร้างหมายเลขสุ่มที่ปลอดภัยทางการเข้ารหัส
  3. รวม timestamp และข้อมูลสุ่มเข้าด้วยกันเป็นจำนวนเต็ม 128 บิต
  4. เข้ารหัสจำนวนเต็ม 128 บิตโดยใช้การเข้ารหัสฐาน 32 ของ Crockford

Use Cases

ULID มีประโยชน์ในหลายสถานการณ์ รวมถึง:

  1. คีย์ฐานข้อมูล: ULID สามารถใช้เป็นรหัสประจำตัวที่ไม่ซ้ำกันสำหรับระเบียนในฐานข้อมูล โดยรับประกันความไม่ซ้ำกันและความสามารถในการเรียงลำดับ
  2. ระบบกระจาย: ในสภาพแวดล้อมที่กระจาย ULID สามารถสร้างได้โดยไม่ต้องประสานงานระหว่างโหนด
  3. การบันทึกและติดตาม: ULID สามารถใช้เพื่อแท็กรายการบันทึกหรือเหตุการณ์ โดยให้รหัสประจำตัวที่สามารถเรียงลำดับได้และไม่ซ้ำกัน
  4. รหัสที่เป็นมิตรกับ URL: ULID ปลอดภัยสำหรับ URL และสามารถใช้ในแอปพลิเคชันเว็บเป็นรหัสประจำตัวใน URL

Alternatives

แม้ว่า ULID จะมีความหลากหลาย แต่ยังมีระบบรหัสประจำตัวที่ไม่ซ้ำกันอื่น ๆ ที่ควรพิจารณา:

  1. UUID (Universally Unique Identifier): รหัสประจำตัวขนาด 128 บิตที่ไม่มีส่วนประกอบของ timestamp
  2. KSUID (K-Sortable Unique IDentifier): คล้ายกับ ULID แต่มีการเข้ารหัส timestamp ที่แตกต่างกัน
  3. Snowflake ID: ระบบการสร้าง ID ที่ไม่ซ้ำกันแบบกระจายของ Twitter ซึ่งรวมถึง timestamp และรหัสของโหนด

History

ULID ถูกนำเสนอในปี 2016 โดย Alizain Feerasta เป็นทางเลือกสำหรับ UUIDs โดยออกแบบมาเพื่อตอบสนองต่อข้อจำกัดบางประการของ UUIDs โดยเฉพาะในด้านความสามารถในการเรียงลำดับและความสามารถในการอ่าน สเปค ULID ยังคงมีเสถียรภาพตั้งแต่การนำเสนอ โดยมีการใช้งานต่าง ๆ ที่มีอยู่ในภาษาการเขียนโปรแกรมต่าง ๆ

Examples

นี่คือตัวอย่างโค้ดในการสร้าง ULID ในภาษาการเขียนโปรแกรมต่าง ๆ:

1// การทำงานใน JavaScript
2function generateULID() {
3  const timestamp = Date.now().toString(36).padStart(10, '0');
4  const randomness = crypto.getRandomValues(new Uint8Array(16))
5    .reduce((acc, byte) => acc + byte.toString(36).padStart(2, '0'), '');
6  return (timestamp + randomness).toUpperCase();
7}
8
9console.log(generateULID());
10

ตัวอย่างเหล่านี้แสดงให้เห็นถึงวิธีการสร้าง ULID ใน JavaScript, Python และ Java คุณสามารถปรับฟังก์ชันเหล่านี้ให้เหมาะสมกับความต้องการเฉพาะของคุณหรือรวมเข้ากับระบบที่ใหญ่ขึ้นที่ต้องการรหัสประจำตัวที่ไม่ซ้ำกัน

References

  1. "ULID Specification." GitHub, https://github.com/ulid/spec. Accessed 2 Aug. 2024.
  2. "Crockford's Base32 Encoding." Base32 Encoding, http://www.crockford.com/base32.html. Accessed 2 Aug. 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Accessed 2 Aug. 2024.
🔗

เครื่องมือที่เกี่ยวข้อง

ค้นพบเครื่องมือเพิ่มเติมที่อาจมีประโยชน์สำหรับการทำงานของคุณ

เครื่องมือสร้าง KSUID สำหรับระบบที่กระจายและฐานข้อมูล

ลองใช้เครื่องมือนี้

เครื่องมือสร้าง ObjectID สำหรับ MongoDB ที่ไม่ซ้ำกัน

ลองใช้เครื่องมือนี้

เครื่องมือสร้าง UUID สำหรับแอปพลิเคชันต่างๆ

ลองใช้เครื่องมือนี้

เครื่องมือสร้างและตรวจสอบ CUIT/CUIL ของอาร์เจนตินา

ลองใช้เครื่องมือนี้

ตัวสร้าง Nano ID ที่ปลอดภัยและไม่ซ้ำกัน

ลองใช้เครื่องมือนี้

เครื่องมือสร้าง CUID ที่ไม่ซ้ำและสามารถขยายได้

ลองใช้เครื่องมือนี้

เครื่องมือสร้างและตรวจสอบ IBAN สำหรับการทดสอบและการตรวจสอบ

ลองใช้เครื่องมือนี้

เครื่องมือสร้างและตรวจสอบ CUIT ของอาร์เจนตินาสำหรับการทดสอบ

ลองใช้เครื่องมือนี้

เครื่องสร้างหมายเลข CPF สำหรับการทดสอบและพัฒนา

ลองใช้เครื่องมือนี้

เครื่องมือสร้างและตรวจสอบ CBU ของอาร์เจนตินา | รหัสธนาคาร

ลองใช้เครื่องมือนี้