5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Macでプログラミング{3}

1 :名称未設定:03/03/31 09:27 ID:OdSPSwdj
Macでのプログラミング全般についてのスレです。

前スレ
http://pc.2ch.net/test/read.cgi/mac/1025998843/l50

前々スレ
http://pc.2ch.net/test/read.cgi/mac/1001404151/l50

リンクや関連スレは>>2-5あたり

935 :924:04/03/13 18:13 ID:8ReMNqkJ
ウワァァン!!ヽ(`Д´)ノ ナズェダメナンディス!!

- (IBAction)myAction:(id)sender
{
 NSString *filePath = @"/Users/username/Documents/";
 NSString *aliasPath = @"/Users/username/Desktop/";
 
 FSRef fileRef;
 FSRef aliasRef;
 AliasHandle aliasHandle;

 if(FSPathMakeRef([filePath fileSystemRepresentation], &fileRef, NULL) == noErr) NSLog(@"fileRef");
 else NSLog(@"Error");
 if(FSPathMakeRef([aliasPath fileSystemRepresentation], &aliasRef, NULL) == noErr) NSLog(@"aliasRef");
 else NSLog(@"Error");

 if(FSNewAlias(&fileRef, &aliasRef, &aliasHandle) == noErr) NSLog(@"createAlias");
 else NSLog(@"Error");
}

こんな感じで、全部エラーは出ないものの何も起こらないんですが
どこが間違ってるんでしょうか?
かなり致命的にわかってないところがあると思うんですが...

936 :名称未設定:04/03/13 19:26 ID:wddqw31q
>>934
エラーの時に結構そうなる。コードが悪すぎるのか…(w

937 :名称未設定:04/03/13 19:30 ID:F5od/Vve
>>934
エディタ内をクリックすると直ったりすることもある。

938 :名称未設定:04/03/13 20:51 ID:lCM9Yvby
>>935
何が起きるっていうんだそのコードで!

939 :名称未設定:04/03/13 20:54 ID:d+KbAUy8
>>935
FSNewAliasの使い方を誤解しているようですな
Cocoa用のラッパークラスいくつか存在するから、それらを使ってみては
BDAlias
ttp://bdistributed.com/Projects/BDAlias/
NDAlias
ttp://homepage.mac.com/nathan_day/pages/source.html#NDAlias

940 :924:04/03/13 21:00 ID:8ReMNqkJ
>>938
調べてたらだんだんわかってきました(・∀・)

>>939
ありがとうございます。今ちょうどNDAliasを見つけて読んでたところなんですが
ちょっと高度過ぎるのでBDAliasを読んでみます。こっちのほうがシンプルですね。

941 :名称未設定:04/03/13 21:56 ID:VH1ZcM0t
ttp://cathand.org/diary200401.html#2004/1/5

942 :924:04/03/13 23:19 ID:8ReMNqkJ
ありがd。
エイリアスのオリジナルファイル参照は結構サンプルも見つかって動かせるようになったんですよ。
ただ、エイリアスファイルの作り方がどうにも...

943 :名称未設定:04/03/13 23:33 ID:KSsf5j/R
エイリアスファイルはどっちかというとFinder書類なわけで、Finderに作らせるか
既存のエイリアスファイルをよく調べてから同じように作るしかないのでは?

944 :名称未設定:04/03/13 23:49 ID:VH1ZcM0t
AppleScriptでできたりしないかね.

945 :924:04/03/14 00:24 ID:QXDXTayI
>>943
そうですね。NDAliasなんかはリソースフォークを作って書き込んだりしてますし
他のサンプルを見てもFinderにAppleEventを送ってるようです。

946 :921:04/03/15 09:39 ID:Nkqo7FCJ
お、珍しく進んでる。

>>922
見るべきものは正直あんましなかったな。
G5最適化のポイントと、CHUDツールのデモは面白かったけど、
それ以外はAppleのサイトにある以上の話は見当らず。

Developperを呼んでるなら、Xcodeのデモやドキュメントの
URLのポインタを示すだけじゃなく、対象は限定されていいから
もう少し具体的にツッコんだ話をしてほしかったな。

プロジェクトを持ちこめばG5に最適化する手伝いをしてくれる
ってことだったけど、そこまでパフォーマンスにシビアなもの
は作ってないしなぁ。

WWDCの下手な宣伝っていう印象を受けました。

947 :名称未設定:04/03/15 12:26 ID:Hgwxggt4
>>933
AliasでもファイルシステムがUFSやNFSだったりした追えないよね?

948 :名称未設定:04/03/15 16:18 ID:Yj1qCgG4
>>946
>CHUDツールのデモは面白かったけど
どんなの?
CHUDツールってメモリリークのチェックくらいしか使い方が分からん。

949 :921:04/03/15 16:32 ID:Nkqo7FCJ
>>CHUDツールのデモは面白かったけど
>どんなの?
Sharkを使って、あるプログラムを実行時にプロファイリングをして
ボトルネックを発見。修正後、再度プロファイリングした結果を
前回の結果と比較して、どれだけパフォーマンスが上がったか確認。
みたいなデモをしてくれたよ。
あとMONsterやSaturnの軽い紹介くらいかな。

ちなみに発音は「チャド」に近い。 ← 一番の収穫

950 :922:04/03/15 19:58 ID:6SWOulbJ
>>946
やはりそうか。今日行くとか言ってたビデオ屋に聞いてあわててサイト見てあら〜こんなのやってた
のねんとか思ってて(w
しかも行くと言ってたのがビデオ屋だったからコンテンツでベロパ向けだろーと思ってたりしたので

行けなくて悔しいっつーのが無くなってよかったざんす。

CHUDはチャドと言えばいいのが判るのは確かにあっちの香具師が来てくれてかこっちから
行かないと判らんよなぁ。いい事おせーてもらった感じ。
でもその辺の話は実際見たかったな。

ところでXcodeのバグ報告とかその場でがしがししてる香具師とかいたのかな?(w

しかしADCのサイトをたまに見に行く程度でHotNewsなんて見もしないとこういうのがあるって
事すら判らん事になるのねん(死


951 :名称未設定:04/03/15 20:47 ID:HWqTstWV
質問です。お願いします。

ことえりスレで、入力モードを表示するアプリを作れないかという話になったのですが、
ことえりの現在の入力モードをプログラムから知る方法はないでしょうか?

Cocoa・Carbon共に一通り調べてみたのですが、見つけられませんでした。
何か方法ご存知の方おりませんでしょうか?

952 :名称未設定:04/03/16 00:27 ID:ucsM2FuC
>>951
その方法は俺も一通り調べたけど、分からなかった。
本当はソフトの側からことえりの入力モードを操作したいのだけど

俺の場合はCarbonなのでTSM周りかなぁと思ったんだけどね

953 :名称未設定:04/03/16 14:50 ID:AJdn+IWr
>>951
あっちに書いたのはダメだったんすか? 10.3のTSMに変更/追加されたAPI

954 :名称未設定:04/03/16 23:55 ID:840aPt/a
おい、誰か951の質問に答えてやれよ?
知らないのか?


955 :名称未設定:04/03/17 01:04 ID:LoyE8T92
入力モードって何?
平仮名とかそういうこと?

956 :名称未設定:04/03/17 01:26 ID:N20DvEjf
>>953
俺もそれ使いたいんだけど、サンプルとかないですかねぇ。

>>955
そうそう。ひらがな、英数、半角カナなど

957 :名称未設定:04/03/18 01:31 ID:MTJM+0Dd
全然見当もつかん。
ことえりってAppleEvent受け付けたっけ?

958 :名称未設定:04/03/18 01:48 ID:fdp+Ji1L
OSXは知らんが、OS9時代はAEでコミュニケーション取ってたような。

959 :名称未設定:04/03/19 00:21 ID:bcCIC+lF
色々とレス感謝です。

再度TSM調べてみましたが、ダメそうです。入力モード情報のDictionaryを取るまでは
できたのですが、そこには現在のモードがどれであるかの情報は含まれてませんでした。

ヘッダとリファレンスを読む限りでは kTSMDocumentInputModePropertyTag か
kTextServiceInputModePropertyTag を使えば現在のモードが取れそうなんですが、
実際いくつかの関数で使ってみても、他の必要な引数が間違っているようで、エラーに
なってしまいます。
また、Component Managerの型を多用しているので、そちらも組み合わせたりすると、
出来たりするのかもしれません(調べ疲れた...)。

結局、Script ManagerでキーボードのScriptを取得すると、今のモードが半角英字か
それ以外かの判定はできそうなので、とりあえずそれで一段落してるとこです。

>>955
そうです。入力モードパレットと同じことをアプリケーションで出来ないかと。

>>957-958
確かにTSMには、IM側からアプリケーションにAEかCarbonEventを投げる関数が
用意されています。
コンポーネント(っていう表現でいいのかな?)に対してAEを投げるのは、アプリケーション
に対して投げるのと同様の手順でいいのでしょうか?(送信先をクリエータで指定するとか)

その辺の関連する情報ご存知でしたら教えていただけたら幸いです。

960 :951:04/03/19 00:25 ID:bcCIC+lF
失礼。959=951 です。念のため。

961 :951:04/03/19 00:44 ID:bcCIC+lF
>>952
やや技巧的な方法ですが、入力モード変更のショートカットと同じキーボードイベントを
発生させる、ってのもあるかもしれません。

962 :名称未設定:04/03/19 00:57 ID:4BBNvjNX
>>951
僕が作るとしたら、TSMは分かんないんで、MenuExtraのsetImage:にパッチして、
NSImageをそのまま流用、とかかな。
うまくパッチできるかどうかが問題だが

963 :951:04/03/19 01:15 ID:bcCIC+lF
>>962
パッチってよく分からないんですが、関数やメソッドを横取りするようなことですよね?
そういうことってOS Xでも出来るんですか?
ちなみにその方法は、メニューに表示してなかったらアウトですよね?

964 :名称未設定:04/03/19 01:27 ID:4BBNvjNX
>>963
メニュー出してることが必須ですね(´д`;)
パッチはUnsanityのApplication Enhancer使えば簡単です。
ただしこの場合、最初にパッチを仕掛けるタイミングでMenuExtraが
まだ読み込まれていないと思うので面倒そう

