2015年12月28日月曜日

申し訳ない、御社をつぶしたのは私です。 カレン・フェラン著

こんにちは、山田です。

知り合いのお兄さんにおすすめされて
読んでみた本の紹介です。

小学生並みの感想文になりますが、
ご容赦いただければと思います。

http://wrs.search.yahoo.co.jp/FOR=8u2f68dV3ii3eKvAhumeCYUgBT1b7aI0q2Nqf.zc9iVhxiqfgOagmjs.i7RblFZsRaMXjgNUXSlUEuroRG9XciOp2ZmY818eSysNUfLJpNbxC9zLHVPC.pP5.Va2w6BwvfEOjjaM00oAV7qLEzKrdnf8RY3IUiqobx2oz6SUEtjFxEM84S2GtSJLR_zwQa58q16Kgp24FcRFl2rh_mvUrVFvo3OF0kpoL2C.i2UkafjpybX2i9c5pnzqqWsf0KF2dgzq_8ZVv_A3HKrDg3vbXK_4M4d7mczrJIy3h07zsYEVTUo19SQamEfN.56Oj1.Y3h0xAicjzk..5WvnQE9GLNZrnXtHe9AdZO71tHZnbJvbdHtH1QjRbPGgsX43JhEv0zIwrE8spjwZ0dQi.aFwX6oKxmYk8PmipFN1ZLqMcVs2u33z.bDVBGOpbhKqboz179BxJzVKsRCkiV6Y1LR.mmLKodp_fCM6XA886i_iDdd3EbODnHlEsL7GnUqLRAxc4MkzjP9zJNsBA4vqnn2Vnr3Ob8.tj0rd11iKe8aD_8Saq75de.lNDmjswLorj3T3VTA3nu6iLrFRDuy9bHOhWX5Z8qB3h8gmHjH9CQIW3yaQNcVwP.IKu7urFLjXgCIq7Z1yp3Vs_2LVSlKEEI0NBfsWsmWYwCeIPlNvPNdUzzi0RQpae0iw1EQWfygecJPZeiZn69k8zL9mkQ3Zm3UI1tlp0fOJ.dH1ut9yqRYdryHFjzQ_71oWtRACT6ErnCo7_dNw/_ylt=A7dPKSN8P4pW.ksAGOGDTwx.;_ylu=X3oDMTEyNXZwazBxBHBvcwMxBHNlYwNzcgRzbGsDdGl0bGUEdnRpZANqcDAwMDE-/SIG=1eggdbcsv/EXP=1452001596/**http%3A//www.amazon.co.jp/%25E7%2594%25B3%25E3%2581%2597%25E8%25A8%25B3%25E3%2581%25AA%25E3%2581%2584%25E3%2580%2581%25E5%25BE%25A1%25E7%25A4%25BE%25E3%2582%2592%25E3%2581%25A4%25E3%2581%25B6%25E3%2581%2597%25E3%2581%259F%25E3%2581%25AE%25E3%2581%25AF%25E7%25A7%2581%25E3%2581%25A7%25E3%2581%2599%25E3%2580%2582-%25E3%2582%25AB%25E3%2583%25AC%25E3%2583%25B3%25E3%2583%25BB%25E3%2583%2595%25E3%2582%25A7%25E3%2583%25A9%25E3%2583%25B3/dp/4479794336
調べて見ると、少し前に流行った本みたいで、
とあるメーカーから実際に請け負った案件の中で、
つぶれていく会社を目の当たりにする体験談でした。

内容を簡単にまとめると
ビジネスの問題点は人にあるという内容になります。

※ネタバレ注意
・とある赤字部署を、収益がでる形に改善して欲しいと依頼が舞い込むところから始まります。
納期が遅れがちで、当初の生産スケジュールを達成できていない。その原因を調査して欲しいと。
・実際に、その現場の聞き込みをしてみると現場では、「ひとつの生産ラインで、割り込み作業が入る頻度が多く、作業が滞っており困っている。」と言われる。そしてその意見は、現場の監督で止まってしまっているらしいとわかる
一方、営業は遅れた当月の予算を補うために割り込み案件をかき集めている…。

 
何が必要かというと、関わる人のコミュニケーションが不足していることを著者は問題視していました。
営業と、生産者の目的がそれぞれ矛盾しているのに、それでもビジネスを進めてしまっている。
元々はwin-winの関係で成り立つビジネスなのに、だれも喜ばない結果になっている

