V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  xiaohanyu  ›  全部回复第 3 页 / 共 15 页
回复总数  288
1  2  3  4  5  6  7  8  9  10 ... 15  
246 天前
回复了 wuruxu 创建的主题 求职 分享我的 resume-zh.tex
两点可能的改进:

1. 可以用 fontspec 的 `\IfFontExistsTF` 宏来判断下字体是否存在,类似这种

```
\\IfFontExistsTF{Noto Serif CJK SC}{
\\setCJKmainfont{Noto Serif CJK SC}
}{}
\\IfFontExistsTF{Noto Sans CJK SC}{
\\setCJKsansfont{Noto Sans CJK SC}
}{}
```

2. 可以用 `\usepackage{ctex}` 来代替 xeCJK ,xeCJK 是一个相对底层一点的宏包,ctex 更上层一点,并且提供一些更好的 API 来控制中英混排、标点等。

默认 ctex 会根据不同的 OS 来加载最合适的中文字体。

所以我的方案是:

```
\\usepackage[UTF8, fontset=none, heading=false, punct=kaiming, scheme=plain, space=auto]{ctex}

\\IfFontExistsTF{Noto Serif CJK SC}{
\\setCJKmainfont{Noto Serif CJK SC}
}{}
\\IfFontExistsTF{Noto Sans CJK SC}{
\\setCJKsansfont{Noto Sans CJK SC}
}{}
```

好处:

1. 用 ctex 加载合适的中文字体,设置中英混排、标点选项
2. 如果系统中存在 Google Noto 系字体,则设置为 CJK mainfont ,好处是 Noto 字体的覆盖更广一些,对生僻字支持更好一些。

供参考哈。
248 天前
回复了 wuruxu 创建的主题 职场话题 在 AI 协助下,用 LaTeX 写简历很不错
@wuruxu 嗯 PPResume 设计是这样的,是个商业产品,有 14 天的试用期,过了后就暂时是 read-only 模式了。

不过最近打算把 PPResume 的核心排版部分开源出来了,敬请期待哈。
248 天前
回复了 wuruxu 创建的主题 职场话题 在 AI 协助下,用 LaTeX 写简历很不错
写了个基于 LaTeX 的 resume builder ,https://ppresume.com ,有兴趣的可以看一看哈,支持多语言: https://ppresume.com/gallery
rxresu.me 的排版效果还是差了一些,UI/UX 还不错
大小写注意一下,中英文排版之间最好加下空格。

想图省心的话可以试试我写的 PPResume: https://ppresume.com ,生成的简历样章支持中文的: https://ppresume.com/gallery/languages
resume builder 这种产品,我去年系统的做了一次全面的调研,包括国内和海外共 25 个竞品,开源和商业的都有: https://www.douban.com/group/topic/308381238/

