ソフラボの技術ブログ

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

Chromeユーザーも必見!ブラウザでファイルをダウンロードするなら10倍速くなるFireFoxアドオンの「DownThemAll!」を使おう!

f:id:shinsuke789:20150804170046p:plain


--- 注意事項 ---
FIreFox57以降では、使用できず、代替のダウンローダプラグインが全くありません。
そのため、FireFox56以下を使用するようにして下さい。
自動更新されてしまった場合、「56をダウンロード→ネット切断→設定で自動更新しない→ネット接続」の手順で56に戻しましょう。


FireFoxのアドオンに「DownThemAll!」というものがあり、これを使ってファイルのダウンロードを行うと通常の10倍でダウンロードが可能です。

https://addons.mozilla.org/ja/firefox/addon/downthemall/addons.mozilla.org


ISOファイルなどのGB単位でダウロードに時間が掛かるファイルに使うとかなり速くダウンロードが可能になります。

MSDNでISOファイルをダウンロードするときに利用すると、途中で切断されることもなくダウンロードできます。


高速にダウンロード出来る機能の他に、ダウンロードを一時停止して途中からダウンロードを行うレジューム機能にも対応しています。


Chrome使いの方も、巨大ファイルをダウンロードする時はFireFoxを使うことをおすすめします。

設定画面

一般

f:id:shinsuke789:20150804164013p:plain

操作

f:id:shinsuke789:20150804164017p:plain

ネットワーク

ダウンロードの上限数、サーバーごとの上限数を最大にしておきます。

f:id:shinsuke789:20150804164024p:plain

プライバシー

f:id:shinsuke789:20150804164030p:plain

フィルター

f:id:shinsuke789:20150804164034p:plain

詳細

ダウンロードの最大分割数を最大の10にして常時高速化するようにしておきます。
f:id:shinsuke789:20150804164039p:plain

f:id:shinsuke789:20150804164043p:plain

f:id:shinsuke789:20150804164048p:plain

ダウンロード時

保存

DownThemAll!を選択すると高速にダウンロードが可能です。

f:id:shinsuke789:20150804164053p:plain

ダウンロード追加

チェックサムを設定すると、正常にダウンロードできたか確認してくれます。

f:id:shinsuke789:20150804164058p:plain

進捗

f:id:shinsuke789:20150804164105p:plain

ダウンロード情報

緑のグラフで分割してダウンロードしているのが分かります。

f:id:shinsuke789:20150804164110p:plain

VMwareFusionのNAT接続でゲストOSのIPアドレスを固定する

f:id:shinsuke789:20150629054540p:plain:w300

環境

VMwareFusion 6.0.6、8.0.2
ホストOS MacOS 10.9
ゲストOS CentOS 6.4

手順

1.ゲストOSで「ifconfig」を実行し、ネットワークのMACアドレスを取得します。
MACアドレスは「HWaddr」の部分です。

ifconfig
eth1      Link encap:Ethernet  HWaddr 00:50:56:2D:7D:C8  
          inet addr:192.168.152.3  Bcast:192.168.152.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe2d:7dc8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2430 (2.3 KiB)  TX bytes:3031 (2.9 KiB)


2.ホストOSで「dhcpd.conf」ファイルを編集します。

sudo vi "/Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf"


3.「dhcpd.conf」にゲストOSの固定IPアドレスを定義します。
最終行にある「###〜」以降に「host」を追加して固定IPアドレスを定義します。

subnet 192.168.152.0 netmask 255.255.255.0 {
        range 192.168.152.128 192.168.152.254;
        option broadcast-address 192.168.152.255;
        option domain-name-servers 192.168.152.2;
        option domain-name localdomain;
        default-lease-time 1800;                # default is 30 minutes
        max-lease-time 7200;                    # default is 2 hours
        option netbios-name-servers 192.168.152.2;
        option routers 192.168.152.2;
}

(中略)

####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######

# ゲストOSのIPアドレスを固定する
host guest {  # guestの部分はなんでもOK
        hardware ethernet 00:50:56:2D:7D:C8;   # ゲストOSのMACアドレス
        fixed-address 192.168.152.3;  # 好みのIPを設定する(3~127は固定用、128254はDHCP)
}

4.設定を有効にするためにホストOSを再起動します。

5.ゲストOSで設定したIPアドレスになっているか確認します。


SQL関数「COALESCE」でサブクエリを使うにはひと工夫が必要

SQL関数「COALESCE」でサブクエリを使うには少しだけ工夫がいるようです。

サンプルコードはOracleを想定しています。

COALESCEとは

値がNULLの場合、代替値を設定するSQL関数です。

COALESCEの通常の使い方

SELECT
    COALESCE(NULL, 0) AS value
FROM
    dual

-- 結果:0

COALESCEでサブクエリを使う

SELECT
    COALESCE(
        SELECT
            NULL
        FROM
            dual
    , 0) AS value
FROM
    dual

-- 結果:ORA-00936: 式がありません

COALESCEでひと工夫してサブクエリを使う

ひと工夫とは、サブクエリに括弧を追加することです。

SELECT
    COALESCE(
        (
            SELECT
                NULL
            FROM
                dual
    ), 0) AS value
FROM
    dual

-- 結果:0

SQLを極めるのに役立つ書籍

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

SQLパズル 第2版 プログラミングが変わる書き方/考え方

SQLパズル 第2版 プログラミングが変わる書き方/考え方

C#/VBでフォームを1つしか表示させないようにする

フォームを1つしか表示させないようにする方法を調べていると、次のサイトに説明がありました。

フォームが一つしか表示されないようにする: .NET Tips: C#, VB.NET

フォームを静的プロパティ、シングルトンを使って保持する

