preload
2 月 24

Ubuntuでは、rootアカウントが有効化されていません。

rootアカウントの有効化が必要になることは、滅多にありません。Ubuntuシステムの管理者として実行しなければならないことのほぼ全てはsudoもしくはgksudoで実行できます。もし、どうしてもrootでのログインが必要である場合は、以下のコマンドにより、rootログインシェルをシミュレートすることが最善の代替手段となるでしょう。とあります。

そのため、管理者として実行する権限はsudoで基本的に実行します。
sudoは /etc/sudoersのパーミッションが0440でないと実行できなくなるため、etc以下のパーミッションを一斉に変更したり(私はそのパターン)/sudoersのパーミッションを変更すると、以下のようなエラーが出てsudoが実行できなくなり、困ってしまいます。

sudo: /etc/sudoers is mode 0777, should be 0440

リカバリーモードでログイン
して、/etcディレクトリで/sudoersフォルダのパーミッションを変更し、再起動します。

# chmod 0440 sudoers
# reboot

Ubuntuでパーミションを変更する際の注意でした。

関連する投稿

Tagged with:
2 月 21

eclipseでForce.com projectを開発するための設定を行います。
今回ダウンロードするものは、
・eclipse
http://www.eclipse.org/downloads/
こちらからEclipse Herios3.6.1(Eclipse for PHP Developersにしましたが、他のものでも問題ないようです)
・JREまたはJDK
(Javaプログラムの実行環境ですが、eclipseを起動するのに必要)
・Force.com IDE
Eclipseをインストールしたあとにインストールする、Force.com Projectを開発するためのEclipseプラグイン

の3つです。
まず、
http://www.eclipse.org/downloads/
より、Eclipse Herios3.6.1をインストールし、任意の場所に解凍し、起動します。

eclipse

eclipse

Eclipseをダブルクリックして起動すると、JREまたはJDKがないためエラーが出て起動しません。

error

以下、Ububru10.04でのJREのインストールですが、システム>システム管理>Synapticパッケージ・マネージャ
でJREまたはJDKを検索してインストールします。

JDKインストール

おまけですが、JREとJDKの違い。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19574&forum=12

JREインストール

インストールされる一覧が出るので確認して、実行します。

install

これでEclipseが起動できるようになりましたので、起動してみます。
起動したら、Force.com IDEをインストール。
Eclipse>Help>Install New software に、

http://wiki.developerforce.com/index.php/JP_Force.com_IDE_Installation_for_Eclipse_3.3.x

http://wiki.developerforce.com/index.php/JP:Force.com_IDE

上記を参考にForce.com IDEをインストール
上記はEclipse3.3.Xでの例なのでやや異なります。
Add Repositry に、
Name:Force.com IDE
URL:http://www.adnsandbox.com/tools/ide/install/

としてロケーションを追加し、Force.com IDEをインストール。Eclipse右上のPerspectiveの選択肢にForce.comが追加されます。

PerspectiveでForce.comを選択し、左側のPerspectiveを右クリック→New Project で Force.comを選択します。

New Project

Projectのメールアドレス、パスワードを入力して「完了」を実行すると、Perspective上にプロジェクトが作成されました。

関連する投稿

2 月 02

Ubuntu10.04にeclipseとsubclipseをインストールし、eclipseを起動すると、
Failed to load JavaHL Library というエラー。
※エラーは出ているが、eclipse上でチェックアウトやコミットができなくなっている訳ではない。

JavaHLはWindowsでeclipseとsubclipseを利用するときに必要だそうですが、Ubuntuに入れてみることにしました。

$sudo apt-get install libsvn-java

で、JavaHLをインストール。eclipseの起動オプションにlibsvn-javaを追加します。
eclipse.iniに以下を追加。

$ -Djava.library.path=/usr/lib/jni

eclipse.iniに追加

eclipse.iniに追加

