macos微信双开方法2025

命令如下:

1、复制微信应用:

sudo cp -R /Applications/WeChat.app /Applications/WeChat2nd.app

2、修改 Bundle ID:

sudo /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.tencent.WeChat2nd" /Applications/WeChat2nd.app/Contents/Info.plist

3、重新签名应用:

sudo codesign --force --deep --sign - /Applications/WeChat2nd.app

来源:https://www.bilibili.com/video/BV1xiLbzLECp/

在 Ubuntu 系統中設置代理:網絡連接、Shell 和 Docker 的配置方法與影響範圍

在 Ubuntu 系統中設置代理:網絡連接、Shell 和 Docker 的配置方法與影響範圍在 Ubuntu 系統中,設置代理是常見的需求,特別是在企業網絡環境或需要訪問特定資源時。本文將詳細介紹如何在 Ubuntu 的網絡連接、Shell 環境以及 Docker 中設置代理,並闡述它們的影響範圍和注意事項。無論你是普通用戶還是開發者,這篇博客都能幫助你清晰理解代理配置的邏輯與實操。


1. 為什麼需要分別配置代理?在 Ubuntu 中,代理設置的應用範圍因環境而異:

  • 系統網絡設置:適用於圖形界面應用程序(如瀏覽器、某些 GUI 工具),由系統的網絡管理工具(如 NetworkManager)控制。
  • Shell 環境:命令行工具(如 curl、wget、apt)依賴環境變量或專屬配置文件,獨立於系統代理設置。
  • Docker:Docker 引擎(dockerd)和容器內的命令有各自的代理配置,分別影響鏡像拉取和 Dockerfile 中的網絡操作。

由於這些環境的網絡棧相互獨立,代理設置不會自動共享,因此需要在每個環境中單獨配置。


2. 配置系統網絡代理方法Ubuntu 的圖形界面(如 GNOME)允許通過設置應用程序配置全局代理,影響支持系統代理的應用(如 Firefox、Chrome)。

  1. 打開網絡設置:
    • 打開「設置」 > 「網絡」 > 「網絡代理」。
    • 選擇代理類型(如 HTTP、HTTPS、SOCKS)並輸入代理服務器地址和端口。
    • 如果需要認證,填入用戶名和密碼。
  2. 命令行配置(適用於無 GUI 環境):
    • 編輯 /etc/environment,添加全局代理設置:bashsudo nano /etc/environment添加:http_proxy="http://proxy_server:port" https_proxy="http://proxy_server:port" ftp_proxy="http://proxy_server:port" no_proxy="localhost,127.0.0.1,::1"
    • 保存後,登出或重啟使設置生效。
  3. NetworkManager CLI 工具(nmcli): 如果使用 NetworkManager,可以通過命令行設置代理:bashnmcli connection modify <connection_name> proxy.method manual nmcli connection modify <connection_name> proxy.http http://proxy_server:port nmcli connection modify <connection_name> proxy.https http://proxy_server:port查看當前連接名稱:bashnmcli connection show

影響範圍

  • 適用:圖形界面的應用程序(如瀏覽器、某些更新工具)。
  • 不適用:Shell 環境中的命令行工具(如 curl、apt)和 Docker 引擎。

注意事項

  • 系統代理設置不影響命令行工具,因為它們不直接讀取 NetworkManager 或 GSettings 的配置。
  • 如果代理需要認證,確保格式為 http://username:password@proxy_server:port。

3. 配置 Shell 環境代理Shell 環境中的命令行工具(如 curl、wget、apt)依賴環境變量或專屬配置文件來使用代理。方法3.1 臨時設置(僅當前會話)在 Shell 中設置環境變量:

bash

export http_proxy="http://proxy_server:port"
export https_proxy="http://proxy_server:port"
export ftp_proxy="http://proxy_server:port"
export no_proxy="localhost,127.0.0.1,::1"

這些設置僅對當前 Shell 會話有效,關閉終端後失效。3.2 全局設置將環境變量添加到 Shell 配置文件(如 ~/.bashrc 或 ~/.zshrc):

bash

echo 'export http_proxy="http://proxy_server:port"' >> ~/.bashrc
echo 'export https_proxy="http://proxy_server:port"' >> ~/.bashrc
echo 'export ftp_proxy="http://proxy_server:port"' >> ~/.bashrc
echo 'export no_proxy="localhost,127.0.0.1,::1"' >> ~/.bashrc

