メインコンテンツまでスキップ

· 約6分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

多機能すぎて全部覚えられません!なので、全部画面キャプチャ付きで書いていきます。

ファイル開いてないとき image

ファイル開いてるとき image

環境

Windows 10 Android Studio 2.3

Class... (Ctrl + N)

検索できそう。

image

File... (Ctrl + Shift + N)

検索できそう。

image

Symbol... (Ctrl + Alt + Shift + N)

検索できそう。指がつりそう。

image

Custom Folding... (Ctrl + Alt + ピリオド)

使える場所がわかりませんでした。。。

image

Line... (Ctrl + G)

行数を指定して移動。

image


Back (Ctrl + Alt + 左)

マウスクリックで移動した履歴を一つ戻る。

Forward (Ctrl + Alt + 左)

マウスクリックで移動した履歴を一つ進む。

Last Edit Location (Ctrl + Shift + Backspace)

最後に編集したところに戻る。

Next Edit Location

次に編集したところに進む。

Bookmarks

さらにメニューがあります。

image

Toggle Bookmark (F11)

ブックマークをつける/外す。左側にチェックマークがつく。

image

Toggle Bookmark with Mnemonic (Ctrl + F11)

チェックマーク以外のブックマークをつける/外す。 「D」のブックマークをつけたあとに、別の場所でまた「D」を選ぶと、一つ目につけたブックマークがなくなります。

image

Show Bookmarks (Shift + F11)

ブックマークの一覧表示。

image

Next Bookmark

次のブックマークに移動。

Previous Bookmark

一つ前のブックマークに移動。


Select In... (Alt + F1)

※ファイル開いてるときのみ

ショートカットっぽいのが出てくる。

image

「1. Project View」-> 「1. Project」を選ぶと、左の「Project」ウィンドウが開いて、編集中のファイルが選ばれた状態になる。

image

Jump to Navigation Bar (Alt + Home)

上のところ(多分ナビゲーションバーって名前)にカーソルが移動する。 (青くなってるところが選択中)

image

このあと、上下左右のカーソルを使って好きなファイルを開くことができる。

Declaration (Ctrl + B)

変数の宣言箇所に移動する。

mControlsFragment

にカーソルを合わせてキーを実行すると、

private PlaybackControlsFragment mControlsFragment;

に移動する。さらにCtrl + Bを押すと、逆に使われている箇所がでてくる。

image

Implementation(s) (Ctrl + Alt + B)

Implementationしてるクラスを一覧表示。

image

Type Declaration (Ctrl + Shift + B)

タイプ宣言に飛ぶ。 例えば、以下のtoString()で実行すると、java.lang.Stringクラスにジャンプする

image

Super Method (Ctrl + U)

スーパーメソッドに移動する。 以下のonCreateメソッド内で実行すると、ActionBarCastActivity#onCreateにジャンプする。

image

Test (Ctrl + Shift + T)

テストクラスに移動する(と思う)。 テストクラスがないときは、作れる親切設計。

image

layoutファイルを開いてくれる。

image

image


File Structure (Ctrl + F12)

File Structureが表示される。カーソル上下→エンターで移動もできる。

image

File Path (Ctrl + Alt + F12)

File Pathが表示される。カーソル上下→エンターで選択したフォルダーがエクスプローラーで表示される。

image

Import Hierarchy (Alt + Shift + H)

どこで使えるかわかりませんでした。。。

Type Hierarchy (Ctrl + H)

Type Hierarchyが表示される。

image

Method Hierarchy (Ctrl + Shift + H)

Method Hierarchyが表示される。 選択したメソッドが使われている箇所一覧という感じでしょうか。

image

Call Hierarchy (Ctrl + Alt + H)

Call Hierarchyが表示される。 選択したメソッドを呼び出している側の一覧という感じでしょうか。

image


Next Highlighted Error (F2)

次のエラー箇所にジャンプ。

image

Previous Highlighted Error (Shift + F2)

一つ前のエラー箇所にジャンプ。


Next Emmet Edit Point (Alt + Shift + 右大カッコ)

※ファイル開いてるないときのみ

選べない。Androidでは関係ないやつかな。

Previous Emmet Edit Point (Alt + Shift + 左大カッコ)

※ファイル開いてないときのみ

