Author Archives: admin

VScodeのシェルをmsys2に変える

変更の範囲

プロジェクト(フォルダ)ごとに設定するか、ユーザ設定にするか選べる。プロジェクトごとに設定する場合は、プロジェクトフォルダの.vscode/settings.jsonを編集する。ユーザ設定の場合は、[Ctrl]+[Shift]+Pで「Open Settings (JSON)」を選ぶと編集できる。(ただしプロジェクトごとの設定でうまく動かなかったのでここでは非推奨)

以下の内容を記述。(追加する場合は外側のカッコを無視した中身だけを追加)

bash.exeのパスは自分の環境に合わせる。バックスラッシュはエスケープするので2つ書く。環境変数CHERE_INVOKINGはディレクトリをホームに移動しない指示。MSYSTEMはMINGのツールチェインらしい。mingを使わなければ関係ないはず。

これを記述したら、プロジェクトを2回開き直す(最初に確認が行われるため)。

msys2のgitはうまく動かなかった(パス関係?)ので、オフィシャルのgitなら動くのでそれを設定

しかもmsys2はもともとのWindowsのパスを無視してしまうのでnodeやnpmが使えないのでVSCodeで好きなシェルを起動できる拡張の「Shell launcher」をインストール。設定で以下を追加。

ここにあるパスは有効なものしか機能しない。cmdやPowerShell実際の値はVSCodeが設定する値(”terminal.integrated.shell.windows”)から確認できる。以下の動画を参照。

VSCodeでcmdやpowershellのパスを確認

ショートカットキーを登録

Files –> Preferences –> Keyboard Shortcutsから登録。

VSCodeでショートカットキーを登録

またはユーザ設定のフォルダにあるkeybindings.json(C:\Users\ユーザー\AppData\Roaming\Code\User\settings.json)を以下のようにする。

apacheでjsonを返す時httpヘッダを追加する

特殊なhttpレスポンスヘッダがあるとクライアントのjsからドメイン制限を無視して取得できる。apache2で設定する方法。

mod_headers.cを有効にする

サーバのjsonを置いたディレクトリに.htaccessを置き、ここに以下の記述を追加する。
(.htaccessが有効になっている必要がある。有効になってない場合はサーバの設定ファイルに直接書くか、有効にする)

ヘッダが帰ってきているかChromeで確認

Chromeで対象jsonを開き、[Ctrl]+[Shift]+Iでdevコンソールを開き「ネットワーク」タブの「All」を開く。[Ctrl]+Rと表示されたときは押す。

chromeのDEVツール。ネットワークタブでCtrl+R

ChromeのDEVツール。3xxが返ってくる

3xxが帰ってきているときは[Shift]を押しながらリロードする。

ChromeのDEVツール。200が返ってくる

対象ファイルをクリックするとヘッダが見れる。

ChromeのDEVツール。HTTPヘッダが見れる

javascriptで試す

node + vscode が前提。ここではjsonの取得にaxiosモジュールを使ってみる。

axiosのインストール

vscodeのターミナルで以下を実行。

htmlの作成

axiosで取得したjsonを表示した

リンク

このリンクのhtmlのjavascriptはhttps://jsonplaceholder.typicode.com/postsから取得している。次の例はこのサーバから取得。

.htaccessはすべてのクライアントから許可するように以下のように修正

リンク

このリンクが外部のクライアントからアクセスされた時のログは以下

サーバとクライアントとクロスサイトスクリプティングが一緒になって複雑

cpコマンドでは*は使わないほうがいい

このコマンドはドットで始まるファイルをコピーしない。*はシェルによって展開されるためで、シェルはドットで始まるファイルを*に含ませない。以下を実行するとわかる。

だからといって.*でやろうとすると、.や..も.*に含まれるため予期しない動作になる可能性が高い。

cpですべてのファイルをコピーするには*を使わずディレクトリを指定して行うのが良い。.もディレクトリなのでこれをつかってもいい。

eclipseのプロジェクト作成で謎エラー:Cannot create linked resource ‘/.org.eclipse.dltk.core.external.folders/.link1’

Eclipseで新規のプロジェクトを作成したときに以下のようなエラーが出てプロジェクトが正常に作成できない問題。

正確な原因は不明だが、workspaceをフォルダごと削除したら直った。おそらくworkspaceの.metadataのどこかが壊れていたものと思われる。

