タグ

ブックマーク / teppeis.hatenablog.com (12)

  • @typescript-eslint ことはじめ - teppeis blog

    追記: 2019/05/01 最近の@typescript-eslint/eslint-plugin, Prettierのアップデートによって、正式にTypeScript 3.4対応されました。一通り普通に動いてる感じ。 これまで自分で使っていて問題になったのがパフォーマンス。ESLint単体やTSLintに比べて、プロジェクトによるだろうけど2倍以上遅い。体感で結構辛い。 Poor performance on some projects · Issue #389 · typescript-eslint/typescript-eslint これはTypeScriptのパーサーを通す部分の構造上の問題が原因なので、簡単には直せなそうな気配。 とりあえず、個人的には型を必要とするルールにそこまでの価値を感じていないので、該当ルールを無効にしてparserOptions > projectを削

    @typescript-eslint ことはじめ - teppeis blog
  • typescript-simpleの高速化と最近のTypeScript Compiler API周辺動向 - teppeis blog

    ES6 compat tableのTypeScriptコードのビルド時間を300秒から2秒に短縮した話と、最近のCompiler APIの動きの紹介。 先日TypeScriptの文字列を簡単にコンパイルするtypescript-simpleというライブラリを書いた。 typescript-simpleを作った動機の1つは、ES6 compat tableのTypeScript用テストを高速化することだった。 元は300件以上あるテスト項目を、テストごとにNode.js v0.11のchild_process.execSyncでプロセスを立ち上げてTypeScriptコンパイラ (tsc) でチェックしていたので、全部テストするのに300秒ぐらいかかっていた。これをtypescript-simpleで全テストをワンプロセス内で実行したら超速化するはず!と思ったけど、300秒が200秒になるぐ

    typescript-simpleの高速化と最近のTypeScript Compiler API周辺動向 - teppeis blog
  • TypeScriptで複数ファイル構成する2つの方法 - teppeis blog

    TypeScriptで複数ファイル構成のプロジェクトを扱う方法について書いてみる。日語の入門記事や試してみました系の記事で勘違いされてることがたまに見受けられるので、整理してみる。 公式のModules in TypeScriptを既に読んでおられるような御仁は回れ右していただいても結構です。 やりたいこと ソースファイルをモジュールごとに分割して管理したい 実行環境はNode.js or ブラウザ 例えば、こういう処理があって、 // main.ts function trimLeft(str: string): string { return str.replace(/^\s+/, ''); } var input = document.getElementsByTagName('input')[0]; input.value = trimLeft(input.value); tri

    TypeScriptで複数ファイル構成する2つの方法 - teppeis blog
  • Spring Boot 1.2/1.3でhot swapping的なこと - teppeis blog

    唐突にJavaの話。Spring Bootで変更を動的に反映する場合(いわゆるhot swappingとかhot deploy)はSpring Loadedを使えって出てくるのだけど、なんか動いたり動かなかったりしてなんでなんだろうと小一時間調べたメモ。Spring Boot + Maven + IntelliJ IDEA 15 on Mac 前提。 Spring Boot 1.2 with Spring Loaded 現行バージョンのSpring Boot 1.2では、Spring Loaded使えということになっている。 公式マニュアル通りにpom.xmlでsrping-boot-maven-pluginにSpring Loadedへの依存を書くだけで CLIからmvnを叩いた場合 は普通に使える。 <plugin> <groupId>org.springframework.boot<

    Spring Boot 1.2/1.3でhot swapping的なこと - teppeis blog
  • ES6 ModulesはHTTP/2によってconcat無しで使えるようになるのか - teppeis blog

    HTTP2 時代のサーバサイドアーキテクチャフィードバック - Togetterまとめ のあたりで話していたことのまとめ。 補足 タイトルで「ES6 Modulesってconcatしないと動かないの?」と一部に誤解を与えてしまったようなので補足。ES6 Modulesがブラウザにネイティブ実装されたら、当然concatしなくても動きます。 ここで書きたかったテーマは「ES6 Modules + HTTP/2 + concat無し は ES6 Modules + HTTP/1 + concat と同等の速度で動作するのか」です。 追追記 (2016/01) kazuhoさんはh2oで Cache Aware Server Push という解決策を提案しています。 Jxckによる日語解説記事: HTTP/2 Push を Service Worker + Cache Aware Server

    ES6 ModulesはHTTP/2によってconcat無しで使えるようになるのか - teppeis blog
  • grunt-parallelize v1.1.0リリースおよび零細OSSの継続性について - teppeis blog

    2015/03/29 10:30 フォークについて末尾に追記 gruntタスクのファイルリストを分割して並列実行するgruntプラグイン、grunt-parallelizeを前に作った。 そこそこ使われてるっぽいのだけど、 ファイルリストが長大な場合にエラーになることがある ファイルリストにdestがあるタスクに対応していない という2点についてissueや問い合わせがよくあってどうしたもんかなと思いつつ放置していたところ、ちょうど良いプルリクをもらったので重い腰を上げて取り込みつつもろもろ修正してv1.1.0をリリースした。 さて、最近こんな記事を読んで、「プラグイン開発者として」あたりのところをまさに感じていた。 若気の至りで、おっさんも昔はよくGruntプラグインを作ったのです。実際に自分のプロジェクトでGruntを使い、必要だったので、プラグイン開発に対する情熱もあったわけですけど

    grunt-parallelize v1.1.0リリースおよび零細OSSの継続性について - teppeis blog
  • io.js用に書いたパッケージはnpmでどう扱うか問題 - teppeis blog

    東京Node学園 15時限目に参加したときにふと思った疑問について。 Node.jsと非互換なAPI使ったとき、npmにあげていいの?package.jsonのengineとかで書けるのか #tng15— teppeis (@teppeis) 2015, 2月 10 Node.jsの場合 例えばNode.js v0.12系にしか存在しないAPIを使ったパッケージの場合、package.jsonのenginesフィールドにこう書くことで、 { "engines" : { "node" : ">=0.12" } } 適合しないNode.js v0.10でnpm installしたときに警告を出すことができた。逆に削除されたAPIを使っている場合はバージョンの上限も指定できる。また非推奨ながらengineStrictフィールドを使うと警告ではなくエラーにできる。 io.jsでの議論は では、io

    io.js用に書いたパッケージはnpmでどう扱うか問題 - teppeis blog
  • Mac/iOS Safariでバックスラッシュを円記号として表示する方法 - teppeis blog

    Unicodeではバックスラッシュ*1と定義されているU+005Cだが、歴史的な背景によりMS系日フォントでは円記号が割り当てられているのはよく知られた話。 ところがMac/iOSに載っているヒラギノ角ゴシック等ではU+005Cはバックスラッシュとして表示されるし、キーボードの右上の円記号キーを打つとU+005CではなくU+00A5 Yen Signが入力される*2。 それぞれのシステム内で閉じてれば一貫性が保たれるのだけど、Windowsで円記号を意図して入力したU+005Cが、Mac/iOSではバックスラッシュとして表示されてしまう。企業で使われるWebシステムの場合、Windows PCiPhone/iPadってメジャーな組み合わせだし、円記号が化けるってのは日企業ではわりと見過ごせない問題だったりする。 実はSafariではこのバックスラッシュ円記号問題への特別対応コードが

    Mac/iOS Safariでバックスラッシュを円記号として表示する方法 - teppeis blog
  • タスクを並列超速化するgrunt-parallelizeを紹介するよ - teppeis blog

    この記事は Grunt Plugins Advent Calendar 2013 23日目の記事です。 Gruntタスクを並列で実行するプラグイン grunt-parallelize を紹介します。 ある程度プロジェクトが大きくなるとJavaScriptが1500ファイルとか超えてきてJSHintにくっそ時間かかるみたいなことがよくあります。JSHintを含む多くのNode製ツールはシングルプロセスなので、普通に実行しちゃうとマルチコアなCPUが遊んでてもったいないわけです。 そんなときにgrunt-parallelizeを使うと、指定のプロセス数にファイルリストを分割してマルチプロセスでタスクを実行してくれます。 まずはもとになるタスクのGruntfile.jsの定義。grunt-contrib-jshintを使った普通のタスクですね。 grunt.initConfig({ jshint

    タスクを並列超速化するgrunt-parallelizeを紹介するよ - teppeis blog
  • Docker = LXC + aufs + GitHub Culture - teppeis blog

    先日、社内勉強会のLTでDockerについて発表というか紹介しました。 DockerがYAVAY! from teppeis Dockerは各方面で噂は聞いていたんだけど、先月のTesting Casual Talks #1 : ATNDで、mizzyさんのDocker上でserverspecを走らせるデモを見てガツンとやられました。 仮想化というとVirtualBoxとかKVMみたいな仮想マシンしか想像してなかった自分には、起動時間ゼロで仮想環境が何度も実行される様子は衝撃的。調べてみると、LXCとaufsという要素技術をうまく組み合わせたものをGit&GitHub的なイマドキ開発文化でラッピングした感じで、うまいなーと感心しきりです。 発表もそのあたりのお話とデモが中心だったので、資料にはコマンドとかはないです。 実際に手を動かしたい方は先人の素晴らしい記事を読まれると良いかと思います

    Docker = LXC + aufs + GitHub Culture - teppeis blog
  • Re: RequireJSを使うのを止めた理由 - teppeis blog

    RequireJSを使うのを止めた理由 | それなりブログ を読んで、ほぼ同意だったのですが、意識が高まったのでいくつかコメントを。 嫌だったところ 基的に、1枚のJSファイルが1モジュール、ファイル名がコードに影響する。 それができるのが良いところだと思ってました。 それもあって、結合・圧縮は r.js という専用のツールが必要になる。Grunt の concat とか uglify とか使えない。 リリース版ではビルドがほぼ必須というのがRequireJSの欠点ですね。 ただGruntについては、grunt-contrib-requirejsを使えばデフォルトでuglifyされますし、concatなど他のGruntタスクと組み合わせることも可能です。 AMD の仕様では、「JSファイルのリストを順番通りに読み込み/実行する」ということができない。実際何が困ったかというと、分割した m

    Re: RequireJSを使うのを止めた理由 - teppeis blog
  • Sass&CompassでPath風のメニューを作ってみた - teppeis blog

    2012/12/31 フォロー記事書きました: 1年前のSass/Compassを振り返ってみた みんな気になってしょうがないPathのアレを、Sass, Compass, CSS3 Animationsのお勉強をかねて作ってみました。Chrome, Safari, Firefox, IE10で動きます。 Demo: http://teppeis.github.com/menu-like-path/ Source: https://github.com/teppeis/menu-like-path 「CSSでPath風メニュー」っていうのは国内外ですでにたくさんあるので、気になったところなどSass&Compass寄りでいくつか書きます。 SCSSの記述量はCSSの約5分の1 今回作ったもので、SCSSで約300行(後述の自作ライブラリ含む)、コンパイル後はCSSで約1550行になりました

    Sass&CompassでPath風のメニューを作ってみた - teppeis blog
  • 1