読者です 読者をやめる 読者になる 読者になる
スポンサーリンク

プログラミング

Windowsで,簡単にファイルを「ごみ箱」に送るバッチのサンプルコード。削除処理に「シェル名前空間」を使う仕組みの解説

バッチのまとめTOPへ Windowsで,ファイルをゴミ箱の中に移動するWSHバッチ。完全に削除せず,ごみ箱に送るだけなので,安心して実行できる。 gomi1.js(ごみ箱に送る際に確認なし。ダブルクリックするだけ) // 削除したいファイル var file_path = "C:\\te…

迷路をウネウネと生成する,ライフゲーム的なJavaScript (アスキーアートで反復描画アニメーション)

「迷路をウネウネと生成する,ライフゲーム的なJavaScript」ができた。 ボタンを押すと,迷路が生成されてゆく途中経過を見れる。(ポコポコッ・・・ワサワサッ…) 巨大な迷路がアスキーアートで描画される。"┤┐├"みたいな罫線AAと,"■"によるブロックAAの2…

Windows XP等の,IE脆弱性の攻撃方法「ヒープ・スプレー」と「Use After Free」を,HTMLサンプルコードで理解しよう

HTMLとJavaScriptで,IEの脆弱性を攻撃できる。 (※具体的なサンプルコードも本記事に掲載) それが「Use After Free」および「ヒープスプレー」。 ちょうど2014年4月にWindows XPのサポート終了後すぐ,この脆弱性を攻撃するウィルスが発見され,大騒…

HTML5の「Web Workers API」を,別ファイルを使わずページ単体で利用するサンプル (createObjectURLがあれば,1ファイルでマルチスレッドのJSコーディングが可能)

JavaScriptプログラミングのTOPへ HTML5の「Web Workers API」(非同期処理の仕組み)を,外部スクリプトを使わずに,1ファイルだけで実行するサンプルコード。 ワンライナーで(たった1行で)Workerスレッドを起動できる。簡単に書くとこんな感じ。 // ス…

あなたが正規表現の中級者か判別する10問テスト (文字列処理の必須知識)

スキルチェックの目次へ あなたが,正規表現を扱うプログラマーとして,中級以上の実力を持っているかどうか判定します。 下記に,正規表現に関する10問の質問があります。いずれも,「文字列を処理する実用的なプログラム」を書く上で必要な知識です。 こ…

開発に役立つ,BATファイルの書き方・パターン集 (コマンドプロンプトの定石を体系的に学び,バッチ中級者になろう)

バッチのまとめTOPへ Windows上の処理を自動化するプログラムが,BATファイルである。「コマンドプロンプト」上での手作業を省略し,自動実行できる。 Windowsが存続する限り,BATファイルはなくならないだろう。バッチ・プログラミングの需要は,何があろう…

「ラムダ計算」を独学で学習するための,講義ノートやPDFのリンク集 (復習用の問題付き)

講義ノートの目次へ ラムダ計算は,コンピュータ・サイエンスの重要な1分野。 「λ」を使って各種の関数を記述し,λどうしの計算方法を習得すれば・・・ HaskellやF#などの関数型言語を習得するために役立つ。 プログラミングにおいて,関数についての理解を…

Javaで,匿名クラス内で定義したpublicメソッドの警告が消せず困った話 (静的なJavaと,動的なJavaScriptを連携させるDSLを作りたい)

重要なお知らせ:この記事で公開した情報は,AndroidのMVCフレームワーク「Android-MVC」の機能の一部として取り込まれました。より正確な設計情報や,動作可能な全ソースコードを閲覧したい場合,「Android-MVC」の公式ページより技術情報を参照してくださ…

AndroidやiOSの「ハイブリッドアプリ」で,JavaScriptとネイティブ・コードが連携する仕組みを図解 (おまけ:HTML側で施すべき,クロスプラットフォーム対策)

AndroidプログラミングのTOPへ HTMLやJavaScript等のWeb技術を使って,AndroidやiPhoneなどモバイル環境のネイティブ・アプリを作成する事ができる。そういうアプリの事をハイブリッド・アプリと呼ぶ。 AndroidとiOSでは,ハイブリッド・アプリを実現するた…

あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界)

あなたは,下記のコードを理解できない。 p f /g+h/i これはRubyのコードである。「p」は,コンソールに出力する関数である。 問: だいたい,何をやっているコードですか? ※例えば,四則演算など。 構文をおおまかに説明して下さい。 どれが変数で,どれが…

Javaのジェネリクスで,T.class や new T() ができず悩んだ話 (型パラメータのインスタンス化に関し、フレームワーク設計からケーススタディ)

