タグ

JavaScriptに関するt-murachiのブックマーク (168)

  • TypeScript再入門 ― 「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に|ハイクラス転職・求人情報サイト AMBI(アンビ)

    TypeScript再入門 ― 「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に JavaScriptプロジェクトTypeScriptを導入する際には、“柔らかい”静的型付き言語とするのがおすすめです。藤吾郎(gfx)さんがまとめた「がんばらないTypeScript」のガイドラインです。 TypeScriptは、すべてのJavaScriptプロジェクトで採用する価値のある技術です。TypeScriptとこれに対応したエディタを導入することで、補完や型ベースの整合性のチェックにより、すべてのプロジェクトで生産性が上がります。またリファクタリングも容易になるので、長期あるいは大規模なプロジェクトでも品質を保ちやすくなります。 この記事では、TypeScriptについて最低限の知識とともに、サクッと(どちらかというと既存のプロジェクトに)導入するための

    TypeScript再入門 ― 「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • JavaScriptの関数名の全て - Qiita

    JavaScriptに限った話ではありませんが、関数というのは名前を持っていたり持っていなかったりします。関数名は普通はプログラムの読みやすさくらいにしか影響しませんが、JavaScriptでは必ずしもそうではありません。 例えばReactで関数コンポーネントを使う場合は関数名がコンポーネント名となり、React用開発者ツールなどで見ることができデバッグに役立ちます。また、Gulp v4もエクスポートした関数名がタスク名となります。 関数名は、関数オブジェクトのnameプロパティで取得できます。 function foo() { console.log('foo!'); } console.log(foo.name); // "foo"

    JavaScriptの関数名の全て - Qiita
  • 「ループURL貼って補導」「Coinhive逮捕」に、“JavaScriptの父”ブレンダン・アイク氏も苦言

    「ループURL貼って補導」「Coinhive逮捕」に、“JavaScriptの父”ブレンダン・アイク氏も苦言 JavaScriptのループ機能を使った“ブラクラ”のURLを書き込んだ3人が摘発され物議。昨年には、JavaScriptを使った仮想通貨採掘プログラム「Coinhive」設置者が逮捕された。これらの事件について“JavaScriptの父”ブレンダン・アイク氏が意見を述べ注目を集めている。 JavaScriptのループ機能を使ってポップアップが繰り返し表示されるサイトのURLを掲示板に書き込んだとして、不正指令電磁的記録(ウイルス)供用未遂の疑いで中学生が補導され、男性2人が家宅捜索を受けた事件がネットで波紋を呼んでいる。「これだけで補導や家宅捜索はやり過ぎだ」と警察を批判する声も強い。 似た事件として昨年、JavaScriptのプログラムを使い、サイト閲覧者に仮想通貨をマイニング

    「ループURL貼って補導」「Coinhive逮捕」に、“JavaScriptの父”ブレンダン・アイク氏も苦言
    t-murachi
    t-murachi 2019/03/07
    仮に Brendan Eich がこの件で来日して兵庫県警に逮捕されるような事にでもなれば流石に外交摩擦で日本終わるんじゃないかな色々と…(´・ω・`)
  • JavaScriptの { } を理解する - Qiita

    結果はどうなったでしょうか。 自分が今使っているGoogle Chromeだとこうなりました。 結果は{a: 10}というオブジェクトです。まあ、これは当然ですね。3 + 5と入力すれば実行されて8が返ってくるのですから、{a: 10}というオブジェクトリテラルを書けば{a: 10}というオブジェクトが作られるのは当然です。 ……。 ここで、一部の人は「おいふざけんなよ」と思っているかもしれません。というのも、この例は環境によっては違う結果になるのです。具体的には、Chrome以外2のブラウザのREPL(FirefoxやEdgeなど)が該当します。あと、ts-nodeのREPLも該当するらしいです。これらの環境では、結果は{a: 10}ではなく次のようになります。 オブジェクトを作ったはずなのに結果が10とか意味不明ですね。そもそも、こんな簡単なプログラムで結果が全然違うとか、JavaSc

    JavaScriptの { } を理解する - Qiita
    t-murachi
    t-murachi 2018/11/09
    REPLの挙動は仕様で規定されていない。ここ重要(´・ω・`)
  • Node.jsにおけるプロトタイプ汚染攻撃とは何か - ぼちぼち日記

    1. はじめに 最近わけあってNodeのセキュリティ調査をしているのですが、今年の5月に開催された North Sec 2018 でセキュリティ研究者の Olivier Arteau 氏による 「Prototype pollution attacks in NodeJS applications」という面白い発表を見つけました。 この発表の論文や発表資料、デモ動画などもgithubで公開されていますし、ちょうどタイミングよくセッション動画も最近公開されました。 github.com Olivier Arteau -- Prototype pollution attacks in NodeJS applications この発表で解説されているのは、悪意のある攻撃者が、JavaScript言語固有のプロトタイプチェーンの挙動を利用して、Webサーバを攻撃する方法です。 発表者は、npmからダ

    Node.jsにおけるプロトタイプ汚染攻撃とは何か - ぼちぼち日記
    t-murachi
    t-murachi 2018/10/19
    Node.js に __proto__ 無効モードが欲しいくらい。いやね、アクセス制御のない言語仕様で特別な挙動をする共通の特殊メンバを持たせること事態が危険っちゃ危険なんだよね…(´・ω・`)
  • TypeScript入門以前ガイド - mizchi's blog

    某社で自分が React/Redux + TypeScript などの講習をやってみた結果、TypeScript 入門用資料が必要だと思って書いたやつです。 このドキュメントのターゲット TypeScript で書かれたプロジェクトに参加する人 TypeScript を導入するために、その事前知識が必要な人 このドキュメントの読み方 ES2015 for Beginners ES2015 for ES5 Programmers ES Modules 非同期表現: Promise と async/await TypeScript エコシステム編 自分が React/Redux などの講習でいろいろやってみた結果、 ES2015 と TypeScript を同時に教えると、初学者は何がどの概念に由来するかの区別が出来ずに混乱します。なので、ES5 -> ES2015, ES2015 -> Ty

    TypeScript入門以前ガイド - mizchi's blog
    t-murachi
    t-murachi 2018/10/04
    良くまとまってる。(プログラミング入門者向けではない点に注意)
  • 簡単にガントチャートとかクラス図とか書けるやつ - Qiita

    mermaidは、Web上で簡単にフローチャートやシーケンス図などのUMLが描けるライブラリです。 d3.jsの機能特化型というかんじで、d3ほど様々なことはできませんが、そのかわりに対応してる図形なら非常に簡単に描くことが可能です。 なお、ヘルプはGitGraphやクラス図が載ってないなど未完成で、いまいち頼れません。 ごたくはいい、実物を見せろ こんなかんじ →支払い忘れてサーバが死んだので代替(誰かが書いたやつに勝手にリンク) できること 以下の図が描ける。 ・フローチャート ・シーケンス図 ・ガントチャート ・クラス図 ・gitグラフ 最後だけ異質だ。 インストール CDNを使えばいいだけだが、自分のところに置きたい場合はyarnで引っ張ってこれる。 <!DOCTYPE html> <html lang="ja"> <head> <link rel="stylesheet" hre

    簡単にガントチャートとかクラス図とか書けるやつ - Qiita
    t-murachi
    t-murachi 2017/08/19
    ちょっとだけGraphvizっぽいとか思った。…クラス図をGraphvizで書けばsvn的に優しいかも! って試験的に使ってみて激しく爆死した過去を思い返すorz
  • PHP って JavaScript に変換できるの?できるわけないだろ! babel-preset-php ってのが今日リリースされた?これまさか・・・。ファーーーーーーーーーーーwwwwwwwwwwww - Qiita

    PHP って JavaScript に変換できるの?できるわけないだろ! babel-preset-php ってのが今日リリースされた?これまさか・・・。ファーーーーーーーーーーーwwwwwwwwwwwwPHPJavaScriptbabel PHP (7) を Javascript (ES7) に変換するための Babel プリセット babel-preset-php日 (2017-7-12) リリースされたみたいです 正直、「は?凄すぎだろ (小並感) 」という言葉しか出てきませんww とりあえず面白そうなので試してみます! 使い方 公式の通りですが、プロジェクトを作成し babel-cli と babel-preset-php をインストールします。

    PHP って JavaScript に変換できるの?できるわけないだろ! babel-preset-php ってのが今日リリースされた?これまさか・・・。ファーーーーーーーーーーーwwwwwwwwwwww - Qiita
    t-murachi
    t-murachi 2017/07/13
    使いどころが分からん…(´・ω・`) JavaScriptそのものを書きたくない人はTypeScriptとか使うだろうしPHPの遺産を他に移植したいにしてもJavaScript選ぶ意味が分からん。
  • Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017 - Publickey

    Googleが中心となって開発しているオープンソースのJavaScriptライブラリ「Angular」のイベント「ng-conf 2017」が、4月5日から3日間、米国ユタ州ソルトレイクシティで開催されました。 3日目の基調講演に登壇したGoogleエンジニアディレクター Brad Green氏は、TypeScriptGoogle社内の標準言語に採用されたことを明らかにしました。 この記事では公開されている動画から、基調講演のその部分を中心にダイジェストでまとめました。 2年掛かりでTypeScriptGoogle社内の標準言語に Brad Green氏。Googleには社内の標準言語(Canonical Languages)としてC/C++JavaJavaScriptPythonGoが設定されている。 なぜかというと、もし社内のプログラミング言語が15種類もあったら、プロジ

    Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017 - Publickey
    t-murachi
    t-murachi 2017/04/10
    「過去にこれで承認された言語はひとつもなかったことだ(笑)。しかも会議とチェックリストのあいだを何度も往復した結果、このプロセスには2年くらいかかった」<つまんねえ大企業だな。
  • レトロエンジニアのための近代Webフロントエンド事情 - Qiita

    フロントエンド開発という言葉があちらこちらから聞こえてくる。 「反対語はバックエンド開発だから、サーバとかCUIじゃない、アプリとかGUIあたりのことを指す広い意味の言葉だよね。」 ・・・とか思ってたらとんでもない。 世の中ではJavaScript界隈を限定している風な使われ方をしている。 私のような C/C++ メインのレトロエンジニアは肩身が狭くなるばかりである。 文は、近年のWeb技術に追いつこうと調査した結果のメモ書きである。 n番煎じの内容だが、Web業界にいない人間の視点 なので、私と同類のレトロエンジニア等、一部の人には新しい気付きが与えられるかもしれない。 詳しい人の添削・ツッコミは大歓迎。 詳細はリンク先に任せ、私が思う「わかりやすい順序」で、調べたことをざっと紹介していく。 きっかけ 読み飛ばしてもよい。 Reactを使うとなぜjQueryが要らなくなるのか 数年前、

    レトロエンジニアのための近代Webフロントエンド事情 - Qiita
    t-murachi
    t-murachi 2016/11/23
    確かに分かりやすいなと感じてしまった…(´・ω・`)
  • JavaScript:undefined値の判定

    JavaScriptでは初期化されていない変数には全て「undefined」という値が入っています。 var a; alert(a); //undefinedが入っている これを利用して、変数が定義済みかどうかを判別することが可能です。…が、やり方がいろいろあるみたいなので、まとめてみることにします。 undefinedと比較する if (a === undefined) { alert("aは未定義"); } グローバル変数として、そのまんまundefinedという名前の変数が用意されているので、それと比較するやり方。一番素直な方法ですが、JavaScriptにおいては良くない書き方とされています。 undefinedは予約語ではなく、単なる変数です。だから上書きすることができるし、関数スコープ内で同名のローカル変数を作ることもできます。(ただし最近の処理系ではconst扱いになって上書

    JavaScript:undefined値の判定
    t-murachi
    t-murachi 2015/12/26
    コード圧縮との相性はなかなか興味深い。
  • JavaScriptでのDOM操作は重いのかという話とForced Synchronous Layoutについて - id:anatooのブログ

    2015年にもなるのにJavaScriptでのDOM操作のパフォーマンスについて書く。ウェブページにインタラクションを持たせたい時に、JavaScriptでDOM操作を行うことがよくある。このDOM操作のパフォーマンスについて、よく聞く意見を大別すると次の2つがある。 JavaScriptによるDOM操作は重たい レンダリングが重いだけで、DOM操作そのものはそれほど重たくない JavaScriptでオブジェクトのプロパティを操作したりする単体の処理は通常1ミリ秒もかからないが、DOM操作をするとレンダリングが完了するまでに数十ミリ秒程度かかったりする場合がある。1番目のDOM操作が重たいと言っている人は経験則的にそう言っていることが多い。 レンダリングの仕組みを知っている人は2番目の意見を言うが、重箱の隅をつつくような話をするとこれも必ずしも正しいわけではない。DOM操作するコードによっ

    t-murachi
    t-murachi 2015/10/15
    innerHTML に直接 HTML 書き殴るのとの比較論かと思ったら違った。レイアウトの強制同期が発生するケースについては個人的にも経験があって、文字数に応じて横幅の変わる DIV とか作ろうとしてハマるポイントだったりする。
  • Google流 JavaScript におけるクラス定義の実現方法

    目次 2019年追記 はじめに クラス実現のために必要な JavaScript の言語仕様 function this call new 演算子 prototype チェーン プロパティ: prototype Google Closure 流のクラスの実現方法の概要 クラスの宣言とコンストラクタの定義 メンバ変数 (インスタンス変数) メソッド定義と呼び出し private, protected 継承 プロトタイプチェーンを利用してメソッドを親クラスから引き継ぐ 親クラスのコンストラクタの呼び出し メソッドオーバーライドと親クラスのメソッドの呼び出し 多重継承 abstract, interface inherits の実際のコード 良くないクラス実現方法 ES6 のクラス 2019年追記 この記事ではclassが導入されたES6以前のJavaScriptでどのようにクラスに相当するものを

    t-murachi
    t-murachi 2015/08/08
    Google流とかいうからどんな奇天烈な方法かと思ったらびっくりするほど普通やったw お前ら実際こんなまじめに js なんて書かずに Dart とか使ってんじゃないのかよww
  • textarea のキャレット位置に文字列を挿入

    JavaScript を使って textarea のキャレット(カーソル)位置に文字列を挿入するサンプルです。 挿入する文字列を入力するために jQuery UI の dialog を利用していますが、それ以外は JavaScript のみを使用しています。 Firefox などの場合は、選択された部分の先頭、末尾の index (整数型)を、それぞれ selectionStart、selectionEnd で取得できますが、IE の場合はそれに該当するプロパティがないのが問題です。 IE の場合は、document.selection プロパティで selection オブジェクト(textarea 要素そのものではなく、textarea 要素の中の選択された文字の部分)を取得し、さらに createRange メソッドを使って TextRange オブジェクトを作成し、それを操作するこ

    t-murachi
    t-murachi 2015/07/23
    これはありがたい…。 IE 独自仕様すぐる(/^^)/
  • SVGアニメーションの現状 | POSTD

    SVGScalabe Vector Graphics)の世界は魅力的です。そして、これを使ってできることや、これに用意されているオプションには圧倒されてしまうほどです。 SVGはXMLベースの2次元ベクター画像形式で、インタラクティビティとアニメーションをサポートします。言い換えると、SVGは図形やグラフをレンダリングするXMLタグで、その図形やグラフはHTMLの構成要素がそうであるように、インタラクトしたりアニメーション化したりできるのです。 SVGに関して、私がよく受ける質問の1つは、SVG画像のアニメーション化についてです。そのやり方だけではなく、それが何なのかということも聞かれます。ですから、現在の(そして未来の)SVGアニメーションの状況を見ながら、あなたが苦痛を感じずに行えるようなヒントやツールについてお話ししましょう。 同期マルチメディア統合言語、またの名をSMIL(Syn

    SVGアニメーションの現状 | POSTD
    t-murachi
    t-murachi 2015/07/10
    なんか Flash を置き換える存在としてすげぇ期待されてたみたいな感じだったはずなのに激しくダサいことになっとるな。結局は JavaScript だのみ、 HTML から切り離された SVG 単独では動きまわることもできなくなるとか…。
  • JavaScript の Array#sort で return 0 すると要素の順番は不定になります - latest log

    qiita.com を拝見してました。心当たりがあるのでメモ程度に。 JavaScript の Array#sort は仕様的に非安定ソートで、実際もそうです。実装により異なる結果が得られます。 より具体的には、 [...].sort(function(a, b) { return 0; }); と評価関数の中で return 0 してしまうと要素の順番は保証されません。 return 0 を使わずに記述してください。 この問題については、 http://ofb.net/~sethml/is-sort-stable.html を参照していただくと学びがあります。 以下は僕のツイートを Array#sort で検索した時にでてくる駄文です。見事にいい感じに苦しんでますね。みなさんは気をつけてください。😃 モジュールの依存関係を解決する部分のロジックは8回ほど書き直しました。確かにあれ全く簡

    JavaScript の Array#sort で return 0 すると要素の順番は不定になります - latest log
    t-murachi
    t-murachi 2015/06/26
    もとより標準に則るならば特定の実装における Array#sort が安定ソートであることを期待すること自体が間違いっちゅー話だ罠。
  • Vanilla JS

    Vanilla JS is a fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications. Introduction The Vanilla JS team maintains every byte of code in the framework and works hard each day to make sure it is small and intuitive. Who's using Vanilla JS? Glad you asked! Here are a few: FacebookGoogleYouTubeYahooWikipediaWindows LiveTwitterAmazonLinkedInMSN eBayMicros

    t-murachi
    t-murachi 2015/02/26
    Vanilla JS ってのが joke なのは分かったけど、 Speed Comparizon 見てクライアントサイドフレームワークがこれほどまでのパフォーマンスコストになっていたのかと思ったら何だか嫌な気分になった。
  • JavaScriptのプロトタイプチェーン - Qiita

    元ネタ:JavaScriptはいかにしてprototypeを捨てクラスベース継承を得るのか - なんたらノート第三期ベータ なんか色々突っ込みたかったので。 この人はプロトタイプチェーンでクラスベースの言語と同じことをやろうとしているのかな。 プロトタイプチェーンは、ただの道具 npm にあるほとんどのライブラリがチェーンを活かして作られてない理由が説明できない。 プロトタイプチェーンは、それ自体ただの道具です。ほとんどのライブラリで使われないと有用ではない、なんてことはないはずです。 そもそも、プロトタイプチェーンの仕組みは結構利用されています。気づいていないだけ、じゃないですかね。 メソッドとそれ以外のプロパティ ちょっとまって、JavaScript のプロトタイプチェーンの教科書でこの、n という初期化パラメータを持つオブジェクトの継承はどういうふうに実装したっけ?? プロトタイプチ

    JavaScriptのプロトタイプチェーン - Qiita
    t-murachi
    t-murachi 2014/08/28
    元ネタ見たけど、「JavaScript の初期設計には Java の圧力があった」とかどこのデムパだという感想しか… 営業的な事情から名称を拝借したぐらいの話しか知らんよ?
  • JavaScriptとCSSを1ファイルに

    フロントエンドの最適化手法の1つにJavaScriptCSSのファイルを1つに結合するというのがあるので、ついでにJavaScriptCSSを1つファイルにまとめてみました。 非標準ですが大抵のJavaScriptエンジンの実装では<!–が1行コメントになることを利用してJavaScriptCSSを切り替えてます。確認したとこIE8、Firefox33、Chrome37では意図通りに動作しました。IE11ではMIMEタイプが違うといわれてCSSが適用されませんでした。 思いつきなんで効果の程は知りません。

    t-murachi
    t-murachi 2014/07/25
    これはまた…w
  • Javascriptを使うのをやめろ:Railsの時代遅れ云々についての結論 - Qiita

    結論: Javascriptの乱用をやめるのが一番。 はじめに書いておきますがしょうもない話です。 結論、開発者としてはどのような方向性でやるべきか、を書いています。 JS多い時代でのフレームワークの根的な問題云々のことは書いてません。 さて、現状、モバイルにおいて、Javascriptでまともに動くものを作ることは難しいです。 Twitterから引き抜いた超優秀なWebエンジニアを多数抱えるMediumですら、未だにモバイルで多数のバグを抱えています。 超優秀なエンジニアを世界一抱えているであろうGoogleのGmailですら、モバイル版のWebはすぐクラッシュします。また、自前スクロールに致命的なバグも抱えています。 正確には「UIが不審な挙動をする」ですが、エンドユーザにとっては同じことで、「バグ」です。 サーバサイドで起こるバグと同じ程度、いやそれ以上に、サービスに影響を与えます

    Javascriptを使うのをやめろ:Railsの時代遅れ云々についての結論 - Qiita
    t-murachi
    t-murachi 2014/06/30
    興味深い。グループ開発で JS グリグリ UI 作るのは結局のところ難しいということで結論つきそうではある。