20200817のMacに関する記事は9件です。

HTMLを始めるには

この記事の対象者

・webプログラムを始めて見たい人
・デフォルトのテキストエディタでコードを書いている人

web開発には何が必要?

ウェブ開発には主に二つのアプリケーションが必要で、ブラウザテイストエディターです。
※あくまで僕の場合ですが
ウェブサイト制作は始めにイメージを固める為にデザインの大枠を紙に書いてから、htmlcssファイルを作りコードを書いて、必要に応じてJavaScriptやphpを追加して行く感じです。
パソコンに入っているmacならテキストエディターwindowsならメモ帳を使う事でプログラムを書く事が出来ますが、それらのアプリはプログラムに特化していない為自動補完機能などが搭載されていません。そこでwebプログラミングに特化したテキストエディターを使う事でより快適に開発をする事が出来ます。(ブラウザは多くの人が使っているGoogleChromeがおすすめです。)

おすすめのテキストエディターは?

プログラムに特化したテキストエディターならVisual Studio Codeやサブライムテキストなどもあります。その中でもbracketsはシンプルで尚且つ拡張性が高いのでおすすめです(Atomもおすすめです)。今回はbracketsのセットアップについて解説します。

Bracketsをインストール

まずは公式サイトからインストーラをダウンロードします。ダウンロード出来たらインストーラを開いて待つだけです。スクリーンショット 2020-08-17 22.18.16.png
処理が終わると上の写真の様になるのでbracketsをフォルダーに追加してから起動してくだいさい。スクリーンショット 2020-08-17 22.25.43.png
上の様なウィンドウが表示されたら成功です。

Bracketsをカスタマイズ

次はいよいよ拡張機能を追加して行きます。この記事で追加するのはEmmetBeautifyで、コードの補完の補完機能とコードのインデントを自動で綺麗にしてくれる機能です。追加方法は簡単で、右上から2番目にあるブロックマークを押してemmetと検索してください。スクリーンショット 2020-08-17 22.37.15.pngそうすると上画像の様になると思うので黄色い枠で囲った方をインストールして下さい。次はbeautifyと検索して下さい。スクリーンショット 2020-08-17 22.43.15.png
こちらも、先ほどと同じ様に黄色の枠で囲った物をインストールしてくだいさい。もしインストールが成功している場合は右上から3番目にステッキの様なアイコンが見えます。もしアイコンがなかったらアプリを再起動するなり再度インストールをし直したりして見て下さい。

Bracketsを使って見る

拡張機能もインストールした所で実際に少しだけコードを書いて見ましょう。
始めにfinderで書類のフォルダーの中に新規のフォルダーを作り、MyWEBとでも名前を付けましょう。次にbracketsでcommand+Nで新規ファイルを作りcommand+Sでindex.htmlと名前を変えて先ほど作ったフォルダーに入れて保存すれば準備はバンタンです。それでは始めに!を入力した後にtobキーを押して見て下さい。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

</body>
</html>

上のようなコードが出現するはずです。これが補完機能と言うヤツです。この機能はtobを押す事で実現出来ます。もう少し使って見ましょう。headのでカーソルをクリックしてlinkと入力してtobキーを押して見ましょう。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="">
    <title>Document</title>
</head>
<body>

</body>
</html>

このlinkはhtmlとcssの関連付けに使う物でhrefの中にcssファイルの名前を入れる事によって関連付けをしてしています。次に実際ブラウザでhtmlファイルを開いて見ましょう右上の稲妻ののようなアイコンをクリックするとページが開けるのが分かると思います。今回は使いませんでしたが、自分でコードをが見づらくなってしまう事があります。なのでその時は綺麗にしたいファイルを選択してからステッキのアイコンをクリックして見てくだいさい。劇的に見やすくなるはずです。

最後に

最後まで記事を読んでくれてありがとうございました。久しぶりに記事を書いたので、間違っている所があるかもしてませんがその時はコメントで教えてくれると嬉しいです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

