Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

...argsで関数にタプルを渡す。

例えばf(S,N,B)という関数があるとして、args=["a",3,false]というタプルを渡すには f(...args)とやれば良い。同様のことは配列においても可能。

LFS

git

medium.com qiita.com 大容量ファイルもGitで管理。 Git LFSの使い方 from hibiki443 www.slideshare.net gitで管理されるべきでないバイナリファイルなどをgit上で管理するための機能らしい。 gitはハッシュ値と保存先をリポジトリで管理している。バイナリ…

長押し系

ひとまず色々あるのでまとめて /* 画像のクリックなどのイベントを無視 */ img { pointer-events: none; user-select: none; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -webkit-user-drag: none; }

スクロール禁止にする

この記事に詳細は書いてある。 qiita.com touchmoveをaddEventListenerしてpreventDefaultする。その際にpassive:falseを指定する必要がある。 function handleTouchMove(event:TouchEvent){ console.debug("touchmove.noScroll prevent.."); event.preventD…

スキーム

スキームの設定で、ビルドにdebug, adhoc, releaseの何を使うか、アーカイブにdebug, adhoc, releaseの何を使うかを決められる。 スキームは複数作れるのでその設定も増やせる。

中身が空のフォルダになる

git

Sorcetreeでcloneしたところ、中身が入っていないフォルダができることがあった。 warning: templates not found が出ていた。以下をみると重たいかららしいが、今回は他のブランチをチェックアウトした。 sourcetreeでcloneした時に warning: templates not…

apatcheの使い方

macで初歩的な使い方を忘れていたのでメモしておく。 入っているか httpd -v 開始 sudo apachectl start sudo apachectl restart 動いているか ps aux | grep httpd 設定、ドキュメントルートなどは httpd.conf ファイルにある。

BASIC認証

久しぶりにやってはまった。 .htaccess をドキュメントルート以下で制限したいところにおくのだが、 そもそも、それが効くのはhttpd.confでAllowOverride Noneではだめで、Allとかにしておく必要があった。 あと、Basic認証は通ってしまえばあとは出てこない…

はまったこと

PWA

iOS13ではcrossorgin設定だけではだめで、BASIC認証もかかっているときはmanifest.jsonファイルを.htaccessで許可しておかないとだめなようだ。 <files manifest.json> Satisfy any order allow,deny allow from all </files>

読むべきもの

CORS設定 オリジン間リソース共有 (CORS) - HTTP | MDN

rxjsで購読を止める

色々やり方はあると思うが一つ聞いたのはこういうもの。 const root = new BehaviorSubject<"start"|"end">("start"); const subject = new Subject<string>(); const op = root.pipe(mergeMap((x) => { if (x == "end") { return throwError(new Error("end")); } r</string>…

並べる

Vue

例えば <v-row> <v-col v-for="(list, i) in mylists" :key="i" cols="6"> <hogecard v-bind="list" /> </v-col> </v-row>

keyofのtips

const myMap = <const>{ A:{hoge:"a"}, B:{hoge:"b"} }; type keys = keyof typeof myMap;` keysはA|Bという型になる。 ちなみにmyMapはreadonly属性になってる。</const>

認証関連

manifest.jsonが401で認証通らず読み込めないのはcrossOrigin="use-credentials"をつけないといけないからのようだ。 https://developer.mozilla.org/ja/docs/Web/HTML/Attributes/crossorigin

urlに飛ぶ

window.location.assign(***)だった‥。

長押し無効

このあたり touch-action: none; pointer-events: none;

型のプロパティを拡張する。

型で条件付きで拡張すれば良い。 const MyEmpty = Symbol("MyEmpty"); type Empty<T> = { [P in keyof T]:P extends "hoge" ? T[P] | typeof MyEmpty : T[P] } type ExRoomInfo = Empty<RoomInfo></roominfo></t>

サブモジュールがクローンされない。

git

以下を参照した。 gitでクローンと同時にサブモジュールを初期化、アップデートする – IsaB cloneしてから git submodule update --init --recursive で良いようだ、 それかそもそも --recursive をつけてcloneしておく。

jsconfig.json

VSC

Visual Studio Codeはjsconfig.jsonのあるファイルをルートにしてくれる。 JSDoc形式で書かれた型情報を認識 jsonconfig.jsonの設定は以下を参照。 VS CodeでJavaScriptアプリを作成する上で知っていると便利(?)なこと (2/3):Visual Studio CodeでWebア…

iPhoneのインスペクタがでてこない時

そもそもそのiPhoneの設定/safariでインスペクタがオンになっているかを確認 MacとiPhoneがケーブルでつながっているか確認 ケーブルをさしなおしてみる

index.vue

Vue

nuxtでindex.vueをpageのフォルダやその入れ子のフォルダにおくとindex.htmlのようにフォルダ指定のデフォルトになる。

回転設定

iOS

出し分けはinfo.plistでiphone/ipadそれぞれサポートを指定する。

iOS関連

PWA

manifestは読み込めるが、アイコンは無視されるのでメタタグで定義する必要がある(apple-touch-icon.pngというファイル名で根っこにおいておくとヘッダーに記述しなくて良いというのは本当だろうか。)。 htmlの根っこにおく。読み込まれないかは、safariのイ…

Parcell

以下を参照した。 mae.chab.in インストール npm install --save-dev parcel-bundler 使い方 npx parcel index.html とするだけで依存関係をたどってdistディレクトリに吐き出される。 webサーバ(ポートは自動)が起動し、 Hot Module Replacementに対応して…

オレオレ証明書

mkcertで作れる。 以下を参考にした。 www.hivelocity.co.jp live serverに設定するには www.ka-net.org brew install mkcert ローカル環境に認証局作成 mkcert -install SSL証明書を発行 mkcert sample.co.jp ワイルドカード指定で mkcert "*.co.jp" sample…

compositionAPI ストアのプロバイドとインジェクション

Vue

より明確にストアの書き方がわかったので書いておく。 キーを何か用意 const StoreSymbol = Symbol() 親のstoreをもっているものがprovideする。 // sotreを持っている側がprovideする。 export function provideStore(store) { provide(StoreSymbol, store)…

alert

Vue

アラートを書いてみた。クロージャで結果を返すのはやめるべきなのかよくわからないがそこもリアクティブにすべきだろう。 gist.github.com

compositionAPIの初歩

Vue

ここの説明がそもそもわかりやすかった。 vue-composition-api-rfc.netlify.app そこに書いてあるコードを借りてくると、こんな感じでuse関数(useは実際は何でも良い)を書いて、 function useCreateFolder (openFolder) { // originally data properties con…

パッケージの公開

npm

以下を参考にした。 qiita.com まず、npmのユーザーを登録しておく。 npm | build amazing things で npm addUserでユーザを紐付けておく。 .npmignore を用意して、公開に不要なもの(tsファイルとか)を指定しておく。 package.jsonのバージョン(version)を…

ABC propsでオブジェクトを指定する。

Vue

type AlertCompletedBlock = (index: number) => void; interface Alert { display: number; completedBlock: AlertCompletedBlock | null; title: string; desc: string; buttonTitles: string[]; } const alertInit:Alert = { display:0, title:"", desc:"…