V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lianghui  ›  全部回复第 1 页 / 共 5 页
回复总数  87
1  2  3  4  5  
2016-08-02 16:31:05 +08:00
回复了 Pzdmultiverse 创建的主题 职场话题 公司考勤制度,来晒晒。。
每周满 45 小时在公司就可以,不加班,不多上一分钟。
2016-06-20 22:05:38 +08:00
回复了 dyingbleed 创建的主题 程序员 鼠标用多了之后手腕不舒服……怎么破?
在公司用触摸板和小红点
同事跳槽去的公司,貌似不缺钱。 帮 lz 顶下。
2016-06-14 10:48:56 +08:00
回复了 misaka19000 创建的主题 职场话题 老板提了加薪,但我还是想离职 。。。
如果是我,应该会走,经验不足,应该能找到更好的公司,拿到 offer ,然后果断提辞职走人,带人什么的可以过两年吧,专心打好硬件基础。管理方便很多时候是一门沟通技术,像我这的大队组长,基本类累成狗了,但有不想分权,其实管理方面效率很低, blabla 的开会一开就是大半天,到公司后实在受不了,引入了 trello 等工具提高效率。如果整个团队来来往往的像市集一样,在大的饼也是纸糊的。你呆小公司十年,按大众看法就是还不如一天 b 站的流量。找到一个可以长期发展的机会,而不是去接烂摊子,或者说真的有前景,在你上任小组长后,团队能组建起来,三个月内稳定下来,如果不能还是去找好下一家东家,果断跳槽,慢慢累积经验,一切都是水到渠成。
2016-06-08 22:52:55 +08:00
回复了 magicdawn 创建的主题 Python pyenv 真是个好东西
用 sublimetext 可以做到显示都是 2 space 缩进,但其实是 4 space 缩进,看代码和写代码都很紧凑。
2016-06-05 19:01:34 +08:00
回复了 mgna17 创建的主题 Tornado 问一个关于 tornado 异常处理的新手问题
@mgna17 因为 RequestDispatcher 在没有找到 handler 默认设置将 handler 为 ErrorHandler,如果指定了 default_handler_class ,就使用 default_handler_class 。

ErrorHandler 继承了 RequestHandler , 所以 hook RequestHandler.write_error 有效。 详细看 tornado.web._RequestDispatcher route 处理实现
2016-06-05 18:26:44 +08:00
回复了 mgna17 创建的主题 Tornado 问一个关于 tornado 异常处理的新手问题
```python

class NotFondHandler(BaseHandler):

def get(self):
self.write("This page ``{}``is not Found".format(self.request.path))


settings = {
'template_path': os.path.join(os.path.dirname(__file__), "templates"),
'static_path': os.path.join(os.path.dirname(__file__), 'static'),
'default_handler_class': NotFondHandler
}

default_handler_class and default_handler_args: This handler will be used if no other match is found; use this to implement custom 404 pages (new in Tornado 3.2).

```
2016-06-01 10:26:35 +08:00
回复了 hlg002 创建的主题 职场话题 你们公司是弹性上下班,按工时算的嘛?
我们这一周上满 40 小时就可以,我每天快十一点时到公司。 (这才叫弹性上班!!!)
2016-05-07 11:43:15 +08:00
回复了 aljun 创建的主题 Python 基于 Gevent,撸了一个 web 框架的轮子
项目看了,比我当年毕业时强很多了。说说你的的项目的问题: app 应用层异常 exception ( 500 internal exception )没有做特别的处理 貌似扔给 wsgiserver 去处理了,处理了 404 状态, 403 状态处理缺乏, chunk encoding 处理缺乏。 utf8 编码处理没有考虑,问题比较多。 建议楼主看看 webob 这个项目,或者 cherrypy 这种古董。


其他问题:

log 没有,别用 print
基建功能做好单元测试

代码建议:

所有的功能函数,类,方法必须加上注释,哈哈这个很难,不过坚持就好,我给公司的项目和小组都是这样严格要求的。

