计划
我工作、学习、生活等的计划,每周周日记录一次,在下面评论区更新。
记录原则
用英语
本周总结的各项目要详细,并用百分比标明进度,未达到 100% 的项说明原因
学习相关的计划要做好总结,总结内容要记录在本网站
下周计划要详细
基于docker 搭建 ruby开发环境
思路先开启一个临时的 Ruby 容器,在容器内创建项目,之后再构建开发需要的镜像。
新建项目为了创建一个 Rails 项目,先启动一个临时的 Ruby 容器:
1$ docker run -it -v $(pwd):/app -w /app ruby:3.2 bash
在容器内安装 Rails gem:
1/app# gem install rails
然后创建项目:
1/app# rails new myapp --database=postgresql --css=sass --skip-bundle
这里使用了--skip-bundle参数,因为这只是个临时容器,稍后会在开发容器内执行 bundle。
现在这个临时容器已经完成使命,按 ctrl-d 或者输入 exit 退出容器。
添加 Dockerfile在项目目录下添加Dockerfile文件,输入以下内容:
123456789101112FROM ruby:3.2# ruby 镜像预设的这个环境变量干扰了后面的操作,将它重置为默认值ENV BUNDLE_APP_CONFIG=.bundle# 如果需要安装其他依赖,取消 ...
ruby问题汇总
gem和bundle的区别是什么?
bundle: 用来管理维护项目的软件包。例如,在rails项目下执行: bundle install
gem: 用来管理具体的每一个软件包。例如,安装rails: gem install rails
目前最流行的 Rails 部署方式是 Passenger、Puma 或者 Unicorn 配合 Nginx 使用,此外 Puma 已经开始被 Rails 社区作为首选了
Docker 学习小计
docker简介
Docker 是什么
Docker 是一个生态,这个生态专注于管理 Containers(容器)。
为什么用 Docker?
Docker 使得安装软件与运行软件十分便利。
安装软件时,可能会碰到各种各样的问题,解决这些问题可能会花费很多人力物力。而 Docker 可以标准化“安装流程”,让用户直接进入运行软件步骤,进而节省成本。
基础概念
Image
Image 也称为镜像,是一个包含运行指定程序的文件系统快照和启动命令的文件。通常在Docker Hub下载。
Container
Container 也就是容器,是 Image 的一个实例。是一个正在运行的进程,以及机器物理资源的子集。
不同的 Containers 之间,资源是隔离的。
Docker Client
用户通过终端与 Docker Client 交互,一个解析用户命令的程序,并发送给 Docker Server。
这个程序本身没有处理 Image 与 Container 的功能。
Docker Server
也称之为 Docker Daemon,是负责创建、运行容器的程序。
安装官 ...
俄罗斯总理的几何题
9 月 1 日是俄罗斯的知识节,因为这一天是各级学校的开学日,象征进入知识宝库的日子。
今年的知识节,俄罗斯总理米哈伊尔·米舒斯京(Mikhail Mishustin)来到莫斯科物理技术学院(MIPT)视察。该校是俄罗斯顶级的理工科大学,出过许多诺贝尔奖得主和著名科学家。
米舒斯京总理来到新生的教室,给学生们讲话。他看到黑板上写满了数学公式,一时兴起,就上前写了一道数学题,要求大家当场解答。
根据维基百科,米舒斯京生于 1966 年,大学专业是系统工程,主修计算机辅助设计。工作以后,还读过一个经济学博士。在担任总理之前,他是俄罗斯联邦税务局长。
他出的是一道几何题,题目如下。
给定圆上的一个点和一条直径,你能否找到一种方法,画出从该点到直径的垂直线(下图的绿线)。
这道题的难点在于,你不能使用任何测量工具,唯一可以用的就是一把不带有标记的直尺。
大家可以思考一下,这道题怎么解。
虽然它用不到高深的数学知识,初中的几何学课程就可以解答,但也不算容易。你必须知道两个基本的几何定理,才能想出答案。
第一个是泰勒斯定理,欧几里得《几何原本》提到过: 圆上任意一点与直径组成的三角形,是直 ...
知识广度 vs 知识深度
上一期谈到,”特长程序员”比”全能程序员”吃香。
网友发给我一个网址,国外有人已经谈过这个话题。
国外作者画了一张图,将世界上的程序员比喻成三种形状。
大饼型:拥有知识广度,但没有知识深度。
竹竿型:拥有知识深度,但没有知识广度。
T 型:介于前两者之间。
那篇文章也认为,通常情况下,竹竿型程序员的出路最好,雇主愿意为知识深度买单。因为现代社会高度分工,越是大公司,岗位职责越明确,需要的是领域专家,而不是多面手。
但是作者提到,有一种情况例外,知识广度有明显优势,那就是确定项目路线的时候。
请看上图,右上角有一个黑点,那是公司的目标。当前位置在左下角的原点,两点之间没有现成的道路,需要自己寻找实现路径。
这时,知识广度就发挥作用了,了解的信息越广泛,知道的情况越多,就越可能具备洞察力,能够在多条路径里面,选出最合适的道路。知识面狭窄的人,由于不了解其它道路,不管遇到什么问题,可能都选择他会的那一条路,比如 Java。
这就是全能程序员的优势,判断正确的仰角 θ,使得两点之间距离最短;特长程序员的优势是前进速度 r,可以在既定道路上做到快速前进。所以,知识的广度能告诉你什么是正确 ...
基于SVG实现写字动画
SVG是一种基于XML的标记语言,常用来优雅、简洁地渲染一些可以自动实现响应式变化的图形,并和CSS,DOM,JavaScript等其他网络标准无缝衔接。所以在工作中,熟练地使用它能使开发过程更得心应手。
今天的示例就是通过 JavaScript + SVG 实现写字动画。
实现效果最终的实现效果:
画 SVG 图形怎样才能实现上面的效果呢?首先,需要准备一张图片:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 40"> <g fill="none" stroke="#000"> <path d="M20.15 22.62c-3.74-3.67-7.94-9. ...
Git分支管理规范化
以下内容基于 Git Flow 分支管理策略。
Git Flow 最开始是由 Vincent Driessen 发行并广受欢迎,这个模型是在 2010 年构思出来的,而现在距今已有 10 多年了,而 Git 本身才诞生不久。在过去的十年中,Git Flow 在许多软件团队中非常流行
分支命名规范
master 分支:master 分支只有一个,名称即为 master。(GitHub 现在叫 main)
develop 分支:develop 分支只有一个,名称即为 develop
feature 分支:feature/<功能名>,例如:feature/login,以便其他人可以看到你的工作
hotfix 分支:hotfix/日期,例如:hotfix/0104
分支说明
master || main 分支:存储正式发布的产品,master || main 分支上的产品要求随时处于可部署状态。master || main 分支只能通过与其他分支合并来更新内容,禁止直接在 master || main 分支进行修改。
develop ...
原生JS实现表单验证
表单验证是 web 开发中的常见功能之一。为了更快地摸鱼,大佬们往往会用vue等框架提供的双向数据绑定功能结合async-validator等验证库来实现。但作为菜鸟的我,现状是:框架越用越熟练,对原生 JS 实现表单验证的方式却越来越模糊。所以今天索性通过表单注册这个小 demo 的开发,回味一下原汁原味的表单验证开发。
功能描述当点击登录按钮时,验证:
用户名、邮箱、密码、确认密码是否必填
用户名、邮箱长度是否在限制内
邮箱格式是否正确
两次输入的密码是否一致
html 和 css
html:
123456789101112131415161718192021222324<form id="form" class="form"> <h2>注册</h2> <div class="form-control"> <label for="username">用户名</label> <input type=&quo ...
生活就像《吃豆人》游戏
有一个经典游戏,叫做《吃豆人》(Pac-Man)。1980 年发布的,很多人现在还在玩。
游戏很简单,吃完迷宫里的豆子,就能过关,但是不能被妖怪抓住。四个妖怪的策略各有不同,红色的在后面追你,粉色的在前面拦截,蓝色的在路口埋伏,橘色的随机漂移。迷宫里还有四颗能量豆,每吃掉一颗,你就能反戈一击,消灭一个妖怪。
谷歌发布过一个网页在线版,没玩过的朋友可以感受一下。
提到这个游戏,是因为我最近看到了一篇文章。 一个国外的年轻程序员说,他觉得,自己的生活就像一场《吃豆人》游戏。
大学毕业后,我不知道该干什么。读研究生,还是找一份体面的工作?像其他人一样,最终我选择了那些很光鲜的职业,即使它跟我的兴趣并不吻合。对于未来,我毫无头绪。
我有时觉得,自己的生活与《吃豆人》游戏有许多相似之处。我困在迷宫里,只有快速拿到积分,才能过关。在这个迷宫中,妖怪四处游荡,试图吃掉你,如果被它们抓住,你就会死掉一条命,游戏重新开始。
我的生活好像就是一局游戏。我真的不知道该去哪里,如何晋级,什么时候妖怪会突然出现。
他这么一说,我顿时觉得,《吃豆人》真的很像生活的一个缩影。我们每天都在人生 ...