Ubuntuの環境にpythonをインストールする

以下のURLからdownload

https://www.python.org/downloads/

そのあと以下の手順でインストール

Linuxに好きなバージョンのPythonをインストールする方法 - AkicanBlog

ls
$ cd (解凍したPythonのフォルダ名)
sudo ./configure
sudo make
sudo make install

以下のようなエラーが出たので-Hを使う

The directory '/home/shingo/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/shingo/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already up-to-date: setuptools in /usr/local/lib/python3.6/site-packages
Requirement already up-to-date: pip in /usr/local/lib/python3.6/site-packages

できたみたい 

$ which python3
/usr/local/bin/python3

なぜか2.7しか認識されていない

$ python --version
Python 2.7.6 

 ただ、python3のパスはとっている

$ which python3
/usr/local/bin/python3

 

Android 6.0.xで「画面オーバーレイを検出」と出て解決できない

色々検索してもブルーライトフィルターを使っている場合しか出ないので困っていた。

自分の場合、Biscuitという英単語帳を常駐させていたためできなかった。

はあ。こんなのに時間取られた

検索についていろいろウェブから拾ってきてまとめたメモ

転置索引において,単語と文書の対応付けの情報をポスティング(またはポインタ)と呼びます。
各単語におけるポスティングの列のことをポスティングリストと呼びます。


http://gihyo.jp/dev/serial/01/search-engine/0004
転置索引は大きく分けて2つの部分から構成されています。
文書に出現する単語のリストである「辞書」と,
その辞書にある各単語がどの文書に出現するかを表したポスティングリストの集合の「転置リスト」からなります(図1)。


辞書は単語だけでなく,その単語に対応するポスティングリストの位置情報を含んでいます。
よって,辞書を探索することで,該当する単語のポスティングリストを取り出すことが可能となります。


ブーリアン検索
論理演算子ブーリアンオペレータ)のAND,OR,NOTを使って適合する文書を探し出す

検索エンジンでは,ブーリアン検索により検索を行い,
その結果を何らかの基準(スコア,日付など)で並び換え,その結果をユーザに提示することが多い

 

文書に単語が出現したか否かという情報
⇒ 文書レベルのポスティングリスト(Document-level inverted list)

 

文書レベルの情報に加えて,
単語が文書中のどこに出現するか(先頭から何単語目か)という情報を含んだポスティングリスト
⇒ 単語レベルのポスティングリスト(Word-level inverted list)といい,
各ポスティングをDocID:offset1,offset2... のように表現します。


フレーズ検索
単語レベルの転置リストを使うことで,"search engine" というフレーズが検索可能となります。
"search"と"engine"が隣り合って出現しているかをチェックすることによりフレーズの存在の有無を確認します。

 

http://gihyo.jp/dev/serial/01/search-engine/0005
B+木
B+木はB木から派生したデータ構造
全てのレコードは木の葉ノード(leaf node)に格納され,
内部ノード(internal node)にはキーのみが格納される木構造

B+木は,各ノードをページと呼ばれる単位で管理し,
通常はそれをファイルシステムのブロックサイズの定数倍にします。

大規模な辞書をブロックデバイス上で扱う場合は,B+木を利用することで効率的に管理することができます。


http://gihyo.jp/dev/serial/01/search-engine/0005?page=2
転置リストは,各単語におけるポスティングリストの集まり
これらは通常辞書とは別の領域(ファイル)に保存されます。
各リストは隣りあって格納され,辞書がそのリストへの(オフセットなどの)位置情報を保持しているという構造

辞書:メモリ or ディスク上
スティングリスト:ディスク上


スティングリストの圧縮

転置リストを構成する各ポスティングリストは,検索したい文書数が増えるほど長くなります。
よって,中規模以上の文書におけるポスティングリストでは,
その取得におけるディスクI/Oが検索処理において非常に大きな比重を占めてしまいます。
この問題に対処するために,通常ポスティングリストは圧縮して格納され,ディスクI/Oの削減を図ります。

スティングリストは整数列となるため,整数列に向いた圧縮手法が用いられます。

 


http://gihyo.jp/dev/serial/01/search-engine/0006
文を単語や文字の並びに分割する方法