Javaのジェネリクスで,型パラメータ T のインスタンスが欲しくなったことはあるだろうか? 昨今のオブジェクト指向プログラミングにおいて,ジェネリクスは必須の基本文法だ。 扱う対象のクラスが抽象化されて汎用的になりつつ,なおかつ型安全性が確保され…

GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き)

GoFデザインパターンの一覧表と,活用のためのコメント,および入門者が独学するためのリンク集(サンプルコード付き)。入門者の独学を支援するために,このページのURLを提示して熟読させ,各パターンを短時間で効率よく学んでもらう。 デザインパターンは…

「バリデーション」APIと「単体テスト」APIの類似性,およびそのスタイルが時代と共に洗練される過程の概観

「テスト」と「バリデーション」は,互いに酷似している。 単体テスト:開発者が,システムの入出力の振る舞いを検証すること。 バリデーション:システムが,ユーザの入力値を検証すること。 ユニットテストとバリデーションは本質的に同類の処理であり,そ…

AndroidアプリにStrutsのようなコントローラを導入し,画面制御させるサンプルコード (の試作品。バリデーションやビジネスロジックの骨組み)

AndroidプログラミングのTOPへ 重要なお知らせ:この記事で公開した情報は,AndroidのMVCフレームワーク「Android-MVC」の機能の一部として取り込まれました。より正確な設計情報や,動作可能な全ソースコードを閲覧したい場合,「Android-MVC」の公式ページ…

Androidアプリの画面レイアウトを,まるでjQueryのようなコードで動的構築できるライブラリ (の試作品。UIコーディングのためのDSL)

AndroidプログラミングのTOPへ 重要なお知らせ:この記事で公開した情報は,AndroidのMVCフレームワーク「Android-MVC」の機能の一部として取り込まれました。より正確な設計情報や,動作可能な全ソースコードを閲覧したい場合,「Android-MVC」の公式ページ…

制御しやすい「デバッグ用ロガー」を自作して,サクサク開発 (Javaで,メソッド名を含めログ出力する方法のサンプル)

重要なお知らせ:この記事で公開した情報は,AndroidのMVCフレームワーク「Android-MVC」の機能の一部として取り込まれました。より正確な設計情報や,動作可能な全ソースコードを閲覧したい場合,「Android-MVC」の公式ページより技術情報を参照してくださ…

Javaの非同期処理を,シングルスレッドのようにシンプルにコーディングするための設計パターン (並列処理を逐次処理にする)

重要なお知らせ:この記事で公開した情報は,AndroidのMVCフレームワーク「Android-MVC」の機能の一部として取り込まれました。より正確な設計情報や,動作可能な全ソースコードを閲覧したい場合,「Android-MVC」の公式ページより技術情報を参照してくださ…

開発用のフォルダ構成を,自動的に生成してくれるバッチ (プロジェクト用のリポジトリ立ち上げに便利。ついでに,用が済んだら自動消滅!)

ソフトウェア開発のためのフォルダ構造を,自動的に生成するバッチ。 例えばSVNリポジトリの立ち上げ時などに,ワンクリックで,チームで作業可能な開発プロジェクトのひな型を生成することができる。毎回同じようなフォルダ構造を手動で作るのは面倒なので…

bat中でforループをネストし,サブルーチンを呼び出して,条件付きファイル検索の結果を一斉コピーしよう (ファイル名の重複防止機能付き)

バッチのまとめTOPへ 下記のような要望がある。 特定のフォルダツリーの中から,batファイルで,Excelファイルを抽出したい。 サブディレクトリのフォルダ名は,スペースを含む場合がある。 抽出対象のExcelファイルは,ファイル名の先頭に特定の「先頭ID」…

プログラミング・コーディングのTips集

プログラミングに特化した記事の一覧。下流工程・実装工程で役立つ情報を集約。 バッチやマクロ作成に関連した記事はこちらを参照。 JavaScriptのエラー集はこちらを参照。 Android開発はこちらを参照。 開発の一般的なTips集はこちらを参照。 目次: (1)…

Androidアプリで,レイアウト用XMLの名前をいちいち指定せずに,自動的に画面を描画させよう (Rails風のCoCなレンダリング)

AndroidプログラミングのTOPへ 重要なお知らせ:この記事で公開した情報は,AndroidのMVCフレームワーク「Android-MVC」の機能の一部として取り込まれました。より正確な設計情報や,動作可能な全ソースコードを閲覧したい場合,「Android-MVC」の公式ページ…

バッチ職人になろう (WindowsとLinux上での開発業務を自動化するノウハウ集)

なぜバッチ職人になる必要があるのか Windows コマンドプロンプト WSH / JScript VBA UWSC PowerShell Linux Bash クロスプラットフォーム OpenOfficeマクロ 補足 ※↑ もくじジェネレータ で自動生成 なぜバッチ職人になる必要があるのか あなたは,自分の作…

Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道)

