<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.calc.mie.jp/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.calc.mie.jp/" rel="alternate" type="text/html" /><updated>2025-07-17T14:49:20+00:00</updated><id>https://www.calc.mie.jp/feed.xml</id><title type="html">計算研究会</title><subtitle>計算研究会のホームページです。私たちは三重大学を主軸に活動する「計算」の研究会です。</subtitle><entry><title type="html">計算研究会HPの環境について@2025</title><link href="https://www.calc.mie.jp/2025/07/17/HPenv3.html" rel="alternate" type="text/html" title="計算研究会HPの環境について@2025" /><published>2025-07-17T00:00:00+00:00</published><updated>2025-07-17T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2025/07/17/HPenv3</id><content type="html" xml:base="https://www.calc.mie.jp/2025/07/17/HPenv3.html"><![CDATA[<h2 id="2024年度版から変わったこと">2024年度版から変わったこと</h2>

<p><a href="https://github.com/calc-mie/pages-calc-mie-jp/pull/4">このPR</a>でやったことを書きます。</p>

<h3 id="そもそもvscodeから開発できない">そもそもvscodeから開発できない</h3>

<p>ページ内容を更新しようとcloneしコンテナを立ち上げると、エラーで終了します。</p>

<p>大体は「バージョンがどうのこうの」というエラーだったので、諸々のバージョンを雑に上げていきます。</p>

<p>docker imageのバージョンはすぐに上げられたのですが、<code class="language-plaintext highlighter-rouge">Gemfile.lock</code>があるのにエラーを吐いているruby周りはよくわかりません。
エラーを斜め読みしていた限り、imageのバージョンを上げたことでgemの何かしらと相性が悪くなったんだろうと思います。</p>

<p>そこで<code class="language-plaintext highlighter-rouge">Gemfile.lock</code>を削除し、ついでに<code class="language-plaintext highlighter-rouge">Gemfile</code>で指定しているgithub-pagesのバージョンを上げ、最後に<code class="language-plaintext highlighter-rouge">bundler install</code>でライブラリを入れ直します。</p>

<p>これですんなりと動きました。</p>

<h3 id="jekyllの自動更新が止まらない">jekyllの自動更新が止まらない</h3>

<p><code class="language-plaintext highlighter-rouge">index.md</code>を更新して保存すると、ページの自動更新が無限ループしています。</p>

<p>ログを見ると、<code class="language-plaintext highlighter-rouge">_site</code>フォルダ内の更新を検出してしまい、<code class="language-plaintext highlighter-rouge">_site</code>の中へ記事をレンダリングし直したものを書き込み、再び更新を検出し……という状態に陥っていました。</p>

<p>そこで<a href="https://jekyllrb.com/docs/configuration/options/">jekyllのオプション</a>を眺めると、<code class="language-plaintext highlighter-rouge">exclude</code>がありました。</p>

<p>以前は<code class="language-plaintext highlighter-rouge">_site</code>はデフォルトで監視対象外だったような気がするのですが、ともかく、これを<code class="language-plaintext highlighter-rouge">_config.yml</code>に書けば自動更新の無限ループが止まりました。</p>

<h3 id="おまけ">おまけ</h3>

<p>imageのバージョンを上げ<code class="language-plaintext highlighter-rouge">bundler install</code>を一旦コメントアウトすると、コンテナは建つもののすぐに落ちてしまいます。</p>

<p><code class="language-plaintext highlighter-rouge">compose.yml</code>記載の<code class="language-plaintext highlighter-rouge">command</code>が動いていないため、コンテナが起動し続ける理由がなくなり終了していたようです。</p>

<p>いつもは<code class="language-plaintext highlighter-rouge">command</code>にワンライナーでsleepをfor文でぶん回すのですが、どうやら<code class="language-plaintext highlighter-rouge">tty: true</code>だけでいい感じに接続が維持できるようでした。</p>

<h2 id="おわり">おわり</h2>

<p>割とさくっと終わりました。</p>

