cyl的博客

记录所思

镜像中安装软件, 搭建项目. 只是把docker当虚拟机, 并不是一个好的方式.

中间镜像只是数据的开始, 制作. 到最后的完成品. 通过一个个的镜像来一步步完成, 通过共享目录完成数据传输.

我们只需要最后一个镜像运行最后生成的数据

前言

博客本地搭建好后, 就想直接在云服务器跑, 但云服务器系统的选择逼死了强迫症

centos 老牌 精简 软件源老

Ubuntu 用的人多 软件较新

二者在软件的安装方式, 安装的软件的版本非常不同, 让人心力交瘁.

两边都尝试过后, 起了使用docker心.

1 直接硬跑

选择了用的人多的 Ubuntu 作为操作系统后, git clone + npm install + hexo g 跑通博客 实现远端访问

2 docker

考虑到了云服务器的系统多样和软件安装版本问题, 开始了在docker中搭建自己的博客.

2.0 介绍

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中, 然后发布到任何流行的 Linux 机器上

2.1 docker镜像中从头搭建环境

用docker下载Ubuntu镜像, 并在其中安装 git + nodejs, 生成ssh证书并在托管网站上添加, 下载项目, 构建, 发布

优点

避免了系统对项目的干扰

缺点

如果迁移主机

  • 要不ssh手动依次执行一下上述命令, 这和直接重新搭建自己的主机没有本质区别 (相对不用那么繁琐的软件安装 如 node + npm)

  • 要不拷贝1个多G的镜像, 这和拷贝系统没有本质区别 (相对更小一些 更纯粹一些)

并不简单 快速

2.2 Dockerfile搭建环境

使用官方命令集 在node镜像中直接复制主机的ssh证书, 下载项目, 构建, 发布

优点

避免了手动执行命令或拷贝镜像的麻烦

可以不需要项目 仅需Dockerfile 根据证书容器自己更新

缺点

需要在镜像中安装nginx 本质还是一个大虚拟服务器 关联性太强 容器也很大

2.3 docker-compose组合node nginx

使用node镜像复制本地项目资源 node负责项目的构建发布 nginx负责反向代理

优点

仅有一个nginx容器运行 更小

项目和docker关联性强

缺点

项目的更新需要自己手动

每次重新更新需要重建镜像, 构建, 发布 很慢

2.4 docker-compose在容器更新

使用node镜像复制本地项目资源 node先构建一遍 后续每次重启都更新, 构建, 发布, nginx负责反向代理

优点

随着容器重启自动更新(从镜像创建点 相对完全更新更快) 更自动化 不用自己更新本地项目

缺点

当更改docker配置修改时自己不能主动构建镜像 会导致上述重启无意义

2.5 docker-compose关联目录 容器仅执行命令

使用node镜像关联本地项目 每次容器重启都从本地缓存中继续更新, 构建, 发布, nginx负责反向代理

优点

利用容器代理本地命令执行任务, 几乎和本地命令执行一致, 没有创建新的镜像. 非常快

缺点

会和本地文件一样 有很多中间或生成文件

尾巴

每一步都是进步 但都会出现新的问题

这些进步不是无意义的 新的问题都是影响更小的

参考资料

前言

管理知识需要系统化, 而不是像吸收知识时的碎片化. 目前的博客适合一篇讲解一个小的知识点, 而不太适合一系列的对一个大的知识点讲透彻, 所以在继博客后搭建一个 Wiki 站点.

阅读全文 »

静态博客系统的优点就是它不需要数据库, 只需要静态文件就可以提供浏览, 这样它可以提供非常大的并发访问.

它的缺点就是每次改动的时候, 我们都需要重新构建, 这会花费一定的时间, 特别是当我们的文档数量非常庞大的时候

阅读全文 »

全局设置忽略文件

在SVN的配置文件 ~/.subversion/config 中, 有全局忽略的设置, 需要自己打开.

找到 global-ignores 字段, 去除前面的注释即可, 还可添加自定义的忽略文件

阅读全文 »

开发过程

  • f12后怎么也没发现为什么不可以选中和复制

  • 反向搜索怎样网页不可复制 找到原因 参考链接 通过设置css

学习到了

  • jQuery支持模糊搜素 div[id*='content_']

  • jQuery的children也支持命令

  • jQuery支持remove()

  • 每一个框架都挺博大精深 他能火成标准 那他一定能解决你面临的问题 你需要认真学习 同时也说明 每一个框架都太深了

开发过程

  • 根据文案编写插件定义 参考博客

  • f12 观察后发现广告栏的div都是无属性的

  • 去除广告div 同时发现baidu自带jQuery

  • 发现在html加载完成时baidu会重新检测广告是否加载 然后重新添加有属性的div

  • 监听网页内容变化, 变化时移除变化

  • 输入框实时输入后 插件不会重新运行

  • 监听标题变化 当标题变化时 自主重新运行

  • 需要延迟调用, 需要在baidu加载广告完成后调用

学习到了

  • jQuery在处理dom和监听比原生方便

  • 不是数组 但是有数组的属性 可以强行让他用数组执行 Array.prototype.forEach.call($(id).children()

  • 加载新的网页可以不打开新的链接 同时还能有历史记录 history.pushState

  • 开动脑筋 实时输入(网址 网页变了)和实施输入中断(网址不变 网页变了), 其实不用监听element变化 不用监听新开网页 不用监听修改历史记录 而直接监听标题 省了很多事

ecs

esc 的本质是组件化

将node的一类相关的属性和动作变成一个组件 …

添加功能就是添加组件, 开发将变得简单-动态-自由

由于组件太多, 每个动作自己来执行会导致性能下降 毕竟由很多重复性的注册监听事件

所以统一由一个manager来进行, manager无法时刻立即执行, 只能是统一分帧处理, 动作只能保存在属性中, 下一帧检测属性是否变化来统一动作

但如果由很多自定义的相同事件 还是需要自己来写一个manager 也是相当的考验人(因为不是面向对象, 变成面向过程了)

mvc

mvc更适合ui层的管理 达到数据-界面-管理 分层解耦

就算朝思暮想的东西最终得到了, 问题就解决了么?

一个问题消除了, 立马就会有新的问题出现, 一个欲求满足了, 立马就会有新的欲求.

解决问题的能力无疑非常重要, 但人们常常忽略的就是与问题相处的能力, 或者说是在不完美的状态中保持内心的欢喜、愉悦的能力.

如果没有这种能力, 那生活就始终只会往返于钟摆的两端:得不到的焦虑与得到后的无聊.

拧巴人总遇拧巴事儿, 怨憎会, 求不得, 生活大抵如此.

0%