FC2ブログにCのソースコードを貼り付けてみる実験

他の方々の書かれているブログを見ていると、プログラムのソースコードをきれいに埋め込んであるのをよく見かけます。当ブログでも何度か短いコードを乗せたことはありますが、先頭の半角スペースを全角に変えたりなどいろいろと面倒くさいうえ、そうしてしまったがためにそのまま載せたコードをコピペするだけでは使えないなどの問題があり、何とかならないものかなあと思っていました。

そこで色々調べていて見つけたのが”<pre>”というタグです。”<pre>”と”</pre>”の間に挟まれた部分については半角スペースがそのまま出力され、しかも等幅フォントで表示されるとのことだったので、試してみました。今回は、以下の書式で使用しました。
pre style="color: #ffffff; background-color: #000000; overflow: auto; white-space: pre-wrap; word-wrap: break-word;">
</pre

その結果がこちら…。(コード自体はAVRで68系パラレルバスから読み込みを行うための関数で、大したことはしていません。)

uint8_t p68_readbyte( void )
{
// 1バイト分のデータを読み込む(データバスDDRは入力に切り替わる)
uint8_t data;
uint8_t sr;
uint8_t es = P68_E0_PIN;
#if P68_CSNUM
uint8_t cs = P68_CS0_PIN;
#endif

sr = SREG;
cli();

#if P68_ENUM == 2
if( p68_cs ) {
es = P68_E1_PIN;
}
#endif
#if P68_CSNUM == 2
if( p68_cs ) {
cs = P68_CS1_PIN;
}
#endif

#if P68_CSNUM
_p68_setctl_0( cs );
#endif
P68_DATADDR &= ~_p68_DATABIT; // データバスを入力に設定
_p68_setctl_1( P68_RW_PIN );
_delay_us( P68_TASE );
_p68_setctl_1( es );
_delay_us( P68_TDDRE );
data = _p68_indata();
_delay_us( P68_PWEH - P68_TDDRE );
_p68_setctl_0( es );
#if P68_CSNUM
_p68_setctl_1( cs );
#endif

if( sr & ( 1 << SREG_I ) ) {
sei();
}
return data;
}


FC2の場合はなぜかご覧のとおりプロポーショナルフォントで表示されてしまっていますが(汗)、Cのソース程度であればこんな感じでそこそこきれいに仕上がります。しかし、残念ながらHTMLタグはそのまま実行されてしまうので、HTMLタグを含むようなコードは貼り付けられません。また、ブラウザによっては不等号が特殊文字扱いになってしまうため文字化けのリスクもあります。

そこで次に試したのがGitHubの提供しているgistというサービス。これはさすがに専用のサービスだけあって、この通りかなり見やすく表示されます。(こちらはシフトJISコードをJISコードに変換する関数です。)


こちらは利用するのにGitHubに登録する必要があります(無料で登録できます)が、一旦gistにコードをアップロードしてしまえば、このようにwebサイトに埋め込んだり、他人と共有したりといったことが簡単にできるようになります。アカウント登録後の操作手順はとても簡単です。まず、右上のメニューから”Your gists”を選択します。
gist_1.jpg

入力画面が開くので、左上のボックスにファイル名、その下のテキストエリアにコードを入力あるいは貼り付けます。すべて入力が終わったら、右下の”Create public gist”をクリックします。
gist_2.jpg

これでコードが公開された状態になりました。右上の”Embed”ボックスに表示されているコードをブログに貼り付ければ完成です。
gist_3.jpg

今後、当ブログでも短いコードを載せたいときなど、gistを利用していこうと思います。
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

tag : preHTMLタグgistGtiHubソースコード

Windows 10のモバイルホットスポットを試してみました

職場でiPod Touchなどをインターネットに接続するために使用していたLogitecのUSB WiFiドングルLAN-W150N/U2BKですが、Windows 10にアップグレードしてからはまったくアクセスポイント(親機)モードが利用できなくなってしまっていました。古い製品ですし、メーカーもサポートしていないので仕方がありませんが…。

