Quantcast
Channel: web pakun
Viewing all 247 articles
Browse latest View live

LinuxからWindowsにリモートデスクトップでアクセスできるRemminaが便利

$
0
0

一昔前までは、LinuxからWindowsのデスクトップにリモートでアクセスするためにはVNCを使うのが一般的でした。

でも、世の中ずいぶん進化しているんですねー。最近ではリモートデスクトップ(RDP)で接続できます。

操作感、セキュリティともにRDPの方が上だと思いますので、これからやってみようという人は、ぜひ、RDPを試してみてください。

では、今回私がやろうと思ったことと、その方法について書きたいと思います。

 

やりたいこと

今、私が外に持ち歩いているネットブックは、Vaio p50で、LinuxMint13がインストールされています。さらに、Windowsでないと動かない常時起動のソフトがあることから、VPSでWindows2013Serverを契約しています。このWindowsに外出先からRDPでアクセスしたいわけです。

 

ソフトのインストール

LinuxでRDP接続を行うには「Remmina」を利用すると便利です。「Remmina」はリモートデスクトップのクライアントソフトで、RDPやVNCのの形式でサーバに接続するクライアントとして使うことがでいます。

LinuxMintやubuntuでは、以下のようにインストールできます。

ただ、バージョンによってはaptのリポジトリが古い場合もありますので、最初に、

sudo apt-get update

しておくとよいでしょう。その後、

sudo apt-get install remmina

を行うと、「インターネット」⇒「Remmina リモートデスクトップクライアント」というメニューができているはずです。起動すると、

image

 

こんな画面が開きます。左から2番目のアイコンをクリックすると、以下のような画面が開きますので、今回はプロトコルで「RDP」を選択し、サーバ接続の譲歩を入れればすぐに接続可能です。

image

 

さっそく接続してみると、、、

image 

 

いかがでしたでしょうか。画面もとってもきれいでしたよ。


Googleで、自サイトに対する非リンクを確認する方法

$
0
0

自分の運営するブログの記事が、他の人のブログで紹介されたり、リンクしてもらったりするのって、うれしいですよね。

「自分が苦労して書いた記事が役に立ったんだ!」と喜んだり、「もっとこんな風に記事をわかりやすく書けばよかったかな?」と、次に書く記事の参考にしたり。。

ただ見ているだけでも結構楽しいです。

さて、そんな非リンクをGoogleで確認する方法をメモしておこうと思います。

 

検索窓に、下記文字列を入力する (urlは自分のサイトに変更してくださいね)

"http://web.plus-idea.net/" -site:http://web.plus-idea.net/

 

この意味は、

「“」で囲まれた文字列を含む記事のあるサイトをGoogle全体から検索して、「-site:」以下のURL指定で、その検索に引っかかった記事のうち、自分のサイトの記事をマイナスする

ということになります。

image

 

aタグで囲まれていない記事も含まれますので、厳密な意味での「非リンク」ではありませんが、「自分のブログのことを話題にしてくれている」という意味では、特に問題ないのかなと思います。

iPhone5でカメラのレンズ部分にゴミが入ってしまった

$
0
0

しばらく前から、iPhone5で写真を撮ると、下の写真のようにゴミのようなものが2か所に移りこむようになってしまいました。

風景などではあまり気になりませんが、被写体が白っぽいものだと、どうしても目立ってしまいます。

レンズ部分をキレイに拭いてみても、全く消えず。。かといって、他のアプリの表示には影響ないので、ディスプレイ部分が欠けているわけではなさそうです。

image

 

で、アップルのサポートに電話してみると、各アップルストアのテクニカルサポートで見てくれるということでした。

早速、アップルストア銀座店に行ってみました。

18時ごろ、4Fに行って受付すると、19:30の予約が一番直近だそうです。場合によっては、機体交換もあり得るので、その時間でバックアップを取っておくようにアドバイスされました。

私の場合、連絡先だけ残しておけば、あとはファイル共有サービス等でバックアップがあるので、とりあえず、連絡先だけの同期設定にして、iCloudにバックアップを取ります。

アップルストアには無料のWIFIポイントがあるので、便利ですね。

さて、19:30から待つこと20分、ようやく自分の名前が呼ばれました。結構、いろいろな人が相談に来ているので、自分の名前が呼ばれるまで時間があります。アップルの対応する方も大変だと感じました。

対応してくださった方に症状を伝えると、機体交換するしかないそうです。「バックアップ大丈夫ですか?」と聞かれたので、「大丈夫です」と答えるとすぐにシリアル番号のようなもので保証期間を調べてくれ、「保証期間内ですので、無料で機体を交換します」と言ってもらえました。

すぐに新しい機体を持ってきてくれ、ものの5分程度で交換完了、バックアップしていた連絡先もきちんと移行されていました。また、古い方のiPhoneの個人情報もボタン2回押しで削除されるので、安心です。

iCloud恐るべし!&対応いただいたスタッフの方、ありがとうございました。!

iOS7またはiPhone5で不要なアプリを強制終了する方法

$
0
0

iPhoneで、アプリの挙動がおかしくなったり、メモリの使用量を抑えたい場合に、不要なアプリを強制的に終了させたい場合があります。

以前のバージョンのiPhoneでのアプリでは良く行っていたのですが、iOS7になって、強制終了のさせ方が変わっており、一見分かりにくくなってしまいました。

ようやくやり方が分かったので、メモしておきます。

 

①起動されているアプリ一覧の表示
最初に、今、起動されているアプリの一覧を表示させます。
iPhone本体の下部、丸い「Homeボタン」を2回押しましょう。

すると、以下のような画面になり、現在起動されているアプリケーションが表示されます。
一覧のアプリを横にスライドさせるなどして、強制終了したい対象のアプリを探しましょう。

 

②強制終了させたいアプリのイメージを上にスワイプ
目的のアプリを見つけたら、アプリのイメージ部分を上にスワイプします。

2013-12-06 13.29.33_2

 

これで、目的のアプリを終了させることができました。
ご参考になれば幸いです。

複数の端末で、「あとで読む」行為を簡単に行えるサービス『Pocket』が便利

$
0
0

通勤時や空いた時間に、気になってストックしていた記事を読む、通称「あとで読む」系のサービス。

最近、人気の高いのが、「Pocket」です。

様々な端末から「Pocket」に記事をストックしておけば、ブラウザやスマートフォンなどの端末で、あとでじっくり記事を閲覧することができるようになります。

Evernoteと何が違うの?と思いますが、「Pocket」の良いところは、ストックした記事を、閲覧する端末に最適化して見ることができることです。つまり、閲覧する端末で、一番みやすい形に成形して記事を見せてくれます。

もちろん、ストックした記事に対して、タグをつけたりして整理することもできますよ。

アカウント作成の手順

1

まず、「pocket」のサイトに行って、「Sign Up Now」ボタンを押します。

2

その後、Emailとユーザ名、パスワードを入力して「Sign Up」ボタンを押すと以下のような画面になりました。「Get Started」を押して、さっそく使い始めましょう!

3

上記の「Get Started」ボタンを押すと、自分のキュー画面になります。「キュー」とは、Pocketにストックした記事のことで、最初は「YOUR QUEUE IS EMPTY」と表示されています。

