プログラム

PDFをjpegにしてココログにアップする(objective-c)

なんでbase64の記事が出たかというと、広瀬隆さんから頻繁にPDFが送られてきて、それをブログにアップしているのだけれど、それを自動化しようかな、と思ったところから。

PDFからjpegの画像ファイルを作るのは最初はghostscriptを使ってみたのだけれど、どうもフォント周りとかを考えるとmacの標準機能でなんとかしたい。

で、pdfをjpegに変換するのをCore Foundationの機能で実装して、コマンドラインにしてみたら、今度は「htmlも自動でつくれるよなぁ」とか「アップロードも自動化できるなぁ」とイロイロ出て来るわけです。

最終的には普通のGUIアプリでpdfの表示を確認してからブログ記事をボタン一つで作れるようにしてしまいました。

開発環境が無料で手に入るのは良い時代ですね。

osx版の次は.net版か、iOS版か。

因に、Core Foundationを使用して、pdfをjpegに変換するモジュールはこんな感じになります。
ダウンロード pdf2jpeg.zip (3.3K)
原発反対の人だけに使用許諾します(笑)

| | コメント (0) | トラックバック (0)

objective-cでBASE64 Encode(OSX 10.7以降みたい)

ネットを調べるとosxでbase64エンコードする際にはOpenSSLのライブラリを使うとか。 ところが10.8ではどうやらOpenSSLは入っていない?

ということでどうするかというと、アップルのサイトhttp://developer.apple.com/library/mac/#documentation/Security/Conceptual/SecTransformPG/SecurityTransformsBasics/SecurityTransformsBasics.htmlを参考にしながら、次のような感じで。(objective-cに慣れていない人のコードだから、と、言い訳をしておこう。)

NSString *Base64EncodeData(NSData * data) { CFErrorRef error = NULL; @try { /* Create the Base64 encoder object. */ SecTransformRef encoder = SecEncodeTransformCreate(kSecBase64Encoding, &error); @try { if ( NULL != error) { return nil; } SecTransformSetAttribute(encoder, kSecTransformInputAttributeName, (__bridge CFDataRef)data, &error); if ( NULL != error) { return nil; } NSData * encoded = (__bridge_transfer NSData *)SecTransformExecute(encoder, &error); if ( NULL != error) { return nil; } return [[NSString alloc] initWithData:encoded encoding:NSUTF8StringEncoding]; } @finally { if( NULL != encoder) { CFRelease(encoder); } } } @finally { if( NULL != error) { CFRelease(error); } } }

| | コメント (0) | トラックバック (0)

数値文字参照

マック用のプログラムの練習として、数値文字参照をつくるアプリを作ってみたんですが、原発反対の人だけに使用を許諾するソフトというネタの為に公開してみます。64bitなら古いOSでも動くかもしれないけれど、Mountain Lionでしか確認していません。(署名していないのでアプリケーションアイコンをクリックするときにコントロールを押してください)

ダウンロード EncodeEntity.zip (18.6K)

About

どういうときに使うかというと、ホームページとかにメールアドレスを書くとスパムメールがやってくるので、その対策としてメールアドレス直ではなくて数値文字参照を使うとよい(らしいのですが、どう考えても自分がスパムメールの為にメールアドレスを収集するなら数値文字参照には対応すると思う。でも、後ろに全角スペースとか入れておくと海外からのスパムは減るような気もします。)

例えば、

"jcc00421@nifty.com"

とHTMLに書くと、ブラウザ上では"jcc00421@nifty.com"と表示されます。

この"&#数字"の形式を簡単に作ります。

使い方は上の入力欄に文字列を入力してボタンを押すだけ。

ちなみにアップルマークはですが、マックやiOSでないと表示はされません。

Encodeentity

| | コメント (0) | トラックバック (0)

8タブ友の会

忘年会に参加して、プログラム系の話でちょいと盛り上がる。

(以下分からない人にはまったく分からない話です。)

なんでだか、エディターのタブは4か8かという話になった。

4タブだ8タブだというのは、まぁ昔からある宗教論争なんだけれど、私は断然8タブ派。

なんでかっていうと、一応理由があるのよ。(宗教論争とか言いつつ)

人間、脳の限界か、分岐のネストの深さには限界があるようでして、深いネストの途中の条件文は見逃しやすいのです。

新人さんにプログラムを書かせて、いつも気になるのはネストが深いこと。特に最近の言語は「ねーむすぺーす」だ「くらす」だ、「とらい」だなんだとネストが深いとすぐに画面の横スクロールが発生します。

まぁ、書いている方は頭の中にイメージがあるから結構深いネストでも書けちゃうのだけれど、これが読む側になると大変で、どうも経験上は分岐のネストが3段を超えると(他人の)可読性に難がある。

読むときは4タブが読みやすいので、書く時にはちょっとハンデを付けてやる。つまり、ちょっと幅が広すぎるかもしれないタブ8で書くようにクセを付けちゃう。

そうするとすぐに横スクロールがイヤになって、ネストを浅くする工夫をし出します。具体的には処理を関数化する。のでウソのようにネストが浅くなる。ついでに関数にはコードコメントを付ける事にしておくと、仕事を次に引き継いだ人が何をしているか分からなくて悩むことも減るのね。

| | コメント (0) | トラックバック (0)

マウスでコントロールのサイズと位置を変更する

なんだかとっても忙しいのでブログも更新できませんが、

とても忙しいのにも関わらず、変なプログラムを作っていたりします。

で、その中で、ちょっと公開したらウケそうなネタがそれなりにキレイに出来たので公開したくなった、ので、一つ。

Resizecontainer

画面を見ただけで、分かる人には分かるVisual Studio 風に実行中のコントロールのサイズを変えたり、移動をしたりするサンプル。

Visual Studio 2003で書いた(言語はC#です)ので、それ以降なら読めると思います。

ダウンロード ResizeContainer.zip (11.3K)

どうやって実現するかというと、、、ソースコードを見てください。原発に賛成の人は使わないでね(笑)(ウソ)

P.S. たまには、原発に関係ないことも書くことにします。客寄せの為、、、カモ

| | コメント (0) | トラックバック (0)