バッチのまとめTOPへ bash 初級者は,簡単なコマンドが並んだだけの小さなスクリプトを書くことができる。しかしシェルの動作原理をよく理解しておらず,一歩進んだことをやろうとするとつまずく。 シェルスクリプトの中級者になるためには,Linux上でシェル…

Javaで,private変数・privateメソッド・privateコンストラクタを,外部から呼び出そう (リフレクションの方法)

Javaでは,クラス内でprivate宣言されたメンバは,普通は外部からは呼び出せない。しかし,リフレクションを使えば,それも可能。 本エントリでは,以下のサンプルコードを示す。 (1) privateなインスタンス変数の呼び出し方法 privateなクラス変数の呼び…

JavaScriptでの例外設計 (throw,try-catch-finally構文のイメージと利用パターン)

JavaScriptプログラミングのTOPへ JavaScriptの例外(throw, try-catch-finally構文)の使い方について,以下の点を論じる。 (A)breakとreturnとthrowの比較 (B)throwを利用した設計のイメージ (C)throwの使いどころ (D)例外処理のサンプルコー…

JavaScriptで,クラスを継承する方法 (複数のサブクラスから共通クラスのプロトタイプを参照する)

JavaScriptプログラミングのTOPへ JavaScriptのコーディングでオブジェクトを扱う際,「インスタンスがちょっとずつ異なっている」という場合は,その自由度に見合ったクラス(=プロトタイプ)を1つだけ定義してやれば事足りる。 しかし,それに加えて「ク…

JavaScriptで,オブジェクトやクラスの初歩を理解しているか,実力を確かめるための7つの質問 (サンプルコード付き)

スキルチェックの目次へ JavaScriptはオブジェクト指向のスクリプト言語。オブジェクトやクラスの扱い方の基礎を理解していない場合,開発の戦力にならない。 JavaScriptの業務スキルレベル 判別表 (5段階) http://language-and-engineering.hatenablog.j…

Ruby on RailsのModel内に記述するメソッドの分類表

Ruby on Railsで,子モデルクラスに記述すべきメソッドの,分類済み一覧表。 「子モデル」とは, DBにアクセスするクラス。 そのクラスのインスタンスオブジェクトがアプリ全体で持ち回され,単一のレコードを扱う上で便利な働きをする。 これに対し,「親モ…

コマンドプロンプトから,Win32 APIや任意のDLLを呼び出して実行しよう (コマンドプロンプトから画面キャプチャする方法の仕組みを理解)