会員登録も終わり、自分のpocktにキューを追加できる状態になったので、今度は、自分のPCのブラウザやスマートフォンからキューに記事をストックできるようにします。

下記の画面で、「Connect Now」のボタンを押すか、このURLにブラウザでアクセスすると、お使いのブラウザにPocketへの追加機能をインストールすることができます。

4

 

 

各端末での「Pocket」への記事追加アプリのインストールと追加の仕方

Firefoxの場合

このページにあるアドオンをインストールします。

5

Firefoxの場合は、インストール後、ブラウザを再起動すると、

7

のようなアイコンが表示されているハズです。

これは、ブラウザの右側に表示され、「pocket」の設定を行うボタンです。

実際にpocketに記事をストックするには、URLの右(下記画面左側)のボタンを押下します。

グレー色のボタンが、ピンクに替われば、記事がストックされています。

8

9

のようにアイコンが変化するハズです。

 

Chromeの場合

 

このページの機能拡張を使います。

10

Firefoxとことなり、ブラウザ上部の右端に記事の追加ボタンが表示されることに注意。

11

記事の追加に成功すると、ピンク色になるところは同じですね。

12

 

 

iPhoneの場合

iPhoneやiPadなどのiOS系の場合には、Bookmarkletを使えば、ブックマーク感覚でPocketへの追加ができます。

少し、コツがいるので、順を追って説明します。

 

①アプリのインストール

最初にiOS用のアプリをインストールします。ストックした記事を閲覧するのに利用します。また、このアプリをインストールしておくと、iOSのブラウザからpocketに記事をストックするブックマークレットを登録するのも簡単です。

 

②Bookmarkletの登録

アプリのインストールが終わったら、さっそく開いてみましょう。作成したpocketのアカウントでログインするのを忘れずに。

開いたら、下記の赤枠の部分を順にクリックして、行きます。

2014-02-16 18.11.37 2014-02-16 22.14.05

2014-02-16 22.14.18 2014-02-16 22.14.39

上記の黄色い「Install」ボタンを押すと、ブラウザが起動します。

2014-02-16 22.14.49

ブラウザが起動したら、画面の指示に従っていきましょう。「Let’s do it!」を押すと、「1.Tap」沿うように指示がありますね。少しOSのバージョンが古い画面ですが、iOS7系の場合は、以下のように、画面下部の上矢印の保存ボタンを押します。

2014-02-16 22.15.01

すると、保存先を聞かれますので、ブックマークを選びましょう。

2014-02-19 23.16.06

すると、以下のような画面になりますが、ここではいったん、「Done」ボタンを押して保存します。

2014-02-16 22.19.39

次に、保存したブックマークを編集します。まず、画面下部のブックマークボタンを押し、編集を開始しましょう。

2014-02-16 22.16.35 2014-02-19 23.16.56 2014-02-19 23.17.11

下記のような編集画面になったら、URLの部分を全部消し、次に、同じところにペーストを行います。ペーストされるブックマークレットのURLはクリップボードに記憶されていますので、そのまま、貼り付ければOKです。

2014-02-16 22.19.49 2014-02-16 22.23.32

上記右のようなURLが貼り付けられれば、OK。完了です。

これで、Safariで閲覧中に、pocketにストックしたい記事があれば、ブックマークボタンから、今回保存したブックマークレット「Save to Pocket」を選択することで、ストック可能となります。

Firefoxで新規タブを開くときに、知らないURLが開くようになってしまったときの対処方法

$
0
0

お試しでソフトをインストールしたときなどに、ブラウザの振る舞いが変わってしまうことがあります。
私が個人的に、特にわずらわしいのが、新規タブを開くときに使用する、「+」ボタンを押したときに、そのソフトのHPや宣伝のページが開いてしまうようになってしまうことです。

「いつの間に書き換えられてしまったんだろう?」と思うのですが、このまま毎回表示させられるのもイヤだったので、設定をもとに戻した時のメモです。

 

まず、Firefoxでブラウザの設定を変更するには、URLの窓の部分に、「about:config」と入力して「Enter」を押します。
すると、下記のような画面が開きます。

"動作保証対象外になります!" という警告ページですが、ちゃんと設定すれば問題ありません。「細心の注意を払って使用する」をクリックし、 about:config ページを開いてください。

image

 

すると、設定名とその状態、値がズラーっと並びます。

目的の設定名を見つけるために、検索窓に「browser.newtab.url」と入力しましょう。以下のように絞られて表示されます。

image

 

表示されている行をダブルクリックすると、以下のようなダイアログが開いて、設定値を変更することができます。
毎回、見覚えのない新規ページが開かれる場合、ここにそのURLが入っているので、この値をお好きなURLに書き換えましょう。
私はGoogleにしています。

opmnctlコマンドの使用とコンポーネントが起動しない時の対処方法

$
0
0

OracleBIサーバなど、Oracle Fusion Middlewareコンポーネントを制御するには、opmnctlコマンドを使用します。

コマンドの詳細はここのページなどに記述してありますが、よく使うコマンドをメモしておこうと思います。

なお、opmnctlコマンドを起動するためのバッチは、
INSTANCE\bin\opmnctl.bat
に存在します。

 

コンポーネントのステータスをみる。

opmnctl status

———————————+——————–+———+———
ias-component                    | process-type       |     pid | status
———————————+——————–+———+———
coreapplication_obiccs1          | OracleBIClusterCo~ |    xxxx | Stop
coreapplication_obisch1          | OracleBIScheduler~ |    xxxx | Alive
coreapplication_obijh1           | OracleBIJavaHostC~ |    xxxx | Alive
coreapplication_obips1           | OracleBIPresentat~ |    xxxx | Alive
coreapplication_obis1            | OracleBIServerCom~ |    xxxx | Alive

上記で、statusがすべて「Alive」になっていれば、きちんとすべてのコンポーネントが起動していることになります。
「Stop」となっているコンポーネントがうまく起動していません。

起動しない原因はいくつか考えられますが、
・接続プールやデータソース用のDB設定が間違っている。
・設定ファイルの記述が間違っている。
などが主な原因として考えられます。

 

設定ファイルが正しく記述されているか確認する。

opmnctl validate

opmnctl validate: succeeded.

このコマンドを実行すると、opmn.xmlファイルのXML構文が検証されます。
ファイル名のパラメータを指定しない場合は、デフォルトのORACLE_HOME/opmn/conf/opmn.xmlが検証されます。
上記のように「」が表示されれば、xml的には設定の記述は間違っていません。
「xml的には」というのは、タグの閉じ忘れや、指定できないタグの設定がないことが分かるということです。

DBも設定ファイルも、どちらの設定も問題ないとか、以前は動いていたのに起動できなくなったなどの場合は、以下の原因も疑ってみてもよいでしょう。

opmnは、起動時のステータスを、コンポーネント毎に
INSTANCE\config\OPMN\opmn\status
配下のファイルに出力します。
ただ、一度クラッシュして起動失敗すると、ここにあるファイルを削除またはリネームしてサービスを再起動しない限りはずっと起動に失敗したままになるので、注意しましょう。

そうなってしまった場合は、以下の手順で復旧します。

①opmnctl stopall でサービスを止める。
②status配下のファイルを削除またはリネームして退避する。
③opmnctl startall でサービスを起動する。

 

