haya14busa

haya14busa’s memo

Jekyll on GitHub Pages With Twitter BootstrapでVimプラグイン読書会のサイトを作りました

つくりました

Jekyll, GitHub Pages, Twitter Bootstrap全部便利だった。

注: URLは変わるかもしれません

GitHub公式ドキュメント

静的サイトをホストしてくれる。プロジェクトごとに作ったり、ユーザーのブログとして使えたりする。

Jekyll

最初に砂場あそびしました

GitHub PagesのAutomatic Generatorを使ってJekyll on GitHub Pagesの仕様をなんとなく把握。適当な流れをリンク先に書きました。

そしてBootstrapつかってVimプラグイン読書会作成へ

参考Link

どっちもJekyll使ってたので参考にしました。特にvimrc読書会と似たようなサイトにしたほうがいいっぽいので構成とかほぼ同じになってます。参考にしながらやってると明らかな間違いとか割と見つけたりして簡単なPullReq案件が出てくるので便利。Vimプラグイン読書会のナビゲーションヘッダ便利という声からvimrc読書会のサイトのにもナビゲーション実装したりもしました。

Twitter Bootstrap

ArchiveページでTableゴリゴリ使うっぽいのでTwitter Bootstrap使って楽々ストライプデザインにしたり、簡単にResponsiveなヘッダーを作れて便利でした。配色とか考えてたけどデザイン力なさすぎて途中でBootswatchというBootstrapのテーマサイトからSimplexというテーマをベースに作ることにしました。

そしたらおしゃれっぽくなったんだけど、自分のサイトとめっちゃ似てるデザインになってつらさを感じた。反省してます。

こっからTips的ななにか

ローカルでもCSS,JSを効かせた状態で確認する方法

_config.yml (いろいろ設定がかける)

baseurl: /{repository-name}

default.htmlなどで

Shell

bundle exec jekyll serve -w -b /{repository-name}

上記コマンドを叩いてhttp://localhost:4000/{repository-name}/にアクセスするといい感じにCSS,JSなどすべてのページで効くようになります

詳しくはjekyll serve --helpとかするとよい。

公式サイトを見る限り、baseurlは/{repository-name}/ではなく/{repository-name}にして最後のスラッシュは書かないほうがいいっぽいです。

これは書いてても一応使えるんですが問題があって、/jekyll_reading_vimplugin_site/とかした時にbaseurl//page-urlになってしまって、わざわざ最初のスラッシュを消す必要がでてきてしまいます。(jekyll_reading_vimplugin_site/)

このへんvimrc読書会のページがこの構成で少しハマりかけたので注意です。絶対とは言いませんが最後のスラッシュはない方がよいです。

Markdown

_config.yml

markdown: rdiscount

rdiscount:
  extensions:
    - autolink      # greedily urlify links
    - footnotes     # footnotes
    - smart         # typographic substitutions with SmartyPants

デフォルトのmarkdownエンジンはmarukuになっていて(たぶん)、あんまり良くないのでrdiscountかredcarpetあたりを選ぶと便利なようです。

Markdownファイルをかけば勝手にコンバートしてくれるわけではなく、先頭に記述する必要があります。

index.mdなど

---
layout: default
title: なにかタイトル
---

本文

_layout

先ほど出てきたlayout: defaultなどは、所定のレイアウトを使ってそのなかの“にMarkdown内容を出力することになります。

Jekyll on GitHub Pages with Twitter BootstrapでVimプラグイン読書会のサイトを作りましたや“を使用してよさげに作るとよいです

Gemfile

Gemfile

source 'https://rubygems.org'
gem 'github-pages'

Rubyとbundlerとか事前にインストールしておくとbundle installとかbundle exec jekyll serveとかできて用意しておくと便利。travis-ciに登録とか気軽にできるのでリポジトリの紹介ページとかでなく、純粋にGitHub Pagesとしてリポジトリを使う場合は便利です。

Travis CIでJekyll on GitHub Pages(gh-pages branch)のテストをするときにハマった « haya14busa

ConvertからExcludeする

_config.yml

exclude:
  - 'Gemfile'
  - 'Gemfile.lock'
  - 'README.md'
  - 'scripts'

markdownやらhtml以外の物も_site以下にJekyllはコンバートするので、気づかずにREADMEとかをおいておくとサイトからアクセスできちゃったりします。しっかり除外設定しておくと良さげです。

find _site -type fとかして確認するとよいです。

_includeを使う

各ページに共通の<head>タグ部分や、サイドバー、フッターなどなどは_include/header.htmlのようにフォルダ下において`

haya14busa

<h2>haya14busa's memo</h2>

`とレイアウトなどなどから呼び出すことができます。

_dataとfor loopが便利っぽい

_data/members.yml

- name: sanaechan
  github: deco_mori
  twitter: decochan

