サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
kzlog.picoaccel.com
Ruby on Railsチュートリアルで第6章のユーザーのモデルを作成しているとき、rails db:migrateしてもrails testすると、 Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=test というエラーになります。素直に、RAILS_ENVをつけてテストをすると、テストはパスします。 その後、validationでuniquenessをつけてまたmigrateしようとするとこんどは、migrateできないというエラーになります。 SQLite3::ConstraintException: UNIQUE constraint failed: users.email: CREATE UNIQUE INDEX "index_users_on_email" O
1.WSL2とVMware Workstation Player 15.5.5の共存を確認 WSL2(Windows Subsystem for Linux 2)とVMware Workstation Player 15.5.5の共存を確認しました。 前回WSL2のインストールまでやりましたが、VMware Workstation Playerをインストールしたら動作を確認できました。 2.WSL2とVMware Workstation Playerを共存させるとき注意すること 注意するべき点が2点あります。 WSL2を有効にする前にVMware Workstation PlayerのゲストOSの電源を切っておくことIntel VT-x/EPTまたはAMD-V/RVIを仮想化のチェックを外しておくこと WSL2を有効にする前に電源を切っておきましょう。一度、VMware Workstati
1. WSL2やHyper-Vと共存できるVirtualBox 6.1.16が公開されました VirtualBox 6.1.16が公開されました。このバージョンでは、長らく待たれていたWSL2やHyper-Vとの共存がサポートされています。 こちらでも、VirtualBox 6.1.16をインストールしてUbuntu 18.04とCentOS 7でsudo apt upgaradeとsudo yum updateが完了しすることを確認しました。 2. パフォーマンス VirtualBoxは、安定して動いていますが、パフォーマンスに影響があります。 フォーラムでの報告では、Knoppix ISOでmd5sumでのchecksumを計算する時間の計測です。 最初の計測/2回めの計測 83/56秒 Hyper-Vなし 最初の計測/2回めの計測 42/25秒 Hyper-Vあり 引用元:Virtu
Linuxカーネル内のアトミック操作には、atomic_readとか、atomic_incといった関数があります。この場合の、アトミックというのは、スレッドが複数あったときに、メモリから変数を読んで、増やして、書き込むまで同時に増やそうとしないということを言います。 typdef struct {volatile int counter;} atomic_t; というタイプが宣言されていて、atomic_read(v)とすると、(v)->counterが読まれます。counterは、volatileですのでgccが最適化せずにちゃんとメモリ上の値を読んで来ます。 また、atomic_incは、 static inline void atomic_inc(atomic_t *v) { __asm__ __volatile__ ( LOCK "incl %0" :"=m" (v->counte
1.WSL2とVirtualBoxの現状 WSL2を有効にしたときにVirtualBoxはどうなのか確認してみました。 結果から言うと、不安定で使えなかったです。 デスクトップが表示されるところまでは行きます。でも、画面の大きさを変えたり、sudo apt upgradeしてもsegmentation faultで止まったりします。 フォーラムでの開発者の発言を聞いていると、とりあえず動くようにはしたけどといった発言が見られます。開発の優先順位は低くて、あまり活発に開発しているようには見えません。 また、安定してきたら試してみようと思います。 2.Hyper-VとVirtualBoxのこれまでの関係 VirtualBoxは、Windows 10 1809のときにHyper-Vに対応しました。VirtualBoxのバージョンは、6.0.0です。 Windows 10 1903のときに、Mic
VirtualBoxの共有フォルダを自動マウントしようとしたところ、以前とは少し違っていたので紹介します。 まず、VirtualBoxのメニューのデバイス、共有フォルダで設定をします。名前をshareとしました。自動マウントと永続化のチェックは入れておきます。 次に、Ubuntu 16.04 x64で手動でマウントするには以下のようにします。 $ mkdir sharepoint $ sudo mount -t vboxsf -ouid=hoge,gid=hoge share sharepoint これを、Ubuntuの起動時に自動でマウントするには/etc/fstabに次のようなエントリーを加えます。 名前がhogeさんの場合です。 /etc/fstab share /home/hoge/sharepoint vboxsf uid=hoge,gid=hoge,comment=system
2020年春公開予定のWindows 10で、WSL2(Windows Subsystem for Linux 2)が装備されます。 VMware Workstationは対応していないため、WSL2と同時実行できないことが問題。 VMwareが対応するVMware Workstaionのプレビューを公開しています。 VMware Workstation Tech Preview 20H1 - Hyper-V/Host VBS Support 必要な条件は、ソフトウェアは、 Windows 10 20H1 from Windows insider program. Minimum build number: 19041 ハードウェアは、 Intel Haswell or newer CPU AMD Bulldozer or newer CPU です。 Windows insider pro
Visual Studio Codeを使い始めました。 インテリセンスが効いて、コードを入力するのが楽になりました。 ただ、1つ気になったのは、入力候補が出た時にエンターキーを押すとどんな場合にも入力候補が選択されて確定してしまうこと。 その入力候補を選びたくないときにはどうすればいいのか結構調べました。 その結果、3つの方法を考えました。 設定を変えない方法 行を変えたいときはCtrl+Enter。 それ以外の時は、スペースキーなどEnterキー以外のキー入力で無視できます。 この方法は、設定は変えませんが慣れるまで時間がかかりますね。 Enterキーによる確定を無効にする方法 Enterキーでは入力候補の確定をしないでTabキーのみで確定にする方法です。次のように設定を変えます。既定で"enter"に設定されているエントリーをkeybindings.jsonに入力するとエンターキーによ
Django Girls TutorialでHerokuへのデプロイをやったときのこと。 heroku run python manage.py migrate は成功するのですが、 heroku run python manage.py createsuperuserがエラーになりました。 auth_nameが無いといわれます。no such tableだそうです。このようなエラーが出ます。 You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, blog, contenttypes, sessions. Run 'python manage.py migrate' to apply them
準仮想化クロックの遅れの原因を追究してみます 前回、準仮想化クロックが5分で6秒くらい遅れることがわかりました。 少し細かな話になりますが、ソースコードを探索して原因の追究ととりあえずの対処法を紹介します。 VirtualBoxのソースコードを見てみる まずはVirtualBoxのソースコードをダウンロードします。以前いじったときから5年ほど時間がたっていました。 Googleの検索でparavirtualizationを検索しているとき、VirtualBox 5.0 Beta2 releasedのリリースノートに VMM: added support for using Paravirtualization providers with raw-mode VMs とありました。 raw-mode VMsはなんだろうということで、svn logでraw-modeを検索してみます。 すると、
このところずっとVirtualBoxを使っていて、ゲストOSの時計が遅れていることに気がつきました。なんか変だということで、精度を簡単に測ってみることにしました。 クロックソースによる時計のおくれの違い 準仮想化クロックkvm-clockは、/sys/devices/system/clocksource/clocksource0/current_clocksourceでクロックソースとして指定しています。その他にも変えられるものがあるので、準仮想化ではなくなってしまいますがクロックソースを変えてみます。 $ sudo sh -c "echo tsc >/sys/devices/system/clocksource/clocksource0/current_clocksource" で変えられます。 変えられるのは、cat /sys/devices/system/clocksource/cl
VMware Workstation Playerで、ゲストOSでマウスやキーボードを使えるようにすることをキャプチャとがグラブ(grub、捕まえる)というようです。 自分はAlt-Tabでウインドウを切り替えることが多いです。VMware Playerの場合、一度ウィンドウをクリックしてグラブされてしまうと、Alt-TabがLinuxのゲスト内でのウィンドウの切り替えになってしまい、マウスで外のウィンドウをクリックして変えていました。 キーボードだとCtrl-Altの同時押しでリリースする設定になっているのですが、どうにも使いずらいです。そこで、C:\Users\(your name)\AppData\Roaming\VMware\preferences.iniに次のように設定してAlt-Shiftで変えられるようにしました。 preferences.ini pref.hotkey.sh
アプリケーションとAPIの話でした。 ファイルを見つけると、メモリにロードしてセグメントを設定して実行してしまうという話。特権レベルが変わっていないせいか、ソースコードだけを見ているとOSとアプリケーションの区別がつかない気がした。 アプリケーションからOSの機能を呼び出すのは、ソフトウェア割り込みが一般的なんですかね。そういえばLinuxもint 0x80だし。その他、コールゲートというのがあるのは知っているけれど、他にはあるのかな。
以前、VMware Workstation 12 PlayerでUbuntu 14.04を使おうとしました。 ホストは、Windows 10 Proです。 VMware Toolsをインストールして、いろいろやってみたのですが、どうもうまくいきませんでした。 今回Ubuntu 16.04を使おうとして調べてみると、こちらの方法でうまくいくことがわかりました。 ubuntu 16.04 インストール(2) vmware tools 自分の場合、クリップボード共有(コピーペースト)と共有フォルダを主に使っています。 VMware Toolsをインストールする方法としては、Ubuntuにもともと入っているOpen VM Toolsを使う方法と、以前からあるように手動でインストールする方法があります。 Ubuntu 16.04のデフォルトでは、Open VM Toolsが入っているのですが、共有フ
Amazon Web Services(AWS)でWebサービスを提供しようとしたとき、ロードバランサはどういう場合に使えばよいのでしょうか。 ネットワーク構成などとAWSの報告例を参考にその料金を検討してみました。 複数のサーバーでネットワークを構成するときの基礎 こちらにユーザー数が1から1100万以上になったときに何が必要になるのかが紹介されています。AWSのre:Invent 2015での講演を簡単にまとめたものです。 Amazon AWSでユーザ数1100万以上にスケーリングするためのビギナーズ・ガイド 講演のビデオのリンクもあるので、詳細はそちらをご覧ください。英語ですけど。 簡単にまとめると、ユーザー数が10までは、1インスタンスでいいです。10を超えたら、DBサーバーを分けましょう。100を超えたらAmazon RDSを使いましょう。1000を超えたらロードバランサをつかい
国内外のクラウドサービスのどこが本当に安いのか比較してみました。2017年3月での比較です。 各サービスが提供する最低の値段を調べました。WordPressを使うことを想定してWebサーバーのインスタンスとデータベースのインスタンスを借りることを考えます。 比較したのは、Amazon Web ServicesとGoogle Cloud Platform、Microsoft Azure、さくらのクラウド、IDCF クラウド、クラウド・エヌです。 データベースのサーバーは、リレーショナルデータベースのサービスが提供されていればそれを使い、無ければインスタンスを2つ借ります。 それぞれのサービスで料金のシミュレーターがあるので、それを使って調べました。 厳密な意味ではスペックを同じにできませんでしたので、はじめにお断りしておきます。 では、Amazonから。 Amazon Web Service
Amazon Web Servicesでは、こことか、ここにあるように、ロードバランサを使った構成を勧めています。 ロードバランサを使った場合、国内外のクラウドサービスのどこが本当に安いのか比較してみました。2017年5月での比較です。 各サービスにおいて、メモリが2MBあるインスタンスを借りることを考えます。WordPressを使うことを想定してロードバランサ1個とWebサーバーのインスタンス2個とデータベースのインスタンスを借りることを考えます。 比較したのは、Amazon Web ServicesとGoogle Cloud Platform、Microsoft Azure、さくらのクラウド、IDCF クラウド、クラウド・エヌです。 データベースのサーバーは、リレーショナルデータベースのサービスが提供されていればそれを使い、無ければインスタンスをデータベース用に借ります。 海外のクラウ
DockerがWindowsに正式に対応しました。コンテナーがどうやってWindowsで動くのか興味がありました。 無償の「Docker for Windows」で手軽にLinuxコンテナを利用する (1/2) 以前は、VirtualBoxの上で、Tiny Core Linuxという小さいLinuxを動かしていました。 正式な対応といって、どうしてるのかと思いました。結局、Hyper-Vの仮想マシンが1つ動いていて、その上でAlpine LinuxというLinuxが動いています。仮想マシンの名前はMobyLinuxVMとなっています。その上でDockerのコンテナが動いています。MobyLinuxってなんでしょう。 コンテナが実行される環境としては、仮想マシンを動かしてLinuxの上で実行しているのは変わりません。 Windows上からコマンドで、Linux上のコンテナを操作しているわけで
Ubuntu 16.04上でPHPのデバッグができる環境を整えました。手順をまとめます。 Apache2のインストール まずはApache2のインストールから。 $ sudo apt install apache2 $ sudo a2enmode userdir a2enmodeでuserdirを有効にします。これで、ホームディレクトリのpublic_htmlディレクトリを公開できるようになります。作ったディレクトリが/home/hoge/public_htmlだと、 http://localhost/~hoge/で、public_html以下が公開されます。 PHPのインストール 次は、PHPのインストール。 $ sudo apt install php libapache2-mod-php /etc/apache2/mods-available/php7.0.confのphp_admi
はじめに 2016/09/02追記 Ubuntu 16.04の場合は、Open VM Toolsを使い、設定するといいことがわかりました。 Ubuntuの16.04が出たということで、VMware Playerをどうしようか検討していた。 VWware Playerは、Ubuntu 15.04からVMware Workstation 12 Playerのサポートになったようです。 VMware Workstation 12 Player と次の製品との比較 そこで、VMware Workstation Player 12.1.1を使ってみることにしました。 ホストOSはWindows 7で、ゲストOSはUbuntu 14.04です。 共有フォルダ VMware Workstation Playerにアップグレードして最初に確認したのは共有フォルダです。 案の定動きませんでした。メニューにあ
仮想マシンとコンテナの違いが簡単にまとめられています。 コレ1枚で分かる「仮想マシンとコンテナの違い」 両者ともアプリケーションを動かす環境を提供します。一言で違いをいうと、OSを動かすかどうかです。それに伴って様々な違いが生まれるのですけど。 両者の特性を生かして上手に使いたいですね。
準仮想化クロックのしくみについて解説してるブログがありました。 KVM pvclock まず、ゲストOSが読めるメモリーをMSRを使って登録しておきます。そこへKVMがホストの起動してからの時間とTSC(Time Stamp Counter)を書き込みます。ゲストOSは時間を知りたいときに、まず現在のTSCを読みます。そして、メモリー上の起動してからの時間とTSCの差分の値を使って現在時間を割り出します。 ホストの起動したときの時刻は別に保存してあるそうです。 メモリーを使って値のやり取りをしていることと、TSCを使っているのが特徴かなと思います。 メモリーの値がアップデートされるのはホストOSからゲストOSに制御が移るVM eventの前だそうです。 時計がどれだけ正確化は、ゲストOSがどういうタイミングで時計をチェックして更新するかによります。 Linuxのシステムクロックについては、
はじめに 久しぶりにWindows上でQEMUを作ろうとしたら、ソースコードの修正が入っていて作り方が変わっていました。いろいろ試行錯誤して作り方を見つけたので紹介します。 QEMUのソースコードの現状 今年(2016年)の3月までは、GCC 4.5とGTK+ 3.6.4という組み合わせでコンパイルできていました。でも、MinGW-w64のgcc 4.8になるとwinsock関係のインクルードファイルに変更があって、それに対応するためにQEMUにも変更が入りました。 この変更で、GTK+ 3.6.4のライブラリ内でワーニングが出てしまい、QEMUをコンパイルできなくなりました。GCC 5.4に変えても無理で、GTK+のライブラリのバージョンを上げることが必要になりました。 作成環境の現状 QEMUは、GTK+に含まれるGlibというライブラリを使っています。Windows上でコンパイルしよ
VirtualBox 5.0が登場しました。 VirtualBox プレスリリースによると次のような特徴があります。 WindowsとLinuxゲストの準仮想化のサポート CPU使用の改善。CPUの命令が増えています。 USB 3.0のサポート Windowsのドラッグアンドドロップのサポート ディスクイメージの暗号化 Linuxゲストの準仮想化をサポートするというので、早速インストールしてみました。 前回にも書きましたが、Linuxゲストの準仮想化はXenのように準仮想化専用のカーネルを動かすのではなく、準仮想化インターフェースに機能を提供してエミュレーションの精度をあげるものです。 Linuxゲストには、KVMタイプとして準仮想化クロックとSMPスピンロックが提供されます。この準仮想化クロックを確認してみます。 今回はUbuntu 12.04ゲストで確認しました。 まずは順番にインスト
ゲストの時計の補正を止める VirtualBoxは、準仮想化インターフェースが”なし”のとき、ゲストOSとホストOSの時計は同期しています。でも、何かのときにゲストとホストの時計の同期を止めたいことがあると思います。 こちらを参考に紹介します。ゲストOSがWindowsの場合が載っています。 なお、TSCTiedToExecutionというのはTSCに関する別の設定ですので今回は設定しません。 VirtualBoxがホストの時計をゲストに供給するのを止める 時計の補正を止めたいゲストOSをシャットダウンします。 設定でシステム―>アクセラレーション―>準仮想化インターフェースで”なし”を選びます。 Legacyを選んでも”なし”と同じです。他を選ぶと自動的に補正されなくなります。 VirtualBoxのインストールされているフォルダに行きます。 cd "C:\Program Files\O
1.はじめに Windows 10 を May 2020 Updateへの更新が開始されました。WSL2(Windows Subsystem for Linux 2)が正式にサポートされます。そこで、まずWSL2を使えるようにすることにしました。 2.Windows 10 May 2020 Updateへのアップデート May 2020 Updateへの更新は、Windows Updateを通じて行われます。首を長くして待っていたのですが、Windows Updateのページに表示されません。そこで、手動でアップデートすることにしました。 ただ、すでに不具合も報告されています。 Windows 10, version 2004 and Windows Server, version 2004 Intelの内蔵GPUを使っていると、DirectX 9を使ったゲームで可変リフレッシュレートが有
準仮想化クロックについていろいろ調べてみて、Hyper-Vでは何をやっているのだろうと疑問に思いました。 そこで、LinuxのHyper-V用準仮想化クロックのドライバを見てみることにしました。 準仮想化クロックは、ソースコードLinux/arch/x86/kernel/cpu/mshyperv.cで、hyperv_clocksourceという名前で登録されています。 しくみについて簡単にコメントがありました。MSRというCPU内部のレジスタにHV_X64_MSR_TIME_REF_COUNTという名前のレジスタがあります。そのレジスタを読むとパーティションカウンターという数値が読めます。これは、子パーティション(ゲスト)が作られてからのtick countという値です。このcountは、子パーティションが作られたとき0になり、100 nanosecond単位で増加します。 要するに子パー
このページを最初にブックマークしてみませんか?
『K'zlog | 仮想化やクラウドについて』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く