מחשבון להיקף רטוב עבור צורות תעלה שונות
חשב את ההיקף הרטוב עבור צורות תעלה שונות כולל טרפזים, מלבנים/ריבועים וצינורות עגולים. חיוני להנדסה הידראולית ויישומי מכניקת נוזלים.
גנרטור ULID
ULID שנוצר:
מבנה ULID
חותמת זמן (10 תווים)
אקראיות (16 תווים)
תיעוד
ULID Generator
Introduction
ULID (מזהה ייחודי אוניברסלי מסודר לקסיקוגרפית) הוא מזהה ייחודי שמשלב חותמת זמן עם נתונים אקראיים כדי ליצור מיתר של 26 תווים. ULIDs תוכננו להיות מסודרים לקסיקוגרפית תוך שמירה על רמה גבוהה של ייחודיות ואקראיות.
Structure of a ULID
ULID מורכב משני חלקים עיקריים:
- חותמת זמן (10 תווים): 10 התווים הראשונים מייצגים את הזמן במילישניות מאז תקופת יוניקס (1970-01-01).
- אקראיות (16 תווים): 16 התווים הנותרים נוצרו בעזרת נתונים אקראיים מאובטחים מבחינה קריפטוגרפית.
המיתר בן 26 התווים המתקבל מקודד באמצעות אלפבית הבסיס 32 של קרוקפורד (0-9 ו-A-Z, למעט I, L, O ו-U).
Formula
ULID נוצר באמצעות הצעדים הבאים:
- הפקת חותמת זמן של 48 סיביות (מילישניות מאז תקופת יוניקס).
- הפקת 80 סיביות של נתונים אקראיים מאובטחים מבחינה קריפטוגרפית.
- קידוד 128 הסיביות המשולבות באמצעות קידוד הבסיס 32 של קרוקפורד.
Calculation
גנרטור ה-ULID מבצע את הצעדים הבאים:
- קבלת חותמת הזמן הנוכחית במילישניות.
- הפקת 10 בתים אקראיים (80 סיביות) באמצעות גנרטור מספרים אקראיים מאובטח מבחינה קריפטוגרפית.
- שילוב חותמת הזמן ונתוני האקראיות לאינטגרל של 128 סיביות.
- קידוד האינטגרל של 128 הסיביות באמצעות קידוד הבסיס 32 של קרוקפורד.
Use Cases
ULIDs שימושיים במגוון תרחישים, כולל:
- מפתחות בסיס נתונים: ULIDs יכולים לשמש כמזהים ייחודיים לרשומות בבסיס נתונים, תוך הבטחת ייחודיות וסדר.
- מערכות מפוזרות: בסביבות מפוזרות, ניתן לייצר ULIDs מבלי צורך בתיאום בין צמתים.
- יומן ומעקב: ULIDs יכולים לשמש לתיוג רשומות יומן או מעקב אחרי אירועים, תוך מתן מזהה ייחודי ומסודר.
- מזהים ידידותיים ל-URL: ULIDs בטוחים לשימוש ב-URL וניתן להשתמש בהם באפליקציות אינטרנט כמזהים ב-URL.
Alternatives
בעוד ש-ULIDs הם רב-תכליתיים, ישנם מערכות מזהים ייחודיים אחרות לשקול:
- UUID (מזהה ייחודי אוניברסלי): מזהה של 128 סיביות שאינו כולל רכיב חותמת זמן.
- KSUID (מזהה ייחודי מסודר K): דומה ל-ULID אך עם קידוד חותמת זמן שונה.
- מזהה Snowflake: מערכת ייצור מזהים ייחודיים מפוזרת של טוויטר, הכוללת חותמת זמן ומזהה עובד.
History
ULIDs הוצגו בשנת 2016 על ידי אליזין פיירסטה כאפשרות חלופית ל-UUIDs. הם תוכננו להתמודד עם כמה מגבלות של UUIDs, במיוחד מבחינת סדר וקריאות. המפרט של ULID נשאר יציב מאז הצגתו, עם יישומים שונים זמינים בשפות תכנות שונות.
Examples
הנה כמה דוגמאות קוד ליצירת 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
1## יישום ב-Python
2import time
3import secrets
4import base64
5
6def generate_ulid():
7 timestamp = int(time.time() * 1000).to_bytes(6, byteorder="big")
8 randomness = secrets.token_bytes(10)
9 return base64.b32encode(timestamp + randomness).decode("ascii").lower()
10
11print(generate_ulid())
12
1// יישום ב-Java
2import java.security.SecureRandom;
3import java.time.Instant;
4
5public class ULIDGenerator {
6 private static final SecureRandom random = new SecureRandom();
7 private static final char[] ENCODING_CHARS = "0123456789ABCDEFGHJKMNPQRSTVWXYZ".toCharArray();
8
9 public static String generateULID() {
10 long timestamp = Instant.now().toEpochMilli();
11 byte[] randomness = new byte[10];
12 random.nextBytes(randomness);
13
14 StringBuilder result = new StringBuilder();
15 // קידוד חותמת הזמן
16 for (int i = 9; i >= 0; i--) {
17 result.append(ENCODING_CHARS[(int) (timestamp % 32)]);
18 timestamp /= 32;
19 }
20 // קידוד אקראיות
21 for (byte b : randomness) {
22 result.append(ENCODING_CHARS[b & 31]);
23 }
24 return result.toString();
25 }
26
27 public static void main(String[] args) {
28 System.out.println(generateULID());
29 }
30}
31
דוגמאות אלו מדגימות כיצד לייצר ULIDs ב-JavaScript, Python ו-Java. ניתן להתאים את הפונקציות הללו לצרכים הספציפיים שלך או לשלב אותן במערכות גדולות יותר שדורשות מזהים ייחודיים.
References
- "מפרט ULID." GitHub, https://github.com/ulid/spec. גישה 2 אוגוסט 2024.
- "קידוד בסיס 32 של קרוקפורד." קידוד בסיס 32, http://www.crockford.com/base32.html. גישה 2 אוגוסט 2024.
- "UUID מול ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. גישה 2 אוגוסט 2024.
משוב
לחץ על הפיצוץ משוב כדי להתחיל לתת משוב על כלי זה
כלים קשורים
גלה עוד כלים שעשויים להיות שימושיים עבור זרימת העבודה שלך