サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブックレビュー
qiita.com/hotchpotch
TCP BBR な ShadowsocksR サーバを構築・設定方法。なお他のメジャーディストリビューションについてはたくさん情報があるので、Raspiberry Pi を使っての構築・設定方法を記載しているが、普通のディストリも同様の方法で設定できると思う。Linux 触った経験がある人なら、さくっと設定可能。 最近の Raspbian OS 最近の Raspbian OS の Linux カーネルは 4.9 以降なので、簡単に 輻輳制御の新アルゴリズム TCP BBR の導入が出来るようになった。 teddysun さんのスクリプト経由で BBR を入れる https://github.com/teddysun/across/raw/master/bbr.sh を使うことで、環境を判別して自動でインストール & 設定してくれる。Linux 4.9 以前でカーネルが古いが、新しいカーネル
会社プロジェクトを 0.44.3 (2017年6月時点の最新版)から 0.49.5(2017年11月頭時点の、最新版のstable)に上げた。思ったより大変だったのでメモっておく。 そもそも何故 ReactNative のバージョンを上げるのか? RN はまだまだ絶賛進化中で、本体のバージョンが上がることで React / React Native のパフォーマンスの向上や、周辺環境の向上、例えば Flow での型チェックがさらに進化するなど恩恵を受けれる。 実際にアップグレードしてCIの実行速度も20%ほど向上した。以下は CircleCI のビルド時間の中央値の値。真ん中あたりでガクッと下がったのがRNのバージョンを上げたタイミング。 また、破壊的な変更が本体に入ることも多く、例えば RN 0.47 から Android ネイティブライブラリ作成で利用されていたcreateJSModu
Promise での非同期処理時、排他制御を怠ったばっかりにバグを出してしまった、そんな経験ありませんか。私はあります。 スレッドを使う場合、Mutex や synchronized 等々、大抵排他制御を行うライブラリや構文などがセットでついてくるのだけど、Promise/A+ には無いので自前で制御する必要がある。 なので、Promise で排他制御が出来るライブラリを npm から調べ、めぼしい物二つをピックアップしてみた。 async-lock https://www.npmjs.com/package/async-lock 一番メジャーっぽいライブラリ。ダウンロード数も多い。 ロック取得時、key を指定する redis の key の set のように、key ごとに排他制御したい場合に便利 タイムアウトのサポート 待ち受けタスク数の上限のサポート インターフェイスが、acqui
といった発言をさせることが出来る。 Ruboty に反応させたい Ruboty は標準の正規表現では、上記メッセージに反応しない。 https://github.com/r7kamura/ruboty/blob/master/lib/ruboty/action.rb#L4 実装は固定で module Ruboty class Action def self.prefix_pattern(robot_name) /\A@?#{Regexp.escape(robot_name)}:?\s+/ end
ロータリーエンコーダや感知センサ、ボタンのプッシュなどで、値の変化を即座に検知し反応したい場合、メインループで状態検知を行ってると別処理中で反応できなかったりする。そのために割り込みピンの変化時に割り込み処理をすることで対応する。 https://www.arduino.cc/en/Reference/AttachInterrupt Arduino Uno で Interrupt に割り当てられてるピンはデジタルピンの2(INT0)と3(INT1)。 と記述することで、デジタルピン2が変化したとき(CHANGE)、callback_function が割り込み処理として実行される。どのように状態が変わったかで呼ばれるかの定義は、以下の定数で指定する。 LOW to trigger the interrupt whenever the pin is low, CHANGE to trigge
開発中、環境によって API のエンドポイントの向き先や設定を変更して動作チェックしたい、ということがよくある。 しかしながら、ReactNative では、process.env に渡されるのが基本 process.env.NODE_ENV だけで、かつ内部で development か production に書き換えているため、適当な環境変数を外部から渡して挙動を変えることが、development or production しか行えない。 そのためのアプローチの一つとして react-native-config があり、それについての詳細は以下に解りやすくまとまっている。 React Native で development, staging, production など環境を切り替える ただ、react-native-config では、あくまでネイティブ側に埋め込み、JS 側
最近 ReactNative (RN) 開発で Atom を使い出した(Atom歴1ヶ月強)のだけど、ほぼほぼ不満無く開発出来ているので、使っているパッケージの紹介。 Nuclide は使わなかった facebook がオフィシャルで用意している RN 用IDE、Nuclide。Atom のパッケージ各種を同梱している。最初に使ってみたが、よく解らない項目が増えすぎたので、使うのをやめた…。 https://nuclide.io/ React.js サポート React の様々な機能、autocomplete, JSX 対応等々サポートしてくれる。 https://orktes.github.io/atom-react/ import-js で import 文の自動補完 http://qiita.com/hotchpotch/items/1661f05e709e2cf61313 プロジェ
React 等、新しい ES 環境で import を多用する開発を行ってると、クラスや関数を使う度、import に毎回追加、というのが面倒じゃないですか?私はめっちゃ面倒くさかったです。 そんなとき、import-js を使うと、足りない import 文を入力してくれて大変便利です。 https://github.com/Galooshi/import-js fix import で足りない import 文を勝手にプロジェクトのルートや node_modules から探していい感じに入れてくれます。また同じ名前のモジュールが複数ある場合、ダイアログを出してくれます。 また JSX や flow にも対応しているため、<ComponentName /> みたいな JSX タグも import 文に追加してくれます。 エディタも、Atom, Emacs, Sublime, Vim 用の
良くあるユースケースとして、 デバイスを起動 そのデバイスがアクセスポイントになってるので、そこにまずは繋いで、ちゃんと繋ぎたいWiFiのSSIDとパスワードを入力 繋がったら通常起動し、そのセットしたSSID/パスワードを利用する が上げられる。割とちゃんと実装すると大変なんだけど、WiFiManager というライブラリを使うと簡単にできると言うことを ESP8266 WI-FI SSID、パスワードのオンライン設定 より知った。 ライブラリを使える状態にすると #include <ESP8266WiFi.h> #include <DNSServer.h> #include <ESP8266WebServer.h> #include <WiFiManager.h> void setup() { WiFiManager wifiManager; wifiManager.autoConne
新しいマシンやスマフォで Slack App で各種チーム(たくさんある)にログインがすこぶる面倒くさい・・・面倒くさい・・・面倒くさい・・・。という経験したことありませんか。私は4回ぐらいあります。1password 使ってるからパスワードもバラバラだしね・・・。 そんなときは https://slack.com/signin/find のページから Find Another Team を押して自分のメールアドレスを入力すると、そのアカウントに紐付いてるすべての Team アカウントにログインできるマジックリンクがメールで送られてくる・・・! あとは各種メーラーで、そのリンクをクリックしていくと、Slack app が立ち上がり自動でそのチームにログインできます。PCでもスマフォでも使えるし、うおー便利、マジックリンクが出来た当初から知っておきたかった・・・!! Register as
いつの間にか mbed OS 5 が出ていた。mbed OS 5 は、いわゆる今までの mbed (OS2やClassicとよばれていたバージョン) と、mbed OS 3(yottaとよばれていたバージョン)をくっつけて、2 + 3 = 5 らしい。 いままでの mbed OS2 の良さ、オンラインコンパイラやライブラリの資産はほぼそのまま使え、また mbed OS3 の様々な新機能や CLI からの開発などが取り入れられ、RTOS をベースとした OS となった。 というわけで、CLI からも開発が出来るようになったので、Linux (Ubuntu 16.04) 上で環境構築をしたのでメモ。 なお、MacOS や Windows での環境構築はこちら。 mbed CLIをWindowsで使ってみる(環境構築編) mbed CLI (コマンドライン・インタフェース)を Mac OS X
最近メインの開発環境を Windows 10 にしたので、入れたソフトウェアのメモ。 MSYS2 https://msys2.github.io/ UNIX的なシェル環境。ターミナル(mintty)、シェル(bash)、パッケージマネージャ(pacman)が標準で入れるだけで使えるようになる。シェル操作は MYSY2 上に含まれる ターミナル mintty 上で bash を動かしてその上で screen やら git やら ssh やらいろいろ。 MSYS2で快適なターミナル生活 にまとめれているので、その他いくつかを。 ホームディレクトリ 標準だと C:\mysy64\home\ユーザ名 だが、自分は %USERPROFILE% (win のユーザディレクトリ)と同一のところをホームディレクトリとして使いたいので、環境変数 HOME を %USERPROFILE% に指定する。(環境変
Arduino Uno の後継とも言われる、Intel Curie 搭載の Genuino (アメリカではArduino、商標の問題でアメリカ国外では Genuino) 101 が技術適合基準を通った物が販売され、日本でも問題なく使える様になったので購入して使ってみた。 https://www.switch-science.com/catalog/2670/ Uno にはないアーキテクチャ以外の大きな特徴としては、IMU(xyz等の値を取れる、慣性計測装置)と、Bluetooth LE(BLE) での無線通信がオンボードでサポートされたことであろう。 本エントリーでは、BLE を使った L チカについて解説する。 Arduino IDE セットアップ arduino.cc から最新の Arduino IDE 1.6.8 をダウンロード後、ボードマネージャで Genuino (Arduino
ebay で安く売っていたので買ってみた。 http://www.ebay.com/itm/0-96-IIC-Serial-128X64-OLED-Display-Module-For-Arduino-Low-Power-Consumption-DF-/231772461741?hash=item35f6b71aad:g:lEAAAMXQeW5TavCe このショップ、香港からの発送だからなのか、一週間で届いてびっくりした。 写真だと液晶発光が白っぽいけど、リアルで見ると思いっきり青。有機ELだけあって、すごくはっきりと発光してる。 adafruitのMonochrome 1.3" 128x64 OLED graphic displayに似せて作ってあって、コントローラも同じ SSD1306 なので adafruit 用のライブラリもそのまま使える。 今回は mbed で動かしてみたけど、
レベルメーター的な物を作りたいのです…! ステレオミニプラグには交流が流れている ステレオミニプラグ(フォーンプラグ)から、音の大きさの大小を取得したい。3極のステレオミニプラグは手前からGND、R、Lとして取得できる。まずは信号の取得のために適当なオーディオジャック変換基板で手軽に扱えるようにする。 http://www.aitendo.com/product/12150 こういうやつ 続いて一定の波形を出力するため、Mac で 1kHz のサイン波を出力し、音量最大でステレオミニプラグに入力する。今回はAudioTest のソフトウェア(シェアウェア)を利用した。 http://www.katsurashareware.com/pgs/audiotest-j.html 以下はオシロスコープによるMacからの出力の波形。1メモリが左下にあるとおり500mVなので、だいたいピーク値が±1.
Arduino は「Arduino」という名前は商標で守られていますが、回路図、基板図、ブートローダ、ファームウェア等々はオープンソースハードウェア、ライセンス的には CC-BY SA で公開されているため、商用として同等製品を作って売ることや、好きに変更して売ることが可能です。 そのため、オフィシャル設計に代替チップを載せた安価なハードウェアや、同等のチップやブートローダで構成されているけど、オフィシャルラインナップには無いハードウェア等々、様々な Arduino 互換機が売られています。 本エントリーでは、私が購入してた安価な Arduino 互換機を ebay.com の購入リンクと一緒に紹介します。なお価格は特に記載が無い限り、2015年12月時点(1USD = 121.1円)の価格で、日本への送料無料です。 SainSmart Uno SainSmart は日本の Amazon
時計機能を追加したい場合、Arduino は RTC 内蔵で無いため RTC (Real Time Clock) を追加 電源が切れても時刻を更新し続けるバッテリー(電池)を追加 する必要があります。ちゃんとしたのを買うと高いんですが、ebay で安い、かつ一般的な i2c の RTC モジュール DS1307 を積んでいる Tiny RTC というのが一個 0.99$ で売ってたので試しに5個ほど買ってみました。なお1個でも国際送料無料です。 http://www.ebay.com/itm/130726938768 こいつに一般的なリチウムボタン電池の CR2032 (100円ショップで2個で100円) をつければ 180 円で RTC 追加して使えます。ヤッタネ! 配線 配線は P2 (DS1307側) のピンヘッダを実装し繋ぐだけでOKです。右側の P1 のほうは、EEPROM の
本エントリーは ESP8266 アドベントカレンダー2015 の一日目の記事です。というわけで一日目らしく ESP8266 についてのまとめ記事を書こうと思ったのですが、 ESP8266(ESP-WROOM-02)自分的まとめ にしっかりとまとめられていたので、↑を読んで下さい。= 完 = だけではさすがにアレなので最低限のまとめを。ESP8266 は WiFi 機能を内蔵した SoC で、Arduino 環境で開発することができます。 またスペック(ESP-WROOM-02 の場合)もCPUクロックが80Mhz, フラッシュメモリがハードウエア上は 4M で RAM が 36KB とそれなりに高スペックのため、Lua(NodeMCU) や組み込み用 Python の MicroPython や JavaScript などいろいろな言語で動くような開発が進んでいます。(mruby を動かす
Arduino の電源(5V)から昇圧チョッパー回路でもっと高い電圧を得たい。方法は http://kamiya.hatenadiary.jp/entry/2015/01/15/130902 http://circuitcellar.com/ee-tips/arduino-based-diy-voltage-booster-ee-tip-117/ 等にあるとおり、昇圧チョッパーで電圧を上げ、抵抗分圧で目的の電圧になるよう制御する。Arduino の ADC は 5V 以下を 0~1023 で取得できるので、その値を見つつ、トランジスタ(MOSFET)へデューティー比を考慮して PWM で出力する。 今回は手元に MOSFET が無いため、トランジスタは手元にあった2SC1815を使用。高い電圧にするとトランジスタ死にそうなので、控えめの昇圧になるように。R2 を 47K, R1 を 30K
焦電型赤外線センサ PaPIRs の VZ シリーズが秋月で売っていたので買ってみた。 最初 OUT から直接出力をとろうとして判定できなくて困った、という大変初心者的なハマり方(ハイ初心者です…)をしてしまったのでメモ。ふつうに抵抗(10KΩ程度 ->GND)入れて出力とりましょう…ハイ…。 Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
そういえば作ったこと無かったということで、手元にあった温度・湿度センサーの HDC1000 の Arduino 向けライブラリを作って公開してみた。 https://github.com/hotchpotch/Arduino-HDC1000 他の人も作ってるので車輪の再発明ぽいけど手順を身につけておきたかった & PlatformIO に登録して使いたかったので…。 Arduino のライブラリを作るには Writing a Library for Arduino に書いてあるためあんまり言うことが無い…。 ディレクトリ構成はトップ階層に .h のヘッダファイルと cpp(or c) ファイルを、examples 以下に Arduino のスケッチがあることが多いみたい。今回作ったらこんな構成になった。 . ├── HDC1000.cpp ├── HDC1000.h ├── LICENSE
何回かやってるので主に自分用メモ。raspi2 + raspbian で無線LANに ssh できるようになるまで。 raspbian のイメージを sd card に焼いてセット 無線LANは GW-USNANO2A を使った。raspbian から認識すればどれでも良いと思う。 有線でログイン まず有線LANに繋ぐ。dhcpd が割り振った IP を見つける。 $ sudo nmap --open -sV -p22 192.168.24.0/24 ... Nmap scan report for 192.168.24.110 Host is up (0.0031s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u2 (protocol 2.0) MAC Address: B
irb(main):001:0> RUBY_VERSION => "2.0.0" irb(main):002:0> Hash[*((0..100001).to_a)];nil => nil irb(main):003:0> Hash[*((0..1000001).to_a)];nil SystemStackError: stack level too deep from /Users/yuichi-tateno/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/irb/workspace.rb:86 Maybe IRB bug! Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read
qiita.com
開発環境と本番環境をブラウザ上で間違って操作してしまった経験はありませんか?僕はあります。 そんなとき favicon や title タグを変えると役に立ちます。自分が関わるプロジェクトでは 本番は通常の favicon 開発環境はモノクロの favicon を作って切り分けています。他にも環境がある場合、色調補正したり、90度回転させてみたり、ぱっと見すぐ解るようにしています。 小さな変更ですが、かなり便利です。 例: 社内ツール Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do w
なんか ES + kuromoji の使い方のドキュメントが古かったりしたので防備録。ES 0.90.Beta1 + kuromoji 1.2.0 の話しです。なおこの情報もすぐ古くなるかもしれないので注意な! インストール 適当に brew install https://gist.github.com/hotchpotch/5133549/raw/bdeea58fa72c33f74131f27ec78758556182d7ba/elasticsearch.rb /usr/local/opt/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/1.2.0
Ruby の Hash の第一引数のデフォルト値の設定では、破壊的操作をよく行うクラスをセットすると罠にはまります。みんな一度ははまります。 $ pry [1] pry(main)> h = Hash.new([]) => {} [2] pry(main)> h[:a] << 1 => [1] [3] pry(main)> h[:b] += [1] => [1, 1] [4] pry(main)> h.keys => [:b] [5] pry(main)> h[:a] => [1] この挙動に何故なるか、理解できる人は手を上げてください!はいあまりいませんね。 なぜこんな挙動になるか、詳しくは以下。 http://www.ruby-lang.org/ja/old-man/html/trap_Hash.html というわけで、デフォルト値の挙動をしっかりと把握してないとはまる人が出てくるので
ノートPCで作業してると、移動時ネットワークが切れて ssh セッションが切れ、仮想端末は screen/tmux で状態復元が可能ですが、port forwarding なんかを活用してる場合再接続がめんどくさかったりしますよね。あれ、切れてるジャン…みたいな。 そんな場面が多い場合、 autossh を使うと便利です。 http://www.harding.motd.ca/autossh/
さて、皆さん割と homebrew で openssl 入れて brew link しちゃってる人も多いと思います。そんな環境でその openssl を使って Ruby をコンパイルすると、OpenSSL 利用時に証明書エラーが発生します。 $ pry [1] pry(main)> require 'open-uri' => true [2] pry(main)> open('https://www.google.com/').read OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed from ~/.rbenv/versions/2.0.0-rc2/lib/ruby/2.0.0/net/http.rb
次のページ
このページを最初にブックマークしてみませんか?
『@hotchpotchのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く