開発ブログ - 最新エントリー

XCode で開発しているときに
以前に使ったシミュレータが分からなくなってしまうことがある

一生懸命データ追加したのに、別のシミュレータ立ち上げてしまって、表示されないとか悲しい

という訳で、以前に使ったシミュレータのデバイスとバージョンを調べたい

cd ~/Library/Developer/CoreSimulator/Devices
find . -name '*.app' -print | awk -F/ '{print $2,$8}'

こうすると、シミュレータで動かしたアプリケーションの一覧とそのデバイス用のフォルダが得られる
(*.app の部分を具体的なアプリケーションの名前にすれば、そのアプリケーションを動かしたシミュレータのフォルダだけが表示される)
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx foobar.app

判明したdeviceフォルダの中の device.plist を見る
cat xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/device.plist
  • コメント (0)
  • トラックバック (0)

python cgi troubleshoot

カテゴリ : 
技術メモ » Python
執筆 : 
2017/10/28
python cgi でのトラブルシューティング
環境変数の状態などを確認したい場合に
以下を env.cgi として保存し .htaccess でアクセスさせる

...続きを読む

  • コメント (0)
  • トラックバック (0)

python 開発環境

カテゴリ : 
技術メモ » Python
執筆 : 
2017/10/28
python で開発を行う場合に、virtualenv を使うと
固有なパッケージなどを設定した仮想環境を作ることができる

...続きを読む

  • コメント (0)
  • トラックバック (0)

coreserver (xrea) でpython

カテゴリ : 
技術メモ » Python
執筆 : 
2017/10/27
.htaccess に以下を追加
AddHandler cgi-script .py

.py は cgiスクリプトとして実行
#! には 制限なし?
#!/virtual/username/bin/python
などもOK

ヘッダを出力しないと 500 エラーになる
たとえば以下のようなものを出力しておく
print 'Content-type: text/html; charset=UTF-8\n'

RewriteBase は public_html 以下を書く
public_html/test1 なら

RewriteBase /test1/


ちなみに coreserver では .htaccess に
Options
を書くとInternal Server Errorになる?
  • コメント (0)
  • トラックバック (0)

swift で protocol を dict のキーにしたい

カテゴリ : 
技術メモ » swift
執筆 : 
2017/8/25
swift3

swift で protocol を dict のキーにしたい

swift の Dictionary のキーは Hashable でなければならない
そこで protocol に Hashable をつけてみる

protocol Foo: Hashable {
  var a: Int { get }
}

var v: [Foo: Int] = [:]
v[f] = 1

しかしこれでは
Using 'Foo' as a concrete type conforming to protocol 'Hashable' is not supported
Protocol 'Foo' can only be used as a generic constraint because it has Self or associated type requirements

などとエラーになる
そこで ObjectIdentifier を使って
var v: [ObectIdentifier: Int] = [:]
v[ObjectIdentifier(f)] = 1
とするが
Cannot invoke initialize for type 'ObjectIdentifier' with an argument list of type '(Foo)'
となる
おそらく protocol は struct で実装することができ、
ObjectIdentifier は struct などには使えないからダメなのだろう
そこで Foo を class に限定する
protocol Foo: class {
  var a: Int { get }
}

var v: [ObjectIdentifier: Int] = [:]
v[ObjectIdentifier(f)] = 1

これで完成!
  • コメント (0)
  • トラックバック (0)

iOS アプリから外部ディスプレイへの出力

カテゴリ : 
技術メモ » swift
執筆 : 
2017/8/22
[UIScreen screens] count] で画面数を取得?
http://do-gugan.com/~furuta/archives/2012/01/ios_4.html

http://blog.syuhari.jp/archives/2251

swiftだと自動的にreleaseされてしまうので
UIWindow のインスタンスは保持しておかなければダメ!
  • コメント (0)
  • トラックバック (0)

swift coredata メソッド名に注意!

カテゴリ : 
技術メモ » swift
執筆 : 
2017/8/22
長いこと原因が分からなかったトラブルが
ようやくわかった!!!

swift で CoreData を使っていた
元々は ObjectiveC で書かれていたものを swift に書き直していたのだが
なぜか CoreData で relationship しているプロパティに代入をする部分で
NSInvalidArgumentException reason: [NSSet intersectsSet:]: set argument is not an NSSet
というエラーが発生していたのだった

原因は、自分で作成したメソッド名にあった
プロパティが members だとして
members にアクセスすると [Member]として取得できないので
func getMembers() -> [Member]
というメソッドを作成して、それを使っていたのだった
どうも、swift では getXxxxx というアクセッサが生成されているのか、
members にアクセスしたときに、getMembers() が呼ばれてしまい
そのために members が NSSet としてアクセスできなくなったためのようだ

という訳で、プロパティ名に get なんちゃら というようなメソッドを
無意識に使ってしまうのは、とても危険ということ
ちなみに、メソッド名を考えるのが面倒だったので
_getXxxxx としたら、これもダメだったみたい
全然ちがう名前を付けなければダメ
  • コメント (0)
  • トラックバック (0)

Frame には要注意

カテゴリ : 
技術メモ » Delphi » VCL
執筆 : 
2017/5/29
VCL XE7

LiveBindings で CustomFormat を設定しても
一向に反映されない
いや、デザインモードでは見えるのだが
実行してみると反映されていない

LiveBindings のバグなのかと思って、色々と試してみた
全然わからない

結局、フレームのせいだった
フレームで、grid と PrototypeBindSource を設定して
そのフレームをフォームに張り付けていたのだが
どうもメインのフォームに張り付けたフレームで
IfThen などのCustomFormat が削除されてしまうのだ
何度やってもダメ
Bind 関係の uses が足りないせいか?と思って
色々追加するが結局ムダ

張り付けて一回目のコンパイルはOKなのに
その後、すでにデザインモードで動作しなくなっている!!
そして再度コンパイルすると当然ダメ!
これひどい
  • コメント (0)
  • トラックバック (0)

swift3 document ディレクトリが毎回変わる?

カテゴリ : 
技術メモ » swift
執筆 : 
2017/5/25
XCode 8 swift3

開発をしているときに
NSSearchPathForDirectoriesInDomains
で取得したドキュメントフォルダのパスが
なぜか毎回変わってしまっていました。
これじゃぁ困るよ!
と思っていたら、データを一つも書き込んでいなかったからのようでした...

全然気が付かなかったよ!
  • コメント (0)
  • トラックバック (0)

良く忘れる

カテゴリ : 
技術メモ » Delphi » 全般
執筆 : 
2017/5/17
TList は無名メソッドでソートできる

TObjectList の sortは TComparer を使って行う

uses
  System.Generics.Defaults, System.Generics.Defaults,
  ...

List.Sort(TComparer<TFooBar>.Construct(
    function(const Item1, Item2: TFooBar): Integer
    begin
      Result := Item1.Prop1 - Item2.Prop1;
    end));
)
  • コメント (0)
  • トラックバック (0)
プロダクツ

開発ブログ

Link

AD