Kesin's diary

プログラミングの記事がメインです

Jenkins2のPipeline入門のメモ

Jenkins2のPipelineに入門した際にメモした内容をせっかくなので公開しておきます。 基本 step, node, stage パイプラインのチュートリアルでいきなり図と共に登場するので最初はどう違うのか分かりにくいが、Jenkinsのビルドの流れにそれぞれ対応しているの…

ベターVimとしてAtomを使う

この記事はATOM-editor Advent Carendar 2015の15日目の記事です。 atomをVim化するパッケージ、有名なVimプラグインのAtom版などを紹介していきます

Python3.5の型ヒントをとりあえず試す

Python3.5がリリースされましたね。 Python書くのはほぼ1年ぶりでしたが、噂の型ヒントがついに3.5で導入されたようなので早速試してみました。 型ヒントについてこちらに素晴らしいPEPの翻訳記事があり、見て頂けると分かりますがPython3.5単独ではまだ型チ…

herokuにデプロイするときでもgruntしたい!(+rubyサーバー)

JSの勉強のためにタイトルのような構成のwebアプリをherokuにデプロイしようとしたところ、主にjsのライブラリ管理やcoffeeのコンパイルなどで苦労したのでメモ。 rubyだとjs周りも面倒見てくれるRails関係のgemが色々あるみたいですが、jsは独立して管理し…

今年の自分のvimrcを振り返る(2014)

長らくブログを放置していて、気がつけばAdventCalendarの季節も通りすぎて2015年になってしまいました。 去年は自分にとってVimの進歩があった年だったので、git log .vimrcの中からTOP10をまとめてみました。 2014年時点での.vimrc 1位 実践Vim 実践Vim 思…

PyConJP 2014に参加してきました

今年も9/13,14に行われたPyConJP 2014に参加してきました!去年に引き続き、2回目の参加です。 今年の会場は去年に比べて交通は少し不便になってしまいましたが(特に東京テレポート駅からは遠い)、会場の中はホールや教室とドリンクバーが離れておらず、良…

VimでのCartonを使ったPerlの開発

最近Perlを書くことになりましたKesinです。Pythonが懐かしいです。 言語が変わっても相変わらずVimを愛用していて、文法チェックができるsyntastic *1と、Vimで書いているスクリプトをすぐに実行できるvim-quickrunには相変わらずお世話になっています。 Pe…

Vimとctagsでコードリーディング

というタイトルで会社の同期内でのLTで発表しました。 知ってる人からすれば当たり前のように使ってると思いますが、IDEからエディタへの移行組で知らなかった人は感動する内容だったかもしれません(自分が昔そうでした)。 Vimとctagsでコードリーデ…

研究のプログラミングにおける悲劇を無くすためのGitとテスト

大学の研究に役に立った物シリーズ第3弾です 今回は研究のためのプログラミングのノウハウについてです。 特に、研究におけるプログラミングでの悲劇を防ぐために自分が実践していた方法を紹介をしたいと思います。大学や研究室によっては、このような研究の…

大学の研究で役に立ったもの(勉強編)

大学の研究に役に立ったものシリーズ第2弾です。 今回は、研究に関係する技術の勉強に役に立ったものを紹介したいと思います。 ちなみに、自分の研究は情報系で、研究室のテーマは自然言語処理、音声言語処理、機械学習関係でした。 あくまで自分には役に立…

大学の研究で役に立ったもの(サービス編)

数年間大学で学生として研究生活をしていましたが、今年の3月をもって無事に大学院を卒業できそうです。 そんなわけで過去を振り返るのと、これから大学で研究生活が始まる人に向けて、自分が大学で研究をする上で色々便利だったアレコレを数回に分けて紹介…

PythonでMongoDBを使うunittestのひな形

タイトルのとおりですが、ケースとしてはFlaskみたいな軽いフレームワークでMongoDBをデータベースに使うModelを自分で実装するような場合です。 実際にデータベースを動かすModelのテストを書くときに、FlaskはフルスタックのDjangoと違って何も面倒を見て…

Webアプリに高機能な音声認識を追加するWeb Speech API

API

Microphone' by Juan_Alvaro, http://www.flickr.com/photos/31590610@N03/5408706936/ CC by 2.0 最近、にわかに音声認識というものが盛り上がっています。 スマートフォンに搭載されている、AppleのSiri、NTTドコモのしゃべってコンシェル、Googleの音声検…

