vim覚書
基本的にvimは三つのモードがあります。 ノーマルモードと入力モード、コマンドモードです。
起動時にはノーマルモードになっているので、「i」を押して入力モードにしてから 入力していきましょう。
また、この入力モードからノーマルモードに戻る際はEscキーで戻ることができます。
そしてVimでは上下左右のキーが特徴なのでこれをまず覚えると吉。 hjklのキーが上下左右に対応しており、以下で覚えてください。
キーの配列的にはhjklで← ↓ ↑ →となります。
k↑
h← l→
j↓
入力を終えたらコマンドモードに移ります。
:を入力すると左下にコロンが表示されるます。
ここでする主な動作は「変更を保存して終了」「変更を保存」「変更を保存しないで終了」かと思います。 それぞれ以下の通りです。
:wq 変更を保存して終了
:w 変更を保存
:q! 変更を保存しないで終了
便利なコマンド
dd アクティブな行を削除
yy アクティブな行をコピー
2yy アクティブな行を含めて二行をコピー
p コピーしたものを貼り付け
起動時にはノーマルモードになっているので、「i」を押して入力モードにしてから 入力していきましょう。
また、この入力モードからノーマルモードに戻る際はEscキーで戻ることができます。
そしてVimでは上下左右のキーが特徴なのでこれをまず覚えると吉。 hjklのキーが上下左右に対応しており、以下で覚えてください。
キーの配列的にはhjklで← ↓ ↑ →となります。
k↑
h← l→
j↓
入力を終えたらコマンドモードに移ります。
:を入力すると左下にコロンが表示されるます。
ここでする主な動作は「変更を保存して終了」「変更を保存」「変更を保存しないで終了」かと思います。 それぞれ以下の通りです。
:wq 変更を保存して終了
:w 変更を保存
:q! 変更を保存しないで終了
便利なコマンド
dd アクティブな行を削除
yy アクティブな行をコピー
2yy アクティブな行を含めて二行をコピー
p コピーしたものを貼り付け
pythonで連番ファイル生成 [python]
講義の第一回から第十五回までのフォルダとかいちいち作ってられん、的な時にオヌヌメ
pythonなんて入ってねえぞ!という場合はコマンドプロンプトでこちら。
import os for i in range(1,11): os.mkdir('第%d回'%i)
pythonなんて入ってねえぞ!という場合はコマンドプロンプトでこちら。
@echo off for /l %%i in (4,1,6) do ( mkdir 第%%i回 echo %i )
スクレイピングに挑戦 [python]
Webスクレイピーング
import urllib.request, urllib.error from bs4 import BeautifulSoup url = "https://www.kadokawa.co.jp/product/search/?lgenre=13&releaseDate=1" #python2系ではurllib.request(url) html = urllib.request.urlopen(url) soup = BeautifulSoup(html, "html.parser") h2 = soup.find_all("h2") book_titles = [] for tag in h2: try: string_ = tag.get("class").pop(0) if string_ in "book-title": ts = tag.string.replace(' ', ' ') book_titles.append(ts) #break except: pass print(book_titles) with open('titles.csv', mode='w+',encoding='utf-8') as f: for i in book_titles: s = f.write('%s,' %i)
VBAでリストボックス作成
ITに明るくない時代遅れな方々は記入ミスも多い。
そのため、リストボックス形式にしてあげればそうしたミスも防げる…かもしれません。
というわけでどんな古びた企業にでも大体あるエクセルでリストボックス、作っていきましょう。
ちなみに間違えやすいプルダウンリストはこれ。
さて、では見慣れたVBAの画面へ。
挿入からユーザフォームを選択。
結構探しましたが、ツールボックスを選択。
ツールボックスの中からリストボックスを選択。一つ左と間違えやすいので注意。
リストボックスを適当な大きさで作成したら次にコードを描いていく。
ダブルクリックしたらコードを書くウィンドウが立ち上がるので以下のコードを書き書き。
さあ、これで完成…ではなく、この値をセルに入力するコードを書かなくてはなりません。
そのためにも選択した後、確定するボタンを作りましょう。
またもやツールボックスを開いて、今度はコマンドボタンを選択。
適当なところにボタンを設置したら、ダブルクリックでコードを書きましょう。
こんな感じ。
面倒ですがこれでミスがなくなれば…。
そのため、リストボックス形式にしてあげればそうしたミスも防げる…かもしれません。
というわけでどんな古びた企業にでも大体あるエクセルでリストボックス、作っていきましょう。
ちなみに間違えやすいプルダウンリストはこれ。
さて、では見慣れたVBAの画面へ。
挿入からユーザフォームを選択。
結構探しましたが、ツールボックスを選択。
ツールボックスの中からリストボックスを選択。一つ左と間違えやすいので注意。
リストボックスを適当な大きさで作成したら次にコードを描いていく。
ダブルクリックしたらコードを書くウィンドウが立ち上がるので以下のコードを書き書き。
Private Sub ListBox1_Click() .AddItem "火星" .AddItem "幻の銀二" .AddItem "光宙" .AddItem "羽姫茅" End Sub
さあ、これで完成…ではなく、この値をセルに入力するコードを書かなくてはなりません。
そのためにも選択した後、確定するボタンを作りましょう。
またもやツールボックスを開いて、今度はコマンドボタンを選択。
適当なところにボタンを設置したら、ダブルクリックでコードを書きましょう。
こんな感じ。
Private Sub CommandButton1_Click() Range("A3").Value = ListBox1.Value End Sub
面倒ですがこれでミスがなくなれば…。
Google Spread Sheetでシートコピーして本日の日付に
本当はエクセルが良かったのですが、職場でエクセルをまともに使えて、同期まで理解できる人類がいないのでスプレッドシートを使用。
構成としては毎日「2021.11.20」のような名前のシートを原本からコピーしていく形。
そして今回の場合、そのシートを不合理にも印刷しなければならないのでボタン方式でスクリプト実行をすると印刷の邪魔になる…。
そこでトリガーをシート起動時に設定して、且つ当日のシートが作成してある場合は実行しないスクリプトにしました。
以下スクリプト。
次にトリガーの設定。
まずエディタ画面で時計っぽいアイコンをクリック。
トリガーを作成。
イベントの種類が起動時になっていることを確認して保存。
人類、早くITスキル向上しろ。
構成としては毎日「2021.11.20」のような名前のシートを原本からコピーしていく形。
そして今回の場合、そのシートを不合理にも印刷しなければならないのでボタン方式でスクリプト実行をすると印刷の邪魔になる…。
そこでトリガーをシート起動時に設定して、且つ当日のシートが作成してある場合は実行しないスクリプトにしました。
以下スクリプト。
function SheetCopy() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var TargetSheet = spreadsheet.getSheetByName('原本'); var date = new Date(); var date = Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy.MM.dd'); try{ var judge_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("○○_"+ date); judge_sheet.getRange(100, 100).setValue(""); }catch (e){ var newSheet = TargetSheet.copyTo(spreadsheet); newSheet.setName(Utilities.formatString("○○_" + date)); } }
次にトリガーの設定。
まずエディタ画面で時計っぽいアイコンをクリック。
トリガーを作成。
イベントの種類が起動時になっていることを確認して保存。
人類、早くITスキル向上しろ。
ScanしたPDFたちを一つのPDFにまとめる [自炊]
最近自炊にハマっているのですが、ScanSnapさんではいくつかのPDFファイルに分けて保存しています。
何せいっきにやろうとするとページが切れていなかったりして1からやり直しになるので…。
そこで3つ、4つに分かれたpdfを一つにする方法。
1.怪しげなページを使用。
PDF 統合で検索するといくつかページが出てくるので、そこにファイルをアップロードして統合してもらう方法。滅茶苦茶簡単で楽なんですが、いまいち信用できぬ気がします。その代わり相当楽です。FXで全額溶かす人でもできます。
こことかここ
2.pdftkを使用。
私の場合自宅サーバーのCentOSでやってみました(ラズパイでもできるよ)。
個人的には後者を勧めます。
知らんけど。
何せいっきにやろうとするとページが切れていなかったりして1からやり直しになるので…。
そこで3つ、4つに分かれたpdfを一つにする方法。
1.怪しげなページを使用。
PDF 統合で検索するといくつかページが出てくるので、そこにファイルをアップロードして統合してもらう方法。滅茶苦茶簡単で楽なんですが、いまいち信用できぬ気がします。その代わり相当楽です。FXで全額溶かす人でもできます。
こことかここ
2.pdftkを使用。
私の場合自宅サーバーのCentOSでやってみました(ラズパイでもできるよ)。
#レポジトリのインストール sudo yum install http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm #pdftkのインストール sudo yum --enablerepo=nux-dextop install pdftk #統合 ファイル名を列挙して cat output 最終的なファイル名 pdftk file1.pdf file2.pdf file3.pdf cat output result.pdf
個人的には後者を勧めます。
知らんけど。
いろんなfor文まとめ書き
C
VBA
python
php
powershell
#includeint main(void){ int i; for (i = 1; i <= 10; i++){ printf("%d回目です。¥n", i); } return 0; }
VBA
Sub ForTest Dim i As integer For i 1 To Debug.Print i + "回目です。" Next End Sub
python
for i in range(10): print('%d回目です。' %i)
php
for ($i=1;$<=10; $++){ echo "{$i}回目です。" }
powershell
for($i=0;$i -lt 10; $i++){ Write-Output ($i+"回目です。") }
Git 基本コマンド覚書
Githubを最近使い始めたが、まったく覚えられないのでメモ。
Gitでやることは
1.Gitを使うディレクトリを選択してレポジトリを作成(git init)。
2.管理するファイルをステージに上げる(次の作業の準備)。
3.ステージにあがったファイルをコミット(登録と言い換えても良いかも?)する。
4.リモートレポジトリに上げる(git push origin main)。
ローカル関係の作業
レポジトリを作成
変更を追加
この時ファイル名はワイルドカード等を使用可能。
ステージに上がったファイル達をコミット
リモート関連の作業
リモートレポジトリの登録。この際、リモートレポジトリはGithubで作成しておく必要がある。
リモートレポジトリに変更をうp
リモートレポジトリの変更をダウンロード
リモートレポジトリをそっくりそのまま持ってくる
Gitでやることは
1.Gitを使うディレクトリを選択してレポジトリを作成(git init)。
2.管理するファイルをステージに上げる(次の作業の準備)。
3.ステージにあがったファイルをコミット(登録と言い換えても良いかも?)する。
4.リモートレポジトリに上げる(git push origin main)。
ローカル関係の作業
レポジトリを作成
git init
変更を追加
この時ファイル名はワイルドカード等を使用可能。
git add ファイル名
ステージに上がったファイル達をコミット
git commit -m "どんな変更かをメモしておく。絶対あった方が良いと色々なところで釘を刺される。"
リモート関連の作業
リモートレポジトリの登録。この際、リモートレポジトリはGithubで作成しておく必要がある。
git remote add https://github.com/ユーザ名/レポジトリ名.git
リモートレポジトリに変更をうp
git push origin main
リモートレポジトリの変更をダウンロード
git pull
リモートレポジトリをそっくりそのまま持ってくる
git clone https://github.com/ユーザ名/レポジトリ名.git
raspberry pi 3でapt-getでエラー [Raspberry Pi]
エラーは以下の通り
エラー:1 https://packages.sury.org/php buster InRelease
公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY B188E2B695BD4743
調べてみたところ、どうやらこの公開鍵を探しだして取ってこいとのこと。
NO_PUBKEYの後ろの部分で検索して見つけたので、wget でげっちゅ。
再度実行してみるもエラー・・・。
しかしよく見ると
sshの設定部分のみ、今の設定を残すか聞かれたので残す方を選択。あとは放っておいたら何やら作業が終わったので、そのままupgradeを実行。
無事アップデートできましたー。
エラー:1 https://packages.sury.org/php buster InRelease
公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY B188E2B695BD4743
調べてみたところ、どうやらこの公開鍵を探しだして取ってこいとのこと。
NO_PUBKEYの後ろの部分で検索して見つけたので、wget でげっちゅ。
再度実行してみるもエラー・・・。
しかしよく見ると
sudo apt dkpg -a
を実行してみろ的なメッセージがあったので、へこへこ従う。sshの設定部分のみ、今の設定を残すか聞かれたので残す方を選択。あとは放っておいたら何やら作業が終わったので、そのままupgradeを実行。
無事アップデートできましたー。