カテゴリー: プログラミング

Python版 逆ピラミッドを作る

投稿者:isc_blog

前回のブログでPythonに手をつけてしまったので
とりあえず
先日、Javaで作った「逆ピラミッド」を「Python」でやってみます。

※Pythonのインストール・eclipseの設定については前回のブログ
 「Pythonをはじめてみる」で詳しく書いてます。ご参考にどうぞ。

以下、[Pyramid.py]で保存します。
[python]
”’
Pyramid
@author: tsato
”’

i = 10
for j in range(i):
    print ("*" * (i-j))
print("\n")
[/python]
※きちんとインデントしないといけません!

Pythonのパスを通します。(パスは前回の内容通りです。)
コマンドプロンプトで
set path=%path%;C:\dev\python32
とやってから
「Pyramid.py」を保存したディレクトリに移動し

python Pyramid.py として実行します。

実行結果・・・・


**********
*********
********
*******
******
*****
****
***
**
*


コード自体は Javaより短いっ

2011年5月1日

Pythonをはじめてみる

投稿者:isc_blog

前からやってみたかった言語「Python」について「日経ソフトウェア」に記事があったので簡単なところから手をつけてみようと思いました。
どうせなら記事にしてわかりやすくしとこうかな・・・という感じで書いてみます。

 「Pythonとは」
「Python は Guido van Rossum 氏による、フリーなオブジェクト指向プログラミング言語です。」※「Python Japan User’s Group」サイトより引用

ん!?「Java」を習得している私からすると「じゃあ、Javaと同じかな」と思うのですが、「Python」はインタプリタ型、「Java」はコンパイラ型という違いがあるようです。
※インタプリタ型はプログラムを作成したまま実行出来るもの、コンパイラ型はマシン語(または中間言語)にコンパイルしたあと実行出来るもの・・・です。

ただし、やはり実行速度については「コンパイラ型」の「Java」に軍配が上がります。
※参考資料 Ruby,Python,Javaの実行速度比較

データベース操作、Webプログラミング、デスクトップUIを構築するためのライブラリ・モジュールも存在する(※日経ソフトウェアから引用)らしいので楽しそう~♪

というわけで、とにかくはじめたがりな私は前置きもテキトーに行動に移します。

 「インストール」

「Python Japan User’s Group」サイトのメニュー>コンテンツ>ダウンロードをクリックして「Python標準リリース」リンクをクリック。
すると「ダウンロードページ」に遷移し「最新バージョン」以下に「Python2.7.1」と「Python3.2」が存在します。
「日経ソフトウェア」では「2.7.1」をダウンロードしていますがここではあえて「3.2」をダウンロードしてみます。

python01

Python Japan User's Group


※自分の環境に合う物をダウンロードします。
ダウンロードが完了したら実行します。


python02

Pythonインストール


どんどんインストールしていきます!
※画面はWindows64ビット版です。


python03

Pythonインストール・・・


インストールするディレクトリ設定。
※ここでは「C:\dev\Python32\」にインストールします。


python04

Pythonインストール・・・・




とにかく「Next >」の嵐!



あとは待つだけ!



完了!


 Eclipseの設定

Help > Install New Software… クリック。※日本語版の方は読み替えてください。



Add…ボタンをクリックし出てきた「Add Repository」に
Name: Pydev
Location: http://pydev.org/updates/
と入力し「OK」を押します。


しばらく待つと・・・





インストールするものを聞いてくるのでとにかく全部チェック(※PyDevだけでいいと思いますが・・・)して「Next >」を押します。



こんな確認画面が出てくるので「Next >」を押します。



この画面では「I accept the terms of the license agreements」をチェックして
「Finish」を押します。(※acceptしないと「Finish」が有効になりません。)



あとは待つのみ・・・・



で「Restart Now」押して再起動!

「Python」と「PyDev」両方インストール完了後、eclipse上で
「Python」の設定を行います。
Window→References  をひらいて

「Python Interpreters」の「New…」をクリック





表示された「Select Interpreter」に
Interpreter Name: Python3.2
Interpreter Executable: C:\dev\Python32\python.exe
※インストール場所に読み替えてください。
設定し「OK」ボタンを押す。



こんな画面が現れるのでデフォルトのまま「OK」ボタン押す。



こんな感じでいいのかな・・・と思いつつ「OK」ボタン押下。


 Pythonプロジェクトの作成
「File」→「New」→「Project…」選択

「New Project」のSelect a wizardで「Pydev Project」選択し「Next >」ボタン押下





プロジェクトの設定でいろいろ入力
Project Name: PyTest (※テキトーにどうぞ)
Project Contents: ※自分のすきなところ
Project Type: Python
Grammer Version: 3.0
Interpreter: Python3.2
Create default ‘src’ folder and add it to the pythonpath?: チェック
ここまで設定したら
「Finish」を押す。
※パースペクティブをどうのこうの言われるので言われるがまま「OK」押す。



