[Mac M2 Pro 12CPU, MacOS Ventura 13.6, clang 15.0.0]
今日10/20(金)9時頃からChatGPTのAPIが動いていませんでした。gpt-3.5、gpt-4どちらもです。
OpenAI Developer Forumにもクレームが届いていましたが、11時20分頃に一時復旧しました。まだ完全には直っていないようです。
[Mac M2 Pro 12CPU, MacOS Ventura 13.6, clang 15.0.0]
今日10/20(金)9時頃からChatGPTのAPIが動いていませんでした。gpt-3.5、gpt-4どちらもです。
OpenAI Developer Forumにもクレームが届いていましたが、11時20分頃に一時復旧しました。まだ完全には直っていないようです。
[Mac M2 Pro 12CPU, MacOS Ventura 13.6, clang 15.0.0]
昨晩、自製BBS閲覧アプリで特定の掲示板をクリックするとアプリが落ちるようになってしまいました。
クラッシュレポートからXPath式を評価する際にエラーになることが判明しました。エラーになってもアプリが落ちないようにexecuteXpath関数の戻り値をNULL以外に変えるなど対処しましたが、結局うまくいきませんでした。
今朝になって正常動作するようになったものの、再発が懸念されます。クラッシュレポートは後からでもmacOSのコンソールアプリから閲覧できます。一応、エラーが発生しそうな箇所を修正して予防対策しておきました。戻り値云々は見当違いのようです。
当時の他の類似アプリでの挙動は確認できていませんが、ちょっとしたトラブルでもアプリが絶対に落ちないよう堅牢性を持たせたいものです。
// XPath式で要素を取得
xmlNodeSetPtr executeXpath(xmlDocPtr &doc, xmlChar *xpath_expr) {
xmlXPathContextPtr xpath_context;
xmlXPathObjectPtr xpath_obj;
xpath_context = xmlXPathNewContext(doc);
if (xpath_context == NULL) {
cerr << "Error: unable to create new XPath context" << endl;
xmlFreeDoc(doc);
return NULL;
}
xmlNodePtr node = xmlDocGetRootElement(doc);
// XPath式を評価
// 23/10/16 エラー発生, 23/10/17 回復
xpath_obj = xmlXPathEvalExpression(xpath_expr, xpath_context);
if (xmlXPathNodeSetIsEmpty(xpath_obj->nodesetval)) {
cerr << "Error: unable to evaluate xpath expression" << endl;
xmlXPathFreeContext(xpath_context);
xmlFreeDoc(doc);
return NULL;
}
return xpath_obj->nodesetval;
}
xmlDoc* doc = htmlReadMemory(htmlBuffer.c_str(), htmlBuffer.size(), nullptr, nullptr, HTML_PARSE_RECOVER);
if (doc) {
xmlNodeSetPtr tradObj = executeXpath(doc, (xmlChar *)"//*[name()='small']/*[name()='a']");
if (tradObj) {
for (int i = 0; i < tradObj->nodeNr; i++) {
xmlNodePtr node = tradObj->nodeTab[i];
xmlChar* id0 = xmlGetProp(node, (xmlChar*)"href");
xmlChar* title0 = xmlNodeGetContent(node);
string id = convertToString(id0);
id.erase(id.size() - 4);
string title = convertToString(title0);
// cout << "title: " << title << endl;
idTitle.push_back(std::make_pair(id, title));
xmlFree(id0);
xmlFree(title0);
}
} else {
return {}; // else部分がなかったので追記 23/10/17
}
xmlFreeDoc(doc);
} else {
return {}; // else部分がなかったので追記 23/10/17
}
よく使う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()