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

モダンJavascriptの世界において、過去とうまく付き合っていくためにはトランスパイルやPolyfillといったものから逃れることは不可能といっても過言ではないでしょう。 (まだjQuery全盛の世界線で時が止まっている方は、「イマドキのJavaScriptの書き方2018」などを今すぐ読んでください。お願いします。) また、今はBabelという便利なものがあるので、とりあえず みたいに入れてしまえば、細かいことを気にすることなくいい感じに、古いブラウザでも動くコードを生成できる環境を用意できるようになりました。 ただ、Babelでとりあえず変換すれば動作してしまうが故に、細かい設定を見直さなかったり、そもそもどういった処理がなされているのかを理解していなかったり、ということも多々あるように思えます。(あくまで自分調べ) ので、今回は 「Babelのトランスパイルがどのように行われてい
はじめに Twitterで、文字化けネタを幾つかつぶやきました。 サッちゃんはね サチコっていうんだ ほんとはね だけど ちっちゃいから 自分のこと SJISで 保存するんだよ おかしいな 繧オ繝ちゃん — ロボ太 (@kaityo256) 2017年10月10日 「私 魔女のキキです。こっちはSJISの繧ク繧ク」 — ロボ太 (@kaityo256) 2018年1月6日 UTF-8「もしかして…」 SJIS「私達…」 「「入れ替わ縺縺ヲ繧九≦縲懶シ†」」 — ロボ太 (@kaityo256) 2018年2月13日 どれもUTF-8で保存された文字をSJISとして解釈したための文字化けを表現したものですが、パッと見で「糸偏の漢字が多いな」ということがわかるかと思います。なぜそうなるかを簡単に説明してみようと思います。 なお、文字コードはいろいろ面倒なので、ここではざっくりとしたことしか言い
var a = [1,2,3,3,2,2,5]; // 重複を削除したリスト var b = a.filter(function (x, i, self) { return self.indexOf(x) === i; }); // 重複のみをリスト var c = a.filter(function (x, i, self) { return self.indexOf(x) !== self.lastIndexOf(x); }); // 重複を検出したものを重複しないでリスト var d = a.filter(function (x, i, self) { return self.indexOf(x) === i && i !== self.lastIndexOf(x); }); console.log(a); // [ 1, 2, 3, 3, 2, 2, 5 ] console.log
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事は sessionstack blog に投稿されている、How JavaScript works シリーズの一記事 "How JavaScript works: memory management + how to handle 4 common memory leaks" の和訳です。投稿されたのは Alexander Zlatkov, 原文はこちらです。翻訳については許諾いただいています。 メモリ管理もしくはC言語におけるメモリ解説他、用語なども怪しい箇所は多分にありますので、間違いがありましたら修正のご指摘・編集リクエス
数年前であれば仕方なかったところですが、2018年の今となっては、パスワードハッシュの手動計算はもはや"悪"です。 まずログイン認証と称してmd5とかsha1とか書いてあるソースはゴミなので投げ捨てましょう。 hashやcryptは上記に比べればずっとマシですが、使い方によっては簡単に脆弱になりえます。 あと『パスワードを暗号化する』って表現してるところも見なくていいです。 PHPには、ハッシュに関わる諸々の落とし穴を一発で解消してくれるpassword_hashという超絶便利関数があるので、これを使います。 というか、これ以外を使ってはいけません。 以下はフレームワークを使わずに実装する際の例示です。 フレームワークを使っている場合は当然その流儀に従っておきましょう。 ハッシュの実装 データベース ユーザ情報を保存するテーブルを作成します。 パスワードカラムの文字数は、システム上のパスワ
概要 無料でSSL証明書が使えるということで個人で使ったり、 ローカルの開発環境にSSLを入れられると便利だなと思い、調べてみる。 <検証環境> 余っているドメインがある(どこにも使ってない) 主にローカル環境で開発をしている 最近HTTPSのサイトが多くなってきたので、オレオレ証明書ではなく正規の証明書を使いたい。 Let's Encryptの認証方法 Let’s Encryptで証明書の取得を行う場合、以下の方法などで、 ドメインを認証する必要があるようです。 HTTPによるドメイン認証 (HTTP-01) HTTPSによるドメイン認証 (TLS-SNI-01) DNSによるドメイン認証 (DNS-01) 今回は、公開しているサイトではないので、以下の方法を検討する。 <DNSによるドメインを認証を方法 (DNS-01)> 認証対象のドメインのサブドメインのTXTレコードにトークンが設
Puppeteerのnode apiを使ったサンプルプログラムを作り、ヘッドレスChromeを操作してみましたので報告します。 先日、Google Chromeにヘッドレス機能が追加されました。GUI無しにコマンドラインからChromeを操作できるようになったわけです。 https://developers.google.com/web/updates/2017/04/headless-chrome?hl=ja ちょっと前まではnodeからこのヘッドレスChromeへアクセスするにはchrome-remote-interfaceなどが必要でしたが、最近Puppeteerというものが現れてもっと簡単にヘッドレスChromeを操作できるようになりました。 https://github.com/GoogleChrome/puppeteer 公式サイトにあるPuppeteerの使い方 スクリーンシ
今回はSeleniumを使ってHeadless Chromeを操作してみます。 コードはGitHubにまとめました。 追記 8/9 並列実行を実装 実行環境 maxOS Sierra ver. 10.12.6 Python 3.6.1 Google Chrome 59.0 Headless Chromeとは Google Chrome 59から導入されたChromeを画面表示せずに動作するモード。これにより、自動テストやUIがないサーバ環境で使えるとのこと。 *WindowsのみChrome 60からサポートされるみたいです 準備 最新版Chromeをインストール Python 3.6をダウンロード (virtualenvを使うことをおすすめします) Selenium等を依存ライブラリのインストール Python依存ライブラリ 今回は以下のライブラリを使います Selene - Selen
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに gitこわいみなさんこんにちは! チーム内ではgitおじさんとして日々活動しています。意外と(?)git苦手なひと多いですよね。最低限の操作はできても、何のために、どのように使うのが適切かを意識しているひとは少ないと思います。 本記事は自分のチームに向けて、なぜgitを使うのか、どんな使い方が適切かを理解してもらうために書きます。 なぜVCS(Version Control System)を使うのか なぜ使うのでしょうか。まずはここから考えていきます。 ちょうど最近読んだベタープログラマに効果的なバージョンコントロール(p17
Bootstrap4が正式リリースした 2018年あけおめムードも落ち着いて来た頃、つい先日(2018/01/18)にBootstrap4が正式リリースの声明を発表した。 ・ありがたいお言葉 https://blog.getbootstrap.com/2018/01/18/bootstrap-4/ ・公式 https://getbootstrap.com/ 全然盛り上がってない気がしてウケた 今やマテリアルデザインのCSSフレームワークなんて充実しまくってるし、選択肢はいくらでもあるし、今更Bootstrapなんて選ぶかよって感じですよ。 正直、筆者も永遠にBeta版なのかと思ってちっとも触ってなかった。 もっと言うとv4 alphaを取り込んでるサイトもちょいちょいあるし、だったら3.3.7でいいよねって思ってた。 中途半端に「マテリアルデザインっぽくしました!」感も否めないし、、、。
はじめに 今まで commit message を「なんとなく」書いていたが、プレフィックスをつけることで、コミットメッセージに対する考え方が変わった。 そのおかげで開発効率が上がったので、その内容をシェア。 プレフィックスをつけるってどういうこと? 以下のようにコミットメッセージの先頭に、なんらかの文字をつけること。 feat: xxx という機能を追加 fix: yyy で発生するバグを修正 refactor: zzz の機能をリファクタ のように feat, fix, refactor などがプレフィックスです。 最近 OSS の Contribution Guide などでよく見かけます。 導入したプレフィックスルール Angular.js/DEVELOPERS.md Angular.js の開発者ガイドに書いてあるメッセージを参考にしました。 以前のコミットメッセージ(例 ちなみ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ES2015が出るまではJavaScriptで連想配列を扱う場合はObjectを使用するのが通常でした。ES2015からMapが登場し、こちらを使用すべきと言われています。それは果たして本当なのでしょうか? 連想配列とは何か? 単純な配列は単なる値の順列と考えられます。値が一つ一つ順番に並んでおり、入っている値の数(同じオブジェクトが重複して入っている場合もある)がその配列の長さであり、0または1から始まるインデックスでアクセスできるというものです。複数のオブジェクトをひとまとめに扱う場合、この単純な配列であってもそれなりに使用できます
opening connection to www.google.co.jp... opened <- "GET / HTTP/1.1\r\nConnection: close\r\nHost: www.google.co.jp\r\nAccept: */*\r\n\r\n" -> "HTTP/1.1 200 OK\r\n" -> "Date: Sun, 30 Sep 2012 01:49:21 GMT\r\n" -> "Expires: -1\r\n" -> "Cache-Control: private, max-age=0\r\n" -> "Content-Type: text/html; charset=Shift_JIS\r\n" -> "Set-Cookie: PREF=ID=be9181a7dc77ebf4:FF=0:TM=1348969761:LM=1348969761:S
※ 2.7.0からキーワード引数を通常の引数から分離されました。**この記事はこの変更点について未反映です。**詳しくは2.7.0リリースノートを参考にしてください。 Rubyにおいて、メソッドへの引数がどのように渡され、どのように受け取っているのかをまとめた。動作確認はRuby 2.3.1で行っている。古いバージョンでは動作しない場合があるので注意して欲しい。それぞれの対応は下記を参考。 Hashリテラルのkey: value記法は1.9系から。 デフォルト式あり引数や可変長引数の後に通常の引数を設置できるのは1.9系から。 キーワード引数は2.0系から。ただし、2.0系ではデフォルト式の省略は不可。 キーワード引数のデフォルト式省略は2.1系から。 キーワード引数を通常の引数から分離は2.7系から。(現在、記事には未反映) メソッド呼び出しの構成 Rubyのメソッド呼び出しは4つの要素
Rubyには標準でnet/httpが入っていますが、これはちょっと低レイヤ寄りで使いづらいので、使いやすくしたHTTPクライアントライブラリが多数あります。 ありすぎてどれを選んでいいか調べていたところ、HTTPClientの作者さんによる比較スライドを見つけました: http://www.slideshare.net/HiroshiNakamura/rubyhttp-clients-comparison まとめると httpartyとrest-clientが2大人気(ソースはGemのダウンロード数とgithubのスター数。faradayはラッパーなので別枠) この2つで出来ることはほとんど同じ 違いはDigest認証(httppartyは可)、multipart post(rest-clientは可)くらい どちらもKeep-Aliveに対応していない HTTPClientはDigest
DevToolsで動的にページのJavaScriptを書き換えて実行できるのを数ヶ月前まで知らなかったのでメモ。 上のGIFでは、DevToolsのSourcesタブから、ページ内で読み込まれているJavaScriptのファイルを選択して、onkeydownで呼ばれる関数の中を書き換えて、⌘ + sで保存してる。そのあとtextareaに文字を入力すると、書き加えたコード(ここで追加してるのはconsole.logね)が実行されて、文字列が下部のConsoleに出力されてるのがわかる。 ちなみに、1行目にブレークポイントを置いて停止している間に書き換えることもできる。当然、全部削除して保存すると何も実行されなくなる。 HTTPSでローカルプロキシしにくいページとかでデバッグするのに便利かなーと思った。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く