Adsenseコード

ラベル macOS Sierra の投稿を表示しています。 すべての投稿を表示
ラベル macOS Sierra の投稿を表示しています。 すべての投稿を表示

2020-05-19

「認証に使用する証明書を選択してください」の対処法

Skypeをブラウザから利用できるサービス、web.skype.comを利用していたところ、突然次のようなポップアップが表示されました。


そのままOKを押すと、次の画面が表示されました。


デバイスに設定をしたパスワードを入れろとのこと。

このレベルのパスワードって、OSの設定に関わるわりと重大な状況でしか表示されないイメージですよね。

ブラウザ上でSkypeしか表示させていないので、あまり怪しいことはないのではと思うのですが、全て理解しているわけではないので念の為ちょっと同様な現象が起きていないか調べてみることに。

キーワードを元に検索してみる


「認証に使用する証明書を選択してください」
で検索してみても、それっぽい答えは見つからず・・・

「キーチェーン 署名 許可」
で検索するもcybozuで同様な操作をしているヘルプは見つかりましたが、
クライアント証明書の登録の仕方についてなので、こちらも答えには至らず・・・

参考
https://jp.cybozu.help/ja/settings/browser/certificate/mac/mac_chrome.html

この証明書が怪しいものではないかを確認するために、証明書のキーワードである
「com.apple.idms.appleid…」
で検索していました。

しかし、検索結果は圧倒的に件数が少なく、こちらも期待が薄い・・・

ですが、検索結果から、多少なりとも共通した解決方法が見られました。

ケース1


Xcode 8.0を操作していたら、iOSのビルドが遅くなる現象が発生。
原因を調べてみると、
「com.apple.idms.appleid…」名前の証明書が無限に増殖するというバグが発生していたそうです。

このときは増殖する証明書を全部削除することで解決した模様。

もしかしたら証明書を削除することで解決するかもしれませんね。

参考
http://www.ottimo.co.jp/archives/121187

ケース2


また、他のQAサイトでは、突然Safariでページの閲覧ができなくなった時、証明書を削除することで解決したという投稿もありました。

ここでも
「com.apple.idms.appleid…」
は自動生成される証明書であり、これを削除することで解決したことが書き込まれています。

このことからも、よくわからない証明書を許可するよりも削除することがこの問題の一番の解決方法かもしれませんね。

参考
https://qastack.jp/apple/94379/safari-not-accepting-website-certificate

「認証に使用する証明書を選択してください」の結論


少ない情報からも、削除することで解決したというページが何ページか見つかりました。

デバイスやOSレベルのパスワードを入力するレベルの操作のため、万が一を考えて安全な方向に対処法を倒すと、下手に許可してしまうより、削除して様子を見たほうがいいと思います。


2019-06-18

WordPressをSSHで接続して、CLIで操作する

自分のMacからXserverへSSH接続をし、CLI操作をしてWordPressを管理する、ということをやってみたいと思います。

まずXserverで、SSH接続を許可する設定があるのでそれをオンにします。

1.サーバーパネルにログインして、左にある「SSH設定」に進みます。
2.状態が「ON」にします。

次に「公開鍵認証用鍵ペアの生成」タブに移動して、SSHでサーバーに接続するときに使うパスワードデータを生成します。

ターミナルを起動して、下記の順にコマンド操作していきます。

# ディレクトリ「.ssh」をダウンロードフォルダに作成します。
$ mkdir ~/Downloads/.ssh
# ダウンロードフォルダにある「sampleServerID.key」を作成した「.ssh」フォルダに移動します。
$ mv ~/Downloads/sampleServerID.key ~/Downloads/.ssh/

# ディレクトリ「.ssh」に移動
$ cd ~/Downloads/.ssh/
# ファイル名を「id_xserver_rsa」に変更
$ mv sampleServerID.key id_xserver_rsa
# フォルダの権限を変更
$ chmod 700 ~/Downloads/.ssh
# Xserverにログインします
$ ssh -l sampleServerID -i id_xserver_rsa sampleServerID.xsrv.jp -p 10022

# 成功すると下記が表示されます。

The authenticity of host '[sampleServerID.xsrv.jp]:10022 ([111.111.111.111]:10022)' can't be established.
ECDSA key fingerprint is
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

# このように聞かれるので「yes」を入力

Are you sure you want to continue connecting (yes/no)?

# それ以外を入力すると下記が表示されます。

Please type 'yes' or 'no': yes

# 成功するとこれが表示

Warning: Permanently added '[sampleServerID.xsrv.jp]:10022,[111.111.111.111]:10022' (ECDSA) to the list of known hosts.

# これが表示されたら、Xserverにログインして先程行った「公開鍵認証用鍵ペアの生成」タブで入力したパスワードを入力します。

Enter passphrase for key 'id_xserver_rsa':

# 成功するとこれが表示

Last login: Sun Oct 14 19:52:21 2018 from c159144.net180131.cablenet.ne.jp

# サーバ側に移動すると、左側の表示がこうなります

[(サーバID)@svXXXX ~]$

例 [sample@sv1234 ~]$

# これを入力してインストールします。

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# 正しくインストールされたか検証します。

php wp-cli.phar --info

# 成功すると、以下の実行結果が表示される