それ以外のコマンド列挙

 

1.) OracleBIClusterControllerComponent – coreapplication_obiccs1
2.) OracleBISchedulerComponent – coreapplication_obisch1
3.) OracleBIJavaHostComponent – coreapplication_obijh1
4.) OracleBIPresentationServicesComponent – coreapplication_obips1
5.) OracleBIServerComponent – coreapplication_obis1

coreapplication_obis1 —–  BI Server Service

coreapplication_obijh1 —–  BI Java Host Service

coreapplication_obips1—–  Presentation Service

coreapplication_obisch1—-  Scheduler Services

coreapplication_obiccs1 —- Cluster Service

BI Service:

opmnctl stopproc ias-component=coreapplication_obis1

opmnctl startproc ias-component=coreapplication_obis1

Javahost:

opmnctl stopproc ias-component=coreapplication_obijh1

opmnctl startproc ias-component=coreapplication_obijh1

Presentation Service:

opmnctl stopproc ias-component=coreapplication_obips1

opmnctl startproc ias-component=coreapplication_obips1

Scheduler Service:

opmnctl stopproc ias-component=coreapplication_obisch1

opmnctl startproc ias-component=coreapplication_obisch1

Cluster Service:

opmnctl startproc ias-component=coreapplication_obiccs1

opmnctl stopproc ias-component=coreapplication_obiccs1

Oracle Business Intelligenceの稼働 Step by Step (インストール)

$
0
0

それでは、Oracle Business Intelligenceをインストールしていきます。

早速、インストーラをダウンロードしてダブルクリック。。としたいところですが、最初にリポジトリを作成しておく必要があります。

リポジトリの作成は「Repository Creation Utility(rcu)」を使って行いますので、こちらの記事を参考に、リポジトリを作成しておきましょう。

 

作成が終わったら、いよいよBIのインストールを行います。

インストーラはこのページなどからダウンロードしておきます。

私がダウンロードした時は4つのzipファイルに分割されていました。それぞれのzipファイルを解凍すると、「Disk1」~「Disk4」のディレクトリができますので、このディレクトリのまま(まとめることなく)、Disk1の下にある「setup.exe」をダブルクリックしてインストールを開始します。

 

image   image

image image

image image

image image

image image

image image

 

基本は、ウィザードに従って行けば、あまり迷うところはないと思います。

躓きそうなところとして、接続文字列のところは、エラーが出てうまく設定できない場合は、Oracleの「tnsnames.ora」を確認すると設定すべき文字列が分かります。

 

インストールが終わると、自動でブラウザが立ち上がり、

image

といったログイン画面が開きます。ここに、「weblogic」ユーザでログインすると、以下のような画面が表示されて、簡単なサンプルを動かせるはずです。

 

image


Windows7で、写真のあるフォルダのプレビューを有効にする方法

$
0
0

Windows7になって、ファイル・エクスプローラーで写真のあるディレクトリを開いても、

2

な感じで、デフォルトでは全部同じアイコンが表示されるようになってしまいました。

DropBoxのカメラアップロードのディレクトリなどがこうなってしまい、Blogの記事を会たるする場合、いちいち画像ファイルをダブルクリックして確認するのが大変。。。

そこで、設定を変更してサムネイルで見えるようにした。

 

設定の場所は、ファイル・エクスプローラーの上部の「ツール」⇒「フォルダオプション」のところを開きます。ここの「表示」タブの設定項目に、

「常にアイコンを表示し、縮小版は表示しない」

というのがあり、ここにデフォルトでチェックがついているので、このチェックをはずしましょう。

3

 

すると、こんな感じになります。

4

パフォーマンス向上を考慮してのデフォルト設定なのかもしれませんが、私はやっぱりプレビューがあったほうが使いやすいです!

MinGWのインストールと使い方(2014年版)

$
0
0

Windows7の環境にMinGWをインストールする機会があったので、概要とその手順を記述しておきます。

 

MinGWとは何か

MinGWは"Minimalist GNU for Windows"の略であり、ネイティブなWindowsアプリケーションを作成する環境を提供します。

そのために、大きくは2つの主要なパッケージを含んでいます。

ひとつはgccコンパイラで、これによりWindows環境でのアプリのコンパイルを行うことができます。
もうひとつは、MSYSです。これは、"minimal system"の略で、UNIX風シェル環境であり、端末エミュレータと、POSIXライクなコマンド群とが含まれています。

ただし、POSIX準拠にすることに、完全にこだわっているわけではないため、Windows上でPOSIX準拠の開発環境を望む場合は、Cygwinの選択肢も考慮するよう、公式ページにもうたっています。

 

MinGWのインストール

ホームページへ行き、右上の「Downloads」のリンクを押すと、ダウンロードページに遷移します。
そこから「mingw-get-setup.exe」をダウンロードし、ダブルクリックでインストールしましょう。

ただし、このインストールが終わっても、もうひと手間残っています。これで行われるのはパッケージマネージャのインストールだけなので、この後、実際に組み込むパッケージを選択⇒インストールする必要があるのです。

image

 

インストールが終了すると、スタート⇒すべてのプログラムのところに「MinGW Installation Manager」ができていると思います。これを起動するか、デスクトップにできた「MinGW Installer」のアイコンimage をダブルクリックすると、以下のような画面が開きます。

 

 

image

 

最近(記事執筆時は2014年06月)のMinGWは、このマネージャで選択し、実際の機能をインストールするようになっています。

画面の左側に、「Basic Setup」と「All Packages」がありますが、「Basic Setup」を選択すると、大きなコンポーネント群でまとめてインストールの選択が可能ですので、便利だと思います。

 

パッケージの選択とインストール

一般的に、Windows上でコンパイルを行いたい場合には、「mingw32-base」と「mingw32-gcc-g++」を選択すると良いでしょう。

UNIX風シェル環境も必要な場合は、「msys-base」と「mingw-developer-toolkit」も追加で選択(Mark for Installation)します。

image

選択できたら、アプリメニューバーの「Installation⇒Apply Changes」で実際にコンポーネントのダウンロードとインストールが行われます。

 

 

パスの設定と確認

上記のインストールが終わったら、環境設定からpathを設定しておくことをお勧めします。「システムの詳細設定⇒システムのプロパティ⇒環境変数」とたどり、環境変数Pathに「C:\MinGW\bin」を追加しておきましょう。

image image image

きちんとパスが設定されているかを確認するには、コマンドプロンプトを開いて、
gcc –version」というコマンドを打ちます。

image

上記のように、