使配置生效:

bash

source ~/.bashrc

或者,編輯 /etc/environment(影響所有用戶):

bash

sudo nano /etc/environment

添加:

http_proxy="http://proxy_server:port"
https_proxy="http://proxy_server:port"
ftp_proxy="http://proxy_server:port"
no_proxy="localhost,127.0.0.1,::1"

3.3 特定工具配置某些工具需要獨立配置代理:

  • APT: 創建或編輯 /etc/apt/apt.conf.d/proxy.conf:bashsudo nano /etc/apt/apt.conf.d/proxy.conf添加:Acquire::http::Proxy "http://proxy_server:port"; Acquire::https::Proxy "http://proxy_server:port";
  • curl: 在命令行指定:bashcurl --proxy http://proxy_server:port http://example.com或在 ~/.curlrc 中設置:bashecho "proxy = http://proxy_server:port" >> ~/.curlrc
  • wget: 在 ~/.wgetrc 中設置:bashecho "http_proxy = http://proxy_server:port" >> ~/.wgetrc echo "https_proxy = http://proxy_server:port" >> ~/.wgetrc echo "use_proxy = on" >> ~/.wgetrc

3.4 使用 proxychains(可選)對於不支持環境變量的工具,可以使用 proxychains:

  • 安裝:bashsudo apt install proxychains
  • 編輯 /etc/proxychains.conf,添加代理:http proxy_server port
  • 運行命令:bashproxychains curl http://example.com

影響範圍

  • 適用:大多數命令行工具(如 curl、wget),但需要工具支持環境變量或有自己的配置文件。
  • 不適用:Docker 引擎的網絡操作(如拉取鏡像)或 Dockerfile 中的命令,除非顯式傳遞。

注意事項

  • 環境變量大小寫敏感,建議同時設置小寫和大寫(如 http_proxy 和 HTTP_PROXY)。
  • 臨時禁用代理:bashunset http_proxy https_proxy

4. 配置 Docker 代理Docker 的代理設置分為兩部分:Docker 引擎(影響鏡像拉取)和容器內部(影響 Dockerfile 的 RUN 命令)。方法4.1 配置 Docker 引擎代理(用於拉取鏡像)Docker 引擎負責從倉庫(如 Docker Hub)下載鏡像,其代理設置獨立於 Shell 和系統代理。

  • 編輯 /etc/docker/daemon.json:json{ "proxies": { "http-proxy": "http://proxy_server:port", "https-proxy": "http://proxy_server:port", "no-proxy": "localhost,127.0.0.1,::1" } }
  • 重啟 Docker 服務:bashsudo systemctl restart docker
  • 驗證:bashdocker info --format '{{.HTTPProxy}}'

4.2 配置容器內代理(用於 Dockerfile 的 RUN 命令)Dockerfile 中的 RUN 命令運行在臨時容器中,默認不繼承宿主機的代理設置。

  • 方法 1:在 Dockerfile 中設置:dockerfileFROM ubuntu:20.04 ENV http_proxy=http://proxy_server:port ENV https_proxy=http://proxy_server:port RUN apt-get update && apt-get install -y curl # 清理代理設置(安全考慮) ENV http_proxy="" ENV https_proxy=""
  • 方法 2:通過 docker build 傳遞: 如果 Shell 已設置 http_proxy 等變量,可以在構建時傳遞:bashdocker build \ --build-arg http_proxy=$http_proxy \ --build-arg https_proxy=$https_proxy \ --build-arg no_proxy=$no_proxy \ -t myimage .
  • 方法 3:為特定工具配置(如 APT): 在 Dockerfile 中為 apt 配置代理:dockerfileRUN echo 'Acquire::http::Proxy "http://proxy_server:port";' > /etc/apt/apt.conf.d/proxy.conf RUN echo 'Acquire::https::Proxy "http://proxy_server:port";' >> /etc/apt/apt.conf.d/proxy.conf RUN apt-get update

影響範圍

  • Docker 引擎代理:影響 docker pull 和 docker build 中的鏡像拉取。
  • 容器內代理:影響 Dockerfile 中 RUN 命令的網絡操作(如 apt-get、curl)。
  • 不適用:Shell 的 http_proxy 不會自動影響 Docker,除非通過 –build-arg 或 Dockerfile 傳遞。

