我的创作纪念日

机缘

我写博客的历史,可以追溯到 2004 年,刚上大学不久,当时家里有电脑的人,可能就不是太多的。当年的博客,还是 MSN Space 的时代,跟现在大多数搞博客的同学一样,很快就沉溺在装修博客的喜悦当中,一个皮肤接着一个皮肤的换,在浏览器上尝试各种 js 特效。

分享的内容,也无非都是一些设定方法,js 代码片段,还有就是整天研究 MSN Space 的漏洞,怎么注入新的特效。那时候的 QQ 空间还在 "花园","小屋" 的时代,一看就是特别女孩子的氛围,完全没有写的动力。

后来,接触到了 WordPress,到 2008 年,我正式设立独立博客,开始玩 WordPress,假设独立博客,学习 Linux 运维知识,数据库,PHP 代码,我就是这样子变成了 PHP 程序员。

再后来,跟初恋女友分手,我清空了博客,开始认认真真专注于博客的写作上。说来可笑,从开始写博客,到 5 年之后,才真正专注到写作这件事情上来。从 2008 年开始认真写作,不再是只执迷于搬家,皮肤,插件,SEO等等问题,到现在,坚持博客已经 15 年了。

我的博客已经积累了 400 多篇原创文章。当然大部分不在 CSDN,这里只是我又一个分享的场所。还是以独立博客为主的,blog.charlestang.org,这是我的独立博客,欢迎大家有空去逛逛。


收获

博客,就是这么一个神奇的东西。其实写博客,非要说需要点什么的话,我觉得是坚持。

无论你写多么无聊的东西,一旦可以坚持,经年累月,你必有收获。至于水平,能力什么的,你终究会进步的,不说多么高超,但是终究会进步的。

写博客的人,一定会在最后,变得严肃。 ------ 佚名

如果你像我一样写个很多年,就会懂这句话的意思。你后来会发现,只有严肃才是写作的归宿。你不再喜欢嬉笑怒骂,至少不会是再以这些东西为内核。为了流量那种写作,不能叫写作,只能叫工作、赚钱养家,只有真正严肃起来,为了自己写点东西,才是真正的写作,自己才能感受愉悦。

当你发现了这件事情,你就有了最大的收获。

当然,通过写作,训练思维,让自己记录有价值的事情,提升日常讲话的水平和流利度等等乱七八糟的好处不胜枚举,但此时此刻我觉得都不重要了。


日常

阅读是一座随身携带的避难所。------ 毛姆

那写作就是自己思想的后花园。------ 佚名

十几年下来,时不时写点什么,已经成为一种习惯,对我个人来说毕竟不是什么工作,也不在意什么流量关注度,所以,还是比较随意的。当然,这里在 CSDN 创作来说,还是有点目的的,主要是希望更多人能关注我的开源项目,我希望认认真真写点开源的。这里不插入链接了。

我开源的也是用于博客创作的软件和工具,可见我对这个事情是多么认真,我找了一套解决方案,用于处理博客的问题,但是发现这方案里缺个内容管理。Hexo 是一个静态页面生成器,但是对内容管理和组织方面却弱得很,仿佛就没考虑过用户会大规模,编辑和组织内容。也不考虑用户的整理需求。这点和 WordPress 完全不同。

但是因为抓住一点攻击其余,所以它在静态化,和站点皮肤等方面真的很不错。我不能忍,于是就自己写了一个客户端来帮助博主管理和组织内容。我也意识到,这个时代,还肯沉下心来写点东西,组织内容的人怕是不多了。所以我没有为软件收费而是开源到了 GitHub。

所以,在这边创作,除了真心分享一些自己的所得和知识,也是为了借机推广开源软件。希望大家知道后也不要反感。多谢理解了。


成就

成就什么的是没的,我永远不会为自己的某段代码感到满意。写出来总还是要去搜索最佳实践的。总觉得自己用的不是最优方式。也很追求和执迷于最优方式。

所以,一段代码如果成为自己的一种成就,那是很可悲的。代码在我看来没有什么价值,只是程序员管理复杂度后,不得不呈现的一种记录。也是和机器沟通的手段。怎么能称为成就呢?