いろんな人の意見を聞くのは大事なんだと思いました。



他にも似た事例として、人事評価制度が社員をなぜか苦しめているなど面白かったです。

ページネーションに、並び替えや絞り込みがあった場合を調べてみた②

こんにちは山田です。
年末ですね。今年も一年の締めになりました。

年神様を迎えられるように、身辺を整理しましょう。
(山田家では、そもそも鏡餅は幾年も飾っていませんが気持ちだけ)

さて毎度のことながら、グーグルのリファレンスを読んでおり
解読が増えた項目がありました。
 ↓↓↓
コンテンツを指定する
 https://support.google.com/webmasters/answer/1663744?hl=ja 

①canonicalとページネーションは併用できる、そしてページのコンテンツを変更しないパラメータ(たとえばセッション ID)が含まれている場合、ページネーションに記述する

>>rel="next"rel="prev"  は、rel="canonical" と直接関係する概念です。
>>両方を一緒に宣言することができます。
>>たとえば、http://www.example.com /article?story=abc&page=2&sessionid=123 というページには、以下を含めることができます

(例)
<link rel="canonical" href="http://www.example.com/article?story=abc&page=2"/>
<link rel="prev" href="http://www.example.com/article?story=abc&page=1&sessionid=123" /> <link rel="next" href="http://www.example.com/article?story=abc&page=3&sessionid=123" />


 ②コンテンツが変わる場合は?
絞り込みや並び替えの場合ですが、こちらはやはり記述が見当たりません。

SEOのベストプラクシス
https://blog.core-j.co.jp/seo-for-pagination
>>prev/nextで各ページの関連性を指定する際、そのURLを正規化する事はできません。
>>たとえGoogleBotがアクセスしたページ送りのURL にPHPSESSIONなど不要なパラメーターが付与さていても、prev/nextではそのパラメーターを引き継ぐ必要があります。
>>この際、重複イン デックス登録を排除する為に、各ページの正規化されたURLをCanonicalで指定します。

ここの記事を参考にさせてもらうと、
・カノニカルで、URLを正規化することができる
・ページネーションでは、ランディングしたページのパラメータを引き継ぐ必要がある
ということでしょうか?

公式リファレンスのこの記述の部分をまた探してみようと思います。

2015年12月25日金曜日

404.1、404.2という状態コードとは?

こんにちは山田です。

 Webサイトの運用や開発者なら誰でも、
「404 - ファイルが見つかりません」や
「401 - 権限がありません」
などのエラー メッセージを見たことがあると思います。

この時、特定のHTTP状態コードが出たときに、
自分で作成したエラー画面を指定してあげることが出来ます。

■ざっと404エラーの時の指定方法です。

①IISを立ち上げて、エラーページをクリック








 ②目的の状態コードを選択して「編集」




③「このサイトでURLを実行」に表示させたいURLを記述する


以上

■404.1、404.2という状態コードとは?

さて、本題。
状態コードの編集画面に「404または404.2」と記載されているのが気になりました。
404エラーは、NotFoundのエラーだけど、(.少数点)とは、、?

少し調べてみると公式ページに答えが乗っていました。
 ↓↓
IIS 7.0、IIS 7.5、および IIS 8.0 の HTTP 状態コード
https://support.microsoft.com/ja-jp/kb/943891

どうやら、IIS 7.0から、404 エラーなど状態コードだけでなく、
より詳細な原因を特定できるようになったようです。
 例)
  • 404.0 - ファイルまたはディレクトリが見つかりません。
  • 404.1 - サイトが見つかりません。
 よって同じ404エラーでも、小数点から下を指定してあげれば、
もっと詳細に目的別に出しわけができるんですね。

2015年12月24日木曜日

ページネーションに、並び替えや絞り込みがあった場合を調べてみた①

こんにちは山田です。
冬至になりましたね。日が短いと観光地が値崩れするので
個人的にはベスト旅行シーズンの到来でウキウキしてしまいます。

さて本日は、
ページネーションについて深堀してみました。

結論からいうとまだよくわかりません。

