IT系バンドマンの日常

備忘録やライフログなど

土日を利用してひとりハッカソンやってみた

ひとりハッカソンをやろうとおもった経緯

  • 社会人2年目である程度スキルがついてきたところでどれくらいやれるのか腕試し
  • 個人のプロダクトを一つも持っていないので1つくらい作ってみたかったから
  • それと、そういえば有名所のWebフレームワーク使ってサービス作ったことなかったなと思ったので、今回はPythonDjangoでやってみようと思います。

つくるもの

沖縄のライブ情報がたくさん集まってるサイトを作りたいと思います。作ろうと思った経緯としては、好きなバンドのライブ情報って結構みおとしがちで、月1とかで各ライブハウスのページまわったりしないといけないので結構めんどくさいんですよね。これから作るサイトさえ見ればライブ情報全部わかるようにしたかったからです。

競合分析

作ろうとしてるものに一番近かったのは

gigle (ギグる) | 沖縄のライブ・コンサート情報

ですが、会員登録が必要だったり、アーティスト名とかでソート出来ないので使いづらいです。今回は会員登録なしで検索機能を充実させたサイトを作ろうと思います。

作業ログ

1日目

  • AM9:00起床
  • 朝飯。冷凍チャーハンを食らう
  • PM10:00サイト構成を考えつつ家事をこなす
  • 一旦休憩をするつもりが14:00まで寝てしまう
  • その後Djangoチュートリアルを夜まで

Python Django チュートリアルまとめ - Qiita

2日目

Python3 + urllib + BeautifulSoupでネット上の情報を取得する - Qiita

成果物

できました!!アクセスするとランダムで変な顔文字が出るサイトが←

f:id:kaoru6strings:20170924205610p:plainf:id:kaoru6strings:20170924205613p:plain

どやぁ( ・´ー・`)

まとめ

流石に2日では触ったことのないフレームワークWebサービス完成まで持ってくのは無理があるってことが分かりました。 時間さえあれば完成まで持っていけそうだということはわかったので、完成次第、またこのブログでお知らせしたいと思います。 あと、土日ハッカソンやるって決めたら金曜の夜は21:00ごろ寝て次の日に備えるのがいいかもしれません。眠くてお昼寝してしまうので←

今度はこじんまりと3人ハッカソンとかやってみたい!

Python3とDjangoのコマンド集(自分用)

Djangoのバージョン確認

python -m django --version

PostgreSQLのコマンド集(自分用)

ログイン

psql -U USERNAME -d DATABASE

version関数でPostgresqlのバージョン確認

SELECT version();

テーブルの一覧表示

\d

ログアウト

\q

databaseを指定して論理バックアップ

pg_dump -U USERNAME DBNAME > dumpfile.sql

スキーマ確認

\dn

データベース一覧

\l

.sqlファイルを流し込む

\i dump.sql

UPDATE

UPDATE TABLE_NAME
SET id = 0, name = 'hogehoge'
WHERE id = 1;

※標準SQLの仕様上、文字列を扱う場合はシングルクオーテーションを使用する

INSERT

INSERT INTO TABLE_NAME VALUES
  (1, 'wow'),
  (2, 'FOO!'),
  (3, 'Awesome!');

MySQLのコマンド集(自分用)

バージョン

5.7.19

mysqlクライアントにログイン後、mysqlのバージョンを調べる方法

STATUS

文字コード確認

show variables like "chara%";

テーブルの構造を確認する

DESC table_name;
show columns from TABLENAME;

MySQLの出力結果をファイルにはきだしたいとき

SELECT * FROM table_name
INTO OUTFILE "/tmp/mysql.csv"
FIELDS TERMINATED BY ',';

データのインポート

mysql -u root -p dbname < export.sql

他の実行環境で作成されたJupyter notebookが自分の環境でdead kernelになるときの対処方法

イントロダクション

f:id:kaoru6strings:20170315080721p:plain

人から頂いたipynbファイルが自分の実行環境でdead kernelになってしまいました。つらみ(´・ω・`)

解決方法

jupyter notebookが生成してくれる.ipynbファイルはjson形式のテキストファイルです。( The Jupyter Notebook Format — IPython 3.2.1 documentation )

お好みのテキストエディタでおもむろに.ipynbファイルをひらいていただくとファイルの最後の方にmetadataというところがありますので、そこを自分の環境に書き換えると動きます。自分の環境を知る方法ですが、jupyter notebookで新しい.ipynbファイルを生成すると、そのnotebookの中身のmetadataが自分の環境です。

# Replace前の例
 "metadata": {                                                                                                                              
  "anaconda-cloud": {},                                                                                                                     
  "kernelspec": {                                                                                                                           
   "display_name": "Python [conda root]",                                                                                                   
   "language": "python",                                                                                                                    
   "name": "conda-root-py"                                                                                                                  
  },                                                                                                                                        
  "language_info": {                                                                                                                        
   "codemirror_mode": {                                                                                                                     
    "name": "ipython",                                                                                                                      
    "version": 2                                                                                                                            
   },                                                                                                                                       
   "file_extension": ".py",                                                                                                                 
   "mimetype": "text/x-python",                                                                                                             
   "name": "python",                                                                                                                        
   "nbconvert_exporter": "python",                                                                                                          
   "pygments_lexer": "ipython2",                                                                                                            
   "version": "2.7.11"                                                                                                                      
  }                                                                                                                                         
 },  