OS: Linux 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64
Shell: /bin/bash
PHP binary: /usr/bin/php
PHP version: 7.1.12
php.ini used: /etc/php.ini
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /XXXXXXXX/XXXXXXXX
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.0.1



参考
https://www.xserver.ne.jp/manual/man_server_ssh.php
https://hi3103.net/notes/web/1128
https://qiita.com/ryo2132/items/38b5a93b3df476dd2b44



2017-10-18

覚えておきたい mac OS の定番操作

メモになります・・・

Finder関連


ショートカット
cmd + o ファイルを開く
cmd + ↑ フォルダの上の階層に移動する
cmd + ↓ 選択しているフォルダを開く

URLリンクのファイルを作成する


URLのテキストを選択した状態でFinderにドラッグ&ドロップすると「.webloc」が作成されます。
このファイルを実行すると、設定したURLのページに移動できます。

参考
http://mattintosh.blog.so-net.ne.jp/57174166


キャプチャのショートカット、クリップボードにキャプチャをコピーする方法


画面キャプチャーのショートカットまとめ [Win/Mac]


D&D でファイルをコピーする


mac OS ではファイルを D&D (ドラッグ・アンド・ドロップ)すると
ファイルは移動されますが、

option キーを押しながら D&D することで

ファイルのコピーを行ってくれます。


ファイルのパス名を取得


 macOS の finder からファイルのパスをクリップボードにコピーする方法です。


パスをえたいファイルを右クリックし、
option キーを押します


ファイルをコピーする選択肢の部分が
パス名のコピーになるので、そこをクリックします。


参考ページより


「6. デスクトップを複数作成し、どのデスクトップにアプリを開くかを指定して振り分ける」
なんかは知っておきたいですね。


参考
http://lovemac.jp/blog/1342/



2017-10-04

MAMP のローカルホストに WordPress をインストールする

◆前提
下記で MAMP を使ってバーチャルホストを設定している前提で進めます
http://shige-mon.blogspot.jp/2017/09/macmamp.html



◆手順
■WordPress をダウンロード
WordPress をダウンロードし、解凍しておきます



■ WordPress のファイルセットを移動
バーチャルホストのフォルダは以下のような状態とします

$ tree -L 1 /Applications/MAMP/htdocs
/Applications/MAMP/htdocs
├── host8001
├── host8002
└── host8003


解凍した WordPress の index.php 
がある階層のファイル全てを、
バーチャルホストのフォルダ (host8001) に移動します



※バーチャルホストを設定しない場合は、
htdocs直下に移動すればよいです



■データベースの作成
下記を表示し、左側の「New」を押します
http://localhost:8888/phpMyAdmin/


「データベースを作成する」の下に下記を入力して、「作成」を押します
データベース名: wp



■ WordPress インストールページを開く
サーバを起動し、下記にアクセスします
http://127.0.0.1:8001/


データベース設定のページが表示されますので、以下のように設定します

データベース名wp
ユーザ名root
パスワードroot
データベースのホスト名127.0.0.1:8889
テーブル接頭辞wp_
「インストール実行」 を押します 参考 Mac上のMAMPでローカルにバーチャルホストを設定する方法 http://shige-mon.blogspot.jp/2017/09/macmamp.html

【WordPress】インストールでデータベース接続確立エラー

■前提
MAMP 4.2
WordPress 4.7.5



MAMP でバーチャルホストを設定し、ドキュメントルート直下に
WordPress ファイルをコピーしてインストールしています。



ホストにブラウザで接続し、
データベースの設定を送信した直後に
「データベース接続確立エラー」が
表示されてしまった場合についてです



WordPress をインストール時に
「データベース接続確立エラー」と表示されてしまうときは、
「データベースのホスト名」が正しくない可能性があります。



バーチャルホストを設定している場合、
MAMPの設定で MySQL のポート番号を確認し、
8889であれば、

「データベースのホスト名」は、下記の設定をします
127.0.0.1:8889



参考
https://www.netassist.ne.jp/blog/?p=1277






2017-10-03

mac OS のグループ、ユーザの作成の周辺コマンド集

Super ユーザに切替
$ su

ユーザ hoo に切替
$ su hoo

グループ名とプライマリグループIDの一覧を表示
$ sudo dscl . -list /Groups PrimaryGroupID

ユーザ名とプライマリグループIDの一覧を表示
$ sudo dscl . -list /Users PrimaryGroupID

ユーザ名と UID の一覧を表示
$ sudo dscl . -list /Users UniqueID

ユーザのIDを確認する
$ id foo

users というグループの詳細を参照する
$ sudo dscl . -read /Groups/users

foo というアカウント名のユーザの詳細を参照する
$ sudo dscl . -read /Users/foo

グループの作成 or gidの変更
$ sudo dscl . -create /Groups/users gid 601

ユーザの作成
$ sudo dscl . -create /Users/foo

ユーザのフルネームを設定 or 変更
$ sudo dscl . -create /Users/foo RealName foo



参考
http://shige-mon.blogspot.jp/2017/09/parallels-desktop-uid-0-parallels.html
http://shige-mon.blogspot.jp/2017/10/mac-oscui.html






【mac OS】CUIでユーザを作成する

■作成するユーザ

