【デザインパターン勉強】Facadeメソッド

ざっくり概要 Facade(建物の正面)という意味を指しています。 このパターンは内部の処理を簡素化したクラスを一つにすることで、複雑な処理を見せないメソッドです。 自分なりの言葉で言うと、処理を一つのクラスに集約したら見通して良くなって、すぐわかる…

【デザインパターン勉強】Singletonメソッド

ざっくり概要 このパターンの目的は 一つのクラスに複数のインスタンスを作らないようにすることです。 利用シーン… パスワード管理のメソッドなど管理が厳重にする必要があるメソッドを管理する時に使うんでしょうかね。。 コード class Singleton: initial…

【デザインパターン勉強】adapterメソッド

ざっくり概要 adapterメソッドとはざっくり言うと既に 提供されているclassと既に必要な抽象classを結びつけてプログラムを作成する方法です。 ポイントは、仲介役classを設定(提供されているclassと必要な抽象class)することです。 登場メソッド 必要な抽…

【デザインパターン勉強】builderメソッド

ざっくり概要 builderメソッドを自分の言葉でいうと、 作成するメソッドの役割は同じだが、異なる結果を得るプログラムを何個も 作る際、有用なプログラム(パターン) といった感じです。 ここで重要な点は 作成するメソッドの役割は同じ ということです。 本…

Rails でログロテート

久しぶりにrubyネタ 知らない間に自分が作ったサービスが止まっていた件 サービス 確認してみたら定期的にproduction logを削除していなかった。。。 config.logger = Logger.new("log/production.log", 5, 10*1024*1024) #第一引数ログパス、第二引数は保存…

【Pythonメモ】collectionsモジュール

# collectionsモジュール勉強 import collections #counterメソッドはカウント系メソッド c = collections.Counter() c['spam'] += 1 c[100] += 1 c[200] += 2 c[200] += 3 # Counter({200: 5, 'spam': 1, 100: 1}) print(type(c)) c2 = collections.Counter…

エクセルコピペ作業自動化(xls、xlsx)

エクセルをpythonで扱う 仕事していると、エクセルで延々と だるい コピペ作業とかってありませんか。 先日、pythonを使ってコピペ作業を自動化しました。 その時、用いたpython用ライブラリ、使用方法を紹介します。 ※今回は読み込みにしぼって説明 ライブ…

【Pythonメモ】 後置 if

後置 if 最近、rubyみたいに後置if無いかなと ぐぐってみました。 以下はメモ # testはtrueの際の出力 if True なら test = "true" test = "true" if True else "false" print(test) #true # Falseになった際、elseの式 test2 = "false" if False else "fals…

Slack BOT + Backlog APIでタスク管理する。

仕事の管理ツール 現在、仕事でプロジェクト管理は backlog をコミュニケーションツールは slack を使っています。 会議はあまりないので、仕事の打ち合わせはslack上が多いです! slackとbacklogを使う際の問題点・・・ 最近になってようやく(汗)、slackとb…

【linuxメモ】date

date dateとは「 日付や時刻を表示,設定する 」ことです。 $ date 2017年 7月29日 土曜日 00時58分03秒 JST # +をつけると表示形式を指定出来る date +%Y%m%d:%H-%M-%S 20170726:20-23-50 日時を明記したファイル作るケースはよくあるのではないでしょうか…

【メモ】XMLパース方法

xml 個人的備忘録として、XMLのファイルを元にパースメモを記します。 document <data> <country name="Liechtenstein"> <rank>1</rank> <year>2008</year> <gdppc>141100</gdppc> <neighbor name="Austria" direction="E"/> <neighbor name="Switzerland" direction="W"/> </country> <country name="Singapore"> <rank>4</rank> …</country></data>

TravisCI入門しました!

はじめに Travis CIを利用し始めたので、 備忘録も兼ねてブログに書き込んでおきます。 利点 Travis CIを使うことによる利点は、 TravisCI側サーバーで設定した環境でテスト テスト結果をメールなどで開発メンバーに通知 連携しているホスティングサービスに…

Tensorflow で OLS(最小二乗法) ~その1~

