2019年2月8日金曜日

Google code-prettifyによるBloggerでのコード埋め込み

2019 Jun. 30.
2019 May 02.
2019 Feb 08.

参照元
https://torina.top/detail/460/
http://labs.kamimoto.biz/javascript/google-code-prettify-linenums.html

・HTML編集モードで編集する。

・記述するタグ

  • <script></script> ページ先頭に記述
  • <style></style>  行番号・スクロールバー設定
  • <pre class="prettyprint linenums"></pre> 本文記述 


・HTML構成

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script><style>
.prettyprint ol.linenums > li {
list-style-type: decimal;
}
pre.prettyprint {
white-space: pre;
overflow: auto;
}
</style>

<pre class="prettyprint linenums">
コンテンツ1
</pre>

<pre class="prettyprint linenums">
コンテンツ2
</pre>

・行番号表示

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>

 <style>
.prettyprint ol.linenums > li {
  list-style-type: decimal;
}
</style>
<pre class="prettyprint linenums">
 YOUR CODE HERE
</pre>

・横スクロールバー

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>

<style>
pre.prettyprint {
  white-space: pre;
  overflow: auto;
}
</style>
<pre class="prettyprint linenums">
 YOUR CODE HERE
</pre>

2019年2月2日土曜日

JAVA SSHサーバーとの間で公開鍵認証でファイルをやり取りする

2019 Feb. 02.

https://qiita.com/nenokido2000/items/a00348c9f6a0f942773b より


import com.jcraft.jsch.*;
import java.util.Arrays;
import java.util.Hashtable;
public class Main {

    /** Channel接続タイプ */
    private static final String CHANNEL_TYPE = "sftp";

    /**
     * ファイルアップロード
     *
     * @param hostname
     *            接続先ホスト
     * @param port
     *            接続先ポート
     * @param userId
     *            接続するユーザ
     * @param identityKeyFileName
     *            鍵ファイル名
     * @param sourcePath
     *            アップロード対象ファイルのパス<br>
     *            アプリ実行環境上の絶対パスを指定
     * @param destPath
     *            アップ先のパス
     * @throws JSchException
     *             Session・Channelの設定/接続エラー時に発生
     * @throws SftpException
     *             sftp操作失敗時に発生
     */
    public void putFile(final String hostname, final int port,
                        final String userId, final String identityKeyFileName,
                        final String passPhrase,
                        final String sourcePath, final String destPath,
                        final String remotePath, final String localPath)
            throws JSchException, SftpException {

        Session session = null;
        ChannelSftp channel = null;

        try {
            session = connectSession(hostname, port, userId, identityKeyFileName, passPhrase);
            channel = connectChannelSftp(session);
            channel.put(sourcePath, destPath);
            channel.get(remotePath, localPath);
        } finally {
            disconnect(session, channel);
        }
    }

    /**
     * Sessionを開始
     *
     * @param hostname
     *            接続先ホスト
     * @param port
     *            接続先ポート
     * @param userId
     *            接続するユーザ
     * @param identityKeyFileName
     *            鍵ファイル名
     */
    private Session connectSession(final String hostname, final int port,
                                   final String userId, final String identityKeyFileName,
                                   final String passPhrase)
            throws JSchException {

        final JSch jsch = new JSch();

        // HostKeyチェックを行わない
        Hashtable config = new Hashtable();
        config.put("StrictHostKeyChecking", "no");
        jsch.setConfig(config);

        // 鍵追加
        jsch.addIdentity(identityKeyFileName, passPhrase );

        // Session設定
        final Session session = jsch.getSession(userId, hostname, port);
        final UserInfo userInfo = new SftpUserInfo();

        // TODO 今回は使用しないがパスフレーズ等が必要な場合はUserInfoインスタンス経由で設定する

        session.setUserInfo(userInfo);

        session.connect();

        return session;
    }

    /**
     * SFTPのChannelを開始
     *
     * @param session
     *            開始されたSession情報
     */
    private ChannelSftp connectChannelSftp(final Session session)
            throws JSchException {
        final ChannelSftp channel = (ChannelSftp) session
                .openChannel(CHANNEL_TYPE);
        channel.connect();

        return channel;
    }

    /**
     * Session・Channelの終了
     *
     * @param session
     *            開始されたSession情報
     * @param channels
     *            開始されたChannel情報.複数指定可能
     */
    private void disconnect(final Session session, final Channel... channels) {
        if (channels != null) {
            Arrays.stream(channels).forEach(c -> {
                if (c != null) {
                    c.disconnect();
                }
            });
        }
        if (session != null) {
            session.disconnect();
        }
    }

    /**
     * SFTPに接続するユーザ情報を保持するクラス
    */
    private static class SftpUserInfo implements UserInfo {

        @Override
        public String getPassword() {
            return null;
        }

        @Override
        public boolean promptPassword(String arg0) {
            return true;
        }

        @Override
        public boolean promptPassphrase(String arg0) {
            return true;
        }

        @Override
        public boolean promptYesNo(String arg0) {
            return true;
        }

        @Override
        public void showMessage(String arg0) {
        }

        @Override
        public String getPassphrase() {
            return null;
        }
    }


    public static void main(String[] args) throws JSchException, SftpException {

        String Hostname="SSH-SERVER-IP-ADDRESS";
        int Port=22;
        String UserId="USER";
        String PassPhrase = "YOUR-PASSPHRASE";
        String IdentityKeyFileName=System.getProperty("user.home")+"/PRIVATEKEY";
        String SourcePath=System.getProperty("user.home")+"/PATH/TO/FILE";
        String DestPath="PATH/TO/DESTFILE";
        String RemotePath="PATH/TO/REMOTEFILE";
        String LocalPath=System.getProperty("user.home")+"/ANOTHER/PATH/TO/FILE";

        final Main sftp = new Main();
        sftp.putFile(Hostname, Port, UserId, IdentityKeyFileName, PassPhrase,
                SourcePath, DestPath, RemotePath, LocalPath);
    }
}