- name: haya14busa
  github: haya14busa
  twitter: haya14busa

とかしておくとMarkdownファイル含め任意のところで

こんなふうに呼び出せて便利そうです。

よんだvimrcとかvim pluginをテーブルに直書きじゃなくてデータに書いてloop回してわっしょいとかもよさそう。

結局は

他人のサイトみて良さげな書き方参考にするとすぐできるのではかどります。

とか

などなど、GitHubにホストされてるものを公式ドキュメントなどと見比べながらやっていくといろいろ発見があったり、ついでにプルリクれたりしてよいです。

ただGitHub PagesはJekyll Pluginなどが使えなくて、Octopressとか使って若干違う構成になっていることもあるので注意です。鵜呑みコピペ怖い。

結論

Jekyll on GitHub Pages with Twitter Bootstrap 便利すぎる。

Travis CIでJekyll on GitHub Pages(gh-pages Branch)のテストをするときにハマった

なんどpushしてもTravisが動いてくれなくて非常につらかった

何度も設定見なおして、何度も更新して、何度も何度もpushしました。

しかし何も起こらなかった。。。

解決

ふと、masterじゃないとダメなのかなとmasterにプッシュしたら動いたので、さらにドキュメントを調べてみると…

Note that the gh-pages branch will not be built unless you add it to the whitelist (branches.only).

Travis CI: Configuring your build

書いてあった!!!

gh-pagesブランチはデフォルトではテストしてくれなくて、whitelistで明示的に指定しないとダメなようです。

.travis.yml

language: ruby
rvm:
  - 2.0.0
before_script: "bundle show"
script: "bundle exec jekyll build"
after_script: "find _site -type f"
branches:
  only:
    - gh-pages

よく考えたら、gh-pagesってプロジェクトと全く別の物が置かれているわけだから、デフォルトで無視してくれるっていうのは気が効いてていいかもしれないですね。 gh-pagesのテストとか別にローカルで書くときにビルドしてればわかるのでそもそもあんまりテストする必要性がないのかもしれないというのはある。

ちなみに上記のようにwhitelistでgh-pages onlyの設定にしていてもPull Requestにはちゃんと反応してくれるっぽいです。Travisさんさすがです。

Vimプラグイン読書会やりましたー

Vim script読書会 #01

読んだプラグイン

  1. Shougo/junkfile.vim
  2. thinca/vim-visualstar

場所

時間

  • 12/14(土) 21:00-23:00

ログ

Pull Request

Link

感想とか

やりたいとか言っておきながら読みたいプラギンとか決めるのぐだぐだだったり、僕自信に拡散力のようなものが備わっていなかったりで色々と不安だったけど、蓋を開けてみると割と参加者も集まってくれて、「勉強になる」とかいい反応もあったりしてよかった。参加者の皆さん、ありがとうございます。

特におしょーさんはいろいろ取り仕切ってくれてありがとうございます。

junkfile.vim

Shougo/junkfile.vim

plugin/とautoload/の使い分け方とかプラグインの基本的な作り方を読んだり訊いたりして今回の「プラグインの基本的な構成や作り方について学ぶ」という目的に適ってとてもいい感じでした。

おまじない

“ おまじない
” Load Once
if exists(‘g:loaded_helloworld’) && g:loaded_helloworld
  finish
endif
let g:loaded_helloworld = 1

“ Saving ‘cpoptions’ let s:save_cpo = &cpo set cpo&vim

“ Restore ‘cpoptions’ let &cpo = s:save_cpo unlet s:save_cpo

行連結・副作用の回避をしましょう。おまじないレベルなのでとりあえずhelp読んである程度理解したら、なにも考えず書いておくといいっぽいです。

autoload変数とか

値をセットするだけならlet g:hoge#foo='hoge'しても、autoloadが呼ばれてしまうというわけではないはずだけど、やはりautoload変数はautoloadで定義するといいっぽい。

plugin下ではg:hoge_fooとかを使うのがよくあるけどb:とかいろいろあって難しい

autoloadとpluginの違い

C でいう、

plugin -> .h
autoload -> .c

実装を autoload に書いて、それを呼び出すコマンドなどを plugin で定義するのが最近の流行りですね
と、いうのも plugin は起動時に読み込まれるため、plugin に全部の実装を書いてしまうと起動時間に影響するため

vim-users.jp – Lingr

せっかく分けているのにpluginでautoloadの関数を直接呼ぶとVim起動時にautoload以下も呼ばれてしまうのでそのへんを注意して残念プラグインにならないように注意すべき。

必然的にマッピングの提供などはplugin下でやるべきということになる。

vim-visualstar

thinca/vim-visualstar

plugin下に100行程度で簡単そうかと思いきや、実装が結構難しくてVim script力の高まりを感じたり感じなかったりした。

itchyny
@/とか’>とかの勉強になるとは思う

