Vimで「;」(セミコロン)を使ってみる
皆さん
こんにちは、こんばんは
TomoProgです。
今日はVimで「;」(セミコロン)の使い方を知らなかったので、ここに書いておこうと思います。
例えば以下の様な例文があったとしましょう。
My favorite programming language is python!!
カーソルが先頭にあったとして、programmingの「p」にカーソルを移動させたいときはどうすればいいでしょうか?
地道に「l」を押して右にカーソルを移動させてもいいですが、今回の例文では「fp」と入力すると瞬時に移動できます。
「f」を押してから任意のキーを押すことで、現在のカーソル位置から前方検索を行い、マッチした場所にカーソルを移動させることが出来ます。
ここまでは知っていたのですが、ここからさらに次の「p」に移動しようと思った時、もう一度「fp」と入力しないと移動できないとずっと思っていました。
しかしそんな面倒なことはしなくていいです。
なぜなら、
「;」を押すことで直前の「f」コマンドを繰り返す事が出来ますから!!
今まで「.」コマンドでなんで「f」コマンドを繰り返せないんだろうと思っていたのですが、「;」だったのですね・・・
それではまた。
TomoProg
Djangoを使って掲示板を作ってみる Part0
皆さん
こんにちは、こんばんは
TomoProgです。
GWも最終日となりました。
皆さんはどのように過ごしましたか?
私は3泊4日で福岡に旅行に行ってきました!!
博多ラーメン、モツ鍋も食べれたし、太宰府にも行けたので、満足いく九州旅行でした。
それはさておき、前のブログでDjangoを使ってWebアプリを作るという目標を掲げたので、どんなWebアプリを作るのかをここに書いておこうと思います。
それでは頑張っていきましょう。
なんで作ろうと思ったの?
理由としては、
- Pythonの情報は英語が多いので、日本語でも気軽に情報交換できるサイトが欲しい。
- PHPやPerlを用いた掲示板作成は多いが、Pythonで掲示板を作ったという情報は見かけない。
- 掲示板作成を通じて、Djangoの使い方やDB設計などを経験し、自分自身のスキルを磨く。
それらしいことを理由としてあげていますが、
作ってみたいなと思ったから作る。
これが全てだと思います!!
期間は?
2ヶ月を目標にしようと思います。
最後に
実は一度掲示板を作成しましたが、挫折しました。
今回はとにかく動くものを目指して頑張っていこうと思います。
それではまた。
TomoProg
Django + Apache + mod_wsgiでWebサーバを構築してみた
皆さん
こんにちは、こんばんは
TomoProgです。
気がつけばもう4月も最終日。
この4月に書いた記事数を見てみると、
1件
YouTubeを禁止した記事しか書いてなかったんですね。
毎日書くと言っていた日々は何だったのか。
もうそんなことは知りません。笑
長々とした前置きは置いておき、
今回はUbuntuでDjango、Apache、mod_wsgiを使ってWebサーバを構築してみました。
それでは頑張っていきましょう。
Django?Apache?mod_wsgi?
そもそも、Django、Apache、mod_wsgiってなんぞやという人も多いと思うので、自分の整理のためにも簡単に説明してみようと思います。
- Django(ジャンゴ)とは
DjangoはPythonで書かれたWebフレームワークの1つです。
PythonのWebフレームワークは数多く存在しますが、その中でもフルスタックのWebフレームワークなのが特徴的で、Webアプリを作成するために必要な機能はDjangoだけでほぼ実装できるみたいです。
かなり多くの機能を提供してくれるのですが、なんと無料で使用できます。
ちなみに読み方は「ジャンゴ」です。
「ディージャンゴ」と読んだ人は私と同レベルです。笑
- Apache(アパッチ)とは
Webサーバソフトウェアの1つです。
ほとんどのWebサービスはこのApacheで動いているのではないかと思っています。
初版は1995年に公開されたらしいです。
20年以上経った今でも多くの人が使用しているのは驚きですね。
ちなみにApacheもDjangoと同じで無料で使えます。
- mod_wsgi(モッドウィズギィ)とは
mod_wsgiはPythonプログラムをApache上で動作させるために必要なモジュールです。
ApacheにDjangoで作ったWebサービスを公開するときに使用します。
こちらも無料で使用可能です。
必要なものをインストールする
さて、使用するソフトやモジュールの紹介も終わったので、早速Ubuntuにインストールしていきましょう。
- Apacheのインストール
まずは、WebサーバソフトウェアであるApacheをインストールします。
ターミナルを開いて、以下のコマンドを入力します。
$ sudo apt-get update $ sudo apt-get install apache2 $ sudo apt-get install apache2-dev
構築した環境にブラウザからアクセスして以下のようなサイトが出てきたらApacheのインストールは完了です!!
- Djangoのインストール
次はDjangoをインストールしていきましょう。
Djangoは仮想環境で構築したいので、毎回お世話になるvirtualenvを入れていきます。
$ sudo apt-get install python3-pip $ sudo pip3 install virtualenv
virtualenvがインストールできたところで、仮想環境を作成し、仮想環境に入っておきます。
WebAppの部分は任意で構いません。
$ virtualenv --no-site-packages WebApp $ cd WebApp $ source bin/activate
(WebApp)がターミナルの先頭に表示されれば仮想環境に入れている状態です。
(virtualenvコマンドでWebAppの部分を変更した人はその変更した名前になっていればOKです。)
さて、仮想環境も出来たので、Djangoをインストールします。
と言っても仮想環境内でたった一行入力するだけです。
$ pip install django
djangoがインストール出来たかどうかはインタラクティブシェルを起動して、以下のコードを入力します。
>>> import django
>>> django.get_version()
インストールしたdjangoのバージョンが表示されればOKです。
- mod_wsgiをインストール
あとはmod_wsgiに関するモジュールをインストールしていきます。
こちらも仮想環境内でインストールします。
$ pip install mod-wsgi $ pip install mod-wsgi-httpd
インストールに少し時間がかかるので、気長に待っていてください。
これで必要なものはすべてインストール完了です。
Djangoを使ってWebアプリを作成する
必要なものをすべてインストールしたので、次はDjangoを使用した時に出力されるIt Worked!のページを出力してみます。
まずは、仮想環境内でDjangoプロジェクトを作成します。
mysiteの部分は任意のプロジェクト名で構いません。
$ django-admin startproject mysite
プロジェクトのディレクトリが作成されていれば成功です。
あとは上記で作成したDjangoプロジェクトを以下のコマンドで80番ポートで起動させます。
$ cd mysite $ sudo ../bin/mod_wsgi-express start-server --port=80 --user=djangowebserver mysite/wsgi.py
userに指定するユーザはログインしているユーザの名前を入れておけば大丈夫みたいです。
もし、Apacheが起動している場合は80番ポートが既に使用されているためエラーになると思います。
その場合は以下のコマンドでApacheを一度止めてから、上のコマンドを試してみてください。
$ sudo service apache2 stop
さて、ブラウザでアクセスしてみると・・・
It Worked!!
Djangoが80番ポートで起動出来ました!!
YouTube禁止令を発動してみた
皆さん
こんにちは、こんばんは
TomoProgです。
前回書いたブログが3月20日。
今日は4月3日。
久しぶりの更新です。
今週一週間は頑張ろうとか書いた記事は完全に意味が無かったですね。
過ぎたことは流しておきましょう・・・
それはさておき、
今回はChrome拡張機能でYouTubeを禁止してみました。
それでは頑張っていきましょう。
Chrome拡張機能を勉強する
まずはChromeの拡張機能を自分で作れないと話にならないので、勉強することにしました。
勉強にはドットインストールの動画を使用するのが効果的でした。
http://dotinstall.com/lessons/basic_chrome_v2dotinstall.com
Chrome拡張機能には目的に合わせて4つの機能があるみたいです。
・Browser Action ツールバーに常駐し、いつでも起動することが出来る ・Page Action 特定のページで起動することが出来る ・Content Scripts 特定のページで自動で実行する ・Context Menu 右クリックメニューから起動することが出来る
これら4つの機能すべてを動画で簡単に説明しているので、動画を一通り見れば簡単な拡張機能は作れるようになると思います。
実際に作ってみる
勉強も終わり、実装したい機能も考えたので、あとは実際に作るだけです。
自動で違うページに飛ばす方法が良く分からなかったので、以下のサイトを参考にさせていただきました。
stackoverflow.com
以下の3つのスクリプトが今回の拡張機能に使用するスクリプトです。
manifest.json
{ "name": "Stop YouTube", "version": "0.1", "manifest_version": 2, "description": "YouTubeのサイトを開くとGoogleホームページへ飛びます。", "permissions":[ "tabs" ], "background": { "scripts": ["background.js"] }, "content_scripts": [ { "matches": ["https://www.youtube.com/*"], "js": ["myscript.js"] } ] }
background.js
chrome.runtime.onMessage.addListener(function(request, sender) { chrome.tabs.update(sender.tab.id, {url: request.redirect}); });
myscript.js
chrome.runtime.sendMessage({redirect: "https://www.google.com"});
manifest.jsonはChrome拡張機能のタイトルなどのメタ情報を書いておくjsonファイルです。
基本的にはbackground.jsに指定したページへ移動させるスクリプトを書いておき、myscript.jsに移動したいURLを記述しておきます。
また、myscript.jsが起動するサイトはmanifest.jsonのmatchesに指定したサイトにアクセスしたときに起動するようにしています。
文章にしてみるとあまり詳しいことは分かっていないことが露呈しますね・・・。
あとは上記の3つのスクリプトを一つのフォルダにまとめて、Chromeの拡張機能として追加するだけで、簡単にYouTubeを開いたときにGoogleのホームページに飛ばすことができました。
まとめ
これでYouTube生活からおさらば出来ると信じています。
拡張機能をOFFにしなければ・・・
それではまた。
TomoProg
今週は頑張ろうかな
皆さん
こんにちは、こんばんは
TomoProgです。
前回書いたブログが3月12日。
気付けば約1週間ほど放置状態でした。
なぜなら・・・
書くネタが全く思い浮かばなかったから!!
1週間放置してネタが思いついたわけではありませんが、今週はブログ更新できるように頑張ろうと思います。
それではまた。
TomoProg
Vimに自作コマンドを組み込んでみた
皆さん
こんにちは、こんばんは
TomoProgです。
今回は私がPythonのプログラムを書き始めるときに、ほぼ毎回書くコードをVimコマンドで自動入力できるようにしてみました。
それでは頑張っていきましょう。
毎回同じことを書くのは面倒くさい
私がPythonのプログラムを書いているとほぼ毎回書くコードがあります。
それがコチラ
#-*- coding:utf-8 -*- def main(): if __name__ == "__main__": main()
コマンドラインから実行した際に、main関数からプログラムがスタートするように、このコードをほとんどのPythonプログラムで書きます。
1度や2度書くくらいなら何とも思わない量なのですが、Pythonプログラムを作るたびに、毎回毎回書くのは面倒です。
というわけで、この6行をVimのコマンドで入力できるようにしてみます!!
自作コマンドをVimScriptで作成する
Vimで自作コマンドを作る場合はVimScriptというVim専用のスクリプトを使用します。
他のプログラム言語を触ったことがある人は割りと簡単に習得出来そうです。
それでは早速、VimScriptで自作コマンドを作っていきます。
私が作成したコマンドがコチラ
:command! -nargs=1 PyTemplate call PyTemplateFunc(<f-args>) function PyTemplateFunc(template) if a:template == "main" :r ~/.vim/mycmd/py_template/main.py elseif a:template == "docstr" || a:template == "ds" :r ~/.vim/mycmd/py_template/docstr.py else echo("Nothing Python Template.") endif endfunction
1行目の:commandで始まる行がコマンドを定義している部分です。
今回はPyTemplateという名前でコマンドを定義しました。
コマンドを実行すると、PyTemplateFunc関数が呼び出されるようになっています。
PyTemplateFunc関数の中身を見てみましょう。
templateの中身(PyTemplateコマンドに渡した引数)がmainであれば、main.pyを読み込むようになっています。
ついでにドキュメンテーション文字列のサンプルもコマンドで入力できるようにdocstrの場合はdocstr.pyを読み込みます。
main.pyとdocstr.pyの中身は以下の通りです。
# main.py #-*- coding:utf-8 -*- def main(): if __name__ == "__main__": main()
# docstr.py """ This is a documentation string sample Please Write Desciption How To Use: import sample help(sample) """
.vimrcにコマンドを登録する
自作コマンドが完成したので、Vimから呼び出せるように.vimrcを編集します。
:sourceの後に作成したVimコマンドファイルのパスを指定します。
:source ~/.vim/mycmd/py_template/py_template.vim
実際にやってみる
登録も出来たので、実際にVimのコマンドラインモードで自作コマンドを実行します。
:PyTemplate main
ドキュメンテーション文字列のサンプルを入力する場合は
:PyTemplate docstr もしくは :PyTemplate ds
両方実行してみた結果がコチラ
実行結果: #-*- coding:utf-8 -*- """ This is a documentation string sample Please Write Desciption How To Use: import sample help(sample) """ def main(): if __name__ == "__main__": main()
どちらも入力することが出来ました!!
今日の成果
今回はVimの自作コマンドを作って、毎回の作業を効率よくしてみました。
これから少しだけPythonでのプログラム作成が快適になりそうです。
それではまた。
TomoProg
応用情報技術者試験まで残り38日となりました
皆さん
こんにちは、こんばんは
TomoProgです。
一ヶ月くらい前にこんな記事を書きました。
tomoprog.hatenablog.com
そうです。
実は応用情報技術者試験に申し込んでいたんです。
タイトル通り応用情報技術者試験まで残り38日・・・。
全く勉強していない!!
というわけで、残り38日間勉強します。
それではまた〜
TomoProg