V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  guochao  ›  全部回复第 2 页 / 共 4 页
回复总数  72
1  2  3  4  
零成本就是 Gitee Pages 这种方案了,如果有构建的步骤可以用 Gitee Go 补全,或者本地构建。缺点是会收到厂商制约

如果想独立于厂商的话,CDN + 对象存储会比较便宜。

访问量不大的话,还有个思路是有很多鼓励开发者的小网站方案,比如说楼上老哥说的 Vercel ,但是我没用过,不清楚国内的速度。

不过博客还是要先写,写了有人读,读了有反馈,反馈有对自己的奖励效应。这之后才是怎么建的问题。
因为“写程序”并不是一个单纯编代码的过程,其中涉及到很多计算机的知识、涉及到方法论,涉及到积累和设计。


就是上面几层说的,其实中间是有两条路径的:

一条是以有趣为核心。
先写简单有趣但是不带有目的的程序,取悦自己,取悦身边的人,这可以让你以一些简单的 topic 为中心,逐渐接触到更深的东西。像是 App 就不是一个简单的东西,并不适合作为新手村第一个任务,这玩意儿涉及到语言、系统、网络、UI 。如果要涉及到特定的任务,比如说编辑视频,那么还需要学习编解码、学习设计、考虑怎么让自己用着舒服,涉及到的领域和问题就非常的繁杂,很难推进学习进度。换个领域可能好理解一些,炒菜。相对的,从命令行对话、表白,到做一个命令行工具,到做一个命令行的文字冒险游戏,到做一个带界面的 Video game ,到做一个带界面的视频编解码工具,到做一个视频编辑工具,这就是一个比较平缓的路径。

另一条是以知识和技能网络为核心。
根据自己发展方向,在学习前和学习中优先构建路线图( roadmap ),根据路线图遍历节点学习有关的知识。这其中其他学科有的会倾向于先学知识再动手,相比之下计算机是理科中非常具有工科动手性质的理论学科领域,我个人觉得应该清楚目标以后,边学边动手边动手边学。这点我觉得 OP 没有什么别的大问题,无非是没有路线图而且选择的目标过大,无法取得进展所以引发了自己的焦虑。


无论哪条路线,"每天都要去更改视频中的文字...能不能自己写一个软件然后装到手机上" 都不是一个简单的事情,"Python 写爬虫" 也不是一个简单的按照格式写逻辑就可以爬下来内容的事情,环境、网络千变万化,不理解自己做了什么的话、有一丢丢变化导致的失败都会焦头烂额。


关于语言、工具的选择。OP 提到以前学过 Python ,那么其实可以先多用用 Python 。

写程序其实是一个把想法表达出来让对方(电脑里面其他的程序,也就是库)理解的过程,考虑一下我们和其他人沟通的过程,我们要考虑我们现在这个语言怎么表达我的意思,最终会拆解到,语言、表达方式、对方的思考(架构,逻辑),再加上对于特定的主题需要有足够的词汇积累。写程序是类似的,我们需要学习语言语法,学习怎么把自己的想法表达出来,学习语言的逻辑,学习有什么库和库的逻辑。我们有想法的时候,最好是可以把想法用画图也好、文字也好,先用自然语言叙述清楚自己想要什么,然后再按照自己写的布瑞符去用程序实现,有的时候逻辑复杂了,我们可以自己写一点点验证想法,然后按照关键词从积累里面找词汇找库,这个时候“各种模块都不熟悉,也不知道有哪些模块能干事情”的问题就没有了,因为你可以查了。


有的时候开始都不知道从哪里开始,可以从两个角度理解这个问题,一个是有趣但是曲线过于陡峭,一个是路线图上基础缺失,从语言表达来说也可以理解成词汇量不够,甚至不能用简单的语言转述复杂的想法。这种情况我觉得能做的就是,要么放一放,舒缓一下心态,要么多了解一下行业和周边,一点点做词汇积累,如果可以用简单语言转述一个复杂的想法,那么这个时候去搜索就是合适的了。


提到英语,我们查资料也不会用很复杂的英语,native speaker 并没有那么多,rephrasing into simple english 重新用简单英语表达,其实是大部分时候的常态。我也经常跟不上视频,不过我看视频也不多,阅读更多一些,技术文章没啥修辞不会太难的。


