我正在将一些RSS源添加到App Engine中的数据存储区中,以便为iPhone应用程序提供服务.我使用cron来安排每x分钟更新一次RSS.每个任务只解析一个RSS源(有15-20个项目).我经常收到有关App Engine仪表板中高CPU使用率的警告,因此我正在寻找优化代码的方法.
目前,我使用minidom(因为它已经在App Engine上),但我怀疑它不是很有效!
这是代码:
dom = minidom.parseString(urlfetch.fetch(url).content)
if dom:
items = []
for node in dom.getElementsByTagName('item'):
item = RssItem(
key_name = self.getText(node.getElementsByTagName('guid')[0].childNodes),
title = self.getText(node.getElementsByTagName('title')[0].childNodes),
description = self.getText(node.getElementsByTagName('description')[0].childNodes),
modified = datetime.now(),
link = self.getText(node.getElementsByTagName('link')[0].childNodes),
categories = [self.getText(category.childNodes) for category in node.getElementsByTagName('category')]
);
items.append(item);
db.put(items);
def getText(self, nodelist):
rc = ''
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
return rc
Run Code Online (Sandbox Code Playgroud)
没有太多事情发生,但脚本通常需要2-6秒的CPU时间,这似乎有点过于循环20个项目和阅读一些属性.
我能做些什么来加快速度?上面的代码中有什么特别糟糕的,或者我应该改为另一种解析方式?是否有更好的库(适用于App Engine),或者我自己更好地解析RSS?
我怎么能创建这样的东西:Html.MyApp.ActionLink()?谢谢.
目前我[Authorize]对我的所有方法都有属性,AdminController除了Logon动作.
反转这个的最简洁的方法是什么,所以我不必记住将属性添加到所有方法,而是仅将属性添加到应该可用的方法而不登录?
将Logon动作移动到自己的控制器,并将该[Authorize]属性应用于AdminController类,我会更好吗?
F#(在函数/递归样式中)最简单的方法是,给定一个单词中的数字,将其转换为数字等价物?
我现在只看英文.例如:
let parseNumber (s : string) =
match s with
| "One" -> 1
| _ - failwith "Cannot parse"
let result = parseNumber "One Thousand Two Hundred"
// result should be 12000
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,不涉及一个庞大的查找表?
我的文件夹结构如下所示:
lib\
my_library.dart
web\
index.html
main.dart
pubspec.yaml
Run Code Online (Sandbox Code Playgroud)
在main.dart,我正在进行my_library.dart(library my_library通过顶部)导入:
import '../lib/my_library.dart';
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,拥有这条相对路径感觉有点脆弱.我读了可能使用的Pub Package Layout Conventionsimport 'package:blah' ; 它说:
当您在自己的包中使用库时,即使是src中的代码,您也可以(并且应该)仍然使用"package:"来导入它们
所以,我尝试将我的代码更改为:
import 'package:my_library.dart';
Run Code Online (Sandbox Code Playgroud)
但是,在Chrome Dev Editor中,我得到:
目标或URI不存在:'package:grid_data.dart'
在Dartium我得到:
GET http:// 127.0.0.1:51792/MyProject/web/packages/my_library.dart 404(未找到)
lib从我的项目中的其他dart文件导入我的文件夹中的内容的正确方法是什么?
我正在尝试创建一个函数,该函数仅在参数包含它时才接受string并返回number包含undefined在返回类型中。
这是我所拥有的(我认为会起作用):
export function test<T extends string | undefined>(a: T)
:Exclude<boolean | T, string> {
if (a === undefined)
return undefined;
return true;
}
Run Code Online (Sandbox Code Playgroud)
我希望从离开或不离开(取决于提供的参数类型)中Exclude<boolean | T, string>删除 ,但是此代码不进行类型检查,它说:stringstring | undefinedundefined
Type
'undefined'不可分配给 type'boolean | Exclude<T, string>'。
我在Bitbucket上分叉了一些elses存储库并进行了一些更改(并将它们推送到我的分叉存储库).与此同时,原作者进行了重大修改(几乎是重写).
我想更新我的repo与他的完全相同(但我的更改仍然存在于该标签上),他可以轻松地提取我的新更改,而不会影响我之前做出的任何更改.
我将他的更改添加到我的本地版本中,这让我有两个脑袋.我想把他的头作为提示/默认.我尝试通过以下方式解决此问题(基于一些SO答案):
hg update -r [myrev]
hg commit --close-branch
hg update -r [hisrev]
Run Code Online (Sandbox Code Playgroud)
这似乎让我处于我想要的状态.我的工作目录看起来像他的.然而,当我hg push试着告诉我这会产生多个遥控头时,我不确定这是否是我想要的(这个消息让它听起来很吓人!)
那么,我这样做了吗?我应该强行推吗?这会做我想做的事情(例如,保留我的更改副本,以便我可以找到它们,但这种方式通常不会干扰?).如果是这样,这是实现这一目标的最佳方式吗?
根据维基百科(并在Dario Solera的回答中证实),在意大利,他们使用冒号格式化时间:
24小时表示法以书写形式使用冒号作为分隔符.示例:14:05.会议记录以两位数字写成; 小时数可以写入或不带前导零.
但是,运行以下代码似乎输出点:
using System.Globalization;
Thread.CurrentThread.CurrentCulture = new CultureInfo("it-IT");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("it-IT");
// Outputs "11.08"
Console.WriteLine(DateTime.Now.ToShortTimeString());
// Outputs "."
Console.WriteLine(new CultureInfo("it-IT").DateTimeFormat.TimeSeparator);
Run Code Online (Sandbox Code Playgroud)
这是一个框架错误吗?什么是"修复"它的最佳方法?TimeSeparator是可设置的 - 我们应该在分配之前覆盖它Thread.CurrentThread.CurrentCulture吗?
我正在玩谷歌的Dart docker图像.我正在尝试构建一个侦听端口80的Hello World应用程序.我在Azure上的Ubuntu Server 14上运行它.
如果我运行google/dart-hello,它一切正常,我可以连接端口8080.
该google/dart-hello图像是基于对google/dart-runtime图像,其又,根据google/dart.基础图像添加了Dart; google/dart-runtime添加一个Dockerfile,它希望执行bin/server.dart并公开端口8080,并google/dart-hello提供bin/server.dart(和pubspec.yaml)使其工作.google/dart-runtime它本身没用,因为它不包含bin/server.dart或pubspec.yaml.
所以,google/dart-runtime是一个很好的基础,如果你的服务器是在bin/server.dart 和你想在8080端口上监听,因为我想为侦听端口80,我使用的google/dart图像为基础,希望能压扁什么在google/dart-runtime和google/dart-hello进入我的容器,但改为80端口.
您可以在此处找到三个Google图片的来源回购:
所以,我从中获取了Dockerfile google/dart-runtime和来自的文件google/dart-hello,所以我有以下内容:
FROM google/dart
WORKDIR /app
ONBUILD ADD pubspec.yaml /app/
ONBUILD ADD pubspec.lock /app/
ONBUILD RUN pub get
ONBUILD ADD . /app …Run Code Online (Sandbox Code Playgroud) 我正在使用drawImageRect在 Flutter 中绘制画布:
canvas.drawImageRect(image, sourceRect, destRect, _paint);
Run Code Online (Sandbox Code Playgroud)
我有一个不透明度值(0 到 1 之间的双精度值)。如何使用该值绘制图像(以便 0 不可见,0.5 为半不透明度)?
.net ×4
dart ×3
asp.net-mvc ×2
c# ×2
asp.net ×1
bitbucket ×1
cultureinfo ×1
dart-pub ×1
docker ×1
dvcs ×1
f# ×1
flutter ×1
html-helper ×1
localization ×1
mercurial ×1
python ×1
razor ×1
recursion ×1
skia ×1
typescript ×1