こんな感じ。
これで、/usr/lib/jni/libsvnjavahl-1.soをeclipse起動時に読み込み、subclipseが使えるようになります。
Failed to load JavaHL Library
のエラーは出なくなりました。

関連する投稿

Tagged with:
2 月 01

第1回Force.com projectのSubversion管理システム構築
で、Force.com projectの保存方法の特徴を分類しました。実際にSubversionサーバを利用して、Force.comのクラウドサーバと併用してチームで開発するための環境を構築していきます。

今回は、Ubuntu10.04にSubversionサーバを立てるところまで。
Subversionのインストール

$ sudo apt-get install subversion subversion-tool libapache2-svn

/homeで、

$sudo mkdir ~/svn/ 

として、/svnディレクトリを作成します。

$ sudo svnadmin create ~/svn/test

として、/svn 以下に、testというプロジェクトを作成します。

webブラウザから/svn/testの中身を確認できるように、Apacheのwww-dataというユーザに/svn/testの所有権を付与。

$ sudo chown -R www-data.www-data ~/svn/test

Apacheの再起動(一応)

$ sudo /etc/init.d/apache2 restart

Ubuntu上でwebブラウザを立ち上げ、http://localhost/svn/test

で、以下のような画面になれば、testプロジェクトの作成が完了です。

Subversionにtestプロジェクトを追加

Subversionにtestプロジェクトを追加

関連する投稿

Tagged with:
1 月 31

salesforceのCRMアプリケーション開発インフラである、Force.comプラットフォームをチーム開発環境に適応しました。

Using Force.com with Subversion for Team Developmentという英語マニュアルが存在するので、主にこちらを参考に、自社利用向けにアレンジしました。

Force.com project

Force.com project

・Subversion+Trac
・eclipse(Force.com project)

を利用します。

詳細は追々記述していきますが、「eclipseでForce.com projectの開発がしたい」「開発したソースコードはSubversionで差分含めて管理したい」「チームで開発したい(ソースコードを共有したい)」という要件を満たすのは大変でした。Force.com projectには、「ソースコードを共有する」というような動作が3つあります。

・Save to Server
・Deploy to Server
・Commit

の3つです。

save to server or deploy

save to server or deploy

・Save to Server
salesforcfeのサーバに保存。ソースコードはsalesforceのクラウドサーバ上に保存される。(ローカル環境向き)
・Deploy to Server
salesforcfeのクラウドサーバに保存され、利用可能状態になる。(実行環境向き)バックアップが取得できる。
・Commit
Subversionサーバに保存される(Subversionサーバへのソースコードの共有)
(注)
Eclipse メインメニューの[Project] → [Build Automatically]が選択されている場合は、プロジェクトへのファイルの追加が完了すると自動的にプロジェクトのビルドが実行さるので、チェックは外しておく。

commit

commit

チームでの開発環境を設計するのに、上記3つのふるまいの違いを理解するのに苦労しました。
今も、Sandboxの内容を実行環境にDeployする際のエラーが解決できればと思っています。

開発の流れとして、
個々人の環境で開発したものは「Save to Server」によって個々人で保存し、動作に問題なければ「Commit」してSubversionサーバで共有し、チームでの差分ごと管理します。Subversionサーバの内容は、「Deploy」することによって運用環境に適用します。今の時点では、「Save to Server」と「Deploy」の役割に区別がありませんが、「Deploy」は実行時のエラー表示があり、バックアップが取得できます。

以上のようなルールで、Force.com projectのSubversion管理システムを構築していきます。

  

保存方法 Force.comのcloudサーバ Subversionサーバ バックアップ
Save to Server × ×
Deploy to Server ×
Commit × ×

Force.com Project保存方法まとめ

関連する投稿

Tagged with:
11 月 09

PCのニュースサイトなどによく見られる、「ツイートする」ボタンの実装です。
クリックすると、と自分のtwitter.comへ、タイトルとページリンクを送ってくれます。

twitter

