正規表現

ここでは拡張正規表現のみを取り扱う。英語では(Extended) Regular Expression。

vimなどBasic RegExpのみしか対応していないコマンドもある。

エスケープが必要な文字

\によりエスケープされる。

\ ^ $ . [ ] * + ? { } ( ) |

jsなどで用いられるRegExpはEREをさらに拡張したものである。grepなど多くのコマンドはメタ文字には対応していない。

凡例

正規表現 説明
. 任意の一字
a* aを0回以上
a+ aを1回以上
a? aを0または1回
.* 任意の一字を0回以上→なんでもいい
[abc] a or b or c
[^a-zA-Z0-9] 英数字以外の文字一字
メタ文字
\d, \D [0-9], [^0-9]
\w, \W [a-zA-Z_0-9], [^\w]
\r, \f 復帰文字(CR), 改行文字(LF)
\s, \S [\t\n\r\f], [^\s]
^(81\+\s|0)[789]0-?\d{4}-?\d{4}$ 携帯電話番号

HTML

HTMLタグのエスケープ

&などの特殊文字に置き換えることでエスケープする。
主な記号は以下の通り。

記号 文字参照 数字参照 unicode
< &lt; &#60; U+3C
> &gt; &#62; U+3E
& &amp; &#38; U+26
" &quot; &#34; U+22
' &apos; &#39; U+27
© &copy; &#169; U+A9
  &nbsp; &#160; U+A0
&#32; U+20

文字参照はXML用、数字参照はHTML用だが、HTMLでも文字参照を使える。&#x20;のように16進の数字参照も可能。
変換してくれるサイトもある。
nbspは、例えば120 kmのように、空白を置きたいが改行されたくない時に使う。spaceの文字参照は無い。
https://tech-unlimited.com/escape.html

コメントアウト

一行コメントアウトはなし。 ブロックコメントは<!-- --!>で囲む。
コメント内は-の連続使用を避け、=などで代用する。

エラーチェック

https://validator.w3.org/nu/#textarea

脆弱性対策

aタグでtarget="_blank"するときにrel="noopener noreferrer"を付ける。

window.openerによって移動先リンクから攻撃される脆弱性への対策。
アフィリエイトする場合はrel="noopener"のみとする。ただし、IEはnoopener非対応。

タグの使い分け

リファレンスはリンク先で確認できる。
https://developer.mozilla.org/ja/docs/Web/HTML/Element

コンテナ系
head コード、メタ部分
body ボディ
aside 左右pane
article sectionより大きいブロック。独立した記事。
section pより大きいブロック。sectionの中には必ずh要素が入る。
文字要素系
h1 ページタイトルなど。ページに一度だけ使う。
h2 大きな見出し。SEO対策に関わる。
h3 小見出し。章タイトルやコンテンツタイトル。
p 本文
br 改行
small 注釈、免責等習慣的に文字の小さいもの。
a リンク。必ずhrefを伴う。
span インライン装飾
code インラインコードブロック
pre コードブロック
追加要素系
table, tr
caption 図表の見出し
ul, li リスト

flex チートシート

https://www.webcreatorbox.com/tech/css-flexbox-cheat-sheet

hoverで表示される補足説明

title属性を付与することで、hoverで表示される補足説明を実装できる。

          <pre title="example"> ここにhoverしてね </pre>
          

見ての通り非常に気づきにくいので、どこかに誘導が必要。CSSの::beforeでhoverしたくなる✏絵文字や画像を挿入するとか。

CSS

コメントアウト

一行コメントアウトはなし。 ブロックコメントは/* */で囲む。

改行

行末(中括弧の中)にセミコロンが必要

p{color:black;}

エラーチェック

https://validator.w3.org/nu/#textarea

可読性

可読性について言及したサイト https://japan-design.jp/design/0052/

width

width: auto
それ以外→width:100%
percentageは親要素に対する割合で指定
pxやemで指定するときはmin-width, max-widthを使う
画像サイズはmax100%がよい

文字コンテンツの幅は640pxくらいがおすすめ

16pxのとき約35文字表示される

