手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表查看gouki的文章

一个#[Modelable]解决了所有烦恼

 在使用livewire的过程中,由于没看文档,浪费了不少时间 ,比如 多个组件在往下传递的时候 ,某个子组件中其实有很多值需要向外变更,但事实上只有一个有效值 需 要向父组件传递。

当然,可以通过event进行传递。但就是因为不想写event,浪费了大量时间 在看wire:model怎么绑定。
 
看了官方的nest-component一章才发现,原来有个#[Modelable]。就是专门用来解决这个问题的。
详细参考:https://livewire.laravel.com/docs/nesting#binding-to-child-data-using-wiremodel
不多说。太长了主要

tailscale fix: NO_PUBKEY 458CA832957F5868

 在Debian下,按照官方的教程进行gpg和source的添加时,在apt update时会报错 NO_PUBKEY的错误

1、添加GPG
curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
2、UPDATE
sudo apt update
 
大概率情况下是报:
 The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 458CA832957F5868
Reading package lists... Done
W: GPG error: https://pkgs.tailscale.com/stable/debian bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 458CA832957F5868
 
--
出现这个问题,大部分是因为用tee生成文件的时候 ,权限不对,所以需要执行一下: chmod o+r /usr/share/keyrings/tailscale-archive-keyring.gpg
 
再进行sudo apt update,一切正常!
 

解决livewire/livewire.js找不到的问题

因为今天用了filamentPHP这个框架,类似 laravel-admin/ dcat-admin等。为什么想用它呢。看官网,插件极其多...

根据官方的教程进行composer require以及publish素材后,本地一切正常,但上线后,报livewire/livewire.js找不到
找了一下根目录,发现确实没有。于是php artisan route:list|grep livewire,看到是由PHP进行模拟的。
 
但因为我用的是lnmp ,默认对JS有一个30d的缓存,所以需要在js的判断前加上
XML/HTML代码
  1. location = /livewire/livewire.js {  
  2.     expires off;  
  3.     try_files $uri $uri/ /index.php?$query_string;  
  4. }:  
不设置过期时间 ,同时是由PHP来解析。reload一下nginx,再次打开网页,一切正常
 
 

Tags: laravel

字体转换相关

 小程序里最烦人的就是自定义字体了。设计师们总喜欢用一些看起来很好看的字体。但对于小程序来说简直是个灾难。

所幸,如果是英文字体的话,一般都只有8~10K,但那些 OTF 其实还是很大,而且不少字体中有一些特殊的符号,比如@这些。但事实上很多时候我们都不需要。所以这时候就要转换一下。。。
1、convert OTF to TTF
2、用 sfnttools.jar 包(网上都是这个名儿)。来进行转换,类似 java -jar sfnttool.jar -s '内容,也可以是文件' 源字符.ttf 生成的.ttf 
3、如果字体还大于50K 的话,转换成 base64
4、如果小于50K,直接就可以引用了。。。。
 
大致这样。。
 
1、https://cloudconvert.com/otf-to-ttf
2、https://www.giftofspeed.com/base64-encoder/
3、fonttool.jar
 
参考:https://blog.zengrong.net/post/font_trim_replacement_converting/
 
 
jar 包的详细用法可以直接命令行看
XML/HTML代码
  1. java -jar sfnttool.jar -h    
  2. subset [-?|-h|-help] [-b] [-s string] fontfile outfile    
  3. prototype font subsetter    
  4.         -?,-help        print this help information    
  5.         -s,-string       string to subset    
  6.         -b,-bench        benchmark (run 10000 iterations)    
  7.         -h,-hints        strip hints    
  8.         -w,-woff         output woff format    
  9.         -e,-eot  output eot format    
  10.         -x,-mtx  enable microtype express compression for eot format   
 
 
 

antv的 dialog 如何去掉边框

 在用 antv 的 modal 对话框时,你会发现弹出来的框有一个很大的边框,打开 css 会找到 ant-modal-content 这个 class。如果你直接 加这个样式 padding: 0,或者 :deep(.ant-modal-content){padding: 0 }你会发现都不起作用

即使,即使你用了 important 也还是不起作用
 
这时候 看浏览器工具栏的右侧,会有类似 :where(xxxx) .ant-modal-content 这样的样式,也就是说他本身就是一个伪类,如果你直接对它操作是不起作用的。
 
网上找了很多资料。最后找到说,其实他有一个 wrap-class-name 的属性。用了这个属性后,整个对话框里的样式就可以跟着这个外层类走了。因此设定:<a-modal wrap-class-name="wrap-modal" ></a-modal>
再添加样式:
XML/HTML代码
  1. .wrap-modal{  
  2.   .ant-modal-content{  
  3.     padding: 0!important;  
  4.   }  
  5. }  
再次看弹窗。一切正常啦 ~
 
Records:303912345678910»