↑こんな感じに。
アドレスバーには、投稿したい文字列をURLに渡しているのが分かりますか。
リンクにURL化したテキストをパラメータとして渡すだけです。

http://twitter.com/home?status=XXX

のXXXの部分に、パラメータ化した文章を渡すだけ。

なので、

<?php $url = " RT ここにつぶやきたい文章。 #hashtag"; ?>
<a href="http://twitter.com/home?status=<?php echo urlencode($url); ?>">
つぶやく
</a>

とすると、
※urlencodeは、テキストをURLにエンコードする関数

よく見る、ツイートボタンが作れます。

hash

簡単なんですよ。

モバイルの場合は、

http://twtr.jp/status/create/?text=XXX

つぶやくリンクのURLを、↑というURLにするだけです。

<?php $url = " RT ここにつぶやきたい文章。 #hashtag"; ?>
<a href="http://twtr.jp/status/create/?text=<?php echo urlencode($url); ?>">
モバイルでつぶやく
</a>

で、携帯サイト向けの「twitterでつぶやく」ボタンができます。

関連する投稿

Tagged with:
5 月 25

ページ表示2秒でイライラし始め、3分の1は「もういいや」となる

というわけで、ウェブサイトの表示速度を見直してみます。
上述の記事の通り、ユーザビリティはもちろんのこと、英語圏の、Googleの検索結果のランキングの決定要因にもサイト速度が加わっているとのこと。(日本はまだみたいです。)

Using site speed in web search ranking-Google Webmaster Central Blog

Webサイトを詳細に分析し、ランク評価するツールの
firebug
Yslow
YslowJP(日本語) 私のfirefox3.6.3では使えません。

解析結果のみほんですが
<本ブログ>
jyslow

<Googleのトップページ>
googley

それぞれ、総合のグレードランクはCとEです。
Aにすべく様々な工夫をします。

Make fewer HTTP requests
Use a Content Delivery Network(CDN)
Add Expires headers
Compress compornents with gzip
Put CSS at top
Put JavaSclipt at bottom
Avoid CSS expression
Make JavaSclipt and CSS external
Reduce DNS lookups
Minify JavaScript and CSS
Avoid URL redirects
Remove duplicate JavaScript and CSS
Configure entity tags(ETags)
Make AJAX cacheable
Use GET for AJAX requests
Reduce the number of DOM eklements
Avoid HTTP 404(Not Found) error
reduce cookie size
Use cookie-free domains
Avoid AlphaImageLoader filter
Do not scale images in HTML
Make favicon small and cachable

それぞれの項目ごとに、詳細な解決方法が記されているので、
ひとつひとつ見ていきます。

Yahoo Yslow
詳細はYahooのDeveloper Networkで

快適なサイトを提供できるように、試行錯誤しています。

関連する投稿

4 月 15

rogo

kokoroです。
最近ツイッター流行っていますね。
ジョブウェブでも昨年から公式アカウントをつくって、サイトの更新情報や、セミナー情報を
主に就活生の皆さんに向けて、つぶやいています。

4月9日に2012年度卒業生向けのインターンシップサイトも無事オープンし、
随所にツイッターをちりばめています。

だって面白いんだもん。

その結果がこれですよ。
access1

なにこの墨塗りデータ、て感じですが、
4/1~4/15までの弊社インターンシップサイトのアクセス解析結果、参照元上位10位です。
(by Google Analytics)
5位に早速twitterが食い込んでいます。
4位が、同じく稼働中のジョブウェブ就職活動サイト。
大分無視できない存在になってるようです。

http://twitter.com/Jobweb_Intern

というわけで、就活生の皆さん、↑フォローよろしく。
社員が日替わりでつぶやいてるし、たまにiTunesカードをプレゼントするキャンペーンもやっています。
質問していただければ、即レスが返ってきますので、ぜひどうそ。

twitter(ツイッター)って何?って人は、まずは登録してつぶやいてみるといいですよ。
使い方は人それぞれ千差万別なので、インターネットの世界で羽伸ばしてください。

