void SetDateFromYYYYMMDD(CDateTimeCtrl& dateTimeCtrl, int yyyymmdd) { COleDateTime date; int year = yyyymmdd / 10000; int month = (yyyymmdd % 10000) / 100; int day = yyyymmdd % 100; date.SetDate(year, month, day); dateTimeCtrl.SetTime(date); } // 使用例 SetDateFromYYYYMMDD(m_date, 20240923);
html&javascriptで、偶数日はindex1.html 奇数日はindex2.htmlを表示するようにする
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>日付に応じたリダイレクト</title> </head> <body> <script> // 現在の日付を取得 const currentDate = new Date(); // 日にちを取得(1-31) const dayOfMonth = currentDate.getDate(); // 偶数日か奇数日かを判断し、適切なページにリダイレクト if (dayOfMonth % 2 === 0) { // 偶数日の場合 window.location.href = 'index1.html'; } else { // 奇数日の場合 window.location.href = 'index2.html'; } </script> </body> </html>
windowsでファイルをわざとロックさせる方法
powershellで以下を実行
$file = "C:\path\to\your\file.txt" $fileStream = [System.IO.File]::Open($file, 'Open', 'Read', 'None')
C++ 拡張子がcsvかのチェック
#include <cstring> #include <cctype> // ... if (strlen(p) > 4) { const char* ext = p + strlen(p) - 4; if (_stricmp(ext, ".csv") == 0) { // 拡張子が .csv または .CSV } }
_stricmp()は大文字小文字区別しない比較関数。
MFC CDateTimeCtrlで現在の日時指定
// 現在の日時に設定する SYSTEMTIME st; GetLocalTime(&st); pDateTimeCtrl->SetTime(&st);
MFC ダイアログ上の部品全部非表示する
// 全てのオブジェクトを非表示にする CWnd* pChild = GetWindow(GW_CHILD); while (pChild) { int nID = pChild->GetDlgCtrlID(); pChild->ShowWindow(SW_HIDE); pChild = pChild->GetWindow(GW_HWNDNEXT); }
MFC top / left が 0 なら、親ウインドウの中心とこのウィンドウの中心が合うようにする
// top / left が 0 なら、親ウインドウの中心とこのウィンドウの中心が合うようにする if (top == 0 && left == 0) { CWnd* pParentWnd = (CWnd*)GetParent(); if (pParentWnd) { CRect parentRect; pParentWnd->GetWindowRect(&parentRect); CRect dialogRect; GetWindowRect(&dialogRect); int parentCenterX = parentRect.left + (parentRect.Width() / 2); int parentCenterY = parentRect.top + (parentRect.Height() / 2); int dialogWidth = dialogRect.Width(); int dialogHeight = dialogRect.Height(); left = parentCenterX - (dialogWidth / 2); top = parentCenterY - (dialogHeight / 2); } }
MFC 今カーソルが砂時計かの確認
HCURSOR hCursor = GetCursor(); if (hCursor == LoadCursor(NULL, IDC_WAIT)) { // カーソルは砂時計 } else { // カーソルは砂時計ではない }
MFC チェックボックスのテキスト文字に合わせた幅調整する
/// <summary> /// テキストの幅を計算し、チェックボックスのチェックマーク部分の幅を考慮して、適切なサイズのCRectを返します /// </summary> /// <param name="text"></param> /// <returns></returns> CRect CalculateCheckboxRect(CButton* pCheckbox, const CString& text) { CDC* pDC = pCheckbox->GetDC(); CFont* pOldFont = pDC->SelectObject(pCheckbox->GetFont()); CSize textSize = pDC->GetTextExtent(text); pDC->SelectObject(pOldFont); pCheckbox->ReleaseDC(pDC); // チェックボックスのチェックマーク部分の幅と高さ(システムメトリクスから取得) int checkWidth = GetSystemMetrics(SM_CXMENUCHECK); int checkHeight = GetSystemMetrics(SM_CYMENUCHECK); // 余白を追加(左右に5ピクセルずつ、上下に2ピクセルずつ) int width = textSize.cx + checkWidth + 10; // 左右の余白10ピクセル int height = max(textSize.cy, checkHeight) + 4; // 上下の余白4ピクセル(2 + 2) // x座標に5ピクセル加えて左の余白を確保 // y座標に2ピクセル加えて上の余白を確保 return CRect(5, 2, width + 5, height + 2); }
pythonでライブドアブログのsitemap.xmlからURLの一覧を取得する
import requests from xml.etree import ElementTree import time def fetch_sitemap(url): response = requests.get(url) return response.content def parse_sitemap(content): root = ElementTree.fromstring(content) # サイトマップインデックスの名前空間を取得 ns = {'sm': root.tag.split('}')[0].strip('{')} urls = [] # サイトマップまたはURLエントリを探す for sitemap in root.findall('.//sm:sitemap', ns) + root.findall('.//sm:url', ns): loc = sitemap.find('sm:loc', ns) if loc is not None: urls.append(loc.text) return urls def get_all_urls(start_url): to_crawl = [start_url] crawled = set() all_urls = [] while to_crawl: url = to_crawl.pop(0) if url in crawled: continue print(f"Fetching: {url}") content = fetch_sitemap(url) urls = parse_sitemap(content) for u in urls: if u.endswith('.xml'): if u not in crawled and u not in to_crawl: to_crawl.append(u) else: all_urls.append(u) crawled.add(url) time.sleep(1) # サーバーに負荷をかけないよう1秒待機 return all_urls # 最初のサイトマップURL start_url = "http://blog.livedoor.jp/hogehoge/sitemap.xml" # すべてのURLを取得 all_urls = get_all_urls(start_url) # 結果を表示 print(f"Total URLs found: {len(all_urls)}") for url in all_urls: print(url)