nissy のアーカイブ

wkhtmltopdfでPDF変換した際に文字が重なる

2016年11月27日

htmlで作成されたページを簡単なコマンドでpdf変換してくれるwkhtmltopdfというツールを使っていたところ、 文字が重なるバグが生じたので解決方法をハックに残しておきます。 原因なのですが、今回の場合は**letter-spacingというCSS**が悪さをしていたようです。 これをうまく修正してあげるには以下のオプションをつけてあげるとよいみたいです。 ``` $wkhtmltopdf --dpi 96 ``` ### 参考にしたページ
続きを読む

PHP 月末の日付の取得

2016年11月18日

PHPで月末の日付を取得するのにはまったので、ハックに残しておきます。 nヶ月後の末日は、以下のコードで一見取りたくなるのですが、以下のように1〜3月付近で予期していない挙動見せることがあるそうです。 ``` // nヵ月後 echo date('Y-m-d', strtotime(date('Y-m-t') . '-n month')); //2月が表示されない echo date('Y-m-d', strtotime('2014-01-29 +1 mont
続きを読む

WindowsにRuby on Railsをいれてみた

2016年11月10日

友人やサークルの先輩からRuby on Railsを勧められ、[Ruby on Rails チュートリアル](http://railstutorial.jp/)をやろうとしたところ、ローカルに開発環境する際、[install Rails.com](http://installrails.com/)を参考に自力でやってみると良いとのことだったので、やってみましたー。 その際、色々なエラーにぶつかったのでハックに対処法も含め残しておきます。 ### 基本的には [ins
続きを読む

xpathでうまく要素を指定できないとき

2016年11月7日

今回は、xpathでクラスの検索などによっても要素どうしてもうまく指定できずに困ったときの裏技をハックに残しておきます。 うまく要素を指定できないときの最終手段としては、FirefoxのFirebugを用いて要素の絶対パスを取得します。 【方法】 0. Firebugをインストールしておく 1. Firefoxで開発中のページを開く 2. ページ上でFirebugを開き、Chromeのディベロッパーツールのようにxpathを取得したい要素を選択する
続きを読む

js callbackの書き方

2016年11月1日

以前のハックでは、コールバックの基本的な書き方に触れました。 ただ、javascriptについてはpromiseと呼ばれる手法を用いてのコールバックの書き方もあるようです。 一般的に、javascriptのコードについてはコールバックの構造が見えにくくなることが多く、 これを防ぐためにpromiseという記法は有効らしいです。 以下のページを参照にして、サンプルコードを追記で書きたいと思います。 [今更だけどPromise入門](http://qiita.c
続きを読む

RangeError: Maximum call stack size exceeded

2016年10月28日

スタックオーバーフローというエラーのことらしいです。 一般的には、関数の再帰呼び出しによって生じるものが多く、スタックと呼ばれるメモリが限界に達したときに出ます。 完全に画面が固まってしまったので、コードを見直しVagrantを再起動してもう一度やり直したところまた正常に動いてくれました。
続きを読む

jQuery .prev() と.next()の使い方

2016年10月9日

以下のような、DOM要素があったとき、 ``` list item 1 list item 2 list item 3 list item 4 list item 5 ``` prev()とnext()で以下のような部分のDOM要素の選択をすることができます。 ``` //.prev()の場合 item2の背景色が赤に変わります $('li.third-item').prev().css('background-color',
続きを読む

jQuery BabySteps スライド切り替え時に処理を加える

2016年10月7日

このプラグインでは、以下の用意されている関数で2つの用意したスライドを遷移できるようにしてくれます。 ``` // slide1とslide2は紐付けたいスライドのセレクタを指定 var slide1 = $('#hoge1'); var slide2 = $('#hoge2'); slide1.bindStep(slide2) ``` 今回開発している際、スライド遷移のときに独自のバリデートを通したいときやスライドを変えたタイミングで何か別の関数の関数を
続きを読む

WordPressのデバック

2016年9月20日

Wordpressで開発するには、無くてはならない、debug.logによるデバックの仕方です。忘れないように、ハックに残しておきます。 ## 1 'WP_DEBUG_LOG'と'WP_DEBUG'を有効にする wp-config.phpに以下のコードを追加してあげます。 ``` define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', false); define('WP_DEBUG_LOG', true);
続きを読む

SQL文使用時の簡単なインジェクション対策

2016年9月10日

### SQLインジェクションとは SQLインジェクションとは、SQL文のパラメータを外部の人が自由に書き換えて、データベースに不正なアクセスをすること。 この対策として、何もやらないのは良くないと思ったので、とりあえず対策としては十分ではないのですが、パラメータをエスケープする方法をハックに残します。 ``` SELECT post_title FROM $wpdb->posts WHERE post_type = 'hoge' AND ID =
続きを読む

WordPress $wpdbでデータベースを扱う

