首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  banxi1988  ›  全部回复第 1 页 / 共 26 页
回复总数  505
1  2  3  4  5  6  7  8  9  10 ... 26  
我想重构,老大想重写。
已经申请加入,之前参与过 pro-git 的社区翻译。
以下是我个人意见,如有问题,欢迎指出:

1. 加是规范,不加是反模式。
2. 过早优化是万恶源,有些人担心性能问题不加,我建议先加,有性能问题再具体分析。
3. 数据据的一致性比较重要的话,建议加,做正确的事情确实是要多付出点代价,但是一般是值得的。
自荐一下,我新开的正在写的项目,本来打算后面写完再发出来。
项目目标:V2EX 增强版本的 Django 开源实现。
项目特色:
1. 基于 Django 2.2
2. Python 3.7+
3. type annotations.
4. 开源的不仅仅是代码,issue 记录了完整了设计文档,和开发记录思考。
5. 不仅仅是实现功能的代码,更是最佳实践的实践。

https://github.com/banxi1988/WePost/issues
66 天前
回复了 kingofvir 创建的主题 Django django orm
根据我的理解给出一个使用纯 SQL 的解法,你可以自行翻译成 Django ORM 的写法
针对如下表结构:

```sql
CREATE TABLE `author` (
`id` INTEGER,
`name` TEXT,
PRIMARY KEY(`id`)
);


CREATE TABLE `book` (
`id` INTEGER,
`name` TEXT NOT NULL,
`author_id` INTEGER,
`author_name` TEXT,
PRIMARY KEY(`id`)
);

````

`book.author_name` 是后面加的,要填充其关联的 author 的名称可以使用如下 SQL 语句更新。

```sql
update book set author_name = (select name from author where id = author_id)
```
经过我使用 SQLite 测试是 OK 的。
> Query executed successfully: update book set author_name = (select name from author where id = author_id) (took 0ms, 3 rows affected)
感觉我应该在我之前的思路上进一步扩展,扩展到适应以多个数字的情况。
或者根据 LeetCode 上的官方解答来改进思路。
其实你没有设置主键,MySQL 内部也会维护一个跟主键类似的东西。
74 天前
回复了 banxi1988 创建的主题 程序员 程序员写对联
@siyemiaokube #18 这个是真文艺。
75 天前
回复了 banxi1988 创建的主题 程序员 程序员写对联
@DOLLOR #11 赞, 这是真对联。
75 天前
回复了 banxi1988 创建的主题 程序员 程序员写对联
@lzhd24 #5
第二句跑题了,
看你写的,我来两句:
第一句可以设计模式作为立意。
第二句以经典习惯作为立意。

上联:组合优于继承
下联:约定胜过配置
横批:面向对象
75 天前
回复了 banxi1988 创建的主题 程序员 程序员写对联
@R18 #1 这个没有表达出吉祥的意思啊。
@AngryPanda 这个太内涵。
自古多情多寂寞。不写代码伤身体。
136 天前
回复了 banxi1988 创建的主题 程序员 [代码会说话] 原创技术视频一周小结
@likuku #1 非常感谢。
1. 声音的问题,一开始是直接在电脑上录的,OBS 开起来 CPU 声音比较大。最近用了下耳机稍微好一些。
2. 关于画面的问题。因为我一开始的定位是适合在手机上竖屏观看 。所以分辩率是 1080 x1920. 其实在电脑上的观看体验并不是很好。当时做这个定位,主要是我想把视频发抖音上。 不过现在看来我是发不了抖音的了,我还是把成横屏的吧。
3. 做视频的初心是想着加深自己对某一些知识的印象,我相信经过我录制一遍视频之后,我对于相关知识或技术的印象肯定会比较深了。
4. 同时我也的确需要一些正向的反馈,这样才有动力一些,毕竟发出来没有人看,没有反馈意见也是有点无趣的。再次感谢你的建议,that really means a lot to me.
关于第二题的 TypeScript 复杂类型
我录了一个视频,以便给不太熟悉 TypeScript 的同学做点介绍,视频比较长,建议 1.5 倍速观看。
http://www.bilibili.com/video/av37736897
发下我前两题的解答:
1) webpack 4 下,我测试只需要配置 cacheGroups 即可。

```js
optimization: {
runtimeChunk: true,
splitChunks: {
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
filename: "[name].[chunkhash:8].js",
chunks: "all",
enforce: true
},
common: {
test: /[\\/]common/,
filename: "[name].[chunkhash:8].js",
chunks: "all",
enforce: true
},
module1: {
test: /[\\/]module-1/,
filename: "[name].[chunkhash:8].js",
chunks: "all",
enforce: true
},
module2: {
test: /[\\/]module-2/,
filename: "[name].[chunkhash:8].js",
chunks: "all",
enforce: true
}
}
}
```

2. 第二题,参考 TS 手册页关于高级类型的介绍 。
https://www.typescriptlang.org/docs/handbook/advanced-types.html

我想出了如下写法,核心还是利用了 TS 的条件类型。

```ts
type FunPropNames<T> = {
[K in keyof T]: T[K] extends Function ? K : never
}[keyof T];

type UnpackCommand<P> = P extends (
input: Promise<infer T>
) => Promise<Action<infer U>>
? (input: T) => Action<U>
: P extends (action: Action<infer T>) => Action<infer U>
? (action: T) => Action<U>
: never;

type UnpackModule<M> = { [P in FunPropNames<M>]: UnpackCommand<M[P]> };

// 修改 Connect 的类型,让 connected 的类型变成预期的类型
type Connected = UnpackModule<EffectModule>;
type Connect = (m: EffectModule) => Connected;
```
200 天前
回复了 banxi1988 创建的主题 Vim [Vim 精粹] :文本对象: 从 1 到 N
@qinfensky 事实上我也是用 VS Code 的。VS Code 上用 Vim 插件即可。
所以我这里的 Vim 主要是指其背后代表的一种高效的编辑方式,逻辑思想,或者说思想。
Vim 编辑思想,嗯。
@1747479654 在一个偏远的城市:广西南宁。 虽然维护的事情是费力不太讨好的事,但是信得过我的,可以加微信详聊。
@hlwjia 谢谢回复,全职的话不方便。所以主要还是考虑远程兼职或一些小外包。
1  2  3  4  5  6  7  8  9  10 ... 26  
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1042 人在线   最高记录 5043   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 29ms · UTC 18:24 · PVG 02:24 · LAX 11:24 · JFK 14:24
♥ Do have faith in what you're doing.
沪ICP备16043287号-1