chocolateyで簡単にソフトウェアをインストール(と管理)する

chocolatey を導入しました。 これがなかなか面白いツールで、すっかりハマってしまいました。

ナニソレ?

PCでよくつかう各種ソフトウェアのインストールやアップデートを一元管理してくれる、という管理ツールです。Linuxでいう apt-getWindows版です。フリーソフトありがとう。

たとえば、こんなことに困っている人には、かなり使えます。

  • インストール済ソフトウェアのアップデートが面倒。コマンド一発で一括アップデートしたい!
  • PC買い替えのとき、旧PCで使っていた環境を新PCにもそのまま再現したい!
続きを読む

GNU ld ドキュメントを読む

1 Overview

ld combines a number of object and archive files, relocates their data and ties up symbol references. Usually the last step in compiling a program is to run ld. ld accepts Linker Command Language files written in a superset of AT&T's Link Editor Command Language syntax, to provide explicit and total control over the linking process. This version of ld uses the general purpose BFD libraries to operate on object files. This allows ld to read, combine, and write object files in many different formats—for example, COFF or a.out. Different formats may be linked together to produce any available kind of object file. See Chapter 5 [BFD], page 101, for more information. Aside from its flexibility, the gnu linker is more helpful than other linkers in providing diagnostic information. Many linkers abandon execution immediately upon encountering an error; whenever possible, ld continues executing, allowing you to identify other errors (or, in some cases, to get an output file in spite of the error).

ldは、データとシンボル参照をタイアップする、多数のオブジェクトファイルとアーカイブファイルを結合する。通常、コンパイルの最終ステップとして、 ldを実行する。 ldは、リンクプロセスにおける明示的で総合的な制御を提供するため、AT&Tリンク編集コマンド言語シンタックスで記述されたリンカコマンド言語ファイルを 受け入れる。 ld の本バージョンは、オブジェクトファイルを操作するための一般的な目的のBFDライブラリを使用する。 これは、ldが、たとえば、COFFやa.outといった、多くの異なるフォーマットのオブジェクトファイルを読み、結合し、記述することを許容する。 異なるフォーマットは、オブジェクトファイルのあらゆる対応可能な種類を提供するために、一緒にリンクされるかもしれない。詳細情報は、5章[BFD]を参照。 フレキシビリティを除き、GNUリンカは、診断情報を提供する場合、他のリンカより有用である。多くのリンカは、エラーが発生した場合、可能ならいつでも、即座に実行を回避する。 ldは実行を継続し、あなたに他のエラーを識別することを許容する(あるいは、いくつかの場合、エラーのかわりにアウトプットファイルを得る)。

3 Linker Scripts

Every link is controlled by a linker script. This script is written in the linker command language. The main purpose of the linker script is to describe how the sections in the input files should be mapped into the output file, and to control the memory layout of the output file. Most linker scripts do nothing more than this. However, when necessary, the linker script can also direct the linker to perform many other operations, using the commands described below.

すべてのリンクは、リンカスクリプトによって制御される。このスクリプトは、リンカコマンド言語で記述される。 リンカスクリプトの主な目的は、どのようにインプットファイルのセクションをアウトプットファイルに配置するかを記述し、そして、アウトプットファイルのメモリレイアウトを制御することである。ほとんどのリンカスクリプトは、これ以上のことは行わない。しかし、もし必要ならば、リンカスクリプトは、以下に記述するコマンドを使い、多くの他の操作を行うことを、リンカに支持することもできる。

※【免責】私の勉強のために読んでいるだけです。誤訳による被害の一切の責任を負いません。

【未解決】AmazonMusicアプリ (Android) でダウンロード出来ない件

はじめに

残念ながら本件、解決してません。 以下を読んでも解決策は書いてありません。あしからず。

問題

Android版AmazonMusicを使っていて、音楽を端末にダウンロードしようとしたところ、エラーとなりました。

Download Failed Device storage full. Error 206

これについて調べた結果を書きます。

まずはググる

以下のQAを発見。

質問者の状況としては、以下。

  • Samsung Galaxy S8+を使用
  • 外部SDカードは、15%以上空きがある
  • 206エラーでダウンロードできないぞゴルァ

で、ここに書かれている解決策(というかトライ&エラー)が以下。

  • AmazonMusicアプリの設定で、ダウンロード場所を内部SDと外部SDに切り替える
    • 質問者は何度も試したもよう)
  • アプリをアンインストールして、再インストール
  • Amazon Appstore か Google Play のどちらからインストールしたか

