对我来说,iframe是纯粹的邪恶(好吧,也许不是那么纯粹).他们似乎遇到了很多麻烦.是的,您的整个网站将加载一次,然后您只需加载一个页面.但人们为此目的发明了AJAX.
我发现的最大问题之一iframe
是我无法将链接粘贴到其中一个子页面,因为URL从未更改(是的,我知道有一个解决方法).其次,网络搜索引擎可能有问题正确索引网站.
有时这些网站的可访问性更差,有些浏览器甚至可以不正确地显示它们.
有更好的方法来设计没有(i)帧的布局.每天我都可以看到有人问过SO问题,比如"如何使用jQuery访问iframe?".
那么iframe的好处是什么?还有什么理由继续使用它们?我只是想知道为什么:)
(因为它不是一个真正的问题,它是一个CW)
目前我正在使用派生自的自定义类HashSet
.在特定条件下选择项目时,代码中有一点:
var c = clusters.Where(x => x.Label != null && x.Label.Equals(someLabel));
Run Code Online (Sandbox Code Playgroud)
它工作正常,我得到了这些元素.但有没有办法可以在集合中接收该元素的索引以与ElementAt
方法一起使用,而不是整个对象?
看起来或多或少会像这样:
var c = select element index in collection under certain condition;
int index = c.ElementAt(0); //get first index
clusters.ElementAt(index).RunObjectMthod();
Run Code Online (Sandbox Code Playgroud)
是否手动迭代整个集合更好的方法?我需要补充说它是在一个更大的循环中,所以Where
对于不同的someLabel
字符串,这个子句被执行多次.
编辑
我需要这个吗?clusters
是一组文档集合的集合.文档按主题相似性分组.因此,该算法的最后一步是发现每个群集的标签.但算法并不完美,有时它会产生两个或多个具有相同标签的聚类.我想要做的只是将这些集群合并为一个集群.
我有这个非常庞大的大小为2.8GB的XML文件.这是波兰维基百科的文章转储.这个文件的大小对我来说很成问题.任务是在此文件中搜索大量数据.我所拥有的只是文章的标题.我以为我可以对这些标题进行排序并在文件中使用一个线性循环.想法并不是那么糟糕,但文章不按字母顺序排序.它们按ID分类,我不知道它是先验的.
所以,我的第二个想法是制作该文件的索引.以下列格式存储在其他文件(或数据库)行中:( title;id;index
可能没有ID).我的另一个问题是我向你寻求帮助.假设是,如果我有所需标签的索引,我可以使用简单的Seek
方法在文件中移动光标而不读取所有内容等.对于较小的文件,我认为这可以正常工作.但在我的电脑(笔记本电脑,C2D proc,Win7,VS2008)上我收到应用程序没有响应的错误.
在我的程序中,我正在从文件中读取每一行并检查它是否包含我需要的标记.我也在计算我读取的所有字节并以上述格式保存行.因此,虽然索引程序被挂断了.但到那时结果索引文件是36.2MB,最后一个索引是2,872,765,202(B),而整个XML文件是3,085,439,630 B长.
我的第三个想法是将文件分成更小的部分.准确地说是26件(拉丁语中有26个字母),每个字母只包含以相同字母开头的条目,例如在a.xml中所有条目以"A"字母开头的条目.最终文件将像数十MB,我认为最大约为200 MB.但是阅读整个文件存在同样的问题.
要读取我使用的文件可能是最快的方法:使用StreamReader
.我在某个地方读到了这个StreamReader
和XmlReader
类System.Xml
是最快的方法.StreamReader
甚至更快XmlReader
.很明显,我无法将所有这些文件加载到内存中.我只安装了3GB的RAM,Win7在满载时需要800MB-1GB.
所以我在寻求帮助.什么是最好的.关键是搜索此XML文件必须快速.必须更快,然后以HTML格式下载单个维基百科页面.我甚至不确定这是否可行.
也许将所有需要的内容加载到数据库中?也许那会更快?但我仍然需要至少阅读整个文件一次.
我不确定1个问题长度是否存在一些限制,但我还会在此处提供我的索引源代码示例.
while (reading)
{
if (!reader.EndOfStream)
{
line = reader.ReadLine();
fileIndex += enc.GetByteCount(line) + 2; //+2 - to cover characters \r\n not included into line
position = 0;
}
else
{
reading = false;
continue;
}
if (currentArea == Area.nothing) //nothing interesting at the moment
{
//search for …
Run Code Online (Sandbox Code Playgroud) 在我的项目中,我一般都使用文本.我发现预处理可能非常慢.所以我想问你是否知道如何优化我的代码.流程是这样的:
获取HTML页面 - >(以纯文本 - >词干 - >删除停用词) - >进一步文本处理
括号中有预处理步骤.该应用程序运行在大约10.265秒,但预处理需要9.18秒!这是预处理50个HTML页面的时间(不包括下载).
我使用HtmlAgilityPack库将HTML转换为纯文本.这很快.转换1个文档需要2.5ms,所以它相对比较好.
问题出现了.阻止一个文档需要120毫秒.不幸的是,那些HTML页面是波兰语.用C#编写的波兰语不存在词干.我知道只有2个免费使用Java编写:stempel和morfologic.我借助IKVM软件将stempel.jar预编译为stempel.dll.所以没有更多的事要做.
消除停用词也需要很多时间(1个文档约70毫秒).它是这样完成的:
result = Regex.Replace(text.ToLower(), @"(([-]|[.]|[-.]|[0-9])?[0-9]*([.]|[,])*[0-9]+)|(\b\w{1,2}\b)|([^\w])", " ");
while (stopwords.MoveNext())
{
string stopword = stopwords.Current.ToString();
result = Regex.Replace(result, "(\\b"+stopword+"\\b)", " ");
}
return result;
Run Code Online (Sandbox Code Playgroud)
首先,我删除所有数字,特殊字符,单词和双字母单词.然后在循环中删除停用词.大概有270个停用词.
有可能让它更快吗?
编辑:
我想要做的是删除所有不超过2个字母的单词.所以我想把所有特殊的字符(包括'.',',','?','!'等)数字,停止字样.我只需要用于数据挖掘的纯语言.
我有Magento发送的Headers有这个问题.我收到此错误:
HEADERS ALREADY SENT:
[0] /var/www/etam/trunk/src/app/code/core/Mage/Core/Controller/Response/Http.php:44
[1] /var/www/etam/trunk/src/lib/Zend/Controller/Response/Abstract.php:727
[2] /var/www/etam/trunk/src/app/code/core/Mage/Core/Controller/Response/Http.php:75
[3] /var/www/etam/trunk/src/app/code/core/Mage/Core/Controller/Varien/Front.php:188
[4] /var/www/etam/trunk/src/app/code/core/Mage/Core/Model/App.php:304
[5] /var/www/etam/trunk/src/app/Mage.php:596
[6] /var/www/etam/trunk/src/index.php:139
Run Code Online (Sandbox Code Playgroud)
我看到这个话题但对我帮助不大.
我发现只有在通过管理面板导航并使用WYSIWYG编辑器编辑页面时才能获得此日志.当在这样的编辑的内容有.jpg图像然后我得到这个标题已经发送错误.
据我所知,它不是适用于所有图像,而是适用于其中一些图像.例如,当只有1个图像时没有错误.当有3个时,只有一个我得到这个错误.
我找不到任何空格或不想要的echo
,也不print
.我坚持这个,我不知道要搜索什么.也许你可以给我一些建议?我知道它是无害的,我们仍然不想在system.log中有任何错误.
目前这种方法getCategoryIds()
在Mage_Catalog_Model_Resource_Eav_Mysql4_Product
.此方法返回所请求产品的所有类别ID.我需要修改SELECT
语句,以便它还返回类别名称.
这是基本查询:
$select = $this->_getReadAdapter()->select()
->from($this->_productCategoryTable, 'category_id')
->where('product_id=?', $product->getId());
Run Code Online (Sandbox Code Playgroud)
catalog_category_flat
由于某些原因我不能使用表,所以我必须使用EAV表.所以在这一点上我有这个查询:
$select = $this->_getReadAdapter()->select()
->from($this->_productCategoryTable, 'category_id')
->where('catalog_category_product.product_id=?', $product->getId())
->join(
array('a' =>'catalog_category_entity_varchar'),
'a.entity_id = catalog_category_product.category_id',
array('name' => 'value')
)
->join(
array('b' => $this->getTable('eav/attribute')),
'b.attribute_id = a.attribute_id',
array()
)
->where("b.attribut_code = 'name'");
Run Code Online (Sandbox Code Playgroud)
这有效,但我想问一下是否有更好的方法.
我是CodeIgniter的新手.我正在将它用于我的个人项目.
我想遵循的一件事就是坚持最好的编码实践.其中一个是DRY规则(不要重复自己).我尝试在适当的模型类中定义一些常量,并在代码中的其他地方使用它们,所以当涉及到一点变化时,它必须只在一个地方完成.
我有这个类Hero_attributes
,它有几个常量,例如:
class Hero_attributes
{
const ID = 'id';
const NAME = 'name';
const LEVEL = 'level';
const MAG_LEVEL = 'maglevel';
const VOCATION = 'vocation';
const GENDER = 'sex';
const SPEED = 'speed'
(...)
}
Run Code Online (Sandbox Code Playgroud)
我还制作了一个tenkai_config.php
自动加载的自定义配置文件.在配置数组中,我想使用Hero_attributes
类中的常量作为键,即:
$config['vocations']['default'] = array(
'hero' => array(
Hero_attributes::LAST_LOGIN => 0,
Hero_attributes::LEVEL => 1,
Hero_attributes::MAG_LEVEL => 80,
Hero_attributes::RESIDENCE => 1,
Hero_attributes::POSITION_X => 73,
Hero_attributes::POSITION_Y => 181,
Hero_attributes::POSITION_Z => 6,
(...)
)
);
Run Code Online (Sandbox Code Playgroud)
但是,我收到Fatal error: Class 'Hero_attributes' not found …