UbuntuでのIPアドレス固定化

route -n
ゲートウェイチェック。

ifconfig
DHCPのアドレスとマスクを確認。

cat /etc/resolv.conf
DNSネームサーバ

nameserver 127.0.1.1
のように自PCになっている場合あり。

デフォルト設定だと NetworkManager が有効になっていて、
dnsmasq が DNS キャッシュサーバーとして動いている模様。

NetworkManager(ネットワーク切り替え補助)

/etc/network/interfaces
に以下を追記する。

auto wlan0
iface wlan0 inet static
address 192.168.102.15
netmask 255.255.255.0
gateway 192.168.102.1
dns-nameservers 192.168.102.1
wpa-ssid xxx
wpa-ap-scan 1
wpa-key-mgmt WPA-PSK
wpa-psk xxx

有線の場合等
auto eth1
iface eth1 inet static
address 192.168.102.100
netmask 255.255.255.0
gateway 192.168.102.1
dns-nameservers 192.168.102.1

loとはローカルループバック
autoとは自動接続

再度読み込む場合(上手く行かないことが多い)
sudo service networking restart
sudo service network-manager restart

PHP IPアドレス確認用POST

クライアント

あるいは、

Winならタスクスケジュール、ubuntuならCRONに設定しておくと、
定期的にWan側のIPがレンサバに表示できるので、そのWan側のIPを使って、
SoftEtherをダイナミックDNSではなく、IP直打ちもできる。
xxx.xxx.xxx.xxx/192.168.xxx.xxxのような感じで入力する。

post.php

s.css

Gitメモ

最初に

リポジトリはリモートとローカルがある。通常、ローカルでの作業。
ローカルで変更を保存するのがインデックス→コミット。
リモートへはプッシュ、プル。

名称のorigin, masterというのは
origin = レポジトリの別名
master = ブランチの名前
でデフォルトの名称。

git clone https://xxx
で共有リポジトリとの変更履歴も含めたファイルが保存される。

git * , git add xxx で索引に登録
git commit -m “コメント” でコミットする。(この段階では共有リポジトリには保存されていない。)

共有リポジトリにプッシュ
git push 共有リポジトリ名 ブランチ名

共有リポジトリが登録されていない場合、
git remote add origin xxxで登録できる。

現在のローカルと、共有リポジトリに差が生まれる(共有は他からpushされる)
ローカルを最新にするのがgit pull

簡単な使い方

git clone https://github.com/okamurax/vba_to_sqlserver.git
cd vba_to_sqlserver
git add .
git commit -m “first commit”
git push https://github.com/okamurax/vba_to_sqlserver.git master

基本的なコマンド

sudo apt-get install git
インストール

git config –global user.name “okamura”
git config –global user.email “mail@xxx.com”
基本設定

git config –global color.ui true
カラー表示

git config –global alias.co checkout
別名

git config -l
コンフィグ一覧

git init
現在のディレクトリを使う宣言

.git等が作成される。
この.gitと同階層以下が作業ディレクトになる印で、.gitを手動でコピーすることもできる。

git add index.rb
git add . (サブディレクトリ以下を全てaddする)
ステージングへ

git commit
git commit -m “xxx”
ステージから共有リポジトリ

git show xxx(id)
コミットの内容がみれる。

git log
コミットのログを確認できる。(リポジトリのディレクトの中にいないとダメ)

git log –oneline
一行で表示したい

git log –stat
変更ファイルされたファイル

git log -p
変更箇所を表示する

git status
ファイルの状態。

modifiedと表示されると変更されていて、
changes not staged for commit ステージングにもコミットにいないという意味。
changes to be commited とステージングにいてコミットされていない状態。

git checkout — index.rb
コミットしていないファイルを、コミットした情報に戻す。

git diff
ステージングエリアに上がっていないものを比較できる
(ローカルとステージの差分)

git diff –cached
ステージングに上がったあとは –cached
(ステージとコミットの差分)

git rm index.html
で消す

git mv index.html
で移動

