woshidan's loose leaf

ぼんやり勉強しています

回転が難しいというか、3つくらいこけてるとどこでこけてるかわからんね 2

純正のカメラアプリでもPORTRAITだけ対応だったりするので、回転してすぐカメラのプレビューが取れないとかはまあある話なのでは 単一方向で対応してその先はその後考えようか バッファとかの回転のマトリックスは固定値返したりとかあるみたいですね rotate…

回転が難しいというか、3つくらいこけてるとどこでこけてるかわからんね

Previewを表示するSurfaceの大きさは枠はViewのサイズ、画像の大きさはTextureView.setTransformで渡すMatrixで設定(っぽい) CameraSessionから飛んでくる元画像の大きさはSurfaceTexture.setDefaultBufferSize でここでは向きの調整は入れられないっぽい Te…

CameraDevice closeのタイミングとCameraCaptureSession closeのタイミングについて

https://github.com/googlesamples/android-Camera2Basic のサンプルから確認してメモする。 まとめ CameraDevice は CameraDevice.StateCallback のコールバックの中でcloseする onDisconnected と onError の中でclose セマフォのロックを解放しながら処理…

リリースについてのetc.

なんかあったら追加する。 Android ベータ版リリースはクローズドベータで指定したメアドのGoogleアカウントでのみインストール、アップデート可能に ベータ版リリースは2回目以降は 更新に~1h程度かかる 同じVersionCodeのものは出せない その辺はアルファ…

アプリで決めたActivityの向きがLANDSCAPEの時、Camera2のCameraDeviceから受け取るカメラのプレビューの向きがずれる

昨日のImageReaderのメモで プレビューの向きがおかしいのが気になる、という話を書きました。 その件について調べると https://stackoverflow.com/questions/34536798/android-camera2-preview-is-rotated-90deg-while-in-landscape などどうもアプリの画面…

View AnimationとProperty Animationの違いについて