はじめに 先日、Google社製のライブラリTensorflowを使ってみました。 備忘録も兼ねてブログにまとめていきます。 本ブログでは、スクレイピングした賃貸情報データを元に 家賃(非説明変数)と他の情報(説明変数)を用いて回帰分析を行います。 分析対象データ…

【linuxメモ】 cat sed

説明の前提、カレントディレクトリに以下のファイルがあるとする。 hoge1 hoge2 hoge3 cat 定義 ファイル内容を標準出力に表示 $ cat hoge.txt hoge1 hoge2 hoge3 と出力される。 -nをつけると、行番号が表示される。 $ cat -n hoge.txt 1 hoge1 2 hoge2 3 h…

【Pythonメモ】zip

zip 複数のシーケンスを並列的に反復処理が出来る。 list1 = [1, 2, 3] list2 = [4, 5, 6] for (a, b) in zip(list1, list2): #list1,list2を同時にループ … print(a,b) >> list1 = [1, 2, 3] >> list2 = [4, 5, 6] for (a, b) in zip(list1, list2): print(…

【Pythonメモ】enumerate OrderDicts nditer

enumerate リストをインデックス化することができます。 >> list=["a","b","c","d","e"] >>> for index,val in enumerate(list): print(index,val) (0, 'a') (1, 'b') (2, 'c') (3, 'd') (4, 'e') OrderDicts ディクショナリとほぼ同じだが、順序が保存出来…

【pythonメモ】numpyメソッド randn max sum

random randn 標準正規分布を出力(標準0、分散1) import numpy as np >>> np.random.randn() #-0.728737781876976 >>> np.random.randn(2,3) #2×3 array([[-0.01827125, -0.38984807, 0.08674773], [ 0.68593183, 0.82708901, -0.15050036]]) max 配列の中…

【Pythonメモ】numpyメソッド argmax

argmax 配列の中の最大値のインデックスを返すメソッドです。 >>> import numpy as np >>> test = np.array([1,2,5,40,20,30]) #配列は6個 >>> np.argmax(test) 3 #インデックスは0から数える >>> test2 = np.array([[1,2,3][10,20,30]]) #二次配列 >>> np.a…

【Pythonメモ】numpyメソッド

メソッド調査 arange reshape linspace zeros_like ones_like zeros ones linspace arange np.arange([start,]stop, [step,]) 一次元の配列を返す。 startが入っていない場合は0から始まる import numpy as np np.arange(6) #初期値 start 0 step 1 #array([…

【Python】OpenCV2.4系 輪郭メソッド メモ

findContours(img,retrieval_mode,approx_mode) 画像の輪郭抽出に用いられます。 img:入力画像 retrieval_mode:抽出方法 approx_mode:近似モード 抽出方法について わかりづらいのですが 輪郭が複数あった際の処理方法を示しています。 よく取り上げられるの…

【Python】OpenCV 初歩的メソッドメモ

はじめに opencvを最近になって勉強しています。 備忘録として初歩的なメソッドをメモしておきます。 環境:Python 2.7.12 opencv 2.4.12 画像の読み込み imread(読み込み画像パス) 色空間の変換 cvtColor(img,cv2.COLOR_BGR2GRAY) COLOR_BGR2GRAY ・・・グ…

【ネットワーク】リバースプロキシ、ロードバランサ

リバースプロキシとは リバースプロキシとは、クライアント(ブラウザ)と webサーバー(nginx)の間にたって、代理で処理出来るものです。 リバースプロキシのメリットとしては、 クライアントとwebサーバーの間に挟まることで、様々な前後処理を施すことが出来…

サーバー構築で詰まった話

はじめに VPSでrailsで作成したサービスを公開する時、 サーバー(≒VPS)設定につまずきました。 初心者(=私)がサーバー設定につまずいた理由 僕が思うにサーバー設定が障害となる最大の理由は 今までやっていた開発(js、ruby、php・・・)と別の知識 が要求さ…

nginx 特徴