以下の設定のユーザを作成します
アカウント名foo
フルネーム (RealName)foo
アカウント (UID)foo (601)
グループusers (601)
ホームディレクトリ/Users/foo
ログインシェル/bin/bash

■ユーザの作成

$ sudo dscl . -create /Groups/users gid 601 $ sudo dscl . -create /Users/foo $ sudo dscl . -create /Users/foo RealName foo $ sudo dscl . -create /Users/foo UniqueID 601 $ sudo dscl . -create /Users/foo PrimaryGroupID 601 $ sudo dscl . -create /Users/foo NFSHomeDirectory /Users/foo $ sudo dscl . -create /Users/foo UserShell /bin/bash $ sudo passwd foo

■作成グループの確認

作成したグループを確認します $ sudo dscl . -read /Groups/users AppleMetaNodeLocation: /Local/Default GeneratedUID: 05416EC7-AD6E-47AB-A7D1-7752821BF5CE PrimaryGroupID: 601 RecordName: users RecordType: dsRecTypeStandard:Groups

■作成ユーザの確認 ・・・①

下記では、設定したホームディレクトリ、グループ、フルネーム、 アカウント名、アカウント (UID)、ログインシェルが確認できます $ sudo dscl . -read /Users/foo AppleMetaNodeLocation: /Local/Default AuthenticationAuthority: ;ShadowHash; ;Kerberosv5;;foo@LKDC:SHA1.E5FB873ECB88A3928DE07A18294D98A61EB3BFEE;LKDC:SHA1.E5FB873ECB88A3928DE07A18294D98A61EB3BFEE; GeneratedUID: BD01036A-109A-4005-8932-D2358643061F NFSHomeDirectory: /Users/foo Password: ******** PrimaryGroupID: 601 RealName: foo RecordName: foo RecordType: dsRecTypeStandard:Users UniqueID: 601 UserShell: /bin/bash

■ユーザのIDを確認する

$ id foo uid=601(foo) gid=601(users) groups=601(users)

■作成したユーザの属性変更

作成した時と同様のコマンドで、 上書きするイメージで設定すれば変更されます フルネーム (RealName) の変更 $ sudo dscl . -create /Users/foo RealName hoge

■ユーザ情報の別の確認方法

Linux のグループとユーザの関係について理解を深めるために、 以下の方法でユーザの情報を確認してみてください ユーザデータベース情報の更新、追加用コマンド $ chpass mac OS に登録したユーザの一覧を表示します $ dscl Entering interactive mode... (type "help" for commands) > cd Local/Default/Users /Local/Default/Users > ls ユーザ情報の確認 上記①と同じ結果が得られます /Local/Default/Users > cd (user) /Local/Default/Users/user > read ※ 以下でも情報を確認できます > cd /Contact/Users /Contact/Users > ls 参考 macのユーザ情報管理はOpenDirectoryだった http://fanblogs.jp/macyarounanoka/archive/137/0

■visudo について

Linuxとは異なるので、下記のコマンドでは 権限がないと怒られてしまいます $ visudo visudo: /etc/sudoers: Permission denied この場合は以下のようにするとよいです user$ su Password: sh-3.2# visudo visudo: /etc/sudoers.tmp unchanged 参考 http://l-w-i.net/t/macosx/dscl_002.txt https://qiita.com/matsubo/items/50a2530e6d6f9ac0645e https://suin.io/473 Macで管理者権限がなくなってしまった時の対処方法 http://underwoodmac.cocolog-nifty.com/blog/2010/08/mac-95c7.html GUI でログインシェルを確認、変更する方法 https://rcmdnk.com/blog/2015/05/25/computer-mac-bash-zsh/ Linuxにおけるグループとユーザについて https://begi.net/read/base/07.html

2017-10-02

bash & sh と source コマンドの違い

■前提

予め下記の sh ファイルをホームディレクトリに作成しておきます ~/goApp.sh ``` #!/bin/bash cd /Applications echo "Applicationディレクトリに移動" ``` ※「~」はホームディレクトリを表しています

■検証

bash と sh コマンドで、 sh ファイルを実行した場合は、 以下のようになります。 ~ user$ sh goApp.sh Applicationディレクトリに移動 ~ user$ source コマンドで、 sh ファイルを実行した場合は、 以下のようになります。 ~ user$ source goApp.sh Applicationディレクトリに移動 Applications user$ つまり、 bash コマンドや sh コマンドでは、 sh ファイル内で実行されるディレクトリ移動は、 shファイル内の処理のみで有効( sh ファイルの処理が終わるとなくなる) 一方 source コマンドでは、 sh ファイルを呼び出している 環境上の実行スクリプトとして実行されているため、 sh ファイルの処理が終わっても、 行った処理の効果が継続します

2017-09-29

nmap を mac OS にインストールする

■Nmap のソースファイルをダウンロード

下記のURLのページ中の 「Latest stable Nmap release tarball: nmap-7.60.tar.bz2」 からダウンロードします https://nmap.org/download.html

■ソースファイルの解凍

下記を実行して、解凍します #ダウンロードディレクトリに移動 $ cd ~/Downloads/ #tar コマンドで解凍 $ tar xjvf nmap-7.60.tar.bz2

■インストール

下記を実行し、インストールします $ cd nmap-7.60 $ ./configure $ make $ sudo make install このコードではそれぞれ  環境を調査し、Makefileの作成  ソースコードのコンパイル  バイナリファイルのコピー(インストール) を行っています

