ページ

2016年9月20日火曜日

【Processing】duplicate field エラーとは?

状況


Processingでプログラミング中に、こんなエラーが表示されたことはないでしょうか。

duplicate field ファイル名 変数名

検索してみても英語のサイトが出てきたり...ということで、このエラーについて紹介します。


原因


変数の名前がかぶってしまうことによって発生するエラーです。

対処


エラーが発生している同じ名前の変数のうちのどちらかの変数の名前を変更してください。
またその時は、宣言名の変更と、その変数を用いているところ全ての部分を書き換えてください。(そうしないと、意図しない実行結果になります。)



一言追加


変数名は、状況によって重ねっても良い場合があります。

変数というのは、その変数が使える範囲が決まっています。
これを「変数の有効範囲」や、「変数のスコープ」といいます。
この範囲外では変数を使えないため、もし範囲外に同名の変数があったとしても区別がつきます。
しかし、範囲内に同名の変数があった場合、どちらの変数を指しているのか区別がつかなくなるため、エラーが発生するのです。

では、この範囲はどうやってわかるのかというと、主にかっこ({}など)のなか(ブロックといいます)であると思って良いです。
(正確にはオブジェクト指向のプログラミング言語では異なる場合も多いですし、わざと変えられるプログラミング言語もあります)

詳しくはお使いのプログラミング言語のリファレンスを見てください。
(Processingについては上記の理解で構わないと思います)

【VirtualBox】VirtualBox version mismatch - expected 5.1 got 5.0というエラー

 【追記】出来ました!!


アクセスがいくつか見られたので、ほっとくわけにもいかないと思い、もう一度調べてみました。

以下のリンクを参考に、古いヴァージョンである
"Oracle_VM_VirtualBox_Extension_Pack-5.0.26-108824.vbox-extpack"
をインストールしてみたら、正常にインストールできました。
ヴァージョンは古いですが、正常にインストールできたので、良しとしましょう。

https://forum.manjaro.org/t/virtualbox-usb-not-working/7075/4

 

 状況


Linux(Ubuntu)にて、Ubuntu SoftwareからVirtualBoxをインストールし、Extension_Packをインストールしようとして以下のエラーが出ました。
解決法がわからないですが、知っている方はコメント欄に書き込んでいただけるとありがたいです。
VBoxExtPackRegister returned VERR_VERSION_MISMATCH, pReg=0000000000000000 ErrInfo='VirtualBox version mismatch - expected 5.1 got 5.0'.

終了コード :
NS_ERROR_FAILURE (0x80004005)
コンポーネント:
ExtPackManagerWrap
インターフェース:
IExtPackManager {edba9d10-45d8-b440-1712-46ac0c9bc4c5}

環境 

  • Ubuntu 16.04 LTS
  • 64bit
  • VirtualBox グラフィカルユーザーインターフェース バージョン
    5.0.24_Ubuntu r108355 
  • インストールしようとしたファイル
    Oracle_VM_VirtualBox_Extension_Pack-5.1.6-110634.vbox-extpack 
Downloads – Oracle VM VirtualBoxからエクステンションパッケージのファイルを入手


「ヴァージョンが合わない」といったエラーが出ているようです。
しかし、最新であろうファイルをダウンロードしているわけで、どうすれば良いのかわかりません。

2016年9月19日月曜日

バッチファイル(.bat)がうまく動かない時の対処法

状況


「メモ帳」でバッチファイルを作成したときに、

C:\Windows\System32>・ソ"C:\Program Files\Google\Chrome\Application\chrome.exe" "http://www.dff.jp/" ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

と、表示されたことはないでしょうか。
・ソ
と入力したわけでもないのに、なぜか入力されている時の対処法をご紹介します。

原因


これは、「メモ帳」で「UTF-8 BOM付」で保存したために起こる問題です。
「メモ帳」でUTF-8を選択して保存した場合、自動的に「UTF-8 BOM付」になります。
これは、変更できないようです。

BOMとは

BOMとは「Byte Order Mark」の略で、ファイルの先頭に 0xEF 0xBB 0xBF がつきます。(バイナリエディタで確認できます)
この値があることで「UTF-8」だと認識するソフトウェアがあるものの(Windowsのソフトウェア)、多くではなく、プログラミングではない方が望ましい(あるとエラーを吐き出す)ため、問題がなければBOMはなくす方が望ましいです。

対処

  • 「メモ帳」以外のテキストエディタを使う(サクラエディタ,TeraPad等がおすすめ)
  • 「メモ帳」を使う場合は「ANSI」で保存(「Shift_JIS」での保存となります)

2016年9月14日水曜日

【sinatra】invalid byte sequence in Windows-31J対策

状況


sinatraを使ってWebアプリケーションを作成していると、

invalid byte sequence in Windows-31J

というエラーが気まぐれに出ます。
このエラーページにある
Windows-31J
というのは、Shift-JISを改造した文字コードみたいなものです。(検索してみてください。詳しく解説しているサイトがあります)

原因


rubyは違う文字コード(例えば UTF-8 など)で書かれたソースコードをWindows-31Jで読み込もうとするため、エラーが表示されるのです。

