Flexでパンくずを作ってみました。
もちろん改良の余地はあります。なんせ0.0.0ですから。
まだSVNのみの公開です。
http://code.google.com/p/breadcrumbs-flex/
んーんGoogleCodeナウいですな。
2008年12月26日金曜日
HibernateでOracleのシーケンスを使う
Oracle でのシーケンス指定を行います。
するとHibernateでは以下のように指定します。
するとHibernateでは以下のように指定します。
<id name="id" type="big_decimal">
<column name="ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">tblTree_id</param>
</generator>
</id>
Oracleで通番を設定
Oracleで指定しないで通番を指定するには
という風に「tblTree_id」のような変数を作って
指定する必要があります。
SQLではtblTree_id.nextvalみたいな設定が必要です。
create table tbl_tree (
id number,
name varchar2(255) not null,
treeXML XMLType,
create_dt_d timestamp,
update_dt_d timestamp,
primary key ( id )
);
create sequence tblTree_id start with 1 increment by 1;
select tbltree_id.nextval from dual;
という風に「tblTree_id」のような変数を作って
指定する必要があります。
SQLではtblTree_id.nextvalみたいな設定が必要です。
HTTPServiceに引数を渡す
Objectを単純にnewして作成します。
その後、オブジェクトのプロパティ名を
Webに対する引数と同じにして設定します。
POSTの仕方は以下です。(GETでも良い)
でsend()メソッドの引数に渡すと
サービスに対して渡すことができます。
その後、オブジェクトのプロパティ名を
Webに対する引数と同じにして設定します。
POSTの仕方は以下です。(GETでも良い)
でsend()メソッドの引数に渡すと
var argObj:Object = new Object();
var targetId:String = String(treeGrid.selectedItem.id);
argObj.targetId = targetId;
srvTreeView.method = URLRequestMethod.POST;
srvTreeView.send(argObj);
サービスに対して渡すことができます。
Webにアクセスしてデータグリッドを表示
Webにアクセスして、データグリッドの一覧に表示する方法です。
というタグを作ります。
XMLを返してくれるHTTPにアクセスします。
上記URLは下記XMLを返すRESTサイトです。
これに対して
データグリッドを準備して
ActionScript上に戻り値のイベントを利用して
その値を設定します。
これで変更してくれます。
<mx:HTTPService id="srvDataView" url="http://localhost:8080/selectView.do"
useProxy="false" result="showResult(event)"/>
というタグを作ります。
XMLを返してくれるHTTPにアクセスします。
上記URLは下記XMLを返すRESTサイトです。
<treeView>
<forms>
<treeViewList>
<data>
<name>テスト名称</name>
<id>5</id>
</data>
<data>
<name>XMLデータだよー</name>
<id>6</id>
</data>
<data>
<name>一応ね</name>
<id>7</id>
</data>
</treeViewList>
</forms>
</treeView>
これに対して
データグリッドを準備して
<mx:DataGrid id="treeGrid">
<mx:columns>
<mx:Array>
<mx:DataGridColumn headerText="ID" dataField="id"/>
<mx:DataGridColumn headerText="Name" dataField="name" />
</mx:Array>
</mx:columns>
</mx:DataGrid>
ActionScript上に戻り値のイベントを利用して
その値を設定します。
public function showResult(event:Event):void {
treeGrid.dataProvider = srvDataView.lastResult.treeView.forms.treeViewList.data;
}
これで変更してくれます。
2008年12月14日日曜日
Flexのコンポーネントの初期化
ActionScriptでコントロールを作成して、
という風に処理を行い
newしたコンポーネントに対して処理を行う場合、
newされた側にあるコンポーネントの値にアクセスすると
nullオブジェクトにアクセスする場合があります。
そんなときは
として処理を遅らせます。
newしただけでは中にあるDisplayObjectが初期化が行われないのでしょう。
callLater()は表示を再描画時に処理を行うそうなので
処理を遅らせて処理をすることが可能になります。
何度も処理を行うような時に使用するかは。。。わかりませんが
これで初期化はOKです。
//オブジェクトを生成
var waitWindow:WaitWindow =new WaitWindow();
//ラベルを設定
waitWindow.setLabel(objFile.name);
という風に処理を行い
newしたコンポーネントに対して処理を行う場合、
newされた側にあるコンポーネントの値にアクセスすると
nullオブジェクトにアクセスする場合があります。
そんなときは
private var myLabel:String = "";
public function setLabel(aLabelText:String):void {
myLabel = aLabelText;
callLater(setTitle);
}
private function setTitle():void {
displayLabel.text = myLabel;
}
として処理を遅らせます。
newしただけでは中にあるDisplayObjectが初期化が行われないのでしょう。
callLater()は表示を再描画時に処理を行うそうなので
処理を遅らせて処理をすることが可能になります。
何度も処理を行うような時に使用するかは。。。わかりませんが
これで初期化はOKです。
2008年12月6日土曜日
Webアプリの再起動
「conf/tomcat-users.xml」
のmanagerロールで管理されていますので
を設定しておきます。
その後、
http://ドメイン/manager/reload?path=/Webアプリのパス
にアクセスすると
追加してあるユーザをBASIC認証してきます。
そこにユーザ名とパスワードを設定してください。
アプリケーションが再起動します。
(ポートも指定してください)
Web+APでコネクトして隠したとしても
私みたいに全通ししているとアクセス可能です。
よって攻めないでください。
(外部からも再起動可能って事です)
のmanagerロールで管理されていますので
<user name ="アカウント"
password="パスワード"
role ="manager"/>
を設定しておきます。
その後、
http://ドメイン/manager/reload?path=/Webアプリのパス
にアクセスすると
追加してあるユーザをBASIC認証してきます。
そこにユーザ名とパスワードを設定してください。
アプリケーションが再起動します。
(ポートも指定してください)
Web+APでコネクトして隠したとしても
私みたいに全通ししているとアクセス可能です。
よって攻めないでください。
(外部からも再起動可能って事です)
Javaのサーバモード
起動方式を変更します。
以前仕事で(その時はWindowsサーバ)で
デフォルトで結合試験を通り、いざシステムテストの負荷テストを
行ったら、でかいクエリを10発連続で飛ばしたら止まりました。。。
はてさてなんでだろう。。。とやっていて、
コネクション数、セッション継続時間、ソケット有効とかも変更しましたが
一応以下の文面も追加しました。
メモリを変更しないと動かない時が多かったので
これがわかりやすい問題の1つでした。
調べると難しい話しも多いのですが、
システム搭載の物理メモリの半分ぐらい使って良いのではないでしょうか?
アウトオブメモリに陥ったらどうぞお試しあれ。
※実装を直す暇があれば、適切かどうかを試すのが賢明かも。
環境変数に
を追加します。
そうすると起動時に環境変数として盛り込まれます。
但し、Windowsのサービス起動(Tomcat.exe)だと、
この変数の影響がでない現象がありました。
何やらサービスの起動はレジストリからVMの値を
決定しているらしい。。。という結論に至りました。
以前仕事で(その時はWindowsサーバ)で
デフォルトで結合試験を通り、いざシステムテストの負荷テストを
行ったら、でかいクエリを10発連続で飛ばしたら止まりました。。。
はてさてなんでだろう。。。とやっていて、
コネクション数、セッション継続時間、ソケット有効とかも変更しましたが
一応以下の文面も追加しました。
メモリを変更しないと動かない時が多かったので
これがわかりやすい問題の1つでした。
調べると難しい話しも多いのですが、
システム搭載の物理メモリの半分ぐらい使って良いのではないでしょうか?
アウトオブメモリに陥ったらどうぞお試しあれ。
※実装を直す暇があれば、適切かどうかを試すのが賢明かも。
環境変数に
CATALINA_OPTS=-Xmx256M -Xms256M -Xss256K -server
を追加します。
そうすると起動時に環境変数として盛り込まれます。
但し、Windowsのサービス起動(Tomcat.exe)だと、
この変数の影響がでない現象がありました。
何やらサービスの起動はレジストリからVMの値を
決定しているらしい。。。という結論に至りました。
Tomcatエラーページの指定
サーバ上でエラーとなった場合、エラーページを指定する事ができます。
と指定するとNotFoundを自分の好きなページで表示する事ができます。
400:不正なリクエスト
401:無許可
403:禁止されている
408:サーバが応答しない
500:サーバ側で何らかの問題発生
となります。
BASIC認証時は401を指定していると
いきなりエラーページにとんだことがあります。
これはBASIC認証を勉強すれば、わかります。
Javaの例外を捕まえたい場合は
とできるようです。
。。。。Struts等を使いたい場合、
例外はtry処理等した方が良いと思いますが。。。
<error-page>
<error-code>404</error-code>
<location>/error/notfound.html</localtion>
</error-page>
と指定するとNotFoundを自分の好きなページで表示する事ができます。
400:不正なリクエスト
401:無許可
403:禁止されている
408:サーバが応答しない
500:サーバ側で何らかの問題発生
となります。
BASIC認証時は401を指定していると
いきなりエラーページにとんだことがあります。
これはBASIC認証を勉強すれば、わかります。
Javaの例外を捕まえたい場合は
<error-page>
<exception-type>java.io.FileNotFoundException</exception-type>
<location>/error/filenotfound.html</localtion>
</error-page>
とできるようです。
。。。。Struts等を使いたい場合、
例外はtry処理等した方が良いと思いますが。。。
Tomcatで認証
「認証情報がなければ、FORMページへリダイレクト」といった
アプリケーションはしばしば見受けられますが、
Tomcat(他を知りませんが)はweb.xmlの編集で認証を
フォルダ、ファイル単位でかけることが可能になります。
それではPostgreSQLのテーブルを使って認証してみましょう。
データベース作成はPostgreSQLの項にありますので見てみてください。
Tomcat5だと./common/libに
JDBCドライバが存在する事が条件です。
Tomcat6では./libになります。
server.xml内にある200行目位です。
って感じで編集します。
その後、アプリケーションのweb.xmlにおいて以下を追加します。
これで指定したパスはセキュリティがかかります。
アプリケーションはしばしば見受けられますが、
Tomcat(他を知りませんが)はweb.xmlの編集で認証を
フォルダ、ファイル単位でかけることが可能になります。
それではPostgreSQLのテーブルを使って認証してみましょう。
データベース作成はPostgreSQLの項にありますので見てみてください。
Tomcat5だと./common/libに
JDBCドライバが存在する事が条件です。
Tomcat6では./libになります。
server.xml内にある200行目位です。
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="org.postgresql.Driver"
connectionURL="jdbc:postgresql://サーバ名/データベース名?
user=ユーザ&password=パスワード"
userTable="users"
userNameCol="user_name"
userCredCol="user_pass"
userRoleTable="user_roles"
roleNameCol="role_name"/>
って感じで編集します。
その後、アプリケーションのweb.xmlにおいて以下を追加します。
<security-constraint>
<web-resource-collection>
<web-resource-name>Volunteer Manager ID</web-resource-name>
<url-pattern>/manage/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>design</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>Volunteer Manager ID</realm-name>
</login-config>
<security-role>
<role-name>admin</role-name>
<role-name>design</role-name>
</security-role>
これで指定したパスはセキュリティがかかります。
サーブレットでエンコード
すべてのレスポンスを統一したコードに変換する方式は
web.xmlに以下を記述します。
まぁこれはStruts用なのでservlet-nameはactionになっていますが、
それぞれの名称にあわせてください。
このクラスに
としておけばOKです。
initでコード名を取ってきていますが、
実装に依存させても大丈夫です。
web.xmlに以下を記述します。
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
まぁこれはStruts用なのでservlet-nameはactionになっていますが、
それぞれの名称にあわせてください。
このクラスに
/**
* Tomcatコード変換フィルター
*/
public class EncodingFilter implements Filter {
String encName;
/**
* 初期化処理<br>
* エンコード名を取得
*/
public void init(FilterConfig config) throws ServletException {
// TODO 自動生成されたメソッド・スタブ
encName = config.getInitParameter("encoding");
}
/**
* 実行処理
*/
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding(encName);
chain.doFilter(request, response);
}
}
としておけばOKです。
initでコード名を取ってきていますが、
実装に依存させても大丈夫です。
2008年12月4日木曜日
DataGridのカラムに対して処理を行う
データグリッドの文字列をXMLから設定して、
それで処理をやりたいですよね。
・・・ってDataGridの表示を説明してない。。。
ActionScriptに
って感じのメソッドを作成します。
引数、戻り値はこれで決まってます。
でDataGridColumnにメソッドをlabelFunctionで指定してあげます。
・・・dataFieldには指定しなくても良いのかな?
これでchangeDate()が呼び出されます。
XMLで日付を出してたんですけど、書式を変えたかったのでやってみました。
それで処理をやりたいですよね。
・・・ってDataGridの表示を説明してない。。。
ActionScriptに
//データの日付処理
private function changeDate(item:Object, column:DataGridColumn):String {
//item.pubDateって感じでデータにアクセス
//戻す文字列で表示されます。
return "test";
}
って感じのメソッドを作成します。
引数、戻り値はこれで決まってます。
でDataGridColumnにメソッドをlabelFunctionで指定してあげます。
・・・dataFieldには指定しなくても良いのかな?
<mx:DataGridColumn width="250" headerText="日付" dataField="pubDate" labelFunction="changeDate"/>
これでchangeDate()が呼び出されます。
XMLで日付を出してたんですけど、書式を変えたかったのでやってみました。
FlexでTreeを表示
Flexでのツリーの初期化を行います。
myXMLという変数にディレクトリを表現したXMLを記述します。
Treeコンポーネントを用意して
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp();">
<mx:Script>
<![CDATA[
private var myXML:XML =
<dir name="Yahooトピックス" url="http://dailynews.yahoo.co.jp/fc/rss.xml">
<dir name="国内" url="http://dailynews.yahoo.co.jp/fc/domestic/rss.xml"/>
<dir name="地域" url="http://dailynews.yahoo.co.jp/fc/local/rss.xml"/>
<dir name="経済" url="http://dailynews.yahoo.co.jp/fc/economy/rss.xml"/>
<dir name="海外" url="http://dailynews.yahoo.co.jp/fc/world/rss.xml"/>
<dir name="エンターテイメント" url="http://dailynews.yahoo.co.jp/fc/entertainment/rss.xml"/>
<dir name="スポーツ" url="http://dailynews.yahoo.co.jp/fc/sports/rss.xml"/>
<dir name="サイエンス" url="http://dailynews.yahoo.co.jp/fc/science/rss.xml"/>
<dir name="コンピュータ" url="http://dailynews.yahoo.co.jp/fc/computer/rss.xml"/>
</dir>
//アプリケーション初期化
public function initApp():void{
//ツリーの初期化
rssTree.dataProvider = myXML;
}
]]>
</mx:Script>
<mx:Tree x="10" y="80" width="219" height="308" id="rssTree"
labelField="@name"
defaultLeafIcon="@Embed(source='Assets.swf', symbol='TreeFolderClosed')"/>
</mx:Application>
idを入れてアプリケーション初期化のメソッドにdataProviderを指定させます。
これでツリーが表示されるはずです。
Flexで初期化
Flexでの初期化の方法です。
Appricationタグに「creationComplete」でメソッドを指定して
ActionScriptでメソッドを記述します。
これでこのメソッドが初期化処理として呼び出されます。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp();">
<mx:Script>
<![CDATA[
//アプリケーション初期化
public function initApp():void{
}
]]>
</mx:Script>
</mx:Application>
Appricationタグに「creationComplete」でメソッドを指定して
ActionScriptでメソッドを記述します。
これでこのメソッドが初期化処理として呼び出されます。
2008年12月1日月曜日
日付変換を行う
Date型から固定文字列への変換には
SimpleDateFormatを使用して以下のようにします。
また文字列で取得したデータからDate型への変換は
とします。
無論文字列のフォーマットが合ってないとダメです。
※例外を発生します。
SimpleDateFormatを使用して以下のようにします。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
String date = sdf.format(new Date());
また文字列で取得したデータからDate型への変換は
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
Date date = sdf.parse(str);
とします。
無論文字列のフォーマットが合ってないとダメです。
※例外を発生します。
マップのキー取得
STLを知らないプログラマも増えてきて
何度言ってもListとMapの違いまでしかわかってくれません。
何がListで何がArrayかもわからんのです。。。
まぁそれはさておき、良くマップのキー取得を行う際に
忘れてしまうので覚え書きしておきましょう。
何度言ってもListとMapの違いまでしかわかってくれません。
何がListで何がArrayかもわからんのです。。。
まぁそれはさておき、良くマップのキー取得を行う際に
忘れてしまうので覚え書きしておきましょう。
//HashMapオブジェクト生成
Map map = new HashMap();
//Mapにオブジェクトを追加
map.put("1","ライコネン");
map.put("2","アロンソ");
map.put("3","ミヒャエル");
map.put("4","バトン");
map.put("5","ハイドフェルド");
//「キー」の一覧をSetで取得
Set set = map.keySet();
//イテレータ取得
Iterator iterator = set.iterator();
Object object;
//データ数回取得
while(iterator.hasNext()){
object = iterator.next();
System.out.println(map.get(object));
}
Javaでグラフを表示
さて、グラフを出してみましょう。JFreeChartを使ってみます。
http://www.jfree.org/
に行ってみてください。
解凍したファイルから
を実行してみましょう。
をーかっこいいのは何個かありますね。
Gantt Chart辺りを使えばプロジェクト管理なんかもできそう!!
あちゃ。。。アボートした。。。
Barでアクセス数、 Timeで日毎アクセス数、Pieで使用OS、ブラウザ
これでアクセスログ解析ができるでしょう。
しかもこれをWebアプリ等に簡単に適用して、
サービスに展開する事も可狽ゥな。。。。
よし!!簡単なアプリケーションを作ってみましょう。
jfreechatはもちろんjcommonもクラスパスに追加しましょう。
おーこれで円グラフが書けました!!
ChartUtilities等を使えばファイルに保存もできます。
※一応言っておきますが、一部インプリメントしてません。
http://www.jfree.org/
に行ってみてください。
解凍したファイルから
java -jar jfreechart-0.9.21-demo.jar
を実行してみましょう。
をーかっこいいのは何個かありますね。
Gantt Chart辺りを使えばプロジェクト管理なんかもできそう!!
あちゃ。。。アボートした。。。
Barでアクセス数、 Timeで日毎アクセス数、Pieで使用OS、ブラウザ
これでアクセスログ解析ができるでしょう。
しかもこれをWebアプリ等に簡単に適用して、
サービスに展開する事も可狽ゥな。。。。
よし!!簡単なアプリケーションを作ってみましょう。
jfreechatはもちろんjcommonもクラスパスに追加しましょう。
public class ChartTest extends JFrame implements WindowListner
public ChartTest() throws HeadlessException {
super();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
});
JPanel pane = new JPanel(new BorderLayout());
setContentPane(pane);
JFreeChart chart = createChart();
ChartPanel cpane = new ChartPanel(chart);
pane.add(cpane);
}
private JFreeChart createChart() {
DefaultPieDataset pie = new DefaultPieDataset();
pie.setValue("FireFox",37);
pie.setValue("Opera",25);
pie.setValue("IE",21);
pie.setValue("Other",17);
JFreeChart rtnChart =
ChartFactory.createPieChart("てすとです",pie,true,true,true);
return rtnChart;
}
public static void main(String[] args) {
ChartTest chart = new ChartTest();
chart.setBounds(0,0,300,300);
chart.show();
}
}
おーこれで円グラフが書けました!!
ChartUtilities等を使えばファイルに保存もできます。
※一応言っておきますが、一部インプリメントしてません。
ログファイル出力
ログは以下のように出力できます。
とします。
これで出力指定したファイルにログファイルを出力します。
//ロガーを取得
Logger logger = Logger.getLogger("java.util.logging");
//ファイル名を指定
FileHandler fh = new FileHandler("/tmp/ziro.txt");
//出力フォーマットの設定
fh.setFormatter(new SimpleFormatter());
logger.addHandler(fh);
//出力レベルの設定
logger.setLevel(Level.INFO);
//出力
logger.log(Level.INFO,"出力します。");
とします。
これで出力指定したファイルにログファイルを出力します。
2008年11月29日土曜日
HibernateでのSQL出力設定
HibernateではSQLをトレースしてくれます。
SQLを投げてるタイミングがわかったりして
結構重宝する場合がありますが、消す場合は
hibernate.cfg.xmlファイルの「show_sql」の部分をfalseにします。
SQLを投げてるタイミングがわかったりして
結構重宝する場合がありますが、消す場合は
hibernate.cfg.xmlファイルの「show_sql」の部分をfalseにします。
<property name="show_sql">false</property>
HibernateのCriteriaでカウントなど
Hibernateをよく使いますが
CriteriaでアクセスをするとSQLを使うことはありません。
まずカウントの取得方法は
と行います。
DISTINCTは
などで行うことができます。
CriteriaでアクセスをするとSQLを使うことはありません。
まずカウントの取得方法は
criteria.setProjection(Projections.rowCount()).uniqueResult();
//もしくは
Projections.countDistinct("プロパティ");
と行います。
DISTINCTは
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
などで行うことができます。
2008年11月26日水曜日
Strutsでダウンロード
ファイルのダウンロードを方法を記述する。
これは個人的な見解なのですが
よく、以下のようなAction上での記述が見受けられます。
しかし、どうでしょうか。。。
例えば、writerに直接書き込んでるビジネスロジックの途中で、
Exceptionが起こると考えた場合、responseを記述している為、
Struts上の動作に戻ることが不可能ではないですか。。。
Strutsにおいて通常Viewで出力を行なう事を考えれば、
これはこれでおかしいのではないでしょうか?
ファイルがコピーレベルのデータだとしても、
JSP側でダウンロードを行なうのが筋のような気がしないでもないですね。
※処理最終でWriterに記述すれば障害の可能性が低くなることはわかっています。
それではJSPでダウンロードする感じを記述してみましょう!!
これは個人的な見解なのですが
よく、以下のようなAction上での記述が見受けられます。
//ダウンロード用のコンテンツタイプ設定
response.setContentType("application/octet-stream");
//ファイル名の設定(ヘッダ情報)
response.setHeader("Content-Disposition","attachment; filename=testcsv");
//各データの取得
OutputStream os = response.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, encode);
BufferedWriter writer = new BufferedWriter(osw);
しかし、どうでしょうか。。。
例えば、writerに直接書き込んでるビジネスロジックの途中で、
Exceptionが起こると考えた場合、responseを記述している為、
Struts上の動作に戻ることが不可能ではないですか。。。
Strutsにおいて通常Viewで出力を行なう事を考えれば、
これはこれでおかしいのではないでしょうか?
ファイルがコピーレベルのデータだとしても、
JSP側でダウンロードを行なうのが筋のような気がしないでもないですね。
※処理最終でWriterに記述すれば障害の可能性が低くなることはわかっています。
それではJSPでダウンロードする感じを記述してみましょう!!
2008年11月24日月曜日
Treeを展開してみる
FlexでTreeを使用していますが
初期表示でTreeを展開したいと思いました。
すべての設定終わった後に動作するcallLater()を使用するようです。
初期化系のメソッド内でこれを行い、
でそのメソッドを定義します。
これで初期化と同時にツリーが展開します。
初期表示でTreeを展開したいと思いました。
すべての設定終わった後に動作するcallLater()を使用するようです。
初期化系のメソッド内でこれを行い、
tree.dataProvider = wkXML;
//ノードを展開する
callLater(expandFirstNode);
でそのメソッドを定義します。
//ツリーを展開する
private function expandFirstNode():void
{
//ディレクトリ選択
tree.selectedIndex=0;
//ルートを展開
tree.expandItem(tree.dataProvider.getItemAt(0),true);
}
これで初期化と同時にツリーが展開します。
HSQLDBでのLimit文
DBをPostgreSQLからHSQLDBに移行することになったのですが
不覚にもPostgreSQLでLimit文を使っていました。
こりゃ、移行断念か。。。。と思いましたが
以下で指定した行数を取得できるようです。
0が開始行、10が取得行数になります。0から始まります。
行数より大きな数字等を渡してもエラーにはならないようです。
不覚にもPostgreSQLでLimit文を使っていました。
こりゃ、移行断念か。。。。と思いましたが
以下で指定した行数を取得できるようです。
SELECT LIMIT 0 10 [カラム名] FROM [テーブル名]
0が開始行、10が取得行数になります。0から始まります。
行数より大きな数字等を渡してもエラーにはならないようです。
HSQLDBのインストールと起動
Javaが存在すれば動作するDBです。
簡易的にテストしたりするには適しています。
http://hsqldb.org/
からダウンロードしてきます。
ダウンロードしたファイルを解凍して
demo/runServer.batを見ればわかりますが
で起動することが可能です。
文字列コードなどを指定する場合はJavaコマンドに
-Dsqlfile.charset=Windows-31J
などを追加します。
runManager.batでSQLを直接打つことも可能です。
起動した際に「server.properties」という記述があります。
ここにデータベース名などを記述して起動することも可能です。
起動したコンソールをCtrl+Cで閉じるとシャットダウンします。
簡易的にテストしたりするには適しています。
http://hsqldb.org/
からダウンロードしてきます。
ダウンロードしたファイルを解凍して
demo/runServer.batを見ればわかりますが
cd ..\data
@java -classpath ../lib/hsqldb.jar org.hsqldb.Server %1 %2 %3 %4 %5 %6 %7 %8 %9
で起動することが可能です。
文字列コードなどを指定する場合はJavaコマンドに
-Dsqlfile.charset=Windows-31J
などを追加します。
runManager.batでSQLを直接打つことも可能です。
起動した際に「server.properties」という記述があります。
ここにデータベース名などを記述して起動することも可能です。
起動したコンソールをCtrl+Cで閉じるとシャットダウンします。
2008年11月23日日曜日
FileReferenceのセッション継続
Flexでのアップロード、ダウンロードを行う場合
「FileReference」を使用しますが、
WebServiceなどを通じて接続されたセッション情報を継続できません。
下記行わなくてもIEでは操作できましたが、
FirefoxやCromeでは不可能でした。おそらくCookieの関係でしょうね。
私の場合はTomcat→Strutsを使用してサービスを構築していますので
ActionForm値を使用してアップロードを行います。
Session継続を行っても新しいFormのインスタンスを生成してしまいます。
なので初回インスタンスを生成した時にRequestから
の値を取得して、Flexに返します。
FlexではセッションIDを何らかの形で保存しておきます。
でFileReferenceを使用する際に使用するURLRequestが使うURLに
jsessionidとして設定してあげます。
すると同一のセッションで値をやりとりすることが可能です。
能書きから行くとおそらくログイン情報の共有等もこれでできるでしょう。
セキュリティ的にこれでよいのかは不問の方向で!
「FileReference」を使用しますが、
WebServiceなどを通じて接続されたセッション情報を継続できません。
下記行わなくてもIEでは操作できましたが、
FirefoxやCromeでは不可能でした。おそらくCookieの関係でしょうね。
私の場合はTomcat→Strutsを使用してサービスを構築していますので
ActionForm値を使用してアップロードを行います。
Session継続を行っても新しいFormのインスタンスを生成してしまいます。
なので初回インスタンスを生成した時にRequestから
request.getSession().getId()
の値を取得して、Flexに返します。
FlexではセッションIDを何らかの形で保存しておきます。
でFileReferenceを使用する際に使用するURLRequestが使うURLに
jsessionidとして設定してあげます。
var request:URLRequest = new URLRequest();
request.url = uploadUrl + ";jsessionid=" + sessionId;
reference.upload(request);
すると同一のセッションで値をやりとりすることが可能です。
能書きから行くとおそらくログイン情報の共有等もこれでできるでしょう。
セキュリティ的にこれでよいのかは不問の方向で!
2008年11月17日月曜日
Linuxで無線LAN
昔から無線環境はあったのですが、もっぱら友人の為に使っていました。
それは我がメインマシンIBM社のX40はFedoraCore2を載せている為である。。。
昔やろうと思っていたのですが、途中でおっくうになり、止めてました。
「Atheros」ですので「madwifi」でイケルらしいです。
http://sourceforge.net/projects/madwifi/
....ダウンロードはない見たいです。
よって
でOKです。
ネットワーク設定で「ath0」が出てきます。しかし設定はできません。
「/etc/sysconfig/network-scripts」
にath0の設定ファイルを作成すれば良いです。
「ifcfg-ath0」
という名称を下のように作成します。
WEPの16進数はWeb等でも公開されてますので、
変換すれば容易です。
固定IPなどで設定するには
の設定でうまく行きます。
あとは
で完了です。
起動時の読み込みもこのコマンドを呼んであげれば動作します。
最近だとインストールするだけで読み込んでますけどね。。。
それは我がメインマシンIBM社のX40はFedoraCore2を載せている為である。。。
昔やろうと思っていたのですが、途中でおっくうになり、止めてました。
「Atheros」ですので「madwifi」でイケルらしいです。
http://sourceforge.net/projects/madwifi/
....ダウンロードはない見たいです。
よって
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi
make install
でOKです。
ネットワーク設定で「ath0」が出てきます。しかし設定はできません。
「/etc/sysconfig/network-scripts」
にath0の設定ファイルを作成すれば良いです。
「ifcfg-ath0」
という名称を下のように作成します。
DEVICE=ath0
ESSID="**********"
KEY="*****WEPの16進"
BOOTPROTO=dhcp
ONBOOT=no
MODE="Managed"
WEPの16進数はWeb等でも公開されてますので、
変換すれば容易です。
固定IPなどで設定するには
BOOTPROTO=none
BROADCAST=192.168.***.255
IPADDR=192.168.***.自分
NETMASK=255.255.255.0
NETWORK=192.168.***.0
GATEWAY=192.168.***.げーとうぇいのIP
の設定でうまく行きます。
あとは
ifup ath0
で完了です。
起動時の読み込みもこのコマンドを呼んであげれば動作します。
最近だとインストールするだけで読み込んでますけどね。。。
LinuxでのIPTable
IPTableの設定方法
ipchainsとは同時起動できないそうです。
これで起動します。
ストップします。
(その他製品等の接続の不正原因等を
手っ取り早く確認する場合やってみてください)
さて、肝心の設定ですが、、、読んでると眠くなるくらい奥が深いです。。。
だもんで、sshでの接続を許すような場合、
と行います。
で、設定をセーブする事が可能です。
これで再起動すれば、、、ばっちり!!
ipchainsとは同時起動できないそうです。
/etc/init.d/iptables start
これで起動します。
/etc/init.d/iptables stop
ストップします。
(その他製品等の接続の不正原因等を
手っ取り早く確認する場合やってみてください)
さて、肝心の設定ですが、、、読んでると眠くなるくらい奥が深いです。。。
だもんで、sshでの接続を許すような場合、
/sbin/iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
と行います。
/etc/init.d/iptables save
で、設定をセーブする事が可能です。
これで再起動すれば、、、ばっちり!!
LinuxでのTELNET設定
「/etc/xinetd.d/telnet」を編集します。
「disable = yes」→「disable = no」
に変更します。
変更後は
を行い、サービスを再起動します。
IPTable等やネットワークの設定で見えない状況もあります。ご注意を。
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
「disable = yes」→「disable = no」
に変更します。
変更後は
/etc/rc.d/init.d/xinetd restart
を行い、サービスを再起動します。
IPTable等やネットワークの設定で見えない状況もあります。ご注意を。
LinuxのNFS設定
LinuxにおけるNFSの構築をやりましょう。
NFSはネットワーク上で他の端末のディスクを共有する仕組みです。
これにより、あたかも物理ディスクのように使用する事ができます。
例えばDBを構築して、データファイルは別のRAIDに組んだり、
開発環境を同期化させたりすることができます。
私の場合は
サーバは玄人指向の「KUROーBOX HG」、
ファームバージョンは1.1です。
※OS、カーネルはメーカへ
クライアントはFedoraCore2を搭載したノートパソコンです。
サーバの設定
まずはインストールが必要です。最近のディストリビューションだったら
初めから入っていて「/etc/exports」の作成、追加だけでできるようです。
玄箱はそうはいきません。
まず、添付のCDROMからbinaryから
nfs.tar.gz
portmap-5beta.tar.gz
を持ってきて、これらをROOTで展開を行います。
/usr /etc /sbin 辺りに展開されます。
そして以下を実行します。
「/etc/rc.d/rc2.d/」にて
「/etc/rc.d/rc0.d」にて
「/etc/rc.d/rc6.d/」にて
を行います。
その後、「/etc/exports」を編集します。
「物理ディスク名 クライアントIPやドメイン(接続指定)」のレコードを追加します。
例えば、
とします。
サブネットマスクでの指定も実現できます。
無論、IPTable等と併用して、安全にしてください。
再起動しましょう。
クライアントの設定
さて、こちらの設定はより簡単です。
まずはサーバの確認
これでNFSアクセス指定ができます。
出力されない場合は設定にミスがあるか、NFSが起動してないか
ネットワークコネクトに問題がある可能性があります。
としてマウントします。
これでOKです!!
※Fedora2はこれじゃダメですだ!!
おそらく「mount to NFS server サーバ名 failed: server is down.」
と表示されてしまいます。NFSバージョン3で接続している見たいです。
「/etc/fstab」を編集し、
を追加して、「mount /mnt/nfs」としてみてください。
Fedoraでない人でもfstabに
以上のように記述しておくと、
起動時にローカルのように使用する事が可能になります。
NFSはネットワーク上で他の端末のディスクを共有する仕組みです。
これにより、あたかも物理ディスクのように使用する事ができます。
例えばDBを構築して、データファイルは別のRAIDに組んだり、
開発環境を同期化させたりすることができます。
私の場合は
サーバは玄人指向の「KUROーBOX HG」、
ファームバージョンは1.1です。
※OS、カーネルはメーカへ
クライアントはFedoraCore2を搭載したノートパソコンです。
サーバの設定
まずはインストールが必要です。最近のディストリビューションだったら
初めから入っていて「/etc/exports」の作成、追加だけでできるようです。
玄箱はそうはいきません。
まず、添付のCDROMからbinaryから
nfs.tar.gz
portmap-5beta.tar.gz
を持ってきて、これらをROOTで展開を行います。
/usr /etc /sbin 辺りに展開されます。
そして以下を実行します。
「/etc/rc.d/rc2.d/」にて
ln -s ../init.d/portmap S31portmap
ln -s ../init.d/nfs-common S32nfs-common
ln -s ../init.d/nfs-user-server S32nfs-user-server
「/etc/rc.d/rc0.d」にて
ln -s ../init.d/portmap K31portmap
ln -s ../init.d/nfs-common K32nfs-common
ln -s ../init.d/nfs-user-server K32nfs-user-server
「/etc/rc.d/rc6.d/」にて
ln -s ../init.d/portmap K31portmap
ln -s ../init.d/nfs-common K32nfs-common
ln -s ../init.d/nfs-user-server K32nfs-user-server
を行います。
その後、「/etc/exports」を編集します。
「物理ディスク名 クライアントIPやドメイン(接続指定)」のレコードを追加します。
例えば、
/mnt/share 192.168.0.3(rw,no_root_squash)
とします。
サブネットマスクでの指定も実現できます。
無論、IPTable等と併用して、安全にしてください。
再起動しましょう。
クライアントの設定
さて、こちらの設定はより簡単です。
まずはサーバの確認
/usr/sbin/showmount -e 接続サーバ名
これでNFSアクセス指定ができます。
出力されない場合は設定にミスがあるか、NFSが起動してないか
ネットワークコネクトに問題がある可能性があります。
mount -t nfs サーバ名:/mnt/share /mnt/nfs
としてマウントします。
これでOKです!!
※Fedora2はこれじゃダメですだ!!
おそらく「mount to NFS server サーバ名 failed: server is down.」
と表示されてしまいます。NFSバージョン3で接続している見たいです。
「/etc/fstab」を編集し、
サーバ名:/mnt/share /mnt/nfs nfs auto,nfsvers=2 0 0
を追加して、「mount /mnt/nfs」としてみてください。
Fedoraでない人でもfstabに
サーバ名:/mnt/share /mnt/nfs auto 0 0
以上のように記述しておくと、
起動時にローカルのように使用する事が可能になります。
Linuxのインストール
IBM X40にFedora Core2をインストールしてみます。
あらかじめ、ブートできるCD-ROMを持っていることを前提にします。
さて、まずimgファイルを入手する必要があります。
http://download.fedora.redhat.com/pub/fedora/linux/core/2/i386/iso/
ここからdisc1-4を入手します。
これらをCD-Rに焼くのですが、気をつけなければいけないのが
「WindowsXPのデフォルト機狽ナ焼いたらブートできない」点です。
そこで、「Image Recoder」
http://download.fedora.redhat.com/pub/fedora/linux/core/2/i386/iso/
を使用します。(各種ベンダが出しているライティングャtトでも可狽ナす)
インストールしてもうんともすんとも言いませんが、完了しています。
*.imgのファイルで右クリックすると「Imageなんたらー」と出ます。
そうしたら、CD-Rのドライブを指定する。それだけでOKです。
これでインストールCD×4は完成します。
あとはブートすればOK!!(F12でブートリストが出ます)
それにCD-ROMが認識されないようだったら、FDDでブートして
CD-ROMを読み込ませたりとちーと難しい世界に入ります。
後はインストーラーにそって設定!!
情報は以下のとおり
http://www.fedora.redhat.com/:本家
http://fedora.jp/:(http://fedora.jp/wiki/ こっちの方が盛んみたい。)
http://linux2ch.bbzone.net/index.php
あらかじめ、ブートできるCD-ROMを持っていることを前提にします。
さて、まずimgファイルを入手する必要があります。
http://download.fedora.redhat.com/pub/fedora/linux/core/2/i386/iso/
ここからdisc1-4を入手します。
これらをCD-Rに焼くのですが、気をつけなければいけないのが
「WindowsXPのデフォルト機狽ナ焼いたらブートできない」点です。
そこで、「Image Recoder」
http://download.fedora.redhat.com/pub/fedora/linux/core/2/i386/iso/
を使用します。(各種ベンダが出しているライティングャtトでも可狽ナす)
インストールしてもうんともすんとも言いませんが、完了しています。
*.imgのファイルで右クリックすると「Imageなんたらー」と出ます。
そうしたら、CD-Rのドライブを指定する。それだけでOKです。
これでインストールCD×4は完成します。
あとはブートすればOK!!(F12でブートリストが出ます)
それにCD-ROMが認識されないようだったら、FDDでブートして
CD-ROMを読み込ませたりとちーと難しい世界に入ります。
後はインストーラーにそって設定!!
情報は以下のとおり
http://www.fedora.redhat.com/:本家
http://fedora.jp/:(http://fedora.jp/wiki/ こっちの方が盛んみたい。)
http://linux2ch.bbzone.net/index.php
Linuxで起動と同時にサービス実行
Apache、Tomcat、PostgresSQL等をインストールした後、
起動時に自動的に実行したい場合、以下の手順で登録を行います。
1.「/etc/rc.d/init.d」 にスクリプトを作成
2.起動ランレベルに対してシンボリックリンクを唐!)
まずは1でデーモンを起動、終了、再起動、ステータス侮ヲを
行う事のできる共通的なシェルを作ります。
同一のディレクトリにあるものを参考に
start,stopのシェルを書きましょう。
(VI等でデーモンを開いて見てみましょう)
その後はランレベルに合わせたディレクトリに
シンボリックリンクを作成していきます。
ランレベルは「rc?.d」の?部分になります。
GUI起動だったら5、コンメ[ルなら3等、最悪すべてを
作っても良いと思います。
私の開発環境はGUIですので5にします。
逆に公開サーバ等は3に設定しておきます。
「rc5.d」にて
「ln -s ../init.d/作成したシェル S??作成したシェル」を実行します。
??は起動順序になります。
ネットワーク起動がまだの状態での
ネットワーク関係の起動を行いたくない等他のサービスと
関係がでて来る場合は意識が必要になります。
後は再起動等して確認しましょう。
でも可能みたいです。
起動時に自動的に実行したい場合、以下の手順で登録を行います。
1.「/etc/rc.d/init.d」 にスクリプトを作成
2.起動ランレベルに対してシンボリックリンクを唐!)
まずは1でデーモンを起動、終了、再起動、ステータス侮ヲを
行う事のできる共通的なシェルを作ります。
同一のディレクトリにあるものを参考に
start,stopのシェルを書きましょう。
(VI等でデーモンを開いて見てみましょう)
その後はランレベルに合わせたディレクトリに
シンボリックリンクを作成していきます。
ランレベルは「rc?.d」の?部分になります。
GUI起動だったら5、コンメ[ルなら3等、最悪すべてを
作っても良いと思います。
私の開発環境はGUIですので5にします。
逆に公開サーバ等は3に設定しておきます。
「rc5.d」にて
「ln -s ../init.d/作成したシェル S??作成したシェル」を実行します。
??は起動順序になります。
ネットワーク起動がまだの状態での
ネットワーク関係の起動を行いたくない等他のサービスと
関係がでて来る場合は意識が必要になります。
後は再起動等して確認しましょう。
/sbin/chkconfig vsftpd on
でも可能みたいです。
Linuxでのフラッシュメモリ読み込み
Linuxでフラッシュメモリを読み込むなんてできるの?って思ってたら結構簡単にできるものです。
USBに指してみると、、、、あら!?LEDが光ってくれます。つうことは後はmountするだけ!!
完璧!!
だけど、、、、日本語のディレクトリが文字化けする場合があります。
※私はFedoraCore2だもんで化けました!!
だけど、UTF-8だから大丈夫のはず!!
んーと。。。。。マウントしているのは。。。
。。。。
。。。。
NFSを建てた時に見たファイル辺りに設定すれば良いのではないかと考えてみる。。。
/etc/fstab
ファイルシステムだからきっとそうだ!!
今までの経験で行けば、、キャラセットさえ設定すれば良いはず!!
んでumountして、、、
デバイスが使用中!!
使ってないのに!!
なんでこんな事を文句言うのかな。。。としばし考えてみる。。。。。。。。
かれこれ5秒位たった後、、、、
あっ!!ディレクトリに入りっぱなし!!
おもむろに
これでOK!!
でもう一回マウントすると、日本語が表示されました。
きっと他のLinuxでもこれでいけるはず!!
※無論キャラコードは違うんでしょうけど。
USBに指してみると、、、、あら!?LEDが光ってくれます。つうことは後はmountするだけ!!
mkdir /mnt/usbmem
mount -t vfat /dev/sda1 /mnt/usbmem/
cd /mnt/usbmem/
ls -ltr
完璧!!
だけど、、、、日本語のディレクトリが文字化けする場合があります。
※私はFedoraCore2だもんで化けました!!
だけど、UTF-8だから大丈夫のはず!!
んーと。。。。。マウントしているのは。。。
。。。。
。。。。
NFSを建てた時に見たファイル辺りに設定すれば良いのではないかと考えてみる。。。
/etc/fstab
ファイルシステムだからきっとそうだ!!
/dev/sda1 /mnt/usbmem/ auto noauto,user,iocharset=utf8 0 0
今までの経験で行けば、、キャラセットさえ設定すれば良いはず!!
んでumountして、、、
デバイスが使用中!!
使ってないのに!!
なんでこんな事を文句言うのかな。。。としばし考えてみる。。。。。。。。
かれこれ5秒位たった後、、、、
あっ!!ディレクトリに入りっぱなし!!
おもむろに
cd /tmp
umount /mnt/usbmem
これでOK!!
でもう一回マウントすると、日本語が表示されました。
きっと他のLinuxでもこれでいけるはず!!
※無論キャラコードは違うんでしょうけど。
Linuxのアンチウィルスソフト
LinuxのアンチウィルスにはBitDefenderというソフトを使っています。
http://www.bitdefender.com/
単独のRPM配布ありで簡単に導入が可能です。
ダウンロード後は権限のあるユーザで
等とやるとチェックを行う事ができます。
プロキシサーバを使用している場合には
があるので、ファイルに
を追加します。そうすると、
で定義の更新を行います。
http://www.bitdefender.com/
単独のRPM配布ありで簡単に導入が可能です。
ダウンロード後は権限のあるユーザで
bdc --files /*
等とやるとチェックを行う事ができます。
プロキシサーバを使用している場合には
/opt/bdc/bdc.ini
があるので、ファイルに
HttpProxy = サーバのアドレス:ポート番号
を追加します。そうすると、
bdc --update
で定義の更新を行います。
2008年11月16日日曜日
Linuxのハードディスク増設
外付けHDDを購入しました。
ベアボーンなのでHDDも別購入となりました。
mountしましたがもちろんうまくいきません。
おなじみのパーティション作成と
ファイルシステムのフォーマットが必要ですね。
これで別のコンソールが立ち上がります。
「n」でパーティションを作成して、
「w」で書き込みます。
まぁ「t」でIDを変更したり、色々できますね。
何より書き込まないと変更できないのがエライ!!
ext3はFAT32ですね。
ext2でもOKだったのですが、現在使っているNASが
FAT32なのでext3を指定しました。
これで可能ですね。
ベアボーンなのでHDDも別購入となりました。
mountしましたがもちろんうまくいきません。
おなじみのパーティション作成と
ファイルシステムのフォーマットが必要ですね。
/sbin/fdisk /dev/sdb
これで別のコンソールが立ち上がります。
「n」でパーティションを作成して、
「w」で書き込みます。
まぁ「t」でIDを変更したり、色々できますね。
何より書き込まないと変更できないのがエライ!!
/sbin/mkfs -t ext3 /dev/sdb1
ext3はFAT32ですね。
ext2でもOKだったのですが、現在使っているNASが
FAT32なのでext3を指定しました。
mount -t ext3 /dev/sdb1 /mnt/hdd
これで可能ですね。
2008年9月15日月曜日
Treeコンポーネントのアイコンを変更
Tree表示のアイコンの表示を変更してみました。
defaultLeafIconの部分は「ファイル」表示されるアイコンですね。
デフォルトのアイコンに変更したかったんで若干苦労していました。
Assets.swfから抜き出すように記述するんですね。
ディレクトリのみ表示みたいなときに役立つかと。
<mx:tree change="treeChange(event);"
labelField="@name"
defaultLeafIcon="@Embed(source='Assets.swf', symbol='TreeFolderClosed')"/>
defaultLeafIconの部分は「ファイル」表示されるアイコンですね。
デフォルトのアイコンに変更したかったんで若干苦労していました。
Assets.swfから抜き出すように記述するんですね。
ディレクトリのみ表示みたいなときに役立つかと。
2008年8月13日水曜日
2008年7月5日土曜日
2008年6月21日土曜日
まずはネットワークって。。。
さて、ネットワークツールをつくろうと思い立ちましたが
まずもって自分のIPさえもわからない。。。
CFNetworkっていうツールを見つけたが
まずもって開発形態さえもわかってない。
まずはボタンをアプリケーションに配置してみよう。
Navigation、OpenGL、TabBar、Utility、ViewBased、WindowBased
ってアプリケーションがありますね。
わかんないからWindowで作って見ましょう。
シミュレーターを実行するとタダのWindowが出て終了ですね。
main.mにアプリケーション開始のプログラムが記述してあります。
おそらく起動時に動作する箇所ですね。
その後に「プロジェクト名+AppDelegate.m」っていうファイルの
applicationDidFinishLaunching:applicationが動作するみたいですね。
何か気の遠くなる作業に思えてきた。
まずもって自分のIPさえもわからない。。。
CFNetworkっていうツールを見つけたが
まずもって開発形態さえもわかってない。
まずはボタンをアプリケーションに配置してみよう。
Navigation、OpenGL、TabBar、Utility、ViewBased、WindowBased
ってアプリケーションがありますね。
わかんないからWindowで作って見ましょう。
シミュレーターを実行するとタダのWindowが出て終了ですね。
main.mにアプリケーション開始のプログラムが記述してあります。
おそらく起動時に動作する箇所ですね。
その後に「プロジェクト名+AppDelegate.m」っていうファイルの
applicationDidFinishLaunching:applicationが動作するみたいですね。
何か気の遠くなる作業に思えてきた。
2008年6月17日火曜日
2008年6月14日土曜日
冷静に考えれば。。。
Mac自体社会人になって始めて仕事した時の
端末がMacだった位で触った事さえない。。。
インストールは終了したがひとまずどこから起動するかさえわからない。。。
一応再起動を試みる。
何やらMacのバージョンがあやしい。。。
端末がMacだった位で触った事さえない。。。
インストールは終了したがひとまずどこから起動するかさえわからない。。。
一応再起動を試みる。
何やらMacのバージョンがあやしい。。。
iPhoneSDKをインストールしてみる
iPhoneでの開発を行ってみたいと思います。
さぁまずはインストールです。
インストールするにもMacでの開発のみらしく、
まずは友人にMacを借りてインストールを開始しました。
さぁまずはインストールです。
インストールするにもMacでの開発のみらしく、
まずは友人にMacを借りてインストールを開始しました。
登録:
投稿 (Atom)