タグ

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

  • Javascriptを使うのをやめろ:Railsの時代遅れ云々についての結論 - Qiita

    結論: Javascriptの乱用をやめるのが一番。 はじめに書いておきますがしょうもない話です。 結論、開発者としてはどのような方向性でやるべきか、を書いています。 JS多い時代でのフレームワークの根的な問題云々のことは書いてません。 さて、現状、モバイルにおいて、Javascriptでまともに動くものを作ることは難しいです。 Twitterから引き抜いた超優秀なWebエンジニアを多数抱えるMediumですら、未だにモバイルで多数のバグを抱えています。 超優秀なエンジニアを世界一抱えているであろうGoogleのGmailですら、モバイル版のWebはすぐクラッシュします。また、自前スクロールに致命的なバグも抱えています。 正確には「UIが不審な挙動をする」ですが、エンドユーザにとっては同じことで、「バグ」です。 サーバサイドで起こるバグと同じ程度、いやそれ以上に、サービスに影響を与えます

    Javascriptを使うのをやめろ:Railsの時代遅れ云々についての結論 - Qiita
    YaSuYuKi
    YaSuYuKi 2014/06/30
    どんどんブラウザのバグを踏みまくって、ブラウザの信頼性を改善してください。よろしくお願いします。
  • Railsが時代に合わなくなってきた - Qiita

    追記 RailsでJS辛い問題に関しての結論:http://qiita.com/kaiinui@github/items/dad6180f1910c6a4bfd5 -- 近年、(1) Web/App両対応が増えてきたこと、(2) WebでもJSを多用するようになったこと、の二つがあり、以下の点でRailsが微妙になっている。 ViewのJavascriptRailsから独立している API層のサポートが微妙 最初に書いておきますが、特に決定的な解決策もなく、辛いから今後解消されてほしいよね、な話です。 ViewのJavascriptRailsから独立している Railsはとても堅牢。 モデル、コントローラ、ルーティングと、変にいじらない限りはほとんどテストが要らない。 必要なのは、モデルに新たにpublicメソッドを付けたときくらいだろう。 実際、バックエンドはそうそうバグが出ない。

    Railsが時代に合わなくなってきた - Qiita
    YaSuYuKi
    YaSuYuKi 2014/06/27
    Synthを見ると、JavaScript以外の言語で何とかしようとすること自体が難しいのではという気がしてくる。できないはずはないのだが
  • GoogleのHTTPロードバランサーの破壊力があり過ぎる #gcpja - Qiita

    そもそもGoogle Compute Engineのロードバランサー、GCE LBは、1インスタンス・1グローバルIP・ウォームアップなしでいきなり100万リクエスト/秒を捌けてしまう謎性能を備えていて、既存の他社クラウドのLBだけこれで置き換えたい! という声もちらほら聞かれるほどの強力LBサービスであった。 From Compute Engine Load Balancing hits 1 million requests per second! そして今回、正式公開ではないLimited Preview版ではあるものの、GCE LBの新機能としてHTTP Load Balancingが発表された。その性能と機能の破壊力があり過ぎるので、GCPブログ記事のリンクをシェアするだけではあまりにもったいない! と思い、要点を訳してみた。 DNSに頼らない、1グローバルIPによるUS、EU、A

    GoogleのHTTPロードバランサーの破壊力があり過ぎる #gcpja - Qiita
  • 見せてやろうJVMが持つ真のチカラを! JVMのオプションを一覧する方法について。 - Qiita

    java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions 尚、詳細が知りたい方は、この辺りを眺めるとより具体的に分かります。 src/share/vm/runtime/globals.hpp#l481 コマンドの説明 -XX:+PrintFlagsFinal -XXオプションの一覧を標準出力するオプションです。 -XX:+UnlockDiagnosticVMOptions 仮想マシンをチューニングする為のオプションを使えるようにするオプションです。 以下に示すリストでは {diagnostic}となっているものがこのフラグによって変更できるようになります。 -XX:+UnlockExperimentalVMOptions 将来サポート予定であるものの機能性が不安定なオプ

    見せてやろうJVMが持つ真のチカラを! JVMのオプションを一覧する方法について。 - Qiita
    YaSuYuKi
    YaSuYuKi 2014/05/30
    experimentalなオプションの多くがG1GC関連なので、GC変更で更に増えたのか。それでも10個くらいしかないけど
  • ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習

    最近、あまりプログラミングが得意でない人のサポートをする形で、長い時間にわたってペアプログラミングを行っている。そのなかで、気がついた悪い習慣と成長するための良い習慣というものをまとめてみる。 この記事のバックグラウンドとなる体系的知識がになりました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング あわせて読みたい 経営者マインドが足りない!vs. 現場に任せてくれない!の対立をなくすカードゲームをつくった話 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ 心理的安全性ガイドライン(あるいは権威勾配に関する一

    ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習
  • Googleの虎の子「BigQuery」をFluentdユーザーが使わない理由がなくなった理由 #gcpja - Qiita

    「BigQueryは120億行を5秒でフルスキャン可能」は当か? 先日、kaheiさんがGoogle BigQuery(Googleクラウドの大規模クエリサービス)について、こんなエントリを書いていた。 とにかくパフォーマンスがすごい。(Fluentd Meetupでの)プレゼン中のデモで、ディスクに収められた5億件のデータをSQLでフルスキャンするのに3秒しかかからない。9億件のデータを正規表現を含んだSQLでスキャンしても、7秒で終わる(これ、記憶がちょっとあいまい。もう少しかかったかも)。これには驚いた。佐藤さんがGoogleに入社して一番驚いた技術が、一般公開される前のBigQueryだったと言っていたが、その気持ちはわかる。 From Fluentd Meetupに行ってきました これを読んだ時、BigQueryの検索スピードについてちょっと補足したくなった。確かにFluent

    Googleの虎の子「BigQuery」をFluentdユーザーが使わない理由がなくなった理由 #gcpja - Qiita
  • 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita

    あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 「オブジェクト指向プログラミング」と「関数型プログラミング」のたった一つのシンプルな違い あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ 2015年に備えて知っておきたいリアクティブアーキテクチャの潮流 この記事について この記事は新人向けの研修内容を再編集してお送りいたします。 ここで述べる内容はどのようにして現在のプログラミングスタイルが生まれてきたかを理解することで、よりよいプログラムを書くためのもので、正確なソフトウェア工学の歴史を学ぶためのものではありません。正確な歴史を把握したい場合は、原典をあたるようにしてください。 また、想定している読者は「よくあるオブジェクト指向プログラミングの学習」を既にし

    新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita
  • GitHubのmasterを壊しちゃったらなる早でやってみたいこと - Qiita

    概要 GitHubで管理しているブランチ(特にmasterとか)を git push -f origin などしちゃってアッーした場合、やってみると幸せになれるかもしれない手順です。 http://www.objectpartners.com/2014/02/11/recovering-a-commit-from-githubs-reflog/ のパクリです。 まずやること 落ち着く GitではすべてのコミットはSHA1ハッシュで一意に管理され、たとえブランチを上書きしてもGCされるまで消えることはありません。 特に、GitHubではすべてのコミットが保存されているので落ち着いて上書き前のコミットを探しましょう。 次にやること 以下の手順に従って、git push -f で上書きされる直前のコミットを特定して復元し、master に戻します。 GitHub APIのトークンを取得する ここ

    GitHubのmasterを壊しちゃったらなる早でやってみたいこと - Qiita
  • 【無理】WindowsのコンソールでUnicodeを使いたい - Qiita

    前にも書いた気がするのですが、できることの情報共有だけじゃなくて出来ないことの情報も積極的に公開していったほうが良いと思うんです。そうすれば無駄に検索に時間を費やすこともなくなるし。 できないと思って情報公開したら「それできるよ。」と誰かが教えてくれるかもしれないし! さて、Ruby界隈で迫害され続けるWindowsですが、自分はやっぱりWindowsがなんだかんだで一番使いやすいのでWindowsRubyを使いたいんです。快適なRuby開発環境をWindowsに求めて今回は文字コードに関してのお話です。 基礎知識 Windowsの日語版のコンソールはShift-JIS(CP932) 最近のRubyの標準はUTF-8 WindowsでUnicodeといった時には文字コード体系のUnicodeではなくてUTF-16を指すことが多い。 Rubyのコンソールで日語を表示する方法 取れる方法

    【無理】WindowsのコンソールでUnicodeを使いたい - Qiita
    YaSuYuKi
    YaSuYuKi 2014/05/09
    確かに、コンソールをUnicodeにすると、IMEの有効化ができなくなってしまうな
  • SublimeTextでなんでもかんでもコンパイルする - Qiita

    SublimeText(2/3)のbuild systemを使えばいちいちコンパイルの面倒な様々なソースコードが簡単にコンパイルできます。標準で用意されてるいくつかのbuild設定に加え、PackageControlを利用したり自分で.sublime-buildファイル(json記述)を作ってやることでコマンドラインからビルドするようなことは大抵ショートカットが設定できます。 ビルドを設定し、ツール>Build Systemからそれを選択しておけばCtrl+B(Macの場合は⌘Command+B)するだけでビルド。 今回はWindowsでAltJS系やCSSのメタ言語(AltCSS)のコンパイルの一例をご紹介。尚Mac/Linuxでは少し異なる点があるのでご注意。 あと、npm/gemとかのbinにpathが通ってることは前提条件で話を進めます。(あとPackage Controlの有効化

    SublimeTextでなんでもかんでもコンパイルする - Qiita
  • PhantomCSSでViewの回帰テスト - Qiita

    https://github.com/Huddle/PhantomCSS (画像は家より) PhantomCSSJavaScriptでViewの回帰テストができるフレームワーク。上の画像のように異なっている部分をピンク色で表示してくれる。 今回、OSはMacを想定しているが、Windowsとかでも使えるみたい。 準備 使用するためにはPhantomJSとCasperJSが必要なのでインストール。

    PhantomCSSでViewの回帰テスト - Qiita
  • 超チューニング祭に参加&表彰した - Qiita

    ちょっと遅くなったけど、2014/4/26-27の二日間、ニコニコ超会議3内のまるなげひろばの一角で開催された超チューニング祭にドワンゴチーム(メンバーは 江添亮さん, kmizuさん, masarakkiさんと合わせて4人)として参加したり表彰などをした話。 参加チームは全部で18チームかな?(チーム番号は20までだけど、2チーム欠番?)。 競技ルール ルールは、niconicoのスマートフォン版webのコピーの一部改変版を主催者サーバー上に配置し、速度とUIの改善を競うというもの。チームごとにコピーが配置され、各チームに秘密鍵が配られ、その鍵でSFTPで各チーム用サーバーにuploadする。 UIのユーザー投票と測定結果のそれぞれの順位の合計が一番少ないチームが総合優勝となるため、速度だけでもデザインだけでもだめ、というものであった。 投票以外では、UI要件(どの要素がいくつ必要とか、

    超チューニング祭に参加&表彰した - Qiita
  • 10分で基礎をマスターするApache Camel - Qiita

    思ってた以上に前回の記事がアクセス多かったので、今回は使い方のほうをご紹介しようかと。 Apache Cmaelとは 前回の記事に書いた Apache Camel (Java)を使うと開発が楽になる7つの理由 ステップ0 > ガチのHelloWorld package test.hello; public class Hello { public static void main(String[] args) throws Exception { System.out.println("hello camel"); } }

    10分で基礎をマスターするApache Camel - Qiita
  • S2-020類似攻撃のStruts1での対策方法 - Qiita

    恐ろしいことですが、実装が全然違うStruts2の脆弱性S2-020と同様の攻撃手法で、Struts1も脆弱性があることが分かりました。 http://www.lac.co.jp/security/alert/2014/04/24_alert_01.html ここではあまり明らかになっていませんが、原因は // Set the corresponding properties of our bean try { BeanUtils.populate(bean, properties); } catch(Exception e) { throw new ServletException("BeanUtils.populate", e); } finally { if (multipartHandler != null) { // Set the multipart request handl

    S2-020類似攻撃のStruts1での対策方法 - Qiita
    YaSuYuKi
    YaSuYuKi 2014/04/25
    古いシステムだと、どこかで独自に似たことをしている可能性があるので、再確認が必要たな
  • Apache Camel (Java)を使うと開発が楽になる7つの理由 - Qiita

    まず題に入る前に、ApacheCamelの簡単な説明から Apache Camelとは Javaのフレームワーク。どんなフレームワークかというと ベルトコンベア(ライン生産的な)フレームワーク 「生産物」に相当するものはデータ 「生産物を作るロボットや人」に相当するものはコンポーネントや個別実装 「スタート」は外部からのリクエストやタイマーでの監視(例えばメールチェックみたいな) 「最終生成物」はリクエストもらった人に返す フレームワーク自体は超軽量。 概要すぎるので、もうちょっと細かな話をすると データ エクスチェンジと呼ばれる「箱」でベルトコンベアに流れている 箱の中にはメッセージと呼ばれる生産物が入っている 箱の中にはメッセージの他に「エラー」やIDや処理過程の「パンくずリスト」なども入っている メッセージの中はヘッダーとボディがあって、ヘッダーがMap型、ボディがObject型に

    Apache Camel (Java)を使うと開発が楽になる7つの理由 - Qiita
  • jagridを支える技術 - Qiita

    個人的にはaxebomber-cljのサブプロジェクトのつもりで作ったjagridですが、全国のExcelホウガンサーに喜んでいただけたようで、作ったかいがありました。 基的には、position: absoluteで、絶対座標をmargin-top / margin-leftに変換するだけなのですが、細かいところで工夫してありますので、多少解説しておきます。 garden rubyにおけるSCSSと同じ問題領域に、clojureではgardenがあります。 スタイルシートをS式で書けるスグレモノですが、現段階では引数をとる擬似クラスや子セレクタ(>)に対応する機能は無く、ちょっと物足りない感はあります。しかし、CSSをS式で書ける喜びは何物にも代えがたいですね。 [:.jagrid {:border-width (px 0) :line-height (px cell-size) :p

    jagridを支える技術 - Qiita
  • 自動生成したJavaコードに手を加えても綺麗にマージしてくれるJmerge - Qiita

    /** * method1.<br/> * @generated */ public void method1() { System.out.println("a"); } /** * method2.<br/> */ public void method2() { System.out.println("あ"); } この機能を扱うクラスはEMFにあるので、eclipseにEMFを入れておく必要があります。 Eclipseのupdate site で、例えば、Kepler - http://download.eclipse.org/releases/keplerを選択して、Modeling → 「EMF - Eclipse Modeling Framework SDK」をチェックしてインストールします。 merge ruleを記述 どのようにマージするかのルールはxmlで記述します。 こ

    自動生成したJavaコードに手を加えても綺麗にマージしてくれるJmerge - Qiita
  • WebのUIテスト自動化 - Seleniumを使ってみる - Qiita

    Appiumを色々触っているんですが、仕組みが同じSeleniumもちょっと触ってみました。 だいぶ色々なことができそうなのでこちらも触りつつメモを取っていこうと思います。 実際の動画デモ 実際にどんなことができるのか、参考動画を撮ってみました。 内容的にはネタな感じにしていますが、どんなことができるか分かってもらえるかと思いますw Seleniumとは Seleniumはクロスブラウザ、クロスプラットフォームのUIテストツールです。 ブラウザに表示される要素を操作し、取得して想定されうる状態になっているかをテストできます。 また、画面のキャプチャを撮ることもできます。 検索してみると有用な記事がいくつかあるので、詳細はそちらを見てください。 ここでは簡単に触ったメモや所感を書いていきます。 JavaScriptテスト自動化ツールSeleniumのこれまでとこれから(前編)。第1回 日S

    WebのUIテスト自動化 - Seleniumを使ってみる - Qiita
    YaSuYuKi
    YaSuYuKi 2014/04/21
    テストよりも、古くて改修コストが高過ぎるWebアプリの自動運転に使っている。テストは前提条件を別途整える必要があって、結構大変
  • Javaでコードを書くのがだるすぎたけどLombok使ったら思いのほか楽しかった - Qiita

    「Lombok、便利そうだけどまあそんなに使わないかなあ」と思ってたんだけど試しに使ってみたらかなり快感だったのでメモ。 Javaのだるさ Javaでプログラムを書いているとよく「intのtype, Stringのnameというフィールドを持つだけの、特定の処理などは含まないHogeクラスを作ろう。まあ普通に文字列表現もあってequalsによる比較とかもできるように」のように思います。 package org.hogel; public class Hoge { private int type; private String name; public Hoge() { } public Hoge(int type, String name) { this.type = type; this.name = name; } public int getType() { return type

    Javaでコードを書くのがだるすぎたけどLombok使ったら思いのほか楽しかった - Qiita
    YaSuYuKi
    YaSuYuKi 2014/04/18
    issues見たら、「Java8でval使ってたらコンパイルに失敗する」みたいな怖いものが見えたので、言語仕様自体を置き換えるような機能は避けたほうが良さそうな程度の信頼性に見える
  • Java8のCollectorをfor文と比較しながら一から作って理解する - Qiita

    Java8になってたくさんの機能が追加されたッッッ!!!。Stream APIもその一つ!!! lambda関数は理解できた!Stream APIの各機能も大体理解できた。。 だけど、collectメソッド、およびその引数に渡すCollectorがよく理解できなかったので、関数型の考え方に不慣れながら簡単なものを作ってみるところから勉強してみた! collectとは? ストリームの終端処理の1つ。ストリームから流れ出るデータをまとめて1つのデータを返す。 reduceみたいな動きと似ているけどもっと汎用的に記述ができるらしい。返すデータがまたもやストリームでもよい。 collect関数に渡す引数がCollector。つまりストリームからなにか新しいデータを作りだしたいときにCollectorを用意すればなんなりと作り出して左辺に代入できるのだ! OreOreData ood = strea

    Java8のCollectorをfor文と比較しながら一から作って理解する - Qiita