YouTubeåç»IDãã©ã®ããã«æ©èœãããçåã«æã£ãããšã¯ãããŸããïŒ
ããªãã¯ãã§ã«çããç¥ã£ãŠãã/èŠã€ãããããããŸããããStack Overflowã«é¢ããè°è«ã瀺ããããã«ãå€ãã®äººã
ã¯ãã®æè¡ã誀解ããŠããŸãã æ°ããããšãåŠã¶ããšã«èå³ããããªããç«ãžããããã
IDæ§é
ãŸããYouTubeåç»IDãšã¯äœããæãåºããŸãããã
IDã¯11æåã§ãïŒä»¥åã¯9æåã§ããïŒã
æ§æïŒ
- 倧æåã®ã©ãã³æå
[AZ]
-26æåã - å°æåã®ã©ãã³æå
[az]
æåã - æ°å
[0-9]
-10æåã - ããã·ã¥ãšã¢ã³ããŒã¹ã³ã¢
[-_]
-2æåã
åèš64æåã
å€ãã®Base64ïŒ RFC 2045ã»ã¯ã·ã§ã³6.8ïŒã§ããç¥ãããŠãããã®ãšã®é¡äŒŒæ§ã«æ¢ã«æ°ä»ããŠãããããããŸããããããã¯å¶ç¶ã§ã¯ãããŸããã Base64æšæºã®ã¿ããããã·ã¥ãšã¢ã³ããŒã¹ã³ã¢ã§ã¯ãªãããã©ã¹ãšã¹ã©ãã·ã¥[+/]
ãè¿œå æåãšããŠäœ¿çšããŸãã ãã©ã¹ãšã¹ã©ãã·ã¥ã¯URLã§äœ¿çšããããã«äºçŽãããŠãããURLã§IDã䜿çšããéã®åé¡ãåé¿ããããã«ãYouTubeã¯ããããããå®å
šãªãã®ã«çœ®ãæããŸããã ãã ãããã£ã©ã¯ã¿ãŒã䜿çšããããšãã§ããŸãã詳现ã«ã€ããŠã¯åŸã§èª¬æããŸãã
ãªããããå¿
èŠã§ãã
å¥åŠãªããšã«ãã»ãšãã©ã®ãŠãŒã¶ãŒãšéçºè
ã¯ãIDã培åºçã«æ€çŽ¢ããããšã§ãã¹ãŠã®ãµã€ãã³ã³ãã³ããããŠã³ããŒãã§ããã°ã©ããŒããä¿è·ããããã«ããã®ãããªIDãå¿
èŠã§ãããšèª€ã£ãŠä¿¡ããŠããŸãã
ãããã£ãŠãå€ãã®äººã¯ãã®ãããªIDãã»ãã¥ãªãã£ã·ã¹ãã ãšããŠçå£ã«èããå¢åæ°å€èå¥åã®è€éãªããã·ã¥ã¢ã«ãŽãªãºã ãèãåºããã©ã€ãã©ãªãäœæããããããä¿é²ããŸãã
ãã ããããã¯ããã·ã¥ãããæ°åã§ã¯ãªããåãªãæååã§ãã ããã«ãå¢åæååã§ã¯ãªãã UUIDãšã®é¡æšã«ãã£ãŠã©ã³ãã ã«çæãããå€ã¯ãèããã³ã³ãã¯ãã§ãã
ããã¯ãå¢åèå¥åãåžžã«äœ¿çšãããã®ããŒã¿ããŒã¹ã«äŸåããŠãã人ã«ãšã£ãŠã¯çè§£ãé£ããå ŽåããããŸãã çæãããèå¥åã«ã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«èå¥åã«å¯Ÿããç¬èªã®ç®çãé·æãšçæããããŸãã
忣ã·ã¹ãã çæèå¥å
åããŠã忣ã·ã¹ãã ã§çæãããèå¥åã«çŽé¢ããŸãã
å¢åèå¥åã®åé¡ã¯ãããŒã¿ããŒã¹ãããããäœæããããšã§ãã ããŒã¿ã®äžè²«æ§ãç¶æããã«ã¯ãããããçæãã1ã€ã®ãã¹ã¿ãŒããŒã¿ããŒã¹ãå¿
èŠã§ãã ããã«ãããè² è·ãå¢å ããã·ã£ãŒãã£ã³ã°ãå°é£ã«ãªããŸãã
äžéšã®äººã
ã¯ãIDã®çæã®ã¿ãæ±ãå¥åã®ããŒã¿ããŒã¹ãŸãã¯ãµãŒãã¹ãäœæããããšã«ããããã®åé¡ã解決ããŸãã ãããããµãŒããŒãå°ççã«åæ£ãããŠå°åãæ¥ç¶ããå¿
èŠãããå Žåãäºæ
ã¯è€éã«ãªããŸãã
解決çã¯ãããŒã«ã«IDãç¶æããã¡ã€ã³ãµãŒããŒãšå®æçã«åæããŠãã·ã¹ãã å
šäœã®ãã¹ã¹ã«ãŒIDãåä¿¡ããããšã§ãã ã€ãŸããå°åãµãŒããŒã§ã¯ãããŒã«ã«IDãšãšã³ãããŒãšã³ãã®2ã€ã®IDããããŸãã
ãã®ãããªåé¡ã解決ããããã«ãUUIDãªã©ã®çæãããèå¥åãçºæãããŸããã 倿°ã®çµã¿åããããããããèå¥åã®ç«¶åã®å¯èœæ§ã¯éåžžã«äœããªããŸãã ãããã£ãŠãã°ããŒãã«IDã®çæãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ã¿ã³ã¹ã«ä»»ããããšãã§ããŸãã
DDDãšèå¥å
ãã¡ã€ã³é§åèšèšïŒDDDïŒã®æŠå¿µã¯ã Eric EvansãšVaughn Vernonã®æ¬ã«è©³ãã説æãããŠããŸãã DDDã®äžè¬çãªèãæ¹ã¯ãç§ãã¡ã®äž»é¡åéã«çŠç¹ãåœãŠãããšãã€ãŸããçŸå®äžçã«ã§ããã ãè¿ãã·ã¹ãã ãèšèšããããšãã顿ã«åž°çããŸãã ããã§ãDDDã«ãããèå¥åã®åœ¹å²ã«ã€ããŠã話ããããšæããŸãã
DDDã¢ãããŒãã§ã¯ãèå¥åãªãã§ãšã³ãã£ãã£ãäœæããããšã¯ã§ããŸããã ãšã³ãã£ãã£ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãåæåãããšããèå¥åã¯æ¢ã«ãã®äžã«ããã¯ãã§ãã ã€ãŸããäœæããããšã³ãã£ãã£ã®èå¥åãã³ã³ã¹ãã©ã¯ã¿ã§æž¡ããããã¡ã€ã³ã¬ãã«ã®ãµãŒãã¹ãæž¡ããŠèå¥åãååŸãããããšã³ãã£ãã£èªäœã«ãã£ãŠåœ¢æãããèªç¶ãªèå¥åã§ããå¿
èŠããããŸãã
ãšã³ãã£ãã£ã®äœææã«ãã¡ã€ã³ã€ãã³ããã¹ããŒããå Žåã¯ãèå¥åãå¿
èŠã«ãªãå ŽåããããŸãã ã€ãã³ãã«èå¥åããªãå Žåããªã¹ããŒã¯ãšã³ãã£ãã£ã®èå¥ã«åé¡ãããå¯èœæ§ããããŸãã
åæã«ãæ¿å
¥ããå¢åããŒãããŒã¿ããŒã¹ã§äœ¿çšãããŸãã ããŒã¿ããŒã¹ã«ããŒã¿ãæžã蟌ããŸã§ããšã³ãã£ãã£ã®èå¥åãååŸã§ããŸããã äžäžèŽãåŸãããŸãã IDããªããããšã³ãã£ãã£ãäœæã§ããŸããããŸããããŒã¿ããŒã¹ã«ãšã³ãã£ãã£ãæžã蟌ãå¿
èŠããããããããŒã¿ããŒã¹ããIDãååŸã§ããŸããã
ãã®åé¡ã解決ããã«ã¯ããŸããŸãªæ¹æ³ããããŸãã ãããã®1ã€ã¯ã©ã³ãã ã«çæãããèå¥åã§ãããããã«ã€ããŠã¯çŸåšè©±ããŠããŸãã
çæ
çæãããèå¥åã«ãæ¬ ç¹ããããŸãã ããããªãã§ã
æãããªæ¬ ç¹ã¯ãèå¥åã®çæã«ãããæéãšãè¡çª/ç«¶åèå¥åã®å¯èœæ§ã§ãã ç«¶åã®å¯èœæ§ã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã
IDè¡çªç¢ºç
çµã¿åããã®ã³ãŒã¹ãèŠããŠãçµã¿åããã®æ°ãæšå®ããŸãããã ç¹°ãè¿ãã®ããé
眮åŒãå¿
èŠã§ãã
ãŠã€ã
UUIDã®å Žåãçµã¿åããã®æ°ã¯ããã£ãŠããŸãããæ¯èŒã®ããã«ããããèšç®ããŸãã
UUIDã®åœ¢åŒã¯550e8400-e29b-41d4-a716-446655440000
ã§ãé·ãã¯32æåããåºåãæåïŒ -
ïŒãé€ãããã®ã§ã16鲿°ã§æ§æãããŠããŸãã ããã«ããã16 32ãŸãã¯2 128ã®çµã¿åãããåŸãããŸãã ããã¯ãããããããŸãã
UUIDã«ã¯å€ãã®åªããæ©èœããããå€ãã®ãŠãŒã¶ãŒãæ£åžžã«äœ¿çšããŠããŸãã å人çã«ã¯ãéåžžã«é·ããããŒã¿ããŒã¹å
ã§å€ãã®ã¹ããŒã¹ãå æããURLã§äœ¿çšããããšã¯å°é£ã§ãããæ°ã«ããŸãããã奜ãã§ã¯ãããŸãã ã
YouTube ID
次ã«ãUUIDãšYouTubeãããªIDãæ¯èŒããŠãçµã¿åããã®æ°ãèšç®ããŸãã
åã«ç¢ºèªããããã«ãYouTubeåç»IDã¯64æåã§æ§æããã11æåã®é·ããæã£ãŠããããã64 11ãŸãã¯2 66ã«ãªããŸãã ãã®æ°åã¯ç¢ºãã«UUIDãããæããã«å°ããã§ãããããã§ãããªã倧ãããšæããŸãã
73 786 976 294 838 206 464
å°ãªããšãäœããã®æ¹æ³ã§ãã®æ°ãèªèããããã«ã11æåã®ãã¹ãŠã®å¯èœãªèå¥åå€ãååŸãã ããç§ããšã«èå¥åãäœæããã«ã¯2, 339幎ããããšæ³åããŠãã ããã
ãŸããUUIDãšåãæ°ã®çµã¿åãããååŸããã«ã¯ã21æåã®é·ããã€ãŸãUUIDïŒ37æåïŒã®ã»ãŒ2åã®é·ãã®2,128 = 64,221è¡ãå¿
èŠã§ãã UUIDãšåãé·ãã®èå¥åãååŸãããšãUUIDã®2,128ã«å¯ŸããŠ64 37 = 2,222ãååŸããŸãã
ãã®ã¢ãããŒãã®æãéèŠãªå©ç¹ã¯ãæååã®é·ãã倿Žããããšã§çµã¿åããã®æ°ãèªåã§å¶åŸ¡ã§ããããšã§ãã
ãã倧ããªæåã»ããã䜿çšããããšã«ãããèå¥åãããã«ã³ã³ãã¯ãã«ããããšãã§ãããšæšæž¬ããããšã¯é£ãããããŸããã ããšãã°ã128æåã®ã»ãããååŸããŠãã18æåã®èå¥åãååŸãããšã128 18 = 2,126ã®çµã¿åãããåŸãããããã¯UUIDã«å¹æµããŸãã ããããããã¯ã»ãã®æ°äººã®ãã£ã©ã¯ã¿ãŒãæãã ãã§ãããããã®åé¡ã远å ãããŸãã 䜿çšããæåæ°ãå¢ãããšãäºçŽæåã䜿çšããåé¡ããæåãšã³ã³ãŒãã®äžäžèŽã®åé¡ã«çŽé¢ããŸãã ãããã£ãŠã64æåã«å¶éããèå¥åã®é·ãã ãã§åçããããšããå§ãããŸãã
è¡çªã®ç¢ºçãèšç®ããã«ã¯ã Wikipediaã®UUIDã«é¢ããèšäºã®åŒã䜿çšããŸãã
圌女ã¯
ã©ãã§
Nã¯å¯èœãªãªãã·ã§ã³ã®æ°ã§ãã
nã¯ãçæãããããŒã®æ°ã§ãã
YouTubeã®ãããª11æåã®èå¥åãååŸãããšã N = 64 11 = 2 66ãåŸãããããã«å¿ããŠæ¬¡ã®ããã«ãªããŸãã
pïŒ2 25 ïŒâ7.62 * 10 -6
pïŒ2 30 ïŒâ0.0077
pïŒ2 36 ïŒâ0.9999
ããã«ãããæåã®æ°çŸäžã®èå¥åãäžæã§ããããšãä¿èšŒãããŸãã ãã®ãããªçãèå¥åã«ãšã£ãŠã¯æªãçµæã§ã¯ãããŸããã
IDçæ
ãããŠæåŸã«ã³ãŒãã IDã¯åºæ¬çã«çæãããŸãã
class Base64UID { private const CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-'; public static function generate(int $length): string { $uid = ''; while ($length-- > 0) { $uid .= self::CHARS[random_int(0, 63)]; } return $uid; } }
äœ¿çšæ³ïŒ
$uid = Base64UID::generate(11);
DDD
ããã§ã¯ãDDDã¢ãããŒãã䜿çšãããšãã«ããµããžã§ã¯ããšãªã¢ã§ã©ã®ããã«äœ¿çšã§ããããèããŠã¿ãŸãããã Articleã®æ¬è³ªã§æ°ããIDã䜿çšããããšããŸãã æåã«ãèšäºIDã®ValueObjectãäœæããŠãèšäºã®IDãäžæã«èå¥ããŸãã
class ArticleId { private $id; public function __construct(string $id) { $this->id = $id; } public function id(): string { return $this->id; } public function __toString(): string { return $this->id; } }
次ã«ãIDãååŸããããã®ãã¡ã€ã³ãµãŒãã¹ã€ã³ã¿ãŒãã§ã€ã¹ãäœæããŸãã IDã®çæãã«ãã»ã«åããå¿
èŠã«å¿ããŠããããåœè£
ãããµãŒãã¹ãå¿
èŠã§ãã
interface ArticleIdGenerator { public function nextIdentity(): ArticleId }
æ°ããã©ã³ãã èå¥åãžã§ãã¬ãŒã¿ãŒã䜿çšããŠãç¹å®ã®èšäºIDãžã§ãã¬ãŒã¿ãŒãµãŒãã¹ã®å®è£
ãäœæããŸãã
class Base64ArticleIdGenerator implements ArticleIdGenerator { public function nextIdentity(): ArticleId { return new ArticleId(Base64UID::generate(11)); } }
ããã§ãèå¥åãæã€Articleãšã³ãã£ãã£ãäœæã§ããŸãã
class Article { private $id; public function __construct(ArticleIdGenerator $generator) { $this->id = $generator->nextIdentity(); } public function id(): ArticleId { return $this->id; } }
䜿çšäŸïŒ
$generator = new Base64ArticleIdGenerator(); $article = new Article($generator); echo $article->id();
ãããã«
ãã®ããã«åçŽãªæ¹æ³ã§ãé«åºŠãªäžææ§ãæã€ç®¡çãããçæãããèå¥åãååŸããŸããã çæãããèå¥åããããžã§ã¯ãã§äœ¿çšãããã©ããã¯ããªã次第ã§ããããããã®å©ç¹ã¯æããã§ãã
çæãããèå¥åã䜿çšããŸããïŒ ã³ã¡ã³ãã§æããŠãã ããã
PSïŒèªåã§æžãã®ãé¢åãªäººã®ããã«ãPHP 5.3+çšã®æ¢è£œã®ã©ã€ãã©ãªããããŸã
PSSïŒèšç®ã«ã¯ã ãã®ãªã³ã©ã€ã³èšç®æ©ããå§ãããŸãã
ã¢ããããŒã02-02-2018
ãã®èšäºã®ç®çã¯ãçæãããèå¥åã®åçãé·æãçæã瀺ãããšã§ãããUUIDã®ã¡ãªãããæãªãããšããBase64ãæé©ãªãœãªã¥ãŒã·ã§ã³ãšããŠææ¡ããããšããããŸããã
ã¢ããããŒã02/05/2018
ã³ã¡ã³ãã§è°è«ãèŠçŽããã
medvedeviaã¯ãUUIDãbase64ã«ããã±ãŒãžåã§ããããšã«éåžžã«æ£ç¢ºã«æ°ä»ããŸããã ããã¯ãããUUIDã®å Žåã22æåã®é·ãã®æååãåºåãããŸãããããã¯ãã§ã«ã¯ããã«ã³ã³ãã¯ãã§ãã
$uuid = '550e8400-e29b-41d4-a716-446655440000'; $uuid = str_replace('-', '', $uuid); $uuid = hex2bin($uuid); $uuid = base64_encode($uuid); $uuid = str_replace('=', '', $uuid);
ãã ããUUIDã¯ãŸã é·ãã sand14ã§èª¬æãããŠããä»ã®å€ãã®æ¬ é¥ããããŸãã
ãŸãã¯ã MikalaiR ã«ãã£ãŠææ¡ãããã¹ããŒãã¬ãŒã¯IDãæ€èšã㊠ãã ãã ã Twitterããã³Instagramã§æ£åžžã«äœ¿çšãããŠããŸãã
ã¹ããŒãã¬ãŒã¯IDã¯64ãããã®æ°å€ã§ãïŒ
- 笊å·ïŒ1ãããïŒ-ã¿ã€ã ã¹ã¿ã³ãå¢çãæ±ºå®ããããã«å¿
èŠã§ãã
- ã¿ã€ã ã¹ã¿ã³ãïŒ41ãããïŒ-ãã€ã¯ãç§åäœã®çæIDã®æ¥ä»ã
- ãžã§ãã¬ãŒã¿ãŒïŒ10ãããïŒ-IDãçæãããµãŒãã¹ã®IDã éåžž2-ããŒã¿ã»ã³ã¿ãŒIDïŒ5ãããïŒãšãã·ã³IDïŒ5ãããïŒã«åãããŠããŸãã
- ã·ãŒã±ã³ã¹ïŒ12ãããïŒã¯å¢åçªå·ã§ãã
çæãããIDã®ã¿ã€ã ã¹ã¿ã³ããæåŸã«çæãããIDã®ã¿ã€ã ã¹ã¿ã³ããšäžèŽãããšãã·ãŒã±ã³ã¹ãã€ã³ã¯ãªã¡ã³ããããŸãã ããŒã«ã«ã¬ãã«ã§ã®ç«¶åã«å¯Ÿããäžçš®ã®ä¿è·ã
ããªãåçŽãªã¹ããŒã ãåŸãããŸãã Snowflake IDã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã
- UUIDãããã³ã³ãã¯ãã
- ã¿ã€ã ã¹ã¿ã³ãã®äœ¿çšã«ãããIDãåžžã«å¢å ããŠããŸãã
- è¡çªã«å¯Ÿããé«åºŠãªä¿è·ã
- ä¹±æ°ãžã§ãã¬ãŒã¿ãŒã䜿çšããŸãã
- æåã§æ§æå¯èœãUUIDãããæ©ãSnowflake IDãçæã§ããŸãã
次ã«ãã¹ããŒãã¬ãŒã¯ã®æ¬ ç¹ã«ã€ããŠèª¬æããŸãã
æåã®åé¡ã¯ãIDçæã¢ããªã±ãŒã·ã§ã³ãåããµãŒããŒäžã§ç°ãªãããã»ã¹ã§å®è¡ã§ããããšã§ãã ãã®çµæãåããµãŒããŒå
ã§æ¢ã«è¡çªãèµ·ããå¯èœæ§ããããŸãã ããã€ãã®çç±ã«ãããIDãçæãããšãã«ããã»ã¹IDã䜿çšã§ããŸããã
解決çã¯ãidã®çæããã€ã¯ããµãŒãã¹ã«è»¢éããããã¢ããªã±ãŒã·ã§ã³ã§åããã»ã¹ãéå§ãããã¹ã¿ãŒããã»ã¹ã«ãã¢ã«ãŽãªãºã ã§æ¢ã«äœ¿çšã§ããåããã»ã¹ã«idã匷å¶çã«æž¡ãããšã§ãã
2çªç®ã®åé¡ã¯ããããžã§ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢ããæ
å ±ã®é瀺ã§ãã ãµãŒããŒã®æ°ãšããŒã¿ã»ã³ã¿ãŒã®æ°ã
3çªç®ã®åé¡ã¯ãã¿ã€ã ã¹ã¿ã³ãã®äœ¿çšã§ãã æéã¯ç¡éã§ãããããããã¬ãŒã ã¯ãŒã¯ã«å
¥ããããšã§ã倱æã«çµãããŸãã
ãã§ã«ã³ã¡ã³ãã§æžããããã«ãã¿ã€ã ã¹ã¿ã³ãã®é·ãã¯41ãããã§ã2039幎ã«ã¯ãã§ã«42ãããã«ãªããŸãã ã¹ããŒã¹ã®ãªãŒããŒãããŒãçºçããidã®çæããŒãããå§ãŸããŸããã€ãŸãã69幎åãšåãidãåãåããŸãã ã¿ã€ã ã¹ã¿ã³ãã®é·ãã43ãããïŒ2248ïŒã®å ŽåãæŽæ°ãªãŒããŒãããŒãçºçããŸãã
Twitterã¯ããã®åé¡ãç¡èŠããå ŽåããããŸããããã¯ãTwitterãé·ãéãã€ãŒããä¿åããªãå¯èœæ§ãããããã§ããããã¹ãŠã®äººã«é©çšã§ããããã§ã¯ãããŸããã
ããã€ãã®è§£æ±ºçããããŸãã MikalaiRã èšã£ãããã«ãæéã®éå§æ¥ããããšãã°2000-01-01æä»£ã®åãã«å€æŽã§ããŸããããã«ãããé¿ããããªããã®ãããã«30幎é
ããŸãã
devaloneã¯ãããé©åãªè§£æ±ºçãææ¡ã ãŸãã ã ããããåé
åžããã¿ã€ã ã¹ã¿ã³ãã®äžã®ã¹ããŒã¹ããããšãã°æå€§45ããããŸã§å¢ããããšãã§ããŸããããã«ããã転æç¹ã3084ãŸã§å»¶æããã4199ã§ã®ã¿æŽæ°ãªãŒããŒãããŒãçºçããŸãã
ã¹ããŒãã¬ãŒã¯IDçæã®äŸïŒ
$last_time = 0; $datacenter = 1; $machine = 1; $sequence = 0; $offset = 0;
ããã«YouââTube IDã衚瀺ãããŸããã衚瀺ãããŸããã è€æ°ã®IDãçæãããšããããã¯ã»ãŒåãã§ãããæåŸã®4æåã¯éåžžäžå®ã§ããããšãããããŸãã
oT5+eFUCEAE oT5+eU8CEAE oT5+ekkCEAE
æ¯èŒã®ããã«ãYouTubeã«ã¢ããããŒããããåç»ãæ°ç§ã®å·®ã§èå¥ããŸãã
fxEbFmSBuIM et34RK4qLy8 3oypcgF-LJQ
ãã€ããªè¡šçŸã®èå¥åãæ¯èŒããããšã«ãã ãSnowflake idãYouTubeãããã¯ããã«é¡äŒŒããŠããããšã確èªããããšãã§ããŸã
1010000100111110011111100111100001010101000000100001000000000000 // oT5+eFUCEAE 1010000100111110011111100111100101001111000000100001000000000000 // oT5+eU8CEAE 1010000100111110011111100111101001001001000000100001000000000000 // oT5+ekkCEAE 1010000100111110011111100111100001000001000000100001000000000000 //
0111111100010001000110110001011001100100100000011011100010000011 // fxEbFmSBuIM 0111101011011101111110000100010010101110001010100010111100101111 // et34RK4qLy8 0000000011011110100011001010100101110010000000010100101100100101 // 3oypcgF-LJQ 0000000000010000000010000000000000100000000000000000100000000001 //
YouTubeã¯ãã©ã³ãã ãŸãã¯ç䌌ã©ã³ãã ã«çæãããå€ã䜿çšãããšèããŠããŸãã
ã¢ããããŒã02/21/2018
èšäºã«èšèŒãããŠããèå¥åãçæããæ¹æ³ã¯äžäŸã§ãã ç¹å®ã®äŸã«çŠç¹ãåãããªãã§ãã ããã
æ¯èŒã®ããã«ãèå¥åã®çæã®ããã€ãã®è¿œå äŸã瀺ããŠãæ¯èŒãã¹ããã®ãããããã«ããŸãã ãããã®ãã¹ãŠã¯æå·ã§å®å
šãªä¹±æ°ãžã§ãã¬ãŒã¿ã䜿çšããŸãã
ã©ã³ãã æåçæ
$length = 11; $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-'; $uid = ''; while ($length-- > 0) { $uid .= $chars[random_int(0, 63)]; } var_dump($uid);
é·æ
- ã¢ã€ãã³ãã£ãã£ã®é·ãã®å¶åŸ¡
- èå¥åã®é·ãã«å¶éã¯ãããŸãã
- æåã»ããå
ã®æåèªäœã倿Žããããšãå¯èœã§ã
- ã»ããå
ã®æåæ°ã倿Žããããšãå¯èœã§ã
random_int()
ãžã®è€æ°ã®åŒã³åºãã¯ãããŒã«ã«è¡çªã®å¯èœæ§ãæžãããŸã
çæ
random_int()
ãžã®è€æ°ã®åŒã³åºãã¯ãããã©ãŒãã³ã¹ã«æªåœ±é¿ãåãŒããŸã
ãã€ãçæID
$length = 64; $uid = ''; while ($length-- > 0) { $uid .= random_int(0, 1); } $uid = bindec($uid); $uid = dechex($uid); $uid = hex2bin($uid); $uid = base64_encode($uid); $uid = str_replace(['=', '+', '/'], ['', '-', '_'], $uid); var_dump($uid);
é·æ
- ã¢ã€ãã³ãã£ãã£ã®é·ãã®å¶åŸ¡
- åã®ããŒãžã§ã³ãšæ¯èŒããŠ
random_int()
ãããé »ç¹ã«åŒã³åºããšãããŒã«ã«è¡çªã®å¯èœæ§ãäœããªããŸãã
çæ
- æåã»ããå
ã®æåèªäœã倿Žããæ©èœã倱ã£ã
- ã»ããå
ã®æåæ°ã倿Žããæ©èœã倱ã£ã
- èå¥åã¯64ãããã«å¶éãããŠããŸã
random_int()
ãžã®è€æ°ã®åŒã³åºãã¯ãããã©ãŒãã³ã¹ã«æªåœ±é¿ãåãŒããŸã
ä¹±æ°ãšã¿ã€ã ã¹ã¿ã³ã
$time = floor(microtime(true) * 1000); $prefix = random_int(0, 0b111111111); $suffix = random_int(0, 0b111111111); $uid = 1 << (9 + 45 + 9); $uid |= $prefix << (9 + 45); $uid |= $time << 9; $uid |= $suffix; $uid = dechex($uid); $uid = hex2bin($uid); $uid = base64_encode($uid); $uid = str_replace(['=', '+', '/'], ['', '-', '_'], $uid); var_dump($uid);
é·æ
- ã¿ã€ã ã¹ã¿ã³ãã䜿çšããŠè¡çªã®å¯èœæ§ãæžãããŸã
çæ
- æåã»ããå
ã®æåèªäœã倿Žããæ©èœã倱ã£ã
- ã»ããå
ã®æåæ°ã倿Žããæ©èœã倱ã£ã
- èå¥åã¯64ãããã«å¶éãããŠããŸã
- èå¥åã®é·ãã管çããã®ãé£ãã
- Snowflakeãšåæ§ã«ãèå¥åã¯äŒŒãŠããŸã
ä¹±æ°ãšæµ®åã¿ã€ã ã¹ã¿ã³ã
$time = floor(microtime(true) * 1000); $prefix_length = random_int(1, 18); $prefix = random_int(0, bindec(str_repeat('1', $prefix_length))); $suffix_length = 18 - $prefix_length; $suffix = random_int(0, bindec(str_repeat('1', $suffix_length))); $uid = 1 << ($suffix_length + 45 + $prefix_length); $uid |= $prefix << ($suffix_length + 45); $uid |= $time << $suffix_length; $uid |= $suffix; $uid = dechex($uid); $uid = hex2bin($uid); $uid = base64_encode($uid); $uid = str_replace(['=', '+', '/'], ['', '-', '_'], $uid); var_dump($uid);
é·æ
- åãã¿ã€ã ã¹ã¿ã³ãã䜿çšããŠããå Žåã§ããIDã¯åã®äŸã»ã©é¡äŒŒããŠããŸããã
çæ
- æåã»ããå
ã®æåèªäœã倿Žããæ©èœã倱ã£ã
- ã»ããå
ã®æåæ°ã倿Žããæ©èœã倱ã£ã
- èå¥åã¯64ãããã«å¶éãããŠããŸã
- èå¥åã®é·ãã管çããã®ãé£ãã
- ã¿ã€ã ã¹ã¿ã³ãã®äžè²«æ§ã®ãªãäœçœ®ã®ãããè¡çªã¯äŸç¶ãšããŠå¯èœã§ã
ã©ã³ãã ãã€ãçæ
$uid = random_bytes(8); $uid = base64_encode($uid); $uid = str_replace(['=', '+', '/'], ['', '-', '_'], $uid); var_dump($uid);
é·æ
- ãã¹ãŠã®æçãã€æãç°¡åãªãœãªã¥ãŒã·ã§ã³
- èå¥åã®é·ãã«å¶éã¯ãããŸãã
çæ
- æåã»ããå
ã®æåèªäœã倿Žããæ©èœã倱ã£ã
- ã»ããå
ã®æåæ°ã倿Žããæ©èœã倱ã£ã
- æçµçãªèå¥åã®é·ãã®ç®¡çã¯è€éã§ã
PSïŒäœããèŠéããå Žåã¯ãã³ã¡ã³ããä¿®æ£ããŠãã ããã