2011年1月29日土曜日

【Mac】Android GoogleMap API Key 証明書の手順

Macで、Eclipseの環境をしっかりとして

ターミナルで

keytool -list -alias androiddebugkey -keystore ~/.Android/debug.keystore -storepass android -keypass android


とすると、認証キーが出てくる。
これを、Sign Up for the Android Maps APIに貼付けて(Generate API Key)押したら
おわり。

2011年1月27日木曜日

まだ出来てないけど!

ようやく、Androidで何を作るのか決まりました。
カミングスーーーーーーーーーーーーーーン!!

たぶん、2月の末には第一リリースしてみたい。

2011年1月20日木曜日

Android Appを勉強始めました

Androidの勉強でもがんばろうと思って、18日から環境を整えてがんばろうと思い
今日は出来てないけど、18日はとりあえず定番の「Hello World」からがんばりました。

これから、猛勉強してがんばって行こうと思う!!!

最近仕事も忙しいのですが、何でも作れるよ!って言えるまでがんばります!(^^;)

2011年1月16日日曜日

Google YouTubeAPIを使ってみた

Googleから提供されているYouTube APIを使ってみた。
色々と悩みましたが、慣れてしまえば何のその。

結構便利に良い物が面白く作れました!!

忘れない様にコードをここへ・・・

YouTubeに動画をアップロードするプログラム




if($_GET['status']==200){
    if($_GET['id']){
        $douga_insert = new Sql;
        $douga_insert->value = array($login->dataset[0]['id'],$_GET['id']);
        $douga_insert->sql_insert('Douga');
        $_SESSION['report'] = '動画のアップロードが完了しました';
        header('Location: ?dsp=douga_admin');
        exit();
    }
}

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');

$sDeveloperKey = 'YouTubeAPIの開発コード';
$sAccount = 'YouTubeのログインアカウント(ID)';
$sPassword = 'YouTubeのログインパスワード';

$sMovieTitle = 'DatsuNet Movie '.$login->dataset[0]['user_name'];
$sDescription = '';
$sTags = '';
$sNextUrl = 'アップロード後の戻り先URL(フルパス)';

$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
    $username = $sAccount,
    $password = $sPassword,
    $service = 'youtube',
    $client = null,
    $source = 'gwiki', // a short string identifying your application
    $loginToken = null,
    $loginCaptcha = null,
    $authenticationURL);
$httpClient->setHeaders('X-GData-Key', "key=${sDeveloperKey}");
$yt = new Zend_Gdata_YouTube($httpClient);
// create a Zend_Gdata_YouTube_VideoEntry
$myVideoEntry= new Zend_Gdata_YouTube_VideoEntry();

// set up media group as in the example above
$mediaGroup = $yt->newMediaGroup();
$mediaGroup->title = $yt->newMediaTitle()->setText($sMovieTitle);
$mediaGroup->description = $yt->newMediaDescription()->setText($sDescription);

$categoryScheme = 'http://gdata.youtube.com/schemas/2007/categories.cat';
$developerTagScheme = 'http://gdata.youtube.com/schemas/2007/developertags.cat';

$mediaGroup->category = array(
    $yt->newMediaCategory()->setText('Autos')->setScheme($categoryScheme),
    $yt->newMediaCategory()->setText('mydevelopertag')->setScheme($developerTagScheme),
    $yt->newMediaCategory()->setText('anotherdevelopertag')->setScheme($developerTagScheme)
    );

$mediaGroup->keywords = $yt->newMediaKeywords()->setText($sTags);
$myVideoEntry->mediaGroup = $mediaGroup;

$tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
$tokenValue = $tokenArray['token'];
$postUrl = $tokenArray['url'];

$nextUrl = $sNextUrl;

View部分
echo $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
        '" method="post" enctype="multipart/form-data">'.
        '動画ファイルを選択して下さい:<input name="file" type="file"/>'.
        '<input name="token" type="hidden" value="'. $tokenValue .'"/>'.
        '<input value="動画アップロード" type="submit" />'.
        '</form>';

