CSS Bulletsのreload.rb
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
に綺麗に投げる方法が思いつかなかった。