易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
用glitchtip来代替sentry

用glitchtip来代替sentry

之前有提过,上半年我终于卸载了sentry了。主要还是它实在太重,要求必须要4c8g的机器上才能跑。一跑就占用了60%以上的资源,纯浪费这样一台机器的意义并不大。也尝试用frpc/tailscale/zerotier等工具穿透到内网,在内网搞一台配置高的HTPC来做这个,但确实效率一般(自从家里升了2000M宽带,倒是可以尝试了,直接接在路由上也挺好)

但在公网还是尝试了一下替代品,毕竟有几个项目在用着,虽然sdk在连接出错后会自动屏蔽但还是准备弄成平替版的。
看了下,有平替的,就是glitchtip了。不象sentry那么重,按官方的例子,安装完只有4个容器,啥配置的鸡鸡都能玩得起。
参考:https://glitchtip.com/
如果自己安装的话就可以看这个了:https://glitchtip.com/documentation/install,还能一键部署到其他平台
mac多屏幕下的程序坞问题以及打开系统设置的方法

mac多屏幕下的程序坞问题以及打开系统设置的方法

在mac 下面,如果你多屏幕 的。建议把 程序坞隐藏掉。这样有个好处,在任一屏幕 上,到指定位置都能打开程序坞。不然,你固定在 main 窗口,他不知道什么时候 就到另一个屏幕去了,而且连原因都不知道。。(适合屏幕左右排列,程序坞在最下方),程序坞放在左、右侧的都不起使用。

另一个就是快速打开屏幕 设置。按住 option+屏幕亮度,可以打开系统设置(+音量,可以打开音量设置),加 F3那个可以打开外观设置
如果你不想管理程序坞,建议安装 Raycast 这个软件,免费版的就行。可以自己调定快捷键来管理:窗口大小和位置,以及打开任意已经打开过的 APP(这个还是比较方便的,因为有些APP 因为屏幕空间小的关系,在使用的时候 会隐藏在副屏,或者第二、第三窗口,如果直接通过触摸板来切换,很麻烦。打开已存在的 APP,则可以直接激活窗口)。【cmd+tab 也可以,但 cmd+tab 有个很烦的地方1、他会激活在你不知道是哪个窗口,2你只能通过多次按 tab 来切换】而 raycast 的这个就比较方便了,支持快捷键、支持模糊搜索。
---EOF---

laravel的 macroable

laravel的 macroable

其实有点不想写这个的,但想想还是提一嘴吧,主要是用了这玩意之后,在 phpstorm 下面,不配合 laravel idea 的话,根本起不到太大的作用。安装了 laravel idea 之后。再 generate helper code 后。就可以当成正常的方法用了(当然,即使这么用了,带来的另一个问题就是。。refactor 的时候,不会受影响,毕竟这其实就是数组的一个 key)

macroable 的适用场景,官方介绍的更多是象 str / arr /collection 的扩展。而且 macroable 有点象是 trait。给现有类注入一个方法(这点在 yii中其实早就有了。不过macroable 也属于很早的框架,只是叫法不一样罢了。 )
macroable 的 mixin 方法,估计很多人很熟悉,是的,vue2的时候 ,也是这样来注入新的方法的。
除此之外,我们可能有时候 还会在 Model / Cache 里加入自己的用法。比如标准的 Model,肯定没有 pinyin 这样的方法, 比如我要将标题转为拼音当成 slug 来用,有几种办法:
1、直接写个方法 title2pinyin( $title )
2、在 Post 类里增加一个方法 getPinyinAttribute,返回拼音(如果有多个 Model 里有类似的要求,那要么把这个方法写成 trait,要么一个个复制)
3、Post::macro('pinyin',function(){ return .... 拼音 })

类似这几种方法,不能说孰优孰劣,但如果和 model 相关的操作是被项目的人封装成 composer 的类时,也就1和3可以用了。
说实话,要想好好用这个方法,并且形成优势。有时候还真不知道或者真没感觉倒,但这毕竟也能算是曲线救国。想想,如果在 cache 里用。可以 cache()->get('name')->toPinyin(),感觉也还不错。
第一次 node 编译前端项目到内存不够

第一次 node 编译前端项目到内存不够

在编译前端项目的时候报错:FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

