IT単語覚書2

  • DXとは
    デジタル化をしてビジネスに手を加えて儲ける仕組みをつくること。
    IT化したことで発生したデータをさらに活用しビジネスを生み出すこと。
    ・アナログ業務をデジタル化:デジタイゼーション(これは昔のIT化)
    ・データをクラウドにあげる。:デジタライゼーション
    ・データを活用し新しいビジネス:デジタルフォーメーション(DX)
    と定義しているが、ひっくるめてDXと定義してもよい。

    従来のシステム
    ・機能ファースト:機能を活用して効率化
    DX志向のシステム
    ・データファースト:データを活用して効率化

    データとビジネスのやりとりのことをUXという。
    そしてそれを続けるとDXになる。
    DX=データ x UX x ビジネス
    DXはデジタル化、IT化で終わらないようにする点が異なる。
    DXはシステム開発ではなく、ビジネス開発のことと言える。

    ・・・ぶっちゃけ今のデジタル化、IT化の範囲でも同じようにやっている。
    IT化、デジタル化との違いはほぼない。
    IT業界は異なる言葉で定義したがる傾向がある。

  • DXのXとは
    デジタルトランスフォーメーション
    海外では、トランスフォーメーションのことを「X」とよぶ。

【WordPress】WordPressテーマ変更

WordPressを入れ直したので、外観-テーマをTwenty Seventeenに変更しました。
それに伴い、デザインをカスタマイズしています。

  • アーカイブを変更
    トップページが全文表示から抜粋表示に変更となります。
    archive.php

    1get_template_part( 'template-parts/post/content', get_post_format() );
    2
    3get_template_part( 'template-parts/post/content', 'excerpt' );
  • 「投稿」文字を削除
    記事の上にある「投稿」の文字を削除します。
    index.php

    1以下を削除
    2<header class="page-header">
    3  <h2 class="page-title"><?php _e( 'Posts', 'twentyseventeen' ); ?></h2>
    4</header>
  • 「カテゴリ」文字を削除
    記事の上にある「カテゴリ」の文字を削除します。
    archive.php

    1以下を削除
    2<?php if ( have_posts() ) : ?>
    3  <header class="page-header">
    4    <?php
    5      the_archive_title( '<h1 class="page-title">', '</h1>' );
    6      the_archive_description( '<div class="taxonomy-description">', '</div>' );
    7     ?>
    8  </header><!-- .page-header -->
    9<?php endif; ?>
  • パンくずリストの追加(未実施)
    fanction.php

    1以下を一番下に追加
    2function breadcrumb(){
    3  global $post;$str ='';
    4  if(!is_home()&&!is_admin()){
    5    $str.= '<div id="breadcrumb" class="cf"><div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;">';
    6    $str.= '<a href="'. home_url() .'" itemprop="url"><span itemprop="title">ホーム</span></a> &gt;&#160;</div>';
    7    if(is_category()) {
    8      $cat = get_queried_object();
    9      if($cat -> parent != 0){
    10        $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
    11        foreach($ancestors as $ancestor){
    12          $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor) .'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor) .'</span></a> &gt;&#160;</div>';
    13          }
    14        }
    15       $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
    16    }elseif(is_page()){
    17      if($post -> post_parent != 0 ){
    18        $ancestors = array_reverse(get_post_ancestors( $post->ID ));
    19        foreach($ancestors as $ancestor){
    20          $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_permalink($ancestor).'" itemprop="url"><span itemprop="title">'. get_the_title($ancestor) .'</span></a> &gt;&#160;</div>';
    21        }
    22      }
    23    }elseif(is_single()){
    24      $categories = get_the_category($post->ID);
    25      $cat = $categories[0];
    26      if($cat -> parent != 0){
    27        $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
    28        foreach($ancestors as $ancestor){
    29          $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor).'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor). '</span></a>→</div>';
    30        }
    31      }
    32      $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
    33    }else{
    34      $str.='<div>'. wp_title('', false) .'</div>';
    35    }
    36    $str.='</div>';
    37  }
    38  echo $str;
    39}
    1以下をパンくずリストを表示したいphp(page.phpやsingle.phpなど)に追加
    2<?php breadcrumb(); ?>

【サクラエディタ】正規表現でキャメルケースとスネークケースの変換

