可以替代 Dreamweaver 的工具推荐

知道 Dreamweaver 这个工具的,一定是 “德高望重” 的程序员了,当年在大学的时候,一个同学一个晚上做了一个网站,我当时用 jsp,做了一个星期也没有做成,后来一问,他用的是 Dreamweaver,工作以后,这个工具基本上就是在 … Read more

在线代码编辑器推荐

Google翻译 (qishiya.com) 要支持格式化翻译,如要翻译 html, json, 之类的文本或者文件,需要找一个好的代码编辑器,参考了 Best JSON Viewer and JSON Beautifier Online … Read more

TensorFlow 容器支持 GPU

一台 GPU 机器,直接访问 gpu 是没有问题的,但是安装 tensorflow 后,一直访问不到 GPU,看了一下 TensorFlow 支持容器化安装,是可以支持 GPU 的。 tensorflow 容器化安装步骤 前提 必须先在宿主 … Read more

我在 Docker 上犯的错误

今天犯了一个错误,犯这个错误的原因是没有理解 docker 的设计哲学,大概花了 3 个小时来折腾一个事情。

起因

一个容器没有安装 python 的一些依赖库,我在容器里面安装了依赖库,不想每次都安装这些依赖库,所以我想把这个容器保存成新的镜像。

错误的方法

有两种方式来解决这个问题。
方式一,构建新的 Dockerfile。
方式二,对一个正在运行的容器,通过 commit 来创建新的镜像。

反思

我选择了方式二,我把容器当虚拟机使了,这是没有理解 Docker 设计的哲学。

找了一文章,这文章总结的很好,有利于我去了解 docker 的设计哲学,我就把他翻译在下面。

使用 Docker 不要做的几件事情

所以你最终屈服于容器,发现它们解决了很多问题并且有很多优势

  1. 第一:容器是不可变的——操作系统、库版本、配置、文件夹和应用程序都包含在容器中。您保证在 QA 中测试过的相同镜像将以相同的行为到达生产环境。
  2. 第二:容器是轻量级的——容器的内存占用很小。容器将只为主进程分配内存,而不是数百或数千 MB。
  3. 第三:容器速度快——您可以像启动典型的 Linux 进程一样快地启动容器。您可以在几秒钟内启动一个新容器,而不是几分钟。

然而,许多用户仍然像对待典型的虚拟机一样对待容器,而忘记了容器有一个重要的特性:容器是一次性的。
“容器是短暂的”。

这种特性迫使用户改变他们应该如何处理和管理容器的思维方式;我将解释您应该做的事情以继续发挥容器的最大优势:

Read more

Excalidraw 画草图推荐

经常会画一些草图,用来整理思路,或者画一些产品的原型图,和团队的人沟通,以前一直用 draw.io,昨天有朋友推荐,今天试用了一下 Excalidraw | Hand-drawn look & feel • Collaborativ … Read more

Laravel Docker Centos8 使用

fanyi 这个小工具,以前是直接跑在腾讯云的轻量服务器上的,用 Golang 写的,最近加了一个小功能,用 php 重写了,php 就要搭建各种环境,直接在腾讯云的轻量服务器上编译 php 不成功,主要是你 cpu 高,他就直接给你 kill 了,所以就用 docker 来解决。

构建 PHP 的运行环境

从 php:8.1-fpm 开始构建,安装上相关依赖,然后设置运行用户的相关权限。

vim Dockerfile
FROM php:8.1-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user


# Set working directory
WORKDIR /var/www

USER $user

Read more

Mac 与 Linux 随机抽样文本文件

有时碰到一个大文件,要对这个文件进行采样,比如采样多少条,发现 linux 和 mac 上都有一个不错的命令,可以对文件进行抽样。 mac 安装 gshuf gshuf 集成到了 coreutils 里面,通过 brew 直接安装 core … Read more

openai 的 token 与 temperature

openai 是一个很好的工具,用来写商品标题、商品介绍、广告文案、推广邮件,确实很方便,已经是工作之中不可缺少的一个工具,现在的竞争就是看谁的工具更加先进。

在和同事交流的时候,发现大家对 openai 这里面两个最重要的概念(token, temperatuere)理解都不一样,查了一下手册,感觉说的很清晰的。

token

openai 的 token 与 区块链上的 token 完全不一样,他应该是语义不可再分的最小单位。

I have an orange cat named Butterscotch.

Ihaveanorangecatnamed 每一个都是一个 token,这里有 6 个 token。
Butterscotch 就会拆分成 Butterscotch 四个 token。

. 标点符号也是一个 token。

也就是复杂的会拆分,简单的就不会再拆分了,文档里面也提到了,很多 token 以空格开始,如

“ hello” and “ bye”

openai token 说明

openai token 提取

Read more

stripo.email 电商邮件模板推荐

购买了 Stripo 的会用,每一个月需要 15 美元,支持 50 次的导出,stripo.email 虽然有很多模板,但是这些模板质量高的很少,挑了好久才找到几个模板,适合做电商的邮件营销。

服装类促销模板

我选择服饰类促销模板主要考虑三个因素,图片、商品列表、价格,模板中必须有这三类元素,才是一个完整的服饰类促销模板。

电商促销模板

Just in Trends Email Template by Liubov Rolenko — Stripo.email

20221102TdUpvL

Dress Code Email Template by Oleg Ponamarchuk — Stripo.email

这个非常喜欢上面这个 Dress Code 模板,有价格对比,把购买用红色按钮放大,非常有冲击性。

20221102sFIGHo

Hello Winter Email Template by Anastasiia Babintseva — Stripo.email

适合卖冬天的服饰,给人暖暖的感觉。

Read more

nvm 在 mac 上安装

brew 安装 nvm 安装完成之后,是不能直接使用的,需要建立一个目录和设置环境亦是 建立目录 设置 zsh 环境变量 设置 zsh 的环境变量,我因为用的是 zsh,和 bash 有一些不一样,brew –prefix 可以 … Read more