月度归档: 2021年11月

2021年11月度总结

pen on white lined paper selective focus photography

TLDR

本月有意外之喜,白捡了一些钱,也因此而产生了真实世界的交易,更加感受到了区块链本身的魅力。

定性分析

学习成长

  • 开始学习和认真理解区块链,Crypto。
  • 开始学车,成功的完成了科目一考试,预计下个月拿证。

恋爱家庭

无变化

职业发展

无变化

理财投资

本月有意外之喜,感觉不错。顺便开始研究 Crypto。暴富还是要靠 Crypto。

休闲放松

没有什么别的进展

社交人际

参与了一次小酒馆的线下活动,和一些关注 Crypto 的朋友线下聊了聊。

自我实现

无变化

定量分析

本月内容输出总结

本月博客输出内容较多

本月收支总结

本月收入 60759.26,支出22745.80.主要是之前的一个外包项目终于结款了。获得了一大笔收入。

此外,本月也非房租交租月,所以支出相对较少。

本月读书总结

本月读书没有进展。 0 本。今年的目标费了。

本月学习总结

本月开始正式学车,考完了科目一,练完了科目二。

本月娱乐总结

暂无。

年度回顾

2021年新年规划:https://www.ixiqin.com/2020/12/in-2021-new-year-plan/

  • Linux 中国的改造计划:0/2
  • 海外收入计划进度:0/$1000
  • 减肥计划:210/170
  • 优质文章产出:2/50
  • 1W stars 项目:1500/10000
  • 年入 5000 的项目:0/5000
  • 收入结余:25K

2021 年还在写 PHP 的人

Hello World text

PHP 是世界上最好的语言

这是技术圈的一个梗。只要你希望一个社区吵起来,只要抛出 XX 是最好的语言,就可以吵起来。而在这个鄙视链里,最底层的就是 PHP。

为什么会是 PHP?

应运而生的 PHP

PHP 其实是一门非常辉煌的语言,关于他有多辉煌。从 WordPress 的荣耀就可以看出来。 WordPress 这样一个被广泛应用的 CMS 系统便是 PHP 写就的。就连这个博客,也同样是基于 PHP 写成的。

在 PHP 盛行的时代,我们看到了大量的个人站长出现,他们使用一些开源 or 免费提供的 PHP 项目,开发出了一个个网站。我们所熟悉的 Discuz、WordPress、Drupal 、PHPBB等一系列 CMS,都是使用 PHP 开发者的。

这些 PHP 应用程序的诞生,使得 PHP 得以长盛不衰。可以说,只要 WordPress、Discuz、Drupal、PHPBB 这一类程序还在持续迭代,PHP 本身就不会消逝。

Web 友好的 PHP

PHP 之所以被众多开源项目选择,得益于其语言设计。

在其官网的标题中,明确指出,“PHP 是一个 Hypertext Preprocessor”。

更是在官网的显著位置,标注了如下的内容。

PHP is a popular general-purpose scripting language that is especially suited to web development.

Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world.

来源: php.net 

PHP  从设计之初,便是一门用于 Web 研发的编程语言,在 Web 2.0 时代,Web 网站大爆发的时代,PHP 自然也因此而大红大火。

PHP 作为一个面向模板输出的语言,在过去的二十多年里,造就了大量的 Web 应用。

LAMP 的助攻

PHP 能流行开来,和他的易于部署也不无关系。LAMP(Linux + Apache + MySQL + PHP)的流行,使得 PHP 的部署十分的简单,一个不太懂 Linux 的人,也可以参考一些简单的教程或使用一些现成的脚本,完成项目的部署。

而更进一步催生 PHP 发扬光大的,则是 cPanel、DirectAdmin、Plesk 等一系列虚拟主机管理系统,他们将 PHP 的易用性进一步提升。用户无需管理服务器,就可以直接部署 PHP 程序,让更多的人开始使用 PHP 所编写的程序。

培训班的热潮

PHP 被广泛应用,自然也被培训班看到,随之而来的,是培训班的介入,大量的非计算机专业的人涌入,通过 PHP,开始了他们的编程之旅。

一方面,客观的增加了 PHP 的开发者,使得 PHP 的市场份额进一步扩大。

另一方面,也降低了整体水平,使得 PHP 的开发者有一部分人真的就只是搬砖。