最近、nginxでサーバー構築を行っているので、メモがてらブログでまとめます。 webサーバーとは ブラウザ(chromeやsafari)のリクエスト(例えば、http://www.hatena.ne.jp/にアクセス) に対して自身の返すデータを返す役割を持っています。 ブログを例に取る…

【linux】パフォーマンス確認に使えそうなコマンド メモ

free メモリの使用状況を表示 オプション -m メガバイト単位で表示 -t 仮想メモリと物理メモリを表示 仮想メモリ・・・hdd ssdなどのストレージで物理メモリを代替。物理メモリと比較して速度遅い vmstat メモリやCPUの使用状況を表示 watch 定期的にプログ…

【python】 numpyメモ

sqrt 平方根 import numpy as np np.sqrt([1,2,3]) # array([ 1. , 1.41421356, 1.73205081]) np.sqrt(2) # 1.4142135623730951 dot 内積 v1 = [1,2,3] v2 = [2,3,4] np.dot(v1,v2) #20 degrees radianを返す np.degrees(3.14) #179.90874767107849 np.degre…

正規表現 最短マッチ

最短マッチ 躓くことが多いのでメモ。 最短マッチを考える際には通常マッチから考えるとわかりやすい。 通常マッチは一番長いパターンをマッチ 最短マッチは一番短いパターンをマッチ 通常マッチは一番長いパターンと認識することが重要 例) テキスト例:「h…

【rubyメモ】evalメソッド

evalとは 入力された文字列をrubyのコードとして解釈出来ます。 evalはKernel moduleに属しています。 kernel moduleはobjectクラスに属しているため、 全てのクラスで使用出来ます。 コード例 test = "aiueo" test2 = "test2" eval("puts test") #aiueo eva…

【ruby】yieldとブロックの関係

yield メソッドの中でyieldを実行すると、受け取ったブロックを実行します。 コード例 ブロックとは method do |ブロック変数| ~ end で囲われている処理のことです。 yieldをわかりやすく明記するためにブロック変数を省略した形で書いてみました。 @count …

CSS flexbox【日常 個人サービス製作日誌】

flexboxアイテム テキストが長いとはみ出てしまう 例) <div class = "flex"> <div class="problem">hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge</div> <div class="normal">hoge </div> </div> .flex { display: flexbox; width: 100px } .problem { flex-grow: 1; } .normal { flex-grow: 4; } フレックボックス幅が100px…

【メモ】ついつい忘れてしまう gitコマンド

特定のコミットまで戻す コミットの履歴を確認する $ git log #ハッシュ値が出て来る 戻す $ git reset –hard ハッシュ値

linux 容量順ファイルのソート

コマンド du -ma | sort -rn | head -10 du -m | sort -rn | head -100 1.du du ディレクトリ内のファイル容量を表示する -m は単位をmバイトにする -a ファイルも表示する(aはallの略) 2.sort sort 行を並び替える -n 先頭の文字(+.-など)を数字とみなして…

【ruby】include VS extend

include 定義 moduleで定義されたメソッドを追加 rubyは多重継承は出来ないため、includeで必要な機能を追加 通常、moduleはインスタンスメソッドを使用出来ない。 includeしたクラスのスーパークラスとして継承されるため、 moduleに定義されたインスタンス…

python、ruby文字列変数展開、バッククオート

python文字列変数展開、バッククオート pythonを使いはじめてます。 簡単ですが、自分のメモ代わりに最近調べた事 を書いておきます。(対比としてrubyのケースも書いておきます) 文字列の変数展開 # ruby hoge = "hoge" puts "hoge#{hoge}" #hogehoge #pyth…

メタプログラミングRuby第五章 特異メソッド

特異メソッド 特異メソッドとは・・・特定のオブジェクトにメソッドを追加することです。 以下にコード例を示します。 hoge = "hoge" def hoge.upcase? hoge.upcase #HOGE end モンキーバッチと違うことは? モンキーバッチとはクラスにメソッドを追加及び修…

メタプログラミング ruby ローカル変数スコープ

ローカル変数のスコープ切り替え ローカル変数を使う時にいつも気になるのがスコープの存在です。 一旦、スコープの切り替えタイミングは クラス定義 モジュール定義 メソッド定義 の3つです。 上記3つのことを「スコープゲート」と呼びます。 v1 = 1 #→v1…

メタプログラミング 第四章 ブロック

ブロック ブロックは {} もしくは do endキーワードで定義出来ます。 具体例を説明します。 ["1","2","3"].each do |i| puts i end # => ["1", "2", "3"] 文法書でよくある記述ですが、ブロックの前(do endキーワード) の前には 配列オブジェクト そして メ…

