タグ

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

  • C++で作るRuby拡張 - Qiita

    はじめに この記事はRuby Advent Calendar 2019の8日目の記事です。 昨日の記事は @Nymphium さんのRubyでもalgebraic effectsがしたい!でした。 この記事は、C++でのRuby拡張実装について、つらつらと書いている記事になります。 内容としてはTataraというRubyで型を使えるライブラリを作ってみたで紹介した自作Ruby拡張を作るにあたって得たC++でのRuby拡張実装知見の記事になります。 Ruby拡張って? 皆さんが普段使っているRuby(ここではCRubyのことです)はCによって実装されています。ですので、Cを使ってRuby拡張機能を作成することもできます。 つまり、Cで既に作成されているライブラリなどをRuby拡張として作成することができるというメリットがあります。CでRuby拡張を実装した場合、Rubyで実装するよりも高速

    C++で作るRuby拡張 - Qiita
    rochefort
    rochefort 2019/12/28
    本題とは関係ないが、Helix 面白そう
  • 現場で役に立つ!最小限の修正で仕様変更に対応する方法(Ruby) - Qiita

    この記事は Ruby Advent Calendar 2019 第6日目の記事です。 時間がないのにどうしても仕様変更しなくてはならないとき、どんな考え方で対応しますか?ってお話です。 はじめに この記事では、主に大規模Webアプリケーションの開発に於いて、新規開発ではなく修正や拡張を行うシーンを想定して、無駄な工数をなるべく削減すべく自分なりに考えて実践しているベストプラクティスを書いている。 要は、時間優先で修正にあたるとき、実際に自分が頭の中で考えていることを分かりやすく書いた、みたいな内容だ。 また、紹介するコードはRubyに特化したものになっているが、概念としては特定のプログラミング言語に依存しない、考え方そのものについて書いているつもりだ。 対象とする読者層 対象とする読者は、プログラミング経験1年以上、設計工程よりも実装工程をメインに担当していて、コーディングしてテストしての

    現場で役に立つ!最小限の修正で仕様変更に対応する方法(Ruby) - Qiita
    rochefort
    rochefort 2019/12/28
    ちょっと長いので端折りながら読んだが、「特異メソッドを付与」っての面白い。
  • Ruby 2.7 Advent Calendar 2019 - Qiita

    Ruby は毎年クリスマスにバージョンが上がります。 今年も順調にいけば 12/25 に Ruby 2.7 がリリースされる予定です。 2.7 がリリースされるまで毎日少しずつ変更点を見ていきながらリリースを待ちましょう。 Ruby 2.6 は https://qiita.com/advent-calendar/2018/ruby26

    Ruby 2.7 Advent Calendar 2019 - Qiita
    rochefort
    rochefort 2019/12/28
    一人で書ききるのすごい
  • HTTPリクエストを型安全にする手法とOSS - Qiita

    気付いた頃には全部埋まってた命のTypeScriptアドベントカレンダーの初日が投稿されないようなので代わりに投稿させてもらうことにしました! エンドポイントに文字列を使い続ける限りHTTPリクエストは型安全に出来ない axios, ky, fetch, request, superagent... どれを使っても「エンドポイントの指定が文字列」なせいで型安全にならない・・・ という課題にTypeScriptユーザーなら誰もが共感してくれるのではないかなーと思ってます (TypeScript 4.1 の template string types である程度は改善しそうです) 例えば、axiosで以下のようなリクエストをするとして、 const userId = 1 const res = await axios.get<History>(`/user/${userId}/histori

    HTTPリクエストを型安全にする手法とOSS - Qiita
  • VirtualBox 6.0 から Hyper-V と共存できるはず - Qiita

    今まで 長い間、VirtualBox を用いた仮想マシンの動作と、Windows の Hyper-V 有効状態は共存できないとされてきた。実際に、Hyper-V を有効にした状態で起動した Windows の上では、CPU による仮想化支援を Windows が占有するため、VirtualBox 上で仮想化支援を利用できなかった。したがって、VirtualBox (や VMWare)を利用した VM 実行のパフォーマンスは劣化するし、エラーの発生を招いていた。VirtualBox は完全仮想化したホスト OS の実行のために、VT-x や AMD-V を利用していたからである。 記事として VT-xとHyper-VとVirtualBoxの関係についてのメモ, VirtualBoxで64bitVMを作れるようにする(Hyper-V有効なWindows 8.1 Pro編), Vagrant 事

    VirtualBox 6.0 から Hyper-V と共存できるはず - Qiita
    rochefort
    rochefort 2019/11/20
    なるほど、CPUによるのか
  • スーパーマリオのジャンプのアルゴリズム - Qiita

    先日、気持ちのいいジャンプを目指してというQiitaの記事を見かけました。記事中では、マリオのジャンプについても触れられています。マリオというと、マリオブラザースやスーパーマリオブラザース等々、色々あるのですが、これはおそらくスーパーマリオブラザースの事だと思われます。ジャンプアクションゲームといったらスーマリですね。 そのマリオのジャンプの仕組みは「マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて~」と書かれていて、別サイトのブログへのリンクが張られています。 マリオのジャンプ実装法とVerlet積分 ただ、この記述については不正確であるという別のブログもあったりします。 マリオの完コピvol.28 ジャンプの解析と修正 ホントのところはどうなんでしょうか?世界で最も有名なゲームジャンプがどのように処理されているのか気になったので調べてみることにしました。 原典にあたる

    スーパーマリオのジャンプのアルゴリズム - Qiita
    rochefort
    rochefort 2019/11/15
    C#化って簡単にできんのかな
  • 【Tips】Ubuntuへのpg gemインストール時に発生しうるエラーへの対処 - Qiita

    ERROR: Error installing pg: ERROR: Failed to build gem native extension. current directory: /home/【ユーザー名】/.anyenv/envs/rbenv/versions/2.4.5/lib/ruby/gems/2.4.0/gems/pg-0.18.4/ext /home/【ユーザー名】/.anyenv/envs/rbenv/versions/2.4.5/bin/ruby -r ./siteconf20190314-768-1y18wv0.rb extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-confi

    【Tips】Ubuntuへのpg gemインストール時に発生しうるエラーへの対処 - Qiita
    rochefort
    rochefort 2019/11/12
    pqってなんやねん
  • FFmpegことはじめ - Qiita

    FFmpegとは すっげぇ統合的でクラスプラットフォームで動作する動画・音声を扱うツール 動画からサムネイルを作成するときにも使える 動画や音声を切り分けたり、逆に結合してやったりできる。 こんな人向け FFmpeg使いたいけどよく分からない人(全部読んで) 動画を撮影したもののサイズが大きいのでアップロードできない!!品質をある程度確保しつつ、ファイルサイズをなるべく抑えたい人(映像オプションへGO) インターネット上のファイルをインプットにできることを知らない人(httpインプットへGO) インストール とりあえずMacのhomebrewでのインストール方法、個人的にはlibfaacとlibx264が入っていれば最低限の動作はすると思っている。 実際には他にもオプション付けまくってインストールしているから下記のサンプルで動かなかったらごめんなさい $ brew install ffmp

    FFmpegことはじめ - Qiita
  • 認証ありプロキシを認証なしにするDockerコンテナ

    はじめに 皆さんの会社では、社内プロキシを利用していますか? 私のところでは認証ありの社内プロキシ利用が必須となっており、設定しなければ外に出て行くことができません。 セキュリティやキャッシュ等、プロキシには良い面が多いですが、様々なツールを使い始めようとする際に障壁となることも多いです。 私が配属先で最初に教わったのは、これから幾度も立ちはだかるであろうプロキシの壁をいかに突破するかです 社内で、なんか外に繋がらないなーと思ったら、ほぼ間違いなくプロキシを設定し忘れたかミスっているかのどちらかです。 厄介なことに、ツールによってプロキシの認証設定の方法が異なっていたり、また、モノによっては認証IDに含まれている“@”を“%40”に変えないといけないというトラップがあったりもします。 (私のところでは認証IDがメールアドレスなので、見事にハマりました) それと、アプリケーションの中には認証

    認証ありプロキシを認証なしにするDockerコンテナ
  • Railsのログをなんとかしたい人生だった - Qiita

    Railsのログ問題 便利なことにRailsは特に設定しなくてもproduction.logにログを吐いてくれる。エラーメッセージやSQL文も出力してくれるので助かる反面、以下のような問題点がある。 1リクエストで複数行流れるので、エラー調査や緊急対応時にgrepできない デフォルトだと若干冗長すぎる Fluentd等のログの活用を考えた際にパースが非常に面倒 Rails.loggerをオレオレカスタマイズするのも無くはないが、メンテナンスのことも考えて、ログ出力用ライブラリLogrageを使ってJSON形式のログをスマートに出力するようにした。 Logrageとは Railsのログのいい感じに出力してくれるライブラリ https://github.com/roidrage/lograge ちなみにLogrageの説明ではRailsのデフォルトログを「noisy and unusable,

    Railsのログをなんとかしたい人生だった - Qiita
    rochefort
    rochefort 2019/10/18
    json log
  • RubyでBigQueryから簡単にデータを取得する 2017年1月最新版 - Qiita

    はじめに みなさんGoogleのBigQuery使ってますか?とても便利なのでこちらの記事でも紹介させて頂いたように弊社でもほぼ全てのデータをBigQueryに入れて分析しています。 RubyからBigQueryを扱うGemは以前からいくつか存在しているのですが、現状の最新(2017年1月時点)ではどう扱うのが一番良いのかをまとめておきます。 BigQueryを扱えるGem達 abronte/BigQuery Googleで検索すると一番上に出てくるのでこのGemを利用している人も多いと思います。 しかし、2016年になってからあまりメンテされている様子はありませんので、利用は控えたほうが良いでしょう。 google/google-api-client-ruby こちらのGoogleが提供しているgoogle-api-client-rubyを最新版にしてBigQueryのインターフェースを

    RubyでBigQueryから簡単にデータを取得する 2017年1月最新版 - Qiita
    rochefort
    rochefort 2019/10/02
    standard sql対応してた
  • TypeScript3.6の新機能 - Qiita

    2019/08/19にTypeScript3.6のRC版がリリースされました。 以下はリリースの公式アナウンス、Announcing TypeScript 3.6 RCです。 Announcing TypeScript 3.6 RC 日、TypeScript3.6のRC版をリリースしたことをお知らせします。 このRCは、正式リリース版に非常に近いものとなる予定で、正式リリースまでの数週間は安定性を改善していきます。 RC版を使用するには、NuGetから入手するか、npmから以下のコマンドを使ってください。 エディタのサポートは以下のとおりです。 ・Visual Studio 2019/2017 ・Visual Studio CodeおよびSublime Text 3.6の新機能を試してみましょう。 Stricter Generators TypeScript3.6では、イテレータとジェネ

    TypeScript3.6の新機能 - Qiita
    rochefort
    rochefort 2019/09/10
    ts3.6
  • Angular 2アンチパターン集 - Qiita

    @armorik83です。Angularアドベントカレンダーの4日目となる日は、かつて好評だった拙記事"AngularJSアンチパターン集"にあやかって、Angular 2(以下、単にAngularと表記したときは2.0以上4未満を指す)について気をつけた方がよい点――アンチパターンをまとめたいと思います。 Angular 2.xでアンチパターンは起こりうるか Angular 1系とは大きくAPIが変わったAngular 2系。APIが大きく変わった理由として、Web標準により近い構成を取れるようにする目的がありました。例えば、angular.module()ではなくTypeScriptのimport fromをベースとするソース分割の仕組みであったり、ES2015 classを標準としたComponentやServiceの定義であったり、$qではなく標準のPromiseを使ったりなどで

    Angular 2アンチパターン集 - Qiita
  • Angular パフォーマンスアップ最短最速マニュアル - Qiita

    動機 Angular(2 or 4)で開発中のプロダクト(SPA)が重い JS の肥大化 起動が遅い パフォーマンスチューンしたい で、みんないろいろ調べると思うけど… AOT コンパイルとか module の最適化とか手段はいろいろあるのはわかった が、ブログエントリを読んで今開発中のプロダクトに自分で解決策を注入するのが大変 サマリ 対工数効果が高い部分に絞ってパフォーマンスチューンできる、「これさえやればOK!」みたいな進研ゼミ的マニュアルを作った(半ば覚え書きだけど) 平均起動時間1は84%減 4000msec超 -> 640ms2 JS ファイルサイズ3は23%減 2770kb -> 2153kb (Parsed Size) 最適化後の Gziped Size は 393.47kb 前提 この記事は、AngularClass/angular-starter を使ったプロダクトで実

    Angular パフォーマンスアップ最短最速マニュアル - Qiita
  • TypeScriptでConstructor外で関数を宣言型か無名関数を代入するかでの実行比較 - Qiita

    表題のような記述によってどのようにコンパイル、実行されるのだろうとおもって、 例えば、Class内でメンバメソッドを登録する際に無名関数を代入する場合と、宣言型とで何か違いがあるのかなと思って、ちょっと実験です。 下記func1とfunc2の記述が違います。 module A{ interface ImoritaA{ name:string; } class Aclass implements ImoritaA{ constructor(public name){ this.name = "fafa" } public func1= ()=>{//constructor外、無名関数を代入 } public func2(){ //constructor外、宣言型 } } } var A; (function (A) { var Aclass = (function () { function

    TypeScriptでConstructor外で関数を宣言型か無名関数を代入するかでの実行比較 - Qiita
  • javascriptでブラウザの言語設定を取得する - Qiita

    サーバ側でブラウザの言語設定を見るには Accept-Language ヘッダを読めばいいけど、クライアント側でそれに該当する情報を取得したくなったので、調査結果をメモ。 言語設定を取得するスクリプト とりあえず結果があればいい人向けに、最初に結論を書いておきます。 // 最優先の言語だけ取得 var language = (window.navigator.languages && window.navigator.languages[0]) || window.navigator.language || window.navigator.userLanguage || window.navigator.browserLanguage; // クライアント側で受け付けている言語リストを取得 var languages = window.navigator.languages || [ w

    javascriptでブラウザの言語設定を取得する - Qiita
    rochefort
    rochefort 2019/07/03
    accept-language
  • KeycloakでOpenID Connectを使ってシングルサインオンをしてみる(他のフロー(Implicit Flow、Resource Owner Password Credentials、Client Credentials)編 - Qiita

    KeycloakでOpenID Connectを使ってシングルサインオンをしてみる(他のフロー(Implicit Flow、Resource Owner Password Credentials、Client Credentials)編SSOopenid_connectSingleSignOnKeycloak 今日やること Keycloakアドベント 19日目は暗黙フロー(Implicit Flow)、Resource Owner Password Credentials、Client Credentialsを欲張ってやります。 暗黙フロー(Implicit Flow)編 暗黙フロー(Implicit Flow)とは何か? こんなの。 認可コードフローとは何が違うの? OpenID Provider(OP)はIDトークンとアクセストークンを直接発行する 認可コードフローでは、認可コードをR

    KeycloakでOpenID Connectを使ってシングルサインオンをしてみる(他のフロー(Implicit Flow、Resource Owner Password Credentials、Client Credentials)編 - Qiita
  • Angular AoTガイド - Qiita

    はじめに どうも。最近、方々で「build筋」だの「うぇぶぱっ筋」だのと発言して顰蹙を買っている @Quramy です。 さて、皆さんAngularのAhead of Time(以下AoT) Compileは利用していますか? とても良い仕組みだと思っているのですが、まとめられた記事もまだ殆ど見かけません。 僕自身は少し前に業務案件に適用させたばかりです。折角なので記憶が鮮明なうちに投稿にしておこうと思った次第です。 このエントリは下記の3章構成でお届けします。例によって結構長いので、自分が必要としているテーマに合わせて好きな部分を読んでください。 基編: AoTの仕組みについてのざっくり解説. 知っている人は読み飛ばしてOK 実践編: 主に僕がAoTに取り組んだ際に行ったこと、ハマったポイントについての説明 発展編: AoT環境を手に入れた後に何をすべきかについて 対象読者 このエント

    Angular AoTガイド - Qiita
    rochefort
    rochefort 2019/06/20
    aot
  • サクラエディタで開くを右クリックに追加するコマンド - Qiita

    サクラエディタを新規インストール時に右クリックメニューに追加できるがうっかり設定漏れたとか、サクラエディタを自動インストールする時に一緒に設定しておきたい人向け(=僕)。 設定 「HKEY_LOCAL_MACHINE\SOFTWARE\Classes*\shell」レジストリハイブに追加すればよいので、ここに reg.exe コマンドで突っ込むだけ。 64bit環境 reg add HKLM\SOFTWARE\Classes\*\shell\sakuraeditor /d "SAKURAで開く(&E)" reg add HKLM\SOFTWARE\Classes\*\shell\sakuraeditor\command /t REG_SZ /d "\"%ProgramFiles(x86)%\sakura\sakura.exe\" \"%1\"" reg add HKLM\SOFTWARE\

    サクラエディタで開くを右クリックに追加するコマンド - Qiita
  • JSON Web Token(JWT)って結局使っていいの? - Qiita

    JSON Web Token(JWT)について調べていたら、JWTは絶対に使ってはいけないとかいろいろ書かれていて、使ってよいか良くわからなかった。 なので以下の点を調べてみました。 - JWTはなぜ使ってはいけない、と言われているのか - JWTの代替案はあるのか なお、私はただのフロントエンジニアセキュリティの専門家ではないので素人の個人的見解です。注意してください。 TL;DR JWTは間違えやすく、脆弱になりがち JWTの代替はPASETOが良さそう JSON Web Tokenとは JSON Web Token(JWT)はセキュアなトークンを発行するための標準仕様です。 個人的に以下の点が特徴的だと思います。 標準仕様 仕様がシンプル 任意のデータをトークンに含められる トークンの偽造、否認は出来ない 暗号化されていないので中身は簡単に見られる 署名アルゴリズムが選択可能 JW

    JSON Web Token(JWT)って結局使っていいの? - Qiita