Archive for the ‘未分類’ Category

Macアプリケーションを開発していて
ファイル名およびフォルダ名に濁点/半濁点が含まれている場合、
Macの中で完結するのであれば、特になにも気にする必要はほぼなし。

ただ、サーバからデータをダウンロードして
そのダウンロードしたパス情報をログサーバにHTTPで送ろうと思ったら、
濁点系が含まれているとPerlのEncodeで引っかかってしまった。
Macのファイル名の文字コードはNFD(MAC-UTF-8)と呼ばれているらしい
LinuxやWindowsはNFS(UTF-8)らしい
#知らなかった。。。

サーバ側のプログラムを書き換ればいいのかもしれないが、
本番で長年動いていたプログラム。
なかなか更新できない。。。

なので、サーバに送信する直前にNFCに変換してあげる必要がある。
その際にしようするメソッドがこちら

  1.  
  2. NSString * sendStr = [ filePath precomposedStringWithCanonicalMapping ];
  3.  

これでサーバ側のエラーがなくなり、正しくデータを格納できた

1位:C言語
  これは、最初にプログラミングを習ったときに使った言語。
  最初はポインタって???
  構造体とは???
  という感じだったのを思い出した。
  
  非常にサンプルも豊富、どこでも使えるということからまだまだ
  使用されている言語なんだなと思う。

2位:Java
  ちょろっとだけかじったことのある言語。
  最近では、めっきり見なくなったけど、
  アプレットとか作ったなぁ。

3位:Obective-C
  すごいやはりiphone効果だ。
  Objective-Cを私が触り始めたのは、2006年。
  まだTigerの時代だったからなぁ。

  最初この言語を触り始めたときは、文法に戸惑った。
  本当に戸惑った。オブジェクトを使用するときは、[]で囲まなきゃならないし、
  わけがわからなくなった。
  
  当時のInterfaceBuilderとXCodeの繋ぎ込み方もわからなかった。
  それまでは、ボタンクリックするとメソッドがかけるような環境でやっていたから
  それができないことに1ヶ月歯痒く思っていた。
  でも、その1ヶ月を過ぎると慣れちゃえば、
  書きやすい言語だし、逆にWindowsの開発環境の方が
  使いづらいとまで思うようになってしまった。
  #まぁ、あのときは、ずっとMacだったからかな。

4位:C++
  やったことないです・・・

12位:Delphi
  この言語は書き方がかなり厳密に書かなきゃだめだったから
  慣れるまで大変だった。
  
  ただ、コンパイルの速度は異常に早い。
  Delphiに関していうと、dllが内包されるので、
  当時VB6.0で作られたアプリのように
  ランタイムが必要なアプリがあったが、
  ポンと渡して動くアプリが必要だったので、
  この環境で開発したなぁっと。

  .NETに対応しているDelphiは触ったことがないけど、
  それなりに使っている人がいるんだなぁとちょっとうれしい。

また、気になったら続きを書こうっと

アプリケーションの開発を行っていると、
2重起動防止の処理が必要な場合がある。
ただ、2重起動防止機能をつけて、
もし2重起動だった場合に、「すでに起動しています」というメッセージを
だすだけだとしたら、かなりしょぼい気がする。
それだったら、すでに起動しているアプリをアクティブにしてあげた方が
いい気がする。
(基本Machintoshはそうなってるし)

方法としては、外部アプリをアクティブにするためのメソッドが
VBに存在しているので、参照を追加し、
AppActiveを呼んでやればよい。

  1.  
  2. using System.Diagnostics;
  3. using Microsoft.VisualBasic;
  4.  
  5. static void Main(){
  6.     //2重起動防止
  7.     Process[] processList = Process.GetProcessesByName(
  8.                                       Process.GetCurrentProcess().ProcessName);
  9.     if (processList.Length > 1){
  10.        foreach (Process process in processList)
  11.        {
  12.                if (process.Id != Process.GetCurrentProcess().Id)
  13.                {
  14.                    //アクティブにして終了
  15.                    Interaction.AppActivate(process.Id);
  16.                    return;
  17.                }
  18.         }
  19.         //アクティブにせずに終了
  20.         return;
  21.     }
  22.  
  23.     Application.Run(new Form1());
  24. }
  25.  

起動したアプリと同じプロセス名からプロセスの一覧を取得し、
その中に、自分以外のプロセスがあったら、
そのプロセスに対して、Active命令を送る