font-size

標準は16px, 大き目なら18px

ただし奇数ピクセルにしてはいけない

読む前提の文字は英小文字で12px, 日本語なら10pxが最小サイズ

そもそもChromeは基本10px未満にしても10pxで表示される。

文字の大きさの参考 https://blog.upshare.co.jp/2021/07/3730/

html{ font-size: 16px; }

textbox風

width: auto

marginとpadding

marginがborderの外側、paddingが内側

margin: 2px 上下左右
margin: 2px 3px 上下 左右
margin: 2px 3px 4px 上 左右 下
margin: 2px 3px 4px 5px 上 右 下 左

pre内で折り返す

          pre{white-space: pre-wrap;}
          

逆に、長くても折り返さず横スクロールバーのタイプにしたいときはpre{overflow: auto;}にする。

複数指定

複数の属性を",", " ", ""のいずれかで接続して指定できる。

            <p class="child2">outer parent</p>
<div class="parent">
<p class="child1">Hello </p>
<p class="child1 child2">World!!</p>
</div>
            .parent,.child2{ /*-- parent or child2 --*/
background-color: lawngreen;
padding:0.1em 2em;
}
.parent .child1{ /*-- child1 in parent --*/
background-color: green;
color: lavender;
}
.child1.child2::after{ /*-- child1 and child2 --*/
content: " <- after";
}

outer parent

Hello

World!!

変数

            /* 変数の宣言 */
:root{--favorite-color: pink;}

/* 変数の参照 */
main{background-color: var(--favorite-color);}

正式にはカスタムプロパティ。

変数名はハイフン二つで始まる。慣例的に単語の区切りではスペースの代わりにハイフンを用いる。

上の例においてrootはただのスコープなので勿論htmlや特定のclass等でも構わない

color code usage

以下の表は(一部の色のみ)hoverで補足説明を表示できるので参照のこと。

参考サイト
https://www.colorsexplained.com/shades-of-pink-color-names/

JavaScript

HTML要素の挿入

document.getElementById("ElementID").insertAdjacentHTMLメソッドを使用する。

ブックマークレット

WEBサイトのTitleとURLを取得する

javascript:window.prompt("",document.title +"\n"+ location.href);void(0);

環状配列

        class List{
constructor(array){
this.members=array;
this.#index=0;
}
get index(){return this.#index;}
next(){
this.#index = (this.#index+1) % this.members.length;
return this.#index;
}
}

classのサンプル

            class Person{
constructor(firstName,lastName){
this.firstName = firstName;
this.lastName = lastName;
this.title = "NEET"
}
get fullName(){return this.firstName+" "+this.lastName}
}
class Student extends Person{
constructor(firstName,lastName,teacher){
super(firstName,lastName);
this.teacher = teacher || new Teacher("Jane", "Does",[]);
this.title = "student"
}
}

console.logをもっと使いやすく

            function getJst(){
const jst = new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000));
return jst
}

function strJst(jst){
return jst.getFullYear() + "/" + (jst.getMonth() + 1) + "/" + jst.getDate() + " " + jst.getHours() + ":" + ("0" + jst.getMinutes()).slice(-2) + ":" + ("0" + jst.getSeconds()).slice(-2) + ""
}
var black = '\u001b[30m';var red = '\u001b[31m';var green = '\u001b[32m';var yellow = '\u001b[33m';
var blue = '\u001b[34m';var magenta = '\u001b[35m';var cyan = '\u001b[36m';var white = '\u001b[37m';
var gray = '\u001b[90m';var reset = '\u001b[0m';
const consolelog = console.log;console.log = (...a) => consolelog(strJst(getJst()), ...a);
const consoleerror = console.error;console.error = (...a) => consoleerror(strJst(getJst()),"<CRP ERROR>\n", yellow, ...a, reset);
console.errorln = (...a) => consoleerror(strJst(getJst()),"<CRP ERROR>", yellow, ...a, reset);
console.gray = (...a) => consolelog(strJst(getJst()) + gray, ...a, reset);

node.js

package.json

npm initで作れる。node index.jsで実行。