対処


対策として、

Encoding.default_external = 'UTF-8'

をrubyファイル(.rb)の先頭(1行目)に入力してください。

※UTF-8の部分は、保存したときの文字コードに合わせてください。
ただ、プログラミングをするのならUTF-8を強くお勧めします。というか、こちらが標準です。
(バッチファイルを書くのならShift_JISでもよいと思いますが...)
参考:RubyのSJISはShift_JISじゃない

入力するのは、ERBファイル(.erb)ではないです。

こうすることで、rubyのインタープリタに文字コードを知らせることができます。

プログラマーにお勧めの質問サイト

何度見直しても間違っているように見えない、ただコピペしただけなのに、どうして正しく動かないんだと思うことはないでしょうか。(私は日常茶飯事です。)

そんなプログラマーの方にお勧めな質問サイトが、teratail(テラテイル)です。

teratail【テラテイル】|思考するエンジニアのためのQAプラットフォーム


ついでに、私は回し者ではありません。
いままでこのような質問サイトは、叩かれるのでは思い、使わないようにしてきました。
しかし、プログラミングでどうしてもわからないことがあり、アカウントを作って質問してみました。
すると、とても親切な方が詳しく教えてくださいました。
このような素晴らしいサービスをぜひ知っていただいて、より発展したサービスになればうれしいと思っています。


良い点
  1. 思考するエンジニアのための」とあるように、くだらない質問・調べればすぐにわかるような質問というものはほとんど目にしません。
    しかし、初心者の方に対しては、とても詳しく丁寧に解説をしていらっしゃる方もいます。
    どんな人も使えるサービスです。
  2. 優れた知識を持つ、その道の専門家のような方から回答を頂けることがある。
    「上には上がいる」ように、質問に対する回答を知っている方はほぼ確実にいるでしょう。(そもそも、プログラミング言語は人間が作り出したものです)
  3. 回答率が高い
    このサービスが売りにしていることです。私がした質問が初心者向きだったからなのかもしれませんが、数時間で回答が来ます。早ければ1時間程度で来ます。やはり回答が来るとそれが多少的外れでも、うれしいものがあります。
使う上での礼儀(詳しくは推奨していない質問を見てください)
  1. きちんと調べたうえで質問をする
    回答をしてくださる方は、質問のために時間を削っています。掲載したソースコードを実行してみて、間違っている点を教えてくださる方もいます。すぐにわかるようなことを、むやみに質問しないようにしましょう。また、「~するためのコードを教えてください」などもやめましょう。
  2. できるだけ情報提供をする
    実行する環境が悪いのかもしれません。自分では大丈夫だと思っていたところに、バグがあるかもしれません。言えないこともあろうかと思います。ですが、できるだけ情報提供をした方が早期解決になり、お互いの負担も減るのではないかと思います。

プログラマーとしての威厳を持って、こうしたサービスを利用しましょう。

また、他にもプログラマー向けの優れた質問サイトはあります。優れたサービスを有効に活用することが優れたプログラマーになるための近道になるのではないでしょうか。



追記:2016-09-14 16:50現在 47581人の方が会員登録をされているようです。
これだけ多くの方が会員登録をされているならば、質問に対する回答は質の良く、迅速な回答になるでしょう。

2016年9月7日水曜日

Microsoft Edgeが動かない時の対処法



あくまで自己責任で実行をお願いします。

状況


「Microsoft Edge(マイクロソフト エッジ)が動かない!」
「開いているタブはきちんと動いているのに、ほかのタブに切り替えられない!」
または、
「タブでスクロールができ、右クリックもできるのに、ブラウザの操作ができない!」
なんてことはないでしょうか。

以下で、この状況の対処法を書きたいと思います。
(というより、私が回復させた方法です)

原因


もしかしたら、パソコンでの処理が多く、固まっているかもしれません。
または、Microsoft Edgeがうまく動いていないのかもしれません。

対処


ブラウザを再起動してみましょう。
困った時、状況にもよりますが、再起動は有効な手段です。

しかし、ブラウザが動かないというのにどうすれば良いのかとお思いになるでしょう。


以下の方法をお試しください。
(Windows10環境で確認(というよりMicrosoft EdgeはWindows10にしかない)
ただ、どのヴァージョンのWindowsでも使える方法です)

  1. タスクバー(標準では一番下にあるアイコンなどが並んだバー)の何も表示されていない部分をを右クリックし、「タスクマネージャー」を起動(クリック)する。
  2. 「プロセス」タブから、「Microsoft Edge」を右クリックする。
    ※このとき、違うプロセス(ソフトウェア)を選ばないよう気をつけてください。紛らわしいプロセスがあることがあります。 心配なら、パソコンを再起動してみることが一番良いでしょう。
  3. 「タスクの終了」をクリックする。

これでMicrosoft Edgeが終了したはずです。
再び起動すると、終了する前の状態に戻っているでしょう。
(Microsoft Edgeは、強制的に終了されると以前開いていたページを表示する機能があるみたいです。)