著者アーカイブ 村上

村上 著者:村上

【Windows】PDFのデータをAdobeソフトなしで2in1で印刷する方法

今日困ったことを備忘録としてまとめ。
やりたいことは、Excelから変換したPDFを2 in 1で印刷する方法についてです。
Excelでの印刷なら、やり方は分かるのですが、そのExcelデータはページが複数に分かれており、以前複数ページにまたがって選択・印刷をしたところ、変な空ページができたのでなるべく避けたいところ。
そしてPDFで印刷する方法を調べても「Adobe ○○」を使って~という方法ばかりがヒットし…。
で、やっとたどり着いた方法がこちら。

 

まず、印刷したいPDFを Google Chromeで開きます。
そして、下の画像のような印刷メニューを開きます。
なお、印刷ボタンは、画面の右上辺りにあります。

そうしたら、一番下の方にある「システムダイアログを使用して印刷」をクリックします。

そうすると、見慣れたウィンドウが表示されるので、「詳細設定」をクリック。

そして、ページレイアウトから「2 in 1」を選択し、それ以外の設定もあれば適宜変更して、エンターキーを押せば設定完了です!

ウィンドウが大きすぎるようで下の方が隠れてしまったのですが、何故かサイズを変更できず…。
まあ、設定できたから良しとします。
あとは、通常通り印刷ボタンを押すだけでOKです。

 

ただPDFを印刷するだけなのに、2面付になった途端に難易度が若干上がりました。
今後も使う機会がありそうなので、これは覚えておきたいですね。

村上 著者:村上

【JavaScript】長い文章の文末を省略して末尾に「…」を表示させる方法

昨日の記事とほぼ同じタイトルですが、今回はCSSではなくJavaScriptで文章の文末を省略して末尾に三点リーダーを追加する方法です。
こちらは範囲からはみ出たかどうかではなく、文字数で判断をしています。

ちなみに、昨日の記事はこちらから。

【CSS】長い文章の文末を省略して末尾に「…」を表示させる方法
https://cpoint-lab.co.jp/article/201805/【css】長い文章の文末を省略して末尾に「」を/

こちらの記事では、CSSで指定した範囲からはみ出した文章の文末を省略しています。
複数行の表示には対応しておらず、省略後は1行の表示になります。

 

コードはこちら。

<p id="text"></p>
var text = "春はあけぼの。やうやう白くなりゆく山際、少し明かりて、紫だちたる雲の細くたなびきたる。";
var slicetext = text.length > 20 ? (text).slice(0,20)+"…" : text;
document.getElementById('text').innerHTML = slicetext;

文字数をカウントし、20文字以上だったら、slice メソッドを使って21文字目からをカットして、三点リーダーを追加しています。
そして、pタグの中に、そのカット後の文章を表示しています。
行っている処理はこれだけです!

 

JavaScriptで文末を省略する方法でした。
好みにもよりますが、明確に○文字以下で表示することが決まっている場合や、表示する範囲が不変で、かつ複数行で表示したいときなどに使えそうです。
1行だけ表示するなら、表示範囲も可変が可能なCSSで指定する方がよさそう。
このあたりは実装する内容によって使い分けてください。

村上 著者:村上

【CSS】長い文章の文末を省略して末尾に「…」を表示させる方法

よく使うので、コピー&ペーストしやすいようにまとめ。
タイトル通り、改行されるような長い文章を自動で省略して、末尾に三点リーダーを追加する方法です。

参考にさせていただいたサイトはこちらから。

CSSのみで文末をカットし、…を代入する方法|スターフィールド株式会社
https://sterfield.co.jp/designer/cssのみで文末をカットし、-を代入する方法/

 

早速紹介しますが、コードはこちら。

#text_area {
    width: 400px;
}
.text {
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
}
<div id="text_area">
    <p class="text">春はあけぼの。やうやう白くなりゆく山際、少し明かりて、紫だちたる雲の細くたなびきたる。</p>
</div>

text_area ID で、テキストの表示幅を指定しています。ここで指定した横幅を超えた分の文章が省略され、末尾に「…(三点リーダー)」が表示されます。

そして、text Class で指定されている text-overflow で、文字が指定した範囲から超えた場合の表示方法を指定しています。
今回は、ellipsis が指定されているので、範囲からはみ出た文章は切り取られ、切り取られた部分に省略記号「…」が表示されます。

white-space は、半角スペース・タブ・改行の表示の仕方を指定する際に使用するプロパティです。
今回指定した nowrap では、連続する半角スペース・タブ・改行を、1つの半角スペースとして表示する、という指定になっています。
これだけ見ると、もしかしてこのプロパティを省略されても表示されるのでは?と思ったのですが、この white-space プロパティがないと、文章の省略は無効化されました。
どれも必須の項目のようなので、自己判断で省略したりしないように注意してください。