真的是第一次遇到,PHP 就不会出现这种问题,哈哈
内存还是小了点。然后估计我还是要清理和合并掉一些包,不然在小内存(1G)的机器上估计还会有问题。
小内存的机器看来可以利用 git 的 action,在编译好之后把构建复制过去,也是个办法。
mac下ruby 安装 mysql2真是一堆坑

mac下ruby 安装 mysql2真是一堆坑

直接 gem install mysql2报错。确实很烦人,因为我 mysql 本身本机没有,所以就不太可能安装 mysql-client 之类的。于是安装了 mysql-client。但还是报错。无法编译。

看网上的文章是安装 mariadb,然后指定 mysql-config 就 OK 了。我已经懒得弄了。。。。。
你看 postgresql 多方便,安装失败的时候 ,提示你 brew install libpq,就行了(确实是在我 install libpq 后,gem 就走完了)
真不知道那些本地没有 mysql 的人是怎么忍受得了 mysql2这样的库的(也可能只是我受不了吧)
---
问了一下 gpt,他说我安装好 mysql-client 后,还要指定一下:
export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
export CPPFLAGS="-I/usr/local/opt/mysql-client/include"
然后再运行就 OK 了。于是我又重新 retry 了一下。但还是失败了
--
如果要成功就参考这个吧:https://medium.com/@0x88/%E5%9C%A8-macos-%E7%84%A1%E7%97%9B%E5%AE%89%E8%A3%9D-ruby-mysql2-gem-apple-m1-intel-mac-%E9%81%A9%E7%94%A8-330f996ae3c7,我是不想再试了。要么 sqlite ,要么 pgsql 吧
rails配置 hot-reload

rails配置 hot-reload

Rails 在进行开发的时候 ,默认没有 hotreload。当然其实 laravel 也没有,但 laravl 因为用了 vite,所以其实是可以使用 vite 的 hot reload 的功能。vite 里还有 laravel 的插件,直接就支持了。

rails 里如何配置呢?其实也很简单,在 Gemfile 中的 group :development 中增加 `gem "hotwire-livereload"`,然后 bundle install 就OK 了。
当然这只是先添加了 hotwire 的库,还需要运行 rails livereload:install,会在 application.html.erb 的header 头中增相应的 js引用
同时还修改了 config/cable.yml,增加了 redis 的相关引用。
这就意味着,原来没有使用 redis 的。你需要安装一下 redis 才 OK,配置完后,再打开模板进行修改保存后,会发现页面确实刷新了。
步骤简化成:
1、add hotwire-livereload
```
group :development do
gem "hotwire-livereload"
end
```
2、bundle install (这里面要注意如果你注释了默认的 source,可能会失败,指定一下 source 即可,如果镜像的 source 不能下载,设置为 rubygems.org 即可)
3、rails livereload:install
4、rails server (如果有报错,可以看一下原因:可能的原因是:a. redis server 不存在 b.redis-server 不能连接)
用 laravel11 + Filament 来尝试写博客 (一)

用 laravel11 + Filament 来尝试写博客 (一)

Laravel 官方在推上说即将推出 Laravel11,这次的推出的版本将以极致的精简,而且去掉了很多原来为了结构而分拆的文件。象 Console/Http 下的 Kernel 文件,全部去掉,而且改 bootstrap/app.php 来实现了,在路由里甚至留了一下 health 。用于其他监控项目来检查服务器是否正常。默认是:http://{hostname}/up,我在本地运行下来,执行时间是39ms,所以我就更加想尝试用11来把我当前的博客重写一下(之前写的时候 ,都是考虑直接使用原来的数据库结构,导致写了几次都发现很不 laravel,所以几次就放弃了)

