タグ

2017年12月22日のブックマーク (18件)

  • AWS運用担当者のためのセキュリティ入門 | DevelopersIO

    はじめに AWSの運用構築をまかされたインフラエンジニアのかたに向けて、セキュリティで考えるべき視点と代表的なソリューションをご紹介します。 AWSでのセキュリティを考える前に、私達自身のセキュリティを考えてみましょう。 "外出前に鍵をかける"、"ひとけのない道はなるべく通らない"など最低限やっておくべき対策があります。 たくさんのお金をかけてボディガードを雇っても、鍵をあけて外出しては意味がありません。 AWSセキュリティ対策も同様です。 追加のコストを払ってセキュリティソリューションを導入する前に、最低限やっておくべき対策があります。 特に代表的なものをご紹介します。 出所が不明なAMIは使わない EC2の作成元となるAMI(マシーンイメージ)は誰でも公開できます。 中には悪意のあるソフトウェアが含まれるAMIも含まれます。 AWSや信頼できるベンダーが提供するAMIを使いましょう。

    AWS運用担当者のためのセキュリティ入門 | DevelopersIO
  • 極めろ!!Google Chrome Devtools 52の関節技 - Qiita

    転職ナビのフロントエンドを担当しています、@sueshinです。 Livesense - 関 Advent Calendar 2017、22件目をお送りします。 どうぞ宜しくお願いします。 はじめに フロントエンドでよく注目されるJavaScriptではなく、 地味で渋いまるで関節技のような、Google Chrome Devtoolsを使った技術をtipsの形式でまとめました。 免責事項 ショートカットなどは全てMacのキーボード操作にしています。Windowsユーザーは適宜読みかえてください。 Chromeのバージョンは63系に基づいて紹介しています。 52の関節技!! Elements 1.hover時のコンポーネントのCSSルールを表示 使い方 ①DOM要素を選択 ②Stylesペインを開く ③:hovをクリック ④hoverフィルタを適用 2.対応するCSSファイルを開く 使い方

    極めろ!!Google Chrome Devtools 52の関節技 - Qiita
  • Vimで挿入モードに入ったり出たりした時にIMEをコントロールする - Qiita

    この記事はVim2 Advent Calendar 2017の19日の記事(代打)です。 この記事ではmacOS High Sierraでvimの挿入モードに入ったり、挿入モードから出た時にIMEの状態を自動で切り替える方法を説明します。 私はATOKを使っていますが、標準の日本語入力Google IMEを使っていても少しの修正で使えると思います。 挙動としては、挿入モードを抜けた時にIMEの状態を記憶して、挿入モードに入ったときに復元する感じです。 まず最初に、環境設定>キーボード>入力ソースでお好みの英語の入力用ソースを追加します。私の場合はU.S.を追加しました。 結果として入力ソースは以下の画像のようになります。 そして、macOSのIMEをcliで切り替えたりできる、swim を入れます。 IMEを切り替えながら swim list --current を使って、日語と英語

    Vimで挿入モードに入ったり出たりした時にIMEをコントロールする - Qiita
  • 社内の面倒な手作業はZapierにやらせようーーノンプログラマーでも業務自動化ができるツールを導入してみて

    社内の面倒な手作業はZapierにやらせようーーノンプログラマーでも業務自動化ができるツールを導入してみて QA Author: tadashi-nemoto0713 これは Mercari Advent Calendar 2017 22日目の記事です。 こんにちは、メルカリのQA-SETチームで自動化をぶりぶりしている tadashi0713 です。 前回は業務自動化の1つとして、Seleniumを使ったブラウザ操作自動化についてご紹介しました。 tech.mercari.com コメントや反応を見ますと、最近はRPA(Robotic Process Automation)をはじめとした業務自動化に関心が高い印象を受けました。 メルカリでは1ヶ月ほど前にZapierというツールをTeam Planで導入しました。 zapier.com このツールを使って、社員がより簡単に業務自動化ができ

    社内の面倒な手作業はZapierにやらせようーーノンプログラマーでも業務自動化ができるツールを導入してみて
  • netmap でわかる Linux カーネルハック入門 - かーねるさんとか

    以前のエントリー*1で、netmap API を使ったアプリケーションを作成する方法やデータ構造についてとりあげました。今回は少しレイヤーを下げて、カーネルのどのような機能を使って、netmap API が作られているのかについてまとめました。 Linux カーネルハックを始めてみたいけれど、何から手をつければよいかわからないという方にとって、netmap で使われているカーネルハックの方法について知ることは、とても良い導入の一つだと思います。 Linux カーネルハック netmap は、キャラクタデバイスのカーネルモジュールとして実装されています。今回はキャラクタデバイスのカーネルモジュールで何ができるのか、ということと、netmap がそれらをどのように使っているかについて説明します。 カーネルハックで、Linux カーネルに新しい機能を追加する場合に、カーネルのソースコードを直接変

    netmap でわかる Linux カーネルハック入門 - かーねるさんとか
  • 40行以内で正規表現エンジンを構築 | POSTD

    最終目標は、最小限のコードで正規表現ユースケースの大部分をカバーできるくらい十分堅牢な構文を提供することです。 1文字と一致させる まずはじめに、1文字のパターンと1文字で構成される文字列を引数に取り、一致するかしないかを示すブール値を返す関数を作成してみます。1文字のパターンである . はワイルドカードとされ、任意の文字リテラルと一致します。 下記のようなかんじです matchOne('a', 'a') -> true matchOne('.', 'z') -> true matchOne('', 'h') -> true matchOne('a', 'b') -> false matchOne('p', '') -> false function matchOne(pattern, text) { if (!pattern) return true // 任意テキストが空パターンと一致

    40行以内で正規表現エンジンを構築 | POSTD
  • HANAはどうやって行を識別しているのか

    連載の第2回で、Oracle技術者になじみの深いSCOTTスキーマのEMP表を例にカラムストアのイメージを考えてみました。図1はローストアのイメージを示したものです。ローストアは物理的にも1行がそのままの形で格納されているので、ROWIDにより行を特定し、さらに必要なカラムデータを取得します。 ローストアの場合、「SELECT * FROM TBL 〜」のような「全列ワイルド・カード(アスタリスク)記述」とSELECTの後にカラムを明示的に指定した場合の性能的な違いはあまりありません。 全列ワイルド・カード記述はむしろSQLコードの読み難さの観点からコーディング規約等で避けられるケースが多いように思われます。 SAP HANAの場合も全列ワイルド・カード記述が可能なのですが、SAP社のあるセッションに参加した際「性能上の理由からHANAにおいて全列ワイルド・カード記述はお勧めしません。S

    HANAはどうやって行を識別しているのか
  • PowerShell 6.0で範囲演算子(..演算子)が拡張される話 - しばたテックブログ

    とあるPull RequestがきっかけでPowerShell 6.0 RC1から範囲演算子(..演算子)が拡張され、Int型だけでなくChar型も扱える様になりました。 エントリではその内容について説明します。 範囲演算子でChar型が扱える様になります もともと範囲演算子(..)は、 1..5 の様に[Int型の数値]..[Int型の数値]の形式をとり、指定した数値間で連続する要素を持つ配列を生成します。 # 1~5を要素にもつ配列が生成される 1..5 => (1,2,3,4,5) 今回、この指定がChar型を取れる様に拡張され、以下の様な記述が可能になります。 'a'..'e' この例の場合だとa~eを要素にもつ配列が生成されます。 # a~eを要素にもつ配列が生成される 'a'..'e' => ([char]'a', [char]'b', [char]'c', [char]'d

    PowerShell 6.0で範囲演算子(..演算子)が拡張される話 - しばたテックブログ
  • WindowsからMacへ開発環境移行しても変わらず使い続けているツールの紹介 | DevelopersIO

    Vim 多くのUnix系OSに搭載されているテキストエディタです。説明は不要でしょう。 私はGUI版を使用することが多く、Windowsは GVimmacOSMacVim を使っています。プラグインのビルド設定やフォント名の指定など、環境にあわせて多少の調整が必要ですが、ほぼ同じ感覚で使えています。 StackEdit Webで動作するMarkdownエディタです。 ライブプレビュー・スクロール同期の機能があって、動作が軽快で使いやすいです。 全く同じ操作感で使えています。 JetBrains社のIDE IntelliJやPyCharm・RubyMineなど、多くのプログラミング言語向けに専用のIDEが用意されています。 WindowsMacで多少キーバインドが異なりますが、機能的にはほとんど差異がなく問題なく移行できました。 ripgrep grepライクな高速ファイル検索ツ

    WindowsからMacへ開発環境移行しても変わらず使い続けているツールの紹介 | DevelopersIO
  • 長文日記

    長文日記
  • お手軽に静的サイトを構築する - Qiita

    後はcontent以下のディレクトリにMarkdown形式でファイルを置いていったりするだけです。 Themeも用意されており、簡単に導入できます。 hugoの導入は以下が詳しいです。 Hugo | Quick Start サイトを生成する hugo コマンドを実行することで、public以下に生成されます。 S3に設置する public以下に生成されたサイトを設置します。 パブリックアクセスを許可したS3 bucketを設置し、public以下をコピーします。 その後、プロパティからStatic website hostingを有効にします。 東京リージョンに設置した場合、以下のbucket名を置き換えることでアクセス出来るはずです。 https://[bucket_name].s3-website-ap-northeast-1.amazonaws.com CloudFrontを通す C

    お手軽に静的サイトを構築する - Qiita
  • 負荷試験のためのノウハウと Webフレームワークの負荷試験 (Python,Node,Go,PHP) - Qiita

    この記事はRetty Advent Calendar 2017 における 22日目の記事です。 昨日は @saku さんの swiftで丸画像をパフォーマンス高く表示する方法 でした。 はじめに 趣味のBot開発から気づけばWebフレームワークの負荷試験を行なっていました。 Software Engineerの@tkngueです。普段業務としては、Data Engineer/Web Service開発/データ分析やってます 「速さは正義」 とは皆の共通の認識で、言うまでもないことだと思うのですが 記事では、速さってなんだろうって考えてみます。 TL;DR 負荷試験における 速さは面で捉えよう: 品質を50%'ile - 90%'ile - 99%'ile ... で定義する 品質を評価する手段にも気をつかおう: Coordinated Omission は大きな測定誤差を生みます Go

    負荷試験のためのノウハウと Webフレームワークの負荷試験 (Python,Node,Go,PHP) - Qiita
  • Go言語で「なかった」の返し方 - Qiita

    何らかの関数が、その結果として「なかった」ということを返す場合について考えてみます。処理自体は成功したが、その結果「なかった」ということを返す場合です。 いくつかのパターンをあげてみます。 nil まず始めに return nil, nil は 危険 です。エラーでない場合は、何らかの non-nil な値(ポインタ)を返すべきです。 Go言語でコードを書く際はエラーを必ず確認し、そして、以下のような例でエラーでなかった場合は、結果が nil でないことを前提としてコードを書きます。このため return nil, nil だと「ぬるぽ(にるぽ?)」です。 result, err := fooFunction() if err != nil { return err } // ここに来た場合は result != nil が期待される result.bar() よってエラーなしの場合は n

    Go言語で「なかった」の返し方 - Qiita
  • 【2018年版】今押さえておきたいフロントエンド関連 - Qiita

    個人的に押さえておいたほうがいいと思う情報や最近動向が気になっている情報をまとめました。 短時間調べた程度でザックリ書いてますので、掲載している情報に間違いなどありましたら、 ご指摘いただけると助かります。 現時点でWorking Draft,Editor's Draftの情報もありますし、ブラウザ側でほとんど実装されてないプロパティ(業務ではあまり使えない系)も積極的に載せていっているので、対応状況についてはCan I useやMDNで調べてください。 途中まで載せてたけど多すぎてあきらめた... HTML Resource Hints(dns-prefetch, preconnect, prefetch, prerender) 指定しておくことで、ページ遷移時に名前解決・接続・リソースの取得・レンダリングを早めることができる。 Link types - HTML | MDN Prelo

    【2018年版】今押さえておきたいフロントエンド関連 - Qiita
  • mallocを再実装した話 - abcdefGets

    C++ AdventCalendarの12日目 普段私はWEBのフロントエンド仕事にしている。 つまり使う言語はjavascript/typescript等のScript言語だ。 ただ前職や趣味、OSS等でC++によく触っていたので昔実装したmallocの話をすることにした。 mallocとは mallocとはC言語のstdlib.hに含まれるメモリ割り当て関数のことで、 C++やその他の多くの言語で内部的に利用されている。 ヒープを割り当てる方法はいくつかあるが、このmallocがもっともメジャーといえるだろう。 mallocを再実装した 今回はmallocを自分で再実装してちょっと早くした話を書く。 再実装した理由は色々あるが最も大きな理由はただの好奇心。 yatscというtypescriptのコンパイラをC++で書こうと思って実装を始めたときに作った。 ただしyatsc自体は未完で

    mallocを再実装した話 - abcdefGets
  • 【小ネタ】SQLエディタでパラメータを使用する | DevelopersIO

    はじめに DI部のおおたきです。DI部で良く使用するデータベースはRedshitですが、RedshiftにはMySQLのようなユーザー定義変数が使えません。ユーザー定義変数を使うと以下のようにSQLが書けます。条件式に同じ値を複数箇所設定しているよう長いSQLでは一箇所値を変えるだけで済むので非常に便利です。 set @param = 1; select * from test where id = @param; ユーザー定義変数をサポートしていないDBでも世の中に出ている一般的なSQLエディタには似たような機能をサポートしているものがあり、SQL文に変数を設定しておくことでSQL実行時に値を設定してDBにクエリを投げてくれます。 今回は、Redshiftに接続できる以下のSQLエディタについてそれぞれ、同様の機能があるか調査してみました。 SQL Workbench/J Aginity

    【小ネタ】SQLエディタでパラメータを使用する | DevelopersIO
  • MySQLのFLOAT型を使う理由が見つからない件 - hnwの日記

    MySQLのデータ型としてFLOAT型という型があるのですが、これを採用するのは混乱の元ではないか?と感じたので、その詳細を紹介します。 そもそもこの話のきっかけは「MySQLで6桁までの小数点を丸めずに扱うならFLOAT型を使うべき理由」という記事が目に止まったことです。それなりに人気を集めている記事のようですが、私の読んだ限りではFLOAT型を使うだけの根拠が文中から読み取れず、さらに類似する一次情報や英語記事が全く見つからなかったので、真偽が怪しい情報だと感じました。 その後、MySQL上で実験したりCソースコードを読んでみたりした結果、私の得た結論は真逆のものになりました。MySQL警察の方や浮動小数点数警察の方、追試や反論など頂けると助かります。 MySQLのFLOAT型とは MySQLのFLOAT型は原則としてIEEE754浮動小数点数単精度型(32bit)で実現されます*1。

    MySQLのFLOAT型を使う理由が見つからない件 - hnwの日記
  • sort.Slice に学ぶ高速化のヒント - Qiita

    sort.Slice の実装をかいつまんで紹介し、様々な型 (特に様々なスライス型) を受け取りつつ速度を落とさず処理をするヒントを探ってみようと思います。 Go 1.8 から追加されている sort.Slice は、従来の sort.Sort と同等の速度で動作します。 気になるのが、sort.Slice には様々な型のスライスを渡せるのに、要素の交換についての処理をユーザーが記述しなくても良いということです。 // 従来の sort.Sort では、ソート対象に関する操作を定義して sort.Interface として渡している。 type ByValue []string func (s ByValue) Len() int { return len(s) } func (s ByValue) Swap(i, j int) { s[i], s[j] = s[j], s[i] } fu

    sort.Slice に学ぶ高速化のヒント - Qiita
    atm_09_td
    atm_09_td 2017/12/22