SSブログ

vim覚書 その2

Vimで便利なコマンドをさらに紹介。

検索
/検索したい文字

置換
:s/置換したい文字/置換後の文字/g


nice!(0)  コメント(0) 

vim覚書

基本的にvimは三つのモードがあります。 ノーマルモードと入力モード、コマンドモードです。
起動時にはノーマルモードになっているので、「i」を押して入力モードにしてから 入力していきましょう。
また、この入力モードからノーマルモードに戻る際はEscキーで戻ることができます。
そしてVimでは上下左右のキーが特徴なのでこれをまず覚えると吉。 hjklのキーが上下左右に対応しており、以下で覚えてください。
キーの配列的にはhjklで← ↓ ↑ →となります。
  k↑
h←   l→
  j↓
入力を終えたらコマンドモードに移ります。
:を入力すると左下にコロンが表示されるます。
ここでする主な動作は「変更を保存して終了」「変更を保存」「変更を保存しないで終了」かと思います。 それぞれ以下の通りです。
:wq 変更を保存して終了
:w 変更を保存
:q! 変更を保存しないで終了
便利なコマンド
dd アクティブな行を削除
yy アクティブな行をコピー
2yy アクティブな行を含めて二行をコピー
p コピーしたものを貼り付け
nice!(0)  コメント(0) 

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
	)

nice!(0)  コメント(0) 

スクレイピングに挑戦 [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)


nice!(0)  コメント(0) 

VBAでリストボックス作成

ITに明るくない時代遅れな方々は記入ミスも多い。
そのため、リストボックス形式にしてあげればそうしたミスも防げる…かもしれません。

というわけでどんな古びた企業にでも大体あるエクセルでリストボックス、作っていきましょう。
ちなみに間違えやすいプルダウンリストはこれ。
ドロップダウンリスト.PNG

さて、では見慣れたVBAの画面へ。
挿入からユーザフォームを選択。

ListBox1.png

結構探しましたが、ツールボックスを選択。

ListBox2.png

ツールボックスの中からリストボックスを選択。一つ左と間違えやすいので注意。
ListBox3.png

リストボックスを適当な大きさで作成したら次にコードを描いていく。
ダブルクリックしたらコードを書くウィンドウが立ち上がるので以下のコードを書き書き。
Private Sub ListBox1_Click()
    .AddItem "火星"
    .AddItem "幻の銀二"
    .AddItem "光宙"
    .AddItem "羽姫茅"
End Sub

さあ、これで完成…ではなく、この値をセルに入力するコードを書かなくてはなりません。
そのためにも選択した後、確定するボタンを作りましょう。
またもやツールボックスを開いて、今度はコマンドボタンを選択。
ListBox4.png
適当なところにボタンを設置したら、ダブルクリックでコードを書きましょう。
こんな感じ。
Private Sub CommandButton1_Click()
    Range("A3").Value = ListBox1.Value
End Sub


面倒ですがこれでミスがなくなれば…。
nice!(0)  コメント(0) 

Google Spread Sheetでシートコピーして本日の日付に

本当はエクセルが良かったのですが、職場でエクセルをまともに使えて、同期まで理解できる人類がいないのでスプレッドシートを使用。
構成としては毎日「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));
  }
}


次にトリガーの設定。

まずエディタ画面で時計っぽいアイコンをクリック。

01.png

トリガーを作成。

02.png

イベントの種類が起動時になっていることを確認して保存。

03.png

人類、早くITスキル向上しろ。
nice!(0)  コメント(0) 

ScanしたPDFたちを一つのPDFにまとめる [自炊]

最近自炊にハマっているのですが、ScanSnapさんではいくつかのPDFファイルに分けて保存しています。
何せいっきにやろうとするとページが切れていなかったりして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 


個人的には後者を勧めます。
知らんけど。
nice!(0)  コメント(0) 

いろんなfor文まとめ書き

C
#include 

int 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+"回目です。")
}

nice!(0)  コメント(0) 

Git 基本コマンド覚書

Githubを最近使い始めたが、まったく覚えられないのでメモ。

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

nice!(0)  コメント(0) 

raspberry pi 3でapt-getでエラー [Raspberry Pi]

エラーは以下の通り

エラー:1 https://packages.sury.org/php buster InRelease
公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY B188E2B695BD4743

調べてみたところ、どうやらこの公開鍵を探しだして取ってこいとのこと。
NO_PUBKEYの後ろの部分で検索して見つけたので、wget でげっちゅ。

再度実行してみるもエラー・・・。
しかしよく見るとsudo apt dkpg -aを実行してみろ的なメッセージがあったので、へこへこ従う。
sshの設定部分のみ、今の設定を残すか聞かれたので残す方を選択。あとは放っておいたら何やら作業が終わったので、そのままupgradeを実行。

無事アップデートできましたー。
nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。