バッチのまとめTOPへ Windowsのコマンドプロンプト上で,Win32 APIなどのDLLを呼び出して実行する。例えば,コマンドプロンプトだけで,任意のキー操作イベントをエミュレートできる。 サンプルコマンド:コマンドプロンプトから,画面をキャプチャする。(P…

今から3分で,IE 上で .NET のDLLを動かそう (ブラウザ上で C# のコードを動かす方法)

今から3分で,Webページ上で,Microsoft .NET のコードを動かそう。JavaScriptにできない事も,.NETなら可能になる。 今回は,Windowsアプリ用のUI部品(カレンダー)を,Webページ上で使ってみる。 メモ帳さえあればよい。 Visual Studioは不要。 .NETの詳…

画面のスクリーンショットを,Excelブック内に自動的に保存するバッチ

バッチ・マクロのTOPへ 画面のスクリーンショット(キャプチャ)を,バッチで自動的に取得しよう。そしてExcelブック内に,自動的に保存する。 開発プロジェクトで,画面定義書などのドキュメントを効率的に作成するために利用可能。 使う技術は Excel VBA W…

ブラウザのビジー状態を判定するための,より良い方法 (WSHでIEを自動操作する際,COMのアプリケーションイベントを利用する)

バッチのまとめTOPへ ActiveX経由でCreateObject("InternetExplorer.Application") などして,IEを自動操作する際,「ブラウザのビジー状態の解除の判定」は,正確にやろうとすると結構難しい。よくあるのは, (DOM操作)ブラウザ上で,submitボタンクリッ…

ブラウザの自動操作の最大の問題,「タイムアウト」を克服するには

ブラウザの自動化を妨害する最後の壁,それはタイムアウト。Webページのロード時に,ブラウザのビジー状態が解除されず,いつまでも次のステップに進めなくなってしまう現象のこと。 どんなツールを使っても,タイムアウトは必ず発生する。自動化ツールをた…

プロジェクト専用のDSLで,効率的にIEを自動操作する(WSH/JScript)

バッチのまとめTOPへ 以下のエントリでは,JScriptでブラウザのオートメーションを行なうための基礎を述べた。 JScript / VBScript (WSH)で,IEを自動操作しよう http://d.hatena.ne.jp/language_and_engineering/20090713/p1 その続編として,プロジェクト…

SQLで,テーブルに存在しない複数行のデータを取得する方法 (PostgreSQLの generate_series関数をマスターしよう)

PostgreSQLで,テーブルを使わずに,複数行のデータを取得する方法。 SQLの中で,大量の定数データを使う必要がある。(例えば,1ヶ月間の日付全部とか,1000までの素数全部とか) だが,それらのデータを,前もってどこかのテーブルに格納しておくことはで…

サクラエディタのマクロで,CSSを自動整形しよう

バッチのまとめTOPへ サクラエディタ上で,CSSを自動整形したい。 例えば,エディタ上に div.hatena-asin-recommend { margin:4px 10px; padding:5px 4px; text-align:left; width:96%; } div.hatena-asin-recommend a { border:medium none; text-decoratio…

Excel VBAのマクロを,複数のブックから利用する方法 (標準モジュールをブックの外部で管理して,共通ライブラリとして読み込み)

バッチ・マクロのTOPへ 通常,Excel VBAのコードは, .xls ファイル(=ブック)の内部に 保存されてしまう。これだと 複数のブックで共通のコードを利用できないし, マクロの修正があると,全ブックを修正しなければならないし, ソースコードをテキスト形…

JavaScriptで,グローバル変数の存在判定をする3つの方法 ("window"の定義状況を確認したい)

JavaScriptプログラミングのTOPへ JavaScriptで,グローバル変数が存在するかどうか判定するための3つの方法。 3つのうち1つはよく使う。残りの2つは,特殊な状況(WSHとの使い分けなど)で役立つ。

プログラミング言語「APL」の入門 (Windowsでのフリー実行環境つき)

APL(A Programming Language)は,配列処理・ベクトル演算に秀でたプログラム言語。とてもふしぎな記号(Unicode)でコーディングする。 ↑APLでのライフゲームのソースコード*1 発端はこれ: 未来の言語は「APL」? Rubyのまつもと氏が講演 http://www.atma…

CGIが動くWebサーバを,3分で自作しよう (ブラウザからのHTTPリクエストを処理する,簡易ソケットプログラム)

Webサーバを3分で自作する。 ローカルPC内の HTMLなどの固定ファイル PHP, Rubyなど動的ページ を,どちらもブラウザ越しでアクセスできるよう,インターネットに公開する。

テキストボックス内のカーソル(キャレット)位置や選択範囲を,JavaScriptで取得・設定する方法

JavaScriptプログラミングのTOPへ input や textarea などのテキストボックスをフォーカスした際に表示される,「|」の形をしたカーソルの事をキャレットという。また,Shiftキーを押しながらキャレットを移動させると,文字列が選択状態になる。 キャレッ…

画面をコマンドラインからキャプチャする方法 (WSHバッチでPrintScreen)

バッチのまとめTOPへ PCの画面のスクリーンショット作成のために,通常は PrtScrキーを押して 画像編集ソフトを起動し ペーストして 画像をファイルに保存し 画像編集ソフトを閉じる といった手順を踏む。 この面倒な作業は,WSHのスクリプトで自動実行でき…

ウィンドウをきっかけに Windows の内部の仕組みを探る (前半の補足)アセンブラでウィンドウを生成する方法

前回の記事では以下の事を学んだ。 Windowsにおいてウィンドウを表示する機能は,Windows API という API によって提供されている。 Windows API の中で,特に user32.dll というファイルがウィンドウ処理を担当している。 (そして user32.dll の中味を逆ア…

JavaScriptで,動的に追加されたイベントリスナの実行順序を保証する方法

JavaScriptプログラミングのTOPへ 前記事では下記のような事を述べた。 Firefoxのイベントリスナーが複数ある場合,追加された順に実行される。 IEのイベントリスナーが複数ある場合,追加順には実行されないし,追加順の逆順でもない。実行順序を予測する事…

JavaScriptで,文字列を反復する / 逆順に並び替える方法

JavaScriptプログラミングのTOPへ クイズ:JavaScriptで, "文字列".func() のような(メソッドチェーンができるような)形式で, 1. 文字列を逆順に並び変える方法は? ( PHPで言うと str_rev() 関数 ) 2. 文字列を n 回反復する方法は? ( PHPで言うと …

JavaScriptの動かないコード (中級編) かけ算を間違える

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事:買い物の合計金額の計算 合計額=(商品単価+手数料単価)×商品個数 商品単価や手数料単価は0.1などの値も入る。 支払い金額は,端数切り捨てとす…