当您将应用程序提交到Apple应用程序商店时,会有一个名为"评级"的部分,您应该根据图表对内容进行评级,并确定内容的显示频率.
有一个名为"Unrestricted web access"的选项,在Internet和iTunes Connect开发人员指南中没有关于此的更多详细信息.你到处都可以找到:
如果您的应用允许用户浏览和查看网页(例如使用嵌入式浏览器),请选择"是".
这是什么意思?这是否意味着您的应用可以在嵌入式或Safari浏览器中打开链接?或者这是否意味着您的应用程序具有浏览器,用户可以在其中输入URL并在网络中无限制地浏览?因为对这个问题说"是"会让你的应用程序超过17岁!
如果这意味着从您的应用程序(Safari或嵌入式)打开链接,那么具有嵌入式浏览器功能的其他应用程序如何获得4+评级(如Twitter和Facebook)?正如在屏幕截图中可以看到的那样,没有办法选择这个并且不被评为17+
更新:我的应用程序已通过嵌入式WebView(TOWebViewController)批准,答案为"否"(4+).正如答案所提到的,任何让用户通过互联网浏览的方式,例如动态地址栏,这意味着它应该是"是"(17+),因为无法在WebView上进行家长控制.
更新2:自iOS 9发布以来,Apple推出了SFSafariViewController,这是一种在互联网上打开任何URL的方式.此功能还有一个地址栏,但只读.因此,如果没有家长控制,用户就无法上网.它还继承了Safari中的内容阻止(广告,显式内容等).我非常积极地使用iOS 9或更高版本的SFSafariViewController你仍然可以选择4+,因为家长控制的设备无论如何也无法打开任何URL.(如果我错了,请告诉我)
更新3:Twitter现在是17岁以上,基于以下几点:
您必须年满17岁才能下载此应用程序.
罕见/温和的亵渎或粗暴的幽默
频繁/激烈的成熟/暗示主题
罕见/轻度的性内容和裸露
更新4:可以在您的应用程序内使用Twitter内容,而无需继承其评级(17+).我的应用程序正在显示推文,但由于用户是经过验证和信任的公众人物,我可以降到12岁以上:
罕见/轻度的性内容和裸露
罕见/温和的亵渎或粗暴的幽默
罕见/温和的成熟/暗示主题
itunesconnect uiwebview appstore-approval ios sfsafariviewcontroller
我在Storyboard中有150个UIViewController,在这些视图之间滚动是如此之慢.我无法轻松放大和缩小,制作麦粒肿需要一些时间.
我在MBPR上,我安装了Xcode 4.4
规格:2.3GHz/16G/256,我认为它足以处理这样的事情.
是否有任何选项,设置或提示/技巧可以在故事板中拥有如此多的视图,并且不会错过性能.
注意:我已经完成了所有可能的解决方案(删除缓存和工作区).没工作.它与Storyboard中的UIViewController数量有关.
谢谢
2016年更新:只是为了更新这个问题,因为Xcode 7中有一个新功能,允许您将Storyboard重构为多个Storyboard.
如果您搜索术语"重构故事板",您会发现很好的教程:)
您可能已经注意到亚马逊已经宣布了自己的ElasticCache产品的新功能,该产品支持Redis.
我们目前正在为我们的Redis使用一个EC2实例(现在正在排队),我们决定将Redis用于其他即将推出的功能,例如评论系统,讨论,实时消息,实时用户跟踪和分析等.
我们不介意运行更多更大的EC2实例,但我们是否应该投资ElasticCache(Redis)并从一开始就进入它,因为我们还没有开始,或者现在看到结果,基准和下行还为时过早?或者在某些预期中甚至比在自己的实例上拥有自己的Redis还要有限?
更新1:
让我详细介绍一下我们将如何处理Redis.可能正在使用排队,因为我们一直在使用Resque.不确定ElasticCache是否允许我们执行任何Pub/Sub,但如果确实如此,我们也希望这样做.当然还有原子和高级操作.
UPDATE2:
亚马逊弹性缓存的高级产品经理在一周前发布了一个新视频,该视频发生在AWS reInvent会议期间.因为它是新的,他也谈论Redis!
我有一个要求,我必须在词形还原步骤中添加一个字典。在尝试在管道中使用它并执行 pipeline.fit() 时,我收到一个 arrayIndexOutOfBounds 异常。实现这一点的正确方法是什么?有什么例子吗?
我将 token 作为词形还原的 inputcol 和 lemma 作为 outputcol 传递。以下是我的代码:
// DocumentAssembler annotator
val document = new DocumentAssembler()
.setInputCol("text")
.setOutputCol("document")
// SentenceDetector annotator
val sentenceDetector = new SentenceDetector()
.setInputCols("document")
.setOutputCol("sentence")
// tokenizer annotaor
val token = new Tokenizer()
.setInputCols("sentence")
.setOutputCol("token")
import com.johnsnowlabs.nlp.util.io.ExternalResource
// lemmatizer annotator
val lemmatizer = new Lemmatizer()
.setInputCols(Array("token"))
.setOutputCol("lemma")
.setDictionary(ExternalResource("C:/data/notebook/lemmas001.txt","LINE_BY_LINE",Map("keyDelimiter"->",","valueDelimiter"->"|")))
val pipeline = new Pipeline().setStages(Array(document,sentenceDetector,token,lemmatizer))
val result= pipeline.fit(df).transform(df)
Run Code Online (Sandbox Code Playgroud)
错误信息是:
Name: java.lang.ArrayIndexOutOfBoundsException
Message: 1
StackTrace: at com.johnsnowlabs.nlp.util.io.ResourceHelper$$anonfun$flattenRevertValuesAsKeys$1$$anonfun$apply$14.apply(ResourceHelper.scala:315)
at com.johnsnowlabs.nlp.util.io.ResourceHelper$$anonfun$flattenRevertValuesAsKeys$1$$anonfun$apply$14.apply(ResourceHelper.scala:312)
at scala.collection.Iterator$class.foreach(Iterator.scala:891)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1334)
at …
Run Code Online (Sandbox Code Playgroud) 我有一个小的Hive表,通过HDFS(parquet / 1152文件-超过30GB)保存了1500万行。
我正在通过科学摘要进行LDA。因此,第一步是使用StanfordNLP提取一些名词短语/块短语,我为此编写了UDF以实现此目标。
在性能方面,现在有两种情况,每种情况都有非常不同的结果。
方案1:
val hiveTable = hivecontext.sql("""
SELECT ab AS text,
pmid AS id
FROM scientific.medline
LIMIT 15000000
""")
Run Code Online (Sandbox Code Playgroud)
然后,我通过我的UDF进行呼叫hiveTable
:
val postagsDF = hiveTable.withColumn("words", StanfordNLP.posPhrases(col("text")))
Run Code Online (Sandbox Code Playgroud)
现在,如果我触发任何动作/转换,例如.count()或对“ postagsDF ” 执行CountVectorizer(),我将看到两个阶段。一个具有适当数量的任务(分区),另一阶段仅具有一个任务。第一个在完成一些输入/随机写入后很快结束,但是第二个仅执行一个任务需要很长时间。看来我的UDF正在此阶段执行,只有一个任务。(需要几个小时,完成后不会进行任何资源活动)
方案2:
val hiveTable = hivecontext.sql("""
SELECT ab AS text,
pmid AS id
FROM scientific.medline
LIMIT 15000000
""")
Run Code Online (Sandbox Code Playgroud)
我DataFrame
根据实木复合地板的数量将分区重新划分为spark检测到的确切分区数。(我可以选择其他任何数字,但该数字似乎还可以,因为我有超过500个可用的核心-每个核心2个任务)
val repartitionedDocDF = docDF.repartition(1152)
Run Code Online (Sandbox Code Playgroud)
现在通过UDF调用我的UDF hiveTable
:
val postagsDF = hiveTable.withColumn("words", StanfordNLP.posPhrases(col("text")))
Run Code Online (Sandbox Code Playgroud)
但是,这次的任何动作/转换都将分为四个阶段。其中两个阶段(假设计数)是1152个任务,其中两个是单个任务。我可以看到我的UDF正在其中一个阶段执行,其中1152个任务被所有执行者正确使用了整个集群。
场景1的结果: 观察我的集群,在长时间运行的单任务阶段没有太多事情发生。没有CPU使用率,内存,网络和IO活动。只有一名执行者执行一项任务,即将我的UDF应用于每个文档/列。
基准:第一种情况需要3-4个小时才能完成100万行。(我等不及要看一千五百万行需要多少钱)
方案2的结果: 查看我的集群,我可以清楚地看到我所有的资源都在被利用。我所有的节点几乎都满负荷使用。
基准测试:方案2耗时30分钟,记录了1500万行。
真实的问题
刚刚发生了什么?我认为默认情况下,Dataframe上的UDF将并行运行。如果分区/任务的数量大于或小于内核总数,但至少在默认的200个分区/任务上并行,则可以重新分区。我只想了解为什么我的情况下的UDf是单个任务,却忽略了默认的200和实际分区大小。(这不仅仅是性能,它是单任务作业还是多任务作业)
是否有其他方法可以使UDF在所有执行程序上并行执行而无需调用分区。我不反对重新分区,但是这是非常昂贵的操作,我认为这不是使UDF并行运行的唯一方法。即使当我重新分区到完全相同数量的分区/文件时,我仍然必须监视超过20GB的随机读取和写入。
我已经阅读了有关重新分区和UDF的所有内容,但是我找不到类似的问题,除非它进行了重新分区,否则默认情况下无法并行运行UDF。(当您将类型从int转换为bigint的简单UDF可能不可见,但是当您执行NLP时,它确实是可见的)
我的集群大小:30个节点(16core …
parallel-processing user-defined-functions stanford-nlp apache-spark apache-spark-sql
我想知道在iOS中实现popover链接和内联脚注的最佳方法是什么?
ios ×2
apache-spark ×1
instapaper ×1
ipad ×1
iphone ×1
objective-c ×1
performance ×1
redis ×1
stanford-nlp ×1
storyboard ×1
uiwebview ×1
xcode ×1
xcode4.4 ×1