■動作確認

下記を実行し、ホームディレクトリに移動し、 バージョン情報を確認して動作確認します $ cd ~/ $ nmap -V 参考 https://macperson.net/mac-nmap/

2017-09-28

mac OS から Ubuntu へリモートデスクトップで操作する

ローカル環境でUbuntuをリモートデスクトップで操作する方法になります。



■dconfエディター のインストール


Ubuntu 側で Ctrl + Alt + T でターミナルを起動し、
下記を入力し、dconf-toolsをインストールします。
sudo apt-get install dconf-tools



■Ubuntu側の設定


コンピューターを検索で「dconf-tools」と入力すると、
「dconfエディター」が表示されるので起動します。

dconf > org > gnome > desktop > remote-access と進み、
「enabled」にチェック
「require-encryption」のチェックをはずします。



■デスクトップの共有の設定


コンピューターを検索で「des」まで入力すると、
「デスクトップの共有」が表示されるので起動します。

以下にチェックし、パスワードを設定します。
「他のユーザーが自分のデスクトップを表示できる」
「他のユーザーがデスクトップを操作できる」
「パスワードの入力を要求する」

以下はチェックを外しておきます。
「このマシンへの接続を毎回確認する」



■IPアドレスの確認


Ubuntu 側で Ctrl + Alt + T でターミナルを起動し、
下記を入力して Ubuntu 側のIPアドレスを確認します。
$ ip route



■mac OS から Ubuntu へ接続


Finder で cmd + k で「サーバへ接続」を起動し、
先程確認したIPアドレスを下記のように入力して接続します。
vnc://IPアドレス



参考
https://wp.me/p9t947-ab
http://webnetforce.net/ubuntu-14-04%E3%81%A7%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E5%85%B1%E6%9C%89%E3%82%92%E4%BD%BF%E3%81%84%E3%80%81mac%E3%81%8B%E3%82%89%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B/
https://qiita.com/sharow/items/66d89136180884a2f7b7
http://tokixy56.hatenablog.com/entry/2016/03/13/204354



【Swift 3.1】プロジェクト作成テンプレート

・新規にプロジェクト作成から、シミュレーターで最初の画面を表示するまでです
・ストーリーボードは使いません


■新規のプロジェクト作成をします


■ストーリーボードを削除します


■プロジェクトプロパティの
General > Deployment Info > Main Interface
を空欄にします


■AppDelegate.swiftの編集
AppDelegate.swiftを下記のように編集します
```
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()

        return true
    }
```



■おまけ(表示確認)
ViewController.swiftを下記のように編集します
背景の変更とテキスト入力欄を配置しています
```
    private var myTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.view.backgroundColor = UIColor.white    // Viewの背景色を変更

        // UITextFieldの配置するx,yと幅と高さを設定.
        let tWidth: CGFloat = 200
        let tHeight: CGFloat = 30
        let posX: CGFloat = (self.view.bounds.width - tWidth)/2
        let posY: CGFloat = (self.view.bounds.height - tHeight)*2/10
        
        // UITextFieldを作成する.
        myTextField = UITextField(frame: CGRect(x: posX, y: posY, width: tWidth, height: tHeight))
        myTextField.text = "Hello TextField"        // 初期値
        myTextField.borderStyle = .roundedRect        // 枠を表示する.
        myTextField.clearButtonMode = .whileEditing        // クリアボタンを追加.
        self.view.addSubview(myTextField)        // Viewに追加する
        
    }
```






2017-09-27

iOSアプリの実機テストの方法

■前提

アプリの開発元として登録するApple ID(アップグレード済) ※ アップグレード済みとは、アカウントを発行してから、 下記のサイトにログインし、登録したメールアドレスの認証が 済んでいるアカウントのことをさします。 https://appleid.apple.com/#!&page=signin アップグレードが済んでいないと、 Team に Apple ID を登録するときにエラーが発生します

■デバイスをMacに接続する

■接続したPCを信頼するか選択肢が表示されるので、信頼する

■テスト実行

Xcodeの上部にデバイスを選択する場所があるので、そこから実機を選択する 以下がエラーとして発生している場合、 プロジェクトのプロパティで Team が設定されているかを確認します
Signing for *** requires a development team. Select a development team in the project editor. Code signing is required for product type 'Application' in SDK 'iOS 10.3'


■Team の設定

プロジェクトのプロパティで General > Signing にある Team を None から、 利用するApple ID を設定します この時エラーでアカウントを設定できないときは、 アカウントのアップグレードが済んでいるかを確認してください (■前提を参照)

■信頼済開発元の登録

テスト実行時に以下が表示された場合は、 実機テストするデバイス側の設定をします
Verify the Developer App certificate for your account is trusted on your device. Open Settings on KNのiPhone and navigate to General -> Device Management, then select your Developer App certificate to trust it.
デバイスの設定で
設定 > 一般 > デバイス管理 
から、Teamで登録した開発元を信頼します


参考
http://tech.pjin.jp/blog/2016/03/25/%E3%80%90xcode%E3%80%91%E8%AA%B0%E3%81%A7%E3%82%82%E3%82%8F%E3%81%8B%E3%82%8Biphone%E5%AE%9F%E6%A9%9F%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%89%8B%E9%A0%86%E3%81%BE%E3%81%A8%E3%82%81/
http://yoichirowatanabe.hatenablog.com/entry/2016/10/19/180900