vim-users.jp Lingr

この辺は初心者でも便利ってかんじでcountの話とかはなかなか難しかった。というか僕はline("'<")line("v")の違いでハマったみたいなこといってからその再現しようとしてたりしてvim-visualstarを完璧に理解することを諦めたりしていた。

最近cmigemoのvimプラグイン部分をプルリクったり、個別に管理させてもらったり(haya14busa/vim-migemo)してた関係もあって検索する部分とか参考になった。

raa0121
(“v”) と (“`v”) が顔文字に見える

vim-users.jp Lingr

かわいい(“`v”)

Vim script読書会 #02

結構反応もよかったのでめでたく第2回も開催しようという流れになりました。

  1. 毎週21時からやるやる
  2. 隔週で行う
  3. 月1で行う
  4. 不定期、気が向いたら

2か3あたりかなーという感じですが、年末年始なので次回は年明けの1/11(土曜日)です。

この辺反応良かったりして人が安定していると隔週になったりすると思うのでぜひぜひ参加したりしてわいわい読みましょう。

読むプラグイン(予定)

  1. rhysd/clever-f

または

  1. mattn/unite-mcdonalds-vim
  2. osyo-manga/unit-fold

clever-fの製作者であるりんだんさん(@Linda_pp)が参加できそうならclever-f,無理そうならunite-sourceを読もうということでunite-mcdonalds-vimとunite-fold読みます(たぶん)。

場所

時間

  • 2014/01/11(土) 21:00-23:00

各プラギン紹介記事Link

clever-f