選べない。Androidでは関係ないやつかな。


Previous Message (Ctrl + Alt + 上)

※ファイル開いてないときのみ

選べない。Androidでは関係ないやつかな。

Next Message (Ctrl + Alt + 下)

※ファイル開いてないときのみ

選べない。Androidでは関係ないやつかな。


Next Method (Alt + 下)

カーソルが次のメソッドに移動します。

Previous Method (Alt + 上)

カーソルが前のメソッドに移動します。

· 約4分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

linebot-serverless-blueprint-javaを作った!で紹介したLINE BOTの雛形の作り方を何回かに分けて紹介します。

環境

  • Windows 10
  • Node: v6.9.1
  • npm: 3.10.8
  • Git for Windows: 2.9.3.windows.2
  • Java 8
  • AWSアカウント(AdministratorAccess権限)
    ※rootアカウントはやめましょう

前準備~serverlessの導入

プロジェクト用フォルダーの作成

mkdir linebot-serverless-blueprint-java
cd linebot-serverless-blueprint-java

package.jsonの作成

npm init -y
package.json
{
"name": "linebot-serverless-blueprint-java",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

serverlessのインストール

npm install serverless --save-dev

"devDependencies"が追加されます。

package.json
{
"name": "linebot-serverless-blueprint-java",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"serverless": "^1.8.0"
}
}

serverlessプロジェクトの作成

node_modules\.bin\serverless create -t aws-java-gradle

なぜかgradle\wrapper\gradle-wrapper.jarが作成されませんので、個別にダウンロードします。 https://github.com/serverless/serverless/blob/master/lib/plugins/create/templates/aws-java-gradle/gradle/wrapper/gradle-wrapper.jar こんな感じになります。

C:.
│ .npmignore
│ build.gradle
│ gradlew
│ gradlew.bat
│ package.json
│ serverless.yml

├─gradle
│ └─wrapper
│ gradle-wrapper.jar
│ gradle-wrapper.properties

├─node_modules
~~~省略~~~

└─src
└─main
├─java
│ └─com
│ └─serverless
│ ApiGatewayResponse.java
│ Handler.java
│ Response.java

└─resources
log4j.properties

Javaプロジェクトのフォルダー構成の変更

今回はJavaプロジェクトを2つ用意しますので、フォルダー構成を変更します。

srcフォルダーとbuild.gradleをサブフォルダー内に移動

mkdir webhook
move src webhook\
1 個のディレクトリを移動しました。
move build.gradle webhook\
1 個のファイルを移動しました。

もう一つのJavaプロジェクト用ファイルもコピーして作成

xcopy /E /I webhook reply
webhook\build.gradle
webhook\src\main\java\com\serverless\ApiGatewayResponse.java
webhook\src\main\java\com\serverless\Handler.java
webhook\src\main\java\com\serverless\Response.java
webhook\src\main\resources\log4j.properties
5 個のファイルをコピーしました

settings.gradleファイルの作成

type nul > settings.gradle
settings.gradle
include 'webhook','reply'

Gradle動作確認

gradlew projects
------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'linebot-serverless-blueprint-java'
+--- Project ':reply'
\--- Project ':webhook'

To see a list of the tasks of a project, run gradlew <project-path>:tasks
For example, try running gradlew :reply:tasks

BUILD SUCCESSFUL

Total time: 7.01 secs

build.gradleファイルの修正

webhook/build.gradleを少し修正します。reply/build.gradleも同様(baseNameはreply)に修正します。

webhook/build.gradle
apply plugin: 'java'

