ARTS 是 左耳朵耗子 提出来的一个打卡任务。每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西!我希望这个事可以给大家得到相应的算法、代码、技术和影响力的训练。
这是我的第五周打卡。这周使用新的语言
Elixir
开始在项目中慢慢实践了起来,期间发现由于语言跟整个生态的不熟悉,开发经常受阻。但同时,在实践中有目的性的去学习,整个学习的速度会快很多。
🤖 Algorithm
📖 Review
Preparing for a Tech Talk, Part 1: Motivation
这篇文章是一个关于准备技术演讲系列教程的开篇,主要讲的是技术演讲的动机。
关于动机,作者分为外部动机和内部动机来分别说明。外部动机大家都比较清楚,可以获取业内更多认可以便找到更好的工作或加薪等等。内部动机的话对于每个人来说也许都不尽相同。对于作者的话,他总结了两点:
- 喜欢分享自己的想法
- 喜欢以更简单的方式重新解释事物
选择一个与自己动机相符的演讲会对我们有很多帮助:
- 选择一个主题比较容易
- 在讲台上不那么恐怖
- 更令人信服
💡 Tip
使用Ecto.Migration
来做数据库迁移
数据库迁移语句在很多后端的框架中基本都有实现。它的好处是实现了数据库的版本控制,可以让团队更容易修改和共享数据库结构。这周主要体验了一下Ecto.Migration在实际生产中的用法。
使用mix ecto.gen.migration xxx
可以生成一个数据库迁移文件,它是以当前创建时间作为前缀来命名的,比如:priv/repo/migrations/20190417140000_add_weather_table.exs
在数据库迁移文件中,主要用到的两个函数是up
和down
。up
语句负责向前迁移数据库,down
负责回滚操作。所以down
里面的内容必须保持跟up
是完全相反的。比如:
defmodule MyRepo.Migrations.AddWeatherTable do
use Ecto.Migration
def up do
create table("weather") do
add :city, :string, size: 40
add :temp_lo, :integer
add :temp_hi, :integer
add :prcp, :float
timestamps()
end
end
def down do
drop table("weather")
end
end
up
语句里创建了一个weather
表,那么down
里面需要做的就是删除该表。通常对于建表语句框架知道回滚操作就是drop table
,所以对于建表语句的话我们只需要实现一个change
方法即可
defmodule MyRepo.Migrations.AddWeatherTable do
use Ecto.Migration
def change do
create table("weather") do
add :city, :string, size: 40
add :temp_lo, :integer
add :temp_hi, :integer
add :prcp, :float
timestamps()
end
end
end
当数据库迁移语句写好后,我们执行下面的操作就可以执行迁移和回滚操作了
$ mix ecto.migrate 数据库迁移
$ mix ecto.rollback 回滚
💎 Share
这是在语雀里发掘的一个很好的专栏,里面分享了国内关于互联网创业的点点滴滴,很值得每个互联网人去阅读。