2018年12月28日金曜日

Wi-Fiのややこしい規格名称にさようなら。来年からはわかりやすい呼称になるぞ!



こんにちは、よっしーです。

さてみなさん。世の中にかなり浸透しているWi-Fiですが、

通信規格の種類などを把握した上で使っていますか?

代表的なものを挙げると、以下のようなものがあります。


IEEE 802.11a

IEEE 802.11b

IEEE 802.11g

IEEE 802.11n

IEEE 802.11ac


下へ行くほど新しい規格となり、

それぞれの規格によって、

通信速度、周波数、電波干渉などの特徴が異なります。


自分が持っているスマホと無線LANが、どの規格に対応しているか。

ぐらいは知っておくべきですよね。


せっかく最新のスマホに買い替えても、

使っている無線LANが、古い規格にしか対応していない場合、

無線LAN側に合わせた低レベルの通信規格が使われてしまい、

スマホの無線性能を「活かせない」ということになってしまいます。


ただ、この規格名称が割と素人泣かせというか、

abc順に並んでいるならまだしも、暗号みたいで覚えにくいし、

何がどれだか、とてもわかりにくいですよね。。。


さらに今後、通信速度やスループットがぐっと向上した、

「IEEE 802.11ax」という規格も出てきます。


混沌としてきましたね。。。


で、ここからが本題なのですが、

この「IEEE 802.11ax」は「Wi-Fi6」という名前になります。

あら、ずいぶんと覚えやすい名前になりましたね。


で、さらにいうと、

「IEEE 802.11ac」→ 「Wi-Fi5」

「IEEE 802.11n」→ 「Wi-Fi4」

という名前になるようで、

各種機器の表現も統一されていくようです。


こうなると、IEEE 802.11g が Wi-Fi3 になるのかな?

と思ったのですが、IEEE 802.11g 以前の規格は、

とくに名称は付けられていないようです。


802.11a/b/g などは使っている人も少なくなっているので、

主流なもの以外は切り捨てられているのかもしれませんね。


ということで、来年、平成が終わり元号変わりますが、

Wi-Fiも新しい元年が始まるといってもいいかもしれません。


ではまた~。

2018年12月22日土曜日

MATCH? INDEX? Excel難しい(´・ω・`)


こんにちは、ふじかーです。

またExcelネタなんですが・・・だれか詳しい方教えてください。


自分もExcelを業務で日常的に使っており、
先日の記事に書いたような便利カスタマイズもして、

セル内の関数は調べればまぁ大体なんとかなるし、関数で出来ないことはVBAでまぁ大体なんとかなるし
ある程度Excelくわしい方だと、自分では思っていました。

周りで「あれ、これどうやるんだっけ?」みたいな声があると
「え、なになに?」と聞きにいって解決してあげる側だと、自分では思っていました。

あの日までは。


問題発生


ある日、集計表をつくる際に
「列内で、値が入り始めたセルの 行番号 が知りたい」
というケースがありました。




ふむ。まぁパッとは思いつかないのですが

だいたい同じような問題を抱えた先人たちが
Yahoo知恵袋あたりで質問・解決しているもんです。

お知恵を拝借して今後の糧とすべく、
ググってみるとこれも全く同じのがありました。

エクセルで各列における最初の空白以外の最初のセルの行番号を取得する方法 ...


そこで出てきたベストアンサー

◆これでいかがでしょう
 =MATCH(0,INDEX(0/(B2:B12<>""),),0)


おーすばらしい。試してみると確かに意図通り値が取れました。
さすがベストアンサー、私も いいね しときました。



が・・この式、何しているのか解ります?

 =MATCH(0,INDEX(0/(B2:B12<>""),),0)

私にはピンときませんでした。
気にせず使えば問題も解決しますが、今後の糧になりません(´・ω・`)


分解

良く判らないときは、バラして考えるもんです。
とりあえず MATCH関数 と INDEX関数 が使われていますね。
どっちも普段つかいません。それぞれの意味を確認しましょう。

  • MATCH関数
指定範囲の中から、指定された検索値と一致するセルの 位置
取得する関数だそうです。

書式
MATCH(検索値, 検索範囲, 照合の型:0=完全一致 )




