Compare commits
73 Commits
Author | SHA1 | Date | |
---|---|---|---|
9a9c2343d1 | |||
aca29317c6 | |||
cdebeb09a4 | |||
51e6f5c9d7 | |||
9c176438b2 | |||
fc3d5f5abb | |||
f4a2fe2daf | |||
38adc3aeb8 | |||
0a09bc07ba | |||
4ee56900e9 | |||
e73e9364cd | |||
3becc75947 | |||
ad8db157c2 | |||
9833393773 | |||
1e703bf393 | |||
9a61060170 | |||
e7453daa1a | |||
eceac74e8e | |||
d31e4d4d90 | |||
a56a81afed | |||
ca831cec40 | |||
2a2a39f4a7 | |||
fac6f1c2f7 | |||
6cb2442786 | |||
073368e311 | |||
6176227dfa | |||
d807a0407f | |||
4fc8f4c77b | |||
1816f001a3 | |||
0164e25b69 | |||
8b685bca52 | |||
20cd435743 | |||
e7e72727ae | |||
7b900d92b2 | |||
fc40162d5e | |||
2d10c0ca80 | |||
35dd54ca45 | |||
40251a91ba | |||
4f6717ef32 | |||
8e1de3f1ec | |||
78d820858a | |||
996f07c1bf | |||
acf6719ad2 | |||
a7084414b6 | |||
8b0111450b | |||
4e9aacfab8 | |||
02b0c290ae | |||
1d28855a12 | |||
087a185136 | |||
|
d9ca754951 | ||
3bdacc82e6 | |||
97de2db989 | |||
42c316a1fa | |||
051caa7790 | |||
67f0d6c485 | |||
803242dde8 | |||
0e8270cfad | |||
0c5f705b27 | |||
66b6186296 | |||
fcd16cd8cf | |||
e9771f6b7e | |||
325f206d15 | |||
1ace2f62ea | |||
fc140b995c | |||
a66fc37c03 | |||
c5db049494 | |||
2afd947660 | |||
ac0d966308 | |||
af9fde3fa9 | |||
396b7e5683 | |||
eecd97a8d3 | |||
cc1d8047ab | |||
039bac5e09 |
@ -1,2 +0,0 @@
|
|||||||
node_modules
|
|
||||||
vendor
|
|
24
.drone.yml
Normal file
24
.drone.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: default
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Build and push
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
repo: u8.pub/uetchy/uechi.io
|
||||||
|
tags: latest
|
||||||
|
registry: u8.pub
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
|
||||||
|
- name: Trigger Watchtower Update
|
||||||
|
image: alpine/curl
|
||||||
|
commands:
|
||||||
|
- |
|
||||||
|
curl -s -H "Authorization: Bearer $WATCHTOWER_TOKEN" https://wt.uechi.io/v1/update
|
||||||
|
environment:
|
||||||
|
WATCHTOWER_TOKEN:
|
||||||
|
from_secret: watchtower_token
|
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
label: Blog post
|
|
||||||
hide_body: false
|
|
||||||
fields:
|
|
||||||
- type: text
|
|
||||||
name: title
|
|
||||||
label: title
|
|
||||||
config:
|
|
||||||
required: false
|
|
||||||
- type: datetime
|
|
||||||
name: date
|
|
||||||
label: date
|
|
||||||
default: now
|
|
||||||
config:
|
|
||||||
required: true
|
|
||||||
pages:
|
|
||||||
- _posts/2019-10-25-bose-noise-cancelling-headphones-700レビュー.md
|
|
||||||
- _posts/pixiv-spring-boot-camp-2020.md
|
|
||||||
- _posts/静寂を得る方法.md
|
|
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
new_page_extension: md
|
|
||||||
auto_deploy: false
|
|
||||||
admin_path: ''
|
|
||||||
webhook_url:
|
|
||||||
sections:
|
|
||||||
- type: jekyll-posts
|
|
||||||
label: Posts
|
|
||||||
create: documents
|
|
||||||
templates:
|
|
||||||
- blog-post
|
|
||||||
- type: directory
|
|
||||||
path: _pages
|
|
||||||
label: Pages
|
|
||||||
create: documents
|
|
||||||
match: "**/*"
|
|
||||||
upload_dir: _uploads
|
|
||||||
public_path: "/uploads"
|
|
||||||
front_matter_path: ''
|
|
||||||
use_front_matter_path: false
|
|
||||||
file_template: ":filename:"
|
|
||||||
build:
|
|
||||||
preview_env:
|
|
||||||
- JEKYLL_ENV=staging
|
|
||||||
preview_output_directory: _site
|
|
||||||
install_dependencies_command: bundle install --path vendor/bundle
|
|
||||||
preview_docker_image: forestryio/ruby:2.6
|
|
||||||
mount_path: "/srv"
|
|
||||||
working_dir: "/srv"
|
|
||||||
instant_preview_command: bundle exec jekyll serve --drafts --unpublished --future
|
|
||||||
--port 8080 --host 0.0.0.0 -d _site
|
|
22
.gitignore
vendored
22
.gitignore
vendored
@ -1,9 +1,13 @@
|
|||||||
/.vscode
|
.deploy*
|
||||||
/_site
|
.drone.secrets
|
||||||
/.sass-cache
|
.DS_Store
|
||||||
/node_modules/
|
.obsidian
|
||||||
/npm-debug.log
|
.sass-cache
|
||||||
/.jekyll-metadata
|
*.log
|
||||||
/images/crushed
|
/data
|
||||||
/.bundle
|
/public
|
||||||
/vendor/bundle/
|
db.json
|
||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
Thumbs.db
|
||||||
|
TODO
|
||||||
|
2
.prettierignore
Normal file
2
.prettierignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
scaffolds/*
|
||||||
|
*.ejs
|
@ -1 +1 @@
|
|||||||
{}
|
{}
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
{
|
{
|
||||||
"rules": {
|
"rules": {
|
||||||
"max-ten": true,
|
|
||||||
"no-start-duplicated-conjunction": {
|
"no-start-duplicated-conjunction": {
|
||||||
"interval": 2
|
"interval": 2
|
||||||
},
|
},
|
||||||
"no-dropping-the-ra": true,
|
|
||||||
"common-misspellings": true,
|
"common-misspellings": true,
|
||||||
"preset-japanese": {
|
"preset-japanese": {
|
||||||
"sentence-length": false
|
"sentence-length": false
|
||||||
@ -12,9 +10,7 @@
|
|||||||
},
|
},
|
||||||
"filters": {
|
"filters": {
|
||||||
"whitelist": {
|
"whitelist": {
|
||||||
"allow": [
|
"allow": ["/{%.+?%}/"]
|
||||||
"/{%.+?%}/"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
node_js: stable
|
|
||||||
notifications:
|
|
||||||
email:
|
|
||||||
on_success: never
|
|
||||||
on_failure: change
|
|
79
.vscode/settings.json
vendored
Normal file
79
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"favorites.sortDirection": "ASC",
|
||||||
|
"cSpell.words": [
|
||||||
|
"actionunban",
|
||||||
|
"afdesign",
|
||||||
|
"afphoto",
|
||||||
|
"alsa",
|
||||||
|
"alsamixer",
|
||||||
|
"aplay",
|
||||||
|
"ARGF",
|
||||||
|
"asdeps",
|
||||||
|
"asound",
|
||||||
|
"Asoundrc",
|
||||||
|
"asym",
|
||||||
|
"aufs",
|
||||||
|
"authsucc",
|
||||||
|
"BALMUDA",
|
||||||
|
"bootctl",
|
||||||
|
"BROMPTON",
|
||||||
|
"bvolume",
|
||||||
|
"chsh",
|
||||||
|
"devfs",
|
||||||
|
"devtmpfs",
|
||||||
|
"diskio",
|
||||||
|
"dmsetup",
|
||||||
|
"dports",
|
||||||
|
"EARIN",
|
||||||
|
"eate",
|
||||||
|
"fdisk",
|
||||||
|
"fstrim",
|
||||||
|
"genfstab",
|
||||||
|
"genpsk",
|
||||||
|
"gptfdisk",
|
||||||
|
"hljs",
|
||||||
|
"hwclock",
|
||||||
|
"ignoreip",
|
||||||
|
"JPRS",
|
||||||
|
"krita",
|
||||||
|
"lshw",
|
||||||
|
"lsinitcpio",
|
||||||
|
"mailu",
|
||||||
|
"mkinitcpio",
|
||||||
|
"MOTIV",
|
||||||
|
"Mycroft",
|
||||||
|
"ncdu",
|
||||||
|
"netdev",
|
||||||
|
"noauto",
|
||||||
|
"NOEXEC",
|
||||||
|
"nofail",
|
||||||
|
"NOPASSWD",
|
||||||
|
"nullok",
|
||||||
|
"nvidiactl",
|
||||||
|
"pacmd",
|
||||||
|
"pqrs",
|
||||||
|
"pygmentize",
|
||||||
|
"pygments",
|
||||||
|
"Remo",
|
||||||
|
"resolv",
|
||||||
|
"resolvectl",
|
||||||
|
"SECOM",
|
||||||
|
"Sectigo",
|
||||||
|
"setenv",
|
||||||
|
"Shure",
|
||||||
|
"smartctl",
|
||||||
|
"smartd",
|
||||||
|
"squashfs",
|
||||||
|
"STEPCA",
|
||||||
|
"sysroot",
|
||||||
|
"systohc",
|
||||||
|
"timedatectl",
|
||||||
|
"timesyncd",
|
||||||
|
"tinysshd",
|
||||||
|
"tsched",
|
||||||
|
"userdbctl",
|
||||||
|
"vcckp",
|
||||||
|
"wipefs",
|
||||||
|
"xfsprogs"
|
||||||
|
]
|
||||||
|
}
|
21
Dockerfile
Normal file
21
Dockerfile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
FROM node:16 as build
|
||||||
|
|
||||||
|
# https://github.com/jgm/pandoc/releases
|
||||||
|
RUN curl -LO https://github.com/jgm/pandoc/releases/download/2.14.0.1/pandoc-2.14.0.1-1-amd64.deb
|
||||||
|
RUN dpkg -i pandoc-2.14.0.1-1-amd64.deb
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY plugins plugins
|
||||||
|
COPY package.json package-lock.json ./
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
COPY themes themes
|
||||||
|
COPY source source
|
||||||
|
COPY _config.yml ./
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
FROM nginx:stable-alpine as runtime
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
COPY --from=build /app/public /var/www/html/
|
3
Gemfile
3
Gemfile
@ -1,3 +0,0 @@
|
|||||||
source 'https://rubygems.org'
|
|
||||||
|
|
||||||
gem 'github-pages', group: :jekyll_plugins # workaround https://github.com/github/pages-gem#usage
|
|
258
Gemfile.lock
258
Gemfile.lock
@ -1,258 +0,0 @@
|
|||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
activesupport (6.0.3.3)
|
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
||||||
i18n (>= 0.7, < 2)
|
|
||||||
minitest (~> 5.1)
|
|
||||||
tzinfo (~> 1.1)
|
|
||||||
zeitwerk (~> 2.2, >= 2.2.2)
|
|
||||||
addressable (2.7.0)
|
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
|
||||||
coffee-script (2.4.1)
|
|
||||||
coffee-script-source
|
|
||||||
execjs
|
|
||||||
coffee-script-source (1.11.1)
|
|
||||||
colorator (1.1.0)
|
|
||||||
commonmarker (0.17.13)
|
|
||||||
ruby-enum (~> 0.5)
|
|
||||||
concurrent-ruby (1.1.7)
|
|
||||||
dnsruby (1.61.4)
|
|
||||||
simpleidn (~> 0.1)
|
|
||||||
em-websocket (0.5.2)
|
|
||||||
eventmachine (>= 0.12.9)
|
|
||||||
http_parser.rb (~> 0.6.0)
|
|
||||||
ethon (0.12.0)
|
|
||||||
ffi (>= 1.3.0)
|
|
||||||
eventmachine (1.2.7)
|
|
||||||
execjs (2.7.0)
|
|
||||||
faraday (1.0.1)
|
|
||||||
multipart-post (>= 1.2, < 3)
|
|
||||||
ffi (1.13.1)
|
|
||||||
forwardable-extended (2.6.0)
|
|
||||||
gemoji (3.0.1)
|
|
||||||
github-pages (207)
|
|
||||||
github-pages-health-check (= 1.16.1)
|
|
||||||
jekyll (= 3.9.0)
|
|
||||||
jekyll-avatar (= 0.7.0)
|
|
||||||
jekyll-coffeescript (= 1.1.1)
|
|
||||||
jekyll-commonmark-ghpages (= 0.1.6)
|
|
||||||
jekyll-default-layout (= 0.1.4)
|
|
||||||
jekyll-feed (= 0.13.0)
|
|
||||||
jekyll-gist (= 1.5.0)
|
|
||||||
jekyll-github-metadata (= 2.13.0)
|
|
||||||
jekyll-mentions (= 1.5.1)
|
|
||||||
jekyll-optional-front-matter (= 0.3.2)
|
|
||||||
jekyll-paginate (= 1.1.0)
|
|
||||||
jekyll-readme-index (= 0.3.0)
|
|
||||||
jekyll-redirect-from (= 0.15.0)
|
|
||||||
jekyll-relative-links (= 0.6.1)
|
|
||||||
jekyll-remote-theme (= 0.4.1)
|
|
||||||
jekyll-sass-converter (= 1.5.2)
|
|
||||||
jekyll-seo-tag (= 2.6.1)
|
|
||||||
jekyll-sitemap (= 1.4.0)
|
|
||||||
jekyll-swiss (= 1.0.0)
|
|
||||||
jekyll-theme-architect (= 0.1.1)
|
|
||||||
jekyll-theme-cayman (= 0.1.1)
|
|
||||||
jekyll-theme-dinky (= 0.1.1)
|
|
||||||
jekyll-theme-hacker (= 0.1.1)
|
|
||||||
jekyll-theme-leap-day (= 0.1.1)
|
|
||||||
jekyll-theme-merlot (= 0.1.1)
|
|
||||||
jekyll-theme-midnight (= 0.1.1)
|
|
||||||
jekyll-theme-minimal (= 0.1.1)
|
|
||||||
jekyll-theme-modernist (= 0.1.1)
|
|
||||||
jekyll-theme-primer (= 0.5.4)
|
|
||||||
jekyll-theme-slate (= 0.1.1)
|
|
||||||
jekyll-theme-tactile (= 0.1.1)
|
|
||||||
jekyll-theme-time-machine (= 0.1.1)
|
|
||||||
jekyll-titles-from-headings (= 0.5.3)
|
|
||||||
jemoji (= 0.11.1)
|
|
||||||
kramdown (= 2.3.0)
|
|
||||||
kramdown-parser-gfm (= 1.1.0)
|
|
||||||
liquid (= 4.0.3)
|
|
||||||
mercenary (~> 0.3)
|
|
||||||
minima (= 2.5.1)
|
|
||||||
nokogiri (>= 1.10.4, < 2.0)
|
|
||||||
rouge (= 3.19.0)
|
|
||||||
terminal-table (~> 1.4)
|
|
||||||
github-pages-health-check (1.16.1)
|
|
||||||
addressable (~> 2.3)
|
|
||||||
dnsruby (~> 1.60)
|
|
||||||
octokit (~> 4.0)
|
|
||||||
public_suffix (~> 3.0)
|
|
||||||
typhoeus (~> 1.3)
|
|
||||||
html-pipeline (2.14.0)
|
|
||||||
activesupport (>= 2)
|
|
||||||
nokogiri (>= 1.4)
|
|
||||||
http_parser.rb (0.6.0)
|
|
||||||
i18n (0.9.5)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
jekyll (3.9.0)
|
|
||||||
addressable (~> 2.4)
|
|
||||||
colorator (~> 1.0)
|
|
||||||
em-websocket (~> 0.5)
|
|
||||||
i18n (~> 0.7)
|
|
||||||
jekyll-sass-converter (~> 1.0)
|
|
||||||
jekyll-watch (~> 2.0)
|
|
||||||
kramdown (>= 1.17, < 3)
|
|
||||||
liquid (~> 4.0)
|
|
||||||
mercenary (~> 0.3.3)
|
|
||||||
pathutil (~> 0.9)
|
|
||||||
rouge (>= 1.7, < 4)
|
|
||||||
safe_yaml (~> 1.0)
|
|
||||||
jekyll-avatar (0.7.0)
|
|
||||||
jekyll (>= 3.0, < 5.0)
|
|
||||||
jekyll-coffeescript (1.1.1)
|
|
||||||
coffee-script (~> 2.2)
|
|
||||||
coffee-script-source (~> 1.11.1)
|
|
||||||
jekyll-commonmark (1.3.1)
|
|
||||||
commonmarker (~> 0.14)
|
|
||||||
jekyll (>= 3.7, < 5.0)
|
|
||||||
jekyll-commonmark-ghpages (0.1.6)
|
|
||||||
commonmarker (~> 0.17.6)
|
|
||||||
jekyll-commonmark (~> 1.2)
|
|
||||||
rouge (>= 2.0, < 4.0)
|
|
||||||
jekyll-default-layout (0.1.4)
|
|
||||||
jekyll (~> 3.0)
|
|
||||||
jekyll-feed (0.13.0)
|
|
||||||
jekyll (>= 3.7, < 5.0)
|
|
||||||
jekyll-gist (1.5.0)
|
|
||||||
octokit (~> 4.2)
|
|
||||||
jekyll-github-metadata (2.13.0)
|
|
||||||
jekyll (>= 3.4, < 5.0)
|
|
||||||
octokit (~> 4.0, != 4.4.0)
|
|
||||||
jekyll-mentions (1.5.1)
|
|
||||||
html-pipeline (~> 2.3)
|
|
||||||
jekyll (>= 3.7, < 5.0)
|
|
||||||
jekyll-optional-front-matter (0.3.2)
|
|
||||||
jekyll (>= 3.0, < 5.0)
|
|
||||||
jekyll-paginate (1.1.0)
|
|
||||||
jekyll-readme-index (0.3.0)
|
|
||||||
jekyll (>= 3.0, < 5.0)
|
|
||||||
jekyll-redirect-from (0.15.0)
|
|
||||||
jekyll (>= 3.3, < 5.0)
|
|
||||||
jekyll-relative-links (0.6.1)
|
|
||||||
jekyll (>= 3.3, < 5.0)
|
|
||||||
jekyll-remote-theme (0.4.1)
|
|
||||||
addressable (~> 2.0)
|
|
||||||
jekyll (>= 3.5, < 5.0)
|
|
||||||
rubyzip (>= 1.3.0)
|
|
||||||
jekyll-sass-converter (1.5.2)
|
|
||||||
sass (~> 3.4)
|
|
||||||
jekyll-seo-tag (2.6.1)
|
|
||||||
jekyll (>= 3.3, < 5.0)
|
|
||||||
jekyll-sitemap (1.4.0)
|
|
||||||
jekyll (>= 3.7, < 5.0)
|
|
||||||
jekyll-swiss (1.0.0)
|
|
||||||
jekyll-theme-architect (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-cayman (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-dinky (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-hacker (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-leap-day (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-merlot (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-midnight (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-minimal (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-modernist (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-primer (0.5.4)
|
|
||||||
jekyll (> 3.5, < 5.0)
|
|
||||||
jekyll-github-metadata (~> 2.9)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-slate (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-tactile (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-theme-time-machine (0.1.1)
|
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-seo-tag (~> 2.0)
|
|
||||||
jekyll-titles-from-headings (0.5.3)
|
|
||||||
jekyll (>= 3.3, < 5.0)
|
|
||||||
jekyll-watch (2.2.1)
|
|
||||||
listen (~> 3.0)
|
|
||||||
jemoji (0.11.1)
|
|
||||||
gemoji (~> 3.0)
|
|
||||||
html-pipeline (~> 2.2)
|
|
||||||
jekyll (>= 3.0, < 5.0)
|
|
||||||
kramdown (2.3.0)
|
|
||||||
rexml
|
|
||||||
kramdown-parser-gfm (1.1.0)
|
|
||||||
kramdown (~> 2.0)
|
|
||||||
liquid (4.0.3)
|
|
||||||
listen (3.2.1)
|
|
||||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
||||||
rb-inotify (~> 0.9, >= 0.9.10)
|
|
||||||
mercenary (0.3.6)
|
|
||||||
mini_portile2 (2.4.0)
|
|
||||||
minima (2.5.1)
|
|
||||||
jekyll (>= 3.5, < 5.0)
|
|
||||||
jekyll-feed (~> 0.9)
|
|
||||||
jekyll-seo-tag (~> 2.1)
|
|
||||||
minitest (5.14.2)
|
|
||||||
multipart-post (2.1.1)
|
|
||||||
nokogiri (1.10.10)
|
|
||||||
mini_portile2 (~> 2.4.0)
|
|
||||||
octokit (4.18.0)
|
|
||||||
faraday (>= 0.9)
|
|
||||||
sawyer (~> 0.8.0, >= 0.5.3)
|
|
||||||
pathutil (0.16.2)
|
|
||||||
forwardable-extended (~> 2.6)
|
|
||||||
public_suffix (3.1.1)
|
|
||||||
rb-fsevent (0.10.4)
|
|
||||||
rb-inotify (0.10.1)
|
|
||||||
ffi (~> 1.0)
|
|
||||||
rexml (3.2.4)
|
|
||||||
rouge (3.19.0)
|
|
||||||
ruby-enum (0.8.0)
|
|
||||||
i18n
|
|
||||||
rubyzip (2.3.0)
|
|
||||||
safe_yaml (1.0.5)
|
|
||||||
sass (3.7.4)
|
|
||||||
sass-listen (~> 4.0.0)
|
|
||||||
sass-listen (4.0.0)
|
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
|
||||||
sawyer (0.8.2)
|
|
||||||
addressable (>= 2.3.5)
|
|
||||||
faraday (> 0.8, < 2.0)
|
|
||||||
simpleidn (0.1.1)
|
|
||||||
unf (~> 0.1.4)
|
|
||||||
terminal-table (1.8.0)
|
|
||||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
|
||||||
thread_safe (0.3.6)
|
|
||||||
typhoeus (1.4.0)
|
|
||||||
ethon (>= 0.9.0)
|
|
||||||
tzinfo (1.2.7)
|
|
||||||
thread_safe (~> 0.1)
|
|
||||||
unf (0.1.4)
|
|
||||||
unf_ext
|
|
||||||
unf_ext (0.0.7.7)
|
|
||||||
unicode-display_width (1.7.0)
|
|
||||||
zeitwerk (2.4.0)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
github-pages
|
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
2.1.4
|
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2019 Yasuaki Uechi (https://uechi.io)
|
Copyright (c) 2013-2022 Yasuaki Uechi (https://uechi.io)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
10
Makefile
Normal file
10
Makefile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
deploy: build
|
||||||
|
docker rm -f uechiio uechiio-cron
|
||||||
|
docker compose -f docker-compose.production.yml up -d
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker compose build --pull
|
||||||
|
|
||||||
|
push:
|
||||||
|
docker compose push
|
||||||
|
|
18
README.md
18
README.md
@ -1,24 +1,16 @@
|
|||||||
# uechi.io
|
# uechi.io
|
||||||
|
|
||||||
[](https://travis-ci.org/uetchy/uechi.io)
|
[](https://build.u8.pub/uetchy/uechi.io)
|
||||||
|
|
||||||
## Build
|
## Dev
|
||||||
|
|
||||||
```
|
```bash
|
||||||
docker-compose run web bundle install
|
npm start
|
||||||
docker-compose up --build
|
|
||||||
```
|
|
||||||
|
|
||||||
## Test
|
|
||||||
|
|
||||||
```
|
|
||||||
npm install
|
|
||||||
npm test
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Publish
|
## Publish
|
||||||
|
|
||||||
```
|
```bash
|
||||||
git commit -m "New article"
|
git commit -m "New article"
|
||||||
git push
|
git push
|
||||||
```
|
```
|
||||||
|
188
_config.yml
188
_config.yml
@ -1,47 +1,147 @@
|
|||||||
---
|
# Hexo Configuration
|
||||||
|
## Docs: https://hexo.io/docs/configuration.html
|
||||||
|
## Source: https://github.com/hexojs/hexo/
|
||||||
|
|
||||||
|
# Site
|
||||||
title: uechi.io
|
title: uechi.io
|
||||||
timezone: Asia/Tokyo
|
subtitle: ""
|
||||||
collections:
|
description: "Random posts from uetchy"
|
||||||
posts:
|
keywords:
|
||||||
title: Posts
|
author: Yasuaki Uechi
|
||||||
output: true
|
language: en
|
||||||
uploads:
|
timezone: "Asia/Tokyo"
|
||||||
title: Uploads
|
|
||||||
output: true
|
excerpt:
|
||||||
defaults:
|
depth: 1
|
||||||
- scope:
|
|
||||||
path: ''
|
|
||||||
type: posts
|
|
||||||
values:
|
|
||||||
layout: post
|
|
||||||
permalink: "/blog/:title"
|
|
||||||
description: Random posts from @uetchy.
|
|
||||||
url: https://uechi.io
|
|
||||||
email: y@uechi.io
|
|
||||||
twitter:
|
|
||||||
username: uechz
|
|
||||||
github:
|
github:
|
||||||
username: uetchy
|
username: uetchy
|
||||||
logo: "/images/icon.png"
|
twitter:
|
||||||
excerpt_separator: "#"
|
username: uechz
|
||||||
google_analytics: UA-28919359-12
|
|
||||||
plugins:
|
umami:
|
||||||
- jekyll-redirect-from
|
host: analytics.uechi.io
|
||||||
- jekyll-sitemap
|
id: 2739f9aa-b8d5-45fa-8972-07a5bbb87e8a
|
||||||
- jekyll-seo-tag
|
|
||||||
- jekyll-feed
|
node_sass:
|
||||||
- jemoji
|
outputStyle: nested
|
||||||
include:
|
precision: 5
|
||||||
- _pages
|
sourceComments: false
|
||||||
exclude:
|
|
||||||
- README.md
|
sass:
|
||||||
- LICENSE
|
outputStyle: expanded
|
||||||
- CNAME
|
|
||||||
- Gemfile
|
# URL
|
||||||
- Gemfile.lock
|
## If your site is put in a subdirectory, set url as 'http://example.com/child' and root as '/child/'
|
||||||
- package.json
|
url: https://uechi.io
|
||||||
- node_modules
|
root: /
|
||||||
- script
|
permalink: /blog/:name/
|
||||||
- vendor
|
permalink_defaults:
|
||||||
- docker-compose.yml
|
pretty_urls:
|
||||||
- Dockerfile
|
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
|
||||||
|
trailing_html: true # Set to false to remove trailing '.html' from permalinks
|
||||||
|
|
||||||
|
# Directory
|
||||||
|
source_dir: source
|
||||||
|
public_dir: public
|
||||||
|
tag_dir: tags
|
||||||
|
archive_dir: archives
|
||||||
|
category_dir: categories
|
||||||
|
code_dir: downloads/code
|
||||||
|
i18n_dir: :lang
|
||||||
|
skip_render:
|
||||||
|
|
||||||
|
# Writing
|
||||||
|
new_post_name: :title.md # File name of new posts
|
||||||
|
default_layout: post
|
||||||
|
titlecase: false # Transform title into titlecase
|
||||||
|
external_link:
|
||||||
|
enable: true # Open external links in new tab
|
||||||
|
field: site # Apply to the whole site
|
||||||
|
exclude: ""
|
||||||
|
filename_case: 0
|
||||||
|
render_drafts: false
|
||||||
|
relative_link: false
|
||||||
|
future: true
|
||||||
|
post_asset_folder: true
|
||||||
|
marked:
|
||||||
|
prependRoot: true
|
||||||
|
postAsset: true
|
||||||
|
|
||||||
|
# Math
|
||||||
|
mathjax:
|
||||||
|
tags: none # or 'ams' or 'all'
|
||||||
|
single_dollars: true # enable single dollar signs as in-line math delimiters
|
||||||
|
cjk_width: 0.9 # relative CJK char width
|
||||||
|
normal_width: 0.6 # relative normal (monospace) width
|
||||||
|
append_css: true # add CSS to pages rendered by MathJax
|
||||||
|
every_page: true # if true, every page will be rendered by MathJax regardless the `mathjax` setting in Front-matter
|
||||||
|
|
||||||
|
# Highlight
|
||||||
|
highlight:
|
||||||
|
enable: true
|
||||||
|
line_number: false
|
||||||
|
auto_detect: false
|
||||||
|
tab_replace: ""
|
||||||
|
wrap: false
|
||||||
|
hljs: true
|
||||||
|
prismjs:
|
||||||
|
enable: false
|
||||||
|
|
||||||
|
# Home page setting
|
||||||
|
# path: Root path for your blogs index page. (default = '')
|
||||||
|
# per_page: Posts displayed per page. (0 = disable pagination)
|
||||||
|
# order_by: Posts order. (Order by date descending by default)
|
||||||
|
index_generator:
|
||||||
|
path: ""
|
||||||
|
per_page: 20
|
||||||
|
order_by: -date
|
||||||
|
|
||||||
|
# Category & Tag
|
||||||
|
default_category: uncategorized
|
||||||
|
category_map:
|
||||||
|
tag_map:
|
||||||
|
|
||||||
|
# Metadata elements
|
||||||
|
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
|
||||||
|
meta_generator: true
|
||||||
|
|
||||||
|
# Date / Time format
|
||||||
|
## Hexo uses Moment.js to parse and display date
|
||||||
|
## You can customize the date format as defined in
|
||||||
|
## http://momentjs.com/docs/#/displaying/format/
|
||||||
|
date_format: YYYY-MM-DD
|
||||||
|
time_format: HH:mm:ss
|
||||||
|
## updated_option supports 'mtime', 'date', 'empty'
|
||||||
|
updated_option: "mtime"
|
||||||
|
|
||||||
|
# Pagination
|
||||||
|
## Set per_page to 0 to disable pagination
|
||||||
|
per_page: 20
|
||||||
|
pagination_dir: page
|
||||||
|
|
||||||
|
# Include / Exclude file(s)
|
||||||
|
## include:/exclude: options only apply to the 'source/' folder
|
||||||
|
# include:
|
||||||
|
# exclude:
|
||||||
|
ignore:
|
||||||
|
|
||||||
|
# Extensions
|
||||||
|
## Plugins: https://hexo.io/plugins/
|
||||||
|
## Themes: https://hexo.io/themes/
|
||||||
|
theme: uio
|
||||||
|
|
||||||
|
# Feed
|
||||||
|
feed:
|
||||||
|
limit: 20
|
||||||
|
order_by: "-date"
|
||||||
|
tag_dir: "tag"
|
||||||
|
category_dir: "category"
|
||||||
|
rss:
|
||||||
|
enable: false
|
||||||
|
jsonFeed:
|
||||||
|
enable: true
|
||||||
|
output: "feed.json"
|
||||||
|
atom:
|
||||||
|
enable: true
|
||||||
|
output: "feed.xml"
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
title: Deconvolutionと呼ぶのはもうやめよう
|
|
||||||
date: 2017-03-05 13:44:00 +09:00
|
|
||||||
---
|
|
||||||
|
|
||||||
深層学習において、Convolutional Layer (畳み込み層)とは、あるシェイプのテンソルをそれ以下のサイズに縮約する性質のレイヤーです。一方で Deconvolution Layer (逆畳み込み層)とは、[Jonathan Long, et al](https://arxiv.org/abs/1411.4038)の論文で提案されたレイヤーで、あるシェイプのテンソルをそれ以上のサイズに拡大する性質を持ちます。
|
|
||||||
|
|
||||||
ところが実際のところ、このレイヤーは Transposed Convolution Layer (転置畳み込み層)と呼ぶべきです。なぜかを以下に示します。
|
|
||||||
|
|
||||||
> Upsampling is backwards strided convolution. (アップサンプリングは
|
|
||||||
|
|
||||||
[Stack Exchange](http://datascience.stackexchange.com/questions/6107/what-are-deconvolutional-layers)での議論を踏まえると
|
|
@ -1,11 +0,0 @@
|
|||||||
---
|
|
||||||
title: 'gst: a powerful pal for ghq'
|
|
||||||
date: 2017-06-02 23:02:00 +09:00
|
|
||||||
---
|
|
||||||
|
|
||||||
[gst](https://github.com/uetchy/gst) is tiny and simple but powerful pal for [ghq](https://github.com/motemen/ghq).
|
|
||||||
|
|
||||||
Have you ever imagined what if you know which commits are unpushed or which changes are uncommitted yet, for all of the repositories you have cloned on your machine?
|
|
||||||
|
|
||||||
You might want to check out my ongoing project `gst`:
|
|
||||||
it might help you to know what ongoing changes are remained to be committed or pushed among entire your local repositories.
|
|
@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
date: 2020-03-16 18:19:11 +0900
|
|
||||||
title: pixiv SPRING BOOT CAMP 2020
|
|
||||||
---
|
|
||||||
|
|
||||||
[pixiv SPRING BOOT CAMP 2020](https://www.pixiv.co.jp/news/recruit/article/8728/)に参加した。インターン自体が初めてということもあり、普段とは種類の異なる様々な知見を得ることができたので共有したい。
|
|
||||||
|
|
||||||
## 選考
|
|
||||||
|
|
||||||
選考は Google Hangout Meet を用いたオンラインセッションで実施された。質問内容は以下の通りである。
|
|
||||||
|
|
||||||
- 自己紹介
|
|
||||||
- コースの希望とその理由
|
|
||||||
- 簡単なコーディングテスト
|
|
||||||
|
|
||||||
フロントエンドを希望したため、コーディングテストは JavaScript を用いてフォーム画面を設計するという内容になっていた。
|
|
||||||
React を用いて MVP を実装し、それからインタビュワーのツッコミを打ち返すという形式であった。
|
|
||||||
|
|
||||||
選考結果は次の日に通知された。選考に関するフローは洗練されており、よく設計されているように感じた。
|
|
||||||
|
|
||||||
## オリエンテーション
|
|
||||||
|
|
||||||
- NDA
|
|
||||||
- ラジオ体操
|
|
||||||
- 自己紹介
|
|
||||||
|
|
||||||
## 業務
|
|
||||||
|
|
||||||
- iMac
|
|
||||||
- YubiKey
|
|
||||||
- 課題 1. psd.js の TypeScript 移植
|
|
||||||
- 課題 2. 通知 API の JSON API 化+React 化
|
|
||||||
- 同人誌入稿画面のレスポンシブ化
|
|
||||||
- 新しい入稿フローの提案
|
|
||||||
|
|
||||||
### ランチ
|
|
||||||
|
|
||||||
- タコライス
|
|
||||||
- LINE Pay
|
|
||||||
- PayPay
|
|
||||||
|
|
||||||
## 成果発表
|
|
||||||
|
|
||||||
## 感想
|
|
||||||
|
|
||||||
### 社風
|
|
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
date: 2020-02-13 16:22:05 +0900
|
|
||||||
title: 静寂を得る方法
|
|
||||||
|
|
||||||
---
|
|
||||||
聴覚過敏であったり、そうでなくとも周りの音がパフォーマンスに悪影響となる人のために、静寂を得る方法を紹介します。
|
|
||||||
|
|
||||||
## EARIN M-2
|
|
||||||
|
|
||||||
[EARIN](https://earin.com/) は左右分離型Bluetoothイヤホンです。付属のイヤホンの代わりに自分の耳にフィットするComplyのイヤーチップと付け替えます。
|
|
||||||
|
|
||||||
## Moldex
|
|
||||||
|
|
||||||
Moldex は使い捨て耳栓のメーカーであり、各種遮音レベルに分かれた多様なラインナップを提供しています。
|
|
@ -1,25 +0,0 @@
|
|||||||
<!-- Google Analytics -->
|
|
||||||
<script>
|
|
||||||
;(function(i, s, o, g, r, a, m) {
|
|
||||||
i['GoogleAnalyticsObject'] = r
|
|
||||||
;(i[r] =
|
|
||||||
i[r] ||
|
|
||||||
function() {
|
|
||||||
;(i[r].q = i[r].q || []).push(arguments)
|
|
||||||
}),
|
|
||||||
(i[r].l = 1 * new Date())
|
|
||||||
;(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0])
|
|
||||||
a.async = 1
|
|
||||||
a.src = g
|
|
||||||
m.parentNode.insertBefore(a, m)
|
|
||||||
})(
|
|
||||||
window,
|
|
||||||
document,
|
|
||||||
'script',
|
|
||||||
'https://www.google-analytics.com/analytics.js',
|
|
||||||
'ga'
|
|
||||||
)
|
|
||||||
|
|
||||||
ga('create', '{{ site.google_analytics }}', 'auto')
|
|
||||||
ga('send', 'pageview')
|
|
||||||
</script>
|
|
@ -1,53 +0,0 @@
|
|||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="{{ site.baseurl }}/images/favicon.ico" />
|
|
||||||
<link
|
|
||||||
rel="apple-touch-icon"
|
|
||||||
sizes="180x180"
|
|
||||||
href="{{ site.baseurl }}/images/apple-touch-icon.png"
|
|
||||||
/>
|
|
||||||
<link
|
|
||||||
rel="icon"
|
|
||||||
type="image/png"
|
|
||||||
href="{{ site.baseurl }}/images/favicon-32x32.png"
|
|
||||||
sizes="32x32"
|
|
||||||
/>
|
|
||||||
<link
|
|
||||||
rel="icon"
|
|
||||||
type="image/png"
|
|
||||||
href="{{ site.baseurl }}/images/favicon-16x16.png"
|
|
||||||
sizes="16x16"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<link
|
|
||||||
rel="mask-icon"
|
|
||||||
href="{{ site.baseurl }}/images/safari-pinned-tab.svg"
|
|
||||||
color="#5bbad5"
|
|
||||||
/>
|
|
||||||
|
|
||||||
{% seo %} {% feed_meta %}
|
|
||||||
|
|
||||||
<!-- Normalize -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/normalize/7.0.0/normalize.min.css"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Share -->
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8"
|
|
||||||
id="facebook-jssdk"
|
|
||||||
></script>
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src="https://platform.twitter.com/widgets.js"
|
|
||||||
id="twitter-wjs"
|
|
||||||
></script>
|
|
||||||
|
|
||||||
<!-- Styles -->
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/css/index.css" />
|
|
||||||
</head>
|
|
@ -1,24 +0,0 @@
|
|||||||
<header class="header">
|
|
||||||
<a class="logo" href="{{ site.baseurl }}/"
|
|
||||||
><img src="{{ site.baseurl }}/images/logo.svg" style="height: 50px"
|
|
||||||
/></a>
|
|
||||||
<nav>
|
|
||||||
<ul class="menu">
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="/me">Me</a>
|
|
||||||
</li>
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="https://github.com/{{ site.github.username }}">GitHub</a>
|
|
||||||
</li>
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="https://twitter.com/{{ site.twitter.username }}">Twitter</a>
|
|
||||||
</li>
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="/wallpaper">Wallpaper</a>
|
|
||||||
</li>
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="/pay">Pay</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<article class="article">
|
|
||||||
<div class="article__content">{{ content }}</div>
|
|
||||||
</article>
|
|
||||||
</section>
|
|
@ -1,10 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
{% include head.html %}
|
|
||||||
|
|
||||||
<body>
|
|
||||||
{% include header.html %}
|
|
||||||
{{ content }}
|
|
||||||
{% include footer.html %}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<article class="article">
|
|
||||||
<hgroup class="article__metadata">
|
|
||||||
{% if page.date %}
|
|
||||||
<h3 class="article__pubdate">
|
|
||||||
<time pubdate>{{ page.date | date: '%B %d, %Y' | upcase }}</time>
|
|
||||||
</h3>
|
|
||||||
{% endif %}
|
|
||||||
<h2 class="article__title">{{ page.title }}</h2>
|
|
||||||
</hgroup>
|
|
||||||
<div class="article__content">{{ content }}</div>
|
|
||||||
|
|
||||||
<!-- Social buttons -->
|
|
||||||
<div id="fb-root"></div>
|
|
||||||
<div class="article__social">
|
|
||||||
<a
|
|
||||||
href="https://twitter.com/share"
|
|
||||||
class="twitter-share-button"
|
|
||||||
data-size="large"
|
|
||||||
>Tweet</a
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fb-like"
|
|
||||||
data-layout="button"
|
|
||||||
data-action="like"
|
|
||||||
data-size="large"
|
|
||||||
data-show-faces="false"
|
|
||||||
data-share="true"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- MathJax -->
|
|
||||||
<script type="text/x-mathjax-config">
|
|
||||||
MathJax.Hub.Config({
|
|
||||||
tex2jax: {
|
|
||||||
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
|
|
||||||
processEscapes: true
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- Syntax Highlight -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="https://unpkg.com/highlight.js@9.18.1/styles/night-owl.css"
|
|
||||||
/>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/go.min.js"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/scss.min.js"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/lua.min.js"></script>
|
|
||||||
<script>
|
|
||||||
hljs.initHighlightingOnLoad()
|
|
||||||
</script>
|
|
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
title: Page Not Found
|
|
||||||
permalink: "/404.html"
|
|
||||||
excerpt: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
{% include head.html %}
|
|
||||||
<style>
|
|
||||||
h1 {
|
|
||||||
font-size: 12em;
|
|
||||||
font-weight: 100;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<body>
|
|
||||||
{% include header.html %}
|
|
||||||
<section class='page-section error-page'>
|
|
||||||
<div class='container-narrow text-center py-md-8'>
|
|
||||||
<h1>404</h1>
|
|
||||||
<p class="lead">This page could not be found</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,53 +0,0 @@
|
|||||||
---
|
|
||||||
permalink: "/"
|
|
||||||
layout:
|
|
||||||
---
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
{% include head.html %}
|
|
||||||
<body>
|
|
||||||
<div class="metro">
|
|
||||||
<h1 class="logo">
|
|
||||||
<img src="{{ site.baseurl }}/images/logo.svg" style="height: 50px" />
|
|
||||||
</h1>
|
|
||||||
<nav>
|
|
||||||
<ul class="menu">
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="/me">Me</a>
|
|
||||||
</li>
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="https://github.com/{{ site.github.username }}">GitHub</a>
|
|
||||||
</li>
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="https://twitter.com/{{ site.twitter.username }}"
|
|
||||||
>Twitter</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li class="menu__item">
|
|
||||||
<a href="/wallpaper">Wallpaper</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<section>
|
|
||||||
{% for post in site.posts %}
|
|
||||||
<article class="article-list__item">
|
|
||||||
<h2 class="article-list__item__title">
|
|
||||||
<a href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
|
|
||||||
</h2>
|
|
||||||
<!-- <time class="article-list__item__pubdate" pubdate>{{ post.date | date: '%B %d, %Y' }}</time> -->
|
|
||||||
<article class="article-list__item__excerpt">
|
|
||||||
{{ post.excerpt | strip_html | truncate: 140, "..." }}
|
|
||||||
</article>
|
|
||||||
<a
|
|
||||||
class="article-list__item__button"
|
|
||||||
href="{{ post.url | prepend: site.baseurl }}"
|
|
||||||
>Read more</a
|
|
||||||
>
|
|
||||||
</article>
|
|
||||||
{% endfor %}
|
|
||||||
</section>
|
|
||||||
{% include footer.html %}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
48
_pages/me.md
48
_pages/me.md
@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
title: Yasuaki Uechi
|
|
||||||
permalink: "/me"
|
|
||||||
layout: article
|
|
||||||
---
|
|
||||||
|
|
||||||
<style>
|
|
||||||
img {
|
|
||||||
width: auto !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
# README
|
|
||||||
|
|
||||||
> I'm **Yasuaki Uechi**, a graduate student studying about recurrent neural networks. I was born in Okinawa, Japan in 1994 and have been living in Kanagawa.
|
|
||||||
|
|
||||||
# Contact
|
|
||||||
|
|
||||||
Reach me at `y@uechi.io` (recommended) or [@uechz](https://twitter.com/uechz) on Twitter. Beware that I'm not a person of quick reply so if you are in urgent need of a lightning response better bomb my inbox with reminders so I can prioritize your email than any other emails.
|
|
||||||
|
|
||||||
## GPG Key
|
|
||||||
|
|
||||||
Get [GPG Key](https://github.com/uetchy.gpg) on GitHub.
|
|
||||||
|
|
||||||
# Facts
|
|
||||||
|
|
||||||
- play violin, tin whistle, piano, and bodhrán. Logic Pro user.
|
|
||||||
- overall interests: ux/graphic design, webdev, machine learning (mainly nlp and generative design), behavioral economics, organization government, irish music, coffee, puzzle game
|
|
||||||
- dev interests: react, nodejs, rust, docker
|
|
||||||
- have confidence in: javascript (incl. nodejs and typescript), python, ux design, baremetal server, english
|
|
||||||
- have no confidence in: normal life stuff
|
|
||||||
- have some experience in: swift, go, ruby, rust, c++, pytorch
|
|
||||||
- language skills:
|
|
||||||
- Japanese: native
|
|
||||||
- English: TOEIC 940, TOEFL 78
|
|
||||||
- Chinese, Korean, Indonesian, German, Russian: current objectives still n00b though
|
|
||||||
- typeface fanatic
|
|
||||||
|
|
||||||
# Publishing
|
|
||||||
|
|
||||||
- [Open Source @ GitHub](https://github.com/uetchy)
|
|
||||||
- [Technical Note (English) @ dev.to](https://dev.to/uetchy)
|
|
||||||
- [Technical Note (Japanese) @ Qiita](https://qiita.com/uetchy)
|
|
||||||
- [Design Portfolio @ Behance](https://www.behance.net/uechi)
|
|
||||||
|
|
||||||
# Current Activity
|
|
||||||
|
|
||||||
- Seeking for a job
|
|
@ -1,60 +0,0 @@
|
|||||||
---
|
|
||||||
title: Pay
|
|
||||||
permalink: "/pay"
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
|
|
||||||
<div id="pay">
|
|
||||||
<section>
|
|
||||||
<p>
|
|
||||||
送金方法はオススメ順に並んでいます。いずれか都合の良い方法で送金または請求してください。
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h1>Kyash</h1>
|
|
||||||
<p>
|
|
||||||
QRコードをスキャンするか、Kyash ID
|
|
||||||
<span class="monospace">uechi</span> 宛に送金・請求してください。
|
|
||||||
</p>
|
|
||||||
<img src="/images/payment/kyash.png" width="200" height="200" />
|
|
||||||
<a class="button" href="kyash://qr/u/7175222723044580164">Kyashを開く</a>
|
|
||||||
<br />
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h1>LINE Pay</h1>
|
|
||||||
<p>LINE宛に送金・請求してください。</p>
|
|
||||||
<a class="button" href="https://line.me/ja/pay">LINE Payについて</a>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h1>Revolut</h1>
|
|
||||||
<p><span class="monospace">yasuakpnqg</span> 宛にお送りください。</p>
|
|
||||||
<a class="button" href="https://pay.revolut.com/profile/yasuakpnqg"
|
|
||||||
>Revolutを開く</a
|
|
||||||
>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h1>Amazon ギフトカード</h1>
|
|
||||||
<p>
|
|
||||||
メッセージアプリ経由で、または
|
|
||||||
<span class="monospace">y@uechi.io</span> 宛にお送りください。
|
|
||||||
</p>
|
|
||||||
<a class="button" href="https://www.amazon.co.jp/gp/product/B004N3APGO/"
|
|
||||||
>Amazonを開く</a
|
|
||||||
>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h1>PayPay</h1>
|
|
||||||
<p>QRコードをスキャンして送金してください。</p>
|
|
||||||
<img src="/images/payment/paypay.png" width="200" height="200" />
|
|
||||||
<a class="button" href="https://paypay.ne.jp/">PayPayについて</a> <br />
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h1>PayPal</h1>
|
|
||||||
<p>
|
|
||||||
PayPalで
|
|
||||||
<span class="monospace">y@uechi.io</span> 宛に送金・請求してください。
|
|
||||||
</p>
|
|
||||||
<a class="button" href="https://paypal.me/uetchy">PayPalを開く</a>
|
|
||||||
<br />
|
|
||||||
</section>
|
|
||||||
</div>
|
|
@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
title: Wallpapers
|
|
||||||
permalink: "/wallpaper"
|
|
||||||
layout: post
|
|
||||||
---
|
|
||||||
|
|
||||||
Right-click and choose **Save Image** to download my wallpapers. All following pictures are my own work and are published on Creative Commons BY-NC-SA.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
<div style="display: flex; flex-direction: row">
|
|
||||||
<div><img src="{{ site.baseurl }}/images/wallpaper/vertex.png" /></div>
|
|
||||||
<div style="margin-left: 20px"><img src="{{ site.baseurl }}/images/wallpaper/vertex2.png" /></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Monochrome
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
title: Markdownフレンドリーなノートアプリ
|
|
||||||
date: 2017-02-13 21:52:00 +09:00
|
|
||||||
redirect_from: "/blog/2017/02/13/markdown-friendly-note-taking-apps"
|
|
||||||
---
|
|
||||||
|
|
||||||
UI が秀逸な Markdown ノートアプリを紹介します。
|
|
||||||
|
|
||||||
# ノートアプリの種類
|
|
||||||
|
|
||||||
ノートアプリには大きく分けて 2 種類があります。
|
|
||||||
Notes のようにノートを一箇所にまとめて管理するシングルトンタイプと、TextEdit のようにファイル毎にウィンドウが開くタイプです。
|
|
||||||
この記事では、前者を Notes タイプ、後者を TextEdit タイプと呼称し区別します。
|
|
||||||
|
|
||||||
# Notes タイプ
|
|
||||||
|
|
||||||
## Notion
|
|
||||||
|
|
||||||
<https://notion.so>
|
|
||||||
|
|
||||||
サンフランシスコの Notion Lab 社が開発する多機能ノートアプリです。Web 版、iOS/Android 版と Mac 版が用意されており、Markdown ライクな記法で自由度の高いノートテイキングが出来ます。
|
|
||||||
|
|
||||||
## Bear
|
|
||||||
|
|
||||||
<http://www.bear-writer.com>
|
|
||||||
|
|
||||||
北イタリア産のノートアプリです。記事中に **ハッシュタグ** を書き込むと、リストでまとめてくれる機能が秀逸です。
|
|
||||||
iCloud を使って、macOS と iOS アプリの間でノートを同期することが出来ます。
|
|
||||||
|
|
||||||
## SnippetsLab
|
|
||||||
|
|
||||||
<https://www.renfei.org/snippets-lab/>
|
|
||||||
|
|
||||||
正確にはスニペット管理アプリですが、Markdown+MathJax をサポートしており、数式を使ったメモを書くことが出来ます。
|
|
||||||
|
|
||||||
## Inkdrop
|
|
||||||
|
|
||||||
<https://www.inkdrop.info>
|
|
||||||
|
|
||||||
個人開発のノートアプリです。プラグインにより多くの機能を追加することが出来ます。
|
|
||||||
|
|
||||||
# TextEdit タイプ
|
|
||||||
|
|
||||||
## Typora
|
|
||||||
|
|
||||||
<https://typora.io>
|
|
||||||
|
|
||||||
エディタとプレビューが一体化したタイプのエディタです。左右分割よりも WYSIWYG エディタの方がわかりやすい派なので、これ一択です。
|
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
title: Install NVIDIA GeForce GTX TITAN X in MacPro Early 2008
|
|
||||||
date: 2017-02-13 14:20:00 +09:00
|
|
||||||
redirect_from: "/blog/2017/02/13/nvidia-titan-x-macpro-early-2008"
|
|
||||||
---
|
|
||||||
|
|
||||||
MacPro Early 2008 という骨董品に NVIDIA Titan X (Maxwell)を積んだところ、いくつかの問題にぶつかりました。この記事でそれらの問題と解決策について書きます。
|
|
||||||
|
|
||||||
# NVIDIA ドライバーが非対応
|
|
||||||
|
|
||||||
あまりにも古いアーキテクチャの MacPro に対して NVIDIA のグラフィックドライバーが対応していません。
|
|
||||||
そこで、適切なバージョンの[NVIDIA Web Driver](http://www.macvidcards.com/drivers.html)をインストールすることでこれを解決しました。
|
|
||||||
これには問題もあります。macOS のアップデートをインストールするたびに、それに対応したドライバーを都度インストールする必要がありました。
|
|
||||||
|
|
||||||
ドライバーをインストールするまでは画面に何も映りません。そこで、pkg 形式のドライバーを`scp`で MacPro に転送して、`installer`を使ってドライバーをインストールすることにしました。
|
|
||||||
|
|
||||||
```
|
|
||||||
scp driver.pkg MacPro.local:~
|
|
||||||
ssh MacPro.local
|
|
||||||
sudo installer -pkg ./driver.pkg -target /
|
|
||||||
```
|
|
||||||
|
|
||||||
# 電源ユニット(PSU)のパワー不足
|
|
||||||
|
|
||||||
TITAN X(Maxwell)が要求するパワーを MacPro の PSU は提供することが出来ません。
|
|
||||||
そこで、秋葉原の PC パーツショップで追加の PSU を購入して、GPU 専用の電源として使いました。
|
|
||||||
ここで新たな問題が生まれます。正しくパワーを提供するためには MacPro の PSU と追加の PSU を同期させる必要があり、またそれを実現するパーツもあるのですが、場合によっては GPU を破損してしまう危険性がありました。
|
|
||||||
今回は電源を同期することは見送り、個別にスイッチを入れることで解決しました。
|
|
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
title: アップルパイ
|
|
||||||
date: 2017-04-23T05:48:00.000+00:00
|
|
||||||
categories:
|
|
||||||
- recipe
|
|
||||||
redirect_from: "/blog/2017/04/23/apple-pie"
|
|
||||||
image: "/uploads/apple-pie.jpg"
|
|
||||||
|
|
||||||
---
|
|
||||||

|
|
||||||
|
|
||||||
再現性の高いアップルパイの作り方です。材料は初出時に太字にしました。
|
|
||||||
|
|
||||||
# 注意事項
|
|
||||||
|
|
||||||
* レモン汁はポッカレモンで代用可
|
|
||||||
* 範囲指定されている値は 2 回目から好みで変化させること
|
|
||||||
* 焼きあがったらただちにパイ皿を取り除くこと。冷めてからではより困難になる
|
|
||||||
|
|
||||||
# 手順
|
|
||||||
|
|
||||||
1. **富士りんご(直径 8cm)**3 個の皮を剥いて 2-3 ㎠ に切って鍋に入れる
|
|
||||||
2. **砂糖**60g・**レモン汁**大さじ2 を鍋に入れて、汁気が無くなるまで中火で 10-15 分煮る
|
|
||||||
3. 火を止めて、**切れてるバター**2 個 (= 20g)・**シナモン**を好きなだけ混ぜる
|
|
||||||
4. **冷凍パイシート**を冷蔵庫に移動し 30 分おく
|
|
||||||
5. 18cm パイ皿 (パイシートに合う皿であれば何でも良い) にシートを敷き、よく密着させる
|
|
||||||
6. 鍋の中身の熱が扱える程度に取れたらパイ皿に流し込んで広げる
|
|
||||||
7. 残りのパイシートをカットして格子状にのせる
|
|
||||||
8. **卵黄**に**水・塩**を少し混ぜ卵液を作り、シートに塗る(塗るほど焼けやすくなる)
|
|
||||||
9. 余りのシートをパイの縁にのせて卵液を薄く塗る
|
|
||||||
10. 200℃ のオーブンで 40 分焼く(15 分で 180℃ に落とす; でないと表面だけ焼けて中は生焼けになる)
|
|
@ -1,29 +0,0 @@
|
|||||||
---
|
|
||||||
title: デザイナーとしてOSSに貢献できること
|
|
||||||
date: 2017-12-26T15:24:00.000+00:00
|
|
||||||
redirect_from: "/blog/2017/12/27/oss-for-designers"
|
|
||||||
|
|
||||||
---
|
|
||||||
GitHub で公開されている OSS にちょっとした Pull-request を送るのが私の趣味です。
|
|
||||||
そのような Pull-request の中にはコードだけでは無く、時にロゴデザインが含まれていることもあります。
|
|
||||||
|
|
||||||
## textlint
|
|
||||||
|
|
||||||
文章校正ツールである[textlint](https://textlint.github.io/)プロジェクトの例では、作者の azu 氏が[ロゴの募集をされている Issue](https://github.com/textlint/textlint/issues/56)を見かけ、[ちょっとしたアイディア](https://github.com/textlint/textlint/issues/56#issuecomment-160050653)をコメントしたことから始まりました。
|
|
||||||
|
|
||||||
その後、[より詳細な検討](https://github.com/textlint/media/pull/1)を重ねた結果、私がデザインした textlint のロゴは無事プロジェクトに受け入れられました。
|
|
||||||
|
|
||||||
このようにプロジェクトの作者が Issue 等でロゴを募集することは一般的であり、WebAssembly のロゴも[公募のコンペティション](https://github.com/WebAssembly/design/issues/112)で決まっています。
|
|
||||||
|
|
||||||
一方で自らロゴの提案をすることもあります。
|
|
||||||
|
|
||||||
## ⌘ 英かな
|
|
||||||
|
|
||||||
macOS のキーバインドを変更するアプリである[⌘ 英かな](https://ei-kana.appspot.com/)の例では、アイコンの Enhancement を思いつき、[Pull-request](https://github.com/iMasanari/cmd-eikana/pull/5)を送ったところ、本当にすぐにマージしてくれました。
|
|
||||||
|
|
||||||
他の方の例では、[Annict](https://github.com/annict/annict/issues/120)などがあります。
|
|
||||||
|
|
||||||
## 結論
|
|
||||||
|
|
||||||
以上のように、OSS コミュニティではコードだけでなくデザインワークに対してもオープンにコミットすることが出来ます。
|
|
||||||
デザイナーの皆さんが OSS への貢献に関わる機会がますます増えることを楽しみにしています(そして OSS 開発者の多くは、クールなロゴが提案されることを心から待ち望んでいます!)
|
|
@ -1,139 +0,0 @@
|
|||||||
---
|
|
||||||
title: 普段使いしているもの
|
|
||||||
date: 2018-03-29 22:33:00 +09:00
|
|
||||||
redirect_from: "/blog/2018/03/29/products-guide"
|
|
||||||
updated: 2018-08-03 09:00:00 +09:00
|
|
||||||
---
|
|
||||||
|
|
||||||
普段使いしているプロダクトを紹介する。
|
|
||||||
「20XX 年に買ってよかったもの」を毎年書くのではなく、この記事を定期的に更新しようと思う。
|
|
||||||
|
|
||||||
# ハードウェア
|
|
||||||
|
|
||||||
## [MacBook 12"](http://www.apple.com/jp/shop/buy-mac/macbook/%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89-512gb)
|
|
||||||
|
|
||||||
スペックを犠牲にして持ち運びに極振りした超コンパクトな MacBook。
|
|
||||||
|
|
||||||
## [EARIN M-2](https://earin.com)
|
|
||||||
|
|
||||||
EARIN M-1 から買い替えた。
|
|
||||||
コンパクトさに極振りした完全無線イヤホン。万人受けしないプロダクトではあるが、その特性を理解して使えば手放せないギアになる。
|
|
||||||
[レビュー記事](https://uechi.io/blog/2018/03/24/earin-m2-first-look)
|
|
||||||
|
|
||||||
## [Bose QuietControl 30](https://www.bose.co.jp/ja_jp/products/headphones/earphones/quietcontrol-30.html)
|
|
||||||
|
|
||||||
ノイズキャンセラーイヤホン QuietComfort 20 の後継機種。ワイヤレス化して、取り回しがよくなった。QuietControl の名の通り、ノイズキャンセリングの度合いを調整するボタンが搭載されている。しかし、実際のところ最大と最小しか使わないので、ボタンを押す手間がかえって不便に感じる。
|
|
||||||
ノイズ除去能は随一なので、旅行には必ず持っていく。
|
|
||||||
|
|
||||||
## [Apple Watch series 2 Nike+](http://www.apple.com/jp/shop/buy-watch/apple-watch-nike/%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%B0%E3%83%AC%E3%82%A4-%E3%82%A2%E3%83%AB%E3%83%9F%E3%83%8B%E3%82%A6%E3%83%A0-%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF-%E3%83%9C%E3%83%AB%E3%83%88-%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%84%E3%83%90%E3%83%B3%E3%83%89?preSelect=false&product=MP0J2J/A&step=detail#)
|
|
||||||
|
|
||||||
最終的に以下の機能しか使わなくなった。
|
|
||||||
|
|
||||||
- 時計
|
|
||||||
- タイマー
|
|
||||||
- 運動中の心拍数や歩数の計測
|
|
||||||
- Suica
|
|
||||||
- メッセージの閲覧・返信
|
|
||||||
|
|
||||||
## [M-Audio Keystation 88](http://m-audio.com/products/view/keystation-88)
|
|
||||||
|
|
||||||
88 鍵 MIDI キーボード。Oxygen 88 が壊れたので同じメーカーの別製品に買い替えた。Oxygen 88 の重さ(21kg)に懲り、持ち運びが容易な鍵盤を選んだ。
|
|
||||||
|
|
||||||
## [BALMUDA The Pot](https://www.balmuda.com/jp/pot/)
|
|
||||||
|
|
||||||
トースターで有名な BALMUDA が 11 月に出した電気ケトル。お茶やコーヒーを飲むときしか使わないので 0.6L でも十分だと感じた。注ぎ口の切れが良く、気に入っている。
|
|
||||||
|
|
||||||
最近は Stagg EKG のような温度調整機能付きケトルが気になっている。
|
|
||||||
|
|
||||||
## [Nature Remo](https://nature.global/)
|
|
||||||
|
|
||||||
スマートな赤外線リモコン。
|
|
||||||
Google Home や Alexa、IFTTT と連携して使っている。
|
|
||||||
|
|
||||||
## [Knirps Big Duomatic Safety](http://www.knirps.jp/product.html)
|
|
||||||
|
|
||||||
知りうる中で最も大きなサイズの自動開閉折りたたみ傘。コンビニで売っている傘よりも大きいので安心感が違う。
|
|
||||||
|
|
||||||
## [Shure MOTIV MV88](https://www.shure.co.jp/go/motiv-mic/jp/mv88/)
|
|
||||||
|
|
||||||
非常にコンパクトなコンデンサーマイク。Lightning 端子を備えており、iPhone/iPad に繋いで録音ができる。
|
|
||||||
|
|
||||||
## [LEZYNE CNC Floor Drive ABS2](http://www.wiggle.jp/lezyne-cnc-floor-drive-abs2-%E3%83%95%E3%83%AD%E3%82%A2%E3%83%9D%E3%83%B3%E3%83%97/)
|
|
||||||
|
|
||||||
デザインと機能性が両立した自転車の空気入れ。仏式と米式バルブに対応している。回転するねじ込みノズルが特徴的で、BROMPTON のような小口径タイヤを持つ自転車でも問題なく使える。
|
|
||||||
|
|
||||||
## [iPad Pro 10.5 インチ](http://www.apple.com/jp/ipad-pro/)
|
|
||||||
|
|
||||||
[Apple Pencil](http://www.apple.com/jp/shop/product/MK0C2J/A/ipad-pro%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEapple-pencil)との組み合わせがとても良い。ノートを書いたり、絵を描くのに使っている。
|
|
||||||
|
|
||||||
スタンドは、Twelve South の[Compass 2](http://www.apple.com/jp/shop/product/HF022ZM/B/twelve-south-compass-2-stand-for-ipad)を使っている。折りたたむと Apple Pencil2 本分くらいに小さくなる。
|
|
||||||
|
|
||||||
# サブスクリプションサービス
|
|
||||||
|
|
||||||
## G Suite
|
|
||||||
|
|
||||||
月 540 円。
|
|
||||||
好きなドメインで Google サービスを利用出来るので使っている。Gmail にも y@uechi.io でログイン出来る。
|
|
||||||
|
|
||||||
## Apple Music
|
|
||||||
|
|
||||||
学割で月 480 円。普段の音楽ソースはこれに統一している。
|
|
||||||
|
|
||||||
## iTunes Match
|
|
||||||
|
|
||||||
CD からインポートした曲をクラウド同期するために有効化。
|
|
||||||
|
|
||||||
## iCloud Drive
|
|
||||||
|
|
||||||
写真やクラウド同期のために容量を購入した。
|
|
||||||
|
|
||||||
## Dropbox Pro
|
|
||||||
|
|
||||||
あらゆる作業データを保存しているため容量を増やした。
|
|
||||||
|
|
||||||
## Amazon Student
|
|
||||||
|
|
||||||
Prime の学割版。年間 1400 円。
|
|
||||||
|
|
||||||
## Sketch
|
|
||||||
|
|
||||||
コンピューター 1 台ごとに課金されるため非常に割高。やめたい。
|
|
||||||
|
|
||||||
## Adobe Creative Cloud
|
|
||||||
|
|
||||||
学割で月 3000 円。
|
|
||||||
|
|
||||||
## Apple Developer Program
|
|
||||||
|
|
||||||
税金。
|
|
||||||
|
|
||||||
## MoneyForward
|
|
||||||
|
|
||||||
オンライン家計簿。電子決済縛りプレイと相性が良い。
|
|
||||||
|
|
||||||
## [Namecheap](https://www.namecheap.com/)
|
|
||||||
|
|
||||||
ドメインレジストラ。お名前.com から iwantmyname、そして Namecheap へと移行してきた。この手のサービスにしては良くデザインされており、使いやすい。
|
|
||||||
|
|
||||||
一度転送でトラブルがあり、カスタマーサポートのお世話になったことがあったが、しっかりとした仕事をしてくれた。
|
|
||||||
|
|
||||||
## [Netflix](https://www.netflix.com/jp/)
|
|
||||||
|
|
||||||
既存コンテンツの配信だけに留まらず、オリジナル作品の制作にも意欲的に取り組んでいる。
|
|
||||||
|
|
||||||
観たい作品が無くなったら購読をキャンセルし、必要に応じて再購読している。
|
|
||||||
|
|
||||||
## 珈琲きゃろっと
|
|
||||||
|
|
||||||
珈琲豆の定期宅配サービス。配送日の直前に焙煎をするため豆が新鮮なのが特徴。他にも土井珈琲が同様のサービスを提供しているので比べてみて自分に合った方を選ぼう。
|
|
||||||
|
|
||||||
## TastyTable
|
|
||||||
|
|
||||||
使い切りの食材とレシピを定期的に、または都度注文で宅配してくれるサービス。
|
|
||||||
普段なら絶対に作らないような献立が提案されてくるので、週末に普段とは一風変わった食事を楽しみたい人にオススメのサービス。
|
|
||||||
|
|
||||||
## TENTAL
|
|
||||||
|
|
||||||
テントや焚き火グッズのようなキャンプ用品をレンタル出来るサービス。
|
|
||||||
テントは高価な上にほとんど買い換えないタイプの製品なので、このようなサービスを通じて様々な種類のテントを借りて実地で試して、眼を肥やしてから購入した方が良いと感じた。
|
|
||||||
3 シーズン用を買い揃えて、やる頻度の低い冬用の装備だけレンタルするという戦術もある。
|
|
@ -1,83 +0,0 @@
|
|||||||
---
|
|
||||||
title: 生活の自動化
|
|
||||||
date: 2018-08-05 00:00:00 +09:00
|
|
||||||
redirect_from: "/blog/2018/08/05/life-automation"
|
|
||||||
---
|
|
||||||
|
|
||||||
生活にオートメーションを上手く取り入れ、本当にやりたいことや、やるべきことに集中できる環境をつくろう。
|
|
||||||
|
|
||||||
# 洗濯の自動化
|
|
||||||
|
|
||||||
Panasonic のドラム洗濯乾燥機を使っている。威力を最大限に享受するため、タンブラー乾燥向けの普段着を揃えておくことも重要だ。
|
|
||||||
洗剤は粉と液体とが一体化したジェルボール洗剤が便利。ドラムの底にひとつ置くだけでよく、計量する必要がない。
|
|
||||||
|
|
||||||
# 食器洗いの自動化
|
|
||||||
|
|
||||||
Panasonic NC-TCR2 という一人暮らし用のコンパクト食洗乾燥機が便利。
|
|
||||||
洗濯機と同じく食洗機専用のジェルボール洗剤を使えば計量する手間を省ける。
|
|
||||||
|
|
||||||
# 照明の自動化
|
|
||||||
|
|
||||||
Hue はインターネット経由で明るさや色相をコントロールすることができる電球である。
|
|
||||||
|
|
||||||
- 「家から離れたら消灯」
|
|
||||||
- 「家に近付いたら点灯」
|
|
||||||
- 「日が暮れたら暖色系に切り替える」
|
|
||||||
- 「23 時になったら消灯」
|
|
||||||
|
|
||||||
など多様なルールを作ることができる。
|
|
||||||
家では外の明るさに合わせて照明の明るさを調整して、概日リズムが崩れにくいようにルールを決めている。
|
|
||||||
|
|
||||||
# 空調の自動化
|
|
||||||
|
|
||||||
Nature Remo でエアコンの操作を自動化した。
|
|
||||||
|
|
||||||
- 「湿度が高ければドライに変更」
|
|
||||||
- 「家から離れたら電源オフ」
|
|
||||||
- 「朝になったら冷房へ切り替え」
|
|
||||||
|
|
||||||
など多様なルールを作ることができる。
|
|
||||||
|
|
||||||
Nature Remo 自体はエアコン専用ではなく、赤外線で操作出来るデバイスであればなんでも操作できる。家ではテレビもこれで操作している。
|
|
||||||
|
|
||||||
ちなみに[Nature Remo を NodeJS で操作することができるライブラリ](https://github.com/uetchy/nature-remo)を作ったので、是非使ってみて欲しい。ライブラリ経由で温度・湿度・明度のセンサー値を取得したり、指定したモードにエアコンを切り替えることができる。
|
|
||||||
|
|
||||||
# 自動施錠・自動開錠
|
|
||||||
|
|
||||||
Qrio Lock をドアに取り付けることでオートロックとオートアンロックができるようになった。
|
|
||||||
|
|
||||||
# 睡眠記録の自動化
|
|
||||||
|
|
||||||
Withings 改め Nokia の Sleep を使っている。
|
|
||||||
睡眠を計測する際、身体にウェアラブルデバイスを身につける必要がないという点で、Nokia Sleep は Apple Watch や Fitbit よりも優れている。
|
|
||||||
|
|
||||||
機能としては、入眠・起床検知、心拍数記録、睡眠深度解析、いびき検出、IFTTT 連携がある。
|
|
||||||
|
|
||||||
# 体重記録の自動化
|
|
||||||
|
|
||||||
Withings の Wi-Fi Scale を使っている。体重と体脂肪率、心拍数、BMI を Wi-Fi 経由でクラウドに自動記録し、Apple Health などで推移を確認できる。
|
|
||||||
|
|
||||||
Wi-Fi Scale には CO2 センサーもついており、部屋の二酸化炭素濃度を記録してくれる。
|
|
||||||
|
|
||||||
# コーヒー豆のサブスクリプション
|
|
||||||
|
|
||||||
珈琲きゃろっとのサブスクリプションを利用している。
|
|
||||||
|
|
||||||
# オンラインスーパー
|
|
||||||
|
|
||||||
イトーヨーカドーのオンラインスーパーを使っている。お気に入りリストへ牛乳、オレンジ、ベーコン、卵など毎回買うものを登録しておくことで、慣れれば 5 分程度で注文が完了する。あとは指定した時間に家へ商品を届けてくれる。
|
|
||||||
|
|
||||||
# 自動家計簿
|
|
||||||
|
|
||||||
MoneyForward を使っている。支出を自動で食費、趣味、日用品などに仕分けてくれる。
|
|
||||||
無現金縛りプレイと相性が良い。
|
|
||||||
|
|
||||||
# 自炊の効率化
|
|
||||||
|
|
||||||
最近 COMP で食事を置き換え始めた。まだ評価は出来ないが少なくとも味は悪くなく(薄いきな粉のような味)、不足しがちなビタミンや鉄分を補える点では良い製品だと思う。
|
|
||||||
|
|
||||||
# 気になる製品
|
|
||||||
|
|
||||||
## ルンバ
|
|
||||||
|
|
||||||
ルンバは気になるが、絨毯を取り除くわけにもいかないので二の足を踏んでいる。ルンバについては[KainokiKaede's diary](http://kainokikaede.hatenablog.com/entry/2018/07/24/185452)の素晴らしい記事を読んで欲しい。
|
|
@ -1,36 +0,0 @@
|
|||||||
---
|
|
||||||
date: 2019-10-25 19:49:01 +0900
|
|
||||||
title: Bose Noise Cancelling Headphones 700レビュー
|
|
||||||
---
|
|
||||||
Bose Noise Cancelling Headphones 700を使い始めて一ヶ月が経ったので、現時点での印象をまとめる。
|
|
||||||
|
|
||||||
## Pros
|
|
||||||
|
|
||||||
* ノイズキャンセリング性能の高さ
|
|
||||||
* デザイン
|
|
||||||
* 8台までのマルチペアリング
|
|
||||||
* 2台までのマルチポイント
|
|
||||||
* タッチコントロール
|
|
||||||
* 3段階ノイズキャンセリングレベルコントロール
|
|
||||||
* 10段階の内3つをあらかじめ選んでおき、ボタンを押してローテーションできる
|
|
||||||
* QC30は1段階ずつしか変更出来ずボタンを連打させられる仕様だったので、大きな改善
|
|
||||||
* バッテリーの持ちの良さ
|
|
||||||
* 15時間くらいは動く
|
|
||||||
* 有線対応
|
|
||||||
* 有線時もANCが働く
|
|
||||||
* USB-C充電対応
|
|
||||||
|
|
||||||
## Cons
|
|
||||||
|
|
||||||
* マルチポイント時の混線ノイズ
|
|
||||||
* 音楽再生中にもう一方のデバイスで何か通知音が鳴るとストリームに対して「プツプツ」ノイズが入る
|
|
||||||
* システムサウンドが大きすぎる(変更不可)
|
|
||||||
* 消耗部品の多さ
|
|
||||||
* ヒンジ部分はケースに仕舞う度に動かなさいといけないため消耗が心配
|
|
||||||
* 可動部が多いほど故障率は上がる
|
|
||||||
* 本体側での接続先選択が不可能
|
|
||||||
* QC30では出来ていた本体側のボタンで接続先を選択できる機能が無くなっていた
|
|
||||||
* ボタン配置のミス
|
|
||||||
* ボタンが手に触れやすい位置にあるため、ヘッドホンを外す度に間違って押してしまう
|
|
||||||
* ストリーム元とボタンの送信先が異なるバグ
|
|
||||||
* マルチポイント接続で一方のデバイスで音楽を流している際に、再生ボタンの信号が音楽を流していない方のデバイスに送信されてしまうバグがある
|
|
223
_sass/post.scss
223
_sass/post.scss
@ -1,223 +0,0 @@
|
|||||||
.article-list__item {
|
|
||||||
margin: 0 0 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.article-list__item__title {
|
|
||||||
margin: 0 0 2px;
|
|
||||||
font-size: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.article-list__item__pubdate {
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.article-list__item__excerpt {
|
|
||||||
margin-top: 5px;
|
|
||||||
font-size: 20px;
|
|
||||||
color: var(--tone);
|
|
||||||
line-height: 1.6em;
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.article-list__item__button {
|
|
||||||
border: 1px solid var(--tone);
|
|
||||||
border-radius: 3px;
|
|
||||||
color: var(--tone);
|
|
||||||
font-family: 'Open Sans', sans-serif;
|
|
||||||
font-size: 14px;
|
|
||||||
display: inline-block;
|
|
||||||
margin: 10px 0;
|
|
||||||
padding: 10px 17px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: var(--tone);
|
|
||||||
color: var(--background);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
display: block;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 17px;
|
|
||||||
padding: 15px;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: var(--background);
|
|
||||||
color: var(--tone);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.article {
|
|
||||||
margin-bottom: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.article__social {
|
|
||||||
margin-top: 60px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.article__social > * {
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.article__metadata {
|
|
||||||
margin: 40px 0 40px;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin: 25px 0 25px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.article__title {
|
|
||||||
font-size: 70px;
|
|
||||||
letter-spacing: -0.5px;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
font-size: 40px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.article__pubdate {
|
|
||||||
color: var(--tone);
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: normal;
|
|
||||||
font-family: sans-serif;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
border: 1px solid var(--tone);
|
|
||||||
display: inline-block;
|
|
||||||
padding: 5px 20px;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
font-size: 10pt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.article__content {
|
|
||||||
p {
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: normal;
|
|
||||||
line-height: 1.666em;
|
|
||||||
margin: 25px 0;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
font-size: 20px;
|
|
||||||
line-height: 1.6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: mediumslateblue;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin: 70px 0 0px;
|
|
||||||
font-size: 2.5em;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin: 30px 0 15px;
|
|
||||||
font-size: 1.7em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
margin: 35px 0 15px;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.7em;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin: 20px 0 15px;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.5em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin: 25px 0 15px;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.3em;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin: 15px 0 15px;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.4em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
margin: 25px 0 15px;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin: 15px 0 15px;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
border-left: 5px solid var(--accent);
|
|
||||||
padding-left: 20px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pay
|
|
||||||
#pay {
|
|
||||||
font-family: sans-serif;
|
|
||||||
|
|
||||||
.monospace {
|
|
||||||
font-family: monospace;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 0 5px;
|
|
||||||
font-size: 12pt;
|
|
||||||
user-select: all;
|
|
||||||
-webkit-user-select: all;
|
|
||||||
-moz-user-select: all;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
padding: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.button {
|
|
||||||
margin: 10px 0;
|
|
||||||
padding: 20px;
|
|
||||||
display: block;
|
|
||||||
background: var(--text);
|
|
||||||
color: var(--background);
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
section {
|
|
||||||
margin: 50px 0;
|
|
||||||
}
|
|
||||||
}
|
|
171
css/index.scss
171
css/index.scss
@ -1,171 +0,0 @@
|
|||||||
---
|
|
||||||
---
|
|
||||||
|
|
||||||
@import url("https://fonts.googleapis.com/css?family=PT+Sans:400,700");
|
|
||||||
|
|
||||||
$break-small: 500px;
|
|
||||||
$break-large: 840px;
|
|
||||||
|
|
||||||
:root {
|
|
||||||
--background: #fff;
|
|
||||||
--text: #000;
|
|
||||||
--accent: #4f33e8;
|
|
||||||
--highlight: #f6f6f6;
|
|
||||||
--tone: #989898;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--background: #261e3a;
|
|
||||||
--text: #e2dfea;
|
|
||||||
--accent: #7033e8;
|
|
||||||
--highlight: #140d25;
|
|
||||||
--tone: #989898;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
width: 900px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 0 20px;
|
|
||||||
font-family: "PT Sans", "Hiragino Sans", "Hiragino Mincho ProN", serif;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
text-rendering: optimizeLegibility;
|
|
||||||
font-feature-settings: "kern", "palt", "pwid";
|
|
||||||
-webkit-font-feature-settings: "kern", "palt", "pwid";
|
|
||||||
-moz-font-feature-settings: "kern", "palt", "pwid";
|
|
||||||
-moz-font-feature-settings: "kern=1", "palt", "pwid";
|
|
||||||
background: var(--background);
|
|
||||||
color: var(--text);
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-large) {
|
|
||||||
width: auto;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// MathJax
|
|
||||||
#MathJax_Message {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Highlight.js
|
|
||||||
.hljs {
|
|
||||||
border-radius: 3px;
|
|
||||||
// font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
||||||
// font-size: 14px;
|
|
||||||
background: #0e0127 !important;
|
|
||||||
padding: 12px 18px !important;
|
|
||||||
line-height: 1.6em !important;
|
|
||||||
}
|
|
||||||
code {
|
|
||||||
padding: 0 12px;
|
|
||||||
}
|
|
||||||
p code {
|
|
||||||
padding: 3px 10px;
|
|
||||||
background: var(--highlight);
|
|
||||||
border-radius: 3px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
a:hover,
|
|
||||||
a:active,
|
|
||||||
a:link,
|
|
||||||
a:visited {
|
|
||||||
color: var(--text);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4,
|
|
||||||
p {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
line-height: 1.333em;
|
|
||||||
}
|
|
||||||
hr {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: 1px;
|
|
||||||
background-color: var(--highlight);
|
|
||||||
border: 0;
|
|
||||||
margin: 40px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 50px;
|
|
||||||
padding: 15px 0;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin-top: 0px;
|
|
||||||
justify-content: center;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
margin: 10px 0 10px;
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
filter: invert(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu {
|
|
||||||
list-style: none;
|
|
||||||
margin-left: 40px;
|
|
||||||
padding: 8px 0;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
.menu__item:not(:last-child) {
|
|
||||||
margin-right: 30px;
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
padding: 0;
|
|
||||||
margin: 5px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.metro {
|
|
||||||
// text-align: center;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
margin: 75px 0 100px;
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
filter: invert(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu {
|
|
||||||
margin: 15px 0 0 0;
|
|
||||||
padding: 0;
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
list-style: none;
|
|
||||||
.menu__item:not(:last-child) {
|
|
||||||
margin-bottom: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: $break-small) {
|
|
||||||
margin: 40px 0 40px;
|
|
||||||
.menu {
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "./post";
|
|
30
docker-compose.production.yml
Normal file
30
docker-compose.production.yml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
version: "3.0"
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: u8.pub/uetchy/uechi.io
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: uechiio
|
||||||
|
environment:
|
||||||
|
VIRTUAL_HOST: uechi.io,www.uechi.io
|
||||||
|
LETSENCRYPT_HOST: uechi.io,www.uechi.io
|
||||||
|
volumes:
|
||||||
|
- "./data:/var/www/html/_:ro"
|
||||||
|
labels:
|
||||||
|
com.centurylinklabs.watchtower.enable: "true"
|
||||||
|
|
||||||
|
cron:
|
||||||
|
image: u8.pub/uetchy/uechi.io
|
||||||
|
command: /usr/sbin/crond -d 8 -f
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: uechiio-cron
|
||||||
|
volumes:
|
||||||
|
- "./data:/var/www/html/_"
|
||||||
|
- "./periodic/daily:/etc/periodic/daily:ro"
|
||||||
|
labels:
|
||||||
|
com.centurylinklabs.watchtower.enable: "true"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: webproxy
|
||||||
|
external: true
|
10
docker-compose.yml
Normal file
10
docker-compose.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
version: "3.0"
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: u8.pub/uetchy/uechi.io
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
volumes:
|
||||||
|
- "./data:/var/www/html/_:ro"
|
90
nginx.conf
Normal file
90
nginx.conf
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
error_log /var/log/nginx/error.log warn;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
server {
|
||||||
|
server_name uechi.io;
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
root /var/www/html;
|
||||||
|
error_page 404 /404.html;
|
||||||
|
|
||||||
|
# Matix/Synapse
|
||||||
|
# https://matrix-org.github.io/synapse/develop/reverse_proxy.html
|
||||||
|
# https://matrix-org.github.io/synapse/latest/setup/installation.html#client-well-known-uri
|
||||||
|
location ~ ^(/_matrix|/_synapse/client) {
|
||||||
|
# note: do not add a path (even a single /) after the port in `proxy_pass`,
|
||||||
|
# otherwise nginx will canonicalise the URI and cause signature verification
|
||||||
|
# errors.
|
||||||
|
|
||||||
|
# https://stackoverflow.com/a/54719226/2276646
|
||||||
|
resolver 127.0.0.11 valid=30s;
|
||||||
|
set $upstream_synapse synapse;
|
||||||
|
proxy_pass http://$upstream_synapse:8008;
|
||||||
|
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
|
||||||
|
# Nginx by default only allows file uploads up to 1M in size
|
||||||
|
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
|
||||||
|
client_max_body_size 50M;
|
||||||
|
}
|
||||||
|
location /.well-known/matrix/client {
|
||||||
|
return 200 '{"m.homeserver": {"base_url": "https://matrix.uechi.io"}}';
|
||||||
|
default_type application/json;
|
||||||
|
add_header Access-Control-Allow-Origin *;
|
||||||
|
}
|
||||||
|
location /.well-known/matrix/server {
|
||||||
|
return 200 '{"m.server": "matrix.uechi.io:443"}';
|
||||||
|
default_type application/json;
|
||||||
|
add_header Access-Control-Allow-Origin *;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /404.html {
|
||||||
|
internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /robots.txt {
|
||||||
|
allow all;
|
||||||
|
log_not_found off;
|
||||||
|
access_log off;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
index index.html;
|
||||||
|
try_files $uri $uri.html $uri/index.html @fallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = / {
|
||||||
|
if ($http_user_agent ~ curl) {
|
||||||
|
rewrite / /TERMINAL last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
location @fallback {
|
||||||
|
root /var/www/html/_;
|
||||||
|
try_files $uri $uri.html $uri/index.html =404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name www.uechi.io;
|
||||||
|
return 301 $scheme://uechi.io$request_uri;
|
||||||
|
}
|
||||||
|
}
|
10491
package-lock.json
generated
Normal file
10491
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
37
package.json
37
package.json
@ -1,19 +1,38 @@
|
|||||||
{
|
{
|
||||||
"name": "uechi.io",
|
"name": "hexo-site",
|
||||||
|
"version": "0.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"fix-typo": "textlint _posts/*.md _pages/*.md --fix --dry-run -f diff",
|
"build": "hexo generate",
|
||||||
"build": "bundle exec jekyll build",
|
"clean": "hexo clean",
|
||||||
"start": "bundle exec jekyll serve --host 0.0.0.0 --port 4000 --baseurl '' --force_polling --drafts --unpublished --incremental",
|
"deploy": "hexo deploy",
|
||||||
"test": "textlint _posts/*.md _pages/*.md -f pretty-error"
|
"start": "npm run clean && hexo server --debug",
|
||||||
|
"test": "lint-staged"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"hexo": "^6.3.0",
|
||||||
|
"hexo-excerpt": "^1.3.0",
|
||||||
|
"hexo-feed": "^1.1.1",
|
||||||
|
"hexo-filter-mathjax": "^0.9.0",
|
||||||
|
"hexo-generator-archive": "^2.0.0",
|
||||||
|
"hexo-generator-category": "^2.0.0",
|
||||||
|
"hexo-generator-index": "^3.0.0",
|
||||||
|
"hexo-generator-tag": "^2.0.0",
|
||||||
|
"hexo-renderer-dartsass": "^0.1.2",
|
||||||
|
"hexo-renderer-ejs": "^2.0.0",
|
||||||
|
"hexo-renderer-pandoc": "^0.3.1",
|
||||||
|
"hexo-server": "^3.0.0",
|
||||||
|
"hexo-simple-toc": "file:plugins/hexo-simple-toc",
|
||||||
|
"js-yaml": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"textlint": "^11.7.6",
|
"textlint": "^12.2.4",
|
||||||
"textlint-filter-rule-whitelist": "^2.0.0",
|
"textlint-filter-rule-whitelist": "^2.0.0",
|
||||||
"textlint-rule-common-misspellings": "^1.0.1",
|
"textlint-rule-common-misspellings": "^1.0.1",
|
||||||
"textlint-rule-max-ten": "^2.0.4",
|
|
||||||
"textlint-rule-no-dropping-the-ra": "^1.1.3",
|
|
||||||
"textlint-rule-no-start-duplicated-conjunction": "^2.0.2",
|
"textlint-rule-no-start-duplicated-conjunction": "^2.0.2",
|
||||||
"textlint-rule-preset-japanese": "^5.0.0"
|
"textlint-rule-preset-japanese": "^7.0.0"
|
||||||
|
},
|
||||||
|
"hexo": {
|
||||||
|
"version": "6.3.0"
|
||||||
},
|
},
|
||||||
"private": true
|
"private": true
|
||||||
}
|
}
|
||||||
|
11
periodic/daily/280blocker
Executable file
11
periodic/daily/280blocker
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "Updating 280blocker filter..."
|
||||||
|
|
||||||
|
ROOT_DIR="/var/www/html/_"
|
||||||
|
FILTER_PATH="$ROOT_DIR/280blocker.txt"
|
||||||
|
DOMAIN_PATH="$ROOT_DIR/280blocker_domain.txt"
|
||||||
|
DATE=$(date +"%Y%m")
|
||||||
|
|
||||||
|
curl -sL "https://280blocker.net/files/280blocker_adblock_${DATE}.txt" -o "$FILTER_PATH"
|
||||||
|
curl -sL "https://280blocker.net/files/280blocker_domain_${DATE}.txt" -o "$DOMAIN_PATH"
|
144
plugins/hexo-simple-toc/.gitignore
vendored
Normal file
144
plugins/hexo-simple-toc/.gitignore
vendored
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/node
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node
|
||||||
|
|
||||||
|
### Node ###
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# Snowpack dependency directory (https://snowpack.dev/)
|
||||||
|
web_modules/
|
||||||
|
|
||||||
|
# TypeScript cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional stylelint cache
|
||||||
|
.stylelintcache
|
||||||
|
|
||||||
|
# Microbundle cache
|
||||||
|
.rpt2_cache/
|
||||||
|
.rts2_cache_cjs/
|
||||||
|
.rts2_cache_es/
|
||||||
|
.rts2_cache_umd/
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variable files
|
||||||
|
.env
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/)
|
||||||
|
.cache
|
||||||
|
.parcel-cache
|
||||||
|
|
||||||
|
# Next.js build output
|
||||||
|
.next
|
||||||
|
out
|
||||||
|
|
||||||
|
# Nuxt.js build / generate output
|
||||||
|
.nuxt
|
||||||
|
dist
|
||||||
|
|
||||||
|
# Gatsby files
|
||||||
|
.cache/
|
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||||
|
# public
|
||||||
|
|
||||||
|
# vuepress build output
|
||||||
|
.vuepress/dist
|
||||||
|
|
||||||
|
# vuepress v2.x temp and cache directory
|
||||||
|
.temp
|
||||||
|
|
||||||
|
# Docusaurus cache and generated files
|
||||||
|
.docusaurus
|
||||||
|
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/
|
||||||
|
|
||||||
|
# FuseBox cache
|
||||||
|
.fusebox/
|
||||||
|
|
||||||
|
# DynamoDB Local files
|
||||||
|
.dynamodb/
|
||||||
|
|
||||||
|
# TernJS port file
|
||||||
|
.tern-port
|
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
|
.vscode-test
|
||||||
|
|
||||||
|
# yarn v2
|
||||||
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
|
.yarn/build-state.yml
|
||||||
|
.yarn/install-state.gz
|
||||||
|
.pnp.*
|
||||||
|
|
||||||
|
### Node Patch ###
|
||||||
|
# Serverless Webpack directories
|
||||||
|
.webpack/
|
||||||
|
|
||||||
|
# Optional stylelint cache
|
||||||
|
|
||||||
|
# SvelteKit build / generate output
|
||||||
|
.svelte-kit
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/node
|
21
plugins/hexo-simple-toc/LICENSE
Normal file
21
plugins/hexo-simple-toc/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 uetchy
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
3
plugins/hexo-simple-toc/README.md
Normal file
3
plugins/hexo-simple-toc/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# hexo-simple-toc
|
||||||
|
|
||||||
|
This plugin aggregates Hexo native `id` from rendered HTML's headings and generate ToC from it. No `markdown-toc` dependency required.
|
4
plugins/hexo-simple-toc/index.js
Normal file
4
plugins/hexo-simple-toc/index.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/* globals hexo: true */
|
||||||
|
|
||||||
|
const toc = require("./toc");
|
||||||
|
hexo.extend.filter.register("after_post_render", toc.after_post_render);
|
1045
plugins/hexo-simple-toc/package-lock.json
generated
Normal file
1045
plugins/hexo-simple-toc/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
28
plugins/hexo-simple-toc/package.json
Normal file
28
plugins/hexo-simple-toc/package.json
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"name": "hexo-simple-toc",
|
||||||
|
"description": "Lightweight ToC generator for Hexo",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": "uetchy <y@uechi.io>",
|
||||||
|
"scripts": {},
|
||||||
|
"main": "index.js",
|
||||||
|
"files": [
|
||||||
|
"index.js",
|
||||||
|
"handler.js"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"jsdom": "^20.0.3"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/uetchy/hexo-simple-toc",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/uetchy/hexo-simple-toc.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/uetchy/hexo-simple-toc/issues"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"keywords": [
|
||||||
|
"hexo",
|
||||||
|
"toc"
|
||||||
|
]
|
||||||
|
}
|
48
plugins/hexo-simple-toc/toc.js
Normal file
48
plugins/hexo-simple-toc/toc.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
const JSDOM = require("jsdom").JSDOM;
|
||||||
|
|
||||||
|
function generateToC(html) {
|
||||||
|
const dom = JSDOM.fragment(html);
|
||||||
|
|
||||||
|
const headings = Array.from(dom.querySelectorAll("h1, h2, h3, h4, h5, h6"))
|
||||||
|
// Filter headings with ids
|
||||||
|
.filter((el) => el && el.id)
|
||||||
|
// {id: string, content: string|null, depth: number}
|
||||||
|
.map((el) => ({
|
||||||
|
id: el.id,
|
||||||
|
content: el.textContent,
|
||||||
|
depth: Number(el.nodeName.replace("H", "")), // H1 -> 1
|
||||||
|
}));
|
||||||
|
|
||||||
|
let pos = 0;
|
||||||
|
function genToC(arr, lastDepth) {
|
||||||
|
const stack = [];
|
||||||
|
while (pos < arr.length) {
|
||||||
|
const { depth, id, content } = arr[pos];
|
||||||
|
|
||||||
|
if (depth < lastDepth) {
|
||||||
|
// unwind
|
||||||
|
pos -= 1;
|
||||||
|
break;
|
||||||
|
} else if (depth > lastDepth) {
|
||||||
|
// nested ToC
|
||||||
|
stack.push(stack.pop() + genToC(arr, depth));
|
||||||
|
} else {
|
||||||
|
// same depth
|
||||||
|
stack.push(`<a href="#${id}">${content}</a>`);
|
||||||
|
}
|
||||||
|
|
||||||
|
pos += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "<ul>" + stack.map((s) => `<li>${s}</li>`).join("") + "</ul>";
|
||||||
|
}
|
||||||
|
|
||||||
|
return genToC(headings, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.after_post_render = function (data) {
|
||||||
|
data.content = data.content.replace("<!-- toc -->", () =>
|
||||||
|
generateToC(data.content)
|
||||||
|
);
|
||||||
|
return data;
|
||||||
|
};
|
4
scaffolds/draft.md
Normal file
4
scaffolds/draft.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: {{ title }}
|
||||||
|
tags:
|
||||||
|
---
|
3
scaffolds/page.md
Normal file
3
scaffolds/page.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
title: {{ title }}
|
||||||
|
---
|
5
scaffolds/post.md
Normal file
5
scaffolds/post.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: {{ title }}
|
||||||
|
date: {{ date }}
|
||||||
|
tags:
|
||||||
|
---
|
7
source/404.md
Normal file
7
source/404.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
title: Page Not Found
|
||||||
|
permalink: "/404"
|
||||||
|
---
|
||||||
|
|
||||||
|
> `404`
|
||||||
|
> This page could not be found
|
8
source/TERMINAL
Normal file
8
source/TERMINAL
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
░█░█░█▀▀░█▀▀░█░█░▀█▀░░░░▀█▀░█▀█
|
||||||
|
░█░█░█▀▀░█░░░█▀█░░█░░░░░░█░░█░█
|
||||||
|
░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░▀░░▀▀▀░▀▀▀
|
||||||
|
|
||||||
|
GitHub: https://github.com/uetchy
|
||||||
|
Twitter: https://twitter.com/uechz
|
||||||
|
Wallpaper: https://uechi.io/wallpaper
|
@ -4,54 +4,46 @@ date: 2013-07-07 09:00:00 +09:00
|
|||||||
redirect_from: "/blog/2013/07/07/install-julius-with-homebrew"
|
redirect_from: "/blog/2013/07/07/install-julius-with-homebrew"
|
||||||
---
|
---
|
||||||
|
|
||||||
Homebrew を使って macOS に音声解析エンジン Julius をインストールします。
|
Homebrew を使って macOS に音声解析エンジン Julius をインストールする。
|
||||||
|
|
||||||
# 前提
|
# 前提
|
||||||
|
|
||||||
OS X 用のパッケージ管理ツール Homebrew がインストールされている必要がある。
|
OS X 用のパッケージ管理ツール Homebrew がインストールされている必要がある。
|
||||||
|
|
||||||
インストール方法
|
インストール方法は[こちら](http://www.engineyard.co.jp/blog/2012/homebrew-os-xs-missing-package-manager/)を参照。
|
||||||
は[こちら](http://www.engineyard.co.jp/blog/2012/homebrew-os-xs-missing-package-manager/)を
|
|
||||||
参照。
|
|
||||||
|
|
||||||
# インストール
|
# インストール
|
||||||
|
|
||||||
デフォルトの Homebrew リポジトリに Julius は含まれていないので
|
デフォルトの Homebrew リポジトリに Julius は含まれていないので、[homebrew-nlp](https://github.com/uetchy/homebrew-nlp) を tap する。
|
||||||
、[homebrew-nlp](https://github.com/uetchy/homebrew-nlp) を tap する。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ brew tap uetchy/nlp
|
brew tap uetchy/nlp
|
||||||
```
|
```
|
||||||
|
|
||||||
Tap し終わったら、`julius`と`julius-dictation-kit`をインストールする。
|
Tap し終わったら、`julius`と`julius-dictation-kit`をインストールする。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ brew install julius julius-dictation-kit
|
brew install julius julius-dictation-kit
|
||||||
```
|
```
|
||||||
|
|
||||||
これで Julius と Julius ディクテーションキットがインストールされた。
|
これで Julius と Julius ディクテーションキットがインストールされた。
|
||||||
|
|
||||||
ディクテーションキットの場所は `brew --prefix julius-dictation-kit` コマンドで調
|
ディクテーションキットの場所は `brew --prefix julius-dictation-kit` コマンドで調べられる。
|
||||||
べられる。
|
|
||||||
|
|
||||||
後は、上記の `brew --prefix` コマンドでディクテーションキット内の **main.jconf**
|
後は、上記の `brew --prefix` コマンドでディクテーションキット内の **main.jconf**と **am-gmm.jconf** のパスを調べて `julius` に渡すことで音声認識が出来るようになる。
|
||||||
と **am-gmm.jconf** のパスを調べて `julius` に渡すことで音声認識が出来るようにな
|
|
||||||
る。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ julius \
|
julius \
|
||||||
-C `brew --prefix julius-dictation-kit`/share/main.jconf \
|
-C `brew --prefix julius-dictation-kit`/share/main.jconf \
|
||||||
-C `brew --prefix julius-dictation-kit`/share/am-gmm.jconf
|
-C `brew --prefix julius-dictation-kit`/share/am-gmm.jconf
|
||||||
```
|
```
|
||||||
|
|
||||||
上記のコマンドで Julius は GMM モードで待機状態になり、喋った内容をリアルタイム
|
上記のコマンドで Julius は GMM モードで待機状態になり、喋った内容をリアルタイムで音声認識してくれるようになる。
|
||||||
で音声認識してくれるようになる。
|
|
||||||
|
|
||||||
Julius をより精密な DNN モードで起動したい場合は以下のように、**am-gmm.jconf**
|
Julius をより精密な DNN モードで起動したい場合は以下のように、**am-gmm.jconf**を **am-dnn.jconf** に変更するだけだ。
|
||||||
を **am-dnn.jconf** に変更するだけだ。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ julius \
|
julius \
|
||||||
-C `brew --prefix julius-dictation-kit`/share/main.jconf \
|
-C `brew --prefix julius-dictation-kit`/share/main.jconf \
|
||||||
-C `brew --prefix julius-dictation-kit`/share/am-dnn.jconf
|
-C `brew --prefix julius-dictation-kit`/share/am-dnn.jconf
|
||||||
```
|
```
|
||||||
@ -59,9 +51,9 @@ $ julius \
|
|||||||
ディクテーションキットに関するドキュメントは下記のコマンドから参照可能だ。
|
ディクテーションキットに関するドキュメントは下記のコマンドから参照可能だ。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ open `brew --prefix julius-dictation-kit`/share/doc
|
open `brew --prefix julius-dictation-kit`/share/doc
|
||||||
```
|
```
|
||||||
|
|
||||||
### 実行中の様子
|
### 実行中の様子
|
||||||
|
|
||||||

|

|
@ -10,7 +10,7 @@ redirect_from: "/blog/2013/11/05/osx-http-proxy"
|
|||||||
|
|
||||||
Mac のネットワーク環境は`networksetup -getcurrentlocation`コマンドで取得することが出来るので、
|
Mac のネットワーク環境は`networksetup -getcurrentlocation`コマンドで取得することが出来るので、
|
||||||
|
|
||||||
**.zshrc** 辺りに以下のシェルスクリプトを書いておけば Terminal で新しいタブを開いた時に自動でプロキシを設定してくれるはずである。
|
**.zshrc** 辺りに以下のシェルスクリプトを書いておけば Terminal で新しいタブを開いた時に自動でプロキシを設定してくれる。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
proxy=proxy.hogehoge.ac.jp
|
proxy=proxy.hogehoge.ac.jp
|
||||||
@ -39,7 +39,7 @@ git config --global url."https://".insteadOf git://
|
|||||||
|
|
||||||
先ほどのコマンドと組み合わせることで最終的なコードは以下のようになる。
|
先ほどのコマンドと組み合わせることで最終的なコードは以下のようになる。
|
||||||
|
|
||||||
```bash:switch_proxy.sh
|
```bash switch_proxy.sh
|
||||||
proxy=proxy.hogehoge.ac.jp:80
|
proxy=proxy.hogehoge.ac.jp:80
|
||||||
switch_trigger=大学
|
switch_trigger=大学
|
||||||
|
|
||||||
@ -83,13 +83,12 @@ fi
|
|||||||
|
|
||||||
このコードを **.zshrc** に保存して適当なターミナルで新しいセッションを開くと、`switch_trigger`で指定されたネットワーク環境下にいる時だけプロキシを通すことが出来る。
|
このコードを **.zshrc** に保存して適当なターミナルで新しいセッションを開くと、`switch_trigger`で指定されたネットワーク環境下にいる時だけプロキシを通すことが出来る。
|
||||||
|
|
||||||
既に開いているセッションに対してプロキシを適用する方法がわからなかった。
|
しかし既に開いているセッションに対してプロキシを適用する方法はわからなかった。
|
||||||
|
|
||||||
Workaround として、コードを **~/.switch_proxy** 辺りに置いて、
|
Workaround として、コードを **~/.switch_proxy** 辺りに置いて、
|
||||||
|
|
||||||
```bash:~/.zshrc
|
```bash ~/.zshrc
|
||||||
alias nswitch=~/.switch_proxy
|
alias nswitch=~/.switch_proxy
|
||||||
|
```
|
||||||
|
|
||||||
```
|
|
||||||
と`.zshrc`に書いておくことで、`nswitch`とタイプしてプロキシを切り替えられるようになる。
|
と`.zshrc`に書いておくことで、`nswitch`とタイプしてプロキシを切り替えられるようになる。
|
||||||
```
|
|
@ -8,7 +8,7 @@ redirect_from: "/blog/2013/12/05/qiita-alfred-workflow"
|
|||||||
|
|
||||||
そこで、以前作った[Qiita の記事をインクリメンタルサーチする Alfred 2 Workflow](http://qiita.com/o_ame/items/f23e75bfc11e9e7b3a08)に、ストックした投稿を検索するコマンドを追加した。
|
そこで、以前作った[Qiita の記事をインクリメンタルサーチする Alfred 2 Workflow](http://qiita.com/o_ame/items/f23e75bfc11e9e7b3a08)に、ストックした投稿を検索するコマンドを追加した。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> [Github リポジトリ](https://github.com/uetchy/alfred-qiita-workflow)から[ダウンロード](https://github.com/uetchy/alfred-qiita-workflow/archive/master.zip)
|
> [Github リポジトリ](https://github.com/uetchy/alfred-qiita-workflow)から[ダウンロード](https://github.com/uetchy/alfred-qiita-workflow/archive/master.zip)
|
||||||
|
|
@ -4,7 +4,7 @@ date: 2014-10-27 09:00:00 +09:00
|
|||||||
redirect_from: "/blog/2014/10/27/brew-cask-downloader"
|
redirect_from: "/blog/2014/10/27/brew-cask-downloader"
|
||||||
---
|
---
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
homebrew-cask を単純なダウンローダーとして使う。
|
homebrew-cask を単純なダウンローダーとして使う。
|
||||||
|
|
||||||
@ -49,8 +49,8 @@ fi
|
|||||||
もしくは直接ダウンロードしても良い。
|
もしくは直接ダウンロードしても良い。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ curl https://gist.githubusercontent.com/uetchy/eb625f922eff16eb404b/raw/brew-smash.sh -o /usr/local/bin/brew-smash
|
curl https://gist.githubusercontent.com/uetchy/eb625f922eff16eb404b/raw/brew-smash.sh -o /usr/local/bin/brew-smash
|
||||||
$ chmod +x /usr/local/bin/brew-smash
|
chmod +x /usr/local/bin/brew-smash
|
||||||
```
|
```
|
||||||
|
|
||||||
## 実際に使う
|
## 実際に使う
|
||||||
@ -58,7 +58,7 @@ $ chmod +x /usr/local/bin/brew-smash
|
|||||||
以下のように`brew smash`コマンドを叩く
|
以下のように`brew smash`コマンドを叩く
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ brew smash send-to-kindle
|
brew smash send-to-kindle
|
||||||
==> Fetching resources for Cask send-to-kindle
|
==> Fetching resources for Cask send-to-kindle
|
||||||
==> Downloading https://s3.amazonaws.com/sendtokindle/SendToKindleForMac-installer-v1.0.0.220.pkg
|
==> Downloading https://s3.amazonaws.com/sendtokindle/SendToKindleForMac-installer-v1.0.0.220.pkg
|
||||||
######################################################################## 100.0%
|
######################################################################## 100.0%
|
||||||
@ -77,7 +77,7 @@ Casks という名前のディレクトリがある場合、それを削除し
|
|||||||
こういう機能いれてくれ
|
こういう機能いれてくれ
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ brew cask install virtualbox
|
brew cask install virtualbox
|
||||||
|
|
||||||
==> Fetching resources for Cask virtualbox
|
==> Fetching resources for Cask virtualbox
|
||||||
|
|
@ -68,8 +68,8 @@ alias dokku='dockland'
|
|||||||
という具合に alias を張っておけば、まるでリモートで`dokku`を実行している感覚でローカルから`dokku`コマンドを触ることが出来る。
|
という具合に alias を張っておけば、まるでリモートで`dokku`を実行している感覚でローカルから`dokku`コマンドを触ることが出来る。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ cd rails-app
|
cd rails-app
|
||||||
$ dokku logs
|
dokku logs
|
||||||
[2014-05-29 15:38:56] INFO WEBrick 1.3.1
|
[2014-05-29 15:38:56] INFO WEBrick 1.3.1
|
||||||
[2014-05-29 15:38:56] INFO ruby 2.1.2 (2014-05-08) [x86_64-linux]
|
[2014-05-29 15:38:56] INFO ruby 2.1.2 (2014-05-08) [x86_64-linux]
|
||||||
[2014-05-29 15:38:56] INFO WEBrick::HTTPServer#start: pid=10 port=5000
|
[2014-05-29 15:38:56] INFO WEBrick::HTTPServer#start: pid=10 port=5000
|
@ -39,7 +39,7 @@ KNP のインストールにはありえないくらい時間が掛かる。
|
|||||||
インストールが終わったら動作チェックをする。
|
インストールが終わったら動作チェックをする。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ juman < test.txt | knp
|
juman < test.txt | knp
|
||||||
# S-ID:1 KNP:4.11-CF1.1 DATE:2014/09/23 SCORE:-19.04210
|
# S-ID:1 KNP:4.11-CF1.1 DATE:2014/09/23 SCORE:-19.04210
|
||||||
今日は──┐
|
今日は──┐
|
||||||
良い──┤
|
良い──┤
|
@ -12,7 +12,7 @@ redirect_from: "/blog/2014/03/14/rails-assets-cli"
|
|||||||
ンを利用したら良い。
|
ンを利用したら良い。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ gem search {package-name} --source https://rails-assets.org | grep "^rails-assets-"
|
gem search {package-name} --source https://rails-assets.org | grep "^rails-assets-"
|
||||||
```
|
```
|
||||||
|
|
||||||
`gem search` は source を指定しているにも関わらず RubyGems.org のパッケージも引
|
`gem search` は source を指定しているにも関わらず RubyGems.org のパッケージも引
|
||||||
@ -20,7 +20,7 @@ $ gem search {package-name} --source https://rails-assets.org | grep "^rails-ass
|
|||||||
|
|
||||||
### シェルスクリプト
|
### シェルスクリプト
|
||||||
|
|
||||||
```bash:rails-assets.sh
|
```bash rails-assets.sh
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Usage: rails-assets [package-name] [-a]
|
# Usage: rails-assets [package-name] [-a]
|
||||||
|
|
||||||
@ -29,9 +29,8 @@ gem search $1 $2 --source https://rails-assets.org | grep "^rails-assets-"
|
|||||||
|
|
||||||
もっと簡単に、シェル関数を定義することも出来る。
|
もっと簡単に、シェル関数を定義することも出来る。
|
||||||
|
|
||||||
```bash:~/.zshrc rails-assets(){ gem search $1 $2 --source
|
```bash ~/.zshrc
|
||||||
https://rails-assets.org | grep "^rails-assets-" }
|
rails-assets(){
|
||||||
|
gem search $1 $2 --source https://rails-assets.org | grep "^rails-assets-"
|
||||||
```
|
}
|
||||||
|
|
||||||
```
|
```
|
@ -40,7 +40,7 @@ git clone https://github.com/uetchy/Sketch-StickyGrid.git
|
|||||||
スクリプト内で`log`関数を呼び出すと、Console.app にログが出力される。
|
スクリプト内で`log`関数を呼び出すと、Console.app にログが出力される。
|
||||||
|
|
||||||
```js
|
```js
|
||||||
log(context.document.gridSize)
|
log(context.document.gridSize);
|
||||||
```
|
```
|
||||||
|
|
||||||
## ドキュメントの情報源
|
## ドキュメントの情報源
|
@ -4,7 +4,7 @@ date: 2015-09-07 09:00:00 +09:00
|
|||||||
redirect_from: "/blog/2015/09/07/alfred-qiita-workflow-in-go"
|
redirect_from: "/blog/2015/09/07/alfred-qiita-workflow-in-go"
|
||||||
---
|
---
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Ruby で書かれている [Alfred Qiita Workflow](https://github.com/uetchy/alfred-qiita-workflow) を[バグ修正](https://github.com/uetchy/alfred-qiita-workflow/issues/3)のついでに Go で書き直した。
|
Ruby で書かれている [Alfred Qiita Workflow](https://github.com/uetchy/alfred-qiita-workflow) を[バグ修正](https://github.com/uetchy/alfred-qiita-workflow/issues/3)のついでに Go で書き直した。
|
||||||
|
|
@ -11,7 +11,7 @@ Atom にインストールしているパッケージと[Atom.io](https://atom.i
|
|||||||
npm 経由でインストールする。
|
npm 経由でインストールする。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ npm install -g atom-package-diff
|
npm install -g atom-package-diff
|
||||||
```
|
```
|
||||||
|
|
||||||
# インストール済みパッケージとスターの diff
|
# インストール済みパッケージとスターの diff
|
||||||
@ -19,7 +19,7 @@ $ npm install -g atom-package-diff
|
|||||||
`apd status`コマンドでインストール済みパッケージとスターしているパッケージの diff を見ることができる。
|
`apd status`コマンドでインストール済みパッケージとスターしているパッケージの diff を見ることができる。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ apd status
|
apd status
|
||||||
36 packages installed
|
36 packages installed
|
||||||
30 packages starred
|
30 packages starred
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ Sublime-Style-Column-Selection atom-fuzzy-grep douglas language-babel language-i
|
|||||||
`apd sync --remote`でその逆の処理を行う。つまり、スターされているパッケージを全部インストールし、それ以外をアンインストールする。
|
`apd sync --remote`でその逆の処理を行う。つまり、スターされているパッケージを全部インストールし、それ以外をアンインストールする。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ apd sync --local
|
apd sync --local
|
||||||
Unstaring ... project-manager
|
Unstaring ... project-manager
|
||||||
Unstaring ... react
|
Unstaring ... react
|
||||||
Staring ... Sublime-Style-Column-Selection
|
Staring ... Sublime-Style-Column-Selection
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'gulp + decomposer: Best way to sassy-@import bower components'
|
title: "gulp + decomposer: Best way to sassy-@import bower components"
|
||||||
date: 2015-02-26 09:00:00 +09:00
|
date: 2015-02-26 09:00:00 +09:00
|
||||||
redirect_from: "/blog/2015/02/26/gulp-decomposer-bower-import"
|
redirect_from: "/blog/2015/02/26/gulp-decomposer-bower-import"
|
||||||
---
|
---
|
||||||
@ -9,13 +9,13 @@ gulp + Browserify(+ debowerify)という構成で Web サイトを作ってい
|
|||||||
ちなみに、**debowerify** というのは、
|
ちなみに、**debowerify** というのは、
|
||||||
|
|
||||||
```js
|
```js
|
||||||
var Velocity = require('velocity')
|
var Velocity = require("velocity");
|
||||||
```
|
```
|
||||||
|
|
||||||
という JavaScript を、
|
という JavaScript を、
|
||||||
|
|
||||||
```js
|
```js
|
||||||
var Velocity = require('./../../bower_components/velocity/velocity.js')
|
var Velocity = require("./../../bower_components/velocity/velocity.js");
|
||||||
```
|
```
|
||||||
|
|
||||||
という風に、bower_components 内のパスに解決してくれる Browserify transform だ。
|
という風に、bower_components 内のパスに解決してくれる Browserify transform だ。
|
||||||
@ -32,17 +32,17 @@ var Velocity = require('./../../bower_components/velocity/velocity.js')
|
|||||||
**gulpfile.js** はこのように定義しておく。
|
**gulpfile.js** はこのように定義しておく。
|
||||||
|
|
||||||
```js
|
```js
|
||||||
var gulp = require('gulp')
|
var gulp = require("gulp");
|
||||||
var sass = require('gulp-sass')
|
var sass = require("gulp-sass");
|
||||||
var decomposer = require('decomposer')
|
var decomposer = require("decomposer");
|
||||||
|
|
||||||
gulp.task('styles', function() {
|
gulp.task("styles", function () {
|
||||||
gulp
|
gulp
|
||||||
.src('src/styles/**/*.sass')
|
.src("src/styles/**/*.sass")
|
||||||
.pipe(decomposer())
|
.pipe(decomposer())
|
||||||
.pipe(sass({ indentedSyntax: true }))
|
.pipe(sass({ indentedSyntax: true }))
|
||||||
.pipe(gulp.dest('dist/css'))
|
.pipe(gulp.dest("dist/css"));
|
||||||
})
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
ポイントは`sass` **よりも前** に`decomposer`を挟むこと。なぜなら、外部から@import した mix-ins や変数は SASS コンパイル時に解決されるからだ。`sass`よりも後に置くと、SASS が@import を解決出来ずにエラーが発生する。
|
ポイントは`sass` **よりも前** に`decomposer`を挟むこと。なぜなら、外部から@import した mix-ins や変数は SASS コンパイル時に解決されるからだ。`sass`よりも後に置くと、SASS が@import を解決出来ずにエラーが発生する。
|
||||||
@ -50,7 +50,8 @@ gulp.task('styles', function() {
|
|||||||
続けて SASS を書こう。
|
続けて SASS を書こう。
|
||||||
|
|
||||||
```scss
|
```scss
|
||||||
@import normalize.sass @import styles/font body font-family: $ff-gothic;
|
@import normalize.sass;
|
||||||
|
@import styles/font body font-family: $ff-gothic;
|
||||||
```
|
```
|
||||||
|
|
||||||
> `$ff-gothic`は [uetchy/styles](https://github.com/uetchy/styles) の _font.sass_ で定義されている font-family だ。
|
> `$ff-gothic`は [uetchy/styles](https://github.com/uetchy/styles) の _font.sass_ で定義されている font-family だ。
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Hugo Paper: well-simplified theme for Hugo'
|
title: "Hugo Paper: well-simplified theme for Hugo"
|
||||||
date: 2015-07-05 09:00:00 +09:00
|
date: 2015-07-05 09:00:00 +09:00
|
||||||
redirect_from: "/blog/2015/07/05/hugo-paper"
|
redirect_from: "/blog/2015/07/05/hugo-paper"
|
||||||
---
|
---
|
||||||
@ -11,5 +11,5 @@ When I created my blog, there are no well simplified [Hugo](http://gohugo.io) th
|
|||||||
Just run following oneliner and you will be ready to start using Hugo Paper.
|
Just run following oneliner and you will be ready to start using Hugo Paper.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ git submodule add https://github.com/uetchy/hugo-paper.git themes/hugo-paper && git submodule update
|
git submodule add https://github.com/uetchy/hugo-paper.git themes/hugo-paper && git submodule update
|
||||||
```
|
```
|
@ -132,7 +132,7 @@ Notes.app に移行しました。
|
|||||||
|
|
||||||
## Flash
|
## Flash
|
||||||
|
|
||||||
ニコニコ動画が見れなくなるので泣く泣く導入していましたが、公式で HTML5 に対応したので不要になりました。
|
ニコニコ動画が見られなくなるので泣く泣く導入していましたが、公式で HTML5 に対応したので不要になりました。
|
||||||
|
|
||||||
## [VirtualBox](https://www.virtualbox.org)
|
## [VirtualBox](https://www.virtualbox.org)
|
||||||
|
|
31
source/_posts/2017/apple-pie.md
Normal file
31
source/_posts/2017/apple-pie.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: アップルパイ
|
||||||
|
date: 2017-04-23T05:48:00.000+00:00
|
||||||
|
categories:
|
||||||
|
- recipe
|
||||||
|
redirect_from: "/blog/2017/04/23/apple-pie"
|
||||||
|
image: "/uploads/apple-pie.jpg"
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
再現性の高いアップルパイのレシピが完成したので共有する。材料は初出時に太字にした。
|
||||||
|
|
||||||
|
# 注意事項
|
||||||
|
|
||||||
|
- レモン汁はポッカレモンで代用可
|
||||||
|
- 範囲指定されている値は 2 回目から好みで変化させること
|
||||||
|
- 焼きあがったらただちにパイ皿を取り除くこと。冷めてからではより困難になる
|
||||||
|
|
||||||
|
# 手順
|
||||||
|
|
||||||
|
1. **富士りんご(直径 8cm)**3 個の皮を剥いて 2-3 ㎠ に切って鍋に入れる
|
||||||
|
2. **砂糖**60g・**レモン汁**大さじ 2 を鍋に入れて、汁気が無くなるまで中火で 10-15 分煮る
|
||||||
|
3. 火を止めて、**切れてるバター**2 個 (= 20g)・**シナモン**を好きなだけ混ぜる
|
||||||
|
4. **冷凍パイシート**を冷蔵庫に移動し 30 分おく
|
||||||
|
5. 18cm パイ皿 (パイシートに合う皿であれば何でも良い) にシートを敷き、よく密着させる
|
||||||
|
6. 鍋の中身の熱が扱える程度に取れたらパイ皿に流し込んで広げる
|
||||||
|
7. 残りのパイシートをカットして格子状にのせる
|
||||||
|
8. **卵黄**に**水・塩**を少し混ぜ卵液を作り、シートに塗る(塗るほど焼けやすくなる)
|
||||||
|
9. 余りのシートをパイの縁にのせて卵液を薄く塗る
|
||||||
|
10. 200℃ のオーブンで 40 分焼く(15 分で 180℃ に落とす; でないと表面だけ焼けて中は生焼けになる)
|
@ -9,15 +9,15 @@ image: http://uechi-public.s3.amazonaws.com/github/gh-compare.gif
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
[gh-compare](https://github.com/uetchy/gh-compare) を作りました。この小さなツールを使って、導入を検討しているライブラリ群の比較表をコマンド1つで作ることが出来ます。
|
[gh-compare](https://github.com/uetchy/gh-compare) を作った。この小さなツールを使って、導入を検討しているライブラリ群の比較表をコマンド1つで作ることが出来る。
|
||||||
|
|
||||||
ライブラリのリポジトリが GitHub にあることが前提になりますが、プロジェクトの勢いからサイズまで俯瞰することが出来ます。
|
ライブラリのリポジトリが GitHub にあることが前提になるが、プロジェクトの勢いからサイズまで俯瞰することが出来る。
|
||||||
|
|
||||||
最高と最悪の値はそれぞれ緑色と赤色に着色されるので、違いが一目瞭然でわかります。
|
最高と最悪の値はそれぞれ緑色と赤色に着色されるので、違いが一目瞭然でわかる。
|
||||||
|
|
||||||
## インストール
|
## インストール
|
||||||
|
|
||||||
`gh-compare`モジュールは`npm`からインストール出来ます。
|
`gh-compare`モジュールは`npm`からインストール出来る。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm install --global gh-compare
|
npm install --global gh-compare
|
||||||
@ -25,10 +25,10 @@ npm install --global gh-compare
|
|||||||
|
|
||||||
## 使い方
|
## 使い方
|
||||||
|
|
||||||
`gh-compare`の後にスペース区切りで比較したいリポジトリを書きます。
|
`gh-compare`の後にスペース区切りで比較したいリポジトリを書く。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gh-compare facebook/react vuejs/vue riot/riot angular/angular
|
gh-compare facebook/react vuejs/vue riot/riot angular/angular
|
||||||
```
|
```
|
||||||
|
|
||||||
もし変な挙動を見つけたら、プロジェクトの [Issues](https://github.com/uetchy/gh-compare/issues/new) に是非書いてください。
|
もし変な挙動を見つけたら、プロジェクトの [Issues](https://github.com/uetchy/gh-compare/issues/new) に是非書いてほしい。
|
53
source/_posts/2017/markdown-friendly-note-taking-apps.md
Normal file
53
source/_posts/2017/markdown-friendly-note-taking-apps.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
title: Markdownフレンドリーなノートアプリ
|
||||||
|
date: 2017-02-13 21:52:00 +09:00
|
||||||
|
redirect_from: "/blog/2017/02/13/markdown-friendly-note-taking-apps"
|
||||||
|
---
|
||||||
|
|
||||||
|
UI が秀逸な Markdown ノートアプリを紹介する。
|
||||||
|
|
||||||
|
# ノートアプリの種類
|
||||||
|
|
||||||
|
ノートアプリには大きく分けて 2 種類がある。Notes のようにノートを一箇所にまとめて管理するシングルトンタイプと、TextEdit のようにファイル毎にウィンドウが開くタイプだ。
|
||||||
|
この記事では、前者を Notes タイプ、後者を TextEdit タイプと呼称し区別する。
|
||||||
|
|
||||||
|
# Notes タイプ
|
||||||
|
|
||||||
|
## Obsidian
|
||||||
|
|
||||||
|
<https://obsidian.md>
|
||||||
|
|
||||||
|
機能性・自由度双方で最強のエディター。僕もすでにいくつかプラグインを書いた。
|
||||||
|
|
||||||
|
## FSNotes
|
||||||
|
|
||||||
|
<https://fsnot.es>
|
||||||
|
|
||||||
|
オープンソースかつ Swift ネイティブでサクサク動くウクライナ産のエディター。僕もいくらかコミットしている。
|
||||||
|
|
||||||
|
## Notion
|
||||||
|
|
||||||
|
<https://notion.so>
|
||||||
|
|
||||||
|
サンフランシスコ発の多機能ノートアプリ。Web 版、iOS/Android 版と Mac 版が用意されており、Markdown ライクな記法で自由度の高いノートテイキングが出来る。起動に時間がかかるのがかなり痛い。
|
||||||
|
|
||||||
|
## Bear
|
||||||
|
|
||||||
|
<http://www.bear-writer.com>
|
||||||
|
|
||||||
|
北イタリア発のノートアプリ。記事中に **ハッシュタグ** を書き込むと、リストでまとめてくれる機能が秀逸。
|
||||||
|
iCloud を使って、macOS と iOS アプリの間でノートを同期することが出来る。
|
||||||
|
|
||||||
|
## Inkdrop
|
||||||
|
|
||||||
|
<https://www.inkdrop.info>
|
||||||
|
|
||||||
|
日本発のノートアプリ。プラグインにより多くの機能を追加することが出来る。
|
||||||
|
|
||||||
|
# TextEdit タイプ
|
||||||
|
|
||||||
|
## Typora
|
||||||
|
|
||||||
|
<https://typora.io>
|
||||||
|
|
||||||
|
エディタとプレビューが一体化したタイプのエディタ。左右分割よりも WYSIWYG エディタの方が体験が良い。
|
@ -11,22 +11,15 @@ Maybe you don't need `pyenv` and/or `virtualenv` in most cases.
|
|||||||
> Don't have `brew`? Go to <https://brew.sh>.
|
> Don't have `brew`? Go to <https://brew.sh>.
|
||||||
|
|
||||||
```
|
```
|
||||||
brew install python3
|
brew install python
|
||||||
```
|
```
|
||||||
|
|
||||||
If you still need Python 2, run `brew install python`.
|
If you still need Python 2, run `brew install python@2`.
|
||||||
|
|
||||||
## Install Jupyter Notebook
|
## Install Jupyter Notebook
|
||||||
|
|
||||||
```
|
```
|
||||||
pip3 install jupyter
|
pip install jupyter
|
||||||
python3 -m ipykernel install --user
|
|
||||||
```
|
|
||||||
|
|
||||||
You also want Python 2 kernel, so then:
|
|
||||||
|
|
||||||
```
|
|
||||||
pip install ipykernel
|
|
||||||
python -m ipykernel install --user
|
python -m ipykernel install --user
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -34,12 +27,12 @@ That's all.
|
|||||||
|
|
||||||
# How about `virtualenv`?
|
# How about `virtualenv`?
|
||||||
|
|
||||||
Since Python 3 got its own virtual environment tool called [venv](https://docs.python.org/3/library/venv.html), You no longer need `virtualenv` itself.
|
Since Python 3 got its own virtual environment tool called [venv](https://docs.python.org/3/library/venv.html), You no longer need `virtualenv`.
|
||||||
|
|
||||||
If you want a virtual envs on your project, run:
|
If you want a virtual envs on your project, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
python3 -m venv venv
|
python -m venv venv
|
||||||
source ./venv/bin/activate
|
source ./venv/bin/activate
|
||||||
```
|
```
|
||||||
|
|
28
source/_posts/2017/nvidia-titan-x-macpro-early-2008.md
Normal file
28
source/_posts/2017/nvidia-titan-x-macpro-early-2008.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
title: Install NVIDIA GeForce GTX TITAN X in MacPro Early 2008
|
||||||
|
date: 2017-02-13 14:20:00 +09:00
|
||||||
|
redirect_from: "/blog/2017/02/13/nvidia-titan-x-macpro-early-2008"
|
||||||
|
---
|
||||||
|
|
||||||
|
MacPro Early 2008 という骨董品に NVIDIA Titan X (Maxwell)を積んだところ、いくつかの問題にぶつかった。この記事でそれらの問題と解決策について書く。
|
||||||
|
|
||||||
|
# NVIDIA ドライバーが非対応
|
||||||
|
|
||||||
|
あまりにも古いアーキテクチャの MacPro に対して NVIDIA のグラフィックドライバーが対応していない。
|
||||||
|
そこで、適切なバージョンの[NVIDIA Web Driver](http://www.macvidcards.com/drivers.html)をインストールすることでこれを解決した。
|
||||||
|
ただし、macOS アップデートをインストールするたびに、それに対応したドライバーを都度インストールする必要がある。
|
||||||
|
|
||||||
|
ドライバーをインストールするまでは画面に何も映らない。そこで、pkg 形式のドライバーを`scp`で MacPro に転送して、`installer`を使ってドライバーをインストールすることにした。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp driver.pkg MacPro.local:~
|
||||||
|
ssh MacPro.local
|
||||||
|
sudo installer -pkg ./driver.pkg -target /
|
||||||
|
```
|
||||||
|
|
||||||
|
# 電源ユニット(PSU)のパワー不足
|
||||||
|
|
||||||
|
TITAN X(Maxwell)が要求するパワーを MacPro の PSU は提供することが出来ない。
|
||||||
|
そこで、PC パーツショップで追加の PSU を購入して、GPU 専用の電源として使った。
|
||||||
|
ここで新たな問題が生まれる。正しくパワーを提供するためには MacPro の PSU と追加の PSU を同期させる必要があり、またそれを実現するパーツもあるが、場合によっては GPU を破損してしまう危険性があった。
|
||||||
|
今回は電源を同期することは見送り、個別にスイッチを入れることで解決した。
|
27
source/_posts/2017/oss-for-designers.md
Normal file
27
source/_posts/2017/oss-for-designers.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: デザイナーとしてOSSに貢献できること
|
||||||
|
date: 2017-12-26T15:24:00.000+00:00
|
||||||
|
redirect_from: "/blog/2017/12/27/oss-for-designers"
|
||||||
|
---
|
||||||
|
|
||||||
|
GitHub で公開されている OSS に Pull-request を送るのが僕の趣味だ。
|
||||||
|
そのような Pull-request の中にはコードだけでは無く、時にロゴデザインが含まれていることもある。
|
||||||
|
|
||||||
|
## textlint
|
||||||
|
|
||||||
|
文章校正ツールである[textlint](https://textlint.github.io/)プロジェクトの例では、作者の azu 氏が[ロゴを募集している Issue](https://github.com/textlint/textlint/issues/56)を見かけ、[ちょっとしたアイディア](https://github.com/textlint/textlint/issues/56#issuecomment-160050653)をコメントしたことから始まった。
|
||||||
|
|
||||||
|
その後、[より詳細な検討](https://github.com/textlint/media/pull/1)を重ねた結果、僕がデザインした textlint のロゴが無事プロジェクトに受け入れられた。
|
||||||
|
|
||||||
|
このようにプロジェクトの作者が Issue 等でロゴを募集することは、実は思っているより一般的だ。WebAssembly のロゴも[公募のコンペティション](https://github.com/WebAssembly/design/issues/112)で決まっている。
|
||||||
|
|
||||||
|
一方で自らロゴの提案をすることもある。
|
||||||
|
|
||||||
|
## ⌘ 英かな
|
||||||
|
|
||||||
|
macOS のキーバインドを変更するアプリである[⌘ 英かな](https://ei-kana.appspot.com/)の例では、アイコンの改善案を思いつき、[Pull-request](https://github.com/iMasanari/cmd-eikana/pull/5)を送ったところ、驚くほどすぐにマージしてくれた。
|
||||||
|
|
||||||
|
## 結論
|
||||||
|
|
||||||
|
OSS コミュニティではコードだけでなくデザインワークに対してもオープンにコミットすることが出来る。
|
||||||
|
デザイナー諸氏は機会があれば興味のある OSS に貢献してみることをオススメする(実際 OSS 開発者の多くは、口にせずともクールなロゴが提案されることを心から待ち望んでいる!)
|
@ -4,12 +4,12 @@ date: 2017-02-02 00:20:00 +09:00
|
|||||||
redirect_from: "/blog/2017/02/02/sim-card-travel"
|
redirect_from: "/blog/2017/02/02/sim-card-travel"
|
||||||
---
|
---
|
||||||
|
|
||||||
世界中で 3G 通信が出来る[GigSky](http://www.gigsky.jp)の SIM を 3 日間の台湾旅行で使ってみました。
|
世界中で 3G 通信が出来る[GigSky](http://www.gigsky.jp)の SIM を 3 日間の台湾旅行で使ってみた。
|
||||||
|
|
||||||
GigSky では、その国の最初のアクティベーションに限り、3 日・100MB 分が無料で使えるので、今回の旅行では課金をせずに SIM を使うことが出来ました。
|
GigSky では、その国の最初のアクティベーションに限り、3 日・100MB 分が無料で使えるので、今回の旅行では課金をせずに SIM を使うことが出来た。
|
||||||
|
|
||||||
料金設定は現地で購入できる SIM と比べてかなり高く、旅行先で都度 SIM を購入する手間とのトレードオフとなります。
|
料金設定は現地で購入できる SIM と比べてかなり高く、旅行先で都度 SIM を購入する手間とのトレードオフとなる。
|
||||||
|
|
||||||
GigSky アプリをインストールしておくと、データ残量が半分以下になったタイミングでプッシュ通知を飛ばしてくれます。また、データ通信枠をトップアップする仕組みなので、追加データ枠の購入さえしなければ余計な課金をせずに済むという利点があります。
|
GigSky アプリをインストールしておくと、データ残量が半分以下になったタイミングでプッシュ通知を飛ばしてくれる。また、データ通信枠をトップアップする仕組みなので、追加データ枠の購入さえしなければ余計な課金をせずに済むという利点もある。
|
||||||
|
|
||||||
ただ、やはり価格設定が高めなのに加えて現地での SIM 購入はそこまで苦ではないので、3 日以上の旅行で使う機会は無いでしょう。
|
ただ、やはり価格設定が高めなのに加えて現地での SIM 購入はそこまで苦ではないので、3 日以上の旅行で使う機会は無いだろう。
|
@ -4,9 +4,19 @@ date: 2017-06-16 00:00:00 +09:00
|
|||||||
redirect_from: "/blog/2017/06/16/x11forward"
|
redirect_from: "/blog/2017/06/16/x11forward"
|
||||||
---
|
---
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Ubuntu 16.04
|
# Installation
|
||||||
|
|
||||||
|
## Remote
|
||||||
|
|
||||||
|
### Arch Linux
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pacman -S xorg-xauth xorg-fonts-100dpi xorg-xeyes
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ubuntu 16.04
|
||||||
|
|
||||||
Make sure you have installed SSH, X11 and xAuth on a remote server.
|
Make sure you have installed SSH, X11 and xAuth on a remote server.
|
||||||
|
|
||||||
@ -16,12 +26,12 @@ sudo sed -i '/ForwardX11/s/.*/ForwardX11 yes/' /etc/ssh/sshd_config
|
|||||||
sudo service ssh restart
|
sudo service ssh restart
|
||||||
```
|
```
|
||||||
|
|
||||||
## macOS Sierra
|
## Client (macOS Big Sur)
|
||||||
|
|
||||||
You also need to have X11 on your local machine.
|
You also need to have X11 on your local machine.
|
||||||
|
|
||||||
```
|
```
|
||||||
brew cask install xquartz # install X11
|
brew install xquartz # install X11
|
||||||
ssh -X <remote>
|
ssh -X <remote>
|
||||||
$ xeyes # verify you have X11
|
$ xeyes # verify you have X11
|
||||||
```
|
```
|
@ -1,7 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: 初キャンプに必要な機材
|
title: 初キャンプに必要な機材
|
||||||
date: 2018-04-13 14:26:00 +09:00
|
date: 2018-04-13 14:26:00 +09:00
|
||||||
redirect_from: "/blog/2018/04/13/camping"
|
redirect_from:
|
||||||
|
- "/blog/2018/04/13/camping"
|
||||||
---
|
---
|
||||||
|
|
||||||
先月、大洗で初めてのキャンプ泊をした。
|
先月、大洗で初めてのキャンプ泊をした。
|
@ -18,7 +18,7 @@ I made a simple tool to get you covered with the above guidelines.
|
|||||||
|
|
||||||
# gh-compare
|
# gh-compare
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[gh-compare](https://github.com/uetchy/gh-compare) is a simple terminal app to explore your candidates and aggregate a result into a nice-looking report.
|
[gh-compare](https://github.com/uetchy/gh-compare) is a simple terminal app to explore your candidates and aggregate a result into a nice-looking report.
|
||||||
|
|
||||||
@ -27,9 +27,9 @@ npm install -g gh-compare
|
|||||||
gh-compare facebook/react vuejs/vue riot/riot
|
gh-compare facebook/react vuejs/vue riot/riot
|
||||||
```
|
```
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
You will see the GitHub activities for each candidate at once.
|
You will see the GitHub activities for each candidate at once.
|
||||||
It could help you to decide which library you would adopt!
|
It could help you to decide which library you would adopt!
|
||||||
|
|
||||||
Warmly welcome to any comments/ideas to improve `gh-compare`!
|
Warmly welcome to any comments/ideas to improve `gh-compare`!
|
@ -3,11 +3,11 @@ title: Know your deps on package.json in seconds
|
|||||||
date: 2018-09-02 03:23:00 +09:00
|
date: 2018-09-02 03:23:00 +09:00
|
||||||
---
|
---
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
How do you know what packages that project/library depend on and what exactly are that packages doing for?
|
How do you know what packages that project/library depend on and what exactly are that packages doing for?
|
||||||
You'll want to quickly survey on them. So [npm-deps-list](https://github.com/uetchy/npm-deps-list) is here for.
|
You'll want to quickly survey on them. So [npm-deps-list](https://github.com/uetchy/npm-deps-list) is here for.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
You can install them using `npm` or `yarn`.
|
You can install them using `npm` or `yarn`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -18,4 +18,4 @@ Running `ndl`, you will get a detailed list of dependencies for the package on t
|
|||||||
|
|
||||||
If you are using iTerm2, you can also `Command + Click` on a package name to jump to their homepage.
|
If you are using iTerm2, you can also `Command + Click` on a package name to jump to their homepage.
|
||||||
|
|
||||||
If you have any idea on it, please consider submitting an issue or a pull request!
|
If you have any idea on it, please consider submitting an issue or a pull request!
|
84
source/_posts/2018/life-automation.md
Normal file
84
source/_posts/2018/life-automation.md
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
---
|
||||||
|
title: 生活の自動化
|
||||||
|
date: 2018-08-05 00:00:00 +09:00
|
||||||
|
redirect_from: "/blog/2018/08/05/life-automation"
|
||||||
|
---
|
||||||
|
|
||||||
|
生活にオートメーションを上手く取り入れ、本当にやりたいことに集中できる環境をつくろう。
|
||||||
|
|
||||||
|
# 洗濯の自動化
|
||||||
|
|
||||||
|
Panasonic のドラム洗濯乾燥機を使っている。威力を最大限に享受するため、タンブラー乾燥向けの普段着を揃えておくことも重要だ。
|
||||||
|
|
||||||
|
洗剤は粉と液体とが一体化したジェルボール洗剤が便利だ。ドラムの底にひとつ置くだけでよく、計量する必要がない。
|
||||||
|
|
||||||
|
# 食器洗いの自動化
|
||||||
|
|
||||||
|
Panasonic の一人暮らし用コンパクト食洗乾燥機を使っている。
|
||||||
|
洗濯機と同じく、食洗機専用のジェルボール洗剤を使えば計量する手間を省ける。
|
||||||
|
|
||||||
|
# 照明の自動化
|
||||||
|
|
||||||
|
Philips Hue はインターネット経由で明るさや色相をコントロールすることができる電球だ。
|
||||||
|
|
||||||
|
- 「家から離れたら消灯」
|
||||||
|
- 「家に近付いたら点灯」
|
||||||
|
- 「日が暮れたら暖色系に切り替える」
|
||||||
|
- 「23 時になったら消灯」
|
||||||
|
|
||||||
|
など多様なルールを作ることができる。外の明るさに合わせて照明の明るさを調整して、概日リズムが崩れにくいようルールを決めている。
|
||||||
|
|
||||||
|
# 空調の自動化
|
||||||
|
|
||||||
|
Nature Remo でエアコンの操作を自動化した。
|
||||||
|
|
||||||
|
- 「湿度が高ければドライに変更」
|
||||||
|
- 「家から離れたら電源オフ」
|
||||||
|
- 「朝になったら冷房へ切り替え」
|
||||||
|
|
||||||
|
など多様なルールを作ることができる。
|
||||||
|
|
||||||
|
Nature Remo 自体はエアコン専用ではなく、赤外線で操作出来るデバイスであればなんでも操作できる(例えばシーリングファンやテレビの電源・音量など)
|
||||||
|
|
||||||
|
[Nature Remo を NodeJS で操作するライブラリ](https://github.com/nature-remo/nature-remo)を作ったので是非触ってみてほしい。ライブラリ経由で温度・湿度・明度のセンサー値を取得したり、指定したモードにエアコンを切り替えることができる。
|
||||||
|
|
||||||
|
# 自動施錠・自動開錠
|
||||||
|
|
||||||
|
Qrio Lock をドアに取り付けることでオートロック・アンロックができるようになった。
|
||||||
|
|
||||||
|
エントランスのドアに関しては、インターホンに Switch Bot を貼り付けて Shortcuts で解錠できるようにしておき、それを iPhone の背面トリプルタップで呼び出せるよう設定することでキーレスエントリー化している。少し Hacky だが、動けばなんでも良い。
|
||||||
|
|
||||||
|
# ホームアシスタント
|
||||||
|
|
||||||
|
Raspberry Pi に Home Assistant をインストールし、スマート家電を取りまとめるアシスタントとして使っている。Nature Remo や Hue、Switch Bot に紐づいているデバイスを Home Assistant のアプリからまとめて操作できる。
|
||||||
|
|
||||||
|
Apple Home より柔軟な自動化ルールを作ることができ、例えば「朝になったら照明とエアコンをつける(気温が高くかつ誰かが家にいる場合のみ)」といった気の利いた自動化ができる。
|
||||||
|
|
||||||
|
# 睡眠記録の自動化
|
||||||
|
|
||||||
|
Withings 改め Nokia 改め Withings の Sleep を使っている。
|
||||||
|
寝るときにウェアラブルデバイスを身に付けたくない派としては、マットレスの下に敷いておくだけで睡眠を自動計測してくれるのはありがたい。
|
||||||
|
|
||||||
|
機能としては、入眠・起床検知、心拍数記録、睡眠深度解析、いびき検出等がある。
|
||||||
|
|
||||||
|
# 体重記録の自動化
|
||||||
|
|
||||||
|
Withings の Wi-Fi Scale を使っている。体重と体脂肪率、心拍数、BMI を Wi-Fi 経由でクラウドに自動記録し、アプリで推移を確認できる。
|
||||||
|
|
||||||
|
Wi-Fi Scale には CO2 センサーもついており、部屋の二酸化炭素濃度を記録してくれる。
|
||||||
|
|
||||||
|
# オンラインスーパー
|
||||||
|
|
||||||
|
普段は業務スーパーを使いつつ、重くて運ぶのが大変な商品に関してはイトーヨーカドーのオンラインスーパーを頼っている。
|
||||||
|
|
||||||
|
お気に入りリストへ水、米、卵、かぼちゃなど毎回買うものを登録しておくことで、慣れれば 5 分程度で注文が完了する。あとは指定した時間に家へ商品を届けてくれる。
|
||||||
|
|
||||||
|
# 自動家計簿
|
||||||
|
|
||||||
|
Moneytree を使っている。支出を自動で食費、趣味、日用品などに仕分けてくれるため、使いすぎに気付きやすい。無現金縛りプレイと相性が良い。
|
||||||
|
|
||||||
|
# 気になる製品
|
||||||
|
|
||||||
|
## ルンバ
|
||||||
|
|
||||||
|
絨毯を取り除くわけにもいかないので二の足を踏んでいる。使用感については[KainokiKaede's diary](http://kainokikaede.hatenablog.com/entry/2018/07/24/185452)の素晴らしい記事を共有しておく。
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user