V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zhicheng  ›  全部回复第 5 页 / 共 58 页
回复总数  1152
1  2  3  4  5  6  7  8  9  10 ... 58  
2018-01-02 18:19:30 +08:00
回复了 winglight2016 创建的主题 程序员 如何评价:微信否认保存用户聊天信息(高仿知乎体)
欢迎大家试用 https://pigeon.im/ iOS App 端端加密,服务器无法看到原始消息。
不如试试 Lemon http://www.lemon-lang.org/
2017-12-20 00:08:31 +08:00
回复了 dennisge 创建的主题 Node.js Java 的 sha1 加盐 加密和 node 实现的加密值不一样。
@dennisge 付钱不?
2017-12-20 00:06:45 +08:00
回复了 dennisge 创建的主题 Node.js Java 的 sha1 加盐 加密和 node 实现的加密值不一样。
@dennisge 我并不想打击你,这真的是一眨眼,一个函数调用的事儿。

```
import hashlib
result = hashlib.sha1('af350c3413179ab4'.decode('hex') + 'a123456').digest()
for i in range(1, 1024):
result = hashlib.sha1(result).digest()

print result.encode('hex')
```
79893503e8074330321974fa14dc44f8aa1b3df0
2017-12-19 23:43:03 +08:00
回复了 dennisge 创建的主题 Node.js Java 的 sha1 加盐 加密和 node 实现的加密值不一样。
@dennisge 你写错了,不要怀疑语言,不要怀疑算法,不要怀疑类库,不要找借口,不要说这是坑。

没有什么可指教的,就是调用一个函数的事儿,我不知道这种事情怎么“指教”,要是还不懂,就把上边那句话再念一遍。

Java
```
import java.security.MessageDigest;
import javax.xml.bind.DatatypeConverter;

class a {
public static void main(String args[]) {
String str = "a123456";
String salt = "af350c3413179ab4";
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(DatatypeConverter.parseHexBinary(salt));
md.update(str.getBytes());
System.out.println(DatatypeConverter.printHexBinary(md.digest()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
JS
```
crypto = require('crypto');
const str = 'a123456';
const salt = new Buffer('af350c3413179ab4', 'hex');

