読者です 読者をやめる 読者になる 読者になる

done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。

rm -fをした場合のexit-statusについて

bashにおいて、rmコマンドを使った場合のexit statusについてです。初歩的なことだとは思いますが、自分への備忘録。 結論を先に書くと、rm $PATH_TO_FILEをした時に$PATH_TO_FILEが元々存在しない場合、-fオプションがない場合はexit statusが1となり、-fオ…

Vimの正規表現で(変数) = (値)となっているものを(変数)だけにする

タイトルではわかりづらいかも知れません.以下の様なことをしたいときです. # このように変数 = 値が羅列されているときに・・・ listen = False command = False upload = False execute = "" target = "" upload_destination = "" port = 0 # こうしたい…

Mac OS ΧでProxy設定をCLIで操作する方法

自分用のメモ。 こちらの記事のとおりです。 例えば、SSH tunnelを使って自分専用のプロキシサーバーとローカルマシンとの間を安全に繋ぎたいときなどにこんな感じに書くと便利です。 #!/bin/bash sudo networksetup -setwebproxystate Ethernet on sudo net…

numpy.arrayやscipy.sparse.lil_matrixなどで指定した行だけでできた行列を作る

自分用メモ書き.ある行列から指定した行だけ(例えば[1,3,4]みたいな感じでリストで抜き出したい行が入っているとする)でできた行列を作る. In [1]: choices = [[0, 1, 2, 3], [10, 11, 12, 13], ...: [20, 21, 22, 23], [30, 31, 32, 33]] In [3]: import …

Go言語でPythonのcollections.Counterを簡単に実装してみた

Pythonのcollections.Counterは個人的にすごく好きなんですが,Go言語の練習を兼ねてGo言語で実装してみました. 完璧な実装ではなく,カウントできるのは文字列だけです.また,普通に実装間違えてる可能性もあります.自己責任でよろしくお願いします. Py…

Pythonの文字列連結に"+"演算子は必要ない

Pythonの入門サイトとかだと,文字列連結に+演算子を使うことがよく例示されているようです. s = "this " + "is " + "test" print(s) ==> "this is test" ですが,Pythonにおいて文字列連結には+演算子は必要ないです. s = "this " "is " "test" print(s) …

git diffで日本語の文字化けを治す

このページのまんまです. ファイルはutf-8なのになぜか文字化ける(というか,みたいな表記になってしまう)ので,↑のように設定しました. 環境はMac OSΧ 10.10.1,git versionは2.2.1です. $ git config --global core.pager "nkf -w | LESSCHARSET=utf-8 …

Pythonを始めた時から知っていたかったベターな書き方

かなり基本的な内容です.それと記事に一貫性があるわけではないです. 1. with statement 定番のwithです.ほとんどの場合で使えると思うので,積極的に使いましょう. Goでは同じようなことをdeferを使ったりしますね. # not good... f = open("./test.tx…

Numpyで1-of-K表現を簡単に作る方法

愚直にやるとめんどくさそうでしたが、結構簡単に出来たのでメモ。 一応、1-of-K表現とは、ある要素だけが1で、それ以外が0なベクトルです。 [0, 0, 1, 0, 0] みたいな奴。 ここでは、あるidxの要素が1、それ以外が0であることがわかっていると仮定する。 im…

Go言語でのSet(集合)型について