これで、アップロード出来ます。

そして、削除するには
$videoId = $_GET['YouTubeのVideoID'];
$videoEntryToDelete = $yt->getVideoEntry($videoId, null, true);
$yt->delete($videoEntryToDelete);

これで、消えます。

Googleってすばらしいですね〜最高ですね〜

2011年1月13日木曜日

VBAでFTPファイルアップロード

VBAを使って、ファイルをプットするためのプログラム。
これにはBASP21をインストールしておく必要がある。

使用用途としては、FTPのアカウントを教えたくない人に対して
これを使って、指定の位置へファイルをアップロードさせるためのもの。

HTML5になってからは、不要になりましたがIE8などは
まだ、FILE POSTにMultiが対応していないので、使えるのかなぁ~?

まぁ、VBAなのでプロジェクト保護してても、パスワードは抜き取られちゃうので
セキュリティ的には、ヘボヘボですが・・・・

一応、忘れないためにメモ。

Sub picture_uploader()
    Dim FTP, rc As Long, Server As String, User As String, Pass As String
    Dim Target As String, Folder As String
    Dim a           As String
    Dim folder_path As Object
    'FTPオブジェクト
   
    'TAKARA FTP設定(設定する場合は「'」を外してください。)
    Server = "ホスト"
    User = "ユーザーID"
    Pass = "ユーザーパスワード"

    Set folder_path = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 1, ",")
    If Not folder_path Is Nothing Then
        a = folder_path.Items.Item.Path
    End If
    If a = "" Then
        MsgBox "参照先が選択されませんでした。"
        Range("B1") = ""
        End
    Else
        fp = a
        Range("A1") = fp
        With Application.FileSearch
            .LookIn = fp
            .SearchSubFolders = True
            .FileType = msoFileTypeAllFiles
            .Filename = ".jpg"
            If .Execute(SortBy:=msoSortByFileName, _
                SortOrder:=msoSortOrderAscending) > 0 Then
                MsgBox .FoundFiles.Count & "個のファイルが見つかりました。"
                For i = 1 To .FoundFiles.Count
                    fname = .FoundFiles(i)
                    d = Len(fp)
                    fname1 = Len(fname)
                    fname2 = Right(fname, fname1 - d - 1)
                    'フォルダパス1を画像名から取り出す
                    'f_path1 = Len(fname2)
                    'f_path1_1 = Right(fname2, f_path1 - 3)
                    'f_path1_2 = Len(f_path1_1)
                    'f_path1 = Left(fname2, f_path1 - f_path1_2)
                    'フォルダパス2を画像名から取り出す
                    f_path2 = Replace(fname2, ".jpg", "")
                    f_path2_1 = Len(f_path2)
                    f_path2 = Left(f_path2, f_path2_1)
                    'Cells(i + 1, 2).Value = "/" & f_path1 & "/" & f_path2 & "/"
                    Cells(i + 1, 2).Value = fname2 'ファイル名
                Next i
            Else
                    MsgBox "条件を満たすファイルはありません。"
            End If
        End With

   
        Set FTP = CreateObject("basp21.ftp")
        'サーバー接続
        rc = FTP.Connect(Server, User, Pass)
        If rc <> 0 Then
            MsgBox "接続できませんでした。", vbCritical
            FTP.Close
            Exit Sub
        End If
        For i = 2 To 65536
            Range("B" & i).Activate
           
            If Range("B" & i) = "" Then
                Exit For
            Else
                'ローカルファイルの場所
                Target = Range("A1") & "\" & Range("B" & i)
                'FTP送信先
                Folder = "/IMAGES/"
           
                rc = FTP.PutFile(Target, Folder, 1)
                If rc <> 1 Then
                    MsgBox Range("B" & i) & "の画像がアップロード出来ませんでした。", vbCritical
                    FTP.Close
                    Exit Sub
                Else
                    Range("C" & i) = "OK"
                End If
            End If
        Next
        MsgBox "全ての画像がアップロード出来ました。", vbInformation
        FTP.Close
        Set FTP = Nothing
    End If
