サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
パリ五輪
d.sunnyone.org
Ubuntu 20.04 (focal)のVMをいつもの通りvirt-installと--locationを使ってセットアップしていたら、WARNINGに遭遇したので、気になっていたcloud-initでインストールしてみたところうまくいったのでまとめる。 sudo virt-install (略) --location 'http://ftp.jaist.ac.jp/pub/Linux/ubuntu/dists/focal/main/installer-amd64/' --extra-args 'console=ttyS0,115200n8 serial' WARNING Using legacy d-i based installer, that has been deprecated and will be removed in the future. https://discour
ライブラリとして分離したnpmパッケージを作るときは、シンプルなものであればyarn linkでローカルファイルを参照しながら動作確認ができるのだけど、依存によってはややこしい問題が起きたりする。 例えばReactを使うライブラリだとこんなエラーが起きたりする。 Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons: 1. You might have mismatching versions of React and the renderer (such as React DOM) 2. You might be breaking the Rules o
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } 先日Vue.js 1.xから2.0への移行を行った。まるっと書き換えないといけないというレベルではないが、メジャーバージョンアップだなぁと感じる程には違いを感じられたのでいくつかポイントを書いておく。 もちろん、Vue.jsの機能を全て使いこなしているわけではないため、すべて網羅しているとはとても考えていないので、詳しくは「Migration from Vue 1.x」を参照してほしい。 大きな違い:テンプレートが事前コンパイルできるようになったVue 1.xと2.xの大きな違いは、テンプレートのコンパイルと実行を分離できるようになったこと。実際に移行してみた感じ、このコンパイル処理の邪魔になるようなことに関しては排除するような形で変更され
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } Rustは C FFI が強いので、はっきりしたstructとCの関数を呼び出すなんていうケースでは、それっぽいstructとexternでの関数の定義を書けば呼び出せる。コールバックもできる。 →他言語関数インターフェイス しかし、以下のようなケースではちょっとやりにくい。 必要な関数の呼び出しにCマクロが必要 opaqueなstructの下のほうのメンバにアクセスが必要 要はC言語を解釈してもらえると楽だよねという話なので、「Cでラッパー書いてautotoolsだMakefileだなんだかんだ、ようやくつなげる」となるかと思いきや、このようなCラッパーが必要な状況についてもRustには補助がある。今回はそのやりかたについて紹介する。 自
今回はRustとその開発環境のセットアップの仕方について。Ubuntu 14.04環境に、Visual Studio Codeをインストールして、コード補完ができるようになるまで。Ubuntu Makeのところ以外は、Macでも大体同じじゃないかなと思う。 Rust コンパイラまわりmultirustのインストールmultirustは、stableやnightlyなどrust環境を切り替えられるようにするツール。普通にrustcをインストールしてもよいが、便利なのでmultirustで入れておく。 $ curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sh (略) $ rustc --version rustc 1.7.0 (a5d1e7a59 2016-02-29) rustc的
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } Ansibleは普通「playbook」と呼ばれるファイルを記述し、それを使って動かすのだけど、もっとてきとーに使っても便利なときは便利なので、今日はその使い方の紹介。実行する側は、ansibleがインストールされている必要はあるが(apt-get install ansibleでよい)、対象ホストはsshでアクセスできればOK。 複数ホストにコマンドを投げるシンプルな例: 適当なファイルをcatするもっとも理解が簡単なのは、権限だとかは気にせずにただコマンドが実行できればよい、という使い方。サーバがたくさんあるんだけど、ひとつひとつ実行するのはダルい。そんなときは、こんな風に実行すると、実行して結果を並べてくれる。 $ ansible -
これは、PowerShell Advent Calendar 2015の12/20分の記事です。Invoke-WebRequestとIEエンジンによるDOM処理とは違うやり方について書きます。 --- PowerShellを使うと、Invoke-WebRequestを使うことで、特にライブラリ等を準備せずともWebページをスクレイピングすることができる(参考:PowerShellでスクレイピング 後編 HTMLをパースする) 。 これはこれで便利なのだが、少し複雑なHTMLになると、Where-ObjectやSelect-Objectがだんだん増えてきてしまう。こんな感じである。 やっぱりDOMツリーをたどるなら使い慣れたCSSセレクタの記法が使いたいよね?ということで、今回はCSSセレクタが使える.NET用HTMLパーサライブラリ「AngleSharp」をPowerShellから使ってみ
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } 多分5年以上使っていたNAS, TS-219PについているHDDの2台のうち片方が壊れた。Software RAID1構成なので、交換してリビルドすればいいという話だったはずなのだが、長期戦になってしまった。 今回は時系列に沿って。日数はフィクションです。仕事の話じゃなくてよかった(仕事だったらもっと慎重だったろうから、こんなんにならないと思うけど)。 1日目: 拡張できるはずだったのにもともと2TB x 2本の構成だった。もちろん2TBを買ってきて取り替えればよい。だが、容量を拡張できる機能があることがわかったので、2015年現在のGB単価的(→サハロフの秋葉原レポート)に4TBにしようと思って4TBを2本買ってきた。 もちろん、時代的に
しばらくセーフモードのお世話になっていないうちに、セーフモードはF8で起動するものではなくなっていたらしい。セーフモードを構成してからシャットダウンしてセーフモードとか。回復ディスクがなく、Windowsが起動しない場合で、明示的にセーフモードで起動したいときはどうしたらいいんだろう?ということで、Linuxを使ってセーフモードを明示的に構成する方法について今回はまとめた。 注意:PCメーカーやMicrosoftの推奨する方法ではありません。壊れにくいような手順は取っていますが、重要なシステムに適用することはおすすめしません。普通に回復ディスクを使うのが楽だと思います。どちらかというと、仕組みを読み取ってもらえれば幸いです。 手順の概要最近のWindowsの起動時の設定はBoot Configuration Data (BCD) というところに格納されており、ここにセーフモードで起動するか
今回は、Ubuntu DesktopにLinux KVMを構成し、その上にWindowsをインストールし、Desktopの側からリモートデスクトップ(RDP)で接続する環境を作る方法について。絵にするとこういう環境。 「普通Windows上にLinuxじゃないの?」と思うかもしれないが、 Windowsのリモートデスクトップは優秀なので、Windows上にVirtualBoxでLinux desktopを上げるよりは快適に使うことができるので、どちらも使いたい環境では個人的には気に入っている使い方である。 前提として、Ubuntu Desktop 14.04がセットアップされているものとする。なお、今となっては同じことGUIでもできるじゃん?と思う手順もあるが、動くなら全然そっちで構わないと思う。断片的に作業してる部分があるので、ちょっと足りてない話があるかも。 こだわらない手順ざっくり版
Visual Studioで開発をしていると、ひとつソリューションを作ってひとつのVisual Studioインスタンスでビルドしたり発行している間は良いが、そのうちそれ以上のことをしたくなってくる。例えば、複数のソリューションを複数のVisual Studioインスタンスで開いたり、CIにリリース用のzipファイルを作らせたりといったことである。 そのような状況を踏まえながら、自分がソリューション/プロジェクトを作るときに考える点について、文書としてまとめたことはなかったと思い、以下に記述する。 Visual Studio全般に通じる部分も多いと思うが、基本的にC# プロジェクト(.csproj)を想定する。 前提: ソリューション/プロジェクトとは何か?Visual Studioでは、アプリケーションをビルド(及び実行)するために必要なものをまとめたかたまりを「プロジェクト」と呼んでお
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } ZXing.Netは、1次元/2次元バーコードを認識するためのライブラリで、よく見るJAN-13(EAN-13)コードや、QRコードを認識させることができる。使い方は一見簡単で、NuGetでぽいっと入れて、数行書けば動かすことができる。 しかし、バーコードが含まれる静止画を認識させようとするとデフォルトだと認識率がだいぶ低い。恐らくカメラを動かしながら認識させていくために速度重視なのであろう。この記事では、そんなZXing.Netの認識率を上げる方法について書く。コードは流用できずとも、JavaのZXingも含めた他の言語実装でも同じようなテクニックが利用可能と思う。 ZXing.Netの単純な使い方 BarcodeReaderを作って、D
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } IDEがやってくれるような一般的なコード生成ではないが、規則のあるコードをちょちょいと生成したりしたいときがある。Annotation Processingでアノテーション見ながらというのが王道だろうが、そこまででもない使い捨てな感じにコードをGroovyを使って生成する方法。 groovyshの起動GroovyのREPLであるところのgroovyshをまず起動する。追記: なお、IntelliJ IDEAであればTools > Groovy Consoleで起動できるGroovyで処理できるので、いきなり次の作業に飛んで問題ない。 単純なケースであれば、クラスパスを指定して、groovyshを起動する。 $ groovysh -cp ou
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } Rust 1.0 Release記念祝賀LT会 お疲れ様でした。そして1.0.0リリースおめでとうございます。今回は、その祝賀会で「RustからPythonを呼び出す」という話をしたので、その補足エントリです(資料は最下部に配置)。 rust-cpythonの使い方RustからPythonを呼び出すには、rust-cpython crate が使えます。使い方は、githubに書いてあるとおりですが、以下のような感じで簡単に使えます(恐らく非Windows/x64 or Windows/x86,x64なら:資料参照)(2015/5/27追記:下部追記参照) $ cargo new newapp $ cd newapp (Cargo.toml
この記事は、UEFI Advent Calendar 2014の記事です。ライトですが書けそうなので書きます。 --- Linuxの場合Linuxの場合は、/sys/firmware/efiの存在を確認する(Ubuntu 14.04で確認)。 $ ls -al /sys/firmware/efi total 0 drwxr-xr-x 4 root root 0 Dec 2 23:54 . drwxr-xr-x 5 root root 0 Dec 2 23:54 .. drwxr-xr-x 2 root root 0 Dec 2 23:54 efivars -r-------- 1 root root 4096 Dec 2 23:54 systab drwxr-xr-x 27 root root 0 Dec 2 23:55 vars Macの場合は違うことがあるようだが、未検証。詳しくはAr
この記事は、VyOS Advent Calendar 2014の記事です。 --- VyOSは、ネットワーク機器のように利用できるLinux distribution。Ciscoルータのようにコマンドで設定し、コンフィグを保持して動作する(JunOSと似ているといわれているが、使ったことがないのでわからない)。Brocadeに買収され、公開されなくなってしまったVyattaをコミュニティで保守している。 このVyOSは、アップグレード等がしやすいように、ディスクにインストールする際も、イメージでインストール(install image)することが推奨されている。install imageでインストールすると、通常の/とswapがあって、必要に応じて/usrや/homeが切れらてて、といったようなパーティションの分割はされず、CDブートするような形になっている。そのため、構造がわからなかった
{ topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } これは、Vue.js Advent Calendar 2014の記事です。 --- Webサイトのトップページだとかに、ブログの最新記事一覧へのリンクを表示することがある。今回はGoogleのブログサービスである「Blogger」で記事を書いていた場合に、その一覧を、データバインディングを行うJavaScriptライブラリであるVue.jsを使って表示する方法を説明する。 サンプル実際のコードを見るほうが簡単なので、このブログを表示する例を出すと、以下の通りとなる。 動作例:http://jsfiddle.net/zvrakxuv/ 短く書けるのがわかると思う。 解説さて、以下で解説していく。 BloggerのAPIからのJSONの取得まず
Lubuntu (LXDE) でのマルチディスプレイ設定画面を探したのだけど見つからなかったので、やりかたを書いておく。XubuntuやGNOMEだと画面があるのだけど。 そのセッション限定でマルチディスプレイ設定を行う LXDEに限った話ではないが、xrandrコマンドを使うとマルチディスプレイの設定ができるので、このコマンドで設定できる。 まず、xrandr -qでモニタの一覧を出す。 $ xrandr -q Screen 0: minimum 64 x 64, current 3840 x 1080, maximum 16384 x 16384 VBOX0 connected 1920x1080+0+0 0mm x 0mm 1920x1080 60.0*+ 1440x1050 60.0 1280x960 60.0 1024x768 60.0 800x600 60.0 640x480
これはGIMPでスクリプトを使おう!と思ったものの久々のScheme (Script-Fu)にめげて「GIMPってPythonも普通に使えるんじゃね?」ってことで試してみたら罠もあったけどいい感じだったよって記事である。Linuxではもちろん、Windowsでもインストーラから入れればPythonが同梱されているので、気軽に使える。 もちろんGIMPを普段から使うのであれば、マクロ的に使ってもいいと思うのだけど、GIMPを使ってなくても「UIの必要な画像処理」には便利だと思う。画像の表示、範囲選択とか、そういうのが本筋じゃないプログラムにさらっと提供できる。たとえば、自前のOpenCVを使った画像処理ライブラリのフロントエンドとかね。 枝葉の処理が多いのでこのスクリプト自体は解説しないが、自分が作ろうと思って作ったもの(後述)はこちら: PythonでのGIMPのスクリプトの書き方 基本的
UI Automation PowerShell Extensionは、.NET Frameworkに付属するUI オートメーションライブラリのPowerShellラッパーで、UI自動操作(UIオートメーション)をPowerShellで記述できる。これにより、GUIしかないアプリの定型作業をスクリプト化したり、UIテストを行ったりすることができる。だいぶ前に書こうと思ったのだけど、思い出したのでようやく書くことにした。 例まずは例として、Windowsに付属する「電卓」を使って1 + 2を計算してみるスクリプトを書くと以下のようになる。 $process = Start-Process calc -PassThru $window = Get-UiaWindow -ProcessId $process.Id $window | Get-UiaButton -Name '1' | Invok
前回ようやく仮想マシン(VM)達を移設するためのPCの準備ができたのだけど、移設する元のPCには、内部のみのネットワーク(VirtualBoxで言うところのHost-Only Network)があり、そこにいくつかVMがぶら下がっているので、これらも移行しないといけない。 一気に移せば何の問題もないのだけど、徐々に移そうとすると、内部のみのネットワークなので、旧ハイパーバイザに残ったVMと新ハイパーバイザに移し終わったVMで通信ができなくなってしまう。 どうしたらいけるかなと考えた結果、「イーサネットフレームを中継するVMを用意すればよくね?」ということで、それを可能にするL2TPv3と、L2TPv3を簡単に使えそうなVyOS (Vyattaのfork)を使って試してみた。 今回の話を図にすると、以下のとおり。 環境 / 利用ソフトウェア 仮想マシンハイパーバイザ 2台。 VyOS v1.
自分用にLinux KVM (Kernel-based Virtual Machine) で検証用他の仮想マシン達を立てている。その仮想マシンの管理に、今まではvirshコマンドと仮想マシンマネージャー (virt-manager)を使っていたが、各VMの画面が見たいとなると、VNCでXにログインして... という感じで煩わしかった。そこで、ハイパーバイザとなるPCのリプレースを契機に、Web管理ツールのWebVirtMgrを使って、Webブラウザから管理できるようにしてみた。 こんな感じの画面がWebブラウザから使えるようになる。 環境/前提Ubuntu 14.04 Server libvirtでKVMの仮想マシンを起動できる状態 (BIOS設定他+apt-get install qemu-kvm libvirt-bin的な状態) Web側の設定 WebVirtMgrはPython +
PowerShellコマンドレットをC#で作ること自体は簡単で、単にSystem.Management.Automationアセンブリを参照してCmdletかPSCmdletクラスを継承したクラスを含むクラスライブラリを作るだけなのだけど(このへんを参照→How to Write a Simple Cmdlet) うっかりasync/awaitしたあとにWriteObjectでオブジェクトを出力しようとしたりすると、以下のように怒られてしまう。 Get-SampleCmdlet : WriteObject メソッドと WriteError メソッドは、BeginProcessingメソッド、ProcessRecord メソッド、および EndProcessing メソッドの上書きの外側から呼び出すことはできず、同じスレッド内からだけ呼び出すことができます。コマンドレットで呼び出しが正しく作
作ったデバイスにAndroidからつないでみようと思ってやってみた。まっとうに使ってもらおうとすると、他にもけっこういろいろ必要なのだけど、自分で使うくらいならわりと簡単にできる。 やりかた BluetoothAdapter.getDefaultAdapter()を使って、アダプタを得る。 アダプタにisEnabled()を呼び出して、Bluetooth設定が有効なことを確認する。 インテントを出してユーザーに有効にしてもらうことも可能だけど、ここではしない。 アダプタにgetBondedDevices()を呼び出して、ペアリングされたデバイスの一覧を得る。 探索してペアリングされたデバイス以外から探すことも可能だけど、ここではしない。 デバイスのプロパティを見て、欲しいデバイスを探し出す。 本当はUI出して選んでもらうのがいいと思うけど、ここではしない。 欲しいデバイスにcreateRf
結論から言うと、MSBuild Community TasksのAssemblyInfoタスクを使えばできる。 おすすめじゃない方法おすすめじゃないけど簡単な方法として、既存のAssemblyInfo.csを置き変えてしまう方法がある。 Community Tasksの.targetsをImportしたあと、以下の感じのターゲットを作れば、既存のAssemblyInfo.csを置き変えることができる。 しかし、この方法ではプロジェクトが複数あった場合に、プロジェクト別に値を設定することができない。 これを作ったあと、Community Tasks的におすすめな方法があることがわかった(雛形がある)。 おすすめの方法ざっくり言うと、GlobalAssemblyInfo.csを作り、それを参照する。 1. GlobalAssemblyInfo生成ターゲットを作るCommunity Tasksを
どうも都合のよいことにGollumのpull requestにGraphviz対応があり、変更すべきところがまるわかりだったので、真似してblockdiagに対応した。 こんな感じでblockdiagが書ける。 <blockdiag> { A -> B; } </blockdiag> MediaWiki extensionと異なり、seqdiag/actdiag/nwdiagを使うときは専用のものを使う。 <seqdiag> { A -> B; } </seqdiag> 出力サンプルはこんな感じ。
このあたりを参考にしたら、思ったよりも圧倒的に簡単にできたので、思わず記事にする。ArduinoとUSBホストシールドにBluetoothドングルを使うと、SPP (Serial Port Profile)を使って簡単にLEDチカチカできちゃう。 1. 機器を準備する 必要なものは、ArduinoとUSBホストシールド2.0とBluetoothドングル。今回は、以下を使った。 Arduino Uno (3千円くらい) USB ホストシールド 2.0 (3千円くらい) → このために買ったんだけど2年くらい眠ってた BT-MicroEDR (当時2千円くらい) 最後のBluetoothドングルはもう売ってないと思うけど、似たようなやつが千円くらいで買えると思う。だいたい使えそうな気がするけど、Linuxで使える報告があがってるやつとかが無難なのかな? USBホストシールドは2.0なものを選
ポイント(=罠)がいくつかあるのでまとめた。 Snapshotの一覧を得るGet-VMSnapshot -VMName [machineName] 唯一なにも考えなくてもいいのがこれ。 Snapshotを作成するCheckpoint-VM -Name [machineName] -SnapshotName [snapshotName] Checkpointを見つけるのは無理ゲーすぎる。しかもここはマシン名が-Nameなので注意。このverbいらなくない? Snapshotに戻す (ロールバックする) Restore-VMSnapshot -VMName [machineName] -Name (SnapshotName) -Confirm:$true 確認されたくないときは-Confirm:$falseをつける。 Snapshotを削除するRemove-VMSnapshot -VMName
.NET Frameworkには「SOS デバッガー拡張」という機能があり、デバッガからCLRの状態を追いかけることができる。これを使うと、重いVisual Studioを使わなくても、WinDbgで.NET Frameworkのアプリケーションをデバッグすることができる。今回は、.NETアプリが異常終了したときにその状態を調べるという方法について。 この役に立たないダイアログも、価値のあるものになるはず。 設定編1. WinDbgをインストールする今回はWinDbgを使うことにするので、WinDbgをインストールする。WinDbgをインストールするには「Windows 用デバッグ ツールのダウンロードとインストール」にある通り、WDKあるいはWindows SDKをインストールすればついてくる。途中でコンポーネント選択の画面があるので、デバッガのみ選べば、他のコンポーネントをインストール
次のページ
このページを最初にブックマークしてみませんか?
『d.sunnyone.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く