2019/08/10

さて、9月に iOS 13 とか 新しいiPhoneが本当に出る?

最近は、注目度が上がりすぎて、事前にリークされて、やっぱりか。。。
とか感じていまうので、発表会がある場合は、あえて検索は避けてます。
発表会とかニュースで新発売!
とか見たほうがワクワクする。

2019/07/10

参考にするのはいいのだけど・・・。

プログラムを書く仕事をしていて

ブログとか、ネットにサンプルが載っていたりするのを参考にしたりするけど、

本当に実装する時、コメントとか、変数名、メソッド名、インデント、まで、

そのまんま使うってどうなのだろうか・・・・。

サンプルを参考にしても良いが、

案件のコーディングルールに則って、書き直すべきだと思うんだ。

実装スピードは早いかもしれないが、

あとで、誰かが見直すとここだけ、書き方違う!

って指摘、で検索かけると、ここを参考にしたなって。 なる。

これが、著作権など放棄、商用利用OKなら良いが、

ダメなやつまでやられると終わりだよね・・・。

2019/06/25

【iOS】Swiftでの16進数変換 周り


メモメモ



Int("10", radix: 16)! // 16
Int("16", radix: 16)! // 22

String(10, radix: 16) //  a
String(16, radix: 16) //  10



あとこの方法で文字列として16進数を表記した時は、
a~f の表記は小文字なので注意が必要です。


うっかり、文字列で比較する人がいた場合。


let i = 10 // 10進数で動的に変わるとして
if(String(i, radix: 16) == "A"){
 print("true")
}else{
 print("false")
}


こんな事をやろうものなら、いくらやっても true にならないから注意が必要です。


2019/06/17

【iOS】swift4 ナビゲーションコントローラー 非活性化

タイトル通りで、
ボタンを押せなくする方法。


self.navigationController?.navigationBar.isUserInteractionEnabled = false

ちゃんと、押せるように戻すようにしておくこと!

2019/06/13

2019/06/06

頑張って、変わっていこう。

最近、仕事が上手くいってないので、

改善していこう。

楽しくなるように。

Mac pro

先日、WWDCで発表された、Mac pro

誰をターゲットにしているのか、

60万円台とか結構無理があるでしょ。

会社で買おうかな。

その分、稼ぐからさ。

仕事頑張ろう。

2019/06/04

【iPad】iPadOS13 って。

とうとう、OSが別れましたね、

OSが肥大化してきたので、分けようと思ったのでしょう。

いつのまにか、iPadは、Mac OS が入るようになってたりして。。。

まさかね。

いや、でも、ありえそう。

2019/05/30

【iOS】swift の 配列を for する時、、、


Swift 4で確認済み

ちょっと恥ずかしい話、


var array = ["1","2"]

for i in 0...array.count - 1{
    
    print(array[i])
}


↓ こう書けば良かったんだ。


for i in 0..<array.count{
    
    print(array[i])
}

いや、必ず要素が1個以上ある場合は、いいんだけど。

要素が0個の時、強制終了する。









2019/05/29

地球は丸かった(google map)

知らなかったのは、自分だけかもしれませんが、

google map を 手前に引いていったら、地球が丸いことがわかりました。

こんな機能って前からあったかなぁ。 気が付かなかった。

もちろん、航空写真に切り替えられます。

iPod touch 新型 公開されてた。

iPod touchが公開されていたようです。

公式ページからも購入可能なようです。

androidユーザーなので、値段も32GBのやつなら、

それなりに手頃なので、購入しようかな。

iOSの4インチ端末ってちょうど良いサイズだと思うんですよね。

あ〜、でも、同じ金額くらいの白ロム買うっていう、手段も有りかな。

どっちが良いかなぁ。

2019/05/21

Amazon. co. jp にご登録のアカウント(名前、パスワード、その他個人情報)の確認 (迷惑メール)

タイトルの通り、
迷惑メール来た。一瞬焦ったよー。

ログインのURLのドメインがすごく怪しいので絶対に押しちゃ行けないよ。
( リンクや画像は消してあります)

下記のような  html メールが届きました。

----
Аmazon お客様   

Аmazon に登録いただいたお客様に、Аmazon アカウントの情報更新をお届けします。
残念ながら、Аmazon のアカウントを更新できませんでした。
今回は、カードが期限切れになってるか、請求先住所が変更されたなど、さまざまな理由でカードの情報を更新できませんでした。
アカウント情報の一部が誤っている故に、お客様のアカウントを維持するため Аmazon アカウントの 情報を確認する必要があります。下からアカウントをログインし、情報を更新してください。


Аmazon ログイン 