wait 関数

            const wait = async (ms) => new Promise(resolve => setTimeout(resolve, ms));
async function main(){
console.log("before 2000 ms");
await wait(2000);
console.log("after 2000 ms");
}

main();
            const {sleep, msleep} = require(sleep);

console.log("Hello, World!!");
msleep(500);
console.log("after 0.5 second");
sleep(3);
console.log("after another 3 seconds");

for statement

            for (let i = 0; i < array.length; i++){
console.log(` array[${i}]: ${array[i]}` );
}
            for (cmd of commands) {
execute(cmd);
}

Bash Script

バッククォート` ` $()

どちらも同じように使われる。括弧内がコマンドの実行結果で置換される。バッククォートでネストする場合、エスケープが必要になる。

            echo "Now is $(date "+%Y/%m/%d %H:%M:%S")"
echo "Now is ` date "+%Y/%m/%d %H:%M:%S"` "
someCommand ` echo "Now is \` date "+%Y/%m/%d %H:%M:%S"\` "`

bat script

batファイルのコマンドリファレンス

https://www.pg-fl.jp/program/dos/doscmd/

setLocalを宣言することで環境変数のローカル化を開始する。batファイル終了時に自動的にendLocalが実行される。
が、setコマンドはそのプロセス内でのみ有効な設定にすぎない。すなわち、現在のcmd.exeのウィンドウを閉じると変更は元に戻る。
よって、グローバル変数の汚染を防ぐという意味で使用する必要は無い。

エスケープ

&, <, >, |, \^でエスケープする。

^自身は^^のようにエスケープする。

enableDelayedExpansion後述)設定時は!^^!のように^2個でエスケープする。

例外的に%%%のようにエスケープする。

正規表現を用いて検索ができるstrfind関数内では、\, [, ], ", ., *, ?\によりエスケープされる。

プログラムの成否による分岐

  1. ||, &&を用いる方法
  2. ErrorLevelによる分岐
            @echo off

:setName
set /p name="What's your name?" || set name=Anonymous
echo %name% | find /i "cheerppy" && echo Hello World! || echo Hi, %name%

:choice
choice /c ync /m "Are you sure to exit?"
if errorlevel == 1 exit
if errorlevel == 2 goto setName
if errorlevel == 3 goto choice

If ErrorLevel <int> (...)構文

ErrorLevelが引数以上の時(...)を実行する

            @echo off

cd > nul
echo +++ Error hasn't occurred. +++
echo %%errorlevel%% = %errorlevel%
if errorlevel 0 echo invoked always
if errorlevel 1 echo invoked only when Error occurred

rem コマンド cd に成功
rem 期待される出力結果:
rem > %errorlevel% = 0
rem > invoked always

type

echo +++ Error has occurred. +++
echo %%errorlevel%% = %errorlevel%
if errorlevel 0 echo invoked always
if errorlevel 1 echo invoked only when Error occurred
pause>nul

rem typeは引数不足なのでエラーを返す
rem 期待される出力結果:
rem > %errorlevel% = 1
rem > invoked always
rem > invoked only when Error occurred

%ErrorLevel%を直接setしてはならない。そうしてしまうと、動的な定義を無効化して上書きしてしまい、期待される挙動を得られなくなってしまう。
もし誤ってsetしてしまった場合は、set ErrorLevel=(右辺は何も書かない)とすることで、上書きして作ってしまった環境変数を削除し、元の挙動が得られるようになる。

このような動的な環境変数には以下のようなものがある。

  • %ErrorLevel%
  • %cd%
  • %Date%, %Time%
  • %Random% - 0から32767(15bit)の間でランダムな10進数に展開する。

遅延環境変数!hoge!

環境変数は変数が呼び出されるその行へたどり着いたときに展開(=読み込み)される。
また、( )で括られた部分は一行とみなされる。
すなわち、( )内での変数の変化には対応できない。

遅延環境変数を用いると、その変数が呼び出されるコマンドにたどり着いたときに展開される。

使用するときはsetlocal enableDelayedExpansionを宣言し、変数を!で囲む。

            @echo off
