V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  siteshen  ›  全部回复第 8 页 / 共 22 页
回复总数  421
1 ... 4  5  6  7  8  9  10  11  12  13 ... 22  
2018-07-18 09:56:38 +08:00
回复了 az09py 创建的主题 程序员 怎么获取上次 push 操作时的 commitid
还是不太明白"最近一次的 pull/push 的 commit",不过下面的命令能得到远端分支的最后一个 commit

git fetch; git rev-parse origin/${BRANCH}
2018-07-14 17:28:49 +08:00
回复了 LeungJZ 创建的主题 程序员 向大佬们请教一个关于排行榜的实现问题。
自然月很简单,使用 redis 的 sorted set 实现很方便。

点赞( for month ):zincrby popular:2018-07 1 {post_id}
热帖( for month ):zrevrangebyscore popular:2018-07 +inf -inf limit 0 20

自然周同理(假设今天属于本年的第 38 周,懒得计算了):
点赞( for month ):zincrby popular:2018-w38 1 {post_id}
热帖( for month ):zrevrangebyscore popular:2018-w38 +inf -inf limit 0 20

rolling 周的话复杂些,可以使用写入多次的方式实现。
2018-06-12 14:28:10 +08:00
回复了 zjsxwc 创建的主题 程序员 你们 Python 是怎么安装依赖的?
# 以前
mkvirtualenv awesome-project
pip install requests
echo "requests" >> requirements.txt
pip freeze -l > requirements.lock
git add requirements.txt requirements.lock

# 现在
touch Pipfile
pipenv install requests
git add Pipfile Pipfile.lock
@6167 放里面是为了最小权限原则,不行的话放外面。下面这个是 drf_yasg.utils 里的代码,用的 is 比较,比我之前写的完善些。

class unset(object):
"""Used as a sentinel value for function parameters not set by the caller where ``None`` would be a valid value."""
pass


def swagger_auto_schema(method=None, methods=None, auto_schema=unset):
if auto_schema is not unset:
data['auto_schema'] = auto_schema
看了下 Django 的代码,直接设置 default 做不到,因为 default 作为 callable 调用时,不会传入任何参数。
你的答案方案在于,没有区分 self.last 的值,是“初始值”还是“被设置的值”。
和 @twor 答案类似,不过用了一个无意义的变量作为 sentinel value。

class Pool():
UNSET = object()

last = models.IntegerFields(default=UNSET)

def save(self):
if self.last == self.UNSET:
self.last = self.amount

super(Pool, self).save()
1. 写出能按距离排序的 SQL 语句;
2. 翻译成对应的 python 代码。

不考虑性能的话:
1. sql_let ordering = ((long - ${x})^2 + (lat - ${y})^2)
2. select * from branch order by ordering where ordering < {distance} desc
3. Branch.objects.filter(RAW_SQL('((long - %s)^2 + (lat - %s)^2) < %s') % (x, y, distance))

另外不知道你生成的 SQL 是怎么样的?看样子是把 `Distance()` 直接当成字符串直接传入到 SQL 语句了。这里需要知道 Distance('location__coordinates', user_coordinates) 对应的 SQL 语句类型(比如是 float ?),然后传入值时也变成对应类型,大约类似这样: `objects.filter(Distance('location__coordinates', user_coordinates) < distance.metres)`
2018-05-11 09:30:51 +08:00
回复了 SingeeKing 创建的主题 Python 一段有趣的代码
无数人讲过 python 默认参数的“坑”了,我提供另外一个思路,函数尽量不要有副作用。这样无论 python 内部怎么实现,都不会出现问题(当然如果是性能不足,肯定需要研究语言的实现机制)。
2018-05-07 09:25:23 +08:00
回复了 lcj2class 创建的主题 程序员 大家平时 coding 时都收藏了哪些提高效率的小工具
;; 我通常用的这个 https://www.epochconverter.com/
;; 如果只需要查看,可以用更简单的函数
(format-time-string "%FT%T%z" (number-at-point))

