プログラマ38の日記

主にプログラムメモです。

2017-01-01から1年間の記事一覧

雑記: Windowsのバッチ開発で便利なコマンド

Windowsサーバでバッチ処理を開発したり、バッチ処理の稼動を確認する時に便利だなと思ったコマンドのメモです。 よく使うコマンド(引数込み) コマンドで実現できること 利用したい時 備考 CERTUTIL -decode [intputfile] [outputfile] base64形式のテキス…

Java: webserviceクライアント別のWSDL complexTypeのany要素の使い方

SalesforceのPartner WSDLでSOAP APIを使う時、sObjectのフィールド値をセットする時の書き方が各ライブラリによって大分違っています。 書き方の違いは、WSDLでの、complexType で anyの要素が各ライブラリで使い方が違うところに起因します。 各ライブラリ…

Java: JDK9 jshellを使ってみたメモ

jdk9でjshellが追加されました。 簡単なバッチプログラムをjavaで書くことが多いのですが、コンパイルしたclassファイルよりも、テキストのjavaコードをそのまま実行するほうが好都合な時があります。 例えば、後で変更が見えてるような場合、柔軟に変更に対…

Salesforce: apache httpclient / commons http を使ってREST APIでファイル(ContentVersion)を登録する

Salesforceへバイナリファイルを連携するには、通常はデータローダをはじめとするSOAP APIを使いbase64変換した文字列を送信します。 ファイル(ContentVersion)は2GBと大きいサイズでも登録が可能ですが、SOAP APIでは、Base64変換後のサイズで50MBのサイズ…

Salesforce: Rest API で思ったこと

SalesforceのRest APIで思ったことのメモです。 まずSalesforceのRest APIは次の特徴を持ちます。(個人的に思っていることです。。詳細な仕様はSalesforceのヘルプを参照ください) httpsの通信ができれば、SalesforceとAPIのやり取りが可能 APIの送受信の…

Salesforce: ログインユーザが利用可能なレコードタイプの一覧を取得する

レコードタイプの選択を、Visualforceで行いたい時があります。 標準のレコードタイプ選択画面であれば、ログインしているユーザのプロファイルに応じたリストが表示されますが、 そのリストをApexで作成する場合のメモです。 [サンプルコード] ※Sample__cは…

Java: XML中の制御コードについて

XMLでは、制御コードは改行やタブなどの決められたもの以外は許可されていません。(こちらの説明が詳しいです) なので、XMLで値をセットする際には許可されていない文字コードは除去する必要があります。(除去する方法はこの記事を参考にさせて頂きました)…

Salesforce: 時間型(ベータ)が追加されている件と項目作成マクロの更新の件

Winter18のバージョンアップでカスタム項目の型に、時間型が追加されていますね。 まだベータですが、時分を入力する項目を次のように用意することが多いので便利になります。 ・時分を入力するテキスト欄を用意 ・HH:MMを保証する入力規則を用意 ・もしくは…

Java: 外部ライブラリの定数を参照する時は静的コンパイルに気をつけよう

他のライブラリを参照して開発する時に、参照先の定数を使うときがあります。 例えば、WebServiceのWSDLを展開したライブラリで、WebSerivceのendpointは定数として定義されていて、その定数を使いたい時があります。 開発しているプログラムでその定数を使…

Salesforce: 開発でちょっと便利になる関数のメモ(トリガ用:参照項目をSet<Id>で取得、文字列操作:lenb、leftb、 rightb)

いくつか関数を作ったのでメモです。 用意した関数は次の4つです。 トリガでよく使う参照項目のIdのSetを作る 文字のバイト数(Excelのlenbと同等) 文字のバイト数(Excelのleftbと同等) 文字のバイト数(Excelのrightbと同等) 1. トリガでよく使う参照…

Salesforce: メタデータエクスポートツールのバージョンを上げました(APIVer41)