ではベストアンサーのMATCH部分を見てみましょう。
 =MATCH(0, INDEX(0/(B2:B12<>""),), 0)
の赤字部分。

「INDEX関数の結果」が 検索範囲となって、
その内から「0」の位置を探しているようです。ふむふむ。


  • INDEX関数
指定範囲の中から、指定された行にある セルの参照
取得する関数だそうです。

書式
INDEX( 対象範囲 ,  行番号 ,  列番号 )

・行番号:必須。対象範囲が 1行 のときのみ省略可。0 指定すると行全体を取得。
・列番号:必須。対象範囲が 1列 のときのみ省略可。0 指定すると行全体を取得。





ではベストアンサーのINDEX部分を見てみましょう。
 =MATCH(0, INDEX(0/(B2:B12<>""),), 0)
の赤字部分。。。

書式と並べてみると
   INDEX( 対象範囲           , 行番号 )
   INDEX( 0/(B2:B12<>"") ,           )

あぁ、なるほどわからん。

・0/(B2:B12<>"") って何? これが対象範囲?
・行番号、指定されてませんけど?
・この INDEX関数 の結果が、MATCH関数に指定する「検索範囲」??

多分、B列が「""かどうか」を true=1 or false=0 でみて
0かErrかの配列としてMATCH式に突っ込んでるのかなーと思うんですが

ググってすぐ出てくるようなExcel入門ページには
こんなINDEX関数の使い方載ってませんし、思いつきません。

うーん、奥深すぎ・・・orz

2018年12月14日金曜日

文字コード変換はコマンド一発で解決!



こんにちは。よっしーです。

今日は文字コードについてのお話しをしたいと思います。


今まで、いろいろなプロジェクトに携わってきましたが、

開発環境、実行環境などによって、ソースファイルの文字コードが決まっており、

開発者が文字コードを「意識する」という場面がよくあります。


使用するテキストエディタ、ツール等によるところがありますが、

新規作成したソースファイルを保存する際、デフォルトの文字コードが決まっており、

そのデフォルトの文字コードが、期待する文字コードになっていないと、

知らず知らずのうちに、プロジェクトに沿わない文字コードで

ソースファイルを生成してしまうこととなります。


チームで開発をしていると、ソースファイルを集約したときに、

ファイル毎に文字コードがばらばら。。。なんてことも、よくありますよね。


で、そういったとき、ソースファイルの文字コードを正しいものに「変換」するのですが、

Windows でいろいろと文字コード変換ツールを使ってはみたものの、

あまりしっくりくるものがなく、いろいろと試した結果、Linuxコマンドを

使用して変換する。というスタイルに落ち着きました。


なので、今回は文字コード変換の方法についてご紹介したいと思います。

(例のごとく、Ubuntu環境でのやり方となります)




はじめに、nkf というコマンドを使用しますので、インストールします。

nkf コマンドをインストール
$ apt-get install nkf


あとは、いろいろなコマンドとを組み合わせて使います。

まずは、現在のファイルがどのような文字コードになっているかを確認してみましょう。


複数ファイルの文字コードをコマンド一発で確認
$ find . -type f | xargs nkf --guess | column -s: -t

出力結果
↓ファイル文字コード
./inc/client_recv.hUTF-8 (BOM) (LF)
./inc/client_send.hUTF-8 (BOM) (LF)
./inc/main.h       UTF-8 (BOM) (CRLF)
./inc/svc_recv.h   Shift_JIS (CRLF)
./inc/svc_send.h   Shift_JIS (CRLF)
./src/client_recv.cUTF-8 (LF)
./src/client_send.cUTF-8 (LF)
./src/main.c       UTF-8 (BOM) (CRLF)
./src/svc_recv.c   Shift_JIS (CRLF)
./src/svc_send.c   Shift_JIS (CRLF)

ファイルによって文字コードや改行コードがバラバラですね。。。


で、これを1つの文字コードに統一するため、変換をかけます。

複数ファイルの文字コードをコマンド一発で変換

※ Shift-JIS、改行コード=CR+LF にする場合
$ find . -type f | xargs nkf --overwrite -s -Lw

※ UTF-8、改行コード=LF にする場合
$ find . -type f | xargs nkf --overwrite --oc=UTF-8 -Lu