gcc (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

のようなバージョン情報が表示されれば、OKです。

 

コンパイルしてみる

では、早速コンパイルできるか試してみましょう。

適当なディレクトリに「hello.c」というファイルを作り、

 

#include <stdio.h> 

int main(void)
{
    printf("Hello world!\n"); 

    return 0;
}

 

を記述します。

後は、「gcc hello.c -o hello」をうつと、「hello.exe」という実行ファイルができているはずです。

コマンドプロンプトから実行すると、以下のようになると思いますよ!

image

選択範囲をcsv出力するExcelマクロ(UTF-8,SJIS)

$
0
0

Excelは、保存の形式をcsvにすると、csvファイルをエクスポートすることができます。ただ、列をカンマで囲んだり、export時にちょっとした加工を行うのは難しいですよね。

そこで、データをExcelで管理しつつ、それらをcsvとして出力するときには好きな個所を選択し、その部分のみを書き出せるようなマクロは重宝します。

結構いろんな仕事で使うことが多いので、自分用としても置いておこうと思います。使いたい方は自由にお使いください。

 

クラスモジュール「UTF8CSVWriter」

  Private name

  '
  Private Sub Class_Initialize()
    name = "UTF8CSVWriter"
  End Sub

  ' Save for UTF-8
  Public Sub WriteRange(fromRange, toRange, fileName)

    On Error Resume Next

    Dim txt As Object
    Set txt = CreateObject("ADODB.Stream")

    'Set data type to save TEXT.
    txt.Type = adTypeText
    'Set char code to UTF-8
    txt.Charset = "UTF-8"

    txt.LineSeparator = adCRLF

    txt.Open

    'Set range
    Set r = Range(fromRange, toRange)

    Dim rowNo As Integer
    Dim colNo As Integer
    Dim colNoMax As Integer

    rowNo = Range(fromRange).Row
    colNoMax = Range(toRange).Column

    For Each r2 In r

        colNo = r2.Column

        If rowNo <> r2.Row Then
            rowNo = r2.Row
        End If

        'Chr(34) is double quotes
        txt.WriteText Chr(34)
        txt.WriteText r2.Value
        txt.WriteText Chr(34)

        If colNoMax = r2.Column Then

            txt.WriteText vbNewLine
        Else

            'Chr(44) is comma
            txt.WriteText Chr(44)

        End If

    Next r2

    txt.SaveToFile fileName, 2
    txt.Close
    Set txt = Nothing

  End Sub

 

それを呼び出す側

Sub output_Click()

    Dim fileName As String
    fileName = Range("B1").Value & ".csv"

    thisPath = ActiveWorkbook.Path

    Dim fw: Set fw = New UTF8CSVWriter

    Call fw.WriteRange(Selection(1).Address, Selection(Selection.Count).Address, thisPath & "\" & fileName)

End Sub

 

 

例はUTF-8ですが、UTF8CSVWriterの文字コード指定部分をSJISにすると、SJISでcsvファイルが書けます。

高機能暗記カード・アプリ「Anki」で、覚える効率が飛躍的にあがった

$
0
0

何かを覚えるときに昔から使われてきた「暗記カード」。この年になって、再び使うことになろうとは、、、、。
昔と違って、今は、スマホを使った暗記カードアプリを使った方が持ち歩きにも便利ではないかと思い、いくつかのアプリを使ってみました。
ちなみに、私がこのたび暗記カードを使う目的は、語学学習のためです。
どの暗記カードアプリを使うかは、使う方それぞれの目的によって異なると思いますが、私は、以下の点を重視して選んでいます。

・暗記カードの作成(データの入力)はPCでできること。
・作成した暗記カードをスマホ(iPhone、Android)で使用できること。
・作成したカード側(PC側)と利用端末(スマホ側)の同期が容易であること。カードを少し追加するたびに、いちいちアップロード/ダウンロードやエクスポート/インポートするのはめんどくさいな。。。
・カードに音声ファイルを使用できること。
・忘却曲線を考慮した暗記トレーニングができること。

 

この結果、私の目的にかなっており、一番使いやすくて効果のあったのは、「Anki」というフリーのソフト(iPhone版は有償。ただ、払う価値あり。私は買いました。)でした。
このAnki、海外製のソフトですが、世界中の方が語学学習や講義内容の暗記、試験対策に利用しています。
また、メニューも日本語化されており、日本語で利用するのも問題ありません。
では、それぞれの観点について、「Anki」の特徴をご紹介します。

下の図は、左がWindows版、右がiPhone版の使用中のキャプチャです。

image          image

 

 

Ankiの便利なところ

・暗記カードの作成(データの入力)はPCでできること。
・作成した暗記カードをスマホ(iPhone、Android)で使用できること。
・作成したカード側(PC側)と利用端末(スマホ側)の同期が容易であること。

カードを少し追加するたびに、いちいちアップロード/ダウンロードやエクスポート/インポートするのはめんどくさいな。。。
AnkiはWindows版、Mac版、Linux版、iPhone版、Android版など、さまざまなOSに対応しています。
異なる端末にインストールされたAnki同士の同期は、AnkiWebと呼ばれるインターネット上のサイトを中継して行われるため、Window版で作成した暗記カードを
通勤時にスマホで利用するといったことが簡単にできます。
もちろんスマホで学習した結果もAnkiWebを通してPC版にも反映されますから、帰宅後にゆっくり、通勤時に中断した暗記学習を継続することが可能です。
なお、もちろんエクスポート/インポートにも対応していますので、他の人が作った暗記カードをインポートして利用することもできます。
AnkiのWebサイトでは、世界中の人が自作の暗記カードを公開しているので、それをダウンロードしてインポートすることで、手軽に他人の作ったカードを利用することができます。

 

 

・カードに音声ファイルを使用できること。

私が暗記カードアプリを利用する目的が語学学習であることは、上に述べました。
その中でも私が重視したのは「発音」です。
そのため覚えたい英単語や英文に対して、なるべくネイティブな人の音声のファイルを添付するようにしています。
Ankiでは、カードに対して音声などのメディアファイル、画像なども添付することができます。
他の暗記カードアプリが、テキストしか入力できないのに対して、この特徴はものすごいアドバンテージだと思います。
ちなみに、入力するテキストに対しても様々な装飾を行うことができます。
赤字や太字、右寄せ、左寄せなど、暗記の効率を高め、なおかつ楽しく暗記作業をおこなっていくためには、重要な特徴ですね。

 

 

・忘却曲線を考慮した暗記トレーニングができること。

暗記対象のカードの中には、覚えやすいカード、覚えにくいカード、どうしても覚えられないカードなど、脳に定着しているレベルにばらつきのあるカードが存在します。
それらのカードを毎回最初からめくっていくのはなんとなく無駄な時間だと思いませんか?
Ankiは、暗記しているカードを「もう一回」「普通」「簡単」の3段階で判定しながら学習します。
そして、「もう一回」と判定したカードは学習中に何度も表示され、また、後日、短いスパンで表示されることになります。
これは、覚えてない内容は数日中に再度記憶を試みることにより、脳への定着がよくなるという忘却曲線を意識したもので、これにより、覚えていないカードを重点的に学習することができることになるわけです。

 

 

 

Ankiのインストール

それでは実際にAnkiをインストールして、簡単な暗記カードをPCとiPhoneで同期をとりながら動かしてみます。
また、Ankiを使った暗記学習の流れがどんなものなのか、他の方が作成した暗記カードを取り込んで動かしてみましょう。

 

はじめに、Ankiのサイトに行って、ソフトをダウンロードします。

image

image

 

今回、私がインストールしたのは、Windows版でした。
通常のソフトと同じように、ダウンロードしたファイルをダブルクリックすればインストールできます。

インストールが完了したら、早速ソフトを起動してみましょう。
Ankiは、起動時にAnkiWebへの同期を行いますので、初回起動時には、AnkiWebへのアカウント登録が促されます。

 

image       image

 

上記で「登録」リンクを押すと、ブラウザでAnkiWebが開かれます。
ここで、「Sign Up」リンクを押下して、アカウントの作成を行います。

image

 

 

アカウントが作成できたら、下記ダイアログに作成したアカウントとパスワードを入力してください。
Ankiの画面が表示されるはずです。

 

 

image      image

 

 

早速自分で暗記カードを作成していってもよいのですが、まずはAnkiでどんなことができるのかを確認する意味で、既に他の人が作ってくれている暗記カードのデッキを取り込んでみましょう。

他の人が作成してくれたデッキは、先ほどのAnkiWebにたくさんアップロードされています。
https://ankiweb.net/shared/decks/

ここに行ってみると、さまざまなカテゴリがあることが分かりますね。

image

 

image

image

 

これらの中から、「必ず使える英会話(初・中級) 英語」を選んでみます。
上記「Download」リンクを押してダウンロードしたデッキファイルを、Ankiの「読み込む」メニューを選択して読み込んでみましょう。

 

 

image

 

image     image

 

読み込み後は単語帳(デッキ)名をクリックし、「学習する」ボタンを押すと、暗記を開始することができます。

英語リスニング用の「音読パッケージ」素材を自分で作っていく方法

$
0
0

みるみる英語力がアップする音読パッケージトレーニング(CD BOOK)

英語を学んでいる方の間ではもはや定番と言ってよい、音読パッケージ シリーズ。

 

比較的楽に読み解ける英文を、聞き、理解し、音読することを繰り返すことで、「英語体質」を身に付けることができます。

 

このシリーズは、左の「みるみる」を初級として、⇒「ぐんぐん(中級)」⇒「もっともっと(上級)」と進んでいくのですが、これらをこなした後は、他の教材を探したくなってきます。

 

似たような書籍はいくつか出版されているので、それを購入しても良いのですが、書籍の中でも述べられているように、慣れてきたら、大量のリスニングを行い、その一部を音読パッケージすることがオススメされているので、できれば大量の素材を無料でGetできないかなーと思っていました。

 

で、ネットでそれを見つけるべく、探したのですが、なかなか適当なサイトがありません。

「適当な」というのは、音読パッケージ用の素材に必要な次の2つの条件を満たしつつ、興味ある分野の記事で(聞いていて楽しいのが一番続けやすい!)、スピードや聞きやすさも自分に合っている(私は、イギリス英語とアメリカ英語をごちゃ混ぜにきいてトレーニングできるほど実力がないので。。)ということです。

 

素材に必要なモノって?

・音声ファイル・・・リスニングのための音声ファイルです。ニュースサイトは数多くありますが、通勤、通学中や空いた時間に何度も繰り返して聞くには、ストリーム形式ではなく、音声ファイルの形式にして、iPhoneなどのスマホに入れておくと便利です。

・英文スクリプト・・・リスニングする音声の英文(字幕)です。音読パッケージではただ単に聞き流すのではなく、聞き取れたかどうかをきちんと確認しながら進めるため、音声に対応する全英文のスクリプトが欲しいところです。

さて、素材としては上記の2つが欲しいところですが、条件にぴったり合うものがなかったので、自分で作成することにしました。このやり方で自分なりに素材を作成出来れば、あとは無限に作成も可能になります。

 

 

音読パッケージ素材の作り方

では、私の音読パッケージ素材の作り方を書いていきます。

まず、適当なサイトを見つけます。サイトは、

①パソコンで音声が聞けること。

②その音声の英文が掲載されていること。

が条件です。音声に対する英文があれば何でもいいので、Youtube等、アップロードされている動画で、字幕のあるものでも構いません。

①の「パソコンで音声が聞ける」というのは重要です。というのも、パソコンで再生させた音声をそのまま録音して音声ファイルを作るためです。

 

以下では、英文のネット記事の原文をネイティブなナレーターが朗読してくれるサイト、「UMANO」を例に説明します。

 

まず、サイトの音声をWindowsで録音するための設定を行います。この作業が、今回の方法の中で最大かつ最重要な山場です。

というのも、最近のWindows7やWindows8では、録音のためのドライバが用意されていないことが多いので、「録音」という作業に苦労することが多々有ります。私も結構苦労したので、その顛末を残しておこうかと。

 

録音に使用するソフト

録音に使用できるフリーソフトにはいろいろありますが、有名で使いやすいものとして、私は「Audacity」を使っています。

image

インストールはサイトからダウンロードしてきてダブルクリックです。

起動後、上図の赤枠の箇所で、「スピーカー」に音のなっているデバイスを、マイクに録音の入力デバイスを指定します。

 

 

録音のためのPCの設定

一般的には「コントロールパネル」⇒「サウンド」のプロパティを開いて

image

「無効なデバイスの表示」にチェックを入れ、「ステレオミキサー」が表示されるのであれば、それを録音の入力として使用すれば問題なく録音可能です。

無効になっている録音デバイスを有効化

 

しかし、前述したように、最近のノートPCにはステレオミキサーが無いことが多く、私のPCにもありませんでした。そのような場合は、仮想的なサウンド・ドライバをインストールし、それをスピーカーとマイクに指定することになります。なかなか無料の仮想サウンド・ドライバを見つけられませんでしたが、「AV Voice Changer Software」というのが使えました。シェアウェアですがサウンド・ドライバ部分は(現在のところ)試用期間が終わってもそのまま使用できるようです。

インストールは、本体のソフト(声をチェンジできるソフトです。結構興味ありますね。おもしろい。。)のインストール終了後、ドライバのインストールもするかを聞かれますので、同意して、インストールします。

インストール後「コントロールパネル」⇒「サウンド」を開くと以下のようになっています。

 

「再生」タブ

スピーカー Avnex Virtual Audio Device が増えている。

image

 

「録音」タブ

マイク Avnex Virtual Audio Device が増えている。

image

 

これで、録音の準備ができました。「Audacity」のスピーカーにそれぞれスピーカーとマイクのAvnex Virtual Audio Deviceを指定します。また、録音の直前にはそれぞれのデバイスを上図の赤枠の設定のように「既定のデバイスとして設定」しておきます。

この設定により、「UMANO」や「Youtube」のサウンドが

「スピーカー Avnex Virtual Audio Device」で、再生され、「マイク Avnex Virtual Audio Device」を経由して録音されることになります。

image

 

用意が整ったら、Audacityの録音ボタンを押した後、UMANOなど、録音させたい対象の再生を行います。音が鳴らなかったら、成功です。※スピーカーで鳴る音が仮想デバイスに流れているので。

きちんと再生が行われ、録音されているかは、Audacityの波形が刻々と変わるので確認できると思います。

※音われするような場合は、スピーカー側の音量を小さめに設定してください。

image

 

 

再生と同時に音も聞くには

「猿ちぃ04」などのルーティングソフトが使えます。仮想ドライバに流れた音を、PCのスピーカーにリアルタイムでルーティングしてあげれば、録音しながら音も聞けるというわけですね。

そのため、

INに「マイク Avnex Virtual Audio Device」

OUTに通常使っているスピーカー

を指定して、INからOUTに音を流します。「Start」ボタンを押すのを忘れずに。

image

 

 

素材にまとめる

少し長くなりましたが、こうやってAudacityで録音したものを、ファイルとして保存します。記事原文はUMANOのページからリンクされているので、そのリンク先のサイトに行けば、コピーできますね。

image

↓↓↓↓↓↓↓

image

 

なんだか、PC上で再生した音を録音する方法とした方が良かったような。。。

Linuxでの32bit/64bitの確認方法(CPU、カーネルのBit数)

$
0
0

契約しているVPSサーバ(OSはLinux)が、64bitなのか32bitなのかを再確認する必要があったため、コマンドを調べていたが、いくつか方法があり、少し紛らわしかったため、以下にまとめてみた。

Linuxで、cpuとカーネルについての情報を表示するコマンドは、以下のようなものがある。

 

getconf LONG_BIT コマンド

これが一番簡単で分かりやすい。Linux のカーネルの bit数を確認できます。

表示された数値が32なら32bit。64なら64bitということです。

$ getconf LONG_BIT

64

 

 

uname コマンド

コンピュータのシステム情報を表示します。「-a」オプションだと全てのオプションで得られる情報を表示しますが、「-m」オプションでハードウェア情報の絞ったほうが分かりやすいかもしれません。

この結果がx86_64だったら64bitになります。i686等だったら32bitです。

$ uname –a

Linux plus-idea.net 2.6.18-028stab091.2 #1 SMP Fri Jun 3 00:02:40 MSD 2011 x86_64 x86_64 x86_64 GNU/Linux

$ uname -m

x86_64

 

 

/proc/cpuinfo ファイル情報の表示

このファイルには、CPUの情報が格納されています。この情報の中で、「flags」の項目を確認し、そこに、「lm」という値があれば、64bitだということになります。ちなみに、「lm」は「Long Mode」のことで、64bitマシンのことになります。

似た値として、「lahf_lm」も表示されることがありますが、これは、「Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode」のことで、直接は関係ありません。

なお、マルチコアの場合はそれぞれのCPUの情報が表示されますので、複数回表示されることになります。この場合、大量の情報が表示されるので、grepで絞ったほうが良いかもしれません。

grep flags /proc/cpuinfo

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc nonstop_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm

動画と字幕(srt)ファイルから、字幕付き動画を作成する方法

$
0
0

ふと、英語の勉強のために、英語の動画を英語字幕付きで視聴しようと考えました。コンピュータ上で見る分には、動画ファイルと、字幕ファイル(.srtの拡張子のファイル)を一緒のフォルダに配置すれば、GOMPlayerなどで見ると、字幕を一緒に表示してくれます。

ただ、通勤中や外出先でも気軽に視聴するために、iPhoneなどの携帯でも閲覧できるようにしたいと思います。そのためには、携帯用の動画に変換する際に、同時に字幕も焼きこんであげればいいのですが、なかなか、思ったようにいかなかったので、忘備録としてここに残しておこうかと。

そもそも、字幕ファイルの.srtですが、字幕表示のON/OFFを切り替えられるように外部に切り出してあるファイルの為、動画に焼きこむには、何かツールを使ってあげる必要があります。

いろいろ試した中では、MediaCoderが一番使いやすく、確実でした。

早速、その使い方を。

まず最初にソフトをダウンロードしてきます。ここなんかが良いと思います。

その後、ソフトを起動して、動画ファイルをドラッグ・アンド・ドロップします。

image

そうしたら、「Subtitle」タブを選択して、「Subtitle File」で、対象のsrtファイルを指定します。ここまで完了したら、あとは、変換するだけです。

image

こんな感じで字幕付きの動画ファイルができていることでしょう!


Salesforceへのデータ移行に必須の外部ID!オブジェクトIDを使わないでデータ参照する方法①

$
0
0

Salesforceのデータ移行で問題となってくるのが、Lookup(参照項目)項目に入っているオブジェクトIDの扱い。

SalesforceにおけるオブジェクトIDの概念と、それをどのように参照しているかを理解していないと、参照項目を含んだオブジェクトを扱うときに思わぬ苦労をすることになります。

この記事では、オブジェクトIDと参照項目、そして、それらの移行を便利にする外部IDの使い方について説明したいと思います。

 

オブジェクトIDと参照項目って何?

Salesforceでは、各オブジェクトに対して、組織内の全オブジェクトでユニークなオブジェクトIDという18桁の文字列が割り振られます。

これらのIDは、そのオブジェクトが生成された時に採番されるため、画面からオブジェクトを作成したときや、データローダーでデータをロードした時に割り当てられ、その前に知ることはできません。

また、同じデータを別々の組織にロードした場合、オブジェクトIDは各組織で採番されるので、例えば同じ担当者コードを持っていたとしても、それらのオブジェクトIDは各組織で異なります。

 

image

また、各オブジェクトで参照(Lookup)項目を持っていた場合、それらの項目には、実際にはこの「オブジェクトID」が入っています。

上記の例でいうと、担当者オブジェクトの「取引先」の参照項目にはそれぞれの組織の取引先のオブジェクトIDが入っていることになるというわけです。

 

参照項目を移行するには?

ロード時にしかわからない参照項目を含んだオブジェクト「担当者」を移行するにはどうすればいいでしょうか。方法は大きく2つあります。

 

方法① 一度エクスポートしてからロードする

この方法は、初めに取引先マスタをロードし、オブジェクトIDが振られた後、いったんエクスポートして、取引先IDからオブジェクトIDを割り当ててから、担当者マスタを取引先のオブジェクトID付きでロードします。

DBを使うのでああれば担当者IDでJoin、エクセルを使うのであれば、VLookupなどの関数を使用することになります。

 

方法② 外部IDを使う

Salesforceでは、参照項目にオブジェクトIDを埋め込まなくても、ロード時にオブジェクトIDを名前解決してくれる非常に便利な仕組みがあります。つまり、上記の例でいうと、担当者マスタの項目「取引先」に取引先ID(AC-002等)を割り当てれば、ロード時に、「00128000008UYmSAAW」または「00127781066EZePIEQ」といったそれぞれの組織のオブジェクトIDに変換してロードしてくれるということです。

これって、考えてみると画期的なことで、方法①だと本番とSandboxで異なるオブジェクトIDを扱わなくてはいけなかったのが、どちらも同じマスタを管理していればいいことになります。

 

外部IDを使ったマスタ管理方法

それでは、早速、外部IDを使ったマスタ管理を行ってみましょう。最初は少し迷うかもしれませんが、慣れるとそれ無しではいられなくなりますよ!

外部IDとは

外部IDは、通常外部システムで持っているようなIDです。例えば取引先IDや商品IDなど、マスタでキーとなるような項目であることが多いです。ユニークである必要はありませんが、その性質上、ユニークであることが多いと考えられます。

では、外部IDを定義すると何が便利になるでしょうか?以下の図をよく見てください。

image

 

①Upsertのキーとして使える

外部IDはデータローダーやほかのツールでデータをロードするときのUpsertのキーとして指定できます。オブジェクトIDではなく、外部ID項目として指定した取引先IDや商品IDをキーにすれば、組織に依存しないマスタ管理ができますよね。

 

②データロード時にオブジェクトIDを解決するキー項目として利用できる

これ、すごく便利です。

例えば取引先マスタに外部キー「取引先ID」を設定して、データをロードしておきます。

次に、担当者をロードするときには、「取引先への参照」の項目には「オブジェクトID」ではなく、「取引先ID」を設定します。

そして、ロード時の指定で、「取引先」の参照の名前解決に「取引先ID」を指定すると、データがロードされた際に、そのオブジェクトIDをセットしてくれるということです。(外部IDとして定義しておかないと、この指定はできません。)

 

では、次回は実際に外部IDを定義し、それを利用したデータ移行、マスタ管理を行っていきましょう。

Salesforceへのデータ移行に必須の外部ID!オブジェクトIDを使わないでデータ参照する方法② 実践編

$
0
0

前回は、Salesforceのマスタ管理やデータ移行で、外部IDを利用するとすごく便利だというお話について、詳しく説明しました。今回はいよいよ実践編になります。

前回と同じく、取引先マスタと、取引先を参照(Lookup)項目として持つ、担当者マスタを例にします。

取引先マスタはSalesforceの取引先(Account)オブジェクトに、担当者マスタは、取引先責任者(Contact)オブジェクトに投入することにします。

 

取引先(Account)への外部ID項目の定義

最初に、取引先オブジェクトに、外部ID項目を作成しましょう。項目名は「Ex_Account_Key__c」とします。

 

テキスト型で定義。

image

 

ユニーク性を保つために、「ユニーク」->「値の重複を許可しない」にチェックを入れます。

また、「外部ID」にもチェックを入れましょう。

image

 

下記のように、外部ID、定義できましたか?

image

 

 

取引先(Account)へのデータのロード

では、取引先にデータをロードします。今回はデータローダーを使いました。マスタのサンプルとして、このファイルもつけましたので、参考にしてください。(このまま別の組織でも使えますので、ご自由にお使いください。)

データ構造としては、こんな感じです。

image

image

image

Upsertを選択して先に進み、取引先オブジェクトを選択して「Next」ボタンを押すと、下記のように、Upsertのキーを選択する画面になります。通常、IDが選択候補として表示されますが、先ほど定義した外部ID「Ex_Account_Key__c」も候補になっていますね。今回はそれを選択します。つまり、UpsertにオブジェクトIDは必要なく、マスタのcsvにもオブジェクトIDを保持する必要がないということです。

image

 

次の画面では、「related object」を選択します。これが、今回外部IDを追加したことにより、表示されることになったのですが、その効果は後程、別の場面で発揮されますので、今回は、そのまま何もしないで進みます。

image

 

csvとSalesforceの項目をマッピングします。「Ex_Account_Key__c」に取引先IDを、それ以外は適切にマッピングしましょう。

image

これで、取引先オブジェクトへ、外部ID付きでデータがロードされました。

 

取引先責任者へのデータロード

では、いよいよ取引先責任者へデータロードを行います。取引先は参照項目として「取引先への参照」を持っています。ここには、取引先IDをセットしておきます。なお、外部ID「Ex_Contact_Key」はあらかじめ作成しておきましょう。

image

これをUpsertして行きましょう。

image

 

Upsertのキーは新たに作成した外部キーを指定。

image

 

ここで、Related ObjectのAccountに取引先の外部IDである「Ex_Account_Key__c」を設定します。これで、

「Account:Ex_Account_Key__c」という対応ができ、取引先責任者の「Account」という項目には取引先オブジェクトの「Ex_Account_Key__c」が関連付けられます。つまり、次のマッピング画面に出てくる「Account:Ex_Account_Key__c」に取引先の外部キーが指定されたら、ロード時に参照を解決して、外部キーからオブジェクトIDを取得してねという指定をしたということです。

重要なのは取引先オブジェクトに外部キーを作成したからこれが可能になったということです。

image

 

先に述べた通り、マッピングで、csvの「取引先への参照(Account_Key_For_Ref)」項目をに「Account:Ex_Account_Key__c」をマッピングします。

image

image

 

「OK」ボタン押下。

image

 

では、上記のマッピングでデータをロードします。

以下のように、取引先担当者の「取引先」の参照項目に、csvで指定した取引先が入っていることが確認できます。

image

 

いかがでしたでしょうか。あらかじめ外部IDを定義しておけば、Salesforceの組織に依存しないマスタ管理が可能なことがお分かりいただけたと思います。

すごく便利なので、ぜひマスターして取り入れてください。少しわかりにくいので、質問あればお気軽にコメント残すか、問い合わせフォームから問い合わせくださいね。

ガバナ制限を回避した大量データの一括更新にも便利-Batch Apexの使い方

$
0
0

Salesforceのレコードのクレンジングやアーカイブなど、複雑な夜間バッチ実行では、大量のデータを処理することになります。

通常、SFDCでのクエリ実行にはガバナ制限が適用され、大量のデータを処理する場合には、特に気を付けなければいけません。

そこで、Batch Apexという仕組みを使うと、制限が少し上がるほか、処理を細かい単位に分けて実行できるため、ガバナ制限を回避下ロジックを記述しやすくなります。最大の実行可能なレコード件数は5千万件となります。

また、Batch Apexは、あらかじめ登録して定期的に時刻起動するよう設定することもできますので、文字通り夜間バッチとして利用することもできます。

 

Apex Bachの構成

バッチを作成するには、Database.Batchable Interfaceを実装する必要があります。実装するには、以下の3つのメソッドの記述が必要です。

①start method
global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContext bc) {}

このメソッドで、処理対象のレコードを取得します。select文でレコードを抽出し、QueryLocaterかIterable型のリストにすれば、そのリストに対して処理が行われます。

 

②execute method
global void execute(Database.BatchableContext BC, list<p>){}

このメソッドで、実際の処理が行われます。startメソッドで取得したのオブジェクトの型のListと、バッチ実行のコンテキストを引数とします。

 

③finish method
global void finish(Database.BatchableContext BC){}

このメソッド内でバッチの後処理を行えます。メールを送信したり、後続のバッチを起動したりすることに利用できます。バッチコンテキストから起動されたバッチのIdを取得することもできます。

  AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed,
      TotalJobItems, CreatedBy.Email
      FROM AsyncApexJob WHERE Id =
      :BC.getJobId()];

 

 