注意事項

  • 如果代理需要認證,格式為 http://username:password@proxy_server:port。
  • 在 Dockerfile 中設置代理後,建議在構建結束時清理環境變量以避免泄露。
  • proxychains 不推薦用於 Docker,因其對容器內部行為影響有限。

5. 驗證代理配置

  • 系統代理: 使用瀏覽器訪問外部網站,檢查是否通過代理。
  • Shell 代理:bashenv | grep -i proxy curl -I http://example.com
  • Docker 引擎代理:bashdocker pull hello-world
  • 容器內代理: 在 Dockerfile 中添加測試命令:dockerfileRUN curl -I http://example.com

6. 總結與最佳實踐配置總結

  • 系統網絡代理:適用於 GUI 應用,通過設置或 /etc/environment 配置。
  • Shell 代理:通過環境變量或工具特定配置文件設置,影響命令行工具。
  • Docker 代理:
    • Docker 引擎:配置 /etc/docker/daemon.json,影響鏡像拉取。
    • 容器內:通過 Dockerfile 或 –build-arg 設置,影響 RUN 命令。

最佳實踐

  1. 分環境配置:根據需求分別設置系統、Shell 和 Docker 代理,避免依賴單一配置。
  2. 安全性:在 Dockerfile 中清理代理設置,避免敏感信息泄露。
  3. 靈活性:使用 –build-arg 動態傳遞代理,適應不同環境。
  4. 驗證:每次配置後測試代理是否生效,確保網絡行為符合預期。

通過以上方法,你可以在 Ubuntu 中靈活配置代理,滿足不同場景的網絡需求。希望這篇博客能為你的代理設置提供清晰的指導!

from:grok

ps:要想從grok裏面整體複製以上內容還要想一點特殊的辦法,否則容易被截斷或者丟失格式。方法如下:打開瀏覽器的調試窗口,選中回復內容的區塊,編輯HTML,全選其中的代碼並複製,然後粘貼到wordpress的編輯窗口中,注意直接粘貼即可,wordpress的編輯窗口對輸入的html會進行自動處理。

为mac选择外接屏幕最关键的因素是hidpi模型下支持的分辨率

虽然颜色很重要,但如果是mac的话,最重要的是在hidpi模式下的分辨率,这个分辨率是按人眼设定的,而不是屏幕本身的物理分辨率,因为物理分辨率有很大可能看上去数字很大,但因为屏幕小,那么高的分辨率下字太小,没法用,但当成倍缩放时,可视分辨率成倍减小,原来看上去很高的分辨率也就很低了,比如某米笔记本就这么干,不知道最新的型号是怎么样,几年前遇到过,果断退货了。

想知道某个屏幕在hidpi模式下的分辨率到底是多少不太容易,因为几乎所有显示器都不在官方信息中提供,比较推荐的渠道是https://github.com/waydabber/BetterDisplay/discussions/2626,这个专门致力于提供mac适配方案的软件上能提供一些信息。

退一步来说,其实也不一定要追求hidpi,我试了一下用macbook pro 2018外接微星msi pro mp341c,在3440×1440分辨率下,尽管和mac上的显示相比,字体的像素明显,但也不至于不能看,如果两个屏同时用的话,代码放在外接屏上,画面放在mac上来,似乎也是个不错的省钱方案。

明基M209扫描仪驱动和软件安装

网上找一下M209的驱动安装包,貌似官网已经搜不到了,这是老产品,我是从太平洋下载的,压缩包里面是个iso文件,另外安装了一个virtual clone drive来解压这个iso。

驱动安装以后,系统菜单中的路径有可能是错误的,可以直接去c盘下面找一下安装目录,确认下路径,并把这个路径更新到快捷菜单中。

驱动包里是实际上有一个扫描软件PanelV2.0,只是这个官方的软件并不好用,连幅面都无法修改,默认是A3,跟机器一样。

所以,另外装了一个NAPS2,也是grok推荐给我的。安装的时候提示需要.net4.6.2,如有问题可以看上一篇博客。

windows7安装.net framework 4.6.2 时间戳签名或证书无法验证

在微软官网下载了4.6.2的离线安装包,安装时报错,这是因为win7上没有sha2验证,通过安装系统更新的方式有点麻烦了,于是问了下grok,它给出一个办法,绕过验证,于是,在点开离线安装包以后,c盘下就有了一个临时文件夹,把它复制一份,存到别的位置,在里面找到netfx_Full_x64.msi(64 位系统)或 netfx_Full_x86.msi(32 位系统),双击运行就行了。

