From: Artem Y. <ne...@gm...> - 2008-08-24 19:58:35
|
Yuri Takhteyev wrote: >> Maybe we should use some random hashes, like >> `md5.new(str(random.random())).hexdigest()` ? >> I don't think that users will be handle with placeholders, in case if >> everything works fine. >> > > We could do that, though it might be better to avoid any actual > randomness by using a fixed seed: > > def reset_placeholders(seed = DEFAULT_SEED) : > self.seed = seed > random.seed(seed) > self.html_placeholder_prefix = STX+"%x" % (random.random()*1000000000) > self.html_placeholder = self.html_placeholder.prefix + "%x" + ETX > ... > > and later generate HTML placeholders with > > random.seed(self.seed + i) > self.html_placeholder % (random.random()*1000000000) > > Or something more like: > > def get_random_token(n = 10) > return "".join(["abcdefghijklmnopqrstuvwxyx"[int(random.random()*26)] > for i in range(n)]) > > def reset_placeholders(seed = DEFAULT_SEED) : > random.seed(seed) > self.html_placeholder_prefix = STX + get_random_token() > self.html_placeholder = self.html_placeholder_prefix + "%s" + ETX > > - yuri > > I agree, using seed is better idea. What about something like this: RND_SEED = 789654 def getRandomToken(n=10, seed=RND_SEED): random.seed(seed) return "".join([chr(random.randint(97, 122)) for i in range(n)]) STX = u'\u0002' # Use STX ("Start of text") for start-of-placeholder ETX = u'\u0003' # Use ETX ("End of text") for end-of-placeholder HTML_PLACEHOLDER_PREFIX = STX + getRandomToken() HTML_PLACEHOLDER = HTML_PLACEHOLDER_PREFIX + "%s" + ETX INLINE_PLACEHOLDER_PREFIX = STX + getRandomToken() INLINE_PLACEHOLDER = INLINE_PLACEHOLDER_PREFIX + "%s" + ETX or maybe wrap it in class, as you did. |