Apex Batchクラスの作成

では、シンプルなクラスを書いてみます。取引先担当者の項目を更新するバッチです。

public class ContactUpdateBatch implements Database.Batchable, Database.Stateful {

    private Integer recordCount {get; set;}

    public ContactUpdateBatch() {

        this.recordCount = 0;
    }

    public Database.QueryLocator start(Database.BatchableContext BC) {
        String query = 'SELECT Id FROM Contact';
        return Database.getQueryLocator(query);
    }

    public void execute(Database.BatchableContext BC, List scope) {
        for (Contact cont : scope) {
            cont.Lastname = 'Cont_Changed';
            this.recordCount++;

        }
        update scope;
    }

    public void finish(Database.BatchableContext BC) {

    }

}

 

上記クラスを実行するにはいくつか方法があります。

簡単な方法は、開発者コンソールから以下の文を実行する方法です。テストしたり、ワンショットの作業として行うにはこの方法がいいでしょう。executeBatch()に渡す引数のうち、後ろの200はバッチサイズで、一回の処理で実行する件数で、抽出されたレコード件数は、このバッチサイズで分割されて処理されます。最大2000を指定できます。この単位でガバナのカウントがリセットされるので、ガバナ制限に引っかかりにくいわけですね。

ただし、1つのバッチの実行時間は10分以内である必要がありますので、気を付けましょう。