培训班的涌入所带来的后果,就是其他语言开始鄙视 PHP,觉得 PHP 是一门垃圾语言。然鹅,没有垃圾语言,只有垃圾的用语言的人。

为什么不是 PHP

上述的众多原因,让 PHP 成为一个时代的潮流,也成为鄙视链的底层。

但真正意义上让 PHP 失去生命活力的,是单页应用、MEAN Stack 和云原生的到来。

单页应用

单页应用的到来,使得 PHP 这种以服务端渲染为主流的应用开始慢慢从人们的视野中消失。

大家开始习惯了前后端分离,由前端在浏览器层面进行渲染。

PHP 自带的模板系统就失去了其先天的优势。

MEAN Stack

MEAN(MongoDB、Express、Angular、Node.js)这种架构,彻底让人们看到了 Node.js 的可能性。

前后端统一语言的诱惑自然很难让人拒绝,大家开始选择使用 Node.js 来构建服务端。或使用 Node.js 来完成 BFF 层,这让 PHP 进一步失去其价值。

云原生

云原生的出现,让 Golang 彻底成为一门热门语言,大家开始发现 Golang 这门语言的优势。

相比于 PHP,golang 同样容易上手。此外,作为一门编译型语言,与脚本语言的 PHP 有着无法比拟的性能优势。

Golang,成为培训班的新宠。

为什么 2021 年,还在用 PHP?

我可以同时写 JS、Golang、PHP,所以对于我来说,其实语言并不是问题。

但为什么还是选择 PHP 呢?

原因很明确

  1. 我还在用 WordPress:在 WP 没有完全被替代之前,我大概率会保留一定的 PHP 维护技能(毕竟挂了要自己修)
  2. 生态还算活跃,历史的 package 能用:我一直不是很喜欢 Rails 的原因就是他的生态并不算完善(我是指和中文相关的),这意味着我们做同样的事,需要花费更多的精力。同样,这也是我为什么喜欢 Node.js 的原因。
  3. 方便快捷:PHP 生态发展的足够久,拥有大量各种不同类型的脚手架,你可以快速完成一个项目的开发,这个目前在 Node 和 Golang 之中,还是有一定差距的。

总体来说,我还会继续使用 PHP 的原因很简单,它可以帮助我快速落地项目,让我的想法变为现实。

整理照片后的心得

shallow focus photography of black DSLR camera

最近在整理我的一万多张照片,其中有一些心得,分享给大家:

  1. 照片应当及时分类处理:不然就会想我一样,需要集中处理一万多张照片,速度比较慢,还占用了大量的空间。
  2. 连拍可以记录下瞬间,但需要过滤:我有很多连拍的照片,其中可能只有一张有价值,应该对连拍照片进行处理。
  3. 对我们有价值的照片是有限的:我其实拍了很多照片,比如瞬间、物品、人像,但其中,真正对我们有价值的照片是有限的,我们应该留存这些照片。
    1. 清晰,主次分明的人像
    2. 有明确事件主题的瞬间
  4. 一些照片我们可以使用网络图片,而不是自己的照片:比如博物馆的展品,你拍的不会比专业摄影师更好。
  5. 一个好的照片管理软件需要能对软件评分,并从所有评分中选择合适的照片进行留存。目前我用到的,有这个功能的包括:ACDSee、Adobe Lightroom、Picasa。最终我选择了 ACDSee,无它,买得起。
  6. 有一些照片是不需要留存的,他们只在当时的那个时刻有价值,因此,应该在使用完成后删除。比如,为了写大众点评而拍的就餐环境、为了记录饮食拍的饭菜。

希望这些心得可以帮助你梳理你自己的照片。

没有人能给你推荐书单

book lot on table

很多人很喜欢让别人推荐书单,殊不知,书单的推荐是一个比较低效的行为。

原因很简单,因为每个人面对的问题不同,需要解决的问题不同。能够提供帮助的书也不同。很难有人说,某一个书单能帮你解决所有的问题。你唯一能做的,就是选择某个领域的某一本书作为起点,从这本书的参考文献中来分析出适合自己的书单,这样会更加的高效,也更适合你自己。

空投的卖出策略

ENS 可以说几乎是我加入币圈的一个催化剂,过去虽然我也研究区块链技术,但很少碰币。几乎只会少量购买一些 ETH ,用作开发相关的用途。