Parallels Desktopのアップデート時のエラーを回避する

# 概要

Parallels Desktopのアップデート時に

「お使いのシステム内の UID 0 に非ルートユーザアカウントがあるため、Parallels Desktopをインストールできません。問題ID: 15476」

というエラーでアップデートができなかったときの対処法



# 前提

macOS Sierra 10.12.5(16F73)
Parallels Desktop 12 for Mac バージョン 12.2.1 (41615)



# 原因の特定

```dscl . -list /Users UniqueID```

で出てきたUIDの一覧で、0に非ルートユーザの割当がないかを確認する。
http://kb.parallels.com/jp/122763



# 対処法

以下のコマンドでUIDを変更する
念のために重複しないように、かつ501以降の数字で指定した。

**uid 変更**
```sudo dscl . -create /users/(変更するユーザ) uid (変更先UID)```
**例**
```sudo dscl . -create /users/hoge uid 502```
http://blog.livedoor.jp/kosugip/archives/1715571.html






Storyboardを使わずにコードだけで画面を生成、遷移をする

■Storyboardを削除します

■Main Interfaceの変更

左側のプロジェクトディレクトリを選択すると、プロジェクトのプロパティが表示されます その中の General > Deployment Info > Main Interface の部分を空欄にしておきます

■ソースコード

下記のように編集します ```swift: AppDelegate.swift import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = MainTabBarViewController() window?.makeKeyAndVisible() return true } func applicationWillResignActive(_ application: UIApplication) { } func applicationDidEnterBackground(_ application: UIApplication) { } func applicationWillEnterForeground(_ application: UIApplication) { } func applicationDidBecomeActive(_ application: UIApplication) { } func applicationWillTerminate(_ application: UIApplication) { } } ``` ```Swift: Nav1ViewController.swift // 初期表示されるpushボタンがあるページ import UIKit import SnapKit final class Nav1ViewController: UIViewController { private lazy var container: UIView = { let container = UIView() container.backgroundColor = UIColor.gray let button = UIButton(type: .system) container.addSubview(button) button.setTitle("push", for: .normal) button.tintColor = UIColor.white button.backgroundColor = UIColor.blue button.addTarget(self, action: #selector(onTappedPush(_:)), for: .touchUpInside) button.snp.makeConstraints { make in make.width.equalTo(200) make.height.equalTo(40) make.center.equalTo(container) } return container }() override func viewDidLoad() { super.viewDidLoad() navigationItem.title = "Nav1" self.view.addSubview(container) container.snp.makeConstraints { make in make.edges.equalToSuperview() } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func onTappedPush(_ sender: UIButton) { print(sender) let vc = SecondViewController(titleName: "second") navigationController?.pushViewController(vc, animated: true) } } ``` ```Swift: SecondViewController.swift // ボタンの遷移先画面 import Foundation import UIKit final class SecondViewController: UIViewController { let titleName: String init(titleName: String) { self.titleName = titleName super.init(nibName: nil, bundle: nil) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } private lazy var container: UIView = { let container = UIView() container.backgroundColor = UIColor.yellow return container }() override func viewDidLoad() { super.viewDidLoad() navigationItem.title = titleName self.view.addSubview(container) container.snp.makeConstraints { make in make.edges.equalToSuperview() } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ``` ```Swift: Nav2ViewController.swift // 2つ目のタブの画面 import Foundation import UIKit final class Nav2ViewController: UIViewController { private lazy var tableView: UITableView = { let tableView = UITableView() tableView.delegate = self tableView.dataSource = self return tableView }() override func viewDidLoad() { super.viewDidLoad() navigationItem.title = "Nav2" view = tableView } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension Nav2ViewController: UITableViewDelegate { } extension Nav2ViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { return UITableViewCell() } public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 } } ``` ```Swift: MainTabBarViewController.swift // AppDelegate.swift で起動時に開くように指定されている下部のタブ部分 import Foundation import UIKit final class MainTabBarViewController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() let vc = Nav1ViewController() // コントローラのインスタンス vc.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 1) // bookmarksという名前でタブとして組み込む let nv = UINavigationController(rootViewController: vc) let vc2 = Nav2ViewController() vc2.tabBarItem = UITabBarItem(tabBarSystemItem: .downloads, tag: 2) let nv2 = UINavigationController(rootViewController: vc2) setViewControllers([nv, nv2], animated: false) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ```

※ SnapKit

このコードではSnapKitを使っているので、 SnapKitの導入が必要になります この記事を参考にしてください http://shige-mon.blogspot.jp/2017/09/cocoapodssnapkit.html

参考

http://qiita.com/star__hoshi/items/b38cf99457e781ed7625

cocoaPodsを使って、SnapKitをプロジェクトに導入する

import SnapKit
と書いて

No such module 'SnapKit'
と怒られてしまった人のためのメモです


2017年9月26日時点で成功した方法を記述しています。



■cocoapods とは

ライブラリを管理するためのライブラリです。


cocoapods 導入した時に生成される Podfile の中身を
編集して、 pod install のコマンドを打つだけで
設定したライブラリを自動的に導入してくれます。