しばらくの間はあきらめていたのですが、WindowsにはICS(インターネット接続共有)という機能があります。Windows 10ではこれが非常に簡単に設定できるということに気づいたいので、試してみることにしました。LAN-W150N/U2BKをPCに接続し、「ネットワーク設定」から「モバイルホットスポット」を開きます。「イーサネット」を共有対象として選択し、SSIDとパスワードを設定、モバイルホットスポットをONにすると準備完了です。
W10ICS_01.png

しかし、私の環境ではこのままではうまく通信ができませんでした。Nortonのファイヤーウォールが悪さをしているのかと思って切ってみると通信ができるようになります。
W10ICS_02.png

そこで、例外設定を行うことにしました。まずはコマンドプロンプトで、ipconfig /all を実行し、“Microsoft Wi-Fi Direct Virtual Adapter”のIPアドレスを確認します。
W10ICS_03.png

次に、Nortonのファイヤーウォールの設定から、「トラフィックルール」を開きます。
W10ICS_04.png

「追加」をクリック。(画像は参考のため載せていますが、実際には設定済みの状態です)
W10ICS_05.png

処理は「許可」に。
W10ICS_06.png

接続は「インバウンドとアウトバウンド」を選択。
W10ICS_07.png

画像のようにWiFi側のサブネットのIPアドレス範囲を指定します。今回はWiFiアダプタ側のIPアドレスが192.168.137.1、サブネットマスクが255.255.255.0だったので、IPアドレス範囲はこのように192.168.137.1~192.168.137.255としました。
W10ICS_08.png

通信の種類は「すべて」に。
W10ICS_09.png

以上の操作で新しいトラフィックルールが作成されました。これを有効化することで、WiFi側に接続されているデバイスとの間では通信が遮断されることはなくなったはず。
W10ICS_11.png

これで無事接続が可能となりました。Windows 10のノートPCはさすがにトラブルはほとんどなくつながります。しかし、スマートフォンはしばしば接続に失敗したり、接続されても「インターネットなし」になってしまいます。これを避けるにはクライアント側のDHCPを無効にして固定IPで接続するといいようです。
W10ICS_10.png

ちなみにこのモバイルホットスポット、従来のICS(インターネット接続共有)との関係が今ひとつわかりません。「ネットワーク接続」を開くとこのように専用の接続が作成されています。
W10ICS_12.png

いっぽう有線LANのほうの共有状態を確認すると、このように共有のチェックは外れています。
W10ICS_13.png

しかしチェックを入れようとするとこんなダイアログが…。なにかICSの設定画面に出てこないところで共有が行われているようでよくわかりませんね…。
W10ICS_14.png

というわけで、ファイヤーウォールが入っていたりする関係でスマホのテザリングと比べると少し面倒くさいですが、一度設定してしまえばあとはON/OFFの操作のみで使用できるので便利です。Windows 7でアクセスポイントモード対応を謳っているWiFiアダプタでもWindows 10ではサポートされていないものがほとんどだと思います。お困りの方は試してみてはいかがでしょうか。

※本サイトで紹介する内容は、すべて個人的研究の範囲内で行っていることです。ここに書かれた内容を実行したことによる、データ(クラウド上を含む)・ソフトウェア・ハードウェアの障害および金銭的損害について、私が責任を負うことはできません。重要なデータはあらかじめバックアップを行い、内容を十分に理解したうえで、ご自身の責任の下で行ってください。

テーマ : Windows
ジャンル : コンピュータ

tag : MicrosoftWindows10WiFiUSBICSインターネット接続共有モバイルホットスポットLAN-W150N/U2BK

PCのUSBポート認識が頻繁に失敗するようになってしまったので…

私は職場に自作PCを持ち込んでいます。もう5年ぐらい前に自作したもので、それまで使っていたPentium 4マシンの排熱に懲りた(夏などはこのせいで汗をかくほど暑くなっていました)ためできるだけ省電力設計にしようと思い、CPUはCore i3-2100T(Sandy Bridge)、マザーボードはASUSのH67チップセット採用のMicro ATXマザー、P8H67-M EVOを選択して組みました。Windows 7→8→8.1→10とアップグレードを繰り返しており、致命的なトラブルはないものの、どのバージョンのころからかは忘れてしまいましたがUSBポートのドライバの認識に時々失敗するようになりました。
エラー