ちなみに、今回の方法では、省略後の文章は1行で表示されます。
確か複数行の方法もあったように思いますが…気になる方は、調べてみてください。
機会があったら、このブログでも紹介するかもしれません。

 

以上、長い文章を省略して、末尾に三点リーダーを追加する方法でした。
スマートフォンなど、表示できる範囲が少ないときなどにおすすめのCSSですね。
もしくは PCでも、表示項目が多い表などでも活用できそうです。
お好みや要望に応じて使ってみてください。

村上 著者:村上

【Mozilla Thunderbird】メッセージフィルターの設定で「返信先」を指定する方法

以前にも書いた気がしますが、私は普段の業務で「Thunderbird」というメールソフトを使用しています。
で、毎日様々なメールが届くため、メールのフィルター機能を使ってフォルダにメールを振り分けているのですが、Thunderbirdのフィルター設定には「返信先」でメールを振り分ける機能がありません。
が、設定すればできるとのことで、やってみました。

今回参考にさせていただいたサイトはこちら。

Thunderbirdのメッセージフィルタで「返信先」を利用する方法|DESIGN PAPA
http://designpapa.net/archives/2843

 

返信先を指定してメールを振り分ける方法ですが、まず、Thunderbirdの右上のメニューから、「メッセージフィルタ」を選択します。

すると、下記のようなウィンドウが表示されるので、フィルタ条件のメニューから「カスタムヘッダ」を選択します。

そして、表示されたウィンドウ内の「追加するカスタムヘッダ」に「Reply-To」と入力し、追加ボタンをクリックすれば準備は完了です!

あとは、既存のフィルタ条件と同じように、フィルタ条件にしたい返信先を設定すれば完了です!
設定が間違っていなければ、指定した返信先でメールのフィルタリングができます。

 

以上、返信先でメールを振り分ける方法でした。
小さなことですが、この些細なことが意外とストレスになったり、逆に凄く便利に感じたりするんですよね。
メールの設定で、特にメールの振り分けは結構面倒だったりしますが、何とか時間を見つけて整頓しておきましょう。
そうすれば、重要なメールの見落としを減らすことができます!

村上 著者:村上

【Windows】「圧縮(zip形式)フォルダーは無効であるか、または壊れています」の対処法

PowerPointファイルを圧縮しようとしたときに遭遇したエラーです。
1.1MB ほどのファイルを、「右クリック → 送る → 圧縮(zip形式)フォルダー」の方法で圧縮しようとしたら発生しました。
マイクロソフトのサイトによると、圧縮フォルダが 2GB を超えると、ファイルが破損するそうなのですが、今回はこの状況には合致せず…。

ちなみに、このエラーを検索した時に、一番最初にヒットした記事がこちら。

圧縮(zip形式)フォルダーは無効であるか、または壊れています – マイクロソフト コミュニティ
https://answers.microsoft.com/ja-jp/windows/forum/windows_7-files/%E5%9C%A7%E7%B8%AEzip%E5%BD%A2%E5%BC%8F%E3%83%95/9e4393df-4f05-42bb-bb89-c1ae3a564096

で、回答の中に、「ドライブの空き容量は十分にありますか?」とあるので、どうやら容量不足が原因のようです。
対処法としては、ディスクのクリーンアップで、一時ファイルの削除と、ディスクのチェック・システムファイルのチェックを行った方が良いとのことでした。

 

が、私のPCでは、圧縮したいファイルを別の場所、私の場合は一つ上の階層にコピーし、同じ方法で再度圧縮を試したところ、問題なく圧縮できました。
理由は分からないし、いまいち釈然としませんが…できたので良しとします!

 

もし、同じ現象にお悩みの方は、ファイルを別の場所にコピー&ペーストして、再度圧縮をお試しください。
もしかしたら、圧縮できるかもしれません。

ファイルの場所を変えても圧縮に失敗する場合は、ディスクのクリーンアップを行ってください。
なお、ディスクのチェックは、ディスクの破損の状態によってはかえって傷を広げ、まれに OS が起動できなくなることもありますとのこと。
実行は自己責任でお願いします。

村上 著者:村上

【CSS】枠線の色を透明にする方法

使いどころがあるかは正直謎ですが…自分の書いたであろうCSSを見返していたら、気になる記述があったのでまとめ。
CSSで指定したボーダー(枠線)の色を透明にする方法です。
…実質 border: none; の記述と変わらないのでは…?

 

コードはこちら。

<div class="border">枠線を透明に</div>
.border {
    border: 1px solid transparent;
}