ContactUpdateBatch batch = new ContactUpdateBatch();
Database.executeBatch(batch, 200);

 

image

image

すると、実行結果のログが以下のように表示されます。

image

 

もうひとつは、バッチとしてスケジューラに登録する方法です。

global class Scheduled_batch implements Schedulable {

  private final Integer BATCH_SIZE = 200;

  global void execute(SchedulableContext ctx) {
      ContactUpdateBatch batch = new ContactUpdateBatch();
      Database.executeBatch(batch, BATCH_SIZE);
  }
}

上記のように、Schedulableインターフェースを実装したクラスを作成して、スケジューラ登録します。登録方法は2通りあります。

 

①設定画面から登録

ビルド –> 開発 –> Apexクラス –> Apexをスケジュール

image

image

 

②プログラム的にスケジューラに登録

ただし、上記の方法だと、1時間単位でしか実行時間の指定ができないため、もっと細かい単位での指定は、プログラム的に行う必要があります。下記ソースを開発者コンソールから実行することで、登録が可能です。


Scheduled_batch sb = new Scheduled_batch();
String sch = '0 20 10 ? * MON-FRI';
String jobID = system.schedule('Job名', sch, sb);

 

上記の’0 20 10 ? * MON-FRI’はクローン式と呼ばれる記述方法で、スケジュールの記述を行います。この例は「月曜から金曜まで毎日10時20分に実行」という意味ですが、詳しい記述方法はSalesforceのこのページを参照すると良いでしょう。