結局、Andorid端末では多く報告されている問題ということがわかっただけでした。

別の案

  • アプリのキャッシュクリア(端末の設定→アプリ→AmazonMusic→Clear cache)

これも試しましたが、効果はありませんでした。

まとめ

206エラーについては、未だ解決策がないもよう。 現状、端末の相性と諦めて、ストリーミングで聴くしかなさそうです。ぐぬぬ

【MIDI】GM音源の楽器一覧

MIDI GM 1.0で定義されている楽器のリスト。 よくぞここまで網羅した、という印象。

個人的には、Timpani (ID:48)をよく使うのに、他の音源で見たことがないので、しかたなくGMを使っている。 別にGM嫌いではないけど、もし良い音源ご存知なら教えろください。

Melodic sounds

No. HEX English 日本語
Piano
1 00 Acoustic Piano アコースティックピアノ
2 01 Bright Piano ブライトピアノ
3 02 Electric Grand Piano エレクトリックグランドピアノ
4 03 Honky-tonk Piano ホンキートンクピアノ
5 04 Electric Piano エレクトリックピアノ
6 05 Electric Piano 2 エレクトリックピアノ2
7 06 Harpsichord ハープシコード
8 07 Clavi クラビネット
Chromatic Percussion
9 08 Celesta チェレスタ
10 09 Glockenspiel グロッケンシュピール
11 0A Musical box オルゴール
12 0B Vibraphone ヴィブラフォン
13 0C Marimba マリンバ
14 0D Xylophone シロフォン
15 0E Tubular Bell チューブラーベル
16 0F Dulcimer ダルシマー
Organ
17 10 Drawbar Organ ドローバーオルガン
18 11 Percussive Organ パーカッシブオルガン
19 12 Rock Organ ロックオルガン
20 13 Church organ チャーチオルガン
21 14 Reed organ リードオルガン
22 15 Accordion アコーディオン
23 16 Harmonica ハーモニカ
24 17 Tango Accordion タンゴアコーディオン
Guitar
25 18 Acoustic Guitar (nylon) アコースティックギター(ナイロン弦)
26 19 Acoustic Guitar (steel) アコースティックギター(スチール弦)
27 1A Electric Guitar (jazz) ジャズギター
28 1B Electric Guitar (clean) クリーンギター
29 1C Electric Guitar (muted) ミュートギター
30 1D Overdriven Guitar オーバードライブギター
31 1E Distortion Guitar ディストーションギター
32 1F Guitar harmonics ギターハーモニクス
Bass
33 20 Acoustic Bass アコースティックベース
34 21 Electric Bass (finger) フィンガー・ベース
35 22 Electric Bass (pick) ピック・ベース
36 23 Fretless Bass フレットレスベース
37 24 Slap Bass 1 スラップベース 1
38 25 Slap Bass 2 スラップベース 2
39 26 Synth Bass 1 シンセベース 1
40 27 Synth Bass 2 シンセベース 2
Strings
41 28 Violin ヴァイオリン
42 29 Viola ヴィオラ
43 2A Cello チェロ
44 2B Double bass コントラバス
45 2C Tremolo Strings トレモロ
46 2D Pizzicato Strings ピッチカート
47 2E Orchestral Harp ハープ
48 2F Timpani ティンパニ
Ensemble
49 30 String Ensemble 1 ストリングアンサンブル 1
50 31 String Ensemble 2 ストリングアンサンブル 2
51 32 Synth Strings 1 シンセストリングス 1
52 33 Synth Strings 2 シンセストリングス 2
53 34 Voice Aahs 声「あー」
54 35 Voice Oohs 声「うー」
55 36 Synth Voice シンセヴォイス
56 37 Orchestra Hit オーケストラヒット
Brass
57 38 Trumpet トランペット
58 39 Trombone トロンボーン
59 3A Tuba チューバ
60 3B Muted Trumpet ミュートトランペット
61 3C French horn フレンチ・ホルン
62 3D Brass Section ブラスセクション
63 3E Synth Brass 1 シンセブラス 1
64 3F Synth Brass 2 シンセブラス 2
Reed
65 40 Soprano Sax ソプラノサックス
66 41 Alto Sax アルトサックス
67 42 Tenor Sax テナーサックス
68 43 Baritone Sax バリトンサックス
69 44 Oboe オーボエ
70 45 English Horn イングリッシュホルン
71 46 Bassoon ファゴット
72 47 Clarinet クラリネット
Pipe
73 48 Piccolo ピッコロ
74 49 Flute フルート
75 4A Recorder リコーダー
76 4B Pan Flute パンフルート
77 4C Blown Bottle ブロウンボトル(吹きガラス瓶)
78 4D Shakuhachi 尺八
79 4E Whistle 口笛
80 4F Ocarina オカリナ
Synth Lead
81 50 Lead 1 (square) 矩形波
82 51 Lead 2 (sawtooth) ノコギリ波
83 52 Lead 3 (calliope) カリオペ
84 53 Lead 4 (chiff) チフ
85 54 Lead 5 (charang) チャランゴ
86 55 Lead 6 (voice)
87 56 Lead 7 (fifths) フィフスズ
88 57 Lead 8 (bass + lead) バス + リード
Synth Pad
89 58 Pad 1 (Fantasia) ファンタジア
90 59 Pad 2 (warm) ウォーム
91 5A Pad 3 (polysynth) ポリシンセ
92 5B Pad 4 (choir) クワイ
93 5C Pad 5 (bowed) ボウ
94 5D Pad 6 (metallic) メタリック
95 5E Pad 7 (halo) ハロー
96 5F Pad 8 (sweep) スウィープ
Synth Effects
97 60 FX 1 (rain)
98 61 FX 2 (soundtrack) サウンドトラック
99 62 FX 3 (crystal) クリスタル
100 63 FX 4 (atmosphere) アトモスフィア
101 64 FX 5 (brightness) ブライトネス
102 65 FX 6 (goblins) ゴブリン
103 66 FX 7 (echoes) エコー
104 67 FX 8 (sci-fi) サイファ
Ethnic
105 68 Sitar シタール
106 69 Banjo バンジョー
107 6A Shamisen 三味線
108 6B Koto
109 6C Kalimba カリンバ
110 6D Bagpipe バグパイプ
111 6E Fiddle フィドル
112 6F Shanai シャハナーイ
Percussive
113 70 Tinkle Bell ティンクルベル
114 71 Agogo アゴ
115 72 Steel Drums スチールドラム
116 73 Woodblock ウッドブロック
117 74 Taiko Drum 太鼓
118 75 Melodic Tom ロディックタム
119 76 Synth Drum シンセドラム
120 77 Reverse Cymbal 逆シンバル
Sound effects
121 78 Guitar Fret Noise ギターフレットノイズ
122 79 Breath Noise ブレスノイズ
123 7A Seashore 海岸
124 7B Bird Tweet 鳥の囀り
125 7C Telephone Ring 電話のベル
126 7D Helicopter ヘリコプター
127 7E Applause 拍手
128 7F Gunshot 銃声