テキストセグメンテーションの研究紹介

自分の研究に間接的に使うことになって、最近勉強したのでメモ テキストセグメンテーションとは? 自然言語処理の一種で、ブログなどの色々なトピックがごちゃまぜに書かれている非構造な文書を、ニュースのようにトピックごとに分割する手法です。 例 こん…

結局Pythonはvirtualenvで管理してみることにした

念願の新しいMacBookAirを手に入れまして、開発に使用するPythonはOSデフォルトとは別に用意したいよねー。さらに言うと、ついにPython2.x系が2.7で開発ストップすることが確定したので、いつでもPython3.x系に移れるようにしたいし、できれば一部でアツいPy…

Pythonらしいコードの書き方

はてなブログに移行して最初の記事はやはりPythonネタにしました。 はてなブログいいですね。デザインの編集がやりやすくなったのと、Markdownで書けるのが素晴らしいです。 PyCon 2013の動画を見ていたら、素晴らしい"Transforming Code into Beautiful, Id…

HerokuのMongoDBにローカルのDBの内容をアップロードする

実は前回紹介した LocationTweetは最近流行りのHerokuで公開しているのですが、データベースで位置情報を簡単に扱うためにHeroku標準のPostgreSQLではなく、MongoHQというアドオンでMongoDBを使用しています。 MongoHQにローカルのデータをアップロードする…

LocationTweet 気になる場所の今のつぶやきを見る

気になる場所の今のつぶやきを見ることができるLocationTweetというWebアプリを公開しました! LocationTweet 地図に表示されたピンをタップするとその場所のつぶやきを見ることができます。 学校、駅、観光地など気になる場所について他の人が今どのような…

Wikipediaから位置情報のデータベースを作る

Wikipediaの記事から位置情報をマイニングするスクリプトをPythonで作りました! Wikipediaの建物や場所の記事のタイトル右端にある位置情報と情報ボックス内の位置情報から抽出しています。Wikipediaは日々更新されているので、2012年にオープンしたばかり…

MapKitでピンに合わせて地図の表示領域を自動調節する

iOS

前回の記事の続きです 執筆時ではXcode4.4.1でARCを使うコードとなっています。Objective-CやXcodeの進化は速いのでこのバージョンより新しい(古い)Xcodeではこの記事の通りにやっても動かない可能性があります。ご注意ください。 ピンが全て表示されるよう…

MapKitでのピンの追加・削除、直線の描画

iOS

iOSアプリの入門書などでMapKitを使って地図を表示する方法は広く紹介されていますが、地図にピンを追加したり、削除したりする方法があまり載っていなかったので紹介したいと思います。 執筆時ではXcode4.4.1でARCを使うコードとなっています。Objective-C…

iOSアプリでアドレスブックを利用する

iOS

以前参加したインターンシップでiPhoneのアドレスブックからメールアドレスを選択してメールを送るという機能を実装したのですが、アドレスブックにアクセスする方法の情報が書籍にもネットにも意外に少なかったので紹介したいと思います。 執筆時ではXcode4…

Foursquare APIでVenueの写真を取得する

以前参加したインターンシップでFoursquare APIを使用してチェックイン場所の写真を取得しようとしたところ、APIが新しくなったらしくて予想外に苦労したのでやり方を紹介します。 位置情報系のアプリを作ろうとしたときに地図に付けたピンだけではちょっと…

StoryboardとSegueの基本

Xcode4.2からStoryboardという画面(ビュー)のレイアウトと別の画面への遷移をコードを書かずにグラフィカルに作成することができる機能が追加されました。自分はXcode4.4からiPhoneアプリの開発を始めたので、昔はどのように画面のレイアウトや遷移を設定…

Cent0S6でNFSのマウントに苦労した

大学の研究室の計算機サーバからファイルサーバをNFSでマウントするのに苦労したのでメモ。 ファイルサーバ側がdebianのsarge(古い…)で前からある計算機サーバ(debian lenny, CentOS5)では問題なくマウントできるのに、新しい計算機サーバ(CentOS6)だ…

OpenCV2でSIFT, SURFによる画像の対応付け

大学の講義で画像間の対応付けプログラムを作成するという課題が出されて、無事提出できたのでメモしておこうと思います。このような画像工学のプログラムは初めてで、特にMacOSX + Xcode4 + OpenCV2のサンプルが少なくて色々苦労しました。簡単ではあります…

