Today アクセスカウンター Yesterday アクセスカウンター

ホワット・ア・ワンダフル・ワールド

私は知識に何ものかを付け加え,また他の人々がより多くのものを付け加える手助けをした --- G.H.ハーディ

全記事一覧 << 2008/07 12345678910111213141516171819202122232425262728293031 2008/09 >>

プロフィール

あろは (alohakun)

  • Author:あろは (alohakun)
  • 若槻俊宏 (WAKATSUKI toshihiro)

    連絡先 : alohakun ___at___ gmail.com
    mixi : http://mixi.jp/show_friend.pl?id=182927
    twitter : http://twitter.com/alohakun

    abstract

    プログラミングという人間の知的行為を体系化し,単なる職人芸ではなく,サイエンスにするための研究をしています.

    具体的には,等価変換計算モデルに基づいた,仕様記述からのプログラム合成の研究をしています.

    もっと噛み砕くと,プログラムの正しさをどのように定式化し,どのような枠組みで,どのように変換を進めていけば,正しさを保証したまま,効率的なプログラムを手に入れることができるのか,ということについて研究しています.

    キーワード : equivalent transformation, computation model, programming paradigm, formal specification, program synthesis













    あわせて読みたい


    この日記のはてなブックマーク数


    スカウター : ホワット・ア・ワンダフル・ワールド


    Map









    FC2 BLOG RANKING

FC2カウンター

ブロとも申請フォーム

この人とブロともになる

ホーム

zip ファイルをドラッグアンドドロップで Gmail に送信する

2008/02/13(水) 00:26:17

本当は,フォルダを D&D すると,圧縮してメールに添付して Gmail に送ってくれるようなやつを作ろうと思ったんだけど,意外と zip 圧縮が面倒だったので… フォルダの圧縮は右クリックでやってから D&D してください (弱)

# なんで Windows は GUI で標準でできることが CUI じゃできないんだ

D&D は tkDND というライブラリを使うと簡単です.これと zip 圧縮が最初から入ってれば tcl/tk 最強伝説の幕開けになったのに.おしい.

Windows ActiveTcl への導入方法

自分のメールアドレスに適当に置き換えて使ってください.


package require tkdnd
package require smtp
package require mime

proc sendGmail filenames {
set server "smtp.gmail.com"
set from "XXXXXXXXXXXX <xxxxxxxxxxxxxxxxxx@gmail.com>"
set to "YYYYYYYYYYYY <yyyyyyyyyyyyyyyyyy@gmail.com>"
set subject [encoding convertto iso2022-jp [lindex $filenames 0]]
set text [encoding convertto iso2022-jp [concat $filenames]]
set parts [list [mime::initialize \
-canonical "text/plain; charset=iso-2022-jp" -string $text]]

foreach file $filenames {
set tail [file tail $file]
lappend parts [mime::initialize -canonical "application/zip" \
-encoding base64 -file $file \
-param [list "Content-Disposition" "attachment; filename=$tail"]]
}

set multiPart [mime::initialize -canonical multipart/mixed -parts $parts]
smtp::sendmessage $multiPart \
-servers $server -ports 25 -header [list From "$from"] \
-header [list To "$to"] -header [list Subject "$subject"]
mime::finalize $multiPart
tk_messageBox -message "送信完了 : $filenames"
}

label .la -text "ここに zip ファイルを\nドラッグアンドドロップすると
メールに添付して\nGmail に送ります!" -width 40 -height 20

dnd bindtarget .la text/uri-list <Drop> {sendGmail %D}
button .cmde -text 終了 -command exit
pack .la .cmde


使い方はダブルクリックすればわかるはずです.複数の zip ファイルも OK です.

いやぁ,明日修論発表会で,まだ発表資料の直しが終わって無いのに.何やってんだろう.現実逃避力をプログラミングに応用メソッド (死)
tcl/tkTB:0CM:0 このエントリーを含むはてなブックマーク | livedoorクリップ livedoorクリップ BuzzurlにブックマークBuzzurlにブックマーク newsing it!

Active Tcl は 8.4.x の方がライブラリが多い

2008/02/10(日) 19:46:10

