Translate

2011年10月10日月曜日

めも。

ma-yan% file /usr/bin/perl5.12
/usr/bin/perl5.12: Mach-O universal binary with 2 architectures
/usr/bin/perl5.12 (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/perl5.12 (for architecture i386): Mach-O executable i386

起動時(32|64)ビットを指定
sudo systemsetup -setkernelbootarchitecture (i386|x86_64)

2011年9月18日日曜日

めもめも。

入れてみた
OS ubuntu 10.04

perlbrewダウンロード
# wget http://xrl.us/perlbrew

実行権限付与
# chmod +x perlbrew

初期化
# ~/perlbrew/bin/perlbrew init

自分は、zshなので.zshrに
source $HOME/perl5/perlbrew/etc/bashrc
を追記

再読み込みさせる
# source ~/.zshrc

以上。
あとは、
# perlbrew install perl-5.14.0
のように指定してインストール。

tail -f ~/perl5/perlbrew/build.log
で停止したように見えるけど30分?60分?とにかく気長にまつとインストール完了。
インストール完了したら下記メッセージが表示される。

Installed /home/maeyan/perl5/perlbrew/build/perl-5.14.0 as perl-5.14.0 successfully. Run the following command to switch to it.

perlbrew switch perl-5.14.0


あとは、
# perlbrew switch perl-5.14.0
で切り替える。

インストールしたperl一覧は
# perlbrew list で確認できる。

2011年9月5日月曜日

mysqlとらぶる

max OS X 10.5x→10.7xにアップグレードを済ませて
MySQLを動かそうと思ったら動かない。
なんでかな??
と、悩んでバージョンアップもしておきたかったので
まず先にバージョンアップをしてみた。

10.6用の64ビット用dmgをダウンロード
さっそく実行
mysql-5.5.15--osx10.6-x86_64.pkg
で、起動時自動実行してもらうために
MySQLStartupItem.pkg
も実行。
そして、MySQL.prefPane
も一応実行。
システム環境設定にあるMySQLの項目ですね。


システム環境設定にあるMySQLのパネルから
実行してみたのですが何の音沙汰もなくstopのまま。

次に、コマンドから実行してみる。
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

これもだめ。
たまたまある不具合を見ていたら
上記で行っているのは、
sudo /usr/local/mysql/support-files/mysql.server start
と、同義なのでこれを実行してみる。
あいかわらずだめ。

ERROR! The server quit without updating PID file
とかで叱られる。
これについてネットで調べると
/etc/my.cnf
に問題あるんじゃん。
ってことになって、
自分の場合↓を削除したら解決できました。
default-character-set = utf8


後は、コマンでrootのパスを指定して
つかっておりまする。
mysqladmin -u root -h localhost password "好きなぱすわーど"

2011年8月21日日曜日

更新とかのめも

■ドメインの有効期限を変更(延長)
⇒VALUE-DOMAIN.COMにアクセスする
https://www.value-domain.com/login.php
⇒メニューの「有効期限確認/更新・延長」を選択
⇒期限を変更したドメインを選択
⇒変更ボタンをクリック
⇒年数を選んで更新。

■サーバーの有効期限を変更(延長)

⇒VALUE-DOMAIN.COMにアクセスする
https://www.value-domain.com/login.php
⇒メニューの「サーバーアカウントの登録・管理・購入」を選択
⇒期限を変更したサーバーの購入をクリック
⇒料金を選んで購入。



2011年7月1日金曜日

てすと

Option Explicit
On Error Resume Next
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

Dim LockDirectoryPath, LogFilePath
LockDirectoryPath = FSO.GetAbsolutePathName("lock")
LogFilePath       = FSO.GetAbsolutePathName("log.txt")

'ロックファイル作成
Do
    FSO.CreateFolder(LockDirectoryPath)
    if Err.Number = 0 then Exit Do
    Err.Clear
Loop


'書き込むファイルを作成
if Not FSO.FileExists(LogFilePath) Then
    Do
        Err.Clear
        FSO.CreateTextFile(LogFilePath)
        if Err.Number = 0 then Exit Do
    Loop
    
End If

'ファイルから1行読み取る
Dim File, OneLine
Err.Clear
Set File = FSO.OpenTextFile(LogFilePath, 2, True)
If Err.Number = 0 then
    OneLine = File.ReadLine
    
    if OneLine = "" then
        OneLine = 0
    Else
        OneLine = OneLine + 1
    End If
    
    Err.Clear
    File.Write(OneLine)
    If Err.Number = 0 Then msgbox "書き込みエラー"
    File.Close
End If



Set File = Nothing
Set FSO  = Nothing
On Error Goto 0
msgbox "終了"
単なるめも。後で修正が必要

2011年6月29日水曜日

ExcelVBAかなりざっくりしためも

モジュール、ブック、シートをを全て表示する
Sub SampleCode1() '
    Dim VBComponent As Variant
    For Each VBComponent In ThisWorkbook.VBProject.VBComponents
        Debug.Print VBComponent.CodeModule
        Debug.Print VBComponent.Type
    Next
End Sub
type
1→標準モジュール
2→クラスモジュール
3→フォーム
100→Documentモジュール

'Module1内のプロシージャ名を列挙する
Sub SampleCode2()
    Dim TempProcName As String
    Dim ProcNames As String
    Dim i As Long
    
    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
        For i = 1 To .CountOfLines
            If TempProcName <> .ProcOfLine(i, 0) Then
                TempProcName = .ProcOfLine(i, 0)
                Debug.Print TempProcName
            End If
        Next i
    End With
End Sub

2011年6月25日土曜日

vbscriptメモ

■CUIから実行
cscript ファイル名.vbs で実行

オプション :
//B バッチ モード : スクリプトのエラーおよびプロンプトを非表示にする
//D アクティブ デバッグを使用可能にする
//E:engine スクリプト実行時にエンジンを使用する
//H:CScript 既定のスクリプト ホストを CScript.exe に変更する
//H:WScript 既定のスクリプト ホストを WScript.exe に変更する (既定値)
//I 対話モード (既定値、//B と逆の動作)
//Job:xxxx WSF ジョブを実行する
//Logo ロゴを表示する (既定値)
//Nologo ロゴを表示しない : 実行時に見出しを表示しない
//S このユーザーの現在のコマンド ライン オプションを保存する
//T:nn 秒単位のタイムアウト時間 : スクリプトを実行できる時間の最大値
//X デバッガでスクリプトを実行する
//U コンソールからリダイレクトされた I/O に Unicode を使用する

例えば、実行時にロゴ↓を表示したくなければ・・・
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

cscript ファイル名.vbs //Nologo とすればよい


■算術演算子
msgbox 7 + 5 '12
msgbox 7 - 5 '2
msgbox 7 * 5 '35
msgbox 7 / 5 '1.4
msgbox 7 \ 5 '1(商)
msgbox 7 Mod 5 '2(余り)
msgbox 7 ^ 5 '16807

■制御文
'If文
If 条件1 THen 処理1

If 条件2 Then
    処理2
ElseIf 条件3 Then
    処理3
ELse
    処理4
End If

'Select Case文
Select Case 値
    Case 値1
        処理1

    Case 値2, 値3
        処理2

    Case 値4, 値5, 値6
        処理3
 
    Case Else
        処理4
End Select

'For文
For 変数 = 初期値 To 最終値 [Step 変化量]
    処理
Next

'For Each文
For Each 変数 In コレクションor配列
    処理
Next

'While文
While 条件
    処理(条件がTrueの間ループする)
Wend

'Do Loop文
Do While 条件
    処理(条件がTrueの間ループ)
Loop


Do
    処理(条件がTrueの間ループ)
Loop While 条件


Do Until
    処理(条件がFasleの間ループ)
Loop

Do
    処理(条件がFalseの間ループ)
Loop Until 条件


■エラー処理
'On Error Resume Next から OnError GoTo 0の間は
'エラーを無視する
On Error Resume Next
    エラーの起きそうな処理

    msgbox Err.Number      'エラーの番号 エラーがない時は0
    msgbox Err.Description 'エラーの説明
    Err.Clear 'エラーの初期化 連続してエラーがおきそうな場合はその都度判定し、クリアする

On Error GoTo 0

■文字列操作
・Replace関数
変数 = Replace(引数1、引数2、引数3[、引数4、引数5、引数6]

引数1…置換を実施する文字列を指定
引数2…引数1から探し出す文字列
引数3…引数2と置き換える文字列
引数4…検索開始位置(1以上の整数)
引数5…置換を実施する回数。-1or指定しないは全て置換
引数6…文字列比較モード vbBinaryCompare or vbTextCompare

引数6を指定→引数4,引数5も指定
引数5を指定→引数4も指定


■Timerで100分の1以下を取得する
Timerで表示されるのは0時から現在までの秒を100分の1秒まで返してくれる。
例)85547.14

それ以下の値が欲しい場合は整数部を取り除くと取り出すことができる。
Dim CurrentTime : CurrentTime  = Timer '86274.84
Dim IntegralPart: IntegralPart = Fix(CurrentTime) '86274
Dim FractionPart: FractionPart = CurrentTime - IntegralPart '0.84375

msgbox FractionPart

2011年5月22日日曜日

ちょいとExcelVBAのメモ

■Application.ActiveCell.Address
ReadOnly
意味:現在選択しているセルを返します


■Application.Calculation
値 :xlCalculationManual/xlCalculationAutomatic
意味:xlCalculationManualの時、手動で更新をしないと値がかわりません。
   計算式を多数含む状態のシートに値を大量に入力するのであれば一度手動にしてから実行した方が高速になります。
   ※手動中にマクロが停止すると、手動のままとなるのでエラートラップする
    なりしてマクロが終了する前に必ず戻す必要があります。

■Application.CalculationState
値 :xlDone/xlPending
意味:Excel で実行されているすべての計算について、アプリケーションの計算状態を示すXlCalculationState クラスの定数を返します。値の取得のみ可能です。未計算ありだとxlPending(値:2)、計算済だとxlDone(値0)




■Application.EnableEvents
値 :True/False
意味:Falseの時に発生するイベントは無効となる
   ※手動中にマクロが停止すると、イベント無効のままとなるのでエラートラップする
    なりしてマクロが終了する前に必ず戻す必要があります。

■Application.ScreenUpdating
値 :True/False
意味:Falseの時、描画の更新がストップします。
   別のブックを開きたい時など、こっそり作業したい時にも有効です。
   ※手動中にマクロが停止すると、表示が更新されないままとなるのでエラートラップする
    なりしてマクロが終了する前に必ず戻す必要があります。

■Application.Version
値 :各バージョンを示す値
意味:Excelのバージョンを返す。バージョンによってコードを帰る場合に使う。

Excel 2007 12.0
Excel 2003 11.0
Excel 2002 10.0
Excel 2000 9.0
Excel 97 8.0
Excel 95 7.0
Excel 5.0 5.0

2011年4月17日日曜日

prototypeのメモ

/* Stringにアラートするメソッドを追加 */
String.prototype.say = function(){alert(this)};

var str = new String("すとりんぐ");
str.say(); //すとりんぐ


/* Numberの値を2倍にしてアラートするメソッドを追加 */
Number.prototype.doubleSay = function(){ alert(this * 2) };

var num = new Number(123);
num.doubleSay(); //246


/* Functionに名前をアラートするメソッドを追加 */
Function.prototype.nameSay = function(){ alert(this.name) };

function bar(){};
function foo(){};
bar.nameSay(); //bar
foo.nameSay(); //foo


/* Arrayに要素を全てアラートするメソッドを追加 */
Array.prototype.elementSay = function(){
    for(var i = this.length; i--;){
        alert(this[i]);
    }
};

var list = ["a", "b", "c", "d"];
list.elementSay(); //d → c → b → a

/* カスタムコンストラクタの場合 */
var Person = function(name){
    this.name = name;
}

Person.prototype.say = function(){
    alert("I am " + this.name);
};

var human = new Person("Tarou");
human.say(); //I am Tarou

2011年3月31日木曜日

networkdays

ちゃんと動くか確認していないんだけど、
2000では、分析ツールをいれない限りつかえないNETWORKDAYSの代用コードを書いてみた。
あとで検証する。
Function NETWORKDAY(開始日 As Date, 終了日 As Date, Optional 祭日 As Range)
    Dim 日数 As Integer: 日数 = DateDiff("d", 開始日, 終了日) + 1
    Dim 休日 As Integer: 休日 = Int(日数 / 7) * 2
    Dim temp As Integer: temp = 日数 Mod 7
    
    If temp = 1 Then
        If (Weekday(終了日) = 1 Or Weekday(終了日) = 7) Then 休日 = 休日 + 1
    ElseIf temp = 2 Then
        If (Weekday(終了日) = 7 Or Weekday(終了日) = 2) Then 休日 = 休日 + 1
        If (Weekday(終了日) = 1) Then 休日 = 休日 + 2
    ElseIf temp = 3 Then
        If (Weekday(終了日) = 7 Or Weekday(終了日) = 3) Then 休日 = 休日 + 1
        If (Weekday(終了日) < 3) Then 休日 = 休日 + 2
    ElseIf temp = 4 Then
        If (Weekday(終了日) = 7 Or Weekday(終了日) = 4) Then 休日 = 休日 + 1
        If (Weekday(終了日) < 4) Then 休日 = 休日 + 2
    ElseIf temp = 5 Then
        If (Weekday(終了日) = 7 Or Weekday(終了日) = 5) Then 休日 = 休日 + 1
        If (Weekday(終了日) < 5) Then 休日 = 休日 + 2
    ElseIf temp = 6 Then
        If (Weekday(終了日) = 7 Or Weekday(終了日) = 6) Then 休日 = 休日 + 1
        If (Weekday(終了日) < 6) Then 休日 = 休日 + 2
    End If
    
    Dim i As Integer
    For i = 1 To 祭日.Count
        If 開始日 <= 祭日(i) And 祭日(i) <= 終了日 Then
            If Weekday(祭日(i)) <> 1 And Weekday(祭日(i)) <> 7 Then
                休日 = 休日 + 1
            End If
        End If
    Next

    NETWORKDAY = 日数 - 休日
End Function

Sub Auto_Open()
    Application.MacroOptions Macro:="NETWORKDAY", _
                Description:="開始日と終了日の間にある週の日数を計算します。"
End Sub

2011年3月19日土曜日

Jqueryまとめ

■要素の指定方法
 ・セレクタで指定
  $('#[ID名]')、$('.[クラス名]')、$('[HTML]')

 ・親子関係で指定
  $('基準要素 > 対象')・・・基準要素に対し、
                  1階層下に対象要素があると返します
  $('基準要素 対象')・・・・基準要素に対し、
                  その配下に対象要素があると返します。

■要素の絞り込み
 ・絞り込む(1)
  複数の要素を取得した場合、取得した要素の番号で絞り込む
  $('[複数の要素]:eq(インデックス番号)')・・・番号に一致する要素を返す
  $('[複数の要素]:lt(インデックス番号)')・・・番号未満の要素を返す
  $('[複数の要素]:gt(インデックス番号)')・・・番号より大きい要素を返す
  $('[複数の要素]:even')・・・偶数番目の要素だけ返す
  $('[複数の要素]:odd')・・・奇数番目の要素だけ返す
  $('[複数の要素]:first')・・・最初の要素だけ返す
  $('[複数の要素]:last')・・・最後の要素だけ返す
  $('[複数の要素]:not([条件])')・・・条件で指定した要素以外の要素を返す

 ・絞り込む(2)
  複数の要素を取得した場合、子要素の内容でさらに絞り込む
  $('[複数の要素]:contains([テキスト])')・・・子要素に[テキスト]を持っている場合返す
  $('[複数の要素]:has([セレクタ])')  ・・・子要素に[セレクタ]を持っている場合返す
  $('[複数の要素]:has') ・・・子要素に何かある場合返す
  $('[複数の要素]:empty')・・・子要素に何もない場合返す

 ・絞り込む(3)
  複数の要素を取得した場合、子要素のインデックス番号でさらに絞り込み該当する子要素を返す
  $('[複数の要素]:first-child')・・・最初の子要素を返す
  $('[複数の要素]:last-child')・・・最後の子要素を返す
  $('[複数の要素]:nth-child(インデックス番号)')・・・インデックス番号目の要素を返す。ただし最初の番号は1となる
  $('[複数の要素]:only-child')・・・1つの子要素を持つ場合その要素を返す

 ・絞り込む(4)
  可視状態で絞る
  $('[複数の要素]:hidden')・・・display:none/type="hidden"にマッチ
  $('[複数の要素]:visible')・・・上記以外

 ・絞り込む(5)
  属性で絞る
  $('[属性]')・・・該当する属性全ての要素を返す
  $('[属性 = 値]')・・・該当する属性のうち値に一致する全ての要素を返す
  $('[属性 != 値]')・・・該当する属性のうち値に一致しない全ての要素を返す

  $('[属性 ^= 値]')・・・該当する属性のうち値に前方一致する全ての要素を返す
  $('[属性 *= 値]')・・・該当する属性のうち値に部分一致する全ての要素を返す
  $('[属性 $= 値]')・・・該当する属性のうち値に後方一致する全ての要素を返す

  $('[属性 |= 値]')・・・該当する属性のうち値に該当または直後にハイフン(-)がつく全ての要素を返す
  $('[属性 ~= 値]')・・・該当する属性のうち値に該当または直後にスペースがつく全ての要素を返す
  属性の指定は複数同時可

■[clone]対象要素を複製する
$(対象).clone()

■削除する
 ・[detach]対象要素を削除し、変数にとっておく
  $(対象).detach();
  $(対象).detach([セレクタ]);

 ・[remove]対象要素を削除する
  $(対象).remove();
  $(対象).remove([セレクタ]);

 ・[empty]対象要素の子ノードを削除する
  $(対象).empty();

■対象要素(外側)の前後に追加
 ・[after]新規にテキスト、HTMLを対象要素の後に追加
  $(対象).after(内容);
  $(対象).after(function(){ 処理 });

 ・[before]新規にテキスト、HTMLを対象要素の前に追加
  $(対象).before(内容);
  $(対象).before(function(){ 処理 });

■対象要素(内側)の前後に追加
 ・[append]新規にテキスト、HTMLを対象要素の最後に追加(対象要素の内側最後)
  $(対象).append(内容);
  $(対象).append(function(){ 処理 });

 ・[prepend]新規にテキスト、HTMLを対象要素の最後に追加(対象要素の内側最後)
  $(対象).prepend(内容);
  $(対象).prepend(function(){ 処理 });


■[replaceWith]該当する要素を入れ替える
  $(対象).replaceWith()
  $(対象).replaceWith(function(){ 処理 })

■該当要素をwrapする
 ・[wrap]対象要素を個別に指定要素で包む
  $(対象).wrap(要素)
  $(対象).wrap(function(){ 処理 })

 ・[unwrap]対象要素を個別に包んでる要素を削除する
  $(対象).unwrap(親要素)
  $(対象).unwrap(function(){ 処理 })

 ・[wrapAll]該当する対象要素全てを指定要素で包む
  $(対象).wrapAll(要素)

 ・[wrapInner]対象要素を個別にそれぞれの要素を包む
  $(対象).wrapInner(要素)

■[html]対象要素のhtmlを操作
  ・対象要素のHTMLを取得
   var 変数 = $(対象).html()
  
  ・対象要素のhtmlを変更
   $(対象).html(HTML)
   $(対象).html(function(){ 処理 })

■[text]対象要素のテキストを操作
  ・対象要素のtextを取得
   var 変数 = $(対象).text()
  
  ・対象要素のtextを変更
   $(対象).text(文字列)
   $(対象).text(function(){処理})

■[val]対象要素(input)の値を操作
  ・対象要素(input)の値を取得
   var 変数 = $(対象).val()

  ・対象要素(input)の値を変更
   $(対象).val(値)
   $(対象).val(function(){処理})


■クラスについて
 ・[addClass]対象要素にクラスを追加する
  $(対象).addClass(内容);
  $(対象).addClass(function(){ 処理 });

 ・[removeClass]対象要素にクラスを削除する
  $(対象).removeClass(内容);
  $(対象).removeClass(function(){ 処理 });

 ・[hasClass]対象要素にクラスがあるか調べる
  $(対象).hasClass(クラス名); //true, falseを返す

■属性値について
 ・[attr]属性値を取得
  $(対象).attr(属性)

 ・[attr]属性値を設定
  $(対象).attr(属性, 値)
  $(対象).attr(属性, function(){})
  $(対象).attr({属性1: 値1, 属性2: 値2})

 ・[removeAttr]属性値を削除
  $(対象).removeAttr(属性)


■イベント
 ・クリック
  $(対象).click(function(e){ 処理 });
   $(対象).click();で強制的にクリックを発生できる

 ・ダブルクリック
  $(対象).dblclick(function(e){ 処理 });
   $(対象).dblclick();で強制的にダブルクリックを発生できる

 ・マウス移動
  $(対象).mousemove(function(e){ 処理 });

 ・マウスボタン
  $(対象).mousedown(function(e){ 処理 });
  $(対象).mouseup(function(e){ 処理 });

 ・マウスインアウト
  $(対象).mouseenter(function(e){ 処理 });
  $(対象).mouseleave(function(e){ 処理 });
  $(対象).hover(function(e){ 入る処理 },function(e){ 出る処理 });

 ・キー
  $(対象).keydown(function(e){ 処理 });
  $(対象).keyup(function(e){ 処理 });

 ・フォーカス
  $(対象).focus(function(e){ 処理 });
  $(対象).blur(function(e){ 処理 });
  $(対象).focusin(function(e){ 処理 }); イベントがバブリングする
  $(対象).focusout(function(e){ 処理 });イベントがバブリングする

 ・フォーム変更
  $(対象).change(function(e){ 処理 });
  input/textarea/select

 ・テキスト選択
  $(対象).select(function(e){ 処理 });
  input type="text"/textarea
  キャレット等はプラグインでも探すっと。

 ・送信
  $(対象).submit(function(e){ 処理 });

 ・エラー
  $(対象).error(function(e){ 処理 });

 ・リサイズ
  $(対象).resize(function(e){ 処理 });

 ・スクロール
  $(対象).scroll(function(e){ 処理 });

 ・ロード
  $(対象).load(function(e){ 処理 });
  $(window).unload(function(e){ 処理 });
  $(document).read(function(e){ 処理 });

 ・イベントセット
  $(対象).bind(たいぷ、[データ]、処理);
  $(対象).bind({たいぷ: 処理, たいぷ: 処理})

 ・イベント解除
  $(対象).unbind(たいぷ、処理);
  $(対象).unbind(たいぷ);
  $(対象).unbind();


e.target・・・発生時点の要素
e.timestamp・・・発生時刻(秒)
e.pageX・・・X座標
e.pageY・・・Y座標
e.type・・・イベントの種類
e.which・・・キー情報

e.preventDefault()・・・・・・・・・デフォルト操作キャンセル
e.stopPropagation()・・・・・・・・ バブリングキャンセル、イベント実行
e.stopImmediatePropagetion()・・・・バブリング、イベントキャンセル
e.isDefaultPrevented()・・・・・・・preventDefaultを実行したか判定
e.isPropagationStopped()・・・・・・PropagationStoppedを実行したか判定
e.isImmediatePropagationStopped()・・ImmediatePropagationStoppedを実行したか判定

■CSS
 ・取得/変更
  var 変数 = $(対象).css(プロパティ名);
  $(対象).css(プロパティ, 値);
  $(対象).css({プロパティ:値, プロパティ:値, プロパティ:値});
  プロパティ名にハイフンはあるものは、ハイフンとって大文字にする

 ・高さ/幅(1)[height/widthを返す]
  var 変数 = $(対象).height();
  $(対象).height(値);
  var 変数 = $(対象).width();
  $(対象).width(値);

 ・高さ/幅(2)[height/width + paddingを返す]
  var 変数 = $(対象).innerHeight();
  var 変数 = $(対象).innerWidth();

 ・高さ/幅(3)[height/width + padding + borderを返す]
  var 変数 = $(対象).outerHeight();
  var 変数 = $(対象).outerWidth();

 ・高さ/幅(4)[height/width + padding + border + marginを返す]
  var 変数 = $(対象).outerHeight(true);
  var 変数 = $(対象).outerWidth(true);

 ・絶対位置/相対位置(基準は、親要素)
  var 変数 = $(対象).offset(); //変数.top, 変数.leftを持つ
  $(対象).offset({top:値, left:値});
  var 変数 = $(対象).position(); //変数.top, 変数.leftを持つ
  $(対象).position({top:値, left:値});

 ・スクロール 縦/横
  var 変数 = $(対象).scrollTop();
  $(対象).scrollTop(値);

  var 変数 = $(対象).scrollLeft();
  $(対象).scrollLeft(値);

 ・クラスのトグル
  $(対象).toggleClass(クラス);

■$.each(配列, 関数)
途中で抜ける時は、return false;

2011年3月14日月曜日

jqueryめも

■クラス名を列挙する
<div>
    <div id="aaa">
        <ul>
            <li class="li_aaa">aaa</li>
            <li class="li_bbb">bbb</li>
            <li class="li_ccc">ccc</li>
        </ul>
    </div>
    <div id="bbb">
         <ul>
            <li class="li_ddd">ddd</li>
            <li class="li_eee">eee</li>
            <li class="li_fff">fff</li>
        </ul>       
    </div>
</div>

<script>
    $(function(){
        $("li", $("#aaa")).each(function(){
            alert($(this).attr("class")); //li_aaa, li_bbb, li_ccc
        });  
    });
</script>

■テキストを取得
obj.text();

2011年3月13日日曜日

javascriptパターンのメモ

■グローバルオブジェクトへのアクセス
グローバルオブジェクトへのアクセスは、windowオブジェクトのプロパティにアクセスするとよいのね。
var str = "Global!";

function abc(){
  var str = "Local!";
  console.log(str);        //Local!
  console.log(window.str); //Global!
}

abc();

ブラウザ環境では、windowオブジェクトからグローバルオブジェクトにアクセスできるがそれ以外の環境ではwindowオブジェクトが使えない可能性もあるため、ハードコードせずにアクセスするには下記のようにするとよいのね。
var global = (function() {
  return this;
}());

上のコードを書き直すとこーなる。
var str = "Global!";

function abc(){
  var str = "Local!";
  console.log(str);

  var global = (function(){return this}());
  console.log(global.str);
}

abc();



■varのまとめた宣言
function func(){
  var a = 1,
  b = 2,
  sum = a + b;
}

■for ループ
・配列の長さをキャッシュして無駄を減らす
var marray = [1, 2, 3, 4, 5];
  for (var i = 0, max = myarray.length; i < max; i++){
  console.log(marray[i]);
}
・変数を減らし、0と比較することで無駄をさらに減らす
var marray = [1, 2, 3, 4, 5];
  for (var i = marray.length; i--;){
  console.log(marray[i]);
}
1番目の項目でiに配列の要素数を入力して初期化 2番目の項目でtrue or false(0以上かどうか)を判断してから--で要素数を減らす 3番目の項目不要なので特になし。 見慣れた形で表現するのであれば・・・ 下のように書くのと同等。
var myarray = [1, 2, 3, 4, 5];
for (var i = myarray.length; -1 < i; i--){
  console.log(i);
}
上記方法の別解として
var myarray = [1, 2, 3, 4, 5],
i = myarray.length;
while(i--){
  console.log(myarray[i]);
}

■for inループ プロトタイプにぶらさがっているプロパティを除外するために hasOwnProperty()を利用
var hoge = {
  a: "aa",
  b: "bb",
  c: "cc"
};
for(var i in hoge){
  if(hoge.hasOwnProperty(i)){
    console.log(i, ":", hoge[i]);
  }
}

ただし、うっかりhasownPropertyを上書きなんかするとプロトタイプにぶらさがっているか調べることができなくなる。
(そんなことする人いないと思うが・・・)

var hoge = {
  a: "aa",
  b: "bb",
  c: "cc",
  hasOwnProperty: function(temp){ alert(temp); return false } //うっかり上書き
};

for(var keu in hoge){
  if(hoge.hasOwnProperty(key)){ //自分でfalseを返す関数として作ってしまったので期待どおりの動きをしない。
    console.log(key, ":", hoge[key]);
  }
}

このような事態をエスケープするのなら、下記のやり方がある。
var hoge = {
  a: "aa",
  b: "bb",
  c: "cc",
  hasOwnProperty: function(i){ false }
};

for(var key in hoge){
  if(hoge.hasOwnProperty(key)){
    console.log("[hasOwnProperty]", key, ":", hoge[key]);
  }else if(Object.prototype.hasOwnProperty.call(hoge, key)){
    console.log("[call]", key, ":", hoge[key]);
  }
}
結果は、
[call]a:aa
[call]b:bb
[call]c:cc
[call]hasOwnProperty:function()


上記をキャッシュして速度あっぷ
var key,
    hasOwn = Object.prototype.hasOwnProperty;
for(key in hoge){
  if(hasOwn.call(hoge, key)){
    console.log(key, ":", hoge[key]);
  }
}

■暗黙の型変換を避ける
var zero = 0;
if (zero === false){
  //実行されない
}

if(zero == false){
  //実行される
}

■parseInt()による型変換の注意点
ES3では0で始まる文字列はparseIntの基数を省略すると8進数処理をしてしまう。
この仕様は、ES5では変更となったが予期せぬ不具合に合わないように必ずparseInt()
の基数は指定する。
var month = "06",
    year  = "09";
month = parseInt(month, 10);
year  = parseInt(year,  10);

//parseInt()は、構造解析を行うのでNumberの方が速くなることがある。
Number("09") //9

■ドキュメントを書く
JSDoc Toolkit
YUIDoc

■コードを圧縮する
YUICompressor / Closure Compiler

------------------------------------------------------------------------------------

■オブジェクトリテラル記法
{}で書く。
var bar = {};
var foo = {name: "hoge", func: function(){ return this.name }};

■カスタムコンストラクタ
コンストラクタは、return を省略してもオブジェクトを返す。
var AC = function(animal){
  this.animal = animal;
  this.greet  = function(){
    switch (this.animal){
      case "dog":
        return "こんばんワン";
      case "rabit":
        return "ありがとウサギ";
      default:
        return "ぽぽぽぽーん";
    }
  };
  //return this; と書く必要がない。
};
var CM = new AC("dog");
alert(CM.greet());//犬に挨拶

■コンストラクタの返すものは、オブジェクトならなんでもよい。

var Obj = function(){
this.bar = "foo";

var that = {};
that.bar = "hogehoge";
return that; //ほっておくとthisをかえされちゃうので、明示的に違うオブジェクトを返す
}

var test = new Obj;
console.log(test.bar); //hogehoge を返す

■new忘れ防止
newを呼び忘れると本来オブジェクトを指すはずのthisがグローバルにアクセスしてしまうということで
コンストラクタ自体でnewで呼ばれたか精査して呼ばれてないと改めて自分自身をnewで呼んでしまうパターン。

function HogeHoge(){
  if(!(this instanceof HogeHoge)){
    return new HogeHoge();
  }
  this.bar = "foo";
}

//HogeHogeを利用するともれなくsayが参照できる。
HogeHoge.prototype.say = function(){ alert("Hellow HogeHoge!") };

var newObj    = new HogeHoge(),
    notNewObj = HogeHoge();

console.log(newObj.bar);
console.log(notNewObj.bar);

newObj.say();
notNewObj.say();

--------------------------------------------------------------------

■配列リテラル
var a = [];
console.log(typeof a);//object
console.log(a.constructor === Array);//true

■配列の検査
×instanceof Array → IEのいくつかのバージョンである条件かで正しく動かない
ECMAScript 5ではArray.isArray()があるが使えない場合以下のようにするとよいらしい

if(typeof Array.isArray === "undefined") {
  Array.isArray = function (arg) {
    return Object.prototype.toString.call(arg) === "[object Array]";
  }
}

■JSON
最近のブラウザならJSONくらい実装されているので、自前でevalするようなことせず
JSON.stringify(オブジェクト); //JSONデータへ変換
JSON.parse(JSONデータ); //JSONデータをオブジェクトへ変換

非対応ブラウザなら、JSON.orgライブラリの
http://www.json.org/json2.jsを使うとよい。

■正規表現リテラル
var re = /正規表現/gmi;

var test = "str";
if (test.match(re)){
  console.log("match");
}else{
  console.log("no match");
}

■Error
alert("普通の処理");
try{
  throw{
    name: "ErrorType",
    message: "手抜きによるエラーです",
    errFunc: test
  };
}catch (e) {
  alert(e.message);
  e.errFunc(e);
}

alert("end");

function test(e){
  alert(e.name);
}


--------------------------------------------------------------------

■関数をすぐ実行する
(function(){alert("test")}());

■関数の巻き上げ
関数宣言は、巻き上げされるが、関数式は巻き上げされない。
(function(){
  functionDeclaration(); //関数宣言は、実行より後で宣言しても巻き上げられ実行される
  functionExpression();  //関数式には、巻き上げて実行されることはない。
  
  function functionDeclaration(){alert("関数宣言")};
  var functionExpression = function(){alert("関数式")};
}());

■関数を返す
var InitCounter = function() {
  var Count = 0;
  return function() { return Count++ };
}

var counter = InitCounter();

for(var i=0; i<5; i++){
  console.log(counter());
}
■自己定義関数 ■グローバルオブジェクトへのアクセス グローバルオブジェクトへのアクセスは、windowオブジェクトのプロパティにアクセスするとよいのね。
var str = "Global!";

function abc(){
  var str = "Local!";
  console.log(str);        //Local!
  console.log(window.str); //Global!
}

abc();
ブラウザ環境では、windowオブジェクトからグローバルオブジェクトにアクセスできるがそれ以外の環境ではwindowオブジェクトが使えない可能性もあるため、ハードコードせずにアクセスするには下記のようにするとよいのね。
var global = (function() {
  return this;
}());
上のコードを書き直すとこーなる。
var str = "Global!";

function abc(){
  var str = "Local!";
  console.log(str);

  var global = (function(){return this}());
  console.log(global.str);
}

abc();
■varのまとめた宣言
function func(){
  var a = 1,
  b = 2,
  sum = a + b;
}
■for ループ ・配列の長さをキャッシュして無駄を減らす
var marray = [1, 2, 3, 4, 5];
  for (var i = 0, max = myarray.length; i < max; i++){
  console.log(marray[i]);
}
・変数を減らし、0と比較することで無駄をさらに減らす
var marray = [1, 2, 3, 4, 5];
  for (var i = marray.length; i--;){
  console.log(marray[i]);
}
1番目の項目でiに配列の要素数を入力して初期化 2番目の項目でtrue or false(0以上かどうか)を判断してから--で要素数を減らす 3番目の項目不要なので特になし。 見慣れた形で表現するのであれば・・・ 下のように書くのと同等。
var myarray = [1, 2, 3, 4, 5];
for (var i = myarray.length; -1 < i; i--){
  console.log(i);
}
上記方法の別解として
var myarray = [1, 2, 3, 4, 5],
i = myarray.length;
while(i--){
  console.log(myarray[i]);
}
■for inループ プロトタイプにぶらさがっているプロパティを除外するために hasOwnProperty()を利用
var hoge = {
  a: "aa",
  b: "bb",
  c: "cc"
};
for(var i in hoge){
  if(hoge.hasOwnProperty(i)){
    console.log(i, ":", hoge[i]);
  }
}
ただし、うっかりhasownPropertyを上書きなんかするとプロトタイプにぶらさがっているか調べることができなくなる。 (そんなことする人いないと思うが・・・)
var hoge = {
  a: "aa",
  b: "bb",
  c: "cc",
  hasOwnProperty: function(temp){ alert(temp); return false } //うっかり上書き
};

for(var keu in hoge){
  if(hoge.hasOwnProperty(key)){ //自分でfalseを返す関数として作ってしまったので期待どおりの動きをしない。
    console.log(key, ":", hoge[key]);
  }
}
このような事態をエスケープするのなら、下記のやり方がある。
var hoge = {
  a: "aa",
  b: "bb",
  c: "cc",
  hasOwnProperty: function(i){ false }
};

for(var key in hoge){
  if(hoge.hasOwnProperty(key)){
    console.log("[hasOwnProperty]", key, ":", hoge[key]);
  }else if(Object.prototype.hasOwnProperty.call(hoge, key)){
    console.log("[call]", key, ":", hoge[key]);
  }
}
結果は、 [call]a:aa [call]b:bb [call]c:cc [call]hasOwnProperty:function() 上記をキャッシュして速度あっぷ
var key,
    hasOwn = Object.prototype.hasOwnProperty;
for(key in hoge){
  if(hasOwn.call(hoge, key)){
    console.log(key, ":", hoge[key]);
  }
}
■暗黙の型変換を避ける
var zero = 0;
if (zero === false){
  //実行されない
}

if(zero == false){
  //実行される
}
■parseInt()による型変換の注意点 ES3では0で始まる文字列はparseIntの基数を省略すると8進数処理をしてしまう。 この仕様は、ES5では変更となったが予期せぬ不具合に合わないように必ずparseInt() の基数は指定する。
var month = "06",
    year  = "09";
month = parseInt(month, 10);
year  = parseInt(year,  10);

//parseInt()は、構造解析を行うのでNumberの方が速くなることがある。
Number("09") //9
■ドキュメントを書く JSDoc Toolkit YUIDoc ■コードを圧縮する YUICompressor / Closure Compiler ------------------------------------------------------------------------------------ ■オブジェクトリテラル記法 {}で書く。
var bar = {};
var foo = {name: "hoge", func: function(){ return this.name }};
■カスタムコンストラクタ コンストラクタは、return を省略してもオブジェクトを返す。
var AC = function(animal){
  this.animal = animal;
  this.greet  = function(){
    switch (this.animal){
      case "dog":
        return "こんばんワン";
      case "rabit":
        return "ありがとウサギ";
      default:
        return "ぽぽぽぽーん";
    }
  };
  //return this; と書く必要がない。
};
var CM = new AC("dog");
alert(CM.greet());//犬に挨拶
■コンストラクタの返すものは、オブジェクトならなんでもよい。
var Obj = function(){
this.bar = "foo";

var that = {};
that.bar = "hogehoge";
return that; //ほっておくとthisをかえされちゃうので、明示的に違うオブジェクトを返す
}

var test = new Obj;
console.log(test.bar); //hogehoge を返す
■new忘れ防止 newを呼び忘れると本来オブジェクトを指すはずのthisがグローバルにアクセスしてしまうということで コンストラクタ自体でnewで呼ばれたか精査して呼ばれてないと改めて自分自身をnewで呼んでしまうパターン。
function HogeHoge(){
  if(!(this instanceof HogeHoge)){
    return new HogeHoge();
  }
  this.bar = "foo";
}

//HogeHogeを利用するともれなくsayが参照できる。
HogeHoge.prototype.say = function(){ alert("Hellow HogeHoge!") };

var newObj    = new HogeHoge(),
    notNewObj = HogeHoge();

console.log(newObj.bar);
console.log(notNewObj.bar);

newObj.say();
notNewObj.say();
-------------------------------------------------------------------- ■配列リテラル var a = []; console.log(typeof a);//object console.log(a.constructor === Array);//true ■配列の検査 ×instanceof Array → IEのいくつかのバージョンである条件かで正しく動かない ECMAScript 5ではArray.isArray()があるが使えない場合以下のようにするとよいらしい
if(typeof Array.isArray === "undefined") {
  Array.isArray = function (arg) {
    return Object.prototype.toString.call(arg) === "[object Array]";
  }
}
■JSON 最近のブラウザならJSONくらい実装されているので、自前でevalするようなことせず JSON.stringify(オブジェクト); //JSONデータへ変換 JSON.parse(JSONデータ); //JSONデータをオブジェクトへ変換 非対応ブラウザなら、JSON.orgライブラリの http://www.json.org/json2.jsを使うとよい。 ■正規表現リテラル var re = /正規表現/gmi;
var test = "str";
if (test.match(re)){
  console.log("match");
}else{
  console.log("no match");
}
■Error
alert("普通の処理");
try{
  throw{
    name: "ErrorType",
    message: "手抜きによるエラーです",
    errFunc: test
  };
}catch (e) {
  alert(e.message);
  e.errFunc(e);
}

alert("end");

function test(e){
  alert(e.name);
}
-------------------------------------------------------------------- ■即時関数 (function(){alert("test")})(); (function(message){alert(message)})("hoge"); var result = (function() { return new Date() })(); //戻り値を受け取る ■関数の巻き上げ 関数宣言は、巻き上げされるが、関数式は巻き上げされない。
(function(){
  functionDeclaration(); //関数宣言は、実行より後で宣言しても巻き上げられ実行される
  functionExpression();  //関数式には、巻き上げて実行されることはない。
  
  function functionDeclaration(){alert("関数宣言")};
  var functionExpression = function(){alert("関数式")};
}());
■関数を返す
var InitCounter = function() {
  var Count = 0;
  return function() { return Count++ };
}

var counter = InitCounter();

for(var i=0; i<5; i++){
  console.log(counter());
}
■条件分岐パターン ブラウザ判定のようにスクリプト実行内で一度しか発生しない分岐に対しては 関数内で毎回分岐をするのでなく、スクリプト実行時最初に1度だけ行う。 ■関数のメモ化 不要な繰り返し処理がある場合関数自体にキャッシュさせることで処理を早くする ■カリー化
function schonfinkelize(fn){
    var slice = Array.prototype.slice,
        stored_args = slice.call(arguments, 1); //argumentsを配列として扱えるように変換する

    return function(){
        var new_args = slice.call(arguments),
            args = stored_args.concat(new_args);
        return fn.apply(null, args);
    };
}

function add(a, b, c, d, e){
    return a + b + c + d + e; 
}

var newadd = schonfinkelize(add, 1, 2, 3);
alert(newadd(4,5));

複数引数をもち、そのうちのいくつかがほぼ固定で扱われる場合
何度も同じ引数を渡すのでなく、固定部分だけ先に代入して別の関数を
こしらえ、それに対して代入を行う。

2011年3月8日火曜日

SQL Serverのメモ

■フィールドから情報を取得する
・SELECT [列] FROM [TABLE]
→[TABLE]から[列]を取り出す

・SELECT * FROM [TABLE]
→[TABLE]からすべての列情報を取り出す


■重複したデータを取り除く[DISTINCTキーワード]
・SELECT DISTINCT [列] FROM [TABLE]


■ソートする[ORDER BY 列 条件]
・SELECT [列] FROM [TABLE] ORDER BY [列],[列]… [ASC | DESC]
ASC…昇順(省略時)
DESC…降順


■上位○件取得[TOP ○]
SELECT TOP ○ [列] FROM [TABLE]

2011年2月12日土曜日

ちょいめも

$blogn_skin = eregi_replace("
", "
\n", $blogn_skin);
をコメントアウト
blognplus

2011年1月23日日曜日

vb2008でのDB接続メモ

DB接続メモ。
vb2008


Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Using con As New System.Data.SqlClient.SqlConnection
                con.ConnectionString = _
                    "Data Source=.\SQLEXPRESS;" & _
                    "AttachDbFilename=|DataDirectory|\list.mdf;" & _
                    "Integrated Security=True;" & _
                    "User Instance=True"

                'DBを開く
                con.Open()

                '---<< DBの接続状態を確認>>---
                MessageBox.Show(con.State.ToString, "開いた直後")


                con.Close()
                '---<< DBの接続状態を確認>>---
                MessageBox.Show(con.State.ToString, "閉じた直後")
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.ToString, "例外発生")
        End Try
    End Sub
End Class

Using ステートメント
End Usingを抜けると自動的にオブジェクトを破棄してくれるそうな。
2005以降で利用可能とのこと。
DB接続文字列は、app.configに書いてある内容をコピペ。