repositories {
mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

+tasks.withType(AbstractCompile)*.options*.encoding = tasks.withType(GroovyCompile)*.groovyOptions*.encoding = 'UTF-8'

dependencies {
compile (
'com.amazonaws:aws-lambda-java-core:1.1.0',
'com.amazonaws:aws-lambda-java-log4j:1.0.0',
+ 'com.amazonaws:aws-java-sdk-dynamodb:1.11.98',
+ 'com.linecorp.bot:line-bot-api-client:1.6.0',
)
testCompile 'junit:junit:4.12'
}

// Task for building the zip file for upload
task buildZip(type: Zip) {
// Using the Zip API from gradle to build a zip file of all the dependencies
//
// The path to this zip file can be set in the serverless.yml file for the
// package/artifact setting for deployment to the S3 bucket
//
// Link: https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html

// set the base name of the zip file
- baseName = "hello"
+ baseName = "webhook"
from compileJava
from processResources
into('lib') {
from configurations.runtime
}
}

build.dependsOn buildZip

以上で下準備は完了です。 次回はServerlessの設定やJavaプログラムについての解説を行いたいと思います。

· 約5分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

LINE BOT AWARDSの受付は終わってしまいましたが、簡単にLINE BOTを作成する雛形を作り、恐れ多くも linebot-serverless-blueprint-java と名付けました。 どうやって作ったかは別の機会に説明したいと思います。 今回は、使い方を解説します。

構築イメージ

LINE BOT.png

以下の投稿を参考にしました。というか、そのままです。 大量メッセージが来ても安心なLINE BOTサーバのアーキテクチャ LINE Bot を AWSを使ってシステム構築してみた。

環境

  • Windows 10

  • Node: v6.9.1

  • npm: 3.10.8

  • Git for Windows: 2.9.3.windows.2

  • Java 8

  • AWSアカウント(AdministratorAccess権限)
    ※rootアカウントはやめましょう

LINE BOTアカウントの作成

https://business.line.me/ja/services/bot

image

「Developer Trialを始める」からアカウントを作成します。 登録した後で、設定をいくつか変更した気がしますが忘れました。。

ソースの取得からserverlessの設定まで

ソースの取得

git clone https://github.com/moritalous/linebot-serverless-blueprint-java.git

serverlessのインストール

cd linebot-serverless-blueprint-java
npm install

これで serverless コマンドが使えるようになりました。 ただし、グローバルインストールではないので、node_modules\.bin\serverless で指定する必要があります。

serverlessのアカウント設定

AdministratorAccess権限を持ったAWSアカウントのアクセスキーとシークレットキーを設定します。

node_modules\.bin\serverless config credentials --provider aws --key [AWS Access key ID] --secret [AWS Secret access key] -n serverless

-n オプションは作成するプロファイルの名前です。指定がない場合は default になるようです。

https://serverless.com/framework/docs/providers/aws/cli-reference/config-credentials/

プロファイルの名前をserverlessから変更する場合は、serverless.ymlのprofileの部分を変更して下さい。

serverless.yml
provider:
name: aws
runtime: java8
profile: serverless

環境変数の設定

LINE BOTのChannel SecretChannel Access Tokenは環境変数に設定するようにしてありますのでそれぞれ以下のキーで設定して下さい。

  • CHANNEL_SECRET
  • CHANNEL_ACCESS_TOKEN

デプロイから動作確認

デプロイ

npm run deploy

これだけです。以下のものが全て一発でセットアップされます。

  • API Gateway
  • Lambda x2
  • DynamoDB

AWSのコンソールにログインする必要があるのは、AdministratorAccess権限を持ったAWSアカウントを作るとこだけです。

Webhook URLの指定

デプロイした際のコンソールログに出力されるendpointsのURLをLINEのWebhook設定に指定します。

image

動作確認

gitのソースの状態では、テキストメッセージをオウム返しするようにしてあります。

Screenshot_20170308-014317.png

カスタマイズ方法

reply プロジェクトがDynamoDBからのイベントを受け取ってからの処理部分です。Handlerクラスのreplyメソッドを起点としてカスタマイズして下さい。CallbackRequestクラスは公式のSDK(Java SDK for Messaging API BOT)で提供されているクラスです。簡単でしょ。

ちなみにオウム返しのソースはこんな感じです。

Handler.java
    /***
* Messaging APIリクエストを受けて、Reply messageの送信などを行います。
* @param callbackRequest Messaging APIリクエスト内容
*/
private void reply(CallbackRequest callbackRequest) {
callbackRequest.getEvents().forEach(e -> {

if (e instanceof MessageEvent) {
MessageEvent<MessageContent> messageEvent = (MessageEvent<MessageContent>) e;
String replyToken = messageEvent.getReplyToken();
MessageContent content = messageEvent.getMessage();

if (content instanceof TextMessageContent) {
String message = ((TextMessageContent) content).getText();

LineMessagingService client = LineMessagingServiceBuilder.create(CHANNEL_ACCESS_TOKEN).build();

List<Message> replyMessages = new ArrayList<>();
replyMessages.add(new TextMessage(message));

try {
Response<BotApiResponse> response = client.replyMessage(new ReplyMessage(replyToken, replyMessages)).execute();
if (response.isSuccessful()) {
LOG.info(response.message());
} else {
LOG.warn(response.errorBody().string());
}
} catch (IOException e1) {
LOG.error(e1);
}
}
if (content instanceof ImageMessageContent) {
}
if (content instanceof LocationMessageContent) {
}
if (content instanceof AudioMessageContent) {
}
if (content instanceof VideoMessageContent) {
}
if (content instanceof StickerMessageContent) {
}
if (content instanceof FileMessageContent) {
} else {
}
} else if (e instanceof UnfollowEvent) {
} else if (e instanceof FollowEvent) {
} else if (e instanceof JoinEvent) {
} else if (e instanceof LeaveEvent) {
} else if (e instanceof PostbackEvent) {
} else if (e instanceof BeaconEvent) {
} else {
}
});
}

ソースはこちらです。 https://github.com/moritalous/linebot-serverless-blueprint-java

参考サイト

http://qiita.com/yoichiro6642/items/6d4c7309210af20a5c8f http://qiita.com/hiyuzawa/items/10e7bf2f6ad5d1c7fc9c http://qiita.com/abtc/items/d1aa34ee7684d0c47d07

· 約4分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

自宅に設置したRaspberry Piに外出先からアクセスしたいことってありますよね。 でも、そのためだけにルーターのポートを解放するのも、セキュリティが心配。 そんなあなたに、VNCのクラウドサービスを紹介します。

RealVNC

https://www.realvnc.com/

スクリーンショット 2017-03-02 23.55.43.png

Wikipediaによると、オリジナルのVNCの"正統な後継ソフト"だとのこと。 Seamlessly connect devices directly or via the Cloud.とのことで、 RealVNCのアカウントを作成することで、クラウドを介してインターネット越しのVNCにアクセスすることができます。

スクリーンショット 2017-03-02 23.57.07.png

個人利用であれば、HOMEプランのアカウントが無料で作成でき、クラウド連携ができます。他にPROFESSIONALプラン、ENTERPRISEプランがあるようですので、詳しくは公式サイトを確認してください。

https://manage.realvnc.com/pricing

アカウント作成

サイト上部の「SIGN IN」から登録をすることで、アカウントが作成できます。登録自体は難しいことはないと思います。

VNCサーバー(Raspberry Pi)の設定

VNCを有効にする

raspi-configコマンドから、VNCを有効にしましょう。

アカウントの設定

Raspberry Pi右上のツールバーのところのVNCアイコンを右クリックし、Licensingを選択します。

Kobito.kGjeED.png

  1. Sign in to your RealVNC accountを選択します。
  2. そして先ほど作成したアカウント情報を設定します。
  3. Direct and cloud connectivityを選択します。

VNCクライアントの設定

Viewerのインストール

RealVNCのサイトからインストーラーをダウンロードします。 いろいろなOS向けに提供されています。

スクリーンショット 2017-03-03 6.07.53.png

インストーラーを実行してインストールします。 VNC Serverは今回は必要ないので、インストールしなくてもOKです。

スクリーンショット 2017-03-03 6.11.30.png

アカウントの設定

インストールが終わったら、起動し、アカウントの設定を行います。 これといって難しいところはないと思います。

接続

設定が終わったら、接続できることを確認してください。

おまけ

サーバー側のオプション設定に、

  • Allow Cloud connection
  • Allow direct VNC connections over TCP

の設定があります。

オプション設定はRaspberry Pi右上のツールバーのところのVNCアイコンを右クリックし、Optionsを選択すると表示されます。

Kobito.GNHoth.png

Allow direct VNC connections over TCPのチェックを外すと、5900番ポートでLISTENしなくなり、クラウド経由の方法でのみ接続できる状態となります。

  • SSHオフ
  • VNCのダイレクトコネクトオフ
  • VNCのクラウドコネクトだけオン
  • RealVNCのアカウントで二段階認証の設定をする

としておくと、Raspberry Piのセキュリティ対策として良いのではないでしょうか。

· 約8分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

私の両親は共にiPhoneユーザーですが、残念ながらプリンターがAirPrintに対応していません。 そのため、Raspberry PiをAirPrintサーバーにしてプレゼントして親孝行をする作戦です。

準備するもの

  • Raspberry Pi 3
  • ケース
  • 電源
  • microSDカード

OSの選択

無難にRaspbianを選択しました。 本日時点の最新バージョンはこれでした。

https://www.raspberrypi.org/downloads/raspbian/

RASPBIAN JESSIE WITH PIXEL
Version:January 2017
Release date:2017-01-11

OSインストール

microSDカードにインストールします。

Windowsの場合だと、「DD for Windows」を使う方法が一般的ですが、変わった方法として、「Chromebook リカバリ ユーティリティ」を使った方法を紹介します。

Chromebook リカバリ ユーティリティ

名前の通り、Chromebookをリカバリするときに使うツールです。 Chromeアプリですので、Chrome ウェブストアからインストールしてください。

https://chrome.google.com/webstore/detail/chromebook-recovery-utili/jndclpdbaamdhonoechobihbbiimdgai?hl=ja

image

インストール手順

  1. RaspbianのOSイメージをダウンロード、展開します。
  2. Chromebook リカバリ ユーティリティを起動します。
  3. 画面右上のギアアイコンから「ローカルイメージを使用」を選択します。
  4. OSイメージファイルを選択する。 ※拡張子「*.bin」でフィルタリングされているので、注意
  5. 次々進んでインストールを完了させます。

SSHの有効化

最近のRaspbianはSSHがデフォルトで無効になっているようです。 (リリースノートによると2016/11/25から)

bootパーティションにsshというファイルを作成すると有効にできますので、 ファイル作成します。

WindowsのエクスプローラーでSDカードのドライブを開き、
右クリック→新規作成→「テキストドキュメント」
ファイル名を「ssh」に変更

起動!

microSDカードをRaspberry Piに差し替え、電源を入れます。 Wi-Fiの設定はまだなので、一旦は有線Lanも接続します。

ログイン

SSHでログインします。

Windowsで名前解決ができない場合は、iTunesかBonjour Print Services をインストールしましょう。 https://support.apple.com/kb/DL999?locale=ja_JP&viewlocale=ja_JP

設定

Raspberry Piの初期設定です。設定の詳細は他の方の投稿を参考にしてください。

sudo raspi-config

変更したもの

  • パーティションの拡張
  • ロケールを「en_US.UTF-8」と「 ja_JP.UTF-8」に変更。
  • VNCの有効化

インストール&設定

OSアップデート

まずは手動で更新します。

sudo apt-get update    # 取得元からパッケージインデックスファイルの再同期を行うのに使用します。
sudo apt-get upgrade # 現在システムにインストールされている全パッケージの最新バージョンを、/etc/apt/sources.list に列挙した取得元からインストールするのに使用します。
sudo apt-get dist-upgrade # upgrade の機能に加え、新バージョンのパッケージに対する依存関係の変更を知的に操作します。

OS自動更新設定

Windows Update風に自動更新する設定をします。 https://wiki.debian.org/UnattendedUpgrades

sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

ウイルス対策ソフト

ClamAV https://www.clamav.net/

sudo apt-get install clamav

このあとに freshclamを実行しようとか、root権限にしようとか手順がよく紹介されていますが、どうも、勝手にサービス起動し、ウイルス定義ファイルの更新もしてくれているような。。

 service clamav-freshclam status
● clamav-freshclam.service - ClamAV virus database updater
Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled)
Active: active (running) since 火 2017-02-28 22:41:39 JST; 17min ago
Docs: man:freshclam(1)
man:freshclam.conf(5)
http://www.clamav.net/lang/en/doc/
Main PID: 7190 (freshclam)
CGroup: /system.slice/clamav-freshclam.service
└─7190 /usr/bin/freshclam -d --foreground=true

