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

プログラミング初心者が一番簡単にプログラミングを体感できる環境を考えてみた

ここ最近、他学科、他学部の友人に「プログラミングってどうやるの?難しそうだよね。」みたいな話をよくされます。今日もリプライで聞かれました。自分なりに最も簡単にプログラミングができてかつ、興味を持ちやすい環境はなんなのか考えてみました。 初め…

ブログを11日間書き続けてたらホッテントリ入りした話

今日でブログを連続で書くのは12日目になります。 今までも不定期に記事を書いていたのですが、ここまで連続で書いたのは初めてです。 連続で書こうと思った理由は特になくて、挙げるとすると、1月末で大学の試験が終わり、春休みが始まったので、毎日やった…

Dockerのコンテナを操作できるWebアプリを作ってみた

Dockerの操作は、コマンドからだけではなく、リモートAPI経由でもできます。 APIの説明はここにあります。 http://docs.docker.io/en/latest/api/docker_remote_api/今回は、このAPIを使ってコンテナを簡易的に操作できるWebアプリを作ってみました。 とりあ…

RubyからDockerコンテナを作ってsshで操作できるようにする

Dockerは操作をするためのAPIも用意されていて、便利そうなのでRubyからコンテナを自動起動するための方法をメモしておきます。 sshが使えるコンテナを作る ubuntuのイメージを使用します。 標準のイメージだとsshは使えないのでいったんシェルログインし、…

SoftEther VPNを使ってVPNサーバを立ててみたものの、速度が出ない

今日は大雪で、大変でしたね。SoftEther VPNを使ってVPNサーバを立てて見たのですが、VPN接続(IPSec)した状態でWeb閲覧したところ、異常に速度が出ないので、現状をメモしてみました。 どなたかアドバイスを頂けると嬉しいです。 サーバ環境 OS: Ubuntu Serv…

netcatコマンドでコードを書かずにお手軽チャット環境作ってみる

nc(netcat)コマンドという万能コマンドがありまして、これを使うと簡単にTCPやUDPを使ってパケットの読み書きができます。 以下の例だと、HOSTの行と次の空行まで入力すれば、htmlの文章が返ってきます。 $ nc www.example.com 80 GET / HTTP/1.1 HOST:www.e…

Docker0.8でMac OS Xがサポートされたので仮想化環境構築してみた

以前、Dockerを使って仮想環境を作ってみた - くろの雑記帳という記事を書きましたが、本日Docker0.8がリリースされ、Mac OS Xがサポートされたようなので、環境構築をしてみました。 VirtualBoxをインストールする 単体で動作する仕組みができたのかと思っ…

Macで拡張ファイル属性やアクセス制御リストの属性を消す

Macのファイルシステムでは、拡張ファイル属性(Extended Attributes, EA)やアクセス制御リスト(Access Control List, ACL)というものがあり、前者は通常のファイル名やパーミッション、所有者とグループといったものとは別に属性情報を付与することができ、…

Javaで全角英数文字を半角に、半角カナを全角に変換する

Javaでテキストの処理をしていた時に、入力されたテキストのうち、全角英数文字を半角に、半角カナを全角に変換して統一する必要があったので、方法を調べていたら、標準ライブラリの中に便利なものがあったので、紹介します。 java.text.Normalizer java.te…

rubyで自分のツイートデータから頻出語を見つける

ふと自分のツイートデータを使って頻出語リストを作ってみたいなと思ったのでやってみました。 環境 Mac OS X 10.9.1 (Mavericks) ruby 2.0.0 必要なものをインストールする MeCab MeCab(めかぶ)とはオープンソースの形態素解析エンジンで、これを使うと、文…

20分でテスト付きのgemを作って公開する

20分程度で、テストコード付きのgemを作って公開するところまでやってみました。 1. gemのひな形を作ります。 $ bundle gem sudden_death -b -t $ git commit -m "first commit" git initとgit addが自動的に行われるので、コミットしておきましよう。 2. su…

英語苦手だけどプルリクエスト送ってみた話

1ヶ月ちょっと前の話です。 プルリクエストをしたのは人生で2回目で、プルリクエスト初心者ですが、バグと思われる挙動を見つけたので、原因を調査し、プルリクエストに挑戦してみました。 バグと思われる挙動に出会ったきっかけ RubyのPryという対話型コン…

