開発ブログ - 技術メモカテゴリのエントリ
python で開発を行う場合に、virtualenv を使うと
固有なパッケージなどを設定した仮想環境を作ることができる
固有なパッケージなどを設定した仮想環境を作ることができる
.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になる?
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になる?
swift3
swift で protocol を dict のキーにしたい
swift の Dictionary のキーは Hashable でなければならない
そこで protocol に Hashable をつけてみる
しかしこれでは
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 を使って
とするが
Cannot invoke initialize for type 'ObjectIdentifier' with an argument list of type '(Foo)'
となる
おそらく protocol は struct で実装することができ、
ObjectIdentifier は struct などには使えないからダメなのだろう
そこで Foo を class に限定する
これで完成!
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
これで完成!
[UIScreen screens] count] で画面数を取得?
http://do-gugan.com/~furuta/archives/2012/01/ios_4.html
http://blog.syuhari.jp/archives/2251
swiftだと自動的にreleaseされてしまうので
UIWindow のインスタンスは保持しておかなければダメ!
http://do-gugan.com/~furuta/archives/2012/01/ios_4.html
http://blog.syuhari.jp/archives/2251
swiftだと自動的にreleaseされてしまうので
UIWindow のインスタンスは保持しておかなければダメ!
長いこと原因が分からなかったトラブルが
ようやくわかった!!!
swift で CoreData を使っていた
元々は ObjectiveC で書かれていたものを swift に書き直していたのだが
なぜか CoreData で relationship しているプロパティに代入をする部分で
というエラーが発生していたのだった
原因は、自分で作成したメソッド名にあった
プロパティが members だとして
members にアクセスすると [Member]として取得できないので
func getMembers() -> [Member]
というメソッドを作成して、それを使っていたのだった
どうも、swift では getXxxxx というアクセッサが生成されているのか、
members にアクセスしたときに、getMembers() が呼ばれてしまい
そのために members が NSSet としてアクセスできなくなったためのようだ
という訳で、プロパティ名に get なんちゃら というようなメソッドを
無意識に使ってしまうのは、とても危険ということ
ちなみに、メソッド名を考えるのが面倒だったので
_getXxxxx としたら、これもダメだったみたい
全然ちがう名前を付けなければダメ
ようやくわかった!!!
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 としたら、これもダメだったみたい
全然ちがう名前を付けなければダメ
VCL XE7
LiveBindings で CustomFormat を設定しても
一向に反映されない
いや、デザインモードでは見えるのだが
実行してみると反映されていない
LiveBindings のバグなのかと思って、色々と試してみた
全然わからない
結局、フレームのせいだった
フレームで、grid と PrototypeBindSource を設定して
そのフレームをフォームに張り付けていたのだが
どうもメインのフォームに張り付けたフレームで
IfThen などのCustomFormat が削除されてしまうのだ
何度やってもダメ
Bind 関係の uses が足りないせいか?と思って
色々追加するが結局ムダ
張り付けて一回目のコンパイルはOKなのに
その後、すでにデザインモードで動作しなくなっている!!
そして再度コンパイルすると当然ダメ!
これひどい
LiveBindings で CustomFormat を設定しても
一向に反映されない
いや、デザインモードでは見えるのだが
実行してみると反映されていない
LiveBindings のバグなのかと思って、色々と試してみた
全然わからない
結局、フレームのせいだった
フレームで、grid と PrototypeBindSource を設定して
そのフレームをフォームに張り付けていたのだが
どうもメインのフォームに張り付けたフレームで
IfThen などのCustomFormat が削除されてしまうのだ
何度やってもダメ
Bind 関係の uses が足りないせいか?と思って
色々追加するが結局ムダ
張り付けて一回目のコンパイルはOKなのに
その後、すでにデザインモードで動作しなくなっている!!
そして再度コンパイルすると当然ダメ!
これひどい
XCode 8 swift3
開発をしているときに
NSSearchPathForDirectoriesInDomains
で取得したドキュメントフォルダのパスが
なぜか毎回変わってしまっていました。
これじゃぁ困るよ!
と思っていたら、データを一つも書き込んでいなかったからのようでした...
全然気が付かなかったよ!
開発をしているときに
NSSearchPathForDirectoriesInDomains
で取得したドキュメントフォルダのパスが
なぜか毎回変わってしまっていました。
これじゃぁ困るよ!
と思っていたら、データを一つも書き込んでいなかったからのようでした...
全然気が付かなかったよ!
TList は無名メソッドでソートできる
TObjectList の sortは TComparer を使って行う
TObjectList
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));
)
パッケージのアップデートをしていたら、なんだかエラーが出ました
ディスクが一杯ということのようですが、まだ容量はあるのに...
df -i で i-node を調べてみると 100%
仕方がないので不要な古いカーネルソースなどを消すことにしました
ls -lt /usr/src
とすると
linux-header-3.2.0-xxx
がずらりと並んでいます
現在のバージョンを
uname -r
などで確認
それ以外の古いものを
apt-get remove --purge linux-headers-3.2.0-25
などとして地道に消していきます
同様に
/lib/modules
の下にもカーネルイメージがあるので
apt-get remove --purge linux-headers-3.2.0-25-generic-pae
などで消します
ソースの方が削除効果高いみたい
ディスクが一杯ということのようですが、まだ容量はあるのに...
df -i で i-node を調べてみると 100%
仕方がないので不要な古いカーネルソースなどを消すことにしました
ls -lt /usr/src
とすると
linux-header-3.2.0-xxx
がずらりと並んでいます
現在のバージョンを
uname -r
などで確認
それ以外の古いものを
apt-get remove --purge linux-headers-3.2.0-25
などとして地道に消していきます
同様に
/lib/modules
の下にもカーネルイメージがあるので
apt-get remove --purge linux-headers-3.2.0-25-generic-pae
などで消します
ソースの方が削除効果高いみたい