Quantcast
Channel: なか日記
Viewing all 848 articles
Browse latest View live

EntityFrameworkで発行されているSQLを確認する方法

$
0
0

EntityFrameworkを使用するとSQLをいいように発行してくれるので、SQLをあまり意識しなくて済むようになります。

でも、どんなSQLが発行されているのか気になることがありますよね。

そんな時にSQLを確認する方法を2つ書いておきます。

方法1:DbContext.Database.Logプロパティを使用する

DbContext の Database.Log プロパティを使用すると、発行しているSQLをログ出力できるようになります。

例えば、以下のサンプルのようにデリゲートを書いてあげると、Visual Studioの出力ウィンドウにSQLが出力されるようになります。

f:id:nakaji999:20141210030143p:plain

サンプル

publicclass AppDbContext : DbContext
{
    public DbSet<Article> Articles { get; set; }
}

publicclass Article
{
    publicint Id { get; set; }
    publicstring Title { get; set; }
    publicstring Contents { get; set; }
}

class Program
{
    staticvoid Main(string[] args)
    {
        Database.SetInitializer(new DropCreateDatabaseAlways<AppDbContext>());

        var db = new AppDbContext();
        
        // デバッグ出力にSQLを出力する
        db.Database.Log = sql => { Debug.Write(sql); };

        var article = new Article() { Title = "タイトル", Contents = "本文"};
        db.Articles.Add(article);
        db.SaveChanges();
    }
}

出力結果

こんな感じに出力されます。

Opened connection at 2014/12/10 2:53:09 +09:00
Started transaction at 2014/12/10 2:53:09 +09:00
CREATE TABLE [dbo].[Articles] (
    [Id] [int] NOT NULL IDENTITY,
    [Title] [nvarchar](max),
    [Contents] [nvarchar](max),
    CONSTRAINT [PK_dbo.Articles] PRIMARY KEY ([Id])
)
-- Executing at 2014/12/10 2:53:09 +09:00
-- Completed in 41 ms with result: -1

Committed transaction at 2014/12/10 2:53:09 +09:00

Opened connection at 2014/12/10 2:53:09 +09:00
Started transaction at 2014/12/10 2:53:09 +09:00
INSERT [dbo].[Articles]([Title], [Contents])
VALUES (@0, @1)
SELECT [Id]
FROM [dbo].[Articles]
WHERE @@ROWCOUNT > 0 AND [Id] = scope_identity()
-- @0: 'タイトル' (Type = String, Size = -1)
-- @1: '本文' (Type = String, Size = -1)
-- Executing at 2014/12/10 2:53:09 +09:00
-- Completed in 13 ms with result: SqlDataReader

Committed transaction at 2014/12/10 2:53:09 +09:00
Closed connection at 2014/12/10 2:53:09 +09:00

方法1:SQL Server Profilerを使用する

方法1はソースを弄る必要があるので、本番稼働している場合などはちょっと難しいかもしれません。

そんな時は SQL Server Profiler を使用すればいいと思います。もちろん、データベースに SQL Server を使っている場合のみの方法です。ちなみに、ローカルDBを使用している場合でも使えます。

接続

SQL Server Profiler して SQL Server へ接続します。

f:id:nakaji999:20141210031716p:plain

ローカルDBの場合はサーバ名の所に「(LocalDb)\v11.0」と入力します*1

トレースの設定

「全般」タブはデフォルトのままにしておきます。 f:id:nakaji999:20141210031259p:plain「イベントの選択」タブでは不要な情報が出力されないよう、「RPC:Completed」と「SQL:BatchCompleted」だけチェックしておきます。 f:id:nakaji999:20141210031303p:plain

処理を実行して確認

処理を実行すると以下のように発行されたSQLを見ることができます。 f:id:nakaji999:20141210031306p:plain

*1:バージョンに合わせて変更が必要


SGMLReaderで「えひめFreeWi-Fi」サービス提供箇所をスクレイピング

$
0
0

愛媛県では県主導の「えひめFreeWi-Fi」という無料WiFiサービスが提供されています。

提供されている場所は以下のページに載っているのですが、ただのリストなので非常にわかりづらいです。

というわけで、第一歩としてこのデータを抜き出してみたいと思います。

Html Agility Pack

C#で使えるHTMLパーサといえば、Html Agility Packがありますが、これを使ったやり方は酢酸先生のブログを見もらったらいいと思います。

SGMLReader

今回はSGMLReaderを使ってみたいと思います。

サンプル

staticvoid Main(string[] args)
{
    var urlString = "http://www.pref.ehime.jp/h12600/wifi/osirase260822.html";

    XDocument xml;
    using (var sgml = new SgmlReader() { Href = urlString, IgnoreDtd = true })
    {
        xml = XDocument.Load(sgml);
    }

    var ns = xml.Root.Name.Namespace;
    var spots = xml.Descendants(ns + "table")
        .Last()
        .Descendants(ns + "tr")
        .Skip(1) // タイトルをスキップ
        .Select(e => e.Elements(ns + "td").ToList())
        .Select(x => new
        {
            Place = x[1].Value,
            Address = x[2].Value,
            ServiceProvider = x[3].Value
        });

    foreach (var spot in spots)
    {
        Console.WriteLine("施設/箇所名:{0} 住所:{1} サービス提供事業者:{2}",
            spot.Place, spot.Address, spot.ServiceProvider);
    }
}