# Replace後の例
 "metadata": {                                                                                                                              
  "kernelspec": {                                                                                                                           
   "display_name": "Python 3",                                                                                                              
   "language": "python",                                                                                                                    
   "name": "python3"                                                                                                                        
  },                                                                                                                                        
  "language_info": {                                                                                                                        
   "codemirror_mode": {                                                                                                                     
    "name": "ipython",                                                                                                                      
    "version": 3                                                                                                                            
   },                                                                                                                                       
   "file_extension": ".py",                                                                                                                 
   "mimetype": "text/x-python",                                                                                                             
   "name": "python",                                                                                                                        
   "nbconvert_exporter": "python",                                                                                                          
   "pygments_lexer": "ipython3",                                                                                                            
   "version": "3.6.0"                                                                                                                       
  }                                                                                                                                         
 },  

これで無事dead kernelにならずにipynbファイルを動かすことができました!!(`・ω・´)

ですがソースコードは変換されずそのままですので自分の環境での検証は必須です。お気をつけください。

Ubuntu16にPHPbrewを用いた開発環境の構築してみた

Vim使ってPHPでステップ実行したいいいいい(`;ω;´)

ふと、ある日そう思ったわけです。
そんなわけなのですが、今回のゴールはphpbrewで自在にphpのバージョンを変えることができるところまで頑張ってみようと思います。

環境

手順

まずは必要なパッケージのインストールをします

sudo aptitude install apache2 apache2-dev php php-curl
sudo service apache2 start

localhostにブラウザからアクセスして"Apache2 Ubuntu Default Page"というタイトルのページにつながればおっけーですb

次にphpbrewのインストールです(詳しくはhttps://github.com/phpbrew/phpbrew/blob/master/README.ja.mdを参照)

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew
sudo mv phpbrew /usr/local/bin/phpbrew
phpbrew init

.bashrcか.zshrcあたりに以下の設定を追記した後、ターミナルを再起動か、設定ファイルを再読込させます。

[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc

Ubuntu仕様のApacheではモジュールのOn/Offをコマンドで行います。phpbrewでphpのインストールを行う際、/etc/apache2/mods-enabledに指定の.confファイルがなければ設定の書き込みに失敗して正しくビルドされません(phpに関するenabledなモジュールが1つもインストールされてない場合は特に意識する必要はないと思われます(未確認))。自分のモジュールの状況を確認して各自以下のコマンドを実行してください。また、PHP5とPHP7のモジュールを同時にOnにしてしまうとコンフリクトして正しくapache2が起動されませんので注意してください

# PHP5系をインストールしたくて、現在enabledなモジュールがPHP7のとき
a2dismod php7
a2enmod php5

# PHP7系をインストールしたくて、現在enabledなモジュールがPHP5のとき
a2dismod php5
a2enmod php7

古いバージョンのphpが欲しい場合は--oldをつけます。また、インストール時にphp本体と一緒にapache2のモジュールもインストールされますのでエラーが出たら指示にしたがってアクセス権の変更などをおこなってください

phpbrew update
phpbrew update --old
phpbrew known --old
phpbrew install 5.3.29 +default +apxs2
phpbrew switch 5.3.29

後々ステップ実行できるようにxdebugのインストールもしておきます。新しいバージョンのXDebugだと古いバージョンのPHP用にはコンパイルされていないことがあるそうなので、うまく行かない人はインストールするXDebugのバージョンを下げて試してみてください(参考URL: Failed to install xdebug · Issue #538 · phpbrew/phpbrew · GitHub

phpbrew ext install xdebug

# うまく行かない人はバージョンを調べて適当に古いバージョンをインストール
phpbrew ext known xdebug
phpbrew ext install xdebug 2.2.7

phpのバージョンを切り替えたあとは忘れずapache2を再起動しましょう

sudo service apache2 restart

ここまででPHPのバージョンを自在に切り替えることができるようになりました(できない人はコメントにて教えていただけると助かります!)

所感

PHP自体はすごく書きやすい言語だと思うけど、開発環境とかプロジェクトの管理とかでその人のセンスがもろに出そうな気がしました。何事もまずは整理整頓からですね!
それではみなさんよいPHPライフを!

参考にしたサイト様

github.com

qiita.com

qiita.com

github.com

WindowsでVimの環境を整える

みなさんお久しぶりです今回はWindowsでKaoriyaさんVimの設定に挑戦してみたのでやり方をメモしておきます

  1. KaoriyaさんのサイトからWindows版のVimをダウンロード

www.kaoriya.net

  1. 解凍して出てきたフォルダをC:\Program Filesあたりに設置します

  2. 起動させる際に、Kaoriyaさんの便利設定を読み込んだあとC:\Users\.vimrcまでユーザー設定を読み込みにいってくれます。今回はvimの設定ファイルはMacLinuxでのVimの環境と揃えるために自分のリポジトリから引っ張ってきたものを使いました

github.com

  1. C:\Program Files\vim80-kaoriya-win64\switches\catalogにあるutf-8というファイルをC:\Program Files\vim80-kaoriya-win64\switches\enabledにコピーすることで、KaoriyaVim内部のエンコーディングutf-8にすることができるようです。いまのところデフォルトのcp932でも問題なさそうなので、ここらへんの設定はまた後日ご報告できればと思います

WindowsのKaoriya版vim/gvimの問題と対処 - fudist

感想

KaoriyaさんVim最高!!KaoriyaさんVim使わずに+LuaVimコンパイルするのエグかった(挫折した)ので。。。