日本語のように単語が空白で区切られていない文を単語に分割するには,大きく分けて以下の2つの方法があります

1.形態素解析による分割
2.N-gram(q-gram)による分割


1.形態素解析による分割
形態素解析(Morphological Analysis)とは,
文を言語で意味を持つ最小単位の"形態素"の列に分割し,それぞれの品詞を判別すること

2.N-gram(q-gram)よる分割
N-gramとは文字のN文字の部分列のことを指し,Nには2や3などの数値が入ります
N-gramによる分割とは,文を単語の境界とは関係なくN文字ずつに分割することを言います。
全文検索エンジン」を2-gram(bi-gram)で分割した場合は,
「全文」「文検」「検索」「索エ」「エン」「ンジ」「ジン」となります。

 

形態素解析による転置索引の利点と欠点

利点は,文に対して辞書に登録するターム数が少なくなることから,
N-gramに比べて辞書,転置リストのサイズが小さくなり,また構築処理,検索処理も速くなります。

欠点は,検索漏れが生じてしまうことになります。
検索漏れとは,実際にクエリが文に含まれているにもかかわらず,見つけられないことを言います。


N-gramによる転置索引の利点と欠点
利点は,形態素解析の場合と異なり,検索漏れが発生しないことです。
これは,N-gramではすべての文字部分列をタームとして登録するため,
検索キーワードが文章に含まれていれば必ず見つけることができます。

欠点としては,上記のことから,辞書のサイズ,転置リストのサイズが大きくなってしまい,
構築処理・検索処理が形態素解析の場合と比べて少しだけ遅くなってしまいます。


日本語文書における転置索引の実装
現代の検索エンジンは,文の分割方法に依存しないように設計されることが多い

 

 


http://gihyo.jp/dev/serial/01/search-engine/0007
ディスクベースの構築方法

多くの場合,転置索引は実メモリよりも大きくなります

ディスクベースの構築方法
今回はSort-based InversionとMerge-based Inversionと呼ばれる2つの方法


■構築方法の種類
転置索引の構築には,大きく分けて以下の2種類の構築方法があります。

静的な構築方法(offline index construction, offline approarch)
動的な構築方法(online index construction, online approarch)


Web上のニュースやブログなどの場合,新しい記事は古い記事よりも重要度が高い
そのような場合には動的な構築方法が選ばれます。

 


http://gihyo.jp/dev/serial/01/search-engine/0008
検索の流れ

1.転置索引における一般的な検索処理の流れは,以下のようになります。
2.クエリ中の各タームのポスティングリストを取得
3.ブーリアン(Boolean)検索によりマッチした文書IDの取得
4.マッチした各文書とクエリの適合度計算またはソート属性値の取得
5.適合度 または 属性値により並び換え
6.上位k件(通常10件~100件)を返す


関連度によるランキング
文検索では,関連度を計算して並び変える場合が多くあります

代表的な関連度指標には,コサイン類似度(cosine similarity)やOkapi BM25などがあります。

 

c++サンプルメモ

変数の型変換

【Proton.jp】 C++:string型とchar型を相互に変換する
char型, std::string型, NSString型 相互変換例まとめ | SzMake
C++の文字列操作 - minus9d's diary

■引数を2倍して出力する

https://github.com/ludwig125/work/blob/master/src/cpp/test/argv.cpp

#include <iostream>
#include <stdlib.h>
using namespace std;

int main(int argc, char** argv)
{
    for(int i = 1; i < argc; i++){
        cout << "argv "<< i << " : " << argv[i] << endl;
        cout << "double argv: " << atoi(argv[i])*2 << endl;
    }
    return 0;
}
参考

C++で文字列を数値に変換する方法 - C++と色々
http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03042.html


実行結果

[~/git/work/src/cpp/test ] $ g++ argv.cpp 
[~/git/work/src/cpp/test ] $ ./a.out 13 83
argv 1 : 13
double argv: 26
argv 2 : 83
double argv: 166
[~/git/work/src/cpp/test ] $ 

■型を確認

#include <iostream>                                                     
#include <stdlib.h>
#include <typeinfo>
using namespace std;