githubの初期設定

内容

  • macでgithubを使うための初期設定

目的

  • 忘れないようにメモ
  • アウトプットすることで頭の整理
  • 間違ってる箇所もあるかもしれないので都度編集します

gitとgithubとは

  • gitとは

     「分散バージョン管理システム」のこと。
     チームで開発等をするときに、複数人が同じファイルを同時に変更した場合コンフリクトが起きる。
     じゃあ各々が編集したいファイルをコピーして編集、その後それぞれの変更点だけ元のファイルに反映出来たら最高じゃん、的なことが出来る管理ツール。

     リモートリポジトリ(上でいうところの元ファイルのありか)と、ローカルディレクトリ(上でいうところの各々でコピーしてきたところ)で管理する。
     リモートリポジトリが本物でローカルリポジトリがコピーみたいなイメージ。

  • githubとは

     gitの使用を支援するよというサービス。
     リモートリポジトリをクラウド上に作成できるので、遠く離れていても管理が可能。
     他にもいろいろあるが割愛。

1.macにgitをインストール

#ユーザー名、メールアドレスは自由に
git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"

2.githubでリポジトリ作成(リモートリポジトリ)

新規でリポジトリを作成する。
これが「リモートリポジトリ」になる。

3.ローカルリポジトリの作成

まずはgitで管理するディレクトリの作成。
これが「ローカルリポジトリ」になる。

#ここでは試しに「test」というディレクトリを作成
mkdir test
#作成後そのディレクトリに移動しておく
cd test

作成したフォルダをgitで管理できるようにする
要するにローカルリポジトリにする。

#下記のコマンドで現在のディレクトリをgitで管理できるようにする
git init
#下記コマンドで、先ほど作成したリモートリポジトリと紐づける事で
#ローカルリポジトリとなる
#このコマンドはプッシュ先のリモートを指定するコマンド
#<URL>には、githubで作成したリポジトリのURLを指定
git remote add origin <URL>

4.リモートにプッシュしてみる

まずはローカルになんでも良いのでファイルを作成し、それをpushしてみる。
ファイルを作成するのは3で作成したディレクトリ内。

#sample.txtの作成
touch sample.txt
#以下コマンドを実行すると上で作成したファイル(ex:sample.txt)が赤文字で表示される
#編集したファイルをaddする
git add sample.txt
#ちゃんとaddできたか確認(今度は赤じゃなくて緑色に変わってます)
git status
#確認できたらcommitします
git commit -m "first push"
#今回はとりあえずそのままpush
git push origin master

githubのページを確認し、sample.txtが表示されていれば成功。

補足

addcommitpushとか出てきたけど一体何をしているのか?

  • add
     gitの性質上、ローカルリポジトリで編集しただけで終わりではなくそれをリモートリポジトリに共有しなくては意味がない。
     という事で、まずはどのファイルをローカルに共有するかを決めなくてはならない。
     git add <ファイル名>とする事で、そのファイルを共有しますよーとりあえず宣言します。
     (正確にはインデックスに登録)

  • commit
     コミットすることで、前回の更新からどんな変更があったか等の情報を記録することが出来る。
     不具合が起きたときにこのログが役に立つ(らしい)。
     -m "<コメント>" でどんな修正を行ったか一言加えておくのが普通。

  • push

     最後に登録したファイルを実際にリモートに反映するのがpush。
     git push origin <ブランチ名>
     今回はmasterに直接pushしたが実際masterにpushはあまりしない。(個人開発ならするのか?)
     ブランチについては別の記事で記載予定。

補足2

2台以上で同じリモートを設定したい場合、2台目の設定がよく分からず少しつまずいたのでメモ。
結果的には至極単純。

git clone <リモートリポジトリのURL>

これだけ。笑
無知って怖い。。。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

コラッツ数、フィボナッチ数、三角数 色んな数列のプログラム作ってみた