文字形式の説明。

  • キャメルケース
    単語の先頭を大文字にする命名規則。
    全ての単語の先頭を大文字にするのがアッパーキャメルケース、または、パスカルケースと呼ばれる。
    JavaのBeanでset/getを除外した名称で使用されることが多い。
    例)CamelCase

    先頭の単語だけ小文字にするのがローワーキャメルケースと呼ばれる。
    JavaやJavaScriptのメソッド名で使用されることが多い。
    例)camelCase

  • スネークケース
    単語の間をアンダーバーでつなぐ命名規則。
    DBの値に使用されることが多い。
    例)snake_case、SNAKE_CASE
  • アッパーキャメルケースからスネークケースに変換
    ・検索条件:”([A-Z])”
    ・置換:”_\L$1″
    サクラエディタで大文字、小文字を区別して検索チェックする。
    変換後に先頭の「_」は後から削除する。
    例)CamelCase → _camel_case
  • スネークケースをアッパーキャメルケースに変換
    ・検索条件:”(_|^)(.)”
    ・置換:”\u$2″
    サクラエディタで大文字、小文字を区別して検索チェックする。
    先頭またはアンダースコアに続く1文字を置換対象にする。
    対象となる文字は$2で参照できるので、これを\uで大文字に変換する。
    例)camel_case → CamelCase

【bat】Oracleサービスとリスナー起動停止

Oracleサービスとリスナーをbatファイルで起動する。
起動順序としてはリスナー起動、サービス起動となる。
停止順序は逆順となる。

Oracleリスナー起動
1@echo off
2setlocal
3REM Oracleリスナー起動
4set ROOT_DIR=D:/batch
5set BIN_DIR=%ROOT_DIR%/bin
6set LOG_FILE=%ROOT_DIR%log/%~n0.log
7  
8echo [ INFO ] %DATE% %TIME% Oracleリスナー起動開始>>%LOG_FILE%
9cd D:/Product/Ofs41_1\FailSafe\Client
10FSCMD ONLINERESORCE FslDBServer /CLUSTER=DBServer>>%LOG_FILE%
11 
12if NOT %ERRORLEVEL%==0 goto ERR_END
13 
14timeout /t 120 /nobreak
15 
16echo [ INFO ] %DATE% %TIME% Oracleリスナー起動終了>>%LOG_FILE%
17exit /b
18 
19:ERROR_END
20echo [ ERROR ] %DATE% %TIME% Oracleリスナー起動失敗>>%LOG_FILE%
21exit
22 
23endlocal
Oracleサービス起動
1@echo off
2setlocal
3REM Oracleサービスー起動
4set ROOT_DIR=D:/batch
5set BIN_DIR=%ROOT_DIR%/bin
6set LOG_FILE=%ROOT_DIR%log/%~n0.log
7  
8echo [ INFO ] %DATE% %TIME% Oracleサービス起動開始>>%LOG_FILE%
9cd D:/Product/Ofs41_1\FailSafe\Client
10FSCMD ONLINERESORCE IFSDB /CLUSTER=DBServer>>%LOG_FILE%
11 
12if NOT %ERRORLEVEL%==0 goto ERR_END
13 
14timeout /t 120 /nobreak
15 
16echo [ INFO ] %DATE% %TIME% Oracleサービス起動終了>>%LOG_FILE%
17exit /b
18 
19:ERROR_END
20echo [ ERROR ] %DATE% %TIME% Oracleサービス起動失敗>>%LOG_FILE%
21exit
22 
23endlocal

【bat】サーバ再起動

batファイルでサーバを再起動させます。

1@echo off
2setlocal
3 
4set ROOT_DIR=D:/batch
5set BIN_DIR=%ROOT_DIR%/bin
6set LOG_FILE=%ROOT_DIR%log/%~n0.log
7 
8echo [ INFO ] %DATE% %TIME% サーバ再起動開始>>%LOG_FILE%
9SHUTDOWN /r /f /c "batファイルによるリブート"
10if NOT %ERRORLEVEL%==0 goto ERR_END
11echo [ INFO ] %DATE% %TIME% サーバ再起動終了>>%LOG_FILE%
12exit /b
13 
14:ERR_END
15echo [ ERROR ] %DATE% %TIME% サーバ再起動失敗>>%LOG_FILE%
16exit /b
17 
18endlocal

【bat】共有フォルダへの接続

共有フォルダへの接続をbatファイルで自動化する。
[bat]
@echo off
rem 接続解除
net use /delete \\server\dir$ /yes

rem 接続
net use /presistent:yes “\\server\dir” /user:testuser@testdom.local password
[/bat]

上記のbatファイルをタスクスケジューラでSYSTEMユーザ実行などで登録する。
起動するとSYSTEMユーザが「\\server\dir」に接続できるようになる。
net useの「/user」はあくまでも共有フォルダへ接続するための
ユーザIDとパスワードになる。

上記の例でいうと「testuser」が共有フォルダに接続できるようになるわけではない点に注意。
(元々、ログインするためのユーザなので勘違いしやすい)

【PowerShell】ファイルサイズが大きいファイルの分割

ファイルサイズが2GBを超えるファイルは開けないため、ファイルを分割します。
Linuxではsplitがありますが、windowsでは存在しないコマンドのため、
他の方法でファイルを分割します。