なお、クローン式は、左から、秒、分、時、日、月、曜日、年を表しています(年は省略可)

image

上記が、登録後の結果で、「ジョブ –> スケジュール済みジョブ」から確認できます。

Visualforceで、オブジェクトの検索→一覧画面をサクッと作る方法

$
0
0

How can I make a simple serach page by custom “like” query?

Salesforceで業務システムを開発していると、各オブジェクトを自由に検索して一覧表示し、詳細画面に遷移したいというニーズは多いですよね。

特に、検索は、ユース・シーンによって、いろいろで、Salesforceでデフォルトで用意されているグローバル検索や、イニシャルでの検索では対応できず、オブジェクト名や任意の項目をLike句で検索したいという場合も多いです。

そういうオブジェクトが多いと、VisualForceの画面で検索画面を作成する手間も馬鹿になりません。

そこで、なるべく少ない手間でそんな画面を作ってみます。

Controllerの作成

少ない手間とするには、なるべくStandardなコントローラを利用するのがいいですね。

public with sharing class MyProductSearchController {
   public list  prds {get;set;}
   public string strCondName {get;set;}
   public MyProductSearchController(ApexPages.StandardController controller) {
   }
   public void search(){
     string searchQuery='select name,id from Product2 where name like '%'+strCondName+'%' Limit 100';
     prds= Database.query(searchQuery);
   }
   public void clear(){
     prds.clear();
     strCondName = '';
   }
}

 

