サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
woshidan.hatenablog.com
Amazon API GatewayでCORSを有効にするとOPTIONSメソッドが追加されるのが気になったので、CORSについて少し調べました。 CORSとは オリジン間リソース共有Cross-Origin Resource Sharing (CORS) は、追加の HTTP ヘッダーを使用して、あるオリジン (ドメイン) で動作しているウェブアプリケーションに、異なるオリジンのサーバーにある選択されたリソースへのアクセスを許可することができる仕組みです。ウェブアプリケーションは、自分のオリジンとは異なるオリジン (ドメイン、プロトコル、ポート番号) からリソースをリクエストするとき、オリジン間 HTTP リクエストを発行します。*1 クライアントサイドの実装は、最近ではIEのごく一部のブラウザ以外で実装されていて、JavaScriptで異なるドメインのサーバへアクセスしようとした時によ
この記事はRubyアドベントカレンダーの14日目の記事です。 最近Rackにさわることがあったのでこの記事では Rackの概要 RackミドルウェアとRackアプリケーションの違い についてまとめます。 Rack概要 RackはWebサーバとRuby及びRubyのフレームワークとの間でやりとりをするためのインタフェースを提供するためのライブラリです。 具体的にはRackは Webサーバに来たリクエストを決まったキーを持つハッシュに加工し *1 、そのハッシュを引数にしてRubyで動いているアプリケーションのプログラムを呼び出す Rubyのアプリケーションから受け取る['200', {'Content-Type' => 'text/html'}, ['A barebones rack app.']] のような形式の配列を加工して、Webサーバが扱う変数に代入する のはたらきをする Rack
APNsを利用する際に必要な2種類の接続信頼 APNsを利用する際には証明書やトークンが必要ですが、それは認証のためです。 ドキュメント*1には、暗号化されたデータが正しく復号できるか、途中で改ざんされていないかみたいな確認にあたる暗号化検証とあわせて 接続信頼 と呼ばれています。 この接続信頼には プロバイダ - APNs間の接続信頼 APNSにリクエストを送ってきた人がプロバイダー(=プッシュ送りたい人、アプリ作った人)であることを証明する これが確認できないと、プロバイダとAPNsの間でやりとりはできない APNs - デバイス間の接続信頼 APNsから通知を受信するデバイスが、認証を受けたもののみであることを証明するためのもの の2種類があります。 プロバイダーAPNs間の接続信頼 まず、プロバイダーAPNs間の接続信頼の話をします。 プロバイダーAPNs間の接続信頼には「トークン
たまたま仕事で気になったので、ActiveRecord::Baseのcreateとsaveの違いについて簡単に調べました。 まとめ save(!)メソッドはcreate(!)メソッドで利用されている create(!)メソッドはnewメソッドとsave(!)メソッドを行うメソッド save(!)メソッドを利用しているので、レコードの保存に失敗した場合、createメソッドでは属性が代入されたオブジェクトが返り、create!メソッドでは例外が発生する save(!)メソッドの中を追っていくと、new_record?メソッドの返り値によって、INSERT文を呼び出しているメソッドとUPDATE文を呼び出しているメソッドを分けている風に見える save(!)メソッドはcreate(!)メソッドで利用されている https://github.com/rails/rails/blob/master
この記事はRuby Advent Calendar 2017の23日目の記事です。 はじめに Webアプリケーションフレームワーク(WAF)といえば、 薄いアプリケーションをサクッと書くのに適しているsinatra なんでもあり気味なRuby on Rails など、rubyで有名なものだけでもぱっと複数名前が上がりますね。 これらのWAFはApacheやnginxと連携させて動作させますが、これらのWebサーバはそのままではWAFと連携して動きません。なにかしら間にコードを書く必要があるのですが、このコードのインタフェースがWAFによって違ったらWAFを選んだら連携させるサーバも固定されてしまいますね。 そこで、WAFとWebサーバの間にこれらが協調動作するためのインタフェースを設定しましょう、それがrack... とまで書いていてやっぱり意味がよくわかっていないので、この記事ではngi
AndroidではAndroid Oからバックグラウンド処理の実行制限が厳しくなることが話題ですが、iOSでは以前から基本的にはバックグラウンド処理はアプリがバックグラウンドに回った時点で停止させられます。 実際にはiOS側の判断で止めるので、タスクがすぐにkillされる状況は少なくともiOS10の段階ではなかなか開発段階の状況では再現できなかったりします*1。しかし、少なくとも実装時はバックグラウンドに回ったタスクはすぐkillされても困らない前提で書く必要があります。 そして、音楽アプリでの再生処理や地図アプリ用の位置情報の取得、ファイルのダウンロードなどバックグラウンドになってもしばらくの間動き続けることが保証されていてほしいタスクはよくあります。 この場合の対処としてできることは3種類紹介されており、それぞれ概要としては、 Foregroundで短いタスクを開始する場合は、アプリが
testautomationresearch.connpass.com 要件の細かいことを突いたりテストケースの設計が大好物だったため、そういうのを本職としているテストエンジニアはどういう人たちなのかを知りたかったので「システムテスト自動化カンファレンス2017-2」に参加してきました。 図々しく「テストも開発もするモバイルエンジニアのためのXCUITest/Espressoのすすめ」という題でLTをさせていただいたので、取りいそぎスライドとその補足についてだけでもメモします。 スライド speakerdeck.com スライド補足 Appiumはいろんな言語のドライバがあるので好きな言語で書けるという話について Appiumはブログなどの件数が多いから盛り上がっているという話がありますが、各言語のドライバでQ&Aやブログ記事が割れており、また言語を特定して情報を調べないとある言語の質問に
ちょっと面白そうだったので調べました。 概要 https://developer.android.com/reference/android/hardware/camera2/package-summary.html からざっくり読み取った結果、Camera2 APIでカメラ経由で画像を取得したりする流れをかなり大雑把にいうと CameraManager を利用し、CameraDevice.StateCallback 経由で CameraDevice のインスタンスを取得 Surface系のViewやMediaCodecなどの出力先とカメラデバイスを利用して CameraDeviceのインスタンスから createCaptureSession(List, CameraCaptureSession.StateCallback, Handler) メソッドにより CameraCaptureSe
Android OのEaster Eggはoctopusでした*1が、OのコードネームはOreoでしたね。さて、Android Oではユーザーが通知をより便利に管理するために通知チャンネルが導入されました。 通知チャンネルがなんたるかや主要な扱い方については公式他に任せるとして、この記事については、通知チャンネルについて自分が試してみた少しマイナーなことについてまとめようと思います。 TL;DR Android Oの端末でも、アプリのtargetSDKVersionが25以下なら通知チャンネルを作成せずとも通知は届く Android Oの端末でも、アプリのtargetSDKVersionが25以下かつライブラリのtargetSDKVersionが26で、ライブラリ側で通知チャンネルを作成しているならば、その通知チャンネルが作成&利用可能であると同時に「Uncategorized」 という通
こないだデータベーススペシャリストに合格して、解いてる間は自分が冗談を本気に受け取る性質なところもありIPAの試験は受けることすら揶揄される感じがあってつらかったのですが、年度によっては偏ったものもあると思ったものの全体として解いたり調べたりしてて楽しい問題だなぁと思ったので、その内容についてのポエムです。 書いてる人について 一ヶ月で合格しました系の記事を求めている人に申し訳ないんですが、元々DB周りの話が好きで結構アプリケーションで触るSQLとかindexの付け方とかテーブル設計のための業務知識の眺め方の基礎みたいなのは新人並みには勉強してました。 それでもやっぱり全然足りなくて悔しい思いをすることがあったのですが、どこから手をつけていいかわからず、もう少し系統立てて勉強してみたいなという気持ちがあって受験しました。 事前に読んでいた本は 〔入門〕はじめてのデータベース 作者: 藤島一
久しぶりにサイドメニューのコードいじろうかと思ったのですが、デザインのカスタマイズ性の都合でサードパーティライブラリを使うのが辛く、ここから整理するよりSupport LibraryのNavigationViewを使って書き直した方が楽ではないか、と思ったので、どこまでできるのか試してみます。 内容 ライブラリのバージョンについて 下記のコードを試す上で基本となるレイアウトなどのソースコード HeaderViewのレイアウトを変更する サイドメニューの項目を変更する場合 サイドメニューの項目にバッジをつけたい場合 下に固定のfooterをつけたい場合 ライブラリのバージョンについて gradleで指定していたバージョンは下記。 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.andr
表題のことがやりたいぞ、というわけで下記あたりを参考に素振りしました。 Reporting Work Status | Android Developers AndroidのIntentServiceを使って非同期処理を行う方法 | TechBooster 手順 バックグラウンドジョブを実行するIntentServiceを作る IntentServiceにIntentを飛ばす IntentServiceから進捗通知や完了通知をLocalBroadCastで飛ばす 通知を受け取ったときのリアクションをするBroadcastReceiverを書く LocalBroadcastManagerに上の通知を受け取るためのIntentFilterとBroadcastReceiverを登録する できあがりの全体はこちらです。 バックグラウンドジョブを実行するIntentServiceを作る Intent
テーブル設計でこんなものですが〜みたいな出し方やると、割と取り返しつかなくてあれなので、 意識が入らないくらい習慣に叩きこめば問題ないですね。 実践SQL入門を買ったので読み進めようと思ったら、 本書では以降、実行計画の読みやすいPostgreSQLとOracleの実行計画をサンプルとして使います。 と書いてあって、MySQLの実行計画無いの、というか、MySQLの実行計画読み難いの? となったので、 MySQLの実行計画の読み方について調べてから読み進める事にしました。 本はまだまだ読み終わっていないですが、一旦投下。 内容 ためしにMySQLでExplain 操作対象のオブジェクト、操作の対象となるレコード数 オブジェクトに対する操作の種類 MySQLのSELECT文の見方の基本 Explain可能な命令について ためしにMySQLでExplain 試しに、MySQLのExplainを
ライフサイクルコールバックのsuperについて、自分の実装の先に呼ぶか、後に呼ぶかというのが気になっていて、 java - What is the correct order of calling superclass methods in onPause, onStop and onDestroy methods? and Why? - Stack Overflow というStackOverflowを追いかけてみました。 まとめ Googleは Always call the superclass method first と書いているが、必ずしもそうではなさそう onDestroy()など、コンポーネントを停止/解体するメソッドではActivityのリソースの解放などを行うので、自身の処理がそれらに依存する場合は、自身の処理を先に onStart()など、コンポーネントを生成/起動する
Toolbar をカスタマイズしたくてその際にいじったら良いパラメータとかいじっても意味ないパラメータとか試したのでメモ。 ヘタレなので、試したのはAPI21で、サポートライブラリはgradleのcom.android.support:appcompat-v7:23.1.0のバージョンです。 新しく発見したこと等あれば追記します。 内容 あてがついたもの(用途別) NavigationIconと画面左端の間隔を微調整したい NavigationIconとタイトルの間隔を微調整したい 一番右のMenuIconと右端の間隔を調整したい アイコンサイズを調整したい 影をつけたい 背景を透明/半透明にしたい タイトルの文字の大きさや色を調節したい ふつうのViewみたいにアイコンとかいじりたい よくわからなかったもの Toolbarのapp:maxButtonHeight Toolbarのapp:
Recycler View で行ごとに表示に使うレイアウトを切り替える、というのをやりたくて悪戦苦闘していましたので、とりあえず書いたのをメモ。 参考にしたのは、 Tumbling Dice — [Android]ListViewのレイアウトを動的に切り替える際の問題点 techbooster.booth.pm 全体として出来上がったコードはここ。 内容 RecyclerViewを利用する側の準備 ViewHolderで使うレイアウトの準備 ViewHolderの準備 切り替えたいレイアウトに対応するViewHolderのサブクラスを用意する onCreateViewHolder()でViewHolderのサブクラスを返すようにする getItemViewType()でdataの値に応じた値を返すようにする onBindViewHolder()でサブクラスのメソッドを使う 実際に動かした画
なんか調べてたら、Railsのurlヘルパーでhttpsの指定ができる、という話を見かけて、よく分からなかったので調べてみました。 前もって把握していた情報は *_urlヘルパは、完全URIを返す *_pathヘルパは、パス以下を返す だったので、これじゃなんともいえないなと手に入った情報をいくつか検証してみました。 検索して出てきた関連しそうな情報と参考元 config/routes.rbで resources :xxxs, constrains: { protocol: 'https'} + *_path_helper http://blog.livedoor.jp/sasata299/archives/51351822.html _urlヘルパにprotocol: 'https'オプションを与える http://blog.tnantoka.com/posts/46/versions/
どうすればいいんだーって感じで意外に詰まったのでメモ。 参考 github.com gradleでdependenciesのライセンス一覧を出力する - Olivinecafe - blog 手順 build.gradleの設定 buildscript { repositories { mavenCentral() maven { url 'https://plugins.gradle.org/m2/' } // License } dependencies { classpath 'com.android.tools.build:gradle:2.0.0-alpha3' classpath "gradle.plugin.nl.javadude.gradle.plugins:license-gradle-plugin:0.12.1" } } apply plugin: 'com.andro
speakerdeck.com 新卒向け社内研修でテーブル設計と正規化の基本の話をしました。 理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus) 作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2015/03/10メディア: 単行本(ソフトカバー)この商品を含むブログ (17件) を見る いま新卒の方々はRails tutorialを進めながら「理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL」を読んでいるところなのですが、中には入社以前にはWeb系のプログラミング経験のない方もいらっしゃいます。 その状態で上記の本を読み進めるのは少しつかみにくいところもあるだろうな、ということで、この資料に関してはかなり基本に絞り、演習で設計から第1から第3正規化の一連のプロセスについて手を動かしてみて
通信周りでRetrofitを使っているとレスポンスがJSONばかりを想定していて、ファイルのダウンロードする場合はどうしたらいいのか、そもそも私はファイル入出力をまともに扱ったことがあったのかと、少し途方にくれてしまったのでメモ。 内容 処理の流れとクラスについてのメモ Fileクラスを利用して、保存先のファイルが入るディレクトリとファイル名を用意する サーバへファイルをDLするためのリクエストを送り、そのレスポンスをInputStreamのインスタンスが取得できるクラスで受け取る FileOutputStreamクラスを利用して、2のInputStreamのインスタンスから得られるバイト列を、1のファイル名のパスのファイルを作成して書き込む 作成したファイルを他のアプリ(例えばギャラリー等)と共有したい場合は、ContentResolverを使ってコンテンツプロバイダへのデータの挿入を行
potatotipsで紹介されたKotlinのアプリのリポジトリを読んでいたら使ったことの無いlateinitというAPIが出てきて、@Injectというアノテーションがあるから、おそらくこれはDIだな、と思ったのですが、よくわからず。 いつの間にかKotlinでなくDIの勉強をしていました。 DI(Dependency Injection)とは何なのか まず最初に、下記の記事と、下記の参考に載っていた記事を読みました。 http://kazy.hatenablog.com/entry/2014/01/11/194142 http://www.atmarkit.co.jp/ait/articles/0504/29/news022.html http://qiita.com/hshimo/items/1136087e1c6e5c5b0d9f 自分には上記の記事での依存という辺りの言葉遣いが分
の続き。 レイアウトの切り替えを伴うRecyclerViewの切り替えがうまく行くとはにわかに信じがたかったので、 タップしたら簡単にレイアウトを切り替えるように前回のコードを少し書き換えてログを見てみました。 まとめ 当たり前のことを確かめました。 レイアウトが切り替わるようにViewTypeを切り替えていくと、最初のうちは、同じItemのカテゴリを切り替える(=Layoutを切り替える)たびにそのレイアウトに対応したViewHolderが生成される ViewType一周分のViewHolderを生成したら、それ以上ViewTypeを切り替えても新しいViewHolderは生成されない 上記は、同じpositionのItemに対して複数のViewHolderが生成されているというわけでもなく、Adapterで扱っている範囲で余剰のViewHolderを生成している なので、いくらか余剰の
この記事は、RxJava Advent Calendar 2015 の12月15日分の記事です。 非同期処理についてよくわからなかったため、下記の本を読んでみたところ、スレッドで処理が行われるには、 スレッドのインスタンスが生成されること そのインスタンスのstart()メソッド(あるいはそれに類するメソッド)が呼ばれてスレッドが起動されること が必要だと分かりました。 増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編 作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/03/21メディア: 大型本購入: 15人 クリック: 287回この商品を含むブログ (204件) を見る Android開発を行っている際、RxJavaを利用すると、HTTP通信等の非同期処理を非常に簡単に記述することが出来ます。 私個人の話となりますが、私自身はその場の勢
会社のセキュリティ勉強会に参加しました。 初回はこれからの進め方と社内のセキュリティ部署のお仕事について話をうかがって今日は二回目でしたが、記事が続くか自信が無いので番号はつけません。 今日はBurpを使って、HTTPリクエストのパラメータを読み取る方法や、リクエストメソッドを書き換える方法や、 えせ証明書を発行して、ブラウザに読み込ませたりと言ったローカルプロキシのツールの使い方を確認したり、 徳丸本の輪読を行いました。 長くなったので前半分だけメモ。 内容 Burpを使う Burpのインストール そもそもローカルプロキシとは brewで入っているものについて ブラウザのプロキシの設定をする Chromeの場合 HTTPSとHSTS HTTPリクエストメソッドを書き換える Interceptする Forwardで転送する Dropでリクエストを落とす Burpを使う 徳丸本ではローカルプ
2回目分のメモの続きです。 内容 徳丸本読書会 開発者のセキュリティに関する責任 裁判のガイドラインがIPA 個人情報保護法はどこから適用されるのか HTTPについて URIとスキーム DNSというスキームは無い ベーシック認証の流れ 上記以外で知らなかった用語 セッションIDの固定化攻撃 クッキーモンスター 別人問題 ゼロデイ攻撃 Gumblar リスクの受容 徳丸本読書会 1章から読んでいきました。このあたりは、まだついていけている感じなので薄めです。 開発者のセキュリティに関する責任 セキュリティには機能要件とバグに分類できるものがありますが、昨今ではある程度の標準を満たさないと開発者は裁判で負けます。 裁判の基準は https://www.ipa.go.jp/security/vuln/websecurity.html https://www.ipa.go.jp/files/000
2015-01-29 検索で上の方にいたみたいなので、指摘でいただいている修正を下の方に書くのじゃなくて、上の方から直しました。 修正前の記事はこちらから。 JavaScriptのオブジェクトを扱うとき、=は値渡しではない - woshidan's loose leaf 今日の昼間、ちょちょいのちょいだぜー、と思っていた処理の実装がこれが原因で30分以上詰んだので、切なくなったから書く。 参考にしたのはここらへん。 JavaScript でオブジェクトや配列をコピーする方法 | monopocket.jp JavaScript のオブジェクトは参照渡しで代入される | monopocket.jp シャローコピーとディープコピーの違い - くろの雑記帳 javascript - What is the most efficient way to clone an object? - Stac
既にある気がするのだけど、RailsのテストをMinitestでやっていて、 モデルのユニットテストはまだし、コントローラとかビューとかをテストするときどうするのかな、と思ったので、 これらのテストのときに使うメソッドを自分用にメモする。 ここに書いてないことは Rails4で書いたアプリのコードをMiniTest::Specでテストする - yo_waka's blog や、 Rails4時代のテストの書き方。 | The intersection あたりやるびまを見てます。 正直な話、経験が浅い身としては コントローラの特定のアクションで使用しているインスタンス変数やテンプレートの種類が直接叩きやすい、 以外はグーグルで引っかかる件数が多いので、Rspecがいいと思う日もなくはないです。 お品書き 特定のコントローラのアクションを飛ばす アクションへのリクエストにパラメータをつける コ
急遽FuelPHPのコードを読む必要に駆られたので、てきとうすぎるから詳しい人から怒られるかな、と思いつつ、 http://fuelphp.jp/docs/1.7/index.html を読みながらざっとメモしました。1.8まで出ているのですが、バージョンが1.7なのは読むべきコードが1.7だったからです。 書くためじゃなくて、読むためのメモなのでインストールについては、 http://fuelphp.jp/docs/1.7/installation/instructions.html などを見て済ませています。。 あと、まだRails触り始めて、10ヶ月くらいの初心者なのでRailsの方もかじったことがある程度で、以下の意見はRails派代表とかそういうわけじゃないですし、用語も若干怪しいです。 内容 FuelPHPについて Railsを比較してみたFuelPHPについての印象 この記事
書いても書いても終わらないから、もう終わらないかと若干思いましたが、無事終わりました。 とりあえず、勉強してみようという意図もあって、さくらVPSを借りて Railsが動く環境を設定してみた作業の記録をまとめました。 完結に手順をまとめた良記事は既にたくさんあったので、 自分はどう書いたらいいのか(結局自分が書きたいようにしか書かない気がしつつ)考えた結果、 自分がつまづいたところなどを落とさないように、もう二度と同じ作業でぐぐらなくていいように、 ということでくどくど丁寧に書いたことと、 初心者かつアホの子なのでインストールコマンドが並んでいる記事を読んだときに、 え、で、いまこのソフトウェアをインストールして何やりたいんだっけ、 という気持ちになったため、 足りなかったり、間違っている部分があるかもしれないけれど、 可能な限り、1つ1つの作業がどういう意味を持つのか分かるように作業の固
次のページ
このページを最初にブックマークしてみませんか?
『woshidan's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く