Filament,是一个后台管理项目,基于 livewire 的(关于 livewire,可以查看 https://livewire.laravel.com ),号称是不用写 JS 的后台管理。之所以选择这个,是本来几年前用的是 dcat-admin,然而作者也已经好多年没更新了(这就是使用第三方开源项目的尴尬之处,作者也不太可能用爱发电,如果项目没有赢利或者找不到赢利点,这个项目很可能就无疾而终了)。而选择 filament 也是因为看中了他的生态,有完善的插件平台(有免费和付费插件)。一旦有人购买插件,会促使更多的人使用并扩展(搜了一下,其实有不少类似的,象:splade.dev / tomatophp / nova[官方] ),但目前看下来,好象还在持续更新的就是 filament 了。在推上也能看到 filament 挺活跃。所以选择它做为接下来3年的后台管理。
今天就先到这里先介绍一下这两个项目,然后准备开始写,遇到踩坑的地方也会记录一下。
项目开始其实很方便
laravel new blog,就可以初始化项目了。因为考虑到其实暂时不需要前台登录,所以没有用 breeze 和 jetstream。
项目初始化后,运行 composer require filament/filament 就可以安装好filament 了
这时候还要运行 php artisan filament:install --panels。安装完面板后,可以通过安装时指定的路由进行访问(默认是 admin,可以在运行的时候 进行设置)【备注:后期要修改的话,可以在 app/Providers/Filament/AdminPanelProvider.php 中进行调整】
但此时还不能登录,因为没有 breeze 和 jetstream ,所以连注册也没有,此时只能通过 php artisan make:filament-user 来新建一个用户。
此时,filament就已经安装完了。项目正式启动。

时隔2天,我又把 IPV6给关掉啦[有更新]

时隔2天,我又把 IPV6给关掉啦[有更新]

网关上有 IPv6,小米路由器也支持 IPV6,但是国内支持 IPV6的网站太少了。导致打开各种网页都是卡成狗的样子。

把 小米的 IPV6关掉后,打开网站也立刻飞了起来
所以,暂时关掉,但没有和电信说关,这样我真要用的时候 ,也还可以立刻开始(直连电信的猫就行了)
同时,发现 IPV6下,迅雷下载速度飞起来了。
不知道是 BUG 还是确实是 IPV6不太好拦
-----
更新,又换成 IPV6啦 。估计是默认的电信的 ipv6的 dns 有问题,换成百度和阿里的,立刻就飞了起来
2400:da00::6666
2400:3200::1
备份一下:更多的查看这里:https://dns.iui.im/
基于IPv6访问GitHub

基于IPv6访问GitHub

有一说一,这真是一个大难题,如果用 dig -AAA github.com +short,是可以得到 ipv6的,但如果你 dig -AAAA api.github.com +short,返回的就是空。

在这种情况下就啥也拿不到了,查了不少资料。发现确实没有,但还是有好心人做了一个项目,即反代 github的资源,并提供了 ipv6的地址,就在:/etc/hosts 里加入下面的内容
2a01:4f8:c010:d56::2 github.com
2a01:4f8:c010:d56::3 api.github.com
2a01:4f8:c010:d56::4 codeload.github.com
2a01:4f8:c010:d56::5 objects.githubusercontent.com
2a01:4f8:c010:d56::6 ghcr.io
2a01:4f8:c010:d56::7 pkg.github.com npm.pkg.github.com maven.pkg.github.com nuget.pkg.github.com rubygems.pkg.github.com
 
参考:https://danwin1210.de/github-ipv6-proxy.php。好歹是能用了,不是吗?
为BuyVM的VPS配置IPv6

为BuyVM的VPS配置IPv6

看标题知内容,本来也没想着这么急的,今天打开 Aws 的LightSail 看的时候,发现费用涨了1.5刀,原因就是从5-1开始的 ip4要正式收费了。然后这一台服务器的作用其实没有那么大,所以准备尝试着切掉ip4,只保留 ip6 (cloudflare 的域名解析可以直接支持 ipv6,比如A 记录换成了 AAAA 记录,就是 ipv6的)

但问题来了
1、我家里没有 IPv6
2、我得找一台支持 IPv6的机器进行测试一下先。
于是就想到了到 buyvm 的机器上测试,结果一看,buyvm 默认没启用,于是想办法启用一下 ipv6
1、进入管理界面,找到当前这台 VPS
2、在 networking 界面上点击 ipv6
3、生成 ipv6的地址,status 那里要变成 active,保存
理论上是这时候 是OK 了,ifconfig的时候 只能看到 fe80,即相当于127.0.0.1了。没有拿到公网 IP
4、点击 ipv6地址的最右侧齿轮,查看 networking,可以看到 gateway 和 netmask
编辑 /etc/network/interfaces ,增加静态内容
iface eth0 inet6 static
address ipv6地址
netmask 48
gateway gateway 的地址
再执行 systemctl restart networking。如果不启作用可以重启
执行:pin6 2606:4700:4700::1111,直接就看到输出啦
2606:4700:4700::1111,这是 cloudflare 的1.1.1.1对应的 ipv6
至此,搞定