月別アーカイブ 6月 2018

村上 著者:村上

【Windows】Word保存時に「ディスクの空き容量が不足しているため保存できません」エラー

ちなみに未解決です。

Wordを編集・保存した時に遭遇したエラーで「ディスクの空き容量が不足しているため保存できません」とのこと。
ほかにももう1つファイルを開いていて、そちらは問題なかったのになぜこのファイルだけ…?

検索時にヒットしたページはこちら。

Word で文書を保存するとエラー メッセージが表示される、またはプログラムが応答を停止する
https://support.microsoft.com/ja-jp/help/813997/you-receive-an-error-message-or-the-program-stops-responding-when-you

ですが、結局それらしい解決策は見つけられませんでした。

なお、サイトに掲載されていた解決方法・回避策はこちら。

この問題を解決するには、ディスク ドライブの増設やディスク圧縮ユーティリティの使用により、ディスクの空き領域を増やします。

注: ウイルス対策ソフトウェアが実行中の場合は、それを無効にしてみてください。 これで問題が解決される場合は、ウイルス対策ソフトウェアの製造元に更新プログラムまたは回避策についてお問い合わせください。

・不要なプログラムを終了することによってディスク領域をある程度回復できる場合があります。
他のプログラムを終了してから Windows がページング ファイルのサイズを変更するまでに数分かかることがあります。
・必要のないファイルを削除してディスクの空き領域を増やします。
たとえば、ディスク クリーンアップを実行します。 これを行うには、次の手順を実行します。

 

で、結局一度ファイルを保存せず閉じて、再度開いて修正・保存をしたところ、何事もなかったかのように保存が完了しました。
…謎です。
ということで、原因はさっぱりわかりませんでしたが、なるべくファイルは一度にたくさん開かずに、必要最小限にしようとは思います。

  • この記事いいね! (0)
著者:杉浦

読みやすいソースコード

 この記事を読むよりリーダブルコードを読んだ方がよほど良いと思います。Amazonで売っている電子版は見つかりませんでした。リーダブルコードはQiitaの記事でよく引用されたり技術書ランキング | テック・ブック・ランク”、5万部売れたり(技術書にしては多いです)でよく読まれています。
 O’Reilly Japan – リーダブルコード
 コードの記述は想定外の動作を起こさず、正しく動作する記述であることが最も重要視され、次いで理解しやすさ、時々実行速度が優先されます。実行速度が三番手なのは雑なコードでも要求に対して十分高速な時が少なからずあるからです。理解しやすいコードはそのコードを読む、未来の自分、共同開発者、ユーザの助けになります。未来の自分と書くと語弊がありますが、この未来というのはわりと短期です。一月もすれば読まない部分のコードの記憶は怪しくなります。
 理解しやすいコードに必要な条件に誤解が起きないというものがあります。誤解が起きない書き方というのは、接続詞である演算子や括弧を少なくして多重コードを避ける、変数名や関数名の意味を一意に決まる限定的な言葉にする、などの書き方です。
 読みにくい多重コードは三項演算子、関数呼び出しが特にそうです。

hoge = a?b?c:d:e
hoge = a?b?c:d?e:f:g?h:i
hoge = a(b(c,d(e()),f(g(h(),i))))

 二重だけでもちょっと躊躇います。下二つはもう大惨事です。
 変数名の意味を一意にすることの効果は、コードの理解に必要な文章量を少なくする効果でもあります。良い命名がされたコードはコードの一部を読むのみでプログラムが分かります。悪い命名というのは例えば、次のような命名です。

results = Database.all_objects.filter("year <= 2011") 