ログをAmazon CloudWatchに転送

急にAWSが出てきますが、今回はRaspberry Piを遠隔地(車で30分先の実家ですが)に配置するため、ログをAWSに転送したいと思います。 IAMユーザーの作成などは端折ってます。

CloudWatch Logs エージェント http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
sudo python ./awslogs-agent-setup.py --region ap-northeast-1

とりあえず、 /var/log/auth.logのログをアップロードしてみます。 何のログだろう。

Launching interactive setup of CloudWatch Logs agent ...

Step 1 of 5: Installing pip ...DONE

Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... DONE

Step 3 of 5: Configuring AWS CLI ...
AWS Access Key ID [None]: 「AWS Access Key ID」を入力
AWS Secret Access Key [None]: 「AWS Secret Access Key」を入力
Default region name [ap-northeast-1]:
Default output format [None]:

Step 4 of 5: Configuring the CloudWatch Logs Agent ...
Path of log file to upload [/var/log/syslog]: /var/log/auth.log
Destination Log Group name [/var/log/auth.log]:

Choose Log Stream name:
1. Use EC2 instance id.
2. Use hostname.
3. Custom.
Enter choice [1]: 2

Choose Log Event timestamp format:
1. %b %d %H:%M:%S (Dec 31 23:59:59)
2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36)
3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54)
4. Custom
Enter choice [1]: 1