vim .gitignore
で対象外を管理できる。
*.log等を書いておくと、対象外とする。
.gitignoreを置いた階層と、以下サブディレクトに有効になる。

git commit –amend
直前のコミットを変更。履歴が増えない。
コミットするファイルは通常通り、addしてcommitする
そのときに、オプションで–amendを付ける
そうすると、直前のコミットのコメントを変更できる。

git reset –hard HEAD
直前のコミットに戻す場合。

git reset –hard HEAD^
直前のコミットの一つ前に戻る

git reset –hard xxxxxxxxxxxxxx
でも戻れる。

git reset –hard ORIG_HEAD
最新の状態から以前のコミットに一度戻して、
やっぱり最新の状態で良かった場合。

git branch
ブランチの一覧取得

git branch hoge
ブランチ作る

git checkout hoge
現在のブランチへ移動する。
ファイルの変更、追加などブランチごとの状態が維持される。

git checkout -b hoge
新しいブランチを作成しつつそのブランチ移動。

git merge hoge
ブランチの変更を取り込む。
hogeでの変更がよかったので、現在のブランチに取り込む。
コミット履歴も結合される。

git branch -d hoge
ブランチ消す

git tag
タグの一覧

git tag xxx
これで直近のコミットにxxxというタグがつく。

git tag yyy xxxx
これでxxxというidのコミットにyyyというタグがつく。

git tag -d xxx
タグを消す。

共有リポジトリもローカルと同じで、
***.git のようなディレクトリを作成するし、そのディレクトの中で、
git init –bare
を実施する。
bareオプションを付けると、
そのディレクトリではファイルの作成、変更等しないという意味。

git remote add origin xxx.git
(共有リポジトリの場所)

別のリポジトリを登録
作業ディレクトにしたい場所で実行する。
そのディレクトリではまずgit initされていないとダメ。
(cloneは大丈夫なので注意)

URLに”origin”という短縮名(ニックネーム)を付けると考えればOK。

空のディレクトリでgit initして、remote addしても特にファイルはコピーされない。
(cloneはコピーされる)

git initしただけのディレクトはブランチがない。
最初のコミットでブランチができる。

git remote rm origin
登録した共有リポジトリを削除

git push ox master
作業ディレクトリの内容を共有リポジトリへ登録。
oxという共有リポジトリに向かってmasterブランチを登録する。

push:アップロード
ox:リモートのサーバ名の短縮名(直接URLでもOK)
master:ブランチ名

masterの部分は正確にはmaster:masterとなる。
(ローカルのmasterをリモートのmasterに反映)

git clone xxx.git
共有リポジトリからコピー

git pull origin master
共有から持って来てローカルでマージされる。
マージなので、共有リポジトリとローカルでの変更箇所が一緒だと、コンフリクトする。

リモートrepの作り方。ローカルの場合。

Ubuntu側でSambaで共有しているフォルダで
git init –bare –shared
をする。

–sharedしてもダメでSambaのフォルダなので、
sudo chown -R nobody:nogroup フォルダ名
を実行する。

既にリモートrepにファイルがある場合、
チームエクスプローラ > 接続管理 > 複製
から、リモートrepの場所とローカルrepの場所を指定。

リモートrepもローカルrepも1箇所で複数のソリューションを管理できる。

ローカルで使う場合(Win)

適当なフォルダ(git_remote)で
git init –bare –shared

適当なフォルダで作業

 

Robocopy メモ

コピーもとコピー先は基本的にフォルダを指定する。以下の例だとsrcの中身がdstの中に入る。

・オプション

MIR
ミラーリング

R
リトライ

W
失敗時の待機時間

NP
完了率を表示しない

FFT
FAT時間での比較

B
バックアップモード

※アクセス権がない対象もバックアップできるが、実行時に管理者権限が必要になってしまう。

XA:SH
ファイル除外指定(SHはシステム属性、隠し属性)

XJ
シンボリックリンクを除外

NDL
ログファイルにファイル名のみ出力