2017年10月時点では、iOSアプリ開発では
一般的に使われているツールのようです。



■cocoapodsのインストール

以下を実行して、Rubyを最新にします
$ sudo gem update --system
RubyGems system software updated


以下を実行して、インストールをします
$ sudo gem install -n /usr/local/bin cocoapods


$ pod setup
CocoaPods 1.4.0.beta.1 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.4.0.beta.1
Setup completed



■Podfileの作成

プロジェクトフォルダに移動し、以下を実行します $pod init この操作で Podfile は自動的に生成されます

■Podfileを編集

アプリ名/Podfileを以下のように編集します ``` # Uncomment the next line to define a global platform for your project # platform :ios, '9.0'
target 'Omikuji' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
  # ここにimportで使うライブラリを記述します
  pod 'SnapKit', '>=3.2.0'

  # Pods for Omikuji

  target 'OmikujiTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'OmikujiUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
```


※ このファイルを編集する際は(このファイルに限りませんが)、
mac OS標準のテキストエディットを使わないようにしてください。

スマート引用符の自動置換により、無効な文字が混入される可能性が高くなります。
混入された場合は、大体以下のようなエラーメッセージが出ます
[!] Smart quotes were detected and ignored in your Podfile. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

※ cocoapodのバージョン管理
ライブラリのバージョンの指定方法は、以下を参考にしてみてください
https://hacknote.jp/archives/15217/

SnapKitの最新バージョン
https://github.com/SnapKit/SnapKit/releases



■ライブラリのインストール

以下をプロジェクトフォルダ内で実行します $ pod install Analyzing dependencies Downloading dependencies Installing SnapKit (3.2.0) Generating Pods project Integrating client project
[!] Please close any current Xcode sessions and use `Omikuji.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

[!] Automatically assigning platform ios with version 10.3 on target Omikuji because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.


※ エラーパターン

下記が出た場合は、記述内容に誤りがある可能性があるので、もう一度内容を確認してみてください。
改行コードも問題になる場合があるそうなので、改行を削除して新たに入力し直して実行もしてみてください
[!] Invalid `Podfile` file: syntax error, unexpected tCONSTANT, expecting end-of-input.


下記が出た場合はメソッド名のミスですので Pod → pod と修正するといいです
[!] Invalid `Podfile` file: undefined method `Pod' for #.

# from /Users/Shared/sko-fsf/X-Project/TransView/Podfile:8
# -------------------------------------------
#
> Pod 'SnapKit','>=3.2.0'
#
# -------------------------------------------




■xcworkspaceを開く

一度Xcodeを閉じて、プロジェクトフォルダ内に作成された 『アプリ名.xcworkspace』でプロジェクトを開きます ターミナルでは、プロジェクトフォルダまで移動し、以下を実行することで開けます $ open /Applications/Xcode.app/ アプリ名.xcworkspace pod installを実行すると 『アプリ名.xcworkspace』ができるので 今までアプリを開発する際は 『アプリ名.xcodeproj』 を開いていましたが、 『アプリ名.xcworkspace』 を開くようにします

■ビルド

プロジェクトを開いたら、cmd + B でビルドを実行しましょう import SnapKit 部分のエラーが消えることが確認できます

参考

cocoapodsのインストール方法
https://qiita.com/satoken0417/items/479bcdf91cff2634ffb1

cocoapodsの削除方法
https://qiita.com/ka0ru19/items/fe2611de71bb363c9537

全体の流れ
http://programming-beginner-memo.com/?p=101

podfile内のライブラリの追加の仕方
http://programming-beginner-memo.com/?p=606

ビルドを忘れずに
https://qiita.com/fksk/items/9e5fdc201af4f03f2dec

cocoaPodsを使って、SnapKitをプロジェクトに導入する
http://shigemon.jp/%E6%9C%AA%E5%88%86%E9%A1%9E/cocoapods-snapkit/





2017-09-26

Xcodeの使い方あれこれ

簡単なんだけど、初見では検索しないと解決できなかった基本操作を記録します。


■ファイル名の変更

右側のサイドバーを表示させるとファイルに関するプロパティを表示できる

■シミュレーターが途中でストップ

ソースコード上で Thread 1: breakpoint 1.1 と表示されているのは、自身で設定した(してしまった)ブレイクポイントで 処理が一時停止している状態です cmd + ctrl + y で引き続き処理を続行できます ソースコード下部に表示される適当な再生ボタンを押してみてください

■シミュレーターが途中でストップ2

ソースコード上で Thread 1:signal SIGABRT が出てシミュレーターの起動が止まった場合は コードとUI部品がうまくつながっていない可能性があります また、プロジェクトのプロパティの General > Deployment Info > Main Interface の設定が正しくない可能性があります

■シミュレータの操作アキーボードを閉じる

ソフトウェアキーボードを閉じる シミュレーターを操作しているときに、キーボードをしまうには Esc キーでできます ホームボタンを押す操作 shift + cmd + H 参考 https://qiita.com/evistream/items/b83f75d6934efa9ee115

2017-09-25

【Django入門】Mac環境にDjangoを導入する2(アプリケーション作成)




◆前回


前記事では、仮想環境を構築し、Djangoをインストール、
プロジェクトの作成とDB設定まで行いました。
【Django入門】Mac環境にDjangoを導入する1(環境構築とプロジェクト作成)