何かQiitaに投稿できそうなネタは無いかなーーとフォルダを漁っていると、
6年以上前にProjectEulerちょっとやってみてた時のスクリプトを掘り起こしたので、
それを書きます(第2段)

実行環境は下記になります。
ruby 2.6.3p62
macOS Catalina 10.15.6
zsh

コラッツ数を生成する

・偶数の場合、2で割る。
・奇数の場合、3を掛け1を足す。
のようにして進む数列。
数が大きいからと言って数列が長くなるとも限らず、なんとも不思議。
詳細で正確な解説は下記参照。
https://ja.wikipedia.org/wiki/コラッツの問題

collatz_number.rb
def get_collatz_next_number(num)
    if num.even? then
        return num / 2
    elsif num == 1 then
        return nil
    else
        return (num * 3) + 1
    end
end
def create_collatz_sequence(num)
    cltz_ary = Array.new

    new_num = num
    cltz_ary.push new_num

    new_num = get_collatz_next_number(new_num)
    while !(new_num.nil?) do 
        cltz_ary.push new_num
        new_num = get_collatz_next_number(new_num)
    end

    return cltz_ary
end

p create_collatz_sequence (26)
p "===="
p create_collatz_sequence (27)
p "===="
p create_collatz_sequence (28)
p "===="
p create_collatz_sequence (1652)

下記実行結果になります。

