タグ

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

  • RustでWebフロントエンド開発 - Qiita

    はじめに 何故RustでWebフロントエンド開発をするのか、まずはWebフロントエンド開発に詳しくない人向けにも、背景を簡単に紹介します。 HTML5時代なんて言われるようになって久しいですが、Webブラウザがリッチな表現力を持つにつれて、Webは単純なコンテンツ配信のプラットフォームからアプリケーションのプラットフォームへと成熟してきました。 Webフロントエンドアプリでは、基的にはJavaScriptを使って開発を行います。 しかしながら、JavaScriptを直接書く場合には、言語機能に不足を感じることや、ブラウザに実装されている機能しか利用できないといった問題がありました。 最近では、それらの問題を克服するために、AltJSあるいはJavaScriptトランスパイラを使って、他のプログラミング言語からJavaScriptプログラムを出力するというアプローチが普及してきました。 リ

    RustでWebフロントエンド開発 - Qiita
  • APIサーバを立てるためのCORS設定決定版 - Qiita

    タイトルは釣り、かつ、自分のための備忘録です。 マイクロサービスアーキテクチャでサービスを構築すると、APIサーバをサービスごとに立てるわけですが、 ブラウザ上のJSエンジンからAPIサーバを叩く時に避けて通れないのが、Same-Origin Policy(同一生成元ポリシー)によるCORS (Cross-Origin Resource Sharing)制限です。 これを回避するには、APIサーバ側でAccess-Control-*ヘッダを適切に返す必要がありますが、どう設定するべきかの情報が意外と少ないので(自分的)これが決定版! という設定を考えてみました。 結論 nginxの場合の設定例です。 server { listen 80; server_name site.localhost; charset utf-8; root /var/www/app/public; locatio

    APIサーバを立てるためのCORS設定決定版 - Qiita
  • JavaScript の Number() は副作用がある可能性がある - Qiita

    たまたまTwitterを見てたら以下のようなツイートを見かけました。 つまり、 isNumber っていう関数を作るなら一旦Numberでキャストした値と同一かどうかを比較すれば良いと。おそらく NaN を省いた number 型を true にしたいのかなという感じがする (NaN === NaN は必ず false)。 ただこれには問題があるらしく、 V8 のOptimizerリーダーである bmeurer から下記のようなレスが付いてました。 「 Number() では意図しない副作用があるかもしれない」という意味のレス。最初意味がわからなくて、「おや?」と思ったんですけど、その後で補足が。 「ToPrimitive関数が呼ばれてしまい、意図しないJSの動きをするかも。」とのこと。 つまり、 var a = { x: 1, [Symbol.toPrimitive]: function

    JavaScript の Number() は副作用がある可能性がある - Qiita
  • Go Binary Hacks - GoのシステムコールとGo本体のビルド #golang - Qiita

    はじめに Goは、Go1.5以降C言語による実装がなくなり、ほぼ全てがGoによって書かれています。そのためGoエンジニアは最悪Goのソースコードを読んで問題を解決することができるため、とても生産的な状態にあると言えます。 しかしGoがセルフホスティングだとしてもOSの機能群を呼び出すときには、C言語で実装されているシステムコールを実行しているはずです。では、Goではどのようにシステムコールを実行しているのでしょうか?また、どのようにそれらをビルドしているのでしょうか? この記事では、上記の疑問をGoのソースとドキュメントから読み解いていきます。 Goとシステムコール 一般のGoプログラマがGoでシステムコールを実行するには、syscallパッケージ、golang.org/x/sys/パッケージを利用します。1 関数一覧には見覚えるのあるシステムコールと同様の名前の関数が並んでいます。これら

    Go Binary Hacks - GoのシステムコールとGo本体のビルド #golang - Qiita
  • Go Binary Hacks - go buildせずにビルドする #golang - Qiita

    はじめに Goではルールに従いソースコードを配置してgo buildを実行するだけで実行バイナリを作ることができます。 とても便利なのですが、一体裏で何が行われているのでしょうか? この記事ではgo buildの仕組み、簡単なシンボルテーブルの説明、Goに用意されているバイナリ操作コマンドを学ぶことができます。 実行バイナリの作成 実はGoでもC言語と同様に以下のフローで実行バイナリを生成しています。 1. ソースコードをコンパイルをしてオブジェクトファイルを作成 2. オブジェクトファイルをまとめてライブラリを作成 3. オブジェクトやライブラリをリンクして実行バイナリを作成 go buildではこれらの処理を複数コマンドにより実現しています。 コマンドの詳細はgo buildの-xオプションで確認することができます。 同一パッケージに1つのファイルしかない場合

    Go Binary Hacks - go buildせずにビルドする #golang - Qiita
  • Dockerで作る最強のWeb開発環境2017 - Qiita

    概要 Web アプリケーションを開発しているときに、開発環境に MySQL や Redis を用意しバージョンを揃え、いや Redis はキャッシュにしか使ってないし必須じゃないから開発環境に無い場合のコードも書いて…… というようなことを2017年にもなってやりたくないので、Docker を使って良い感じにやっていきます。 DockerDocker Compose に関する基的な説明は割愛するので、公式ドキュメントをあたってください。 目標 コマンド一発で必要なサービス群が全て立ち上がるようにする Docker Compose を使い、1サービスごとに1コンテナを立ち上げる vendor や node_modules は、ホスト側のものと完全に分離する。OS が違う場合、Native extension があると問題の原因になるので避けたい。 ホスト側ではエディタと git さえ

    Dockerで作る最強のWeb開発環境2017 - Qiita
  • グローバルゲームジャムでクラス設計をやった話2017 - Qiita

    お知らせ 2017/11/26開催の「プログラマのためのUnity勉強会」において、 Unity開発で使える設計の話+Zenjectの紹介 というタイトルで講演しました。こちらのスライドを先に見てから記事を参照されることをおすすめします。 はじめに 去年に引き続き、今年もGGJに参加してきました。今回もそのことを書きたいと思います。 今回の内容は以前に投稿したUnity開発で便利だったアセット・サービス紹介 & Unityでのプログラミングテクニックとつながりがあるので、こちらを先に読んでからのほうがわかりやすいかもしれません。 Global Game Jam とは GGJとは全世界同時に行われるゲームジャムのことです。要する、世界規模のゲーム開発ハッカソンです. プログラマ、デザイナ、プランナ、グラフィッカなど様々な役職の人をごちゃまぜに、3~8人程度のチームを組み、48時間でゲーム

    グローバルゲームジャムでクラス設計をやった話2017 - Qiita
  • 「後付の型システム」の活用についてFlowtypeとReduxから考える - Qiita

    FlowtypeやTypeScriptは静的解析によって事前に型違反を検知することができる。JavaScriptは動的型付けの言語であり、来はランタイムにしか型が出現しない。 FlowtypeとTypeScript、ともに「それ自身がランタイムではない」というのが特徴であり、一種のLintツールだと言うことができる。ランタイムではないがゆえに、嘘の事前条件を与えることでそれらを騙すことができるし、自らに有利な制約を追加できるという柔軟性を持つ。 JavaScriptの現実においての型 例を出そう。 type MyUtil = { foo(v: string): number; }; const util: MyUtil = new HogeUtil(); util.foo(1) //=> type error HogeUtil は何かしらのユーティリティ関数の詰め合わせだが、fooにしか

    「後付の型システム」の活用についてFlowtypeとReduxから考える - Qiita
  • Grumpy(Go running Python)を試してみた。 - Qiita

    序 「すごくスケールする」、とかうまく書くものだなぁ、と 以下のニュースにある意味感心したので、Grumpy(Go running Python)を試してみることに。 マイナビニュース : Google、すごくスケールするPython実行環境をGoで開発 ネタ元のブログを読む。 上記事の中身、《すごくスケール》という見出しを作るために元ブログを抜き書きした気がしたりするので、ネタ元のブログ(元ブログ)の方も斜め読みしておこう。。 Fibベンチマークにおける高スケーラビリティについて 《すごくスケール》での記述 : 「Grumpy」はまだ実験段階とされているものの、CPythonと比較してFibベンチマークで高いスケーラビリティを発揮している。 => 元ブログでの記述。 In particular, Grumpy has no global interpreter lock, and it

    Grumpy(Go running Python)を試してみた。 - Qiita
  • Rustでむりやりプレステ1向けプログラムをつくってみる - Qiita

    この記事はRust その2 Advent Calendar 2016 4日目の記事です。 こんにちは、murachueです。 Rustについて知った時、「RustでOSを書くこともできるんだぜ~」的なことを耳にしたので、きっとCやC++でしか書けないようなモノもRustなら書けるんだろうな~と思いました。 というわけで、今回はRustでむりやり初代PlayStation(以下PS1)向けの簡単なプログラムを作ってみます。 Cという名の高級アセンブラやC++という名の超高級アセンブラに負けないぞ~。 (ちなみに、その昔「ネットやろうぜ!」という一般人でもPS1ゲームが作れるキットがあったらしいんですが、その開発言語はCだったそうです。) いちおう、RustについてはThe Rust Programming Languageの5~6章ちょっとくらいまでに書いてあることくらいを知っている前提です

    Rustでむりやりプレステ1向けプログラムをつくってみる - Qiita
  • Goのencoding/xmlを使いこなす - Qiita

    概要 こんにちは、@ono_matope です。今年はGoでencoding/xmlをよく使ったので、このパッケージの少しだけ突っ込んだ使い方を解説をしてみようと思います。 ここでは、encoding/xmlの基的な使い方から、動的に変化するXMLの扱い方までを説明します。 基的な使い方 まずは基的な使い方です。encoding/xmlを使うと、Goの構造体をXML文書に変換(Marshal)、またはその逆(Unmarshal)が出来ます。例えばこんな構造体PersonをXMLにMarshal/Unmarshalが簡単に出来ます。 例1: 標準のMarshalとUnmarshal Demo: http://play.golang.org/p/bjCr7Fpk_8 package main import ( "encoding/xml" "fmt" ) type Name struct

    Goのencoding/xmlを使いこなす - Qiita
  • 最強のフロントエンドの雛形作った (2016/12/31) - Qiita

    yarn とりあえず yarn install と yarn start だけで動く npm(yarn) scripts babel/webpack での多段ビルド build:js はChromeでだけで動くビルドを吐く(デバッグを容易にするため) build:js:production はIE11+ ava/nyc/istanbul でテストとカバレッジ postcssCSSのビルド uglify-js/csswring で圧縮 CircleCI eslint, flow, ava release ブランチに push で gh-pages にデプロイ ## やってないこと ReactAngular も jQuery も何も入ってない。あくまでそれ以前にやることをまとめた。 参考になるだろうけど、人によっては使わないツールも多いと思われるので、適当に削ってください。 こういうの

    最強のフロントエンドの雛形作った (2016/12/31) - Qiita
  • LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita

    大人気TBSドラマ、「逃げるは恥だが役に立つ」でも話題になったインフラエンジニアという言葉ですが、今ではインターネットインフラを知らないまま開発をするのも難しい状況になっています。クラウドが一般化されたからといって単にリソースの調達が簡単になっただけで、つまりハードウェアの知識が無くても何とかやっていけるようになっただけであり、インフラの知識が要らなくなったなどということは全くなく、むしろdevopsの掛け声とともに、ソフトウェア開発者にインフラを見なければならない新たな責務が課せられたという、なかなか痺れる状況なのだろうと思います。 そういった中で、先日のさくらインターネットのAdvent Calendar最終日に「いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方」という記事を書かせて頂きましたが、今回はLinuxサーバの「負荷」と、ロードアベレージに関して、掘り下げ

    LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita
  • Rustで動的ライブラリに依存しないLinuxコマンドを作成する方法 - Qiita

    最近、Rustでコマンドラインツールを書く機会があったのだが、完成物をローカル環境でビルドし、実際の環境で叩いてみたところlibc.soやlibssl.soのバージョンが異なると言われてしまい、実行することができなかった。 もちろん実行先の環境と同じ環境を用意してビルドしたり、もし実行先に不足するライブラリが存在するなら事前にインストールしておけば良いだけではある。 ただ、そのツール自体はいろいろな環境で手軽に使いたいと考えていたので、適当な環境でビルドしたコマンドバイナリをコピーするだけで利用可能な状態にするのが理想ではあった。 そのためいろいろと調べてみたところRustBookのAdvancedLinkingの節で紹介されている方法を使えば「OSはLinux (and マシンアーキテクチャが同一)」という制約はつくが、動的ライブラリへの依存がなく、かなりポータブルなバイナリが作成できそ

    Rustで動的ライブラリに依存しないLinuxコマンドを作成する方法 - Qiita
  • C++er は“合法”だとか“違法”だとか言いたくて仕方がないけれど、結局どういう意味? それより適合・適格・○○動作・○○規則・診断不要いろいろの関係が謎 - Qiita

    ※conditionally-supported は C++03 の時点では存在しなかったので、その翻訳である JIS に対応する概念は現れません。この記事では今後便宜のため「条件付き対応」などと呼称することにします。 日語訳は何やら微妙なものが多いですね。外から見た動作 や 診断を必要としない はもっと用語っぽくした方が良いのではという気がします (観測可能動作 とか 診断不要 なんていうのはどうかな)。それから ○○の動作 の「の」もない方がそれっぽい気がします。 更に、検索してみると NDR の訳は以下のように発散していてまるで統一されていません。 JIS X 3014:2013 より 診断の必要はない 診断は不要とする 診断は要求されない 診断は,不要とする 診断は,必要としない 診断は,必要ない 診断を必要としない 診断メッセージは不要とする 診断メッセージは必要としない 診断

    C++er は“合法”だとか“違法”だとか言いたくて仕方がないけれど、結局どういう意味? それより適合・適格・○○動作・○○規則・診断不要いろいろの関係が謎 - Qiita
  • Linuxの不揮発メモリ対応について - Qiita

    (2019/6/12追記) 今なおこの記事を参照してくれる方がいらっしゃるのですが、現在は以下のスライドのほうが情報が新しいです。 記事は残しておきますが、新しい情報はこちらをご参照ください。 https://www.slideshare.net/ygotokernel/nvdimmlinux-137104084 はじめに Linux Advent Calendarの24日目の記事として不揮発メモリの状況について記載したいと思います。今回はkernelのソースの中とかのあまり技術的に深いところは突っ込まず、概略レベルです。(深いところはまだまだ勉強中の身です)。間違いなどがあればご指摘いただけると幸いです。 不揮発メモリとは これまでPCやサーバなどで主記憶装置といえば、電源を停止させたり再起動させるとデータがクリアされる揮発性のRAMが使われて来ました。この主記憶としてのメモリが不揮発

    Linuxの不揮発メモリ対応について - Qiita
  • 【意訳】Webpackの混乱ポイント - Qiita

    この記事はWebpack — The Confusing Partsを、筆者の許諾を得て意訳しています。 何か誤りがありましたら、ご指摘いただけると幸いです。 (以下、訳) ReactとReduxで作られたアプリケーションにとって、Webpackは最先端を行くモジュールバンドラです。Angluar2やその他のフレームワークを使っている人々は、たいへんWebpackのお世話になっていることでしょう。 私が初めてWebpackの設定ファイルを見た時、それはさながら宇宙人のようで非常にわかりづらく見えました。しばらく試しているうちに、今では次のように考えるようになりました。Webpackは単に独特のシンタックスと新しい哲学を持っており、それがとっつきにくさの原因になっているのだと。偶発的とはいえ、これらの哲学は、Webpackの人気を押し上げた原因の1つでもあります。 Webpackのとっつきに

    【意訳】Webpackの混乱ポイント - Qiita
  • Linuxのカレンダー | Advent Calendar 2016 - Qiita

    About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)

    Linuxのカレンダー | Advent Calendar 2016 - Qiita
  • Qtのカレンダー | Advent Calendar 2016 - Qiita

    Advent Calendarって何? 12月1日からクリスマスまでの間、日めくりカレンダーのようにわくわくしながら過ごすために、毎日交代で技術エントリを書いていく企画です! どんな内容を書けばいいの? Qt に関連する内容ならなんでもかまいません! 2015年はこんな感じでした Qt Creator の便利な使い方や、Qt で書いた素敵なライブラリやアプリケーションの話など自由に書きましょう! どこに書けばいいの? Qiitaに記事を作成してもいいですし、自分のブログなどどこでも問題ありません。

    Qtのカレンダー | Advent Calendar 2016 - Qiita
  • CSRFトークン インタビューズ - Qiita

    VAddyとCSRFトークン VAddyは脆弱性診断を実行する際に、CSRFトークンを最新のものに更新しながら動作します。そのため「どのパラメータがCSRFトークンか?」を判断するロジックが存在しています。最近あるフレームワーク(後述)について「CSRFトークンを正しく認識できない」というバグを修正したのですが、良い機会なのでメジャーなフレームワークやCMSを中心にCSRFトークンの実装をざっと追ってみました。一覧にしても面白くないので、仮想インタビュー形式にまとめてあります。GitHub上で軽く追ったものが多いので、最新のバージョンでなかったり、解釈が間違っている箇所があるかもしれません。 それでは、どうぞ。 Ruby on Rails 金床(以下、金)「こんにちは。ようこそ。」 RoR「こんにちは」 金「相変わらずシェア高いようですね。」 RoR「はい、おかげさまで。この間はルマン24

    CSRFトークン インタビューズ - Qiita