VLAN setting on Windows

  • Control Panel
  • Network and Sharing Center
  • Change adapter settings (on left side bar)
  • Right click on specific network adapter
  • Properties
  • Configure
  • Advancesed tab
  • Packet Priority & VLAN -> set to Packet Priority and VLAN Disable
  • VLAN ID -> set Vlan id as value

【Python】Project Euler - Problem01

プロジェクトオイラーという、数学の問題をプログラミングで解いていこう、という練習問題集があります。

Pythonの練習用にこれをやり始めてみたので、記録として作ったプログラムを載せていきます。 これがベストな解法とは思ってなくても、自分にとっては(制限時間ありの)今のベストです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

##############################################################################
def _IsThreeTimes(num):
    if num % 3 == 0:
        return True
    else:
        return False

##############################################################################
def _IsFiveTimes(num):
    if num % 5 == 0:
        return True
    else:
        return False

##############################################################################
def eval(max):
    list = []

    for i in range(1, max):
        if _IsThreeTimes(i) is True:
            list.append(i)
        elif _IsFiveTimes(i) is True:
            list.append(i)
        else:
            pass

    print("NUM(" + str(max) + ") = " + str(len(list)))
    print("SUM(" + str(max) + ") = " + str(sum(list)))

##############################################################################
def main():
    eval(10)
    eval(1000)

###############################################################################
if __name__ == '__main__':
    main()

http://odz.sakura.ne.jp/projecteuler/

【Python】【Excel】 win32comモジュールでExcelを操作する