console.log(crypto.createHash('sha1').update(salt).update(str).digest('hex'));
```
Python
```
import hashlib
print hashlib.sha1('af350c3413179ab4'.decode('hex') + 'a123456').hexdigest()
```
2017-12-19 22:12:37 +08:00
回复了 dennisge 创建的主题 Node.js Java 的 sha1 加盐 加密和 node 实现的加密值不一样。
原因很简单,你写错了。
2017-12-19 02:28:21 +08:00
回复了 scriptB0y 创建的主题 程序员 Hash 碰撞和解决策略
Hash 冲突攻击是利用开源编程语言公开的 hash 算法,提前计算出能够产生相同 hash 的字符串,让语言自带的 dict 类型性能从哈希表 O(1) 降到链表 O(n) 的攻击手段。

比如 HTTP 框架会用字典存储参数,这样我在 URL 里构造数千个能够产生相同 hash 的参数名 ,当你读这个字典的时候就会非常消耗 CPU。

解决办法很简单,编程语言在启动的时候生成一个随机数,以后每次计算 hash 都用这个随机数做 seed,因为别人几乎无法猜到这个随机数,所以也就没办法利用提前计算冲突 hash 进行攻击。

我在 Lemon 里就是这样实现的,以下为参考代码

https://github.com/lemon-lang/lemon/blob/master/src/lemon.c#L283
https://github.com/lemon-lang/lemon/blob/master/src/hash.c#L25
2017-12-14 18:21:31 +08:00
回复了 Gonejack 创建的主题 程序员 不得不吐槽有些 github 维护者缺少待人接物的经验
@flyfishcn 好好好,你没错,你永远都是对的。
2017-12-14 17:47:35 +08:00
回复了 Gonejack 创建的主题 程序员 不得不吐槽有些 github 维护者缺少待人接物的经验
@flyfishcn 我不认为我翻译的有任何问题,如果按照你的翻译,应该把 and 换成 but。提问者没有任何转折,他的表达里 “留下 QQ 群” 和 “拒绝加入” 是并行的,但即使换成你的翻译也会让人反感。但我不想在这儿跟你咬文嚼字。

这和是不是英文无关,中文和英文没有那么大的差异。你不理解主要是你可能不知道什么是 “换位思考” 。在向别人寻找帮助的时候,最起码的是先怀疑是不是自己错了。而不是怀疑自己请教的人是不是混蛋。所以提出这个问提,并不是寻找解决方案,也不是寻求帮助,纯粹是为了责备和表达作者是个混蛋的观点。

无论提和讨论问题,一定分清什么是 “主观”,什么是 “客观” 。如果这个问题只是 “客观” 的描述自己遇到的现象,不会引起别人的反感。
2017-12-14 17:01:02 +08:00
回复了 Gonejack 创建的主题 程序员 不得不吐槽有些 github 维护者缺少待人接物的经验
@flyfishcn 我来帮你翻译一下那句英文,“所以你在 README 里留下 QQ 群就是为了拒绝别人加入?” 你真的看不出来这个问句的问题,那你这个人肯定很好相处了。

这句话假设作者是个混蛋,留下 QQ 群,又不让别人加入,就是为了戏弄别人。如果问句是 “我看到 README 里的 QQ 群,但我加不上,我是不是哪里操作错了?” 就不会让人不爽。

任何一个正常人,在没有任何证据证明别人不是正常人之前,都应该把别人当成一个正常人,作者留了 QQ 号,就是为了让别人加入讨论的,你揣摩作者的动机,这本身就不是在提问题。你应该怀疑的是哪里出错了,而不是怀疑作者是个混蛋。
2017-12-14 16:45:13 +08:00
回复了 Gonejack 创建的主题 程序员 不得不吐槽有些 github 维护者缺少待人接物的经验
@flyfishcn 我很好奇,在你们眼里,开发者不是人或者开发者不是正常人?那个提问我看我也不爽啊,为什么提问可以让开发者不爽,而开发者不能让提问者不爽呢?提问题的人是有问题需要让开发者解决的,不去关注如何解决问题,上来就开喷,谁爱管你啊。

@Gonejack "Global Mode and PAC Mode needs to modify your system network settings (making something like ss-local your current system network proxy), and that's why authorization is needed." 我认为这段已经回答了为什么需要 root 权限,人家回复你可以看代码是补充回答,目的是出于好心,怕你担心有病毒或者木马,可以自己从 source code 自己编译。这都能被喷,你们可能需要学习一下如何和平的和别人相处。
2017-12-14 16:12:27 +08:00
回复了 Gonejack 创建的主题 程序员 不得不吐槽有些 github 维护者缺少待人接物的经验
@flyfishcn 这个问题的正确问法是 “我加了一下你留的 QQ 群,但是显示被拒绝了,是不是我哪里操作错了?” 然后留下自己的环境信息,或者推测一下是不是哪里有问题。不是上来就指责群主 “你留了 QQ 又拒绝,是不想让人加吗” ,这样问还指望别人好脾气的回答你,给你研究一下为什么加不上?太自我为中心了吧。
2017-12-14 15:59:08 +08:00
回复了 Gonejack 创建的主题 程序员 不得不吐槽有些 github 维护者缺少待人接物的经验
@flyfishcn 你弱你有理?别人留了 QQ 肯定是希望别人加入讨论,自己加不上不想一下是不是哪里出问题了,反而主观推测是别人不想让你加。另外开发者也不是神,你不知道 Mac QQ 有问题,开发者就应该知道吗?

@Gonejack 人身攻击有意思?要知道这个世界并不是围着你一个人转的。
2017-11-30 14:57:23 +08:00
回复了 zhicheng 创建的主题 程序员 分享一个新的编程语言 Lemon 。
@findex 你说的没实现的语法糖是 [x for x in a] ? 对不起这是故意没实现的,因为这个完全可以用 map 取代,这套语法除了让人看了头晕没有太大的实际价值。

你说的关于 selling point 都很有道理,但你犯了一个关键性的错误,Lemon 语言不是一个商业项目,我不会向使用这个语言的用户收钱。

另外关于你说的痛点,其实是 marketing,App 用户和编程语言的用户不是一个群体,如果工程师真的有痛点,那么他就会去直接创造一个编程语言了,所以你说的 “痛点” 其实大部分时候都是伪需求。

我之所以开发 Lemon,是因为我自己有需要,之所以开源,是觉得 Lemon 的代码写得还可以,如果有跟我相似需求的,可以和我一起改进。它的目标并不是要取代 Python Lua 之类的语言,换句话说,如果你用 Python 用得很好,为什么要换呢?
2017-11-17 17:30:14 +08:00
回复了 xbla 创建的主题 奇思妙想 人类未来会进化成什么样子?
别的不知道,但是对先天因素有偏见的人大体上会被淘汰,比如动不动就不喜欢别人的肤色,性别,人种,年龄,身高,认为这些人会灭绝的人。
2017-11-15 09:38:16 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
是谁说 None 不能和 int 比较的啊。

Python 2.7.10 (default, Jul 15 2017, 17:16:57)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> None > 0
False
>>> None < 0
True
2017-11-15 09:29:27 +08:00
回复了 zhicheng 创建的主题 程序员 分享一个新的编程语言 Lemon 。
@sensui7 没明白你的意思,在一个不支持指针的静态类型语言里确实是可以不用 null,但在 typescript 的官网里 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html 有 null,而且在动态类型语言里,变量声明用的是 var 你不知道变量类型,如何设置它的初始值?像 C 一样随机?明显不符合现代语言的特征,如果你说像 JS 一样设置成 undefined 这明显不符合语义,并且 undefined 确实也是另一种 null。事实是 JSON 标准里有 null,所以你无论如何都要有 null。=== 这种特殊语法 Lemon 并不支持。

所以在 Lemon 里一种是代表一个值的 nil,就像其它任何语言里的 nil,它是一个正常值对象。还有一个 sentinel 代表的是一个特殊值,这个值是用来停止 iterator 的,你可以在 iterator 返回 nil,因为它是合法的值对象,但如果你返回 sentinel,就代表停止 iterator,在字典里就代表删除这个 key,这有什么无法理解或可黑的吗?在其它任何时候你也可以用 sentinel 这个值,但它没有任何实际意义,和 nil 也并不相等。它要比 JS 的 undefined 更符合语义。
2017-11-14 08:20:03 +08:00
回复了 zhicheng 创建的主题 程序员 分享一个新的编程语言 Lemon 。
@sensui7 正常的是 nil。sentinel 是用来停止 iterator 的,除此之外不应该使用 sentinel。在 Python 里没有这个值,用的是异常,我不喜欢 Python 的这个设计。很多语言都有多个 null 值,比如

Objective-C 有 nil 和 [NSNull null]
JavaScript 有 null 和 undefined
2017-11-13 12:36:18 +08:00
回复了 zhicheng 创建的主题 程序员 分享一个新的编程语言 Lemon 。
@ftdejo https://www.textarea.com/zhicheng/ 不需要学汇编,你只要看一下 opcode.h 里的虚拟机指令就可以了,Lemon 是通过虚拟机解释执行的。
1  2  3  4  5  6  7  8  9  10 ... 58  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1015 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 19:12 · PVG 03:12 · LAX 12:12 · JFK 15:12
Developed with CodeLauncher
♥ Do have faith in what you're doing.