透明を指定しているのは、transparent というボーダー色の値です。
通常であれば、ここには #000 などの色コードなどを指定しますが、transparent を指定すると線が透明(非表示)になります。
が、コードを見ると、線自体はあります。

感覚としては、visibility: hidden と似たような感じで使う、と覚えるとわかりやすいかも。
この時は枠線を表示して、この時は非表示に!でも他のスタイルに影響が出るのを防ぐために、表示はしないけど残したい!というときに使うのがよさそうです。
CSS初心者の時は、ボーダーの幅で若干横幅のサイズが合わなくて苦労したことがあるので…それの予防に使えそうです。

 

以上、枠線を透明にする方法でした。
ちなみに、transparent は、「向こう側が見えるほど透き通った、透明な」という意味があるとのこと。
そのまんまの意味ですが、とっさに出てこなさそう…!

村上 著者:村上

【PHP】配列で重複した値を削除する方法

たまにしか使わないから毎回忘れる配列の値が重複したときの削除方法について。
今回使用するのは、array_unique という関数です。
PHPのマニュアルページはこちらから。

PHP: array_unique – Manual
http://php.net/manual/ja/function.array-unique.php

 

こちらの関数は、重複を削除したい配列を引数として渡せば、重複を削除した後の配列を戻り値として返してくれます。
サンプルコードは下記のとおりです。

$array = array(1, 3, 5, 1, 2, 4, 3);
// 重複削除
$unique = array_unique($array);

// 実行結果:array(1, 3, 5, 2, 4)

ただし、この関数では、重複削除後もキーは保持されます。
なので、詳細に書くと結果が下記のようになっていることに注意してください。

$array = array(0 => 1,
               1 => 3,
               2 => 5,
               3 => 1,
               4 => 2,
               5 => 4,
               6 => 3);
// 重複削除
$unique = array_unique($array);

// 実行結果:array(0 => 1,
//                1 => 3,
//                2 => 5,
//                4 => 2,
//                5 => 4);

結果を単に foreach かなにかで処理するだけなら問題ないかと思いますが、キーをセットに扱う処理を行う場合などは、このままでは使えません。
その場合は、PHPの関数の array_values を使います。
こちらを使うと、数字が飛び飛びになったキーの番号を振り直すことができます。
使用方法はこちら。

$array = array(0 => 1,
               1 => 3,
               2 => 5,
               3 => 1,
               4 => 2,
               5 => 4,
               6 => 3);
// 重複削除
$unique = array_unique($array);
// キーの振り直し
$result = array_values($unique);

// 実行結果:array(0 => 1,
//                1 => 3,
//                2 => 5,
//                3 => 2,
//                4 => 4);

これでキーの番号が飛び飛びになる問題も解決できます。

 

ということで、配列のデータ重複を解消する方法でした。
意外と使う機会がある関数なので、覚えておいて損はないはず。
ついでに、下の方で紹介した配列のキーの振り直し方法についてもセットで覚えておくといいでしょう。

村上 著者:村上

【MySQL】集計した値を日付けごとにグループ化して抽出する方法

タイトル通り、ログイン数の合計などの集計したいデータを日付けごとにグループ化して抽出するためのMySQLの書き方です。
これを使うことで、日ごとの投稿数とか、日ごとのログイン数がサクッととれるので、かなり重宝しています。
なお、この抽出を行うためには、数えたいカラムと日付を保存したカラムがある必要があります。

 

SQL文はこちら。

SELECT date_format([日付のカラム],'%Y%m%d'),count([カウントしたいカラム名]) FROM [テーブル名] GROUP BY date_format([日付のカラム],'%Y%m%d');

このSQL文を実行すると、カウントしたいカラムの合計値を日付けごとに抽出することができます。

今回重要なのは、GROUP BY句と、date_format() という時間関数を使うことです。
date_format()関数を使うことで、日付のデータを任意の書式に変更することができます。
今回は、「2018/04/26」のような形式に変更しています。
勿論、別の書き方でも問題ありません。

そして、その日付の値を GROUP BY でグループ化することで、同じ日付の値だけをそれぞれカウントしてくれます。
MySQLを使い始めたばかりだと、GROUP BY句ってどんな時に使うのか、そもそもどうやって使うのかの感覚がつかめなかったりするのですが、分かってしまうと凄く便利です。
日付け以外にも、カテゴリごととか、そういう指定もできますしね。

なお、上のSQL文を応用して、下記のように記述すると月ごとに集計することも可能です。

SELECT date_format([日付のカラム],'%Y%m'),count([カウントしたいカラム名]) FROM [テーブル名] GROUP BY date_format([日付のカラム],'%Y%m');