int main(int argc, char** argv)
{
    int a,b;
    for(int i = 1; i < argc; i++){
        cout << "argv "<< i << " : " << argv[i] << endl;
    }

  // 引数の型
    cout << typeid(argv[1]).name() << " : " << argv[1] << endl;

    a = atoi(argv[1]);
    b = atoi(argv[2]);

    // 変換後の型
    cout << typeid(a).name() << " : " << a << endl;

    return 0;
}

実行結果

$ ./a.out 10 30
argv 1 : 10
argv 2 : 30
Pc : 10
i : 10

vectorのソート

参考:
http://blog.sarabande.jp/post/62062199465
http://kaworu.jpn.org/cpp/std::sort

https://github.com/ludwig125/work/blob/master/src/cpp/test/sort_vector.cpp

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
                                                                               
    vector<int> v;
    v.push_back ( 3 );
    v.push_back ( 4 );
    v.push_back ( 1 );
    v.push_back ( 2 );

    std::sort(v.begin(), v.end(), std::greater<int>() );
    for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
        cout << *it << endl;
    }

    return 0;
}

実行結果

[~/git/work/src/cpp/test ] $ ./a.out 
4
3
2
1
[~/git/work/src/cpp/test ] $
■文字列を受け取って1文字ずつvectorに格納
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    string str;
    getline(cin,str);

    string tmp;
    // 'abcde'のような文字列を一文字ずつvectorに格納
    vector<string> v;
    for(int i = 0; i < (int)str.size(); i++){
        char ch = str[i];
        cout << ch << " " << endl;

//        v.push_back(string(ch));
        // 直接charをvectorに格納しようとしたらコンパイルエラーになったのでstringの変数に入れた
        tmp = ch;
        v.push_back(tmp);
    }

    cout << "output vector" << endl;
    for(vector<string>::iterator it = v.begin(); it != v.end(); it++){
        cout << *it << endl;
    }

    return 0;
}
typeidの出力

Uses of typeid in C++ - Codeforces

bool = b
char = c
unsigned char = h
short = s
unsigned short = t
int = i
unsigned int = j
long = l
unsigned long = m
long long = x
unsigned long long = y
float = f
double = d
long double = e
string = Ss
int = A_i
double
= A_d
vector = St6vectorIiSaIiE

.vimrcの設定メモ

.vimrc

https://github.com/ludwig125/work/blob/master/dotfiles/.vimrc

Neobundleをインストール

NeoBundleを用いたVimプラグイン管理と色設定メモ - Qiita

[~ ] $ mkdir -p ~/.vim/bundle
[~ ] $ git clone git://github.com/Shougo/neobundle.vim 

 

Ubuntuインストール後の設定メモ

Ubuntuでデスクトップのディレクトリ名を「Desktop」にする

Ubuntuでデスクトップのディレクトリ名を「Desktop」にする - ぬいぐるみライフ(仮)

Linuxで日本語名ディレクトリを英語名に変換する方法 | hellooooworld.com

端末エミュレータを開き,以下のコマンドを実行する.

$ LANG=C xdg-user-dirs-gtk-update
ダイアログが表示されるので,「Don't ask me this again」をチェックし,「Update Names」をクリックすればOK.

すでに「デスクトップ」の中にファイルを作っている場合、上記のコマンドで日本語の「デスクトップ」ディレクトリが残ったまま「Desktop」が作られる

ショートカットキー

UbuntuTips/Desktop/KeyboardShortcutOnUnity - Ubuntu Japanese Wiki

Ubuntu 12.04 LTS で使えるキーボードショートカット一覧 - 旧ID:itiriのブログ

端末

端末のショートカットキー

コピーアンドペースト

端末の起動 Ctrl+Shift+n

コピー Ctrl+Shift+c

ペースト Ctrl+Shift+v

 .bash_profile

参考:ユーザーの環境変数を設定するbashの設定ファイルと、カスタムプロンプトについて | OXY NOTES

Linuxユーザのためのチップス: .bash_profileで環境変数を設定する。

[~/Documents ] $ cat ~/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

ENV=$HOME/.bashrc
USERNAME="xxxx"
PATH=$PATH:"/$HOME/bin"

export USERNAME ENV PATH

