プログラミング

2/2ページ

Google Apps Script で社内システムを作ってみた (2)

Google Apps Script で社内システムを作ってみた (2)

 さて、前回(「Google Apps Script」で社内システムをつくってみた~GASとの出会い編~)はHTMLファイルの作成方法についてお話させていただきましたが、今回はいよいよスクリプトを使って、入力フォームと新規スプレッドシートの繋げ方について触れてみようと思います。 関連記事: 変数のスコ …

Tampermonkeyの使い方

Tampermonkeyの使い方

 GreasemonkeyはFirefoxの拡張機能のひとつで、ブラウザ側に設定されたJavaScriptコード(ユーザースクリプト)でWebページに変更を加えることができる。この機能は、シンメトリック製品・GeneCodeに幾分か似ている面がある。ユーザースクリプト開発とサーバーサイドJavaScr …

変数のスコープ

変数のスコープ

 JavaScriptはブロックスコープやモジュールスコープを持たない。変数は大域変数か関数内局所変数のどちらかだ。これは不便なことだ。が、関数スコープを、ブロックスコープやモジュールスコープの代用とすることが広く行われていて、まー何とかなっているのである。今日はこの事情を説明しよう。 関連記事: T …

JSONにpathでアクセスするには?

JSONにpathでアクセスするには | JavaScript

 JSONデータの各部にアクセスするために、ごく簡単なJavaScript関数を書いてみた。この小さなプログラムは、ツリー構造のパス式の一種を実装していると考えられる。一般的なパス式(path expression)の説明をしてから、今回定義したJSON向けの簡単なパス式を紹介しよう。 関連記事: 変 …

NoClassDefFoundErrorの原因と対応(2)

NoClassDefFoundErrorの原因と対応(2)

 前回はTomcatにおけるクラスローダの全体像を書いた。今回はクラスの参照可否性について説明したい。クラスの参照可否性とはクラスローダがクラスを読み込むことができるかどうかの条件で、少々複雑な内容になる。 前回説明したクラスローダの階層と今回説明する参照可否条件まで知っておけば、クラスローダに起因す …

NoClassDefFoundErrorの原因と対応(1)

NoClassDefFoundErrorの原因と対応(1)

 前回の記事ではJavaクラスローダに関する現象を書いた。普段はあまり意識することの少ないクラスローダだけど、前回のような現象が現実に起きていることを考えると、クラスローダに対する多少の知識はあったほうが絶対に役立つ。 今回はクラスローダの様々な機能・特徴のうち、Webアプリケーションプログラマでも是 …

MissingResourceExceptionの解決法

MissingResourceExceptionの解決法

 JavaベースのWebアプリケーション実行環境Tomcatをターゲットとしたアプリケーションを開発していたときのこと。一部のロジックをmainメソッドから実行できるように変更した。そして、いざ実行してみるとこれまで読み込めていたプロパティファイルが読めなくなってしまった! なぜこんなことになってしま …

EOF判定の注意点

EOF判定の注意点

 C言語を勉強してきた中で私の致命的な思い違いシリーズの第三弾です。 今回は、練習で「標準入力からテキストを読み込んで行数をカウントする」という簡単なプログラムを作成した時のことです。標準入力で受けた内容を1バイトづつ読み込み、読み込んだ値が改行コードの場合はカウントアップして行数をカウントする内容の …

暗黙の型変換と符号拡張とは?

暗黙の型変換と符号拡張とは?

 C言語を勉強してきた中で私の致命的な思い違いシリーズの第二弾です。 第一弾「C言語では signed と unsigned の違いで挙動がこんなにも変わる!」 第三弾「C言語でEOFをchar型で比較してまずいのはなぜ?」 今回は、暗黙の型変換と符号拡張についてです。 関連記事:コンパイラの最適化と …

signed と unsigned の違い

signed と unsigned の違い | C言語

 通常の業務とは別にC言語を少しずつ勉強しています。C言語の鬼門と言われるポインタの動きもある程度理解し、構造体、線形リストやハッシュなどを使った簡単なプログラムを書けるようになりました。しかし、C言語としてかなり初歩的なことにも関わらず、今まであんまり意識せずにいたために致命的な思い違いをしたままだ …

