StoryBoardを使わない方法 at Swift
上記の記事をSwiftでやりました、というお話です。
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. // refs. http://qiita.com/shou1471/items/637f7500698c3c5b0bc0 // UIWindowの生成 self.window = UIWindow.init(frame: UIScreen.mainScreen().bounds) self.window?.backgroundColor = UIColor.greenColor() // Storyboardで作成したwindowは通常白背景なので区別するため // 最初に表示されるViewControllerを生成 let viewController = ViewController() self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() return true }
Android StudioのEditorのフォントの色を編集する
~~ の箇所はIDE上に警告でません?
というようなことを一ヶ月で3回くらい言われて、 「あ、これ、普通に気付いてない。注意以前に見えてない」ということで、警告を目立つ色で表示させるために調べた。
- メニューの「Android Studio > Preferences」から「Preferences」のメニューを開いて「Editor > Colors & Fonts」を選択
- 今回は言語関係なしの警告やコメントの文字色を変更したいのでGeneralを選択
- デフォルトで用意されているフォント設定は変更できないので、カスタム用の設定ファイルを「Save As ...」から作成
- 色を変更したい箇所をクリックするか、上の方の項目名を選択
- 色を変更したいプロパティを選択して、背景色なり、下線の引き方なりを変更してもう一回「Save As ..」を押す
と、警告が超目立つ色になってくれます。
これで見落としが減ればいいですね。
本当はLintか特定のコードブロック弾いてくれる機能が欲しいんだけど、それはまた今度。
C言語の値渡しとアドレスを知る引数、配列のアドレスについて
C言語の関数の引数はすべて値渡しだそう。
関数の中で、引数で渡された構造体などの中身を変更したい時は、&演算子でその変数のアドレスを求めて、そのアドレスを値渡しで渡す。 そして、関数の中でアドレスに対応するメモリの値を書き換えることで、&演算子をつけて渡された変数の中身を書き換える。
C言語を読んでいく時は、配列名が配列の0番目の要素の変数のアドレスを指していることを合わせて読んでいくと理解しやすいかも。
char str[256]: scanf("%s", str); // これは上記と同じ scanf("%s", &str[0]);
また、配列の各要素のアドレスは、配列の型が取るバイト数だけずれた連番になるそうで、array[n]
は、配列名のアドレス + 要素番号 * 1要素分の大きさ
のアドレスがさすメモリから参照できる変数をさしていることになるそうで。
int array[10]; &array 2345678 &array[0] 2345678 &array[1] 2345682 &array[2] 2345686
- 作者: MMGames
- 出版社/メーカー: 秀和システム
- 発売日: 2011/06/24
- メディア: 単行本
- 購入: 3人 クリック: 600回
- この商品を含むブログ (1件) を見る
数学ガール6章まで読んだ
- 定数はa, b, c... 変数は x, y, z... が多い
- 相加相乗平均の例、a=+2, b=-2だと絶対値が同じな特殊なケースなのでは、と思ってb=-1にして計算したりした
- 離散的な世界での差分 <=> 連続的な世界での微分
- 差分を求めるために下降階乗冪を使うのが計算の都合上にしか見えなくてよくわからない
- h->0の極限つけて(x-0)(x-h)(x-2h)(x-3h)... としていく所は納得できるけど、h->1で使っていいというのは計算の都合なのかもしれない(元々のxのn乗からの差分の差が10n違わないだろうか的な意味で納得いかない)
- 計算しやすい
蟻本の1-6の続き
のーみそこねこね。
- 衝突して折り返していく -> 蟻を区別しなければ、蟻全体の動きとしては、そのまま進んでいく状態と一緒
- 最短 -> それぞれの位置の蟻が最短で着く方法
- 最長 -> それぞれの位置の蟻が最長で着く方法
- 4枚のくじを引いた時、4枚の合計値がmになるか
- 2枚のくじを引いた時(この組み合わせは2重ループで表現 -> n2)、残りの2枚を引いてこれとの合計値がmになるような値があるか
- 残りの2枚を引いて合計値がmになるような値この探索は
- 残りの2枚については、残りの2枚を引いた値の取りうる組み合わせを列挙してその中から(m-最初の2枚)になるものを探す
- この探す方法は2分探索(binary search) log(n)
- 残りの2枚については、残りの2枚を引いた値の取りうる組み合わせを列挙してその中から(m-最初の2枚)になるものを探す
- O(n)に耐えうる必要のある値を入れて必要に応じて変えていくっぽい
2分探索雑に書いた。
n = 4 a = [2, 3, 4, 5, 10] def binary_search(target, data) range_min = 0 range_max = data.size while range_max - range_min >= 1 i = ((range_max + range_min)/2).to_i if (data[i] == target) return true elsif data[i] < target range_min = i + 1 else range_max = i end end return false end if binary_search(n, a) puts "found" else puts "not_found" end
蟻本の三角形をrubyで書いた
三角形
n本の棒があります。棒iの長さはa_iです。あなたは、それらの棒から3本を選んでできるだけ周長の長い三角形を作ろうと考えています。最大の周長を求めなさい。ただし、三角形が作れない際には0を答えとしなさい。
一番大きな辺が他の2つの長さの合計よりも長かったらいけないのですが、
- 辺を大きい順か小さい順に並べて、大きい方から条件を満たすものを探せばいいのでは?
- 大きい方から辺を3つ探していったとき、「他の2つの長さの合計が一番大きな辺より大きい」を満たす、一番大きな辺より短い2本の辺って常に一番大きい辺の次とその次に大きい辺なのでは?
- 未検証... orz
と思って書いた。反例見つかったら修正します。
n = 5 a = [2, 3, 4, 5, 10] a.sort! # 昇順にソート if n < 3 puts "the number of bars is less than 3." puts 0 return end def make_triangle(n, a) longest_bar_index = n - 1 middle_bar_index = n - 2 shortest_bar_index = n - 3 while is_too_long_longest_bar?(longest_bar_index, middle_bar_index, shortest_bar_index, a) do longest_bar_index -= 1 middle_bar_index -= 1 shortest_bar_index -= 1 if shortest_bar_index < 0 puts "cannot make any triangle in this set." return 0 end end return "#{a[longest_bar_index] + a[middle_bar_index] + a[shortest_bar_index]}(#{a[longest_bar_index]}, #{a[middle_bar_index]}, #{a[shortest_bar_index]} の3本を選んだ時)" unless shortest_bar_index < 0 end def is_too_long_longest_bar?(longest_bar_index, middle_bar_index, shortest_bar_index, a) a[longest_bar_index] >= (a[middle_bar_index] + a[shortest_bar_index]) end puts make_triangle(n, a)
mp4ヘッダーのボックスとは
mp4 ヘッダー でぐぐったらボックスって出てくるのですが
refs. http://matsu623a.blogspot.jp/2013/12/mpeg4ftyp.html
mp4 ヘッダー ででてくるのは引用元が少なくてあれなのですが、
- だいたいファイル冒頭にあるファイルのメタデータ持ったバイト群およびハッシュなどの類
- mp4の場合、ファイル形式がボックスで構成されており、ボックスの中でもヘッダーと呼ばれる部分があるのでややこしく感じる
という認識で良さそう。
そのボックスとはなんぞや
refs. https://unoh.github.io/2007/09/12/mp43gpp3gpp2.html
MP4や、その派生である携帯電話向けの3GPP、3GPP2などのファイルフォーマットはボックス(あるいはその基になったQuickTimeでの用語のAtom)と呼ばれるデータブロックで構成され
ボックスによってはその内部にさらにボックスが入れ子になるツリー構造になっています
各ボックスはその先頭8バイト(オクテット)がボックスを識別するためのヘッダで、最初の4バイト(オクテット)がボックスのサイズ、続く4バイトがそのタイプです。
- 動画を表すmp4や3gppなどのファイルフォーマットはボックス単位で構成
- ボックスは
ボックスの大きさ + ボックスのタイプ
の部分がボックス識別用のヘッダから始まる - ボックスは
ボックスの大きさ
の部分で宣言した大きさの分だけ続く。入れ子の場合は入れ子になったボックスの分の大きさも親側のボックスが宣言する(っぽい((いつかまた調べる)))- cf. moov以下にmvhdなどがあるが、moovの大きさはこれを含んでいると思われる
- ボックスの種類(一部)
- mp4box, mp4dump などのツールで確認可能