サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
www.symmetric.co.jp
サーバーにApacheやnginxをセットアップした後の動作確認は、ブラウザを使うのが通常です。 しかし、公開準備中のシステムの場合、外部からWebサーバーへの接続ができず、ブラウザを使った動作確認ができないことがあります。 HTTPページであれば、telnetクライアントを使ったWEBサイト確認方法にある方法が使えますが、SSL/TLSページの場合は使えません。 そこで、SSL/TLSページでも使える、コマンドラインによるWebサイトの動作確認方法をまとめてみました。 なお、この記事はCentOSやRHELなどLinux系OS上にWebサーバーをセットアップし、サーバー証明書をインストールしたときの動作確認を想定しています。 関連記事: telnetでHTTPリクエストを送信するには? スマホからのアクセス時にリダイレクトする REMOTE_ADDRをプロキシ先サーバーにも保持させるには
Googleが提供する「Gmail」や「スプレッドシート」、「カレンダー」、「ドキュメント」などの各種アプリをJavaScriptで操作し、お互いを繋げたり組み合わせたり、動かしたり出来るサービス「Google Apps Script」をご存知でしょうか? かく言う私もつい最近まで知らなかったのですが、先日営業チームから、クライアント先訪問後の営業レポートを社内で共有できるシステムがほしいとの要望があったので調べてみたところ、このGoogle Apps Script(頭文字をとってGASと表記されているようなので、以下そのように記載させていただきます)を発見しました。 普段使っているGoogleの各アプリが自動で連携する様がとても面白かったので、備忘録も兼ねて3部作でご紹介いたします。 関連記事: 変数のスコープ | JavaScript Tampermonkeyの使い方 | JavaSc
さて、前回(「Google Apps Script」で社内システムをつくってみた~GASとの出会い編~)はHTMLファイルの作成方法についてお話させていただきましたが、今回はいよいよスクリプトを使って、入力フォームと新規スプレッドシートの繋げ方について触れてみようと思います。 関連記事: 変数のスコープ | JavaScript Tampermonkeyの使い方 | JavaScript JSONにpathでアクセスするには? | JavaScript いよいよスクリプトをかいてみる 前回doGet関数を書いた「コード.gs」に記述していきます。 以前も説明した通り、doGet関数はHTMLページを開くために必須の関数なのでくれぐれも消さないようにしてくださいね! doGet関数はそのままにしておきましょう! まずは、入力フォームから送信した値がスプレッドシートに出力されるためのスクリプト
開発中のサイトで、スマートフォンではpdfのダウンロードができないことがありました。最終的にダウンロードできるようになりましたが、条件が複雑怪奇だったので、今回はこの話題にしたいと思います。 関連記事: iPhone向けSafari、HTML拡張属性を使いこなすスマホサイトで画像をコピーガードするには?スマホでPDFがダウンロードできない原因HTTPリダイレクト4種類の違いとは? 一瞬でメッセージが消える 開発中のサイトにはBasic認証がかかっていました。pdfのダウンロードリンクをクリックし、ID/パスワードを入力すると「ダウンロードを開始します・・・」というメッセージが表示されるのですが、このメッセージが一瞬で消えていなくなります。 Basic認証が原因かと思い、pdf拡張子のURLだけ、Basic認証を外してみました。が、何も変化はなく、一瞬で「ダウンロードを開始します・・・」が消
REMOTE_ADDRをプロキシ先サーバーにも保持させるには? 2015.08.20 2020.09.08 Apache 開発環境/開発ツール demo リバースプロキシサーバーを経由してオリジンサーバーにHTTP接続する環境では、接続先サーバーにブラウザのIPアドレスが記録されません。そのため、アクセスログ解析ができなかったり、IPアドレスベースの認証ができないといった問題があります。 ジーンコードなどWebサイト変換製品もリバースプロキシ型なので、同様の問い合わせを受けたりします。 この問題に対処する方法を3つ紹介します。 関連記事: SSL/TLS通信の疎通確認用コマンドライン 3選 telnetでHTTPリクエストを送信するには? スマホからのアクセス時にリダイレクトする mod_rpafを使用する リバースプロキシを経由してオリジンサーバーにアクセスした際、リモートIPアドレスが
eclipseのスクラップブック・ページを使うと、断片的なコードを実行することができます。 メソッドコールや自分のコードをクラスに組み込む前に動きを確かめるなど、何か思いついたときにすぐに使える、なかなか便利なもの。 実はこの「なかなか」なスクラップブック・ページは、開発中に「かなり」便利に使える強力なツールにもなるのです。 関連記事: OutOfMemoryErrorの原因と対応(1) NoClassDefFoundErrorの原因と対応(1) SimpleDateFormatのマルチスレッド問題 まずは動かしてみる 百聞は一見にしかず。スクラップブック・ページを使ったことのない方はまずは動かしてみましょう。 操作は、Javaプロジェクト上で「新規」-「その他」-「Javaの実行/デバッグ」-「スクラップブックページ」を選び適当なファイル名をつけて終了。 「.jpage」という拡張子のテ
どんなプログラム言語でもそうなのですが、マルチスレッド下でプログラムを組むときは、シングルスレッドとは違うところに色々気を使わないといけません。 今回は、Javaマルチスレッドプログラムでは基本的なことですが(自分だけかもしれませんが)よく忘れて、不可解な動作に首を傾げてしまうポイントについて説明していきます。 Javaの関連記事: OutOfMemoryError回避のためのJavaコーディング – 前編 自力でNoClassDefFoundErrorを解決!(前半) ArrayListをスレッドセーフ化するには? SimpleDateFormatのマルチスレッド問題 プロプロセッサの使い方 ヒープ領域にあるデータの更新タイミングをちゃんと把握する Javaプログラムからアクセスできるメモリ領域には、大きくわけて、スタック領域(以下スタック)とヒープ領域(以下ヒープ)の2種類が存在します
前回はTomcatにおけるクラスローダの全体像を書いた。今回はクラスの参照可否性について説明したい。クラスの参照可否性とはクラスローダがクラスを読み込むことができるかどうかの条件で、少々複雑な内容になる。 前回説明したクラスローダの階層と今回説明する参照可否条件まで知っておけば、クラスローダに起因する問題には大部分対応できるハズだ。今回はサンプルコードを元に説明したい。 関連記事: Javaクラスローダの恐怖!影響範囲は一体どこまで!? サンプルServletの紹介 準備したコードはJakarta HTTP Clientを使用したServlet。これは http://localhost:8080/ にHTTP接続した結果をそのまま返すというもので、ソースは以下の通りだ。 public class HttpClientServlet extends HttpServlet { protect
SSLに対応した携帯サイトを開発していて気になるのはSSLの警告画面表示。SSLページに入ったり、SSLページから抜けたりするときに警告ダイアログが表示されてしまうからだ。でも機種やページによっては警告ダイアログが出ないこともあり、表示条件がよく分からない。とりあえず会社にある端末を使って調べてみることにした。 実験方法 サーバー側 社内の開発サーバーのApacheを使用してテストページを配置。テストページは次のようなものを用意した。 HTTP静的ページ SSL静的ページ HTTP静的ページへのリダイレクトCGI SSL静的ページへのリダイレクトCGI 画像URLがHTTPSとなっているHTTP静的ページ 画像URLがHTTPとなっているSSL静的ページ これらのページにはどのページにも行き来できるようにリンクを張った。そしてSSLは開発で使用しているベリサイン証明書を使用した。 クライア
会員サイトを作成する上で、個人を識別するため、ログインIDやパスワードが必要となる場面があります。しかし、携帯向けのサイトでは、入力の手間から、ログインID・パスワードではなく、携帯電話からユーザーを識別できる情報を取得し、利用することが少なくありません。個人を識別する方法としては、大きく 携帯電話の製造番号(ハードウェアの識別) 携帯電話の契約と関連付けされた情報(契約の識別) の2種類ありますが、それぞれキャリアによって取得方法が異なります。また、機種変更の際、こうした識別情報が変更され、今までログインできていたサイトにログインできなくなる場合もあります。今回は、そうした携帯電話のユーザー識別情報についてまとめます。なお、本エントリーでは、ユーザーを識別するための情報として、ユーザー識別情報と呼ぶことにします。なお、今回調査した内容について、表にまとめました。開発の参考になればと思いま
C言語を勉強してきた中で私の致命的な思い違いシリーズの第二弾です。 第一弾「C言語では signed と unsigned の違いで挙動がこんなにも変わる!」第三弾「C言語でEOFをchar型で比較してまずいのはなぜ?」 今回は、暗黙の型変換と符号拡張についてです。 関連記事:コンパイラの最適化とは?関連記事:Linuxで読込中のファイル削除の影響 暗黙の型変換と符号拡張で起きる問題 次のコードの出力結果はどうなるでしょうか? #include<stdio.h> int main(){ char c = -1; printf(" c %d,%x,%dn",sizeof(c),c,c); return 0; } 答えは以下の通りです。 $ ./test.exe c 1,ffffffff,-1 この結果、初めは何もおかしくないと思っていました。 しかし、よく考えるとおかしな点が2点あります。
前回は、DateFormatクラスがマルチスレッド問題によってバグを引き起こす例を紹介した。マルチスレッドによる問題に対処するには、スレッドごとにインスタンスを作成するか、synchronizedブロックによる同期化を行う。でも「正しい同期化」を行うには十分な知識とコードの把握が不可欠・・・。 そんな時に重宝するのが、Java標準で用意されている同期化オブジェクト。どんなケースにも対応できるわけではないけど、お手軽かつ必要十分な機能を備えている。これを使わない手はない。 関連記事: Javaでスレッドを使う際の注意点SimpleDateFormatのマルチスレッド問題NoClassDefFoundErrorの原因と対応(1)OracleでDate型の時刻が00:00:00になる原因JavaMailの文字化け解決法 スレッドセーフとは? スレッドセーフ(Thread Safe)とは、Java
前回の記事「まずは使ってみよう!初めてのGit」では、Gitをファイル共有ソフトとして使い始める話をした。これは、複数の人が共有リポジトリから最新のファイル群をダウンロード可能であることに基づいている。このGitの機能は、ソフトウェアのインストールにも利用できる。 関連記事: ファイル共有ソフトとしてGitを使う 個人設定の置き場としてGitを使う FuelPHPの例 FuelPHPというPHPのフレームワークがある。ZIPファイル(現時点ではfuelphp-1.7.1.zip)をダウンロードしてインストールできるが、bashなどのシェルが動く環境(Linux、Mac、Cygwin、MinGWなど)では、次のコマンドラインを実行してもインストールできる。 $ curl get.fuelphp.com/oil | sh get.fuelphp.com/oil から取得できる内容はシェルスクリ
Git(http://git-scm.com) は、急速に普及した分散バージョン管理システムだが、初めての人には難しい点があるのは確か。使い始めることを躊躇する人もいるだろう。まずは、「バージョン管理」とか言わずに、ファイル共有の目的で導入してはどうだろう。 関連記事: インストーラとしてGitを使う 個人設定の置き場としてGitを使う ファイル共有にGitを使う ある人、仮にAさんが管理している文書やプログラムがあったとしよう。そして、Aさん以外の人々、Bさん、Cさん、Dさんの三人も、Aさんが保持しているファイル群を閲覧・モニタリングしたいとしよう。ファイルをメールに添付して同報送信するという方法があるが、変更のたびに毎度メールで送るのは良い方法とは言えない。 ドロップボックス(http://www.dropbox.com/)やGoogleドライブ(http://drive.google
GreasemonkeyはFirefoxの拡張機能のひとつで、ブラウザ側に設定されたJavaScriptコード(ユーザースクリプト)でWebページに変更を加えることができる。この機能は、シンメトリック製品・GeneCodeに幾分か似ている面がある。ユーザースクリプト開発とサーバーサイドJavaScript開発は類似の発想なのである。どちらも、ブラウザがHTML文書を表示する前に文書のオリジナルDOMツリーを操作する手段となる。 Tampermonkeyは、Greasemonkeyとほぼ互換のChrome拡張機能である。以下で、実際の説明はChrome上のTampermonkeyに関して行う。 関連記事:JSONにpathでアクセスするには? 関連記事:Helmaのインストール 関連記事:変数のスコープ 関連記事:Google Apps Script で社内システムを作ってみた(1) 関連記
JSONデータの各部にアクセスするために、ごく簡単なJavaScript関数を書いてみた。この小さなプログラムは、ツリー構造のパス式の一種を実装していると考えられる。一般的なパス式(path expression)の説明をしてから、今回定義したJSON向けの簡単なパス式を紹介しよう。 関連記事: 変数のスコープ Tampermonkeyの使い方 Helmaのインストール Google Apps Script で社内システムを作ってみた(1) Google Apps Script で社内システムを作ってみた(2) If文のAnd / Or に注意 ファイルシステムのパス 多くの人が「パス」という言葉から最初に連想するモノは、おそらくファイルシステムのパスだろう。例えば、Linuxなら、/home/hiyama/.bashrc がファイルのパスとなる。これは、前回の記事「一人で使うGit」で話
JavaベースのWebアプリケーション実行環境Tomcatをターゲットとしたアプリケーションを開発していたときのこと。一部のロジックをmainメソッドから実行できるように変更した。そして、いざ実行してみるとこれまで読み込めていたプロパティファイルが読めなくなってしまった! なぜこんなことになってしまったのか?原因はよくある単純ミスだったけど、よくよく調べてみると衝撃的な事実を知ることに・・・。 関連記事: OutOfMemoryErrorの原因と対応(1) OutOfMemoryErrorの原因と対応(2) OutOfMemoryErrorの原因と対応(3) NoClassDefFoundErrorの原因と対応(1) NoClassDefFoundErrorの原因と対応(2) SimpleDateFormatのマルチスレッド問題 間違ったのはメソッドの引数 エラーが発生したのは次のようにプ
telnetクライアント(以下telnet)を使うと通常ブラウザが自動で送信しているリクエスト情報を0から指定できたり、ブラウザからでは見えないレスポンスヘッダ(プラグインがあれば見れるブラウザもある)を手軽に見ることができます。 例えば携帯サイトを作っていると、携帯端末から送信されるIDや特殊なヘッダをエミュレートしてアクセスしたい時が多々あります。 PCブラウザのFireFoxでは色々プラグインがあり、携帯端末からのアクセスをエミュレートしてくれるものがありますが、IDや特殊なヘッダはエミュレートしても、その他のヘッダ(Accept-Encoding等)が携帯ブラウザとは違ったりと、100%ではありません。また、値を変えたい時はプラグインの設定を変更しなければいけないので、少し手間です。 telnetを使う方法では毎回送信するリクエスト情報を入力する必要はありますが、一旦リクエスト情報
「まずは使ってみよう!初めてのGit」と「Gitを使ったインストール」において、Gitを紹介した。どちらの場合も、バージョン管理システムとして使うというよりは、「ファイルの共有と転送」のツールとして気楽に使おう、ということだった。 「ファイルの共有と転送」というと、複数の人々が関与する印象が強いが、たった一人でも便利に使えることがある。例えば、複数のコンピュータ上で自分の設定ファイルを同期させたいときだ。 インストーラとしてGitを使う あっちこっちで設定するのは面倒だ 私は、Windows上でMinGWとMSYSを使っている。Cygwinを利用している人も多いだろう。また、いくつかのLinuxサーバーマシンにシェルログインする機会もある。Vagrantを使い始めてからは、デスクトップマシン内にも仮想サーバーマシンが幾つも立ち上がる状況になっている。これらの仮想サーバーマシンにも vagr
OutOfMemoryError回避のためのJavaコーディング – 前編と後編でOutOfMemoryErrorの典型的な発生パターンを3つ紹介した。 (A)サイズオーバー型 巨大な領域確保によって一気にヒープの最大サイズをオーバー (B)メモリリーク型 開放されないオブジェクトが溜まり続けることで使用中メモリが徐々に増加し、メモリが枯渇 (C)マルチスレッド型 長時間処理により”死んだ”スレッドがメモリを食い尽くす じゃあOutOfMemoryErrorが発生したときに、どのパターンのエラーに該当するのか?これを見抜くための手がかりを最後の話題にしたい。 原因究明の手がかりは・・・? OutOfMemoryErrorの原因究明。見るべきポイントはいくつかある。 再現するかどうかをチェック まずは、特定のURLにアクセスした際に高頻度でOutOfMemoryErrorが発生するかどうか、
前回(OutOfMemoryError回避のためのJavaコーディング – 前編)に引き続き、OutOfMemoryErrorの話題。前回は、OutOfMemoryErrorを3パターンに分けた。 (A)サイズオーバー型 巨大な領域確保によって一気にヒープの最大サイズをオーバー (B)メモリリーク型 開放されないオブジェクトが溜まり続けることで使用中メモリが徐々に増加し、メモリが枯渇 (C)マルチスレッド型 長時間処理により”死んだ”スレッドがメモリを食い尽くす 今回は(C)マルチスレッド型に関連するOutOfMemoryErrorを紹介する。 (C)”死んだ”スレッドがメモリを食い尽くす – マルチスレッド型 HTTPリクエストの処理に長時間を要する場合、そのリクエスト処理中で確保したメモリ領域が開放されずに残されたままとなることがある。 長時間かかる処理といえば、大量データの処理や複雑
前回の記事「今すぐVagrantを始めよう」では、Vagrantをインストールして、仮想マシンの生成から破棄までを体験してみた。このとき、天下りにVagrantfileを与えて、使ったコマンドは vagrant up、vagrant ssh、vagrant halt、vagrant destroy の4つだった。今回は、少し現実的な使い方に話を進めよう。 Vagrantを使って、Linuxのコマンドや設定について学習する、そんな目的を設定したとしよう。 関連記事: Vagrantのインストール Windows 10 日本語版の仮想環境を構築する スマホサイトに使える負荷テストツールとは? 作業用フォルダーの準備 Vagrantでは、プログジェクトごとにディレクトリ(フォルダー)を作って、そのフォルダー内にVagrantfileを置くスタイルが推奨されている。ここでは、~/leaning/
なにはなくともVagrantだぜ — 最近私はそう思っている。Vagrant(ベイグラント)は派手なソフトウェアではないが、IT技術者の学習と仕事のスタイルを大きく変革する可能性を持っている。デスクトップマシンとしてWindowsやMacを使っていて、Linuxサーバーにも触る機会がある人、そういう人ならVagrantを使わない手はない、使うべきだ。今すぐ使い始めよう。 関連記事: Vagrantのインストール Windows 10 日本語版の仮想環境を構築する 今や仮想環境は万人に開放された Vagrantは、仮想環境の構築と制御を行うソフトウェアだ。あなたが今使っているそのコンピュータ内に、誰にも迷惑をかけずにいじり倒せる(壊したってかまわない)サーバマシンを生み出すことができる。その仮想サーバーマシンは、開発環境としても、Linuxソフトウェアやサーバー管理の学習や実験にも、自由に気
○:文字化けしない △:一部の条件下で文字化け ×:文字化けする docomoとSoftBankはUTF-8に完全対応できているが、auは最新ブラウザ(バージョン7.2)ですら完全に対応できていない!しかもauはブラウザバージョンやSSLかどうかなどの要因で何やら複雑に変化している。 一体auはどういう動きをしているのか?詳しく調べてみた。 au最新ブラウザはHTMLでGET送信時に文字化け まずはauブラウザver7.2の状況を見てみる。使用したのは、先日会社で購入した最新機種T004。 用意したのはUTF-8のXHTMLコンテンツ。文字表示とフォーム送信(GET)、フォーム送信(POST)の機能テストが行えるようにページを作成した。XML宣言のencodingをUTF-8とし、Content-Typeヘッダにも「application/xhtml+xml; charset=UTF-8」
この結果を見ると、docomoだけがバイト数として扱っているようだ。SoftBank C型・P型の場合もバイト数として扱っていた記憶があるけど、C型とP型は3月末でサービスが終了したから該当しなくなった。 ちなみにバイト数というのは、シフトJIS換算のバイト長のこと。HTMLのキャラクタエンコーディングをUTF-8にしても、結局はシフトJISでの長さとなる。 影響範囲と対応方法 maxlength属性の仕様の違いが最も影響するのは、DBアクセスがからんできたとき。テーブル定義にもよるけど、フォームで入力したテキストをそのままDBに入れてしまうと、DBアクセスでエラーになる可能性がある。 たとえば、Oracleでフィールド定義が VARCHAR2(20) のカラムに日本語を格納する場合、データベースキャラセットがシフトJISなら全角10文字まで入る。PCサイトが前提ならmaxlength=”
HTTPではリダイレクトするときに300番台のステータスコードを使用する。具体的に言うとリダイレクトを表すステータスコードには301/302/303/307の4種類があって、用途によって使い分けられるようになっている。 が、モバイルの世界では4種類のステータスコードを自由気ままに使えるわけじゃない。実機での調査結果を元に、ステータスコードの使い方をまとめてみた。 関連記事: スマートフォン用URLへのリダイレクト設定 iPhone でHTTPプロキシを使用する際の制限 スマホでPDFがダウンロードできない原因
スマートフォンのラジオボタンを使いやすいサイズにするには? 2011.06.14 2020.09.08 Webサイト開発 HTML demo スマートフォンは画面をタッチして操作をするので、フォームを使ったページではラジオボタンとチェックボックスのサイズは入力のしやすさに大きく関わってきます。 情報を入力しているときにボタンサイズが小さくてタッチしにくいと、イライラしてしまったり入力を諦めてしまったりするので、ECサイトなどでは購入機会の損失につながる深刻な問題になりかねません。 それを防ぐ為にも、ボタンは最適サイズにしておきたいものです。 そこで、どのようなCSSプロパティを使うとiPhone、Android端末でボタンをタッチしやすいサイズに調整出来るのか実際に確認してみます。 iPhoneとAndroid端末では結果が少し違っていたので、その結果をまとめてみました。 関連記事: 画像
フィーチャーフォンでは、フォームでテキストを入力する際の文字入力モードをHTMLの属性(istyle=”4″など)で指定できる。文字入力モードは「ひらがな」「カタカナ」「英字」「数字」のように文字種を指定できるから、入力モード切替が煩わしい携帯では切り替えの手間が省け、ユーザビリティが良くなる。 ではスマートフォンは入力モードに対応しているか?いや、Androidに搭載されたブラウザは標準HTML準拠だからダメに違いない・・・。そう思ってあきらめていた。 が、調べてみるとAndroidブラウザでも数字モードに設定する方法があった。 関連記事: maxlengthで半角文字数で制限するには? iPhone向けSafari、HTML拡張属性を使いこなす 画像をピッタリ横並び表示させるテクニック スマートフォンのラジオボタンを使いやすいサイズにするには? スマホ向けページャデザイン 3選 And
坂田さんの前回記事「JavaScript runs on GeneCode Server.」は、ジーンコードとJavaScriptの関係を述べたものでした。その前回記事の、次の一節を敷衍したいと思います。 我々をApacheからJavaScriptをコールするという技術的困難に挑戦させたものは、JavaScriptこそがクライアントやサーバーの枠を超えた未来のメジャー言語になるだろうという予測があるからです。 内容: 10日間で急造されたプログラミング言語 超高速な処理系達 Web言語の共通ターゲット言語としてのJavaScript 10日間で急造されたプログラミング言語 めまぐるしく変化すると思われているITの世界において、プログラミング言語は、驚くほどに寿命の長いものです。いまだ現役のFortranをバッカスが考案したのは1954年ですし、関数型言語の嚆矢Lispは、マッカーシーにより
次のページ
このページを最初にブックマークしてみませんか?
『株式会社シンメトリック|SEOコンサルティング会社』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く