■そもそもの目的
SEO対策としてURLの正規化をして、検索順位を上げることです。

URLの正規化で、改ページが必要な場合、ページネーションをするべきと
Geogleの推奨があります。
(そもそも、Geogle的には、AllPageViewページを別途用意することを一番推奨しています。)

そしてAllPageViewページではなく、改ページをしたい場合用に、
ページネーションタグが使えるようになっています。
ですので、ページの続きページに該当するページの場合
nextタブを振ってあげればよいです。

■絞り込みや並び替えの時は?
そう、ここの問題にぶつかりました。
ここからがはっきりわかりません。

いろいろぐぐってみて一番わかりやすかったのは以下のページかなと思っています。

rel=“prev”とrel=“next”のページネーションにおける正しい使い方
https://www.suzukikenichi.com/blog/implementing-rel-prev-next-correctly/
ここでは、絞り込みや並び替えの場合は、内容は少し異なるので、
それぞれのパラメータの場合で、ページネーションを入れるべきと言っています。

rel="canonical" 属性におけるURLパラメータの扱いについて
https://productforums.google.com/forum/#!topic/webmaster-ja/G05Zn-b5bG0
一方こちらでは、全体としては、同じコンテンツになるので分ける必要がないという
お話しになっています。

もうちょっと追加調査をしてみようと思います。

2015年12月21日月曜日

モーダルウインドウのプラグインを使ってみた

こんにちは山田です。
 今回モーダルウィンドウを実装するにあたって プラグインを使用したのでその覚書です。

 ■そもそも、モーダルウィンドウとは
何らかのウィンドウの子ウィンドウとして生成され、ユーザーがそれに対して適切に応答しない限り、制御を親ウィンドウに戻さないユーザインタフェース設計
 (https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%80%E3%83%AB%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6)

モーダルウィンドウでググると、かなりたくさんプラグインが出ていることがわかりました。
びっくりです。
その中でも一番簡単にできそうなものをチョイスしてみました。

■使用したプラグイン 今回使ったプラグインはこちら
http://zurb.com/playground/reveal-modal-plugin

■3分でわかるモーダルウィンドウ組み込みの流れ

①上記のURLからファイル一式をダウンロードし、目的のディレクトリに配置
②ヘッダー部分にjsの読込を追加


④HTMLに、下記のようなフォーマットで記述する
クリックしてみてください





以上

2015年12月18日金曜日

DOM読み込み時に動作させる $(document).ready

こんにちは山田です。

DOMという言葉を最近知りました。

■DOMとは :XMLやHTMLで記述された文書をプログラムやスクリプトから参照あるいは操作するための方法を提供する仕組み(出典|ASCII.jpデジタル用語辞典)

というわけで
DOMの読み込み完了時のみに処理をいれたい時に使う関数の紹介です。
フロントエンドだと、jQueryがやっぱり便利ですね。

■関数はこちら
JavaScript
jQuery(document).ready(function(){
 //実行したい関数
});

■実際に作ったソース

非表示にしたい要素を隠したり、
タブ付きメニューのタブ部分とパネル部分の初期化を行ってみました。

jQuery(document).ready(function(){
  //閉じたい要素を閉じたり
 $("#placeCount").css("display","none");
 
 //タブ付きメニューの、タブとパネル部分の初期化
 $("#tab li:first").addClass("tabCurrent");
 $(".panel:not(:first)").hide();
});

2015年12月17日木曜日

任意の位置でタブメニューを開いておく

こんにちは山田です。

タブ付きのメニューってありますよね。
それを、初期状態で受け取った数字によって、
開始タブを任意に変えることをやりました。
その備忘録です。
タブとそれに紐づくパネルが同時操作されます。
タブの部分は、クラス名に"tabCurrent"があるもの
パネル部分は、目的のdivタブのみ表示をさせています。



HTML

      
  • 消防車
  •   
  • 救急車
  
   
          
  • 赤い
  •       
  • 大型車
  •     
  
  
JavaScript

$(function() {
 var num = "<%=ID %>";//サーバサイドから値渡し
 var $currentTab = $("#tab" + num);
 $currentTab.addClass("tabCurrent");
 //パネル側も同様にやる
 var $currentPanel = $("#panel" + num);
 $(".vehiclePropaty").hide();
 $currentPanel.fadeIn("fast");
});

