偶然暇だったら出ましょうということでid:takuya-aとid:shiba_yu36とチームを組んで出た.チーム名は「ディメンジョナルハイソサイエティぬれねずみ」で,サークル名ジェネレータで決めた.僕は3回目で過去2回は予選敗退,二人は初参加. www.doujinbu.com 準備 事前準備はだいたいしばゆーがやってくれて助かった 最初はGoでやるかって言ってたけど慣れたPerlになった.練習する時間はないので,ぶっつけ本番で問題の質によって言語を決めようという話をしていた デプロイはrsyncで 初参加の年はソフトウェア工学を重視しCircleCIが通ったら自動デプロイしていた これが最悪で,急いで手で書き換えてデプロイしたら自動デプロイが走ってロールバックされたり,ベンチマーク実行中にデプロイされたり 去年はrsyncでデプロイしていて,コミットする前にデプロイしてうまくいったらコ
日常的にVueを使用している開発者が、Reactはどうなのだろうと思い、ReactとVueで全く同じアプリを作成した時のそれぞれの工程を比較して分かった相違点を紹介します。 I created the exact same app in React and Vue. Here are the differences. 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 隣の家の芝生は青く見える VueとReactで作成したアプリの見た目を比較 VueとReactはデータをどのように変更させるか アイテムの新規作成 アイテムの削除 イベントリスナーを渡す 子コンポーネントにデータを渡す 親コンポーネントにデータを戻す 終わりに 隣の家の芝生は青く見える 私は現在の職場でVueを使用しており、Vueがどのように機能するかかなり理解してい
Flow 0.74 Typescript 2.9 TypeScriptの設定は以下な感じ 先にまとめ やってみることによって学びがあった。良かった。 FlowのObjectTypeは必要なプロパティがあれば同じ型として使えるがTypeScriptの場合はそうではない。 基本型はだいたい同じだが、mixedがないのとvoidの挙動が違う。 Maybe型がない。 TypeScriptは型を書かないとanyになるがFlowは推論は推論してくれる 多分、お互いに似たようなことはできるが、実際にやるにはそれなりの経験が必要そうだ。逆をやってみるのも面白そう。 これをやってみた感じからするとFlowのほうが好み。 Stringへの暗黙型変換 // @flow "foo" + "foo"; // Works! "foo" + 42; // Works! "foo" + {}; // Error! "fo
いきさつ 最近、Atcoder Beginners Selection をなんらかのプログラミング言語で解いてブログに上げる行為が流行っているようなので、Pietで流行に乗っていくことにした。 Pietとは 難解プログラミング言語の一つで、ソースコードがドット絵であることが特徴。慣れてくればソースコードがフローチャートに見えてくるのでその点においては画期的(だと信じてる)。詳しいことは「Piet」で検索してください。 AtcoderではPietのソースコードを提出できないので、手元でPietのc++インタプリタに画像データを埋め込んで提出している。 A はじめてのあっとこーだー 実際に提出したc++コード AのPietコードと説明付きコード A問題からループを使っていく必要がある。文字列の入力は1文字ずつ入力を受け取って、その文字が改行かチェックしながら行う。Pietはプログラミングが何も
ここにクソコードがある。 誰が作ったかはわからぬ。それが、どのような経緯でクソコードとなったのか、 あるいは、最初からクソコードであったのか、それらは全てクソコード自身が知るのみである。 ファーストコンタクト ある日、営業からシステム案件を打診されたので見積もりして欲しい。というメールが来る。 とある企業の既存システムに機能を追加する簡単な案件ですが、なななんとソースや仕様書をご支給いただけます! と、それはサンタにプレゼントが貰えると信じて疑わぬ子供のような真っ直ぐなメールである。 ソースコードが入った圧縮ファイルを受け取ったプログラマは、早速、コードを読んでみる。 そのシステムが本当にいいコードで書かれているかを判断するには時間がかかるが、 クソコードであるかはおおよそ30分でわかる。 インデントがタブとスペースどちらかに統一されていないとか、フレームワークの誤用があるとか、またはフレ
はじめに プログラムを書いたことがある人なら、誰しも「ハマる」という状況に陥ったことがあると思います。 ハマるとは、一般的には何かから抜け出せなくなってしまうことを意味しますが、システム開発の世界では、ある課題やエラーなどに対して、解決の見込みが見えないまま多くの時間をかけてしまうことを意味します。 今回は、ハマってしまったときに、いかに問題を解決し、ハマった状態から脱却するかについて書きたいと思います。 目次 問題解決における6つの基本 最初に、問題解決の基本的な考え方を書いておきます。当たり前のことばかりだと感じるかもしれませんが、この基本が完璧にできていれば、ハマることはそもそも稀だと思っています。 もし、普段の実装の中で「同じことで丸1日悩んでいるけど解決の手立てがない」「これにさえ気付いていればもっとはやくできた」「単純なミスだった」といったことに時間を溶かしているのであれば、問
SupershipでAndroidアプリのエンジニアをやっている加島です。 もうすぐAndroidアプリの開発をはじめて2年が経つのですが、苦労したことやそれを乗り越えて嬉しかったことがたくさんありました。そこでこの記事ではAndroidアプリのエンジニアになって私が学んだ大切にしていることを少しでも役に立てば、と思い書いておくことにしました。 今はどんなアプリを作っているか今までの2年間はSunnychatという新規サービスの担当で立ち上げから携ってきました。Sunnychatは動画や写真をシェアして、それをきっかけにスタンプやコメントでコミュニケーションをするアプリです。まだ触ったことない方はぜひストアからダウンロードして触ってみてください。 Google Play / App Store これまでの2年間でやってきたことまだサービスも立ち上がりの時期だったので、半年くらいはコア機能の
Sucuriは2月9日(米国時間)、「JavaScript Injections Leads to Tech Support Scam」において、最近のマルウェア調査の結果、URLネーム変換と画像ファイルを使うことで人気のあるソーシャル共有プラグインの一部であるかのようにふるまうように難読化された興味深いJavaScriptコードのマルウェアを発見したと伝えた。このJavaScriptコードはAddThisソーシャル共有プラグインの一部であるかのようにふるまうように細工されていると説明がある。 記事で取り上げられているマルウェアは、最終的にWebサイトを訪れたユーザーを危険性の高いマルウェアへ感染するように促すように仕込まれたサイトへリダイレクトするとされている。このマルウェアは自身がマルウェアであることを悟られないように複数のレイヤで巧みにふるまうとのことで注意が必要。 さまざまな工程で
Go 言語で Apache Bench (ab) を実装してみた。 https://github.com/takatoshiono/go-ab なぜか 以前、wc コマンドを実装した。その時に ab も候補に入っていたけど、ab は http 通信をするプログラムなので、より単純な wc を選択したのだった。その次に何やるか、ということで http クライアントのコードを書く練習になりそうな ab を実装してみることにした。 期間は2016年10月から1ヶ月くらいやったあと、2ヶ月くらいブランクがあって、2017年1月に再開して一ヶ月くらいやっていた。コツコツとよく続いたと思う。 Apache Bench (ab) とは Apache Bench (ab) は HTTP サーバーの性能を測定するためのプログラムでシングルスレッドで動作する。Apache HTTP サーバーのソースコードに含
去年、DroidKaigi2016の公式アプリをオープンソースで作りましたが、2017もコードを公開しました。 github.com コードだけではわかりにくいところを少し補足しておきます。 2016とは別アプリ 2016とはリポジトリもパッケージも違います。別アプリです。 なぜ去年のリポジトリを引き継がなかったかというと、個人のリポジトリではなくDroidKaigiのリポジトリとして管理したかったというのが1つ。もう1つは、同じアプリをメンテナンスしてると飽きちゃうし、またゼロから作りたかったからです。 余談ですが、カンファレンスアプリに必要な機能はほぼ決まっているので、モデルや画面をガチガチに固めて設定ファイルとリソースを用意するだけで作れるライブラリに切り出してもいいかもなと考えています。 Kotlin メインはKotlinではなくJavaで作っています。コトラーが「Kotlin一択
「それ○○で標準化されているよ」って指摘されることほど、エンジニアにとっての屈辱は無いですよね。 ということで、世間知らずだと思われないためにも、手始めにISO縛りで有益そうな標準規格1をまとめてみました。 ちなみに、ISOとは…? 国際標準化機構(International Organization for Standardization)は国際規格を策定する世界最大のボランタリーな開発組織で、国家間に共通な標準を提供することによって、世界の貿易を促進することに貢献している という組織だそうです。 (どう考えてもIOSと略すべきだと思うのですが、ISOになった理由は諸説2あるようです。) コード体系 ISO 639 (言語名コード) 例: 日本語 = ja, jpn 朝鮮語 = ko, kor 中国語 = zh, zho, chi, zho ドイツ = de, deu, ger, deu
Pythonでインデントをスペース2つにした際のflake81とautopep82の設定方法について書きます。 なぜPythonでインデントをスペース2つにするのか Pythonのコーディング規約(PEP 8)ではインデントについて以下のように言及されています。 Use 4 spaces per indentation level. しかし、最近の傾向としてインデントはスペース2つであることが多くなってきています。 例えば、Google Java StyleやGoogle JavaScript Style Guideなどが挙げられます。また同じオフサイドルールを採用するCoffeeScriptでのコーディング規約でもスペース2つを採用する事例もあります。実際、スペースを4から2にすることによって、一行あたりに書けるコードも増え、結果的にコードをコンパクトにすることができます。 また、基本的
これはなに? はじめに AGCあれこれ Temporary I HOPEHOPEHOPE ASTRONAUT NOW LOOK WHERE YOU ENDED UP ふと気になりました いい時代ですね 1201&1202エラー なにそれ? カ、カルマンフィルターだー!!! カルマンフィルターの開発経緯 その他面白コメントアウト集 TRASHY LITTLE SUBROUTINES(つまんないサブルーチン) NUMERO MYSTERIOSO(神秘の数字) OFF TO SEE THE WIZARD COME AGAIN SOON HONI SOIT QUI MAL Y PENSE(悪意を抱く者に災いあれ)、NOLI ME TANGERE(私に触れるな) PINBALL_GAME_BUTTONS_AND_LIGHTS.agc おわりに 反省 参考文献 これはなに? この記事はeeic Adv
三行で頼む コンパイラが斜め上の最適化をするようになったからnull安全ないと怖いよね 一行で終わっちゃった。 本文 最近、ツイッターを見ていると、プログラマの間でnull安全という言葉がバズっていますね。私も次のようなエントリを楽しく眺めていた訳です: null安全でない言語は、もはやレガシー言語だ null安全はいいぞ。だって、型安全はいいぞ。 null安全を誤解している人達へのメッセージ さてそんな中、少しだけ私の心に留まったエントリがこれです: null安全な言語は、本当にゼロコストか これを読んで、私がまず直感的に思ったのは、むしろもはやnull安全のない言語はダメかもしれないということでした。こう書くと、このエントリの内容を否定してると誤解されるかもしれませんが、全くそんなことはありません。このエントリの筆者さんもnull安全の有用性を否定しているわけではないですし、私も古いタ
コード改善 meetup #2 http://kaizen.connpass.com/event/42118/ の発表資料。 自己紹介 名前: 正徳 巧 会社: 株式会社grooves 言語: Ruby github: sinsoku twitter: @sinsoku_listy コードを改善する 3つの方法 コードを改善する3つの方法 1. コードを削る 2. コードを直す 3. 増殖を防ぐ コードを削る よくありそうな業務コード 条件分岐が多い 似たような処理が複数箇所にある コピペっぽいけど微妙に違う 既存の仕様が謎 ココロ、オレル 未使用メソッドを探す 未使用メソッドは基本的に 全削除 する。 全削除に対する不安 いつか使うかも... disabled? の対象性のため enabled? も... どこかで使っているかも... 全削除に対する不安 いつか使うかも... disab
エンジニアにとって一度書いたソースコードを改善するリファクタリングは欠かせないものです。特に中長期的に修正や拡張が繰り返されるような場合、書いた本人だけでなく、ほかのエンジニアであっても理解できるようにしておくことはとても重要。 万が一怠ってしまうと、それはもう目の当てられない状況になることもあります……。そうならないためにも、常日頃からリファクタリングという作業をルーチンとして取り入れたいところです。そうしたリファクタリングを少しでも効率化できるツールをいくつかご紹介。 もちろん、事前にデバッグしておくことも重要ですので、後半ではデバッグツールもいくつかあわせてご紹介します。日々、コードレビューに時間を取られているような方にとっても作業を円滑にするうえで参考になると思いますので、是非ご一読してみてください。 grunt-plato https://github.com/jsoverson
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く