小编bde*_*ham的帖子

当我要求/ foo或/ foo /时,为什么Amazon S3不会自动提供/foo/index.html?

我正在考虑使用Amazon S3为我的静态站点提供服务.我创建了一个存储桶并上传了我的文件; 在AWS管理控制台的"网站"标签下,我选中了"已启用",并index.html在"索引文档"字段中输入.我有以下存储桶策略:

{
    "Version": "2008-10-17",
    "Id": "924a2348-de0e-43aa-bb06-83adbcd1db22",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]

}
Run Code Online (Sandbox Code Playgroud)

我有我的桶名而不是my-bucket.在"权限"选项卡下,我还授予"所有人"列表功能.

如果我尝试访问my-bucket.s3.amazonaws.com/index.html我的页面(及其图像,CSS等)按预期显示.但是,只是转到my-bucket.s3.amazonaws.commy-bucket.s3.amazonaws.com/给出一个目录列表XML文件而不是显示页面.如果我试图去,my-bucket.s3.amazonaws.com/subdirectory我得到一个错误(在XML中)说"指定的密钥不存在."最奇怪的是,如果我尝试去my-bucket.s3.amazonaws.com/subdirectory/(带斜杠),没有页面加载,但我的浏览器下载一个空文件命名download.(再次,my-bucket.s3.amazonaws.com/subdirectory/index.html按预期显示页面.)

我在这里做错了吗?index.html当请求目录名时,如何让S3显示文件?

amazon-s3 amazon-web-services

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

iOS支持哪种格式字体?

我想知道iOS支持哪种字体格式.我已经知道iOS支持这种__CODE__格式.你知道它是否支持其他人吗?

谢谢!

例如 - pfm,pmb ???

fonts ios

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

允许在没有标注附件视图的情况下点击注释标注上的任何位置

我有一个地图视图,添加注释或多或少像这样:

- (MKAnnotationView *)mapView:(MKMapView *)mapView
            viewForAnnotation:(id <MKAnnotation>) annotation
{
    MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation
                                                                       reuseIdentifier:@"MKPinAnnotationView"];
    annotationView.canShowCallout = YES;

    UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [detailButton addTarget:self
                     action:@selector(handleButtonAction)
           forControlEvents:UIControlEventTouchUpInside];
    annotationView.rightCalloutAccessoryView = detailButton;

    return annotationView;
}
Run Code Online (Sandbox Code Playgroud)

在iOS 7中,这会在标注的右侧放置一个"i"图标.点击图标触发mapView:annotationView:calloutAccessoryControlTapped:(在代理上)和handleButtonAction:(在自己上).不过,我最近意识到你也可以点击标注上的其他任何地方,并触发相同的两种方法.

使用类型的按钮会发生这种情况,UIButtonTypeDetailDisclosure但似乎没有UIButtonTypeCustom按钮发生.当没有附件视图时点击标注时,也不会触发委托方法.(当然,这种行为并不令人惊讶;令人惊讶的是,如果附件视图是详细信息泄露按钮,那么无论您是点击按钮本身还是只是点击标注中的其他位置,这两种方法都会触发.)

我想摆脱标注中的按钮 - 或者至少用显示我自己的图像而不是股票"i"图标的按钮替换它 - 同时仍允许用户点击标注上的任何地方以触发我的动作.这可能吗?我没有看到MKMapViewDelegate与"callout tapped"对应的方法.

mkmapview ios

19
推荐指数
3
解决办法
9982
查看次数

如何将NSDictionary转换为Swift Dictionary <String,NSObject>?

我正在重写Swift中的Objective-C类来感受语言.在Objective-C中,我的课程包括以下方法:

- (id) initWithCoder:(NSCoder *)aDecoder
{
    return [self initWithActionName:[aDecoder decodeObjectOfClass:[NSString class] forKey:@"actionName"]
                            payload:[aDecoder decodeObjectOfClass:[NSDictionary class] forKey:@"payload"]
                          timestamp:[aDecoder decodeObjectOfClass:[NSDate class] forKey:@"timestamp"]];
}
Run Code Online (Sandbox Code Playgroud)

在使用编译器进行一些试验和错误之后,我设法将其重写为:

convenience init(aDecoder: NSCoder) {
    let actionName = aDecoder.decodeObjectOfClass(NSString.self, forKey: "actionName") as NSString
    let payload = aDecoder.decodeObjectOfClass(NSDictionary.self, forKey: "payload") as NSDictionary
    let timestamp = aDecoder.decodeObjectOfClass(NSDate.self, forKey: "timestamp") as NSDate
    self.init(actionName: actionName, payload: payload, timestamp: timestamp)
}
Run Code Online (Sandbox Code Playgroud)

但是,这仍然在最后一行给出了一个错误:"找不到init接受提供的参数的重载."方法签名init

init(actionName: String, payload: Dictionary<String, NSObject>, timestamp: NSDate)
Run Code Online (Sandbox Code Playgroud)

所以我认为问题是我试图传递NSDictionary而不是Dictionary<String, NSObject>.如何在这两种不完全等效的类型之间进行转换?我是否应该只使用NSDictionary所有必须与其他Objective-C组件交互的代码?

cocoa-touch objective-c swift

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

iOS不会自动清除ImageIO脏内存