最初の using の部分で SgmlReader を使って XDocument を取得し、後は Html to Xml でごにょごにょしてます。

ね、簡単でしょう?*1

参考にさせてもらった記事

SgmlReader 自体は酢酸先生から教えてもらいました。

そこから蜜葉たんのブログを経由して、

neueさんのブログで何となくわかった気になった感じです。

*1:Html to Xml ほとんど使ったことないので実はよくわかってない…

@daruyanagi に先を越されたけど「えひめFreeWi-Fi」のサイトを立てた

$
0
0

昨日、こんな記事を書きました。

この中で、

というわけで、第一歩としてこのデータを抜き出してみたいと思います。

と書いたのはその続きが頭の中にあったからなのですが、何も話してないのにだるやなぎ氏に先を越されました\(^o^)/

悔しかったので

自分もAzure上にサイトを立てました。

f:id:nakaji999:20141217030046p:plain

相変わらず、かなり雑いです*1がその分、弄る要素はたくさんあって楽しいです。きっと。

やってること

WebAPIの公開

といっても、全スポットを丸っとJSONで返すだけです。

愛媛県のサイト*2からスクレイピングしてWebCacheに格納してます。

キャッシュの保持期間は1日なので、新しくスポットが追加されても最大で1日後には更新される(はず)

地図の公開

といっても、該当の住所にピンを立てるだけです。

これは@daruyanagiのブログ内容をパクリ返してます。

やりたいこと

どうやるかはまるで方針が立っていませんが、こんなのができたらもっと便利かもねー

  • ピンに場所の名前(お店や施設名など)をセットして、ポップアップで表示
  • ピンの色をサービス提供業者で変える
  • 地図の中央を愛媛県庁あたりにしてもっと拡大しとく
  • 約400箇所全てピンを立てててクソ遅いので、表示されてる部分だけピンを立てるとかできたらなぁ
  • スポットの検索ができるように

ソース

いつもの様にGitHubに晒してます。

雑感

だるやなぎ氏のおかげで、こんなちょろっとしたものにはWebCacheを使えばいいことに気がついた。ありがとう。

*1:でも、ちゃっかり広告を貼るあたりに成長の跡(?)が見れます

*2:愛媛県庁/えひめFree Wi-Fiサービス提供箇所等のお知らせ

C#で住所から緯度経度情報を取得する

$
0
0

住所から緯度・経度といった地理座標を取得する場合、WebAPIを使うのがお手軽です。

Google Geocoding API

Googleが提供しているAPIです。

注意点

次のような制限があるので注意が必要です。

Google Geocoding API 使用時のクエリ制限として、1 日あたりの位置情報リクエストが 2,500 回に制限されています(Google Maps API for Business をご利用の場合は、1 日あたり 100,000 件までリクエストを実行できます)。

サンプル

var url = string.Format("http://maps.google.com/maps/api/geocode/json?address={0}",
    HttpUtility.UrlEncode("松山市二番町2丁目9-1エフショコラビル2階"));

byte[] result;
using (var wc = new WebClient())
{
    result = wc.DownloadData(url);
}

var jsonString = Encoding.UTF8.GetString(result);

var placeInfo = DynamicJson.Parse(jsonString);
if (placeInfo.status == "OK")
{
    var location = placeInfo.results[0].geometry.location;
    Console.WriteLine(location.lat.ToString());
    Console.WriteLine(location.lng.ToString());
}
//コンソールには「33.8401915」と「132.7707142」が表示される

Yahoo!ジオコーダAPI

Yahoo!が提供しているWebAPIです。

注意点

事前に Yahoo!デベロッパーネットワークでアプリケーションを登録してAPIキーを取得する必要があります。

サンプル

var url = string.Format("http://geo.search.olp.yahooapis.jp/OpenLocalPlatform/V1/geoCoder?appid={0}&query={1}&output=json",
                            "{APIキー}",
                            HttpUtility.UrlEncode("松山市二番町2丁目9-1エフショコラビル2階"));

byte[] result;
using (var wc = new WebClient())
{
    result = wc.DownloadData(url);
}

var jsonString = Encoding.UTF8.GetString(result);

var placeInfo = DynamicJson.Parse(jsonString);
if (placeInfo.ResultInfo.Count > 0)
{
    var location = placeInfo.Feature[0].Geometry;
    Console.WriteLine(location.Coordinates);
}
//コンソールには「132.77070764,33.84025979」が表示される

GoogleMapで表示されている地図の範囲を取得する

$
0
0

画面に表示されている地図がどの範囲まで表示されているかを取得するサンプルです。

Google Maps JavaScript API v3を使っています。

画面サンプル

地図を移動したり、倍率を変えるとそれに合わせて表示されている位置情報が変わります。

f:id:nakaji999:20141219043926p:plain

コードサンプル