PHP 工程管理テストアプリ

table.php

style.css

save.php

index.php

edit_condition.php

edit.php

class.php

add_task.php

PHP Todoテストアプリ

server.php

post.php

index.php

functions.php

config.php

commands.sql

_ajax_update_task.php

_ajax_sort_task.php

_ajax_delete_task.php

_ajax_check_task.php

_ajax_add_task.php

PHP Fetchテスト

 

Google Map 基本

 

Ubuntu キーバインド変更(xmodmap)

キーバインドはWinと同等にする。

Windows 初期設定

xmodmap -pke > .xmodmap_def
このファイルを改造してリセット用のファイルを作成する。

先頭に以下を追加
clear shift
clear lock
clear control
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5

末尾に以下を追加
add shift = Shift_L
add shift = Shift_R
add lock = Eisu_toggle
add control = Control_L
add control = Control_R
add mod1 = Alt_L
add mod1 = Alt_R
add mod1 = Meta_L
add mod2 = Num_Lock
add mod4 = Super_L
add mod4 = Super_R
add mod4 = Super_L
add mod4 = Hyper_L
add mod5 = ISO_Level3_Shift
add mod5 = Mode_switch

コンソールからxevを実行してキーコードを調べる。

xmodmap -pm でモディファイを確認しておく。(xmodmap -pke で割り当ての一覧)

keycode xxx  = キーシム 1 2 3 4 5 6 となる。

1: そのキーだけを押した時の出力
2: Shiftで修飾の出力。
3: mod2で修飾の出力。
4: Shift+mod2で修飾の出力。

モディファイキーを移動する場合、モディファイから削除しておく。
remove control = Control_L等

移動後、再度追加。
add control = Control_L等

最終的に以下のように設定。

注意点として、xmodmapを繰り返すと、一度摘要された設定に再度設定するので、半角/英数などの部分でエラーになってしまう。defを一度実行すれば大丈夫。

WinがAutohotkeyで対応している部分は後々考える。

自動起動について

/etc/rc.local に xmodmap ~/.xmodmap
.profile に xmodmap .xmodmap
等に書いてもダメ。unable to open displayになってしまう。

GUI側のターミナルで、echo $DISPLAY とすると、:0 と表示されるので、
.profileには
export DISPLAY=”:0″
xmodmap .xmodmap
の2つを追記する。

これで一応SSHから入るとxmodmapが読み込まれるようだが、GUI側のターミナルを開いただけでは読まれない模様。(上記2行を/etc/profileに書いても同じ症状)
SSHで入ると、GUIの方にもxmodmapが読み込まれるようだけど。

GUIの自動起動に追加してみる。

~/.config の中に autostart フォルダを作成する。
(全ユーザ共通は /usr/share/gnome/autostart となる)
そのフォルダの中にファイルを作りファイル名は *.desktop とする。

ファイルの中に
[Desktop Entry]
Exec=xmodmap .xmodmap
Type=Application
を書いておく。

これで問題なく動いた。

作るタイミングによっては自動で.xmodmapを検出して自動起動するか確認される場合もあって気がするが、今回はなかった。

1 /etc/profile 全ユーザ共通。
2 .bash_profile なくてもいい。
3 .bash_login 上記2がない場合読まれる。なくてもいい。
4 .profile  上記2,3が無い場合読まれる。なくてもいい。
5 .bashrc シェルごとに読まれる。

SQL Server メモ

接続文字列(プロバイダ)

・OLE DB

(非推奨)SQL Server Native Client(SQLNCLI)
(非推奨)Microsoft OLE DB Provider for SQL Server(SQLOLEDB)
Microsoft OLE DB Driver for SQL Server(MSOLEDBSQL)※

ODBCにのみ対応しているDB製品に対しては、
Microsoft OLE DB Provider for ODBC(MSDASQL)

OLE DB接続文字列サンプル
“Provider=MSOLEDBSQL;Data Source=192.168.4.201,1433\MSSQLSERVER;Initial Catalog=xxx;User ID=sa;Password=xxx;”