mrubyを試してみた

最近、またmrubyの話題をよく聞くようになって、試してみたくなったので、最低限の導入だけやってみました。 ソースコードを取得する $ git clone https://github.com/mruby/mruby.git ビルドする $ cd mruby $ make テストする 正常に動作するか、一応テス…

zsh5.0.5を入れたら、PATHがおかしくなった

homebrewで入れたzsh5.0.5で、pingやtraceroute, netstat, ipconfigといったコマンドを使おうとしたら、以下のように、コマンドが使えなくなっていました。 $ ping zsh: command not found: ping いやそんなはずはない…と思ったのですが、ターミナルを立ち上…

Rubyに標準出力をバッファリングさせないようにする

Rubyでバッチ処理のようなものを書いていたときに、一件出力するごとに結果を標準出力に吐くようにプログラムを書いた時の話です。 処理が進んでいるにもかかわらず、結果が出力されず、しばらく経ってから一気に出力されました。調べてみると、Rubyは標準出…

pdfをpngファイルに変換する

pdfを1ページごとにpngファイルに変換するには、ghostscriptを使うのが手っ取り早いようです。document.pdfを1ページごとにdocument-1.png, document-2.png ... と出力するには、以下のようなコマンドを実行します。 $ gs -dSAFRE -dBATCH -dNOPAUSE -sDEVIC…

はがきデザインキット2014がインストールできない

はがきデザインキットという年賀状のデザインツールが日本郵政から無料で出ていて、家族が使おうと思ったら、インストールできなかったので、対処方法をまとめておきます。 症状 はがきデザインキットはAdobe Airで動いていて、通常は指示に従ってダウンロー…

Dockerを使って仮想環境を作ってみた

最近、Docker*1が盛り上がっているようなので、僕も試してみました。 とりあえず簡単に使ってみたので、簡単に動かすところまで流れを書いておきます。 この記事を参考にしました。 Dockerとは dotcloudが公開している、オープンソースの仮想化ソフトウェア…

「あなたとの続柄」

年末調整の季節ですね。給与所得者の扶養控除の紙の「世帯主の氏名」の下にある「あなたとの続柄」という欄。 バイト先に提出するのに、毎回なんて書いていいのか迷うのでメモっておきます。 世帯主が父親の場合 「あなたとの続柄」には「父」と書きます。「…

ドコモのAPIを使って自然言語でユーザと会話ができるプログラムを作成する

docomoが11/11日にdocomo Developer supportというサイトを公開しました。 ここで公開されたAPIは、 音声認識 環境センサー 雑談対話 知識Q&A 文字認識 位置情報 ドコモケータイ払い の7つです。(11/19現在)この中で、雑談対話APIが簡単で面白そうだったので…

「実践Vim」レビュー

はじめに 先々月、 @kaoriyaさんに、「実践Vim」のレビュワーとして選んでいただき*1、「実践Vim」を頂きました。ありがとうございます。 新人枠として採用されたようなので、初心者目線ということでレビューを書いていきたいと思いますが、その前に、Vimに…

C4SAをGithubと連携させて、最新版コードが自動で反映されるようにする

ニフティのC4SAは、アプリケーションの開発から運用までが簡単にできる便利なクラウド環境です。 標準でGithub連携機能があるのですが、C4SA上のリポジトリにGithubにpushされた最新版コードを反映する作業を自動にしたかったので、解決方法を探してみました…

三端子レギュレータでハマった

久しぶりに電子工作をして、三端子レギュレータをつかったら勘違いでハマってしまった。 何にハマったのか 手元に余っていた表面実装タイプの3.3V出力の三端子レギュレータを使いました。(NJU7223) 上の写真を見るとわかりますが、レギュレータのチップから…

facebookで自分のライフイベント一覧を表示する

たまに確認しようと思って、どこにあるか毎回探してしまうので、書いておきます。 場所 自分のプロフィールのトップページ ↓ 基本データ ↓ 全てを表示 ↓ この年にあったこと これで自分のライフイベントが見られます。

C言語で関数の戻り先アドレスを書き換えてみる

