タグ

hikazohのブックマーク (4,076)

  • Rustのバイナリが大きい理由 | κeenのHappy Hacκing Blog

    κeenです。方々で言われる話ですがRustコンパイラの吐くバイナリはそこそこ大きいです。 この理由を自分で納得してなかったので追います。 様々な理由からnightlyを使います。 初期 $ cat hello.rs fn main() { println!("Hello, World"); } $ rustc +nightly hello.rs $ ls -l hello -rwxr-xr-x 1 kim kim 5049344 12月 18 23:30 allocator 5MBくらいあります。等価なCのコード(gccでオプションなし)が8.2Kだったのでかなり大きいですね 最適化 cargo --releaseと同じく-Copt-level=3を付けましょう。-Copt-level=sの方が小さくなりますが普段やらないので。 $ rustc +nightly -Copt-level=

    Rustのバイナリが大きい理由 | κeenのHappy Hacκing Blog
    hikazoh
    hikazoh 2017/12/19
  • [React Native事始め完全版]「いきなりデート」のアプリをReact Nativeで開発した知見をまとめます。 - Qiita

    [React Native入門完全版]「いきなりデート」のアプリをReact Nativeで開発した知見をまとめます。 この記事で説明する事 React Native採用に係る意思決定の話 atom + eslint + flowによるIDE風開発環境 line by lineによるプロジェクト作成方法とリリース方法 デバッグ方法やtips集、補助ツールの使い方 React Nativeとは Facebookがオープソースとして開発するReact.jsの思想の一つである「Learn once, Write everywhere」(元ネタはもちろんJavaのWrite once, Run anywhere)を体現した、Facebookが開発主体となるプロジェクトの一つで、要はJavascriptReactフレームワーク1つでモバイルアプリ(iosとAndroid)を作れる、といった代物です

    [React Native事始め完全版]「いきなりデート」のアプリをReact Nativeで開発した知見をまとめます。 - Qiita
  • UILabel と UITextField を配置したカスタムセルを自作した - present

    登録画面で使うために、UILabel と UITextField を配置したカスタムセルを、コードだけで実装してみた。 Xamarin.Forms なら EntryCell があるけど、あいにく Xamarin.iOS で開発しているアプリなもので。 レイアウトはもちろん AutoLayout を使ってる。ただし、Storyboard を使わず、すべての制約をコードで指定した。Storyboard を使わなかったのは、宗教的な理由。Storyboard を使っていれば簡単に実装できたかもしれないが、すべてコードだと予想以上に苦労した。 using UIKit; namespace CustomCellSample.Views { public class TextFieldCell : UITableViewCell { public const string CellId = nameo

    UILabel と UITextField を配置したカスタムセルを自作した - present
  • アドベントカレンダーのいいねをClojureでスクレイピングして数える - Qiita

    :dependencies [[org.clojure/clojure "1.8.0"] [http-kit "2.2.0"] [enlive "1.1.6"]] (ns count-likes.core (:gen-class) (:require [net.cgrand.enlive-html :as html] [org.httpkit.client :as http] [clojure.string :as str] [clojure.data :as data] [clojure.pprint :as pp]) (:import [java.nio.file Paths])) (def qiita-url "https://qiita.com") (def selector {:contents [:.adventCalendarItem_calendarContent] :au

    アドベントカレンダーのいいねをClojureでスクレイピングして数える - Qiita
  • Web Scraping with Clojure - Abu Ashraf Masnun

    I have recently started learning Clojure and I must say I am totally hooked. Clojure is a sane Lisp on the JVM. So I can express myself better while being able to take advantage of the huge JVM eco system. This is just wonderful! After finishing the popular book Clojure for the Brave and True, I wanted to try something out myself. I decided to try web scraping with clojure. In this post, I am goin

  • diesel小ネタ集 | κeenのHappy Hacκing Blog

    κeenです。これはRust Advent Calendar 2017の記事です。 RustORM、クエリビルダ、マイグレーションツールのdieselについて。 dieselについては公式チュートリアルを読めばだいたい使い始められるのですが、それだけでは足りないのでいくつか持ちネタを書きます。 diesel-1.0.0-beta1での情報です。 table! マクロ チュートリアルにはinfer_schema!を使ったDSLの自動生成が書かれてますが、table!マクロを使って自分で書くこともできます。 table! { posts { id -> Integer, Title -> Text, body -> Text, published -> Bool } } このときの型はdieselで定義されているSQL型を書きます。 このSQL型は特定のDBMにあるものも用意されていて、例え

    diesel小ネタ集 | κeenのHappy Hacκing Blog
    hikazoh
    hikazoh 2017/12/18
  • ReadWriteLockのサンプル - きしだのHatena

    では、ReadWriteLockのサンプル。 読み込みスレッドは互いにロックせず、書き込みスレッドは他のスレッドとは同時に動かせない、というロックです。 サンプルでは、「か電車」が書き込みスレッド、「電車」が読み込みスレッドです。「か電車」が動くときには他のスレッドは動けません。 ReadWriteLockの実装としては、再入可能なReentrantReadWriteLockが用意されているので、これを使います。 ReadWriteLock lock = new ReentrantReadWriteLock(); 実際にロックするときは、ReadWriteLockオブジェクトからwriteLock/readLockメソッドで書き込み用ロックか読み込み用ロックを取得します。 Lock reallock = writer ? lock.writeLock() : lock.readLock()

    ReadWriteLockのサンプル - きしだのHatena
  • Java Tips: かしこいロック

    単純なロックの問題点 Java にはマルチスレッドプログラミングにおける一般的な排他制御を記述するのに適した synchronized ブロック、synchronized メソッドという構文があり、保護したいデータにアクセスする全てのコードをこれらの構文を使って同期化すれば、排他制御は簡単に実現できる。しかし、この方法には問題もある。例えば電子掲示板システムのログデータにこの方法を適用することを考えてみよう。 電子掲示板に対するアクセスを全て同期化するということは、一度に一人のユーザしかログにアクセスできないということである。なんらかの理由(サーバ・クライアント間の回線速度やクライアントの処理速度の低下など)でログの読み込みに時間がかかっているユーザが一人れば、サーバ側の計算機資源にいくら余裕があっても、その間は他の大勢のユーザは掲示板にアクセスできない。すなわち計算機資源の利用効率が著し

  • サーバーレス・アプリケーションの開発ツールチェーンとして AWS SAM まわりがいい感じに成長してきているのであらためて紹介します

    サーバーレス・アプリケーションの開発ツールチェーンとして AWS SAM まわりがいい感じに成長してきているのであらためて紹介します Serverless Advent Calendar 2017 の 15 日目です. 記事ではサーバーレス・アプリケーションの開発ツールチェーンとして最近なかなかいい感じになりつつある AWS SAM (AWS Serverless Application Model) とその周辺を紹介しようと思います. 記事は AWS 上でサーバーレスなアプリケーションを動かしたい オープンソースとしての公開も考えてたりする サーバーレスなアプリケーションも CI/CD に組み込んで継続的に開発・デプロイしていきたい 過去に CloudFormation で Lambda をデプロイしようとして血を吐きかけた というわけで CloudFormation は生理的にちょ

    サーバーレス・アプリケーションの開発ツールチェーンとして AWS SAM まわりがいい感じに成長してきているのであらためて紹介します
    hikazoh
    hikazoh 2017/12/16
  • キメるClojure高速開発 - Qiita

    この記事は TIS Advent Calendar 2017 16 日目の記事です。 Clojure を仕事で使い始めてから三年が経ちました。未だに学びが多いですが、年数的には中堅 Clojurian と言える域に達してしまったので、自分なりの Clojure 観を整理したいと思い立ちました。自分にとって Clojure の最大の魅力は高速開発です。そしてそれは Clojure 自体の習熟難度と秤にかけても十分魅力的だという話を書きます。 どちらかと言えば Clojure 勉強し始めで、このまま進んでいいか迷っている人向けの内容です。 この記事は2017年時点での内容です。更新版・続編 → キメる Clojure チーム開発 そもそも Clojure とは 時は 2053 年、Skynet が人類を虐げる世界。エージェント Meier は Skynet のログにアクセスすることに成功し、S

    キメるClojure高速開発 - Qiita
  • slack-notifierでrailsからSlackへ簡単にメッセージを送る - Qiita

    slack-ruby-gemというのもありこちらを紹介する記事は多いのですが、star数が多いこちらslack-notifierを使ってみた記事は少なかったので、まとめました。(どちらも単純にメッセージを送るだけだったら、機能的に差異は無さそう) Slack側の事前準備(WebHookURLを取得する) チャンネルのプルダウンから Add a service integration を選択します Integrations の一覧から、 Incoming WebHooks を選択します(下の方にあります) プルダウンから通知したいチャンネルを選択して、 Add Incoming WebHooksをクリックします。 ここに表示されている Webhook URL をメモしておきます。(slackへの表示名や、アイコン画像もここで変更できます。) railsアプリから、slackに通知を送る Ge

    slack-notifierでrailsからSlackへ簡単にメッセージを送る - Qiita
  • zshでPATHのような変数の値が重複しないようにする - メモの日々(2017-12-13)

    ■ [shell][howto] zshでPATHのような変数の値が重複しないようにする zshにて環境変数PATHのようにコロン区切りの変数の値が重複しないようにしたい。 $ VAR=aaa:bbb:aaa としたときに $ echo $VAR aaa:bbb と振る舞って欲しいということ。 以前は「いい方法は見当たらなかった」と書いているがいい方法はある。 設定方法 組み込みコマンドのtypesetを使って $ typeset -TU VAR var とする。「var」の部分はほかの変数と同名にならなければ何でもよい。 -Tオプションで変数VARを配列変数varと関連づけ、-Uで重複除去の属性をセットしている。-Tは余計な設定に感じるが、これが無いと動作しない(少なくとも手元のzsh 4.3.11では)。 動作例 $ VAR=aaa:bbb:aaa $ echo $VAR aaa:bb

    zshでPATHのような変数の値が重複しないようにする - メモの日々(2017-12-13)
    hikazoh
    hikazoh 2017/12/14
  • C++の入門書を書くためにHaskellを学ぶことにした

    C++17の参考書、江添亮の詳説C++17はすでに書き上げて、来年の出版を待つばかりになっている。 https://github.com/EzoeRyou/cpp17book 次に書くC++の入門書にしようと思っているが、入門書を書く前に、少し時間をかけてHaskellを学ぼうと思っている。 なぜHaskellを学ぶのか。Pandocのためだ。 Pandoc 私のは、Markdownで書いてPandocで各種フォーマットに変換している。アスキードワンゴでは、Pandocを使ってlatexに変換した上で、手作業で出力されたlatexを編集して組版している。つまり、私の参考書の執筆はPandocに支えられていると言ってよい。 さて、アスキードワンゴ編集部(ドワンゴ)は私がを出版契約している出版社であり、かつ私が雇用契約している会社でもある。アスキードワンゴの編集者は私の編集者であり同僚

  • WSLでcrojure開発 (Emacs + cider)

    普段は仕事PCを使うことが多いし、趣味がらみでもツール類の関係で基的にはWindowsが必要になったりするので、家でも結局はWindowsを使っています。 とは言え、やっぱりClojureを始めとしたプログラミング関連の作業はコマンドラインでやりたいし、使い慣れたUNIX系のツールを使った作業からは離れられないのでMsys2を導入して環境を作っていたわけですが、そこはそれ、後づけの環境なので、いくつか気に入らないところもあったりするわけです。 そんな中、話題の Windows10 Fall Creators Update で正式版となったWSL、要するにWindows上のLinux に乗り換えてみたら、Msys2の問題を解決してくれてなかなかよかったので、そのあたりの事を書いてみます。 Msys2環境の問題 このMsys2というのはそもそも「UNIX系のツールをWindowsで動くよう

    WSLでcrojure開発 (Emacs + cider)
  • MySQL でオプティマイザトレースを取得する - ablog

    MySQL でオプティマイザトレース(Oracle Database でいう 10053 トレース)を取得する方法。 mysql> SET optimizer_trace="enabled=on"; mysql> SET optimizer_trace_max_mem_size = 1048576; mysql> select 1; mysql> select * from information_schema.optimizer_trace\G *************************** 1. row *************************** QUERY: select 1 TRACE: { "steps": [ { "join_preparation": { "select#": 1, "steps": [ { "expanded_query": "/* se

    MySQL でオプティマイザトレースを取得する - ablog
  • MySQL Connector/J(JDBC Driver) で接続時に任意の collation_connection をセットする - ablog

    MySQL Connector/J(JDBC Driver) で接続時に任意の collation_connection をセットする には以下の用に JDBC URL に「connectionCollation=utf8mb4_bin」のように設定すれば良い。 jdbc:mysql://aurora01.cluster-*******.ap-northeast-1.rds.amazonaws.com:3306/mydb?connectionCollation=utf8mb4_bin 参考 MySQL クライアントプログラム mysqlmysqladmin、mysqlcheck、mysqlimport、および mysqlshow は、次のように、使用するデフォルトの文字セットを特定します。 ほかの情報が欠如している場合、プログラムは、コンパイル時のデフォルトの文字セット (通常は lat

    MySQL Connector/J(JDBC Driver) で接続時に任意の collation_connection をセットする - ablog
  • [Swift] あると便利だったextension達 記法編 | DevelopersIO

    はじめに モバイルアプリサービス部の中安です。 最近ブログを書けていなかったので、小ネタを少しばかり・・・。 アプリを作ってきた際に、あるとなかなか便利だったextensionをボチボチとご紹介していければと思っています。 アプリの目的に合わせてやりかえる必要があったり、もっとよい実装があるかもしれませんが、何かの役に立てば光栄です。 今回は文字列の記法編です。 APIのキーやパラメータ、DBの論理名、その他諸々とスネーク記法を使ったり、キャメル記法を使ったりというシーンは多いかと思いますが、 そういう時に記法の変換を行ってくれるメソッドを準備しておけば色々と助かることも多いでしょう。 文字列をアッパーキャメル記法に 念のための説明ですが、「アッパーキャメル記法」とは単語の最初の文字を大文字にして、単語間には何も入れない(アンダースコアやスペースがない)記法のことです。 Swiftのクラス

    [Swift] あると便利だったextension達 記法編 | DevelopersIO
  • Big Sky :: Golang で HTTP コンテンツの charset 判定をするには

    « Golangarchive/zip でタイムゾーンの問題とファイル名の問題が解決した。 | Main | Vim の :terminal の中から外の Vim を操る方法 » この記事は Go Advent Calendar 2017 の記事... ではありません 追記あり 実はあったりします。 Golang で URL から charset を取得するのを書いたのですが、他にもっとよい方法があるとおもうのです... - Qiita 他によい方法がある気がするのですが...わからないので、書いてみました。 https://qiita.com/mochizukikotaro/items/ddc0c6b1b98cd33f451e golang.org/x/net/html/charset を使うと良いです。 package main import ( "bufio" "fmt" "l

    Big Sky :: Golang で HTTP コンテンツの charset 判定をするには
  • Windows updateができない・失敗をくりかえす時の一般的な対処方法

    | 人気ページ | おすすめ記事 | 定番ツール | Windows updateができない・失敗をくりかえす時の一般的な対処方法 Windows updateを失敗してしまい、何度更新しても上手くインストールできない場合の解決方法です。Microsoftが配布するツールとWindowsに標準で搭載された機能を使った対処手順を紹介しています。

    Windows updateができない・失敗をくりかえす時の一般的な対処方法
  • Seq2Seq まとめ - higepon blog

    以前作った Seq2Seq を利用した chatbot はゆるやかに改良中なのだが、進捗はあまり良くない。学習の待ち時間は長く暇だし、コード自体も拡張性が低い。そういうわけで最新の Tensorflow のバージョンで書き直そうと思って作業を始めた。しかし深掘りしていくと Seq2Seq の詳細を分かっていなかったことが発覚したのでここにまとめる。間違いを見つけたらコメントか @higepon まで。 Seq2Seq のすべてを解説するのではなく、Tensoflow/nmt/README.md のチュートリアルをベースにする。読んだだけでは、理解できなかった部分を補っていく形で進める。 必要とされる前提知識 DNN の基礎。構造、training、 loss とかそういう話。back prop は別に理解できなくても可。 RNN の基礎。RNN が時系列の扱いに向いているとか。RNN の構

    Seq2Seq まとめ - higepon blog