Brainf**kの簡略図を作ろう

お久しぶりです。中院です。 皆さんはBrainf**kという言語をご存知でしょうか? 名前で抵抗感を覚えるかもしれませんが実はこれ、図に書いて簡単に説明できちゃいます。 https://twitter.com/PianoCat1010/status/1785200079579881652 ということで今回はBrainf**kの簡略図を作ってみましょう。 なお、この記事は CC BY 4.0 のもと自由に使用できます。 Brainf**kの各種記号 ただこの記事を読んでいる誰もがBrainf**kを知っているわけではないので各種記号を簡単にここにまとめておきます。 (下の表は) 命令動作+値のインクリメント-値のデクリメント>ポインタを1つ右に<ポインタを1つ左に,出力.入力[値が0なら対応する ] へジャンプ(ループ開始)]値が0以外なら対応する [ へジャンプ(ループ終了) BFって難しそうに見えて実は記号に直結した動作をしていてわかりやすいんです。 書ける気がしてきましたか? 前置きはそこらへんまでにしておいて次は簡略図を書く段階に入っていきましょう。 簡略図 簡略図を描く際に注意する点として なるべく簡略化させ、記述量を減らす わかりやすい記号を用いる ことが挙げられます。 今回はこの2点に注意して作成しました。 記号 以下のような記号を用います。 記号意味開始/終了入力: a 出力: b代入: c命令ポイントの右/左シフトループ省略 BFには変数はありませんが、図内では変数を用いて書いたほうがわかりやすかったりします。 例 このようなコードを考えます。 >,[<++++>-]<-. このコードの簡略図は以下のようになります。 コードをネストするよりも簡単になりました。 BFのコードを組み立てたり人に説明する必要があったりする際に大活躍しそうです。 最後に BFはよく難読言語の1つとして挙げられていましたが、このような簡略化によってとても読みやすくなります。 BFを書く際には活用してみてください。 では。

April 30, 2024 · 1 min · PianoCat1010
Screenshot_20231212_000628

Misskeyの外部HTTPリクエストをインスタンス毎に経由するプロキシを変えたり、ネットワークレベルでブロックしたりする

どうも、適当にMisskey自鯖を建ててるたいぷりんぐです。 やり方 必要なもの Privoxy (HTTPプロキシを構築できるソフト。Debian系なら apt install privoxy とかで入るはず) 上流に使用するHTTP or Socks5プロキシ ※WireGuardプロファイルをダウンロードできるVPN(ProtonVPN, Mullvad VPNなど)を使用することも可能です。 こちら を参考にしてください 気合, やる気 Privoxyの設定 設定ファイルは /etc/privoxy/config にあるはず。無ければ頑張って探してください(投げやり) 変更箇所 # 5.1. forward # ============= ~~省略~~ # forward ipv6-server.example.org . # forward <[2-3][0-9a-f][0-9a-f][0-9a-f]:*> . # forward / proxy-host.tld:6324 # メイン(指定インスタンス以外)のプロキシ forward misskey.io proxy-host.tld:1081 # 別のプロキシを経由させたいインスタンスのドメインを指定 forward misskey.typeling1578.dev . # プロキシを通さないことも可能 forward misskey.example.com 0.0.0.0:80 # 上流プロキシを0.0.0.0とかに設定することでブロックできる # # 5.2. forward-socks4, forward-socks4a, forward-socks5 and forward-socks5t # ========================================================================= ~~省略~~ # # forward localhost/ . # forward-socks5 misskey.dev proxy-host.tld:5738 . # Socks5を使うことも可能 forward-socks5t .onion proxy-host.tld:9050 . # `.onion`ドメインだけTorを経由させたりもできる(非推奨) # # 5.3. forwarded-connect-retries # =============================== ~~省略~~ # 6.9. max-client-connections # ============================ ~~省略~~ # Example: # # max-client-connections 256 # max-client-connections 1024 # 許容する同時接続数を設定します。これは運営しているインスタンスの規模によって変えてください。(1024もあれば余程大丈夫) # # 6.10. listen-backlog # ===================== 変更を保存すれば即時に反映されます。(心配なら systemctl restart privoxy でも) ...

December 11, 2023 · 1 min · typeling
FaLi3KdUIAERxhv

コミュニティー製の Firefox 派生ブラウザーにデジタル署名を付けた話