※ UTF-8(BOM付)、改行コード=LF にする場合
find . -type f | xargs nkf --overwrite --oc=UTF-8-BOM -Lu



UTF-8、改行コード=LF の変換をかけた後、文字コード確認をしてみると、、、

出力結果
./src/client_recv.cUTF-8 (LF)
./src/client_send.cUTF-8 (LF)
./src/main.c       UTF-8 (LF)
./src/svc_recv.c   UTF-8 (LF)
./src/svc_send.c   UTF-8 (LF)
./inc/client_recv.hUTF-8 (LF)
./inc/client_send.hUTF-8 (LF)
./inc/main.h       UTF-8 (LF)
./inc/svc_recv.h   UTF-8 (LF)
./inc/svc_send.h   UTF-8 (LF)
キレイに文字コードがそろってますね!


ファイルをテキストエディタで開いて、文字コードを指定し保存する。

というやり方でもよいですが、ファイルの数が多くなってくると、

かなり手間になってしまうので、そんな時はコマンド一発で一気にやってしまいましょう!


ではまた~。

2018年12月7日金曜日

ExcelでF1を押してもヘルプが出ないように



こんにちは、ふじかーです。

先日「Excelがもっと捗る小技」をいくつか紹介しましたが
ひとつ大事なのを忘れてました。


誤って F1 を押したときに出るヘルプがうざい


もっとも不要と思われるキー「F1」

大人気の主要キーである「F2」「ESC」の間に隠れて、自分も押下されるのを待ち続け
ついブラインドタッチミスで押されようもんなら

お前は必要ない

と見たくもないのに最前面に姿を現し、しかも重くイラッとさせられる。
そんな経験、誰しもあるんじゃないでしょうか。

このF1ヘルプ、周りで使っている人見たことありません。
私も活用したこと無いですし、あなたもおそらく無いでしょう。

皆これには辟易としているようで、
こいつを出なくする方法を検索するとたくさん出てきます。

 キーボードのF1キーを抜く
 F1ブレイカーというアプリを入れておく
 レジストリを書き換える
 マクロを利用する

などなど。
①②③ はちょっと過激なので をチョイスします。

マクロでの対処方法をググってみると
「個人用マクロブックを使う」という記事が多いようです。


「個人用マクロブック」とは
マクロの記録画面で選択できる保存先の一つなんですが

これは、一度使うと「PERSONAL.XLSB」というブックが生成され、それ以降
Excelの起動と同時に、こいつも背後でこっそりと自動的に開かれるようになります。

一応これを使っても実現可能なんですが、
これだとExcelを同時に複数、別ウィンドウで開いた時に

と出るようになり、これはこれでイラッとするので却下。


私は「アドインとしてマクロを組み込んでやる」方向で対応しました。


対策方法


対応の流れは
 1.ExcelファイルOpen時にF1を無効にするVBAマクロを書く
 2.マクロをアドインとして保存する
 3.アドインを有効化
という感じ。


1.ExcelファイルOpen時にF1を無効にするVBAマクロを書く
・Excelを新規に開き、
・Alt+F11を押下してVBEditorを開いて、
・ThisWorkbookをダブルクリックして開き
・下記のコードを貼り付ける

Private Sub Workbook_Open()

    Application.OnKey "{F1}", ""

End Sub
・VBEditorを閉じる



2.マクロをアドインとして保存する
・「名前を付けて保存」画面を開き、
・ファイルの種類で「Excelアドイン(*.xlam)」を選択
・勝手にアドインフォルダが開かれるので
・適当に名前を付けて保存(ここでは 「F1ヘルプ無効化」 にします)





3.アドインを有効化
・Excelを表示した状態で 「Alt」「T」「O」 と順番に押下し、Excelのオプション画面を開く
・アドイン → 設定(G) をクリック
・上で作成した F1ヘルプ無効化 にチェックをいれて、OKで閉じる
・Excelを一度閉じる






以上、終了です。これでもう、あの大嫌いだったF1ヘルプは
どれだけプッシュしようが出てこなくなりました。少し寂しいくらい。

同じようなストレスを抱えてる方がいれば、参考にして下さいな。