假设没有og:image或link rel img_source,是否有人有任何关于优于随机技术的实际经验或建议来选择最能代表网页的图像?
更新:所有答案都很好,所以对它们进行了全部投票并选择了一个,尽管似乎没有很好的方法可以做到这一点.我将在低分辨率客户端上尝试最大的图片和屏幕截图.谢谢大家!
PS:我发现很多页面似乎都有og:image或link rel img_source.超出我的预期
我们有一个安装在客户端站点的Android硬件/软件组合.
在某些平板电脑上,内存开始运行不足,Android开始通过查杀我们的应用程序,然后由我们的看门狗服务自动重启.
这是我们用来监控的代码per-app memory usage:
for( RunningAppProcessInfo info : am.getRunningAppProcesses() ) {
int memused = am.getProcessMemoryInfo(
new int[]{info.pid})[0].getTotalPss();
Log.log(DIAG_INFO, "Process Mem: " + info.processName, memused);
}
Run Code Online (Sandbox Code Playgroud)
这是获取我们的代码 overall system memory levels
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
long availableMegs = mi.availMem / 1048576L;
long threshold = mi.threshold /1048576L;
Run Code Online (Sandbox Code Playgroud)
availableMegs下降到接近threshold(在我们的情况下为64mb)和android开始杀死的东西.
但是,当我们查看每个进程的内存使用情况时,将TotalPss值相加,我们得到正常的总数.没有任何过程失控记忆!
缺少RAM的任何想法?
在我看来,这在iOS9中不再起作用了.这是根据我的SO研究强制改变方向的事实上的方法.它现在冻结了我的SpriteKit游戏.
它只是我,如果没有,是否有人知道另一种选择?
编辑:肖像和UpsideDown仍然有效.似乎只有Landscape模式现在导致冻结
编辑2:其实我认为你可以去肖像< - > UpsideDown和LandscapeLeft < - > LandscapeRight,但不能介于他们之间
我发现无法将帧流(从网络摄像头)写入存储,然后在以后读取帧.如果我在AVVideoCodecH264中使用AssetWriter编写它们,那么我无法使用AssetReader读取它们,因为我收到以下错误:
AVAssetReaderOutput当前不支持压缩输出
如果我尝试写未压缩(从输出设置中删除AVVIdeoCodecH264),那么我得到相反的错误.
AVAssetWriter目前不支持未压缩的输出(转述)
所以我只能用压缩格式编写,我只能读取未压缩的格式,即使写/读函数属于同一个API!
有任何想法吗?
以下是编写代码:
outputSettings = [AVVideoCodecKey : AVVideoCodecH264,
AVVideoWidthKey : NSNumber(value: Float(640)),
AVVideoHeightKey : NSNumber(value: Float(480))]
as [String : Any]
assetWriterInput = AVAssetWriterInput(mediaType: AVMediaTypeVideo,
outputSettings: outputSettings)
pixelBufferAdaptor = AVAssetWriterInputPixelBufferAdaptor(
assetWriterInput: assetWriterInput!,
sourcePixelBufferAttributes: [ kCVPixelBufferPixelFormatTypeKey
as String : Int(kCVPixelFormatType_420YpCbCr8PlanarFullRange)])
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let fileUrl = paths[0].appendingPathComponent("output.mov")
try? FileManager.default.removeItem(at: fileUrl)
assetWriter = try? AVAssetWriter(url: fileUrl, fileType: AVFileTypeMPEG4)
assetWriter?.add(assetWriterInput!)
assetWriterInput!.expectsMediaDataInRealTime = true
assetWriter?.startWriting()
saving = true;
assetWriter?.startSession(atSourceTime: kCMTimeZero)
Run Code Online (Sandbox Code Playgroud)
以及阅读的代码......
let asset = AVAsset(url: fileUrl)
self.assetReader …Run Code Online (Sandbox Code Playgroud) 应该是直截了当的吧?我们可以使用以下侦听器。
chrome.tabs.onRemoved.addListener(function (tabId, removeinfo))
尽管该选项卡已被删除,tabId 将不再有效。这给我们留下了 removeinfo 对象,但 chrome 文档没有说明它包含哪些属性。我是 javascript 新手,所以我不知道是否有办法通过某种反射过程来获取属性。
有任何想法吗?到目前为止,我已经尝试了大约 50 次谷歌搜索。
我创建了一个自定义弹出窗口,用动画工具提示来装饰我的按钮.我跟踪按钮Button.MouseEnter以决定何时显示弹出窗口.我使用Button.MouseLeave来确定何时隐藏弹出窗口.
问题是如果弹出窗口移动鼠标光标(它的外观是动画的),Button.MouseLeave会过早地被触发,尽管我已经为弹出窗口及其所有可视子窗口设置了IsHitTestVisible = false.
这是WPF的设计方式吗?我需要MouseLeave才能在光标离开按钮本身时触发,而不受弹出窗口的影响.
谢谢
\xc2\xa0 阅读MSDN页面,很明显,如果套接字传输层中没有内部缓冲区,Send将阻塞。\xc2\xa0 这实际上是一件好事,因为我不想出现NoBufferSpaceAvailable错误。 \xc2\xa0 我的理解是传输缓冲区空间相当大,但如果发送限制以防止这些错误,我很高兴。
\n\n但是,尚不清楚还有什么会导致 Send 阻塞。\xc2\xa0 我的猜测是,它不会阻塞等待发送的确认,并且 Send 只会将数据排队到传输缓冲区并返回。\xc2 \xa0
\n\n非常糟糕的事情是,如果发送确实阻塞,直到特定套接字实际上完全阻塞直至传输完成。\xc2\xa0 如果是这种情况,那么 1000 个慢速连接中的一个可能会减慢整个发送过程.\xc2\xa0 在这种情况下,SendAsync 确实是强制性的。
\n\n有人有这方面的更多细节吗?
\n致 marc 或任何有 protobuf-net 经验的人:
我有一个架构,其中服务器与客户端保持终身持久连接(通过 TCP)。由于连接层/服务器应该具有较高的正常运行时间,因此它仅对消息进行反序列化并将其传递到应用程序服务器/层。它本身不包含商业逻辑。
clients -> connection layer (deserialization) -> app layer (business logic)
Run Code Online (Sandbox Code Playgroud)
问题是,虽然我现在可以更改业务逻辑,但我无法更改应用程序层和客户端共享的模型,因为连接层依赖于反序列化的模型。
有没有办法让连接层仅将消息部分反序列化到基类,以用于转发/路由目的?
否则,我想我必须在基类中创建一个二进制字段,该字段按原样传递并由应用程序层反序列化。一级序列化,二级反序列化。
编辑:充实
class Message
{
User user;
// not much else in here, potentially routing information
}
class RequestType1: Message
{
// lots of fields
// which are specific to this type of request/reply
}
class RequestType2: Message
{
}
Run Code Online (Sandbox Code Playgroud)
连接层不应该关心特定请求类型的结构。这样我就可以随意更改它们,只要客户端和应用程序层都同意。但目前连接层进行反序列化,因此它确实需要知道模型,任何更改都会迫使我重新启动连接服务器。
我只需要它进行足够的反序列化以进行路由,这意味着“用户信息”+“子类型名称/编号”。
我想我找到了一种通过使用WebClient.UploadFile而不是HttpWebRequest来简化我的代码的方法,但我最终在服务器端获得了一个太短且损坏的几十个字节的文件.知道bug在哪里吗?
谢谢
使用HttpWebRequest(工作正常):
HttpWebRequest req = (HttpWebRequest)HttpWebRequest
.Create("http://" +
ConnectionManager.FileServerAddress + ":" +
ConnectionManager.FileServerPort +
"/binary/up/" + category + "/" +
Path.GetFileName(filename) + "/" + safehash);
req.Method = "POST";
req.ContentType = "binary/octet-stream";
req.AllowWriteStreamBuffering = false;
req.ContentLength = bytes.Length;
Stream reqStream = req.GetRequestStream();
int offset = 0;
while (offset < ____)
{
reqStream.Write(bytes, offset, _________);
_______
_______
_______
}
reqStream.Close();
try
{
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
}
catch (Exception e)
{
_____________
}
return safehash;
Run Code Online (Sandbox Code Playgroud)
使用WebClient(服务器端的损坏文件): …
可能是一个争论性话题,但是......我真的很讨厌我不能做到以下几点:
class User
{
public string ImageURL {get;set;}
}
class UserUI : User
{
public Brush ImageBrush {get;set;}
}
User user = GetFromUserFromServer(); //returns User type object, not UserUI
UserUI userUI = user;
userUI.ImageBrush = CreateBrush(userUI.ImageURL);
Run Code Online (Sandbox Code Playgroud)
相反,我使用以下内容:
class User
{
public virtual string ImageURL {get;set;}
}
class UserUI : User
{
public override string ImageURL
{
get
{
return base.ImageURL ;
}
set
{
if (value != base.ImageURL )
{
base.ImageURL = value;
ImageBrush = CreateBrush(value);
}
}
}
public …Run Code Online (Sandbox Code Playgroud) .net ×2
android ×1
architecture ×1
asyncsocket ×1
avfoundation ×1
c# ×1
downcast ×1
file-upload ×1
html ×1
ios ×1
ios9 ×1
memory ×1
opengraph ×1
opentok ×1
protobuf-net ×1
sockets ×1
thumbnails ×1
tokbox ×1
wcf ×1
web-crawler ×1
webclient ×1
wpf ×1
wpf-controls ×1