但,这次 ENS 空投让我尝到了甜头,也一定会投入一些精力在其中。

刚好写写我的卖出策略。

其实最简单的来看的话,卖出策略有两种:

  1. 极端看涨:这种是拿到的空投会一直放在手里,直到有一天不再认可对应的项目,则全部售出。
  2. 极端看跌:这种是拿到手的空投会马上放掉,落袋为安。

这两种策略比较极端,虽然可能会有一些人用,但在总体中的比重应该不大。前者是区块链/比特币的信徒,而后者则是极端的炒币分子。

大部分的人的卖出策略应该都是混合的,但根据个人对于风险的关注度不同,则会区分两类策略。

  1. 普通看涨:根据价格,每次出货 25%,剩下 75% 等待达到下一次的价值点。
  2. 普通看跌:根据价格,每次出货 75%,剩下 25% 等待达到下一次价值点。

我在本次 ENS 空投中前期采取了 普通看跌 策略。后期则采用了普通看涨策略。

对于我自己来说,需要通过 ENS 来见证自己的不足,认知自己的问题,从而获得进化。

感觉最近要多看一些和投资相关的书。

ENS 、ETH、Ethereum Name Service 之间的关系

silver and gold round coins

白捡钱了当中,我提到,我因为之前使用了 ENS 的服务,所以得到了空投的 ENS。不过,可能很多人对于其中的两个 ENS 有点混淆,所以,再单独写一篇文章聊聊其中的逻辑。

ENS 有两个,一个是指 $ENS, 是由 Ethereum Name Service 团队发放的 Token。而另一个,就是 Ethereum Name Service 本身。

$ENS 作为一个 Token,其实承载了 Ethereum Name Service 整个团队的发展情况,你可以理解为,这就是 Ethereum Name Service 团队提供给我们的股票。只要我们认为 Ethereum Name Service 提供的服务是可以持续增长的,就意味着我们认为 $ENS 持续上涨。

这部分的逻辑和我们在传统股票中的投资是一样的,选中好的标的,然后以合适的价格买入(区块链当中有空投,所以这个合适的价格可能是 0),等待起涨到认可的价位,进行出售。

至于说,为什么会认为 Ethereum Name Service 本身服务有价值,可以对比参考传统互联网中的 DNS 服务(Domain Name System),我们目前使用的都是 DNS,而在 Ethereum 世界,ENS 就提供类似的能力。你不需要记你的地址,只要记住你自己的 ENS 域名即可完成转账。从使用体验上来看, ENS 大有可为。

白捡钱了

昨天,我的 imToken 提醒我,可以领取 ENS 空投了。

想起来两年前在老王的带领下,我也配置了 ENS ,就点击进去看了看,发现确实可以领空投,就把我的账号可以领的 ENS 都给领了。

领完以后,imToken 马上就提醒我了 —— 当前的 ENS 值 10000 块钱。

震惊!白捡的10000块钱!

于是乎,采用 3:1 的比例,将其中 75% 的 ENS 通过 imToken 内置的 Tokenlon 换成了 ETH ,剩下的 25% 留着让他慢慢涨。

要是能涨的特别厉害,就赚了。没涨那么多,也可以接受,毕竟落袋为安了一部分。

Vite 添加 alias

如果你希望简化你的 import 引用,可以通过在 Vite 中配置 alias ,来简化你的 import 引用。

只需要定义 reslove.alias 属性即可配置。

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue()],
    resolve: {
        alias: {
            '@': path.resolve(__dirname, './src'),
            '@c': path.resolve(__dirname, './src/components'),
        },
    }
})

参考地址:https://cn.vitejs.dev/config/#resolve-alias

TailwindCSS 如何控制打印效果?

printing machine

在我们实际开发的时候,我们可能会希望打印展示的效果和浏览器看到的效果不同。这个时候我们如何实现控制?你可以借助于 tailwind 的自定义 screen 类的方式来实现。

配置 tailwind.config.js

在 tailwind 中添加 theme 配置,设定一个拓展的screen 为print。

module.exports = {
  purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend:{
      screens:{
         'print': {'raw': 'print'},
      }
    }
  },
  variants: {
    extend: {},
  },
  plugins: [],
}

使用 print:invisible 控制显示

配置了 screen 以后,你就可以在编写样式的时候,使用 print:classname的方式,来控制在打印状态下展示的内容。