供参考哈。
"Loved by 2282 Job Seekers" 这种看上去就有点一眼假的感觉……
作为同行( https://ppresume.com),忍不住过来说两句哈。

1. 付费方式,简历产品采用订阅制,我个人认为是不太合适的,写/更新简历并不是一个用户经常会做的事情,我咨询过我的一些用户,100% 对简历产品用订阅制都是比较反感的。你想一下,如果你用了某个简历产品,这个月写完简历,然后找到了工作工作一两年,期间你也不会去更新简历,但是简历产品一直按月扣钱,你感觉舒服么?当然你可以手动取消订阅,但是思维模式上还是会觉得别扭的。我去年上线 pricing plan 时的一些想法,也包括同类竞品的一些调研: https://blog.ppresume.com/posts/introducing-the-pricing-plan

2. 简历排版,这个也是一个大话题了,恕我直言哈,目前基于 HTML/CSS 的排版是做不出顶尖的排版效果的。排版其实有非常多细节的东西要考量,多语言混合排版是一个很大的坑,HTML/CSS 在这方面并没有很好的解决方案。具体可以看我写的关于排版引擎的文章: https://blog.ppresume.com/posts/zh-cn/on-typesetting-engines ,还有我写的排版指南: https://docs.ppresume.com/guide 。LaTeX 排版的一些样章可以看这里: https://ppresume.com/gallery ,单纯的 HTML/CSS 或者 AI 其实还是很难做到这种顶尖的排版的。

3. 冷启动,如果你本身不是 KOL ,冷启动其实是每个产品都会碰到的问题,但是底线还是保持真诚吧,尽量不要取巧,后续如果有用户,可以把真实用户评价发上来,别去碰“刷单”、“刷榜”这些类似的取巧手段吧。
@xiaohanyu 看到了这里的回复。

https://v2ex.com/t/874714?p=1

```
@hahastudio 根据我的了解,一般来说字体开发用的是 mac ,用的是 fontlab ;我的是 windows ,推荐用 fontcreator(收费)/fontforge(开源),ttx 只是我用来开源用的。一般来说开源用的是 UFO3 或者 glyphs 这种格式的,但是 ttx 又不是不算开源(
```

很好,很好
看上去非常不错!

请教一下,制作/微调字体一般会用到哪些工具呢?有没有一些入门的资料或者教程之类的呀?
@monosolo1on1 谢谢!
技术上的事情不说了,有基础经验的程序员想学基本上都能学得会。

说几个营销和财税法方面的难点吧。

营销:
1. 提交导航站,除了 producthunt 打榜,别的导航站流量基本都比较差,自己分不到多少流量,而 producthunt 打榜本身又需要很多技巧 + 流程 + 人脉
2. 社交网络,个人的话,如果是个素人,起号会很慢;如果是官方机构号,恐怕维护成本也不小吧
3. reddit:大部分高流量的版块都有 no self promotion 的规则,直接发推广的话大概率封版或者封号
4. blog/SEO ,太慢,而且得写好多篇才慢慢有些效果,ahrefs 的一个参考数据,大部分在 Google 上排名前几的网页,需要 2-3 年才可以,https://ahrefs.com/blog/how-long-does-it-take-to-rank/
5. 国内的各种“私域”:微信公众号/小红书这种禁止外链的就不多说了吧
6. 邮件营销:冷邮件一来大概率会被 spam ,二来现在数据合规性的要求越来越高,没有 user consent 直接批量发推广邮件应该是不合规的,GDPR 这种;而经营邮件列表来获得 user consent 本身就是一个 full time job
7. v2ex:你看看现在多少做垃圾站的已经把 V2EX 当成外链农场了?你能发,别人也能发,这种外链质量和引流都不高的
8. KOL:大部分都要钱吧,ruanyifeng 老师的 weekly 应该是少有的免费收录的,但是流量也会衰减,过了一两个月后基本上也就没啥流量了

支付:
1. 如果不是 app 产品( iOS 的渠道太好,抽成 30% 也是有道理的),以个人身份来收款在各种方面都会受到比较严格的限制/“歧视”还有风险
2. 大陆居民搞海外支付有很多财、税、法方面的事情要了解
3. Stripe 基本上需要海外公司的实体,维护成本不低(估计可能要 5-10k 人民币),而且 stripe 接通本身还有一些坑: https://v2ex.com/t/1073328#reply19
4. Paddle 我了解默认不支持没有支付流水的新产品接通,LemonSqueezy 目前应该还是不支付国内的用户付款
5. Sales Tax 还有别的一些 Tax 也是很麻烦的事情,当然如果你走到了这一步,说明你的产品已经有些收入了,congrats

都是泪哈哈,慎重入行。
个人感受:如果你自己没有流量渠道,marketing 的难度比想象中要大很多。

另外就是法务 + 支付方面的事情也需要耗费很多精力和时间。
22 年 12 月开始做,23 年 9 月份上线初版产品,24 年 10 月份上线 pricing plan ,这几个月刚刚有一点点收入,还是很难的。

产品: https://ppresume.com
339 天前
回复了 oldcai 创建的主题 Stripe Stripe 怎样收税比较简单?
除了切换成 MoR 这种,没什么特别好的办法。

网上有人说这种小 SaaS 除了在自己所在的国家 jurisdication 交交 sales tax ,别的可以不用管,有风险,但是不用 care 太多。
339 天前
回复了 Cola98 创建的主题 程序员 nextjs 正确使用方式
@superhot

我的项目架构 ( https://ppresume.com) 大概是这样的:

- ppresume
- packages/common
- packages/api
- packages/client

```sh
$ ls -l packages package.json pnpm-workspace.yaml pnpm-lock.yaml
-rw-r--r-- 1 hanyu staff 1485 Jan 14 21:09 package.json
-rw-r--r-- 1 hanyu staff 744184 Dec 30 10:49 pnpm-lock.yaml
-rw-r--r-- 1 hanyu staff 27 Jan 22 2024 pnpm-workspace.yaml

packages:
total 0
drwxr-xr-x 16 hanyu staff 512 Jan 14 21:09 api
drwxr-xr-x 24 hanyu staff 768 Jan 14 21:09 client
drwxr-xr-x 12 hanyu staff 384 Jan 14 21:09 common
```

- api: 后端 API
- client: 前端 next.js 实现
- common: 前后端共享的 data model/schema validation/utils 等等,不依赖 node.js 系统 API ,所以可以同时跑在两端上。

回复你的问题:

1. tsconfig 我没有特别配置过,common package 的 tsconfig:

```json
{
"compilerOptions": {
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"moduleResolution": "node",
"resolveJsonModule": true,

"declaration": true,
"declarationMap": true,
"sourceMap": true,
"types": ["node", "jest"],

"importHelpers": true,
"composite": true,
"target": "es5",

"rootDir": "src",
"outDir": "dist",

"baseUrl": "."
},

"include": ["**/*.ts", "**/*.json"]
}
```

2. 把 common package 当成一个单独的 npm/pnpm 包引入 api/client ,不需要用嵌套路径。npm/pnpm/yarn 都有相应的 workspace 特性,我最开始用的是 yarn ,后来转到了 pnpm ,参考: https://pnpm.io/workspaces

我的 pnpm-workspace 配置:

```
packages:
- 'packages/*'
```

顶层 `package.json` 配置:

```
{
"name": "ppresume",
"private": true,
"version": "0.7.0",
"dependencies": {
"concurrently": "^8.2.1",
"husky": "^8.0.2",
"lint-staged": "^13.1.0",
"prettier": "^2.8.1"
},
"devDependencies": {
"@commitlint/cli": "^19.3.0",
"@commitlint/config-conventional": "^19.2.2",
"@trivago/prettier-plugin-sort-imports": "^4.0.0",
"commit-and-tag-version": "^12.4.0"
},
"lint-staged": {
"**/*": "prettier --write --ignore-unknown"
},
"resolutions": {
"jackspeak": "2.1.1"
},
"scripts": {
"api": "pnpm --filter api",
"common": "pnpm --filter common",
"coverage": "pnpm common build && concurrently --kill-others-on-fail \"pnpm common coverage\" \"pnpm client coverage\" \"pnpm api coverage\"",
"client": "pnpm --filter client",
"build": "pnpm common build && concurrently --kill-others-on-fail \"pnpm client build\" \"pnpm api build\"",
"dev": "pnpm common build && concurrently --kill-others-on-fail \"pnpm client dev\" \"pnpm api dev\"",
"start": "pnpm common build && concurrently --kill-others-on-fail \"pnpm client start\" \"pnpm api start\"",
"test": "pnpm common build && concurrently --kill-others-on-fail \"pnpm common test\" \"pnpm client test\" \"pnpm api test\"",
"release": "commit-and-tag-version --bumpFiles package.json packages/*/package.json",
"commitlint": "commitlint --edit"
},
"commit-and-tag-version": {
"writerOpts": {
"commitsSort": false
}
}
}
```

`common/package.json` 的配置:

```
{
"name": "common",
"version": "0.7.0",
"description": "common code shared by ppresume project",
"author": "Xiao Hanyu",
"private": true,
"devDependencies": {
"@types/jest": "^29.5.5",
"@types/lodash": "^4.14.202",
"@types/node": "^20.5.7",
"jest": "^29.7.0",
"ts-jest": "^29.1.1",
"typescript": "^5.2.2"
},
"main": "dist/index",
"types": "dist/index",
"scripts": {
"build": "tsc --build --force",
"coverage": "jest --coverage",
"test": "jest"
},
"dependencies": {
"escape-latex": "^1.2.0",
"tslib": "^2.6.2"
}
}
```

调用 `pnpm common build` 来完成 `common` package 的 build ,然后在 api/client 里直接 `import xxx from 'common'` 就可以了

3. mono-repo 有 mono-repo 的好处的,最大的好处是出了 regression 问题可以用 `git bisect` 找 bug ,commit log 的维护重点还是靠个人/团队守规则。

我个人项目的概况: https://x.com/hanyuxiao1988/status/1878625079829172510

以上
353 天前
回复了 xiaohanyu 创建的主题 分享创造 PPResume 新年更新:新增两款简历模板
@sikex 收到收到,太感谢了,bug 报告很详细。
354 天前
回复了 xiaohanyu 创建的主题 分享创造 PPResume 新年更新:新增两款简历模板
@anUglyDog 嗯,有时候颜值就是正义么,哈哈
354 天前
回复了 xiaohanyu 创建的主题 分享创造 PPResume 新年更新:新增两款简历模板
@scienhub 嗯,仁兄是懂行的哈
1  2  3  4  5  6  7  8  9  10 ... 15  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1007 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 18:31 · PVG 02:31 · LAX 10:31 · JFK 13:31
♥ Do have faith in what you're doing.