使用好的 ide 工具可以帮助你加快编码,减少注释带来的烦恼,忘词等(使用 java 一年得到的真谛)。
2016-02-04 12:04:02 +08:00
回复了 billgreen1 创建的主题 Python 如何通过点(dot)来获得字典的属性?
```python
class SelectConfig(object):

def __init__(self, config=None):
self._config = config or {}

def set(self, key, value):
keys = self._keys(key)
config = self._config
i = 0
for k in keys:
if isinstance(config, dict) and k in config:
if i == len(keys) - 1:
config[k] = value
return
config = config[k]
i += 1

keys = keys[i:]
last_key = keys.pop()
for k in keys:
config[k] = {}
config = config[k]
config[last_key] = value

def get(self, key=None, default=None):
keys = self._keys(key)
config = self._config
for k in keys:
if k in config:
config = config[k]
else:
config = default
break

return config

def delete(self, key):
keys = self._keys(key)
if len(keys) == 2:
v = self.get(keys[0])
if isinstance(v, dict):
del v[keys[1]]
else:
del self._config[keys[0]]

def update(self, config):
for k, v in config.items():
self.set(k, v)

def __contains__(self, key):
keys = self._keys(key)
contains = True
config = self._config
for k in keys:
if k in config:
config = config[k]
else:
contains = False
break

return contains

def _keys(self, key):
return key.split('.')

def __json__(self):
return self._config
```
2016-01-22 11:50:13 +08:00
回复了 sujin190 创建的主题 MongoDB mongodb 长时间卡顿问题
mongo 的范围查询会锁住全库,是不是有大量并发范围查询? 比如 start_time > 7 && start_time < 10000 之类? 如果没法避免这类查询 可以把一个 collection 做成一个库
2015-11-27 11:18:39 +08:00
回复了 mywaiting 创建的主题 Tornado Tornado 如何组织中大型项目,你们都是怎么样做的?
把最近的 tornado 项目分层结构参考 分享下。 吸收了 scala 框架与一些其他语言框架的特性, 使用了 tow scope 的概念,使用了 hocon 配置,使其可被文件配置。


https://github.com/whiteclover/Zephyr


/CODE/ZEPHY
│ requirement.txt
setup.py
│ zephyrd

├─conf
│ app.conf # hocon 配置
├─schema
│ mysql
└─zephyr
app.py # 应用
autoload.py # 自动加载容器
breeze.py #核心容器实现
cmd.py
feed.py
flash.py
helper.py
jinja2t.py
log.py
options.py
orm.py
patch.py
pedis.py
session.py
util.py
__init__.py

├─asset #静态文件
│ ├─js
│ └─theme
│ └─default
│ ├─css
│ ├─img
│ └─js
├─boot # 命令控制
asset.py
database.py
jinja2t.py
pedis.py
site.py
__init__.py

├─config # 配置加载 lexer 类
errors.py
hocon.py
_config.py
__init__.py

├─lang
│ │ __init__.py
│ ├─en_GB
│ ├─zh_CN
│ └─zh_TW

├─lib
image.py
memoize.py
paginator.py
validator.py
__init__.py

├─module # 模块 api 分割
│ │ __init__.py
│ │
│ ├─category
│ ├─comment
│ ├─extend
│ │ │ mapper.py # orm 层
│ │ │ model.py # 领域类, 可以进一步分成模块文件夹
│ │ │ thing.py # 逻辑层
│ │ │ __init__.py
│ │ │
│ │ └─view # url 控制与 url 路由
│ │ field.py
│ │ __init__.py
│ │
│ ├─front
│ │ mixin.py
│ │ view.py
│ │ __init__.py
│ │
│ ├─menu
│ │ thing.py
│ │ view.py
│ │ __init__.py
│ └─user
mapper.py
model.py
thing.py
view.py
__init__.py

