title: linux修改字符集
查看当前字符集
1 | locale |
加上-a
参数则显示系统可用字符集
安装软件包
1 | sudo apt install language-pack-zh-han* |
安装中文字符集
1 | cd /usr/share/locales |
修改系统使用中文字符集
1 | vim /etc/default/locale |
修改后的是:LANG=zh_CN.UTF-8
linux下tcp代理可以使用ssh -D
来实现,但是有些场景下必须使用http代理,这时就必须使用第三方软件了,目前发现的一个比较好用的是privoxy,安装
sudo apt install privoxy
,
配置文件写入(注意forward这行后面的点不能丢了):
forward-socks5t / 127.0.0.1:8888 .
listen-address 127.0.0.1:777
运行:privoxy xxx.conf
限于支付问题,我一直没有尝试过github的copilot,使用的是aws家的CodeWhisperer。早上看v2ex论坛,说有免费额度无需事先绑卡。于是我查了一下我的邮箱,果然我也收到主主题为“You have free access to GitHub Copilot”的推广邮件。终于有幸一近芳泽,从上午试用到现在,总的感觉并不比aws家的CodeWhisperer强到什么地方去,大概就是半斤八两的意思吧。
最大的不同在于使用范围,CodeWhisperer是对个人完全免费使用,而github的coilot并没提到这个免费额度限个人使用或者不允许企业使用之类的字眼。github推出这项服务的动因应该是受到来自同行竞争的压力,不过不管怎么说,多一个选择总是好事。
这几天都在忙于维护一个在2012年前后开发的项目,用户要求进行一些功能上的扩展。很不幸的是,这个项目是我用delphi开发的。而delphi作为一个上古时代出现的集成开发环境,在使用上真的是太不方便了。IDE没有代码自动完成功能,IDE也没有自动格式化代码的功能。还有各种不方便,和现代IDE根本没法相提并论。这也就顺带着使得pascal语言越来越没人用了。
这几年乱七八糟的学了很多东西,也做了好几个产品。没有一样学得好的,也没有一样做得成功的。
学习方面,初级与中级会计师考试是通过了,但实际上很多知识点仍然处于模糊状态。AI方面的学习则毫无进展,始终停留在基础入门阶段,没有做出过什么实际有用的东西。英语马马虎虎4级水准,离流畅阅读与听力相差甚远。
而在工作上,做了进销存软件,付费用户没几个。做了会计软件(半成品)。做了一个学习辅助小程序,用户倒是有一批,但是没有恰当的变现方式,目前也处于半放弃状态。
细细总结,主要就是不够专注,没有一心一意的做好一件事。人的精力是有限的,同时关注太多的事,无论是学习还是工作,如果三心二意的,就很难有所成。
所以2025,给自己定个计划。在学习上花3-6个月的时间提高自己的英文能力,达到流利阅读与沟通的能力(国内的机会太少,管得也太紧,也许走向海外才有更多的机会);英文能力满足要求后,再深入的去学习AI相关的应用。而在工作上,一心一意的做好会计软件,以我现在养的几个群,应该能吸引到用户,走免费软件+广告的路子试试看;学习辅助小程序则直接放弃吧(受到平台的限制,很多变现模式没法用);至于进销存,仍然需要做好维护工作,毕竟还是有点用户的。
无论年龄多大,我对未来总是充满期待,不抛弃不放弃。加油2025!
一个朋友自己注册了一个小公司赚点外快,今天找我说是因为前面增值税申报对比不符,系统被锁开不了票。我查询后发现,开票记录的税额是323.31,但是申报系统里算出来是323.30(且不能手动更改)。我猜申报系统里可能是用总额乘以税率得出的,所以才会存在这么个分币误差。
当然最后通过在线客服咨询得知,开不了票其实是因为以前的税盘没有缴销,让带上空白发票、公章、税盘去缴销就行。但这个分币误差却又确实存在,不知道实际扣款时扣的是多少。我挺好奇他的那个代账会计难道没发现这个误差吗?
就我个人体验而言,国内政务系统最好用的可能就是税务系统了,客服响应真的快,在线解决问题。至于分币误差和提示不够精准其实都是小问题,只要响应迅速,这些问题都不算问题。
嗯,我就是那个懂程序的会计,也是那个懂会计的程序员。
在postgresql数据库中,默认情况下所有字符类型的字段都是区分大小写的,但在实际业务中我们一般需要不区分大小写。这就导致需要不区分大小写的查找,在写sql语句时需要做大小写转换。最为麻烦的是,索引也区分大小写,这使得具有unique属性的字段里会将’abc’、’Abc’、’aBc’视为非重复值,给数据的维护带来麻烦。虽然可以通过使用表达式索引解决,但这显然提高了复杂性。
最优的解决方案是使用citext类型。启用方式如下:CREATE EXTENSION IF NOT EXISTS;
执行本命令后,会在当前search_path(一般默认是public)所指定的schema的type里新增一个类型,然后在建表时直接指定字段类型为”citext”即可。
这里需要注意的是:如果在其他schema里的表使用了citext类型,必须确保在执行查询前使得search_path指向的是type所在schema。写这篇文章就是因为我的一个数据库,删除了默认的search_path指向的schema(public),创建citext扩展时类型写到了schema(main)中了。由于当前schema(public)不存在,在查询时使得使用了citext类型的字段仍然对大小写敏感,必须手动设置search_path为main之后,再查询才能正常发挥citext类型的大小写不敏感的特性。
一直在台式机上使用comfyui,毕竟台式机上有一个3060显卡。但每次画点小图就要开台式机也挺烦的。看到comfyui支持使用directml,就在笔记本上安装了一下。我的笔记本是AMD的CPU+集成显卡,没有独立显卡。安装过程倒是很顺利,唯一需要注意的是,应该先安装torch_directml,后再执行pip install -r requirects.txt
,因为requirects.txt文件里的torch版本和torch_directml里的torch版本不一致。
第一次是在wsl中安装的,安装过程很顺利,但在执行pip install torch_directml
时,我发现他下载的包中包含”cuda”字样,果不出所然,在出图时提示找不到nvidia驱动。后问AI得知,wsl中使用directml只支持nvidia的显卡,然后微软相关文档页面居然没给提说明。
第二次是在宿主机安装的,安装过程一如既往的顺利,也能顺利启动。然而在出图时,笔记本风扇狂转,然后直接死机了。盲猜,directml用是可以用的(因为测试示例代码是可以正常运行的,也能返回正确的结果),就是笔记本是轻薄本,散热压不住,直接挂了。
我在笔记本上运行comfyui的计划只能泡汤了,继续使用台式机出图吧。轻薄本带着是方便,但是散热确实不行。买笔记本还是应该买傻大黑粗的大家伙,至少散热强,如果散热足够强的话,笔记本上跑图应该没有问题。
以前一直用react.js
写前端,最近一个项目使用了solid.js
,发现一个我一直存在的误解。input
的onchange
事件只在内容被改变且input
失去焦点时才会触发。react
由于采用了一个叫作“合成事件”的机制,导致在react
里input
的onchange
事件只要input
内容发生变化,即使没有失去焦点也会立即触发。在原生写法和solid.js
中不是这样的,onchange
事件在内容发生变化时并不会触发,只有当input
失去焦点时才会触发。这么一个小小的误解导致了我软件的bug。
更详细的解释由AI给出:
在 React 中,input
的 onChange
事件与传统的 HTML 行为不同。在 React 中,onChange
事件是在用户输入内容时立即触发的,而不是等到失去焦点时。
这是因为 React 使用了一个叫做 “合成事件”(SyntheticEvent)的机制来处理事件。合成事件是 React 自己实现的事件系统,它可以在不同浏览器之间保持一致的行为。
在 React 中,onChange
事件是通过 onInput
事件来实现的,这意味着当用户输入内容时,onChange
事件会立即被触发。
因此,在 React 中,你可以使用 onChange
事件来监听输入框的变化,而不需要担心它是否会在失去焦点时触发。
AI确实给我们的工作和生活带来了极大的方便。
今天把另几个域名都转了改用let’s encrypt的证书,但在使用nginx部署几个空网站时,nginx 报403 forbidden错误。经搜索发现是由于权限引起的,因为我的几个空网站使用的是index.html
这样的静态文件,且放在我自己登录用户的home目录的,而nginx是使用www-data
身份运行,所以他无权限访问我的home目录,也就出现了403 forbidden错误。解决方案也很简单,只要把www-data加入我登录的用户组就可以。因为用户home目录默认同组用户具有读权限。
下午这么几个空网站折腾了2个多小时,确实有点费时间,应该考虑使用podman部署的,至少以后迁移换服务器方便多了。