Active Tcl の最新版 8.5 系 (8.5.2.1) をインストールしたら,どうもライブラリが少ない.

C:\Tcl\bin\wish85

(bin) 1 % package names
http ttk::theme::classic tcl::tommath Ttk tcltest ttk::theme::default msgcat activestate::teapot::link ttk::theme::winnative ttk::theme::clam Tcl ttk::theme::xpnative platform tile ActiveTcl Tk ttk::theme::alt

たったこれだけしかない.なので Iwidget とか,標準で入ってるはずのライブラリが使えない.

というわけで,同時公開されている 8.4 系 (8.4.2.17) も,デフォルトの C:\Tcl とか違うディレクトリ (C:\Tcl8.4) にインストールする.

Active State - Online Store Home / Store / ActiveTcl / free download

C:\Tcl8.4\bin\wish

(bin) 1 % package names
rcs logger counter SOAP::Utils math::rationalfunctions fileutil::magic::mimetype Plotchart tie::std::dsource math::roman tclDESjr xmlswitch SOAP::smtp soapinterop::base img::ico soundex interp::delegate::method page::analysis::peg::reachable pngtcl uri::urn ldap fileutil::magic::filetype tablelist::common page::reader::treeser SOAP::CGI tie::std::array snackogg xotcl::upvar-compat page::gen::peg::canon uevent SOAP::Service widget::statusbar textutil ident cmdline term::ansi::code::attr grammar::peg::interp tcllibc xotcl::comm::imap vfs::zip xotcl::test term::interact::menu grammar::peg Tktable vfs::template getstring TclScript xml::c sgmlparser xotcl::comm::ftp page::writer::tree xotcl::script grammar::me::tcl img::base puretclparser html fileutil::magic::rt ActiveTcl swaplist base32 page::gen::peg::ser ip style style::as textutil::adjust SASL ico ntext page::transform::realizable vfs::ftp xotcl::wafecompat transfer::transmitter pop3d nameserv::auto crc16 img::jpeg snack img::bmp xotcl::serializer jpegtcl asn textutil::trim tie::std::growfile page::writer::hb struct::list xotcl::staticMetadataAnalyzer vfs::template::version::delta fileutil::multi::op vfs::template::version pop3 transfer::connect grammar::fa::dacceptor md4 fileutil::multi crc32 globfind page::parse::pegser md5 img::xpm xotcl::mixinStrategy page::util::peg md5crypt ctext page::writer::tpc grammar::me::cpu xml interp docstrip::util math::constants xotcl::xodoc page::gen::peg::cpkg treeql page::writer::null bench::out::text sqlite3 base64 struct::matrix page::util::norm::lemon page::parse::peghb jpeg blowfish term::receive Thread term::ansi::ctrl::unix uuencode struct::tree math::statistics xotcl::package widget::ruler tcltest img::pcx struct::set logger::utils uuid tkpiechart struct::pool autoproxy trsync report comm img::sgi tdom xotcl::metadataAnalyzer cursor htmlparse domtree style::lobster page::gen::peg::mecpu math::complexnumbers sgml fileutil::magic::cgen dom::tclgeneric SOAP::xpath math::interpolate Img base32::core nameserv::common page::util::norm::peg math::geometry xslt page::writer::me nameserv::server tie::std::log javascript Tk xml::expat vfs widget::menuentry http textutil::repeat inifile control Memchan SASL::NTLM treectrl page::transform::reachable Diagrams mapproj datefield switched page::util::flow page::reader::lemon widget::toolbar stooop snit struct::stack uri sha256 dom::generic page::reader::ser img::tiff xotcl::comm::httpd widget::superframe textutil::split page::reader::peg struct pluginmgr newclock math::special math::bignum log starkit history page::transform::mecpu Tcl ripemd128 smtp Itcl img::ps term::ansi::send ftpd vfs::urltype math::fourier widget::screenruler opt transfer::copy Tablelist fileutil::traverse bibtex grammar::me::util doctools snacksphere Iwidgets tiff math::calculus Banking expat dde math::polynomials vfs::template::fish textutil::expander dommap term::ansi::code::macros tar page::config::peg grammar::fa::dexec img::gif nntp page::gen::peg::hb img::window math json SOAP::https soapinterop::B units bench::in soapinterop::C vfs::http page::writer::ser vfs::ns img::tga cgi2dom xpath vfs::template::quota page::writer::peg math::fuzzy img::png xotcl::comm::mime math::linearalgebra transfer::data::source ripemd160 Itk widget::scrolledwindow page::util::quote ncgi ftp::geturl page::reader::hb Ttrace fileutil::magic::cfront xmldefs vu widget::panelframe platform irc SOAP::Domain term::receive::bind tbcload Tablelist_tile widget::all page::compiler::peg::mecpu struct::graph page::analysis::peg::minimize otp multiplexer resolv struct::skiplist des chatwidget tablelist pop3d::udb xotcl::comm::connection tclDES activestate::teapot::link registry nmea critcl calendar doctools::changelog tooltip exif Oratcl xotcl::scriptCreation::recoveryPoint term::send img::ppm dom::libxml2 term::ansi::code::ctrl pop3d::dbox doctools::cvs nameserv sound xotcl::scriptCreation::scriptCreator aes base32::hex mk4vfs page::writer::mecpu png widget::scrolledtext yencode term img::xbm widget::dialog picoirc spf khim ipentry page::writer::identity tifftcl trofs term::ansi::code tile smtpd img::pixmap rc4 page::gen::peg::me interp::delegate::proc doctools::toc tablelist_tile vfs::tk xslt::cache page::analysis::peg::realizable textutil::tabify vfslib time math::optimize msgcat xotcl::comm::ldap wip xotcl::comm::httpAccess ldapx tie ftp XOTcl Tclx vfs::webdav math::bigfloat rpcvar Mk4tcl img::sun vfs::mk4 vfs::template::collate xotcl::comm::dav grammar::fa csv xml::tclparser textutil::string page::gen::tree::text mime autoscroll Expect SOAP::ftp profiler tipstack bench::out::csv zlibtcl Tkhtml transfer::receiver grammar::me::cpu::core fileutil xml::tcl tclparser zipvfs logger::appender cksum SASL::XGoogleToken grammar::me::cpu::gasm xotcl::trace struct::queue xml::dep SOAP::http transfer::data::destination tdomhtml vfs::tar xotcl::comm::pcache page::parse::lemon dict tie::std::file grammar::fa::op sum domtext struct::record bench xotcl::htmllib SOAP tls page::parse::peg bee widget dns tnc tie::std::rarray page::analysis::peg::emodes page::pluginmgr BWidget XMLRPC dom::tcl struct::prioqueue doctools::idx docstrip dom term::interact::pager tcom vfs::test Trf transfer::copy::queue sha1 dom::c

