我正在使用下面的函数来计算电影文件的opensubtitles.org哈希值.它主要工作,但有大文件我得到以下错误.
我真的不明白它,因为应该总是有数据可用.
任何人都可以指出我正确的方向吗?
PHP警告:unpack():输入v:输入不够,需要2,在第169行的file.php中有0
function OpenSubtitlesHash($file)
{
$handle = fopen($file, "rb");
$fsize = filesize($file);
$hash = array(3 => 0,
2 => 0,
1 => ($fsize >> 16) & 0xFFFF,
0 => $fsize & 0xFFFF);
for ($i = 0; $i < 8192; $i++)
{
$tmp = ReadUINT64($handle);
$hash = AddUINT64($hash, $tmp);
}
$offset = $fsize - 65536;
fseek($handle, $offset > 0 ? $offset : 0, SEEK_SET);
for ($i = 0; $i < 8192; $i++)
{
$tmp = ReadUINT64($handle);
$hash = AddUINT64($hash, …Run Code Online (Sandbox Code Playgroud) 我有以下css和html(深入到基本要点.可以在这里找到带有其他样式的完整代码:我在jsfiddle上粘贴了这个css:http://jsfiddle.net/BwhvX/,但这足够了重现问题)
CSS:
* {
margin: 0px;
padding: 0px;
font-size: 13px;
line-height: 15px;
border: none;
}
input[type="submit"]::-moz-focus-inner {
border: 0;
}
#search .text, #search .button {
border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<form method="post" id="search" action="">
<p><input type="text" class="text" value="" name="suche"><input type="submit" class="button" value="Suchen"></p>
</form>
Run Code Online (Sandbox Code Playgroud)
这是firefox渲染的方式:

这是chrome渲染的方式:

我希望两个表单元素在所有浏览器中具有相同的高度.看起来像我应用了一些默认样式,我手动需要像我在这个例子中为firefox做的那样重置.在Chrome开发者工具中,一个高16和高17 px,但我无法看到它来自哪里,它刚刚计算出来.应用的样式(显示给我)是相同的.
这是一个原始的ofx文件,因为它来自m银行(不用担心,没有什么敏感,我切断了所有交易的中间部分)
Open Financial Exchange(OFX)是一种数据流格式,用于交换从Microsoft的开放式金融连接(OFC)和Intuit的Open Exchange文件格式演变而来的财务信息.
现在我需要解析这个.我已经看到了这个问题,但这不是重复,因为我对如何做到这一点很感兴趣.
我相信我可以找到一些聪明的正则表达式来完成这项工作,但这很难看并且容易出错(如果格式发生变化,某些字段可能会丢失,格式化/空格不同等等......)
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0
<SEVERITY>INFO
</STATUS>
<DTSERVER>20110420000000[+1:CET]
<LANGUAGE>ENG
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>1
<STATUS>
<CODE>0
<SEVERITY>INFO
</STATUS>
<STMTRS>
<CURDEF>EUR
<BANKACCTFROM>
<BANKID>20404
<ACCTID>02608983629
<ACCTTYPE>CHECKING
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20110207
<DTEND>20110419
<STMTTRN>
<TRNTYPE>XFER
<DTPOSTED>20110205000000[+1:CET]
<TRNAMT>-6.12
<FITID>C74BD430D5FF2521
<NAME>unbekannt
<MEMO>BILLA DANKT 1265P K2 05.02.UM 17.49
</STMTTRN>
<STMTTRN>
<TRNTYPE>XFER
<DTPOSTED>20110207000000[+1:CET]
<TRNAMT>-10.00
<FITID>C74BE0F90A657901
<NAME>unbekannt
<MEMO>AUTOMAT 13177 KARTE2 07.02.UM 10:22
</STMTTRN>
............................. goes on like this ........................
<STMTTRN>
<TRNTYPE>XFER
<DTPOSTED>20110418000000[+1:CET] …Run Code Online (Sandbox Code Playgroud) 我想检索推文给出一个主题标签,并将它们从转发最多的转发到转发不足的转发.
我发现最接近的是使用搜索调用并使用类型标记:例如:http://search.twitter.com/search.json?q = TheHashTagHere&result_type = popular
但是,我不确定"流行"选项的工作原理.
例如,如果它发现100个带有该标签的推文,我相信它应该显示X最转推的推文,如果这些推文都没有被转发,那么它应该随机显示它们的X(或者以其他方式排序,如最近的).
不幸的是,如果遵循一些未知的规则来识别什么是流行的,什么不是,甚至数千个推文的主题标签可能只返回一两个结果.
我希望我清楚自己.提前致谢 :)
PS:我会使用PHP,但我认为这不应该影响这个问题?
我对新的Mysql XMl函数非常兴奋.
现在我终于可以在我的oldschool关系数据库中嵌入类似"面向对象"的文档.
例如,用例考虑使用facebook connect在您的网站上唱歌的用户.您可以使用图形api为用户获取对象,并获取更好的信息.然而,这些信息可能差异很大.某些字段可能已设置也可能未设置,某些字段可能会随时间添加等等.
好吧,如果你只是在非常特殊的领域(例如朋友关系,性别,电影......),你可以将它们投射到你的关系数据库方案中.
但是,使用XMl函数,您可以将整个对象存储在字段中,然后您的不同模型可以使用ExtractValue函数访问数据.您可以立即存储所有内容,而无需担心以后需要什么.
但性能会是什么?
例如,我有一个表有50,000个条目的表,代表用户.我有一个枚举字段,表明"male", "female"(或其他各种性别在政治上是正确的).
例如,获取所有男性的表现将非常快.
但是类似的东西怎么样WHERE ExtractValue(userdata, '/gender/') = 'male'?
如果物体变大,性能会如何变化?
我能不能以某种方式将指数放在指定的xpath选择上?
字段类型如何与此功能/性能一起使用.VARCHAR/BLOB?
我需要全文索引吗?
总结一下我的问题:
Mysql XML functins看起来很棒.如果您只想存储在应用程序中进一步获取和分析的结构化数据,我相信它们真的很棒.
但他们将如何在对其进行内部扫描/排序/比较/计算的程序中展开战斗?
Mysql可以取代像CouchDB/Sesame这样的面向文档的数据库吗?
XML函数的收益和权衡是什么?
它们如何以及为什么它们比将各种数据存储为属性的动态应用程序更好/更差?
例如,键/值表,其中xpath为键,值为值,连接到文档实体.
有人做过任何其他经历或者注意到了一些值得一提的东西吗?
我有一个代表电影实体的大约100万个文档的索引.
用户可以将电影放在各种列表上(如收藏夹等)
这些列表存储在mysql数据库中,不在solr中编制索引.
我可以将用户ID存储在表示列表的多值字段中,但这非常糟糕,因为字段会非常非常长,并且索引也会出现问题.
所以目前我做以下(伪代码):
$favorites = SELECT document_id FROM favorites WHERE user_id = $user_id
$documents = 'http://solr.com:8393/select/?q=XYZ&fq=document_id:('.join(' OR ',$favorites);
Run Code Online (Sandbox Code Playgroud)
这工作得非常快,但过滤查询中的项目数量限制为1024(我试过).也过滤查询加起来.所以,如果我有一个过滤查询500个值来过滤我可以有另一个值524过滤器在另一个字段上.
现在没关系,因为我将每个列表的条目限制为1024,这相当多,但我认为这种方法非常笨拙并产生大量开销.
是不是有更好的解决方案?就像编写直接连接数据库的solr模块一样?我想在php中做到这一点.
如果没有其他办法,我可以以某种方式提高1024限制吗?因为它现在工作得非常快!我认为使用好的硬件更不会有问题.
编辑:如评论中所述,我在这里发布我的原始架构和一个工作示例查询.
<field name="film_id" type="int" indexed="true" stored="true" required="true"/>
<field name="imdb_id" type="int" indexed="true" stored="true" />
<field name="parent_id" type="int" indexed="true" stored="true"/>
<field name="malus" type="int" indexed="true" stored="true"/>
<field name="type" type="int" indexed="true" stored="true"/>
<field name="year" type="int" indexed="true" stored="true" termVectors="true"/>
<field name="locale_title" type="string" indexed="false" stored="true"/>
<field name="aka_title" type="filmtitle" indexed="true" stored="true" multiValued="true" omitNorms="true" termVectors="true" />
<field name="sort_title" type="string" indexed="true" stored="true"/>
<field name="director" type="person" …Run Code Online (Sandbox Code Playgroud) 我知道它是安全令牌URL,maby还有另一个名字.但我想你们都知道.
如果您想限制向某个客户传送内容,那么它主要应用于teqniuque,您已提前提交了特定网址.
您获取一个秘密令牌,将其与您要保护的资源连接,拥有它,当客户端在您的某个服务器上请求此URL时,从请求收集的信息重新构造哈希并比较哈希.如果相同,则传递内容,否则用户将被重定向到您的网站或其他内容.
您还可以在时间戳中添加时间戳,以便在网址上留出时间,或者包含用户IP地址以限制提供给他的连接.
此teqnique由亚马逊(S3和Cloudfront),3级CDN,Rapidshare和许多其他人使用.它也是http摘要身份验证的基本部分,尽管它还有更进一步的链接失效和其他东西.
如果您想了解更多信息,请参阅亚马逊文档的链接.
现在我对这种方法的担忧是,如果一个人破解了你的链接的一个标记,攻击者就会获得你的标记纯文本,并且可以自己在你的名字中签署任何URL.
或者更糟糕的是,对于amazon,请在管理范围内访问您的服务.
当然,这里散列的字符串通常很长.并且您可以包含大量内容,甚至可以通过向请求添加一些不必要的数据来强制数据具有最小长度.Maby在URL中使用了一些未使用的伪变量,并用随机数据填充它.
因此蛮力攻击破解sha1/md5或者你使用哈希的任何东西都很难.但是协议是开放的,所以你只需填写秘密令牌所在的间隙,并用requst中已知的数据填补其余部分.今天硬件非常棒,可以以每秒几十兆字节的速度计算md5.这种攻击可以分发到计算云中,并且您不限于"登录服务器每分钟10次尝试"等,这使得散列方法通常非常安全.现在使用亚马逊EC2,您甚至可以在短时间内租用硬件(用自己的武器击败它们哈哈!)
所以你怎么看?我的担忧有基础还是我偏执?
然而,
我目前正在设计一个满足特殊需求的对象存储云(集成媒体转码和流媒体等特殊传送方法).
现在,level3引入了另一种安全令牌网址的方法.它目前是测试版,仅向特别要求的客户开放.他们称之为"代理身份验证".
会发生什么是内容传递服务器向您(客户端)设置中指定的服务器发出HEAD请求并模仿用户请求.因此传递相同的GET路径和IP地址(作为x_forwarder).您使用HTTP状态代码进行响应,该代码告诉服务器是否与内容传递有关.
您还可以在其中引入一些安全令牌进程,您也可以对其进行更多限制.就像让URL仅被请求10次左右一样.
它显然带来了很多开销,因为发生了额外的请求和计算,但我认为它是合理的,我没有看到它的任何警告.你呢?
Youtube移动使用RTSP流媒体,但这对于设置和维护来说相当过分.
因此,看起来HTML5可能是将网站中嵌入的视频提供给移动设备的最佳方式.(我可以获得确认,或者是否有任何不同意?)
还包括一个到媒体文件的静态链接,以便手机可以决定如何处理它,在边缘情况下下载并使用系统播放器启动它,这似乎支持更多的编解码器和东西.
问题是正确的视频编码.
我尝试了很多,最终得到了一个在Iphone 4上播放的视频文件,升级了软件的Iphone 3和Android 2.1.这就是我可用于测试的全部内容.
为了让它在以下所有方面工作似乎是必要的:
Format profile : Baseline@L1.3
Codec ID : avc1
Run Code Online (Sandbox Code Playgroud)
该文件也需要处理qt-faststart(我不明白,因为它增加了更多的要求,因为在H264规范中默认情况下视频信息在文件末尾编码.)
我搜索了很多但没有运气,所以我的问题是:
选择哪些设置来支持具有良好压缩,质量和内容的最可能的设备.
我是否会使用H264(AVC),或者是否需要支持webm/ogg的替代来源或类似的东西?
或者换句话说:
如果您将HTML5中的在线视频投放到移动设备上.您会选择哪种编解码器设置以及原因.
我将打开其他问题,我将部分回答我自己,并在此处链接他们如何做:
希望最终我的视频网站能够全部设置并准备好移动,并为每个人提供全面的指南.
我正在使用Magento,并且有一个函数将CSS和Javascript合并为一个大文件.
无论其优缺点如何,都存在以下问题:
最终文件缓存在多个级别,包括但不限于:
Magento使用连接的css文件名的MD5和来为合并的css文件生成新的文件名.因此,每个具有不同css文件集的页面都会获得正确的合并css文件.
为了解决缓存问题,我还将文件修改时间戳包含在该哈希中,以便每次修改css文件时都会生成新的哈希.
因此非重新验证缓存得分的全部优势,但如果某些内容发生变化,它立即可见,因为资源链接已更改.
到现在为止还挺好:
唯一的问题是,用于生成has的文件名只是通常在HTML-Head块中直接引用的文件名,并且不包括这些文件中的css导入.
因此,在css文件中导入的文件中的更改不会导致新的哈希.
不,我真的不想递归解析所有导入并扫描它们或类似的东西.
我宁愿考虑基于目录的解决方案.有没有什么能够在文件系统的基础上有效地监视"目录内的最后一次更改"?
我们正在使用ext4.
或者可能有另一种方法,也许使用find命令,根据inode索引完成所有工作?
那样的东西?
我已经看到很多程序在不扫描整个文件系统的情况下立即"看到"变化.我相信在linux下也有一些"文件操作监视"守护进程.
问题是css目录非常庞大.
谁能指出我正确的方向?
我正在调试Magento系统的问题.
问题是重复的Set-Cookie标头,如下所示:
Set-Cookie: flimmit_session=search-0c30086b812519b006aa27ef4f37f15b-24; path=/; domain=.flimmit.com; httponly
Set-Cookie: flimmit_session=search-0c30086b812519b006aa27ef4f37f15b-24; path=/; domain=.flimmit.com; httponly
Run Code Online (Sandbox Code Playgroud)
使用php的setcookie命令设置cookie.我的问题是,错误使用此函数是否会导致重复的Set-Cookie标头,或者我是否必须在其他地方查找错误...