setlocal enableDelayedExpansion

set age=20

if %age% == 20 (
set /a age=%age%+1
echo %%age%%=%age% in the bracket
echo ^^!age^^!=!age! in the bracket
)
echo %%age%%=%age% outside the bracket

rem 期待される出力結果:
rem > %age%=20 in the bracket
rem > !age!=21 in the bracket
rem > %age%=21 outside the bracket

右クリの送るメニューに表示

作ったbatスクリプトを%AppData%\Microsoft\Windows\SendToに入れておくと、ファイル右クリックの送るメニューからファイルを引数%1に取ってスクリプトを実行できる。

このディレクトリはshell:sendtoからも開ける。

タイムスタンプの取得

        echo %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
rem > 20220722_191322
        powershell -command "Get-Date (Get-Date -Format U) -UFormat %s"
rem > 1675395329

クリップボードのイメージに名前を付けて保存

          @echo off
setLocal

set dirPath=%UserProfile%\OneDrive\画像
set fileName=sample-image.jpg
set filePath=%dirPath%\%fileName%

set script=(Get-Clipboard -Format Image).Save("%filePath%",[System.Drawing.Imaging.ImageFormat]::Jpeg)
@REM script=(Get-Clipboard -Format Image).Save("%PNG_Path%",[System.Drawing.Imaging.ImageFormat]::Png) とすればPNG保存できる
set script=%script:"=\"%
powershell -Command "%script%"

if %ERRORLEVEL% neq 0 (
echo.
echo Press any key to exit . . .
pause > nul
exit 1
)

explorer /select,"%filePath%"

プロンプトの変更

対話式batスクリプトで使えそう?なので覚え書き。

https://www.javadrive.jp/command/display/index2.html

tasklist, taskkill

tasklist /v /fi "imagename eq explorer.exe"
tasklist /v /fi "imagename eq chrome.exe" | findstr /I ちあぴのデブ活のーと
taskkill /fi "pid eq <pid>"

Compiled Languages

C-Lang

呪文

キーワード(global変数)を使用するためにincludeする

              #include <stdio.h>
#include <stdbool.h>

int main(void) {
// ここにコードを記述
return 0;
}

標準出力

printf("hello world!\n");

最後改行されないので自分で\nを入れる

標準入力

              int age;
printf("how old are you?\n\t> ");
scanf("%d", &age);
printf("you are %d years old!\n", age);

"&"はポインタ

データ型

              int age;
double height = 163.1;
char sex = 'F';

// 文字列はcharの配列で表現し、最後にnull文字('\0'あるいは0)で終わる。
char text1 [4] = {'F', 'o', 'o', '\0'};
char text2 [4]; text2[0] = 'B'; text2[1] = 'a'; text2[2] = 'r'; text2[3] = 0;
char text3 [4] = "Baz";
printf("%s%s%s", text1, text2, text3); // => FooBarBaz

for, if

等価演算子は==

              // if 文の例
int judgeAdult(int i) {
int adultAge = 18;

if (i < 0) {
return 1; // 異常終了
}
else if (i >= adultAge) {
printf("you are adult!\n");
return 0; // 正常終了
}
else {
printf("you are too young!\n");
return 0;
}
}
                
                    // switch 文の例
// switch文はフォールスルーできる
// C言語の歴史的にはイベントハンドラでよく使われる
switch (country) {
case Country.Japan:
lang = Lang.Japanese; break;

case Country.China:
lang = Lang.Chinese; break;

case Country.Brazil:
case Country.Portugal:
lang = Lang.Portuguese; break;

default:
lang = Lang.English;
}
              // for 文の例
for (int i = 0; i < 3; i++) {
printf("i = %d, ", i);
}
// 繰返し変数iはブロック外から参照できてしまう
printf("result: %d", i); // => 0, 1, 2, result: 3

              // while 文の例
int i = 0;
while (i < 3) {
i++;
printf("i = %d, ", i);
}
printf("result: %d", i); // => 1, 2, 3, result: 3

配列、構造体

              typedef struct {
int age;
double height;
char sex; // M or F
} Person;

