You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
This post is also available in 简体中文, 日本語, Deutsch and Français. Two years ago today we announced 1.1.1.1, a secure, fast, privacy-first DNS resolver free for anyone to use. In those two years, 1.1.1.1 has grown beyond our wildest imagination. Today, we process more than 200 billion DNS requests per day making us the second largest public DNS resolver in the world behind only Google. Yesterday, we
はじめに はじめまして。エンジニアのDannyです。 今回は TypeORM という O/Rマッパー で、エンティティを定義する際のガイドラインについて書かせていただきます。 TypeORMとは TypeScript製の O/Rマッパー です。 リポジトリ 公式ドキュメント 弊社ではTyepScriptで実装しているサーバアプリケーションがいくつかあるのですが、その一部で採用しています。 TypeScriptで開発する際の O/Rマッパー としてはデファクトになりつつあると思います。 Node.js/TypeScriptの O/Rマッパー 比較や、TypeORM の使用感に関しては弊社suzukiの資料をご参照ください。 本記事では、最新バージョンである 0.2.7 を使用します。 コンストラクタの定義 さっそくですが、まずはコンストラクタについて考えてみます。 ここでは、MySQLで以下
概要 TypeScriptの開発において、型定義ファイルが用意されてないnpmライブラリを使うのは厄介なものです。 無理やり require("...") でJSのまま読み込ませてもいいですが、ちゃんとした型定義を使用したくなるときもあります。 作成した型定義ファイルは元のnpmライブラリに取り込んでもらい package.json の types で指定してもらう方法 1 と、 DefinitelyTyped に取り込んでもらい @types/*** パッケージとしてnpm installする方法がありますが、どちらも取り込んでもらうためにはPull Requestを投げたり、ライブラリのメンテナに新しいバージョンとしてリリースしてもらったりで時間がかかってしまいます。 Pull Requestは投げつつ、それが取り込まれてリリースされるまでの間、自分のプロジェクトで作った型定義ファイル
はじめに コロナウィルス(COVID-19)でリモートワークの頻度が増加している人も多いと思う。そうなると、必然的にリモート会議の数も増える。ここで課題として上がってくるのが、リモート会議に対する姿勢、また練度だ。 リモートワークを多用して、リモート会議に慣れているチームもあれば、もともとオフサイト出社がメインでリモート会議に慣れていないチームもある。前者の慣れているチームであれば、スムースに適応できると思うが、後者の不慣れなメンバが多い部署・チームは、もっと効果的なやり方に気づいていない可能性もあると思う。(この場合、前者のメンバはストレスを溜めることにもつながる…。たとえば、一方的に音質の悪いリモート会議を想像して欲しい) そこで、この記事では自身の5-6年のリモート会議経験や、見聞きした情報から良いと思っているプラクティスを紹介していく。それによって、少しでもより効果的なリモート会議
エンジニア採用自体は2012年頃からやっていて2013年は自チームの採用責任者をやったらスタートアップ2社でエンジニア採用の責任者をやってきました。 色々と面談をやってきて1つわかったことは面談もスキルでエンジニアとして優秀でも面談が得意とは限らないことです。 なので、面談も数をこなしてその分、振り返りをすればスキルとして身につくものだと考えています。 長年採用周りをやってきた中で見えてきたやってはいけないこととやっていることをまとめました。 やってはいけないこと人がいないからといって妥協して採用する 私も採用をやり始めた当初は結構、これをやってしまっていました。 目の前にプロジェクトがあって人がいない状況だと焦ってしまいこの人と働きたいなと思えてなくても妥協して採用してしまうことをやってしまいました。 結果、良いチームの中に1人だけ能力が追いついてない人材が入りチームが崩壊するという事が
みなさん、最近人生のパーティショニングしてますか? こんにちは、勝利です。 今回はMySQLのパーティショニングについて紹介させていただきます。 MySQLのパーティショニングとは? MySQL5.1ぐらいから使えるようになった、1つのテーブルを分割する機能。 テーブルを分割するので、格納できる根本的な容量の拡張や、やり方(Plunning)によっては高速処理を実現できます。 分割した際のデータ振り分け方法としては大体以下のような形があります。 RANGE ・・・ パーティションごとに範囲を指定して振り分ける LIST ・・・ パーティションごとに格納する値で振り分ける HASH ・・・ 1つのカラムの値を式の結果で振り分ける KEY ・・・ 1つ以上のカラムの値をMD5関数等で評価して分割する 使用するメリットとしては下記2点のようなことが考えられます。 メリット1 [高速化が見込める]
参考URL パーティショニングとは パーティショニングの種類 RANGE パーティショニング このタイプのパーティショニングは、指定された範囲に含まれるカラム値に基づいて、行をパーティションに割り当てます。 LIST パーティショニング RANGE によるパーティショニングに似ていますが、別個の値のセットのいずれかに一致するカラムに基づいて、パーティションが選択されます。 HASH パーティショニング このタイプのパーティショニングでは、テーブルに挿入される行内のカラム値を操作するユーザー定義式によって返される値に基づいて、パーティションが選択されます。関数は、負ではない整数値を返す MySQL の有効な式で構成できます。このタイプを拡張した LINEAR HASH も使用できます。 KEY パーティショニング このタイプのパーティショニングは、HASH によるパーティショニングに似ていま
CTOの Shoken です。キッチハイクアプリはReact Nativeで開発を始めて3年目に入りました。アプリのサイズは開発を続けるうちに大きくなっていってしまいます。この記事では React Native アプリが、どのファイルでサイズが大きくなっているかの分析と、Androidでアプリのダウンロードサイズを減らした方法を紹介します。 サマリ キッチハイクアプリでは JS Bundle は 3.4 MB 、フォントは 48 MB だった。 Androidはビルド時の最適化オプションとApp Bundleにすることでサイズが 35% 減った。80.6 MB -> 66.8 MB サマリ JS Bundle のサイズを調べる react-native-bundle-visualizer を使った JS Bundle の構成を確認する Android Studio APK Analyzer
同じデコレータのセットをプロパティで繰り返し使用している場合、それらを一緒に構成する新しいデコレータを作成できます。 const CombinedDecorator = (target, property, descriptor) => { IsOptional(target, property, descriptor); IsString(target, property, descriptor); Column('text')(target, property, descriptor); } class Person { @CombinedDecorator() name: string; } 一般的なユースケースをカバーするこれらのいくつかを考え出すか、設定オブジェクトを取り込み、オプションでパラメーターに基づいてデコレーターを適用するデコレーターファクトリーに変えることを検討できま
GitHubが2019年11月、新機能「GitHub Actions」を正式に公開した。GitHub上のリポジトリやイシューに対するさまざまな操作をトリガーとしてあらかじめ定義しておいた処理を実行できる機能で、今まで外部サービスとの連携が必要だった自動テストや自動ビルドなどがGitHubだけで実現できるようになる。今回はこのGitHub Actionsについて、機能の概要や基本的な使い方などを紹介する。 GitHubだけでCI/CD的な機能を実現できる「GitHub Actions」 昨今では、ソフトウェア開発におけるさまざまな工程を自動化するような技術の開発や普及が進んでいる。その1つに、CI(Continuous Integration、継続的インテグレーション)やCD(Continuous Delivery、継続的デリバリー)と呼ばれるものがある。CIはソフトウェアのビルドやテストを
フロントエンドエンジニアの今村です。TypeScriptではenumを使わずunion型を使いましょう、という話を書きます。 モチベーション 何を今さら、と思う方もいるかもしれません。 TypeScriptのunion型はenum的なものを表現可能であり、基本的にenumよりもunion型を使うべき、という意識を持っているTypeScriptプログラマーはすでに少なからずいるのではないかと思います。しかし、ではenumの使用はいかなる場合も避けるべきなのか、そうでないとしたらどのような基準でenumとunion型を使い分けるべきなのか、といった点について、広く合意の取れたガイドラインはなさそうです(少なくとも私は知りません)。この結果、コードレビューなどで少しやりづらさを感じることがあったので、白黒つけてしまいたいという気持ちからこのブログを書いています。 結論としては、enumは全面的に
センスウェイは、トイレにまつわるさまざまな課題をIoTによって解決する法人向けサービス「ToiletMaster」(トイレットマスター)の提供を開始した。 オフィス内のトイレ利用状況をIoTデバイスで管理可能にするユニークなサービス。個室トイレのドアに開閉センサーを取り付けることで、空き室状況の表示や長時間の利用検知、集計データによる分析にも対応した。検知センサーに低消費電力のLoRaWAN対応センサーを採用したことで、電気配線工事を行うことなく容易に設置できるのが特徴。
GitHub Actions を利用した NestJS アプリケーションの Google AppEngine への自動デプロイAppEngineNestJSGitHubActionsGoogleCloud この記事は NestJS Advent Calendar 2019 15 日目の記事です。 本日は NestJS アプリケーションのデプロイ先として最も有力な PaaS 環境である Google AppEngine へと、新興の CI/CD サービスである GitHub Actions を利用して自動デプロイを実現してみます。 NestJS のデプロイ環境について NestJS のデプロイ先はたびたび話題にあがります。最終的にはケースバイケースなのでこれ!という形で断定はできませんが、少なくとも大抵の場合は適当な CI サービス + AppEngine で問題ないかと思います。 以下に参
react-apollo の調査で GraphQL サーバーをさっくり実装する必要があり、 今 graphqool どうなってるんだっけ、と見に行ったら prisma が推奨されていました。 日本語情報がまったくなかったので、調査した結果をまとめておきます。 prisma とはなにか GraphQL の形をした ORM MySQL/Postgre への マイグレーションヘルパー付き モデル定義からインデックス自動生成 CRUD自動生成 graphqoolの次期版? PaaS に依存せず、自分でデプロイ可能なマイクロサービス 自分も最初よくわからなかったのですが、 使ってみた感じでは、 GraphQL の形をとった ORM + Migration Helper です。 $ npm i -g prisma $ prisma init my-graphql-server # REPL で実装を選
UUIDは重複しないIDを生成する手段として便利ですが、特にversion4(乱数によるUUID)を利用する場合は一意性を得るのと同時に乱雑さも得ることになりますので、UUIDに順序性を求めることができません。 UUID - Wikipedia https://ja.wikipedia.org/wiki/UUID UUID(Universally Unique Identifier)とは、ソフトウェア上でオブジェクトを一意に識別するための識別子である。UUIDは128ビットの数値だが、十六進法による550e8400-e29b-41d4-a716-446655440000というような文字列による表現が使われることが多い。元来は分散システム上で統制なしに作成できる識別子として設計されており、したがって将来にわたって重複や偶然の一致が起こらない前提で用いることができる。 UUIDだと実現できない
先日、GCPからGCEインスタンスに付与した外部IPを有料化するという連絡がきました。 現在はGCEの料金表にも次の記載があります。 月額300円程度ですが、月々かかってくる費用なので少しでも安いほうが嬉しいです。 そこで、外部IPを持たないGCEインスタンスでWEBサービスの開発を行う方法を試してみました。 GCEインスタンスの作成 まずは、外部IPを持たないGCEインスタンス instance-1 を作成します。 ここでは80番ポートで開発用webサーバを起動するために、「Allow HTTP traffic」にチェックをつけました。 もし他のポートを利用する場合は、そのポートで通信できるようにFirewallルールを設定してください。 少し待つとインスタンスが作成され、外部IP(External IP)が付与されていないことが確認できます。 SSHによる接続とwebサーバの起動 作成
ほんの2年前、チームコラボレーションアプリ分野ではSlackのシェアや評判が圧倒的に強く、「マイクロソフトのTeamsは使い勝手がSlackに比べて悪く、ユーザー数も見劣りがする」などと言われていた。ところが、Teamsがユーザー数でSlackを追い抜いたことで、近い将来Slackを引き離すとの分析まで現れている。優良企業顧客を狙ってGAFAの一角であるグーグルも参戦するチームコラボアプリ戦国時代において、Teamsは本当にSlackを破れるか。在米ジャーナリストである筆者が、勝敗の鍵を握ると思われる3つの視点から探る。 米NBCニュースの東京総局、読売新聞の英字新聞部、日経国際ニュースセンターなどで金融・経済報道の基礎を学ぶ。現在、米国の経済を広く深く分析した記事を『週刊エコノミスト』などの紙媒体に発表する一方、『Japan In-Depth』や『ZUU Online』など多チャンネルで
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く