965 :名称未設定:04/03/19 01:37 ID:S2OvSQyj
>>960
おれも試してみたよ。
CopyTextServiceInputModeList()は確かにうまく動く。
問題はkTextServiceInputModePropertyTagの場合のGetTextServiceProperty()だ。
間違ったパラメータを渡しようがないのにKotoeriComponentDispatchで落ちちゃうね。
kTextServiceJaTypingMethodPropertyTagは'roma'しか返らないようだしな。
ことえりしか持ってないから他のはしらん。

966 :名称未設定:04/03/19 02:17 ID:jTiQHXBZ
別の質問だけどいいかな?
PowerPlantでアプリ作ってるんだけど、LEditTextにインライン入力を可能にしようと思ったところで
壁にぶつかっちゃった。
もしかしてインライン入力対応ってすんげーめんどくさい?
LMLTEPaneはIn Progressらしいので使うの恐いし。(CW8です。9でもin progressのまま?)
何かお手軽な方法があったら教えてホスィのですが。。。

967 :名称未設定:04/03/19 08:31 ID:efh7naSE
>>959 最後のやつ
TextServiceEventRef()でCarbon Eventを投げる。

>>969 全然、求める答えじゃないけどw
これ使うならそうでもない。
http://developer.apple.com/technotes/te/te_27.html
使わずにTSMのhilite rangeとか覗いたりしてインライン入力風に見せるのはちょっと面倒。

