我刚遇到一个奇怪的问题.我正在尝试将模型加载到OpenGL,在我加载纹理的部分我使用auxDIBImageLoadA(dibfile:PWideChar)函数.这是我的代码调用它
procedure CreateTexture(var textureArray: array of UINT; strFileName: string; textureID: integer); // Vytvožení textury
var
pBitmap: PTAUX_RGBImageRec;
begin
if strFileName = '' then exit;
MessageBox(0,PWideChar(strFileName),nil,SW_SHOWNORMAL);
pBitmap := auxDIBImageLoadA(PWideChar(strFileName));
if pBitmap = nil then exit;
...
Run Code Online (Sandbox Code Playgroud)
MessageBox仅用于控制.这就是:我运行应用程序,"FACE.BMP"出现一个框.好的.但后来我说错了"Failed to open DIB file F".当我设置stFileName为xFACE.BMP,我得到一个"Failed to open DIB file x".因此,出于某种原因,该函数似乎只采用了第一个字符.
我错过了什么吗?我正在使用glaux.dll,我从不同来源下载了5次,所以它应该没有错误(我希望每个OpenGL网站都提到它).
我有一个应用程序隐藏在红十字会关闭.用户可以通过右键单击托盘图标并选择退出来退出.但它显然会阻止Windows关闭,所以我做了一个程序来响应WM_QUERYENDSESSION来启用关闭,这是相关的代码:
procedure TMainForm.OnWindowsEnd(var Msg: TMessage); // responds to message WM_QUERYENDSESSION;
begin
AllowClose:=true;
Close;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=AllowClose;
if NOt AllowClose then
Hide;
end;
Run Code Online (Sandbox Code Playgroud)
但奇怪的事情不断发生.当我发出关闭时,这个应用程序很好地关闭.但就是这样.当我发出第二次关机时,系统退出正常.(我在WinXP中测试这个).
可能是什么原因?谢谢
答案 代码应如下所示
procedure TMainForm.OnWindowsEnd(var Msg: TMessage); // responds to message WM_ENDSESSION;
begin
// Possible checking for flags, see http://msdn.microsoft.com/en-us/library/aa376889%28v=vs.85%29.aspx
AllowClose:=true;
Msg.Result:=1;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=AllowClose;
if NOt AllowClose then
Hide;
end;
Run Code Online (Sandbox Code Playgroud) 我在XE2中找到了Remy Lebeau的IdTCP组件聊天演示,我想稍微玩一下.(可以在这里找到)我想使用这些组件发送图片,最好的方法似乎是使用TMemoryStream.如果我发送字符串,连接工作正常,字符串传输成功,但是当我将其更改为流时,它不起作用.这是代码:
服务器
procedure TMainForm.IdTCPServerExecute(AContext: TIdContext);
var rcvdMsg: string;
ms:TMemoryStream;
begin
// This commented code is working, it receives and sends strings.
// rcvdMsg:=AContext.Connection.IOHandler.ReadLn;
// LogMessage('<ServerExec> '+rcvdMsg);
//
// TResponseSync.SendResponse(AContext, rcvdMsg);
try
ms:=TMemoryStream.Create;
AContext.Connection.IOHandler.ReadStream(ms);
ms.SaveToFile('c:\networked.bmp');
except
LogMessage('Failed to receive',clred);
end;
end;
Run Code Online (Sandbox Code Playgroud)
客户
procedure TfrmMain.Button1Click(Sender: TObject);
var ms: TMemoryStream;
bmp: TBitmap;
pic: TPicture;
s: string;
begin
// Again, this code is working for sending strings.
// s:=edMsg.Text;
// Client.IOHandler.WriteLn(s);
ms:=TMemoryStream.Create;
pic:=TPicture.Create;
pic.LoadFromFile('c:\Back.png');
bmp:=TBitmap.Create;
bmp.Width:=pic.Width;
bmp.Height:=pic.Height;
bmp.Canvas.Draw(0,0,pic.Graphic);
bmp.SaveToStream(ms);
ms.Position:=0;
Client.IOHandler.Write(ms); …Run Code Online (Sandbox Code Playgroud) 我希望能够从我的原型生成一个项目,其中一个属性默认为空,或者如果在命令行上指定则填充。
这是我的archetype-metadata.xml:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="basic">
<requiredProperties>
<requiredProperty key="compilerVersion"/>
<requiredProperty key="dependencyClassifier">
<defaultValue></defaultValue>
</requiredProperty>
</requiredProperties>
</archetype-descriptor>
Run Code Online (Sandbox Code Playgroud)
这是行不通的。如果 中有任何非空白值dependencyClassifier,则它可以完美运行。但是,我无法让它在默认值为“空”的情况下工作。
我在defaultValue为空/空时得到的错误是:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:generate (default-cli) on project standalone-pom: Archetype com.avast.archetype:compile-java:1.0.21 is not configured
[ERROR] Property dependencyClassifier is missing.
[ERROR] -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
或者,我会接受能够在命令行上传递一个空值(或“空白”值)。同样,使用"-DdependencyClassifier= "不起作用。
如何指定属性默认为空?
谢谢
我想要实现的是能够从原型创建一个项目,其中包含一个依赖声明:
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>artifact</artifactId>
<version>${dependencyVersion}</version>
<classifier>${dependencyClassifier}</classifier>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我需要能够实例化${dependencyClassifier}原型创建。这是可能的${dependencyVersion},因为它永远不会为空。但是,默认情况下,分类器应为空。
我在nginx后面有一个Artifactory,上传大于4 GB的文件失败。我可以肯定这是nginx的错,因为如果文件从本地主机上传到本地,则不会发生任何问题。
nginx的设置有client_max_body_size和client_body_timeout足够大的并非是一个问题。
尽管如此,当通过curl上传大文件(> 4 GB)时,大约半分钟后它仍然失败。我收到的唯一错误消息是HTTP 500 Internal Server Error,没有任何内容写入nginx的错误日志。
我有一个看似非常基本的问题,但我只是想确定一下.
这两者有区别吗?
var ClassArray: array of TMyClass;
constructor TMyClass.Create;
begin
SetLength(ClassArray, Length(ClassArray)+1);
ClassArray[Length(ClassArray)-1]:=Self;
end;
begin
for i:=0 to x do
ClassArray[i].MyProcedure;
Run Code Online (Sandbox Code Playgroud)
和
var PointerArray: array of Pointer;
constructor TMyClass.Create;
begin
SetLength(PointerArray, Length(PointerArray)+1);
PointerArray[Length(PointerArray)-1]:=Self;
end;
begin
for i:=0 to x do
TMyClass(PointerArray[i]).MyProcedure;
Run Code Online (Sandbox Code Playgroud)
因为当我玩它时它的工作方式,唯一的区别是我无法直接查看PointerArray中的元素(因为只显示了地址).
谢谢
我有一个 Symfony 项目,我向其中添加了一些包含各种类的非 symfony php 文件。但由于某种原因,即使 IDE 正确地看到了这些类,加载网站时也不会加载这些类。
所以,我有一个类需要其他类:
namespace rootspace\FrontBundle\Controller;
use rootspace\FrontBundle\Networks\TwitterOAuth;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class TwitterController extends Controller
{
public function connectAction(){
// The TwitterOAuth instance
$connection = new TwitterOAuth('abc', '123');
}
}
Run Code Online (Sandbox Code Playgroud)
然后是无法加载的类(需要另一个文件)
namespace rootspace\FrontBundle\Networks;
/* Load OAuth lib. You can find it at http://oauth.net */
//require_once('OAuth.php'); -- should this be commented out?
/**
* Twitter OAuth class
*/
class TwitterOAuth {
/* Contains the last HTTP status code returned. */
}
Run Code Online (Sandbox Code Playgroud)
最后是第三个文件
namespace …Run Code Online (Sandbox Code Playgroud) 我查阅了有关使用 Spring Security 的文章,但它们并不能完全满足我的需求。他们通常处理内存中的用户和明文密码。
我想要达到的目标:
客户端使用基本身份验证进行身份验证。
安全控制器方法如下所示:
@RequestMapping(value = "/test")
public ResponseEntity test(@AuthenticationPrincipal MyUser user){
// Logic
}
Run Code Online (Sandbox Code Playgroud)
如果给定用户已通过身份验证,我希望控制器方法在其参数中获取一个 MyUser 对象,否则为 null。
我将散列密码和用户的盐存储在数据库中,并且我有一个服务,该服务对给定的用户名-密码对进行身份验证,并在身份验证成功或失败时分别返回一个 User 对象或 null。
现在需要做的就是拦截每个请求,查看基本身份验证标头,将信息传递给我的自定义身份验证服务,然后将其结果传递给控制器方法。不幸的是,我无法做到这一点。
我继续阅读使用 custom UserDetailsService,但这似乎只能处理从数据库中获取用户数据,而不是任何身份验证。我无法弄清楚如何将所有组件连接在一起。
你能指出我如何让这个相当简单的工作流程工作的正确方向吗?
编辑
我没有使用 XML 配置,我拥有的唯一与安全相关的配置是:
@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").csrf().disable();
http.authorizeRequests()
.antMatchers("/user").permitAll()
.antMatchers("/user/**").permitAll()
.anyRequest().authenticated();
}
}
Run Code Online (Sandbox Code Playgroud) 我在使用 Supervisord 部署新服务时遇到了一些奇怪的事情。这些是相关部分:
\n# supervisord.conf\n\n[program:express]\ncommand=yarn re-express-start\nRun Code Online (Sandbox Code Playgroud)\n# package.json\n{\n "scripts": {\n "re-express-start": "node lib/js/client/Express.bs.js",\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n当我运行时supervisorctl start,节点服务器按预期启动。但是在我运行之后supervisorctl stop,服务器继续运行,即使主管认为它已被杀死。
如果我将supervisord.conf文件更改为直接执行node lib/js/client/Express.bs.js(无需经过yarn),那么这将按预期工作。但我想浏览一下package.json定义的脚本。
我研究了进程树的样子,但不太明白为什么。以下是停止supervisord-management服务之前和之后的流程。
\n$ ps aux | grep node\nuser 12785 1.4 3.5 846404 72912 ? Sl 16:30 0:00 node /usr/bin/yarn re-express-start\nuser 12796 0.0 0.0 4516 708 ? S 16:30 0:00 /bin/sh -c node lib/js/client/Express.bs.js\nuser 12797 5.2 2.7 697648 56384 ? Sl 16:30 0:00 …Run Code Online (Sandbox Code Playgroud) 是否可以让一个Mock对象在调用时返回一个值并在调用时执行一条语句?例如这个:
> mocked_func = Mock(return_value='Returned foo',
side_effect=lambda: print('Side effect executed')
)
> print(mocked_func())
Side effect executed
None
Run Code Online (Sandbox Code Playgroud)
这里的文档似乎有点含糊,但在我看来,side_effect使用 when 时,then被完全忽略,只返回 functionreturn_value的结果(在is的情况下)。side_effectprint()None
由于Python并不真正支持多语句lambda(据我所知,你能做的最好的事情就是将表达式放入一个元组中,但随后将返回整个元组) - 是否可以组合两个参数?
我想避免必须定义一个新函数并将其用作side_effect,我觉得在 a 中声明两者Mock更干净。