メタプログラミングRuby 第三章 method_missing

前回、動的メソッドを説明しました。今回は method_missingをまとめていきます。 mehod_missing メソッド呼び出しの際に見つからなかった際に呼び出されるメソッドです。 以下にコード例を書いておきます。 class TestMethod end obj = TestMethod.new obj.g…

メタプログラミングRuby 第三章メソッド 動的メソッド

動的メソッド 前回は 「動的ディスパッチ」をメインに説明しました。 今回は本丸である動的メソッドの説明を行います。 動的メソッド定義 動的メソッドとは動的にclassとモジュールにメソッドを追加出来ます。 使い方は簡単で「define_method メソッド名」を…

メタプログラミングRuby第三章 動的ディスパッチ

重複したプログラムをなくすには? この際に解決する方法は 動的メソッド と ゴーストメソッド があります。 今回は動的メソッドに絞って説明します。 動的ディスパッチ 動的メソッドの前に、動的ディスパッチを説明します。 動的ディスパッチとはメソッドを…

メタプログラミングRuby第二章(2.2~)

クラスの真相 Classクラスのインスタンスはクラス! クラスのメソッドはClassクラスのインスタンスメソッド Classクラスとは? クラス(ここでいうクラス名は大文字) はClassクラスのインスタンスである。 Stringクラスを例にとると String.class #Class ←Cl…

メタプログラミングRuby二章(2.2途中まで)

第二章(途中まで)書きます。 オープンクラスとは? 既存のクラスを再定義することです。 以下のコードを見て下さい。 これはStringクラスのメソッドを拡張した例です。 class String def dokkiri! return "!" end end p "test".class #String p "test".dokki…

メタプログラミング1章 準備

メタプログラミングRuby第一章 第一章は分量も多くないため、頭の整理のため オブジェクト志向についてまとめておきます。 クラス 教科書通りの説明ですと、クラスとは「設計図」です。 よくある例ですと、たい焼きの型ですね オブジェクト志向は再利用を目…

メタプログラミングRubyを読む

はじめに これからメタプログラミングRubyを読んでわかったことをまとめていきます。 編集方針(随時更新) 基礎的なこともまとめる。 オライリー特有の「わかっているだろ?」的記述を出来る限り自分の 中で噛み砕いて説明

wgetコマンド使い方

wgetとは ウェブページからコンテンツをダウンロードする際に利用します。 よくある利用例としてはウェブサイトのページをダウンロードしたり、 画像を取得したりします。 使用方法 Macから使うにはwgetコマンドをインストールする必要があります。 $ brew i…

サーバーコマンド

サーバー利用 先日、サーバーを利用したので、その際に用いた コマンド及び、(これから使うであろう)コマンドを 備忘録として残しておきます。 Topコマンド Topコマンドを用いると、システム全体の負荷・メモリ稼働状況が 把握出来るようです。 以下にコマン…

新しいファイルを何個も作るには

UNIXコマンドでファイル作成 僕は新しいファイルを作る際、GUIを通じて行っていました。 普段使う際は問題ないのですが、大量のファイルが必要なときは問題になりますね。 例えば1〜99のjsonファイルを作る際にはいちいち、マウスを使って作るのは非効率です…

Curlコマンド

はじめに Curlコマンドを少し勉強しましたのでブログで整理を行っていきます。 HTTPアクセス 本題に入る前にHTTPについて整理を行ったほうが通りが良いので整理してます。 HTTPとはWebサーバーとWebブラウザなどのクライアントがデータを送受信する際のルー…

Sinatraに出会った

初体験 先日Sinatraというフレームワークを触ってみたので頭の整理がてらカキコします。 Sinatraとは Rubyのフレームワークです。フレームワーク ≒ Railsと捉えられやすいですが、 SintraもRuby界では有名なようですね(失礼!) 第一印象 「え、これってフレ…

JSON

先日、JSONを扱う機会がありました。 復習も兼ねて定義及びRubyのコード例を元に頭の整理をしていきます。 JSONとは まず、恒例の「定義通り」の説明をします。 JSONとはJavaScript Object Notationの略です。 テキストベースのデータフォーマットで 多くの…