小编bma*_*ter的帖子

Automator:如何使用"从列表中选择"操作?

我正在尝试使用Automator创建一个只调用textutil convert的服务.最终,我希望能够右键单击docx文件并转换为文本,rtf,html等.在我右键单击后,我想要一个非常简单的弹出窗口,询问所需的格式.

我看到从列表中选择操作.它没有选择.在某个地方,我想到了从列表中选择的输入是获取指定文本.然后我尝试将我的值列表放在Get Specified Text中.但是,当我运行它时,我只得到一行.我已经尝试了每行一个项目,逗号分隔,空格分隔,甚至用花括号括起来,用逗号分隔.什么都行不通.

如何让选择器对话框显示我的所有选项?此外,有没有办法将选择限制为一个项目?

谢谢!

automator截图 结果

macos automator

7
推荐指数
2
解决办法
1万
查看次数

如何在Java Servlet过滤器中安全地处理密码?

我有一个过滤器,通过HTTPS处理BASIC身份验证.这意味着有一个名为"Authorization"的标题,其值类似于"Basic aGVsbG86c3RhY2tvdmVyZmxvdw ==".

我不关心如何处理身份验证,401加WWW-Authenticate响应头,JDBC查找或类似的东西.我的过滤器工作得很漂亮.

我担心的是我们永远不应该在java.lang.String中存储用户密码,因为它们是不可变的.一旦我完成身份验证,我就无法将String归零.该对象将驻留在内存中,直到垃圾收集器运行.这为一个坏人提供了一个更宽的窗口,可以获得核心转储,或以其他方式观察堆.

问题是我看到的唯一方法是通过该javax.servlet.http.HttpServletRequest.getHeader(String)方法读取Authorization标头,但它返回一个String.我需要一个getHeader方法,它返回一个字节或字符数组.理想情况下,请求永远不应该是任何时间点的字符串,从Socket到HttpServletRequest以及它们之间的任何地方.

如果我切换到一些基于表单的安全性,问题仍然存在. javax.servlet.ServletRequest.getParameter(String)也返回一个String.

这仅仅是Java EE的限制吗?

java security passwords servlets filter

5
推荐指数
1
解决办法
1527
查看次数

iPad崩溃,UIActionSheet显示在子视图控制器上

如果有人问过这个我道歉,但我似乎无法在任何地方找到它.我甚至在一个演示项目中重新创建了我的问题,以防你们想要亲眼看到它,尽管我不知道应该在哪里发布它.

我有一个基于xibless UINavigationController的应用程序.我的一些子ViewControllers在顶部的右侧有一个按钮,然后显示一个UIActionSheet.我的应用程序专为iPhone和iPad设计,所以当我准备好显示UIActionSheet时,我会:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:@"%@ Menu", [self title]] delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Email", @"Print", nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleDefault];
if ([actionSheet respondsToSelector:@selector(showFromBarButtonItem:animated:)])
    [actionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
else [actionSheet showInView:[self view]];
[actionSheet release];
Run Code Online (Sandbox Code Playgroud)

在iPad上,我试图将UIActionSheet显示在右侧条形按钮上,在iPhone上它应该从底部滑入.所有这一切都很美妙.

不幸的是,如果你点击按钮并在iPad上显示菜单,然后点击应用程序左上方的后退按钮,菜单就不会被忽略.相反,UINavigationController尽职尽责地回弹,UIActionSheet仍然存在.如果你尝试点击菜单上的东西,你当然会崩溃.如果用户在屏幕上点击了其他任何内容而不是"后退"按钮,则菜单会正确地解除.

如果您在iPhone上尝试此测试,一切都按预期工作.没有问题.

我的演示项目有一个AppDelegate和一个ViewController就是这样.AppDelegate构建了NSDictionaries的NSDictionary,因此我有一个模型,我可以通过它来演示这个问题.ViewController显示字典的所有键,如果相应的值是NSDictionary,您可以点击它以向下钻取.

cocoa-touch uikit uiactionsheet ipad ios

3
推荐指数
1
解决办法
2601
查看次数

如何在 iOS 上使用 libtiff 编写 1bpp tiff?

我正在尝试使用 libtiff 将 UIImage 写为 tiff。问题是,即使我将它写为每像素 1 位,当我期望更接近 100k 或更少的东西时,文件仍然在 2-5MB 范围内。

这就是我所拥有的。

- (void) convertUIImage:(UIImage *)uiImage toTiff:(NSString *)file withThreshold:(float)threshold {

    TIFF *tiff;
    if ((tiff = TIFFOpen([file UTF8String], "w")) == NULL) {
        [[[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"Unable to write to file %@.", file] delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil] show];
        return;
    }

    CGImageRef image = [uiImage CGImage];

    CGDataProviderRef provider = CGImageGetDataProvider(image);
    CFDataRef pixelData = CGDataProviderCopyData(provider);
    unsigned char *buffer = (unsigned char *)CFDataGetBytePtr(pixelData);

    CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(image);
    CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(image);
    size_t compBits …
Run Code Online (Sandbox Code Playgroud)

png uiimage libtiff ios gpuimage

2
推荐指数
1
解决办法
1525
查看次数