2015年12月16日水曜日

CSSのDisplayプロパティ

こんにちは山田です。

JSの制御で、
データがない時は、丸ごと消しときたい時ってありますよね
その時の実装例です。


件数
$(function() {
    $('button').click(function(){
        $('div').css('display', 'none');
    });
});

ちなみにjQueryの .hide()はこれと同様にdisplayプロパティのblock→noneの動作をさせることが出来ます。

三項演算子とは?

こんにちわ、開発者のⅠです。

山手線の新型車両が11月30日にデビューしたのですが、翌日から運転を取りやめているようです。いつ復帰するのかも現時点では不明とのことで、見切り発車だったとは思いたくないのですが、今後が気になる話です。

さて、今回は三項演算子についてのお話です。

この三項演算子の構造を簡潔に書いてみると、以下の様に表現できます。

"A 条件式 " ?  "B 真の場合の処理"  :  "C 偽の場合の処理"

これは、ifを使った条件文

if ("A 条件式")
{
   "B 真の場合の処理"
}
else
{
   "C 偽の場合の処理"
}

と同じ構造になっています。

具体的に三項演算子を使って思います。
今回の例文では、変数ageを宣言しておき、その値によって表示される文言が切り替わります。
int age = 30;

void CheckAge(int age)
{
    printf("%s", (age >= 20)? "私は成人です" : "私は未成年です");
}

// 表示されるのは"私は成人です"


それでは、今日はこの辺りで失礼します。

2015年12月15日火曜日

jQueryでHTMLにテキストを表示させる方法

こんにちは山田です。

jQueryでHTML上にテキストを表示させる方法です。
使うのは以下の構文です。

.text(textString)

引数のtextStringはマッチした要素内に挿入するテキスト文字列です
実際に使ったソースは下のようになります。

勝手ながらスペースの問題で、格納した文字の0番目のみをテキストとして表示させて、2個目以上は「…他」と表示させてました。
実際に表示される位置はid名が ”plceText”の要素になります。
参考になりますでしょうか?


//表示させたいテキストを配列で用意する(disp_yourText)
if(disp_yourText.length > 0)
{
 if(disp_yourText.length > 1)
 {
  $('#placeText').text(disp_yourText[0] + "...他");
 }
 else{
  $('#plceText').text(disp_yourText[0]);
 }
}

 


2015年12月14日月曜日

”CustomValidator”について

こんにちわ、開発者のⅠです。

さて、今回はASP.NETの検証コントロールの一つである「CustomValidator」についてのお話です。
といってもそんな大したことではないですが……。
他の検証コントロールには、「RequiredFieldValidator」「RegularExpressionValidator」などがありますが、これらと「CustomValidator」には違いがあります。

それは、『ControlToValidate』プロパティが空でも良いという点です。

つまりは、検証対象の指定が必須ではなく、任意であるということです。

ソースコード側で、検証の対象やErrorMessageプロパティに適当なメッセージを設定することも可能です。

やはり、"Custom"という名は伊達じゃないといった所でしょうか。


それでは、今日はこの辺りで失礼します。

Google AJAX Feed APIとは

こんにちは山田です。

今年の東京は12月なのに24度を超える日がありました。
11年ぶりだそうです。
とても暖かくて半袖でも外出できそうです。

さて本題に入るのですが、
外部サイトが配信しているニュースを自分のサイト内で受けとって表示できないかと画策していたら、その方法の一つとして
統一された規格のRSSというものがあるとわかりました。

(一時期はRSSが人気だったようなのですが、
近年はサービス終了も目立っている印象ですね。)

今回はRSSについて調べて見ました。

■RSSとは
「Rich Site Summary(リッチ・サイト・サマリー)」の略で、主にWebサイトの更新情報を公開することを目的に使われています。 

一昔前では、各サイト(ブログとか)の更新情報を取得する手段は、直接サイトを開いて記事が追加されているか、人が操作して確認するしかありませんでした。
その改善方法として、生まれたものです。

■バージョン
  • RSS1.0
  • RSS2.0
  • Atom
1.0と2.0は違うものです。Atomは2.0をシンプルにしたイメージのものです。
バージョンの違いについて詳しくはこちら↓
http://d.hatena.ne.jp/akagami_ext/20081209/p3