Person john = {22, 173.2, 'M'};
Person jane;
jane.age = 20;
jane.height = 158.1;
jane.sex = 'F';

ポインタ

              int num; int* pnum;

num = 100;
printf("num = %d\n", num); // => 100

printf("\n// pnumはポインタ変数\n");
pnum = &num;
printf("pnum = %p\n", pnum); // => 0x7fff12
printf("&num = %p\n", &num); // => 0x7fff12

printf("\n// ポインタから参照先の値を取得することもできる\n");
printf("num = %d\n", num); // => 100
printf("*pnum = %d\n", *pnum); // => 100
printf("*(&num) = %d\n", *(&num)); // => 100

printf("\n// pnumのアドレスも参照できる。intは4byteなので, &pnumは&num+4の値を取る\n");
printf("&num = %p\n", &num); // => 0x7fff12
printf("&pnum = %p\n", &pnum); // => 0x7fff16

printf("\n// pnumの操作がnumに影響を与える\n");
*pnum = 200;
printf("pnum = %p\n", pnum); // => 0x7fff12
printf("*pnum = %d\n", *pnum); // => 100
printf("num = %d\n", num); // => 100

printf("\n// 逆もまたしかり\n");
num = 300;
printf("pnum = %p\n", pnum); // => 0x7fff12
printf("*pnum = %d\n", *pnum); // => 100
printf("num = %d\n", num); // => 100

Java

開発環境

JDKJava Development Kit
JREJava Runtime Environment
JVMJava Virtual Machine

JDK -- Java Development Kit --

Javaの開発環境。JREを内蔵する。

JRE -- Java Runtime Environment --

Javaの実行環境。JVMを内蔵する。

JVM -- Java Virtual Machine --

Javaの開発環境。JREを内蔵する。

Java SE -- Java Development Kit --

Javaの開発環境。JREを内蔵する。

LICENSE

ソフトウェアライセンスおすすめ

MIT

ライセンス汚染

GNU GPL

Windows

Win10 shortcut.lnk

Ctrl+ドラッグ&ドロップでファイルのコピーを、Alt+ドラッグ&ドロップでファイルのショートカットを作成できる。

右クリドラッグ&ドロップでも似たようなことが可能(選択できる)。

以下のテキストを「項目の場所」として記述することができる。

  • batファイル

    cmd /c "hogehoge.bat"
  • online ExcelファイルをDesktopアプリで開く

    ms-excel:https://cheerppy.xyz/fugafuga.xls
  • Desktopを表示

    explorer shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}

Run...

一覧以外でもPathさえ通っていれば何でも開く。(規定では拡張子.lnkは省略できないが%PathExt%を編集すると省略可能になる。)

Ctrl+Shift+Enterで管理者として実行する。

コマンド 説明
shell:startup %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
shell:profile %UserProfile%
shell:sendTo %AppData%\Microsoft\Windows\SendTo
shell:start menu %AppData%\Microsoft\Windows\Start Menu
shell:fonts C:\Windows\Fonts
shell:screenshots スクリーンショットフォルダ
ms-clock: Clock & Alarm
calc 電卓
control すべてのコントロールパネル項目
rundll32 sysdm.cpl,EditEnvironmentVariables 環境変数の確認・編集(要管理者)

以下自分用カスタムコマンド

コマンド 説明
%Path% %Path%;C:\cheerppy\shortcuts
note notepad
clock Clock & Alarm
alarm Clock & Alarm

環境変数

※自分が分かりやすいように、値に環境変数を使って書いています。
変数
%HomeDrive% C:
%HomePath% \Users\【ユーザー名】
%UserProfile% %HomeDrive%%HomePath%
%AppData% %UserProfile%\AppData\Roaming
%LocalAppData% %UserProfile%\AppData\Local
%TEMP% %LocalAppData%\Temp
%0 コマンド名
%1 第一引数

%AppData%%LocalAppData%の違いは、一般的な個人用ユーザーには現れない。学校などRoamingユーザーを利用しているとき、%AppData%内のデータは同じドメインのどのPCからも同様にアクセスできる。

