- 投稿日:2020-08-17T23:17:37+09:00
HTMLを始めるには
この記事の対象者
・webプログラムを始めて見たい人
・デフォルトのテキストエディタでコードを書いている人web開発には何が必要?
ウェブ開発には主に二つのアプリケーションが必要で、ブラウザとテイストエディターです。
※あくまで僕の場合ですが
ウェブサイト制作は始めにイメージを固める為にデザインの大枠を紙に書いてから、htmlやcssファイルを作りコードを書いて、必要に応じてJavaScriptやphpを追加して行く感じです。
パソコンに入っているmacならテキストエディターwindowsならメモ帳を使う事でプログラムを書く事が出来ますが、それらのアプリはプログラムに特化していない為自動補完機能などが搭載されていません。そこでwebプログラミングに特化したテキストエディターを使う事でより快適に開発をする事が出来ます。(ブラウザは多くの人が使っているGoogleChromeがおすすめです。)おすすめのテキストエディターは?
プログラムに特化したテキストエディターならVisual Studio Codeやサブライムテキストなどもあります。その中でもbracketsはシンプルで尚且つ拡張性が高いのでおすすめです(Atomもおすすめです)。今回はbracketsのセットアップについて解説します。
Bracketsをインストール
まずは公式サイトからインストーラをダウンロードします。ダウンロード出来たらインストーラを開いて待つだけです。
処理が終わると上の写真の様になるのでbracketsをフォルダーに追加してから起動してくだいさい。
上の様なウィンドウが表示されたら成功です。Bracketsをカスタマイズ
次はいよいよ拡張機能を追加して行きます。この記事で追加するのはEmmetとBeautifyで、コードの補完の補完機能とコードのインデントを自動で綺麗にしてくれる機能です。追加方法は簡単で、右上から2番目にあるブロックマークを押してemmetと検索してください。
そうすると上画像の様になると思うので黄色い枠で囲った方をインストールして下さい。次はbeautifyと検索して下さい。
こちらも、先ほどと同じ様に黄色の枠で囲った物をインストールしてくだいさい。もしインストールが成功している場合は右上から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ファイルを開いて見ましょう右上の稲妻ののようなアイコンをクリックするとページが開けるのが分かると思います。今回は使いませんでしたが、自分でコードをが見づらくなってしまう事があります。なのでその時は綺麗にしたいファイルを選択してからステッキのアイコンをクリックして見てくだいさい。劇的に見やすくなるはずです。
最後に
最後まで記事を読んでくれてありがとうございました。久しぶりに記事を書いたので、間違っている所があるかもしてませんがその時はコメントで教えてくれると嬉しいです。
- 投稿日:2020-08-17T23:17:31+09:00
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 mastergithubのページを確認し、sample.txtが表示されていれば成功。
補足
add、commit、pushとか出てきたけど一体何をしているのか?
add
gitの性質上、ローカルリポジトリで編集しただけで終わりではなくそれをリモートリポジトリに共有しなくては意味がない。
という事で、まずはどのファイルをローカルに共有するかを決めなくてはならない。
git add <ファイル名>とする事で、そのファイルを共有しますよーとりあえず宣言します。
(正確にはインデックスに登録)commit
コミットすることで、前回の更新からどんな変更があったか等の情報を記録することが出来る。
不具合が起きたときにこのログが役に立つ(らしい)。
-m "<コメント>" でどんな修正を行ったか一言加えておくのが普通。push
最後に登録したファイルを実際にリモートに反映するのがpush。
git push origin <ブランチ名>
今回はmasterに直接pushしたが実際masterにpushはあまりしない。(個人開発ならするのか?)
ブランチについては別の記事で記載予定。補足2
2台以上で同じリモートを設定したい場合、2台目の設定がよく分からず少しつまずいたのでメモ。
結果的には至極単純。git clone <リモートリポジトリのURL>これだけ。笑
無知って怖い。。。
- 投稿日:2020-08-17T22:37:24+09:00
コラッツ数、フィボナッチ数、三角数 色んな数列のプログラム作ってみた
何かQiitaに投稿できそうなネタは無いかなーーとフォルダを漁っていると、
6年以上前にProjectEulerちょっとやってみてた時のスクリプトを掘り起こしたので、
それを書きます(第2段)実行環境は下記になります。
ruby 2.6.3p62
macOS Catalina 10.15.6
zshコラッツ数を生成する
・偶数の場合、2で割る。
・奇数の場合、3を掛け1を足す。
のようにして進む数列。
数が大きいからと言って数列が長くなるとも限らず、なんとも不思議。
詳細で正確な解説は下記参照。
https://ja.wikipedia.org/wiki/コラッツの問題collatz_number.rbdef 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.rbdef 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.rbdef 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]以上です。
- 投稿日:2020-08-17T21:38:16+09:00
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
- 投稿日:2020-08-17T18:09:51+09:00
[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.dmg2.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.dmg3.Vagrantを起動する準備
3-1.「vagrant-vbguest」プラグインをインストール
vagrant-vbguestプラグインは、仮想マシンでの面倒な操作を肩代わりしてくれるプラグインです。 Macはターミナルを起動し、以下を入力します。
エラーが起きなければ、成功です。$ vagrant plugin install vagrant-vbguest3-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 up5.仮想環境へSSH接続
vagrantを起動しただけでは、仮想環境へは接続できていませんので、SSH接続を行います。
SSH接続とは、自分のPCから他のPCへ安全に接続するために接続手法です。
以下の通り、接続します。$ vagrant ssh以下のようになれば、仮想環境への接続は成功です。
[vagrant@localhost ~]$
- 投稿日:2020-08-17T13:44:09+09:00
【Unity】macOS向けビルドしたアプリにドラッグアンドドロップを可能にするUniDragAndDropForMacを作りました
UnityからmacOS向けのアプリをビルドして、そのアプリに対しドラッグアンドドロップを実装するという知見は、僕が調べた限り見つける事は出来なかったため、UniDragAndDropForMacというネイティブプラグインを作りました。
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; @endNSImageViewを継承したクラスを作成してドラッグアンドドロップを実装しています。
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
- 投稿日:2020-08-17T11:31:50+09:00
今,プログラミングにおすすめのMacBook
プログラミングをするにあたってMacBookは最適だ
まず,ターミナル(Winodwsで言うコマンドプロンプト)が使いやすい。
どこが使いやすいとかは具体的に説明できないけど,明らかにコマンドプロンプトよりターミナルのほうが使いやすい。
あと持ち運ぶことと,トラックパッドの便利さからジャンルをMacBookにしている。MacBookの選び方
MacBook Airはすぐ熱くなるので却下。残ったのはPro 13inchか16inchとなる。
16inchには独立型GPUがついているが,プログラミングはGPUを殆ど使わないので,13inchがコストパフォーマンス良しだろう。
そこで,今回は13inchを例にどのようなスペックが良いか,見ていく。
4つあるベースモデルの中で,今回おすすめしたいのはこのモデルだ。
プロセッサ
まず,プロセッサだがデフォルトでクアッドコア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
をつけておくのもおすすめする。
- 投稿日:2020-08-17T00:49:46+09:00
友愛数、完全数、過剰数、不足数、回文数 色んな数のプログラムを作ってみた
何かQiitaに投稿できそうなネタは無いかなーーとフォルダを漁っていると、
6年以上前にProjectEulerちょっとやってみてた時のスクリプトを掘り起こしたので、
それを書きます実行環境は下記になります。
ruby 2.6.3p62
macOS Catalina 10.15.6
zsh
約数を生成する
約数なんだったけという方は下記を参照下さい。
https://ja.wikipedia.org/wiki/約数divisor.rbdef 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.rbclass 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.rbclass 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.rbclass 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以上です。
- 投稿日:2020-08-17T00:47:32+09:00
macで環境変数を設定&呼び出す方法
slackbotなどを作るときに、TOKENを直接プログラム内に記述すると、情報漏れて危ない為、osの環境変数に設定することが推奨されています。
意外と、設定方法だけ書いてある記事が少なかったので、メモ。
export API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxx (→取得したTOKENを指定)これで環境変数が設定完了
環境変数を呼び出すときは、
$API_TOKENpythonから環境変数を呼び出すときは、
import os os.environ["API_TOKEN"]注意点
上記の環境変数ですが、基本的にサーバーをログアウトすると消えてしまいますので一時対応となります。
もしサーバーにアプリをリリースして、運用したいといった場合は、~/.bash_profileと~/.bashrcに環境変数の設定を保存しておく必要があります。
対応手順詳細はこちらの記事が参考になります。