タグ

ブックマーク / qiita.com (196)

  • Rustのstatic変数とthread local - Qiita

    プログラムがある程度大きくなってくると、任意の場所からアクセスできる データが欲しくなります。いわゆる、グローバルな変数ですね。例えば、 設定情報を格納した HashMap アプリの状態(context や state と呼ばれるもの)を表す構造体 また、Rust ではマルチスレッドのプログラムが簡単に(しかも安全に)書けますが、個々のスレッドに属するグローバル変数(一般的に、Thread Local Storage / TLS と呼びます)も使いたいことがあります。例えば、 擬似乱数生成器のような、データ生成器の state この記事では、Rust で、このようなデータを安全に扱う方法を紹介します。 グローバルなデータ イミュータブル(不変)なデータ ミュータブル(可変)なデータと、使用上の注意 スレッドローカルなデータ ミュータブル(可変)なデータと、使用上の注意 Rust のバージョ

    Rustのstatic変数とthread local - Qiita
    wadackel
    wadackel 2018/05/01
  • Linuxのユーザーランドをinitから全てまるごとgolangで書く - Qiita

    gokrazy を試してみました。 gokrazyとは https://gokrazy.org/ "gokrazy is a pure-Go userland for your Raspberry Pi 3 appliances" Linuxのユーザーランドをinitから全てまるごとgolangで書いてあるシステムで、しかもコマンド一発でRaspberry Pi 3用にビルドして、ブートするSDカードを作成してくれます。 Quick startの手順通りにSDカードを作って動作することを確認しました。 (ただし、host名gokrazyの解決ができなったので、別の方法でラズパイのIPアドレスを特定してIPアドレス直接指定で、そこで動くWebサーバに接続しました。) びっくりする小ささ SDカード上に作られたルートファイルシステムを見てみました。 $ df -h . Filesystem S

    Linuxのユーザーランドをinitから全てまるごとgolangで書く - Qiita
    wadackel
    wadackel 2018/03/29
  • ゲームでよくされるチート手法とその対策 〜アプリケーションハッキング編〜 - Qiita

    ゲーム、特にソシャゲ、ネトゲにおいて様々なハッキング(チート)が実際に行われます。 大きく分類すると、アプリケーションハッキング(クライアントサイドでのハッキング)とネットーワークハッキング(サーバーへのハッキング)とその他のハッキングがあります。 多くはエンジニアがよくやらかすバグであったり、知識(経験)不足を狙ってくるものです。 今回は内容のボリュームの関係上、アプリケーションハッキングについてのみ、実際によく行われるチート行為やその方法、対策などについて中心に挙げていきたいと思います。 ボタン連打 何が起こる? コスト(課金石など)を払うことなく無限にアイテムが増殖する。 やり方 上記のような「ボタン」を連打する。 データベースの排他制御(トランザクション + ロック)を行う。 連打ができないように一度ボタンを押したら処理が完了するまで押せないようにする。 具体例・解説 1.について

    ゲームでよくされるチート手法とその対策 〜アプリケーションハッキング編〜 - Qiita
    wadackel
    wadackel 2018/03/21
  • Chaos Engineeringの概要とPumba入門 - Qiita

    この記事は リクルートライフスタイル Advent Calendar 2017 4日目の記事です。 はじめに こんにちは!データエンジニアリンググループでエンジニアをやっている @shotat です。 最近は CETというプロジェクトDataflowを書いたりGoを書いたり無限にSQLを書いたりしています。 先月サンフランシスコで行われた QCon2017 に参加してきました。 QConではArchitecture, DevOps, Microservices, AI, CS, Culture, Web…と幅広いトラックがあり、全体としてサービス・組織をどのようにスケーリングさせていくか?という点に関心が集まっていたように感じました。 トラックの一つとしてChaos Engineeringがあり、中でもChaos Architecture のセッションはカンファレンスで一番Attende

    Chaos Engineeringの概要とPumba入門 - Qiita
    wadackel
    wadackel 2018/03/12
    Chaos Engineering について
  • Go & Versioning(vgo)を読んで大きな変更が入ったなと思った - Qiita

    Help us understand the problem. What is going on with this article?

    Go & Versioning(vgo)を読んで大きな変更が入ったなと思った - Qiita
    wadackel
    wadackel 2018/02/23
  • TypeScript 2.8 の Conditional Types について - Qiita

    今日はTypeScript2.8で導入されたConditional typesについて書きます。 TypeScriptの型システムへの機能追加という意味では、keyofやMapped Types以来の変更と言ってよいでしょう。 お察しのとおり、こういう機能追加をぶち込んでくるのはAnders Hejlsberg御大です1。

    TypeScript 2.8 の Conditional Types について - Qiita
    wadackel
    wadackel 2018/02/13
    ライブラリの作者が上手く取り入れることで、利用者が快適に開発に取り組めそう
  • 男と女が寄りそうとどうなるのか - Qiita

    この記事は Go Advent Calendar 2017 の記事です。 アダムとイブ 男と女が寄りそうとどうなるのか。これは神様がアダムとイブという異なる性を地に授けた時から既に決まっている事なのもしれません。 このお題を解き明かしたい。Go 言語を使って。 ネタとしては以下の記事を参考にしました。 どうしたら「彼女」から「奥さん」になれるかを『Word2Vec』に聞いてみた | 人工知能ニュースメディア AINOW 男と女が寄りそう事。それはつまり「男」というベクトルと「女」というベクトルが合わさった時にどの様な結果が得られるのかという事なのです。 そこで今回は「男」というワードと「女」というワードのベクトルを合成する為に word2vec を使ってこのお題を調べてみようと思います。 word2vec とは 自然言語処理を行う手法の一つとして word2vec があります。word2v

    男と女が寄りそうとどうなるのか - Qiita
    wadackel
    wadackel 2017/12/20
  • ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita

    この記事は「WACUL Advent Calendar 2017」の18日目です。 WACULでフロントエンドエンジニアをしている@bokuwebと申します。 記事ではファミコンのエミュレータの実装について解説していきたいと思います。 2018/11/21 追記 重複しますが以前発表した資料も合わせて参照してください。 はじめに 以前ファミコンエミュレータをJSで実装した記事を書きました。 開発過程の雰囲気はこちらを参照していただけると掴めるかと思います。 上記の記事では技術的な内容にはほぼ触れなかったため順に解説していこうと思います。 今回はまずはHello, World!までに焦点をあてて解説してみたいと思います。ファミコン関連の解説は検索すると結構ヒットはするのですが、ファミコン体の解説が多く、エミュレータを実装するにあたり、どのような手順で進めてくのが、どのような点に気をつける

    ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita
    wadackel
    wadackel 2017/12/18
  • Webアプリケーションフレームワーク導入時に考慮すべき22の観点 - Qiita

    記事では、 チームによる持続的に変更可能なWebアプリケーションの開発を目標に、フレームワーク導入時に考慮すべき22の観点を紹介する。 フレームワークによって特徴は異なるが、番導入にあたって、考慮すべきポイントはあまり変わらないので、極力フレームワーク1に依存しすぎないよう配慮する。また、話をシンプルにするため、REST APIを提供するアプリケーションを題材とする。 前提 ソフトウェアのエントロピー ソフトウェアがエントロピー増大の法則を避けられないことを、体感している開発者は多いだろう2。普通にアプリケーション開発を続けると、開発スピードは鈍化し、品質は低下してバグが増え、開発者からは技術的負債への怨嗟の声が聞かれるようになる。エントロピー増大というフォースは極めて強力で、意思を持って立ち向かわなければ、容易にダークサイドに堕ちてしまう。 関心事の分離 大規模Webアプリケーション

    Webアプリケーションフレームワーク導入時に考慮すべき22の観点 - Qiita
    wadackel
    wadackel 2017/12/17
  • 1日10万枚の画像を検証するためにやったこと - Qiita

    お前は今までスクショした画像の枚数を覚えているのか? こんにちは。WACULでフロントエンドエンジニアをしている @Quramy です。 冒頭のやつは書いてみたかっただけです。気にしないでください。ちなみに僕はDIOよりも吉良吉影派です。 11月末に、Node学園祭で Introduction to Visual Regression Testing というLTをさせて頂きました。 この時は大分話題を絞っての発表でしたので、今日は弊社で実施しているフロントエンドの画像回帰テストについて、LTでは割愛した部分も含めてヌルっと書いていこうと思います。 そもそも、WACULのアドベントカレンダーでこのネタを書くのはこれが初めてではありません。 2016年にも、 @bokuweb が コンポーネント/単体テスト単位でのvisual regressionテストを行うためのツールを作った話し で、画像

    1日10万枚の画像を検証するためにやったこと - Qiita
    wadackel
    wadackel 2017/12/16
  • ブルゾンちえみ判別器をブラウザ上に実装する - Qiita

    皆さん、Yahoo!検索大賞 2017はご覧になりましか? このアワードで大賞に輝くと、「今年の顔」の名誉を手に入れることができるんです。 そんな栄えある今年の大賞は、ブルゾンちえみとのこと。 他にも、俳優部門は高橋一生、女優部門は吉岡里帆、といった具合に各分野毎に受賞者がいます。 ところで、僕はあまりテレビを観ないので、誰が誰やらわかりません。 このままだと安心して2018年を迎えることができないので、画像を読み込んでそれが誰なのか判定するアプリが必要です。 一目見れば区別つきそうなものですが、僕の濁った目で直接見るよりも、機械に判定させた方がよいに決まっていますので、作ってみました。 実際の動きはこちらから確認できます。 今回はブルゾンちえみも含め、Yahoo!検索大賞の受賞者から以下の5人をピックアップし、判別できるようにしています。 ブルゾンちえみ(お笑い部門) 高橋一生(俳優部門

    ブルゾンちえみ判別器をブラウザ上に実装する - Qiita
    wadackel
    wadackel 2017/12/10
  • [OpenCV][WebAssembly]ブラウザで2画像の特徴量比較してみる - Qiita

    はじめに このエントリは、画像解析ライブラリであるOpenCVをWeb Assemblyとしてビルドしてブラウザで動かす、というのを一通りやってみたメモです。 主なコンテンツとして下記を含みます。 OpenCVwasmビルド方法、.wasmのカスタマイズ方法 性能改善(モジュールのキャッシュ、Web Workersなど) 動作はここから確認できます。 お題 主な主眼は「ブラウザでOpenCV動かす」部分で、build筋鍛えること自体が目的なので、題材は正直なんでもいいのですが、ここでは2枚の特徴点を抽出してマッチングする、というのをJavaScriptでやってみることにしました。インターネッツに山のようにサンプルが転がっていますが、Pythonで書くと下記です。 import cv2 img1 = cv2.imread('img1.png') img2 = cv2.imread('img

    [OpenCV][WebAssembly]ブラウザで2画像の特徴量比較してみる - Qiita
  • TypeScript Transformerについてのお話 - Qiita

    ※ この資料はToKyoto.jsの発表資料として作成したものです Transformer is 何 2.1で導入された機能 TypeScriptトランスパイル処理の体 async/awaitやgeneratorといった複雑なdownpileを見通しよく実装するための内部改善的な意味合いが強かった1 ちなみに、Transformer導入以前(<= v2.0.x)は、単一のファイル(emitter.ts)にトランスパイル処理が全て記述されていた2。 Transformer動作イメージ 例: Exponential Operator(ES2016)のdownpile

    TypeScript Transformerについてのお話 - Qiita
    wadackel
    wadackel 2017/09/15
  • --headless時代の本命? Chrome を Node.jsから操作するライブラリ puppeteer について - Qiita

    --headless時代の命? Chrome を Node.jsから操作するライブラリ puppeteer についてJavaScriptChromee2e puppeteer はHeadless Chrome をNode.jsで操作しやすくしたライブラリです。今日(※ 2017/8/17)一日で凄い勢いでGitHubのトレンド入りしており、TLでも話題になっていたので、早速触ってみました。 Node.jsでChromeを操作するというコンテキストにおいては、Nightmare.jsと同じレイヤに属するプロダクトですね。Nightmare.jsはElectronを介在させることで、Chromeの操作を実現していましたが、今年の5月にChromeでheadlessモードが利用可能になって以降1、headless Chromeを直接操作するライブラリが色々と出始めていますね。この系統は、chr

    --headless時代の本命? Chrome を Node.jsから操作するライブラリ puppeteer について - Qiita
    wadackel
    wadackel 2017/08/17
  • FlowのObject type spreadの挙動を確認する - Qiita

    はじめに v0.42.0 からリリースされている Object type spread 機能ですが、ドキュメントが 公式サイト にはまだ無いようです。 そこで実際挙動を調査したところ、個人的には中々難しい仕様だったので、まとめてみました。 検証に使った flow-bin のバージョンは v0.45.0 です。 基的な挙動 サンプルとして、以下のような型を定義してみます。 type T1 = { x: number, y: number, z: number, }; type T2 = { y: number, z: string, a: number, ...T1, b: number, }; T2 には複数のプロパティが定義されていますが、それぞれこのような意図で定義しています。 x = 拡張する側にあり、拡張される側にはない y = 拡張する側にあり、拡張される側に同じ型がある z

    FlowのObject type spreadの挙動を確認する - Qiita
  • LambdaでAWSの料金を毎日Slackに通知する(Python3) - Qiita

    はじめに 個人アカウントは基的に無料枠で運用しているので、少しでも請求がある場合はいち早く気づきたいです。 先日、とあるハンズオンイベントで使ったリソースを消し忘れて、最終的に$30ぐらい請求が来てしまいました。。。 CloudWatchで請求アラートは設定していますが、閾値超えが想定の場合、当然見逃すことになり、最終的な請求額に驚くハメになります。 これを防ぐためにLambdaで毎日SlackAWS料金を通知することにします。 先日LambdaPython3に対応したので、せっかくだし勉強がてらPython3で実装したい。 ネット上にはNode.jsでの実装例が多いようで、今回はこちらを参考にPython3で実装してみます。 必要なもの Slack incoming-webhooks URL 取得についてはこちらを参考に 適当なchannel lambda-uploader req

    LambdaでAWSの料金を毎日Slackに通知する(Python3) - Qiita
    wadackel
    wadackel 2017/06/24
  • Vim scriptを処理系レベルから高速化しようとしている話 - Qiita

    TL; DR Vim scriptをパースしてASTを作り、高速化を図ります。リポジトリはこちら→wholekeik/vim 追記: ベンチマーク追加しました AST化 Vim script は実行のたびにコマンドをパースしているので非常に遅い言語です。コマンドをパースしておいてASTとし、それを実行すれば高速化が見込めます。しかし、Vim scriptでは引数の解釈が各コマンドによって全く異なるため、共通のパーサーを書くのは不可能です。したがって事前にパースするのではなく実際に実行しながら並行してASTを作っていきます。なおVim scriptの実行はユーザーの入力(コマンドモード)やオートコマンド、関数などがありますが、ASTとなるのは関数内のみです。また、AST化は行単位で行われます。 大まかな流れ 関数を定義する 通常通り呼ばれる 呼ばれたExコマンドのうち、ASTにできるものがあ

    Vim scriptを処理系レベルから高速化しようとしている話 - Qiita
    wadackel
    wadackel 2017/06/10
  • 実装を引き受ける前に詰めておくべきWebフロントエンドの想定漏れチェックシート - Qiita

    リキッドレイアウトのように幅が常に変動するレイアウトのデザインは、動かないカンプからは実際の挙動が読み取れず、デザイナーの意図が汲み取りきれないことが多い。また、複雑化するアニメーションの実装においても、カンプだけではコミュニケーションに不備が生まれてしまう。ほかにも、CMSを使った案件ではデザインカンプと実際のデータの間に齟齬がある可能性もある。 実装効率を高めてスケジュール通りに仕事を終わらせるには、とにかく事前に仕様を固めることが大事だ。ワイヤーフレームやデザインの途中の段階からなるべくデザイナーとコミュニケーションを重ね、想定外の要件が発生しないように気をつけるべきだろう。 この記事では、デザイナーやフロントエンドエンジニアが見落としがちなWebフロントエンドの課題について列挙していく。 ホバー表現を後から指示される ツッコミ 後から仕様追加されると困るから先に決めて! メモ 最近

    実装を引き受ける前に詰めておくべきWebフロントエンドの想定漏れチェックシート - Qiita
    wadackel
    wadackel 2017/02/08
  • コンポーネント/単体テスト単位でのvisual regressionテストを行うためのツールを作った話し - Qiita

    この記事は「WACUL Advent Calendar 2016」の23日目です。 今年の10月からWACULでフロントエンドエンジニアをしている@bokuwebと申します。 今回はコンポーネント単位でのvisual regressionテストについて書いてみたいと思います。 概要 単体テスト時にコンポーネントのキャプチャーを取り、差分を取るvisual regressionテストを行うために、karma-nightmareとreg-cliというツールを作りました。まだ実験的ではありますが、それらを用いたテストや作成時に検討したことなどを書いてみます。 そもそもViewのテストどうしてます? フロントエンドやっている方と話すときに、よく、Viewのテストをどこまで、どんなふうにやるか?というざっくりした質問をしてみたりします。「お、その話題ですか!」というリアクションする方もちらほらいて関

    コンポーネント/単体テスト単位でのvisual regressionテストを行うためのツールを作った話し - Qiita
    wadackel
    wadackel 2016/12/23
  • スクリーンショット拡張Macアプリ「Fuwari」を作って公開しました - Qiita

    株式会社LITALICO でエンジニアをやっています、@kentya6です。 『LITALICO Advent Calendar 2016』12日目の記事となります。 今回、スクリーンショット拡張Macアプリケーション「Fuwari」を作って公開しましたので、開発の経緯や流れ、アプリの使い方などを書いていきます。 Fuwari Web Site 開発背景 私は今までKiritoriを仕事でもプライベートでもよく使っていました。 画面の任意の範囲を一時的に最前面にしたい時や、範囲指定の画像保存をする際に領域を確認してから保存する時等に使うアプリケーションです。 普段は、様々なIDEのインスペクタの値を一時的に見やすい位置においてみたり、スライドに埋め込むためにパパっと画像の範囲を指定してから保存するために使っていました。 しかしmacOSSierraにしてからは、私の環境ではKiritor

    スクリーンショット拡張Macアプリ「Fuwari」を作って公開しました - Qiita
    wadackel
    wadackel 2016/12/13
    kiritori, コーディング時に地味に多用してたのでありがたい...!