やろうと思えば時間単位でもできそうですが…それだとデータ数がとんでもないことになりそうなので、WHERE句で期間を指定するなど、計画的に行ってください。
INTO OUTFILE を使って、抽出結果を外部ファイルにエクスポートすると、後々使いやすいと思います。

 

なお、この書き方だと、カウント数が だった日付があった場合、その日は省略されますので、そこだけは注意してください。
値が 0 の日付も表示する方法はあるのかな…?
今のところ、この仕様でも困っていないのであまり意識していませんでしたが、あるなら便利そうですね。
時間があったら、方法を探してみたいと思います!

村上 著者:村上

【Cordova】アプリ内にAdMobのバナー広告を導入する方法

タイトル通り、Cordovaで開発したアプリにバナー広告を入れる方法です。
ちなみに、AndroidとiOSの両方に対応しています。
本当はネイティブ広告という、Twitterのタイムラインで表示されるような、記事っぽくみえる広告を導入したかったのですが、どうやらプラグインが対応していないようです。

今回使ったのは、cordova-plugin-admob-free というプラグインです。
GitHubはこちら。

GitHub – ratson/cordova-plugin-admob-free: Cordova AdMob Plugin
https://github.com/ratson/cordova-plugin-admob-free

 

まずインストールは下記のコマンドをコマンドプロンプト等で実行します。

cordova plugin add cordova-plugin-admob-free --save

インストールが終わったら、下記のコードをプログラムに記述するだけ!
なお、私の環境では、index.js というファイルに記述しました。

// AdMob 広告ID
var admobid = {}
if (/(android)/i.test(navigator.userAgent)) {  // Android
    admobid = {
        banner: 'ca-app-pub-3940256099942544/6300978111'
    }
} else if (/(ipod|iphone|ipad)/i.test(navigator.userAgent)) {  // ios
    admobid = {
        banner: 'ca-app-pub-3940256099942544/2934735716'
    }
}

document.addEventListener('deviceready', function () {
    // バナー広告表示
    admob.banner.config({
        id: admobid.banner,
        isTesting: true,  // テスト広告
        autoShow: true,
    })
    admob.banner.prepare()
}, false);

コードの上の方で、アプリを使っている端末が Android なのか iOS なのかを取得しています。
Android と iOS では、広告のIDが異なるので、この処理も重要です。

なお、広告のIDはテスト用のものを使っています。
なんでも、動作を確認している段階のアプリで本番用の広告IDを使うと、最悪の場合アカウント停止になることもあるとのことだったので…。
絶対にそれは避けたいので、慎重に。

ちなみに、広告の種類は他に「インタースティシャル」という画面に大きく表示される広告と、あとは「動画広告」もあります。
このあたりは、お好みで使い分けてください。
…が、個人的に画面全部を覆うような広告は嫌いなので、使うとすればバナー広告かな。

 

以上、アプリ内に広告を入れる方法でした。
アプリの利用者数が増えてきたら、導入を検討していきたいと思います。

村上 著者:村上

【Excel】日付を曜日付きで表示する方法

Excelを使っていて、例えば下の画像のように、「4月1日(日)」と、曜日まで表示したいときの作業です。

要は、データとしては「2018/04/01」と入力されているものを、「4月1日(日)」の形式で表示するということです。
日付の表示形式は案外簡単に変えられるのですが、曜日の表示はひと手間必要です。

今回は、こちらのサイトを参考にさせていただきました。

Excelで日付から自動的に曜日を入力する – @IT
http://www.atmarkit.co.jp/ait/articles/1708/02/news014.html

 

まず、表示形式を変えたいセルで右クリックし、メニューから「セルの書式設定」をクリックします。

すると、ウィンドウが表示されるので、「表示形式」タブの左のメニューから「ユーザー定義」をクリックします。

そして、「種類」の欄で、曜日を表示したいところに「aaa」を入力します。
私の場合だと、「“(“aaa”)”と入力したため、実際の表示では「(日)」となります。

なお、表示形式は他にもあるので、お好きなものをチョイスしてください。

表示形式コード 曜日の表示形式
aaa 月、火、水、木、金、土、日
aaaa 月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日
ddd Mon、Tue、Wed、Thu、Fri、Sat、Sun
dddd Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday

作業としては以上です!

 

なお、今回紹介したサイトに、別のセルに関数を使って曜日のみを表示する方法も載っているので、場合によって使い分けてください。
曜日を表示したいセルに、次の式を入力すればOKです。

=TEXT([曜日を表示したい日付が入力されたセル],"aaaa")

どちらも、入力した日付で自動的に曜日が算出されるので、凄く便利です。
また、入力間違いもなくなるので、曜日を表示したいときは積極的に使いたいと思います。