なお、24時間以内にご確認がない場合、誠に申し訳ございません、お客様の安全の為、アカウントの利用制限をさせていただきますので、予めご了承ください。
アカウントに登録のEメールアドレスにアクセスできない場合
お問い合わせ: Amazonカスタマーサービス。
お知らせ: 
  • パスワードは誰にも教えないでください。
  • 個人情報と関係がなく、推測しにくいパスワードを作成してください。大文字と小文字、数字、および記号を必ず使用してください。 
  • オンラインアカウントごとに、異なるパスワードを使用してください。

どうぞよろしくお願いいたします。 
Аmazon 


----

2019/05/14

Xcode 日本語無いよ。

なんか最近ですが、

Xcodeの対応言語は英語しか無いのかと、びっくりする方がいました。

まぁ、英語くらい覚えようよってのが一番かもしれませんが・・・。

プログラムを組むのも英語? なので、

ツールのUI部分はほとんどが技術用語なので、英語で覚えろって事何でしょうね。

いちいち、翻訳してられるか!  って感じですかね。

それと、ちょっと余談ですが、

日本語でプログラムを組む事はないかと思うのですが

変数名や関数名を日本語にしたりとかでます。

すごくかっこ悪いよね〜。





2019/05/10

github って プライベートリポジトリつくれるじゃん!

表題の通り、なんとMSに買収されてから、
プライベートリポジトリも制限つきだけど、作れるようになったとの事。
リポジトリの個数制限も無いっぽい。
知らなかったよ・・・・。

2019/04/11

【iOS】ヒラギノ問題

iOS ってヒラギノフォントを対応はしているのですが、

UILabelで英字の jg などの 特定の文字だけ、下の部分が切れてしまいます。
sizetofit() とかやっても切れます。
AutoLayoutでも駄目です。

この仕様はどうにかしてほしい・・・・。

対策案)
・Layoutを作成するとき、高さを明示的に固定で大きめに取る
・ソース上で個々に対応する(検索すれば、いろいろ出てきます)

これくらいしか対策が思いつ来ません。
ある程度、開発が進んで個数が多い場合は、あとからきつくなる問題です。

2019/03/12

AMAZON SNS Ruby On Rails にて実装した。

プッシュ通知の実装のしかたって、何が一番正解なのだろうか・・・。

デバイストークンはどこに貯める(保存)?
・Amazon SNS 側のみ。
・サーバー等に集約する。

結局のところ、両方が正しいのだろうか・・・

両方で管理してもあまり効率が良さそうで無い・・・ 
※最終的に何をしたいかで決まるが・・・。

大まかな流れ)
 デバイストークンを投げる(直接?サーバー経由?)

アプリケーションに登録とトピックへ登録

配信指示

・一斉送信をする場合は、トピックに登録するのを忘れずに。
・完全個別配信の場合は、トピックは無くてもよい。

SNSの不便な点

・デバイストークンの総数を取得する機能が無い。
100件づつ取得する機能はあるが、全て数えるとなるとすごく時間がかかる。
100万件とかあると地獄・・・・

・一斉配信はアプリケーションにトークン登録してからトピックへ登録する必要有り。
  export機能とかあってもよいのではないか?

--------

送信スペック
・トピックにて配信  10万件 程度なら、誤差1分もかからないかも。

ゴミ掃除
・トークンとか無効なやつは削除してあげた方が良い。

殴り書き中ですが、今日はここまで。気が向いたら、続きを!

2019/03/07

AMAZON SNS 管理画面 UIが変わった・・・。

AMAZON  SNS
今日アクセスしたら、昨日までみていた画面と変わっていて困惑中、、、
主に、google 関連のGCM  → FCM に表記が変わって、きれいなUIになっている。

2019/02/21

AMAZON SNS の証明書

AMAZON SNSでiOS用のプッシュ通知の証明書(.p12)は、
なぜかファイル名にマルチバイト文字があるとアップ時にエラーになる。
解決する方法は、半角英数字の文字のファイル名にすればアップできた。
なんだかなぁ。これくらいは対応してほしい。

2019/02/08

【iOS】SwiftでCGAffineTransformから角度・ラジアン・度数・スケールを計算する方法


メモ

Swift 4 でtransformから角度、ラジアン、ディグリー、スケールを求める 忘れがちなので・・・。


let transform = view.transform
let radians = atan2(transform.b, transform.a)
let degrees = radians * 180 / .pi
let scale = sqrt(abs(transform.a * transform.d - transform.b * transform.c))

import CoreGraphics

extension CGAffineTransform {
    var angle: CGFloat {
        return atan2(b, a)
    }
    
    var radians: CGFloat {
        return angle
    }
    
    var degrees: CGFloat {
        return angle * 180.0 / CGFloat.pi
    }
    
    var scale: CGPoint {
        return CGPoint(x: sqrt(a * a + c * c), y: sqrt(b * b + d * d))
    }
}

// 例として、適当な CGAffineTransform を作成
let transform = CGAffineTransform(rotationAngle: CGFloat.pi/4).scaledBy(x: 2.0, y: 1.5)

let angleInRadians = transform.radians
let angleInDegrees = transform.degrees
let scale = transform.scale

print("Angle in radians: \(angleInRadians)")
print("Angle in degrees: \(angleInDegrees)")
print("Scale: \(scale)")

2024/06/14 、コメント多めに書き直してみた。

import CoreGraphics

// CGAffineTransformの拡張機能を定義
extension CGAffineTransform {
    
    // 現在の変換の回転角度をラジアン単位で取得
    var angle: CGFloat {
        return atan2(b, a)
    }
    
    // 回転角度をラジアンで取得('angle'プロパティのエイリアス)
    var radians: CGFloat {
        return angle
    }
    
    // 回転角度を度数法で取得
    var degrees: CGFloat {
        return angle * 180.0 / CGFloat.pi
    }
    
    // 現在の変換のスケールをCGPointとして取得
    var scale: CGPoint {
        return CGPoint(x: sqrt(a * a + c * c), y: sqrt(b * b + d * d))
    }
}

// 例として、回転とスケールを含むCGAffineTransformを作成
let transform = CGAffineTransform(rotationAngle: CGFloat.pi / 4).scaledBy(x: 2.0, y: 1.5)

// 回転角度をラジアンで取得
let angleInRadians = transform.radians

// 回転角度を度数法で取得
let angleInDegrees = transform.degrees

// スケールを取得
let scale = transform.scale

// 結果を出力
print("Angle in radians: \(angleInRadians)") // 出力: 回転角度(ラジアン)
print("Angle in degrees: \(angleInDegrees)") // 出力: 回転角度(度数法)
print("Scale: \(scale)") // 出力: スケール

2025/03/21 、AIに添削してもらった

import CoreGraphics

// CGAffineTransformの拡張機能を定義
extension CGAffineTransform {
    // 現在の変換の回転角度をラジアン単位で取得
    var angle: CGFloat {
        // atan2(b, a)は、aが0の場合に問題が発生する可能性があるため、特別な処理を行う
        let angle = atan2(b, a)
        return angle
    }

    // 回転角度をラジアンで取得('angle'プロパティのエイリアス)
    var radians: CGFloat {
        return angle
    }

    // 回転角度を度数法で取得
    var degrees: CGFloat {
        return angle * 180.0 / CGFloat.pi
    }

    // 現在の変換のスケールをCGPointとして取得
    var scale: CGPoint {
        // より正確なスケールを求めるために、aとdの平均の平方根を使用する
        let scaleX = sqrt(a * a + c * c)
        let scaleY = sqrt(b * b + d * d)
        return CGPoint(x: scaleX, y: scaleY)
    }
}

// 例として、回転とスケールを含むCGAffineTransformを作成
let transform = CGAffineTransform(rotationAngle: CGFloat.pi / 4).scaledBy(x: 2.0, y: 1.5)

// 回転角度をラジアンで取得
let angleInRadians = transform.radians

// 回転角度を度数法で取得
let angleInDegrees = transform.degrees

// スケールを取得
let scale = transform.scale

// 結果を出力
print("Angle in radians: \(angleInRadians)") // 出力: 回転角度(ラジアン)
print("Angle in degrees: \(angleInDegrees)") // 出力: 回転角度(度数法)
print("Scale: \(scale)") // 出力: スケール



2026/02/25 更にAIで添削

  • radians 削除
  • scale の計算式を修正(scaleX = sqrt(a²+b²), scaleY = sqrt(c²+d²)
  • 不正確なコメントを削除・整理

import CoreGraphics

extension CGAffineTransform {
    /// 回転角度をラジアン単位で取得
    var angle: CGFloat {
        return atan2(b, a)
    }

    /// 回転角度を度数法で取得
    var degrees: CGFloat {
        return angle * 180.0 / CGFloat.pi
    }

    /// スケールをCGPointとして取得
    var scale: CGPoint {
        let scaleX = sqrt(a * a + b * b)
        let scaleY = sqrt(c * c + d * d)
        return CGPoint(x: scaleX, y: scaleY)
    }
}

// 使用例
let transform = CGAffineTransform(rotationAngle: CGFloat.pi / 4).scaledBy(x: 2.0, y: 1.5)

print("角度(ラジアン): \(transform.angle)")   // 約 0.7854
print("角度(度数法): \(transform.degrees)")   // 約 45.0
print("スケール: \(transform.scale)")           // 約 (2.0, 1.5)


2019/02/07

【iOS】UIViewの当たり判定( swift )


UIViewの当たり判定メモ
    
    let myView:UIView = UIView

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let v = myView.hitTest(point, with: event)




        return v
    }




こんな感じで取れる。
あたって入ればvの中にはあたったViewが入ってる。

ハズレならnil