ショートカットキー

キー 説明
Win+X -> C cmdを起動
Win+X -> A cmdを管理者で起動
Win+D Desktopを表示
Win+E explorerを開く
Win+L 画面をロック
Win+R ファイル名を指定して実行
Win+S Search()
Win+ピリオド(.) 絵文字パッドを開く
Win+Pause [バージョン情報]を開く
Win+PrintScreen スクリーンショットを"保存"

補足:
Win + PrintScreenで保存される画像は、名前はスクリーンショット.png、保存場所は規定で%UserProfile%\OneDrive\画像\スクリーンショットまたは%UserProfile%\OneDrive\Pictures\Screenshotsであるが、該当フォルダのプロパティ > 場所 から変更可能である。

Windows標準icon

C:\Windows\System32\内に意外とたくさんのアイコンがdll形式で格納されている。

リファレンス

https://4thsight.xyz/13325

リモートで友達のPCを操作する

「クイックアシスト」を利用する。
Win+Ctrl+QまたはWin+R → quickassistで開く。

Directory名を英語にしたい

覚え書き

https://ogacha.wordpress.com/2013/10/22/日本語パス名でコケる場合の対処法/

OSが起動しない時

https://jpwinsup.github.io/blog/2021/05/07/Performance/NoBoot/NoBoot-Solution/

VSCode

CLI操作:code <options> <dir or workspace> <full file path>

カレントディレクトリはVSCodeのインストール場所(codeの実行場所)になってしまうので、フルパスで指定する。

code C:\work\work.code-workspace C:\work\test.md

VSCodeで開くリンクは以下のように指定する。

code://file/C/work/work.code-workspace

Linux

Terminal中のショートカットキー

コマンド 説明
Ctrl+A 行頭に移動
Ctrl+E 行末に移動
Ctrl+S 画面をロック
Ctrl+Q 画面ロックを解除
Ctrl+Z 処理を中断

Ctrl+Zで中断した処理は、jobsでジョブ番号を確認し、fg <job no>を叩くと再開できる。

jobs
[1]+ 停止 ping 8.8.8.8

fg 1

grep単体

ファイルから正規表現を検索し、当てはまる行を表示する

grep -Eの代わりにegrepを使用してもよい。

grep -E "正規表現" ファイル名

awk

表示形式を指定できる。Javaのprintfのイメージ。

sed

検索・置換できる

head -1

tailと同様に表示行数を指定できる。この場合、上から1行を表示。マイナスって意味じゃなくて引数指定のハイフン。

pgrep -l

プロセス名も表示

pkill -e

殺したプロセスを事後表示

rm -frv

rm -rfでディレクトリごと強制削除

rm -vで削除したファイルを事後表示

mv -v

mvしたファイルを事後表示

column -t -s, <file>

-t 入力行のカラム数を判定して整形
-s 直後の文字を区切り文字として指定

script

script -afq $(date "+%Y%m%d-%H%M%S").log

a: 同名のファイルが存在する場合は追加書き込み

f: 終了後ではなく即時書き込み

q: ログ取得開始メッセージを非表示

終了時はexitまたはCtrl+D

more

h helpを表示
/ 検索
n 次の検索結果
Enter 次の行
d 次の11行
スペース 次のページ
q exit from more

Vim

〈Insert〉モード

{Esc} 〈normal〉モード
{Shift}+↑, ↓ Page up/down
{Shift}+→, ← 次の単語、前の単語

〈normal〉モード

i 〈Insert〉モード
u, :u, :undo Undo
{Ctrl}+R, :redo Redo
w, b 次の単語、前の単語へ移動
b. e 語頭、語末へ移動
0, $ 行頭、行末へ移動
/, n, {Shift}+N 検索、次の検索、前の検索
v 範囲選択開始
y, d, p コピー、カット、ペースト
yy, dd 一行コピー、カット
diw, daw 単語カット(区切り文字を含まない/含む)
:a! 自動インデントの一時解除

Git

Git Bashなどを使ってCLI操作できる。