<p>古い記事を眺めていたら数式のレンダリングができていないことに気づきました、気が向いたら修正します。<a href="https://github.com/yagarea/jektex">Jektex</a>なるものを見つけたので、これを試すつもりです。</p>]]></content><author><name>85yago</name></author><summary type="html"><![CDATA[2024年度版から変わったこと]]></summary></entry><entry><title type="html">計算研究会HPの環境について@2024</title><link href="https://www.calc.mie.jp/2024/04/06/HPenv2.html" rel="alternate" type="text/html" title="計算研究会HPの環境について@2024" /><published>2024-04-06T00:00:00+00:00</published><updated>2024-04-06T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2024/04/06/HPenv2</id><content type="html" xml:base="https://www.calc.mie.jp/2024/04/06/HPenv2.html"><![CDATA[<h2 id="2023年度版と変わったこと">2023年度版と変わったこと</h2>

<p><a href="https://github.com/calc-mie/pages-calc-mie-jp/pull/2">このPR</a>でやってたことを書きます。</p>

<h3 id="dockerfileを更新">dockerfileを更新</h3>

<p>以前使っていたjekyllのdocker image<code class="language-plaintext highlighter-rouge">rockstorm/jekyll:pages-v228-minimal</code>が更新されなくなってたので手書きしました。</p>

<div class="language-dockerfile highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">FROM</span><span class="s"> ruby:3.3-alpine3.19</span>

<span class="k">RUN </span>apk <span class="nt">--no-cache</span> add <span class="se">\
</span>    build-base
<span class="k">RUN </span>gem <span class="nb">install </span>bundler

<span class="k">COPY</span><span class="s"> Gemfile /tmp/</span>
<span class="k">COPY</span><span class="s"> Gemfile.lock /tmp/</span>
<span class="k">WORKDIR</span><span class="s"> /tmp</span>
<span class="k">RUN </span>bundler <span class="nb">install</span>
</code></pre></div></div>

<p>重要なのはこれだけです。</p>

<p><code class="language-plaintext highlighter-rouge">bundler install</code>するのを<code class="language-plaintext highlighter-rouge">.devcontainer/devcontainer.json</code>の<code class="language-plaintext highlighter-rouge">postCreateCommand</code>とかでするべきか迷いました。
ビルドし直すたびに下で開いて動いてるのは遅いのと、そう変わることはないだろうということでdockerfileでやってしまいます。</p>

<p>ついでにGemfileの中身もすっきりしておきました。</p>

<h3 id="記事のyaml-headerにlayoutを追加">記事のyaml headerにlayoutを追加</h3>

<p>仕様が変わったのか、手元で動かしていたら以下のようにCSSが適用されなくなっていました。</p>

<p><img src="/images/2024-04-06_1.png" alt="yaml headerにlayoutを追加する前の記事" /></p>

<p><a href="https://github.com/jekyll/minima">使っているレイアウトのリポジトリ</a>を見に行くと、yaml headerに諸々書いてあるようなので追記しておきます。</p>

<p>記事の2行目に書いておけば良さそうなので、<code class="language-plaintext highlighter-rouge">_posts</code>フォルダへ移動してから、
<code class="language-plaintext highlighter-rouge">sed -i -e "2i layout: post"</code>みたいな感じで片付けました。</p>

<h3 id="jekyll-serveのオプション色々"><code class="language-plaintext highlighter-rouge">jekyll serve</code>のオプション色々</h3>

<p>一通り直し終わってimageをビルドし直して開くとページが見れなくなっていました。
コンテナの中からcurlで叩くと見えるので、おかしいなぁ～と思っていたんですが、<code class="language-plaintext highlighter-rouge">-H</code>オプションで<code class="language-plaintext highlighter-rouge">0.0.0.0</code>を指定してやることで直りました。
なんで今まで動いていたんですか……？</p>

<p>helpを眺めていたら<code class="language-plaintext highlighter-rouge">--future</code>というオプションも見つけたのでこれも追加しておきます。
未来の日付の記事を描画してくれます。</p>

<p>書いている途中に気付いたのですが、<code class="language-plaintext highlighter-rouge">_post</code>フォルダの中を更新してもビルドが走らず、<code class="language-plaintext highlighter-rouge">--watch</code>オプションが微妙に機能していません。
りどみを保存すると走ります。
composeで雑にマウントしてるのが原因なんじゃないかとにらんでいます。</p>

<h2 id="おわり">おわり</h2>

<p>さらっと書きましたが、「なんで動かないんだ～～～～～」を100回くらいやっていたので時間が掛かりました。</p>]]></content><author><name>85yago</name></author><summary type="html"><![CDATA[2023年度版と変わったこと]]></summary></entry><entry><title type="html">計算研究会HPの環境について@2023</title><link href="https://www.calc.mie.jp/2023/04/28/HPenv.html" rel="alternate" type="text/html" title="計算研究会HPの環境について@2023" /><published>2023-04-28T00:00:00+00:00</published><updated>2023-04-28T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2023/04/28/HPenv</id><content type="html" xml:base="https://www.calc.mie.jp/2023/04/28/HPenv.html"><![CDATA[<h2 id="一言で">一言で</h2>

<p><a href="https://jekyllrb.com/">Jekyll</a>を用いてマークダウンで書かれた記事を変換しGitHub Pagesに置いています。</p>

<h2 id="jekyll">Jekyll</h2>

<p>Jekyllはシンプルな静的サイトを作成できるRuby製のソフトです。</p>

<p><a href="https://jekyllrb.com/docs/structure/">Directory Structure</a>で定義されているようなファイル構成をとっています。本HPの実際のファイルは<a href="https://github.com/calc-mie/pages-calc-mie-jp">ここ</a>にあります。</p>

<p>マークダウンに加え、Liquidというテンプレートエンジンも利用可能です。また、HTMLとCSSも使用可能です。</p>

<h2 id="github-pages">GitHub Pages</h2>

<p>GitHubのホスティングサービスで、リポジトリの内容をそのまま公開したり、Actionsを使ってページを生成することもできます。</p>

<p>Jekyllとの連携がかなり優秀で、簡単にこのHPのようなサイトを生成できます。いくつかのファイルを設定し、Pagesを使う設定をすることで、このHPは生成されています。</p>

<p>詳しくは<a href="https://docs.github.com/ja/pages/setting-up-a-github-pages-site-with-jekyll">Jekyllを使用してGitHub Pagesサイトを設定する</a>を確認してください。</p>]]></content><author><name>85yago</name></author><summary type="html"><![CDATA[一言で]]></summary></entry><entry><title type="html">Growiを計算研究会のwikiとして利用を開始しました</title><link href="https://www.calc.mie.jp/2020/12/19/growi-setup.html" rel="alternate" type="text/html" title="Growiを計算研究会のwikiとして利用を開始しました" /><published>2020-12-19T00:00:00+00:00</published><updated>2020-12-19T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2020/12/19/growi-setup</id><content type="html" xml:base="https://www.calc.mie.jp/2020/12/19/growi-setup.html"><![CDATA[<h1 id="はじめに">はじめに</h1>

<p>計算研究会では以下の2つのツールを用いていました.</p>

<ol>
  <li>学祭の会議の議事録や$n$人で集まってゼミをする$n$頭勉強会の共有資料として HackMD(https://hackmd.io)</li>
  <li>https://wiki.calc.mie.jp のサーバアプリケーションとしてdokuwiki(https://www.dokuwiki.org/)</li>
</ol>

<p>HackMDを使って複数人で文書を操作し,
出来上がったものをwikiに保存,継承するという形式をとっていました.</p>

<p>しかし,別々のmarkdownの方言を使っているのでwikiへの保存がかなり大きなタスクとなっていました.
この点を解決する方法を探していたところ,Growi(https://github.com/weseek/growi-docker-compose)がモダンで使いやすいGUIを持っていて良さそうだったので導入してみたところかなり好評でした.</p>

<p>この記事ではGrowiのセットアップで特に困った点を記述します.</p>

<h1 id="手順">手順</h1>

<ol>
  <li>docker-composeをインストールする(https://docs.docker.jp/compose/install.html)</li>
  <li>growi-docker-composeをクローンして各種設定をする.</li>
  <li>docker-compose up -dでサーバを立ち上げる</li>
  <li>systemdのファイルを作成する.</li>
</ol>

<h1 id="各種設定抜粋">各種設定(抜粋)</h1>

<p>今回はCodiMD(md.calc.mie.jp)とGrowi(wiki.calc.mie.jp)を
それぞれ別のドメインに割り当てました.
Growiのconfigで設定すべき環境変数を以下に示します.</p>

<ul>
  <li>docker-compose.yml</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>services:
 app:
  ports:
   - 3000:3000
  environment:
   - HACKMD_URI=https://md.calc.mie.jp 
   - APP_SITE_URL=https://wiki.calc.mie.jp
</code></pre></div></div>

<ul>
  <li>docker-compose.override.yml</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>services:
 hackmd:
  environment:
   - GROWI_URI=https://wiki.calc.mie.jp
   - CMD_PORT=3100
   - CMD_ALLOW_ANONYMOUS=false
  port:
   -3100:3100
</code></pre></div></div>

<ul>
  <li>nginxのmd.calc.mie.jpのためのconfig</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>server {
        server_name md.calc.mie.jp;
}

server {
        # CodiMD
        location / {
                proxy_pass http://127.0.0.1:3100;
        }
}
</code></pre></div></div>

<ul>
  <li>nginxのwiki.calc.mie.jpのためのconfig</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>server {
        server_name wiki.calc.mie.jp;
}

server { 
        # Growi
        location / {
                proxy_pass http://127.0.0.1:3000;
        }
}

</code></pre></div></div>

<h2 id="現在起こっているエラーと暫定的な回避方法">現在起こっているエラーと暫定的な回避方法</h2>

<p><code class="language-plaintext highlighter-rouge">CMD_ALLOW_ANONYMOUS=false</code>の状態で作られたGrowiのページは永久的に(?)HackMD連携が行われませんでした(解決しませんでした…)
GrowiクライアントからCodiMDのページに複製するときにANONIMOUSで新規ページを立てることになるからかと考えていますが,
<code class="language-plaintext highlighter-rouge">CMD_ALLOW_ANONYMOUS=false</code>でない状態で作成されたページを<code class="language-plaintext highlighter-rouge">CMD_ALLOW_ANONYMOUS=false</code>の状態で起動した状態でHackMD連携をすると正常な動作をするのでよくわかっていません.</p>

<p>暫定的な回避方法として,CodiMDにアカウントを登録してGrowiクライアント内でログインして新規ページの作成をするとうまく連携がとれるようです.</p>

<h1 id="まとめ">まとめ</h1>

<p>https://calc.mie.jp は外部向けの文書を公開し,
https://wiki.calc.mie.jp は内部向けの文書を公開しながらも蓄えておくように運用していきます.</p>]]></content><author><name>flow_6852</name></author><summary type="html"><![CDATA[はじめに]]></summary></entry><entry><title type="html">もっとHaskellでAtCoderに参加したい</title><link href="https://www.calc.mie.jp/2020/12/16/atsubmit2.html" rel="alternate" type="text/html" title="もっとHaskellでAtCoderに参加したい" /><published>2020-12-16T00:00:00+00:00</published><updated>2020-12-16T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2020/12/16/atsubmit2</id><content type="html" xml:base="https://www.calc.mie.jp/2020/12/16/atsubmit2.html"><![CDATA[<h1 id="はじめに">はじめに</h1>

<p>以前記事にした<a href="https://qiita.com/flow_6852/items/fce07a04e31d47edabda">(なるべく)HaskellでAtCoderに参加したい</a>の改良をしました.</p>

<p>https://github.com/flow6852/atsubmit</p>

<p>にソースがあり,使い方やサーバの詳しいAPIは載せようと考えています.
ここでは前回からの改善とGADTsをどこで用いているかを記述します.</p>

<h1 id="前回からの改善">前回からの改善</h1>

<ol>
  <li>各APIをGADTsを用いた実装に変更しました.</li>
  <li>筆者はvimmerで,いちいちブラウザで問題文を読むのも億劫なのでvimのtex_concealを使ってvimの中で完結できるようにvimscriptを書きました.</li>
  <li>今までのコマンドを確認するlogコマンドを追加しました.</li>
  <li>問題のhtmlファイルがクライアントコマンド実行時のカレントディレクトリに存在したときにそのhtmlから取得するようにして,相手サーバへのアクセスを減らしました.</li>
  <li>languageidを取得できるようにしました.</li>
</ol>

<h1 id="gadtsを用いた実装">GADTsを用いた実装</h1>

<p>Generalized Algebric Data Typesの事で,一般代数的データ型といいます.
[1][2]を参考に実装しています.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-- 自動提出の型.ユーザが可能なアクション.
-- リクエストを受け取ってレスポンスを返す
data SHelper a where
        Login  :: Username -&gt; Password -&gt; SHelper () -- ユーザ名とパスワードを受け取ってログインする.ContestStateのcookieとscrf_tokenの更新.
        QGet   :: V.Vector QName -&gt; Userdir -&gt; SHelper (V.Vector GetResult) -- 問題名を受け取って問題を入手する.ContestStateのQuestionsを更新.
        CGet   :: V.Vector CName -&gt; Userdir -&gt; SHelper (V.Vector GetResult) -- コンテスト名を受け取ってそれに所属する問題のすべてを入手する.
        Test   :: Socket -&gt; Source -&gt; QName -&gt; SHelper ()-- ファイルと問題名を受け取って結果を出力する. 
        Submit :: Source -&gt; QName -&gt; SHelper () -- ファイルと問題名を受け取って提出する.
        Debug  :: Source -&gt; DIn -&gt; SHelper DebugBodyRes -- ファイルと入力を受け取って出力を返す.
        Print  :: SHelper (V.Vector QName) -- ContestStateのQuestionsのすべてを返す.
        Show   :: QName -&gt; SHelper Question -- 問題を受け取ってその問題入出力を返す.
        Result :: CName -&gt; SHelper CResult -- コンテストを受け取ってコンテストの結果を出力する.
        Log    :: SHelper (V.Vector RLog) -- ログの出力
        LangId :: Lang -&gt; SHelper (V.Vector LanguageId) -- data.LanguageIdの表示
        Stop   :: SHelper ()
        Logout :: SHelper ()
</code></pre></div></div>

<p>この<code class="language-plaintext highlighter-rouge">SHelper</code>型を使ってリクエスト用とレスポンス用のデータ型を作ってそれぞれに分けて実装しました.</p>

<h2 id="サーバ側">サーバ側</h2>

<p>ソケット通信を管理する関数</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>runServer :: FilePath -&gt; (Socket -&gt; IO Bool) -&gt; IO ()
</code></pre></div></div>

<p>リクエストを受け取って評価関数に渡してレスポンスをクライアントに送信する関数</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>server :: (Socket -&gt; SHelperServerRequest -&gt; SHelperServerResponse) -&gt; Socket -&gt; IO Bool

</code></pre></div></div>

<p>リクエストを評価を渡してレスポンスを作成する関数</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>actionSHelper :: MVar Contest -&gt; Socket -&gt; SHelperServerRequest -&gt; SHelperServerResponse
</code></pre></div></div>

<p>実際にリクエストを評価する関数</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>evalSHelper :: MVar Contest -&gt; SHelper a -&gt; IO a
</code></pre></div></div>

<p>に分けられます.この関数の<code class="language-plaintext highlighter-rouge">SHelper a</code>型が得にGADTsでAPIを表現したことの利点が生きてきます.
例えば以下のような実装があります.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>evalSHelper mvcont (CGet cn (Userdir ud)) = do
 contest &lt;- readMVar mvcont
 (res, quests) &lt;- V.unzip &lt;$&gt; mapM (\x -&gt; getContestInfo x ud contest) cn `catch` \(e :: SHelperException) -&gt; throwIO e
                                                                          `catch` \(e :: SomeException) -&gt; throwIO e
 swapMVar mvcont $ contest {questions = questions contest V.++ (V.filter (/=nullQuestion).V.concat.V.toList) quests}
 return $ (V.concat.V.toList) res
</code></pre></div></div>

<p>コンテストの名前とクライアントアプリのワーキングディレクトリをサーバが受け取ってその結果(各問題について取得が成功したか,localから拾ってきたかなどの情報)を
クライアントに返すように<code class="language-plaintext highlighter-rouge">SHelper a</code>型の定義をしたときにGADTsを用いて規定してそれを
evalSHelperという関数をその型に従って実装するように制限できてます.
なので実装時に足りなかった場合には<code class="language-plaintext highlighter-rouge">SHelper a</code>型とそのAPIに対応する部分だけを修正すればいいため,機能の修正や追加がとても簡単にできると感じました.</p>

<h3 id="クライアント側">クライアント側</h3>

<p>サーバ側と同様で,<code class="language-plaintext highlighter-rouge">SHerlper a</code>型は<code class="language-plaintext highlighter-rouge">evalSHelper</code>関数の実装を制限しています.</p>

<p>ソケット通信を開始する関数</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sendServer :: FilePath -&gt; (Socket -&gt; IO a) -&gt; IO a
</code></pre></div></div>

<p>リクエストをサーバに送ってレスポンスを受け取る関数</p>
<div class="language-haskell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">evalSHelper</span> <span class="o">::</span> <span class="kt">SHelper</span> <span class="n">a</span> <span class="o">-&gt;</span> <span class="kt">Socket</span> <span class="o">-&gt;</span> <span class="kt">IO</span> <span class="n">a</span>
</code></pre></div></div>

<p>に分けられます.</p>

<h1 id="まとめ">まとめ</h1>

<p>GADTsを用いると実装すべきAPIを型によって決定してそれに基づいて内部実装を考えるという流れができるので,問題を分割しやすくなってくれてうれしく感じました.</p>

<h1 id="参考文献">参考文献</h1>

<p>[1] Generalised Algebraic Data Types (GADTs). <a href="">https://downloads.haskell.org/~ghc/6.6/docs/html/users_guide/gadt.html.</a></p>

<p>[2] 逢坂 時響 本間 雅洋 類地 孝介 . Haskell 入門 関数型プログラミング言語の基礎と実践 . 技術評論社 , 2017.</p>]]></content><author><name>flow_6852</name></author><summary type="html"><![CDATA[はじめに]]></summary></entry><entry><title type="html">Surface Pro 3にlinuxを導入した</title><link href="https://www.calc.mie.jp/2020/07/27/change-Surface-to-iPad.html" rel="alternate" type="text/html" title="Surface Pro 3にlinuxを導入した" /><published>2020-07-27T00:00:00+00:00</published><updated>2020-07-27T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2020/07/27/change-Surface-to-iPad</id><content type="html" xml:base="https://www.calc.mie.jp/2020/07/27/change-Surface-to-iPad.html"><![CDATA[<p>僕はlinux環境に興味を持っています.
論文を読んだりノートを取ったりするために最初はiPadを購入しようと考えていましたが,
僕は持っているほとんどの端末がlinuxとなっているためiPadを購入するよりも
何かしらのタブレットを購入してそこにlinux環境を入れる方がメンテナンスがしやすく,
iPadよりも使いこなせるのではと思ってSurfaceにlinuxを入れてiPadのように使うことを目的としました(そしてそれをiPadと呼ぶことにしています).
この記事は今後同じようなことをするかもしれないので備忘録として残しておきます.</p>

<h1 id="ハードウェアの購入">ハードウェアの購入</h1>

<p>僕はSurface Pro 3(本体とタイプ入力カバー)のバルク品が安かったためそれを購入し,
充電器やペンがなかったためサードパーティ製のものを,フィルム合わせて一つずつ追加で購入しました.
それぞれ順に.15290円,3580円,5990円,945円です.</p>

<h1 id="linuxのインストール">linuxのインストール</h1>

<p>ArchLinuxを導入しました.(<a href="https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89">archwiki install guide</a>)</p>

<p>インストール自体はデスクトップ等と変わりなかったのでそこまで苦労しませんでした.</p>

<h3 id="補足">補足</h3>

<p>僕の購入したSurface Pro 3は最初からbit lockerとSecure bootがオフになっていたのでそこで苦労はしませんでしたが
もし新品を購入した場合はその2つをオフにしないとインストールに失敗する(起動ができないのほうが正しいかもしれない)ので
bit lockerとSecure bootをオフにするようにしてください.</p>

<h1 id="その他のアプリケーションディスプレイマネージャ等">その他のアプリケーション(ディスプレイマネージャ等)</h1>

<p>主に導入したものは以下の通りです.</p>

<p>(<a href="https://wiki.archlinux.jp/index.php/%E3%82%BF%E3%83%96%E3%83%AC%E3%83%83%E3%83%88_PC">タブレットPC</a>と
<a href="https://wiki.archlinux.jp/index.php/Microsoft_Surface_Pro_3">archwiki Surface Pro 3</a>を参考にしました)</p>

<ul>
  <li><a href="https://aur.archlinux.org/packages/yay/">yay</a></li>
  <li><a href="https://wiki.archlinux.jp/index.php/LightDM">lightdm</a></li>
  <li><a href="https://wiki.archlinux.jp/index.php/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.BC.E3.83.B3.E3.83.AD.E3.83.83.E3.82.AF">light-locker</a></li>
  <li><a href="https://wiki.archlinux.jp/index.php/I3">i3-mw</a></li>
  <li><a href="https://wiki.archlinux.jp/index.php/Alacritty">alacritty</a></li>
  <li><a href="https://wiki.archlinux.jp/index.php/Fcitx">fcitx</a></li>
  <li>onboard</li>
  <li>xournalpp(AUR)</li>
  <li>easystroke</li>
  <li><a href="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/">iio-sensor-proxy</a></li>
</ul>

<h1 id="モニタの自動回転について">モニタの自動回転について</h1>

<p><a href="http://bluearth.cocolog-nifty.com/blog/2019/12/post-e5f4f1.html">Linuxで画面＆タッチスクリーンを90度回転</a>を参考に自作のbashスクリプトを作成しました.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/bash</span>

<span class="k">while </span><span class="nb">read </span>i <span class="p">;</span> <span class="k">do
	</span><span class="nv">check</span><span class="o">=</span><span class="si">$(</span><span class="nb">echo</span> <span class="nv">$i</span> | <span class="nb">grep </span>A | <span class="nb">awk</span> <span class="nt">-F</span> <span class="s1">':'</span> <span class="s1">'{print $2}'</span><span class="si">)</span>
	<span class="k">case</span> <span class="s2">"</span><span class="nv">$check</span><span class="s2">"</span> <span class="k">in</span> 
		<span class="s2">" normal"</span> <span class="p">)</span> <span class="nv">num</span><span class="o">=</span>0<span class="p">;</span> <span class="nv">rot</span><span class="o">=</span><span class="s2">"1 0 0 0 1 0 0 0 1"</span><span class="p">;;</span>
		<span class="s2">" right-up"</span> <span class="p">)</span> <span class="nv">num</span><span class="o">=</span>3<span class="p">;</span> <span class="nv">rot</span><span class="o">=</span><span class="s2">"0 1 0 -1 0 1 0 0 1"</span><span class="p">;;</span>
		<span class="s2">" left-up"</span> <span class="p">)</span> <span class="nv">num</span><span class="o">=</span>1<span class="p">;</span> <span class="nv">rot</span><span class="o">=</span><span class="s2">"0 -1 1 1 0 0 0 0 1"</span><span class="p">;;</span>
		<span class="s2">" bottom-up"</span> <span class="p">)</span> <span class="nv">num</span><span class="o">=</span>2<span class="p">;</span> <span class="nv">rot</span><span class="o">=</span><span class="s2">"-1 0 1 0 -1 1 0 0 1"</span><span class="p">;;</span>
		<span class="k">*</span> <span class="p">)</span> <span class="k">continue</span><span class="p">;;</span>
	<span class="k">esac</span>
	xrandr <span class="nt">-o</span> <span class="nv">$num</span>
	<span class="c"># xsetwacom set stylus Rotate $rot</span>
	<span class="k">while </span><span class="nb">read </span>i<span class="p">;</span> <span class="k">do
		</span><span class="nb">id</span><span class="o">=</span><span class="k">${</span><span class="nv">i</span><span class="p">#*id=</span><span class="k">}</span>
		xinput set-prop <span class="k">${</span><span class="nv">id</span><span class="p">%%[*</span><span class="k">}</span> <span class="s1">'Coordinate Transformation Matrix'</span> <span class="nv">$rot</span>
	<span class="k">done</span> &lt; &lt;<span class="o">(</span>xinput list | <span class="nb">grep </span>pointer | <span class="nb">grep </span>NTRG<span class="o">)</span>	
<span class="k">done</span>
</code></pre></div></div>

<p>i3の設定ファイルに<code class="language-plaintext highlighter-rouge">exec --no-startup-id monitor-sensor | ${PATH}/rotate.sh</code>を追加してあげれば,
モニタを傾けた時に自動でディスプレイとタッチスクリーンを変更してくれます.</p>

<h1 id="wi-fi接続に関して">wi-fi接続に関して</h1>

<p>ここまでの設定では特に苦しんだところはありませんでしたが,
wi-fiに接続している時に突然繋がらなくなるという問題が発生していました.
これはカーネルモジュール(mwifiex_pcie)が省電力モードをデフォルトで行っていることがわかりました. 
(<a href="https://wiki.archlinux.org/index.php/Talk:Microsoft_Surface_Pro_3">https://wiki.archlinux.org/index.php/Talk:Microsoft_Surface_Pro_3</a>)
(もしかしたらまた突然切れるかもしれない)</p>]]></content><author><name>flow_6852</name></author><summary type="html"><![CDATA[僕はlinux環境に興味を持っています. 論文を読んだりノートを取ったりするために最初はiPadを購入しようと考えていましたが, 僕は持っているほとんどの端末がlinuxとなっているためiPadを購入するよりも 何かしらのタブレットを購入してそこにlinux環境を入れる方がメンテナンスがしやすく, iPadよりも使いこなせるのではと思ってSurfaceにlinuxを入れてiPadのように使うことを目的としました(そしてそれをiPadと呼ぶことにしています). この記事は今後同じようなことをするかもしれないので備忘録として残しておきます.]]></summary></entry><entry><title type="html">2-week-game-jam</title><link href="https://www.calc.mie.jp/2020/06/14/2-week-game-jam.html" rel="alternate" type="text/html" title="2-week-game-jam" /><published>2020-06-14T00:00:00+00:00</published><updated>2020-06-14T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2020/06/14/2-week-game-jam</id><content type="html" xml:base="https://www.calc.mie.jp/2020/06/14/2-week-game-jam.html"><![CDATA[<h1 id="計算研-2-week-game-jamみたいなのやろう">計算研 2 Week Game Jamみたいなのやろう</h1>

<h2 id="開催期間">開催期間</h2>

<p>2020/6/11(木)　〜　2020/6/25(木)　の2週間</p>

<h2 id="目的">目的</h2>

<ul>
  <li>コンテンツを作って経験をつもう</li>
  <li>プログラムを書こう</li>
  <li>なんか作ってみよう</li>
  <li>コンテンツ作りで発想力を鍛えよう</li>
</ul>

<p>という大義名分をもとに，軽い気持ちでなんか作ってみましょう</p>

<h2 id="テーマ">テーマ</h2>

<p>基本的には自由．「最近JS勉強したしJSでなんか作るかぁ」「ダイクストラのアルゴリズム面白いし脱出ゲーム考えるかぁ」とかそんな理由で構いません</p>

<p>なんか作りたいけど何も思いつかないそこのあなた！そんなこともあろうかとテーマを用意しました</p>

<ul>
  <li>1P型のゲーム</li>
  <li>敵を倒していく</li>
  <li>スコアを表示する</li>
</ul>

<p>この要素を持ったゲームづくり</p>

<p>例）</p>

<ul>
  <li>まちなかでゾンビを蹴り倒していく</li>
  <li>シューティング要素を盛り込む(照準やタマ数などの管理)</li>
  <li>タイピングゲーム(単語そのものが敵だったり，打ち込んだ単語で攻撃したり)</li>
</ul>

<p>言語・プラットフォームは不問</p>

<p>特にこだわりがなければ
Unity/C#がおすすめ</p>

<p>プログラミングがまだできない，かけないっていう人は
Unityのチュートリアルや
コンソール型(ターミナルで出力するタイプ)の対話型ゲーム(チェスやオセロなど)がおすすめ</p>

<p>とにかく何か一つのものを一人で作ってみようっていうのが今回の一番の目的です</p>

<p>作ったものを発表するとかは特に考えてはいませんがGitやドライブにあげて他の人にやってもらうのは全然ありです．</p>]]></content><author><name>SKsan</name></author><summary type="html"><![CDATA[計算研 2 Week Game Jamみたいなのやろう]]></summary></entry><entry><title type="html">新入生の方へ ～計算研究会のご紹介～</title><link href="https://www.calc.mie.jp/2020/02/29/calc-introduction.html" rel="alternate" type="text/html" title="新入生の方へ ～計算研究会のご紹介～" /><published>2020-02-29T00:00:00+00:00</published><updated>2020-02-29T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2020/02/29/calc-introduction</id><content type="html" xml:base="https://www.calc.mie.jp/2020/02/29/calc-introduction.html"><![CDATA[<p><strong>計算研究会</strong>という大層な名前を聞くと、どうしても敷居が高いサークルに思えてしまいます。しかし現実にはコミュニティとしてのとっても<strong>ゆる～い集まり</strong>です。</p>

<p>そこで、計算研究会の活動と雰囲気を正しく知ってもらうためにこのページを作りました。</p>

<p>是非サークルに興味がある方は読んでいただければと思います。</p>

<h2 id="1-なんで計算研究会">1. なんで「計算研究会」？</h2>
<p>この名前ゆえによく次のような勘違いをされます。</p>

<p>「計算研究会ってそろばんか何かをしてるサークルでしょ？」</p>

<p>違います。<strong>暗算を習得するそろばんサークルではありません</strong>。</p>

<p>“計算”というのは<strong>コンピュータ</strong>を意味する「計算機」や数学理論の「計算理論」などから来ています。例えば三重大学の電気電子工学におけるコンピュータに関する研究室は「計算機工学研究室」です。決して速く暗算をする場所ではありません。</p>

<p>そもそも、計算研究会の源流はパソコン/プログラミング/数学好きの人の集まりとしての「コミュニティ」でした。</p>

<p>そして、「数学」「Linux(パソコン関連)」「競技プログラミング」など、それぞれの趣味をまとめて説明する単語は何かと考えた時に「<strong>計算研究会</strong>」という名前が誕生したのです。(計算理論など、理論面で計算という言葉は数学的な側面を持っています)</p>

<p>今でも同じような趣味を持つ人々のコミュニティという側面が強いです。</p>

<h2 id="2-活動内容は">2. 活動内容は？</h2>
<p>先程も話したように、基本的には同じ趣味の人が集まったコミュニティなので普段は<strong>作業会</strong>という形で活動しています。</p>

<p>作業会とは言いますが、これは活動に参加したい人だけが同じ部屋に来て、雑談したり、開発したり、議論したり、ゲームしたり、ボードゲームしたりします。</p>

<p>何をしても良いですし、みんなでまとまってやる必要も無いです。</p>

<p>お祭りのような特別なイベントとして、あまり顔を出さない計算研究会のメンツも集まるものが3つあります。</p>

<ul>
  <li>
    <p><strong>ICPC(大学対抗国際プログラミングコンテスト)</strong>　<strong>競技プログラミング</strong>という分野で、3人1組のチームを組んで参加します。
一大学から複数チームが参加出来るので、普段は来ない人々も集まってワイワイと出場しています。(当然参加は自由です)</p>
  </li>
  <li>
    <p><strong>学祭コンテンツ制作</strong>　毎年私達は学祭にコンテンツを出していて、2019年度はVRゲームを制作しました。Unityを用いて1から作っていきましたが、とても楽しかったですし、とても楽しんでいただけました。(最後はデスマーチと化しましたが……)(これも参加は自由ですし、自分で勝手に作って来て展示しても良いです、それはプロですが)</p>
  </li>
  <li>
    <p><strong>式年遷宮</strong> これは多くの人が集まるわけではありませんが、今見ているこの計算研究会のホームページを始めとするサービスについて、計算研究会で保有するサーバーを構築し直します。伊勢神宮で20年に一度行われる社などの建て替えになぞらえてこの名前がついています。</p>
  </li>
</ul>

<h2 id="3-活動の強制の具合と費用は">3. 活動の強制の具合と、費用は？</h2>
<p>集まっている人が数学/情報好きのオタクということもあって、当然朝は弱いですし、みんな強制されたくありません。</p>

<p>なので、ほぼ活動を強制することはありませんし、会費なども今の所ありません。というのも、サーバーの維持に月々1500円くらいかかるのですが、たまに投げ銭をするだけでまかなえているので、強制はしていません。もし余裕があったら投げ銭のときに数百円くらい投げてくれれば嬉しいです。</p>

<h2 id="4-このサークルに入ると何が嬉しいかというと">4. このサークルに入ると何が嬉しいかというと</h2>
<p>「先輩や同期が頭良い！」ってなったり、同じ趣味の人と話が合うので楽しいですよ！</p>

<p>また、意識が高い(褒め言葉)人たちとお話が出来ます。(さてここで自分を顧みましょう……)</p>

<p>あと先輩には頭の良い人などが多いので、1を質問すると100を答えてもらえます。</p>

<p>1年生「flowさんー！自然数構成してくださいー！」
3年生「まずですね～」
1年生「ヾ(<em>´∀｀</em>)ﾉｷｬｯｷｬ」
みたいなことが出来ます。(だいぶ誇張しました)</p>

<p>誰かが何か質問すると、数時間そこから生える疑問や教えたいことのお話が続くのでとても楽しい時間を過ごせます。(頭は疲れますが)</p>

<p>また、本当にどうでもいいことについてどうでも良い議論をしたりします。最近では「エモい」を超真面目に考察していました。</p>

<p>多くの人がコンピュータ関連の幅広い知識や高い知的好奇心を持っているので、1年生からここに来ていれば、より多くの「専門」的なことを知ることが出来ます。(私がそうでした)</p>

<p>それに、このサークルでは来る必要もありません。というか毎回作業会に来る人は会員の3割もいない気がします。
しかしそこは情報系サークルです。みんなTwitterでつながっていて、ICPCなどのイベントで顔を合わせたりします。(いつ来ても良いですよ～)</p>

<p>また、それぞれの分野でそれぞれが好きなことをしているので、そのお話を聞くだけで知らなかった世界に触れることができます。例えば、このサークルに入るまで競技プログラミングという世界を知りませんでしたが、初めて見ると楽しいものでした。(まだまだ初心者ですが)</p>

<p>それと、学部1年から院生まで幅広くいるので、いろんな機会で研究室にお邪魔したり出来ます。実はわたしは電気電子工学ですが、情報工学の研究室にお邪魔することの方が数十倍多いです。</p>

<p>サークル内で「こんなサービス作りたいです！」っていうのを考えて、一緒にやりましょうっていう人がいれば色々な分野のことを始められます。</p>

<p>最近ではCTF(Capture the Flag)という情報セキュリティの分野について何人かが始めたりしています。(私も始めましたがまだまだ初心者です)</p>

<h2 id="5-どうやって入ればいいの">5. どうやって入ればいいの？</h2>
<p>正直これ、わかりません。(サークル自体の存在がふわっとしているので)</p>

<p>正式な「加入」はサークルの名簿届けの時に名簿に記入すればOKです。</p>

<p>っていうか、いつでも、新入生じゃなくても来てください。さっきも言ったように<strong>趣味を共通する人のコミュニティ</strong>なので。</p>

<p>パソコンに詳しくなくても大丈夫ですよ～、ここにいるだけで詳しくなってしまいますから……。</p>

<p>また、活動情報についてはTwitterを確認してください。</p>

<p>今のところ申し訳ないのが、作業会はあくまで作業会なので、やることを持ってきていないと手持ち無沙汰になってしまうかもしれません……。議論が熱くなり数学を教えてもらう会などになっている時は、作業なんてほっぽかしてお話をしていますが。</p>

<p>この「作業することない問題」については計算研でもたびたび議論があり、「みんなで何かをするプロジェクトを稼働させたいね」っていうお話が上がっています。具体的には「みんなでウェブページ作ったりしてみたいね」といった感じです。</p>

<p><strong>2020/04/21 追記</strong>
また、2020/04/21現在、新型コロナウイルスの感染拡大を防ぐ意図で、サークルの新歓活動等の中止が通達されていますので、私達から新歓活動を行うことはありません、ごめんね！</p>

<p>感染症を封じ込め、活発的に活動出来るようになった時にきっと勧誘をさせて頂くので、今はじっと家にこもって勉強をしましょう…！</p>

<h2 id="6-実際に作業会って何してんの">6. 実際に作業会って何してんの？</h2>
<p>実際にみんな何をしてのかなっていうのを紹介しておきます。</p>

<ul>
  <li>
    <p><strong>AtCoder(競技プログラミング)</strong>
今サークルにおいて一番の勢力を持つ分野がこれです。競技プログラミング、最初は私も名前に圧倒されてしていなかったのですが、これはやってよかったと思っています。「データ構造とアルゴリズム」という情報工学の非常に重要な1分野を体得でき、またプログラミング力がぐっと上がります。強い先輩も多いので、指南を受けられます。</p>
  </li>
  <li>
    <p><strong>Unity(学祭)</strong>
学祭になるとだいたいゲーム開発プロジェクトが立ち上がります。複数人でのチーム開発を通じて設計などを学べたらしいです。(院生1年の先輩が設計・開発を主導しました)</p>
  </li>
  <li>
    <p><strong>数学</strong>
定期的にお話しています。数学基礎論に興味がある先輩がいたりしています。</p>
  </li>
  <li>
    <p><strong>CTF (Capture The Flag)</strong>
情報セキュリティに関する分野で、どこかに隠されたflag文字列をあの手この手を使って探します。
リアル謎解きゲームや高度ななぞなぞをしている感じです。初心者しかいませんが「たのし～」って言って最近やったりしています。</p>
  </li>
  <li>
    <p><strong>ボードゲームとか遊ぶやつ</strong>
具体的にはホワイトボードを使った「リアルお絵かきの森」とか、「ハイパーロボット」とか色々やったりしています。実質計算研ボードゲーム支部かもしれません。(後述)
リアルお絵かきの森では、絶対サークル外の友達には伝わらないだろうお題がバンバン飛んできました。難題「乱数調整」は解き切るのに20分くらいかかりました。</p>
  </li>
  <li>
    <p><strong>Linuxで遊ぶ人</strong>
Arch Linuxを推す人々がいます。(これは最も基本的で、自分で構成しないといけないLinuxの一つです。)
正直このLinuxを入れて遊んでる人々を楽しそうだなあと尊敬していますが、苦手な分野なので変態(褒め言葉)だなあと思ってみています。</p>
  </li>
  <li>
    <p><strong>化学</strong>
たまにやっています。人が多くはありませんが、詳しい人がいて議論していることがあります。</p>
  </li>
</ul>

<h2 id="おまけ支部って何">おまけ、支部って何</h2>
<p>計算研究会はコミュニティなのですが、このなかで更に小さい特定の趣味を持つ人の集まりを支部ってよんだりしています。(特に意味はありません)
活動の一部としてご紹介しておきます。</p>

<ul>
  <li>
    <p><strong>計算研発声支部</strong>
むちゃくちゃカラオケがうまい人達がカラオケに行くことです。より高い得点を取るためにたまにカラオケに遊びに行ってるみたいです。(実は私はこの人達のカラオケを聞いたことが無いので聞いてみたいです)</p>
  </li>
  <li>
    <p><strong>計算研プリパラ支部</strong>
オタクサークル計算研にはプリパラというアニメが好きな人が一定数います。この人達がプリパラについて話しているときは実質この支部です。別に特段な活動はしていませんが、なぜかプリパラ支部と呼ばれています。(ある意味研究室で院生の人々がプリパラを見ているのをこう呼んでいるかもしれません)</p>
  </li>
  <li>
    <p><strong>計算研三頭勉強会支部</strong>
「専門書を読むのは辛い、そうだ、人に読ませて教わればいいんだ！」っていう発想のもと、3分野について3人がそれぞれ勉強してきて教え合いましょうという勉強会をやってみました。
「統計用プログラミング言語 R」「群論入門」「有限オートマトン(計算理論)」について完全初心者の3人が勉強してきて、毎週上辺だけですが紹介していました。
来年度もやっていくかは未定ですが、勉強会はしたいなと思っています。</p>
  </li>
</ul>

<h2 id="7-どんなひとがやってるのか2020年度">7. どんなひとがやってるのか(2020年度)</h2>

<p>計算研究会は往々にして外から見えにくい場所で活動しており、内情が見通しづらいサークルなので、ここでは計算研究会のコミュニティを一部紹介します。</p>

<ul>
  <li>
    <p><a href="https://twitter.com/calc_mie">計算研究会公式@calc_mie</a>
まずは公式のTwitterです。サークルの情報発信をしています。</p>
  </li>
  <li>
    <p><a href="https://twitter.com/__dielsalder__">ふくぶちょー@__DielsAlder__</a>
2019年度会長、「ふくぶちょー」さんです。
化学徒ですが、数学や競技プログラミングなどを主にされています。</p>
  </li>
  <li>
    <p><a href="https://twitter.com/sakaiine">さからっしゅ@sakaiine</a>
この記事を書いた人です。電気電子工学生ですが、情報と法律に興味がある人です。
関数型言語をかじったり、マイクラのサーバーを建てたり、少しだけ競技プログラミングをしたりしています。気軽に絡んで貰えれば…！</p>
  </li>
</ul>

<h2 id="8-どこで活動してるのか">8. どこで活動してるのか</h2>
<h3 id="discord">Discord:</h3>
<ul>
  <li>2019年学祭のVRゲーム開発のために作成したDiscordサーバーが主な活動場所となっています。</li>
</ul>

<h3 id="slack">Slack</h3>
<ul>
  <li>Slackも利用しています。情報工学科のSlackを間借りしているものと、独自で作ったものがあります。近いうちに整理しそうです。というかしたいです。</li>
</ul>

<h3 id="最後に">最後に</h3>

<p>今回は「敷居が高い」と敬遠されやすく、誤解の生みやすい計算研究会の活動を紹介しました！</p>

<p>私達の活動に、少しでも興味や関心を持っていただければ幸いです。</p>

<p>勧誘についてですが、新型コロナウイルスが収束し、活動が出来るようになれば私達”らしい”勧誘イベントをするかもしれません。しないかもしれません。(怠惰ですごめんなさい)</p>

<p>活動については計算研究会のツイッターで紹介しますので、是非ご確認ください～。</p>

<p>新型コロナウイルスが怖い所ですが、幸い私達の分野は家である程度勉強が出来そうです、一緒に「#STAY HOME」で精進をしていきましょう！</p>]]></content><author><name>sakarush</name></author><summary type="html"><![CDATA[計算研究会という大層な名前を聞くと、どうしても敷居が高いサークルに思えてしまいます。しかし現実にはコミュニティとしてのとってもゆる～い集まりです。]]></summary></entry><entry><title type="html">ICPC2019に出場しました</title><link href="https://www.calc.mie.jp/2019/07/23/icpc2019.html" rel="alternate" type="text/html" title="ICPC2019に出場しました" /><published>2019-07-23T00:00:00+00:00</published><updated>2019-07-23T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2019/07/23/icpc2019</id><content type="html" xml:base="https://www.calc.mie.jp/2019/07/23/icpc2019.html"><![CDATA[<p>2019年7月12日に&lt;a href=https://icpc.iisf.or.jp/&gt;ICPC(国際大学対抗プログラミングコンテスト)&lt;/a&gt;に出場しました。</p>

<p>unlimited nya-nがアジア大会に出場します!&lt;a href=http://www.info.mie-u.ac.jp/news/2019-1.html&gt;三重大学の記事&lt;/a&gt;</p>]]></content><author><name>管理者</name></author><summary type="html"><![CDATA[2019年7月12日に&lt;a href=https://icpc.iisf.or.jp/&gt;ICPC(国際大学対抗プログラミングコンテスト)&lt;/a&gt;に出場しました。]]></summary></entry><entry><title type="html">calc-tweetの使い方</title><link href="https://www.calc.mie.jp/2019/05/17/calc-tweet-guide.html" rel="alternate" type="text/html" title="calc-tweetの使い方" /><published>2019-05-17T00:00:00+00:00</published><updated>2019-05-17T00:00:00+00:00</updated><id>https://www.calc.mie.jp/2019/05/17/calc-tweet-guide</id><content type="html" xml:base="https://www.calc.mie.jp/2019/05/17/calc-tweet-guide.html"><![CDATA[<p>計算研究会の連絡は主にslackとtwitterで行われています.これらの連携やcalc-webの投稿を二つのSNSに連絡,告知するアプリを作成しました.使用言語はHaskellです.</p>

<p><a href="https://github.com/calc-mie/calc-tweet">ソースコード</a></p>

<p>twitterのcalc_mieというアカウントにDMで以下のコマンドを送ります.ただし権限が必要です(権限の付与については後述).</p>

<h4 id="連絡内容をセットする">連絡内容をセットする</h4>
<h5 id="入力形式">入力形式</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $notice 「連絡したい内容」
</code></pre></div></div>
<p><code class="language-plaintext highlighter-rouge">[連絡]「連絡したい内容」</code>という文字列がメッセージの先頭に配置されます.</p>

<h4 id="日付時間場所をセットする">日付,時間,場所をセットする</h4>
<h5 id="入力形式-1">入力形式</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $date [-(数字)] 「日付」
 $time [-(数字)] 「時間」
 $locale [-(数字)] 「場所」
</code></pre></div></div>
<p>第一引数の数字の一致するもので<code class="language-plaintext highlighter-rouge">「日付」 「時間」＠.「場所」</code>という文字列が配置されます.
入力されない場合は空白になり,場所の後に空白が入ります. [-(数字)]がない場合は1とされます.
入力が重複された場合は最新のデータを採用します(入力例を参照してください).</p>

<p>また,日付と時間がセットされた場合,一番早く始まる時間にtwitter側で一時間前にリツイートされます.</p>

<h4 id="連絡内容をpostする">連絡内容をPOSTする</h4>
<h5 id="入力形式-2">入力形式</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $post
</code></pre></div></div>
<p>セットした文字列をtwitterとslackにpostします.<code class="language-plaintext highlighter-rouge">$notice</code>をしていないとpostされません.</p>

<h4 id="今までの入力をリセットする">今までの入力をリセットする</h4>
<h5 id="入力形式-3">入力形式</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $clear
</code></pre></div></div>
<p>セットした文字列を一からの状態に戻します.</p>

<h4 id="calc-webの更新の通知をpostする">calc-webの更新の通知をPOSTする</h4>
<h5 id="入力形式-4">入力形式</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $post-calc-web 
</code></pre></div></div>
<p>calc-webを投稿して完成したらこれを送ってください(もしくは権限を持っている人にお願いしてください).</p>

<h4 id="利用権限を渡す">利用権限を渡す</h4>
<h5 id="入力形式-5">入力形式</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $useradd 「アカウント(twitterのid)」
</code></pre></div></div>
<p>引数にしたアカウントに使用権限を与えます.</p>

<h4 id="プレビューをdmに出力する">プレビューをDMに出力する</h4>
<h5 id="入力形式-6">入力形式</h5>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $print
</code></pre></div></div>
<p><code class="language-plaintext highlighter-rouge">$post</code>したときにどのような出力になるかをDMで確認できます.</p>

<h2 id="入力例">入力例</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$notice post test
$date 5/15(水)
$notice これはテストです.
$time 10:30~11:30
$locale 電算
$time -2 10:40
$locale -3 電算
$date -2 5/16(木)
$date 5/16(木)
$post
</code></pre></div></div>

<h2 id="出力例">出力例</h2>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[連絡]
これはテストです.
5/15(木) 10:30~11:30 ＠.電算
5/16(木) 10:40
 ＠.電算
</code></pre></div></div>

<h2 id="つくってみて">つくってみて</h2>
<p>つらかった.
先人の知恵をたくさん借りて作成したので与えられる側になれたらいいなぁと思います.</p>

<h3 id="参考文献">参考文献</h3>
<ul>
  <li><a href="https://techracho.bpsinc.jp/jhonda/2017_12_18/49797">https://techracho.bpsinc.jp/jhonda/2017_12_18/49797</a></li>
  <li><a href="https://qiita.com/kentahama/items/261c9c86d02161680933">https://qiita.com/kentahama/items/261c9c86d02161680933</a></li>
</ul>]]></content><author><name>flow_6852</name></author><summary type="html"><![CDATA[計算研究会の連絡は主にslackとtwitterで行われています.これらの連携やcalc-webの投稿を二つのSNSに連絡,告知するアプリを作成しました.使用言語はHaskellです.]]></summary></entry></feed>