通勤ノート

片道1時間の通勤時間がもったいないので、備忘録などを。

TeamViewerインストール

特定の方へのTeamViewerのインストール説明なので汎用性はないかも。

必要なもの

  • 接続元のパソコン(会社のノートパソコンなど外出時に使うもの)
  • 接続先のパソコン(会社のデスクトップ)
  • 個人のメールアドレス  (インストールの時に読めるもの。今回は個人利用なのでプライベートなメールアドレス)

接続元(ノート等)へのインストール

ゆっくり時間を掛けれる環境で準備したほうがいいと思うのでまず手元にあるノートパソコンへ先にインストールしたいと思います。

  1. TeamViewerの公式サイトでWindowsOS用のインストーラをダウンロードします。 www.teamviewer.com

    f:id:oarisumi:20191227095900p:plain
    赤枠のボタンでダウンロード

  2. TeamViewer_Setup.exeを起動します。

  3. ノートPCではこのように選択してセットアップを進めます。 f:id:oarisumi:20191227100515p:plain

  4. セットアップが完了したらTeamViewerが起動します。そこでサインインをクリックします。 f:id:oarisumi:20191227103908p:plain

  5. アカウントを新規作成します。
    ※メールアドレスとパスワードは会社のデスクトップにセットアップする際に必要なので覚えておいてください。 f:id:oarisumi:20191227101301p:plain

  6. 登録完了時に、登録したメールアドレスに認証メールが届く時があるのでその場合は、メール内のリンクをクリックアクティベイトしてください。 f:id:oarisumi:20191227101429p:plain

これで接続元(ノートパソコン)の設定は完了です。
お疲れさまでした。次は会社のパソコンにセットアップします。

接続先(デスクトップ等)へのインストール

  1. TeamViewerの公式サイトでWindowsOS用のインストーラをダウンロードします。 www.teamviewer.com

    f:id:oarisumi:20191227095900p:plain
    赤枠のボタンでダウンロード

  2. TeamViewer_Setup.exeを起動します。

  3. デスクトップPCではこのように選択してセットアップを進めます。
    ※ちょっとノートPCの時と違います f:id:oarisumi:20191227101741p:plain

  4. セットアップが完了したらTeamViewerが起動し、遠隔で操作されるための設定が始まります。 f:id:oarisumi:20191227101922p:plain

  5. このパソコンをTeamViewerに登録します。 ※パスワードは会社のデスクトップに接続するために必要になることがあるので覚えておいてください。 f:id:oarisumi:20191227104241p:plain

  6. ノートPCセットアップ時に登録したメールアドレスとパスワードを入力します。 f:id:oarisumi:20191227102545p:plain

  7. 端末の認証が必要になる場合があるので、その場合は登録したメールアドレスに届いたメールから端末を認証します。 f:id:oarisumi:20191227102637p:plain f:id:oarisumi:20191227102710p:plain

  8. いくつか次へボタンで進め、TeamViewerのトップ画面が表示されたらセットアップは完了です。

これで接続先(デスクトップパソコン)の設定は完了です。
次はノートパソコンから会社のパソコンに繋げる方法を説明します。

遠隔操作のための接続

  1. ノートPCのTeamViewerを起動します。左側のメニューで「リモートコントロール」を選択します。

  2. TeamViewerのトップ画面右上に「リモートコンピュータの操作」という欄があるのでドロップダウンメニューをクリックします。 f:id:oarisumi:20191227103028p:plain

  3. すると、デスクトップPCセットアップの際に付けたパソコン名が表示されると思うのでそれを選択します。

  4. [接続]ボタンをクリックすると会社のデスクトップ画面が表示されます。

お疲れさまでした。

Windows Server 2008 R2上のタスクスケジューラで動かないバッチ

サーバの引っ越しでWindows Server 2008 から R2環境にシステムを移動した。特に問題もなく稼働していると思ったのだけれどタスクスケジューラに登録したバッチが働いていない。起動自体はしているようだが途中のコマンドで止まっている様子。

「ユーザーがログインしているときのみ実行する」に変更し、コマンドプロンプトが表示される状態で確認するとパスが通っていないようなのでバッチ内のコマンドをフルパスに書き換えたら正常に動作した。

バッチの書き換えが面倒な場合は下記の方法でもいいみたい。

  1. タスクのプロパティ - 操作タブを開く
  2. 目的のタスクを選択し、編集を押す
  3. 「開始(オプション)」にバッチファイルを置いてあるパスを記入する 例) C:\batch\

既に開発に取り掛かっている既存ソースをGitで管理したい場合

既に開発中の既存ソースをGitで管理したい場合は、リモートリポジトリを新規で作成し、そこにプッシュし初期化します。


1. 既存ソースフォルダで右クリック ->「Git Init Here」を選択し起動
2. フォルダ内で「Git Gui」を選択し起動
3. 「変更をコミット予定に入れる」をクリック
4. コミットメッセージに「初版」などと入れて「コミット」をクリック
5. メニュ -> リモート -> 追加でダイアログを開く
6. リモートの詳細
    名前: origin
    場所: (リモート側リポジトリの場所を指定)Q:git\xyz.git 等
  その他の動作
    「リモートレポジトリを初期化してプッシュ」を選択
7. 追加ボタンをクリック

jQuery dataTablesでtextbox列もソートする

