2018-01-01から1年間の記事一覧

私の成長は、本当に良い成長だったのだろうか?

この記事は、#セイチョウ・ジャーニー Advent Calendar 21日目の記事です。 今年は去年と比べて、幅広いことをやりました。GolangとRuby on Railsを学び始め、LTにも2回登壇しました。いろいろなイベントに行き、また仕事以外のエンジニアコミュニティにも登…

Redash CLIで役立ったコマンド

この記事は、Redash Advent Calendar 2018 18日目です。 データ活用を全社的に推進するために、今年から社内にRedashを導入しました。 幸いにもカスタマーサポートチームにSQLの経験者がいたため、比較的スムーズに普及し、多くのメンバーに毎日よく使ってい…

LTに初めて申し込むときの不安要素とその取り除き方

この記事は、エンジニアの登壇を応援する会 Advent Calendar 2018 11日目です。 LT、それは... 聞くは易し、行うのは難し。 バリバリ登壇するエンジニアに憧れてはいたものの、人前で登壇するなんて無理無理... 今までの自分はそんな風に思っていました。 そ…

Redashでadmin権限のユーザーがデータを見られなくなった

Redash運用中にやらかしたことをシェア。バージョンは4.0.1。 Redashにはdefaultというグループがあらかじめ用意されており、ユーザーを登録すると一度全員がdefaultグループに振り分けられる。 しかしこのグループは権限設定がFull Accessになっているため…

Redashで閲覧権限のみのユーザでもダッシュボードを見られるようにする

redash.io 業務でRedash(v4.0.1)を使い始めたが、今のところなかなか便利なうえ運用も楽なので気に入っている。 ただしwebコンソールでできることがまだまだ限られており、かゆいところに手が届きにくいときもしばしば。 特に権限の設定については、webコン…

builderscon 2018という楽しいお祭りに参加しました

とある方からチケットを譲渡いただけるという幸運にあずかり、土曜日に参加してきました。 buildersconに参加したのは今年が初めてなのですが、他のカンファレンスと違い、お祭りだなあという雰囲気を強く感じました。 特定の技術に絞ったわけではなく、また…

Jenkinsでシェルスクリプトを-eオプションなしで実行したい

最近Jenkinsを使い始めたが、Jenkins上でシェルスクリプトを書くと、特に何も指定していなくても #!/bin/sh -xe として実行されてしまうようだ。 普通であれば、スクリプトの途中であってもエラーが出れば即ビルド失敗となるので助かる仕様だろう。 しかし今…

DjangoのView呼び出しの仕組み ~getメソッドはどう呼ばれるのか

最近仕事でDjangoを使う機会が多くなった。 プログラミングを勉強し始めた頃にDjango Girls Japanのチュートリアルをやったことがあるからまあ大丈夫だろうと思っていたが、すぐにそれだけでは全く歯が立たないと気づいた。業務でDjangoを扱う際は、デフォル…

DjangoでTemplateDoesNotExistと言われたら

別のブログ記事用に、Djangoで簡単なアプリを作った。モデルがなく、単にView関数を呼び出してTemplateを出すだけ。 from django.shortcuts import render from django.views.generic import View # Create your views here. class IndexView(View): def get…

ファイル内の重複行を楽に探す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…