不过既然这个活动需要分享一段代码的话,我就分享一段,不能说成就,只能说日常用得比较多:

python 复制代码
#!/usr/bin/env python3
#coding:utf-8

# dependency: PyYAML 3.13
# the config file should be a YAML file to describe the server
# configurations like this:
# ---
# personal:
#     - user@192.168.1.1:22      local-test-machine
#     - user@172.16.26.1:22      company-test-machine
# working:
#     - user@192.168.1.1:22      local-test-machine
#     - user@172.16.26.1:22      company-test-machine

import sys
import os
import re
from yaml import load
from yaml import FullLoader
from functools import reduce

server_config_file = os.path.expanduser("~/server_list/config.yml")
server_config = load(open(server_config_file, 'r'), Loader=FullLoader)
template = "\x1b[0;32;40m%2d) \x1b[0;36;40m%{width}s\x1b[0m@\x1b[0;33;40m%-18s \x1b[1;35;40m#%s\x1b[0m"

def render(servers):
    max_width = reduce(max, map(lambda x: len(x[1]), servers))
    for c in servers:
        print(template.replace('{width}',str(max_width)) % c)
    print('')

def section_parse(key, order, servers):
    items = []
    for svr in server_config[key]:
        order  += 1
        user, host, port, name = re.split(r'[@:\s]\s*', svr)
        items += [(order, user, host, name)]
        servers += [(user, port, host)]
    return items, servers, order


servers = []
line_num = 0;

working, servers, line_num = section_parse('working', line_num, servers)

print("Please select the server you want to access:\n\nFor working:\n")
render(working)

personal, servers, line_num = section_parse('personal', line_num, servers)

print("Personal:\n")
render(personal)

number = 0
while number < 1 or number > len(servers):
    try:
        number = int(input("Type in the number:>"))
    except (EOFError, NameError, SyntaxError, KeyboardInterrupt):
        break;
    if number >= 1 and number <= len(servers) :
        break

if number > 0:
    svr = servers[number - 1]
    cmd = "ssh -l %s -p %s %s" % svr
    print("Now execute command:")
    print(cmd)
    os.system(cmd)

sys.exit(0)

这也是我开源在 GitHub 上的一个项目里的代码,项目叫 env,主要用于快速将一台 Linux 或者 Mac 的 Shell 初始化成自己习惯并且喜欢的环境。

上述代码是 goto 命令的源码,用 Python 实现,作用是在命令行下,快速连接一台服务器。服务器的 IP 和 用户,密码,通过一个 yml 配置文件列示。放在自己的私有文件夹里。执行命令效果:

跳出来两个服务器列表,输入序号,就可以快速连接过去了。


憧憬

40 岁的人,已经在随时准备失业的边缘了,没什么所谓的职业规划了。创作规划的话,我会陆续在 CSDN 分享我创作开源软件的技术、过程,已经投身开源的方方面,比如 GitHub,比如项目管理,甚至比如英语等等。技术方面就是 Vue,Electron,TypeScript,以及围绕前端项目的一些工具链。

我本身擅长后端开发,架构,也写过客户端,现在想学习 iOS 开发,也可能会分享这方面的各种笔记、观点,学习体会等等。希望大家关注我! 谢谢!

Tips

  1. 您发布的文章将会展示至 里程碑专区 ,您也可以在 专区 内查看其他创作者的纪念日文章
  2. 优质的纪念文章将会获得神秘打赏哦
相关推荐
铁匠匠匠1 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
架构文摘JGWZ2 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
小齿轮lsl2 小时前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab
Aic山鱼3 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
qq11561487073 小时前
Java学习第八天
学习
天玑y3 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
2301_789985943 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
橄榄熊3 小时前
Windows电脑A远程连接电脑B
学习·kind
web_learning_3215 小时前
source insight学习笔记
笔记·学习
Lossya5 小时前
【机器学习】参数学习的基本概念以及贝叶斯网络的参数学习和马尔可夫随机场的参数学习
人工智能·学习·机器学习·贝叶斯网络·马尔科夫随机场·参数学习