• カテゴリ 技術メモ の最新配信
  • RSS
  • RDF
  • ATOM

開発ブログ - 技術メモカテゴリのエントリ

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)

Ubuntu 12 i-node テーブルが一杯

カテゴリ : 
技術メモ
執筆 : 
2017/3/30
パッケージのアップデートをしていたら、なんだかエラーが出ました
ディスクが一杯ということのようですが、まだ容量はあるのに...
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
などで消します

ソースの方が削除効果高いみたい
  • コメント (0)
  • トラックバック (0)
プロダクツ

開発ブログ

Link

AD