じぶんメモ

プログラミングのメモ、日常のメモとか。

macでAlt + PrintScreen的なことをした(アクティブなウィンドウのキャプチャ)

command + shift + 4 押下後にspaceキー押下でアクティブなウィンドウのみのキャプチャができる。

Javaでバイト数での空白埋め

空白埋めにはString.format("%10s", value)を使用すれば良いが、 String.format()はマルチバイトも1文字として認識するため、 固定長ファイル出力など、バイト数での空白埋めをするには個別で実装する必要がある。 以下文字をSJISとして扱った場合の空白埋め…

OutputStream から InputStream への変換

// baosの生成 ByteArrayOutputStream baos = new ByteArrayOutputStream(); // baosへの書込 baos.write(・・・); ・・・ // baosのからbaisへの変換 bais = new ByteArrayInputStream(baos.toByteArray());

Javaで文字コードを指定したファイル出力

文字コードを指定してファイル出力する際は、OutputStreamWriterを使用する。 import java.io.FileOutputStream; import java.io.OutputStreamWriter; public void outputFile() { FileOutputStream outputStream = null; OutputStreamWriter outputStreamWr…

EasyWineでWindowsのアプリケーションを動かす

以下のサイトからEasyWine.appをダウンロードする。 matome.naver.jp ダウンロードしたら、起動するとWindows風のエクスプローラが立ち上がる。 エクスプローラから参照できる場所にwindowsのexeファイルを設置しておけば、windowsのアプリケーションを実行…

VMからvagrantのboxを作成する

1.vagrant用ユーザ設定をする ゲストOS(VM)側で作業をする。 vagrantユーザを作成し、sudo設定をしておく。 # groupadd vagrant # useradd vagrant -g vagrant -G wheel # echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers # sudo設定 # passwd vagr…

MySQLのインポート・エクスポート

インポート hoge$ mysql -u ユーザ名 インポート先DB < ダンプファイル エクスポート mysqldump -u ユーザ名 -r ダンプ先ファイル名 --single-transaction ダンプ対象のデータベース名 オプション ・-t … テーブルのデータのみエクスポートする。 ・--no-dat…

シェルスクリプトでディレクトリ内のファイルに対してループ処理する

たとえばこんなシェルスクリプトをfor.shとか名前をつけて保存する。 for file in `\find . -maxdepth 1 -type f`; do # TODO done そんでもって実行する。 hogehoge:user$ bash for.sh 例)ディレクトリ内のファイルを1つに連結 for file in `\find . -maxde…

Vagrant upで「Authentication failure.」エラーが出る場合

他のユーザがpackage化したboxを使用するときによく発生する。 こうなると、共有フォルダもマウントされなくなる。 原因は、vagrant側のOSの公開鍵と、 vagrant upした際に生成される秘密鍵の組み合わせが合わないということ。 解決するためには以下の手順を…

MySQLでの権限設定

登録ユーザの確認 SELECT user, host FROM user; 権限の表示 SHOW GRANTS for 'hoge'@'%'; 権限のつけ方 GRANT (許可したいコマンド) ON 許可するDB.* TO ユーザ名@'接続元ホスト' IDENTIFIED BY 'パスワード' WITH GRANT OPTION; 権限周りの処理も許可した…

CodeIgniterでindex.phpへのアクセスでエラーが発生。

CodeIgniterでindex.phpにアクセスしたら以下のようなエラーが発生した。 Your system folder path does not appear to be set correctly. Please open the following file and correct this index.php index.phpをapplication、systemsフォルダと違う階層に…

Struts2で不要なtableタグを生成させないようにする。

strutsでtspに記述するUIタグ(<s:textfield>など)は、 html生成時に不要なtableタグを生成することがある。 レイアウトが思ったように組めなくなるので、非常に困る。 struts.xmlに以下の記述を追加することで、tableタグが生成されないようになる。 <struts> <constant name="struts.ui.theme" value="simple" /> </struts></s:textfield>

MacでのJava開発構築

JRE(動作環境)の導入 Oracleの公式ページよりダウンロード。 落としたファイルを解凍し、実行。 JDK(開発環境)の導入 同じくOracleから落としてインストール。 バージョンの確認。 java -version tomcatの導入 Homebrewで落とせる。 brew install homebrew/v…

SQL カラムのスキーム変更方法

カラム追加 ALTER TABLE [テーブル名] ADD [カラム名] [データ型]; カラム変更 カラム名とデータ型変更 ALTER TABLE [テーブル名] CHANGE [旧カラム名] [新カラム名] [データ型]; データ型変更 ALTER TABLE [テーブル名] MODIFY [カラム名] [新しいデータ型]…

MySQL操作カンペ

MySQLで良く使いそうなコマンド。 MySQLの起動 MySQLの起動 mysql.server start MySQLの使用 mysql -uroot -p # パスワードを入力 データベースの操作 データベースの作成 mysql > create database DB名; データベース一覧表示 mysql > show databases デー…

webpackを使用したReact.jsのjsxのビルド

React.jsで使用するjsxのビルド方法について調べた。 web packを使用すると良さそう。 webpackとは 必要なリソースの依存関係を解決し、アセット(配布物)を生成するビルドツール、らしい。 jsxは、普通にも使用できるが、コンパイルをかけないと遅いような…

FactoryGirlを使用したデータの作成

Gemのインストール Gemfileに以下を追加し、bundle installを実行する。 RSpecを使用することを前提に書くのでRSpecも一緒にインストールしておく。 group :development, :test do gem 'rspec-rails' gem 'factory_girl_rails' end bundle install後にrspec…

Railsでjsonを返却するAPIを作成する。

Railsでjsonを返却するAPIを作成するには、Jbuilderが良さそう。 まずはモデル作成 rails g scaffold Product name:string price:integer category_id:integer API用のルーティング設定 config/routes.rbをいじり、API用のルーティングを設定する。 APIには…

Railsでタグ機能を実装する。

Railsでデータにタグ付けさせる昨日の実装方法について調べた。 acts-as-taggable-onというGemを使えば良さそう。 インストール まずはbundle installでGemをいれる。 gem 'acts-as-taggable-on', '~> 3.4' タグ付けに必要なテーブルを作成。 tomy2002:~/wor…

使わなくなったGemをアンインストールする

アンインストール方法。 tommy1218:~/workspace $ bundle exec gem uninstall アンインストール対象のGem あとは、GemfileからアンインストールしたGemを削除すればOK。

Railsにtwitter bootswatchを導入する

Railsにbootswatchを導入する際にはまったのでメモ。 導入方法 gem 'twitter-bootswatch-rails-helpers', '~> 3.2.0.0' gem 'twitter-bootswatch-rails', '~> 3.2.0' # bootswatch適用に必要 gem 'less-rails' gem 'execs' Gem fileに記入したらインストール…

Railsでデータベースへの登録あれこれ

データベース登録サンプル。 * saveメソッド:登録成功時にtrue、失敗時にfalseを返却する。 * save!メソッド:登録失敗時に例外を返却する。 普通に登録する分にはsaveメソッドで問題ないが、 他テーブルも兼ねたトランザクションでのロールバックをする場…

Railsでi18nを使用して他言語化に対応する

i18nを使用して他言語化する方法を調べた。 デフォルトロケールの設定 config/application.rb内に、以下の1行を追記。 config.i18n.default_locale = :ja 各ロケールの辞書の設定 config/locales/内に、各ロケールのyamlファイルを作成。 日本語ならば、conf…

hidden フィールドマニピュレーション

hidden フィールドマニピュレーションとは ファイルのダウンロード機能や、ECサイトなどで、 重要な情報をhiddenフィールドに保持させておいたために、 リクエスト送信時にhiddenフィールドの値を改ざんされ、 不正に情報を取得されること。 hidden項目だけ…

Rails4のマイグレーションの書き方

新規にテーブル作成する場合 class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.column :email, :string, null: false t.index :email end end end カラムの追加や削除を行う場合 changeメソッドを使用する。 changeメ…

Railsのマイグレーションファイルをまとめる

Railsで、テーブル構成を変更するたびに作成するマイグレーションファイルが増加しまくるので、 何か良い方法はないか調査した。 二つみつけた。Squasherが手軽な感じがする。 Squasherを使ってまとめる方法 お手軽なやつ。ただしdry runは対応していない模…

jQueryを使用したAjax通信

Ajax通信でハマったのでメモ。 ちなみにrailsなら :remote => true にしておけばjsにajax処理書かなくても問題ない。 (その代わり.js.erbが必要か。) 他の言語でもやることを想定してメモしておく。 通信方法 ボタン押した時にAjaxでデータ取ってくるみたい…

Railsで独自のアクションをルーティングに加える

railsにはリソースベースのルーティングで、 index, new, create, show, edit, update, destroyが用意されている。 resources :posts 独自のアクションをルーティングに追加する方法 # これだとposts/:id(hogehoge)とみなされる get 'posts/hogehoge' => 'po…

クロスサイトスクリプティング対策

クロスサイトスクリプティングとは スクリプトタグ等、ユーザが入力した悪意のある値がhtmlに埋め込まれ、 スクリプトが実行されてしまう脆弱性のこと。 対策 formでユーザが入力した値をhtmlに出力する際は必ずエスケープ処理をかける。 POSTでパラメータと…

javascriptでの文字列エスケープ

XSS対策としてjavascriptでの文字列エスケープについて調べた。 PHPや他の言語のようにサニタイズメソッドが用意されていないようなので 独自に実装するのが良さそう。 考慮する必要があるのは、 < → &lt; > → &gt; " → &quot; ' → &#39; & → &amp; リプレー…