untitled

The curly brackets {} in Python have different meanings depending on the context. Here are some common uses of {} in Python:

Dictionary literals:

A dictionary is a data structure that stores key-value pairs. You can create a dictionary by using curly brackets and separating the keys and values by colons. For example, person = {"name": "Alice", "age": 25} creates a dictionary with two keys: “name” and “age”, and their corresponding values: “Alice” and 25.

Set literals:

A set is a data structure that stores unique and unordered elements. You can create a set by using curly brackets and separating the elements by commas. For example, colors = {"red", "green", "blue"} creates a set with three elements: “red”, “green”, and “blue”.

String formatting:

You can use curly brackets as placeholders for variables or expressions in a string. You can then use the format() method to replace the placeholders with the desired values. For example, print("Hello, {}!".format("world")) prints “Hello, world!” to the console. You can also use numbers or keywords inside the curly brackets to specify the order or name of the arguments. For example, print("The area of a circle with radius {r} is {a:.2f}".format(r=5, a=3.14*5**2)) prints “The area of a circle with radius 5 is 78.50” to the console.

解决工作电脑spotlight无法使用的问题

工作电脑是mac air m1,公司安装了几个监控软件。
我更新完最新14.2系统过后,无法使用大部分的spotlight功能,特别是无法显示文档。

参考这里的解决方案

"Open at Login" Apps: Since I noticed it didn't work after my apps started loading, I searched my "Open at Login" apps (System Settings > General > Login Items), and I had an external app called "Hidden Bar" which I barely use. I turned it off, because it has search capabilities, so it could've been interfering with Spotlight.

我进入自己的login项目,关闭了微软的autoupdate,还有2个公司安装的监控软件,ok,spotlight可以使用了。

阮一峰_科技爱好者280期摘要

ip地址解释器

https://ip.guide/

curl -sL ip.guide/178.173.224.69›

python全栈开发-聊天室

仅仅使用115行代码,使用flask框架
https://github.com/yuxiaoy1/chatfairy

微软生成式ai课程

https://github.com/Microsoft/generative-ai-for-beginners

机器学习和docker学习系列教程

英文个人网站
https://ataiva.com/archives/

利用llm把自然语言需求转换成软件!

https://github.com/kuafuai/DevOpsGPT
Multi agent system for AI-driven software development. Combine LLM with DevOps tools to convert natural language requirements into working software. Supports any development language and extends the existing code.

超轻量个人博客框架

https://github.com/Meekdai/Gmeek
Gmeek
一个博客框架,超轻量级个人博客模板。完全基于Github Pages 、 Github Issues 和 Github Actions。不需要本地部署,从搭建到写作,只需要18秒,2步搭建好博客,第3步就是写作。

大部分ai创业企业要嗝屁

https://weightythoughts.com/p/most-ai-startups-are-doomed

六款游戏开发平台的对比

https://ruoyusun.com/2023/10/12/one-game-six-platforms.html

intel网卡安装奇遇记

最近项目上碰到一个有意思的事,客户要求实现roce组网,但是云服务商提供的网卡是intel800系列,驱动没有适配国产OS。

官网产品主页

intel官方驱动只支持红帽和suse

从BMC查询的网卡型号为NIC-E810CQDA2G2P5-E810,在intel官网上查询(第二次查询才找到这个全量包),发现其对os的支持范围非常窄(红帽、SUSE、ubuntu等),没有对国产麒麟、欧拉的支持。

第一次查询E810网卡驱动时,base driver,rdma driver都是单独的页面

真心话,intel的驱动查询网站着实不如英伟达的

驱动和操作系统适配


从上表可以看出,810系列网卡,其驱动实际分为两种,base driver和rdma driver,其中base driver又分为物理机和虚拟机两种驱动。

安装驱动

intel的驱动安装相比英伟达网卡,要复杂一些。首先,要安装网卡的基本驱动,启动网卡并设置ip地址。然后再安装rdma驱动,并安装rdma库(从github下载)。最后,为了最大化rdma的性能,要打开流量控制标识(PFC或LFC),同时对应交换机的端口也要设置PFC。

RDMA协议里,只有rocev2从pfc收益最多,原因也很简单,roce是over udp的,而udp可以说是原本就不靠谱的以太网协议里,更不靠谱的一种协议,如果没有流量控制,当出现丢包时,整个网络传输就基本不可用了。

供应商

服务器硬件供应商提供了一个网卡驱动“nic-e810-kylinlinuxv10sp2.rpm,吊诡的是,他们找不到 下载链接。

驱动下载

除了github外,20年前最火爆的开源项目网站是sourceforge.
目前sourceforge活得有滋有味,因为不可言说的原因,在国内可以畅通无阻访问,这点完胜github。

