woshidan's loose leaf

ぼんやり勉強しています

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

先輩に言われてひぎゃーって叫んだ本日の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 …