サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
espresso3389.hatenablog.com
※2016-12-28 製品名が違うという致命的な問題wを指摘されましたので修正しました。 Google Wi-Fi -> Google Wifi 今更、Wi-Fi ルーターなんて買ってどうするんだよ?って人もいるかもしれませんが、この秋ぐらいから発表されている Wi-Fi ルーターには、複数台のWi-Fi AP間で協調して動作する、いわゆるメッシュネットワーク機能などと言われる機能が搭載されているモノが多くなってきています。 従来の中継器を利用して電波の届く範囲を広げるものと比べると、電波の範囲を協調的に調整できることや、Wi-Fi を利用しているデバイスが、複数AP間をまたがって移動しても接続を維持できる(逆に従来の仕組みでは一度、ネットワークが切断されていたので、動画などを再生しながら移動すると途中で切れていた)などの特徴が有るのです。 まぁ、複数AP間をまたがって移動しても接続が切
はじめに これは Visual Studio Code Advent Calendar 2016の9日目の記事です。 VSCode について何か書こうと、自分に使命を課すように、アドベントカレンダーに登録したものの、実際には何について書こうと悩んだあげく、ヌルい内容になってるかもしれませんが(だって、今 12/8 22:00なんだもん、さすがに何か書かないと!)、温かい目で読んで頂けるとありがたいです。 VSCode のコマンドライン VSCode をインストールすると、 code というコマンドがインストールされ、さらに既定ではパスも通されることは、インストーラを見ていれば分かると思いますが、 code コマンドをどこまで使いこなしているでしょうか? code コマンド Windows だと、 C:\Program Files (x86)\Microsoft VS Code\bin には
GUIのコードを書いていると、時間のかかる処理をやりたくなることは多々あると思うんですが、それを普通に実行しちゃうとGUIが固まりますよね。 で、C#には、Taskという比較的簡単に使える道具がありまして、例えば、適当なスレッドで実行して、その結果だけを非同期で待つって感じのコードなら、 var result = await Task.Run(() => SomeHeavyCalculation()); という感じで、長時間ブロックしちゃう SomeHeavyCalculation なんて処理も簡単にバックグラウンドで実行出来ちゃいます。まぁ、単発の処理ならこれでほとんど解決。何にも問題なし。 ところが、次のような何らかのオブジェクトに対して処理を行う場合にはいろいろと注意が必要になります。 SomeSharedObject obj; async Task ProcessAsync() {
別に特に重要なことを書くわけでもありませんが、一応。 /etc/hosts の調整 いろんなコマンドをたたく度に、例えば、 sudo のケースですが、 sudo: unable to resolve host KOFFIEみたいな警告が出てきます(KOFFIEは私のマシンの名前)。これは別に実害はないんですが、鬱陶しいので、 /etc/hosts の最初の行に、ホスト名を書き足せばいいです。具体的には、こんな感じ: 127.0.0.1 localhost koffie # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2
Visual Studio 2015 Update 1 のリリースノート関連を見ていたら、 Coroutine が動くぜ!っていう記事があったので試してみました。 blogs.msdn.com コルーチンっていうのは、まぁ、C#でいう yield return で、C++でも yield っていうそのまんまの名前なんですが、rubyとかだとgeneratorって呼ばれている奴ですね。 乱数のジェネレーターを作ってみる とりあえず、コードを書いてみます。今回は、無限に乱数を発生し続けるというだけのジェネレータを作ってみました。 #include <cstdio> #include <random> #include <experimental/generator> auto random() { std::mt19937 r; for (;;) yield r(); } int main()
GetWindowPlacement では、ウィンドウが通常の状態でのウィンドウ座標と、実際にウィンドウが、最大化されている(SW_MAXIMIZE)のか、最小化されている(SW_MINIMIZE)のか、あるいは、通常の状態(SW_SHOWNORMAL)なのかが取得できます。従って、普通なら、この関数を呼び出せば、特に何の問題もなく、ウィンドウの状態を取得することが出来ます。 ところが、 Windows 8 で導入された Aero-Snap ([Win] + 矢印キー)では、この関数では関知できない状態になります。 具体的には、ウィンドウの状態が、通常の状態(SW_SHOWNORMAL)であると報告されます。これだと、アプリは自分の状況を正しく認識できません。 なので、 Aero-Snap 状態であることを知るためにはもうちょっと小細工をする必要があります。答えをそのまま書くと、 SW_S
長年、C/C++プログラマをやってましたが、最近は、完全にC#にぞっこん状態です。というか、C++を捨ててC#一本で行っても良いと思えるぐらいC#が好きになりました。ここでは、その理由を自分の偏見に満ちあふれた文章で説明していこうと思います。ねつ造などはないですが、未来の話(つまりまだ起きていない出来事)を書いてある部分も多く、その信憑性は「あるある大事典」なみかもしれませんので、むやみに信用するのは止めてください。 C++の難解さ 元来、C言語のプログラマというのは、オブジェクト指向言語や、関数型言語への憧れを抱きながらも、現実的な解を求めてC言語という言語を使ってきたのだと思います。そのオブジェクト指向言語への憧れが、C++という全く純ではない、ある意味では、泥臭い、オブジェクト指向風味の言語を創ったといってもおかしくないかもしれません。そして、C++という言語は、その進化で、temp
※2015/5/19 訂正 当初、v15.1.2となっていましたが、どうやらv15.1.1で発生した問題であることが判明しました。 エムソフトの江村様からも丁寧な説明のメールを頂きましたこともここに併記させて頂きます。 今後、この記事を閲覧される方がいらっしゃる場合に混乱を招くと困りますので、記事のタイトルを修正させて頂きます。混乱を招く記事になっていたことをお詫びいたします。 EmEditor (64-bit) 15.1.2 15.1.1 (※2015/5/19 訂正) をインストールしたらシステムのPATH環境変数を綺麗さっぱり消されました。 robocopy とか実行しようとしたら、そんなコマンドないよなんて言われやがるので、なんで??っていう感じになって、システムの環境変数を見てみたら、 うわぁー、どう考えても、犯人は、 EmEditor じゃないですか・・・。 システムの復元を試
「C#を使う最大のメリットって、やっぱり、Visual Studioですよね!」って自信を持って言いたいですね。 という心境ではあるんですが、私の仕事はどっちかというとC++よりなので、どうしても、DllImportはお友達という側面があります。そうすると、プログラム実行時に、 AnyCPUなアセンブリ.exe ネイティブC++.dllみたいな感じになって、要は、AnyCPUなアセンブリがネイティブC++ちゃんを呼び出す構図になるんですが、この構成、64-bitの環境で開発をしていたりすると相当なジレンマを抱えることになります。 普通に実行する場合には、x64環境なので、「ネイティブC++.dll」さんは、64-bit版を配置しておくべきなんですが、VS上からデバッグしようとすると、win32(32-bit版)を置いておかないと行けなかったり、あるいは、「ネイティブC++.dll」さんのデ
ebayにて、最近、 ThinkPad New x1 Carbon Touchpad Clickpad with Left and Right Three Keys | eBay ThinkPad T440P T440S T440 T450S Touchpad Clickpad with Left and Right Three Keys | eBay などというものが出品されていました。これ、どちらも同じ値段で全く同じものなのですが、要は、2014年モデルのThinkPadのタッチパッドと、2015年モデルのThinkPadの物理ボタン付きタッチパッドは互換性があるようなのです。 ということで、ヒトバシラーたるべく、購入して、手元のX1 Carbon (2014)のタッチパッドを換装してみました。 結果、うまくいきました。という訳で、詳しく説明します。 タッチパッドの換装 X1 Carb
※2016/08/31追記:今更ながら、AOT関係ないじゃんっていうツッコミもらったので、AOTっていうのを消しておきます。正しくは、単に、リンカのstrip処理ですね・・・。 突然ですが、 SIN@SAPPOROWORKS の記事を引用します: みたいなコードを見て、 Xamarin.Forms 簡単だ!的な感じでコーディング始めよう・・・ってしてみたら、 iOS で System.MissingMethodException: Default constructor not found for type ...みたいな例外を食らうことがあります。 これ、Xamarin.iOS でいうところの、 AOT で有るが故の制限なんですが、用は、コンストラクタが見つからないよって言われています。 そんなこと言っても、ちゃんと public で引数なしのコンストラクタは用意しているし、なんで見つか
全然まとまっていません。 自分用の作業履歴的な状態です。 一言で言うと、この大きさでメモリ1GB、x86 Linuxが動いて、Wi-Fi, Bluetoothも使える。 gcc/g++も動くよんという。遅いけど、いろんな物をセルフビルドも出来る。 最初の起動 8 J16 をUSBで接続 Edisonに給電する。J21とか、J2でも給電できるが、今回は、マスストレージでマウントしたいので、いずれにしてもJ16を接続する。 8 J3 をUSBで接続する Windows 8.1だと、シリアルのドライバは自動インストールされる。 Edison に接続 putty とか、 poderosa とか、あるいは、 TeraTerm などお好きな物でどうぞ。 COMポートとかあんまり使ってないマシンの場合は、COM3になってることが多いようです。(デバイスマネージャで、 USB Serial Port とい
Xperia Z2 Tablet の圧倒的な軽さ・薄さ 気軽さでいうと、この軽さ・薄さはヤバイ。500g以上のものが持てない体になってしまう。 さらに、防水だし、そもそも、薄すぎて軽いので、華奢な感じが逆にない。実際の所、数十センチ程度の高さから落としても、軽さとフラットさが功を奏して、割れる感じじゃない。オムニバランスデザイン?とやらのおかげで、角から落ちず、面で落ちるので、空気の層に守られて、大きな音を立てて落ち、何ともない(数回程度、落とした)。 よーくみると、充電端子を中心に、全体がV字に反っているのだが、まぁ、これも薄すぎる性だと思った方が良いと思う。 Surface Pro 3に関しては、多分、落としたら即死でしょうね。あと、フローリングとかだと、フローリング側にもダメージが有ると思われます。これは落としちゃいけない。 ソフトウェアの充実度合い 昔から比べて、Android自体
Twitterで PHPで、いわゆる安全な秘密鍵を生成する方法っていうのがネットにほとんど記述されてないという事実に愕然としている。みんな、暗号乱数ぐらい勉強してくれ・・・。— Takashi Kawasaki (@espresso3389) April 12, 2014 なんて発言をしたら結構反響があったので、責任を取って、これならまぁ許せるというサンプルを出しておく。エントロピーの無駄遣いなどというぐらいの理解がある人は自分で実装してください。マジ実装すると結構面倒なので諦めました。 コピペするならここからどうぞ <?php // パスワードに使っても良い文字集合 $password_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $password_chars_count = strl
OwinHost.exe - Katana C#+Owinのコード書きたい。でも、IISじゃなくてLinuxでホストしたいよっていうヒネクレな状況で、とりあえず、Katanaが動かないと話にならないので、Katanaを動かしてみたっていうのが趣旨です。 Mono 3.X とりあえず、新しいバージョンのMonoじゃないとOwinHostが動かないと思うんだけど、Ubuntu 12.04.3には、mono 2.Xのmonoしか入ってない。というか、gmcsな時点でアウト。 apt-cacheでパッケージを確認した感じではやっぱり、C# 3.0までしか対応してない。悲しい。 espresso3389@nu:~/katana$ apt-cache show mono-gmcs Package: mono-gmcs Priority: optional Section: cli-mono Insta
数日使ってみた感想を書いておくと、 ThinkPadとして期待していた物とは微妙に違う気がする 新しいトラックパッドは慣れが必要(物理ボタンとの連携など) という部分はある物の、全体として、かなり良くまとまった製品であると思います。液晶の品質が今までのThinkPadからするとずば抜けている事、バッテリーの持ちが驚異的であること、にも関わらず従来のTシリーズの重量から大きく変わらないばかりか、リアバッテリーを抜くという運用をすれば、X1 Carbonにも近い軽さまで到達できるなど、なかなかおもしろい機種だなぁと思います。 X1 Carbonの方がピーチスキンで質感が良いとか、薄くてカッコいいとかいろいろありますけど、一方で、メモリが8GBしかない、SSDが256GBしかない、そして、USB3.0が1ポートだけとか、薄すぎる性で受ける制約も少なからずありました。それからすると、T440sは、
C#でコードが書きたいという一心で、Xamarin iOSを使おうと考えているんですが、基本的に僕の各コードは、C/C++で基本的なAPIセットを用意して、それのラッパーをC#で書き、さらにそのラッパーを呼び出すコードをC#で書く or 書いて貰うという感じになります。 で、C#の何が便利って、例えば、C/C++側で、 typedef int (*MyCallback)(); int MyFunction(MyCallback callback); なんていうやる気のないコールバックが用意されていて、普通にC++やっていると、これじゃコンテキストわたせねぇというような場合でも、 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate int MyCallbackDelegate(); [DllImport("MyDll.dl
ThinkPad X1 Carbonがやっと届きました。発売開始に合わせてすぐに注文したにもかかわらず、1ヶ月以上も待たされるという状況でしたが、届いたものを触ってみて一ヶ月待った価値はあるなと思っています。 さて、レビューをしようとは思っていましたが、さすがに発売開始から一ヶ月も経っていることから、様々なレビューが既に出てます。今更同じようなレビューをしても仕方がないので、他で記述されてないことを主体にレビューしたいと思います。 付属品 パッケージの中はすごくシンプルで、基本的には、本体とACアダプタしか入っていません。それ以外と言えば、PCリサイクルマークの申請書類ぐらいです(ただし、ネットで申し込んだ方が楽)。 Windows 8 パッケージを開けて最初にやることはリカバリーディスクの作成ですが、僕の場合、その次の作業は、Windows 8のインストールでした。ドライバ類は、ベータ版
ThinkPad X1 Carbonを入手しようと虎視眈々と狙っているわけですが、いろいろとわからないことが多くあり、調べたのでまとめておきます。 Core-i7 + Mem8GBの組み合わせは現状では存在しない 8GBが必要であれば、Core-i5で妥協するしかなさそう。個人的にはこれは問題なし。というか、ノートPCでCore-i7の必要性を感じない。クロック周波数以外の差は少ないし。 メモリの増設は不可能 基盤にはんだ付けされているので、メモリを換装するのは素人には少なくとも無理。最初に購入したメモリ量から増やすことはできません。したがって、お金に余裕があるなら、8GBモデルを買うのが得策でしょう。 SSD 下にある保守トレーニング向けのFlashで、Solid State Driveの取り外しの動画とかを見ると、SSDが、SanDisk SD5SG2-256G-1052Eであることが
仕事で台湾に行く事があったので、試しに、台北松山空港内にあった中華電信のデータ通信専用SIMを購入してみました。 価格は、3日のプランで、250TW$。契約にはパスポートと現地の現金250TW$だけで十分。さすがにこの値段なので、クレジットカードはダメでした。ちなみに、僕は英語でコミュニケーションしましたが、カウンターには、日本語も書かれた価格表があるので、それを指差せば、ほとんど何もしゃべらなくても購入は出来ると思います。 今のレートで言うと、663円程度。10倍しても、6,630円程度なので、イメージ的には、国内でドコモの携帯でデータ通信を使いまくるのと金額的には変わらないぐらいです。 設定 イーモバイルのGL01PのSIMを入れ替えて(GL01PはSIMロックフリー)、APNをinternetにするだけ。 PCを取り出すのが面倒だったので、IS12S(Xperia acro HD)で
ThinkPad T400sには、eSATA+USBコンボポートという、一見、見慣れないポートが搭載されています。このポート、Lenovoでは、eSATA・USBコンボと書かれていますが、別名、eSATApポート(pはパワーか?)というようです。そして、さらに、12V給電を追加したものは、eSATAp+みたい。ただ、いずれにしても正式名称は今のところ不明です。 このポートは、簡単に言えば、USBポートにも、eSATAポートにもなるというものなんですが、さらに、eSATA利用時に、対応ケーブルを使うと、USB側から、5Vの給電も行えるというアイデアもののポートです。しかしながら、いろいろとググってみたんですが、実際に使ってみたという例を見つけることは出来ませんでした。と言うことで人柱レポートです。 ケーブル売ってくれ とはいうものの、このポートに対応したケーブルがほとんど売っていません。とい
最近は、いろいろあって、Android NDKを使いまくっている分けなんですが、Windows 用のAndroid NDK, Revision 6bに含まれている gcc がどんな設定なのか調べてみました。 gcc の場所 普段は、ndk-buildだけを叩けば良いので、あんまりどこにgccが存在するかなんて意識しなくていいんですが、ndk-buildに頼るんじゃなくて、いろいろ自分でやりたいとなると、gccのパスを調べないと行けなくなります。NDK r6bでは、 [android-ndk-r6b]\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\binに「実体」があります。実体がというのは、こいつらは、ファイル名が、 arm-linux-androideabi- というプリフィックスを持っていて、通常利用には耐えない名前にな
Windows Vista/2008からは、File IDによるファイル処理が標準で実装されている。これは、NTFSとかでGetFileInformationByHandleを使って取得できるBY_HANDLE_FILE_INFORMATION::nFileIndex*と同じもの。ファイルIDがわかっていれば、IDとドライブ識別のためのハンドルだけでファイルが開けるし、当然、ファイルIDからファイル名が取得できる。 そして、このAPIは、Windows XP/2003でも、Win32 FileID API Libraryでダウンロードできるfileextd.libをリンクすれば利用できる。 なので、このAPIはXP以降のOSならば使えると考えてよい。以下は、適当に書いたサンプル。コマンドラインの第1引数に与えられたファイルをCreateFileで開いた後に、ハンドルから元のファイル名を復元
Windows Imaging Component (WIC)は、.NET Framework 3.0でも利用されている画像処理のフレームワークで、Vistaでは標準インストールされており、Windows フォトギャラリーなどでも利用されているほか、Windows XPでも、.NET Framework 3.5をインストールしたり、または、WICを直接インストールしたり、あるいは、Windows Live フォトギャラリーをインストールしたりすることによって利用できるようになる。 また、Windows Imaging Componentは、サードパーティによって拡張可能なように設計されており、実際、カメラメーカーからは、RAW画像用のコーデックが公開されていたりもするため、今後、画像処理のコードを書くに当たっては、是非とも利用を検討したいフレームワークだ。 C++からだと、GDI+を使って
最近は、UQ WiMAXのエリアも非常に広くなり、僕が出向く先ではイーモバイルにお世話になることも少なくなってきたのですが、UQ WiMAX、イーモバイルに限らず、iPhoneで同じネットワーク接続を利用できたらと思うことは少なくありません。 こういう場合は、Connectifyを使うと簡単ではあるんですが、実は、Windows 7だけでも同じ事がほぼ達成できます。 とはいえ、手元のThinkPad T400sに搭載されているIntel WiMAX Link 5150は、WiMAXとWiFiが排他使用になっており、デバイスとしては二つのデバイスに見えるのですが、UQ WiMAXに接続しているとワイヤレス側が使えません。 なので、別のワイヤレスデバイスを追加する必要があります。そこで、プラネックスのGW-USMicroN2Wを買ってみました。 手前の奴がGW-USMicroN2Wです。世界最
64-bitなWindowsを使っていると悲しくなるのが、特定のプログラムが、作者の不注意によって64-bitで動かなくなっていることが良くあること。 .NETのアプリだとありがちなのが、本体は、Pure .NETで作られていて、ライブラリとして、32-bitのDLLを利用しているというパターン。この場合、作者が64-bitマシンでの動作を確認していないと、単純にAnyCPUでビルドされているということが多い。 実行時に、32-bitのDLLをロードしようとしたときに、アプリがすでに64-bitで動いているため、互換性を維持できずに、BadImageFormatExceptionを送出してアプリが死んでしまう。 まぁ、作者に報告して、x86を明示的に指定してビルドし直してもらえれば良いけど、それには時間もかかるし、面倒だ。 CorFlags こんなときに便利なのが、CorFlags.exe
古いバージョンからアップグレードするとこういうことが起こるというのは昔からあったので、一度、完全にアンインストールして、もう一度インストールしたが効果なし。 いろいろとネットを探してみたところ、 Why don't the icon overlays appear? にチェックすべきこと一覧が書いてある。適当に翻訳しておくと、 当然、リブートしたよね? いつも使っているユーザーと別のユーザーでインストールした? Win95/98/SE/NTとかにインストールしてない? 一部のアイコンオーバーレイが表示されないのでは? 正直、どれにも該当しない。強いていえば、一部(some)というのが全部というシチュエーションはあるのではないのかと思い、そのリンクをみてみる。 The overlay icons appear, but not all of them! 超約すると、Windowsのアイコンオ
しばらくの間、Thunderbird(というか、Shredder)でGmail IMAPを使っていると、 Some messages could not be FETCHed (Failure)というエラーが出るようになっていたんですが、いい加減、うざったくなってきたので、解決方法を探ってみました。 とりあえず、ググってみたんですが、解決方法がまとまっているところは無いようなので、まとめておきます。 Thunderbirdのプロトコルログを取る 最初に、そもそも、Thunderbirdがどのメッセージでつまずいているのかを知る必要があります。これには、Thunderbirdにプロトコルログを吐いてもらう必要があります。まとまっているところとしては、 MailNews:Logging があります。要は環境変数を設定してから起動しろと。バッチファイルを書いてねとありますが、コマンドプロンプトか
RCを使って10日程度。Windows Vistaの焼き直しに過ぎないと思います。スピードも特に速くなっているとは思えません。少なくとも、Core i7 12GBとかいう環境では。 良いところ でも、もう、Vistaには戻れないんだな。これが。 個人的に、この機能があるからWindows 7を使いたいと思える機能群は、 拡大鏡 この滑らかさは癖になる。未だかつて使ったどんな拡大鏡ツールよりも滑らかでかつ実用的。Windows VistaでDWMを導入した甲斐があるって言うものだ。 あとは、おもしろいのは、拡大鏡で拡大している状態で、[Print Screen]を押した場合の挙動。なんと、拡大された状態のスクリーンがキャプチャできる。 で、後は、なぜか、ウィンドウのキャプションというか、タイトルバーだけは、他の部分と拡大方法が違うんだな。Windows Media Centerとか、XPS
次のページ
このページを最初にブックマークしてみませんか?
『espresso3389の日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く