このようなときはデバイスマネージャから無効化→有効化を行うと問題なく認識されるのですが、さすがにマウスが接続されているUSBポートでこれが起きてしまうと不便で仕方がありません。そこでこの操作を自動的に行えないものか調べたところ、Windows Driver Kit(WDK)に含まれる devcon.exe というコマンドラインツールを用いればよいということがわかりました。まずはMicrosoftのサイトからWDKをダウンロード、インストールします。

インストールが完了したら、64bit Windowsの場合はProgram Files (x86)¥Windows Kits¥10¥Tools¥x64 フォルダを、32bit Windowsの場合は、Program Files¥Windows Kits¥10¥Tools¥x86 フォルダを開きます。このフォルダ内に devcon.exe があるのを確認します。
WDKフォルダ

次に、認識に失敗するデバイスのハードウェアIDを調べます。デバイスのプロパティで「ハードウェアID」を確認し、最も上のIDをメモします。
ハードウェアID

devconコマンドを用いてバッチファイルを作成します。devconコマンドでデバイスの有効化、無効化を行うのには下記のようにします。
 devcon disable "ハードウェアID" → デバイス無効化
 devcon enable "ハードウェアID" → デバイス有効化

私の場合はUSBコントローラが2つあるのでその二つを指定しました。
 cd C:\Program Files (x86)\Windows Kits\10\Tools\x64
 devcon disable "PCI\VEN_8086&DEV_1C2D&SUBSYS_844D1043&REV_05"
 devcon disable "PCI\VEN_8086&DEV_1C26&SUBSYS_844D1043&REV_05"
 devcon enable "PCI\VEN_8086&DEV_1C2D&SUBSYS_844D1043&REV_05"
 devcon enable "PCI\VEN_8086&DEV_1C26&SUBSYS_844D1043&REV_05"

次に起動時に自動的にこのバッチファイルが実行されるようにしてみました。タスクスケジューラを起動し、「基本タスクの作成」を実行します。
タスクの登録

トリガーとして「コンピュータの起動時」を指定します。
トリガー設定

操作は「プログラムの開始」を指定します。
操作設定

先ほど作成したバッチファイルを指定します。
バッチファイルを指定

設定完了。
設定完了

最後に設定したタスクのプロパティを開き、「ログオンしているかどうかにかかわらず実行」と「最上位の特権で実行」にチェックを入れます。
プロパティ設定

PCを再起動してみると、このように実行されていることが確認できました。
タスクの状態を確認

この設定を行ってからは、PC起動時にマウスやキーボードが効かなくて困るということはなくなりました。起動時にデバイスの認識に失敗する症状でお困りの方は試してみられてはいかがでしょうか。

※本サイトで紹介する内容は、すべて個人的研究の範囲内で行っていることです。ここに書かれた内容を実行したことによる、データ(クラウド上を含む)・ソフトウェア・ハードウェアの障害および金銭的損害について、私が責任を負うことはできません。重要なデータはあらかじめバックアップを行い、内容を十分に理解したうえで、ご自身の責任の下で行ってください。

テーマ : システム開発
ジャンル : コンピュータ

tag : Windows10USBdevcon認識WDKP8H67-MEVO

SSDがプチフリ起こすようになってきたので…

私は仕事用に自作のデスクトップPCを使用しています。もう5年近く前に使ったものでかなり古い構成ですが、日常業務では特に不自由なく使用してきました。現在の構成は以下のとおりです。

マザーボード:ASUS P8H67-M EVO
CPU:Core i3-2100T (Sandy Bridge)
SSD:Transcend TS512GSSD370 (512GB)

ところが、Windows 10のAnniversary Updateを当てた直後ぐらいから、時々プチフリのような現象に悩まされるようになりました。具体的には、PCの操作をしていると突然操作を受け付けなくなり、見るとHDD(SSD)のアクセスランプがつきっぱなしになっています。そして、そのまま数十秒待っているとウソのように動き始めます…。その様子をタスクマネージャで確認してみました。
プチフリの様子(タスクマネージャ)

