よく使うBashコマンドをこの記事にまとめていきます。
1. カレントディレクトリ内のファイルを全削除(サブディレクトリは空にして残す)
find . -type f -delete
よく使うBashコマンドをこの記事にまとめていきます。
1. カレントディレクトリ内のファイルを全削除(サブディレクトリは空にして残す)
find . -type f -delete
[Mac M2 Pro 12CPU, MacOS Ventura 13.6, clang 14.0.3]
今朝、自製ChatGPTアプリを起動しようとすると途中で落ちてしまうようになりました。
Homebrewのopensslライブラリを更新すると直りました。エラーレポートにあるlibcrypto.libは暗号化に関連するlibファイルです。
余談ですが、新macOS Sonomaは2023/10/11現在まだ初期バージョン14.0のままなので次のバージョンになったらサブ機に入れてみる予定です。
brew update & brew upgrade & brew install openssl
[Mac M2 Pro 12CPU, Ventura 13.6, Python 3.10.4]
PDFを色々加工するPythonスクリプトがたまってきました。
C++に移植してGUIアプリにまとめようかと考えています。
最近ファイル名やファイルパスを加工するのにosモジュールをよく使います。これまではsplitメソッドなどを使った文字列加工を多用していましたが、osモジュールのメソッドの方がさすがに使いやすいですね。
import os
from PyPDF2 import PdfMerger
# PDFファイルのディレクトリ
pdf_folder = '/images/'
# PDFファイルのリストを作成
pdf_files = [os.path.join(pdf_folder, f) for f in os.listdir(pdf_folder) if f.endswith('.pdf')]
pdf_files.sort()
# 先頭PDFファイル名を元に結合ファイル名を作成
pdf_name = os.path.splitext(pdf_files[0])[0] + "_join" + os.path.splitext(pdf_files[0])[1]
pdf_path = os.path.join(pdf_folder, pdf_name)
# PDFファイルを結合
merger = PdfMerger()
for pdf_file in pdf_files:
merger.append(pdf_file)
merger.write(pdf_name)
merger.close()
[Mac M2 Pro 12CPU, Ventura 13.6, Python 3.10.4]
画像ファイル名に含まれる数字を抽出して引き算しリネームするスクリプトを書きました。
下記スクリプトでは2桁の数字から2を引き算した新ファイル名にリネームしています。
import os, shutil
srcDir = "/images"
dstDir = "/images2" # 移動先
for filename in os.listdir(srcDir):
if filename.endswith(".jpeg"):
newName1 = (filename.split(".")[0]).split(" ")[0]
newName2 = str(int((filename.split(".")[0]).split(" ")[1]) - 2).zfill(2)
print(newName1 + newName2)
new_filename = newName1 + " " + newName2 + ".jpeg"
oldPath = os.path.join(srcDir, filename)
print(oldPath)
newPath = os.path.join(dstDir, new_filename)
print(newPath)
os.rename(oldPath, newPath) # ファイル移動
# shutil.copy2(oldPath, newPath) # ファイルコピー
[Mac M2 Pro 12CPU, Ventura 13.6, watchOS 10.0.1, Xcode 15.0]
[Swift] 42で報告したComplicationの表示不良が解決しました。Viewコンテンツの新属性として.containerBackgroundを追加するだけでした。
watchOSの大型アップデートの際に新属性記述が必須になることがあるようです。Apple Developer ForumsとMac OTAKARAの記事を参考に修正しました。
WWDC23で前もって紹介されており、Appleのやらかしではありませんでした。
ただApple Watch SEのシミュレータでは新属性なしでも正常表示しているのが解せないです。アップデートしたwatchOS 10では対応が必要で、watchOS 10そのものには不要なのでしょうか。
解決しない場合は、検証用追加機としてApple Watch Series 8あたりを購入しようかと覚悟していたので助かりました。
SE 第2世代でもいいから追加機導入して2台開発体制にする方がいいかな。iOSとは違ってwatchOSアップデートはサブ機でお試しが無難ですから。
struct MemoToolAW_ComplicationsEntryView : View {
var entry: Provider.Entry
var body: some View {
Image(systemName: "square.and.pencil")
.resizable()
.aspectRatio(contentMode: .fit)
.foregroundColor(.white)
.background(Color.blue)
.containerBackground(for: .widget){ // watchOS 10から必須
Color.blue
}
}
}
[Mac M2 Pro 12CPU, Ventura 13.6, watchOS 10.0.1, Xcode 15.0]
watchOS 10でComplicationのコーナー全体を円弧状表示できるようになりました。
これまではラベルのみ円弧状表示で本体は水平表示でした。水平表示では”令5″の2文字でスペース的に限界だったのを”令和5″の3文字に増やすことができました。
ただし前回記事に書いている通り、実機(Apple Watch SE)ではまともに表示できていません。シミュレータでのみ成功しています。
struct ComplicationCorner : View {
var entry: Provider.Entry
var body: some View {
Text(getFormattedYear())
.font(.system(size: 22))
.widgetCurvesContent() // これを追記、"令和5"が円弧状に表示される
.foregroundColor(.green)
.widgetLabel {
Text(getFormattedDate() + getFormattedWeekday())
.foregroundColor(.yellow)
}
}
[Mac M2 Pro 12CPU, Ventura 13.6, watchOS 10.0.1, Xcode 15.0]
watchOS 10になってAppleさん早速やらかしています。
自製のComplicationがまともに表示されなくなりました。
watchOSはAppleや専門業者以外ダウングレードできないので、Appleがバグ修正するまで放置するしかありません。
XcodeはApple Watch実機をなかなか認識できなくてビルドがままならず、watchOSアプリの開発は時間が掛かるばかりです。結局、iPhoneをMacに有線で再接続するとXcode上でApple Watch実機を認識できました。
iPhone & Apple Watchは家族のヘルスケア管理端末にして、普段使いはPixel & Pixel Watchにしようかと思い始めています。ファミリーウォッチ機能がなければとっくに見切りを付けているところです。
[Mac M2 Pro 12CPU, Ventura 13.6, watchOS 10.0.1, Xcode 15.0]
watchOSが10にバージョンアップし、watchOS版アプリのToolbarItemの位置をbottomに設定できるようになりました(.bottomBarと記述)。
これまでは”.automatic”にして上部にしか配置できませんでした。これでメモアプリwatchOS版のUIを改善できました。
この種の機能がバージョン10にしてようやく導入というのは結構遅いと思います。急ピッチで機能の拡充をお願いしたいものです。
import SwiftUI
import CoreData
struct ContentView: View {
@Environment(\.managedObjectContext)var viewContext
@FetchRequest(
entity: Note.entity(),
sortDescriptors: [NSSortDescriptor(key: "creationDate", ascending: false)])
private var contents: FetchedResults<Note>
var body: some View {
NavigationView{
List{
ForEach(contents){content in
NavigationLink{
if((content.content?.isEmpty) == false){
DraftAppleWatch(text:content.content!, note: content)
}
}label:{
if((content.content?.isEmpty) == false){
Text(content.content!)
}
}
}
.onDelete(perform:deleteContent)
}
.navigationTitle("メモリスト")
.navigationBarTitleDisplayMode(.inline)
.toolbar{
ToolbarItem(placement:.bottomBar){ // ここを変更
NavigationLink{
DraftAppleWatch()
}label:{
Text("+")
.font(.system(size: 24))
}
}
}
}
.accentColor(.blue)
}
<以下略>
[Mac M2 Pro 12CPU, macOS Ventura 13.5.2]
Adobe XDでitemの座標とサイズを出力するプラグインを作成しています。
これまでは開発者コンソールに出力させてからコピー&ペーストしてテキストファイルを作成していました。
UXP for Adobe XDというプラットフォームを使うとファイル選択画面を表示させてテキストファイルに出力させることが出来ます。
ChatGPT(gpt-4)がこのプラットフォームの存在を教えてくれました。gpt-3.5ではAdobe XDのような商業アプリに関する情報はほとんど扱っていません。
一部有識者がgpt-4の性能低下を明らかにしていますが、それは高度な計算を大量に実行する場合の話であって、一般的な用途では変わらず優秀だと言えるでしょう。
const fs = require("uxp").storage.localFileSystem;
async function myCommand(selection) {
let items_list = "";
var num = 1;
selection.items.forEach(function(value){
if (num < selection.items.length){
items_list += value + ";";
} else {
items_list += value;
}
num += 1;
});
// txtファイルとして保存する
const file = await fs.getFileForSaving("output.txt", { types: ["txt"] });
await file.write(items_list);
}
module.exports = {
commands: {
GetItemXY: myCommand
}
};
[Mac M2 Pro 12CPU, macOS Ventura 13.5]
YouTubeをカスタマイズする拡張機能 own-youtubeをSafariへ移植しました。ソースコードはGitHubから入手しました。
移植と言ってもそんな大層な内容ではなく、Xcode上でChrome版をコピーしただけです。Finder上でファイルコピーしてもxcodeprojファイルに反映されないため移植は出来ません。
iPadOSでは正常に動作しましたが、iOSでは検索窓だけの初期画面にはなりませんでした。
この拡張機能を導入してから安易に動画を再生しなくなり、時間を無駄に消費することもなくなりました。