・ODBC

(非推奨)SQL Server
(非推奨)SQL Server Native Client
Microsoft ODBC Driver for SQL Server

ODBC接続文字列サンプル
“Driver={ODBC Driver 18 for SQL Server};Server=192.168.4.201,1433\MSSQLSERVER;Database=xxx;Uid=sa;Pwd=xxx;Encrypt=Optional”

ドライバー(DSN確認)
cmd>odbcad32

※MSOLEDBSQL 3706エラー

・Microsoft OLE DB Driver for SQL Server 19.3(x64)
https://go.microsoft.com/fwlink/?linkid=2220017
がインストールできず、以下が必要と表示された。

Microsoft Visual C++ Redistributable for Visual Studio 2022
https://aka.ms/vs/17/release/vc_redist.x64.exe
を追加してもインストールできなかった。

・Microsoft OLE DB Driver for SQL Server 19.2(x64)
https://go.microsoft.com/fwlink/?linkid=2212594
はインストールできたが、
(3706)プロバイダーが見つかりません
エラーとなってしまう。

接続文字列を
“Provider=MSOLEDBSQL.19; … Use Encryption for Data=False”
としたがダメだった。

Microsoft ODBC Driver 13.1 for SQL Server
https://www.microsoft.com/ja-JP/download/confirmation.aspx?id=53339
を入れて見たがダメだった。

コマンドラインの場合

ダウンロードする種類

64ビット環境
JPN\x64\sqlncli.msi
JPN\x64\SqlCmdLnUtils.msi
の2つを保存

32ビット環境
JPN\x86\sqlncli.msi
JPN\x86\SqlCmdLnUtils.msi
の2つを保存

C:\Program Files\Microsoft SQL Server\110\Tools\Binn
にパスを通す

コマンドでの利用方法

ヘルプ
sqlcmd /?

・接続
sqlcmd -S サーバ名 -d DB名 -U user -P pass
sqlcmd -E -S HOST名\sqlexpress
または、
sqlcmd -E -S localhost\sqlexpress

※接続と同時にクエリを渡さないと、対話状態になる。

・オプション

-E
Windows認証
-Q
インラインでSQL
-i
SQLのファイルを渡せる。

・データベース一覧の表示
1> select name from sys.databases
2> go

・データベースの指定
1> use my_database
2> go

・テーブル一覧の表示
1> select name from sys.tables
2> go

バッチファイルでバックアップ

バッチファイルには以下を記述。
sqlcmd -E -S host名\sqlexpress -i “sql.txt”

sql.txt

バックアップ情報

バックアップ復元

リモート接続の設定

最初の接続時、情報がなければ、
localhost\SQLEXPRESS
Windows認証
で接続する。

・SQL Server Management Studio(SSMS)

セキュィティ>ログイン>sa>プロパティ>全般
パスワードを設定

セキュィティ>ログイン>sa>プロパティ>状態
ログインを有効化

インスタンス右クリック>プロパティ>セキュリティ
SQL Server認証とWindows 認証モード

インスタンス右クリック>プロパティ>接続
リモート接続を許可

・自動起動

services.msc
(もしなっていない場合)SQL Server Browserを自動へ

・SQL Server構成マネージャ
C:\Windows\System32\SQLServerManager15.msc
(スタートメニューの場合、SQL Server xxx 構成マネージャー)

SQLEXPRESSのプロトコル
共有メモリ>有効
名前付きパイプ>無効
TCP/IP>有効

TCP/IPプロパティ>IPアドレス>IPALL
TCPポートを1433(任意)
TCP動的ポートを空白

・ファイアーウォールの設定(ローカルの場合)

firewall.cpl
操作>新しい規則>ポート指定>TCP>特定のローカルポート(1433)>接続を許可する>プライベートのみ選択

ここまでやるとSSMSから
sa
指定したパスワード
でログインできる。

接続できない場合の対応