我正在创建一个应用程序,它是一种图库 - 它将不同的媒体内容显示为全屏查看器.分配工具显示使用应用程序时,实时字节参数不会超过40 Mb.与此同时,在我将页面滑动20-30次后,应用程序被100%杀死.我检查了Dirty Memory参数,发现它比Live Bytes大小大10倍.并且大部分脏内存消耗了Image IO:

截图http://i40.tinypic.com/25ge51i.jpg

编辑,另一个截图:

截图http://i40.tinypic.com/9t1mh5.png

上面的分配峰值是切换视频/图像媒体内容.问题是脏内存几乎呈线性增长,我需要以某种方式释放它.

关于应用程序设计.应用程序屏幕有一个水平滚动视图.滚动视图包含包含多个图像的视频或拼贴对象.为了节省内存,一次只创建三个页面 - 当前页面和左/右页面.因此,在滚动滚动视图时,总是会创建和删除页面.

我使用[UIImage imageWithContentOfFile: path]方法加载的所有图像.Collage对象在imagesArray中存储UIImage实例.在dealloc方法中,清除了图像轮廓属性.

所以,问题:

  • 它是一种系统错误吗? [UIImage imageWithContentOfFile?]
  • 它是Image IO缓存吗?
  • 我可以清除它吗?

memory-leaks memory-management uiimage ios javax.imageio

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

使用Swift中的sysctlbyname()

我正在使用此Gist中的代码来确定iPhone5,1运行我的应用程序的iOS设备(例如):

- (NSString *)platform
{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);
    return platform;
}
Run Code Online (Sandbox Code Playgroud)

Swift文档表明C数据类型得到了很好的支持,但它没有提到C函数的任何内容.是否有一种纯粹的Swift方法来检索机器标识符,或者我是否必须桥接到Objective-C?

cocoa-touch swift

17
推荐指数
2
解决办法
5468
查看次数

获取 SwiftUI ScrollView 的当前滚动位置

使用 new ScrolLViewReader,似乎可以以编程方式设置滚动偏移。

但我想知道是否也可以获取当前的滚动位置?

似乎ScrollViewProxy唯一附带的scrollTo方法,允许我们设置偏移量。

谢谢!

ios swift swiftui xcode12

17
推荐指数
4
解决办法
4116
查看次数

有没有办法执行更新操作的"干运行"?

我正在更改一个MongoDB集合的模式.(我一直将日期存储为字符串,现在我的应用程序将它们存储为ISODates;我需要返回并更改所有旧记录以使用ISODates.)我想我知道如何使用更新来执行此操作,但是因为这个操作会影响成千上万的记录,所以我不愿意发出一个我不是100%肯定会运作的操作.是否有任何方法可以对更新进行"干运行",以便为少数记录显示原始记录以及如何更改?


编辑:我最终使用为每条记录添加新字段的方法,然后(在验证数据是正确的之后)重命名该字段以匹配原始字段.它看起来像这样:

db.events.find({timestamp: {$type: 2}})
    .forEach( function (e) {
        e.newTimestamp = new ISODate(e.timestamp);
        db.events.save(e);
    } )

db.events.update({},
    {$rename: {'newTimestamp': 'timestamp'}},
    {multi: true})
Run Code Online (Sandbox Code Playgroud)

顺便说一下,将字符串时间转换为ISODates的方法最终起作用了.(我从这个SO答案中得到了这个想法.)

mongodb

15
推荐指数
2
解决办法
4562
查看次数

你如何使用rvm和ree更新rubygems?

当ree是你的默认vm(在Snow Leopard上)时,你如何在rvm下更新rubygems?我在做:

$ rvm ree gem update --system
Run Code Online (Sandbox Code Playgroud)

这导致看起来一切都很好:

Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.7
Updating RubyGems to 1.3.7
Installing RubyGems 1.3.7
RubyGems 1.3.7 installed

[...]

RubyGems installed the following executables:
        /Users/douglassellers/.rvm/rubies/ree-1.8.7-2010.02/bin/gem
Run Code Online (Sandbox Code Playgroud)

但是当我运行gem --version时它仍然说1.3.5.做一个宝石指向ree版本的宝石.

任何人都知道如何使用RVM更新rubygems?

ruby rubygems rvm

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

Python argparse AssertionError

我刚开始使用argparse模块.我编写了以下简化代码片段来演示我遇到的问题.

from argparse import ArgumentParser

if __name__ == '__main__':
    parser = ArgumentParser('Test argparse. This string needs to be relatively long to trigger the issue.')
    parser.add_argument('-f', '--fin', help='a', required = True)
    parser.add_argument('-o', '--out ', help='b', required = True)
    parser.add_argument('-t', '--trans', help='c', required = True)

    args = parser.parse_args()
    print(repr(vars(args)))
Run Code Online (Sandbox Code Playgroud)

AssertionError将使用参数-h运行脚本时生成

Traceback (most recent call last):
  File "arg.py", line 10, in <module>
    args = parser.parse_args()
  File "C:\Users\user\AppData\Local\Continuum\Anaconda\envs\py3k\lib\argparse.py", line 1707, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "C:\Users\user\AppData\Local\Continuum\Anaconda\envs\py3k\lib\argparse.py", line 1739, …
Run Code Online (Sandbox Code Playgroud)

python argparse

12
推荐指数
2
解决办法
3350
查看次数