968 :名称未設定:04/03/19 08:36 ID:efh7naSE
間違えた… >>967の下のやつは>>966

969 :951:04/03/20 01:46 ID:n5RzCrmH
>>959 でScript Managerで云々と書きましたが、、、
具体的には、GetScriptManagerVariable(smKeyScript); で、半角英字か
それ以外かを判定できるはずだったんですが、それが機能するのはアプリが
手前に来ている場合だけでした(それ以外はsmRomanしか返りません)。

もう八方塞がり気分なのであきらめます。今週ずっと仕事の合間にコツコツ調べたのに(´・ω・`)

TSMちなみに、>>965にあるように、GetTextServiceProperty()も機能してくれませんし、
また、GetTextServiceProperty()に kTextServiceInputModeRoman か
kTextServiceInputModeJapanese を渡すことでモード変換が出来そうなんですが、
実際はモードの表示のみが変わっているだけできちんとモード変換されていません。
(バグだらけなんじゃネェの?あぁ?)

970 :951:04/03/20 02:22 ID:n5RzCrmH
>>969 を訂正

× GetTextServiceProperty()に kTextServiceInputModeRoman か...
○ TSMSelectInputMode()に kTextServiceInputModeRoman か...

 ∧||∧
(  ⌒ ヽ 俺もバグばっか
 ∪  ノ
  ∪∪

971 :名称未設定:04/03/20 02:30 ID:6AfqNYDO
>>966
ぐぐったらこんなん出てきた。

 http://www.jwwalker.com/pages/ccarbonedittext.html

実際に使ったわけじゃないけど。
あと、WASTEのPowerPlantラッパがあったような気がする。
やや大げさだけどインライン入力できるはず。

972 :名称未設定:04/03/21 15:11 ID:yNHB9Eai
初歩的な質問2つです。

1) mi や Xcode で、C言語の超基本的なお遊びサンプルPGを作って
遊んでるのですが、えーと、たとえばこんな奴、

int main(){
printf("Hello MacWorld¥n");

return 0;
}

こういうのを Terminal や Xcode(もちろん ZeroLink オフ)でコンパイル
して実行ファイルを作りますよね。その実行ファイルを友達に送信して、
試してもらったりしても、Terminal が起動するだけで何も起こりません。
これって、要するに何がイカンのでしょうか?

2) コード中に"gets" を記述したプログラムをコンパイルして実行すると、
"gets は危ないですよ" 的な警告メッセージが表示されます。ラインバッファ
方式が云々で危ないのだという話はなんとなく理解できるのですが、
getsの代わりにもっと使い勝手の良い関数があるのでしょうか?
getchar(getche) は conio.h が必要らしく、OS X環境では初心者には
扱えないようなので。

よろしくお願いします。

973 :名称未設定:04/03/21 15:14 ID:yNHB9Eai
間違って age ちゃいました。

あ、あと、適当に書いた int main 以下の部分は、もちろん #include あたりを
省略したつもりで、「自分の環境ではきちんと期待どおりに実行できるのに」、
という意味での質問です。

974 :名称未設定:04/03/21 15:33 ID:YbrGpW4M
1)
Terminalが起動するだけで何も起こりませんといっても
Terminalを起動してから実行するものではないでしょうか。
よく分かりません

2)
getsの代わりはfgetsですね。
getcharもstdio.hがあれば使えるはずです。

975 :名称未設定:04/03/21 15:47 ID:yNHB9Eai
>>974
音速レスどうもです。
1) に関して詳しく書きますと、

miでコード記述 → Terminal でコンパイル →
特に指定しなければ実行形式としてカレントディレクトリに "a.out" ができる

で、自分の環境ではこの a.out(白紙アイコン) をダブルクリックする事で、
Terminal が起動し、しょうもない自作プログラムが開始されるわけなんです。

で、Finderの「情報を見る」でこの "a.out" をTerminal で起動するように設定して
(↑これが意味のある操作かどうか、よくわかってませんが)、"a.out" をメールで
送信して友達に試してもらおうとしますと、
「"a.out" のダブルクリックで Terminal が起動はするけど、何も起こらない」
と、こういう話の流れなんです。

たぶん根本的なところがわかってないんだろうとは思うのですが、
上記のような考え方は、そもそもの発想が間違ってますか?

2)
ありがとうございますです。調べてみます。

976 :名称未設定:04/03/21 16:02 ID:YbrGpW4M
>>975
話が分かりました。Terminalに関連付けしておくとダブルクリックで起動できるんですね。
今まで知りませんでしたw
で、おそらく原因は送った際にパーミッションの情報が失われたからだと思います。
相手に手動で直してもらうか、送る際にtarで固めて送るなりすれば大丈夫かと思われます。

977 :名称未設定:04/03/21 16:22 ID:YJqBUYpL
>>976
おお。なるほど。

cc test.c
で作成された a.out は関連づけした後 Terminal で実行できるのに、
cc test.c > b.out
で作成された b.out はそれができないというのも疑問だったんです。
ls -l で見てみたら、確かに、後者のファイルは実行権が不可でした。
UNIXの理屈もほとんど知らないんですが、勉強になります。どうも。

978 :名称未設定:04/03/21 17:39 ID:R9DKCzbV
>>977
コマンドラインアプリは素直に Terminal から起動する習慣をつけた方が
いいような気がする。

対話シェルに何を使ってるのか知らないけど

alias run ./a.out

みたいなことをやっとくと便利かもね。

979 :名称未設定:04/03/21 18:23 ID:z72rqY93
>>977
書き間違いだと思うが、
cc test.c > b.out
でなく
cc test.c -o b.out
では?

980 :名称未設定:04/03/21 18:48 ID:BbnFfYuX
tarで固めるとファイル個別の関連づけは消えると思うから注意してね

981 :名称未設定:04/03/21 23:12 ID:HBQylBSn
みなさんどうもです。
原則的にWin向けの超初歩教科書みたいなのを参考に遊んでるんで、
UNIX的な部分の無知でひっかかるとは考えに入っておりませんでした。

>>979
その通りでありました。書き間違いじゃなくて真性というやつです。
UNIXのコマンドもまだ ls、rm、mkdir、cp ぐらいしか知らないアホなのです。

前述>>976さんのパーミッションの話、
いくつかのサイトで tar の使い方から調べてみたのですが、たとえば
~/sample/a.out
なんて所に実行ファイルを作りまして、cd ~/sample でその階層をカレント
ディレクトリにしてから、
tar cvf ~/Desktop/sample_out.tar . -p
(パーミッションを保持したまま、カレントディレクトリの内容を書庫として
 デスクトップに sampl_out.tar という名前で作成する)
とし、この sample_out.tar をWeb経由で他人のMacで実行してもらったのですが、
やはり「exit;」と出ただけで終了してしまいました。

と、ここまで書いた時点で>>980さんの書いて下さったアドバイスが、つまり、
こうなるから気をつけたまえ、という事ですね。うむ、なるほど。

>>978
相手方が全くUNIX的な知識がなくて、私の作ってるプログラムというのも
本当に小学生レベルのしょうもないモノなので、ただ単に何も知らない人でも
ダブルクリックして遊べたら良いんだけどな、程度の質問だったんです。
しかし確かにおっしゃる通りなようで。ありがとうございます。

982 :名称未設定:04/03/21 23:43 ID:vz6Wp3k/

OS X 同士でやりとりするなら、下手に tar とか使わず読み書き可能の
ディスクイメージ作ってそこにコピーして、.dmg をやりとりした方が
便利だよ。

gzip で圧縮かければそこそこ縮むし、HFS+独自の属性も残るし、また、
気になるなら ディスクユーティリティで読み込み専用に変換すれば
自前圧縮(ZLib)かけた .dmg を作ってくれる。



983 :名称未設定:04/03/22 00:52 ID:pq09S50w
tar.gzipでバックアップしちまってえらい目にあったことあるよ。

984 :名称未設定:04/03/22 01:08 ID:rDrT5mci
DropTar使え

287 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)