CodeIQ Aランク攻略法

リクルート社が運営してる CodeIQ https://codeiq.jp/ がちょっとした暇つぶしになって面白い。

課題に沿って短いコード(プログラム)を入力すると、テストが実行されて結果を表示するというもの。まあリクルートなんで、その後いろいろ勧誘メッセージが届くが基本無視。

Rooms1

学校で習った程度からバリバリプログラミングができる人までレベルに応じた問題が用意されてて言語もある程度選べるのでいろんなスキルの人が遊べると思う。問題を解くとだいたい女キャラがツンデレにあしらってくれる。

Rooms

スキルチェックの難易度はC、B、A、Sランクとなっていて、C、Bランクは課題のアルゴリズムを普通に書いて結果が出れば〇がもらえるのだけど、A、Sランクを単純にコードに置き換えるだけだと実行時間のタイムアウトで×になる場合が多い。

Aランクに関しては攻略法があって、課題の入力を最初から100件くらいをExcelで表にしてやるとパターンが見えてくる。それをテーブルに落とし込んでインデックスを引くと高速に結果が得られる。あるいは単純な式に置き換えるとか。「解答送信の有無を問わず、模範解答のネタばれにつながるような各種行為、別人による不正解答は、固くお断り申し上げます。」っていう契約になっているので投稿したコードとかは当然ここでは掲載できない。

計算量の多い処理をテーブル引きにしたり単純な式に置き換えるのは高速化の常套手段なんで上級テクといってしまえばそうなんだけど、テーブルの内容や等価式を見つけ出すことと、それをコードで表現することが題意なんですよね。

これでリクルートしちゃう求人担当も「・・・まぁまぁだな。」

 

広告

システムのバックアップを考える。

パソコンまわりの実働環境のバックアップをもっと楽に行いたくなった。

Creators Update以降、Windows 10付属のシステムイメージバックアップツールの「バックアップと復元 (Windows 7)」がまともに動かなくなった。データのバックアップは「ファイル履歴」機能は動いているが、システム自体に不調が出た場合にシステムイメージが無いと面倒なことになる。

家じゅうの4台のどのWindows10でも「バックアップと復元 (Windows 7)」を使ってバックアップ先をNASにしても外付けHDDにしても途中でバックアップが失敗する。Win10 1607では問題なかったのに。こんなWindows7な機能は切り捨てたいのだろう。これまではシステムバックアップはAOMEI Backupper Standardというフリーソフトでシステム構築時、大きな更新時に静的なイメージ作成を行っていたが静的なバックアップだとイメージが古くなっていくし、更新も面倒だし。それに中国製ソフトだからという理由で何となく不安。AOMEI製品の出来はバイドゥ製のソフトよりまともな感じはするけどね。

売り物のバックアップソフトは長い間Norton Ghost 2003を使っていたがたいがい古くなっていてWindows Vista以降は使いたくないし、最近はdebianのdd+gzipでごまかしたりしてたけど、そろそろ売り物のバックアップツールを買うことにした。

候補は次のもの

ライフボート LB バックアップワークス
一応国産ソフト。販売もメガソフト扱い。中身はParagonらしい。

Acronis Ture Image
アメリカ製。かなり以前からあるソフト。国内ではソースネクストが先月まで扱っていた。ソースネクストということで若干の不安があったが、それについては後述。

Paragon Hard Disk Manager、Drive Backup
ドイツ製。これも以前からあるし、LBシリーズのOEM元だったりする。以前NTFS for Macを使ったことがある程度。

対象外として

AOMEI Backupper Standard
中国製。ちょっと胡散臭い中華ソフトと違って結構しっかりしてる雰囲気だし、起動メディアを作ったらインストールは不要なので使いやすい。Ghost以降はだいぶ使ったし、正直言って個人使用ならこれで十分で実際そうだった。でも今回はインストールしての使用はしたくないので候補から外す。

EaseUS Todo Backup Home
中国製。USってつくからアメリカ?って思ってしまうが、サイトもDVDfabっぽいというか、中華風が漂う雰囲気。ちょっと使いたくないし、過去にも使ったことが無い。

結局この中からAcronis True ImageとParagon Hard Disk Managerを買った。本音をいうとBackup ExecLTO Ultiumが使いたいが、さすがに個人では無駄。

使った感とかは後日別エントリにて。

 

ひと目でわかるVisual C# 2010 アプリケーション開発入門

cs2010appdev

ひと目でわかるVisual C# 2010 アプリケーション開発入門』を完了した。最新版は2013/2015版が出てるが、お安かったので2010版を買ってVisual Studio 2013で写経した。

