我知道使用户代理提示更加模糊的部分目的是为了使浏览器指纹识别更加困难。
我自己的(Windows 桌面)Chrome 发送标头:
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
sec-ch-ua: "Chromium";v="86", "\"Not\\A;Brand";v="99", "Google Chrome";v="86"
sec-ch-ua-mobile: ?0
Run Code Online (Sandbox Code Playgroud)
我不明白的是:
\"和\\A;里面的字符串?我唯一的猜测是,这应该以某种方式与解析器混淆(就像 CSS 中的反 IE 黑客),但这似乎是一个相当奇怪的目的——而 IIRC,\A就是钟形字符。user-agent具有特定版本号的完整标头,这应该如何实现用户代理提示歧义?user-agent字符串是 Chrome 特有的。它是否有来自其他浏览器的某种嵌入式组件?这是出于研究目的http://cssfingerprint.com
请考虑以下代码:
<style>
div.csshistory a { display: none; color: #00ff00;}
div.csshistory a:visited { display: inline; color: #ff0000;}
</style>
<div id="batch" class="csshistory">
<a id="1" href="http://foo.com">anything you want here</a>
<a id="2" href="http://bar.com">anything you want here</a>
[etc * ~2000]
</div>
Run Code Online (Sandbox Code Playgroud)
我的目标是检测foo是否已使用:visited样式呈现.
我想检测是否在没有直接查看$('1').getComputedStyle(或在Internet Explorer中currentStyle)或该元素上的任何其他直接方法的情况下访问foo.com .
这样做的目的是绕过潜在的浏览器限制,以防止直接检查访问链接的样式.
例如,也许你可以在<a>标签中放置一个子元素,或者直接检查文本的样式; 任何不直接或不直接依赖的方法$('1').anything都是可以接受的.做一些聪明的孩子或父母可能是必要的.
请注意,只有这一点而言,该方案是,浏览器会骗JavaScript中的所有属性<a>元素(而不是其他),而且它只会呈现color:在:visited.因此,依赖于例如文本大小或background-image不符合此要求的方法.
我想提高目前刮削方法的速度.
大部分时间(至少使用Firefox中的jQuery方法)花费在上面document.body.appendChild(batch),因此找到改进该调用的方法可能是最有效的.
有关当前速度测试结果,请参见http://cssfingerprint.com/about和http://cssfingerprint.com/results …
我想要一组mimetype图标与我的文件上传一起显示,以显示在用户的文件列表等中.
它应该是:
什么是一个很好的包装?
我正在处理政府来源(FEC,州选民数据库等)的数据.它的格式不一致,这会以各种令人愉快的方式破坏我的CSV解析器.
它是外部采购和权威的.我必须解析它,我不能重新输入,在输入时验证等.就是这样; 我不控制输入.
属性:
Foo \xAB bar)"foo",123,"bar")或不带引号(foo,123,bar).我还没有遇到任何在给定行(即"foo",123,bar)中混合的地方,但它可能在那里.我正在使用Ruby FasterCSV(在1.9中仅称为CSV),但这个问题应该与语言无关.
我的猜测是,解决方案需要使用明确的记录分隔符/引号字符(例如ASCII RS,STX)进行预处理替换.我已经在这里开始了一点但它并不适用于我得到的一切.
如何可靠地处理这种脏数据?
ETA:以下是单个文件中可能包含的简化示例:
"this","is",123,"a","normal","line" "line","with "an" internal","quote" "short line","with an "internal quote", 1 comma and linebreaks" un "quot" ed,text,with,1,2,3,numbers "quoted","number","series","1,2,3" "invalid \xAB utf-8"
我很难让CSS工作,就像我希望它用于闪存(当你登录或做某事或什么来确认你的行动时显示的那些小消息,例如在Rails中).
我希望它:
我见过的大多数CSS都没有做到这一点 - 例如,大多数指定固定宽度,这意味着要么包裹得很差,要么填充太多.
我怎样才能做到这一点?(或者:我为什么不能?)
这是我目前的CSS:
<div class="flash info">
<span class="close"><a href="AJAX callback">X</a></span>
Some informational text here that can be closed w/ the X
</div>
<div class="flash error">
Some other simultaneous error
</div>
.flash {
text-align: center;
padding: .3em .4em;
margin: 0 auto .5em;
clear: both;
max-width: 46.923em; /* 610/13 */
*max-width: 45.750em; /* 610/13.3333 - for IE */
}
.flash.error { …Run Code Online (Sandbox Code Playgroud) Ruby /[[:punct:]]/应该匹配所有"标点字符".根据维基百科,这意味着/[\]\[!"#$%&'()*+,./:;<=>?@\^_`{|}~-]/每POSIX标准.
它匹配:-[]\;',./!@#%&*()_{}::"?.
但是,它不匹配:=`~$^+|<>(至少在红宝石1.9.3p194).
是什么赋予了?
Rails的:timestamp列类型在于; 它实际上只是一个别名:datetime.
我正在使用mysql,我想使用实际的unix-timestamp TIMESTAMP列.
a)有没有一种很好的方法来设置它,除了使用SQL创建列?
b)ActiveRecord是否会正确处理它(例如转换到Time必要时,接受unix时间戳Integer作为输入等)?我应该期待得到什么,以及在哪里?
为什么:
速度.这是一个非常活跃的表,它聚合了已经使用unix时间戳的外部数据源.转换为datetime(甚至首先转换为db字符串,经过2 gsub秒)会占用其大部分导入时间.否则我可以做一个便宜的Integer#to_s电话.
时区.我不想要他们.我希望它存储时区 - 非常地存储; 处理时区是一种痛苦,除了在个人用户显示之前的最后阶段,与我的需求完全无关.数据本身无需知道记录的时区.
尺寸.这是一张大桌子.TIMESTAMP的大小是DATETIME的一半.
是的,我仍然会updated_at在代码中进行计算,而不是mysql.那部分不是瓶颈.
为什么你的'为什么不'是错的(先前说明,我不是要求出于无理由的原因:-P):
ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#quote(在Quoting#quoted_date[如果通过Time]或Mysql2Adapter#quote_string[如果预转换to_s(:db)])实际上是我的刮刀中耗费大量CPU的部分.我想摆脱它.对于Rails 3,这个问题和turbo-sprockets-rails3看起来很棒.
我目前正在使用Rails 4,看起来因为Capistrano deploy:assets:update_asset_mtimes接触所有资产,deploy:assets:precompile同样重新编译所有资产.重新编译是我的最长步骤cap deploy.
理想情况下,这应该由一些基于校验和的清单系统替换,以便只重新编译那些实际已更改(或依赖于已更改的资产)的资产.
做这个的最好方式是什么?(假设我们仍然在服务器上进行,而不是开发机器.)
我有徽章(有点像StackOverflow).
其中一些可以附加到可徽章的东西上(例如,帖子上附有> X评论的徽章附在帖子上).几乎所有级别都有多个级别(例如> 20,> 100,> 200),并且每个可标记的x徽章类型(= badgeset_id)只能有一个级别.
为了更容易地执行一个级别的每徽章约束,我想badgings由两列的外键,指定他们的徽章- badgeset_id和level-而不是由主键(badge_id),虽然徽章确实有一个标准的主键太.
在代码中:
class Badge < ActiveRecord::Base
has_many :badgings, :dependent => :destroy
# integer: badgeset_id, level
validates_uniqueness_of :badgeset_id, :scope => :level
end
class Badging < ActiveRecord::Base
belongs_to :user
# integer: badgset_id, level instead of badge_id
#belongs_to :badge # <-- how to specify?
belongs_to :badgeable, :polymorphic => true
validates_uniqueness_of :badgeset_id, :scope => [:user_id, :badgeable_id]
validates_presence_of :badgeset_id, :level, :user_id
# instead of this:
def badge
Badge.first(:conditions => {:badgeset_id => …Run Code Online (Sandbox Code Playgroud) 假设我们有标准的帖子和评论模型,有Post accepts_nested_attributes_for :commments和:autosave => true设置.
我们可以创建一个新帖子以及一些新评论,例如:
@post = Post.new :subject => 'foo'
@post.comments.build :text => 'bar'
@post.comments.first # returns the new comment 'bar'
@post.comments.first.post # returns nil :(
@post.save # saves both post and comments simultaneously, in a transaction etc
@post.comments.first # returns the comment 'bar'
@post.comments.first.post # returns the post 'foo'
Run Code Online (Sandbox Code Playgroud)
但是,我需要能够在Comment(例如,来自其before_save或验证函数)之间进行区分
不幸的是,仅仅self.post从Comment 调用不起作用,因为在上面,它会在保存发生之前返回nil.在回调当然,我不(也不应该)访问@post,只能访问相关评论的自我.
那么:从嵌套关联模型的角度来看,如何访问新记录的嵌套关联的父模型?
(FWIW,我正在使用它的实际样本允许人们创建一个裸"评论",然后如果还没有一个就会自动创建一个"帖子"来包含它.我已经简化了这个例子,所以它不是以不相关的方式特定于我的代码.)
activerecord ×2
associations ×2
css ×2
mysql ×2
regex ×2
ruby ×2
callback ×1
client-hints ×1
csv ×1
fastercsv ×1
history ×1
icons ×1
javascript ×1
mime-types ×1
posix ×1
privacy ×1
timestamp ×1
tooltip ×1
user-agent ×1
yui ×1