Docker Desktop の Extensions を実装してみよう - kakakakakku blog
Docker Desktop Extensionsて作れるようになってたのか。覚えとこ。
CPU シミュレータを用いて継続的ベンチマークを安定化させる - mizdra's blog
こういう課題にこういう解決があるんだな。そいやCPU本まだ買ってなかったの思い出した。
兼任でもコンバートから通しプレイまで自動化。Jenkinsを中心に構築した『Xenoblade3(ゼノブレイド3)』の自動化の取り組み【CEDEC+KYUSHU 2022】 | ゲームメーカーズ
ゲーム開発の世界は知らんけど、普通にJenkinsとか活用してるのね。ゲーム側がRPCサーバになってリクエストを受け付けるの、公開APIがそんな感じで面白い。
AzureでNew Relicがマーケットプレイスに来て導入が超簡単になった。 App Servicesでも使えるって書いてるけど、 Manage Azure Native New Relic Service Preview - Azure Native ISV Services | Microsoft Learn によるとまだWindowsだけみたい。 Linuxのコンテナで動かしてるRailsサービスがAzure Monitor, App Insightsだけだと足りなくて、どうにかしたいとは思ってはいるので早いとこ対応してくれ。 個人的にはまたMackerelに戻したい気持ちもあるんだが。 なお裁量(ry
楽しい競技プログラミングの世界 (公開版).pdf - Google ドライブ
きっかけはこれとは関係なかったけど、数日前からAtCoderの過去問をちょっとやってみてる。 目的はこれにある基礎体力作りに相当して、今のところは色付きとか競技性は求めてない。 緩く長く楽しく続けられりゃいいので、F#でお気楽なコード書けててとても良い。
Stable Diffusion WebUIには各種OpenAPIが生えてて好きに使える。
下記はText2Imgで生成した画像にメタデータを埋め込んで保存するメモ。
ちなみにメタデータのText2ImgResponse
のinfo: string
はJSONなのでパースして好きに整形することもできるが今回は省略。
open System open System.IO open System.Net open System.Net.Http open System.Text.Json type Text2ImgRequest = { prompt: string negative_prompt: string seed: int64 batch_size: int n_iter: int steps: int cfg_scale: float width: int height: int sampler: string } type Text2ImgResponse = { images: string list; info: string } let post host (req: Text2ImgRequest) = async { use stream = new MemoryStream() JsonSerializer.SerializeAsync(stream, req) |> Async.AwaitTask |> ignore stream.Seek(0, SeekOrigin.Begin) |> ignore use content = new StreamContent(stream) use httpClient = new HttpClient(BaseAddress = host, Timeout = TimeSpan(0, 20, 0)) use! res = httpClient.PostAsync("/sdapi/v1/txt2img", content) |> Async.AwaitTask match res.StatusCode with | HttpStatusCode.OK -> use! stream = res.Content.ReadAsStreamAsync() |> Async.AwaitTask let! result = JsonSerializer .DeserializeAsync<Text2ImgResponse>(stream) .AsTask() |> Async.AwaitTask return Ok result | _ -> let! result = res.Content.ReadAsStringAsync() |> Async.AwaitTask return Error result } let annotate info image = let imageBytes = Convert.FromBase64String(image) let infoBytes = Array.zeroCreate<byte> (String.length info * sizeof<char>) let fileBytes = Array.zeroCreate<byte> (imageBytes.Length + infoBytes.Length) Buffer.BlockCopy(info.ToCharArray(), 0, infoBytes, 0, infoBytes.Length) Buffer.BlockCopy(imageBytes, 0, fileBytes, 0, imageBytes.Length) Buffer.BlockCopy(infoBytes, 0, fileBytes, imageBytes.Length, infoBytes.Length) fileBytes let save dir req index image = async { let filename = Path.Join(dir, $"{req.sampler}-{req.cfg_scale}-{req.steps}-{req.seed}-{index}.png") do! File.WriteAllBytesAsync(filename, image) |> Async.AwaitTask } let host = Uri "http://localhost:7860" let dir = "." let req = { prompt = "Will Smith eats sushi at the beach" negative_prompt = "" seed = Random.Shared.NextInt64() batch_size = 1 n_iter = 1 steps = 20 cfg_scale = 11 width = 512 height = 512 sampler = "Euler" } async { let! res = post host req match res with | Ok res -> do! res.images |> List.map (annotate res.info) |> List.mapi (save dir req) |> Async.Parallel |> Async.Ignore | Error error -> printfn "%s" error } |> Async.RunSynchronously
ウィル君にっこにこやね😊
積み
こんな試合ばっかである pic.twitter.com/kpGZM9bniI
— ょを (@yohfee) 2023年2月13日
まぁチョコ食べることなんて無い。