总结,以后配套设备驱动下载的顺序依次为

  • 原厂商官网,如intel,英伟达
  • 集成商或经销商的官网,一般可以在原厂商官网上找到,如intel
  • 开源网站

孤独的猛士

昨天看到一个很有意思的评论。

在东方大国使用chatGPT,要对抗两个超级大国的联合制裁

早上出恭时,我就在想啊,难道这不是国师们的一步大棋吗?

因为我们一直是有一个逻辑:敌人的敌人就是朋友,凡事敌人打压的,就是我们要鼓励的。

那么究竟是什么样的大棋观,让我们采取了和灯塔国一样的策略呢?我们知道灯塔人在科技方面,和老百姓民生有关的最突出表现,就是人工智能了。马斯克的火箭也很先进,毕竟离老百姓还有点远,对地球上全社会生产效率的提升也非常有限。

人工智能恰恰相反,真正能提升各行各业的生产效率,这也是灯塔作为一个超级大国的核心竞争力,就整个国家财富的指标来看,股市最有代表性,看看英伟达和微软的迅猛涨势。如果连这点优势都被东方大国夺去,我认为这个严重性要远远大于地缘政治的竞争,这属于釜底抽薪了,看看大鹅今天惨况,很容易得出这个结论–霸权没有经济支撑,最终就是一败涂地。

东方大国难道没有看到这一点吗?难道是要对方的最后一块国之命脉上发起进攻吗?当然不会,这是最大的韬光养晦。就像一个市场上竞争的两个寡头,双方打算在其他更重要领域进行合作,合作方式为一方通过示弱在人工智能行业进行了妥协,那么什么是更重要的领域呢?

12月apec会议,我们拭目以待,神秘领域自然浮现。

初探minikube

  1. dashboard
    使用一条简单命令,就可以启动dashboard服务,不过这个服务是构建在docker里的,所以在os里,使用systemctl 没法显示出来。

    如果要查看k8s管理的服务有哪些,可以使用如下命令
k8s@MDaliyun:~$ kubectl get namespaces

显示所有namespaces

将本地电脑的12345端口映射到远程服务器的对应端口(-L参数–本地,-R参数–远程),执行后需要输入k8s这个用户的密码.
这里需要解释一下:

  • 通用命令是:ssh -L 本地ip:本地端口:目的ip:目的端口 user@server_ip
  • 当源ip就是本机时,可以省略,如果需要绑定同一个局域网的另外一台机器时,就要把源ip写上,例如192.169.1.2.
  • 目的ip,是我们要映射的server的127.0.0.1,也就是localhost,当然,也可以是与映射server同一个局域网的其他机器,例如172.0.0.10,或者域名地址(需要私网域名解析)
  • 当然,这就带来一个非常大的好处,比如我们在远程服务器上,如果有一个docker服务需要暴露8080端口时,如果采用ssh映射方式,就不需要云服务器开通安全组了。
ssh -L 12345:localhost:12345  k8s@server_ip 

执行成功后,打开下面的链接,就可以使用本地浏览器管理dashboard了

http://127.0.0.1:12345/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/namespace?namespace=default

如果要暂停dashboard的服务,没有stop之类的命令,可以采用资源降级、删除对应namesapce、

k8s@MDaliyun:~$ kubectl scale deployment kubernetes-dashboard -n kubernetes-dashboard --replicas=0
deployment.apps/kubernetes-dashboard scaled

删除pod相关资源后,本地浏览器的dashboard呈现菊花状态

ssh隧道映射也就失效了

  1. http service

  2. 其他命令
    获取更详细的pod资料

k8s@MDaliyun:~$ kubectl describe pods -n kubernetes-dashboard
Name:             dashboard-metrics-scraper-5dd9cbfd69-tz9xq
Namespace:        kubernetes-dashboard
Priority:         0
Service Account:  kubernetes-dashboard
Node:             minikube/192.168.49.2
Start Time:       Wed, 30 Aug 2023 17:04:26 +0800

从minikube到portainer

下午原计划从b站的“三小时学会k8s”入手,没想掉入portainer的坑,还好一切顺利

portainer

