サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/hotchpotch
React で好きなように Drop & Drag の実装を書ける React DnD の API が解りにくかった (以前の API の把握は react-dnd これだけ抑えておけばおk がわかり易い)のだけど、最近のバージョンアップにより useDrag / useDrop 等の React hook が提供されていて(以前の API も Legacy Decorator API として残っている)、それらを使って簡単に書けるようになっていた。 例えばよくある List を Drag して、Drop 先の要素と swap する、の最小限の実装はこんな感じ。わりと型もちゃんと書ける。 import React, { useState, useCallback, useRef, FC } from "react" import { useDrag, useDrop, DndProvide
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
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ロータリーエンコーダや感知センサ、ボタンのプッシュなどで、値の変化を即座に検知し反応したい場合、メインループで状態検知を行ってると別処理中で反応できなかったりする。そのために割り込みピンの変化時に割り込み処理をすることで対応する。 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 側
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 最近 ReactNative (RN) 開発で Atom を使い出した(Atom歴1ヶ月強)のだけど、ほぼほぼ不満無く開発出来ているので、使っているパッケージの紹介。 Nuclide は使わなかった facebook がオフィシャルで用意している RN 用IDE、Nuclide。Atom のパッケージ各種を同梱している。最初に使ってみたが、よく解らない項目が増えすぎたので、使うのをやめた…。 https://nuclide.io/ React.js サポート React の様々な機能、autocomplete, JSX 対応等々サポート
import-js で JavaScript の import を自動入力する React 等、新しい ES 環境で import を多用する開発を行ってると、クラスや関数を使う度、import に毎回追加、というのが面倒じゃないですか?私はめっちゃ面倒くさかったです。 そんなとき、import-js を使うと、足りない import 文を入力してくれて大変便利です。 https://github.com/Galooshi/import-js fix import で足りない import 文を勝手にプロジェクトのルートや node_modules から探していい感じに入れてくれます。また同じ名前のモジュールが複数ある場合、ダイアログを出してくれます。 また JSX や flow にも対応しているため、<ComponentName /> みたいな JSX タグも import 文に追加して
良くあるユースケースとして、 デバイスを起動 そのデバイスがアクセスポイントになってるので、そこにまずは繋いで、ちゃんと繋ぎたい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 で動かしてみたけど、
前からどう動いているんだろうと思ってたので、バラしやすそうだった象を分解してみた。 思った通り簡単にばらせた。 メカ部は振り子になっていて、磁石が左右に動くことで耳と鼻がうまく動く仕組みに。 ソーラーパネルが 1.5V ぐらいの電圧を出力し、これをコンデンサでためて、3秒に一度ぐらい IC から出力して、コイルに磁力を発生させてる。しかしコイルの線、髪の毛ぐらい細い線だなぁ。 ICからの出力のオシロキャプチャ。光を強く当てるともっと大きい出力になる。ぱっと見交流っぽいんだけど、振り子なので正負どちらか片方の出力でもうまくいく(短期間に発振しても良くないというか、振り子が打ち消し合うので良くないと思う)ので、最初の -1V の印加だけが動かすのに必要なのかな。 適当に引っ張り出してマイコンから 3.3V(HIGH)/0V(LOW) と 0V(LOW)/3.3V(HIGH) を0.n秒〜2秒ぐ
レベルメーター的な物を作りたいのです…! ステレオミニプラグには交流が流れている ステレオミニプラグ(フォーンプラグ)から、音の大きさの大小を取得したい。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.
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Arduino は「Arduino」という名前は商標で守られていますが、回路図、基板図、ブートローダ、ファームウェア等々はオープンソースハードウェア、ライセンス的には CC-BY SA で公開されているため、商用として同等製品を作って売ることや、好きに変更して売ることが可能です。 そのため、オフィシャル設計に代替チップを載せた安価なハードウェアや、同等のチップやブートローダで構成されているけど、オフィシャルラインナップには無いハードウェア等々、様々な Arduino 互換機が売られています。 本エントリーでは、私が購入してた安価な Ar
時計機能を追加したい場合、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
そういえば作ったこと無かったということで、手元にあった温度・湿度センサーの 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
qiita.com
次のページ
このページを最初にブックマークしてみませんか?
『@hotchpotchのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く