Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

WebXRでポートフォリオを作ろう/Let's make your portfolio with WebXR!
各大学のコンパイラの講義資料を集めました また、コンパイラ関連の書籍も載せておきます 講義資料 ・京都大学 http://www.fos.kuis.kyoto-u.ac.jp/~umatani/le4/mainSlides.pdf ・東北大学 http://www.pllab.riec.tohoku.ac.jp/education/lectures/compiler/compiler.html ・近畿大学 http://www.info.kindai.ac.jp/compiler/ ・筑波大学 http://www.hpcs.cs.tsukuba.ac.jp/~msato/lecture-note/comp-lecture/comp-lecture-note-v1-1.pdf ・慶応大学 http://www.sakurai.comp.ae.keio.ac.jp/classes/2012C
コードレビュー、これまでいろんなプロジェクトで経験して、意外と使われていないノウハウがあったり、風習が違ってつらみがあったりしたので、いろいろまとめてみる。 指摘事項について よくある話 - 駄目コードを憎んで人を憎まず。駄目なのはコードであって人格じゃない - 指摘する人は人格攻撃せずにコードのどこが悪いのかを指摘しましょう - 指摘される人も、言われているのはコードの問題であって人間の問題じゃないので、素直な心で受け止めよう この辺はみんな知ってると思うので略。ぼくが思う大事なルール コードレビューで指摘された内容は、対応必須ではない 理由: 対応必須にすると、「これ言ったらリリースできなくなるよね」みたいな忖度が発生してコメントできない人が出現するから。 絶対ダメとは言わないけど、あまりよくはない、みたいな指摘については、そのときは急ぐからリリースするけど、次回から気をつけるとかがあ
前書き サイゼリヤ1000円ガチャをつくってみた(Heroku + Flask + LINEbot) 「サイゼリヤで1000円あれば最大何kcal摂れるのか」を量子アニーリング計算(Wildqat)で解いてみた。 完全に二番煎じですが、古典コンピューターが好きなので、個人的に古典コンピューター最強のなんだかよく分からないけどよく分からないものをよく分からないうちに解いてくれるソフト、z3を使ってサイゼリア問題を解いてみました。 問題 サイゼリヤのメニューを重複無しで合計1000円以下になるように選んだときに、最大の総カロリーになるようなメニューの組み合わせを求めよ。 サイゼリヤのメニューは https://github.com/marushosummers/Saizeriya_1000yen こちらを使わせて使わせて頂きました。メニューは100種類ぐらいみたいで、カロリーは整数値で、プロコ
こんにちは、ほけきよです。 趣味の開発でバグがみつかり、学びがあったので備忘録として! 感心をした話 なんで感心した? 反省をした話 まとめ 感心をした話 先日、開発していたコードの中に、バグが紛れ込んでいるのを発見してしまいました。 gitで細かくコードの進捗を管理していたので、どこで紛れ込んだのかわからなくなってしまったのです。 100コミットくらいしていたので、どこに間違いがあるか、わかりません。 幸い、近くに超絶優秀な友人がいたので、相談しました。友人は、 友「そういうわからないときは、二分探索が良いんじゃない?log(N)で見つかるし」 と言いました。 なるほど確かにそうすれば高々7回で見つけられるわけだ。図を見ても分かる通り、序盤は驚くほどすばやくバグの範囲を絞れていく。 私「うーんでも、この辺にあると思うんだよねぇ」 友「いや、こういうときは愚直に調べたほうが早いよ。そうしよ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? わたしはOSSとして公開されているGitHubのリポジトリに貢献することがあるのですがいつも困っていることがあります。私がPRをオープンするとめっちゃコメントがついて、それを修正するのにすごく時間がかかることです。そういえば私の元同僚のピーターは生まれて初めて新しい言語で書いたPRですら一発でマージされていて驚いた覚えがあります。どうやったらプルリクエストが最速でマージされるのか?インターネットを調べても情報がなかったので、自分で調べてみることにしました。ちなみにこのポストは、私自身が書いたHow can you get your PR
Wikipediaの特定カテゴリー配下のページをすべて取得するためには、整理されていないグラフデータ特有のいくつかの問題に向き合う必要があります。 一つは、Category:カツラ科と糸井の大カツラのように、サブカテゴリーにはページへのリンクが含まれているが、カテゴリー本体にはページへのリンクが含まれていないケースがあるという問題。 もう一つは、Category:インフォグラム・エンターテインメントームソフトとCategory:アタリのゲームソフトのように、お互いがお互いのサブカテゴリーに含まれてしまっているケースがあるという問題です。 これらの問題は、以下の手順を踏むことで解決できます。 カテゴリーにリンクされているページだけでなく、サブカテゴリー内のリンクを順にたどって含まれるすべてのページを収集する ただし、一度たどったカテゴリーに再度到達した場合、それ以上はそのルートを探索しない
Hacker NewsとRedditでバズっていたPythonのデバッグツールが便利だったので紹介です! PySnooperというライブラリです。 Hacker News - PySnooper: Never use print for debugging again Reddit - PySnooper: Never use print for debugging again ※追記 想像以上にたくさんの方に読んでいただき、printデバッグなど他のデバッグ方法との比較について追記として文末に補足しました。釣りタイトルですみませんでした…🙇 何ができるライブラリか 一言で言うと「デバッグがめちゃくちゃ簡単にできるライブラリ」です。 github.com 例を見たほうがわかりやすいと思うので見てみましょう。 インストールは pip で行えます。 pip install pysnooper
個人的に、一番面白いデータ構造であり探索アルゴリズムです。 ここで言うグラフは円グラフや、棒グラフのことではないです。プログラミングで扱うのは、図のように、点と線を繋げたものです。 ズバリ、人と人の繋がりを表現できます。 今回もJavascriptで実装します。 グラフ理論は、SNSだったり、レコメンドだったり、地図の経路だったり ルーティングだったり、点と点の繋がりを可視化します。繋がりを表現するデータ構造です。 巨大なインターネットもそうです。 そいう意味で、すごく身近なアルゴリズムですよ。 グラフの基本は次の2点で構成されています。 ・ノード:node(vertex) - 点(人、物、場所) ・エッジ:edge - 辺(繋がり、経路) 上の図を見ると一目瞭然ですね。ノードを人だとしたら、エッジが関係性です。まずは、これだけ理解できれば大丈夫です。 ちなみに、方向がない辺を無向グラ
「TypeScript」とは、JavaScriptに「型」を指定できるオープンソースのプログラミング言語です。型によりプログラム実行前にエラーを見つけ出すことができるため、大規模なプロジェクトを安全に開発できます。Microsoft社製で、多くのフロントエンドエンジニアに採用されています。 TypeScriptのモダンなビルド環境を作るためにはwebpackやGulp.jsがよく使われていますが、設定ファイルが必要で学習コストは高めです。「TypeScriptのビルド環境がほしいだけなのに、なぜツールの設定に時間をとられるのか?」「TypeScriptを始めるときに苦労したくない」と思っている人も多いのではないでしょうか? 「Parcelパーセル」というツールを使うと、独自の設定ファイルを使うことなくTypeScriptのモダンなビルド環境がわずか3ステップで作れます。 ▼ TypeScr
はじめまして, niuezといいます. 競プロを少ししています. 最近勉強したことのメモ書きをしておきます. ダイクストラ法 ダイクストラ法(Dijkstra)は負の長さの無いグラフで始点からの最短距離を求めるアルゴリズムです. 具体的には 距離が未確定の頂点の中で一番小さいものを選び, 距離を確定させる. 選んだ頂点から距離が未確定の頂点に伸びる辺で, 未確定な距離をより短いものに更新する. を繰り返します. これを実装すると $O(N)$ですが, よく知られるダイクストラの計算量は $O((E+ V) \log E)$ です(heapとかを使う). #include <set> #include <queue> #include <vector> struct edge { int u,v; int dist; }; std::vector<int> dijkstra(const st
κeenです。たまにお薦めコンパイラの本教えてなどのやりとりをTwitterで見かけるのでまとめておきます。 私の主観が入っているので他の方の意見も参考にして下さい。 普通の入門書三書 よく挙げられるのは通称「ドラゴンブック」、「タイガーブック」、「中田先生の最適化なんちゃらの本」です。 このうちのどれかを読むと良いでしょう。 こういう教科書系の本によくあることですが、本だけでなく挙げられている参考文献の情報も重要なので読み終わっても売らないで本棚に残しておくことをお薦めします。 コンパイラ[第2版]~ 原理・技法・ツール ~ いわゆるドラゴンブックです。結構古くからある本です。前半が構文解析の理論で、後半でコンパイラ関連の技法などが載っています。 割と技法の紹介が多く、幅は広いですがそれぞれの説明に割かれた紙面は小さいです。 章分けが雑なので目次だけで内容を判断せず、手にとって確かめたほ
釣りタイトルだと思った皆さん、残念ながら本記事は釣り記事ではありません。 安心して読み進めてください。 「強くなりたいです。どうやったら強くなれますか?」 恐らく情報系の多くの人が抱えている疑問なのではないでしょうか。 「I know everything」みたいに言える人って中々いないですよね。 ちなみに、僕も強くなりたいです。 どうやったら強くなれるんでしょうね。もし強くなれる方法があったら知りたいですよね。 そもそも強さって・・・何だ? そもそも論で行くと、「強くなりたい」とだけ言うのは少し微妙で、どのように強くなりたいか、という具体的なイメージがあった方が良いのではないかとは思うのですが、まあそんな事を思う人は恐らくこのブログを読んでいない事でしょう。 なのでこちらで「強さとは何か」を邪推してみるわけですが、このページを読んでいらっしゃる中高生の皆さん的には、「周囲にドヤれる、tw
はじめに コードは理解しやすくなければいけない。 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) 作者:Dustin Boswell,Trevor Foucher発売日: 2012/06/23メディア: 単行本(ソフトカバー) コードの保守性や可読性を高めるために我々エンジニアはどんなことができるでしょうか? テストを書く 推奨されているコードスタイルに準拠する コメントを書く DRY原則に則る 変更・拡張しやすく設計する ログを出力する・監視する 適切な命名をする etc... まだまだ意識すべきことはあると思いますが、上記の項目はエンジニアであれば恐らく一度は目にしたことがあるような内容であり、暗黙的に了承されたいルールです。 しかし、これらはただの心構えであり、体現するために実際には以下のような項目に落とし込む必要
JJUG CCC 2018 Fallのいくつかのセッションで型についての話があったので書きたくなった。 この話はJavaやScalaみたいな静的型の世界の思想で、多分Rubyとかでは違う思想だとおもう。 Javaを書いてるときのおれきゅーの脳内 型を定義して取りうる値を狭めることで 間違った使い方ができないようにする ことを最初に考えてる。多分。防御的プログラミングってやつなのかな?しらんけど。 とにかくエラーはより早いタイミングで見つかるほうが良くて、実行時よりコンパイル時にわかるほうが便利だし、コンパイル時よりエディタ上でリアルタイムに分かるほうがもっと良い。 たとえば汎用的な型を使うとこんなミスがあり得る。 long id = 10; new User(id); new Item(id); 静的型なら多分こうかけるほうが間違えなくて嬉しい。 Id<User> id = Id.of(1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く