カテゴリー: デジタル

AVアンプで高ビットレートのネットラジオ再生 (Chromecast利用)

2011年に購入したデノンのAVアンプ『AVR-3311』は単体でインターネットラジオの再生にも対応しており、暇を見つけては「ottava」や「SmoothJazz」を始め世界中の音楽を楽しんでいます。

しかし、行き過ぎたコストカット方針の元で作られている昨今のAVアンプは搭載メモリも少なくマイコンの処理能力も必要最小限(デノン製品に積まれたマイコンはその性能すら満たしていませんが…)。このため、320kbpsで配信されている「LINN RADIO」などの高ビットレートな番組を再生するとバッファリングが追いつかず数秒間隔で音が途切れてしまいとても実用には耐えられない状態に陥ってしまいます。

C言語でCSVの項目分割

CSVファイルを読み込んで云々というのはありがちな処理ですが、C言語の開発に不慣れな技術者にダブルクォートの有無やエスケープまで考慮した項目分割処理を組ませると項目分割した結果を構造体にセットして一度に返そうとするケースが多々。他の言語の影響なのでしょうが、そんな汎用性のないオーバーフローが目に見えた作りにするのだけは止めておくれ…。

個々人のスキルが如実に滲み出るC言語だけに技術者が10人居れば10通りの実装があって当然ではありますが、こんなやり方もあるよということでサンプルをば。


/*
Copyright (c) 2014 buzzyvox.com
Licensed under the MIT License.
http://opensource.org/licenses/mit-license.php
*/

#include <string.h>

static char *olds;

char *__datatok (char *s, const char *delim)
{
    char *p, *token;
    int dq = 0;

    if (s == NULL)
        s = olds;

    if (*s == '\0')
        return NULL;

    token = s;

    while (*s) {
        if ((p = strstr (s, delim)) == NULL) {
            olds = strchr (s, '\0');
            break;
        }
        while (s < p) {
            if (*s == '"') { dq++; }
            s++;
        }
        if (!dq || (dq && !(dq % 2))) {
            *p = '\0';
            olds = p + strlen (delim);
            break;
        }
        s++;
    }

    s = token;
    while (s = strchr (s, '"')) {
        size_t len = strlen (s) -1;
        memmove (s, s + 1, len);
        s[len] = '\0';
        s++;
    }

    return token;
}
/* CSV項目分割 */
char *csvtok (char *s)
{
    return __datatok (s, ",");
}
/* TSV項目分割 */
char *tsvtok (char *s)
{
    return __datatok (s, "\t");
}

標準関数strtokのcsv対応版といった感じ。注意点(破壊型特殊な・ネスト不可)やI/Oの基本は継承しているので使い方はstrtok関数と同様。

position: absolute な要素を縦横中央揃えにする

CSSで「position: absolute;」指定された要素を縦横中央揃えするのに、こんなやり方があると知ってちょっと感動。


<html>
<head>
  <meta http-equiv="Content-Language" content="ja" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  <title>[SAMPLE] absolute の要素を縦横中央揃え</title>

  <style>
  .outer {
    width: 100%;
    height: 100%;
    background: #ccc;
    position: relative;
  }
  .inner {
    width: 30px;
    height: 30px;
    background: #000;
    margin: auto;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
  </style>
</head>
<body>
  <div class="outer">
    <div class="inner"></div>
  </div>
</body>
</html>

[JavaScript] jQuery UI 1.11以降でのdatepickerの日本語表示

しばらく目を離した隙にjQuery UIのバージョン1.11系がリリースされていたので1.10系からバージョンアップを図ろうとしたのですが、datepickerで日本語表示するために読み込んでいた言語別ファイル「jquery.ui.datepicker-ja.js」(あるいは jquery.ui.datepicker-ja.min.js)が1.11系には見当たりません。

Changelogを眺めてみると1.11よりファイル名が変わったりしているようなので、以下のいずれかの対応が必要になります。

ファイル名を変更する

1.11より「jquery.ui.datepicker-ja.js」は「datepicker-ja.js」へとファイル名が変更されているので、それにあわせて呼び出し元を変更すればOK。

<!--
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/i18n/jquery.ui.datepicker-ja.min.js"></script>
<link type="text/css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/south-street/jquery-ui.css" rel="stylesheet" />
-->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/i18n/datepicker-ja.min.js"></script>
<link type="text/css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/south-street/jquery-ui.css" rel="stylesheet" />

[Perl] Perlからツイッターにつぶやく (Twitter API v1.1対応)

訳あってPerlからツイッターにつぶやきをPOSTする必要が生じ、大昔に書いたサンプルコードを引っ張り出して動かしてみたもののエラーでうまく動かない…。

調べてみたところ最近Twitter API v1.1なるものが導入されていてエンドポイントや認証方式が変わった模様。軽く仕様を眺めてみたところ一から実装するのは骨が折れそうだったので、ググッてみたところCPANで公開されている「Net::Twitter::Lite」モジュールに含まれる「Net::Twitter::Lite::WithAPIv1_1」は使えそうだったので試してみるとあっさり動いてくれました。

microlabのUSBスピーカー『LAB-B51BK2』

LAB-B51BK2書斎のモニターに繋いでいる地デジ対応外付チューナーからの音声出力用に省スペース且つUSBからの電力供給で動作するスピーカーを探していましたが、先日見つけたJESTTAX MS-P11』はノイズが酷すぎて即日返品。代わりにmicrolab製の『LAB-B51BK2』なる商品を購入してみました。

主にノートPCやタブレットとと組み合わせて利用することを想定してデザインされた薄型スピーカーだけあって商品パッケージもコンパクトです。

140903_package
140903_manual

microlabというメーカーは中国系の企業のようでパッケージに拙い日本語が散見されますが、取り出した本体は予想以上にしっかりした作り。MADE IN CHINAの製品ですが中国製にありがちな雑さは感じられません。