一覧表table内の入力欄としてtextboxを使用しているときに、その列はソートが効かない。そんなときはtextboxの中身でソートするように拡張してあげる。

拡張部分

ここのサンプルから抜粋。他にもセレクトボックスやチェックボックスのソートに関するサンプルもあります。
http://datatables.net/release-datatables/examples/plug-ins/dom_sort.html

$.fn.dataTableExt.afnSortData['dom-text'] = function (oSettings, iColumn) {
   return $.map(oSettings.oApi._fnGetTrNodes(oSettings), function (tr, i) {
       return $('td:eq(' + iColumn + ') input', tr).val();
   });
}

呼出し部分サンプル

対象のテーブルに全部で6列あり、3列目がtextboxの場合のサンプルです。

$('#example').dataTable({
    "aoColumns": [
        null,
        null,
        { "sSortDataType": "dom-text" },
        null,
        null,
        null
        ]
});

jQuery dataTablesの検索フォームで区切り文字として全角スペースを使えるようにする

jQuery の dataTablesはソートやページング、状態Cookie記憶、検索機能などをテーブルに追加するための多機能プラグインです。特にヘッダ固定のスクロール機能は社内システムでは要望が多く、簡単に実装できるので重宝してます。
ただ、ちょっとしたことですがスペース区切りの複合検索の際に全角スペースが使えません。そんなときは下記のように全角スペースを半角スペースに変換してあげるとうまく動くと思います。

jQuery DataTables
http://datatables.net/index

全角スペース対応の複合検索サンプル
var oTable =$('#example').dataTable();
 
$('.dataTables_filter input').bind('keyup', function () {
   // 全角スペースを半角スペースに置換して検索する。
   oTable.fnFilter($(this).val().replace(/\u00A0|\u3000/g, " "));
});

SQL Server Expressを自動バックアップ

前回はMySQLの自動バックアップを行ったので、次はSQLServerについても同様にバックアップを。

有償版のSQL ServerならSQL Server Management StudioのSQL Serverエージェントで定期バックアップが可能ですが、Express版ではタスクスケジューラなどを使う必要があるみたいです。
使い方は下記2つのファイルを同じフォルダに置き、ソース内のバックアップ設定場所などを適宜設定してください。

タスクスケジューラに登録するときはbackupSQLServerAll.batのほうを登録。
なお、データベース毎にバックアップファイルを生成するためファイル数が多くなってしまうので前回のMySQLバックアップとは異なり、日付のフォルダを生成してからバックアップファイルを生成するようにしました。ただ前回と同様、バックアップファイルは自動で削除されないのでお気をつけて。


2014/03/07 追記
WindowsServer2008R2のタスクスケジューラで動かない場合は、下記をご参考ください
Windows 2008 Server R2上のタスクスケジューラで動かないバッチ - 通勤ノート



backupSQLServerAll.bat
@ECHO OFF
REM ------------------------------------
REM SQLServer全体バックアップBatch
REM backupSQLServerAll.bat
REM ------------------------------------
 
setlocal
 
REM --- userSetting start --------------
 
REM uDirにバックアップ先フォルダを指定します。
set uDir=D:\DBBACKUP\sqlserver\
 
REM uSrvNameに接続するデータベースサーバーのインスタンス名を指定します。
set uSrvName=localhost\sqlexpress
 
REM uConnectに接続方式を指定します。
REM     Windows認証の場合は -E
REM     SQL Server認証の場合は -U [ユーザー名] -P [パスワード]
set uConnect=-E
 
REM --- userSetting end ----------------
 
cd /d %~dp0
set dt=%date%
set fDate=%dt:~-10,4%%dt:~-5,2%%dt:~-2,2%
set fDir=%uDir%%fDate%
 
mkdir %fDir%
 
sqlcmd -S %uSrvName% %uConnect% -i sqlserverBackup.sql
 
endlocal


sqlserverBackup.sql
/*
* データベース自動バックアップScript
* sqlserverBackup.sql
*/
 
--- userSetting START ------------------
 
-- uPathにバックアップ保存先のフォルダを指定します。
DECLARE @uPath varchar(200)= 'D:\DBBackup\sqlserver\'
 
-- uSVNameに任意のサーバー名を指定します。
DECLARE @uSVName varchar(200)= 'devPC'
 
--- userSetting END --------------------
 
DECLARE @fDate datetime = GETDATE()
DECLARE @fDateStr char(8) = CONVERT(char(8), @fDate, 112)
DECLARE @fExt varchar(200) = '.bak'
 
-- DB名の一覧を取得します。
-- WHERE以下でシステムDBを除外のつもり。(問題があればWHERE以下を削除してください。)
DECLARE dbCursor CURSOR FOR
SELECT name FROM sys.databases WHERE owner_sid <> 0x01
 
OPEN dbCursor
DECLARE @dbName varchar(200)
FETCH NEXT FROM dbCursor INTO @dbName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @fComment varchar(200) = @dbName + '-完全バックアップ'
DECLARE @fName varchar(600) = @uPath + @fDateStr + '\\' + @uSVName + '-' + @dbName + '-' + @fDateStr + @fExt
 
BACKUP DATABASE @dbName TO DISK = @fName WITH INIT, NAME = @fComment
 
FETCH NEXT FROM dbCursor INTO @dbName
END
CLOSE dbCursor
DEALLOCATE dbCursor
GO