最后从编辑视频的角度来说,我建议用 Python 来处理视频,不要做 app 。不需要界面,跑命令即可。涉及到的知识主要是要理解视频由视频流、音频流、字幕流之类的这些流组成,涉及到的库就是视频编辑的,二选一 moviepy 或者 opencv ,还有音频编辑的。opencv 更多是个计算机视觉的库,只不过可以视频输入、按帧处理图像、输出视频,所以很多工具需要自己写。moviepy 我没有用过,看介绍是说音视频都没有用过。
- 非开发人员方案:坚果云 + 任意编辑器,本地文件系统可以集成加密工具,也可以集成 webdav 。服务器和本地都有备份,有历史记录,协作有付费团队的审计,包括 md 在内渲染好的文档可以直接分享。文档类的可以用客户端增量上传,注意 webdav 都是全量。坚果云公司内部用自己的产品管理自己的文档,公司自身是自己的用户
- 我自己作为开发的方案:任意 Git 托管 /git-ssh + Drone/嫖公有云 CI + Hugo 这类渲染引擎 /自己写脚本 + 嫖 S3 ,手机也有很多编辑器有 git 集成。
2021-09-06 15:02:16 +08:00
回复了 onice 创建的主题 Linux 为什么你要用 Linux 当桌面呢?
@skiy 我是觉得国内现在首先就是缺生态,缺应用,普通用户用不起来。其实底层的东西国内做了很多了,lvs 、tidb 、nginx 、linux 内核模块(比如说华为),甚至有些差不多算是正常用的服务器用的国产的 CPU (有些网站就跑在这些服务器上)。有了用户才知道脖子被别人卡在了什么地方,知道下来要做什么优化什么,没有用户就空想只能给别人养用户,或者做了东西有问题但是发现不了。

碎片化这个是个问题,但是不只是版本的问题,版本其实还好,snap 之类的工具就是解决这些。主要是桌面环境本身的能力,有的环境有 A 有 B 没 C,有的有 A 有 C 没 B 。鸿蒙、Fuchsia 都是把能力细化以后,应用按照能力分发,比如说现在 Android 本地 apk 只是一个形式,内部都是分解开的,分发的不一定是一个完整的应用。
2021-09-06 14:46:20 +08:00
回复了 onice 创建的主题 Linux 为什么你要用 Linux 当桌面呢?
Linux 下你对自己负责,任何商业软件下你希望其他人负责。抛开特别的生态需求,系统之间没啥差别。我选择 Linux 只是因为习惯了,很多人选择 Windows 也是类似的原因。另一方面 Windows 用户多可能和商业原因有关,硬件厂商很多会天然亲近 Wintel,我最近遇到的问题是主板有一天只能找到 Windows 的 bootloader 了( UEFI Shell 可以直接引导起来其他的 bootloader,说明包括 Secure Boot 在内的其他东西没问题),我自己感觉和厂商有关系,但是毕竟没有实锤,我不做 BIOS 给我代码我也锤不了。

非要说问题的话。

Linux 的主要问题在于碎片化,不同的环境满足的条件不一样,进而导致不同的应用表现差异有大有小。安卓也是类似的问题。再有就是权限放开以后大家认为法无禁止皆可为,可是 Linux 什么都没有禁止,就有很多人以为什么事情都可以做,做了也没关系。我自己平时也搞一些 Linux 桌面中间件(就是老看更新的 dbus 的各种服务),所以现在的工作也和 Linux 桌面生态有关。桌面环境一般够好了,不管是操作还是渲染效率。出问题八成是没有理解逻辑做了没法负责的事情。有的应用或者硬件不成熟是一定的,缺少(行为随机的普通)用户使用的产品都是缺少验证的,但是作为开发者不觉得是大问题,只是什么时候生态够大,大到能逐渐容纳用户、验证产品。那当然产品也要分情况,普通用户就限制死,不要做自己负责不了的傻事儿,需要开发东西了再考虑放开权限,其实就是 UOS/ChromeOS 的思路。啥?你说 configure 、make 、sudo make 不是正常操作么,凭啥不让我做?这还真不是正常操作,毕竟楼上大多出问题的连 ld 都没搞清楚过,Linux 对大部分人只是一个平台,一个环境,但是不是研究对象,知道 epoll 知道内核的某些模块知道一些原理不代表理解了 Linux 。就像是你很熟悉飞机的面板制造工艺,能说自己熟悉飞机整体么?能在家目录里面装上包配置环境,让二进制能被找到,这对于大部分人来说已经足够了,包括大部分的研发。