「PyTest」プロジェクトが出来たので
‘src’を右クリックしてパイソンプログラムを書きましょう!



New → Pydev Module 選択



とりあえずNameだけ「test」変更して「Finish」押す。





「test.py」が作成されるので内容を変更し保存します。


”’
test.py
”’
print(“Hello Python!”)





「test.py」を右クリックして
「Run As」→「Python Run」を選択。


Console に「Hello Python!」と表示されて完了!

今回はここまでにしとうございます。

2011年5月1日

Java で逆ピラミッドを作る

投稿者:isc_blog

Java で逆ピラミッドを作る

Yahoo!知恵袋で回答したものをこちらにも・・・
なにかの宿題なのかな・・・

以下、[Pyramid.java]で保存してください。
———————————–
public class Pyramid{
public static void main(String[] args){
// ピラミッド階数
int i = 10;
for(int j = 0; j <= i; j++){ for (int k = i - j; k > 0; k–) {
System.out.print(“*”);
}
System.out.println();
}
}
}
——————————

コマンドプロンプトでファイルを保存したディレクトリに移動して
javac Pyramid.java
※JAVA_HOMEパス及びクラスパスを通してある前提です。

java Pyramid
で実行・・・

—–
実行後

**********
*********
********
*******
******
*****
****
***
**
*

こんな感じ。

2011年4月30日

Excel VBA グラフのデータソース範囲を取得・変更

投稿者:isc_blog

ActiveChart.SeriesCollection(1).Formula

(解説)

ActiveChart = 現在、選択しているグラフ

SeriesCollection(1) = グラフの線((1)なので1本目)

Formula=「シート名」!「セル範囲」

Formulaプロパティがなかなか見つからなくて苦労しました。

先人達とgoogle先生に感謝です。

これで、現在のデータソース範囲が参照できます。

シート名が取れないと、元データとグラフオブジェクトが別シートに分かれている場合に対応できないんですよ。。

それでこのプロパティの値が必要だったんです。

なお、グラフの線が1本ごとに離れた列を参照しているようなグラフではなくて、$A$1:$F$100のように固まっていれば、VBAを使用しなくても、名前定義とCounta関数の組み合わせで行けるようです。

これだけだと実用的では無いので、ちょっとアドインを作ってみました。

検証用サンプルExcel&アドイン

アドインは直接開いても構いませんが、ずっと使う場合はデフォルトのフォルダにコピーする方が分かりやすいと思います。

1.C:\Documents and Settings\%ユーザ名%\Application Data\Microsoft\AddIns

にコピー

2.ツール(T)→アドイン(I)→有効なアドイン(A)に表示されているはずなので、チェックを入れる。これで、次からはExcelを開くとアドインが有効になります。使わなくなった場合はチェックを外してください。

2011年4月27日

強烈!JavascriptDBでDBなしでも簡単に抽出させる!

投稿者:isc_blog

AJAX+JavascriptDBで簡易CSVデータベース利用のWebサンプルを参考に・・・

豊島区の賃貸物件情報 を作ってみました。

以前書いたように「csv」データだけ別途吐き出す仕組みさえ作ってしまえば

簡易に検索させるサイトは出来てしまいますね!


一応リレーショナルデータベースを意識して

物件テーブルと路線テーブルと駅テーブルそして
部屋数、構造、種別をマスタテーブルにして6テーブルに分けてみました。

「SELECT LINE_TBL.line_nm,STATION_TBL.station_nm,BUKKEN_TBL.toho,BUKKEN_TBL.bus,BUKKEN_TBL.menseki,ROOM_TBL.room_nm,BUKKEN_TBL.floor,BUKKEN_TBL.chikunen,BUKKEN_TBL.houi,BUKKEN_TBL.price,BUKKEN_TBL.kanrihi,BUKKEN_TBL.shikikin,BUKKEN_TBL.reikin,BUKKEN_TBL.syokyaku,TYPE_TBL.type_nm,KOZO_TBL.kozo_nm FROM BUKKEN_TBL INNER JOIN LINE_TBL on BUKKEN_TBL.line_id = LINE_TBL.id INNER JOIN STATION_TBL on BUKKEN_TBL.station_id = STATION_TBL.id INNER JOIN ROOM_TBL on BUKKEN_TBL.room = ROOM_TBL.id INNER JOIN TYPE_TBL on BUKKEN_TBL.type = TYPE_TBL.id INNER JOIN KOZO_TBL on BUKKEN_TBL.kozo = KOZO_TBL.id WHERE true AND LINE_TBL.id = “3”」