関連する投稿

7 月 28

またまた更新が滞ってしまいました。
Workbookをやってみようのシリーズ6回目です。所要時間は20分から30分とのことですがレベルは上級!頑張って行きましょう。

Tutorial #9: Adding Email Services (電子メールサービスを追加する)

Eメールサービスとは受信メールの本文、ヘッダ、添付ファイルを処理するApexクラスを利用することで自動化される処理のことです。
たとえば、受信したメッセージの連絡先情報に基づいて、取引先責任者レコードを自動的に作成する電子メールサービスを作成することができます。

このチュートリアルでは、マイル登録アプリケーションを更新するような電子メールサービスを作成します。
開発予定のApexロジックは、新しいMileageレコードを作成し、受信メールからのデータをそのレコードに投入します。
まず最初に、新しいオブジェクトを作成するApexクラスを定義し、そのコードを実行でき雨量に電子メールサービスを有効化します。

【前提条件】
開発モード」「全てのデータの修正」「Apexを作成できる」パーミッション
このチュートリアルではApexの動作を含みますのでApexクラスを作成したり、電子メールサービスを設定できる権限がなければなりません。

メモ:DeveloperEditionの管理ユーザはすでにこれらのパーミションはデフォルトで付与されています。

マイレージ記録アプリケーション
(いつものことなんで説明は省略)

必要なソフトウェア

※最近Eclipse3.4で動作するプラグインができました。が、最新のEclipse3.5で動作するプラグインはまだのようです。

Step 1: Create the Email Class(Eメールクラスを作成する)

まず最初に電子メールサービスと関連づけるApexEメールクラスを作成しなければなりません。

1. Force.comIDEを開きます。

2. MileageTrackerプロジェクト内にいることを確認します。

3. プロジェクトフォルダを右クリックして【新規】→【Apex Class

4. 「Create Apex Class」画面で「Name」に「EmailToApex」と記述し、Template項目で「Inbound Email Services」を選択します。

5. 【終了】をクリックしてクラスを作成します。

Step 2: Add a Utility Method (ユーティリティメソッドの追加)

電子メールの本文を解析するために使用されるユーティリティメソッドを作成する必要があります。
このコードは、電子メールのテキスト1行を「plainTextBody」として、「pLabel」の長さから始まる部分を除いた(Offset)、その行の残りの部分を返します。
このユーティリティメソッドを使用して、Mileageオブジェクトに使用する適切な値を抽出します。

クラスに以下のメソッドを追加します:

public static String getFieldValue(String plainTextBody, String pLabel) {
  Integer startPos = plainTextBody.indexOf(pLabel);
  Integer endPos = plainTextBody.indexOf('\n');
  return plainTextBody.substring(startPos+pLabel.length(),endPos);
}

Step 3: Add Logic to Deconstruct Inbound Email(受信メールを分解するロジックを追加)

後でSalesforceの機能にメールを有効にすると、指定されたSalesforceのメールアドレスで受信したすべてのメールは、電子メールの内容、添付ファイルを含むInboundEmailオブジェクトを作成します。これらのオブジェクトが動作するためには、 EmailtoApexクラスは、 Messaging.InboundEmailHandlerインターフェイスを実装する必要があります。電子メールサービスが稼働するためには、クラスはglobalで宣言される必要があります。

InboundEmailHandlerインターフェースを実装しているので、 handleInboundEmailメソッドの定義が必須です。このメソッドは、 2つの入力パラメータ:受信メールとenvelopeを必要とし、Messaging.InboundEmailResultオブジェクトを返します。

1. handleInboundEmailメソッド内に、受信メールを分解するロジックを追加します。メソッドは、 Messaging.InBoundEmailResultオブジェクトを返すので、最初の行でインスタンスを作成します。例では、件名は、取引先責任者の名前が含まれます。この値は、 2行目email.subjectを使用して抽出されています。 3行目では、先に定義したユーティリティメソッドをMileageオブジェクトのMile項目の値を抽出するために採用しています。