Djangoでは、プロジェクトーアプリケーション という構造をしています。
本記事では、作成したプロジェクトにアプリケーションを作成する作業を行います。




◆アプリケーションのインストール


■アプリケーションインストール


作成した仮想環境のディレクトリまで移動し、以下を実行します
myvenv user$ python3 manage.py startapp blog
$ tree -L 1 .
.
├── bin
├── blog
├── db.sqlite3
├── include
├── lib
├── manage.py
├── myapp
├── pip-selfcheck.json
└── pyvenv.cfg




■myapp/settings.pyファイルの編集


使用するアプリケーションをDjango上で定義します

```
# Application definition
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)
```




■モデルの作成


blog/models.pyのファイルを以下のように編集します

```
from django.db import models
from django.utils import timezone

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title  = models.CharField(max_length=200)
    text   = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title
```




■マイグレーションファイルの作成


$ python3 manage.py makemigrations blog
Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model Post




■マイグレーションの実行


$ python3 manage.py migrate blog
Operations to perform:
  Apply all migrations: blog
Running migrations:
  Applying blog.0001_initial... OK




■Django adminの設定


blog/admin.pyファイルを下記に変更します

```
from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)
```




■superuser (サイトの管理者) の作成


$ source ./bin/activate
$ python manage.py createsuperuser
Username (leave blank to use 'sko'): admin
Email address: # メールアドレスを設定
Password: # パスワードを入力
Password (again): # パスワードをもう一度入力
Superuser created successfully.




■動作確認


以下にアクセスし、設定したユーザ名とパスワードを入力して
ログインできることを確認します。
http://127.0.0.1:8000/admin/blog/

※もちろんサーバを起動しておくことを忘れないでください





◆ルーティングの設定


■myapp/urls.pyの設定


以下のように設定します

```
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('blog.urls')),
]
```




■blog/urls.pyの作成


blog/urls.pyという空ファイルを作成し、以下のように編集します

```
from django.conf.urls import url
from . import views

urlpatterns = [
    # 'http://127.0.0.1:8000/'へのアクセスは views.post_list を返す
    url(r'^$', views.post_list),
]
```




■Viewの作成


blog/views.pyを下記の内容で作成します

```
from django.shortcuts import render

# Create your views here.
def post_list(request):
    return render(request, 'blog/post_list.html', {})
```




■Templateの作成


Template用のディレクトリを作成します

$ mkdir blog/templates
$ mkdir blog/templates/blog


ここへpost_list.html を作成します

```
<html>
    <p>Hi there!</p>
    <p>It works!</p>
</html>
```




■動作確認


下記にアクセスします。
http://127.0.0.1:8000/


すると、下記の html ファイルを表示します
/Django_app/myvenv/blog/templates/blog/post_list.html




参考
https://qiita.com/yoshizaki_kkgk/items/c9a5299b77b99ff07e4a






Mac上のMAMPでローカルにバーチャルホストを設定する方法




■前提



MAMPをインストールしておきます
インストールしたら、設定は変えずにその状態で
サーバが正しく起動できることを確認しておいてください。




■手順



ルートディレクトリの用意
httpd.confファイルの編集
httpd-vhosts.confファイルの編集




■ルートティレクトリの用意



\Applications\MAMP\htdocs\
のディレクトリに「test01」フォルダを作成します。

作成したフォルダ内に適当な文言を記述したindex.htmlを入れてください。




■httpd.confファイルを編集



ファイルの場所は下記です
\Applications\MAMP\conf\apache\httpd.conf

