fujishinko 雑記帳
2015-12-30T18:19:17+09:00
fujishinko
メモ代わりに使わせてもらってます。
Excite Blog
Minecraftでひたすら穴を掘るスクリーンショット その6
http://fujishinko.exblog.jp/22029181/
2015-12-30T18:19:15+09:00
2015-12-30T18:19:17+09:00
2015-12-30T18:19:17+09:00
fujishinko
Java
現在の様子をメモ。
あれからずいぶん広がりました。
中間辺り。
最下層に降りて、掘り進めている方向を見ています。
天井を見上げたところ。
ほぼ正方形になりました。
掘り進めている面に近づいたところ。
地図で見ても正方形になっています。
前回スクリーンショットを撮影した掘り進めている最前線あたり。
現在はここまで進みました。
]]>
Minecraftでひたすら穴を掘るスクリーンショット その5
http://fujishinko.exblog.jp/19596177/
2014-03-22T22:02:18+09:00
2014-03-22T22:02:34+09:00
2014-03-22T22:02:34+09:00
fujishinko
Java
今見返すと面白かったので、現在の情報も後のためにメモしておきます。
現在の様子はこんな感じ。
横穴は結局天井までぶち抜くことにしました。
暗くてやってられない。
横穴の様子はこちら。
範囲が欲張り過ぎです。
それなりに広範囲に横穴を掘っていたのですが、だいぶ天井まで貫通している部分が近づいて来ました。
岩盤近くから見上げた様子。
天井を見上げた様子。
あえてあんまり探索せずにほそぼそやってます。
ちょっと探索すれば、ダイナミックなバージョンの壁を出現させることができます。
記録用に。
現在堀進めている端っこのスクリーンショット。
]]>
Minecraftでひたすら穴を掘るスクリーンショット その4
http://fujishinko.exblog.jp/19596117/
2014-03-22T21:48:53+09:00
2014-03-22T21:49:16+09:00
2014-03-22T21:49:16+09:00
fujishinko
Java
今見返すと面白かったので、記念に残しておきます。
直下堀りは丸石とかが大量に出て効率が悪いことに気が付きました。
横に坑道の真ん中辺りから横に掘り進めて行ってます。
これが2011年9月21日の様子らしい。
広い領域を掘り下げに行ってます。
ここで事件発生。
光源の仕様が変更されたため、自慢の坑道が真っ暗闇に・・・
これが2012年1月7日の様子らしいです。
一大決心して天井も掘削し、ガラス張りにすることにしました。
明るくなった坑道
天井を削っている様子。
この作業、怖かったな・・・
横穴はこんな感じで掘削が進んでいます。
やき石ブロックを支柱に見立て、天井をガラス張りにしています。
続きます。
]]>
Minecraftでひたすら穴を掘るスクリーンショット その3
http://fujishinko.exblog.jp/19596081/
2014-03-22T21:41:51+09:00
2014-03-22T21:41:46+09:00
2014-03-22T21:41:46+09:00
fujishinko
Java
今見返すと面白かったので、記念に残しておきます。
岩盤に向けて黙々と掘っていきます。
この時点で2011年8月13日らしい。
穴を大きくしすぎたことを若干後悔し始めています。
あともう一息で岩盤到達のはず。
2011年8月20日らしい。
ついに岩盤到達!
続きます。
]]>
Minecraftでひたすら穴を掘るスクリーンショット その2
http://fujishinko.exblog.jp/19596049/
2014-03-22T21:34:44+09:00
2014-03-22T21:35:15+09:00
2014-03-22T21:35:15+09:00
fujishinko
Java
今見返すと面白かったので、記念に残しておきます。
ぼちぼち坑道を掘り始めたようです。
欲張ってでかい穴になってます。
徐々に掘り下げて行ってます。
ここで初めてスポーンを見つけた模様。
ちょっとずつ掘り下げて行ってます。
天井に穴は開けていないので松明の数が多め。
結構荘厳な感じになって来ました。
続きます。
]]>
Minecraftでひたすら穴を掘るスクリーンショット その1
http://fujishinko.exblog.jp/19595988/
2014-03-22T21:21:00+09:00
2014-03-22T21:26:46+09:00
2014-03-22T21:22:06+09:00
fujishinko
Java
今見返すと面白かったので、記念に残しておきます。
初めての石炭。
2011年7月26日みたい。
初めての鉄。日付は同く7月26日。
多分、初めての金。
以下、初めてシリーズっぽい。
レッドストーン。
岩盤付近で地底湖見つけた。
初めてマグマ見た。
雨降り。
ダイヤ。興奮したなー。
スライム
溶岩と滝のすごい風景。
きのこがいっぱい。
ドキドキしながらダイヤのツルハシ作りました。
もう3年前か・・・
次から穴掘りを始めているみたいです。
]]>
C#のフォームにBase64デコードしたアイコンを設定する
http://fujishinko.exblog.jp/19259091/
2013-12-30T17:43:04+09:00
2013-12-30T17:40:19+09:00
2013-12-30T17:40:19+09:00
fujishinko
Windows
7.2 アイコン (タイトルバー)
C# タイトルバーのアイコンの設定
Visual Studioを使用せず、アイコンリソースを作成することができないか調べたのでメモ。
まず、アイコンファイルをBase64の文字列に変換します。
変換プログラムはこちらを参考にしました。
Convert Image to Base64 String and Base64 String to Image
また、アイコンはこちらからお借りしました。
https://www.iconfinder.com/icons/51893/command_line_terminal_icon#size=128
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
public class MakeBase64 {
public static void Main() {
byte[] imgData;
using(var fs = new FileStream("sample.ico", FileMode.Open)) {
imgData = new byte[fs.Length];
fs.Read(imgData, 0, imgData.Length);
}
string base64 = Convert.ToBase64String(imgData);
using(var sw = new StreamWriter("sample.ico.base64.txt")) {
//32文字ぐらいに区切って出力
while(0 < base64.Length) {
string line = "";
if (32 < base64.Length) {
line = "\"" + base64.Substring(0, 32) + "\" +";
base64 = base64.Substring(32);
} else {
line = "\"" + base64 + "\";";
base64 = "";
}
sw.WriteLine(line);
}
}
}
}
出力された文字列をプログラムで使用します。
Formアプリケーションはこのようになりました。
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
public class Form1 : Form {
public static void Main() {
Form1 NewForm = new Form1();
Application.Run(NewForm);
}
public Form1() {
this.Size = new Size(200, 200);
this.Icon = CreateIcon();
}
private Icon CreateIcon() {
byte[] iconBytes = Convert.FromBase64String(IconBase64());
Icon icon = null;
using(var ms = new MemoryStream(iconBytes, 0, iconBytes.Length)) {
icon = new Icon(ms);
}
return icon;
}
private string IconBase64() {
return "AAABAAEAgIAAAAEAIAAoCAEAFgAAACgA" +
"AACAAAAAAAEAAAEAIAAAAAAAAAABABIL" +
"AAASCwAAAAAAAAAAAAD///8A////AP//" +
"/wD///8A////AP///wD///8A////AP//" +
(略)
}
}
狙い通りの動きです。
exe自体のアイコンを変更したい場合は、csc.exeにオプションをつけてコンパイルすればOK。
/win32icon:sample.ico
ひょとして、Formのアイコンも変わってくれるかな?と思いましたがダメでした。]]>
C# Dictionaryの最初の要素を取得
http://fujishinko.exblog.jp/17075247/
2012-12-31T14:34:29+09:00
2012-12-31T14:34:56+09:00
2012-12-31T14:34:56+09:00
fujishinko
未分類
やりたいことは、C#で辞書型の最初の値を取得したい。
Who's on Dictionary<>.First()?
http://stackoverflow.com/questions/436954/whos-on-dictionary-first
C#: get first key from Dictionary
http://stackoverflow.com/questions/1820506/c-get-first-key-from-dictionarystring-string
ここらへんをみると、Firstが使えるって書いてあるので、こんなコードを書いてみる。
using System;
using System.Collections.Generic;
public class Sample {
public static void Main(string[] args) {
Dictionary dic = new Dictionary();
dic["テスト1"] = "テスト1の値";
dic["テスト2"] = "テスト2の値";
dic["テスト3"] = "テスト3の値";
KeyValuePair pair = dic.First();
Console.WriteLine("First key: {0}, value {1}", pair.Key, pair.Value);
}
}
コンパイル時にこんなエラーが発生。
sample.cs(14,29): error CS1061: 'System.Collections.Generic.Dictionary.KeyCollection' に 'First' の定義が含まれておらず、型 'System.Collections.Generic.Dictionary.KeyCollection' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
ヒントはここ。
RSRP-179567 error CS1061: 'object' does not contain a definition for 'Foo' and no extension method 'Foo' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
http://youtrack.jetbrains.com/issue/RSRP-179567?query=p
using System.Linq;が必要でした。
using System;
using System.Collections.Generic;
using System.Linq;
public class Sample {
public static void Main(string[] args) {
Dictionary dic = new Dictionary();
dic["テスト1"] = "テスト1の値";
dic["テスト2"] = "テスト2の値";
dic["テスト3"] = "テスト3の値";
KeyValuePair pair = dic.First();
Console.WriteLine("First key: {0}, value {1}", pair.Key, pair.Value);
}
}
これでコンパイルが通りました。
テキストエディタでコードを書いてる人特有で、普通は自動補完されるのだと思いますが、メモ書きとして。]]>
Pythonの辞書型で、キーがないときの初期値指定
http://fujishinko.exblog.jp/14265569/
2011-12-28T00:21:19+09:00
2011-12-28T00:21:21+09:00
2011-12-28T00:21:21+09:00
fujishinko
Python
KeyErrorが発生します。
dic = {'key1' : 'val1', 'key2' : 'val2'}
#これは表示されるが、
print(dic['key1'])
#これはKeyError
print(dic['key3'])
実行してみると、見事エラーになります。
$ python sample.py
val1
Traceback (most recent call last):
File "sample.py", line 6, in
print(dic['key3'])
KeyError: 'key3'
これまでは、こんなかんじでキーの存在チェックをしてました。
dic = {'key1' : 'val1', 'key2' : 'val2'}
if 'key3' in dic:
print(dic['key3'])
else:
print('default_value')
でも、getを使えばお手軽に同様の処理が行えます。
dic = {'key1' : 'val1', 'key2' : 'val2'}
print(dic.get('key1', 'default_value'))
print(dic.get('key3', 'default_value'))
実行してみると狙い通り。
$ python sample.py
val1
default_value
知らなくて、今まで損してた気分です。
これは便利。
]]>
Ubuntu apt-getでeasy_installのセットアップ
http://fujishinko.exblog.jp/14127738/
2011-12-06T20:41:27+09:00
2011-12-06T20:41:25+09:00
2011-12-06T20:41:25+09:00
fujishinko
Python
easy_installがあります。
いままで、
http://peak.telecommunity.com/dist/ez_setup.py
ここのファイルをダウンロードして
python ez_setup.py
を実行していたのですが、Ubuntuだと
sudo apt-get install python-setuptools
これでOK。
easy_installが使えるようになります。]]>
Pythonで時間の差を取得する(datetime)
http://fujishinko.exblog.jp/14093638/
2011-11-30T18:02:00+09:00
2011-11-30T14:05:25+09:00
2011-11-30T14:05:25+09:00
fujishinko
Python
ログファイルの出力はこんな感じ。
関数A開始 20:23:53.822
関数A終了 20:14:14.873
'20:14:14.873' - '20:23:53.822'を実行して関数Aの実行時間を求めたい。
時間を計算する部分の抜粋。
# -*- coding:utf-8 -*-
import datetime
# 開始時間 20:23:53.822
# 終了時間 20:14:14.873
# この差が欲しい
start = "20:23:53.822"
end = "20:14:14.873"
start_dt = datetime.datetime(2011,1,1, int(start[:2]), int(start[3:5]), int(start[6:8]), int(start[9:]) * 1000)
end_dt = datetime.datetime(2011,1,1, int(end[:2]), int(end[3:5]), int(end[6:8]), int(end[9:]) * 1000)
diff_dt = end_dt - start_dt
print u"%d秒:%dマイクロ秒" % (diff_dt.seconds, diff_dt.microseconds)
print u"%d秒:%dミリ秒" % (diff_dt.seconds, diff_dt.microseconds / 1000)
http://docs.python.org/library/datetime.html
datetime.datetimeの引数は
year, month, day, hour, minute, second, microsecond, tzinfo
year, month, dayは適当に同じ日付を入れておきます。
hour, minute, second, microsecond
この最後の引数がmicrosecondとは思わずmillisecondと思っていてはまりました。
]]>
Pythonでリストとタプルの相互変換
http://fujishinko.exblog.jp/12534186/
2011-05-07T18:37:04+09:00
2011-05-07T18:37:03+09:00
2011-05-07T18:37:03+09:00
fujishinko
Python
ってしたかったんですが、変換方法がわからんかったのでメモ
タプルからリストは、listを使います。
>>> tuple_value = (1,2,3,4,5)
>>> tuple_value
(1, 2, 3, 4, 5)
>>> list(tuple_value)
[1, 2, 3, 4, 5]
逆にリストからタプルにするときはtupleを使います。
>>> list_value = list(tuple_value)
>>> list_value
[1, 2, 3, 4, 5]
>>> tuple(list_value)
(1, 2, 3, 4, 5)
いままでlistってよく変数名に使用していたような・・・
知らない間に関数を上書いていたとは。
]]>
普通の鍋で簡単にご飯を炊く方法
http://fujishinko.exblog.jp/12267387/
2011-03-13T22:07:56+09:00
2011-03-13T22:07:58+09:00
2011-03-13T22:07:58+09:00
fujishinko
未分類
「アニメに出てくる作戦名で盛り上がっててうぜーwww」
・・・っていう意見もあるようですが、個人的には
こういうノリ嫌いじゃないです。
私も節電に協力したいのですが、普段からTVもエアコンもつけない
(というか持っていない)サボテンのような生活を送っているので、
削るものが・・・
と思っていたのですが、どうやら電気炊飯器って結構電力を
消費するようです。
普段、電気炊飯器でお米を炊いているので、これを使用せず
ガスで炊飯してみました。
※火を使うので、火災に注意!
参考にしたサイトはこちら。
文化鍋でメシを炊く
今回、2合のお米を炊いてみました。
お米は、電気炊飯器の内釜を使用して磨ぎます。
水加減も内釜に引いてあるラインを参考に。
要するに、ここまでは普段電気炊飯器でお米を炊くのと
同じ手順です。
内釜から鍋に磨いだお米と水を移します。
炊飯前に1時間程度水につけておくとおいしく炊き上がるそうですが、
普段はそんなことしないので、いきなり炊飯に入ります。
蓋を閉めて強火で沸騰するまで加熱。
2,3分で沸騰すると思います。
蓋が軽い場合は、茶碗などを重石としておいておくとよいかと。
沸騰したら、中火程度に火力を落とします。
この状態のまま、湯気があまりでなくなるまで放置。
大体5~10分程度かと思います。
中火にしている時の鍋の中の様子。
湯気があまり出てこなくなったら、弱火にします。
この状態で5分程度放置。
弱火のときの中の様子。
最後に10秒ほど強火にして、火を切ります。
5~10分程度蒸らすため、そのまま放置。
30分かからずお米が炊けました。
お味ですが、スイッチ一つで炊き上がるより、火加減を調節
したりと手間をかけたのでという精神的な面もあるのでしょうが、
普段よりおいしく感じました。
]]>
Windows コマンドプロンプトでLinuxサーバーにファイルをアップロード(sftp使用)
http://fujishinko.exblog.jp/11707373/
2010-12-13T09:58:56+09:00
2010-12-13T09:58:55+09:00
2010-12-13T09:58:55+09:00
fujishinko
未分類
作成したデータをLinuxのWebサーバーに自動的にアップロードしたい。
Linux側でftpサーバーを起動していれば、ftpコマンドでアップロード
できるのですが、面倒なのでsshしかサービスを起動してません・・・
sftpを使えばよさそうなのですが、Windows標準コマンドでは用意されていない(多分)
WinSCPを使えばGUIで簡単にファイルをアップロードできるのですが、
http://www.tab2.jp/~winscp/
※普段お世話になってます。
今回は、自動処理したいのでバッチファイルにアップロードの処理を仕込みたい。
WinSCPをコマンドで操作する方法はどうやらなさそう。
いろいろ調べた結果、Puttyに含まれているexeが使えそうです。
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
こちらから、「psftp.exe」をダウンロード。
コマンドの簡単な使い方はこんな感じ。
psftp [ログインユーザー]@[サーバー名] -pw [パスワード] -b [実行したいコマンドを書いたテキスト]
実際に使っている内容
バッチファイル
psftp root@192.168.1.1 -pw password -b upload.txt
upload.txtの内容
cd /var/www/public
put list.html
quit
これでWindowsのタスクに登録したバッチでデータの作成から
サーバーへのアップロードまで一括で行なえるようになりました。
]]>
MySQLに外部からJDBCドライバで接続する
http://fujishinko.exblog.jp/11009931/
2010-07-21T15:39:56+09:00
2010-07-21T15:39:55+09:00
2010-07-21T15:39:55+09:00
fujishinko
Java
久しぶりにJDBCでMySQLに接続しようとしたときはまったのでメモ
構成は・・・
開発端末(WinXP)
MySQLサーバー(Debian)
まず、MySQLの外部接続許可
以前調べていたけど、片言過ぎて意味わからず。
MySQL 外部接続許可
まずは開発端末から接続できるようにMySQLを構成。
※開発用なので、とりあえず動けばいい(セキュリティ完全無視)で設定しています。
1.bind-addressの編集
# vi /etc/mysql/my.cnf
bind-addressをコメント
#bind-address = 127.0.0.1
2.mysqlユーザー(root)に外部接続許可の権限付与
# mysql -uroot -pPassword
mysql> grant all privileges on *.* to root@'%' IDENTIFIED BY 'Password' WITH GRANT OPTION;
これで、外部からMySQLに(とりあえず)接続できるようになるはずです。
MySQL用のJDBCドライバ
http://www.mysql.com/downloads/connector/j/
ここから、mysql-connector-java-5.1.13.zipをダウンロード。
解凍すると、mysql-connector-java-5.1.13-bin.jarが入っているので、
開発環境のビルドパスに含めます。
コネクション獲得のサンプル。
try {
//JDBCドライバロード
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://[ホストIP]/[データベース名]";
Connection con = DriverManager.getConnection(url, "root", "Password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from sample_table");
while(rs.next()) {
System.out.println(rs.getString("sample_field"));
}
rs.close();
stmt.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
]]>
https://www.excite.co.jp/
https://www.exblog.jp/
https://ssl2.excite.co.jp/