PS1="[\w ] $ "
[~/Documents ] $

ubuntu14で.bash_profileが認識されない 正しくは .profile?

Ubuntu14.04で.bash_profileが読み込まれない(見つからない) - Qiita

14.04 - I can not find .bash_profile in ubuntu - Ask Ubuntu

上記に.bash_profileの設定を書いたが、起動時に.pash_profileに書いた設定が読み込まれていないようだったので調査

ubuntu14では .profileが認識されているらしい

プロンプトの設定が読み込まれていない

.profileにPS1="[\w ] $ " を書いたが端末の起動時に読み込まれてくれないようだった

.bashrcに「PS1="[\w ] $ "」を書いたら読み込んでくれた

設定がよくわからない。。

gitインストール

参考:

sudo apt-get install git 

[~ ] $ git config --global user.name "ludwig125"
[~ ] $ git config --global user.name
ludwig125
[~ ] $ git config --global user.email "XXXX@gmail.com"
[~ ] $ mkdir ~/git
[~ ] $ cd git/
[~/git ] $ ls
[~/git ] $ ls
[~/git ] $ git init
Initialized empty Git repository in /home/XXXX/git/.git/
[~/git ] $ git status
On branch master

最初のコミット

nothing to commit (create/copy files and use "git add" to track)
[~/git ] $

 githubの登録

githubリポジトリ作成

f:id:ludwig125:20160410003145p:plain

f:id:ludwig125:20160410003137p:plain

git pushに失敗

[~/git/work ] $ git push origin master
Username for 'https://github.com': ludwig125
Password for 'https://ludwig125@github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/lugwig125/work.git/'
[~/git/work ] $

 git へpushする方法

  1. アクセストークンを使う
  2. SSH認証をする

1.アクセストークンを使う

[Git][GitHub]GitHubにPushする際に認証失敗する | DevAchieve

hubを2-factor authentication(2要素認証)有効でも使いたい - Qiita

以下のように「Personal access tokens」でアクセストークンを発行してコピーしておく

f:id:ludwig125:20160410113219p:plain

パスワード入力にアクセストークンを使ったらpushできるようになった

[~/git/work ] $ git push origin master
Username for 'https://github.com': ludwig125
Password for 'https://ludwig125@github.com':
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 438 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://github.com/lugwig125/work.git
3847557..36d73b5 master -> master
[~/git/work ] $ 

2.SSH認証をする

アクセストークンは面倒なので、こちらのほうが便利

参考:

gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita

SSHの公開鍵を作成しGithubに登録する手順 - mon_sat at Co-Edo(半年前の自分への教科書 / 別院)

MacでGitHubを使う手順 – SSH Keysの登録 / リポジトリの作成 / 基本コマンド | mae's blog

手順
  • ssh-keygen -t rsa -C "メルアド"
    => Enter passphrase :ubuntuのパスワードを入力
  • cat ~/.ssh/id_rsa.pub
    => この公開鍵をコピー
  • githubsshに登録

[~/git/work ] $ ssh-keygen -t rsa -C "gitに登録したメルアド"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/XXX/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/XXX/.ssh/id_rsa.
Your public key has been saved in /home/XXX/.ssh/id_rsa.pub.
The key fingerprint is:

The key's randomart image is:
+--[ RSA 2048]----+
| .               +==.      |
|                    *OE+. |
|                   .=+*= . |
|                     . +o.= |
|                         S... |
|                                |
|                                |
|                                |
|                                |
+-----------------+
[~/git/work ] $
[~/git/work ] $ cat ~/.ssh/id_rsa.pub
ssh-rsa
[~/git/work ] $ ssh -T git@github.com
Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Hi lugwig125! You've successfully authenticated, but GitHub does not provide shell access.
[~/git/work ] $

 SSHKey登録結果

f:id:ludwig125:20160413014210p:plain

c++を使えるようにする

g++のインストール

[~/git/work/src/bin ] $ sudo apt-get install g++
[~/git/work/src/bin ] $ g++ -v
省略
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
[~/git/work/src/bin ] $

c++コンパイル

参考:

(3/5)Windowsプログラマに贈るLinuxプログラミング入門 - 第6回 LinuxでC/C++言語のコンパイルを試す:ITpro