Messaging.InboundEmailResult result = newMessaging.InboundEmailResult();
String contactName = email.subject;
Double mileageInt = Double.valueOf(getFieldValue(email.plainTextBody, 'Miles:'));

2. まず取引先責任者を検索し、マイレージレコードを作成するロジックを追加します。
このコードのこの部分では、電子メールの件名から抽出された取引先責任者の名前に基づいたSELECTクエリが返して来た取引先責任者の一覧を含むリストをインスタンスとして作成します。
contactNameの前後パーセンテージの記号(’%')はSELECTクエリの検索でワイルドカードとして使用することができます。

次に、登録されるMileage__cレコードのリストをインスタンス化します。電子メールの件名を条件とする取引先責任者の検索クエリをtry…catchブロックに書いて行きます。
forループ文を利用して結果のリストからnewMileageレコードを作成して行きます。Mileage__cには電子メール本文から抽出されたマイルの数と同様に、検索結果の取引先責任者の名前も含みます。

それからinsert newMileageを呼び出すことによって、レコードを挿入します。

List <Contact> contactResult = new List<Contact>();
contactName = '%'+contactName+'%';
Mileage__c[] newMileage = new Mileage__c[0];
try {
  for (Contact c:
    [Select Id, Name, Email From Contact Where Name like :contactName Limit 1]) {
      newMileage.add(new Mileage__c(miles__c = mileageInt, Contact__c = c.Id));
  }
  insert newMileage;
} catch (System.Exception e) {
  System.debug('Error:' + e);
}

3. 最後のステップは、結果を返すことです。handleInboundEmailメソッドの最後に以下の通り追加します:

result.success = true; // If false, an email can be sent back with a message
return result;

4. クラス全体が以下のようになっていることを確認します:

global class EmailToApex implements Messaging.InboundEmailHandler {
  public static String getFieldValue(String plainTextBody, String pLabel) {
    Integer startPos = plainTextBody.indexOf(pLabel);
    Integer endPos = plainTextBody.indexOf('\n');
    return plainTextBody.substring(startPos+pLabel.length(), endPos);
  }
  global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,
    Messaging.InboundEnvelope envelope) {
    Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
    String contactName =email.subject;
    Double mileageInt = Double.valueOf(getFieldValue(email.plainTextBody, 'Mileage:'));
    List<Contact> contactResult = new List<Contact>();
    contactName = '%'+contactName+'%';
    Mileage__c[] newMileage = new Mileage__c[0];
    try {
      for (Contact c :
        [Select Id, Name, Email From Contact Where Name like :contactName Limit 1]) {
          newMileage.add(new Mileage__c(miles__c = mileageInt, Contact__c = c.Id));
      }
      insert newMileage;
    } catch (System.Exception e) {
      System.debug('Error: ' + e);
    }
    result.success = true; // If false, an email can be sent back with a message.
    return result;
  }
}

5 。 【ファイル】→【保存】してください。

メモ:プロジェクトがオフラインモードの場合はサーバに保存されるまで EmailToApexクラスを使用することはできません。

  クラスをサーバーに保存するには:

  1. IDE内で「Classes」フォルダを選択し右クリック 【Force.com】→【Save to Server

  2. 保存の確認で【はい】をクリック

  3. クラスを保存した結果としてエラーや警告が発生した場合は【問題】タブをチェックします。

Step 4: Set Up Email Service(電子メールサービスの設定)

54ページのStep 3:「 受信メールを分解するロジックを追加」で完成させたEmailToApexクラスを使うには電子メールサービス設定する必要があります。

1. オンラインで【設定】→【開発】→【電子メールサービス

2. 【新規電子メールサービス

3. 「電子メールサービス名」に「MyEmailService

4. 「Apexクラス」に「EmailToApex