Floorp ブラウザーを開発しているすらーぷの妖精です!バージョン 10.4.0 で Certum によるコードサイニング証明書を購入し、署名しました。手順が大変だったので備忘録として残そうと思います。 なぜコードサイニング証明書を買って署名したのか Kaspersky・Avast・OSばs(((おっと、、 ウイルスバスター・Norton といったセキュリティソフトが信頼できないソフトウェアとして Floorp をブロックするので署名をつければ解決できるという話を聞き、コードサイニング証明書を買い、個人情報を全国に捧げる決断をしました。 購入・コードサイニング証明書発行手順 https://crystalmark.info/ja/2020/06/06/opensourcecodesigning/ 必要なものは上の hiyohiyo 様が書いているブログの通り、以下のものになります パスポートなどの国際的に自身の身分を公的に証明できるもの ゆうちょ銀行の残高証明書などの英語で住所が確認できる書類(通常は日本語なので発行の際に英語で書いてくださいとお願いするべし) オープンソースプロジェクト(GitHub などの URL でさらに、自分の名前を載せたライセンスを書いておく) 本名および居住地域(都道府県)を公開する覚悟 約2万3000円費用(2年目からは25ユーロに下がります) 購入手順 下記のサイトから一番下の行の商品がオープンソースプロジェクト下で開発している人が使えるコードサイニング証明書と必要なキット。 クラウドでやりたいなら一番左を。(二年目も49ユーロになります。) 物理キーでいいなら一番右側を。(二年目からは25ユーロに) https://shop.certum.eu/data-safety/code-signing-certificates.html 私は物理キーでやりたかったのと安く済ませたかったので一番右を選択。 Open Source Code Signing - set 値段に関しててですが円安なので無茶苦茶高いです。DHL を配送サービスに使うらしくその値段も含んで2万円ぐらいです。(日本の関税に引っ掛かりその手数料と税金で1100円追加で領収されます) まあ無料のオープンソースプロジェクトで収益が得られていない場合はあきらめたほうが賢明だと思います。ちなみに Floorp はブラウザーからの収益は0円なので終わっています。絶望的です。寄付は以下からお願いします。 https://github.com/sponsors/Ablaze-MIRAI コードサイニング証明書を Certum に発行してもらう 日本語のドキュメントがないので軽く書いておきます。ちなみにコードサイニング証明書を使うのに必要なDHL経由で来るツールが発行には必要です。Windows 環境が前提です 1.Certum のコードサイニング証明書を購入したアカウントでログインしてアカウント管理画面へ https://shop.certum.eu/customer/account/ 2. Manage Certificates ↗ にアクセスする 証明書の管理サイトにリダイレクトします。ここで Certum の DHL経由で来るツールが必要になります。先にセットアップが必要です。 USB メモリみたいなものを取り出して裏側が取れるので取って付属の SIM カードを入れます(緑色のカードです)入れ終わったら蓋をしましょう。 PC に刺します。そして、以下のサイトからカードマネージャをダウンロードしてインストールします。(再起動必須) https://pomoc.certum.pl/pl/oprogramowanie/procertum-cardmanager/ 再起動し終わったら、インストールしたソフトを起動します。インターフェイスは結構古めです。 ...

March 11, 2023 · 2 min · surapunoyousei
Extension01

Google Chrome で広告ブロックはもう無理?「Manifest V3」とは?

どうも、こんにちは!すらーぷの妖精です! すでに影響かなりのを及ぼしてはいますが、2023年に、Google Chrome や Microsoft Edge などで大きく影響を及ぼす、新しい Chrome 拡張機能の API「Manifest V3」についてお話します。 そもそも 「Manifest V3」 とは? これは現在、 Chrome ウェブストア や、 Microsoft Edge Add-ons などで公開されている拡張機能が使用する、ブラウザー の動作を変更させることのできる新しい APIのことです。今までは、Manifest V2が使われてきました。 Chrome 拡張機能などは。ご利用中のブラウザーにも一つはインストールされているでしょう。それらがこのAPIを使っているんです。 Manifest V3 で何が拡張機能に影響したのか これまでは Manifest V2 という、かなり自由度が高い API が使えたのですが、2022年1月17日に、Chrome ウェブストアは Manifest V2 の受け入れを停止。代わりに 自由度が低い Manifest V3 が主流になったわけです。とはいえ、使えなくなったAPIは僅かなんです。それでも広告ブロッカーには致命的な API が置き換えられたんですね。 具体的には、 Network request modification API が、 declarativeNetRequest API に置き換わったのです。1つ目は、Webrequest API とも言われていますね。 つまり、 広告ブロッカーが使う API が遮断され、広告を張り出すサイトの接続の拒否が難しくなる ということです。 致命的ですね。また、これを乗り越えるにしても、拡張機能の開発者も苦労しますし、すでに、Chrome によって、サポートを終了させられることを有名な広告ブロッカーである Ublock Origin の開発者はかなり昔から発言しています。 https://github.com/el1t/uBlock-Safari/issues/158 Switch to a different browser. If you choose this, I strongly recomend Firefox. Chrome will itself be ending support for uBlockOrigin soon ...

October 5, 2022 · 1 min · surapunoyousei
gopher_blog_logo

AblazeでGoを布教した話

どうもこまもかです。 今回はAblaze内でのGo使った取り組みについて紹介します。 Go採用の経緯 僕がGoを知ったきっかけは、SheeplaさんがGoを使った便利なCUIツールを作っているのを見たことです。 ソースコードを読んでみると ktr0731/go-fuzzyfinder というあいまい検索のUIを簡単に構築できるライブラリを使っている事が分かり、 実際にツールを作って見ようと思い開発を始めました。 そして出来上がったのが freasearcher です。 その後にはライさんが ConsoleTranslate で採用してくださったりなど、Ablaze内でのGoの利用事例が増えていきました。 今ではAblaze内で使う小さなツールなどの開発にも使われています。 また、サーバーのバックエンドを開発する動きも出てきています。 増えた理由 Ablaze内でGoの活用事例が増えた理由として、以下の要素が挙げられます。 知名度があった AblazeではDockerを用いた開発もしており、Dockerの開発言語がGoであることからもメンバー内でのGoの知名度は高かったです。 シンプルで書きやすい Goは言語仕様がシンプルなので、他の人が書いたプログラムも読みやすくなりやすいです。 また、プログラムの保守がしやすくなるというメリットもあります。 また、静的型付けであるため型が違う事によるバグが大幅に減りました。 ライブラリが豊富 Goはライブラリが豊富なので、自分が作りたい機能は割とライブラリで作れたりします。 また、シンプルな構文、静的型付けも相まって高速に開発を進めることができます。 バイナリ化できる 以前この様なプログラムはPythonを用いて書かれていました。 しかしPythonは環境依存のエラー、ライブラリなどのトラブルが起こることもあり、他の人にツールなどを共有することが難しい面がありました。 しかし、Goはバイナリを生成できるのでこの様なトラブルとおさらば出来ます。これはかなり嬉しいポイントでした。 ツールが優秀 Goは言語の周辺ツールがとても優秀です。 例えば構文チェックの go vet や、フォーマッタ go fmt、LSPサーバーの gopls などです。 特にgoplsはimport文を自動挿入してくれたりと開発時の良いパートナーになっています。 高速なプログラムが書ける Goは Javaと同程度の速度が出る ので、サーバー向けの用途にかなり向いています。 また、並列処理をスッキリと書けるのでさらなる高速化も期待できます。 Gopherがかわいい やはりこれです。Goがここまで広まったのはGopherがかわいいからです。これに勝る理由はありません。 布教にあたって 新しい技術を布教する一番いい方法は 実際に自分がやっている所を見せる です。 いくらその技術の素晴らしさを言葉で表現してもなかなか広まりません。 その技術を使う事によって得られる利益、それを周りの人に見せることでより良く広めることが出来る。 今回の事例でその事を実感しました。 今回はAblazeでGoを広めた話を書きました。僕は次に布教する技術を探していきたいと思います。

September 7, 2022 · 1 min · amagaeru
VirtualBox_opensuse_15_05_2022_17_17_57

AlexandriteOS 3.20 リリースノート

3.10のリリースからあまり経っていませんがAlexandriteOS 3.20をリリースします。 このアップデートには多数の変更が含まれています 削除される機能 安定性やパフォーマンスの問題、または不具合の原因となっている可能性の高い機能を削除しました ・デスクトップアイコン (多数の不具合の原因となっているため) ・パネル右側のCPU使用率アイコン (ユースケースが少なく、パフォーマンスに影響が出るため) デスクトップアイコンに関しては将来的に何らかの代替を用意する予定ですが、Gnomeのデスクトップアイコン関係の拡張機能はもうほとんど残っておらず実装できるかは不明です。 デスクトップアイコンによって引き起こされる不具合が、”デュアルモニター使用時に画面の最前面にコントロールできない透明なウィンドウが全画面で表示されシェルが一切の操作を受け付けなくなることがある” というかなり致命的なものであるため削除に至りました。 もし引き続きデスクトップアイコンを使用したい場合、以下の拡張機能を手動でインストールすれば復元できます。ただしデュアルモニターの環境で使用することは推奨しません。 https://gitlab.com/rastersoft/desktop-icons-ng 変更される機能 ・ダッシュボード(画面下部のパネル)が改善されました。背景が不透明になりアイコンが見やすくなりました。 ・デスクトップの各所に使われているブラー(すりガラス風のエフェクト)の設定が変更され、見やすさと美しさが向上しました。 ・アイコンテーマがGnomeの標準であるAdwaitaに変更されました。 なぜこのような変更を行ったのかは これ が主な理由です。 「Linuxディストリビューションは、ユーザーだけでなく、フリーソフトウェア開発者コミュニティに対する責任を認識している必要があります。」 またGnome42でAdwaita自体がかなり改善されたというのも理由の一つです。 ・一部のプリインストールソフトが削除されました。ユースケースが少ないソフトウェアが主に削除されています。 メンテナンスについて このセクションは完全に余談なので読み飛ばしても問題ありません。 中の人が来年度受験生になるため今後忙しくなります。特に中の人は自称進学校に通っているので尚更です。このプロジェクトに割ける時間も減るのでAlexandriteOSを極力メンテナンスをしやすい設計にする必要があります。Gnomeの拡張機能はメンテナンスの最大の頭痛の種です。Gnomeのメジャーアップデートへの対応の障壁になるからです。拡張機能の数を減らしているのは実はメンテナンスとサポートの負担を減らしたいのも理由の一つだったりします。

August 9, 2022 · 1 min · nexryai
VirtualBox_suse-test_26_03_2022_11_36_42

AlexandriteOS 3.00 の開発記 UI編

AlexandriteOS 3.00を先日リリースしました。見ての通りUIが完全に新しくなっています。このUIがどういう経緯で実装されたのかを紹介したいと思います。 2.00での最大の課題はタスクバーの全ての要素が下に配置されているせいで画面が小さいデバイスだと表示しきれないときがある点と全体的にデスクトップ以外で使いにくいという点でした。 そこで考案されたのがこんなUIです。 このUIは画面の要素の大半を小さくしトップバーに配置しました。 しかしこれは小さすぎます。じゃあ大きさを変えないで上下に分散すればいいじゃんということで次にこんなUIが実装されました。スタートメニューは廃止され検索ボタンを代わりに配置しキーボードで主にアプリケーションを起動させる仕組みに変えました。 どうせならアイコンも新しくしようということで新アイコン(kora-icon-theme)が実装されました。 これはi3wmのようにキーボードでソフトを起動させることを好むユーザーには良いUIですがやはり一般的なスタートメニューの方を使うユーザーの方が圧倒的だろうということでこれにスタートメニューが実装されたのがこのUIです。 キーボードで検索するような人はわざわざマウスで検索ボタンを押さないだろうということで検索ボタンは葬られました。アイコンは様々な問題があったため新しく変更されました。 あらゆるデバイスでの使いやすさの両立をできるように設計されたのが新しいUIです。 右上には古典的なスタートメニューがあります。これはデスクトップユーザーのためのものです。クリックするだけで見慣れたスタートメニューが出てきます。 しかしこれには大きなマウスの移動が伴います。やはりタブレットやラップトップではタッチパッドのジェスチャーで操作するのが最適です。実はデスクトップの何もないところを3本指で上にスクロールすると、アクティビティ画面から全画面のアプリケーションリストが表示されます。これは画面が小さいデバイスに最適化されたリストです。 これで満足しているわけではありません。i3wmのようにキーボード操作のみでアプリケーションを起動することを好むニッチなユーザーがいることを知っているからです。私もその一人です。 幸いこれらの人々のためにGnomeは高度な検索機能を有しています。これを活用しない訳にはいきません。superキーを押すとアクティビティ画面に移動します。任意のキーをタイプして検索を開始できます。例えばキーボードのみで素早くFirefoxを起動させたい場合、superキーを押して"f" “i” “r” “e” と順番にタイプすれば起動できます。 これは慣れると実に快適なのでオススメです。長いリストからの選択や面倒なマウス移動無しでアプリケーションを起動させられます。また計算式を入力することで簡単な計算も行えます。 AlexandriteOS 3.00のUIはMacのパクりのように見えてそうではないとお分かりいただけたでしょうか? なにか感想や要望などあればTwitterやコメントに気軽に投稿してください。

July 29, 2022 · 1 min · nexryai
Blog for Floorp 10

Firefox 派生開発で学んだことをまとめるだけのブログ|すらーぷの妖精

どもども。すらーぷの妖精です。今回は Floorp 開発で得たものや、失ったもの や変わった考えについて書いていきます。今日で開発者としての役職は終わりなので。(執筆日:6月30日) 得たもの やはり、なんといっても技術力です。大規模ソフトウェアのソースコードは本当に大きいです。どこに何があるのかもさっぱりおわからない中から始めるので、難易度は高いですね。また、機能の追加方法も不明なので何を書けばいいのかもわかりません。ですが、少しづつソースコードが読み解けるうちに読む速度も上がった気がします。半分以上はほかのに教えてもらったりしましたが。 これだけではありません。Firefox のソースコードは合計で 3GB 以上ありますし、フォークが大変です。Firefox のリポジトリは Mercurial なのでフォークだけでもかなりの時間を要しました。最終的に何とかなりましたが。技術的にはこんなものでしょう。 人間関係になりますが、某WebDINO Japan の私からしたら神みたいな人とお話しできたりする機会が得れたり、(また話してみたいと思ってます)Floorp の公式リポジトリに翻訳の修正が来たり。人間関係も広めたり深めることができました。いや、素晴らしい。正直 DM に来た時冗談かと思いました。はい。 変わった考え 一文で書くと以下のようになります。 Mozilla を信仰するようになって、ビックテックが好きではなくなりました Google といえば、Google Chrome。Mozilla といえば Firefox。まあライバルなわけで。Google さん色々とやらかしてくれているわけですね。Google ドキュメントがうまく動作しなかったり、YouTube のコメント欄が突然全部に「続きを見る」が表示されたり、流石にもっとチェックするべきだと感じました。Chromium の天下統一はまずい。 Chromium について Chromium 時代、DRM や H.264 に悩んで Firefox への移行を決めたのは今でも覚えています。openH.264 が搭載されているといるので安心したら H.264 のソースからのビルドだったなど。うーん、、派生殺し。そのうえ、Chromium 派生の大半は使ってはいけない Chrome Sync を搭載しまくる。なんなんだこの世界はと思いました。今となっては Firefox に移行してよかったと感じています。 *H.264 には特許があり、多額の金が必要です。open H.246 はビルド済みのバイナリなら無料。Firefox はそれを使用。 DRM について DRM(著作権保護用コンポーネント) に関しては闇が深すぎますね。Firefox には最高品質の Widevine(DRM)が搭載されていますが、Floorp は Firefox 派生にもかかわらず、Spotify や Amazon Prime などの動画を最高画質で再生出来ないという縛りがあります。おかしい気はしますね。闇を感じます。 まあ Google に対して敵対的であることで有名なブラウザーは存在していますが、DRM の搭載には Google との契約が必須になっています。何故搭載できているのでしょうか?謎です。 ...

July 20, 2022 · 1 min · surapunoyousei
Blog for Floorp 10

Firefox 派生の作り方|~最初で最後の Floorp 開発ブログ~

お久しぶりです。とは言いつつ、ブラウザーのリリースノートは私が作成しているのでそうでもないのかもしれません。初対面だったら初めまして。 Twitter でイキって Firefox 派生らしいブラウザーも作れてない人が Firefox 派生の作り方みたいなものを出すといった結果、たくさんの反応を頂いてツイ消しできないレベルになってしまったので書きます。 前提 まず、覚悟は必要です。生半可な気持ちで作れるものじゃないので楽に作りたい人は Electron でやったほうが幸せになれます。本当です。 また、エラーの発生する確率がびっくりするほど高いので最初から挫折することは当たり前だと思っておくことも必要かもしれません。Chromium よりエラーは多い気がしますね。 また、機能更新と Firefox の追従を同時に進行することは至難の業です。自分でいうのもなんなんですが。仕様変更が多いんですね、、、死にます() ESR はまあ、、、うん。楽っちゃ楽。 追記:書き終わった後に気づいたというか思い出したんだけど、Firefox のビルドエラーは本当のことを言わない場合があるので鵜呑みは厳禁。本当。公式のドキュメントも信頼できない場合あり。 最初にやること んー、、、やっぱり、派生元のブラウザーを使わない手はないね。うん。 私は Firefox をデフォルトのブラウザーにしています。こうすることでどこを改造すればいいのか、どうすれば簡単に改造できるかが簡単にわかります。 まあ Chromium 使ってて Firefox 派生作ったら混乱しますね。私なら。といいつつ Vivaldi 使ってるのは秘密です。 あと、思想を理解するのも重要かも。Chromium 君の構造はなかなか雑なので僕は好きになれません。Chromium が起動中パスワードを開くとその後、パスワードがずっとメモリに平文保存はさすがにビビりました。雑で似非プライバシーとセキュリティー。 まあここまで来たらお気づきだと思うけど、Chromium でプライバシーやセキュリティーを名乗るのは構造上難しいって話。プライバシーに真剣な Firefox がどれだけすごいかわかる。Firefox 派生は正直自分のメンタルとの殺し合いなのでメンタル維持にはもってこい。(だと思ってる) ソースコードのフォーク git リポジトリにクローンするなりなんなりして、Firefox の環境を整えます。Firefox 公式が紹介しているものをそのまま書くのはつまらないので、フォークのやり方を書きます。 まず、公式がホストしているリポジトリは二つあります。それは、Mercurial リポジトリの https://hg.mozilla.org/mozilla-unified と、 https://github.com/mozizlla/gecko-dev があります。正確には、Gecko-dev はMozilla が運営する読み取り専用のミラーなので不完全です。一部のブランチがなかったりします。逆に、Mercurial リポジトリは Firefox の運営に使われるリポジトリなのですべてのブランチを見ることができます。 GitHubのリポジトリのほうがフォークは簡単なので魅力的ですが、なぜかブランチが追加されないことがあるので、今回はMercurial リポジトリをGit Cinnabar で変換してフォークする方法を書こうと思います。 (Firefox ESR102 は追加される見込み無し。いつなんでしょうか) https://github.com/glandium/git-cinnabar 上のURLから、リポジトリをクローンします。そしてパスを通しておきます。Windows だったら環境設定のことですね。リポジトリをパスに通すだけなので難しくないです。 通したら、Mercurial リポジトリをGit でクローン出来ます。ただし違いがあるので注意。 通常、Git リポジトリをクローンする場合、git clone https://github.com/mozilla/gecko-dev で可能ですが、Mercurial リポジトリの場合、git clone hg://hg.mozilla.org/mozilla-unified になります。 ...

June 22, 2022 · 1 min · surapunoyousei
VirtualBox_suse-test_26_03_2022_11_36_42

AlexandriteOSのビルドシステムを刷新します

こんにちは。AlexandriteOS開発者のnexryaiです。 今日はAlexandriteOSのビルドシステムが刷新されるというお知らせです。 今までAlexandriteOSはbeaverとkiwi-ngと呼ばれるツールを使用してローカルでビルドしていました。 しかしビルド時間短縮などの目的からビルドシステムをopenSUSEのオープンなビルドシステムをベースにした新しい形態へ変更します。以降には若干の時間がかかりますが実現すればAlexandriteOSのメンテナンスにかかる手間が大幅に減り、その上ユーザーによるソースコードの監査もしやすくなります。 なおライセンスに関して曖昧な部分がある可能性があるため現在、AlexandriteOSのGitHubリポジトリの一部を一時的に非公開にしています。新しいビルドシステム上ではこのような問題は発生しませんので新ビルドシステムに移行が完了し次第、新しいシステム上で公開します。

May 19, 2022 · 1 min · nexryai