普通はHDD(SSD)にアクセスするときは、アクティブな時間と転送速度はほぼ比例する傾向があると思うのですが、このようになぜか「アクセスしようとしているのに転送できていない」パターンを示していました。ここで思い出したのがSSD特有の「プチフリ」です。しかし、最近のSSDは十分なキャッシュメモリを積んでおり、しかもOSもSSDに最適化されてきており、プチフリは過去のものとなったはず…。

そこでいろいろ調べてみましたが、まず試みたのが「ディスクの最適化」。Windows 10における最適化は、HDDの場合は従来通りのデフラグ、SSDの場合はTRIMコマンドの発行、と動作が分けられています。この「最適化」を実行することによってSSDのアクセスが早くなる場合があるとのことで試してみました。しかし、すでに自動的に最適化が実行されるオプションが設定されており、手動で最適化を行ってみましたが、プチフリは変わりませんでした。(この画像はほかのPCのものですが、参考までに載せてみました。) また、SSD自体に読み取りエラーがあるのかとも疑いエラーチェックも行いましたが異常はなさそうでした。
ディスクの最適化

そこで、次に確認したのがシステムのイベントログ。すると、プチフリを起こしたタイミングに一致して、“storahci”がエラーを起こしているようで、“\Device\RaidPort0 にリセットが発行されました。”というイベントが記録されていました。これで検索してみたところ、SATAのドライバを更新すれば治る場合があるということがわかりました。そこで、Intelのサポートページにアクセスし、「ドライバー・アップデート・ユーティリティー」を実行してみることにしました。
イベントログ

これを実行すると、更新が必要なドライバを検索し、更新してくれます。私の場合はチップセットのINFアップデートのみがインストールされました。
ドライバーアップデートユーティリティー

インストールが完了して再起動すると、その後は嘘のようにプチフリが解消していました。プチフリに限らず、Windows 10標準ドライバでは微妙に動作が不安定な場合、ドライバのアップデートもチェックしてみてはいかがでしょうか。

テーマ : 自作パソコン
ジャンル : コンピュータ

tag : Windows10SSDプチフリstorahciドライバintel

ネットブックをWindows 10にアップグレードしてみました(後編)

昨日の記事Endeavor Na14sのメモリ、SSD換装と、Windows 10アップグレード失敗のことを書きました。本日はその続き、アップグレードが成功するまでの道のりを書きたいと思います。
まず試したのは、インストールメディアから直接起動して、Windows 7のプロダクトキーでインストールする方法です。ビルド10586からサポートされた方法です。Na14sのプロダクトキーはこのように本体底面に貼ってあるので、これを使用することにしました。
裏面のプロダクトキーシール

しかし、キーが無効といわれてしまい実際にはインストールを進めることができませんでした。OEM版Windowsの場合、このようにプロダクトキーがあっても実際にはSLP(BIOSに格納されているキーで認証する方式)であり、インストーラに入力しても無効(他で使用されていると判断してはじく)とされてしまうようです。
プロダクトキー入力画面

次に試したのは、Windows 7を電話認証に持ち込むという方法。電話認証であれば認証状態に何らかのトラブルが発生している場合でも修正してもらえる可能性があります。しかし、このPCの場合はSLPであるためか、インストール中PCをインターネットに接続しなくても勝手にライセンス認証が完了してしまいました。slmgr.vbs を用いてライセンス認証を解除(管理者としてコマンドプロンプトを開き、slmgr -rearm とする)しても、再起動すると勝手に認証されてしまい、結局ライセンス認証ウィザードを呼び出すことはできませんでした。

次に考えたのが、Anytime Upgradeの影響の可能性です。Na14sはStarterがプリインストールされていることになっていますが、私が親から受け取った時点ではHome Premiumが入っていました。Anytime Upgradeを行った可能性があり、同じキーを再度入れてHome Premiumにすればアップグレードできるのではないかと考えました。しかし、親に確認してもよく覚えていないとのこと。インストール済みのWindowsのプロダクトキーを確認するソフトを使用して得たキーを使ってWindows 10をクリーンインストールしようと思いましたが、こちらのキーも無効といわれてしまいました。仕方がないのでメインのデスクトップPCで行ったのと同じ方法(Home Premiumが入っているHDDから、新しいSSDにまるごとコピーしてからアップグレードする)を試みることにしました。まずは2.5インチHDD外付けケースを利用して旧HDDをデスクトップPCに接続します。
HDD外付けケース