前提
ファイルが「C:/log/test.log」にあるとし、
このファイルを10万行ごとのファイルに分割する。

1cd C:/log
2$i=0; cat ./test.log -ReadCount 100000 | % {$_ > test$i.log; $i++;

【Oracle】PLSQLでBLOBデータを出力

PLSQLでBLOBデータを出力します。

1CREATE OR REPLACE PROCEDURE testBlobOut (kanriNo IN VARHCAR) AS
2CURSOR C_CONTROL IS
3  SELECT
4    TB1.IMAGE_NAME,
5    TB1.IMAGE
6  FROM
7    SAMPLE TB1
8  WHERE
9    TB1.KANRI_NO = kanriNo;
10 
11v_blob_locater BLOB;
12v_offset INTEGER := 1;
13v_buffer LONG RAW;
14v_file_buffer_size INTEGER := 32000;
15v_amount INTEGER := 32000;
16v_totalsize INTEGER;
17v_filetype UTL_FILE.FILE_TYPE;
18v_filename VARCHAR2(1000) := '';
19v_openmode VARHCAR2(2) := 'wb';
20v_dir VARCHAR2(1000) := 'C/temp';
21 
22BEGIN
23  OPEN C_CONTROL;
24  LOOP
25    FETCH C_CONTROL INTO v_blob_locater, v_filename;
26    EXIT WHEN C_CONTROL%NOTFOUND;
27    DBMS_OUTPUT.PUTLINE('fileName:' || v_filename);
28    v_totalsize := DBMS_LOB.GETLENGTH(v_blob_locater);
29    v_filetype := UTL_FILE.FOPEN(
30      v_dir,
31      v_filename,
32      v_openmode,
33      v_file_buffer_size
34    );
35    while v_offset < v_totalsize loop
36      if v_offset + v_amount > v_totalsize then
37        v_amount := v_totalsize - v_offset + 1;
38      end if;
39      DBMS_LOB.READ(
40        v_blob_locater,
41        v_amount,
42        v_offset,
43        v_buffer
44      );
45      UTL_FILE.PUT_RAW(
46        v_filetype,
47        v_buffer,
48        true
49      );
50      v_offset := v_offset + v_amount;
51      DBMS_OUTPUT.PUT_LINE('Offset :' || v_offset);
52    end loop;
53    UTL_FILE.FFLUSH(v_filetype);
54    UTL_FILE.FCLOSE(v_filetype);
55 
56    DBMS_OUTPUT.PUT_LINE('fileSize :' || v_totalsize);
57  END LOOP;
58  CLOSE C_CONTROL;
59EXCEPTION WHEN OTHERS THEN
60  UTL_FILE.FCLOSE_ALL;
61  RAISE;
62END;
63/

PLSQLの実行方法

1set serveroutput ON
2execute testBlobOut('000010');

【Java】PDFからJPG変換

PDFファイルに利用されている画像をJPG変換します。
以下のライブラリが必要です。
pdfbox-2.0.7.jar
commons-logging-1.2.jar

1import java.io.File;
2import java.io.FileOutputStream;
3import java.io.IOException;
4import java.util.Iterator;
5 
6import javax.imageio.ImageIO;
7 
8import org.apache.pdfbox.cos.COSName;
9import org.apache.pdfbox.pdmodel.PDDocument;
10import org.apache.pdfbox.pdmodel.PDPage;
11import org.apache.pdfbox.pdmodel.PDPageTree;
12import org.apache.pdfbox.pdmodel.PDResources;
13import org.apache.pdfbox.pdmodel.graphics.PDXObject;
14import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
15 
16public class TestPDFBoxPdfToJpg {
17 
18    public static void main(String[] args) {
19        //PDFドキュメントをロード
20        try (PDDocument document = PDDocument.load(new File("D:\\test\\pdf\\e-ticket.pdf"));) {
21 
22            //ページのリストから最初の1ページを取得する
23            PDPageTree pageTree = document.getDocumentCatalog().getPages();
24            PDPage page = pageTree.get(0);
25 
26            //ページからリソースを取得し、最初のイメージを取得する。
27            PDResources resources = page.getResources();
28            Iterator<COSName> ite = resources.getXObjectNames().iterator();
29 
30            int i = 0;
31 
32            while (ite.hasNext()) {
33 
34                COSName name = ite.next();
35 
36                //取得したイメージをファイルに出力
37                PDXObject xobject = resources.getXObject(name);
38 
39                if (xobject instanceof PDImageXObject) {
40                    PDImageXObject image2 = (PDImageXObject) resources.getXObject(name);
41                    ImageIO.write(image2.getImage(), "jpg", new FileOutputStream("D:\\test\\pdf\\e-ticket" + i + ".jpg"));
42                }
43 
44                i++;
45            }
46 
47        } catch (IOException e) {
48            e.printStackTrace();
49        }
50    }
51}