EXCELスクリプトから操作する方法はいくつかあるけれども、 今回はPythonでwin32comというモジュールを使った方法を紹介。

インストール

こちらが分かりやすい。

スクリプト

自分がよく使うものだけ列挙。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import win32com.client

"""
Excelの操作
"""

# Excelのインスタンスを用意
xlApp = win32com.client.Dispatch("Excel.Application")

# Excelを閉じる
xlApp.Quit()

"""
ブックの操作
"""

# ブックを開く(読み取り専用)
wb = xlApp.Workbooks.Open("sample.xls", ReadOnly="True")

# ブックを別名保存する
# ファイル名を指定すると、カレント・ディレクトリに保存する。フルパスでの指定も可能。
# 読み取り専用で開くダイアログを表示しない
# Excel95-97形式
wb.SaveAs("sample.xls", ReadOnlyRecommended="False", FileFormat=xlExcel9795)

# ブックを閉じる
# - True: 保存して閉じる
# - False: 保存しないで閉じる
wb.Close(True)

"""
シートの操作
"""
# シートを追加
ws = wb.Worksheets.Add()

# シートを末尾(<シート数>個目のシートの後)に移動。
# 第1パラメータの`None`が無いと動かない。これで数日ハマった。。。
ws.Move(None, wb.Worksheets(wb.Worksheets.Count))

# コピーも同様。
ws.Copy(None, wb.Worksheets(1))

# シート名の変更
ws.Name = "sample2"

# シートの表示倍率を変更 [%]
ws.PageSetup.Zoom = 70

# 列の幅の変更
# A列からG列について、それぞれの列幅をWorksheet'origin'の同じ列の幅に設定する
for i in ws.Range("A:G"):
    i.ColumnWidth = wb.Worksheets("origin").Columns(i.Column).ColumnWidth

# オートフィルタ
# 3~7行目にオートフィルタを設定する(3行目にフィルタのドロップダウン▼マークがつく)
ws.Rows("3:7").AutoFilter()

# 配列で入力する
# オートフィルタの列名入力等に便利。
str_array = ["name 1", "name 2", "name 3", "name 4"]
ws.Range("A1:A4").Value = str_array


"""
セル範囲の操作
"""
# 列の挿入
# 1列目の左に、1列分を挿入
ws.Columns(1).Insert()

# 行の挿入
# 3行目の上に、5行分を挿入
ws.Rows("3:7").Insert()

# 行の削除
ws.Rows("1:6").Delete()

# セル範囲の内容を削除
ws.Range("A:C").ClearContents()

# セル範囲の背景色を変更
ws.Range("A1:D8").Interior.ColorIndex = 24 # Ice Blue : 24

# セル範囲の文字色を変更
ws.Rows("2:6").Font.ColorIndex = 1 # black : 1

# copy contents
ws.UsedRange.Copy(ws.Range("A1"))

# 値の貼り付け
ws.Range("A1:C3").PasteSpecial(Paste=xlPasteValues) # xlPasteValues = 

# セルに文字列として入力されている数字を、数字として使いたい場合、int()を使う。
# print出力のためには、さらにstr()を使う
print("B1:" + str(int(ws.Cells(1, 2).Value))

# セル範囲に一括入力する例
for i in ws.Range("B1:B10"):
    if ws.Cells(i.Row, 1).Value == None: # A列が空だったら
        i.Value = i.Row                  # B列に行番号を入力

# 並べ替え
# セル(1,1)から(10,10)が対象
# 1列目をキーとする
# 昇順
# 1行目をヘッダとする
sortTable = ws.Range(ws.Cells(1, 1), ws.Cells(10, 10))
sortTable.Sort(Key1 = sortTable.Columns(1), \
    Order1 = xlAscending, \
    Header = xlYes, \
    Orientation = xlSortRows)

"""
セルの操作
"""
# 数式を入力
ws.Range("D1").Formula = "=VLOOKUP($C1,data!$A$3:$I$10,2,0)"

# セルの値がエラーかどうかチェック
if ws.Range("A1").Errors.Item(1).Value == True: # xlEvaluateToError = 1
    ws.Range("B1").Value = "ERROR!"

参考

https://sites.google.com/site/pythoncasestudy/home/pywin32kara-comwo-tsuka-tsu-te-excelwo-sousa-suru-houhou

Python ライブラリ厳選レシピ

Python ライブラリ厳選レシピ