どう書く?org|文字列を指定されたバイト数で分割
コマンドプロンプトでネギ振りIevanPolkka
こんなもの作ってました。
IronPython|XHTMLをゴニョゴニョするスクリプト書いてみた。
コード保管庫の更新でいずれこういうのが必要になるんじゃないかと思って書いてみた。sysすらimportしない生粋のIronPython、全部.NETで書いてます。あーIronPython可愛いよIronPython可愛い。
import clr
clr.AddReference("System")
clr.AddReference("System.XML")
from System import *
from System.Console import *
from System.IO import *
from System.Environment import *
from System.Xml import *
def update(file):
WriteLine(file)
nameSpace = "http://www.w3.org/1999/xhtml"
xmlDoc = XmlDocument()
xmlDoc.Load(file)
xnm = XmlNamespaceManager(xmlDoc.NameTable)
xnm.AddNamespace("ns", nameSpace)
for node in xmlDoc.SelectNodes("//ns:html/ns:body/ns:p/ns:code", xnm):
at = xmlDoc.CreateAttribute("class")
at.Value = "code"
node.Attributes.Append(at)
xmlDoc.Save(file)
dir = GetCommandLineArgs()[2]
for file in Directory.GetFiles(dir, "*.html", SearchOption.TopDirectoryOnly):
if (Int32.TryParse(Path.GetFileNameWithoutExtension(file)) and
Path.GetFileNameWithoutExtension(file).Length == 5):
update(file)
XPATHで要素拾って属性付けるだけのコード。Int32.TryParseがうまく呼べないんだよなぁ。C#のout相当のことをPythonでやる方法がわからない。だから引数省いたら実行出来た。でも、パース出来ない値でもTrue返してるみたいだ。意味が無い。
dir = GetCommandLineArgs()[2]
って行なんだけど、System.Environment.GetCommandLineArgs()が返すのは頭から
0:ipy
1:自身のスクリプトのパス
2:スクリプトに渡した引数
になるみたい。sys.argvと違うから注意。
昨日はCLR/Hの勉強会
初めての勉強会で、周りの人が皆スーパーハカーに見えて、やっぱり皆さんプロの方で…。良い日でした。
難しいこと書くの苦手なんでざっくりと感想を書きます。
C#4.0:dynamic怖い、dynamic怖い。でもIronPythonと連携しやすくなるんなら嬉しいかな。
SilverLight:TreeView楽しみだよ、TreeView楽しみ。早く来てー。
Windows7:軽くなるのは嬉しいな。窓一杯開いても重くならないしくみとか、PCの使い方が変わりそうですよ。
【課題】
名刺を作る。
次回も参加させて頂こうと思うです。
C#|TwitterのAPIを叩くライブラリを作ってみた2
少しずつ作業を進めています。
でUPしてるファイルを最新版に差し替えました。追加でUPしてると容量パンクしちゃうので差し替えです。
ダイレクトメッセージ関連とかブロック関連とか未実装だったり、書きっぱなしでテスト出来てない部分は多いですが、そこそこ使えるようになってきました。
TwitterAPIとか全く知らないけどTwitterクライアント作っちゃうよって用途に使えるライブラリにするのが目標ですが道のりは遠い…。
簡単な使い方なんですが、Anis.Twitter.Api.MethodsクラスをID、パスワードでインスタンス化して、あとはインテリセンスのコメント見て下さい。
VB.NET|Visual Basic中学校にて僕のプログラム掲載
以前に常駐しない付箋紙ソフトを作ってみた。にてUPしていたC#製の付箋紙アプリ”DeskTopMemo”のVB.NET版”DeskTopMemoVB
“がVisual Basic 中学校で紹介されました。
紹介して貰うためにわざわざVB.NETで書き直して、管理人のるきおさんにメールでお願いしたんですけどね。
ソースの中には
・設定の簡単な保存、読み込み
・テキストの描画サイズを正確に計算する方法
・.NETでWindowsの壁紙を変更する方法(ここはネットで拾ったコードのコピペですが…)
・コントロールのイメージをBitmapに描画する方法
等のTipsが詰まってます。
一つでも興味があれば是非々々読んでみて下さいです。
C#|WPFアプリケーションにてマウスイベントが拾えない問題
まず問題のコード
【XAML】Window1.xaml
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown">
</Grid>
</Window>
【C#】Window1.xaml.cs
using System.Windows;
using System.Windows.Input;
namespace WpfApplication1 {
/// <summary>
/// Window1.xaml の相互作用ロジック
/// </summary>
public partial class Window1 :Window {
public Window1() {
InitializeComponent();
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
MessageBox.Show("Clicked!");
}
}
}
フォームをクリックしても何も起こらない。
しかし、Window1.xamlをこうすると…
【XAML】
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown" Background="White">
</Grid>
</Window>
GridのBackgroundプロパティにWhiteを指定している。
こうすると意図した通りにメッセージボックスが表示される。
また、Window1.xamlではなくWindow1.xaml.csのコンストラクタで
GridのBackgroundにBrushes.Whiteを指定してもメッセージボックスが表示された。
色が無いコントロールはマウスイベントを拾えない!?仕様なのかバグなのか…。
Linux|WindowsとUbuntuのurlショートカット
【IEのお気に入り】
ファイル名は”タイトル.url”
中身は最低限これで動く
[InternetShortcut]
URL=ここにURL
文字コードはshift-jis
改行コードはCR-LF
【ubuntu】
ubuntuでFireFoxを起動して、アドレスバー横のアイコンをデスクトップにドラッグ&ドロップして出来たファイルはこんな感じだった。
ファイル名:”タイトル.desktop”
Windowsと違ってプログラムのショートカットとurlのショートカットの区別はないらしい。
中身はこんな感じ
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=ここにタイトル
Type=Link
URL=ここにURL
Icon=gnome-fs-bookmark
文字コード:UTF-8
改行コード:LF
デスクトップ上で表示されるのはファイル名じゃなくてNameキーの内容だった。
こんな感じでIEのお気に入りをubuntu用に変換するプログラム書いたらうまく動いた。
他のディストリビューションはどうなんだろう。ググっても分からなかった。
Mono|Monoを試してみた
Linuxを使ってみた
+
.NETプログラミングをしてる。
+
Windowsの資産をLinuxで活かしたい
=
monoですよね。
Ubuntuにはじめからmonoが入っていたので、https://anis774.net/Application/15puzzle/publish.htmでClickOnceで配布してる15パズルを実行してみました。しかし、ダイアログが出て実行出来ません。考えてみればWindowsの実行ファイルがそのまま動くわけないですよね。
ググってみると、mono hoge.exeみたいにしないと実行出来ないんだとか。java hogeってやるみたいなものですね。右クリックで開くファイルにmonoを指定して実行してみます。すると、ダイアログは出ませんが、何も起こりません。
またまたググってみると、どうやらmonoにはWindow.Formsに相当するものが標準では入ってないらしいです。
パッケージマネージャでmonoで検索して、それっぽいのを適当にインストールしてからもう一度実行を試みると動きました、こんな感じで。
![ClpBdImg2[1]](https://anis774.net/wp-content/uploads/2014/01/ClpBdImg21.jpeg)
リソースに入れた効果音がならない問題はありますが、ちゃんとゲームは出来ました。速度も全く問題無しです。
他にも色々な自作アプリを試したのですが、Windowsの時と挙動が若干違うのがあったり、中でWin32APIを呼び出してるアプリは動かなかったりとかはあるようです。
でも、最初からmono、Windows双方での運用を意識して開発することは充分可能なんじゃないかと感じました。
P.S.
余興で作った上の15パズルのJava版をUbuntuのGUI上で実行出来ませんでした。monoの場合はmono hoge.exeで動きますが、Javaの場合はjava hoge.classではなくてjava hogeですよね。これ相当の操作はGUI上で出来るんでしょうか。