画面から名前の一部を条件として渡して、商品名に対してLike句で検索した結果をListに保持するクラスとしましょう。

 

Visualforceページの作成

次に画面を作成します。



    
        
        
        
        
        
        
        {!prd.Name}
        
        
        
        
        
    

画面側はシンプルですね。なるべくSalsforceの標準的な画面に似せて作ろうと思います。

上記のコードで、

image

のような、検索→一覧画面ができます。

クエリ部分は自由に書き換えられますので、便利ですよ!

windowsにffmpegをインストールする

$
0
0

ffmpegは、フリーのソフトでありながら、

・動画や音声のコンバート(数多くの形式に対応している。)

・動画や音声の合成や抽出

・コマンドラインインターフェース(CUI)のため、バッチ処理などで利用できる

などの特徴を備えており、動画や音声を加工する際に、非常に便利なツールです。

 

ダウンロード

本家のサイトは以下のような感じですが、画面左か、真ん中の「Download」リンクを押しましょう。

image

すると、OSごとの大きめのアイコンがあるので、Windowsと思しき青いアイコンを選びます。

image

すると、下に、Windows Buildsへのリンクが出ますので、クリックしましょう。

image

すると、Windows用のソフトを配布しているサイトにたどり着きます。直接ここに来てもいいです。

このページの中央に、ダウンロードリンクがあります。

少しわかりにくいですが、「Static」バージョンで、お使いのPCに応じて、32bitか64bitのどちらかを選択してダウンロードします。

※ファイルは、「7zip」という形式で圧縮されていますので、もっていない人は、ここなどから7zipを回答できるソフトをダウンロードしましょう。

image

ダウンロードしたら、適当なディレクトリで解凍します。これでインストール完了です。解凍したディレクトリ名が「ffmpeg-20151122-git-3c110b0-win64-static」のように長い場合は、「ffmpeg」のように変更しておいてもいいです。

このディレクトリの下のディレクトリ「bin」の下に本体がありますので、「<解凍したディレクトリ>bin」をpathに入れておくと、便利です。入れない場合は、コマンドプロンプトで、このディレクトリに移動すると、利用できます。

> cd <解凍したディレクトリ>bin
> ffmpeg

 

 

基本的な使い方

コマンドプロンプトで以下のようなコマンドを打って作業を行います。

ffmpeg –i <入力ファイル名> <出力ファイル名>

・mkv形式の入力ファイルをmp4形式に変換

>ffmpeg -i input.mkv output.mp4

 

・mp4動画の11分から10秒間切り出して、別ファイルに出力

>ffmpeg -i input.mp4 -ss 00:11:00.0 -t 00:00:10.0 output.mp4

 

・音声ファイルの1分から2分までを取り出して、別ファイルに出力

>ffmpeg -i input.mp3 -ss 1:00 -to 2:00 output.mp3

 

・複数の動画/音声ファイルを結合

>ffmpeg -f concat -i file-list.txt -c copy output.mp4

file-list.txtには、複数のファイルを、以下のような形式で列挙する。

file ‘C:MyDownloadsoftffmpegbinoutput3.mp3’
file ‘C:MyDownloadsoftffmpegbins1.mp3’
file ‘C:MyDownloadsoftffmpegbinoutput4.mp3’

 

・無音のファイルを出力する(下記の例は5秒の無音ファイル)

>ffmpeg -f lavfi -i "aevalsrc=0|0:d=5" output.wav

無音のファイルを出力してどうするのかって?複数の曲を適度な無音時間で結合したりとか、「無音」って結構重宝するんですよ。。

でも、単純に上記で無音ファイルを出力すると、codecが異なるので、無音部分が無視されてしまいます。異なるcodecのものを連結するには、

>ffmpeg -i output3.mp3 -i silence.mp3 -filter_complex "concat=n=2:v=0:a=1" output_c.mp3

のようにする必要があります。

同じ形式の無音ファイルを作るには、

>ffmpeg -f lavfi -i "aevalsrc=0|0:d=5" -acodec libmp3lame -ab 64k -ar 22050 silence.mp3

のように指定してあげる必要があります。するとまとめてリストファイルで連結できますよー。

Viewing all 247 articles
Browse latest View live