バッファオーバーフローを利用して関数の戻り先アドレス書き換えるサンプルとか見かけるけど、自分でやったことがなかったので、やってみた。 ソースコード (test.c) #include <stdio.h> void hack() { printf("Hacked!\n"); } void func() { int a[1]; a[2] = &hack;</stdio.h>…

Ubuntu Desktop版をVirtualBoxにインストールする

ゼミでVirtualBoxを使ってUbuntuの仮想マシンを構築する時のための資料として書いたものです。 記事を書いた時点での最新版(Ubuntu13.04)での構築方法ですが、他のバージョンでも基本的に流れは同じです。 はじめに Virtual Boxを起動します。(VirtualBoxだ…

Macのrbenvでruby-2.0.0をインストールする

普通にやったらビルドがコケてしまったので、対処方法をメモしておきます。 普通にやると $ rbenv install ruby-2.0.0-p195 -> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz Installing ruby-2.0.0-p195... BUILD FAILED Inspect or clean…

感動。

久しぶりにこういう方面で感動した。夜中に、Androidとマイコン、接続して何か作れないかな…と考えてたわけですよ。 ぱっと思いつくのは、PICとかArduinoとADKライブラリ組み合わせることでしょう。適当にネット見てたら、FTDriverっていう、Android用USBシ…

FacebookアプリでIEでのみセッションが使えない

結論から言うと IEは、デフォルトではセキュリティの観点からクロスドメインによるCookie操作を拒否する というのが原因だったみたいです。 参考: IE iframeを用いてクロスドメインするとcookieが動かない? | ブロードヒューマンネットワーク社員ブログ ど…

enchant.jsでテキストラベルを中央に表示する

ver0.5系の場合 var sampleLabel = new Label(); sampleLabel.font = "40px cursive"; sampleLabel.text = "Hello World!"; // 以下で中央揃えの指定をします sampleLabel._element.style.textAlign = "center"; sampleLabel.y = HEIGHT; ver0.5系列は、DOM…

特定のディレクトリ以下のファイルの文字コード&改行コードを一括で変換する

findコマンドと、nkfコマンドを組み合わせます。 find . -type f -name "*.js" -exec nkf -w -Lu --overwrite {} \; この場合、カレントディレクトリ以下のjsファイルの文字コードをUTF-8, 改行コードをLFに置換しています。 ちなみに、"\;"の前に半角スペー…

Ubuntu Serverのバージョンを12.04から12.10にアップグレードする

アップグレードするには、do-release-upgradeコマンドを使用すればよいのですが、12.10はLTS版ではないので、 $ sudo vim /etc/update-manager/release-upgrades (vimの部分はお使いのエディタを指定してください) などして、release-upgradesファイルを開き…

EclipseでProcessingを扱う

Processingは簡単な記述でグラフィックが描けたり、アートっぽいものが作れたりと、非常に便利な環境です。 IDEは、ちょっと作って試すにはいいのですが、Processingを使って本格的にプログラムを書いたり、デバッグをするには向いていないです。 そこで Pro…

Think Pad X230のHDDをSSDに換装する

Think Pad X230には、一定の加速度を検知すると、HDDのヘッドを退避させて、データの破損を防ぐ機能が付いていますが、なんだかんだ不安っていうのと、速度が魅力だったので、HDDをSSDに換装しました。 HDDを取り出す Think Padはメンテナンス性が高いですね…

jQuery Mobileで、ボタンのテキストを自動改行するようにする

こんな感じのjQuery Mobileを使ったサイトがあったとします。 button-test.cssは、自分で作成したcssファイルです。現時点で内容は空とします。 <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <link rel="stylesheet" href="css/jquery.mobile-1.2.0.min.css"> </link></meta></meta></head></html>

ブックハンティングに行って来ました。

ブックハンティング 明治大学の図書館では、ブックハンティングというイベントがあって、大学の図書館に入れたい本を学生自身で選ぶことができます。今回は、それに参加してきました。 選書基準を満たせば、一人10万円程度まで、図書館に希望した図書を購入…

Cygwinでtigを使う

CUIのGitブラウザであるtigをCygwinで使いたかったので、ソースからコンパイルしました。ncursesやlibncursesやlibiconvが入っていなかったので、Cygwinインストール時に使用した、setup.exeを使ってインストールしました。 上記のものをインストールしてい…

DigiFi No.7 の付録で3000円でサーバから音楽を再生できるようにする

自室に置いてあるサーバには、写真とか楽曲ファイル等が保存してあって、接続したPCから再生できるだけでも便利なのですが、サーバだけで再生できたらいいな、と以前から思っていたのですが、DAC買って…アンプも買って…となると、そこそこお金がかかってしま…

zshのcorrect機能を指定したコマンドだけ作動しないようにする

zshを使っていて、 $ sudo aptitude update みたいなことをしようとした時に、 $ sudo aptitude update zsh: correct 'aptitude' to '.aptitude' [nyae]? y sudo: .aptitude: コマンドが見つかりません みたいなことになって面倒なので、"aptitude"と打った…

byobuのバックエンドをtmuxからscreenに変える

サーバにUbuntu Server 12.04をインストールし、別のPC(Cygwin + mintty)からsshでログインして、byobuを使って作業しようと思っていたのですが… こんな感じに、表示が崩れてしまいました。一番下の行が何行も表示されてしまっています。試しに、byobuではな…

gitサーバをインストールする

サーバを再構築したあと、gitのリポジトリを管理するものをまだ入れていなかったのですが、あると便利なので、入れることにしました。 gitosisを入れようと思ったのですが、最近はgitoliteが人気だそうなので、せっかくなのでgitoliteを入れることにしました…

Verilog環境の構築

ハードウェア実習と論理設計演習でVerilogを習ったので、自習できるように自宅に環境を構築しておこうと思います。 Verilogとは? Verilog(ヴェリログ)は、デジタル回路の設計用の論理シミュレータであり、そこで使用するハードウェア記述言語でもある。 (…

Javaのオートボクシングの弊害?

先日、玉木研究室の方々がICPCに向けた学内セミナーを開いていただいて、そこに参加させていただいた時に先輩からJavaで、Integer型のオブジェクトを格納するListを作って、List#removeを呼び出した時に、List#remove(int)が呼び出されるのかList#remove(Int…

owncloudを導入する

ブラウザから簡単にファイルをアップロードしたり、ダウンロードしたり、共有したりできる環境がほしいな、と思って、何かないかな〜と探していたら、owncloudというものを見つけたので、サーバに導入してみました。 owncloudとは? ownCloudはDropboxのよう…

ICPCに向けて〜Getting Started〜

ICPCに向けて、自分で書いたものとか、勉強したことをこれから載せていこうかな、と思います。まず,Java のスケルトンコード(基本形)を示します。 public class Sample1 { public static void main(String[] args) { } } Javaが初めての人にとっては見慣…

Android携帯を買ったら入れておくべきアプリ

最近ガラケー(フューチャーフォン)からスマートフォンに買い換える人が増えてきたので、個人的に入れておくと便利だな、と思ったアプリを列挙しておきます。 twicca 言わずと知れたTwitterクライアント。 使いやすいので非常に捗ります。 Opera Mini 動作が…

Quartz Schedulerのダウンロード

Quartzは、Javaオブジェクトをジョブとして登録すれば、指定した時間や間隔でジョブを実行してくれるジョブスケジューリングシステムです。 便利そうなので使ってみようと思ったのですが、どこからダウンロードすればよいのかわかりにくかったので、備忘録と…

MinGW/MSYSの文字化け対策

MSYSを使ってls等のコマンドを使うと、日本語が文字化けしてしまいます。 以下のような対策をしました。 ホームディレクトリの.bashrcファイルを編集し、以下の内容を追加します。(なければ新規作成) alias ls='/bin/ls -F --color=tty --show-control-chars…

Androidの/systemディレクトリをread/writeでマウントする

読み書き可でマウントする $su #mount -o rw,remount /dev/block/mtdblock0 /system 元に戻す時 $su #mount -o ro,remount /dev/block/mtblock0 /system

Ubuntu Server 11.04を11.10にアップグレードしたら、ネットワークに繋がらなくなった

Ubuntu Server 11.04を11.10にアップグレードし、再起動すると、以下のようなメッセージが出て、ネットワークに接続できなくなりました。 unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: Connection refus…