HEADのエイリアスとして@が使える。

@@{n}はHEADのn回前の操作前の意。HEADを意味する@は省略可

@~nはHEADのn個前のコミットの意。

@^2(@^^)はHEADの傍系上の一つ前の意。@^@~は同じものを指す。 HEADがマージコミットの場合、@^が直系上の一つ前、@^2が傍系上の一つ前。

n個前のコミットであるマージコミットの、傍系上の、二つ前のコミットは、@~n^2~と指定できる。

-は直前の場所を意味する。

git reset -

用語

単語 説明
repository user/project毎に一つ用意する「フォルダ」。以下repo。
local repo .git\があるディレクトリ。
fetch 他人のremote repoから自分のremote repoにコピーすること。
clone 自分のremote repoからlocal repoにダウンロードすること。

変更の退避

コミットしたくないけどブランチを移動したい、けど後で作業の続きをしたい時などに使う。

git add .
git stash

git stash applyでもとに戻せる。 適用の際にstash listから消したいときはgit stash popとすればよい。

直前のコミットをキャンセル

コミット直前(ステージした状態)に戻す

git reset --soft @~

コミットメッセージの編集

ローカルのみ。

git commit --amend -m "修正後メッセージ"

コミットの編集 ※危険度2

ローカルのみ。リモートのコミットの編集は危険度2。理解して作業すること。

直前のコミットを編集するなら、HEAD~2に移動したいので

git rebase -i @~2
とする。

最終手段・行動のキャンセル

直前の行動をキャンセルする場合、

git reset --hard ORIG_HEAD

もう少し前に戻したい場合、まず行動履歴を確認する

git reflog
o32y984 (HEAD -> main, origin/main, origin/HEAD) HEAD@{0}: commit: add some contents
2308ru2 HEAD@{1}: commit: fix readme
a3eyr73 HEAD@{2}: commit: add readme
aw983f3 HEAD@{3}: commit: initial commit

戻りたい位置を指定する。例えばHEAD@{2}(@@{2})なら、

git reset --hard HEAD@{2}  # @@{2}でもよい
……resetはresetで取り消す!!

より厳密には、resetはブランチの先端が指すコミットを変更するコマンド。
過去に限らず任意のハッシュを指定できるし、スタッシュとかチェックアウトとかブランチ削除をリセットできるわけではない。br git reflogはHEADの履歴なので、reflogから削除してしまったブランチを復活させることは可能。`git co -b @@{1}`

リモートリポジトリの登録

git initで既にローカルリポジトリ化しているフォルダをリモートリポジトリと結びつける。

git remote add origin https://github.com/user-name/repository-name.git

エイリアス

詳細はこちら

git config --global alias.co 'checkout'
git config --global alias.edit 'commit --amend'
git config --global alias.ah '!cat "git config --global alias.co \'checkout\'"' # 外部コマンドも使える

テキストエディタでエイリアスやconfigを確認

git config --global --edit

OTHERS

encoder

ちあぴ式進数エンコーダー

Base64エンコーダー。2進数, 10進数, 16進数, 64進数の変換器付き

糖衣構文(シンタックスシュガー;"Syntax Sugar")とは

同じことを別の書き方でも書けるよ、という意味

ページの転送(リダイレクト)

以下のように記述する。

<script type="text/javascript">
location.href = "移動先URL";
</script>

USBメモリにパスワードをかける方法

BitLockerを使う。

https://pc-karuma.net/use-bitlocker-for-encryption-on-removable-drives-windows-10/

データベース

ここを読んで勉強できる。

https://www.kkaneko.jp/cc/db/5.html

vba

excelなどのタイトルバーにフルパスを表示

ActiveWindow.Caption = ActiveWorkbook.FullName

元素

番号 記号 元素名
112 Cn コペルニシウム
113 Nh ニホニウム
114 Fl フレロビウム
115 Mc モスコビウム
116 Lv リバモリウム
117 Ts テネシン(ハロゲン)
118 Og オガネソン(希ガス)

Contact

誤字脱字衍字や誤情報の指摘等もこちらから

GitHub