🛠️

Whiz Tools

Build • Create • Innovate

حاسبة المحيط المبتل لأشكال القنوات المختلفة

احسب المحيط المبتل لأشكال القنوات المختلفة بما في ذلك شبه المنحرف، المستطيلات/المربعات، والأنابيب الدائرية. ضروري لتطبيقات الهندسة الهيدروليكية وميكانيكا السوائل.

مولد ULID

ULID المُولد:

هيكل ULID


الطابع الزمني (10 أحرف)

العشوائية (16 حرف)
📚

الوثائق

مولد ULID

مقدمة

ULID (معرف فريد عالميًا قابل للفرز بشكل معجمي) هو معرف فريد يجمع بين الطابع الزمني وبيانات عشوائية لإنشاء سلسلة مكونة من 26 حرفًا. تم تصميم ULIDs لتكون قابلة للفرز معجميًا مع الحفاظ على درجة عالية من الفريدة والعشوائية.

هيكل ULID

يتكون ULID من جزئين رئيسيين:

  1. الطابع الزمني (10 أحرف): تمثل أول 10 أحرف الوقت بالمللي ثانية منذ بداية Unix (1970-01-01).
  2. العشوائية (16 حرفًا): يتم توليد الـ 16 حرفًا المتبقية باستخدام بيانات عشوائية آمنة من الناحية التشفيرية.

السلسلة الناتجة المكونة من 26 حرفًا مشفرة باستخدام أبجدية Crockford's base32 (0-9 و A-Z، باستثناء I و L و O و U).

الصيغة

يتم توليد ULID باستخدام الخطوات التالية:

  1. توليد طابع زمني بعمق 48 بت (مللي ثانية منذ بداية Unix).
  2. توليد 80 بت من البيانات العشوائية الآمنة من الناحية التشفيرية.
  3. ترميز الـ 128 بت المدمجة باستخدام ترميز Crockford's base32.

الحساب

يؤدي مولد ULID الخطوات التالية:

  1. الحصول على الطابع الزمني الحالي بالمللي ثانية.
  2. توليد 10 بايت عشوائي (80 بت) باستخدام مولد أرقام عشوائية آمنة من الناحية التشفيرية.
  3. دمج الطابع الزمني وبيانات العشوائية في عدد صحيح بعمق 128 بت.
  4. ترميز عدد الـ 128 بت باستخدام ترميز Crockford's base32.

حالات الاستخدام

تعتبر ULIDs مفيدة في سيناريوهات متنوعة، بما في ذلك:

  1. مفاتيح قاعدة البيانات: يمكن استخدام ULIDs كمعرفات فريدة لسجلات قاعدة البيانات، مما يضمن الفريدة والقابلية للفرز.
  2. الأنظمة الموزعة: في البيئات الموزعة، يمكن توليد ULIDs دون تنسيق بين العقد.
  3. تسجيل وتتبع: يمكن استخدام ULIDs لتوسيم إدخالات السجل أو تتبع الأحداث، مما يوفر معرفًا فريدًا وقابلًا للفرز.
  4. معرفات صديقة لعنوان URL: ULIDs آمنة للاستخدام في عنوان URL ويمكن استخدامها في تطبيقات الويب كمعرفات في عناوين URL.

البدائل

بينما تعتبر ULIDs متعددة الاستخدامات، هناك أنظمة معرف فريدة أخرى يجب مراعاتها:

  1. UUID (معرف فريد عالميًا): معرف بعمق 128 بت لا يتضمن مكون الطابع الزمني.
  2. KSUID (معرف فريد قابل للفرز K): مشابه لـ ULID ولكن مع ترميز طابع زمني مختلف.
  3. Snowflake ID: نظام توليد معرفات فريدة موزعة من تويتر، والذي يتضمن طابعًا زمنيًا ومعرف عامل.

التاريخ

تم تقديم ULIDs في عام 2016 من قبل عليزين فيراستا كبديل لـ UUIDs. تم تصميمها لمعالجة بعض القيود في UUIDs، خاصة من حيث القابلية للفرز والقراءة. ظل معيار ULID مستقرًا منذ تقديمه، مع توفر تنفيذات مختلفة في لغات برمجة مختلفة.

أمثلة

إليك بعض أمثلة الشيفرة لتوليد ULIDs في لغات برمجة مختلفة:

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

توضح هذه الأمثلة كيفية توليد ULIDs في JavaScript وPython وJava. يمكنك تكييف هذه الوظائف وفقًا لاحتياجاتك المحددة أو دمجها في أنظمة أكبر تتطلب معرفات فريدة.

المراجع

  1. "مواصفة ULID." GitHub، https://github.com/ulid/spec. تم الوصول إليه في 2 أغسطس 2024.
  2. "ترميز Crockford's Base32." ترميز Base32، http://www.crockford.com/base32.html. تم الوصول إليه في 2 أغسطس 2024.
  3. "UUID مقابل ULID." Stack Overflow، https://stackoverflow.com/questions/54222235/uuid-vs-ulid. تم الوصول إليه في 2 أغسطس 2024.