└─template
├─admin
│ ├─extend
│ │ ├─field
│ │ ├─metadata
│ │ └─plugin
│ ├─layout
│ │ edit.html
│ │ footer.html
│ │ header.html
├─component
│ views.html #组件
└─theme
└─default
2015-11-21 13:05:28 +08:00
回复了 sujin190 创建的主题 Python 基于 tornado 的 thrift server 和 client
使用 greenlet 加速 thrift 协议解析过程 cpu 计算也能加速 ,请 lz 证明下?
2015-11-14 16:21:12 +08:00
回复了 lianghui 创建的主题 程序员 请教最近 60 秒用户在线人数存储方案
@noman 用 zset 藐视不错,可以解决多机写的问题。
@msg7086 确实可以,仔细看了现有的架构确实可以聚集到单机再写入,以便前端展示。
@beneo 我们是以日志时间精确秒做 bucket 块一次性做并发更新用户状态,最后得到是一个产品全国个城市每秒在线人数计数。 可以延迟几秒出,但作为商用系统,是不能造假的。
2015-11-14 14:25:28 +08:00
回复了 lianghui 创建的主题 程序员 请教最近 60 秒用户在线人数存储方案
@vietor 我们现在能做到延迟 5 秒左右的数据,但是总是要展示最近 60 秒的数据的
@msg7086 是个好办法,问题现在架构可能改成这个代价有点高。
@canesten 是的,只要看最近 60 秒, 每分钟的统计我们直接放数据库了。

@ericls 感谢
2015-11-03 10:35:14 +08:00
回复了 bsns 创建的主题 Linux Ubuntu 升级到 15.10 后不断的遇到 bug。
在国内,使用 ubuntu 是痛苦的一件事,大多数企业还在用 qq 沟通,国内软件支持太少,严重影响工作沟通效率,最后还是决定使用 windows 开发 然后搞了一个 vagrant+ virtaulbox 开发,开发服务端和前端和工作沟通三不误。要不使用 mac ,但还是有必要使用 vagrant 提高开发效率。强烈建议楼主使用 vagrant
2015-11-02 21:33:20 +08:00
回复了 lianghui 创建的主题 Python 分享 Zephyr : 用 tornado 重写以前一个 flask 的煎蛋博客网站
@fire5 绝对看过 tornado 开发者的观点 ,赞同 https://github.com/tornadoweb/tornado/wiki/Threading-and-concurrency

1) Do it synchronously and block the IOLoop. This is most appropriate for things like memcache and database queries that are under your control and should always be fast. If it's not fast, make it fast by adding the appropriate indexes to the database, etc.

@mulog Tornado 提供的一个异步 io 底层库和潦草不多的外层异步库支持,所以也没怎么考虑使用异步 io 数据操作库。 简单的 web 核心 拓展起来比较自由, 个人工作上的项目风格都是面向对象的,现在主要使用 java/scala 做日常工作,所以写的 oo 风格更为习惯一点。 另外令人费解的有人天天吐槽 tornado 为什么不用异步的 io 库或者又没好使的异步数据库 io 库,如果写一些无数据库 io 的异步服务 tornado 绝对是首选。为何就没人吐槽 flask 的 thread local 的线程本地变量隔离机制。 flask 绝对适合上手,拓展性还不错。 同样 tornado 也非常适合上手,但是拓展的话,需要一些时间定制化。

flask 的拓展被开发者给了一个规范,但不等同于那些拓展都是你需要的,或者能满足你或者需求。 flask 路由上语法糖,相比 routes 那个库,还是觉得 routes 的更为方便点。在 zephyr 开发中加了一些简化命名 url 参数的工具,个人还是习惯像 django 那样把 url 入口写在一块。 zephyr 使用不少 字符串命名惯例 以便实现自动绑定,另方面解决 flask 多人开发造成个别文件被不同开发者修改的一些冲突。 最主要的能够使用更多面向对象风格,自由拓展,驾驭感。
2015-11-01 21:14:08 +08:00
回复了 lianghui 创建的主题 Python 分享 Zephyr : 用 tornado 重写以前一个 flask 的煎蛋博客网站
@jodoo 关键是找到更好的解决方法

@sujin190 你是说那个 wsgi cherrypy server 的包裹, 如果要说异步,应该是在 tornado 的 http io 层是异步的, 其他数据库都不是异步的,如果要做异步 mapper 层和 session 都要重写,另外架构结构也不会是现在这样了。这些没有重数据库的请求,加上 cache 层,前面挂 nginx 后面 tornado app perfork 不是挺好吗
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   976 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 20:58 · PVG 04:58 · LAX 12:58 · JFK 15:58
Developed with CodeLauncher
♥ Do have faith in what you're doing.