Pythonとかではset型が標準でありますが、Go言語には標準ではなさそうなので調べてみたら便利なライブラリが見つかったので簡単に紹介。 deckarep/golang-set 使い方は以下のような感じです。 package main import ( "fmt" "github.com/deckarep/golang-set"…

Go言語のencoding/gobは1GBまでのファイルしか読み込めない

結構悩んだのでメモ。あるmapやsliceなど、何かしらのデータの入った変数をファイルとして書き出して、後で利用したいことがたまにあります。 Pythonならpickleなどを使いますが、Go言語ではencoding/gobという標準ライブラリを使うと似たようなことができる…

Yosemiteを入れてからやったこと(クリーンインストール)

Mac miniが2年ぶりにやっとアップデートされたので買ってきました。某掲示板では結構酷評ですが、自分は今の所満足しています。Yosemiteでの環境構築を一から書いてみます。 homeの暗号化 Mac標準のFileVaultを使用します。システムの環境設定→セキュリティ…

GNU/LinuxやWindowsに入れたいフリーソフト

特にGNU/Linuxとかだと割りと頻繁にOSセットアップすることがあるので、個人的によく使うソフトを書き出してみます。 GNU/Linux (Ubuntu) Google Chrome ド定番ですね。OSを選ばず使えるのが本当に便利でよく使っています。Firefoxでもいいのですが、やっぱ…

Matplotlibで株価の推移を時系列で表示する

株や統計の勉強を兼ねて、まずはPython3+matplotlibで株価の推移を見てみることにしました。 シンプルにX軸に日付、Y軸に株価(終値)をプロットしてみます。 1. データ 今回使用するデータはk-db.com様からダウンロードしました。 一部抜粋すると、以下の様な…

Go言語でコマンドラインAA表示

Go言語で予め用意しておいたAAをランダムに表示するプログラム書いてみました。 はっきり言って実用性は皆無です。text/templateを使ってみたかっただけです。 プログラムとテンプレート // aacreator.go package main import ( "fmt" "io/ioutil" "log" "os…

Go言語でNgram (with channel)

Go言語で簡単なN-Gramのカウント部分(tokenに分割し、カウントするだけ)を実装してみたいと思います。 ただ実装するだけではつまらないので、channelを使って少しでも早くしてみます。 以下で出てくるGo言語のソースコードで、最初の行に書かれているのはフ…

7つのPythonにおける正規表現例 (Re Match Search FindAll)

7 Python Regular Expressions Examples – Re Match Search FindAlの一部翻訳+αです。 正規表現は特に混乱することが多いのでメモ。一部端折るので必ず元記事の方も参照して下さい。 また、必要に応じてPythonの公式ドキュメントも参照しています。 Pythonの…

Go言語のArrayとSliceについて

Go言語のArrayとSliceについて 調べるたびに忘れるのでメモしておきます。 基本的にGo Slices: usage and internals に基いています。 というかほとんど直訳です。 Introduction Sliceは他の言語のArrayに似ているが、違う部分がある。 Arrays Slice型はGo言…

bzip2とgzipのParallel版、pbzip2とpigz

bzip2とgzipのParallel版、pbzip2とpigz 巨大なテキストファイルを圧縮する必要に迫られたのですが、標準のbzip2やgzipは並列処理に対応しておらず、今どきのマシンだともったいないです。 そこで調べてみると、それぞれのParallel版が見つかりました。pbzip…

Pythonでのanyの速度

Pythonにはanyやallといった便利な関数があります。 こちらのサイトに、 しかし特にany関数では、ジェネレータ式を使用した方がパフォーマンスが良いと思う。 と書いてあったので、せっかくなのでipythonに慣れることも兼ねて簡単に計測してみました。 結果…

PythonでSkip-gramを実装した

Skip-gramについて、詳しくはこちら 英語版のWikipediaはこんなニッチな技術も乗っていたりするんですね。びっくりしました。 コードはこちら そうとう不効率な実装になってしまったが、いい実装が思いつかない…

Change apt source (Ubuntu 14.04)

If sudo apt-get update command failed like this: W: Failed to fetch http://jp.archive.ubuntu.com/ubuntu/dists/trusty/InRelease-- W: Failed to fetch http://jp.archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease-- W: Failed to fetch htt…

SSHでGNU/Linuxにログインした時のメッセージを変えてみた

SSHでDebian GNU/LinuxなどのUNIX系OSにログインした際,以下の様なメッセージが表示されることがあります. Linux v157-7-141-207 3.13-1-amd64 #1 SMP Debian 3.13.10-1 (2014-04-15) x86_64 The programs included with the Debian GNU/Linux system are …

文章間の距離を様々な尺度で計算できるパッケージを書いた[Golang]

Go言語でLevenshtein距離など様々な尺度で文章間の距離を測ることができるパッケージを書きました。 https://github.com/masatana/go-textdistance (現在のところ)対応している尺度は以下の通りです。 Levenshtein distance Damerau-Levenshtein distance Ja…

青空文庫のクローラをGo言語で作った

青空文庫のクローラをGo言語で書いてみました。 GitHub - masatana/aozorago 実際の実装はGitHubのリポジトリを見てもらえればわかると思います。 基本的にはトップページ→インデックスページ→図書カードページ→zipの流れで取ってきています。 Goroutinesを…

Install OpenCV via Homebrew

TL;DR Use Homebrew You can use Xcode! 1. Uninstall Macports Unfortunately, Macports and Homebrew will not coexist well together. Before installing Homebrew, you should uninstall Macports. (If you can’t uninstall it for some reason, please …

CourseraのMachine Learning EX6でハマったこと

今CourseraのMachine Learningのオンライン授業を受けています。 第6週まで来たのですが、Octaveの3.6.4バージョン以上を使っている人は注意が必要です。 visualizeBoundary.mの21行目を以下のように編集しましょう。 contour(X1, X2, vals, [0 0], 'LineCo…

Install tmux, python, numpy, scikit-learn, scipy from source (CentOS 5.5)

表題のとおりです。とある事情があって既存の環境を壊すことができなかったので、HOMEディレクトリに環境を整えてみました。 インストール時に躓いたものだけメモ代わりに残しておきます。 インストールする先は/home/{user}/binです。これだとインストール…

Web業界のエンジニアブログをまとめてみた

Web業界で有名(=僕がよく読む)なエンジニアブログをまとめてみました。順不同です。 Facebook Google Yahoo! Twitter Mixi GREE DeNA CyberAgent Hatena pixiv Evernote Microsoft Cybozu Wantedly=>Wantedly GitHub

端末(Terminal)からWeblioで検索できるPythonスクリプト書いた(改訂版)

前回の記事で書いたPythonスクリプトが半端過ぎたので、 少しだけアップデートしました。 オプションで動詞だけ出すとか、過去形の単語で引いても意味が出てくるとかまだまだ改良したい部分はありますが、 これ以上改良するなら多分自分のGitHubアカウント上…

端末(Terminal)からWeblioで検索できるPythonスクリプト書いた

端末(Terminal)からWeblioで検索できるPythonスクリプト書いてみました。 非常に簡易的かつ、エラー処理とかも行っていませんが。 #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import urllib.request import urllib.parse from html.parser i…

PythonでNHK APIにアクセスするためのクラスを書いてみた(まだ途中)

NHK APIで公開されているAPIをPythonで使うためのラッパーを書いています。 正直実際どう使うかは余り考えていません(´・ω・`) 今はまだ単純なモジュールだけど、後々ライブラリっぽく書いてみたいです。 こちらからどうぞ

Python(2系列)とsqlite3でハマった話

Python 2.7.3 + sqlite3で少しハマりました。 col_nameというカラム名を持つtableが存在するsqliteのデータベースファイルsqlite.dbがあるとして、以下の様なコードを書くとエラーになります。 from __future__ import unicode_literals import sqlite3 con …

Pythonのtuple内包表記の落とし穴

タイトルは釣りです。というかあると思ってたら落とし穴に引っかかりました。 以下のコードを実行すると…… t = (x for x in range(4)) for x in t: print x for x in t: print x 出力 0 1 2 3 二回目のfor文が実行されていません。なんでやねん。 なまじエラ…

お名前.com VPS を借りたらまずやること(Debian) (2)

code{white-space: pre;} これは前の記事の続きです。 パーティションの設定(/homeを別パーティションに移動) iptablesの設定 を行います。 3. パーティションの設定 この記事は、こちらの記事と こちらの記事を参考にしています。ありがとうございます。 パ…

PEP8 のお話

小ネタ。PEP8のお話。 以下の様なコードを考えます。 def f(x, y = 1): pass def g(z, w=1): pass a = 1 b=1 これを、PythonのコードがPEP8と呼ばれるコーディング規則に則っているか調べてくれる ツールpep8を使って解析してみると、以下の様なエラーが出ま…

Mac + git + githubに起こった問題

小ネタ。githubにpushしようとして、今までエラーにならなかったのに突然エラーに成った時にすること. 上記の状況で唐突にこのようなエラーが出ました。 'Permission denied (publickey). fatal: Could not read from remote repository.' もちろん、sshの公…

Mac+homebrew+Python+SQLiteでハマった。

小ネタ。Mac + Homebrew + Python + SQLite使っている人向け。 最近brew upgradeして、pythonでimport sqlite3したらこんなエラーが出るようになりました。 Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/local/Cellar/python/2.7.3/</module></string>…

PuttyとSolarizedとlsコマンドのお話

小ネタ.PuttyとSolarizedとlsのお話. Solarized http://ethanschoonover.com/solarizedの配色が好きで,Macのターミナルやmacvim,WindowsでのPuttyのカラースキームなど全てSolarizedのlightを使用しています. 以前から,WindowsのPuttyでsshで接続したL…

数値を桁ごとにリストに格納する方法,またその逆(Python)

小ネタ.プログラミングコンテストなどでよくある数字のn桁目の数を~などに綺麗に対処する方法 プログラミングコンテストなどでは,よくn桁ある数値を右にずらして…などの問題があります.そんなときに,よく行う操作が桁ごとの数値にバラしてリストや配列…

project euler problem4

project eulerの第四問目です 左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である. では, 3桁の数の積で表される回文数のうち最大のものを求めよ. 3桁程度なので,愚直にやってOK…

project euler problem3

project euler3問目 13195 の素因数は 5, 7, 13, 29 である. 600851475143 の素因数のうち最大のものを求めよ. 少し工夫が必要な問題です。単純に数値を1から順番に割っていくような方法では多分終わらないでしょう number = 600851475143 i = 3 factors = […

project euler 始めました

project euler始めました.これはプログラムで解く数学の問題集で,プログラミングコンテストの問題演習にも使えるかと思います.本家は全て英語で問題が書いてありますが,有志が日本語のwikiも作っています. 今problemの1から24までと,67の計25問解き終…

PythonのSQLiteインターフェースを使用するときに、Cursorオブジェクトを作成する必要があるのかという話

小ネタ。Pythonのsqliteインターフェースを使用するとき、cursor()オブジェクトを作成する必要があるかどうかの話。 Pythonのsqliteインターフェースを使用する際、公式のドキュメントなどではConnectionオブジェクトを作成し、それを用いて更にCursorオブジ…

bashからzshに乗り換えたった

zsh始めました。以前bash-completionを入れましたが、やっぱり重いので…… Macにはデフォルトで入ってるみたいですが、いつもの如くhomebrewで最新版を入れます。% brew install zsh 入れた後はchshコマンドでログインシェルを変更します。% chsh vi(m)で設定…

Watch2chをPythonに移植してみた

Watch2chをPythonで書きなおしてみました。 Watch2chは、PHPで作られた2chの監視を目的としたプログラムです。 指定したスレの勢いをチェックし、閾値を超えた場合にスレッドの内容を出力します。 中々に面白いソフトです。mecabなどの形態素解析のソフトと…

MacにHomebrewでbash-completionを入れた

bashをもう少し効率的に使いたくなったので、bash-completionを入れてみました。 以下、その手順についてメモ。 インストール Homebrewを使って入れます。 $ brew install bash-completion 設定 ~/.bashrcに以下のように記述します。 if [ -f $(brew --prefi…

homebrewをアップデートしようとしたらエラーが出た

久しぶりにMacのHomebrewをupdateしようかなと思ったら、エラーが出ました。 $ brew update error: Your local changes to the following files would be overwritten by merge: CONTRIBUTING.md Library/Contributions/brew_bash_completion.sh … Aborting …

XAMPP for Macでのファイルの置き場所について

MacにXAMPPをインストールして、localhostから自分の作ったphpを見ようとしたらハマったんでメモ 環境Mac OS Χ 10.8.2XAMPP ver 1.7.3XAMPP→Apacheと起動し、Webブラウザでhttp://localhost/にアクセスしてApacheが起動していることを確認して下さい。 ここ…

makepass.pyを書いてみた

こちらのソース を参考に、Pythonでmakepass.pyを作ってみました # -*- coding: utf-8 -*- import getpass import hashlib import base64 import re import subprocess def makepass(): seed = getpass.getpass("Hit many keys randomly. ") while len(seed) …