caps lockをctrlにする手順

下記を参考にしたら、capslockが無効になったが、ctrlにはならなかった。

またいつか試してみる

$ sudo vi /etc/default/keyboard
XKBOPTIONS="ctrl:nocaps"

参考:

Ubuntu日本語フォーラム / Ubuntu14.04 LTSでのCtrlとCapslockの入れ替えについて

CAPSキーをCTRLキーにする(Ubuntu 15.10) — memo 0 documentation

[LXDE] Caps LockキーをCtrlキーにする(LXDE) - Life with IT

keyboard - How to map Caps Lock key to something useful? - Raspberry Pi Stack Exchange

CapsLockをCtrlにするまとめ - Λlisue's blog

Ubuntu 設定

 

おまけ

参考:

[はてな記法]ソースコードを色付けして表示する(シンタックス・ハイライト) - はてなブログ ヘルプ

はてなブログでソースコードを貼り付ける方法を調べてみた - ウェブと食べ物と趣味のこと

はてなソースコードを記載する

編集を「はてな記法」にして

>|cpp|

ここにソースコードを書く

||<

 

 

Windows7にUbuntuをインストールする手順メモ

VMware PlayerのDownload

https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/5_0

 

参考(というかそのまま)

www2.rikkyo.ac.jp

Ubuntuインストール

f:id:ludwig125:20160409183653p:plain

VMware設定

f:id:ludwig125:20160409183520p:plain

f:id:ludwig125:20160409183528p:plain

f:id:ludwig125:20160409183541p:plain

f:id:ludwig125:20160409183547p:plain

f:id:ludwig125:20160409184802p:plain

仮想マシンの起動時のエラー

f:id:ludwig125:20160409184810p:plain

このエラーについて参考

「この仮想マシンは、64ビットゲストOS向けに構成されています。ただし、64ビット操作は使用できません。」 VMware player エラー対処法 - azapp.jp

Intel VT-x に対応していますが、Intel VT-x は無効になっています。エラーの対応手順|リナックスマスター.JP 公式ブログ

BIOS

BIOSとは|Basic Input/Output System - 意味/定義 : IT用語辞典

BIOSとは、パソコンなどの主基板(マザーボード)などに格納されたコンピュータプログラムファームウェア)の一種で、起動時のOSの読み込みや、接続された装置・機器に対する基本的な入出力制御などを行うもの。 

 HPのBIOS設定変更手順

http://h20564.www2.hp.com/hpsc/doc/public/display?docId=emr_na-c03544192&lang=ja-jp&cc=jp

f:id:ludwig125:20160409192435p:plain

この設定変更で起動できるようになる

Ubuntuの起動

f:id:ludwig125:20160409192658p:plain

f:id:ludwig125:20160409192710p:plain

f:id:ludwig125:20160409192718p:plain

上記の設定でインストールが終わったら再起動する

VMware Toolsのインストール

http://kledgeb.blogspot.jp/2012/09/ubuntu-vmware-player-8-vmware-tools.html

VMware ToolsをインストールしないとVMwareからWindows側へコピー&ペイストができません。
 なので、インストールしておいた方がよいでしょう。

f:id:ludwig125:20160409195719p:plain

上記でダウンロードしたtar.gzファイルをデスクトップに展開

f:id:ludwig125:20160409202208p:plain

端末からvmware toolsをインストール

> cd
> cd vmware-tools-distrib/
>
>
> ls
FILES INSTALL bin/ doc/ etc/ installer/ lib/ vmware-install.pl*
>
>
> sudo ./vmware-install.pl
Creating a new VMware Tools installer database using the tar4 format.

以下、yes, noなどは適宜選択

Vmware automatic kernel modules?

参考:

Laboratory of Theoretical Medicinal Chemistry & Drug Design Department of Chemistry, Rikkyo (St. Paul's) University

Would you like to enable VMware automatic kernel module

> yes

 

Vmware Toolsインストール後

vmware Toolsのインストール後、ウィンドウサイズを変更することができるようになった

f:id:ludwig125:20160409202208p:plain

f:id:ludwig125:20160409202140p:plain