Skip to content

Instantly share code, notes, and snippets.

View yamaya's full-sized avatar

Masayuki Yamaya yamaya

  • Sapporo, Hokkaido, Japan
View GitHub Profile
@yamaya
yamaya / siwft-donts-jp.md
Last active August 29, 2015 14:20
Swift Don'ts の勝手訳

オリジナルは gist:d91aef87e95f99c094c0 です

  • 出来の悪いコードを追加するな
    if文の条件とreturnを囲む括弧を避けろ。文が要求する場合を除き、同一行の文を分割するセミコロンを書くな。
  • 全て大文字は使うな
    キャメルケースを使え。
  • 型インターフェイスと戦うな
    列挙接頭子、自己参照を使え。コンストラクタを伴うクラス名は必要な時や、コードが綺麗になる場合のみ使え。
  • プロパティを除き、letが適切な時にvarは使うな
    コンパイラはそのライフタイム中に変更されない時、let文を適切に最適化する。例えば、Appleが書いているように
@yamaya
yamaya / print-swift-module
Created April 11, 2015 14:47
Print Swift module
# Xcode 6.3
echo ":print_module CoreData" | xcrun swift -deprecated-integrated-repl
@yamaya
yamaya / xcode-swift-vers
Last active March 6, 2024 05:39
Xcode swift version record
# Xcode 6.2 (6C131e)
Swift version 1.1 (swift-600.0.57.4)
Target: x86_64-apple-darwin14.1.0
# Xcode 6.3 (6D570)
Apple Swift version 1.2 (swiftlang-602.0.49.3 clang-clang-602.0.49)
Target: x86_64-apple-darwin14.1.0
# Xcode 6.3.1 (6D1002)
Apple Swift version 1.2 (swiftlang-602.0.49.6 clang-602.0.49)
@yamaya
yamaya / watchdogs.vim
Last active August 29, 2015 14:17
watchdogs.vim support swift.
if executable('swiftc') && get(get(g:, 'iOS_SDK'), 'path') != '' " {{{
function! g:Watchdogs_swift_findfiles()
let s = ''
try
let dir = substitute(system('git rev-parse --show-toplevel'), '\n', '', 'g')
execute 'lcd! ' . dir
let files = systemlist('git ls-files --exclude-standard |grep ".swift$" |grep --invert "^.*Tests/"') " TODO: XCTests
let s = join(map(files, 'l:dir."/".v:val'), ' ')
catch
@yamaya
yamaya / MaintainOSX.md
Last active August 29, 2015 14:17
OS Xアップデートの後や、不調なとき
  • OSメジャーアップデートの後は

    1. ログインする
    2. CPUが落ち着くまで放置
    3. 再起動
    4. セーフブート(下記参照)
    5. 動的ライブラリキャッシュの再作成(下記参照)

    をやっておくのが吉。

@yamaya
yamaya / macvim-yosemite-shift-space.patch
Last active August 29, 2015 14:08
MacVim: Fix don't input Space with Shift using Japanese IME on Yosemite
commit 6b36374325cbcfe58172edfe95b6bbeff42b3bae
Author: Masayuki Yamaya <yamaya@cyberdom.co.jp>
Date: Wed Oct 22 23:59:30 2014 +0900
Fix dont input space with shift on yosemite
diff --git a/src/MacVim/MMTextViewHelper.m b/src/MacVim/MMTextViewHelper.m
index fdc7aaf..3da0c29 100644
--- a/src/MacVim/MMTextViewHelper.m
+++ b/src/MacVim/MMTextViewHelper.m
@yamaya
yamaya / moonscript-highlights-jp.md
Last active August 29, 2015 14:07
Overview of Differences & Highlights のざっくり訳

"Overview of Differences & Highlights" - (MoonScript, a language that compiles to Lua) より

シンタックスのより詳しい要約はreference manualにある。

  • ブロックは空白に影響を受けやすく、インデントによって定義される
  • 全ての変数はデフォルトでローカルである
  • グローバル変数を宣言するためにキーワードをエクスポートする、テーブルから値をローカルにコピーするためにキーワードをインポートする
  • 関数呼び出しの丸括弧は rubyのように書かなくてもよい
  • 太い矢印 => は、self引数付きの関数を定義できる
  • @を名前に前置することで、selfが持つ属性を参照できる
@yamaya
yamaya / NSHashTable+NSMapTable.md
Last active February 15, 2022 00:22
NSHashTableとNSMapTable

NSHashTable & NSMapTable - NSHipsterの超意訳。

[iphone] NSHashTableとNSMapTable

[2014-08-26 18:45]

NSSetは値を強参照でもつ。NSDictionaryは値は強参照で、キーはコピーされる。 開発者が弱参照の値を保持したいとか、NSCopyingに適合しないオブジェクトをキーにしたい場合はNSValue +valueWithNonretainedObject:を使う必要があった。

このようなケースにおいて、iOS 6(MacではOS X 10.5)以降だと、NSHashTableNSMapTableを使用できる。

@yamaya
yamaya / cindex-tags.py
Created May 15, 2014 06:24
generate ctags file using clang cindex.py
#!/usr/bin/env python
from pprint import PrettyPrinter
pp = PrettyPrinter(width = 2048).pprint
def format_diagnostics(diag):
return {
'severity': diag.severity,
'location': diag.location,
'spelling': diag.spelling,
'ranges': diag.ranges,
@yamaya
yamaya / ctags-options-objc-fuzzyfinder
Last active August 29, 2015 14:00
fuzzyfinder buffertag for objc
--langdef=objc
--langmap=objc:.mm.m.h
--regex-objc=/\@interface[[:space:]]+([[:alpha:]][[:alnum:]_]*)([[:space:]]*\(([^)]*)\))?/\1(\3)/i,class interface/
--regex-objc=/\@implementation[[:space:]]+([[:alpha:]][[:alnum:]_]*)([[:space:]]*\(([^)]*)\))?/\1(\3)/I,class implementation/
--regex-objc=/\@property[^;]+[^[:alpha:]_]([[:alpha:]_][[:alnum:]_]*)[[:space:]]*;/\1/p,property/
--regex-objc=/^[[:space:]]*([-+])[[:space:]]*\([[:alpha:]_][^)]*\)[[:space:]]*([[:alpha:]_][^:;{]+:?)/\1\2/M,method/
--regex-objc=/^[^[:space:]#@][^=]+[[:space:]]([[:alpha:]_][[:alnum:]_]*)[[:space:]]*=/\1/v,variable/
--regex-objc=/^[[:space:]]*typedef[[:space:]][^;]+[[:space:]]([[:alpha:]_][[:alnum:]]*)[[:space:]]*;/\1/t,typedef/