Write the Code. Change the World.

分类目录
4月 18

docker 中运行 mysql 8.2,默认情况下,会占用 400M 左右的内存。运行两个就双倍。对于那种便宜的阿里云1核1G或2G的服务器,很容器就卡死。这个时候,就需要设置设置,降低 mysql 的内存消耗了。
其实,一个 mysql 占用 400M 内存,为什么要在一台服务器上装那么多呢。可以对 mysql 进行单独编排,然后通过同一网络的方式,让其他容器也都能访问这个 mysql 就可以了。出现前边那种局面往往是一个完整的项目会有 mysql,redis,php,python,java 等环境构成,而这些构成又放在一个 compose.yaml 中进行编排。那么多个项目后,就会出现多个重复的进程了。虽然对于磁盘空间不会多份重复,内存是在重复增长的。这个时候,设计项目组合的时候就需要考虑考虑。所以想单独剥离 mysql 出来。

可以使用 htop 命令来查看服务器的 cpu,内存使用情况。

可以使用 docker stats 来查看容器使用 cpu, 内存的情况。

优化使用 mysql 内存

新建 my.cnf 文件 ,位置是这样的 ./conf/mysql/my.cnf 。填充下边的代码。

[mysqld]
performance_schema_max_table_instances=400
# 缓存
table_definition_cache=400
# 用于监控MySQL server 在一个较低级别的运行过程中的资源消耗、资源东西
performance_schema=off
# 打开表的缓存
table_open_cache=64
# InnoDB缓冲池大小调整操作的块大小
innodb_buffer_pool_chunk_size=64M
# InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小
innodb_buffer_pool_size=64M

在 compose.yaml 中,增加 volume,配置如下。

  mysql: 
    ……
    volumes:
        ……
      - ./conf/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    ports:
      - 3306:3306

然后重启 myslq。

docker-compose restart mysql

然后查看内存使用情况进行对比。

多个项目公用一个 mysql

可以给 mysql 进行单独编排,设置好网络。可以将该网络设置为主网络,其他容器可以通过 external 的方式公用同一个网络。这样各个容器间就方便通信了。

11月 28

tauri 时间相关的处理。一般,找 tauri 的 api,就是找 rust 的。tauri 获取当前时间,获取时间戳。

https://docs.rs/chrono/0.4.26/chrono/#date-and-time

https://www.cnblogs.com/yjmyzz/p/event-with-tauri.html

获取当前年月日时分秒

use chrono::{DateTime, Local};

fn now_datetime() -> String {
  let datetime: DateTime<Local> = Local::now();
  let timestamp_str = datetime.format("%Y-%m-%d %H:%M:%S.%f").to_string();
  timestamp_str
}

需要在 Cargo.toml 中,加入以下配置。

[dependencies]
…
chrono = "0.4"
11月 25

工作和学习中,多显示器同时工作的情况是常态。那么在多个显示器之间来回切换应用是个很有效率的操作。 win 系统,默认就有这样的快捷键。mac,默认没有,得自己设置一下。 ### 操作

https://zhuanlan.zhihu.com/p/657556266

https://support.apple.com/zh-cn/HT201236

按照上边这个文章讲的来就可以搞定了。记得填入的文字一定不能错。 我的设定是这样子的。

# 移动到视网膜显示器(macbook pro 我放在左边) 
⇧ + ⌥ + ← 
# 移动到外接显示器(外接显示器,我放在右边) 
⇧ + ⌥ + →
# 全屏和退出全屏 
⌃ + ⌘ + f 

好,就这三个快捷键。

还是不够好啊。全屏状态下,快捷键失效是什么鬼。

最后

  • 在多个显示器间移动应用程序,win 的体验比 mac 好太多了。
  • 在单个显示器间切换桌面, mac 又比 win 好。

就这么明显的体验,官方咋就做不好呢。

10月 27

https://developer.mozilla.org/zh-CN/docs/Web/API/EventSource

https://juejin.cn/post/7206261082452721722

https://juejin.cn/post/7036313010142609421

laravel 使用 EventSource

为什么当今Web应用不都采用WebSocket形式进行数据交互?

之前,写到小程序扫码授权登录后台的功能。在这个场景下,EventSource 真的比较有用。这个对比轮询和 websocket,在当前场景下,的确是有优势的哈。

9月 11

返回数据这块已经处理了。现在对跨域进行处理。

# 默认跨域
r.Response.CORSDefault()

允许所有跨域是不安全的。所以得对允许的域名进行跨域,或干脆不跨域。跨域中间件完善。

func (s *sMiddleware) CORS(r *ghttp.Request) {
    corsOptions := r.Response.DefaultCORSOptions()
    corsOptions.AllowDomain = []string{"localhost:5173"}
    corsOptions.AllowOrigin = "http://localhost:5173"
    corsOptions.AllowCredentials = "false"
    corsOptions.AllowMethods = "POST,GET,OPTIONS,PUT,PATCH,DELETE"
    corsOptions.AllowHeaders = "Accept,Content-Type,Referer,User-Agent,Origin,X-Requested-With,X-XSRF-TOKEN,X-CSRF-TOKEN,Authorization,Time"
    r.Response.CORS(corsOptions)

    r.Middleware.Next()
}