% ruby collatz_number.rb
[26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
"===="
[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
"===="
[28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
"===="
[1652, 826, 413, 1240, 620, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]

フィボナッチ数列を生成する

任意の数がその前の数と前の前の数の和になっている数列のこと。
fizz,buzzの次くらいにプログラムの問題として良く出てくる印象。
詳細で正確な解説は下記参照。
https://ja.wikipedia.org/wiki/フィボナッチ数

fibonacci_sequence.rb
def create_fibonacci_sequence( term1, term2, max_term)
    fibo_ary = Array.new
    fibo_ary.push term1
    fibo_ary.push term2

    new_num = 0
    i = 2
    new_num = fibo_ary[i-1] + fibo_ary[i-2]
    while new_num <= max_term do 
        fibo_ary.push new_num
        i += 1
        new_num = fibo_ary[i-1] + fibo_ary[i-2]
    end

    return fibo_ary
end

p create_fibonacci_sequence(0,1,10946)

実行結果は下記になります。

% ruby fibonacci_sequence.rb
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946]

三角数を生成する

+2,+3,+4,+5,...と増加していく数列のことです。
点の数とすると正三角形に並べられるから三角数と呼ぶみたいです。洒落てますね。
詳細で正確な解説は下記参照。
https://ja.wikipedia.org/wiki/三角数

triangle_number.rb
def create_triangle_number (max_number)
    terms = Array.new

    i = 0
    current_number = 1
    while current_number <= max_number do
        terms.push current_number
        i += 1
        current_number = terms[i - 1] + i + 1
    end

    return terms
end

p create_triangle_number (1000)

実行結果は下記になります。

ruby triangle_number.rb   
[1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990]

以上です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

php artisan serveをしたらエラーになった

laravelで作成したプロジェクトでサーバを起動しようとしたところこのようなエラーがでた

Version
・PHP 7.4.9
・Composer 2.0.0-alpha3
・Laravel Installer 3.2.0

$php artisan serve

Laravel development server started: http://127.0.0.1:8000
Sun Aug 16 19:18:09 2020 (10355): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8001
Sun Aug 16 19:18:09 2020 (10356): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8002
Sun Aug 16 19:18:09 2020 (10357): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8003
Sun Aug 16 19:18:09 2020 (10358): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8004
Sun Aug 16 19:18:09 2020 (10359): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8005
Sun Aug 16 19:18:09 2020 (10360): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8006
Sun Aug 16 19:18:09 2020 (10361): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8007
Sun Aug 16 19:18:09 2020 (10362): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8008
Sun Aug 16 19:18:09 2020 (10363): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8009
Sun Aug 16 19:18:09 2020 (10364): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8010
Sun Aug 16 19:18:09 2020 (10365): Fatal Error Unable to create lock file: Bad file descriptor (9)

ロックファイルが作成できないらしい。

↓この人と同じ現象だったので、ルートのtmpディレクトリに書き込みの権限を与えたところ解決した。
https://stackoverflow.com/questions/39098717/fatal-error-unable-to-create-lock-file-bad-file-descriptor-9-while-running

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[VirtualBox]Macでの仮想環境の構築方法

仮想環境とは

「仮想環境」は、1台のPC内に、あたかも別のPCが入っているような環境をバーチャルで(仮想的に)作ることです。

仮想環境を構築すると、現在のPCの設定に影響を与えずに、別のPCとして開発環境を試すことができます。仮想環境は、不要になったら削除も可能です。

1.VirtualBoxをインストール

まず、VirtualBoxをインストールして、PC上に仮想環境を構築します。
下のリンクからOSに合わせてVirtualboxをダウンロードします。

OSがMojave・Catalina
https://download.virtualbox.org/virtualbox/6.0.14/VirtualBox-6.0.14-133895-OSX.dmg

それ以外
http://download.virtualbox.org/virtualbox/5.2.6/VirtualBox-5.2.6-120293-OSX.dmg

2.Vagrantをインストール

Vagrantは、仮想マシンを管理するツールで、Windows、Mac OS X、Linuxで動作します。
Vagrant自体には仮想化する機能はないため、仮想ソフトの操作をVirtualBoxで代行させています。

下記、Mac用のvagrantダウンロードページからダウンロードします。
https://releases.hashicorp.com/vagrant/2.2.4/vagrant_2.2.4_x86_64.dmg

3.Vagrantを起動する準備

3-1.「vagrant-vbguest」プラグインをインストール

vagrant-vbguestプラグインは、仮想マシンでの面倒な操作を肩代わりしてくれるプラグインです。 Macはターミナルを起動し、以下を入力します。
エラーが起きなければ、成功です。

$ vagrant plugin install vagrant-vbguest

3-2.Vagrantの初期設定を行う

初期設定を行うには、「Vagrantfile」を利用します。Vagrantfileは、Vagrantの初期設定が記述されたファイルです。

下記からファイルをダウンロードします。
https://wals.s3-ap-northeast-1.amazonaws.com/uploads/unit/vagrant/Vagrantfile

ダウンロードが完了したら、以下のコマンドを実行します。

$ cd Desktop
$ mkdir vagrant 
$ cd vagrant 

ディレクトリの作成を確認できたら、先ほどダウンロードした「Vagrantfile」を「vagrant」フォルダ内にコピーまたは移動します。

4.Vagrantを起動

以下のコマンドでvagrantを起動します。
起動までは1時間以上かかる場合があります。

$ vagrant up

5.仮想環境へSSH接続

vagrantを起動しただけでは、仮想環境へは接続できていませんので、SSH接続を行います。

SSH接続とは、自分のPCから他のPCへ安全に接続するために接続手法です。
以下の通り、接続します。

$ vagrant ssh

以下のようになれば、仮想環境への接続は成功です。

[vagrant@localhost ~]$
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Unity】macOS向けビルドしたアプリにドラッグアンドドロップを可能にするUniDragAndDropForMacを作りました

UnityからmacOS向けのアプリをビルドして、そのアプリに対しドラッグアンドドロップを実装するという知見は、僕が調べた限り見つける事は出来なかったため、UniDragAndDropForMacというネイティブプラグインを作りました。
macDD.gif
GitHub:baobao/UniDragAndDropForMac

以下技術的な話になります。

そもそも出来るのか?

参考 : 【Unity】【C#】ランタイム時にファイルをドラッグ&ドロップして取得する(Windows のみ)
調査する中Windows版での実装方法は見つかりました。ソースをチラ見すると、どうやらWindowsのネイティブ機能を使って実装している事が分かったので、macOSでも同様にネイティブの機能を使えば実装できるだろうと思いました。

用意されていないネイティブ機能を使う場合はネイティブプラグインで解決させる

まずはCocoaフレームワークの中にドラッグアンドドロップのAPIを調査します。

Swiftはほぼほぼ未経験だったので、成果物を作り上げるスピードを優先させるため今回はObjective-C(以下:ObjC)で実装することにしました(後者の記事を参考にさせて頂きました)。

  • C#側からObjCに文字列(ファイルパス)を送ってもらう関数ポインタを渡す
  • Unityが作ったネイティブViewにアクセス
  • ObjC側でドラッグアンドドロップされたファイルパスをC#に送る

このような手順で実装していきます。

C#側からObjCに文字列(ファイルパス)を送ってもらう関数ポインタを渡す

UniDragAndDrop.cs
// コールバックのデリゲート
delegate void callback_delegate(string val);

// ネイティブプラグインの実行、関数ポインタをobjCにわたす
[DllImport("UniDragAndDrop")]
private static extern void Initialize(callback_delegate callback);

// objCから実行されるコールバック
[MonoPInvokeCallback(typeof(callback_delegate))]
private static void cs_callback(string dragAndDropPath)
{
    // Do Something...
}

C#側からObjCにアクセスする部分は上記のようなコードになっています。


UniDragAndDrop.mm
// ドラッグアンドドロップを実装したViewをアプリ全面に生成
GetDragAndDropFilePath *ddview = [[GetDragAndDropFilePath alloc] initWithFrame:view.frame];

// C#の関数ポインタを渡す
[ddview setCallback:callback];

GetDragAndDropFilePathはNSImageViewを継承したドラッグアンドドロップを実装するViewです。これをアプリ全面に表示することでドラッグアンドドロップが出来るようにしています。

Unityが作ったネイティブViewにアクセス

NSArray *ar = [NSApp orderedWindows];
NSWindow *window = [ar objectAtIndex:0];
NSView *view = [window contentView];

この3行の処理でUnityが実行しているネイティブのNSView(*view)を取得しています。
*viewに対してドラッグアンドドロップ用のView(前述のGetDragAndDropFilePath)を追加していきます。

ObjC側でドラッグアンドドロップされたファイルパスをC#に送る

GetDragAndDropFilePath.h
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

typedef void (*cs_callback)(const char*);

@interface GetDragAndDropFilePath : NSImageView {
    cs_callback _callback;
}
- (void)setCallback:(cs_callback) callback;
@end

NSImageViewを継承したクラスを作成してドラッグアンドドロップを実装しています。

GetDragAndDropFilePath.mm
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
    NSURL* fileURL = [NSURL URLFromPasteboard: [sender draggingPasteboard]];
    NSString *url = fileURL!=NULL ? [fileURL path] : @"";
    // C#にファイルパスを送る
    _callback([url UTF8String]);
    return NO;
}
@end 

ドロップが完了したタイミングで予め渡されていたC#の関数に対してファイルパスを送るようにしています。

UniDragAndDropForMacとしてリリース

どうせ作るならOSSで作りたい欲求が有るので、以下のリポジトリにObjCソース含め全て公開しています。
UniDragAndDropForMac

インストール方法

UniDragAndDropForMac.unitypackageを用意しているのでインポートして使ってください。

最後に

欲しい物が無い、探しても見つからない、そんな時は今後もネイティブの力を使って作っていこうと思います。

環境

  • Unity2019.4.4f1
  • macOS Catalina 10.15.5
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

今,プログラミングにおすすめのMacBook

プログラミングをするにあたってMacBookは最適だ

まず,ターミナル(Winodwsで言うコマンドプロンプト)が使いやすい。
どこが使いやすいとかは具体的に説明できないけど,明らかにコマンドプロンプトよりターミナルのほうが使いやすい。
あと持ち運ぶことと,トラックパッドの便利さからジャンルをMacBookにしている。

MacBookの選び方

MacBook Airはすぐ熱くなるので却下。残ったのはPro 13inchか16inchとなる。
16inchには独立型GPUがついているが,プログラミングはGPUを殆ど使わないので,13inchがコストパフォーマンス良しだろう。
そこで,今回は13inchを例にどのようなスペックが良いか,見ていく。
4つあるベースモデルの中で,今回おすすめしたいのはこのモデルだ。
スクリーンショット 2020-08-17 11.12.49.png

プロセッサ

まず,プロセッサだがデフォルトでクアッドコア2Ghzはかなり嬉しい。
ただ,プログラミングをしていてプロセッサのパワー不足をよく感じるので,アップグレードするならプロセッサをi7に変更することをおすすめする。

メモリ

そして次にメモリだ。メモリはLPDDR4Xの3733Mhzと超高速メモリをデフォルトで16GB積んでいる。
自作PCでもあまり見ない速さなので,これは嬉しい。
メモリも16GBで足りなくなることはめったに無いが,ガッツリ作業するなら32GBにしてもよいだろう。

ストレージ

ストレージだが,512GBもあれば十分だろう。これ以上必要な場合はアップグレードしよう。

キーボード

キーボードはデフォルトで日本語配列になっている。
ただ,今回はプログラミングPCを前提としているのでUS配列にしよう。
子に配列のいいところはスペースキーのすぐ横にコマンドキーがあるということ。
コマンドキーはすごく有能で,WindowsのようにAltやControlといちいち切り替えなくていいのだ。
また,英かなといい,左右のコマンドキーを日本語,英語切り替えに割り当てることができる。これはすごく便利だ。
他にもプログラミングでよく使うキーが届きやすい位置にあったり,キートップがシンプルなどといいところがたくさんある。
以上のことから,キーボードはUS配列をおすすめする。

まとめ

自分がおすすめしたいのは

プロセッサー Core i5
メモリ 16GB
ストレージ(SSD) 512GB
日本語配列

のベースモデルを

プロセッサー Core i7
メモリ 16GB
ストレージ(SSD) 512GB
US配列

に変更することだ。
もし,何かしらMacBookにダメージを与えてしまったとき保証が受けられるApple Care+ for Macをつけておくのもおすすめする。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

友愛数、完全数、過剰数、不足数、回文数 色んな数のプログラムを作ってみた

何かQiitaに投稿できそうなネタは無いかなーーとフォルダを漁っていると、
6年以上前にProjectEulerちょっとやってみてた時のスクリプトを掘り起こしたので、
それを書きます

実行環境は下記になります。
ruby 2.6.3p62
macOS Catalina 10.15.6
zsh

:zero::one::two::three::four::five::six::seven::eight::nine::ten:

約数を生成する

約数なんだったけという方は下記を参照下さい。
https://ja.wikipedia.org/wiki/約数

divisor.rb
def create_divisor (num)
    divisor_ary = Array.new
    partner_divisor_ary = Array.new

    if num < 1 then
        return nil
    elsif num == 1 then
        divisor_ary.push 1
    else
        i = 1
        partner_divisor = 0
        until i == partner_divisor do
            if num % i == 0 then
                divisor_ary.push i
                partner_divisor = num / i
                if partner_divisor != i then
                    partner_divisor_ary.unshift partner_divisor
                else
                    break
                end
            end
            i += 1
        end
        divisor_ary += partner_divisor_ary
    end

    return divisor_ary
end

class Integer
    def divisor
        return create_divisor(self)
    end
end

p 8.divisor
p 128.divisor
p 12345.divisor

実行結果は下記になります。

% ruby divisor.rb
[1, 2, 4, 8]
[1, 2, 4, 8, 16, 32, 64, 128]
[1, 3, 5, 15, 823, 2469, 4115, 12345]

※ 以下のコードで、
 約数生成するcreate_divisor関数の定義は省略してます。

友愛数を生成する

友愛数...リア充な良い名前だと思います。
自然数a,bとして、
・aの約数の和-a = b
 かつ、
・bの約数の和-b = a
となる時、a, bを友愛数というみたいです。
詳細で正確な解説は下記参照。
https://ja.wikipedia.org/wiki/友愛数

number_amicable.rb
class Integer
    def divisor
        return create_divisor(self)
    end
    def amicable
        amicable_number = nil

        if self < 1 then
            return amicable_number
        end

        divisor_ary = self.divisor
        divisor_ary.pop
        unless divisor_ary.empty? then
            partner_number = divisor_ary.inject(:+)
            if partner_number != self then
                partner_divisor_ary = partner_number.divisor
                partner_divisor_ary.pop
                if partner_divisor_ary.inject(:+) == self then
                    amicable_number = partner_number
                end
            end
        end
        return amicable_number
    end
end

p 220.amicable
p 284.amicable
p 17296.amicable
p 18416.amicable
p 200.amicable

実行結果は下記になります。

% ruby number_amicable.rb
284
220
18416
17296
nil

完全数か過剰数か不足数かを判定する

自然数aとして、
(1) 約数の総和 = a*2 の場合、 aは完全数[perfect number]。
(2) 約数の総和 > a*2 の場合、 aは過剰数[abundant number]。
(3) 約数の総和 < a*2 の場合、 aは不足数[deficient number]。
みたいです。
詳細で正確な解説は下記参照。
https://ja.wikipedia.org/wiki/完全数
https://ja.wikipedia.org/wiki/過剰数
https://ja.wikipedia.org/wiki/不足数

number_p_a_d.rb
class Integer
    def divisor
        return create_divisor(self)
    end
    def compare_divisor_total
        sum_divisor = self.divisor.inject(:+)
        sum_divisor -= self
        if sum_divisor > self then
            return "abundant number"
        elsif sum_divisor == self then
            return "perfect number"
        else
            return "deficient number"
        end
    end
end

p 496.compare_divisor_total
p 20.compare_divisor_total
p 15.compare_divisor_total
p 1.compare_divisor_total

実行結果は下記になります。

% ruby number_p_a_d.rb
"perfect number"
"abundant number"
"deficient number"
"deficient number"

回文数かどうかを判定する

回文数とは、上から読んでも下から読んでも同じ数になる数のことです。
詳細で正確な解説は下記参照。
https://ja.wikipedia.org/wiki/回文数

number_palindrome.rb
class Integer
    def palindrome?
        str = self.to_s
        if str[0, (str.length / 2).floor] == str.reverse[0, (str.length / 2).floor]
            return true
        else
            return false
        end
    end
end

p 341.palindrome?
p 121.palindrome?
p 3456543.palindrome?

実行結果は下記になります。

% ruby number_palindrome.rb
false
true
true

以上です。

:zero::one::two::three::four::five::six::seven::eight::nine::ten:

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macで環境変数を設定&呼び出す方法

slackbotなどを作るときに、TOKENを直接プログラム内に記述すると、情報漏れて危ない為、osの環境変数に設定することが推奨されています。

意外と、設定方法だけ書いてある記事が少なかったので、メモ。

export API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxx (→取得したTOKENを指定)

これで環境変数が設定完了

環境変数を呼び出すときは、

$API_TOKEN

pythonから環境変数を呼び出すときは、

import os
os.environ["API_TOKEN"]

注意点

上記の環境変数ですが、基本的にサーバーをログアウトすると消えてしまいますので一時対応となります。

もしサーバーにアプリをリリースして、運用したいといった場合は、~/.bash_profileと~/.bashrcに環境変数の設定を保存しておく必要があります。

対応手順詳細はこちらの記事が参考になります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む