mysql服务器优化过程小记

有一个查询很慢,27s,查询了一下mysql的状态:

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool%';

+-------------------------------------------+--------------------------------------------------+
| Variable_name                             | Value                                            |
+-------------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status            | Dumping of buffer pool not started               |
| Innodb_buffer_pool_load_status            | Buffer pool(s) load completed at 241109 21:58:30 |
| Innodb_buffer_pool_resize_status          |                                                  |
| Innodb_buffer_pool_resize_status_code     | 0                                                |
| Innodb_buffer_pool_resize_status_progress | 0                                                |
| Innodb_buffer_pool_pages_data             | 7168                                             |
| Innodb_buffer_pool_bytes_data             | 117440512                                        |
| Innodb_buffer_pool_pages_dirty            | 5                                                |
| Innodb_buffer_pool_bytes_dirty            | 81920                                            |
| Innodb_buffer_pool_pages_flushed          | 152905174                                        |
| Innodb_buffer_pool_pages_free             | 1007                                             |
| Innodb_buffer_pool_pages_misc             | 17                                               |
| Innodb_buffer_pool_pages_total            | 8192                                             |
| Innodb_buffer_pool_read_ahead_rnd         | 0                                                |
| Innodb_buffer_pool_read_ahead             | 34590772215                                      |
| Innodb_buffer_pool_read_ahead_evicted     | 46737241                                         |
| Innodb_buffer_pool_read_requests          | 718733851921                                     |
| Innodb_buffer_pool_reads                  | 1798889354                                       |
| Innodb_buffer_pool_wait_free              | 6345356                                          |
| Innodb_buffer_pool_write_requests         | 506818935                                        |
+-------------------------------------------+--------------------------------------------------+
20 rows in set (0.26 sec)

问了下Grok,它说我的默认配置太低了,数据库服务器是16G内存,数据库占用的很少,大部分是被一个java程序占用了,查了一下原来是当时安装了并未使用的apache-dolphinscheduler,这个东西很占资源,于是干掉。再改以下配置:

innodb_buffer_pool_size = 8G
innodb_buffer_pool_instances = 4
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1

重启mysql以后:


mysql> SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool%';
+-------------------------------------------+--------------------------------------------------+
| Variable_name                             | Value                                            |
+-------------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status            | Dumping of buffer pool not started               |
| Innodb_buffer_pool_load_status            | Buffer pool(s) load completed at 250528 22:42:35 |
| Innodb_buffer_pool_resize_status          |                                                  |
| Innodb_buffer_pool_resize_status_code     | 0                                                |
| Innodb_buffer_pool_resize_status_progress | 0                                                |
| Innodb_buffer_pool_pages_data             | 231482                                           |
| Innodb_buffer_pool_bytes_data             | 3792601088                                       |
| Innodb_buffer_pool_pages_dirty            | 0                                                |
| Innodb_buffer_pool_bytes_dirty            | 0                                                |
| Innodb_buffer_pool_pages_flushed          | 1455                                             |
| Innodb_buffer_pool_pages_free             | 292740                                           |
| Innodb_buffer_pool_pages_misc             | 66                                               |
| Innodb_buffer_pool_pages_total            | 524288                                           |
| Innodb_buffer_pool_read_ahead_rnd         | 0                                                |
| Innodb_buffer_pool_read_ahead             | 226612                                           |
| Innodb_buffer_pool_read_ahead_evicted     | 0                                                |
| Innodb_buffer_pool_read_requests          | 4875046                                          |
| Innodb_buffer_pool_reads                  | 4713                                             |
| Innodb_buffer_pool_wait_free              | 0                                                |
| Innodb_buffer_pool_write_requests         | 4724                                             |
+-------------------------------------------+--------------------------------------------------+
20 rows in set (0.00 sec)

不过查询依然很慢,分析了一下请求来自laravel的一个多态关联表,4000W+行数据,两个关键字段是able_type和able_id,于是给这两个字段做了一个联合索引,idx_able,索引创建花了8分钟,索引创建过程中可能有锁,避开访问高峰时操作,完成以后查询降到了300ms以内。

总结:

laravel的多态表可以给able_type和able_id建联合索引。