この本を漢字一文字で表すと「」です。一言で表現すると「羊の皮をかぶった」です。表現を変えると「やさしく見えて実はスパルタ式な中級者向け良書」。

C#の文法詳細は無し、.NET Frameworkの説明は全体も詳細も無し、IDEの細かい使い方もなし、じゃんじゃんクラス作ってオブジェクト指向してるし、「できるシリーズ」のノリで読み始めちゃうとおそらく第四章あたりで挫折すると思う。MSDNプログラミングシリーズって書いてあるので、まあまあな内容だろうなーという予想はついてましたが。VC++でMFCのチュートリアルで最初に出てくるSCRIBBLEサンプルにめんくらったが、それに近い。

とりあえず最後まで通してサンプルが完成したら、その状態で動作を詳細に追いかけるとなんとなく分かってくる。本の内容では何をしているかの簡単な解説と操作というかコーディングの説明があるが、全体が組みあがってこないと動作が追いにくい。設計図に基づいてコーディングするスタイルは他の解説書ではなかなか見られないので貴重なんだけど、全体が組みあがらないと「何やってるかわかんないけど設計図どおり(書いてあるとおり)やったらできちゃった」状態になるし。

入門と言ってるけど、とりあえず最後まで通してやってることが理解できたら中級者名乗っていいんじゃないでしょうか。自分は最後のWPFんとこはあんまりまじめにやってないんで入門者のままですが。

あと、VC#2010対応なのでVisual C# 2013ではデリゲートをnewして作るのは今はダサい、とか若干の違いはあるものの、VC++2013ほどの違いは無くて安心。

本文中に説明が無いので自己学習しないと分からないが、サンプルは「MVVMパターン(Model View ViewModel)」の構造を使って構築されている。これが分かっているかどうかで全然違ってくる。動作の解説はとにかく、このキーワードが載っていないあたりがやっぱりだと思った。わかってないと特にCommandプロパティ(”Viewに関連付けられる、Logicがプロパティとして公開する自作のCommandクラスのオブジェクトで、イベントハンドラとUI更新ハンドラのdelegateを内部に保持するもの。”)あたりが意味不明。

プロフェッショナル Visual C++ 2010

ProVCpp2010

ぜんぜんプロフェッショナルなプログラマーではないのに、絶版の『プロフェッショナル Visual C++ 2010』(矢嶋聡著)を古書で買った。定価よりは安かったが古書の割にはいい値段がした。今見たら日経BPのオンラインショップではまだ手に入るっぽい。

自分の開発環境がVisual Studio 6(Visual C++ 6.0)でほぼ止まっているので、アマゾンの評価は星5つで内容的にも「良書」となっているこの本を選んだ。結論からいうと自分にはちょうど良い「読み物」にはなった。VC6やC++/CLIの基礎で覚えたことを継承しつつ、Visual Studio 2010/2013/2015に知識をアップグレードするのに十分な内容。

ただ、ほかの人に薦められるかどうかは微妙。基本的にはVisual C++でできることのMSDNライブラリ的なチュートリアルというかウォークスルーなので、前提としてC++の基礎が身についていること、クラスライブラリやテンプレートライブラリが何物か理解してること、Visual Studioのだいたいの操作ができること、C++/CLIと他のCLRな言語との対応がなんとなく分かってること、MFCの概念がなんとなく分かっていること、COMとは何たるか、くらいが分かってないと通しで理解するのは無理な気がする。前のC++/CLIの本と同じで、インストールの次からいきなりCOMですか、ってなるし。

あとVisual Studio自体の使い方の説明はほとんど無い(本当に重要なことは丁寧に書かれている)、というか、むしろVisual Studioの機能を使わずにコーディングしましょうという趣旨なので、この本だけでVC++2010をマスターしようというのは無謀だ。

良書なれども、読み手を非常に選ぶ。理解できれば今でも通じる知識が広がること間違いなし。

Visual C++ 2012以降は解説本が急速に減っている。UIデザイナがサポートされなくなってきたのが大きいのだろう。Visual C++を学習するならVisual Studio 2010対応の本を使うのが今のところ良いのかもしれない。ただしVS2010はC++/CLIのインテリセンスが使えないという最大の欠点があるから使う環境はVS2012/2013にしよう。

C++/CLIの本を最近のVisual Studioで試す

IMG_4235.JPG

アマゾン古書のぼったくり価格で買った『実践 C++/CLI 極めるための基礎と実用テクニック』(中 博俊 )

C++/CLIは、.NET Frameworkの共通言語基盤 (CLI)上で実行するプログラムを作るためにC++を拡張したプログラミング言語である。Wikipediaより