「SQL Server が存在しないか、アクセスが拒否されました」というエラーで接続できませんでした。

C:\Windows\System32\SQLServerManager15.msc
(スタートメニューの場合、SQL Server xxx 構成マネージャー)

TCP/IPが有効になっているか

ポート番号はカンマ区切り。
インスタンス名はservices.mscから調べることができる。

サービスについて

SQL Server Browser
ネットワーク上のSQL Serverを自動検出。リモートで必要な場合も。

SQL Server CEIP サービス
カスタマーエクスペリエンス向上プログラム。

SQL Server VSS Writer
ボリューム シャドウ コピー サービス。

SQL Server エージェント
スケジュールされたジョブの実行。

弥生会計17から利用

上記のSQL Server Management Studioから設定し、
ユーザー名:sa
パスワード:指定したパスワード
からログインできる状態。

・設定

インストール後、弥生会計ではデータベースの新規作成を進めていき、サーバーの設定画面で、
保存場所:localhost\SQLEXPRESS
ユーザー名:sa
パスワード:指定したパスワード
とすればOK。

***

SQL Serverの設定を変えた場合
接続できない場合。
接続できるけどデータがない場合。
の2通り。(エラーの表示が違う)

ファイル>開く>参照先の設定>編集
から修正できるが、データ自体がなくなっている場合は、
ファイル>新規作成>新規にデータを作成する
を実行する。

・バックアップ

バックアップ中に、オペレーティングシステムエラー5のエラーがでる場合。

サービスからSQL Server (SQLEXPRESS)のプロパティを開いて、ログオンをローカルシステムに変更。対話サービスも許可。

・バックアップの復元

ファイル>バックアップファイルの復元>対象のKB17ファイルを選択
バックアップファイルの復元というダイアログが出る。
復元先>参照先>参照先の設定>サーバーの追加
を実行し、
保存場所:localhost\SQLEXPRESS

サーバーにログインするユーザーを指定する>
ユーザー名:sa
パスワード:指定したパスワード
を指定する。

・その他

Windowsの機能から.NET3.5.1のチェックを外すと起動しない。

アンインストール

・手動削除

Win10設定>アプリ>アプリと機能(またはappwiz.cpl)
から
Microsoft SQL Server xxx Native Client:
OLE DB・ODBCドライバー(非推奨)
Microsoft SQL Server xxx LocalDB:リモート機能を省略した簡略版
Microsoft ODBC Driver xx for SQL Server:ODBCドライバー
Microsoft OLE DB Driver for SQL Server:OLE DBドライバー

Microsoft SQL Server xxx T-SQL 言語サービス
を削除する。以下2つはエラーとなった。
Microsoft SQL Server xxx Setup (English)
Microsoft SQL Server xxx (64 ビット)

Microsoft SQL Server xxx Native Client
Microsoft SQL Server xxx LocalDB
SQL Server xxx 用 Microsoft System CLR Types
などは、SQL Server Management Studioをインストールすると入る。

***

・msiexec削除

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
DisplayName
“SQL Server xxx”が含まれるキー(GUID)をメモし以下のようにコマンド実行。

msiexec /x {GUID}

※PowerShellで一覧を取得する場合

アンインストール中にエラーがあったら指示通りの順番で処理する。

・レジストリ削除

HKLM\SOFTWARE\Microsoft
HKLM\SOFTWARE\Wow6432Node\Microsoft
“Microsoft SQL”、”MSSQL”
を含むキーを削除

HKLM\SOFTWARE\Classes\Installer\Products
ProductName 
“SQL Server”
を含むキーを削除

※PowerShellで一覧を取得する場合

***

以下は、URLのコマンドそのまま
https://docs.microsoft.com/ja-jp/archive/blogs/jpsql/sql-server-4

・GAC削除

・フォルダ、ファイル削除

※インストールフォルダが別にある場合手動で削除。

***

最終的にインストールのエントリーが残ってしまった。実体を削除しているので、
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
でGUIDのキーを手動で削除すればエントリーは消える。