portainer是一个非常轻量化的docker管理工具,图形化界面,支持ubuntu,安装过程如下

  1. 首先建立一个docker的专门目录 docker_project,进入目录
    mkdir portainer

  2. 在portainer目录下,建立一个docker compose可以使用的yml文件:
    nano docker-compose.yml
    文件内容如下,其中8083是宿主机的端口号,需要请云主机管理员帮你打开权限:

    version: '3'
    services:
      portainer:
        image: portainer/portainer-ce
        container_name: portainer
        ports:
          - "8083:9000"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - portainer_data:/data
    volumes:
      portainer_data:
    
    
  3. 使用如下命令,上面的yml文件相当于定义了portainer service的启动配置,也就是使用‘portainer/portainer-ce’的镜像文件,并绑定到8083端口上(9000是容器的端口),而且创建了portainer data卷。使用docker-compose 命令启动portainer容器
    docker-compose up -d

  4. 好了,使用浏览器进入本地或者你的远程服务器地址:8083,就可以对服务器上的docker进行管理。

minikube

  1. 首先安装kubectl,这是一个用来管理k8s集群的命令行工具,对于管理部署、services、pods和其他资源非常关键,在ubuntu的默认包里是没有的,所以需要从k8s官方repo里下载最新版本。

    sudo apt install curl
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    chmod +x kubectl
    sudo mv kubectl /usr/local/bin/
    
    

    上述命令下载最新kubectl后,修改其属性为可执行,然后把它移动到path目录以便可以从terminal里执行。
    然后对安装结果进行校验

    kubectl version --client
    

    下面是巨坑时刻,折腾了1个小时,因为dl.k8s.io在google上,总是下载失败,所以按照chatgpt建议打算替换如下国内镜像:

        https://dl.k8s.io
    
    curl -LO "https://mirrors.ustc.edu.cn/kubernetes/apt/dists/kubernetes-jessie/release/$(curl -L -s https://mirrors.ustc.edu.cn/kubernetes/apt/dists/kubernetes-jessie/release/stable.txt)/bin/linux/amd64/kubectl"
    
    curl -LO "https://mirrors.aliyun.com/kubernetes/$(curl -L -s https://mirrors.aliyun.com/kubernetes/stable.txt)/bin/linux/amd64/kubectl"
    
    KUBE_VERSION=$(curl -L -s https://mirrors.cloud.aliyuncs.com/kubernetes/stable.txt)
    curl -LO "https://mirrors.cloud.aliyuncs.com/kubernetes/${KUBE_VERSION}/bin/linux/amd64/kubectl"
    
    curl -L -s https://mirrors.cloud.aliyuncs.com/kubernetes/stable.txt
    
    https://mirrors.aliyun.com/kubernetes/
    https://mirrors.ustc.edu.cn/kubernetes/
    

    当然还是失败,最终多问了几次chatgpt,按照如下方式安装成功

    sudo apt update
    sudo apt install snapd
    

    Once you have snapd installed and the system restarted (if necessary), you can now install kubectl using snap:

    sudo snap install kubectl --classic
    kubectl version --client
    

    minikube start

    What you’ll need
    2 CPUs or more
    2GB of free memory
    20GB of free disk space
    Internet connection
    Container or virtual machine manager, such as: Docker, QEMU,    Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware   Fusion/Workstation
    

    都是钱

    尽量不要使用root账号

    这时候要注意,如果从portainer后台启动minikube的容器,实际是没有运行起来的

    使用none root用户启动minikube

    成功!

    docker run -d -p 8081:80 docker/getting-started

参考
https://www.xtuos.com/214719.html
不使用用docker compose来安装portainer:https://www.jianshu.com/p/ce225a5bfbd1

重新折腾我的宁芝PLUM atom6835g-T

从去年9月,就开始做倒计时准备,今年4月吧,提前把宁芝静电容键盘从办公室拿回家里。

这个键盘是22年6月份,也就是刚刚解封后从京东购买的,1059元人民币,刚刚在京东网站看了下,618也没降价多少,大概999到手吧。使用这种专业键盘的好处,是可以想对专注的进行敲击,手感和注意力似乎真的有关系。

不过,这个键盘那会家里,发现有几个配置和办公室不一样,比如win和mac键是相反的,Capslock也不能实现拼音/英文输入切换。更可气的是,Backspace和“|、”是对调的,让人有点抓狂。去郑州出差前,想花十分钟把键盘习惯理顺,不得如愿,只能携带罗技760这个太阳能键盘。

今天休假在家,领教了宁芝略带怪异的设置“哲学”,还好解决不错。

核心关键是,不管三七二十一,先同时按住键盘四角实现出场设置,然后按照键盘说明书来操作即可。

  1. 实现win/mac切换:同时按左ALT和右CMD三秒以上
  2. 实现capslock进行拼音英文切换:同时按左Ctrl和右CMD三秒以上
  3. backspace和“|、”切换:我不知道是如何实现的,一通乱按,就ok了。。。
  4. 查询键盘的型号:在键盘底部,可以看到键盘的型号,例如“Atom68EC(S)Ble”,只不过它的中文官方名称是“