VS構成員の中ではJ#やF#並みにマイナーな扱いのC++/CLIはVisual Studio 2005でデビューしたが、実際のところ次バージョンのVS2008以降サポートが縮小されて続けている。2008ではASP.netのテンプレートが無くなり、2010ではインテリセンスがなくなったり(2012で復活はした)、データセットテンプレートも無くなり、2012でWindowsフォームが無くなり、2017だとフォームUIを後から追加することすらできないとか、MS自身もC++/CLIでUI作るの非推奨と言っているから、もう既存プロジェクトの保守以外は使うなってことみたいです。今後はC++/CLIはグルーコードに徹して他はC#でもおとなしく使ってろってことだ。まあ、グルーコード書けるのはILアセンブラだけだよ、って言われるよりはいいかもね。

そんなわけでC++/CLIは資料も本も少ない。「C#でもできるようなことだけ」を「わざわざC++/CLIに置き換えただけ」の解説本も多くて、そんなのは読むだけ時間の無駄だ。冒頭で挙げた書籍はそうではく、きちんとレガシーC++の世界やC++ライブラリの世界とCLRの境界を意識した解説を(かつ日本語で)しているのでそういった意味で希少。C++/CLIの前身であるC++マネージ拡張の解説も載っててちょっと嬉しい。そういうのはVS.net(2002)でC#のデリゲート、アンマネージドコード・Win32 API呼び出しあたりの吐き気のする構文避けてきたし。

でもVS2005時代の本なのでさすがに内容が古くなっている。VS2013で動くかどうか確認してみた。

  • 第1部Chapter1 ~ 4 は文法解説だけなので特に問題なし。

第2部は「Visual C++ 2005 Express EditionによるC++/CLIプログラミング」で、苦労しそう。

  • Chapter5 Visual C++ 2005 Express Editionの導入
    読み飛ばして問題なし。動作確認としてMFCアプリを作っているので、2008以降のExpress Editionでは無理。ProfessionalかCommunityを用意する。VS2013Proでは操作が異なるが、特に問題なし。
  • Chapter6 より実践的なC++/CLIプログラミング
    COMとの連携。いきなりCOMですか、て感じなのでMFCの本でCOMの使い方を勉強してから読むこと。無理なら後回しでも良い。WindowsフォームCLRアプリが出てくるのでVS2013では本の手順は無理。VS2010以前が必要。本の手順に従わないならCLRプロジェクトを作って、UI追加でCLR Windowsフォームを追加してmainからフォーム作成のコードを数行書けばできなくもない。

第3部「C++/CLI実践プログラミング 過去の資産活用事例」と副題。

  • Chapter 7 アプリケーションの設定情報をXML化する
    過去の資産といいつつ、現在でも使えるテク。XMLといいつつ.configに保存する方法にさりげなく変更。コンソールCLRアプリで、VS2013でも問題なし。
  • Chapter 8 C++で保存していたデータを他言語から利用する
    「シリアライズ」というキーワードがあるがMFCのArhiveではないので混乱する。WindowsフォームCLRアプリが出てくるのでVS2013では無理。VS2010以前も必要。
  • Chapter 9 データベースアクセスプログラムをADO.NETに変更する
    ADO、ADO.net、DBのスタティックバインドなんかを非常にあっさり説明してるので、データベース接続のプログラムを組んだ経験がないと難しい。しかもサンプルがOracle DBのネイティブ接続だからOracle無いと試せんし。Access2016で.accdb作ってODBC経由で試した。さらに三重苦としてVS2013にはデータセットテンプレートが無いのでそのままは無理。C#で組んでからインポート後、少しいじる。

第4部「.NET Frameworkクラスライブラリの活用」となっていて、ネイティブC++は使わないのだが、WindowsフォームCLRアプリがそこかしこに出てくるのでVS2013はそのままでは無理。この章はC#でさらってもいいくらい。

  • Chapter 10 暗号ライブラリの利用
    すべてWindowsフォームCLRアプリで組んでいくので一工夫必要。
  • Chapter 11 .NETリモーティング
    コンソールCLRアプリなのでVS2013でも特に問題なし。実行方法などはもう少し解説があったほうがいいかも。この辺から誤植が多い。
  • Chapter 12 XML Webサービスの作成と利用
    VS2008以降はC++Webサービスのサポートが無いので無理。ソリューションのコンバートを行ってもうまくいかなかった。XP+VS2005Proでないと動かない。C#で組みなおせばVS2013でもできるがそれでは意味が無い。