Salesforceのバージョンアップに伴い、コマンドラインで動作するメタデータのエクスポートツールのバージョンを上げました。 ダウンロードはこちらです。 今回のバージョンアップでは、メタデータで目立って追加されているものはないように思います。(Topics…

Java/その他: テキストファイルで、utf8からshift_jis(CP932)への変換時に注意すること

テキストファイルなどutf8だと扱いづらく、shift_jisに変換したい時があります。 欲しいコマンドがみつからない時に、自分で作成するときの注意事項です。 結論として、utf8からshift_jisへの変換で、プログラムで工夫することで文字化けを回避できる文字が…

JDBC: 接続URLではまったこと(SQLServer , MySQLでメモリエラーが発生する件)

Javaで、SQLServer、MySQLのデータ連携プログラムを書くとき注意事項のメモです。(ある程度の件数がある時の場合です。) 結論としては jdbcのURLのパラメータをきちんと書かないと、「out of memory」のエラーになる可能性が高くなります。 「out of memor…

Salesforce: データローダの起動についてのメモ(メモリ不足の対応)

Salesforceのデータをまとめて編集をする時に、データローダを使います。 環境的な制約でうまく動作しなかった時のメモになります。 ※データローダのバージョンは40を前提としています。 環境的な問題 Javaのインストールが許可されていない メモリ不足のエ…

Salesforce: データ連携時に気をつけること(Salesforce→他システム)

Salesforceから他システムへデータを渡したい時があります。 入力はsalesforceでPCとモバイルから行い、その後入力したデータを基幹システムや分析システムに連携することはよくあることだと思います。 その時に気をつけておくことのメモです。 大量データを…

TERADATA: TERADATAの後に、普通のDBに戻るのに時間がかかった思い出

しばらくTERADATAの開発を行った後に、通常のDB(業務用のSQL ServerやOracle)に戻った時がありました。 TERADATAでは、極力まとめて処理を行うのがポイントで、1000万件くらいであれば処理は数秒で終わります。 ※TERADATAにもキャパシティはあるので、その…

Salesforce: Apex開発で気をつけていること

自分がApexでの開発で気をつけていることのメモです。 Salesforce IDの項目はID型で定義する。 トリガでの他オブジェクトの作成/更新処理を作り過ぎない 項目自動更新とトリガを混在させない そこでしか使わない処理は無名ブロックで囲み変数のスコープを限…

Salesforce: Force.com移行ツール(Force.com Migration Tool)で指定するコンポーネント名をselect可能なSオブジェクト

件名がやたら長くなってしまいました。 オブジェクトのメタデータは、オブジェクトの情報をまとめて取得する方法と、カスタム項目、リストビュー、レコードタイプ、入力規則、カスタムボタンまたはカスタムリンクを個別で取得する方法があります。個別で取得…

Salesforce: テストクラスの作成での留意事項

SalesforceのApex開発を行う場合、本番環境にリリースするためにテストクラスを作成する必要があります。 設定とちょっとのトリガなどの開発であれば、テストクラスの作成はさほど大変ではないのですが、サイトやコミュニティで多くの画面を作りこむ場合、テ…

Salesforce: カスタムボタンのJavaScriptで注意すること

Salesforceでは、標準レイアウトにカスタムボタンを配置してアプリケーションを作成していきます。(Lightning Experience ではなくClassicを対象とした場合です) 自分がカスタムボタンの作成時に注意することのメモです。 環境依存の文字列はカスタム表示…

100記事書いてみて思ったこと

今回がちょうど101回目になります。 100回書いてみて思ったことと、これからやってみたいことを書いてみようと思います。 [思ったこと] 文章を書くのが下手 プログラマとしてドキュメントを書くことは多く、今までそれなりに書いてきましたが、あらためて文…

雑記/Java: 最近のJavaで辛いなと思ったこと

自分は他の言語はあまりやらないので、Javaプログラムがメイン言語となっています。 なので、何か作ろうと思ったらコマンドラインのプログラムもJava、GUIのプログラムもJavaで済まそうとしてしまいます。 言語の拡張や新しい仕組みの導入などは無条件に受け…

CSV: DBクライアント ExecuteQuery でH2 Databaseを使う

CSV

前回CSVの加工の方法の1つとして紹介した「H2 Database」を使う方法です。 前提として、「Execute Query」と「H2 Database」のモジュールはダウンロードしていることとします。 次の内容です。 「Execute Query」を起動する。 JDBCドライバを設定する。 接…

CSV: CSVファイルを加工する方法

CSV

CSVを加工する機会は多いと思います。データのやり取りはなんだかんだでCSVが主流で、Salesforceのデータローダでもインポート、エクスポートはCSVを使います。 自分がよく使うCSVの加工するやり方について書きます。 ちなみに、一番よく使うのは6の「H2 Dat…

Salesforce: Shift_JISのテキストファイルを作成して添付ファイルに登録する

SalesforceのApexプログラムの中で、Shift_JISのCSVファイルを作成したい時があります。 Salesforceの文字列とバイナリは、StringとBlobを使います。BlobからStringとその逆の変換の関数は用意されていますが、その際のエンコーディングはUTF-8となります。 …

Java: UnixでJavaプログラムを動かした時にはまった思い出

プログラマになって間もない頃、単純なOracleへのデータ連携用プログラムを担当しました。処理はShift_JISのCSVファイルをいくつか値を変換してOracleにロードするものだったので、通常は、1.Oracleへワークテーブルを用意し、2.「sqlldr」でデータを投…

DWH/SQL: データマートの作り方メモ

DWHで使い勝手を向上するため、粒度の異なる複数のファクトを加工して1つのデータマートを作成する時があります。 例えば、次のようなデータマートを作成します。 インプットデータ 商品別、年月別の見込みデータがある。 商品別、年月日別で実績データがあ…

Salesforce: SOQLやビューでよく使う日付の検索条件文字列

ビューやSOQLでは、当日を起点にして何日前や何日後といった条件を指定したい時があります。 たくさんある中でよく使う書き方のメモです。 ビューでの日付の検索条件文字列 Salesforceのリンクはこちらです。 日付の検索条件リテラル コメント 過去n日間 演…

Salesforce/SQL: 検索条件でのnullの扱いの違いについて

Salesforceではデータの取得でSOQLを使います。一般的なRDBのSQLと似ていますが、結合処理や、検索の指定がSQLと異なります。 検索条件でのnullの指定と検索結果について、SOQLとSQLの違いがあるのでメモです。 次のデータをサンプルとしてSOQLとSQLで検索結…

Salesforce: 最終更新日(LastModifiedDate)とSystem Modstamp(SystemModstamp)の違い

最終更新日(LastModifiedDate)とSystem Modstamp(SystemModstamp)は、今まで特に意識もせず、同じタイムスタンプが入っているなーぐらいの認識でした。 ですが、「レコードの作成時に監査項目を設定」を有効化して、最終更新日(LastModifiedDate)に直接タイ…