clever-fはvim-easymotionにmigemo組み込むときの参考に軽く読んでいたり、人によってはライフチェンジングプラグインでclever-f面白いし、作者のりんだんさんすごい!みたいな感じでかなり個人的に提案しました() -> (進捗あります!✧\\٩(‘ω’)و //✧)o 。(‘、3)_ヽ)_ – sorry, unimplemented:

ただthincaさんが魔改造していてthincaさん説明も期待できそうだし、1回で1つのプラグインを集中的に読む場合、分量的にいい感じっぽいので目的にもよりますが面白そうだと思います。

unite-mcdonalds-vim

これがいわゆる人々の生活を豊かにするプラグインの内のひとつ! -> Big Sky :: Vim script は人々の生活を豊かにしなければならないッ!

unite-sourceかつmattn/webapi-vimを使っているのでウェブ上のソースを使った便利unite-sourceが作れるようになるかもですね。

またマクドナルドのページの構造変わってて動かなくなっていたのをmattnさんに直して頂きました。ありがとうございます。mattn/unite-gyukaku-vimも直して頂いたので、時間あったら一緒に読むとお腹すきそうでよさそう。

unite-fold

おしょーさんwareなので作者本人の説明も期待できます。個人的にはunite-foldは特にvimrc編集するときに便利

どれもいい感じのプラグインなのでみなさん参加しましょう。

unite-sourceになる場合unite予習事案が発生するので予習によさそうなリンクとか別にまとめる予定(あくまでも予定)

今後についてとか

[今後の課題]

  • 会ごとに具体的な目的を決めたい
  • 読んでみたいプラグインをまとめる
  • まとめサイトほしい
  • 23時から vimrc読書会があるので延長するのが厳しい

Vimプラグイン読書会を行いました – C++でゲームプログラミング

目的について

  1. Vim script 力を身につけたい、高めたい
  2. プラグイン構成を理解する、 プラグインを作ってみたい
  3. プラグインのある部分の実装を読んでみたい(そして取り込みたいor作りたい)
  4. unite-source作りたい、vim-textobj-hogeなどなど作りたい
  5. 作ったから添削してもらいたい
  6. 便利だけどちょっと実装が…というプラグインを読んで怒涛のプルリクを行いたい
  7. 単純におもしろそうだからみんなでわいわい読もうgoogle/mactabaとか(?)
  8. etc…

Vim scriptに限らずプログラミング力も高めたいとかもあるかもしれない。気軽にみんなでわいわいコードをオンラインで読めるというのはおもしろいし、vimrc読書会などそういうことができるVimのコミュニティー力はすごいなーと見ていて思う。

なんにせよ、おしょーさんが言うように漫然と読まずに目的を決めて読むというのは大事だし得るものもその分大きくなるので決めていきたいですね。

3.などは目的が絞られる分、参加者層にささるかが未知数だけど、こういうプラグイン作りたくて似たような部分があるプラグインを参照する事案は実際にあるのでおもしろそう。

例えばずっと2の目的とかだと続かないので、やっぱり回ごとに決めるという流れをもっとサクサクできるようになるとよさそう。次回の例で言えば、clever-fなら「Vimのカーソル移動を拡張するプラグインを作りたい」(3に近い)、unite-sourceならそのまま「unite-sourceの構成を理解して作ってみたい」(2)みたいな目的をもってそれを参加者が共有できていると実りのある読書会ができるんじゃないかなーと思う。

まとめさいととか

vimrc読書会みたいにまとめページと、リクエストできるページあったら便利そうなのでGithub Pagesとかで(?)適当に作ろうと思って何もせず3日くらい経ってるので次回始まるまでに適当に作りたい。

時間とかvimrc読書会の関係上もっとゆっくり読みたかったり、予想外に盛り上がっても続けれないとかあって難しい。日曜日だと次の日が月よう…ウッ

いろいろ懸念事項はありますが、わいわい読めておもしろかったので興味出てきた人は1/11日にvim-users.jp – Lingrを覗いて見るときっといい感じです。

あと今回のプラグイン構成を理解しよーという目的だったのでhaya14busa/vim-helloworldという本当にhello worldするだけのプラグイン作って復習しました。本当は予習として作るつもりだった。読むと良さそうなhelp書いたりgitのコミットログを追っていけば勉強になるようにと意識したので、本当にこれから作るってひとは見るといいかもしれないけど、やっぱりそうでもなかったりします。ハイ

こーゆーの作りたいなーというのはあったりなかったりするので、やっぱり作りたいものを作っていきたい

そんな時に便利なVimプラグイン読書会。次回は来年の1/11(土)です。よろしくおねがいします。

数学ガールゲーデルの不完全性定理読んだメモ

ペアノ・アリスメティック

ペアノ算術

公理
証明がなくても成り立つとみなす命題
命題
真偽が定まる数学的主張

ガリレオのためらい

外延的定義
{2,4,6,8,…}
内包的定義
{n | nは2の倍数}

-> 無限集合を扱える!

ラッセルのパラドクス

集合 <-> 論理

写像

限りなく近づく目標地点

発散
divergence
収斂
convergence

L.vergere = to incline(傾く)

極限値は収束する、「行き先」を指しているだけであって、けっしてけっしてその行き先に到達するとは言っていない

ライプニッツの夢

ゲーデルの不完全性定理

形式体系 – Wikipedia

<<意味論的方法>>
semantics

真偽値を使う

<<構文的方法>>
syntax

真偽値を使わない

  1. 論理式
  2. 公理と推論規則
  3. 証明と定理

<<数学を数学する>>

イプシロン・デルタ

<<分けることは、分かることへの第一歩>>

対角線論法

二つの孤独が生み出すもの

同値関係

ゲーデルの不完全定理

Outline

ヒルベルト計画

  1. 形式的体系の導入
  2. 無矛盾性の証明
  3. 完全性の証明

Hilbert

Terms

Gödel

Terms: Definition

ゲーデル数

Link

Vim script読書会開催します!または予習としてPlugin作るときに読むとよさそうなhelpのリストメモった

気軽な感じでVim script(plugin)読書会がしたいとつぶやいたら、@osyo-mangaさんが拾ってくれて実際にVim script読書会、開催することになりました。おしょーさんありがとうございます。

読書会は明日今日(12/14)!開催です!気になった方は参加しましょう!詳細は以下!

12月14日(土)21時から Vimプラグイン読書会を行います – C++でゲームプログラミング

Vim script読書会#1@12/14

読むプラギン

  1. Shougo/junkfile.vim
  2. thinca/vim-visualstar

場所

時間

  • 21:00から長くても23:00まで(23:00からvimrc読書会がはじまります)

詳細とか

第一回はこれからVimプラグイン書きたいって人の勉強になるように短く、基本的なプラグインとしてShougo/junkfile.vimを読むことになりました。

暗黒美夢王として有名なShougoさん作のプラグインですが、junkfile.vimは初心者でも読みやすい分量なので、「Vim script怖い」ってかたでも気軽に参加できます(おそらく)。あとjunkfile.vim使ったことない人(僕がそうでした)もVimでメモれる便利プラグインで面白いので、知らないプラグインだからナーって人でもとっつきやすそうです。

またすでにVim scriptできるって方も、もし継続して行うことになれば時によっていろんなレベルのものを読むことになると思うので、参加するといろいろ便利だと思います。みんなでわいわいできたら楽しそうなので興味があったらぜひよろしくおねがいします。

Vim plugin書くために読んだら便利そうなhelp

初心者向けとは言っても全く知らないから怖い!予習したい!って場合に読むと良さそうなhelpリストしました(よさそうなだけです)。

usr_41.txtとかeval.txtは全部読むと長いので読むとしたら絞って読むといいかもです。:h write-pluginあたりが目的に適ってる感じだと思います。

:h usr_41

:h eval.txt

などなど

ブラウザでもVimのヘルプが読みたい!

haya14busa/vimdoc-marklet

ブックマークレットでvimdoc@jaとかがブラウザから手軽に読めるのでおすすめしときます(宣伝)