Windows 不熟悉,但是遇到过中文路径的问题,anaconda 很难和其他工具集成,conda 没法用系统代理(每次直接报错,必须关了代理再跑 conda ),环境变量管理复杂,桌面卡死,复制时系统失去响应,dotnet 为啥 udp 还要报端口拒绝,QQ+虚拟机+游戏有概率会死,构建的时候索引和桌面占资源太多,音频有驱动有输出没声音,某些版本的一些软件终端渲染很慢( tty 的水准),硬件 passthrough 没搞懂怎么搞,应用之间不怎么好隔离,Windows 容器占的内存也太夸张了。但是赢就赢在有生态,另外 WSL2 的效率勉勉强强及格了,只是桌面还是很怪异,没法日常用。尝试了几年的微软栈以后,最后放弃了 Windows 。

回到一开始,我不用 Windows 只是因为我习惯了 Linux,而且 Linux 的生态可以满足我的需要,3D 建模、文档、简单的 CAD 、简单的电路设计,这些在 Linux 上面对我来说足够了。反过来说,如果没有这些生态,那我推荐你用 Windows,毕竟讨论独占生态没有意义,XBbox 没有地平线零之曙光就是不好了么,只是零之曙光选择了 PS4 独占而已。
2021-07-31 17:03:21 +08:00
回复了 hongqn 创建的主题 酷工作 [北京/远程] 北京雅识招聘后端工程师(Python3 / FastAPI)
@hongqn 有兴趣加个微信吗:base64:Z3VvY2hhbzMwNTQyMQ==
2021-06-09 09:55:19 +08:00
回复了 EscYezi 创建的主题 程序员 git 仓库同步到坚果云上后损坏了
@hanssx 就是正常的 Git 托管服务啊,用 git 来推送或者拉取就好了
2021-04-04 13:55:51 +08:00
回复了 EscYezi 创建的主题 程序员 git 仓库同步到坚果云上后损坏了
git 会快速操作大量文件,并且涉及到 filemode 一类的文件属性的操作,同步盘本质是把文件内容修改排队上传,定期 squash,有意外情况的时候(比如说在很短时间内增减同一个路径上的文件)很容易破坏 git 树,而且无法保留 filemode 也会丢失非常多信息。类似的是 vim,也会快速的增删文件

直接提交到 git{hub,lab,ee}吧,gitlab 在国内也建了团队,gitee 和 gitlab 在国内的可用性应该都会相对越来越好
说实话,价格和任何其他的特点是冲突的。便宜的就要牺牲太多东西。

之前在坚果云工作了几年,网盘存储要钱,同步盘流量烧钱,计算靠人力优化架构和堆服务器,都是成本。要做 p2p 类的东西还可能涉及到政策限制。是做企业的不是做慈善的,很难有又便宜的服务。

建议就是根据需要把资源分到不同的地方,百度云或者自建存储存媒体,坚果云或者 icloud 或者 dropbox 存文档,git 托管代码。
赞。氛围很不错的
2021-02-04 10:48:44 +08:00
回复了 RandomAccess 创建的主题 Python 关于 Python event loop
简单说 python 的 event loop 是一个单进程单线程单个 loop 执行 coroutine 的过程。asyncio.run 就是一个创建 loop 并且 run until complete 的过程,new event loop 又建了一个,没有必要。

解决办法就是让整个程序的入口是一个 async 函数,在 async 函数中配置程序,新建各种实例,启动应用。在__main__里面 asyncio.run(entrypoint())就行。然后在任何其他地方都不要 new_event_loop 或者 asyncio.run

如果要执行一个 coroutine 但是不等待结束,可以 asyncio.ensure_future 或者 3.7 以上的新 API asyncio.create_task,这两个函数都是在 get_event_loop()返回的 loop 上执行对应的函数,会返回一个 Task
如果要在一个 coroutine 中执行一个 coroutine 并且等待结束,那就直接 await 。
如果要执行一个同步过程,可以用 run_in_executor,返回一个 Future
另外也可以考虑写命令行下的 UI,比如说 ncurses,c 和 python 都有,也挺好使的。
C 可以做 UI,但是 C 没有类型导致有些东西做起来没有那么方便,比如说继承啊什么的,就很难搞。

然后 UI 分两类吧,你要是想用其他人写好的绘制的控件,目前我看到的勉勉强强能跨平台的,就是 gtk 。像楼上说的用 api 撸,比如说 win32 api 或者 x server 的,可以是可以,没必要。其他的库,不跨平台的,我也没看到有啥更好的选择。