EaseUS Todo Backup Freeを用いてイメージをコピーします。
バックアップ元ドライブ指定

バックアップ中。結構時間がかかります。
バックアップ中

次にSSDをPCに接続して…。
SSD接続

書き戻します。
バックアップイメージ選択

今回も、回復パーティションに無駄に大容量が割り当てられるので、適宜調整します。
パーティション編集

復元完了。24分かかりました。
復元完了

SSDをNa14sに戻すと無事にWindows 7 Home Premiumgが起動しました。以前使用していた時よりEaseUSがバージョンアップしていたのか、今回はブートセクタなどの修復を行わなくても大丈夫でした。また、起動後のライセンス認証も問題ありませんでした。しかし、この状態で再度アップグレードをかけようとしてもやはり「プロダクトキーが検証できません」となってしまいます。クリーンブートしても結果は変わらず…。
msconfig.exe

仕方がないので、ダメもとでプロダクトキー入力をスキップしてクリーンインストールしてみようと思って起動すると、なぜか途中で「ライセンス条項がみつかりません」などというエラーが…。USBメモリをいじくりまわしている間に内容が壊れてしまったようです。最後の手段として、Windows 10のダウンロードサイトから直接アップグレードを試みました。Windows Updateだといつまで経っても進まなさそうだったので…。
ダウンロード中

するとこれまでの苦労が嘘のようにインストールがすすみ…。
アップグレード中

ようやくインストールが完了しました。長い道のりだった…。
アップグレード完了

ちゃんとHomeとしてインストールされており、ライセンス認証も問題ありませんでした。
システムのプロパティ

このあと改めて作り直したUSBメモリからクリーンインストールを行いました。
これで完成!

今回はOffice以外はドライバも含めて、特に追加のソフトウェアのインストールは行いませんでした。動作としては、ホットキーの一部(音量関係、メールなど)が効かない以外は特に問題なさそうです。純正のレーザーマウス(LogitechのOEMのようです)も差すだけで自動的にドライバが入り、利用できました。(ホットキーが効かないのはアップグレードのときも同様でしたので、ドライバを入れなかったから、というわけではなさそうです。)

結局、今回インストールエラーが出てしまった理由は不明です。ただ、同様なトラブルに見舞われた場合に少しでも参考になるかと思い記事にさせていただきました。HP miniをアップグレードした直後にインストールメディアが壊れてしまっていた可能性も否定はできませんし、USBメモリからのインストールよりもwebからのダウンロードのほうがエラーが出にくい何らかの理由があるのかもしれません。今回の方法でうまくいかなかった場合、GenuineTicketと呼ばれるライセンス認証情報ファイルを、認証済みのWindows 7から、インストール後のWindows 10にコピーして認証する、という方法についても教えていただいていました。今回は利用せずに済みましたが…。(GenuineTicketの使い方については、こちらのサイトが詳しいです。) 無償アップグレード期限が迫る中、トラブルを抱えておられる方の一助となれば幸いです。

最後に、今回のことでTwitter上でいろいろとアドバイスをくださったiruka3様(@iruka3)ならびにみかち様(@milkachi_net)、ありがとうございました。この場を借りまして深く御礼申し上げます。

※本サイトで紹介する内容は、すべて個人的研究の範囲内で行っていることです。ここに書かれた内容を実行したことによる、データ(クラウド上を含む)・ソフトウェア・ハードウェアの障害および金銭的損害について、私が責任を負うことはできません。重要なデータはあらかじめバックアップを行い、内容を十分に理解したうえで、ご自身の責任の下で行ってください。


テーマ : Windows10
ジャンル : コンピュータ

tag : Windows10アップグレードEPSONEndeavorNa14s

アクセスカウンタ
カレンダー
09 | 2023/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
最新記事
最新コメント
リンク
カテゴリ
楽天お勧め商品
検索フォーム
Kyoroのつぶやき
FC2掲示板
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示