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

個人的に、一番面白いデータ構造であり探索アルゴリズムです。 ここで言うグラフは円グラフや、棒グラフのことではないです。プログラミングで扱うのは、図のように、点と線を繋げたものです。 ズバリ、人と人の繋がりを表現できます。 今回もJavascriptで実装します。 グラフ理論は、SNSだったり、レコメンドだったり、地図の経路だったり ルーティングだったり、点と点の繋がりを可視化します。繋がりを表現するデータ構造です。 巨大なインターネットもそうです。 そいう意味で、すごく身近なアルゴリズムですよ。 グラフの基本は次の2点で構成されています。 ・ノード:node(vertex) - 点(人、物、場所) ・エッジ:edge - 辺(繋がり、経路) 上の図を見ると一目瞭然ですね。ノードを人だとしたら、エッジが関係性です。まずは、これだけ理解できれば大丈夫です。 ちなみに、方向がない辺を無向グラ
WebAssemblyが50マイクロ秒以下で起動する「Lucet」。コンパイラとランタイムをFastlyがオープンソースで公開 WebAssemblyとは、Webブラウザ上でネイティブコードに近い実行速度で高速に実行できるバイナリフォーマットです。 マイクロソフト、Google、Mozilla、AppleなどのWebブラウザベンダがW3CのWebAssembly Community Groupなどを通じて共同で開発に取り組んでおり、すでに主要ブラウザで実行環境が整っています。 Lucetは50マイクロ秒でWebAssemblyモジュールが起動 LucetはこのWebAssemblyをWebブラウザではなく、Fastlyのエッジクラウドで高速かつ安全に実行する目的で開発されたもの。 しかも50マイクロ秒(1マイクロ秒は100万分の1秒)以下でWebAssemblyモジュールが起動し、メモリオ
こんにちは! 開発部の武内です。 Webフロントエンドの開発はここ数年で急激に高度化していますが、 それを大きく後押ししている一因にブラウザ付属の開発ツールがあります。 Chrome、Firefox、Edge、Safariなどに付属していますが、どれも非常に高機能です。 Webフロントエンドエンジニアで使っていない方はいないのではないでしょうか。 グラフィカルなデザイン調整 コードのステップ実行 通信のロギング etc… 今回、Chrome 59のアップデートでCSS/JavaScriptのカバレッジ機能が追加されたので試してみました。 CSS and JS code coverage What’s New In DevTools (Chrome 59) Find unused CSS and JS code with the new Coverage tab. When you load
今回のテーマ Webパフォーマンスを改善する上で知っておきたい知識をまとめてみました。 前回の記事では使わなかった(使えなかった)技術や方法なども含めて記載します。 また、ブラウザのレンダリングなどについても書きたいと思います。 (2019年5月23日追記) 過去の記事はこちら How to 速度改善 ー計測・知識編ー How to 速度改善 ー原因調査編ー How to 速度改善 ー実装&技術調査編1ー 1. ブラウザレンダリングの仕組み 推測するな、計測せよ という言葉にあるように、闇雲にチューニングを初めても良い結果は出ません。まずはブラウザレンダリングの仕組みからみていきましょう。 ブラウザレンダリングの流れ レンダリングの大まかな流れは Loading→Scripting→Rendering→Painting(これでページが表示される) となっています。 この処理の内容をフレーム
「30分でわかる」のは、だいたい、 4. モナド(Monad)とは何か? の読了までを想定しています。 また速い人なら、30分で全部一気に読み通せる分量でもあると思います。 30分以上かかっても一気読みしてしまうことが推奨されますし、一気読みできるように、前に戻って知識の再確認をしなくて済むように、最大限留意して構成を設計した上で執筆されています。 数学と用語問題。モナドの理論的基盤として圏論があるのは事実。理論的基盤がしっかりしているのはプログラミングという数学的作業において歓迎すべきことではある一方で、他方そのため一般的なプログラマにとってはまず用語に馴染みがない。歴史的に、圏論ベースのモナドを理論から関数型プログラミングに応用されていく過程では、実際、先駆者の間でさえ紆余曲折があったのだが、学習者へは馴染みのない用語を伴って、いきなり高度な数学的概念全開で天下り的に提示されてしまうこ
エンジニア不足と言われて久しいですが、できる経験者を採用するのはますます難しくなっていますね。 そんななか、弊社ではひょんな縁からエンジニア未経験の新人をエンジニアとして採用することになりました。未経験とはいえ、弱小企業の弊社には悠長に育てている余裕がないため、7日間で現場投入を目指してカリキュラムを組みました。 だいたいうまくいったので、メモがわりに晒しておきます。 前提条件 誰でも7日間でエンジニアになれると言っているわけではありません。あくまで一例として捉えていただければ幸いです。 担当してもらう予定の領域 HTML/CSS コーディング JavaScript はそこそこで(動きのエフェクトやカルーセルを仕込める程度) concrete5 テーマの開発(PHPファイルに foreach を入れていくイメージ、WordPress と変わらない) 流石にアプリケーション開発で7日間は無理
レコメンド(推薦システム)に関して素晴らしい記事があったので訳してみました。訳に難があるが、そこはご勘弁ください。 プログラム実行してみると理解できると思います。入門者に打って付けの記事です。 以下、本文。 インターネットの世界はレコメンドで溢れていますね。 Amazonのように商品を購入するeコマース・サイト、Facebookのようなソーシャルネットワーク、YoutubeやNetflixのようなビデオ/映画サイトなど。これらのサイトに共通するのは、あなたに新しいものを推薦するために、映画、商品と友人などの過去のデータを使うことです。 この記事では、レコメンド機能がJavaScriptで、どのように動くか簡単に紹介します。推薦システムを実現するための、異なるアプローチも見ていきます。最終的にはアルゴリズムを切り替えただけで、結果を出力できるようにします。映画評論家の小さいデータセットと、M
個人的に今まで JavaScript を書いてて陥った失敗例などを振り返ってみました。 この記事にあるいくつかの失敗例については恐らく殆どの方が経験してるのではないかなと思います。 これから JavaScript 勉強するぞ!!という方や、現在進行形でこのような失敗に陥っている方の助けになれば幸いです。 コードの解説に関しては簡潔に行なっているので、気になった方はググってください。 DOM の取得及び操作 要素を取得して is-close なスタイルを付与したい。 しかし、エラーになってスタイルを付与できない // 失敗例 const hoge = document.getElementsByClassName('hoge'); hoge.classList.add('is-close'); // 正しい例 const hoge = document.getElementsByClassN
印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます 「Python」は最も急速に成長している言語に定期的に選出されているが、一貫して最も人気があるのは「JavaScript」である。 近年、バックエンド開発などの分野でJavaScriptの新たな用途が発見されているにもかかわらず、JavaScriptを使用する作業の多くは今もフロントエンドウェブ開発者によって実行されているようだ。 コードリポジトリサービスのGitHubは今回、2018年に同サービスで新しいオープンソースプロジェクトを最も多く生み出したテクノロジのまとめの一部として、何がJavaScriptの継続的な人気を促進しているのかを明らかにした。 (本記事は、TechRepublic Japanで2018年12月26日に掲載した
Vue.js勉強したメモ。 まずはVue.jsのサイトにあるガイドの「はじめに」をコピペでテスト。そこからちょっとずつ変更を加えていって学んだこと。バージョンはVue.js v2.3.3です。 学んだこと: 例の{{ }}はMustache(ムスターシュ)記法と呼ぶ。 MustacheはHTMLアトリビュート(属性)には使えない。 ループ内からメソッド呼び出しは、わかってしまえば簡単。 クラスの動的変更の便利な方法。 参考ページ: Vue.jsオフィシャルページ:はじめに Qiitaの記事:Vue.jsから手軽に始めるJavaScriptフレームワーク コード(HTMLとJavaScript) <div id="project-list"> active project: {{ active }} <ul> <li v-for="project in projects" v-bind:cl
今回はJavascriptで、ブロックチェーンのデータ構造を実装します。ブロックチェーンのデータ構造を実際に作ってみると、その堅牢性が理解できると思います。nonceを求めるマイニング・アルゴリズムも実装します。 なお、P2Pでノード間で同期を取ったり、コンセンサス・アルゴリズムで合意形成を取るところまでは、実装しませんので悪しからず。 ブロックチェーンは「万能薬」でありません。他のプログラムと一緒で、あくまで、アルゴリズムを効率的に実現するデータ構造です。 分散環境下で、セキュアにデータをもつためのデータ構造とも言えます。 つまり、手段です。導入したからといって、問題が自動的に解決したりしません。 それでは早速、作ってみましょう。実際に作業するファイルは2つです。 mkdir project cd project npm init touch blockchan.js touch tes
MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました 機械学習ではフォーマットの標準化が進んでいます。これまでTensorflowやCaffe、Chainerなど様々なソフトウェアがありましたが、生成されるモデルがONNXというフォーマットに統一されつつあります(他にもあるようですが)。 そんなONNXフォーマットのモデルをビジュアル化できるソフトウェアがNetronです。 Netronの使い方 ドロップしたところです。これは4か9を判別するモデルです。 拡大もできます。 パラメータも閲覧できます。 Netronを使うことでPythonのコードではなく、ビジュアル化されたモデルを通じて機械学習のネットワークを学ぶことができます。各ノードにおける出力の数も出ており、ネットワークの詳細が分かりやすくなるでしょう。 NetronはJavaS
※登場人物等は全てフィクションです。 再就職したワイ 社長「やめ太郎くん」 ワイ「はい」 社長「今うちで開発中のブラウザゲームがあるんやけど」 社長「そのゲームの中に登場するジュースの自動販売機をプログラミングしてくれへんか」 ワイ「ええで」 社長「言語はTypeScriptや」 ワイ「・・・ええで(震え声)」 タイプスクリプト is 何 ワイ「なんやTypeScriptて」 ワイ「JavaScriptの打ち間違いか?」 ワイ「きっとそうやな」 ワイ「誰かがタイプミスで仕様書にTypeScriptって打ち込んでもうたんや」 ワイ「いわばタイポスクリプトや」 ハリー先輩「ちゃうで」 ハリー先輩「知らん言葉が出てきたからって変な妄想で自己解決したらアカンで」 ハリー先輩「なにがタイポスクリプトや」 ハリー先輩「TypeScriptは静的型付けが出来るAltJSや」 ワイ「ほえー、静的な型のある
不正プログラム書き込み疑い補導|NHK 兵庫県のニュース クリックすると同じ画面が表示され、消えなくなる不正なプログラムのアドレスをインターネットの掲示板に書き込んだとして、13歳の女子中学生が兵庫県警に補導されました。 兵庫県警は魔法と科学の区別がついていない。そのようなJavaScriptプログラムには何の問題もなく、問題はそれを閲覧したユーザー側のブラウザーにある。 「クリックすると同じ画面が表示され、消えなくなる不正なプログラム」というのがどのように実装されていたかは知らないが、最も簡単で原始的なものは、アラートを繰り返し表示し続けるプログラムだ。 while (true) alert("Hello") ; このプログラムを実行すると、アラートが繰り返し表示され続ける。ところで、このプログラムを実行しているのは閲覧者のコンピューターとブラウザーだ。このプログラムを提供したものの責任
JavaScriptはそのまま書くのではなく、書いた後に変換して使うケースが増えています。例えばTypeScriptであったり、Babelを使って新しいJavaScriptの仕様を使えるようにする、ReactのJSXを変換するといった具合です。 そんな変換処理は実行速度が命です。遅いと変更するのが面倒になり、更新してからWebブラウザなりで確認するのにも時間がかかってしまいます。そこで紹介したいのがBabelの18倍速いというswcです。 swcの使い方 例えば新しいJavaScriptの仕様であるクラスを使います。 class Foo { set foo(v) { } } class Bar extends Foo { get bar1() {} async bar2() {} } これを変換します。 $ swc index.js そうするとES3スタイルのJavaScriptが出力され
ECMAScriptの浮動小数点数の丸め関数である Number.prototype.toFixed() について調べてみたところ、浮動小数点数をわかっている人が作った硬派な仕様だと感じたので、解説してみます。 浮動小数点数の丸めの善し悪しについて 私はプログラミング言語の浮動小数点数の丸め処理に興味があり、過去に関連記事を30本以上書いています。こうした活動から得られた知見として、良い丸め関数には次のような性質があると考えています。 仕様がシンプルで直感的であること 仕様が抜け漏れなく文書化されていること バグを作り込みにくい仕様であること どれも良い関数の一般論のような話ですが、丸め処理に限って言えば簡単な話ではありません。そもそも浮動小数点数の性質が人の直感に反するため利用者にとっても実装者にとっても罠が多く、結果として上の条件を満たせないことが多いのです(私が面白いと感じるポイント
React は、インタラクティブなユーザインターフェイスの作成にともなう苦痛を取り除きます。アプリケーションの各状態に対応するシンプルな View を設計するだけで、React はデータの変更を検知し、関連するコンポーネントだけを効率的に更新、描画します。 宣言的な View を用いてアプリケーションを構築することで、コードはより見通しが立ちやすく、デバッグのしやすいものになります。 自分自身の状態を管理するカプセル化されたコンポーネントをまず作成し、これらを組み合わせることで複雑なユーザインターフェイスを構築します。 コンポーネントのロジックは、Template ではなく JavaScript そのもので書くことができるので、様々なデータをアプリケーション内で簡単に取り回すことができ、かつ DOM に状態を持たせないようにすることができます。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く