这个例程是我们游戏引擎中的一些实用程序代码。它可以运行可执行文件并可选择等待其退出。它将返回其退出代码:
function TSvUtils.FileExecute(ahWnd: Cardinal; const aFileName, aParams, aStartDir: string; aShowCmd: Integer; aWait: Boolean): Integer;
var
Info: TShellExecuteInfo;
ExitCode: DWORD;
begin
Result := -1;
FillChar(Info, SizeOf(Info), 0);
Info.cbSize := SizeOf(TShellExecuteInfo);
with Info do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := ahWnd;
lpFile := PChar(aFileName);
lpParameters := PChar(aParams);
lpDirectory := PChar(aStartDir);
nShow := aShowCmd;
end;
if ShellExecuteEx(@Info) then
begin
if aWait then
begin
repeat
Sleep(1);
Application.ProcessMessages;
GetExitCodeProcess(Info.hProcess, ExitCode);
until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
CloseHandle(Info.hProcess);
Result := ExitCode;
end;
end
end;
以下是一些可以检查进程是否存在的代码。所以...当前应用程序调用更新程序并终止。更新程序可以检查旧应用程序是否已终止并执行操作(重命名、更新、删除等):
function TSvUtils.ProcessExists(const aExeFileName: string; aBringToForgound: Boolean=False): Boolean;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := False;
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(aExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(aExeFileName))) then
begin
if aBringToForgound then
EnumWindows(@BringToForgroundEnumProcess, FProcessEntry32.th32ProcessID);
Result := True;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
我为此构建了一个相当便宜的 API,实际上是为了解析电子邮件和电子邮件链签名中的联系人数据。它被称为 SigParser。您可以在此处查看 Swagger 文档。
基本上,您向它发送一个带有 JSON 正文的标头“x-api-key”,如下所示,它会解析电子邮件回复链中的所有联系人。
{
"subject": "Thanks for meeting...",
"from_address": "[email protected]",
"from_name": "Bill Gates",
"htmlbody": "<div>Hi, good seeing you the other day.</div><div>--</div><div>Bill Gates</div><div>Cell 777-444-8888</div><a href=\"https://www.linkedin.com/in/williamhgates/\">LinkedIn</a><a href=\"https://twitter.com/BillGates\">Twitter</a>",
"plainbody": "Hi, good seeing you the other day. \r\n--\r\nBill Gates\r\nCell 777-444-8888",
"date": "Mon, 28 May 2018 23:33:40 +0000 (UTC)"
}
据我阅读 calendar.getTimeInMillis();返回以毫秒为单位的 UTC 时间。我使用了以下代码,并将其与本网站 http://www.xav.com/time 中的纪元进行了比较.cgi。
public int GetUnixTime()
{
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
int utc = (int)(now / 1000);
return (utc);
}
乔拉
$this->title = "Edit album";
$this->headTitle($this->title);
我喜欢 @lbsweek 的解决方案,但我有点担心只是为了转换而分配 UIView,而是尝试了下面的方法
- (UIImage *)rotateImage:(UIImage *)sourceImage byDegrees:(float)degrees
{
CGFloat radian = degrees * (M_PI/ 180);
CGRect contextRect = CGRectMake(0, 0, sourceImage.size.width, sourceImage.size.height);
float newSide = MAX([sourceImage size].width, [sourceImage size].height);
CGSize newSize = CGSizeMake(newSide, newSide);
UIGraphicsBeginImageContext(newSize);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGPoint contextCenter = CGPointMake(CGRectGetMidX(contextRect), CGRectGetMidY(contextRect));
CGContextTranslateCTM(ctx, contextCenter.x, contextCenter.y);
CGContextRotateCTM(ctx, radian);
CGContextTranslateCTM(ctx, -contextCenter.x, -contextCenter.y);
[sourceImage drawInRect:contextRect];
UIImage* rotatedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return rotatedImage;
}
看看这些:
http://msdn .microsoft.com/en-us/library/ms750564%28v=vs.85%29.aspx
特别是 WrapPanel
编辑:
ItemsControl 控件有一个 ItemsPanel 属性,您可以将其设置为使用 WrapPanel:
http://msdn.microsoft.com/en-us/library /system.windows.controls.itemscontrol.itemspanel.aspx
对于这样的情况,您可以使用 LinkableBehavior。它专为您想要的结果而设计。如果您不想使用它,则必须在标签控制器上进行查询:
$this->Tag->find('all', array('conditions' => array('Tag.name' => 'ruby')));
编辑 - 添加左连接
var accounts =
from account in context.Accounts
from owner in account.AccountOwners
join business in context.Businesses
on account.CreditRegistryId
equals business.RegistryId
join astatus in context.AccountStatuses
on account.AccountStatusId
equals astatus.AccountStatusId
join LS in context.LegalStatuses
on account.LegalStatusId
equals LS.LegalStatusId
from accountType in context.AccountTypes
.Where(at => at.AcountTypeCode == account.AccountType)
.DefaultIfEmpty()
where !excludeTypes.Contains(account.AccountType)
select new AccountsReport
{
AccountTypeDescription = accountType.Abbreviation == null ? account.AccountType : accountType.Abbreviation,
AccountNumber = 1,
AccountStatus = "aasd",
CreditorAddress = "address",
CreditorCity = "my city",
CreditorName = "creditor name",
CreditorState = "my state",
LegalStatus = "my status",
RegistryId = 121323
};
取决于几件事。但一种方法是确保当你想要香蕉时你只吃香蕉。我确信类型之间存在差异,因此您可以对此进行断言(例如,断言所有对象的名称仅是“banana”)。
您可以从 STL 集中实现priority_queue。
您有 3 个选项,您的选择取决于您的技能以及您愿意投入多少时间:
基本身份验证
让您的用户在应用程序中输入用户名和密码,然后仅使用 HTTP BasicAuth 标头来访问网站。 Plone 支持开箱即用的 Basic auth 身份验证。
这不是最安全的方法;密码基本上都是以 base64 编码发送的,因此您可能希望使用 HTTPS 与服务器通信。无论如何,对于身份验证来说,这都是一个好主意。
Cookie 身份验证
将包含 __ac_name
和 __ac_password
项的 POST 请求发送到 Plone 站点上的“/login_form”,并捕获 Set-Cookie
标头响应,包含 __ac
cookie。这是一个 tk-auth 身份验证令牌,您可以在任何后续请求中使用。这是一个安全的 cookie,但任何嗅探 HTTP 通信流的攻击者都可以重复使用它,因此 HTTPS 再次成为安全的通信方式。
OAuth
Plone(尚)不支持开箱即用的 OAuth,但与 python-oauth 集成应该是微不足道的。这很可能需要编写 PluggableAuthSystem (PAS) 插件。
好吧,我不是要解释为什么;) - 但你可以反过来做,只给 非 IE 浏览器 提供 border-radius
样式.. 事实上通过条件注释的组合,您可以为 IE9 和其他浏览器提供边框半径样式,我不知道您的意思是哪个脚本发生冲突,但也许您也可以将脚本提供给需要它的浏览器?
这是一个示例(不使用 border-radius 但希望您能明白这个想法..)
<style type="text/css" media="screen">
div {
padding: 40px;
color: #fff;
}
</style>
<!--[if IE]>
<style type="text/css" media="screen">
div {background: #00f}
</style>
<![endif]-->
<!--[if (!IE)|(gt IE 7)]><!-->
<style type="text/css" media="screen">
div {background: #f00}
</style>
<!--<![endif]-->
HTML:
<div>
<p>background is red in non-IE browsers,and IE gt 7 - but background is blue in other IE's</p>
</div>
关于上述条件注释..
第一个是常规样式,
第二个是“传统”隐藏条件注释,只有 IE 才能看到
第三个是显示注释,所有浏览器都可以看到,但 IE 仍然读取
您将通用规则放在普通工作表中的参数,以及边框半径里面的规则在第三个样式注释中的一个表中,
您可以更改第三个注释的参数,它基本上是说 if NOT IE OR is gt IE7
有关参数的更多信息:关于条件评论
from urllib import pathname2url
pathname2url('foo,bar.mp3')
使用 ls -dm */ 生成以逗号分隔的目录列表。
-d
将仅返回目录,-m
将输出到以逗号分隔的列表。然后,您可以将输出存储在变量中并将其作为参数传递:
Use
ls -dm */
to generate a comma-separated list of directories.-d
will return directories only and-m
will output to a comma-separated list.You could then store the output in a variable and pass it along as an argument:
获取所有目录(以逗号分隔)并将输出发送到其他脚本