寻找一种方法来生成给定PHP数组的文件名安全哈希.我现在正在做:
$filename = md5(print_r($someArray, true));
Run Code Online (Sandbox Code Playgroud)
...但是感觉"hacky"使用print_r()生成每个数组唯一的字符串.
有什么明智的想法,以更清洁的方式做到这一点?
编辑 嗯,似乎每个人都认为序列化更适合这项任务.有什么理由吗?我不担心在变量散列后检索变量的信息(这很好,因为它是单向散列!).谢谢你的回复!
我希望编写一个提供JSON对象列表的Web服务.返回以下内容是有效的JSON:
[
{"keyA1":"valA", "keyB1":"valB"}
,{"keyA2":"valA", "keyB2":"valB"}
,{"keyA3":"valA", "keyB3":"valB"}
]
Run Code Online (Sandbox Code Playgroud)
或者是"正确"的方式将它放在一个单独的对象中返回:
{"elements":[
{"keyA1":"valA", "keyB1":"valB"}
,{"keyA2":"valA", "keyB2":"valB"}
,{"keyA3":"valA", "keyB3":"valB"}
]}
Run Code Online (Sandbox Code Playgroud) 我是一个顽皮的程序员,直到现在我还没有正确处理错误(例如,只是捕获java.lang.Exception,打印调试消息,然后继续).当我"处理"它们时,它只是关闭编译器.
我最近了解了我的方法的错误(哈哈),并希望开始做对.所以我在这里和其他地方(通过谷歌搜索)进行研究.
假设我有一个代码块,它执行以下操作:
...
x.method1(); // throws ExceptionTypeA
...
y.method2(); // throws ExceptionTypeB
...
z.method3(); // throws ExceptionTypeC
...
x.method4(); // throws ExceptionTypeA (again)
...
Run Code Online (Sandbox Code Playgroud)
从我收集的内容来看,处理这个问题的正确方法是:
try {
...
x.method1(); // throws ExceptionTypeA
...
y.method2(); // throws ExceptionTypeB
...
z.method3(); // throws ExceptionTypeC
...
x.method4(); // throws ExceptionTypeA (again)
...
} catch (ExceptionTypeA e) {
// do something about condition A
} catch (ExceptionTypeB e) {
// do something about condition B
} catch (ExceptionTypeC e) {
// do something …Run Code Online (Sandbox Code Playgroud) 刚刚学习Python.阅读官方教程.我碰到了这个:
虽然列表末尾的追加和弹出很快,但是从列表的开头进行插入或弹出是很慢的(因为所有其他元素都必须移动一个).
我猜想像Python这样的成熟语言会有各种各样的优化,那么为什么Python [似乎]不会使用链接列表以便插入速度快?
维基百科如何为其文章实现"编辑此部分"功能,其中用户只能编辑文章的一部分,而不是整篇文章?我自己尝试过浏览mediawiki的代码,但是我理解它有点密集.这是我的猜测(但只是猜测):
用户单击文章中的[编辑].这链接到常规编辑页面,但在URL中通过GET传递了另一个参数,指定要编辑的部分.如果没有这个额外的参数,Mediawiki通常只会向用户显示一个编辑整个页面的表单.但指定要编辑的部分会导致Mediawiki仅提取该部分并将其呈现以进行编辑.
困扰我的是Mediawiki如何解析各个部分?根据我的理解,MW不会单独存储这些部分 - 它将每个版本页面的每个整个版本存储为一个大的文本块(除了元数据量之外).MW是否仅仅查找H1,H2,H3,...标签,并在呈现页面时使用这些标签将文本拆分为区域?当用户保存修改后的部分时,是否会查看当前版本,将文本重新解析为部分,然后将新版本"注入"到当前版本的副本中,然后将其另存为新版本?
我认为我对MediaWiki的理解大大简化了,但我只是想弄个粗略的想法.
谢谢!
我做了很多php和javascript,但我认为这是一个与语言无关的问题.有什么时候使用以下每种方法的最佳做法:
我理解其中一些人不能做的固有限制,但似乎他们的使用有时也会重叠,而这些实例正是我真正要问的.
编辑 只是为了澄清:我非常熟悉哪种方法存储在哪里,以及客户端/服务器可以访问哪些技术.我正在寻找的是更高级别的东西,例如"临时用户设置应该存在于cookie中,数据状态信息应该存在于服务器上等等......"
谢谢!
我正在查询ActivityHistory,看起来你只能将它作为SUBQUERY的对象查询到其他对象.这没关系 - 我改变了我的查询以查询Account对象,在子查询中使用ActivityHistory.似乎工作正常.但在测试中,我发现了一个ActivityHistory子查询返回超过200个结果的情况.我开始收到此错误:
FATAL_ERROR|System.QueryException: entity type ActivityHistory does not support query
...在调试日志中.这似乎只是一个帐户在ActivityHistory对象中有超过199个相关条目的问题.为了查看这是否是原因,我尝试在子查询中放置LIMIT 199和LIMIT 200子句.果然,当我使用199(或任何更低)时,它工作正常.使用200(或更高的任何值)会导致上述错误.
我的代码如下.需要注意的一点是查询是在FOR循环中.我得到的一个理论是,为什么它为LIMIT子句的高值产生错误,可能200是FOR循环将查询批处理为单独的块的点 - 也许第二个块不符合'子查询'的条件(因为它是单独运行的?) - 并且SalesForce不喜欢它.
哦,还有一件事:相同的代码似乎在Anonymous Apex编辑器中运行良好(尽管我必须做一些修改 - 用显式值替换内联变量).奇怪的是,匿名编辑对它非常满意,但SFDC服务器并不喜欢它.
无论如何,我要做更多的故障排除.有人有任何见解吗?
谢谢!
码:
// ActivityHistory's on Account
for (Account a : [ // you can't query ActivityHistory directly; only in a subquery against another object type
SELECT
Id
,Name
,( SELECT
ActivityDate
,ActivityType
,CRM_Meeting_Type__c
,Description
,CreatedBy.Name
,Status
,WhatId
FROM ActivityHistories
WHERE ActivityType IN :included_activity_history_types
//LIMIT 200
)
FROM Account WHERE Id = :accountId
]) {
for (ActivityHistory … 我在他们的网站上阅读Angular:https: //angular.io/features.html,我看到以下内容:
跨平台
渐进式网络应用程序 - 使用现代网络平台功能提供类似应用程序的体验.高性能,离线和零步安装.
Native - 使用Ionic Framework,NativeScript和React Native的策略构建本机移动应用程序.
桌面 - 使用您为Web学习的相同Angular方法以及访问本机OS API的功能,在Mac,Windows和Linux上创建桌面安装的应用程序.
当Angular说它可以"在Mac,Windows和Linux上创建桌面安装的应用程序"时,该页面的哪个部分正在讨论?Angular是否具有生成桌面应用程序的内置功能?或者他们是在谈论使用像Electron这样的第三方框架?
初步注意:这仅适用于个人修补工程; 我不是在这里写企业安全,如果我是,我知道比尝试编写我自己的方案更好.:-D
编辑:为了强调上述观点,我试图在"iKnowThisWouldBeABadIdeaInRealLife"下标记这个,但是因为它是> 25个字符所以不会接受它.请注意,我知道它不是商业级的!
我需要一种通过HTTP验证用户的方法(在这种情况下不能使用HTTPS).我需要知道另一端的人真的是他们所说的人(对某种程度上相当高的信心).一旦我确定用户是合法的,我不在乎客户端和服务器之间的内容是否以明文形式发送.
我正在考虑的问题是尝试从客户端向服务器发送密码而不将其作为纯文本发送.我曾考虑在javascript中尝试一些公钥加密,因为一些谷歌搜索已经发现了一些看起来很有趣的库.
这是我正在考虑的方案:
(假设A和A'分别代表私钥和公钥;还有,enc(文本,密钥)和dec(密文,密钥)代表加密/解密功能)
+------------------------+------------------------------+
| SERVER | CLIENT |
+------------------------+------------------------------+
(1) | t = randomToken() | |
(2) | enc(t, A) --------> c |
(3) | | A' = getKeyFromUser() |
(4) | p <-------- p=dec(c, A') |
(5) | if (t==p) | |
| allowAccess() | |
| else | |
| denyAccess() | |
+------------------------+------------------------------+
Run Code Online (Sandbox Code Playgroud)
我在这里看到的一个弱点是,正在听交换的坏兄弟,虽然他没有A,现在有一个已知的密文/明文组合,我记得从加密类是一个不好的想法.我认为一些腌制可能会以某种方式缓解这种情况?
所以这是我的[两个]问题: