iOSコピペコーディング

できることは知ってるけど、コードってどうやって書くんだっけ?をコピペで解決

FreetelがSIMとセットで中古iPhone5sを販売開始!! 今なら値下げ中!!

個人的にイチオシのMVNO、Freetelさんが面白いことを始めました!

FreetelがAmazon内のFREETELアウトレットストアでiPhone5sの中古とSIMをセットで販売開始しました。
価格は32,800円のところ24,800円。

 

しかし中古の16GBとはいえ、freetelが美品っていうくらいだから、ほぼほぼ新品みたいなもんじゃないのかな、だとしたら中古iPhoneとしても24,800円なら、お得な部類になってそうです。

ただ通常価格の32,800円は中古のiPhoneの相場からは逸脱してるほど高いと言わざるをえません。買うなら値下げしている間がお得ですね。

Amazonで販売するなんて面白い売り方するよね。

ただ、現時点で、データ+SMS通信専用は50,000円となっているので、多分間違いなので、買わないほうがいいと思います。

で、気になるのはこのiPhone5s、果たしてSIM FREEなのかdocomoロックなのか。
SIM FREEなら即決できる価格。
このへんちゃんと書いてないのは、微妙です。

また、中古といってもアップル正規の整備済み中古品で保証ありかどうかも気になるところ。どうなのかなぁ気になるなぁ。

ヤフオクにXserve Raid 7TBを出品してみたw

ファイルサーバとして使っていたXserveRaid 新しいシステムにその機能を受け渡し、新しいファイルサーバに問題があった場合のバックアップとして保存してたけど、さすがに、もうお役御免かなとなった次第。

ただやっぱり、ちゃんと動くものを廃品業者にお願いするのももったいないので、ヤフオクに出すことにしました。

ファイルサーバとして使えるようにMax OS X Server 10.5搭載のG5とセットでの出品です。

page14.auctions.yahoo.co.jp

ついでに頑張ってフォーマットやら初期化をしたので動画にまとめてみた。
いい嫁ぎ先が見つかるといいな。

www.youtube.com

今日までのAmazonのセール品で欲しいものを探す

 今回のアマゾンのセールで気になった商品たち

 これは前から欲しかったのでポチった。11ac対応でなかなか安売りしない。
上位機種だし買って損は無いよね。

 

 1TBでこの価格。ちょっと古いノートに入れてやろうか検討中。

 

 自転車用だけど、CRM80にちょうど良さそう。

 

LG 34UM58-P IPSディスプレイ 34インチ/UltraWide/2560×1080/AH-IPS非光沢/HDMI

LG 34UM58-P IPSディスプレイ 34インチ/UltraWide/2560×1080/AH-IPS非光沢/HDMI

 

 コーディングがはかどりそうな超ワイドディスプレイ。
非光沢で目に優しいそうなのが魅力。

 

シャープ 50V型 液晶テレビ AQUOS LC-50W30

シャープ 50V型 液晶テレビ AQUOS LC-50W30

 

 50インチで消費電力100wで82000円はお買い得感ある。
今使ってる50インチプラズマが550wなので買い替え検討しちゃう。

AmazonでAdobeCCが月額2689円になる破格で販売中 違約金を払ってもお得!!

今日5/20限定かもしれませんが、
AmazonでAdobeCCが月額2689円になる破格で販売中

 通常4,980円(税抜)のところ2689円(税込)でAdobe Creative Cloudコンプリートが利用できます。

そしてこの価格だと、現行契約者は違約金を払って乗り換えても安いという驚愕の計算になります。

今後12ヶ月のCCの利用料金を計算してみると
※前提条件:今後12ヶ月以上Adobe Creative Cloudコンプリート4980円(税抜)で使うと想定
現行通常価格
5,378円(税込)×12ヶ月=64,536円

Amazonで今日売ってる価格で乗り換えた場合
2,689円(税込)×12ヶ月=32,268円


差額は
32,268円です。

 

現行契約を中断した場合の違約金は残存月分の半分となっているので

残存期間  1ヶ月 = 違約金   2,689円 29,579円お得
残存期間  2ヶ月 = 違約金   5,378円 26,890円お得
残存期間  3ヶ月 = 違約金   8,067円 24,201円お得
残存期間  4ヶ月 = 違約金 10,756円 21,512円お得
残存期間  5ヶ月 = 違約金 13,445円 18,823円お得
残存期間  6ヶ月 = 違約金 16,134円 16,134円お得
残存期間  7ヶ月 = 違約金 18,823円 13,445円お得
残存期間  8ヶ月 = 違約金 21,512円 10,756円お得
残存期間  9ヶ月 = 違約金 24,201円   8,067円お得
残存期間10ヶ月 = 違約金 26,890円   5,378円お得
残存期間11ヶ月 = 違約金 29,579円   2,689円お得

ということで違約金を払っても乗り換えた方がお得という驚愕の結果に。

とりあえずこの件についてAmazonになんらかの制限があるか聞いたところAdobe社の委託で行っている正規の取引なので制限は一切ないとここと。
現行契約中で乗り換えしたい場合は現行契約を解除して違約金を払い新しい契約として利用するようにAdobeから返答を得たとのことだった。

ちなみにAmazonによると通常価格が長期割引:5,929(69%)円/月と表示されているのは1ヶ月プランからの値引き額を表示しているもので、4,980円のいつものCCであることは間違いないそうです。(これは明らかな誤記ですね。)



この事実についてAdobeさんのサポートにチャットで凸してみた結果、乗り換えたい場合は契約を解除(違約金を払って)して、乗り換えてくださいとのこと。

減免措置は無いそうで、最近契約した人ほど上記のように29,574円もの損をすることになります。

なお、上記価格はAmazonAdobeの返答を元に個人的に算出した結果です。
計算に間違いがあった場合も責任は持ちませんので、最終判断は自己責任でお願いします。

さらに

というように、謎な対応にも反響が出ています。
個人で3台以上の機材で使いたいひとは2ライセンス買えない仕組みになってたんですかね。。?

まぁ、契約はその時、その状況で納得した上でとりかわすものなので、後出しじゃんけんで安いプランが出たとしても、その契約に従うのは当然なのでいたしかたないもののデジタルという品質が全く同じものに二重価格を設定するようなやり口は気に入らないのでAdobeのサポートチャットにはひどいことするよね。くらいのことは言ってやりましたさ。

 

2016/5/22追記
半額は終わりましたが、Amazonでは公式より1000円/月以上安く購入できます。
年間で1万円以上の差は確実に出るので、次からは公式での購入はやめようと思います。
チャンスがあれば、また半額なりのチャンスでの移行も視野にいれようと思いますわ。



ほんと、こういう商売の仕方は嫌いだなぁ。

 

HUD ManiaX 6周年記念 半額セール

ゴールデンウイーク期間中 HUDManiaX 6周年半額セールを実施中です。
キャンペーンは5月8日で終了しました。

iOSアプリでどこでもコクピット気分に浸れますw
http://issho.dht.jp/Hudmx/
よろしければお楽しみください。


www.youtube.com

f:id:hudmx:20160429171940j:plain

http://issho.dht.jp/Hudmx/

iPhoneやMacをApple正規店以外で修理するリスク

iPhoneの修理はApple正規店で行いましょうというお話。
巷に溢れる中国からパーツを買って修理をしているお店に出した場合は後悔することになるかもしれません。

 

iPhone6でApple以外の不正規店で修理した場合、エラー53が発生し、iPhoneiPadをアップデートしたり復元できなくなる事案が発生し話題になっています。

エラー53自体は、TouchIDのハードウエア認識エラーのようで、Apple公式で修理をした場合も発生することがあります。もちろん正規店で修理をしてエラー53となった場合は保証されるので問題はありません。

非正規店でのiPhoneの修理は安い場合もありますが、正規店以外での修理は当然すべて改造扱いとなりますので、その後一切のAppleの保証が受けられなくなります。

Appleは基本的にiPhoneの分解をユーザに認めていません。

安さとは裏返しにこんなデメリットがあることをしっかりと把握しておきましょう。
非正規店でも問題が発生した場合最後まで面倒を見てくれる場合もありますが、あくまで修理を行ったパーツのみで、それ以外が壊れたときにはどうにもなりません。
保証が切れたあとに、ちょっとiPhoneを修理出来れば良い場合は安い店を選ぶ方法も有りですが、保証期間中や長くiPhoneを使いたい場合は正規店で修理するほうが安心です。

賢く使い分けましょう。


Appleの正規サービスプロバイダ(修理店)はこちらから確認できます
Apple - 場所を検索

 

Iphoneを復元しようとするとエラーが出る(53) | Apple サポートコミュニティ

www.theguardian.com

 

applision.com


iphone-mania.jp

UIButtonに3DTouch判定を追加してアナログにコントロールしたい

UIButtonに3DTouchの判定を追加してアナログにズームインやズームアウトをしたり、ミサイルの発射速度をコントロールしたいと思ったので、UIButtonのactionを追加してみた。

Swiftでのサンプルコードはあるものの、Obj-CのサンプルはApple公式では用意されていないので、試してみた。

3D Touch - iOS - Apple Developer


まずは3DTouchが使えるかどうかの判定。
Swiftでやる場合はViewDidLoadでも良いっぽくサンプルプログラムもViewDidLoadに判定文が書かれているがObj-cで実装してみるとViewDidLoadでは判定ができなかった。

developer.apple.com



UIViewControllerのVIewDidLoadの時点では

self.traitCollection.forceTouchCapability

UIForceTouchCapabilityUnknown
The availability of 3D Touch is unknown. For example, if you create a view but have not yet added it to your app’s view hierarchy, the view’s trait collection has this value.

となってしまうので、ViewDidAppearまで待つ必要があるみたいだ。

正確には
- (void)traitCollectionDidChange:(UITraitCollection * _Nullable)previousTraitCollection
が来るまでは判定は出来ないと記載されている。
LifeCycleではViewDidAppearの時点では通過しているので、ViewControllerをallocした際のUIButtonにactionを追加する処理タイミングはViewDidAppearで良いと判断した。

まずはViewDidApperでForceTouchが使えるかどうかを判定し、UIButtonのすべてのTouchイベント発生時にUITouchイベントを取得するようにしてみた。
(VIewDidAppearを複数回通るようなプロジェクトの場合は回避コードが必要になると思うので適宜調整してほしい)

-(void)viewDidAppear:(BOOL)animated{

    [super viewDidAppear:animated];

    if ([self isForceTouchAvalable]) {

        [btnZoomIn addTarget:self action:@selector(getButtonForce:withEvent: ) forControlEventsUIControlEventAllTouchEvents];

        [btnZoomOut addTarget:self action:@selector(getButtonForce:withEvent: ) forControlEventsUIControlEventAllTouchEvents];

    }

}

-(BOOL)isForceTouchAvalable{

    NSString *strSystemVer = [UIDevice currentDevice].systemVersion;

    NSLog(@"version: %@", strSystemVer);

    double version = strSystemVer.doubleValue;

    if (version >= 9.0) {

        NSLog(@"ForceTouchCapability %zd",self.traitCollection.forceTouchCapability);

        if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {

            return YES;

        }

    }

    return NO;

}

isForceTouchAvalableというMethodを作りその中で3DTouchを使えるデバイスかどうかの判定をしている。気をつけなければ行けないのはiPhone6sだから3DTouchを使えるという判定はしてはいけないことだ。
これは、設定アプリで3DTouchをOFFにしたり、感度を変更出来るようになっているからです。
判定方法としてはまずiOS9以上かどうかを判定し、ForceTouchCapability判定時にClashしないようにする。
iOS9以上であればForceTouchCapability判定を行い、Avalableであれば、3DTouchを利用可能と判定する。

あとはイベントを受け取った時に適宜3DTouchの圧力を判定して何か動作させてやればいいだろう。

- (void)getButtonForce:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [[event allTouchesanyObject];

    double force = touch.force;

    double max = touch.maximumPossibleForce;

    double level = 0;

    if (max != 0 ) level = force/max;

    LOG(@"getButtonForce Max:%f Force:%f level:%f",max,force,level);

    //

    if (level>0.5) {

        //圧力が50%以上ならなんかをする場合はこんな感じ。

    }

    if(touch.view == btnZoomIn){//ボタンによって動作を振り分ける場合はこんな感じかな?

        NSLog(@"ZoomIn");

    }else if(touch.view == btnZoomOut){

        NSLog(@"ZoomOut");

    }

}

3DTouch非対応のデバイスとの切り分けもすれば、いろいろなシーンで使えると思う。
圧力が一定以上になった場合にアナログ的に判定をする場合はもう少し工夫が必要だけど基本的な判定はこれで行けるかな。
もちろん上記ではUIButtonの各イベントは有効なままなので、たとえばTouchUpInsideにアクションを割り当ててるけど3DTouchの場合はアナログ入力に対応するなどの場合、3DTouchが有効な場合は、TouchUpInsideの場合の処理をブロックするなどの処理は必要になるし、アクションの開始を検知圧力0.5以上とする場合は、グローバル変数などと比較してボタンの操作開始、終了を処理するMethodを用意する必要がある。

UIView上での3DTouchの圧力判定は、さらに簡単で、

-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [[event allTouchesanyObject];

    double force = touch.force;

    double max = touch.maximumPossibleForce;

    double level = 0;

    if (max != 0 ) level = force/max;

    NSLog(@"touchesMoved Max:%f Force:%f level:%f",max,force,level);

}

これだけで、圧力は取得できる。

圧力使って面白いモノ作ろう!