グループポリシーエディターが起動しなくなったのを直す

現象

直し方

エクスプローラーで、C:\Windows\System32\GroupPolicyを開く。このフォルダは隠しフォルダになっているので、「表示」メニューから隠しファイルを表示するオプションを有効にするか、アドレスバーに直接入力する。

このフォルダの中にある、MachineMachine.oldにリネームする。

MySQLのデータベースが派手に壊れた場合の修復覚書

ここではデータベースが派手に壊れた場合の話。ハードディスクが壊れたり、自分の場合はVMWAREで保存状態にしたまま、VirtualBoxで開いて操作したあとに、保存していたVMWAREで起動してしまったためハードディスクが派手に壊れてしまって普通のrepairでは直らなかった。

MySQLのデータにはMyISAM方式とINNODB方式があってここではMYISAMの場合、こっちのほうが修復が効きやすいらしい。

当然だがバックアップはとっておく。

どのように壊れたのかの記録

ユーザデータベースや特権データが壊れていると起動もできないので、以下で起動できるか確かめる。

このオプションはログインをスキップするので、特権データが壊れていても動くと思われる。

起動もしない場合

起動もしない場合は直接ファイルを触って直す。今回はMYISAM形式のファイルなので、myisamchkをつかう。MYISAMかどうかは、ファイルの拡張子がMYDやMYIならこの形式で、ibdの場合はINNODB。

以下の順番で試す。

これで直ればいいのだが、直らない場合はMYIを作り直す。MYDが実際のデータが入っているのでこのファイルがサイズが0だったり存在しない場合は復旧は無理だと思われる。

上記のmysqld –skip-grant-tablesでも起動できない場合は、すべてを初期化してから、MYDを復活するしかないが、ここではmysqldは動くものとする。

ここからmysqlでMYIを空にしてから、保存してあるMYDをもとに戻してから、復旧をすることになる。

テーブルを空にする

これで空の正常のMYIができてサイズ0のMYDができるので、保存してあるMYDを上書きコピーしてから上記のmyisanchkで復旧する。

ディレクトリ内の一部のファイル(ディレクトリ)を除いてコピーするコマンド

以下のようディレクトリからcccfffを除いてコピーしたい。

findを使って除く

テスト

これでcccfffを除いた一覧が取得できる。mindepthとmaxdepthをともに1を指定して、この階層のみ出力する。

-execでコピーする準備

-execで見つかったもファイルやディレクトリに対してコマンドを実行する。{}は見つかったファイルやディレクトリに置き換わる。\;-execの終わりを意味する。ここではcpの前にechoをつけて実行されるコマンドを確認している。このコマンドで良ければechoを削除すれば実際に実行する。

Windows10で共有フォルダにゲストアクセスする

共有元(Windows10)の設定

WindowsXPからもアクセスする

Windowsの機能のインストールで、SMB1.0を有効にする。
[WIN]+Rで実行ダイアログを表示し、appwiz.cplと入力し、Windowsの機能からSMB1.0をインストール。

ゲストアカウントを有効にしてリモート接続を許可する

[WIN]+Rで実行ダイアログを表示し、secpol.mscと入力し、Local Policies => User Rights Assignment => Deny access to this computer from the networkからGuestを削除する。

続いて、Local Policies => Security Options => Accounts: Guest account statusでゲストアカウントを有効にする。

MySQLのdatetimeに0000-00-00 00:00:00を設定できない

wordpressの昔のデータベースのデータスキームでdatetimeのデフォルト値がユーザ設定の’0000-00-00 00:00:00’になっていたのだが、MySQLの新しいバージョンではこの値は無効になったらしく、データの操作がうまくできなくなったので、この値を’1970-01-01 08:00:00’に変える。

sqlで以下を実行、post_dateは対象のコラム

この方法以外にも、sql_modeを設定したり、他の方法もあるようだがスルー

Visual Studio Codeでターミナルをbit-bashにする

Windowsでの話、gitは既にインストールされているものとする。

codeで設定を開く

[Ctrl]+[Shift]+Pでコマンドパレットを開き、Open Settings (JSON)を開く。

VSCodeでユーザ設定をJSON形式で開く

設定ファイルに書き込む

インストールされているgitのフォルダの、bin\\bash.exeを以下のように設定する。

git-bashをvscodeで設定

ターミナルを開きなおすとbashが開くようになる。