指向性メモ::2008-11-05::CSS Bulletsのreload.rb

ページ情報
制作日
2008-11-05T18:59:28+09:00
最終更新日
2008-11-05T18:59:28+09:00
ページ内目次

CSS Bulletsの更新をLinuxのEmacsでしたいのにreload.rbどこにあるんだよ的な状況になったので、とりあえず作りました。

#!/usr/bin/ruby
require "socket"
udp = UDPSocket.open()
sockaddr = Socket.pack_sockaddr_in(9989, "255.255.255.255")
udp.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1)
udp.send("reload", 0, sockaddr)
udp.close

UDPブロードキャストでポート9989に適当にreloadと投げるだけ。

でもreloadがrubyだと遅くてイライラかもしれないのでバイナリ版も作った。

with Ada.Streams;
with GNAT.Sockets;

procedure Reload is
   Socket         : GNAT.Sockets.Socket_Type;
   Socket_Address : GNAT.Sockets.Sock_Addr_Type;
   Last : Ada.Streams.Stream_Element_Offset;

begin
   GNAT.Sockets.Initialize;
   GNAT.Sockets.Create_Socket(Socket, Mode => GNAT.Sockets.Socket_Datagram);
   Socket_Address.Addr := GNAT.Sockets.Broadcast_Inet_Addr;
   Socket_Address.Port := 9989;
   GNAT.Sockets.Set_Socket_Option(Socket => Socket, Option => (GNAT.Sockets.Broadcast, true));
   GNAT.Sockets.Send_Socket(Socket, (16#72#, 16#65#, 16#6C#, 16#6F#, 16#61#, 16#64#), Last, Socket_Address);
   GNAT.Sockets.Close_Socket(Socket);
end Reload;

ファイル名をreload.adbで保存してgnatmake reload.adbでコンパイルできる。

ところでStringリテラルからAda.Streams.Stream_Element_Arrayに変換するのってどうやるのが一番確実なんだろう。Send_Socketに綺麗に投げる方法が思いつかなかった。

Comments

Trackbacks

Trackback Ping URI

http://yudai.arielworks.com/memo/2008/11/05/185928.trackback

末尾に「8 + 6」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「185928.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

Name (optional)
Email address or URI (optional)
Do the math below (required to filter comment spams)
8 + 6 + 7 =
Message (required)
Submit
連絡先、リンク、転載や複製などについては『サイト案内』をご覧ください。Powered by HIMMEL

I ♥ Validator