■RSSフィードとRSSリーダーの違いについて
RSSには配信する側と、受け取る側で呼び名が違います。
まずフィードとは供給の意味があり、RSSを発信する立場にあります。
これをRSSフィードと呼びます。
一方、それを受け取る方をRSSリーダーと呼んでいます。

■RSSリーダーの作り方
ASPNET3.5 からは
System.ServiceModel.Syndicationというクラスライブラリが追加されているのでそれを使うと便利なのですが、
今回はGoogle AJAX Feed API
という便利なAPIを見つけたので、これを使ってみたいと思います。

■Google AJAX Feed API(グーグルリファレンス)
このページに乗っているサンプルコードを参考に作ってみると、
リーダーが使えるようになりました。
https://developers.google.com/feed/v1/devguide?hl=ja


参考文献:私も試してみた
http://mypacecreator.net/blog/archives/960

2015年12月10日木曜日

任意のURLの文字列を作るためには?

こんにちは山田です。

本日は任意のURLの文字列を作成する方法です。
そもそもの経緯としては、改ページをする時に、現在のURLをそのまま引き継ぎつつ新しいURLとしてページ番号入りのものをつくるために使いました。
開発言語:C#

public static void Main() 
{
 string _param = "";//何か引数があれば"&"ごとに代入
 string url = CreateLink(1,100, _param != "" ? "?" + _param : "");
 Console.WriteLine(result);
}
public string CreateLink(int _caseID, int _ID, params object[] _args)
{
 string result = "";
 if(_args != null && _args.Length > 0)
 {
  switch (_ID)
  {
   case 1:
    // 0:ID 1:queryparam
    result = string.Format("/zoo/{0}/index.aspx", Utility.NullToString(_args[0]).PadLeft(4, '0'));
    if (_args.Length >= 2)
    {
     result = string.Format("/zoo/{0}/index.aspx?{1}", Utility.NullToString(_args[0]).PadLeft(4, '0'), Utility.NullToString(_args[1]));
    }
    break;
   case 2:
    //他のこと
    break;
   default:
    break;
    
   }
  }
  return result;
 }
}
 
この場合出力は 
/zoo/0100/index.aspx
となります。 
もし別途パラメータを付けたい場合も
/zoo/0100/index.aspx?page=1&area=1
と使うことが出来ます。 

2015年12月9日水曜日

クライアントからリクエストされたURLを取得する方法

 こんにちは山田です。
開発環境:ASP.NET2.0
開発言語:C#

リライトをかけたページの改ページと並び替えをしようと思っていた時に、
仮想URLを取得したい場面がありました。

クラスライブラリを探したり、ネットを探したら
綺麗にまとめているページがあったので参考にさせていただきました。

プロパティ 種類 物理/仮想 クエリ情報 追加パス
ApplicationPath アプリケーションパス 仮想 × ×
PhysicalApplicationPath アプリケーションパス 物理 ×
CurrentExecutionFilePath ファイルパス 仮想 × ×
FilePath ファイルパス 仮想 × ×
Path ファイルパス 仮想 ×
PhysicalPath ファイルパス 物理
RawUrl ファイルパス 仮想
Url ファイルパス 仮想(フルURL)
PathInfo 追加パス 仮想 ×
 @IT[ASP.NET]クライアントからリクエストされたURLを取得するには?

 このRawUrlを使って解決しました。
他にもプロパティがあるので試してみようと思います。

2015年12月8日火曜日

OGP設定とは

こんにちは!Sです

今日はOGP設定について・・・

▼OGP(Open Graph Protocol )とは
facebookなどのSNSとウェブページを連結するために設定する記事情報です。

この設定をすると何が違うのかというと、
例えばAさんがfacebookで「いいね!」をした場合にこの設定がされた記事では
Aさんの友達のニュースフィードにも指定されたURL、TDK、サムネイル画像が表示されます。
逆に言えば、この設定をしておかないとニュースフィードに反映されないため
あまり多くの人の目に触れる機会がなかなかありません。。。

▼設定方法
設定は簡単で下記のようなmetaタグをhead内に記述するだけです