View Animation Animationクラスのサブクラス Viewの見た目の特徴のうち一つをいじるアニメーションのクラス 具体例: TranslateAnimation ScaleAnimation RotateAnimation AlphaAnimation 変化するのはrenderの結果だけで本当の値は変化していない(出典: htt…

ImageReaderクラスを触ってみた

今日はまとめる余裕がないのでこっちにおくんじゃ。 ImageReaderはAPI19で追加された、他のSurface(入力元=カメラなど)から画像を読み取る & 読み取ったコールバックで加工して他の部分へ流す(たとえばBitmapにしてImageViewに渡す)という使い方ができるSurf…

Camera API(カメラ関係の古い方)を使ってみる件

まとめ カメラ撮影中の写ってる範囲を表示している部分はプレビューと呼んで SurfaceView で扱う Camera.setParametersでプレビューの時の画像サイズや、プレビュー後(撮影後)の画像サイズが指定できたはずなのだが、compileSDKVersion 25以上で新規プロジェ…

ボタンのタッチ領域を広げる

iphone - How to expand the hitTest area of a UIButton without extruding it's background image? - Stack Overflow CGRectInset - Core Graphics | Apple Developer Documentation @implementation MyButton : UIButton - (UIView *)hitTest:(CGPoint)po…

Error:Could not get unknown property 'compile' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

というエラーメッセージが出てビルドができなくなりました。 Android Studioを起動した時に、build.gradleの文法に修正が入っていたようで、その修正を元に戻したらいけた。 具体的には、 compile'com.android.support:appcompat-v7:22.2.1' compile 'com.pa…

ブロックの中でローカル変数を変更したい

ローカル変数は何も修飾子をつけていないとブロックの中で参照はできても変更はできない。 // ダメな例 int count = 0; [Util executeSomeBlock:^{ count += 1; // ビルドできない }]; これだとちょっとしたことを他のスレッドに投げてその結果を受け取りた…

マルチスレッドプログラミングのレビューにて

先輩に言われてひぎゃーって叫んだ本日のNG集的な。 別スレッドの処理を待って次の処理を実行する方法 コールバック コールバック地獄とはなんたるや GCDのdispatch_sync 使う dispatch_sync はキューに入れたタスクのデッドロックに注意 別スレッドの処理を…

ブロックを引数にして関数を書く素振り

ブロックはObjective-Cではなく、Mac OS X 10.6, iOS4 以降にC言語の機能として実装されたもの。 他の言語の機能でいうとクロージャ。 試しに書いてみる // ブロックオブジェクトの定義 // ^(引数列) { 本体 } // int型の引数を一つ取り、値を返さない関数へ…

とりあえず今日はセマフォを使ってみたい

Javaでよくあるインスタンスによるロックしか実はまだよくわからない感じなので*1、とりあえず叩いてみますね。 セマフォを使わない場合 // エキスパートObjCからの引用 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAUL…

UIImageViewはデフォルトだと正方形になるのとNSConstraintは親Viewに対して親Viewと子Viewないし子View同士の関係を指定する

NSConstraintは親Viewに対して親Viewと子Viewないし子View同士の関係を指定する これが独学Androiderに理解できなくて理解できた瞬間うぉぉたぁああって感じだった UIImageViewはデフォルトだと translatesAutoresizingMaskIntoConstraints = YES Autoresizi…

GCDでちょっと遊ぶ

バックグラウンドスレッドに非同期で実行したい処理を投げる memo dispatch_async(タスクを入れるキュー, ^{ // タスクの処理内容を表すブロック }); 例 dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); di…

iOS9で追加されたMultiTaskはiOS11で下からスライドでDockが出るようになったらしい

iPadのMultiTask概要 iOS9から実装されている iPadで画面右端からスライドさせると、 Slide Over のアプリ選択のUIかすでに起動された二つ目のアプリの画面が出てくる Split Viewが実装されているアプリを起動している時に Slide Over のビューを出すと2つの…

\[LayoutConstraints\] Unable to simultaneously satisfy constraints. のログを確認する

コードで NSLayoutConstraint を追加してレイアウトを記述していると、 2017-08-23 20:08:37.967040+0900 TestApp[19312:543735] [LayoutConstraints] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the foll…

_Pragma演算子と#pragmaディレクティブを使ってObjCで書いたコードの警告を抑制する

仕事で触っているソースコードの中に #define SOME_WARNING_PROCESS_START _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wpartial-availability\"") #define SOME_WARNING_PROCESS_END _Pragma("clang diagnostic pop") のような…

型が指定できないフォーマットのデータに入っている値の型を信用しない。フォールバック処理をデフォルトで動くからで止めずに確認する

こないだ、JavaScriptのコードからJavaのコードへ値を引き渡すとき、JSONの文字列にして渡すことがありまして。 そのときに受けたレビューで、Javaが期待している型が String だけど、JavaScriptからは Array だって Int だって入れられるのでは、という指摘…

Webサーバのkeepaliveとは

久々に書いておいて、めっちゃざっくりした感じででかく出たタイトルだな、と思ったんですが、まぁここloose leafですしね。 この記事では、「keepalive」という言葉が、webサーバの設定でどう言う意味を指すか、みたいなところを確認します。 TL;DR TCP/IP…

$ANDROID_HOMEってどこさ

環境変数 JAVA_HOMEとANDROID_HOMEと、時々、PATH Android SDKのパスのことで、ここだ。 なお、$NDK_ROOTなどを聞かれた場合は、$ANDROID_HOME/ndk-bundleであることが多い。 sdk$ ls add-ons docs lldb platform-tools sources tools build-tools extras nd…

Xcode Command Line Toolsのインストール

Apple IDでサインインして下記URLへ。 Sign in with your Apple ID - Apple Developer 利用するバージョンのCommand Line Toolsを探してDL(いくつかツール種別のチェックを外した方が探しやすい). あとはDLしたインストーラをぽちぽちすればOK.

Homebrewでgitのバージョンを上げた後、実行されるバージョンを変える

本当は、 brew uninstall git brew update brew install git すればいいんだけど、慌てて後者だけやって、Homebrewの管理するディレクトリが二つできて、名前順で古い方が優先されてどうしようかな、ということに(なぜだ)。 もう少し状況をまとめると 新しい…

使い道がよくわからなかったのでScaleDrawableで遊んでみた

楽しい。 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int i = new Random(System.currentTimeMillis()).nextInt(8000);…

Rubyのgemをインストール際に要求されるnative extensionとは何者か

stackoverflow.com gemのnative extenstionは、それの事前インストールを必要とする別のライブラリ(gem)とリンクさせてもよいRubyが動く環境(rbenvなどの管理下ではなくPCなど)に入っている、主にCやC++などで書かれるライブラリ。 それの事前インストールを…

StoryBoardを使わない方法 at Swift

qiita.com 上記の記事をSwiftでやりました、というお話です。 import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOpti…

Android StudioのEditorのフォントの色を編集する

~~ の箇所はIDE上に警告でません? というようなことを一ヶ月で3回くらい言われて、 「あ、これ、普通に気付いてない。注意以前に見えてない」ということで、警告を目立つ色で表示させるために調べた。 メニューの「Android Studio > Preferences」から「Pre…

C言語の値渡しとアドレスを知る引数、配列のアドレスについて

C言語の関数の引数はすべて値渡しだそう。 関数の中で、引数で渡された構造体などの中身を変更したい時は、&演算子でその変数のアドレスを求めて、そのアドレスを値渡しで渡す。 そして、関数の中でアドレスに対応するメモリの値を書き換えることで、&演算子…

数学ガール6章まで読んだ

定数はa, b, c... 変数は x, y, z... が多い 相加相乗平均の例、a=+2, b=-2だと絶対値が同じな特殊なケースなのでは、と思ってb=-1にして計算したりした 離散的な世界での差分 <=> 連続的な世界での微分 差分を求めるために下降階乗冪を使うのが計算の都合上…

蟻本の1-6の続き

のーみそこねこね。 衝突して折り返していく -> 蟻を区別しなければ、蟻全体の動きとしては、そのまま進んでいく状態と一緒 最短 -> それぞれの位置の蟻が最短で着く方法 最長 -> それぞれの位置の蟻が最長で着く方法 4枚のくじを引いた時、4枚の合計値がmに…

蟻本の三角形をrubyで書いた

三角形 n本の棒があります。棒iの長さはa_iです。あなたは、それらの棒から3本を選んでできるだけ周長の長い三角形を作ろうと考えています。最大の周長を求めなさい。ただし、三角形が作れない際には0を答えとしなさい。 一番大きな辺が他の2つの長さの合計…

mp4ヘッダーのボックスとは

mp4 ヘッダー でぐぐったらボックスって出てくるのですが refs. http://matsu623a.blogspot.jp/2013/12/mpeg4ftyp.html mp4 ヘッダー ででてくるのは引用元が少なくてあれなのですが、 だいたいファイル冒頭にあるファイルのメタデータ持ったバイト群および…

数学ガール(無印)4章まで

最近本体ブログと使い分けに悩んでるんですが、本の読みかけで表に出せそうな感想やメモはこっちに書きましょうか。 昔から数学がたいそうできずに数式に怯えて生きてきて、大量にインターネットに流れてくる「数学ガールいいよ」の声に負けてとうとう手に取…

ObjectiveCのソースコードをclangでコンパイルした時Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSObject", referenced from: ... のようなメッセージが出てくる

症状 #import <Foundation/NSobject.h> #import <stdio.h> int main() { id obj = [[NSObject alloc] init]; ... } $ clang -o ref1 ref1.m Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSObject", referenced from: objc-class-ref in ref1-62be76.o "_objc_msgSend", refer</stdio.h></foundation/nsobject.h>…

ネットワークの勉強に関するメモ2

ネットワークとセキュリティ用語1 NIDS(Network Intrusion Detection System)は侵入を試みる不正アクセスを検知して、いろいろ動いて管理者に通知を送る HIDS(Host Intrusion Detection System)はサーバ上のファイルが改ざんされてないか確認する ペネトレー…

ネットワークの勉強に関するメモ

インフラ周りわからなすぎて最近ネットワークの勉強をしているのですが、わかってないことだけひたすらわかっていき、闇。 ICMP(Internet Control Message Protocol) ICMPはIPメッセージが送信元から相手に届くまでの間に起きたエラー関連の情報を送信元に通…

MySQLでdate型の値から対応する年, 月, 日の数字を抜き出す

ディレクターさんが使ってたのでメモ。 以前グーグルさんに聞いたら正規表現のものが出てきていたけど、 月ごとなどでグルーピングしたいときにはこっちの方がいいかもです。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.7 日付および時間関数 // MONT…

rbenvでrubyをバージョンアップする

rbenvでrubyをバージョンアップする場合の手順 # インストール可能なrubyのバージョンの一覧を調べる $ rbenv install -l # rbenvで新しいバージョンを管理できるようにする $ brew update # 何らかのライブラリをアップデート, インストールする前にbrew自…

インタフェースって実装する側より実装を利用する側にとって重要

d.hatena.ne.jp これを読んで、またオブジェクト指向についてきちんと勉強したくなった次第。 インタフェースってどのクラスのためにあるのかモヤモヤしてたんだけど、 インタフェースって実装する側より実装を利用する側にとって重要なのはそうだよなーって…

Android StudioのバージョンとjdkとGradleのDLできるバージョンは関係があるのかもしれない

かもしれない話だからチラ裏の方でひっそり書くのですが、Android Studioを2.0から2.2にバージョンアップして、もともと1.7のjdkが入っていたところに1.8のjdkを入れました。 そうしたところ、もともと1.7のjdkでビルドしてたプロジェクトが Could not find …

Android Monitorで監視している端末のスクリーンショットを撮る

別の機能を確認しようと思っていたら便利そうな機能を発見したのでメモ。 Android Monitorのメニューの左側のカメラアイコンをクリックします。 すると、現在Android Monitorで監視している端末のスクリーンショットを出力するためのウィンドウが起動します…

Impossible WHERE noticed after reading const tables

Explainの結果の中に見かけない出力を見つけたので調べました。 d.hatena.ne.jp ↑の記事によると、「ユニークキーを使って絞り込んだ後、データが見つからなかった場合に発生する」Extraのメッセージらしいです。 MySQLのドキュメントによりますと、 MySQL :…

SwipeRefreshLayoutの中にあるRecyclerViewにLayoutManagerをセットする前にタッチすると落ちる

SwipeRefreshLayoutの中にRecyclerViewのあるFragmentがあって、 データの読み込みを待ってから、Adapterなどをセットしようと考えていたら、 データが読み込まれる前にRecyclerViewの部分をタッチすると落ちてしまっていた。 E/AndroidRuntime: FATAL EXCEP…

RxJavaでやりたかったことが少しわかってきた

勉強が進んできて、ようやく qiita.com で紹介されていることの意味がわかってきて嬉しくなったので、今日はバックグラウンドのスレッドでしばらく待ってから、 UIスレッドでログを出す & それをボタン押して止める、みたいなサンプルを書きました。わいわい…

日付っぽい文字列を日付にする

SET @TEST_STR='xxx: yyy, datetime: 2016-03-25 22:22:16 +0900'; select STR_TO_DATE(SUBSTR(@TEST_STR, INSTR(@TEST_STR, 'datetime') + 10, 25), '%Y-%m-%d %H:%i:%s'); +----------------------------------------------------------------------------…

RetrofitのファイルDLでハマった話

原因をはっきり検証したわけでなく体感的なメモに近いのですが、対応していて面白かったので、適当に業務に関する部分のコード削りながら、こっちに置きます。 Retrofitの通信処理をバックグラウンドに指定して、InputStream型のレスポンスの処理をメインス…

http://shinh.hatenablog.com/entry/2016/03/11/142748 まずあまりマジメに相談せず勝手にやるってこと。相談すると、5割くらいの確率で「俺がやってるプロジェクトでその問題は解決するよー」とかいう返事が帰ってくる気がする。やる気が損なわれる。「それ…

アプリ側で使っていてAPIについて思ったこと

今度自分が書くとき用に。 副作用のある操作がなく参照/バリデーション(登録などややこしい処理の場合)ができる ユーザーの情報を確認したら一部情報が更新されるタイプのAPI,やや辛い 一覧ではなく単体でデータの参照ができる だいたいリソースは単体で404…

Realmのmigration中に「java.lang.IllegalArgumentException: Field already exists in 'Table': column」的なエラーで意味も無くはまった話

Realmで下記のようなmigrationのコードを書いていまして、よし、久しぶりにmigration前のバージョンからの移行処理を書こうか、と思ったところ、 public class Migration implements RealmMigration { @Override public void migrate(DynamicRealm realm, lo…