読者です 読者をやめる 読者になる 読者になる

TaillookTech

備忘録

git mergeでコンフリクトしたとき片方のブランチの変更を優先させる

Git

片方の変更を優先してmerge (ファイル単位)

git mergeでコンフリクトがある場合リザルトでコンフリクトしたファイルの一覧が出力される.

$ git merge develop
Auto-merging Setting.py
CONFLICT (content): Merge conflict in Setting.py
Automatic merge failed; fix conflicts and then commit the result.

masterブランチにdevelopをマージしようとしてコンフリクトがあった場合こんな感じの出力が出る.
このときSetting.pyというファイルにコンフリクトあることがわかる.
ここで,masterを優先させる場合
git checkout --ours Setting.py
developを優先させる場合
git checkout --theirs Setting.py
を実行して
git add Setting.py
git commit
でコンフリクトが解決できる.

片方の変更を優先してmerge (まとめて)

まとめてコンフリクトを解決する場合,
masterを優先させる場合
git merge -Xours Setting.py
developを優先させる場合
git merge -Xtheirs Setting.py
でどちらかのブランチをまとめて優先させてマージできる.

UICollectionViewでカラフルなUITableView風のViewを作る

Swift Xcode

概要

UICollectionViewのセルの大きさをアレしてUITableViewっぽくする.

作ったもの

TableViewのようなもの
f:id:taillook:20170222164517p:plain

手順

  1. StoryBoardにUICollectionViewを設置
  2. DelegateとかDataSourceをViewControllerと結ぶ
  3. ViewControllerにコードを書く

解説

viewDidLoad()にUICollectionViewFlowLayout()のインスタンスを作成し,cellのlayoutを変更する.
このとき,cellの横幅を親ビューと同じサイズにする.
これによりTableViewのようなViewが作成できる.
cellの色はランダムに指定している.

コード

import UIKit

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    @IBOutlet weak var CollectionView: UICollectionView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
        layout.itemSize = CGSize(width: CollectionView.frame.size.width, height: CollectionView.frame.size.height/6)
        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0
        CollectionView.collectionViewLayout = layout
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
        let testCell:UICollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)
        let r: CGFloat = CGFloat(arc4random_uniform(255)+1) / 255.0
        let g: CGFloat = CGFloat(arc4random_uniform(255)+1) / 255.0
        let b: CGFloat = CGFloat(arc4random_uniform(255)+1) / 255.0
        let color: UIColor = UIColor(red: r, green: g, blue: b, alpha: 1.0)
        testCell.backgroundColor = color

        return testCell
    }
    
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 99
    }
    
}

Swift3でランダムなUIColorを生成する

Swift

Obj-Cの記事しかなかったのでここに書く

コード

let r: CGFloat = CGFloat(arc4random_uniform(255)+1) / 255.0
let g: CGFloat = CGFloat(arc4random_uniform(255)+1) / 255.0
let b: CGFloat = CGFloat(arc4random_uniform(255)+1) / 255.0
let color: UIColor = UIColor(red: r, green: g, blue: b, alpha: 1.0)

Gitでブランチ切ってマージ

Git 備忘録

備忘録

手順

  1. 現ブランチ確認
    git branch
  2. 最後のコミットまで戻る
    git checkout .
  3. ブランチの作成とチェックアウト
    git checkout -b develop/hoge
  4. develop/hogeで作業
  5. masterブランチに戻る
    git checkout master
  6. develop/hogeをマージ
    git merge develop/hoge
  7. リモートへpush
    git push origin master
  8. おわり

Xcode8とSwift3でライブラリを作成してCocoaPodsに公開するまで

Swift Xcode CocoaPods

はじめに

最近初めてCocoaPodsにライブラリを公開するってのをやりました.
Xcode8とSwift3での資料がなかった&わかりにくかったのでここに書きます.

ディレクトリ構成

グラフを描画するライブラリを作成する.

.
├── Demo
│   ├── Demo
│   │   ├── AppDelegate.swift
│   │   └── ...
│   └── Demo.xcodeproj
├── SimpleGraphs
│   ├── Info.plist
│   ├── SimpleGraphs.h
│   └── SimpleGraphs.swift
├── .swift-version
├── SimpleGraphs.podspec
├── SimpleGraphs.xcodeproj
├── LICENSE
└── README.md

手順

GitHubリポジトリ作成

  1. 作成するライブラリの名前のリポジトリを作成
  2. ローカルのディレクトリにクローン
  3. .gitignore.swift-versionを書く
    .swift-versionは今回Swift3.0を使うので3.0と書く
  4. LICENSEを書く
    今回はMITライセンス

ライブラリのプロジェクト作成

Framework&LibraryからCocoa Touch Frameworkを選択し作成(リポジトリ直下)

DEMOプロジェクト作成

  1. SimpleGraphs.xcodeprojと同じ階層にDEMOプロジェクト作成
    今回はSingleViewApplication
  2. デモを作りながら開発するのでライブラリのSwiftファイルをデモ用プロジェクトにリンクさせる
  3. ライブラリのコードを書く
    クラスやイニシャライザはpublicやopenなどのアクセス修飾子を付ける 参考

CocoaPodsで公開

  1. terminalでpod spec create https://github.com/Taillook/SimpleGraphsを実行しpodspecを生成する.
    SimpleGraphsのpodspec
  2. git tag 0.0.1git push --tagsを実行しバージョンのタグを付ける
  3. pod trunk register example@example.com 'なまえ'を実行しCocoaPodsにユーザを登録する
    メールが届くので,リンクを開いてアクティベーションする
  4. pod trunk meでセッションを確認する
    たぶんIPかMACアドレスでセッションが管理されてるんだと思う
  5. pod trunk push SimpleGraphs.podspecで公開する
Updating spec repo `master`
Validating podspec
 -> SimpleGraphs (0.0.1)

Updating spec repo `master`

--------------------------------------------------------------------------------
 🎉  Congrats

 🚀  SimpleGraphs (0.0.1) successfully published
 📅  February 12th, 19:37
 🌎  https://cocoapods.org/pods/SimpleGraphs
 👍  Tell your friends!
--------------------------------------------------------------------------------

登録に成功したらこんな感じの出力が出る

Rails5でTurbolinksとjQuery(document).ready()

RoR jQuery Web

Rails5でjQueryのreadyが動かなかった

ajaxとかの処理をするTurbolinksのがあるため$(document).ready()が発火しない.
Rails4での手法では動かなかった.

解決

StackoverflowとQiitaでそれらしきものを見つけた.

javascript - Rails 5: how to use $(document).ready() with turbo-links - Stack Overflow

Rails5でTurbolinksの挙動が変わってた。 - Qiita

コード例

以下の手法でjQueryが動く.

# ページ切り替え時(初回ページも対象)
$(document).on('turbolinks:load', function() {
  //ページ切り替え後にさせたい処理
});

# ページ切り替え時(初回ページは対象外)
$(document).on('turbolinks:render', function() {
  //ページ切り替え後にさせたい処理
});

# ページ遷移前
$(document).on('turbolinks:request-start', function() {
  //ページ遷移前にさせたい処理
});

Python|オブジェクトを使った無限ループ

Python

オブジェクトを使ったforループ

普通のリストオブジェクトを使ったforループ

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for x in lst:
    print(x)

オブジェクトを使った無限forループ

ループ内でリストの要素を増やして無限ループにする
以下のコードはNi=(Ni-1+1)x2の数を10個作るやつ

lst = [1]
for x in lst:
    if len(lst) != 10:
        lst[len(lst):] = [(lst[-1] + 1) * 2]
print(lst)

結論

等差数列とかで使えそう