静的プロパティ、シングルトンを使うと実現はできますが、フォーム毎にそのコードを書く必要があり、メンテナンス性が低下します。

シングルトンを使った場合、フォームを閉じる処理でフォームを閉じるのではなく、フォームを隠す必要があるようです。

閉じる処理が、本来とは別の処理になってしまうので良くないですね。

VBの「My.Forms」を使う

VBに特化しているのでC#で使うことができません。
VBだけで使うのならありですが、汎用的に使えるに越したことはないので、この方法は使えません。

新しい方法「Application.OpenForms」を使う

メンテナンス性が良く、言語に依存しない形を探した所、Application.OpenFormsが有力だったのでそれで実装してみました。

Application.OpenFormsは、インスタンス化されているフォームを取得することができます。

コード説明

Application.OpenFormsを使用して表示させたいフォームがインスタンス化されているかを判断します。

インスタンス化されていればそのまま表示し、なければ新規でインスタンス化しフォームを表示させます。

フォームをForm.Hideで隠していたとしても、インスタンスとしてまだ存在しており、Application.OpenFormsで取得できるので、そのままフォームを表示させます。

C#

public static void ShowOnlyOneForm(Type formType)
{
    Form openForm = Application.OpenForms[formType.Name];
    if (openForm == null)
    {
        Form form = (Form)Activator.CreateInstance(formType);
        form.Show();
    }
    else
        openForm.Show();
}

VB

Public Shared Sub ShowOnlyOneForm(formType As Type)

    Dim openForm As Form = Application.OpenForms(formType.Name)
    If openForm Is Nothing Then
        DirectCast(Activator.CreateInstance(formType), Form).Show()
    Else
        openForm.Show()
    End If

End Sub

はてなブログのソースコード色付けで代表的な表記のまとめ

はてなブログで記事を書いている時、時々ソースコードの色付けで何を指定するのかわからなくなります。
忘れないために代表的な言語をまとめてみました。


公式サイトのヘルプがリニューアルされたようで、以前より探しやすくなっています。help.hatenablog.com


基本的には言語の名称そのままでいけそうです。

Web関連

言語 表記
CSS css
HTML html
Javascript javascript
JSP jsp

データーベース

言語 表記
SQL sql
PLSQL plsql

その他

言語 表記
XML xml
YAML yaml
シェル sh
Zシェル zsh


公式サイト見る限り何に使うのか不明なものがたくさんあります。
使える表記だけでなく、この表記はこの言語と対応表が欲しいところですね。

CentOSにPhantomJSとCasperJSをインストールする

以前、CentOSに最新のPhantomJSをインストールしようとするとエラーが発生するという記事を書きました。shinsuke789.hatenablog.jp


その後、さらに調べてみると古いバージョンのバイナリが配布されていることがわかり、これをインストールすると問題なく使用できたので、その時の手順を紹介します。

環境

OS CentOS 6.4
PhantomJS 1.9.8
CasperJS 1.1.0-beta3

手順

PhantomJS

1.PhantomJSのBitbucketよりバイナリファイルをダウンロードします。そのままwgetすると長いURLになってしまうので、別名で保存します。

# 保存先に移動する
cd /usr/local/src

# バイナリをダウンロードする
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 -O phantomjs-1.9.8-linux-x86_64.tar.bz2

# 解凍する
tar jxvf phantomjs-1.9.8-linux-x86_64.tar.bz2

# 解凍後のディレクトリ名を変更する
mv phantomjs-1.9.8-linux-x86_64 phantomjs

# 移動する
cd phantomjs


2.「/usr/local/bin」にシンボリックリンクを作成します。

# phantomjsディレクトリで実行する(/usr/local/src/phantomjs)
ln -sf `pwd`/bin/phantomjs /usr/local/bin/phantomjs


3.インストールバージョンを確認します。

# 「/usr/local/src/phantomjs/bin」で実行する
phantomjs --version
1.9.8


パスの設定は行わず、そのままCasperJSのインストールを行います。

CasperJS

1.公式サイトのインストール手順(git)に従ってインストールを行います。

# gitがなければインストールする
yum install git

# gitより取得する(作業ディレクトリ:/usr/local/src)
git clone git://github.com/n1k0/casperjs.git

# ディレクトリに移動する
cd casperjs

# 「/usr/local/bin」にシンボリックリンクを作成する
ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs


2.インストールバージョンの確認を行います。

casperjs --version
1.1.0-beta3


この時点でPhantomJS、CasperJSともパスが通っているので、追加の設定は不要です。

サンプルプログラムの実行

1.Googleサイトのタイトルを取得する簡単なサンプルプログラム「test.js」をviエディタ等で作成します。

test.js

var casper = require('casper').create();

casper.start('http://www.google.co.jp/', function() {
    this.echo(this.getTitle());
});

casper.run();


2.サンプルプログラムを実行し、「Google」と出力されれば動作確認完了です。

casperjs test.js
Google

PhantomJS掲載の雑誌

WEB+DB PRESS Vol.77

WEB+DB PRESS Vol.77

  • 作者: 中川勝樹,山内沙瑛,舟崎健治,吉荒祐一,今井雄太,八木橋徹平,安川健太,近藤宇智朗,奥野幹也,天野祐介,賈成カイ,伊藤直也,住川裕岳,北川貴久,菅原一志,後藤秀宣,久森達郎,登尾徳誠,渡邊恵太,中島聡,A-Listers,小俣裕一,はまちや2,川添貴生,石本光司,舘野祐一,沖田邦夫,澤村正樹,卜部昌平,吉藤博記,片山暁雄,平山毅,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2013/10/24
  • メディア: 大型本
  • この商品を含むブログ (3件) を見る

CasperJS掲載の雑誌

WEB+DB PRESS Vol.80

WEB+DB PRESS Vol.80