如果是打算搞自绘 UI,那可以用 SDL2 或者类似的 SDK 。比如说就用 SDL2,或者用 glfw+opengl 。这也是一条路。但是就是看起来不是那么 native 。

如果你打算写写 c++,或者写写 c 风格的 c++,那选择就多了,无论是 MFC 还是 Qt 还是 wx 还是什么其他的,做界面都好说。
2021-01-21 13:37:08 +08:00
回复了 EdisonChen666 创建的主题 Linux Linux 发送邮件到 qq 邮箱的问题
#7 +1

补充一下。现在各个厂商之间有 IP 白名单和各种机制,白名单内发信和白名单外发信拦截的规则有非常大的不同,自建邮件服务有很大可能性会被别人当成垃圾邮件拦下来或者干脆无法到达。但是手工发信很多时候的确是满足不了需求,所以有了 sendgrid sendmail mailgun 这类服务。这些服务提供接口发信(一般是 smtp+http api ),同时也会审查你的行为,如果有不合理的发信行为可能会 ban 帐号,以此维护自己和其他服务的白名单关系、提高发信到达率。

QQ 邮箱这种给最终用户的,可以加个客户端密码**用 smtp 登录上去**,从自己的帐号给自己或者别人发,有频率和数量限制,少量的一般没有问题。如果要大量发信,建议找个这种发信服务,会好很多
2021-01-18 11:40:55 +08:00
回复了 missz 创建的主题 Node.js puppeteer 运行一段时间后无法启动
@WishMeLz 可能性有几个,一个是这玩意儿依赖 X,是不是什么库没有装。另一个是 chromium 带了几种沙箱实现,是不是这几种沙箱都不能正常工作,不能正常工作的话会失败。

@missz 想起来忘了说的一个问题。你加了'--no-sandbox',建议还是不要这个。在代码里面修一下 sandbox 的权限,sandbox 文件的 owner 需要是 root ( puppeteer 解压以后是当前用户,需要 chown ),并且需要 chmod u+s 来让当前用户下执行的程序自动切换到 root (用来配置沙箱环境限制子进程)。而且,对,推荐用 @Areym #2 提到的开标签页做事儿。
2021-01-18 10:39:39 +08:00
回复了 missz 创建的主题 Node.js puppeteer 运行一段时间后无法启动
我原来遇到过 chrome 标签无法自己关闭的情况,所以后来是用了 cgroup 啊、timeout 啊之类的工具,来清理 chrome 进程。

你上面贴的信息不足以得到为什么启动不了进程的原因。原因有很多,比如说资源不够了( pid,mem,……)。我没读过 chromium 实现,但是有没有可能是用了同一个 profile ?用同样的参数能不能手动启动一个 headless chromium ?

建议先自己再调研一下
建立 net_cls cgroup,对 cgroup 进行 mark,在 route 中使用 mark 建立路由

如果需要的话可以用 systemd-slice 对一组 exec 进行 mark 。或者自己写脚本。

除此之外,还可以用这个方法对单独的进程设置防火墙或者施行 traffic shaping

ref:
这篇博客描述了大概的做法: https://www.evolware.org/?p=369
防止博客崩掉贴上 Archive: https://web.archive.org/web/20201112024042/https://www.evolware.org/?p=369
Arch Wiki - cgroups: https://wiki.archlinux.org/index.php/Cgroups
man pages - cgroups: https://man7.org/linux/man-pages/man7/cgroups.7.html
man pages - ip-route: https://man7.org/linux/man-pages/man8/ip-route.8.html
2021-01-13 19:56:35 +08:00
回复了 hbolive 创建的主题 Go 编程语言 安装 colly 框架失败,难道真要翻墙才行吗?
看看```go env```输出,还有 go 版本。怀疑你是用了老版本
kde 上用到 kwallet 的地方遍地都是。比如说 plasma-nm-applet,是一个 qml app,注册自己为 network manager 的 secret agent 、和用户通过 GUI 交互来提供 credential 、作为 network manager 的 credential store 来 CRUD 。

kde 类的 kwallet,其他的 gnome-keyring 。Windows Credential Manager 。macOS keychain 。都是类似的东西。
1  2  3  4  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3580 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 05:08 · PVG 13:08 · LAX 21:08 · JFK 00:08
♥ Do have faith in what you're doing.