りんごとバナナとエンジニア

エンジニア修行の記録

ファイル内の重複行を楽に探すunixコマンド

先日、大量のデータから完全に重複した行を探す処理をする機会があった。そのときはどうすればいいか手間取ってしまったが、コマンドを工夫すればすぐにできる内容だった。 以下の単純なサンプルログtest.txtを例に取る。 {"location_name": "title", "times…

クリックすると一瞬だけ光るボタンを作る

Vue.jsの勉強としてFizzbuzzゲームを作っている。数字を出して答えを4択で選ばせるのだが、選んだときに正解なら緑、不正解なら赤に一瞬だけ光らせたい。 Vue.jsのtransition/animationの項目を読んだが、これは要素を表示/非表示にするときの話で、色を変え…

webpackは何をするものなのか

今までJSフレームワークを扱うときは特に深く考えずにwebpackを見よう見まねで使っていたが、業務で開発プロセスの改善について考えることになり、webpackの役割についてちゃんと理解しなければいけないことになった。 webpackの細かい機能は都度覚えていく…

ドライバからDBを操作するときはPreparedStatementを使う

今仕事で使っているコードではJavaからCassandraとMySQLを動かしているが、その両方で使っているのがPreparedStatement。 これはどういうものかというと、あらかじめクエリのひな形を用意しておいて、実際に投げるときに値をバインドするというもの。 例えば…

CassandraのDELETEの振る舞いについて

Cassandraを障害時のバックアップとして使うにあたり、DELETE時の処理を考える過程で学んだこと。 DELETEしてもすぐには消えない CassandraのDELETEコマンドは、RDBMSとは異なりすぐに消えるものではない。 ある行をDELETEしても、その行のデータはディスク…

そのバグが本当にバグなのかを見極める

今の会社では、カスタマーサポートなど非エンジニアもイシューを上げられるようにしているが、彼らがバグとしてあげてきたイシューには、実は対応が不要なものも多く混じっている。 何から対応するか決めるときには、「バグ」と「仕様の問題」を混同しないよ…

Pythonで深さ優先探索を実装する

前の記事で幅優先探索を実装したので、ついでにこちらも。 問題はAtCoder Typical Contest 001A。一応解説スライドはあるが、スタックを使った実装方法が書いてないので、自分でやってみることにした。 実装 from collections import deque def dfs(maze, vi…

Pythonで幅優先探索を実装する

アルゴリズムの勉強のために、幅優先探索を書いてみた。 使ったのはAtCoder Beginers Contest 007Cの問題。この頃はアルゴリズムがそのまま出題されてたようだ。 特殊事項として、この問題ではスタートからゴールまでは必ず行くことができる前提がある。さら…

teratail MANABIYAに行きました

manabiya.tech ふだん質問者としても回答者としてもお世話になっているteratailが主催の、初めての大規模カンファレンスです。 会場は秋葉原にある廃校になった中学校です。ふだん勉強会といえばIT企業でやるのが当たり前なので、なんか新鮮な感じがします。…

Javaでスレッドを作ってみる

JVMでは並行処理を実現するために、スレッドを作ることができる。 並列処理を使わなくてもよい処理を書いていたが、せっかくなので公式ドキュメントを見ながらスレッドを作ってみた。 スレッドを作る方法 スレッドを作るには2つの方法がある。ひとつはThread…

GitHubでやらかしたコミット履歴を(ほぼ)見えなくする方法

Git

Gitを覚えたての初心者が一番よくやらかすミスは、パスワードやAPIキーをハードコーディングしたものをリモートリポジトリにプッシュしてしまうことじゃないだろうか。 もちろん速やかにパスワードやキーの変更をすることは前提だが、問題は恥ずかしいコミッ…

Eclipseでのデバッグ超基本編

最近Eclipse上でコードを実行した際によくわからない挙動が起きたが、先輩にデバッグツールの使い方を教えてもらって無事解決できた。 Eclipseに限らず、今までデバッグツールというものがよくわからなくてまともに使ったことがなかったのだが、今回使ってみ…

Sublime Text3の使ってみたいコマンド

まだエンジニアになったばかりの頃になんとなくSublime Text3を使い始めたが、まだその全てを使いこなせていない自覚があった。 何のエディタを使うにせよ、その真の力を知らないでいるのはもったいない。 Sublime Text便利なショートカットコマンドはたくさ…

アロー関数の間違った使い方

JSに関する記事をいろいろ見ていたら、アロー関数の理解が違っていることに気づいた。 efcl.info www.tsubasa-note.blog 「ES6ではfunctionをアロー関数で置き換えられるんだね!」という程度の理解だったが、どうもそうではないらしい。 上の記事とかぶって…

JavaScriptの関数定義の方法まとめ

今まではPythonをメインに書いてきて、JavaScriptはそれっぽくすませてきただけなんだけど、 仕事で真正面から触れることになり、逃げるわけにいかなくなった。 関数定義でいろんなやり方がありすぎて混乱してきたので、一度まとめてみる。 function命令 fun…

Google Homeで音声アプリを作るときの3つのポイント

supporterzcolab.com このイベントで初めてのLTをしてきました。 前の人のテーマもGoogle Homeというまさかの事態が起きましたが、スベることなく無事に終わりました。 会社で買ったGoogle Homeを使い、Dialogflowと組み合わせて会議室予約システムを作った…

「若手エンジニアが転職で困らないように今から実践できること」に参加しました

supporterzcolab.com 紹介文の「会社にロックインされないために」というところに惹かれて参加しました。 自分自身、転職に興味があっても今すぐ転職はできないという感じなのですが、そういう人にこそ刺さるコンテンツでした。 ロックインされない自覚を持…

【Vue.js】computedとmethodsの違い

会社のソフトウェアがVue.jsによってリファクタリングされることになり、急に身につけなければいけないことになった。 まさか自分がVue.jsをやるなんて、先週までは考えもしてなかったんだが... 今公式ドキュメントを読み始めたところだけど、computedとmeth…

【Python】親クラスのプロパティ・メソッドを子クラスで使いたいときの書き方

書くたびに調べることになるので、忘れないようにメモ。 親クラスと同じメソッドを子クラスでそのまま使うとき superなどで指定しなくても普通に使える。 class Animal: def __init__(self, legs): self.legs=legs def legnum(self): return "I have " + str…

【MySQL】カラムがNULL値を取りうるときの検索条件の書き方

最近MySQLを扱う業務をやってみたら、がぜん興味が出てきて、この機会にちゃんと勉強しようと思い立った。 今回は業務で少しはまった、空文字を絞込でうまくはじく書き方について。 空文字をはじきたい 例えば、コンバージョンポイントと会員IDというカラム…

「オブジェクト指向言語解体新書」が神ってた話

10月に行われた技術書典3、行きましたか? 私も当日いろいろ本を買ったのですが、その中の一冊「オブジェクト指向言語解体新書」が、今年読んだ本の中で一二を争うレベルですばらしい内容だったので、感想を書き残しておきます。 ※技術書典から1ヶ月以上経っ…

【Objective-C】this class is not key value coding-compliant for the keyエラーについて

忘れないうちにメモ書き。 Objective-CでiOSアプリを作っていて、presentViewControllerを使って画面遷移を実装しようとしていた。 StoryBoardにボタンを設置して、nextBtnという名前でコードと紐付け、処理を書いてRunするとエラーが。 this class is not k…

東京Node学園祭2日目に参加しました

東京Node学園祭 昨日に引き続き、今日もNode学園祭です。 今日はハンズオン中心のセッションでした。 Authentication Tutorial with Auth0 auth0.com 認証プラットフォームを提供するAuth0社のセッションで、実際にAuth0を触ったりReactを使ってAPIを作って…

東京Node学園祭1日目に参加しました

東京Node学園祭2017 この冬から会社でフロントエンド担当になる予定なので、どんな空気感なのか知りたいと思って参加しました。 一応TypeScriptやReactを触ったことはあるものの、業務でやったわけではないうえしばらくブランクがあるので、周りとのレベルの…

正規表現クロスワードが面白すぎるのでぜひ紹介したい

regexcrossword.com 名前のとおり、こういうやつ。 縦横に文字を入れていき、すべての行・列で正規表現が満たされるようにできれば正解。 正解した盤面を横に読んでいくと、文章になっている問題もある。 1マスだけの初級問題から、9✕9マスくらいの鬼問題ま…

ReactのSyntheticEventとは何なのか

Reactでイベントを作るとき、引数にeを渡す例がよくある。 例えば公式ドキュメントにもこんなコードが載ってる。 function ActionLink() { function handleClick(e) { e.preventDefault(); console.log('The link was clicked.'); } このeはSyntheticEventを…

diffコマンドで全行違うと言われたので調べたら改行コードのせいだった

自分が作ったHTMLのコードが、非エンジニア向けに配られるExcel資料に載せられることになった。そのExcelファイルを見ると、一つのセルの中にコードがそのままコピペされて入っていた。 Excelファイルを作った人が「これでいいか確認して」と言ってきたので…

Sublime Text3で書いたファイルをVagrant仮想環境に同期させる

うちのPython環境はVagrantで作ったゲストOSの中にある。 一方でエディタはSublime Text3を使っている。flake8で補完が効いてらくらく。 なので、ホストOSでSublime Text3を使って書いたファイルを、手間なくゲストOSにも同期させたいと思っていた。 Sublime…

TypeScriptの型推論について学んだ

型推論とは 最近TypeScriptを使って開発していたけれど、大きな勘違いをしていた。 強い型付けをする言語ということなので、変数を定義するときに毎回型を宣言しなければいけないと思っていたのだ。 例えばこんな感じ。 let x: number = 3; 人間から見れば、…

ReactとHTMLでは使えるAttributes名が違うことがある

Reactで class のAttributeを出力しようとしたら、Visual Studio Codeが以下のようなエラーを返してきた。 [ts] Property 'class' does not exist on type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'. 何かと思ったら、単にJSXで class が使えないというだけだっ</htmlattributes<htmldivelement>…