カチャカチャ、ペチペチ
TouchBarモデルのMacBook Proが戻ってきました。 起こったこととしては下記のポストに書いています。
一通りセットアップして、あとはVim周りを微調整するぐらいかなーという感じですが、またしばらく2012年MacBook Pro使っていたせいで、こちらのキーボードにタイピングが最適化されてしまっている。。。
2012はカチャカチャ打てる感じで、TouchBarモデル(2016)はペチペチ系なのですね、ぶっちゃけ2012年でも普通に使える感じではありましたが、ま、少しずつtouch barの方にシフトしていこうと思います。
一応自作セットアップスクリプトがいい感じに活躍してくれたおかげでMac自体の環境構築は片手間に出来ました。
が、スクリプト自体の動作は怪しい感じなので、時間みてコード整えないと思っている今日この頃💦
いつか「このセットアップスクリプト使えば、自分の環境のセットアップは一瞬で終わります。どどどーん!」と行きたいものです。
一応Githubにあげていますが、まだ人様に使ってもらう段階ではありません(スーパーベータ版)
TerminalからFinderを開くという発想が今までなかった自分に衝撃が走った5分前
そうだよ、こういうのがほしかったんだよ、おれは(井之頭五郎風)
macでTerminal使って作業しているとき、作業しているディレクトリに対してコマンド一発でFinderでも開けたら便利だろうなーと今ふと思って、あれ!?それってたぶん行けるでしょ!と思って調べたらすぐにポストが見つかって、このタイトルを書くに至りました。
(windowsやLinuxでも同様のことが出来るみたいです!)
参考にした記事は下記。
実際のmacでのコマンドも載せておきます。 せっかくなので5種類ほどのパターンで打ってみた(特に深い意味はない)
# 現在いるディレクトリをFinderで開く open . # ホームディレクトリをFinderで開く open ~ # ルートディレクトリをFinderで開く open / # ~/desktopをFinderで開く open ~/desktop # ~/.pyenvディレクトリをFinderで開く open ~/.pyenv
いや~なんでこの発送が今までなかったのか、、、今まで律儀にFinder立ち上げて、Terminalのディレクトリに向かってポチポチ移動させていたわー
Terminalにて、現在のディレクトリ内でatomを開く(追記)
これも一度使い出すと、かなり便利なことに気づいて、最近ちょくちょく使っている。
atom .
Qiitaはじめました。
最近Qiitaはじめました。
上のような感じでコード中心のポストはこちらに書いていこうと考えています。
でも器用に書き分けるのが苦手なタイプなので、こちらにも今までのようにコードは書いていくかも。ま、そこら辺は適当にやっていきます。
SyntaxError: 'import' and 'export' may appear only with 'sourceType: "module"'ってエラー出て困ったけど、まずはエラーの内容を確認しろよって話
こんなエラーが出ました。
ログは割愛しています。
SyntaxError: 'import' and 'export' may appear only with 'sourceType: "module"' (2:0)
このエラー文に解決法がすでに載っているのですが、アホなので、最初になんでエラーなの!?
となってしまい、ちょっと時間を食ってしまいました。。。いやいや、エラーの内容を読めよって話です。
ちなみにエラーを出したコードは下記。
const babylon = require('babylon'); const actions = `import { CREATE, SELECT, UPDATE, DELETE } from './mutation-types';` console.log(babylon.parse(actions));
下記のようにコードを変更することで解決です。
ちなみに解決の糸口はエラー読んだから、、、ではなく、下記のリンクです。
const babylon = require('babylon'); const actions = `import { CREATE, SELECT, UPDATE, DELETE } from './mutation-types';` console.log(babylon.parse(actions, {sourceType: 'module'}));
これについては本当に反省した。
予期せぬエラーが出て動揺しようが何しようが、まずはテメーの目の前に表示されているエラーを読めよって話でした。反省。
babel7を使用したとき、jestのテストがTypeError: Cannot read property 'loose' of undefinedでコケたので、その対応をメモ
babel7を使ってプラグインを試しに書いてみようとした際、jestのテストがTypeError: Cannot read property 'loose' of undefined
でコケたので、そのときの対応と原因を自分への備忘録としてメモする。
結論
最初に結論から書くと、babel-core@7.0.0-bridge.0
を入れていなかったことが原因のため、npm
なりyarn
なりでこちらをインストールすることで解決した。
問題が起きたときのpackage.json
元々のpackage.json
が下記。
{ /* 省略 */ "dependencies": { "@babel/cli": "^7.0.0-beta.36", "@babel/core": "^7.0.0-beta.36", "@babel/preset-env": "^7.0.0-beta.36", "babel-jest": "^22.0.4", "babel-plugin-tester": "^5.0.0", "jest": "^22.0.4" } }
実行時のログ
実行時のログがこんな感じ。
$ jest FAIL src/index.test.js ● Test suite failed to run TypeError: Cannot read property 'loose' of undefined (While processing preset: "/Users/{{ username }}/babel-plugin-sample/node_modules/@babel/preset-env/lib/index.js")
対応策
babel-core@7.0.0-bridge.0
を入れる
yarn add babel-core@7.0.0-bridge.0
package.jsonがこういう形となる。
{ /* 省略 */ "dependencies": { "@babel/cli": "^7.0.0-beta.36", "@babel/core": "^7.0.0-beta.36", "@babel/preset-env": "^7.0.0-beta.36", "babel-core": "7.0.0-bridge.0", "babel-jest": "^22.0.4", "babel-plugin-tester": "^5.0.0", "jest": "^22.0.4" } }
2018年元旦、コーディングタイムコンパイルにメタプログラミング、トランスパイルという単語が、僕の心を捉えて離さない件
そもそものきっかけは先月、下記の記事を見たことでした。
ここで書かれている内容は、これからの時代においてとても大事なものになるだろう、と記事を読んで感じました。
私は経験も技術力もまだまだ乏しい人間ではありますが、コーディング時に生じるヒューマンエラーが生産性に大きな影響をもたらすことは何度も経験してきましたし、
技術力や知識をつけていくことでコーディング時間の短縮を図ろうとしても、途中で頭打ちになるのは目に見えています。
よって、コーディング量の削減と、エラーがそもそも発生しない仕組みを作ってしまったほうが合理的だと思います。
その合理的な方法として私はこの記事に書かれている内容が使えると思いました。
さて、上の記事を読んだ後、その記事内でも書かれていた下記の記事も読みました。
2017年に初めてReduxを触り始めた私が感じていた、"ボイラープレートが多くて面倒だな〜"という静かに降り積もりつつあった心の澱はこれで解消されるようです。
正直、すげーなと思いました。
個人的にはRadioheadがThe King of Limbsを出して夏の夕立のようなアフロビートでFuji Rockを沸かしたときぐらいのすげーな
でした。
ま、ここらへんの知識は私には皆無なので、あまり喋りすぎて無知を露呈させるよりも、ここで書かれているs2s
を試してみて、この世界に足を一歩踏み入れてみようと思います。
s2sのexampleを試してみる。
ここから備忘録になります。s2sのrepositoryをcloneしてexampleを試してみようと思います。
git clone https://github.com/akameco/s2s.git # shopping-cartサンプルを触ってみます cd examples/shopping-cart # 依存インストール yarn # 実行 yarn start
おっと、ここでエラーが発生しました。Redux関連のエラーのようです。。。
エラーログを貼っておきます。
TypeError: Cannot read property 'apply' of undefined (anonymous function) node_modules/redux/es/compose.js:29 26 | 27 | return funcs.reduce(function (a, b) { 28 | return function () { > 29 | return a(b.apply(undefined, arguments)); 30 | }; 31 | }); 32 | }
このエラーについては、既にissueで上がっており、Redux DevTools Extension
を入れることで解決するようでした。
というわけで、下記の拡張機能をChromeに入れ、再度yarn run start
を実行すると正常に動作します。
では、いよいよお待ちかねのs2sを試してみます。
yarn run s2s module.js:538 throw err; ^ Error: Cannot find module '../lib/cli' at Function.Module._resolveFilename (module.js:536:15) at Function.Module._load (module.js:466:25) at Module.require (module.js:579:17) at require (internal/module.js:11:18) at Object.<anonymous> (/Users/yukishindo/Desktop/try-s2s/s2s/packages/s2s-cli/bin/s2s.js:10:1) at Module._compile (module.js:635:30) at Object.Module._extensions..js (module.js:646:10) at Module.load (module.js:554:32) at tryModuleLoad (module.js:497:12) at Function.Module._load (module.js:489:3) error Command failed with exit code 1.
ありゃ、何かエラーが出てしまったようです。
調べてみると、どうやら、yarn run s2s
コマンドを打つ前に、s2s
のルートにてyarn run build
を実施する必要があるようでした。
# s2sルートにて yarn run build
すると、上でcannot find module...と言われている箇所にlibディレクトリが作られ、下にbuildされたソースが吐き出されます。
さて、この状態で、再度s2sを実行してみます。
# shopping-cartサンプルに再度移動 cd examples/shopping-cart # s2s実行 yarn run s2s
早速触ってみます。。。す、すげー!
とりあえずやってみたことといえば、記事に書かれている通りの内容でApp以下にActionTypes.jsを新規作成し、Addアクションを追加
だけなのですが、勝手に生成されていく様は、予想以上に感動を呼びました。
今年はさよならボイラープレート
を胸に刻んでコードを書いていこうと思います。