真面目にPlugin::GUI, Plugin::Gtkを模倣しようとするとWidgetのライフサイクル管理をやらないといけなくなるが、大抵mix呼び出し元ではcommandを実行してる瞬間だけ必要なので、まとめて殺すユーティリティを作ってしまった
真面目にPlugin::GUI, Plugin::Gtkを模倣しようとするとWidgetのライフサイクル管理をやらないといけなくなるが、大抵mix呼び出し元ではcommandを実行してる瞬間だけ必要なので、まとめて殺すユーティリティを作ってしまった
Plugin::GUI::EphemeralSession.begin do
# この中で生成したPlugin::GUIの一族は、ブロック脱出後にdestroyされる
end
週刊mikutterを作ろう
サンプルのcommand呼出側がおぞましい感じになってきた
mikutterを丁寧にエミュレートしようとしてるので、y4aのmruby command呼出より手のかかったコードになる。
まあy4aの時はmikutterのobjectをエミュレートするのは半分放棄してたし…
全部Cでやろうとしないで、command呼出をするためのイベントをmrubyで定義して、そこでホストアプリとのデータ構造の変換をやるのが一番楽だと思われる
This account is not set to public on notestock.
@mitarashi_dango お世話になっております。Tissueの芝生です。
次期開発プロジェクトの仕様書が作成できましたのでお送りします。
内容をご確認いただき、不明点や間違い等ございましたら遠慮なくご指摘ください。
以上、よろしくお願い致します。
attach: 射精管理システム_フェーズ2仕様書(まとめ).xls
@mitarashi_dango クックック…xlsに目がいってzipされてないこともパスかかってないことも気づかなかったようだな……!
ところで射精管理システムの仕様書.xlsがあるなら欲しいが…頭の中にしか仕様ないんですが…
Tissue.basおふざけで作ってもいいんだけど、今メインがWindowsじゃないから…
まあ口ではこう言っても、半休やら軽い遅刻で用を済ませて上司に「いやもう1日休暇とったら…」みたいな顔されたことが数回ありますが
名前が最悪すぎて出だしの仲間の名前叫ぶとこが最高に笑えた
FF2(GBA) RTA_3時間10分2秒_Part1/6 - ニコニコ動画
https://www.nicovideo.jp/watch/sm37429077
もりくぼぬいぐるみを買うためにアソビストアを使おうとして、あれ…ID持ってたっけな…とGmail検索したらかなり昔のが出てきてギャーつってパスワード再設定かけた
そしゃげのログインIDとECサイトのログインIDまざるのちょっとやだな、失敗した。
データ引き継ぎにしか使わんしパスワードゴミでええやろwwwみたいな運用できなくなる
This account is not set to public on notestock.
何しようとしてたんだっけな、CからPluggaloidのHandlerTag打てるようにしようとしてた気がする
RClassに対してprefixつけるの流石にWindowsプログラマかなって感じで冗長だな
mrb_valueだと中身何だよみたいな話があるので付けたい。中身SymbolなやつにRString用の命令呼ぶともれなくクラッシュするし。
そういえば単純なCプログラムをコンパイルするくらい、今やってる作業くらいならMacBook Airでも普通にこなせるんだなってなってます
YouTubeみながら作業すると離陸しはじめるのでだめ
これはiPad Proにやらせると丁度いい
mrb_nip_p()とか、なんか実家のような安心感のある名前付けだな
めっちゃ値積み直してんねえになってるけど、mruby使ってmikutter模倣するような環境そんなにヘボくないからこんなもんタダや
要するに
Plugin.filtering(event_name, *argv)[nth_result]
mix_plugin_filtering_and_nth
息抜きでdoxyfile作ったけど、これマジでhtmlで何かしらねーと読むきなくなるな
まちがって凍結しても反省文機能入れれば意見を聞くことができますよ
雲の切れ目っぽいので飯買いにいきたいが、完全に寝起きのままの輻輳をしている
GIT CHECKOUT DETACH /Volumes/DataHome/work/github.com/cinderella-project/MRuby-framework/CMRuby/submodules/mruby/build/repos/host/mruby-delayer -> 61765b30a730946f1de194af5068f7401787cb03
fatal: reference is not a tree: 61765b30a730946f1de194af5068f7401787cb03
fatal: reference is not a tree: 61765b30a730946f1de194af5068f7401787cb03
rake aborted!
どうして
/Users/shibafu/git/mikutter/vendor/bundle/ruby/2.7.0/gems/pluggaloid-1.5.0/lib/pluggaloid/filter.rb:33: [BUG] Segmentation fault at 0x0000000223000190
mixのC API、プラグインに依存したものに関してはロードされていることのアサーション要るなと思った
Plugin[:teokure]みたいにおもむろにインスタンスとってきて処理するとき
虚無のプラグインが生成されるだけだから、DSLを使う分には大丈夫だ。インスタンスメソッドを使いたい時は問題になるけど。
いや、"指名したプラグインが定義するDSLが使いたい"なら結局だめすね
会社のリポジトリにガッと書き換えたブランチが眠ってるけど、なんかコレそんなに嬉しくねえなあ…となってPR出さずに5ヶ月たった
mix_spell_cast, mix_spell_definedはできた
mruby APIの命名に寄せるならmix_define_spell
spell_castべつにspellでいいかって気がしてきたな
@.see コメントでちゃんとWriting mikutter pluginへのリンクにできるのえらい
netlifyでdoxygenコマンドが使えて驚いたんだけど、ヘッダーメニューのJSを有効化する設定が使えなくてさらに驚いた
https://mruby-mix-docs.netlify.app/
かといって何かしらのCIで生成してからPushするみたいなのも面倒なので妥協する
ConfigLoaderやWorldの実装者向けノートをDoxygen導入前から書いてたけど、Doxygenの生成HTMLにそのまま含められることが分かったのでやって再デプロイした
こんな組み合わせて書くんじゃなくて、実際にはきっちりラップして使ったほうが見た目きれいだと思う
interface MIXPlugin
+ (void)defineSpell:withConstraints:then;
+ (void)defineSpell:withConstraints:condition:then;
とか…
Obj-Cとmrubyとのインテグレーションについてはtoshi_aが詳しいが、プロプライエタリなので…
This account is not set to public on notestock.
うおおおおおおおおおおおおあああああああああああああああああああああああああああああああ!!!!!!!!!!! (ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
Diva::Modelってfieldよしなに出してくれるinspectないんだっけ
もう後はネイティブSpellのコールバックを書けばObj=Cからmrubyを経由してブチミれるわ
spell絡むとDelayer::Deferred送りになるからスタックトレースが長い
そしてNSLogの長さ制限にひっかかったのでログハンドラーをprintfにかえた
んんん???
なんでspell(:compose, Cocotodon::World, Cocotodon::Message)を渡したのに、spell(:compose, Cocotodon::World, Cocotodon::User)が呼ばれてるんだ
このままグダグダやるか、いざテストちゅってまずmruby-pluggaloidとかの動かないテスト黙らせてから云々みたいな毛刈りを始めるか
mruby-setが悪いのか、何か俺の手元のコードが変なモンキーパッチをしているのか(??)、これを切り分けないといけないですね
えーとまず内部実装はHashで、いわゆるPHPでよくやるkeyに値を、valueにtrueをつっこむやつみたいですね
ああそうか、僕が出演するごちうさパロは僕が高 1 のときの最後に撮ったから時系列は合ってるのか
んー、結局このtrue同士を比較するだけの虚無1行さえ無ければ普通にいけるんじゃないかなあ。
コードあまりよく読めてないので、他のテストが正しいという前提だけど……(でもこういう事があると不信になるよね)
https://github.com/shibafu528/mruby-set/compare/my-dev...shibafu528:fix-equality
シンプルで好き
茜ちゃんVSギャラクティック・ノヴァ https://nico.ms/sm37455520?cp_webto=share_others_iosapp
よし直った!!!!
新たなspellの移植バグが出てきたけど!
undefined method 'parameters' .....?
そんなものmrubyには……ないです……C関数バインドする時にもargument specは書いてるだけで何も効果ないのに…
mikutterのspell、Procは引数の扱いがゆるいから厳しめに検査するために呼び出し前に処理が入ってるのか。なるほど。
やっば、blockを&blockじゃなくて引数で渡してたわ
そして……まあこうなったわけです。
mrubyにおいてCで生成したメソッドおよびProcのarityは-1になる。これは引数プロトタイプを宣言する機能を持っていないから。
いよっっっしやっとCで定義したSpell bodyまで到達できた
ふむ、mrubyのC関数のmrb_get_argsは完全な引数情報を提供しないとだめなんだな。Proc内で受けとりたい数だけ書いたら引数過剰エラーになった
通常引数ならまあすぐ納得できたけど、**kwrestだったので…
@shibafu528 うおおおおおおおおおおおおあああああああああああああああああああああああああああああああ!!!!!!!!!!! (ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
NSMenuItem action→mruby mikutter plugin command→ObjC Blocks spell→AFNetworkingでブチミリ
こんなHTTP bodyをPOSTさせられるAFNetworkingがかわいそう
その理論でいったらSwiftのあれはAnalfireになってしまうやろがい
mruby-mix、ここまで来るとmikutterを模倣したい側でやることはデータ変換と、そもそもライブラリとして組み込む手間くらいまで減らせてきたんじゃないだろうか
データ変換と、使う言語によって使いやすいようにC関数をラップする作業
Cocotodon、サンプルとして公開したいんですけど……なんとソースコードにAccessTokenをベタ書きしているのですぐにはお出しできない
OAuthするためのAPIラッパーは全部数ヶ月前に作成済みだけど、UI書きたくない
近代のmikutterに対応するためにはmix_plugin_collectも求められている
commandのエミュレーションには必要ない、ないけどね…
Plugin::GUI::Command modelの構成要素を受けとってコマンドエミュレーションをする処理自体は、クライアントアプリの実装に依存せずに作れる気がしてきた。
WorldもMessageも全部Diva::Modelに落としこむのを先にクライアントアプリが完了させていれば、というかcommandエミュレーションするなら絶対やるので、あとはクライアントアプリの事情によらず処理できるんじゃ…
こんなクソ夏に行くの自殺行為やろw 延長手続きの準備するぞ
ただでさえ天使なミクがハイクオリティーフィギュアでスイートエンジェルに。タイトー発“spiritale”第1弾商品が発表 - ファミ通.com https://s.famitsu.com/news/202009/06204966.html
初音ミクのオタクじゃないのにGoogleのフィードに乱入してきた
Slackがすぐドラッグ判定になってあらゆるものを掴みやがるのでキレています
Vブチッ
Bブリブリ
Aあああああああああああああ!!!!!
@yomi うーん。その手のエンプラ対応のノウハウは持ってないです……ごめん!
DDLをトランザクショナルにしたいあなたにPostgres
雨降ってるなら外出たくない→飯を買いに行くモチベがなくなる→勤務中に餓死
Appleの秘密の質問、クソ面倒くさい割に本気で破ろうとしたら数なんて関係ないと思うのでやめてほしい
This account is not set to public on notestock.
今日ずっとCtrlキーの絡むショートカット打ち間違えてる。
メカそーたの生態
- :don: に対する感情がある
- 城崎温泉が好き
This account is not set to public on notestock.
This account is not set to public on notestock.
メカそーた面白すぎるだろ、どんなソース食わせたらこうなるんだ
「objcにも可変長引数あるんだ、へぇー」(stringWithFormat:,...を見ながら)
からの「ただのva_arg()じゃねえか!!!」でめっちゃ笑ってるけど時代的にかなり普通だし笑うところなかったので正気に戻った
この3つを上から解説します→1つだけ解説して記事終了 とかいう楽しいQiita記事を見た
command DSLがgui pluginにあるの正しいんだけど、これをやるとロード順序次第でundefined methodになって死ぬという悲しみがわかった
サードパーティプラグインではcommandこそ使うが依存関係なんか書くわけないので
あくまでcommand DSLはguiであるという強めの主張
ロードに失敗すればコケるし、仮にguiという名のpluginがあった上でDSLがなければそれもまたコケる
しかしdefdslがプラグインの強い依存関係を持つ機構な時点でこーなるんすよ
@MulticolorWorld うおおおおおおおおおおおおあああああああああああああああああああああああああああああああ!!!!!!!!!!! (ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
NSFileManager fileExistsAtPath:isDirectory
こいつディレクトリかどうかまとめてチェックできるよすごいでしょ、じゃなくてディレクトリかどうかだけ検査するメソッドよこせよ!!
Cocotodon、mruby遊び用なのでPublic投稿とブチミリしか機能がないのに、ストリーミング欲しくなってきた
ええっ!? Objective-CでStreamingを!?
Swiftでやったら普通のプログラムで実装できてしまうからそそられないんだけど、ObjCでやると余暇が全部ふっとぶんだよな
色々理由つけてるけど、俺が令和にわざわざObjCやってるの、登るのが面白そうな山に見えたから以上の理由ないよ。
ここまで作ったらそろそろyukari-exvoiceを更新するパーツが揃った気がする
そういえば、yukari-exvoiceでon_appearエミュレートしてるとクラッシュする問題も気になるんだよな
あれ即死みたいな動きになるからツイートショートカットから::confで設定に突入して解除するしかなくて、なかなかヤバい
mrubyの標準添付mrbgem見てたら、mruby-socketとかいうのあってビビった
雑に*NIXだけで動くんじゃなくて、ちゃんとwinsock2.hインクルードしてる…!
@rinsuki Foundationでサポートされてるのマジか、これはアツい
今日弊ちむ人あんまおらんから開発休業で〜すwにしちゃえばよかったか(あんまよくない)
Proc cannot be converted to String (TypeError)
は?
スーモプラグイン、コマンドのnameにProcが指定されている悪質なベンチマークである
今Cocotodonのバグに気づいてしまったんですが、どのプラグインを使っても常にブチミるバグがあった
@MulticolorWorld streaming marmotだまれ
Cocoaでmikutterのクソコマンドメニューのようなものがレンダリングされているの、ある意味これは夢なのでは?
command nameもopt渡して評価するのが正しいのか…そうか…
irep解析してバイトコードを変換すればできなくもない気がしたが、そんなことやったら非常に脆くなる
あー通常関数としての処理になるからopt.messages.firstを取り出してからdefined?の評価か。そうだよなー。バイナリパッチはしたくないなこれ…
かといってコードパースして変換もしたくない、動作に支障ないしほっとこう
defined?の引数をProcとしてキャプチャできればなあ…
Portage 3.0 stabilized – Gentoo Linux
https://www.gentoo.org/news/2020/09/05/portage-3-stablized.html
うおおおおおおっ🎉🎉🎉🎂 🥗 🍔 🍿 🍕 🥂 🎉🎉🎉
IDEがよしなにしてくれるからprop-types使いたいが、使われてないんだよなあうち
This account is not set to public on notestock.
所詮JSON Viewでしかないからね、SQLゲーになるのはそりゃそう
This account is not set to public on notestock.
This account is not set to public on notestock.
ファイルが増えてつらいやつ、俺はDropboxのフォトアップロードで起きててつらい
FloraRPCではWindowsの場合游UI→Meiryo UI→MSゴUIの順位でフォント設定してる
This account is not set to public on notestock.
隊長さんほんとうにみねえな、人生で1回しかアニメ版のサトカちゃんめっちゃ色っぽくない!?!?で盛り上がれたことない
そろそろdelayer-deferred理解してえなと思って10分くらい読んでたが死んだ
こんな便利なクソプラグインがあったのか。
https://github.com/toshia/nominate
アアアッwwwwwPlugin::Command#[] 使ってるやつだぁぁぁあぁwwwww
nominate.rbロードしようとしたらmrubyが異次元で落ちた
異次元で落ちたけどよくよく整理したら依存関係エラーだったので、エラーがちゃんと出るように直した
ん、mrubyでもブロック内でのbegin〜endを省略したrescue許可されてるのか
mix_miquire_load_all()をロード失敗しても続行する仕様にして、mix_miquire_load_all_failfast()を作った。
とはいえ前者で失敗したものがあるのか無いのかハンドルできないのもアレなので、前者の戻り値に失敗したslugのarrayも混ぜた
@shibafu528 うおおおおおおおおおおおおあああああああああああああああああああああああああああああああ!!!!!!!!!!! (ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
その日、俺は気づいてしまった……
mikutterに :world_current と :current_world があることに……
提供しているプラグイン名が:current_worldで、イベント名が:world_currentか……?
@shibafu528 @shibafu528 行ったことがあるかと言われれば行ったことある気持ちになります。行ったことないと言われれば言ってない気持ちにもなります。
@shibafu528 今の精神状態では言葉の理解ができないので、右耳を集中させますので、もう一度お願いします
shibafu528 うおおおおおおおおおおおおあああああああああああああああああああああああああああああああ!!!!!!!!!!! (ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
今度はcompose(world, body: '')が呼ばれなくて頭抱えてる
mikutter commandの戻り値がDelayer::Deferredだった場合、適当にtrapをしてあげないとエラーが何も得られずに虚無になるという知見
registerのSymbolからclassが引かれるのが正しいけど、なんで2回呼ばないと出てこない?
どうもEnumeratorがうまく動いてくれてなさそうなので、ちょっとコードを崩して回避…
A゛T゛S゛が゛お゛尻゛に゛は゛い゛っ゛て゛く゛る゛め゛う゛ーーーー!!!!!!!!(ジリリリリリリリリリリリリリリリリリリリリリwwwwwwwwwwwwwwwwwwwwwwwwキンコン/キンコン/キンコン/キンコン/キンコン/キンコン/キンコン/キンコン/キ
そう言うと@shibafu528は静かに息を引き取った.誰もいない,電気もついていない,悪臭漂う部屋の片隅で・・・主を失ったパソコンの光だけが,動かなくなった@shibafu528を優しく照らし続けていた.
@shibafu528 鉄腕強打 幾千度び 鍛えてここに 甲子園 勝利に燃ゆる 栄冠は 輝く我等ぞ 阪神タイガース オウオウオウオウ 阪神タイガース フレ フレフレフレ
地味にしょぼいコーディングミスが出まくっていて、いきなりAndroid上で開発してなくてマジでよかった…となっている
Android上でしょぼい手戻りがあるとビルドコストがデカすぎて萎える
そう言うと @shibafu528 は静かに息を引き取った.誰もいない,電気もついていない,悪臭漂う部屋の片隅で・・・主を失ったパソコンの光だけが,動かなくなった @shibafu528 を優しく照らし続けていた.
NSToolbarはWindowの持ち物になるみたいだけど、これのactionをViewControllerに繋ぎこむことってできないの
TLの再取得のためにはアプリ再起動が必要というやばい状況なのでリロードボタン置こうとしてるんだけど
よみたそがつらそうなの今読んだけど、俺MariaDBのことは全く分からん…避けて通ってるから…
標準のextしか使ってないから、データベース側の事情は考えたこともなかったな
This account is not set to public on notestock.
ああ、ここでfirst responderを使うことでViewControllerに繋ぎこめるのか
This account is not set to public on notestock.
うーーむ、進捗を産むにはコーヒーが必要
脳を珈琲漬けにする必要がある
謎オレオレhooksを量産するお仕事をしているが3日後には減りそう
医者通うのサボっていると、壊れたオタクがいろんな名前のおくすりで人の形を保っているように、俺も俺で抗ヒスタミン薬で人の形を保っているに過ぎないんだなとわかる
体中掻き壊して体液が常に出てる化け物として教室に君臨していたことがあることから、抗ヒスタミン薬が人の形を保つのに使えるは真です
怠惰なので免許の延長申請でも書くかと思ったところ、間抜けなので添付書類だけコピーして申請書類印刷してなかった
AppKit、情報探しづらすぎて早くCatalystをまともにしろという気持ちが湧いた
mrubyのinclude書くのクッソだりぃな〜と思ってたら「かつてはXcodeもpchファイルを自動生成してビルドに突っ込んでくれていたのじゃ」という知見が天から降ってきた
Prefix Header機能ありがとうこれで少しだけタイプ量が減る
ViewControllerにAPIクライアントやらmrb_state*置いてたら普通に都合悪くなってきたのでAppDelegateへの引っ越し作業をやっている
次帰省する時は強めのAP買って帰るぞと決意して何ヶ月たったことか
なんかMacのウィンドウコンポジションがドヘタクソな感じになってて笑う
mrb_closeより先に、mrb_state*握ってる連中をdeallocしないとdangling pointer踏むよな〜つってしこしこ書いてるんだけど、AutoreleasePoolのような何かの必要性を感じるね あるいはmrb_state*をNSObjectでラップするか
む、ViewControllerのviewDidLoadのほうが先に実行されるのか…
こんなハイパーヤケクソコールバック実行ではなくて、真にやるべきはStoryboardでのView起動をやめることだと思った
なんか週刊mikutterを作るを忘れて普通にリプライウィンドウ作るのに四苦八苦してしまった
切り取り線bot、俺がフォローしてるのよりにもよってjpにいるのが難点
CocoaというのかAppKitというのか、資料探しが困難なことを除けばそこそこ楽しくていいな。
Interface Builder時代の指南すら出てくるのは信じていいのか非常に不安になるが
リプライダイアログを作ったことで、出すの自体はそこまで難しくないということと、そろそろViewの共通化をやらないと苦しいということが理解できた
通常投稿欄とリプライ投稿欄、共通化の方法探すのに時間制限設けて調べて見事に時間切れしたからコピペした
たぶんNSViewを継承してどうこうすりゃいいんだろうけど
@rinsuki Foundationでもある程度いけるんだ。ちなみにハマりポイントある?
リプライダイアログ作ったの、週刊mikutterにまったく無関係ではなくて、返信用Postboxを生成するプラグインの振舞い検証に使えます
Share2t、俺がADPに入ってないために使えないゴミになってるので、あいつのアプリアイコンパクってきてCocotodonに流用したくなってきた
@rinsuki そこそんな丸投げ処理なのかよ、ワロタ……
やはりHTMLを描画系統に食わせようとするのではなく、真面目にやるならパーサ通して必要なものだけ取り出せということが雰囲気でわかる
まあy4aでもXmlPullParser通して自前でString作ってるしな…まあ…
失敗してもアクメ案件にならない描画システムに投げるぶんには何したっていいんですよ
mikutterは原理的にHTMLを食ってもスクリプトがevalされることはないにも関わらず、敢えてアクメキメるようにするプラグインがあることは有名ですね
え、すごい、Storyboardめっちゃ窮屈に感じる めんどい
そう言うと @akkiesoft
は静かに息を引き取った.誰もいない,電気もついていない,悪臭漂う部屋の片隅で・・・主を失ったパソコンの光だけが,動かなくなった @akkiesoft を優しく照らし続けていた.
y4aのmikutter互換が古いせいで最新の引き取りプラグインが使えず、名前の前後にスペースも入らないのクソ
会社に戻ってきたが即座にトイレに駆け込んだので休憩時間の延長戦になってきた
次は藤原竜也プラグインみたいな、Postboxの中身書き換える系を検証する
mikutter_aa_akkiesoftとかmruby-mixで互換性取るのなかなか難しそうでいい題材だな
なぜ難しい?: Gtk::Postboxの仕様にめっちゃ依存してる
@shibafu528 ベンダシタイナー!フンデルト イッヒ ベンデル! ベンデル! フンベン ウンコ イッヒフンバルト イッヒ ベンデル! イッヒ ベンダシタイナー!フンデルト アーデル ウンコ ゲーベン! イッヒフンバルト フンバルト フンデルベン! ゲーベン! ウンコ
※このツイートは言いたいことも言えない世の中のためPOIZONされました※
Post.primary_serviceとかいうちょっと時代の分からないAPIのやつが動いてしまった
これは単純投稿なので行けたっぽい (APIが古すぎるが…)
あれ?今のおちんちんしゅっしゅは…………こらーっ!おちんちんぴゅっぴゅ申請してないじゃないっ!おちんちんピクピクさせちゃ駄目っ!いじるの禁止です!!
#shindanmaker
https://shindanmaker.com/503598
強くてニューゲームしてもお前らとっくに精神崩壊してるじゃん
真面目にmikutterのサイクル模倣してPlugin::GUIとPlugin::Gtkのオブジェクト生成をやると、イベントループ1サイクル明示的に回す必要があってこれは微妙なあ。
2009年のTwitterクライアント的な構造ならあまり問題ではないが、y4aみたいに実行の瞬間だけサンドボックスのオブジェクトを作りたい感じだと、ちょっと微妙。
undefined method 'ascii_only?' (NoMethodError)
/Users/shibafu/CocotodonPlugins/mikutter_suddenly_death.rb:6:in screen_width
値型なら昔から使えた気がするんだが、はて違ったか。
参照型なら元からnull許容だし。
C#の値・参照は組み込み如何ではないです。structかclassかです。
朝からCocotodonいじってたらレインボーカーソルになって神
cursor_positionサポートしないとakkiesoft_aa系が動かない。あと、これ結局ホストアプリが値提供しないといけないので地味だるね
セレクタがsetから始まってたらhoge=のcallに変換するみたいなの書いてみたいね
どう考えても[postBuffer setText: bufferText]したい
あと、mrb_str_new_cstr書いてるけど、実はNSStringにカテゴリでmrubyValue:生やしてるの完璧に忘れてた
ここ2週間くらいMBAでずっと生活してるけど、普通に生活できるな
Webアプリ開発とAndroidアプリ開発をしなければの話だが…
Androidアプリ開発はまだやってないのでいい加減なこと言った
でもCPU食いまくるし低クロックなi5にできるのか…?って感じがある
頭がstringByAppendingString:になってきた
mrubyのmrb_runに時間制限付けたいけど、どうやったらできるだろうね
VBには質の悪いマネジメントと質の悪いプログラマがつきもの
Legacy VBを未だに使ってるとこは金払いとかシステムに対する意識がヤバいし、VBnetを使ってるとこは技術選定をだいぶ間違ってるのを認められないのがヤバい
VBSはWindowsの不都合を回避するためのランチャーとしてはまだ使えるけど、ASPで使ってたら0.1secで逃げ出す必要がある
VBnメインの会社で5年仕事してたけど、初学者にやらせるにはどうせ何やっても難しいのに他言語に応用しにくいこんなんやらせるの不思議だし、Legacy VB経験者向けの互換機能はほぼ全部罠なので使った時点で負けが決定するし、他言語理解者には何も嬉しい所が無いし、忌み子ですよ
OJTで作ったASP.net Web Forms製のWebアプリ、ターゲットが顧客の事業所内のiPad (しかも広くてWi-Fiがちょっと遠い)だったので、あんな通信ヘビーなもの使うの絶対間違いだった
ASP.NET MVC、Web Formsと比べたら至って率直でよく生まれたもんだなと思うけど、零細にちゃんと活かしてプログラミングする人がいねえし実績が積まれなくて永遠にWeb Formsが使い回されるという不幸が…
Domain UseCase Repositoryとか適当に書いとけ
Legacy VBはまだ時代にしてはイージーですぐGUIが作れるあたりは良くできてるとか、Win32APIのグルーとして使えるとか、多少褒める所あるのに、VBnetは……
としぁのチンポは若くしてこの世を去った、だから本人が生き返った時は女性器の名を口にしたのだ
インターネットにいるソフトウェアエンジニアもだいたいヤク中だし、ソーシャルグラフがヤク中ばっかになりがち
インターネットの外だってSIerでこき使われてる人たちもヤク中ばっかだし略
だいたい多かれ少なかれお世話になってるんだから、これをくっだらねぇ話やな、何も意味ないやんと笑えないのが一番厳しい
テクブからおたより来て新刊の存在を知ったが、いや〜Androidなんもわからん。
https://techbooster.booth.pm/items/2367037
Webが流行り廃り速い速いなんていうけど、Androidも1年単位で環境変わるし3年もすれば技術デッキ全捨てですからね
リプライツリーがsukukyon, PICOPICOSOFT, euxn23で怖くて泣いちゃった
Android墓場シリーズといえばPush通知サービス達だよな!俺は使ったとないけど!
気力チャージできたらNSStackViewで虚無のリプライ先隠すようにする
というかまずReplyViewControllerとかいう完全に名付け失敗してるところからやり直したい
Cocotodon、エンティティの完璧にサボってるのでHTLの内容を全部NSDictionaryのまま引き回してるんだけど、さすがにまっとうなObjectにしたくなってきた
Macやとmikutter使いにくいの難だな mikutter再現プログラミングやってるのに
openimg閉じたらrubyごと死ぬのロックすぎる(これ前も言った気がする)
/Users/shibafu/git/mikutter/plugin/gtk/mainloop.rb:18: [BUG] Segmentation fault at 0x0000000000000008
This account is not set to public on notestock.
This account is not set to public on notestock.
ウィンドウ葬ってnil objになったとこにレンダリングしようとしてんじゃねえの(てきとう)
数日前から家帰ってMac開いた瞬間にdelayer-deferredに噛まれてSAN直になってん
Delayerはまだ完全に理解した感じだけど、Delayer::Deferredは完全に理解すらできる気がしない
言うてDelayerも半分くらいしかコード読んでないんだよな
Mac、ネイティブプログラミング環境としてそこそこ気に入ったわ
mruby-delayer-deferredのデバッグが始まってしまった……
Delayer試すのにGCDがクッソ都合良いからMacで作業してるってのもあります
mrubyのmaster見たら、splat operator使った時は常にdupとるような修正が入ってた。修正案に紆余曲折あったみたいだが、まあ確かにこれで大丈夫そう。
issue上げて最初にcloseされた時とはちょっと変わったね
C関数からmrubyにPromiseを返して、解決したらmruby上のDelayerにqueueして次のループでチェーンが処理される!
これで何ができることが確立されたかというと、mikutter互換環境上で走らせているプラグインからC関数にコールバックした際に、時間がかかる処理ならPromise打ち返して戻れる
Promiseの状態遷移はmruby VMのスレッドセーフティを保証しているスレッド上で実行する必要がある
あと、C関数上でmruby VMから見て非同期で走っている処理では、mruby VMにアクセスすべきではない。
mruby VMから処理を切り離すまでの間で、必要なデータはコピーを取るのとGC保護が必要ですね
これでmruby-mixでやれる必要のあることだいたい達成できたか?
delayer-deferred周りはちょっとAPI整理したいが
def Promiseとかdef newとか、Rubyコードだったら自然に呼び出せるけどmrubyだと定数取得やオブジェクト生成のAPIから呼べなくなってfuncallしないといけなくなるね
mrubyのセーフティを保証するのは面倒そうなので、mruby-delayerを使っているコードならなるべくdelayerにキューしたほうが良さありそうね。
delayer-deferred完全理解を試みて午前が終わった
MIDI音楽編集ソフト「Domino」 Ver.1.44 リリース | TAKABO SOFT http://takabosoft.com/1386
mruby-mixの開発がある程度できたのでLinuxに戻ってきたところ、大量のアップデートに襲われて死んだ
Linuxに戻ってきたので久々にTwitterのTLを見てしまう
Kwinが落ち、mikutterがENOSPCで落ち、yayが落ちた
このままファイル消そうとしてもなんか普通にyayのabendでシステム壊れてそうなので、snapperスナップショットからの復旧やるか…
敗因: アップデートによってvmlinuzが置き換わってた
さてどうするか、とりあえずread-only snapshotから/の切り戻し自体はできてるから、Arch LiveUSBからchrootして更新かけるか
やっぱディスク空けてpacman -Suを完遂するしかない
mruby-mix作ったはいいんだけど、JNIで適切に繋ぎ込みを作るのが一番クソ怠いな
JNIのコード見ながら死ねって顔しながらまだ1文字も書いてない
yukari-exvoice-runnable (exvoice開発用ドライバーアプリ) のリポジトリに、柔軟剤ツイートのJSONあってワロタ
Retweeted Statusのテスト用JSONもございます。こっちはあひるが被害者 https://github.com/shibafu528/yukari-exvoice-runnable/blob/master/src/main/res/raw/tweets_870941180665540608
y4aに組込むよりmikutterに組み込んだほうが速いんじゃねえかって気持ちになるくらいJNI書きたくない
@toshi_a Pluggaloid Mobileの思想だ
としぁへ
午前中にdelayer-deferredの理解度が上がったのでネイティブからmrubyにPromise打ち返してあとで解決するフロー実装できるようになりました
iOS/ObjCならこの場でAFNetworkingのリクエストを開始してsuccess:/failed:でmruby VMへの戻しを書いても普通に動きそう
この手続きをどうラップするかがライブラリ作成能力問われるポイントな気がする
Kotlin Coroutineと統合できたら死ぬほどかっこいい
mrubyに返すまでにCoroutineをDelayer::Deferred::Promiseに変換すればそのようになる
なるが、どういう手順で処理することになるのか考えたくなさすぎるな
結局Deferredableなクラス一本用意してポインタ管理に使うとかそういうのが発生しそうだが
クソッ…プロトタイピングが快適すぎたぶん何もしたくなさがすごい……!
1. yukari-exvoiceの依存関係にmruby-mixを追加する
2. mixと競合するライブラリコードを消す
3. JNIでmix APIと統合させる
configure: error: in `/home/shibafu/git/yukari-exvoice-runnable/yukari-exvoice/mruby/build/armv7-linux-androideabi/mrbgems/mruby-yaml/yaml-0.2.2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details
はい……
./configure: line 3421: ./conftest: cannot execute binary file: Exec format error
あ?
この問題を解決する一番速い方法はmruby-yamlを参照するのをやめて、YAML.loadをmruby-mixの利用側で実装しろということにする
ああ、CCとかはAndroid用のツールチェーンになってるけど、--host設定されてねえじゃん
なんかmruby-yamlのビルドスクリプトの条件判定おかしいっぽそう
あー私が悪うございました build_config.rbにconf.host_target, conf.build_targetってのが書けるらしい。
MRuby::CrossBuildの実装にひっそりコメントされててマジかよという気持ちにさせられた
どうもこれはまあまあ新しいオプションで、俺が今まで使ってたCライブラリをコンパイル・リンクするmrbgemではこれ以外の方法でアーキ特定やってたので引っかからなかったっぽい
具体的にはこのスクショのちょうどすぐ上に見えるほうのabi指定です
hostは昔からあるそっちから取って、buildは……どうしてたんだろうね。そこまで踏み込んでないので分からず。
まあ、新しい方法のほうがより明示的で良いかもしれない。設定サンプルファイルとかに書いといてほしいけど…
うーむ、まだ引っかかるな。mruby-yamlのクロスコンパイル設定あんまこなれてなさそう。
は、mruby-yaml、こいつlibmruby内に埋まらないのか
ビルドコマンドラインの設定直すのめんどくさいからやめてほしい
mruby-onig-regexpだとlibmruby.aのar叩く時のrake依存関係に割り込んでるのか、なるほど
-lmrubyに加えて-lyamlする必要があって、それを勝手にビルドしてるならプライベートな作業ディレクトリに抱えたままにするのやめろよ!!とさけんでいる
まあmrubyのビルドは所詮Rakeだから適当なタスクに引っかけて割り込めばcpくらいは仕込める
これでlibmruby.aの出力ディレクトリに露出させることができるので、-lmrubyしてる側でそのままリンクできる
本当はmruby-yamlがrakeタスクを仕込んでいてくれると、引っかけやすいんだが。
よしやっとlibexvoice.soのビルドまで到達できた。
ここまでやってまだmruby-mixを入れられただけという事実がヤバい
mrubyがstd c90か何かでビルドされているという設定ミスを発見
いや、mrubyってstd=gnu99とかじゃなかったっけ……
シンプルにスレッドアンセーフな操作して爆死しただけだった(
ループスレッドによるtick供給から、android.os.Handlerによるメッセージ駆動に切り替えた
exvoiceには:periodイベント供給とかいういつの時代だよ案件があることが明らかに。
Delayerの遅延処理だけで回そうと思ったが案外上手く回ってくれない
つついさんへ
以前送っていただいたポテチですが、袋あたりの量が多いです
Delayer.run回すたびに異次元で例外吐いてmrb_protectで大域脱出してきてる…
s/mrb_protectで/mrb_protectの地点まで/
NDK「ねえどんな気持ちwwwwねえどんな気持ちwwwwwww(SIGSEGV)」
Android Studioが勝手にAPKの再インストール飛ばすのでキレてる