Database design 为每个用户提供独特的颜色

Database design 为每个用户提供独特的颜色,database-design,web-applications,colors,chatroom,Database Design,Web Applications,Colors,Chatroom,在我的网络应用程序中,我有一个聊天室。我希望每个用户名的颜色都不同,而不是全部为黑色。实现这一目标的最佳方式是什么?我是否应该在每个用户注册我的应用程序时为他们存储RGB/十六进制代码,并将该字符串作为其记录的一部分放入数据库中?特别使用色调值从HSV/HSL生成颜色。然后转换为RGB 你可能每次都想要尽可能不同的颜色 您可以通过保持颜色范围的队列来实现这一点 如果队列为空,则返回色调0并将对0、360插入队列。 下次需要颜色时,从队列0、360中弹出一个元素,并返回这些值之间的中点:180。然

在我的网络应用程序中,我有一个聊天室。我希望每个用户名的颜色都不同,而不是全部为黑色。实现这一目标的最佳方式是什么?我是否应该在每个用户注册我的应用程序时为他们存储RGB/十六进制代码,并将该字符串作为其记录的一部分放入数据库中?

特别使用色调值从HSV/HSL生成颜色。然后转换为RGB

你可能每次都想要尽可能不同的颜色

您可以通过保持颜色范围的队列来实现这一点

如果队列为空,则返回色调0并将对0、360插入队列。 下次需要颜色时,从队列0、360中弹出一个元素,并返回这些值之间的中点:180。然后将0、180和180、360推入队列

下次需要颜色时,从队列0、180中弹出一个元素,并返回这些值之间的中点:90。然后将0、90和90、180推入队列

下次需要颜色时,从队列180、360中弹出一个元素,并返回这些值之间的中点:270。然后将180、270和270、360推入队列

继续这个过程


您将自动为每个用户提供尽可能宽的可分辨颜色

特别使用色调值从HSV/HSL生成颜色。然后转换为RGB

你可能每次都想要尽可能不同的颜色

您可以通过保持颜色范围的队列来实现这一点

如果队列为空,则返回色调0并将对0、360插入队列。 下次需要颜色时,从队列0、360中弹出一个元素,并返回这些值之间的中点:180。然后将0、180和180、360推入队列

下次需要颜色时,从队列0、180中弹出一个元素,并返回这些值之间的中点:90。然后将0、90和90、180推入队列

下次需要颜色时,从队列180、360中弹出一个元素,并返回这些值之间的中点:270。然后将180、270和270、360推入队列

继续这个过程


您将自动为每个用户提供尽可能宽的可分辨颜色

我会有一个固定的颜色列表,让用户从中选择并在数据库中存储一个索引,1=红色,2=绿色等。这将允许您更改每种颜色的色调,以匹配网站发展过程中的设计


例如,您可能希望红色与徽标的红色匹配;如果您在数据库中将其存储为RGB值,而不仅仅是红色,则更难更改。

我会有一个固定的颜色列表,让用户从中选择并在数据库中存储索引,1=红色,2=绿色等。这将允许您更改每种颜色的阴影,以匹配您的网站的设计,因为它的发展


例如,您可能希望红色与徽标的红色匹配;如果您在数据库中将其存储为RGB值,而不仅仅是红色,则更难更改。

如果您的目标是让用户在聊天室中一目了然,这取决于您的用户群有多大。如果一个聊天室的平均大小是,比如说,10个,但是你的用户群有几千个,那么为每个人都设置一个独特的颜色是行不通的。最终,你会在同一个聊天室里出现同一颜色的不同色调


在这种情况下,只需保留一个明显不同的颜色的简短列表,并在单个聊天室中分配它们。

如果您的目标是让用户在聊天室中一目了然,这取决于您的用户群有多大。如果一个聊天室的平均大小是,比如说,10个,但是你的用户群有几千个,那么为每个人都设置一个独特的颜色是行不通的。最终,你会在同一个聊天室里出现同一颜色的不同色调


在这种情况下,只需保留一个明显不同颜色的简短列表,并在单个聊天室中分配它们。

作为方案的替代方案:


您可以像irssi和其他人一样,使用您选择的屏幕nick函数根据哈希值分配颜色。在这个系统下,刻痕的长度和颜色应该/将是不相关的,因此不同字母、不同屏幕名称和不同颜色的组合应该足以使事物区分开来,但在不同的会话中保持一致。在这个方案中,您可能需要缓存的唯一内容是会话中每个用户名的颜色,因此您不必进行无数次md5调用。这并不能保证每个远离它的用户都有不同的颜色,也许你应该考虑一下你试图通过该规范实现的目的

作为方案的替代方案:

您可以像irssi和其他人一样,只需使用您自己根据哈希值分配颜色
r功能选择屏幕刻痕。在这个系统下,刻痕的长度和颜色应该/将是不相关的,因此不同字母、不同屏幕名称和不同颜色的组合应该足以使事物区分开来,但在不同的会话中保持一致。在这个方案中,您可能需要缓存的唯一内容是会话中每个用户名的颜色,因此您不必进行无数次md5调用。这并不能保证每个远离它的用户都有不同的颜色,也许你应该考虑一下你试图通过该规范实现的目的

这个解决方案限制了用户的选择,并阻止他们选择像白色或亮粉色这样愚蠢的东西。它足够灵活,因此您可以在以后添加其他颜色。该解决方案限制了用户的选择,并阻止他们选择白色或亮粉色等愚蠢的颜色。它足够灵活,因此您可以在以后添加其他颜色