2016年9月10日

[SQL文で直接データベースにアクセスを行う](http://hacknote.jp/archives/22143/) 前回残した以上のハックではSQL文そのものに触れたので、今回のハックではどのように実際データを取得するのかについて残したいと思います。ここでSQL文でWordpressのデータベースにアクセスするときに大切な存在が$wpdbです。実際のサンプルコードは、以下です。 ``` // $wpdbの準備 global $wpdb; //クエリと出力型の
続きを読む

SQL文で直接データベースにアクセスを行う

2016年9月7日

Wordpressからデータの取り出しを行うとき、get_postとかget_post_metaの関数を何回か利用して行うときがあると思います。この時、多数のデータベース検索をしてしまい、データベースに負荷をかけてしまう恐れがあります。そのようなときには、自分でデータベース検索を行う関数をSQLで作ってしまい、検索数を減らすことが可能です。 ``` $room_ids = get_posts(array( 'post_type' => 'rooms', 'post_s
続きを読む

PHP error 対処法 その2

2016年9月7日

SQL文を書いている時に、何個か出会ったので、ハックに残しておきます。 ##1 Notice: Array to string conversion このエラーは、引数に文字列(string)を渡さなくてはならない所に配列を渡してしまっていることが原因のようです。文字列を扱うときにうっかりやってしまいそうなミスなので、気をつけたいですね。似たようなエラーとして**expects parameter 1 to be string, array given**とかもありま
続きを読む

jQuery return false と preventDefault() の違い

2016年9月4日

なかなか苦しんだ内容だったのでハックに残しておきます。 ``` hogehoge.jpへ //以上の親要素と子要素に以下のクリックイベントを加える /*イベント1*/ $(".hogehoge").click(function(){ alert(".hogehoge"); }); /*イベント2*/ $(".hoge").click(function(){ alert(".hoge"); }); ``` こ
続きを読む

jQuery on() と click()の違い

2016年9月3日

clickイベントに紐づけている関数をon()かclick()のどちらかに統一して記述しようとしたときに、ふと気になったのでハックに残しておきます。 ``` $(function(){ // 新しい要素の追加 $('#generate').click(function(){ $('#hoge').after(''); }); // clickされた時の処理①
続きを読む

jQueryプラグイン validate.js

2016年8月30日

## まずバリデートとは 恥ずかしながらvalidationの意味を知らなかったので調べて見ると、検証とか妥当性確認とかの意味らしいです。 今回の開発でバリデートとかかわることがあったのですが、どこで関わったかというと入力フォームのところです。ウェブで新規会員登録とかする時、「この項目は必須です」や「入力項目が不足しています」とかの注意文を見ることがあると思います。これを手軽に実装してくれるのが、jquery.validate.jsというプラグインです。このプラグイン
続きを読む

Selenium WebDriver UIテストにおける注意

2016年8月29日

Selenium WebDriverによる自動テストは大変便利です。しかし、ajaxなどでの非同期処理をよく扱うWebサイトのテストをするときは注意が必要です。というのも、テストでは非同期処理の終了を待たずに次々処理をしてしまう可能性があるからです。 ``` ajaxButton.click(); WebElement fooElement = driver.findElement(By.id("hoge")); ``` 以上のコードでは、Buttonをクリ
続きを読む

Ajax 色々な処理

2016年8月29日

今までのAjax通信では、successやerrorでの処理しか見かけたことが無かったので、 新しく学んだcompleteについてハックに残しておきます。 completeは、successやerrorの処理が呼ばれ、通信が終了したときに呼び出される処理のことです。successとerrorの処理が終わった後に必ず呼び出されるので、非同期処理を行いたい時は便利です。 ``` // 順番 処理1→ 処理2 $.ajax({ type: 'GET' or
続きを読む

PHP 高速化

2016年8月5日

PHPにはたくさんの便利な関数がありますが、これを安易に使うと膨大な計算量になってしまい、Webページの読み込み速度の低下を招いてしまうことがあります。実際に表示に3秒以上かかってしまうサイトは、40%以上のユーザーが離脱するといわれているらしいです。今回は、実際に2つの関数を高速化させたので、ハックに残しておきます。 ## **array_push** この関数は、数ある遅い関数の中でもダントツで遅いらしいです。 ``` $ids = array(); array
続きを読む

セキュリティ用語あれこれ

2016年8月3日

## タイムスタンプ 時刻認証と呼ばれる暗号セキュリティー方法です。いつ存在していた情報か、改ざんされていない真正な情報かを証明することができます。 今回は、cssファイルのキャッシュを防ぐ方法として、ファイルのurlの末尾にタイムスタンプを加えることで対処しました。 ## nonce 外部からの悪意のあるアクセスから守るために使われる、一度だけ使われる番号のことです。(number used onceの略で、ワンタイムトークンとも言うらしいです)。このため、1回
続きを読む