Presenter : Tetsuya Ohira (SmartNews, Inc.)Read less
※ただしPHP5.3以降に限る。 PHPってよく「PHP(笑)」って後ろに笑マークが付いたり、Disられたりすることが多い。でも僕には「笑」を付けるほどPHPは悪い言語だとは思えないんだよね。 PHPの良いところPHPの良さはなんといってもそのとっつきやすさだと思う。何も知らない初学者が「WEBページ作りたいよ!WEBプログラミングしたいよ!」といったときに第一の選択肢となるのはPHPだ。なんせPHPは「ぴーえっちぴー:はいぱーてきすとぷろせっさー」なんだからな! HyperText作るための言語、それこそPHPの本質たるところなのです。 逆にその手軽さがイケてないコードを量産していてるとも言えて、結果的にそうやって生まれたイケてないコードのいくつかを見て「PHPはダメ言語」って判断してしまいがちだけど、それは早急だと思う1。 またPHPの公式リファレンスは他のどの言語よりも情報が充実して
開発者「誰にも相手されへんと思った」人類には早すぎるババア育成アプリ「100万歳のババア」予想外の50万ダウンロード達成。 今回は育成アプリ「100万歳のババア」の開発者「yamabus」さんにお話を伺いました。なぜ彼は、このようなとんでもない作品を、世に解き放つに至ったのか? ※カフェで取材に応じるyamabus(ヤマバス)さん。 「100万歳のババア」について 「yamabus(ヤマバス)」について教えていただけますか? yamabus: 「yamabus」という名前で、個人制作の3Dアニメや3Dアプリを公開しています。もう15年くらい3Dの仕事をしていまして、半分は趣味のような感じですね。 昼間はゲームの会社で働いていますので、個人としては平日の夜22時〜2時間と、休日に活動しています。 どうして「アプリをだしてみよう」と考えたんでしょうか? yamabus: 元々、hamonさんと
このエントリでは、Time-based SQLインジェクション、すなわち時間差を利用したSQLインジェクションが意外に実用的だったという報告をします。デモ映像ありです。 はじめに Time-based SQL Injectionという攻撃があります。これはブラインドSQLインジェクションの一種で、ある条件の場合に一定時間(例えば5秒)スリープし、そうでない時との応答時間の差で情報を盗もうというものです。1回のHTTPリクエストで1ビットの情報が得られるので、それを積み重ねることによって、いくらでも情報を盗めるはずです…理論的には。 しかし、「理屈はそうでも、時間が掛かりすぎるよね」ということで、深くは追っかけていませんでした。SQLインジェクションの検査には有効でも、悪用としての実用性はあまりないと考えていたのです。 きっかけ きっかけは、以下のYahoo!知恵袋に以下の質問です。 SQL
— 環境 — rails-4.0.1 rspec-rails-2.14.0 capybara-2.2.0 同名クラスの任意の button を Submit する例 例えば、以下のように submit-button という名前のCSSクラスの要素が複数あり、任意の何番目かの要素の button を Submit したい場合。 <div class="submit-button"> <button class="btn btn-default">Submit</button> </div> <div class="submit-button"> <button class="btn btn-default">Submit</button> </div> <div class="submit-button"> <button class="btn btn-default">Submit</bu
ActiveRecordは必要になるまでDB読み込みをしません。 なのでやたら複雑なビューの中でクエリを弄ったり、コントローラーが肥大化してる状態でひどいSQLがログに流れてくると、パっと見ではどこが原因なのかすぐに分からない。 なので、SQLが実行された時にそれが実際にトリガーされたソースコードの位置も一緒にログに吐いてくれるgemを作りました。 bulletで分からないような、ビューのループの中で直接モデル読んでるみたいなヤバイ箇所を速やかに見つけるためのものです。 joker1007/activerecord-cause 仕組み的にはActiveRecordのロギングの仕組みを丸パクリしてcaller_locationsを足した感じ。 全ての読み込み位置を表示するわけではなく正規表現でマッチするパスを持ったソースコードの位置のみをログに記録します。 Railsで利用する場合は自動的に
'use strict'; global.React = global.require('react-native'); let xtend = require('xtend'); let {View, Text} = React; let template = require('./template'); let styles = React.StyleSheet.create(require('./styles')); let HelloNative = React.createClass({ render: function() { return template(xtend({}, {View, Text, styles})); } }); React.AppRegistry.registerComponent('HelloNative', () => HelloNative);
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く