google.maps.Map クラスの bounds_changed を使用します。

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8" /><title>表示されている地図の範囲を表示する</title><scriptsrc="scripts/jquery-1.10.2.js"></script><scriptsrc="https://maps.googleapis.com/maps/api/js?v=3.exp"></script><script>        $(function(){            google.maps.event.addDomListener(window, 'load', initialize);function initialize(){var myLatlng = new google.maps.LatLng(33.839193, 132.765563);var mapOptions = {                    zoom: 15,                    center: myLatlng}var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);                google.maps.event.addListener(map, 'bounds_changed', function(){                    $("#addressList").val(
"北東:" + map.getBounds().getNorthEast().lat() + "," + map.getBounds().getNorthEast().lng() + "\r\n" +"南西:" + map.getBounds().getSouthWest().lat() + "," + map.getBounds().getSouthWest().lng()
);});}});</script></head><body><h1>表示されている地図の範囲を表示する</h1><textareastyle="width: 100%; height: 50px;"id="addressList"></textarea><divid="map-canvas"style="height: 250px;width: 500px;margin: 20px;padding: 20px;"></div></body></html>

GoogleMapでマーカーを1000置いたらどれくらい時間がかかるか測ってみた

$
0
0

GoogleMapでマーカーを1000置いたらどれくらい時間がかかるか測ってみました。

結論から言うと、「チッチャイことは気にするな! それ! ワカチコ!ワカチコ!細かいことは気にせず、立てまくろうぜ!」って感じでした。

f:id:nakaji999:20141223012336p:plain

緯度経度を指定すれば1秒以内でサクッと立っちゃいます。

ソース

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8" /><title>1000個マーカーを置いたときにかかる時間</title><scriptsrc="scripts/jquery-1.10.2.js"></script><scriptsrc="https://maps.googleapis.com/maps/api/js?v=3.exp"></script><script>        $(function(){            google.maps.event.addDomListener(window, 'load', initialize);function initialize(){var myLatlng = new google.maps.LatLng(33.839193, 132.765563);var mapOptions = {                    zoom: 10,                    center: myLatlng}var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);var start = newDate();for(var i = 0; i < 1000; i++){var marker = new google.maps.Marker({                        position: new google.maps.LatLng(33.839193 + Math.random() - 0.5, 132.765563 + Math.random() - 0.5),                        map: map,                        title: 'Hello World!'});}var end = newDate();;                $("#addressList").val((end - start) / 1000 + '秒');}});</script></head><body><h1>1000個マーカーを置いたときにかかる時間</h1><textareastyle="width: 100%; height: 50px;"id="addressList"></textarea><divid="map-canvas"style="height: 500px;width: 500px;margin: 20px;padding: 20px;"></div></body></html>

きっかけ

この前、愛媛FreeWi-Fiのオレオレサイトを作りました。

そこで、

約400箇所全てピンを立てててクソ遅いので、表示されてる部分だけピンを立てるとかできたらなぁ

ということを書きました。ここで使ってたスクリプトは「住所を指定してピンを立てる」っていうものでしたが、ピンを立てるには位置情報が必要ですよね。という事は、住所から位置情報を取得して、それからピンを立ててるわけですね。