コンパイラの最適化によるデメリット

コンパイラの最適化によるデメリット

 以前C言語で、業務とはまったく関係のないお遊びプログラムを作っている時に、不可解な現象に悩まされました。 とある関数の内部で、呼び出し元の情報を書き換えて、関数を抜け出す時に本来の戻り先とは別の戻り先に制御を移すという、ちょっと変な処理を行うものです。 この時は何か目的があってプログラミングをしてい …

Linuxで読込中のファイル削除の影響

Linuxで読込中のファイル削除の影響

 サーバーアプリケーションでは、特定のファイルに対し、読み書きが同時に発生することがある。同時書き込みを防止するためには書き込みロックを利用したり、書き込み中の読み込みを防止するためには読み込みロックを利用したりする。 しかし、一般的にロックを使用するとロックの取得待ちが発生することになり、環境によっ …

OutOfMemoryErrorの原因と対応(3)

OutOfMemoryErrorの原因と対応(3)

 OutOfMemoryError回避のためのJavaコーディング – 前編と後編でOutOfMemoryErrorの典型的な発生パターンを3つ紹介した。 (A)サイズオーバー型 巨大な領域確保によって一気にヒープの最大サイズをオーバー (B)メモリリーク型 開放されないオブジェクトが溜ま …

OutOfMemoryErrorの原因と対応(2)

OutOfMemoryErrorの原因と対応(2)

 前回(OutOfMemoryError回避のためのJavaコーディング – 前編)に引き続き、OutOfMemoryErrorの話題。前回は、OutOfMemoryErrorを3パターンに分けた。 (A)サイズオーバー型 巨大な領域確保によって一気にヒープの最大サイズをオーバー (B)メ …

OutOfMemoryErrorの原因と対応(1)

OutOfMemoryErrorの原因と対応(1)

 Javaアプリケーションサーバーを使っていると、OutOfMemoryErrorに遭遇することが時々ある。最近はサーバーの物理メモリサイズが2GBを超えることもあるのに、やっぱりこのエラーは発生する。 OutOfMemoryErrorは文字通り、メモリが足りないという意味だ。だけど、当然ながら物理メ …

スレッドの注意点まとめ

スレッドの注意点まとめ | Java

 どんなプログラム言語でもそうなのですが、マルチスレッド下でプログラムを組むときは、シングルスレッドとは違うところに色々気を使わないといけません。 今回は、Javaマルチスレッドプログラムでは基本的なことですが(自分だけかもしれませんが)よく忘れて、不可解な動作に首を傾げてしまうポイントについて説明し …

NULL文字を含むときはstrcmp/strncmpを使わない

NULL文字を含むときはstrcmp/strncmpを使わない

 弊社製品ラウンドアバウトが先日正式リリースされた。僕はラウンドアバウトの開発メンバーだったから、やっと完成したという大きな達成感がある。 しかし、その開発期間を思い起こしてみると、C言語特有の問題に直面し、実に苦労すること多かった。ラウンドアバウトはApacheモジュールなので開発言語はC言語となる …

JavaMailの文字化け解決法

JavaMailの文字化け解決法

 今回は以前JavaでWebアプリケーションを開発した際に遭遇したJavaMailに関しての対応策とその原因の調査結果を書きます。 対策は簡単だったのですが、原因は調査するにつれ込み入った話であることが分かりました。 Javaの関連記事: OutOfMemoryError回避のためのJavaコーディン …

ArrayListをスレッドセーフ化するには?

ArrayListをスレッドセーフ化するには?

 前回は、DateFormatクラスがマルチスレッド問題によってバグを引き起こす例を紹介した。マルチスレッドによる問題に対処するには、スレッドごとにインスタンスを作成するか、synchronizedブロックによる同期化を行う。でも「正しい同期化」を行うには十分な知識とコードの把握が不可欠・・・。 そん …

Page Top