<meta property="og:title" content="タイトル"/>
<meta property="og:type" content="blog"/>
<meta property="og:url" content="http://~"/>
<meta property="og:image" content="http://~"/>
<meta property="og:site_name" content="サイト名"/>
<meta property="og:description" content="ディスクリプション"/>

2015年12月7日月曜日

【SQLserver】DBテーブル内のカラムにコメントを登録する

こんにちわ、開発者のⅠです。

さて、今回はDB操作に関するお話です。
クエリ文を作成しそれをプログラム上で実行することで、新規テーブルの作成やカラム追加など、様々な操作が可能です。

その中で、今回はカラムにコメントを登録する方法を伝えします。
カラムの定義変更や追加には【ALTER TABLE】を利用することになりますが、新規にカラムを追加する場合はコメントには何もない状態です。

このコメント、カラム自身がなにを格納するものなのか、それを説明するのに結構重要なものです。コメント自体は手動で登録・編集が可能ですが、カラム作成と同時に登録できれば手間を省けますね。

それでは、早速書いてみたいと思います。
環境は、
・管理プログラム:SQL Server Management Studio
・対象テーブル:日本の観光名所を登録している「dbo.tbl_attractions」
・追加するカラム:設立した年を格納する『year』 とします。
/* カラム『year』の追加 */ 
ALTER TABLE tbl_attractions ADD year datetime

/* カラム『year』にコメントを登録する */
EXEC sys.sp_addextendedproperty  @name=N'MS_Description'
                                ,@value=N'設立した年'
                                ,@level0type=N'SCHEMA'
                                ,@level0name=N'dbo'
                                ,@level1type=N'TABLE'
                                ,@level1name=N'tbl_attractions'
                                ,@level2type=N'COLUMN'
                                ,@level2name=N'year'


これで、カラムにコメントが登録できるはずです。
登録されたかどうかを確認するには、対象のテーブルで右クリックし、デザインを開くとカラムの設定情報の一覧が表示されますから、その中の”説明”に登録したコメントが入っているはずです。

それでは、今日はこの辺りで失礼します。

2015年12月4日金曜日

そもそもWebAPIとは?

こんにちは山田です。
外部サーバとデータの受け渡しをする方法として、
APIという方法があるとわかったのでその調査をしてみました。

よくあるAPIとしてはGeogleMAPや郵便番号の検索が思いつくと思います。

日本の全エンジニアに捧ぐ!現在公開されているAPI一覧【2013年版】



■そもそもWebAPIとは

Application Program Interfaceの略
直訳すると、あるプログラムを、他のアプリケーションから利用するためのインターフェースという意味になります。

目的としては、自社で保有するデータや、システム、アプリケーション、Webサービスの機能を公開して他社で使ってもらうためです。

動きとしては
WebAPIで機能を公開しているサーバに対して、HTTPリクエストの形で送信して、
処理結果がHTTPレスポンスの形で返ってきます。

■URLの設計
方法としてサブドメインに配置する方法 http://api.example.com/
ドメイン下に置く方法 http://example.com/api/
それぞれあります。
自分でつくるサイトは小規模なので、後者でよさそうです。

■外部APIと内部APIの違い
社外の人に使ってもらうものを外部APIと呼び分けています。
社内で完結する場合は内部APIというものになります。

■データ通信形式
XMLとJSON(JavaScript Object Notation)がある
最近では可読性の観点から、JSONを使うことが一般的のようです。

■HTTPリクエストを送る際のポイント
●リクエスト形式
HTTPリクエストを送信する方法としては、大きく分けてJSONとフォームの二つがあります。

フォーム形式が一般的で、フォームでのPOST送信の場合、文字データだけではなく画像や動画などのバイナリデータも送れます。

JSON形式も最近多い形です。こちらは構造化したJSONデータなので、送る際に可読性が上がるというメリットがあります。

5分で絶対に分かるAPI設計の考え方とポイント より
http://www.atmarkit.co.jp/ait/articles/1511/19/news022.html

2015年12月3日木曜日

XMLHttpRequestとは?

こんばんわ、開発者のⅠです。

さて、今回は前々回の投稿についての補足として、APIのひとつであるXMLHttpRequestについて説明したいと思います。

