这是社区准则 https://geeknote.net/policy/posts/190
目前看来不打广告卖货就行。
如果是第一次独立开发一个网站的话,不错,要坚持。
提个设计的意见,导航条的返回上一步和菜单按钮不应该同时出现。
会做的,优先级已经排在前面了。
导出功能还没开发,在要做列表中。预计文章和图片可以导出,评论暂定没有。
我用 docker 的目的之一是统一开发机的开发环境,如果应用跑在宿主机就做不到统一了,例如有的是 Linux,有的是 Mac,那么安装 imagemagick 等系统依赖,编译 gem 包的时候可能有差异。
风险的话,自己的应用还好,别人的应用要提防应用里面有恶意代码(例如盗取 ssh key)。我发现 vscode 有个好的功能是每次打开新项目会提示是否信任当前目录,如果不信任就不会运行一些需要运行代码的插件。
我开发环境是不安装 gem 和 npm 包到镜像里,而是启动容器之后安装到跟主机目录同步的 /app 文件夹。
分了几个 stage,base 用来开发;ci 用来跑自动化测试;builder 用来打包静态文件;production 继承 base,只安装必要的 gem 包,直接拷贝 builder 打包好的静态文件,不安装 npm 包。还有优化空间,但不想写得太复杂。
### base stage ###
FROM ubuntu:20.04 AS base
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
git \
gnupg \
imagemagick \
libpq-dev \
nodejs \
postgresql-client \
ruby \
ruby-dev \
zlib1g-dev
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install -y --no-install-recommends yarn
RUN gem install bundler -v 2.2.0
WORKDIR /app
### CI stage ###
FROM base AS ci
COPY Gemfile Gemfile.lock /app/
RUN bundle install --deployment && \
rm vendor/bundle/ruby/2.7.0/cache/*
COPY package.json yarn.lock /app/
RUN yarn install && \
yarn cache clean
COPY . /app/
### Budiler stage ###
FROM ci AS builder
RUN RAILS_ENV=production SECRET_KEY_BASE=1 bin/rails assets:precompile
### production stage ###
FROM base AS production
COPY Gemfile Gemfile.lock /app/
RUN bundle install --deployment --without test development && \
rm vendor/bundle/ruby/2.7.0/cache/*
COPY . /app/
COPY --from=builder /app/public/packs /app/public/packs
ENV RAILS_ENV=production
docker-compose.yml
要指定 base stage。另外还用了 docker-sync 提高文件同步性能。
version: '3.4'
services:
web:
build:
context: .
target: base
command: bin/rails server -b 0.0.0.0
environment:
WEBPACKER_DEV_SERVER_HOST: webpacker
volumes:
- geeknote-sync:/app:nocopy
ports:
- 3000:3000
depends_on:
- postgres
- redis
webpacker:
build:
context: .
target: base
command: bin/webpack-dev-server
environment:
WEBPACKER_DEV_SERVER_HOST: webpacker
volumes:
- geeknote-sync:/app:nocopy
ports:
- 3035:3035
worker:
build:
context: .
target: base
command: bundle exec sidekiq
volumes:
- geeknote-sync:/app:nocopy
depends_on:
- postgres
- redis
postgres:
image: postgres:12
environment:
POSTGRES_PASSWORD: postgres
redis:
image: redis:5
volumes:
geeknote-sync:
external: true
开发的时候先打开一个 shell docker-compose run web bash
,第一次安装 gem 用 bundle install --path vendor/bundle
,之后就正常 bundle。
好,重现了,看来要加个状态判断,我记到 bug 列表。😂
有可能是我的锅,看起来像是 js event 重复绑定的现象,但是我这不能重现。如果重现的话回忆一下之前的操作。
会加,下周之内。
这个在计划列表中,已经不少人提了,我要加紧了。😅
我不是很喜欢第三方登录:
如果很多人需要才会考虑。
重置密码功能做好了 https://geeknote.net/user/password/new 😅
先说为什么用 Markdown 而且没有实时预览。我觉得标记语言和所见即所得编辑器的区别是是否看得到源码,有的所见即所得编辑器添加了 markdown 快捷输入,其实应该归类于所见即所得。
而所见即所得的问题也来自于看到的不是源码,没办法一眼看到自己的排版是否正确,举个例子:
这个标题样式看不出有没有问题
但如果是标记语言就能看出来了
要不想每个元素选中查看是否格式正确,可以给一些元素添加额外的装饰。但搞太多装饰,又不如直接编辑源码一目了然,源码能提供一种无歧义的安全感。
不过我不否认可视化编辑器的上限更高,例如添加各种高级格式的块,但是太花时间。而开源的可视化编辑器多少有点问题,例如处理 list 的时候,怎么结束列表换到段落,或者回车跟删除键的操作是否相互抵消的(试了下 slate 就有这个问题)。这些问题虽小,但是用的时候如果碰到不合预期的地方就会很别扭。
我在项目之初定制了一个可视化编辑器(未完成) https://chloerei.com/rich-text-editor/ ,花了很多时间处理细节问题。我感觉已经完成了 70% 的目标,但是剩下 30% 可能要花两三倍时间处理,这样网站可能就卡在编辑器永远完不成了。其实我并不需要 GeekNote 的编辑器功能非常丰富,而是要清静,让人专注于内容。然后我又换到 Markdown 试了一下,只花了两三天就达到可用的状态了,于是我就换了。
总结一下,就是有限时间内可视化编辑器做不到我满意的程度,而 Markdown 编辑器可以。
不想用代码编辑器的原因一个是代码编辑器功能太多导致分心;另一个是附件管理太麻烦,每次插入图片都要打断思维。
重置密码还没开发,用注册邮箱发邮件到 [email protected] 我给手动重置吧,之后再改密码。
是有点碍眼,我稍后调整看看。
测了一下国内访问正常,现在能访问吗?
点右上角图标打开设置菜单里。
好的,样式会再调整。
所见即所得编辑器花了很多时间,但是发现越接近完成就越多小问题要处理,以至于网站本身没时间开发。后来做了个调查发现想用 Markdown 的人更多 https://twitter.com/chloerei/status/1368518434384797696 ,就转 Markdown 了。Markdown 也更符合 Geek 的定位,写文章的话并不需要太多复杂的格式。
感谢~。可以搬运一篇旧文章体验一下功能,而且网站也需要一些种子内容😏。
运营方向专注技术领域,设计上有不同的喜好。
错误栈的作用就是让人查问题出处的,贴错误信息要贴全。
看饿了。
第一届“要空格”vs“不要空格”辩论大会开始 💁♂️
先客观的做调研,看这东西能不能用。然后给老板报告,分析利害,有没有局限,有没有成功案例,花费的成本。最后让老板决定,因为公司终究是老板的(而你可以换公司……)。
https://github.com/hotwired/turbo/pull/263 已经 merge 了,升到 beta7 会包含这个修复。
英文没问题可以买英文原版电子版 https://pragprog.com/titles/ruby4/programming-ruby-1-9-2-0-4th-edition/
不然就《Ruby 基础教程》 https://book.douban.com/subject/27166893/
多个动作我倾向用 view,并且支持 layout
有个 bug 可能有关 https://github.com/hotwired/turbo/pull/263