「# Virtual hosts」で検索すると、以下の部分が該当すると思いますので、
コメントアウト(#のこと)を削除して、設定ファイルを有効化します

```
# Virtual hosts
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
```

```
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
```




■httpd-vhosts.confファイルを編集



ファイルの場所は下記です
\Applications\MAMP\conf\apache\extra\httpd-vhosts.conf

このファイルの最後に下記を追記します

```
Listen 8001
<VirtualHost *:8001>
DocumentRoot "/Applications/MAMP/htdocs/test01"
</virtualhost>

Listen 8002
<VirtualHost *:8002>
DocumentRoot "/Applications/MAMP/htdocs/test02"
</VirtualHost>
```




■補足説明



以上の設定は、

http://localhost:8001/
を開いたときは、

"/Applications/MAMP/htdocs/test01"
のファイルを参照してください。
というような設定になります。

この設定単位を複数用意することで、
複数のローカルホストを使い分けることができます。




■動作確認



MAMPのサーバを再起動します。
下記にアクセスします。
http://localhost:8001/




■デバッグ



下記でログを参照できるので、うまく動かない時は
ログの error をヒントにしてみてください

$ tail /Applications/MAMP/logs/apache_error.log




参考
Mac上のMAMPでローカルにバーチャルホストを設定する方法
http://shigemon.jp/archives/356
http://kunkun.pya.jp/basic_design/notebook/local-mamp/






2017-09-22

【Django入門】Mac環境にDjangoを導入する1(環境構築とプロジェクト作成)

◆対象

Pythonをやりたい! とりあえずメジャーなフレームワークで構築してみよう Djangoで構築 という方の手順を記録してみました。

■Pythonの動作確認

$ python3 --version Python 3.5.2 動作が確認取れない場合はPythonをインストールする

◆仮想環境構築

以下で仮想環境を構築する
仮想環境には virtualenv、venv がありますが、
virtualenv がデファクトスタンダードらしいです。


venvは、virtualenvみたいな機能を標準でもサポートしようぜ!
ということでPython3.3から追加された標準モジュールのようです。


下記では、venv で作成しています。



■ディレクトリの作成

まず、仮想環境を作成したいディレクトリまで移動します $ mkdir sample_app $ cd sample_app

■仮想環境を作成する

$ python3 -m venv myvenv

■ディレクトリが作成されたことを確認

$ ls myvenv

■treeにより作成されたディレクトリ内容を確認してみる

treeをインストールしていない場合はインストールする $ brew install tree treeによるディレクトリ内容を確認 $ tree -L 1 myvenv myvenv ├── bin ├── include ├── lib └── pyvenv.cfg

■Djangoインストール

myvenv user$ pip3 install Django==1.11.5

◆プロジェクト作成

■現在位置の確認

$ pwd /Users/#{myname}/Desktop/sample_app/myapp $ tree -L 1 . . ├── bin ├── include ├── lib └── pyvenv.cfg

■プロジェクトを作成する

$ django-admin startproject myapp . $ ls bin lib myapp include manage.py pyvenv.cfg $ tree -L 1 . . ├── bin ├── include ├── lib ├── manage.py ├── myapp └── pyvenv.cfg

■設定ファイル内のタイムゾーンを変更する

Vimを使って編集してみました $ cd myapp $ vim settings.py 以下の内容に変更します ``` # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'ja' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Tokyo' USE_I18N = True USE_L10N = True # USE_TZ = True USE_TZ = False ```

■データベースの設定

SQLiteを使用する場合は myapp/settings.py の中に以下が記載されています。 MySQL、PostgreSQLを使う場合は応じて変更が必要 ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ```

■DBのマイグレーション

SQLite3動作確認(macには予めインストールされている) $ sqlite3 -version マイグレーションの実行 $ ls bin lib myapp include manage.py pyvenv.cfg $ source ./bin/activate $ python manage.py migrate $ python3 manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK

◆動作確認

■サーバ起動

$ python manage.py runserver $ python3 manage.py runserver Performing system checks... System check identified no issues (0 silenced). You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. September 22, 2017 - 15:22:03 Django version 1.11.5, using settings 'myapp.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

■動作確認

下記にアクセスします。 http://127.0.0.1:8000/ 参考 https://qiita.com/yoshizaki_kkgk/items/f3c79e38b802c7fc8863 https://qiita.com/maskedw/items/aaa2fd7abfd493cf2820 https://teratail.com/questions/64846 https://teratail.com/questions/82246

■次回記事

【Django入門】Mac環境にDjangoを導入する2(アプリケーション作成) http://shige-mon.blogspot.jp/2017/09/djangomacdjango.html

2017-08-17

MinerGateを使ったマイニングメモ

■MinerGateを使って気軽にマイニングを始める

まずは最短でマイニングを始める方法を示します。
以下のリンクから、MinerGateをダウンロードします。
https://minergate.com/a/e4c7f954296afd4b2fc94cfd


適当なメールアドレスとパスワードで登録を進めます。






■仮想通貨入門

http://ysklog.net/virtual-currency/5199.html



■マイニングする仮想通貨の選択

最低限コインマーケットキャップ(http://coinmarketcap.com)に
掲載されているものから選ぶ。


■CPUでしかマイニングできない仮想通貨

BitZeny、Monacoin



■coincheckに登録する

→ 日本語が対応している取引所の中で、最も仮想通貨の取扱が多い
MinerGateでマイニングした通貨を換金できる



■coincheckを利用するときにやってはいけないこと

http://hitoriblog.com/?p=50407



■仮想通貨の時価総額や値段の一覧

https://coinmarketcap.com/all/views/all/#JPY



■【CentOS7】VPSでマイニング(採掘)する方法

http://ysklog.net/server/4652.html



■マイニングソフト


・mac OS

MinerGate

http://www.monero.tokyo/entry/20170624/1498298060
http://altcoins.blue/minergate/


・Windows

Bitcoin Miner(Windows10)
NiceHash Miner(64bit専用)
MinerGate(Windows7,Windows10)


NiceHash-Minerのダウンロードインストール

http://handsm.hatenablog.com/entry/2017/06/22/190000#


■Minergateの仮想通貨略称

略称名称時価総額順位
ETHEthereum2
ETCEthereum Classic10
XMRMonero11
BCNBytecoin30
XDNDigitalNote164
AEONAeon coin197
FCNFantomcoin389
DSHDashcoin390
QCNQuazarCoin442
MCNMonetaVerde344(ほとんど不明)
INF8Infinium-8圏外

※DSH: DASH(Dash)とは異なる超マイナーな通貨のようです


ここでログインして見ると載ってました
https://minergate.com/internal




参考
http://gacciri.com/virtual_currency_total_value/

MinerGateを使ったマイニングメモ
http://shigemon.jp/%E6%9C%AA%E5%88%86%E9%A1%9E/minergate/



bitFlyer ビットコインを始めるなら安心・安全な取引所で ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin