小编Sai*_*Sai的帖子

为什么 Chrome 使用 sec-ch-ua: "\"Not\\A;Brand";v="99"?

我知道使用户代理提示更加模糊的部分目的是为了使浏览器指纹识别更加困难。

我自己的(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)

我不明白的是:

  1. 为什么特别是字符串“Not A Brand”?还有其他人使用这个伪 UA 吗?这是某种玩笑吗?
  2. 为什么\"\\A;里面的字符串?我唯一的猜测是,这应该以某种方式与解析器混淆(就像 CSS 中的反 IE 黑客),但这似乎是一个相当奇怪的目的——而 IIRC,\A就是钟形字符。
  3. 鉴于它还发送user-agent具有特定版本号的完整标头,这应该如何实现用户代理提示歧义?
  4. 同时:为什么 Chrome 的用户代理还声称是 Mozilla、AppleWebKit 和 Safari?不是,而且这个user-agent字符串是 Chrome 特有的。它是否有来自其他浏览器的某种嵌入式组件?

user-agent privacy google-chrome client-hints

39
推荐指数
1
解决办法
2万
查看次数

CSS/JavaScript/hacking:检测:链接上的访问样式*没有*直接检查或比我更快

这是出于研究目的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. 我想检测是否在没有直接查看$('1').getComputedStyle(或在Internet Explorer中currentStyle)或该元素上的任何其他直接方法的情况下访问foo.com .

    这样做的目的是绕过潜在的浏览器限制,以防止直接检查访问链接的样式.

    例如,也许你可以在<a>标签中放置一个子元素,或者直接检查文本的样式; 任何直接或直接依赖的方法$('1').anything都是可以接受的.做一些聪明的孩子或父母可能是必要的.

    请注意,只有这一点而言,该方案是,浏览器会骗JavaScript中的所有属性<a>元素(而不是其他),而且它只会呈现color::visited.因此,依赖于例如文本大小或background-image不符合此要求的方法.

  2. 我想提高目前刮削方法的速度.

    大部分时间(至少使用Firefox中的jQuery方法)花费在上面document.body.appendChild(batch),因此找到改进该调用的方法可能是最有效的.

    有关当前速度测试结果,请参见http://cssfingerprint.com/abouthttp://cssfingerprint.com/results …

javascript css history

21
推荐指数
1
解决办法
1万
查看次数

什么是好的,免费的,可插入的mimetype图标集?

我想要一组mimetype图标与我的文件上传一起显示,以显示在用户的文件列表等中.

它应该是:

  • 16x16 PNG或JPG(其他尺寸通过64x64将是奖金,但不是必需的)
  • 已经组织好了,我可以做例如mimetype.sub('/',' - ')+'.png'并获取图标文件名(我想避免花费大量时间搞清楚关联)
  • 不是平台特定的,最好使用专用应用程序的原生图标(例如.zip图标看起来不应该像KDE框)
  • 漂亮但可读,适合普通观众;-)

什么是一个很好的包装?

icons mime-types

17
推荐指数
2
解决办法
1万
查看次数

如何有力地解析格式错误的CSV?

我正在处理政府来源(FEC,州选民数据库等)的数据.它的格式不一致,这会以各种令人愉快的方式破坏我的CSV解析器.

它是外部采购和权威的.我必须解析它,我不能重新输入,在输入时验证等.就是这样; 我不控制输入.

属性:

  1. 字段包含格式错误的UTF-8(例如Foo \xAB bar)
  2. 一行的第一个字段指定已知集合中的记录类型.知道记录类型,您知道有多少字段及其各自的数据类型,但直到您知道.
  3. 文件中的任何给定行可能使用带引号的字符串("foo",123,"bar")或不带引号(foo,123,bar).我还没有遇到任何在给定行(即"foo",123,bar)中混合的地方,但它可能在那里.
  4. 字符串可以包括内部换行符,引号和/或逗号字符.
  5. 字符串可以包括逗号分隔的数字.
  6. 数据文件可能非常大(数百万行),因此这仍然需要相当快.

我正在使用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"

ruby regex csv fastercsv

15
推荐指数
2
解决办法
5003
查看次数

闪存的好CSS(也就是Rails中的信息消息,OSX中的咆哮)

我很难让CSS工作,就像我希望它用于闪存(当你登录或做某事或什么来确认你的行动时显示的那些小消息,例如在Rails中).

我希望它:

  • 生活在任意的div中
  • 看起来像一个带有文字的居中框
  • 只需要适合文本所需的大小(如果小于指定的最大宽度)或包装文本(如果更大)
  • 具有居中或左对齐(或组合)的文本,具体取决于闪光灯(例如,短错误是居中的;更长的操作方式新手入手是左对齐的); 一个额外的CSS类(例如'flash info left')来支持这个就行了
  • 在页面上彼此相邻闪烁多次(如示例所示)
  • 优选地,由具有围绕文本的类的单个元素组成,而不是由包装元素内的元素内的文本组成
  • 最好是YUI CSS兼容和纯CSS(不是JS)
  • 适用于IE7 +,FFx 3 +,Safari 3+; 在旧浏览器上工作"足够好"