End Sub

2011年1月12日水曜日

Qdsmtpを使ってGmail SMTPを使ってメール送信

PHPのライブラリQdsmtpでSMTPメールを送信するのですが
いつもなら、PHPのファンクションのmb_send_mail()を使うのですが
今回は、サーバーにメールサーバーを構築してないので、GmailのSMTPを使って
メール送信するんですが、ちょっとハマってしまったので忘却記録を・・・


こんな事で、つまづくとは・・・・

とりあえず、Qdsmtpをダウンロードしてきて
あとは、インクルードするだけだったので、結構簡単です。

問題は初期設定。

$setting = array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'from' => 'sample@gmail.com',
'user' => 'sample@gmail.com',
'pass' => 'password',
'protocol' => 'SMTP_AUTH'
);
つまずいたのは、hostの部分とポートの部分。
まぁ調べたらすぐ解った事だったので、一件落着。
hostの部分は smtp.gmail.comとだけ入力してたのですがエラーがずっと出ていて
なんで!なんで!って思いながら
http://mail.google.com/support/bin/answer.py?hl=jp&answer=44793
を読むとSSLだったので、tlsでも動くと思うんですが上のURL見たら解決出来ました。

Qdsmtpの良い所は、mb_send_mail()と同じように扱えるので便利です。

例えば
$smtp = new QdSmtp($setting);
$smtp -> mail('送り先','件名','メール内容','ヘッダ(省略可)','パラメータ(省略可)');

とすれば、メール送信されます。

色々とQdsmtpの中身を見てましたが、便利なクラスです。
送信したいメールアドレスを配列にして
$mail_array = array('1@test.jp', '2@test.jp', '3@test.jp');
$smtp->to($mail_array);

でもOK!!
すごい便利ですねぇぇぇ

世の中、良い物が転がってますね。

QdsmtpはMITライセンスなので、ご自由にダウンロードして使用してください。

VBA TextBoxを配列処理する

Dim Val_Array as Variant

For i = 1 to 20
    if UserForm1.Controls("TextBox" & i) = "" Then
         Exit For
    Else
        Text_Val = UserForm1.Controls("TextBox" & i) & "," & Text_Val
    End if
Next

Values = split(Text_Val, ",")

たぶん、考えたらもっといい方法あるんですが
なにぶん時間がなかったので、微妙なコードになっちゃいました・・・

まぁ、これで配列に格納出来るし良いかな・・・

VBAでフォルダダイアログを開く

With Application.FileDialog(msoFileDialogFolderPicker)
       if .Show = True Then
           dir_path = .SelectedItems(1) & "¥"
       End if
End With

WSHで作るダイアログの方が好きなんですが
まぁ、VBAで関数あるならそれ使っとこうってことで。

これを実行すると、フォルダを選択と言うダイアログが表示され
開きたいフォルダの所まで行ってOK押したら

変数 dir_path の中にそのフォルダまでのフルパスが格納される。

フォルダの中にある(サブフォルだも含む)情報を取り出した場合は

Dim buf As String

buf = Dir(dir_path & "*.*" , vbDirectory)
Do While buf <> ""
    i = i + 1
    Worksheets("Sheet1").Cells(i , 1) = dir_path
    Worksheets("Sheet1").Cells(i , 2) = buf & "¥"
    buf = Dir()
Loop

これで、サブフォルダの情報をぶっこ抜きます。
Dir(dir_path & "*.jpg", vbDirectory)とするとJPEGファイルを取り出せる。

これ結構忘れて、いつも探しまわっちゃうのでそろそろ保管しておこう