※一行で書かないといけないのがミソです。
こんなSQLが書けちゃうなんてステキです!

※昨日、「アシアル株式会社」主催のAndroid/iPhoneアプリ制作セミナーに行ってきました!アンドロイド開発したいっす!

2011年4月27日

javaで未来を感じるSWT画面を速攻作るだけのクラス

投稿者:isc_blog

まずは、SWTライブラリを取得します。

SWT は以下のサイトからダウンロードできます。

Eclipse.org
http://www.eclipse.org/

そして Eclipse上で動作する前提で・・・

↑のようにビルド・パスを設定してください。

 

その後

以下をコピペして「SWTWindow.java」というファイル名にしてください。

[java]
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;

public class SWTWindow {

// シェル
private Shell sShell = null;

// ボタン
private Button button = null;

// タイトル
private static final String title = &quot;SWT Window&quot;;

/**
* ウィンドウオープン
* @param args
*/
public static void main(String[] args) {
// ディスプレイ設定
Display display = Display.getDefault();
// static なメソッドから呼ぶために自クラスをインスタンス化
SWTWindow thisClass = new SWTWindow();
// シェル作成
thisClass.createSShell();
// シェルオープン
thisClass.sShell.open();
// シェルが生存している間待つよ
while (!thisClass.sShell.isDisposed()) {
//
if (!display.readAndDispatch())
// ディスプレイスリープ
display.sleep();
}
display.dispose();
}

/**
* シェル作成
*/
private void createSShell() {
// シェルインスタンス生成
sShell = new Shell();
// レイアウト=グリッドレイアウト設定
GridLayout gridLayout = new GridLayout();
// グリッドデータインスタンス生成
GridData gridData = new GridData();
// シェルにタイトル設定
sShell.setText(title);
// シェルにレイアウト設定
sShell.setLayout(gridLayout);
// ボタンインスタンス生成
button = new Button(sShell, SWT.NONE);
// ボタンのキャプションを「Close」に設定
button.setText(&quot;Close&quot;);
// ボタンをグリッドデータに設定
button.setLayoutData(gridData);
// シェルの画面サイズを 500px×500px に設定
sShell.setSize(new Point(500, 500));
// ボタンにリスナー設定
button.addSelectionListener(new SelectionAdapter() {
// 選択された際のイベント
public void widgetSelected(SelectionEvent e) {
doExit();
}
});
// シェルにリスナー設定
sShell.addShellListener(new ShellAdapter() {
// 閉じられたときのイベント
public void shellClosed(ShellEvent e) {
}
});
}

// ウィンドウ閉じるメソッド
private boolean doExit() {
// メッセージボックス
MessageBox mb = new MessageBox(sShell, SWT.ICON_QUESTION | SWT.YES
| SWT.NO);
// メッセージボックスのタイトル
mb.setText(&quot;Closing OK?&quot;);
// メッセージボックスに表示されるメッセージ
mb.setMessage(&quot;閉じますよ。OKですかいな?&quot;);
// メッセージボックスオープン
int state = mb.open();
// メッセージボックスで「OK」以外押しても無反応
if (state != SWT.YES) {
return false;
}
// シェル閉じる
sShell.close();
// シェル開放(明示的にやる必要がある)
sShell.dispose();
// 処理終了
return true;
}
}
[/java]

で、実行すると未来を感じるウィンドウが表示されます。

表示されておしまいです。

2011年4月26日

Excel VBA 最後の行列を取得

投稿者:isc_blog

ループさせたいが、最終行や最終列が動的に変わってしまう場合の取得方法

・最終行

cells(rows.count,1).end(xlUp).Row

(解説)

1列目(A列)を基準にして、65536行からキーボード操作のCtrl+↑した行を取得します。

rows.countやcolumns.countとすることでExcel2007以降のように100万行×1万6千列あっても動きます。

(注意)

途中で空欄があるとそこで止まってしまいますので、1つのシートに複数の表を入れているようであれば注意が必要です。

・同様に最終列の取得方法

cells(1,columns.count).end(xltoLeft).Column

2011年4月25日

Ajax+CSS+PHPチュートリアルがいっぱいあるサイト

投稿者:isc_blog

新たにプログラミング言語を習得する際、チュートリアル的なものがあると助かりますよね。
そこで今まさにWEB系アプリケーションで使われまくっているもの
「Ajax + CSS + PHP」のチュートリアルがいっぱい詰まっているサイトを発見したのでご紹介。
※英語サイトです。が・・・デモとソースを見ればなんとなくわかります。
Smashing Magazineというサイトの下記コンテンツです。
Tutorials Round-Up: Ajax, CSS, PHP and More

PHPという割にはたま~にjava Servlet/JSP も混じっています。ご愛嬌ですかね。

2011年4月24日