我见过的大多数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)

css user-interface yui ruby-on-rails tooltip

13
推荐指数
1
解决办法
1万
查看次数

为什么Ruby/[[:punct:]] /会遗漏一些标点字符?

Ruby /[[:punct:]]/应该匹配所有"标点字符".根据维基百科,这意味着/[\]\[!"#$%&'()*+,./:;<=>?@\^_`{|}~-]/每POSIX标准.

它匹配:-[]\;',./!@#%&*()_{}::"?.

但是,它匹配:=`~$^+|<>(至少在红宝石1.9.3p194).

是什么赋予了?

ruby regex posix

13
推荐指数
1
解决办法
7099
查看次数

使ActiveRecord/Rails使用实际的mysql TIMESTAMP列

Rails的:timestamp列类型在于; 它实际上只是一个别名:datetime.

我正在使用mysql,我想使用实际的unix-timestamp TIMESTAMP列.

a)有没有一种很好的方法来设置它,除了使用SQL创建列?

b)ActiveRecord是否会正确处理它(例如转换到Time必要时,接受unix时间戳Integer作为输入等)?我应该期待得到什么,以及在哪里?

为什么:

  1. 速度.这是一个非常活跃的表,它聚合了已经使用unix时间戳的外部数据源.转换为datetime(甚至首先转换为db字符串,经过2 gsub秒)会占用其大部分导入时间.否则我可以做一个便宜的Integer#to_s电话.

  2. 时区.我不想要他们.我希望它存储时区 - 非常地存储; 处理时区是一种痛苦,除了在个人用户显示之前的最后阶段,与我的需求完全无关.数据本身无需知道记录的时区.

  3. 尺寸.这是一张大桌子.TIMESTAMP的大小是DATETIME的一半.

是的,我仍然会updated_at在代码中进行计算,而不是mysql.那部分不是瓶颈.

为什么你的'为什么不'是错的(先前说明,我不是要求出于无理由的原因:-P):

  1. "但TIMESTAMP自动更新":默认情况下这是唯一的,并且可以轻松关闭.
  2. 我实际上并没有使用Rails,只有ActiveRecord.
  3. 是的,这是基于实际的分析数据 ; 我不是早期优化.ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#quote(在Quoting#quoted_date[如果通过Time]或Mysql2Adapter#quote_string[如果预转换to_s(:db)])实际上是我的刮刀中耗费大量CPU的部分.我想摆脱它.

mysql activerecord timestamp ruby-on-rails

11
推荐指数
2
解决办法
3019
查看次数

Rails 4:如何只编译已更改的资产?

对于Rails 3,这个问题turbo-sprockets-rails3看起来很棒.

对于Rails 4,似乎存在一些关于是否已经修复的争议.

我目前正在使用Rails 4,看起来因为Capistrano deploy:assets:update_asset_mtimes接触所有资产,deploy:assets:precompile同样重新编译所有资产.重新编译是我的最长步骤cap deploy.

理想情况下,这应该由一些基于校验和的清单系统替换,以便只重新编译那些实际已更改(或依赖于已更改的资产)的资产.

做这个的最好方式是什么?(假设我们仍然在服务器上进行,而不是开发机器.)

ruby-on-rails asset-pipeline ruby-on-rails-4

10
推荐指数
1
解决办法
4762
查看次数

ActiveRecord/Rails中的多列外键/关联

我有徽章(有点像StackOverflow).

其中一些可以附加到可徽章的东西上(例如,帖子上附有> X评论的徽章附在帖子上).几乎所有级别都有多个级别(例如> 20,> 100,> 200),并且每个可标记的x徽章类型(= badgeset_id)只能有一个级别.

为了更容易地执行一个级别的每徽章约束,我想badgings由两列的外键,指定他们的徽章- badgeset_idlevel-而不是由主键(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)

mysql activerecord ruby-on-rails associations

8
推荐指数
1
解决办法
4739
查看次数

Rails:如何访问新记录的嵌套关联的父模型?

假设我们有标准的帖子和评论模型,有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或验证函数)之间进行区分

  1. 此评论未附加到帖子(无效)
  2. 此评论附加到未保存的帖子(有效)

不幸的是,仅仅self.post从Comment 调用不起作用,因为在上面,它会在保存发生之前返回nil.在回调当然,我不(也不应该)访问@post,只能访问相关评论的自我.

那么:从嵌套关联模型的角度来看,如何访问新记录的嵌套关联的父模型?

(FWIW,我正在使用它的实际样本允许人们创建一个裸"评论",然后如果还没有一个就会自动创建一个"帖子"来包含它.我已经简化了这个例子,所以它不是以不相关的方式特定于我的代码.)

ruby-on-rails callback associations

6
推荐指数
1
解决办法
2648
查看次数