Choose initial position of upload:
1. From start of file.
2. From end of file.
Enter choice [1]: 2
More log files to configure? [Y]: N

Step 5 of 5: Setting up agent as a daemon ...DONE


------------------------------------------------------
- Configuration file successfully saved at: /var/awslogs/etc/awslogs.conf
- You can begin accessing new log events after a few moments at https://console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logs:
- You can use 'sudo service awslogs start|stop|status|restart' to control the daemon.
- To see diagnostic information for the CloudWatch Logs Agent, see /var/log/awslogs.log
- You can rerun interactive setup using 'sudo python ./awslogs-agent-setup.py --region ap-northeast-1 --only-generate-config'
------------------------------------------------------

なぜかサービスが有効にならないので、自分でサービス有効化&起動

sudo systemctl enable awslogs
sudo service awslogs start

最終的にこんな感じにしました。

sudo cat /var/awslogs/etc/awslogs.conf
[/var/log/auth.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/auth.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/auth.log
[/var/log/clamav/freshclam.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/clamav/freshclam.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/clamav/freshclam.log
[/var/log/cups/error_log]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/cups/error_log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/cups/error_log
[/var/log/unattended-upgrades/unattended-upgrades.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/log/unattended-upgrades/unattended-upgrades.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/unattended-upgrades/unattended-upgrades.log

プリントサーバー

本題です。

CUPS https://www.cups.org/

sudo apt-get install cups
sudo apt-get install printer-driver-all # プリンタードライバー

プリンター管理ができるようにグループ追加

sudo gpasswd -a pi lpadmin

VNCでログインし、Chromiumブラウザで https://localhost:631 にアクセスします。

VNCもChromeアプリで提供されています。 https://chrome.google.com/webstore/detail/vnc%C2%AE-viewer-for-google-ch/iabmpiboiopbgfabjmgeedhcmjenhbla

image

怒られても気にしない。

詳細設定 → localhostにアクセスする(安全ではありません) をクリック

image

何だこの解像度は。 設定を進めましょう。

  • [管理]タブを選択
  • [サーバー][サーバー設定]
    • 「このシステムに接続されているプリンターを共有」にチェック
    • 「リモート管理を許可」にチェック
    • 「所有者以外のユーザーにもジョブのキャンセルを許可」にチェック
  • 「設定の変更」ボタンをクリック
  • ログインダイアログが出たら、piユーザーのアカウント/パスワードを入力

これで他のパソコンからもアクセスできます。

  • [管理]タブを選択
  • [プリンター][プリンターの追加]ボタンクリック
  • 設定したいプリンターを選択
  • 「このプリンターを共有する」にチェック

今回は実家に設置するので印刷に失敗したら、ジョブをキャンセルするようにします。 「デフォルトオプション」の中の「ポリシー」を選び、エラーポリシーを「abort-job」にします。

その他

最終的にはVNCもSSHも無効にしようかと計画中。 そしてTeamViewerをインストールしようかな。 https://www.teamviewer.com/ja/download/linux/

参考サイト

http://qiita.com/torch32171/items/c816acd5afa45fddabfe http://qiita.com/tomiyan/items/77c7794074f9445ea548 http://qiita.com/ryosy383/items/ac450750e9419b5bcf75 http://orangain.hatenablog.com/entry/unattended-upgrades http://l-chika.hatenablog.com/entry/2017/01/27/190853