;; (describe-function 'format-time-string)
;; For example, to produce full ISO 8601 format, use "%FT%T%z".
2018-05-07 08:59:55 +08:00
回复了 chenqy930 创建的主题 NGINX ngnix 做代理的问题
没在 nginx 中实现过这么复杂的逻辑,用 lua 应该能做到。可以考虑直接在 A 服务器代码中请求 B 服务器是否有权限。
2018-05-07 08:53:44 +08:00
回复了 Magentaize 创建的主题 程序员 swagger codegen 能不能差分更新 api,而不是重新生成一个?
没找到好的办法,所以我是根据代码生成 swagger.json 文件。比如使用(或者自己实现)类似这样的库:
https://github.com/MarkSonghurst/swag
2018-05-03 15:14:35 +08:00
回复了 kuoruan 创建的主题 程序员 如何才能减少代码的嵌套层级?
楼上说的“最简单的,反过来判断不就行了”,其实说的是 `early return`。
其他的回答 Promise async/await 等完全是另外一个话题。
按照这个思路重构代码会清晰很多,刚刚写了个例子供参考。

```js
// origin source code
function doSomething() {
if (cond1) {
success1();
if (cond2) {
success2();
if (cond3) {
success3();
} else {
fail3();
}
} else {
fail2();
}
} else {
fail1();
}
}

function betterDoSomething() {
if (!cond1) {
fail1();
return;
}
success1();

if (!cond2) {
fail2();
return;
}
success2();

if (!cond3) {
fail3();
return;
}
success3();
}
```
2018-04-30 15:56:19 +08:00
回复了 xiangyuecn 创建的主题 程序员 眼看就要有大的收获,怎奈 bug 太多,纯真无码
@haxiwa 虽然我不清楚一天打两次农药有没有问题,但我知道不是每个人家里都有上百亩地的。
坐等成都的分公司……
2018-04-26 01:44:28 +08:00
回复了 mochanight 创建的主题 Python 小白请教变量匹配和赋值
# -*- coding: utf-8 -*-

# 不是很清楚你的需求,写了个函数收集字符串中的连续数字和连续符号,供参考。
def collect(string):
operands = []
operators = []

last_symbol = ''
is_last_digit = False

for s in string:
if is_last_digit:
if s.isdigit():
# both are digist, append
last_symbol += s
else:
# digist and not digist, end scaning
operands.append(last_symbol)
last_symbol = s
else:
if not s.isdigit():
# both are not digist, append
last_symbol += s
else:
# digist and not digist, end scaning
operators.append(last_symbol)
last_symbol = s

is_last_digit = s.isdigit()

# append last symbol
if is_last_digit:
operands.append(last_symbol)
else:
operators.append(last_symbol)

return operands, operators


if __name__ == '__main__':
print(collect('(40+26*55)-1102-11'))
print(collect('40+26*55-1102-11'))

# `for` 和 `# appending last symbol` 后的 `if` 一个缩进层级,其他的缩进层级应该不需要额外的说明。
# 输出结果如下(本地没 python3 )
# (['40', '26', '55', '1102', '11'], ['(', '+', '*', ')-', '-'])
# (['40', '26', '55', '1102', '11'], ['', '+', '*', '-', '-'])
2018-04-12 06:25:34 +08:00
回复了 aice114 创建的主题 程序员 感觉自己的代码质量很糟糕怎么办?
来来来,这里提供 code review 服务。
2018-03-31 19:15:23 +08:00
回复了 biaolab 创建的主题 酷工作 [成都][比奥互联]招高级后端 Django 工程师
2018-03-31 01:37:07 +08:00
回复了 biaolab 创建的主题 酷工作 [成都][比奥互联]招高级后端 Django 工程师
工资多一些就好了
http://doc.zengrong.net/smart-questions/cn.html

提问题时,应该尽量方便回答者。比如贴出可运行的 demo 代码,你预期是什么行为,实际是什么行为。
你这样直接放一个异常,没有上下文,有人想帮助你也无能为力。
2018-01-23 20:10:15 +08:00
回复了 lianggaofeng04 创建的主题 Python 求从 Python 转 Go 的实际经验分享
原因:看好 go 的发展,原来两年多的 python 代码,业务逻辑面目全非了。
效率:
15 年早期两个人一个多月使用 clojure 初始化项目 1.5m x 2p
15 年末 clojure 不好招人,一个人用 python 花了一个多月时间重写 clojure 的项目,开始招 python 工程师。1.5m x 1p
17 年中两个人用了两个月时间用 go 重写了 python 的项目 2m x 2p

我个人看来,开发效率方面差不多。go 花的时间更长,一方面业务更复杂,另一方面还要造些轮子。

坑?不记得了,该填的都填了,填不了的都将就了。
收益?换静态语言后,感觉编译过了事情就完成一大半了。
1 ... 4  5  6  7  8  9  10  11  12  13 ... 22  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3483 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 11:28 · PVG 19:28 · LAX 04:28 · JFK 07:28
Developed with CodeLauncher
♥ Do have faith in what you're doing.