この results には何が含まれているだろうか?

  • 「year <= 2011」のオブジェクト
  • 「year <= 2011」ではないオブジェクト
  • Dustin Boswell (著), Trevor Foucher (著), 須藤 功平 (解説), 角 征典 (翻訳). リーダブルコード (P.30).
     このような場合、言葉の意味を考えるなり調べるなりしてより限定的な言葉を選ぶことで解決します。調べる時は類語や色々な人のコード中に頻出する名前を調べるといいです。この例の場合はfilterの代わりにselectやexcludeが推奨されます。

    • この記事いいね! (0)
    著者:ym

    コンテナとデータマイニング

    Docker Hub に限らず、Amazon もそうですが。

    Docker Hubから誰でもダウンロードできるコンテナイメージに暗号通貨採掘ボットが潜んでいた – TechCrunch Japan

    こういったボットだけでなく、予めプログラムを仕込んだものを配布できるわけですから、テンプレートとして用意されているイメージで運用を始めるということはとても怖いです。しっかりとコンテナの元となるテンプレートの出元の確認を取った上で、利用することが重要ですね。

    採掘した額9万ドル相当ですか。

    データマイニングとか聞くと、20年ほど昔、DES の解読などのチャレンジが行われていたを思い出します。

    DES暗号の解読コンテスト「DES Challenge III」が22時間で破られる

    まだサイトがあって動いているのに驚きましたが、distributed.net- Client Downloads こんなソフトです。インターネット上で協力してくれる有志が、自分のPCへインストールして、CPUの空き時間を提供して解析に参加するといった、仕組み。私も参加したりしていました。懐かしいです。

    • この記事いいね! (0)
    著者:杉浦

    javascriptの比較演算子==、!=と===、!===

    ==、!=と===、!===は曖昧な比較と厳密な比較です。==、!=と===、!===を使い分ける事で以前書いた暗黙の型変換に悩まされない比較を行うことができます。
     javascriptは暗黙の型変換を行う言語です。暗黙の型変換とは、黙って値の型(文字列、整数、真偽値等)を変える、という動作です。この暗黙の型変換は便利な一方で予期せぬ挙動を引き起こすことがあります。例えば、次の関数を考えます。この関数が行いたいことは、引数の値を+1して返す、ということです。

    (inc = function(v){
    	return v+1;
    })();
    

     この関数は次の結果を引き起こします。

    a=inc(2);
    //aは3
    a=inc("2");
    //aは"21"
    

     javascriptは親切にも文字列型である引数に合わせて、数値として扱いたい1を文字列型に変換してくれました。この様に暗黙的な型変換をして欲しくない時があります。if文では次の様なコードが例に挙げられます。

    (hoge = function(msg){
    	if(msg == ""){
    		//msgが空なら返す
    		return;
    	}
    	//msgを使ったして欲しい処理
    })();
    

     javascriptは数値0を文字列””に暗黙的に変換します。そのためmsgに格納されている値が数値0の場合、動作はifの中に入り込み、msgを使ったして欲しい処理を行わずにhoge(msg)を抜け出すものになります。==、!=は比較の際に暗黙的な型変換を行う比較演算子なのに対し===、!==は比較の際に型変換をさせない比較演算子です。これを用いて次の様に記述した場合、msgに格納されている値が数値0であってもif文の中に入り込まずに、msgを使ったして欲しい処理を行います。

    (hoge = function(msg){
    	if(msg === ""){
    		//msgが空なら返す
    		return;
    	}
    	//msgを使ったして欲しい処理
    })();
    

     

    • この記事いいね! (0)
    村上 著者:村上

    【JavaScript】IEでの「’)’がありません」エラーの原因と対処法

    後輩のコードを見ていて発見した Internet Explorer 固有のバグです。
    今回遭遇するまで、こんな現象が起きることを知らなかったので、備忘録も兼ねています。

    で、コードはこちら。

    function checkStr( message = "" ){
        if( message != "" ){
            // 処理
        }
    }
    

    一見何の問題もなさそうですし、Google Chrome や Microsoft Edge では問題なく動作しました。
    が、どうしてもIEではダメで、「‘)’がありません」というエラーが表示されました。

     

    で、対処法ですが、そもそもの原因は関数の引数にデフォルト値を指定したことが原因のようでした。
    IEではJavaScriptの関数での引数のデフォルト値の設定には対応していないようですね。
    そのため、引数の「message = “”」を 単に「message」に修正すれば問題なく動作しました。

    修正後のコードは下記のとおりです。

    function checkStr( message ){
        if( message != "" ){
            // 処理
        }
    }
    

    1行目の関数の引数のデフォルト値を指定しないように修正しました。

     

    以上、IEでの関数エラーの対処法でした。
    最初はエラー文を鵜呑みにしてカッコの数があっているかを確認していましたが、原因は全く違いましたね。
    たまにこういった見当はずれのエラー文があったりするので、デバッグ作業は難しいです。
    今回は思い付きで関数の引数を消してみたら解決したので良かったですね。
    同じことでお悩みの方は、是非参考にしてください。

    • この記事いいね! (0)
    著者:ym

    スマート家電コントロール

    この製品ではないけど、最近 TV CM で自動でスマートフォンと連携して自動で調整とか CM していますけど、これっと普通のリモコンでもできるでしょ?てかエアコンって自動で温度調整ついてるじゃん。なんて思いますが。

    https://www.livesmart.co.jp/

    スマートフォンと連携すると、まだまだ機能が増えますしね。

    自宅の Amazon Echo にスマートな家電をそろそろくっつけたいので、LS mini でいいので、安いうちにほしいですね。

    • この記事いいね! (0)
    村上 著者:村上

    【Excel】セルに入力した値を変えずに値に単位を付ける方法

    タイトル通り、Excelでセルに入力した数値などを変えずに、「○○人」や「××円」などの単位を追加する方法です。
    例えば下の画像のようにする方法。

    表示しているのは「100人」ですが、データ自体は「100」となっています。
    これは、単純にセルに単位を入力してしまうと文字列になってしまい、データが扱いにくくなってしまうので、その対策のためです。

    以前書いた、日付に曜日を表示する方法とほぼ同じです。

    【Excel】日付を曜日付きで表示する方法
    https://cpoint-lab.co.jp/article/201804/【excel】日付を曜日付きで表示する方法/

    というか、この曜日の表示がその応用かな。

     

    方法ですが、まず単位を追加したいセルで右クリックし、メニューからセルの書式設定を選択。

    すると下のようなウィンドウが表示されるので、左側のメニューから「ユーザー定義」を選びます。

    あとは、画像のように、中央辺りにあるテキストエリアに表示したい形式を指定すればOKです。
    私は今回、値の後ろに「人」を追加したかったので、選択肢から数値を表示している項目を選び、その後ろに「”人”」と追加しました。
    あとは、OKボタンを押せば完了です。

     

    作業としては以上です。
    簡単ですね!
    ですが、Excelを使い始めたばかりのときは、意外とこの方法を知らなかったりするので、ビギナーさん向けにまとめました。
    Excelに苦手意識を持ってしまっている後輩もいるので、初心者の方に、「Excelって難しくないよ」というメッセージが伝わればいいなと思います。

    • この記事いいね! (0)
    著者:杉浦

    呼び出し側を気にしない引数、デフォルト引数

     関数には引数がつきものです。ソースコード中のある関数を変更する際、関数中の引数を増やしたくなる時があります。しかしながら、単純な関数の引数部分の変更は関数の呼び出し側の変更も引き起こします。関数がどこで呼び出されているのか探すのは手間です。良い命名がされているならば複数ファイル中の文字列検索でどうにかなりますが、その様でないコードは少なくないです。目的が機能の追加であり、既存部分の機能が変わらないとなればなおさらやりたくないものです。そのような時に、この呼び出し側を気にしない引数であるデフォルト引数が役に立ちます。
     デフォルト引数の書き方は次です。

    void makecoffee(type = 'black'){/*処理*/}

    大体の言語は同じように引数欄に”引数名=引数のデフォルト値”と設定できます。デフォルト引数の動作は、呼び出された時に引数が足りない場合は引数に設定されたデフォルト値が代入されて動く、引数が足りている場合は呼び出し側の値が代入されて動く、といった具合です。これで引数が足りないという構文エラーを回避して、僅かな書き換えで引数を追加できます。余談ですがjavaはこのデフォルト引数機能がありません。私の触れた周りでは関数の追加で解決していることが多かったです。次の様に引数の数が異なる呼び出し用関数を追加するわけですね。

    void makecoffee(){makecoffee('black')}//0個の引数で呼び出される関数makecoffee()。固定された値を引数にしてmakecoffee(type)を呼び出す。
    void makecoffee(type){/*処理*/}//1個の引数で呼び出される関数makecoffee(type)。
    

     javaの様な同じ関数名を許容する言語の場合、この引数の異なる関数の追加は特に自然な感じで作れます。

    • この記事いいね! (0)
    著者:ym

    最新技術とレトロ感

    新型ジムニーのチラシが出ましたね。20年ぶりのフルモデルチェンジです。

    歴代ジムニーと同じくラダーフレームが採用。結構いい感じのダッシュを見ていたところ、トランスファーがボタンからシフトレバーに戻ったようです。このあたりも原点回帰で嬉しい。

    最新技術としてはスズキの「スズキセーフティーサポート」搭載でレーダーで歩行者など検知してブレーキを掛けてくれるようです。こういったところもオフのときに機能をオフにできるか、気になるところです。

    幌車設定が無いようですが、早速バンカットする方はいるかな?履けるタイヤサイズも気になるところです。フェンダーカットだれかぜひ。

    AI搭載しつつ、昔ながらの5MTや、ラダーフレーム、売れそうです。

    うちの新人スタッフがスズキ車を買うかもしれないとのこと。これは、おすすめです。

     

    • この記事いいね! (0)
    村上 著者:村上

    【PHP】文字列を全角←→半角に変換するmb_convert_kana()関数

    覚えておくと意外と便利なので、備忘録としてまとめ。
    PHPで全角を半角に、もしくはその逆を行う方法です。

    今回使う関数は、mb_convert_kana()です。
    参考にさせていただいたページはこちら。

    PHP関数 – 半角 ⇔ 全角 変換 – mb_convert_kana() – PHP入門のカルマ
    https://webkaru.net/php/function-mb-convert-kana/

     

    使い方はこちら。

    $result = mb_convert_kana([変換したい文字列], [変換方法]);
    

    上記のように指定します。
    なお、変換方法は省略が可能で、省略した場合は、KV(=「半角カタカナ」を「全角カタカナ」にし、濁点付きの文字を一文字に変換)になります。
    変換方法の一覧は下記のとおりです。

     

    オプション 変換内容
    r 「全角」英字を「半角」に変換
    R 「半角」英字を「全角」に変換
    n 「全角」数字を「半角」に変換
    N 「半角」数字を「全角」に変換
    a 「全角」英数字を「半角」に変換
    A 「半角」英数字を「全角」に変換
    s 「全角」スペースを「半角」に変換
    S 「半角」スペースを「全角」に変換
    k 「全角カタカナ」を「半角カタカナ」に変換
    K 「半角カタカナ」を「全角カタカナ」に変換
    h 「全角ひらがな」を「半角カタカナ」に変換
    H 「半角カタカナ」を「全角ひらがな」に変換
    c 「全角カタカナ」を「全角ひらがな」に変換
    C 「全角ひらがな」を「全角カタカナ」に変換
    V 濁点付きの文字を一文字に変換。K、Hと共に使用

    よく使いそうなのは、「as」かな?
    このオプションでは、英数字とスペースを半角にします。
    なお、オプションは複数指定できます。

     

    以上、文字列を全角←→半角に変換する方法でした。
    全角が入力されては困る項目などでは、少なくとも「askh」あたりを指定しておけば、ある程度は対応できるかと思います。
    是非、ご活用ください。

    • この記事いいね! (0)