ひととおり試したら最後のChapter12以外はなんとか動かせたけれど結構苦労する。特にChapter9。苦労したくなければXP+VS2005Proの環境を構築するのが手っ取り早い(今回はVirtual Box上にWin XP+VS 2005とWin8.1+VS2010+VS2013を構成した)が、それ以外は対処方法もあるので後日追記予定。ただ、サンプルを動かすにはMSDNでVisual Studio Pro 2005/2010/2013を同時に使える環境を用意するのが手っ取り早い。無償で使えるVisual Studio 2017 Community(MSDNサブスクリプション無し)では困難が多い気がする。

今日のおもしろQ&A。

VisualC++で、windowsフォームアプリケーションを作りたいです。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10144686995

VC++でオヌヌメの本ありますか?って聞いたら「書籍としてどういうものがあるのか分からない」と個人的経験を述べられたうえで「C++/CLI で作っても意味無い」とぶった斬られたでござるの巻。

C++/CLIベースのUIがすでにMSからも見捨てられてるっていうのは明らかだとしても、ILアセンブラでフォームアプリ作りたいんですっっ!、て技術的興味がある人も世の中にはもいるよね。VC++でフォームでCLR部分だけの本なんてVisual Studio 2010前後のならこれとかこれとか結構あると思うし。

インテルRSTとスリープ・休止状態

NUC6i7KYKでせっかくSSD二枚挿しにしたからRAID0で最速構成。

でもスリープの復帰ができない。休止状態からの復帰もできない。ブルースクリーンとか変なピンクスクリーンで、CRITICAL_PROCESS_DIED。どうもRAIDコントローラを見失うらしく当然ページファイルその他も見失ってBSODしかできない様子。

IDEというかメインストレージコントローラまわりのインテル製ドライバって鬼門だわ。430TXのバスマスタドライバとかそのあたりから始まって、AHCIモードとか、さんざん不具合で結局MS純正ドライバが一番安定してるとか。

 

FLAC、ALACを陥落。

iOS11、無劣化圧縮のハイレゾ音源形式FLACに対応! – iPhone Mania
http://iphone-mania.jp/news-170816/

遅い。遅すぎる。囲い込み以外、何の利点も無いALACを黒歴史として葬り去る時が来た。

マカーらのブログ(笑)で「WAV? FLAC? ( ´_ゝ`プッ。ALACに統一してCD断捨離(`・ω・´キリッ!」みたいな意識高いご意見を見た気がする。そもそも対応してなかったものだし、ない袖は振れないから仕方ないけどね。ALACのサポートがなくなるわけではないが、AppleがALACだからFLACなんかより良いはずとついてきた信者様。今、何思うか。

ズームレンズ広角端の歪

今使っているキヤノンのコンパクトデジカメはiPhoneなんかのスマホなナンチャッテ高画質と比較すると圧倒的にきれいなんだけど、電源オン時にズームが広角端になってるのがいまいち。スマホのカメラも起動時はだいたい広角側になってるので同じ。

このコンデジは広角は35mm換算で24mm相当になってて、広角側で直線のあるものを撮ると結構歪んでる。少しズーム側に動かすとか、後で中央部分をトリミングするとか簡単に対処できるんだけど、撮って出しで掲載したらそれは気になる。コンデジの電源オン時とか、スマホアプリ起動時は最後のズーム比くらい覚えててほしい。

新聞記事(新聞社の記者が撮ってるようなやつ)なんかですら、人物集合写真なんかだと、どうも広角端で撮っているようで端っこの人がぐにょーてなっててなんだかなーとか思う写真もときどき見かける。

ボリューム歪像とは何か
http://www.dxo.com/jp/photography/…

 

 

暇なんで動画でも見る

連休で暇すぎるのでバカ動画、事故・グロ・ドッキリ動画なんかを延々と見て無駄な時間を過ごした。

ユーチューバーはゲームのアイテム課金に100万円使ってみたとかいう動画で無駄なことしてるなとか思ったが、ここ数年で自分も100万円くらいはデジタルアイテム・デジタルガジェットに浪費してる気がした。無駄遣いだったと感じるものをあげると…

Mac18万、iPhone10万、MSDN 15万、Windows OS 10万、Office Mac 4.5万、Offce Pro Plus 10万、ATOK 1万、Android有料アプリ2万、iPhone有料アプリ2万、Windowsストア有料アプリ2万…

すぐに思い出すものだけで75万円以上浪費してて、ここのブログネタ以外では結局いらんわーてっなってるのが多い気がする。広告設定もしてないからwordpressが儲かるだけで特に見返りがあるわけでもなく。

トップなユーチューバーは広告やアフィ収入がっぽがっぽで100万円くらいすぐ回収できるんだからううらやましいのです。