うむ,すばらしい.全然パッケージの数が違う.

せっかく最新版の 8.5 が出たのですが,こりゃまだしばらく 8.4 系の方がよさそうですね.

ところで,tcom という COM 操作パッケージを使うと,word ファイルを XML に変換したり,InternetExplorer を操作したりが簡単にできるそうです.


package require tcom

set ie [::tcom::ref createobject InternetExplorer.Application]
$ie Visible 0

entry .url -width 100 -textvariable url
set url http://google.co.jp

bind .url <Return> {
global url
if {$url == "quit"} {$ie Quit; exit} {
$ie Visible 1
$ie Navigate $url
}
}

pack .url


url を IE で開いて,quit すると終了するだけ.

まぁ,VB とか使ってる人には常識なのかもしれませんが,私は Windows 機を一台も持ってない Linux な人なので,いろいろ面白いです.

Linux/Windows で使える Visual Tcl とかもある (tcl/tk 自身で書かれている) そうなので,がんばれば本当にクロスプラットフォームな VB 代わりになるかもしれませんね.
tcl/tkTB:0CM:6 このエントリーを含むはてなブックマーク | livedoorクリップ livedoorクリップ BuzzurlにブックマークBuzzurlにブックマーク newsing it!

最近のコメント

リンク

このブログをリンクに追加する

最近のトラックバック

人生の残り日数

日本人男性の平均寿命は 28700日.

RSSフィード

カテゴリー