NumPyとCythonを組み合わせると爆速!

前回の記事の最後にcythonとnumpyを組み合わせても速くならなかったと書いてしまったのですが、@frontier45 さんから公式のチュートリアルをちゃんと読みましょう。と教えていただいたので、自分の勉強がてらブログにも書いておきます。使用するコードは何の…

Pythonを高速化するCythonを使ってみた

突然ですが私はPythonが好きです。でもPythonは遅いです。 何が遅いかというと、致命的なことに四則演算が遅いです。でも他の動的型付け言語でスクリプト言語と呼ばれるPerl, Ruby, Javascript も C, Javaのようなコンパイルを行う静的型付け言語に比べれば…

SuffixArrayを作ってみた(Python)

前回の続き 自然言語処理はじめました - Ngramを数え上げまくるを見てSuffixArrayを使ったNgram取得をやってみたくなりました!前回SuffixArray構築に必須の文字列のソートアルゴリズムのマルチキークイックソートが実装できたのでいよいよSuffixArrayを実装…

マルチキークイックソート

自然言語処理はじめました - Ngramを数え上げまくるを見てSuffixArrayを使ったNgram取得をやってみたくなりました! SuffixArrayの構築には文字列のソートが必要なのでまずはここから始めます。 文字列のソートにはクイックソートを文字列のソートに応用した…

NumPy, SciPyをちゃんとインストールする(CentOS+Python2.7+easy_install)

研究室に新しくRedHatの計算機が来るそうなので、自分のMacBookにVirtualBoxを使用してCentOSを入れて自分の環境づくり&来年入って来る後輩にPythonを布教するための練習メモ。 目標:システムとは別のPythonをソースからインストール。yumでATLAS、easy_in…

Pool.imap()について

前回multiprocessingのPoolクラスの使い方を書いたのですが、執筆当時はイテレータについてよく分かってなくて、imap()が投げっぱなしだったのでそれについての補足です。 1. イテレータについて imap()の補足をする前にイテレータについて説明します。Wikip…

Python multiprocessing

前回Pythonでの並列化についてちょっと書いているうちに興味が湧いてきたのでもう少し掘り下げてみます。 Python2.6から標準モジュールになったmultiprocessingのリファレンスから並列に実行させるクラスについて色々試してみました。プロセッサ間の連携や共…

マルチコアで形態素解析を行う2(multiprocessing編)

前回の続きで今回はPythonで形態素解析をマルチコアで行うプログラムを実際に書いてみます。私自身multiprocessingモジュールはまだ全然理解できていませんが、並列に実行するプログラムを書くには Processクラス Poolクラス を使う必要があるようです。おそ…

マルチコアで形態素解析を行う1(プロファイリング編)

Pythonにはプロファイラというものが標準で付いていることを知りました。プロファイラを使用すると関数ごとの呼び出し回数や処理時間が計測できるので、どの部分が処理時間の足を引っ張ってるのかが簡単に分かります。無駄なループなどをコードとにらめっこ…

RSSで自然言語処理を体験する

自然言語処理って何? 大学の研究では自然言語処理というものを扱っています。 と言われても自然言語処理って何?という人がほとんど(自分も今年の4月まで知りませんでした)だと思いますので、自然言語処理について紹介していきたいと思います。自然言語処…

実行に時間がかかるスクリプトを並列実行するには

linuxで実行に時間がかかるスクリプトをいくつも実行する場合、マルチコアCPUならば並列実行して時間を短縮することができます。その方法とは、 % コマンド1 & コマンド2これだけです。&を付けると別プロセスでバックグラウンドで実行するので簡単に並列化…

標準機能でショートカットを追加して便利に

普段使用しているアプリで、この操作をキーボードショートカットでできたら便利だと思い、改めてメニューを確認したらショートカットが白紙でガッカリしたという経験がありませんか? 実はMacではどんなソフトでもキーボードショートカットを変更・追加する…

MacOS Xに初めからバンドルされてる「辞書」

記念すべき第1回目の記事ですが、思い切りマイナーなところからいきたいと思います。今回紹介するのはMacを買うと初めから付いてくる純正アプリの「辞書」です。 え?そんなアプリあったっけ?と思われる方もいるかもしれません。実際、私はこのアプリを他…