以下のソースは、前々回の投稿での使用例です。
マーカーの情報が記録されたCSVファイルを読み込むための関数 getCSVFile に組み込んでいます。
 
 function getCSVFile() {
   var xhr = new XMLHttpRequest();
   xhr.onload = function () {
   createArray(xhr.responseText);
   };

   xhr.open("get", "markerlist.csv", true);
   xhr.send();
 }
 getCSVFile();

このAPIは、ブラウザ上でサーバーとHTTP通信を行うために利用します。


また、各メソッドの意味については以下の通りです。

【onload】 : レスポンスを受信完了した段階で行う処理を記述します

 【open】: 実際に送信するリクエストを生成します。リクエストの型、ファイルの存在するURL、
       非同期通信を行うか否かを指定します。

 【send】: 生成したリクエストをサーバーへ送信します。


つまり、上に記述した関数 getCSVFileを言い換えてみると、

 「markerlist.csvを対象に非同期通信を行うようGET型のリクエストを生成・送信し、
   この通信が完了した時点で、取得したファイル内のデータを引数として、
  関数createArray(xhr.responseText)を実行する」

という感じでしょうか。

思ったよりも、シンプルに外部ファイルを取得できるのですね……。

それでは、今日はこの辺で失礼します。









GetTypeで型名を見る C#

こんにちは山田です。

型名って忘れること多くないですか?
そんな時にこれさえ覚えとけば安心の、型名の出力方法の覚書です。
開発環境:ASP.NET 2.0
開発言語:C#

必要となる構文はこちらです。
 Object.GetType メソッド

例) ASPX側


 <%# Eval("AnimalName") %>


ASPX.CS側
protected void AddStatus(object sender, RepeaterItemEventArgs e)
{
  //is演算子でオブジェクトの型の確認
  if (e.Item != null && e.Item.DataItem is string)
  {
  Control ctl1 = e.Item.FindControl("ahref");
  //ct1の形名がわからないとき
  Response.Write(ctl1.GetType().Fullname);
  //出力は「System.Web.UI.HtmlControls.HtmlAnchor」となり型名を教えてくれる

  if (ctl1 != null && ctl1 is System.Web.UI.HtmlControls.HtmlAnchor)
  {
      //型名に合わせて安全にキャストできる
   ((System.Web.UI.HtmlControls.HtmlAnchor)ctl1).Href = "";
  }
}

2015年12月1日火曜日

CSVファイルとは?

こんにちわ、開発者のⅠです。

今回は、前回の投稿で触れたCSVファイルについて説明したいと思います。

CSVは「Comma Separated Values」のそれぞれ頭文字です。
”カンマ区切り文字”とでも言いましょうか。

「名前、経度、緯度」の各要素が書き込まれたCSVファイルを例にしてみると、

東京タワー, 35.658589, 139.745615
浅草 雷門, 35.711020, 139.796336
中央本線 笹子駅, 35.603862, 138.825087

という様式になっています。
カンマごとにマーカーの「各要素」が存在し、さらに「マーカー1つに一行のデータ」という対応関係になっていますね。

前回の投稿では、splitメソッドを使っていましたが、その際に区切り文字に”, (カンマ)”と”\n(改行コード)”を設定していたのはこういう理由からです。

このCSVファイルの作成・表示はMicrosoft社のExcelで実行可能ですが、若干の問題があります。
それは文字化けです。Excelでは新規ファイルを作成するときに、CSVファイルとして保存することが可能ですが、文字コードは「Shift-JIS」で固定されます。

自分の環境ではUTF-8を用いる必要があったため、このまま作成したCSVファイルを読み込むと、マーカーは表示されますが、インフォウィンドウの中身が見事に文字化けしました。
この対処法として、一旦メモ帳でファイルを開き、改めて『名前を付けて保存』で文字コードをUTF-8に設定しました。

しかし、編集するためにExcelでCSVファイルを開いてしまうと、再び文字コードが変更されるようで、文字化けが発生してしまいました……。

※Excel上で保存時に文字コードを指定できない理由わからず、自分と同じ悩みを持った人がネット上で見受けられました……。

現在は、VisualStudio上で編集を行っており文字化けは発生しておりません。

せっかく表示させたマーカーをクリックしてみたら、わけのわからない文字が羅列されていると大変残念な気持ちになります。くれぐれもご注意ください。

それではこの辺りで失礼します。