のアーカイブ

Cyberduck の使い方

2017年9月6日

ランチャーに黄色いアヒルがいて、[デバッグを手伝ってくれるのかな](https://cpplover.blogspot.jp/2013/02/blog-post_23.html)などと思い続けて数ヶ月、やっと使う場面がきました。その正体はファイル転送ツールで、お手軽にファイルの転送ができます。 プルダウンでサーバーを選んで、ユーザー名とパスワードを入力すると、見慣れたツリー状でファイルをブラウズすることができます。(もちろんダウンロードも) 「レビュー」のチケット
続きを読む

SQL のパフォーマンスを改善する方法(続き)

2017年8月30日

SQL のパフォーマンスを改善するための手法が[いくつも](MySQLを高速化する10の方法)あるようです。今回は「クエリを最適化する」方法に焦点を当てます。なお、アドバイスを頂いたのですがクエリの速度は explain や直SQLを発行して差を比較してみると良いそうです。 # 最適化すべきクエリ 対象のクエリを EXPLAIN に入れると、色々な値が入ったフィールドが出力されます。出力はまず[解説](http://nippondanji.blogspot.jp/
続きを読む

SQL のパフォーマンスを改善する方法

2017年8月23日

たぶん今できるのはクエリの最適化。 [explain](http://nippondanji.blogspot.jp/2009/03/mysqlexplain.html) をよむ。 パフォーマンスを良くしたい いくつか方法がある。 スキーマを変える? クエリを変える? クエリを変えるのはお手軽。(比較的)影響がないし。 そのためには、explainを理解する必要がある。(なぜ?) クエリを最適化するには、まずEXPLAINで実行計画をチェックする必要が
続きを読む

汚い commit 履歴を修正する

2017年8月14日

すでにプッシュしているコミットを書き換えたら更に汚くなってしまいました。猛省いたします。 # commit 履歴が汚すぎる問題 commit 履歴に関してなのですが、committer も author も違うし、commit と進捗の関係が全くない、という汚い状態でした。最低限、committer は修正したかったので、rebase を勉強しつつ修正しました(参照:[6.4 Git のさまざまなツール - 歴史の書き換え](https://goo.gl/iJ
続きを読む

新規フォームを更新フォームに変える

2017年8月9日

結果的には解決したのですが、まだまとめられておりませんし、アンチパターンとなってしまっているかもしれないのでもう一度確認いたします。 新規フォームか更新フォームかは、以下の isedit という変数で決められております。問題は、2つの画面の片方で打刻をした後に、新規フォームを押してしまうと、打刻がすでにされているのにも関わらず「新規フォーム」と判定され、登録が重複してしまうという点です。 ``` boolean isedit = (ALEipUtils
続きを読む

新規フォームでオブジェクトモデルは取得できるのか

2017年8月2日

できない(はず)です。 事前に出勤ボタンが押下された後に、もともと開かれていた別のウィンドウで新規のフォームを作成したときに、打刻した時刻を新規の新規フォームに反映させる、というチケットに取り組んでいます。新規のフォームを作成した段階で、「すでにデータがあるよ!」と知らせる関数までは作れたのですが、すでにデータがある場合で、その打刻のデータを反映できないでいます。 まず最初に考えたのが、以下のように新規にオブジェクトモデルを取得し、this の clock_in_
続きを読む

テーブルで特定の条件のデータの重複をチェックする

2017年7月19日

# テーブルで特定の条件のデータの重複をチェックする タイムカードのページを複数同時に開いた状態で、片方で打刻、もう片方で新規作成のフォームを生成すると、フォームで登録したほうが重複してしまします。なので、フォームを生成する時点で、既に打刻が行われていないかを判定して、仮に打刻が行われている場合は、その打刻の時刻を入力した状態でフォームを生成します。 ## 目的: Java で DBの重複をチェックして、Velocity に情報を渡して分岐させる ### 対
続きを読む

データベースのカラムに特定の値がある時で分岐させる

2017年7月12日

SQLで特定の列に特定の値があった場合とない場合で処理を分けたいケースがありました。 Cayenne 経由で SELECT * WHEHE 条件 で得たリストの長さが1以上なら特定の操作をする、という処理が可能だと思うのですが、 もう少し軽い処理がありました。 確か TOP(1) のように一つだけを抽出して、取得できればA、取得できなければB、のような処理でした。再起動したときに下書きが消えてしまったのと、TOPというコマンドを思い出したのが最後の最後となってし
続きを読む

Aipo の ログの確認方法 (Docker 環境)

2017年7月5日

ログの場所が変わったので備忘録も兼ねて、ログの確認方法を残します。 cd でログのディレクトリにうつって、cat で対象のログを出し、それをパイプで grep します。 だいたいどんなエラーが起きているかを確認できます。(tail を使ったほうがスマートな気もします) ``` cd ~/Documents/aipo/GitHub/aipo/docker/web/logs cat aipo.log | grep "" ``` [ログの確認方法〜データベース
続きを読む

ドモルガンで読みやすくする

2017年6月28日

昔習った内容ですが、論理式は以下の書き換えが可能です。 !(P || Q) == !P && !Q !(P && Q) == !P || !Q したがって、 (${authority}!='A')||(${roomtype}!='G') は !( (${authority}=='A') && (${roomtype}=='G') ) に書き換えられます。 今回は以下のような書き換えがありました。 ``` hoge
続きを読む

Heroku Postgres 和訳

2017年6月21日

[Heroku Postgres](https://elements.heroku.com/addons/heroku-postgresql) は Heroku 上で動く SQL database service です。add-on として管理されており、提供されています。また、Heroku Postgres は PostgreSQL driver のあるどんな言語からも accessible です。具体的には、Heroku によってサポートされる全ての言語、フレームワーク(
続きを読む

APIのキーを晒さないために

2017年6月14日

夏も近づいて[怖い話](http://qiita.com/mochizukikotaro/items/a0e98ff0063a77e7b694)をシェアしていただきました。リンク先の内容としては、API のキーを Git で公開した結果、不本意に利用され多額の請求を受けた、という話ですね。 これも他人事ではないなぁと思いつつ、どんな方法で公開したくない情報を管理できるのでしょうか。 1. 環境変数で定義し、コードには埋め込まない 2. コードには埋め込むけど .
続きを読む

Twitter のリプライの時刻と Python で処理した時刻の差を求める

2017年6月7日

時間が無かったので書き溜めから投稿します。 twitter からリプライをもらった時刻から、実際にPython で処理した時刻までの時間を返す関数が欲しかったので、少し考えてみました。 # 使用するモジュールのインポート まずは使うモジュールのインポートをします。 ``` import twitter import time import email.utils ``` # twitter からリプライをもらった時刻の取得 次に twitt
続きを読む

テキストエディットでダブルクォーテーションを使うときの注意

2017年5月24日

諸事情がありcsvをテキストエディットというテキストエディタでいじっていたのですが、ダブルクォーテーションが勝手にスマート引用符に変換されていました。見ればわかりますが、よく見ないと気が付かなかったのでもし使うときがあれば注意したいです。なお、設定の変更で回避できます。 [Mac のダブルクォーテーションが勝手に変換される問題の対処法](http://d.hatena.ne.jp/nakamura001/20140506/1399363317)
続きを読む

異なるメールアドレスを持つ1001件のcsvファイルを作成する【追記】

2017年5月24日

20170531追記 csvにより入力された「異なるメールアドレスを持つ顧客データ」を1ページあたり 1000件まで表示させるチケットがあり、境界の値周辺で挙動がおかしかったので1001件のデータを与えました。ただ1001件のデータがなく、かつ上限の変数もclassファイルとなって操作できないので、pythonでcsvを作ってみました。 第一項に出力ファイル名、第二項に生成する行の数です。適宜output_file.writeの中身をコメントアウトして使いました。
続きを読む

管理者だけに表示するポートレットを xreg で作る際の注意点

2017年5月17日

Aipoのポートレットである「管理ガイド」が管理者だけでなく、一般ユーザーにも表示されている場合がある、というチケットに取り組みました。結果としては再現すらできずに泥沼状態だったのですが、いくつか学びました。 まず、xreg は変更しても mvn install などは Tomcat を停止させてからでないと、変更が反映されないという点です。この点に関しましては、過去のエントリーの多さがハマりやすさの指標となっていると思います。([xregが反映されないとき](http
続きを読む

Velocity のログの確認方法

2017年5月10日

Eclipse のウィンドウを辿っていき、 NTailを表示することで、Aipo.log を含め複数のログが確認できます。 過去のエントリーを参考に用いたのですが、タブを消した+シークレットウィンドウで辿れないので、今後探してリンクします。 RHS of #set statement is null. というエラーログが大量に出ていたのですが、対応すべきかは今後考えます。
続きを読む

dojo.queryについて

2017年4月26日

jQuery の offset の使い方がいまいち分からず、dojoでできないかと探していたのですが見つかりませんでした。かわりに dojo.query について少し触れます。たくさんエントリーはあるので差別化を今後はかってゆきたいところであります。 ### dojo.query() とは [このページ](http://news.mynavi.jp/special/2007/dojo1/004.html)によると、 * Dojoの0.9から導入されたパワフルなA
続きを読む

アウトラインの見かた

2017年4月12日

コードの全体を把握したいけど、長くてすぐには追えない場合に、 **アウトライン** が便利でした。Eclipse では **アウトライン** を command + o (おそらく o for outline) で開けます。フィールドやメソッドの左には記号があり、白抜きがフィールドを示しています。また、赤は private を示し、黄は protected、 緑が public を示しています。 [アウトライン (Outline) ビュー](http://so-zou.
続きを読む

eclipseで新しいクラスを定義した後の留意点

2017年4月5日

新しいクラスを定義しファイルが作成された後、push する際に作業したファイルを指定する必要がある。端末上では git add --all の後に git status をして確認できるが、eclipse の GUI で何も考えずに push の作業をすると、設定が「新規で作成されたファイル等が指定されない状態」になっていることがある。そのまま状態だと作業したファイルが無慈悲に消滅するので、push する際は留意したい。
続きを読む