IntelliJ IDEA で Gradle Java のプロジェクトを作ったときのsrcフォルダの場所
普段Android Studioが勝手に作ってくれてよく忘れるので覚え書き。
- IntelliJ IDEA 2016.3.2 Community Edition での説明です。
プロジェクト作成の流れ
Create New Project(もしくはメニューの New -> Project)を選択して
Gradle -> Java を選択
GroupId にはパッケージ名、ArifactIdにはプロジェクト名を入れる
GradleのJavaプラグインではプロジェクトのレイアウトが決められていて(もちろん変更は可能)、ソースフォルダは
- src/main/java
が使われるようになっている。なのでここにフォルダを作ってソースファイルを入れないと、Gradleに設定を書いていない限り、syncするたびにソースフォルダとして指定しないといけなくなります。ちょっとハマりました。
これでプロジェクトが始められるぞー٩( ‘ω’ )و ガンバル
フォルダを自分で作りたくない
プロジェクト作成時に Create directories… にチェックを入れればフォルダは勝手に作られます。
よく読もうと思いました。終わり。
Visual Studio CodeでC/C++プログラムのデバッグをする時gdbが上手く動かない
なんだかブレークポイントで止まってくれない上に画像のようなメッセージが出る。
"warning: GDB: Failed to set controlling terminal: Operation not permitted\n"
色々と検索して当たりましたが簡潔に。
ptrace_scope
sudo sysctl -w kernel.yama.ptrace_scope=1
解決せず。ハズレgdb -window
gtkでwindow出してたのでもしかしてと思い。(英語を読む気がない感)
解決せず。ハズレgcc -g
これでした。
普通にgdb使う時はデバッグシンボルなくてもブレークポイントで止まってくれるのに……
おかげで妙にハマってしまいました。
お疲れ様でした。
EclipseでLogcatが消えた時にやったこと
24日目の記事です。ジャスト投稿!!!(ジャスト一週間遅刻)
23日目の記事はElixirのドキュメント環境を整える - 302 - あちらですでした(手前味噌)
25日目の記事はwebsearch.vimpr でサービス別コンテンツを即検索 - Qiitaです
EclipseでLogcatが消えた
会社ではEclipseからAndroid Studioへ移行中で[移行前|移行済み]のプロジェクトが混在しているのですが、移行前のものをいじっている時に遭遇したLinuxでEclipseを使ってる時にLogcatの画面で何も表示されないという問題を解決したときのメモ
Linux gnome環境 Eclipse Luna
なんとバグを2つ踏んでました。GTKウインドウの描画が正しくないものと、Logcatの設定2つの問題でした。
GTKウインドウの描画設定
eclipse.ini
を編集します
--- eclipse.ini.old 2015-12-31 23:46:51.619740843 +0900 +++ eclipse.ini.new 2015-12-31 23:47:02.763073854 +0900 @@ -12,9 +12,12 @@ org.eclipse.platform 256m --launcher.defaultAction openFile +--launcher.GTK_version +2 --launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.7 --XX:MaxPermSize=256m --Xms256m --Xmx1024m +-XX:MaxPermSize=1024m +-Xms1024m +-Xmx4096m +
メモリ関係のもの適当にいじってますが、大事なのはGTKバージョンの指定です。
launcher.GTL_version 2
この2行を--launcher.appendVmargs
の前に入れます。
Logcatの設定
StackOverflowの回答を見て欲しいんですが、workspace内にある設定ファイルをいじります。
この回答の手順が良いと思います。
Application等の値は自分の環境で変わるようですが、僕の場合は正しく動いている現在こんな感じになりました。
logcat.view.colsize.Application=226 logcat.view.colsize.Level=54 logcat.view.colsize.PID=58 logcat.view.colsize.TID=58 logcat.view.colsize.Tag=280 logcat.view.colsize.Text=688 logcat.view.colsize.Time=162
ほんとに値がよくわかりませんがこの2つを設定しなおしてちゃんと動くようになりました。終わりです。
Elixirのドキュメント環境を整える
23日目の記事です。
22日は幸せなコンソール - hogeblogでした。
24日は(まだ書いてません)
アドベントカレンダーとはなんだったのか……(スイマセン
Elixirのドキュメント環境を整える
普通に公式のドキュメント見たりIEx使ったりしてもいいんですが、いろいろなライブラリを串刺しで検索したい時にちょっとフベンだったのでメモ
Macにおける串刺しドキュメント検索にはDash.appというアプリがありますが、Linuxでも使えるアプリとしてZealというものがあります。
セットアップするとこんな具合になります
最高ですね。 ということでやったことのメモを書いていきます。
環境
- OS: Linux(Archlinux)
Zealのインストール
Zeal - Offline Documentation Browser
githubにインストールの仕方が書いてあります、が僕が使ったコマンドはこれだけでした。
yaourt -S zeal-git
これで入りました(・ัω・ั)
Archlinuxベンリですね
Elixirのドキュメントのダウンロード
Dashで使われているものをそのまま使えるようで、ぽちぽちとチェックマークをつけてDownloadボタンを押すだけでした。
Phoenixのドキュメントのダウンロード
Dash公式では用意されていないようですが、読み込めるっぽいことが書いてありました。
いやこれじゃ読み込む方法わかんねえ……ということで、適当に検索してたらありました。hex.pmでパッケージが引っかかりました。
ありがてえありがてえと思いながらas-a-global-archiveの方法でインストールしました。
(Installation & Usageの方法だとコケます。{:ex_doc_dash, "~> 0.2.0", only: :docs}
がいけなくて、最新は0.3.0です。)
MIX_ENV=docs mix do deps.get deps.compile docs.dash
これで./docs
フォルダ以下にフォルダが作成されるので、それをZealで設定しているフォルダにコピーします。デフォルトでは$HOME/.local/share/Zeal/Zeal/docsets
になっていると思います。
Zealを再起動して読み込めていることを確認できたらOKです。
ただ、なんかスタイルが変
期待していたのはElixirのドキュメントのようなスタイルなんですが、どうやら読み込んでいるstylesheet等がオリジナルのものになっている様子。Dash.appにあわせたのでしょうが、個人的には好きでない感じです。
結局どうしたかというと、Zealで読み込むデータベースはもう作れているようなので、
MIX_ENV=docs mix docs
でドキュメントを生成しなおしました(手抜き感
時間ができたらちゃんとforkして綺麗に生成したいなあと思いつつ終了です。
dash.vimってプラギンを見つけたんですが、本当にDash.appにしか対応していないようなのでVimから引くコマンドを後日。
Archlinuxでpyenvを使いつつmatplotlibを動かす
Archlinuxでmatplotlibを使いたい場合、pacmanに用意されたパッケージを利用すれば簡単にグラフが出せます。たぶん。
ただそれを自分で入れたpyenvの環境でやりたかったがためのメモ
なぜmatplotlib
今回はO'Reilly Japan - 実践 機械学習システムの環境を整えました。
まずは本の内容通りにコードを書いて表示しよう!と思ったのですがまったく結果が表示されない。
原因がわからない。
GUIに利用できるライブラリがないんじゃないかこれと思い、とりあえずQtバインディングのライブラリを入れました。
Pythonとmatplotlib
matplotlibはPythonで利用可能なプロットツールです。 プロットツールということで、プロットしたものを表示するGUI環境が必要です。 今回はQtを利用することにし、QtとPythonについて調べました。
PythonとQt
QtはC++から利用なGUIフレームワークです。
(これでキュートと読むらしい。今までキューティーと読んでた…)
C++から利用可能なものをPythonで利用するということは、つまりバインディングされているわけで、
よくあるパターンですが、Qtを使うための複数のライブラリが存在しています。
代表的な2つとして挙げられるのが
- PyQt
- PySide
のようです(要出典)
PyQt
PyQtはpip
でインストールできません
そしてライセンスがGPL
です(商用ライセンスもある)。
ちょっと使いづらいですね。
ただ、現状Qt5を利用できるのはPyQtだけのようです(PyQt5)
Qt5をつかうため+後述の理由があったため、今回はPyQt5を入れました。
Qt5使う理由は特になくて新しい物使っとこうかな程度です。
PySide
PySideはpip
でインストールできます
そしてライセンスがLGPL
です。PyQtよりも使いやすいですね。
今回PyQtを使うに至った大きな理由は、PySideがまだPython3.5で利用できなかったためです。
Python詳しくないですがなんとなく新しい物使いたい病なので苦労しながらPyQt入れました。
導入する
2つのライブラリ(SIP、PyQt5)をダウンロード、コンパイル、インストールします。
SIPはPythonから簡単にC++ライブラリを使えるようにするライブラリ(Riverbank | Software | SIP | What is SIP?)
で、PyQtが依存しています。
なのでSIPから先にインストールします。
wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz tar zxf sip-4.17.tar.gz cd sip-4.17 python3 configure.py make make install
SIPはすんなり入るはずです。次にPyQtを入れましょう。
事前にpacman
かyaourt
を使ってqt5-base
パッケージをインストールしておいてください。
wget http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.tar.gz tar zxf PyQt-gpl-5.5.1.tar.gz cd PyQt-gpl-5.5.1 python3 configure.py make sudo make install
どうやら共有ライブラリをシステム領域に入れるらしく、sudo
がないとインストールできません。
(インストール場所指定しておけばよかったなと後で思いました)
これでライブラリの導入は完了です。
設定ファイル
ライブラリは入ったはずなのに相変わらずmatplotlibでplotができず、しばらくうんうん唸ってました。 どうやら、matplotlib用のconfigファイルがあるらしいです。
import matplotlib
matplotlib.matplotlib_fname()
で現在読み込まれているconfigファイルの場所がわかります。
$HOME/.config/matplotlib
に設定ファイルを置くと読んでくれるらしいので、最初に読み込まれていたconfigファイルを複製して$HOME/.config/matplotlib/matplotlibrc
として読み込ませ、その内容を一部書き換えました。
書き換えた場所
--- $HOME/.pyenv/versions/3.5.0/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc 2015-12-13 18:54:09.000000000 +0900 +++ $HOME/.config/matplotlib/matplotlibrc 2015-12-14 07:46:21.760050011 +0900 @@ -35,7 +35,7 @@ # You can also deploy your own backend outside of matplotlib by # referring to the module name (which must be in the PYTHONPATH) as # 'module://my_backend'. -backend : agg +backend : Qt5Agg # If you are using the Qt4Agg backend, you can choose here # to use the PyQt4 bindings or the newer PySide bindings to
これで無事plotできるようになりました。 最後のconfigファイル書き換えるだけで最初からQt以外使って描画できてた気がする。
入れててよかったVimプラギンとか設定とか
この記事はCPS Lab Advent Calendar 2015 - Adventarの14日目の記事になります。後輩向けに書きました。
Elixirのこと書こうと思ってたんですが、まだまだひよっこなのでまた後日。
Vimも自分でプラギン書かないひよっこですが、始めたばかりの人の役に立てそうなレベルのこと書きます。
入れててよかったVimプラギン
今回はとりあえず入れてみたけど助かってるなぁと感じたVimのプラグイン(設定)を紹介しようと思います。
プラグイン入れることが全てではないですが、先人がベンリなものを作ってくれてるのでありがたく使わせてもらいます。
NeoBundle使ってるvimrcをそのまま切り貼りしてるのでたまに出てきますが、適宜読み替えて貰えれば幸いです。
lexima.vim
ソースコード書いてると良く""
や()
で文字列を囲みますがその入力を助けてくれるプラグインです。
IDEっぽい感じになります。
自動で""
や{}
を入力してくれるのでほぼ閉じ忘れがおきません。
文字で表現してもわかりづらいと思うので、githubのgifを見てください。
" lexima.vim {{{ if neobundle#is_sourced("lexima.vim") let g:lexima_no_default_rules = 1 call lexima#set_default_rules() endif " }}}
incsearch.vim
マッチするものが全てハイライトされるインクリメント検索ができます。 それがとても良いのです。
" incsearch {{{ map / <Plug>(incsearch-forward) map ? <Plug>(incsearch-backward) map g/ <plug>(incsearch-stay) " }}}
eskk.vim
Terminal環境によってはIMEが使えなくなってしまって困ることがあります。
そんな時に活躍します。skkの入力方式は癖がありますが、IMEなしで日本語が入力できるのはとてもありがたいです。
よく環境をお引越しする人にオススメです。
"eskk設定 {{{ let g:eskk#directory = '~/.eskk' let g:eskk#dictionary = { \ 'path' : "~/.skk-jisyo", \ 'sorted' : 0, \ 'encoding' : 'utf-8', \} let g:eskk#large_dictionary = { \ 'path' : "/usr/share/skk/SKK-JISYO.L", \ 'sorted' : 1, \ 'encoding' : 'euc-jp', \} let g:eskk#enable_completion = 1 " }}}
プラギン以外
知ってると少しうれしい機能です
keywordprg
Vimではカーソル下のキーワードを調べる仕組みが用意されています。
デフォルトではK(Shift + k)
でカーソル下のキーワードをman
を使ってしらべますが、
言語によってはドキュメントを検索するツールを指定したいです。その時にkeywordprg
を使います。
autocmd FileType ruby call s:ruby_filetype_settings() function! s:ruby_filetype_settings() setlocal tabstop=2 shiftround shiftwidth=2 setlocal completeopt-=preview setlocal keywordprg=ri endfunction
これでRubyのコードを書くときにK
を押せばri
でドキュメントを参照してくれるようになります。
vimのコマンド実行について
Vimではコマンドが一意に定まるとき、最後まで入力せずともコマンドが実行できます。タブで補完する必要もありません。
どういうことかと言うと、実行できるコマンドにExciteTranslate
とExplore
があったとして、
:Explore
これを
:Exp
に省略することが出来ます
自分でコマンドを書く際にこれを意識すると、とても入力効率が上がると思います。
下のscriptは現在開いているbufferのディレクトリにcd
するコマンドです。
command! CDCurrent call s:CDCurrent() function! s:CDCurrent() if isdirectory(expand('%:h')) cd %:h endif endfunction
:CD
で始まるコマンドは僕の入れているプラグインと被っていないので、これだけでbufferのディレクトリに移動できます。
なるべく被らないコマンドを定義して指を休めてください。
Vimはautocmdとmapだけですごく楽ができるので、慣れたらガシガシいじってください。
その他ポインタ
VimのCTRL-X補完について - daisuzu's notes
vim-jp » Vimのユーザーと開発者を結ぶコミュニティサイト
Vim Advent Calendar 2015 - Qiita
時間切れだぁ(・ัω・ั)
Railsチュートリアル2章をやってて引っかかったところのメモ
メモメモ
development.rb:1:in `<top (required)>': undefined method `configure'
解決法
config/environments/development.rb内の
Rails.application.config
を
DemoApp::Application.config
に書き換える参照
gem - Error launching Rails server: undefined method 'configure' - Stack Overflow
dynamic_matchers.rb:22:in `method_missing': undefined method `raise_in_transactional_callbacks='
解決法
config/application.rb内の
config.active_record.raise_in_transactional_callbacks = true
の記述を消す参照
ERROR RuntimeError: You must set config.secret_key_base in your app's config.
解決法
Gemfile内のrailsのバージョンを
4.0.5
から4.1.0
に書き換えてbundle update
参照
You must set config.secret_key_base in your app's config. エラー解決 - がんばります。