こんな風に。

   geocoder.geocode( {'address': address[index].address}, function(results, status) {if (status == google.maps.GeocoderStatus.OK) {
            address[index].location = results[0].geometry.location;

という事は、遅いのは住所から位置情報を取得する部分(Googleさんに問合せするから)ですね。

方針変更

そんなこんなで、愛媛FreeWi-Fiのオレオレサイトの方針を以下のように変えてみることにしました。

  • 愛媛県のWebサイト*1をスクレイピングする際に住所から位置情報を取得、格納する

そのための検証第一弾がこれ。

そして第二弾がこのエントリでした。

肝心のオレオレサイトの更新は・・・年が明けるまでにはやるかなぁ

サンタクロースからのプレゼント

$
0
0

今日はクリスマスですね。

我が家にはサンタの事情で22日の夜から朝にかけてプレゼントを届けてくれました。

届いたプレゼントはこれです。

アンパンマン ぴょんぴょんジャンプ

アンパンマン ぴょんぴょんジャンプ

もちろん、アラフォーのおっさんが使うための物じゃないです。息子向けですね。

息子にとって

かなりのヒットだったようです。

大好きなアンパンマンだったというのもありますが、飛び跳ねたい年頃(?)だったらしく、以前からソファーの上で飛び跳ねてました。

なので、見てるこっちが気持ち悪くなるくらい飛び跳ねてます。そして、2日目にしてトランポリンから隣に畳んである布団にダイブ することを覚えました。

これをきっかけに、少しでも人並みの運動神経を獲得出来れば嬉しい*1

自分にとって

子供が喜んでるのを微笑ましく見ることができるのはもちろんですが、このトランポリン体重制限がなんと70kg。自分もかろうじて飛び跳ねることが出来ます。

やってみると意外と楽しい。そして、しんどい(

「よーし、お父さん今日からダイエットしちゃうぞー」な感じで縄跳びをしてみたものの、自分の体の重さにげんなりして挫折したという経験をしたことがある人は多いと思います。しかし、これなら自分の体の重さをあまり感じません。飛んでて気持ち良いです。(しんどいけど)

ですので、(体重70kg以内の)大人にもお勧め。

注意点

トランポリンとしては小さいんでしょうけど、それなりにでかいです。直径90cmなので、コタツくらいの場所を取ります。

お父さんへのプレゼントは

もちろん、今年もありませんでした(

*1:遺伝に負けないで欲しいという意味で

2014年の人気記事

$
0
0

この前、だるやなぎがこんな事つぶやいてました。

これはいいネタじゃないか。 はてなカウンターでも使ってデータ取ってくるやつ作ってみようかなぁと思ったのが3日前、そして何もしないで今日に至ったのですが、しばやん先生がサクッと作って*1しまいました。さすがやでぇ。

というわけで、なか日記の今年の人気記事を見てみようと思います。

2014年の人気記事

  1. 「Janetter」にアカウント登録しようとしたら断わられた - なか日記
  2. Kindleに自分が持ってるPDFを登録する方法 - なか日記
  3. ArrayAdapterをつかったカスタムリスト - なか日記
  4. StyleCopを使ってみる - なか日記
  5. 待ってたよOneDrive! - なか日記
  6. Kindleで購入した電子書籍がダウンロードできなかった - なか日記
  7. MSTestでプライベートメソッドのテストを行う(自力) - なか日記
  8. Viewのフリックを実装する(一部問題あり) - なか日記
  9. 感冒性胃腸炎 - なか日記
  10. 日本語CDDB - なか日記

所感

いやー、こうして見せつけられるとなんだか切ないですね。世の中の多くの人にアプローチできるのは一般的な記事なので、技術系の記事に人気がないのはわかっているのですが、技術系のなかでも人気があるのは数年前に書いた記事じゃないですか。

まさに、「数年前の俺ってスゲー」状態ですが、この結果にがっかりすることなく、3年後の自分にスゲーと思ってもらえるよう、今後もブログを続けていこうと思います。

*1:Google Alalyticsからデータを取得する


2014年を振り返って

$
0
0

2014年も終わりですね。というわけで、2014年を振り返ってみようと思います。

意識の高い人は2014年1月にいろいろと目標を立てているのかもしれませんが、私は細かい目標を立てたところで方針を変えたり、忘れたりするのが目に見えていたので立てていませんでした。

ただ、「自分をさらけ出して生きる(裸になる)」というテーマだけは持っていました。

裸になれたのか

「裸になる」ってどういうことかというと、ひと言でいえば「自分を飾らず生きる」ということ。

私はどちらかというと、他人の目が気になる性格で、「この人の知識はこんなもか」とか「この人、考えが浅いなー」とか思われてるんかなぁなんて想像してしまいます。

それがイヤだからといって、無理に飾ったところですぐにメッキは剥がれてしまいますよね。それなら、最初から知識や考えを大っぴらにすることで、「ねっ。前々から言ってるとおりでしょう?」という状況を作ろうと考えたわけです。

その手段として、このブログでいろいろ書いていこうと決めて、今年1年活動してみました。

で、裸になれたのか?というと、まだ裸にはなりきれてませんでした。

12月26日(金)にAgile459のメンバーと忘年会をしたのですが、なんだかスゲー恥ずかしかった*1

とはいえ、ブログはそれなりにかけた*2ので、「グッジョブ俺」といってやりたい。

ざっと振り返ってみる

家族

家族全員、大きな怪我や病気をすることなく健康に過ごすことができてよかった。

一番大きな怪我は自分のこれかな。

子供は2歳になり、いろんなことが出来始めたので、もっと色々敬虔をさせたり、人と関わらせたりしたいと思いながらあまりできてない気がする。この点は保育園に行ってて良かったと思うことも多い*3

仕事

可もなく不可もなくというところかなとは思うけど、自分の立ち位置に悩むことが多かった。

コミュニティ

今年も プログラミング生放送勉強会を開催することができました。

今年は2月に引っ越してきただるやなぎのおかげで過去最高の参加者としてなりました。また、四国外から話をしに来て下さったかたも多く、貴重な1日となりました。

個人的にはこの勉強会をきっかけに、しばやんや酢酸先生、はまもつ先生など多くの方と繋がりが持てたのが良かったです。この関係は大切にしたい。

勉強

いろいろ手を出しても自分の能力では消化できないので、ASP.NET関連技術に注力すると決めました。

そして、Azureを使って雑ではありますが*4アプリを公開しました。

また、内容はともかく、ブログを更新することで、「松山 ASP.NET」というキーワードから「なかじ」という連想を一部の人 *5にしてもらえるようになったのは嬉しいですね。

2015年は

継続して無知を晒していくと共に、ASP.NET関連技術の習得に励みたいと思います。

あと、毎月1回は情報交換会という名のただの呑み会*6をしたいですね。

お酒呑んでてちょっとしんどいのでこの辺で終わります。

こんな私ですが、来年も引き続きよろしくお願いします!!

*1:この時感じたことは機会があればブログに書くかも

*2:内容は置いといて

*3:何もかも保育園に任せるつもりはないけど

*4:ざっと作って公開して、ブラッシュアップしようとするも、公開したら満足した感じ

*5:1人しか知らんけど

*6:だるやなぎを囲む会ともいうらしい

愛媛のイベント情報を人力でまとめる(雑い)サイトを作ってみた

$
0
0

あけましておめでとうございます。というにはだいぶ時期を外してしまった感がありますが、今年も生暖かい目で見守って頂けると幸いです。よろしくお願いします。

今年に入って始めてのブログ投稿ですね。年明け一発目なので変な事書いたらアカンかなぁなんて考えてたらもう7日も経っちゃいました。

昨年末の出来事

そう、確か12月27日あたりだったと思います。

あー、イベントの宣伝ができるサイトが欲しいし、イベントの情報が欲しい。
doorkeeperとかあるけど、東京のイベントとか見ても、行けないし。
愛媛に特化したイベントのWebサイト、需要あると思うんだけどなー。
告知する側としては。
参加する側としては、イベントの情報が一箇所に固まっているだけでありがたい。
うーん、地域に特化したイベントのサービスは、需要、あると、、、思う、、ん、、だけど、、なー……

みたいな話を勉強会仲間がされてまして、その方が

「イイね!」が25個以上ついたら、開発してみる。

と言われていました。私もその流れに乗っかって「じゃぁ、5つ以下なら僕がやります:-)」なんて志の低い事を言ってたのですが、あっという間に30個付きました。

なので、私は当選しなかったのですが、「正月休みのいい暇つぶしになりそう!」なんて偉そうなことを考えたのが12月27日のことだったと思います。しかし、その正月休みは呑んで食って寝るのに忙しく、全く手を動かすことができませんでした。

ただ、せっかく思い立ったんだからちょっとやってみろよ的な感じで手を動かしてみた次第です。

で、何作ろうか

話の流れ的に、ここに来たら愛媛のイベントが一通りチェック出来るよーみたいなのが嬉しそうですね。

ただ、イベント告知サイトはDoorkeeperやATND等、世に溢れています。それと同じ様な物を作っても、情報が分散するだけなのであまり意味が無いですね。

なので、「IT勉強会カレンダー」や@さんが定期的にまとめられている「 四国における2015年1月以降のIT勉強会一覧 - 鎌玉 大のよしなしごと」のように、イベントの情報をまとめるだけにしておいて詳細は各Webページなり告知サイトを見てねというものを作ることにしました。

ざっと作ったのがこれ

愛媛イベントカレンダー - 愛媛のイベントを自由に集約

f:id:nakaji999:20150107012353p:plain

データの登録については誰でも自由に登録できるようにしています。というのも、特定の人がメンテするのはしんどいし、告知する側としても手間やタイムラグを考えると自分で登録できた方が幸せになりそうだから。

それにしても雑いですね。ブログのネタにしたいので見きりで公開したのがバレバレです。

今年の心構え

思いつきでも何でも、ちょっと手を動かしてみよう~ということができるようになったのは去年の成果かもしれませんが、それを「継続して磨き上げる、発展させる」というのができていません*1

今年はこのあたりを意識して深夜の活動をしていきたいと思います。

*1:飽きっぽいとも言う

携帯料金が半額になりましたがその分お小遣いが増えたわけではありません

$
0
0

以前、こんなブログを書きました。

その結果、電話代はこんな感じになりました。

f:id:nakaji999:20150109020546p:plain:h500

これにIIJmioの1,040円をプラスして、約3,700円。やった!今までの半分以下!!

心配していた通話料

ちょっとした連絡には楽天でんわを使ってます。最初の3分0円プラン様々ですね。ほんと。

頭に「0037-68-」を付ければいいだけなのでガラケーでも利用できます。

ちょっと長くなりそうな場合は楽天でんわを使わずに1000円の無料通話分を使用します。

しかし、楽天でんわの3分0円プランが明後日をもって終了。これは辛いです。

かくなる上はあの手で!

@さんに教えてもらったこの手て維持コストをもう少し下げれそうです。

ドコモが販売していない かつ FOMAに接続できる かつ 技適マークがある 端末を用意する必要があるという事ですので、Zenfone 5 を用意すれば完璧ですね(´▽`)

だるやなぎを囲んで(?)新年会をしてきた

$
0
0

2015年の目標として

平日はビール飲まない

ただし、飲みに誘われた場合や、お仕事を頑張ったご褒美として飲む場合、またはどうしても体が欲している場合(ビールが飲みたくて獅子が痙攣する etc)などは除く。

という目標を立てただるやなぎ本人*1から、

すごいいいこと思いついた。新年会はヒツジを食べましょう。人数だけ知りたいから、参加者は手を挙げるべし(都合悪い日があればそれも書くべし

なんていうお誘いがあったので、新年会をしてきた。

目標に反してるんじゃね?という気がしないでもないが、数日前から行動がおかしかったのでちょうど良かったのかもしれない。

1次会

未年ということで、だるやなぎがチョイスしたお店がここ。

呑み会の前にちゃんと行く店が決まってて、おまけに予約までしてあるなんて、去年3月に始まった定例呑み会*2初じゃないか。さすが俺以外の人はちゃんとしてるなぁと関心。

お店はほどよくこぢんまりしてて、いい感じ。目的のジンギスカンが超うまかった。

f:id:nakaji999:20150110022926j:plain

参加者4人の近況や、だるやなぎの婚活やフィリピンの話で大いに盛り上がった。

決まった(?)こと

忘れないようにメモっておく。

今年のプロ生勉強会@愛媛は6月6日(土)で進める

しばやんが来ることは昨年末の大阪でだるやなぎの無料素材と引き替えに確定したらしい。

早く日程を確定して告知しないと。(四国外の人が来やすいように)

石手寺の隣にある気になるカフェに行く

おねえさんがかわいい(?)

その他

だるやなぎに内子を案内する。とか、色々あった気がするけど、もう忘れた。

今年もいい仲間達と楽しく充実した1年を送りたいと思う。

愛媛のイベント情報を人力でまとめる(雑い)サイトのソース公開について

$
0
0

先日の新年会にて、勢いで書いたイベントカレンダーのソース公開しないの?という話があったようななかったような。

みんなで*1Issue登録しようぜー。Issueのタイトルは「○○がクソ」っていうので統一なー。とか話してた記憶があるので、きっと現実だったんだと思います。

ソース公開について

基本的にブログに書いたものについては全てGitHubにソース公開しています。

イベントカレンダーだとこれですね。

基本的にAzure Webサイトを使用しているサイトはGitHubのパブリックなリポジトリからデプロイするように設定しています。諸刃の剣なのは重々承知の上なのですが、この辺の雑感は機会があればブログに書こうと思います。

それにしても、Readme書いてなかったり、コミットのコメントもかなり適当ですね。公開するならキチンとすべき所は押さえようぜと思う今日この頃。

*1:といっても、だるやなぎ氏と私だけですが

「ブログ書いてるだけで満足なん?」と言われた気がした件について

$
0
0

昨年末、ある呑み会で「ブログ書いてるだけで満足なん?」というようなニュアンスの質問をされた(気がする)。

だいぶ呑んでたので、本当に言われたのか、夢を見ていたのか、それともそんな記憶がどこかで刷り込まれただけなのかよくわからない。そんな感じで20日近く寝かしてた。

「ブログ書いてるだけで満足なん?」の意味

この質問の真意は?と考えるといろいろ想像が膨らむ。

「そんな事して何が楽しいの?」「一人で細々と活動するより、何人かで活動した方が楽しくない?」「仕事でもやりたいんじゃないの?」などなど。

満足か?の答えは

満足はしてない。もっと勉強することあるし、もちろん手も動かしたい。この人すごいなぁと思える人と一緒に活動したい。

ただ、そう思ってるだけで行動が伴ってないのも事実。無駄な時間を少なくして時間を確保するとか、積極的に人に絡んでいくとか、もっと現状でもできる事、やるべきことはある。

「もっと○○だったら、××なのに~」なんて言うのは、一歩踏み出すのがこわい、現状にとどまっていたいがための言い訳。

自分の軸をはっきりさせる

これは呑み会で言われたのをはっきり覚えてる。自分が大事にする軸をもって、そこを中心に考えなきゃって。

軸がないからまとまらないし、答えられない。はずかしかった。

今までのほほんと生きてきたツケだなって思う。

前向いて

後ろを振り返っても仕方ないので前を向く。

これからの人生で一番自分が若いのは今。なので、やりたいことがあったらさっさとやる。

まずは自分の頭の中の整理から~なんて言ってても前に進まないから、まずは一歩踏み出す方べき。歩きながら考えればいいやろ。

何書いてんやろ。あー、はずかしい。

ScanSnap iX100を購入

$
0
0

最初にお断りしますが、インプレを期待されてる人は読まない方がいいです。インプレは書いてません。

FUJITSU ScanSnap iX100 Wi-Fi・バッテリー搭載スキャナ FI-IX100

FUJITSU ScanSnap iX100 Wi-Fi・バッテリー搭載スキャナ FI-IX100

以前から各種領収証やレシート、保育園のプリント等のドキュメントをスキャンしてEvernoteに保存しています。

スキャンは BROTHER A4インクジェット複合機 PRIVIO DCP-J940N-ECOもしくは、AndroidアプリのEvernoteからドキュメントスキャナで行っていたのですが、どちらも次のような問題があり、面倒くささを感じていました。

問題点

DCP-J940N

この複合機には「おまかせ一括スキャン」という機能があり、複数の原稿をまとめて読み取って、個別のファイルに出力してくれます。たくさんレシートや名刺があるときは便利です。

しかし、トップカバーを開けて用紙をセットするのが予想以上にめんどい。置き場所の関係で、いちいち立たないといけないのが追い打ちをかけてます。スキャンする原稿がたくさん溜まってしまうと、だんだん面倒になり後回しに…そしてさらに原稿が溜まり、さらに面倒に…という悪循環でした。

AndroidアプリのEvernote(ドキュメントスキャナ)

個人的にかなり気に入っています。原稿を写真に撮ると、用紙部分だけ切り取った上に台形補正を行ってノートに追加してくれます。

名刺やレシートなど、もらったその場でスキャンして保存する。なんてことができます。そう、さくさく動く端末ならね。

私が使ってる Xperia GX ではスキャナを起動するまでに10秒以上かかります。ですので、その場でパシャッとはできず、家に持ち帰るのですが、そうするとレシートなどは折れ曲がってたりして真っ直ぐにするのに余計な時間がかかったりします。

そんなわけで、微妙な不自由さを常々感じてました。

購入の経緯

年末の手持ちぶさたなときにふとScanSnap Evernote Editionが気になったのがきっかけです。

Evernoteからのメルマガで、ScanSnap Evernote Editionの存在は知ってたのですが、約50,000円というお値段は手が出ません。

ScanSnap Evernote Editionのベースとなる FUJITSU ScanSnap iX500 FI-IX500なら38,000円くらい。約35,000円の Adobe® Acrobat® Standard (Windows®)が付いてくるので、価格から考えるとお買い得ですね。しかし、Acrobat無くても今現在困ってないし、用途から考えて38,000円でも高い*1です。

FUJITSU ScanSnap S1300i FI-S1300Aは約23,000円でお手頃ですが、1世代前の機種*2な気がしてなんだか気が進まず。

そしてたどり着いたのがコンパクトでバッテリ駆動、スマホがあれば使えちゃう ScanSnap iX100。お値段も約17,000円と他機種に比べるとお安い。スペックオタクな身としては両面読み取りできないのがどうかなぁと思いましたが、そもそも大量のドキュメントを一気に取り込むことは少ないです*3。なにより、取り込みが億劫なのを解消したいというのが出発点なので、このコンパクトで手軽さが決めてになりました。

それから、ググってブログでのインプレを見たり、YouTubeで実際にスキャンしてるレポートを見て決心しました。

PFUといえば、個人的にちょっとしょっぱい思い出*4がありますが、それがかえって愛着を感じるというかなんというか。ちなみに、他メーカーの製品は最初から土俵に上げませんでした。

購入は株主優待*5で3,000円分のポイントがあったECカレントにしました。株主バンザイ\(^o^)/

使ってみて

予想通りお手軽で楽ちんです。手差しなので、さすがに「よーし、お父さん今まで溜まった年賀状を電子化しちゃうぞー」って気分にはなりませんが、これから手元にやって来る書類はがしがし電子化できそうです。

細かい話はまた機会があれば書きたいと思います。

そして

来月のお小遣いが0円になりました。

*1:バリバリ自炊するでーって人には安いかもしれない

*2:iXシリーズの方が新しい?

*3:年賀状くらいか

*4:製品には全く関係ない

*5:(株)ストリーム【3071】:株式/株価 - Yahoo!ファイナンス


ScanSnap Managerのショートカットキー(Ctrl+Shift+Space)を無効にする

$
0
0

ScanSnapを導入*1して数日、ちょっと困ったことが。

Visual Studioでメソッドの引数を表示しようと Ctrl+Shift+Space を押すと、ScanSnap Managerが起動してしまい、メソッドの引数が表示されません。

f:id:nakaji999:20150115022323p:plain

ScanSnap Managerの設定でショートカットキーを変更できるとか、無効にできるんじゃね?と思い確認しましたがそんなものはありませんでした。

仕方なくググってみたところ、以下の情報にたどり着きました。

ScanSnap Managerのショートカットキーを無効にする方法

注意事項

ScanSnap Managerのバージョンは6.3です。将来のバージョンアップで仕様が変わることがあるかもしれません。

方法

ScanSnap Managerがタスクトレイに常駐している場合は右クリックメニューから終了させておきます。

C:\Users[ユーザ名]\AppData\Roaming\PFU\ScanSnap 配下に SsCommon.cfg というファイルがありますので、これをメモ帳などのエディタで開きます*2

1行目の [CONFIG_C] の下(2行目)に「IsRegist_HotKey=0」という設定を追加します。

変更を保存し、ScanSnap Managerを起動します。

これでScanSnap Managerのショートカットキーを無効にできます。

変更前(SsCommon.cfg)

[CONFIG_C]
Raku2Edoc=0
(以下略)

変更後(SsCommon.cfg)

[CONFIG_C]
IsRegist_HotKey=0
Raku2Edoc=0
(以下略)

*1:ScanSnap iX100を購入 - なか日記

*2:メモ帳がエディタだと!?というツッコミはなしで

Chromeのウインドウに自分の名前を表示しないようにする方法

$
0
0

Chromeをアップデートしたら、ウインドウの右上にGoogleのアカウントに設定している名前が表示されるようになりました。

f:id:nakaji999:20150116021906p:plain

本名はちょっと・・・という人は以下のような方法があります。

表示する名前を変更する

左クリックすると、下のようなウインドウが表示されます。 f:id:nakaji999:20150116022519p:plain

名前の所にマウスカーソルをもっていくと、鉛筆マークが出るのでそれをクリックすると編集ができます。

表示しないようにする

アドレスバーに chrome://flags と入力すると設定画面になります。

ここで「新しいアバター メニューを有効にする 」を「無効」にしてChromeを再起動すれば名前が表示されないようになります。 f:id:nakaji999:20150116022805p:plain

M570がチャタリング。そして交換へ・・・

$
0
0

2013年7月に人生初のトラックボールM570を購入しました。

LOGICOOL ワイヤレス レーザー式 5ボタン? M570

LOGICOOL ワイヤレス レーザー式 5ボタン? M570

それから約1年半。気がつくと左クリックがチャタリング*1する様になってしまいました。

買い替えるとなると、現在発売中のM570tはちょっとお高い。どうしようと途方に暮れていたところ、3年保証なのを思い出しました。

アカウント作成と製品の登録

さっそくロジクールのWebサイトから、アカウントを作成して製品を登録。登録する際のレシートはAmazonの購入履歴から印刷したものを使いました。

サポートへ連絡

サポートへチャタリングするようになったので、何とかならないか問い合わせてみたところ・・・

代替え品を送ってくれるとのこと。M570は販売していないので、M570tになるけどいい?みたいなメールを頂き、二つ返事でOKしました。

サポートへ連絡してから約1週間。代替え品が到着。

LOGICOOL ワイヤレストラックボール M570t

LOGICOOL ワイヤレストラックボール M570t

ロジクールさんありがとうございます。大事に使います。そして、今後もロジクール製品を買います!!

*1:シングルクリックしてもダブルクリックになってまう。詳細はチャタリング - Wikipedia

Kindle Paperwhiteによってもたらされた読書生活3つの変化

$
0
0

昨年7月にKindle Paperwhiteを買ってすっかりAmazonの電子書籍にロックインされた感のある今日この頃ですが、みなさんいかがお過ごしでしょうか。

Kindle Paperwhite

Kindle Paperwhite

Kindleを本格的に使うようになって、私の読書生活は大きく変わりました*1。変わったことを3つ紹介します。

1.技術書以外の本を読むようになった

今まで、本屋に行ったときはまず技術書コーナーに吸い寄せられて、買う本は殆どが技術書でした。Amazonで本をチェックするときも技術書メインで、それ以外の本は殆ど見なかったと思います。

しかし、Kindleを買うことでAmazonの電子書籍をよくチェックするようになりました。「チェックするようになった」というよりは、「技術書以外も目につくようになった」という方が正しいかもしれません。

「日替わりセール」の情報が毎朝メールされてくるので、タイトルが気になったら内容を確認して面白そうならポチッと。

ちょっと暇なときに「Kindle月替わりセール」、「セレクト25」のタイトルを眺めて、(以下略

時々出版社が独自セールをやってて、(以下略

いいなと思ったらワンクリックでポチっとできてしまうので、買うまでのハードルが紙媒体に比べるとかなり低い。おまけに、ポチってすぐ読めるので超便利です。

その結果、技術書以外の本を読むことが多くなりました。

2.寝る前の読書が可能になった

寝る前に布団の中で読書したい派*2なのですが、家族が寝てるので電気スタンドを煌々と照らして…と言うわけにもいかず、しばらく諦めてました。

その後、スマホのKindleアプリやKINOPPYアプリを使うようになりました。しかし、スマホはバックライトの光度を最低にしても暗い部屋では明るすぎます。なので、布団の中に潜って、光が外に漏れないようにして読むなんて子供みたいなことをしてました。

Kindle Paperwhiteは光度を下げると、「紙がぼんやり光ってる」くらいの状態にすることができます。これで家族に気を遣わずに堂々と布団の外で本が読めるようになりました。

3.お小遣いがなくなった

セール対象になれば1冊99円とか、500円以内で買える本が多いので「500円くらいならいいかー」なノリでポチッとしてしまいます。しかし、ちりも積もればですね。安い本が積み重なって、いつの間にか小遣いを結構使ってたりします。

これは自分にとっては致命的ですが、無駄な読書にはなってないと思うので我慢するしかないと思ってますけどね。

いいこともそうでないところもありますが

総合的に考えて、Kindle Paperwhite買って良かっと思います。読書しかできない端末なので、読書に集中できますし。

今なら解像度の高いKindle Voyageもありますね。文字を読むだけならPaperwhiteで十分だと思いますが、図が含まれる本を多く読む場合には Voyage の方が読みやすいかもしれません*3。持ってないので、想像ですけど。

Kindle Voyage Wi-Fi、キャンペーン情報つきモデル

Kindle Voyage Wi-Fi、キャンペーン情報つきモデル

*1:盛りすぎ?

*2:すぐ眠くなって寝るけど

*3:図の拡大ができるので、Paperwhiteでも見れないことはない

Kindle for PC 日本版が公開されました

$
0
0

以前から、KINOPPYみたく、PCでKindle本が読めたらなぁと思ってた人は多かったと思います。

一応、Kindle for PC なるものは存在してました。ただ、Amazon.comで買った本しか見れず*1、指をくわえてみてるしかなかったのですが・・・

ついに日本語が公開されました!*2

さっそくインストールしてみました。

f:id:nakaji999:20150122003025p:plain

もちろん、他のKindleアプリやKindle端末と読み進めたページを共有できます。

スマホとKindle Paperwiteしか持ってない私としては、カメラ関連の全面カラーの本とか図表の多い本、固定フォーマットの本なども安心して買うことができます。

それと、ディスプレイが2枚以上あればコードの写経も捗りそうですね。

欲を言うと、SurfaceRTでも読めたら最強なので、Windowsストア版のKindleも欲しいなぁ。

*1:.comと.co.jpでアカウントが異なる

*2:Amazon.co.jpで買った本が読めるようになった

Viewing all 848 articles
Browse latest View live