5. 「受け入れる添付ファイル」に「なし

6. 「高度な電子メールセキュリティ設定」を選択

7. 「許可する送信元」にyourdomain.com

メモ:例えば、お使いのメールアドレスがabc@xyz.comであれば、あなたの電子メールドメインはxyz.comです

8. 「有効」を選択。

9. 【保存】をクリックします。

Step 5: Specify an Email Address(電子メールアドレスを指定する)

電子メールサービスのセットアップが終わったので、ユーザがメールを送ることができる電子メールアドレスを指定する必要があります。

1. 【設定】→【開発】→【電子メールサービス】「 MyEmailService」の名前部分をクリック

2. 【新規電子メールアドレス】をクリック

3. 「電子メールアドレス」に「mileagetracker

4. 「有効」を選択

5. 「コンテキストユーザ」にメール処理を引き受ける電子メールサービス権限を持っているユーザを割り当てます。

6. 「許可する送信元」は空白のままにしておきます。

7. 【保存】をクリックします。

Force.comプラットフォームは、入力をもとにユニーク(唯一)なメールアドレスを生成します。

Step 6: Test the Email Service (電子メールサービスをテストする)

任意の電子メールクライアントから、56ページのStep 5:「 電子メールアドレスを指定する」で生成されたメールアドレスにメッセージを送信します
オンライン上で作業している場合は、生成された電子メールアドレスをクリックするだけでメール送信ができることがあります。

1. 電子メールの各項目は以下のようにします。

  • 件名は「Stumuller Pat
  • メール本文は「Miles:50

2. メールを送信します。

3. DeveloperEditionで組織にログインします。

4. Mileageタブへアクセスし、ビューで「全て」を選択し【Go】をクリック

5. 電子メールを介して作成したばかりのマイレージレコードのエントリーを確認できるはずです。

※日本語でsalesforceプラットフォームを利用している場合、件名をworkbookの通りに「Pat Stumuller」とするとうまくいきません。
メール本文に書く「Miles:50」もコロンと50の間に空白があるだけでうまくいきません。(ま、ソース見りゃ分かる話ですが。。)
おかしいと思ったら、Step 4:にて「失敗時のレスポンス設定」を「メールを返送」とするとエラーメールが帰ってくるのでわかりやすいです。

Summary(要約)

このチュートリアルでは、「InboundEmailHandler」インターフェイスを実装するApexクラスを作成しました。 Salesforceが受信メールを処理するためにこのApexクラスを利用するように電子メールサービスを定義もしました。

メールサービスを作成するときに以下のことを思い出してください。受信メールを処理するApexクラスに関連付ける必要があること。
また、 Apexのクラスは、メール本文のいかなるバリエーションも適切に処理できるよう確認する必要があります。この例では、getFieldValueメソッドが挙げられます。

関連する投稿

Tagged with:
6 月 26

ジョブウェブインターンシップサイト( http://intern.jobweb.jp/ )に
新コンテンツ「正しく決める力道場」がオープンしました。

本コンテンツでは、「正しく決める力」著者の三谷宏治氏が就活生に対し、「正しく決める力」についてオンライン上で直接指導を行います。

毎月、三谷氏から「お題」が発表され、就活生からの「回答」をメールで受け付けるという形式で運営されていきます。
初回である今月は、このような「お題」でスタートしました。
————-

日清食品、カップヌードルの「コロ・チャーマーチ編」に関して、その大戦略や、狙いとする効用を解明せよ。

————-



応募者の中から優秀な回答が選ばれ、三谷氏からのフィードバックつきでWEBサイト上に掲載されます。

三谷氏が認めた優秀な回答は、就活生ではなくても一見の価値ありですね。
今月の優秀回答の結果発表は2009年7月17日(金)です。
乞うご期待!

◇「正しく決める力道場」
89939d2a37199b725e686741fc1af2a0

http://intern.jobweb.jp/event/ofev10JmlIndex/type/466

関連する投稿