这样就够了,主要设置的是允许跨的域,允许跨的请求方式,允许 header 中携带的值以及是否使用 Credentials。主要就这几个的定义。

继续阅读

8月 15

type 和 interface 相关

https://juejin.cn/post/7063521133340917773

https://blog.csdn.net/qq_42345237/article/details/124895617

namespace 和 modules 相关

https://zhuanlan.zhihu.com/p/56583269

Pick、Omit、Extract、Exclude 等

https://juejin.cn/post/7202153645441892407
https://www.jianshu.com/p/cb8923a7a31b

泛型相关

https://zhuanlan.zhihu.com/p/149767010

https://zhuanlan.zhihu.com/p/149965449

文档

https://www.typescriptlang.org/zh/docs/

https://nodejs.cn/typescript/get-started/

额外

https://developer.mozilla.org/zh-CN/docs/Web

5月 27

才刚接触 babylonjs,就遇到天空盒。既然遇到了,就弄弄看。

相关文档

https://doc.babylonjs.com/features/featuresDeepDive/environment/skybox

https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture

相关下载

https://hdrihaven.com/zh

https://www.textures.com/

https://skybox.blockadelabs.com/

playground

https://playground.babylonjs.com/#Z6SWJU#5

2月 25

到了今天,还用 php + bootstrap 来做网站已经不是很明智的选择了。可以用 vue,可以用 react 这样会更迅速,更方便。以怀旧的心情,以崇新的心情,还是选择了 laravel10 + bootstrap5 来制作一个官网。
因为看到一个很不错的网站,它的配色和布局都是喜欢的(它是用 react 来构建的)。那就仿着它的效果做下去吧。所以,现在得把 bootstrap 的配色搞定。这个需要去观察和理解 bootstrap 的样式配置。

定义站点配色,组件配色

# 主要色
$primary:#caff04 !default;

输入框配置以及按钮配置

这里截取了部分配置,看得出来,它的配置有一部分还得依赖按钮的配置。当然你也可以单独设置。可是想要整体都统一,还是比较伤脑筋。那按钮也一并处理。

…
$primary: #caff04 !default;

// 输入框的配置
$input-border-color: #000000 !default;
$input-focus-border-color: #000000 !default;
$border-width: 2px !default;
$input-btn-focus-color: $primary !default;
$input-btn-focus-blur: 5px !default;
$input-btn-focus-width: 3px !default;

// 按钮
$input-btn-padding-y: .25rem !default;
$input-btn-padding-x: .75rem !default;
$border-radius: .5rem !default;

如果按照目标站点的按钮样式来弄,比较贴近的按钮类型是 btn-outline。但仅仅改改颜色是不够的。因为他们的 hover,active 的颜色行为不统一。而处理按钮的类型行为(这么理解吧)在源码的 scss/mixins/_buttons.scss 这里。好吧,定义颜色以及圆角这些可以在自己的 _variables 文件中进行,处理 mixins 好像不可以(我自己对整个原理也没理解清楚)。但是修改源码的 scss/mixins/_buttons.scss 编译出来时可以的。这是一种不可取的办法,因为源码是自己下载的,不进行版本控制的。如果源码升级或项目换位置。修改的 scss/mixins/_buttons.scss 将会丢失。暂时还没想到好的解决方法,就先记录在这里。想实现目标按钮的效果。只需下边这样修改即可(注释两行,修改一行)。

// scss-docs-start btn-outline-variant-mixin
@mixin button-outline-variant(
  $color,
  $color-hover: color-contrast($color),
  $active-background: $color,
  $active-border: $color,
  $active-color: color-contrast($active-background)
) {
  --#{$prefix}btn-color: #{$color};
//   --#{$prefix}btn-border-color: #{$color};
     --#{$prefix}btn-border-color: rgba(255,255,255,0);
//   --#{$prefix}btn-hover-color: #{$color-hover};
//   --#{$prefix}btn-hover-bg: #{$active-background};
  --#{$prefix}btn-hover-border-color: #{$active-border};
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
  --#{$prefix}btn-active-color: #{$active-color};
  --#{$prefix}btn-active-bg: #{$active-background};
  --#{$prefix}btn-active-border-color: #{$active-border};
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
  --#{$prefix}btn-disabled-color: #{$color};
  --#{$prefix}btn-disabled-bg: transparent;
  --#{$prefix}btn-disabled-border-color: #{$color};
  --#{$prefix}gradient: none;
}
// scss-docs-end btn-outline-variant-mixin

可以尝试下这种定制:https://www.bootstrap.cn/doc/read/105.html

若干小时后

仿照目标站点,本来很简单的一个样式。如果用 bootstrap 去实现,就太友好了。这样改的心累。放弃吗。继续。这以上统统算胡言乱语。重新开始,继续 laravel10 + bootstrap5 。

参考

https://getbootstrap.com/docs/5.2/components/buttons/

input 框的配置 https://www.bootstrap.cn/doc/read/124.html