この記事は Python Advent Calendar 2019 の 19 日目の記事です。 🐍 あらすじ Python のパッケージ管理。特にここ数年で新しいツールが多く出たこともあり、一体何を使うべきなのか、少し調べただけでは分からないと思います。本記事では、新しめの管理ツールを独断と偏見で比較します。著者は Poetry 信者なのでバイアスが掛かっているので悪しからず。 本記事で書いていること Pipenv、Poetry、Pyflow の違いと使い方 本記事で書いていないこと Pyenv、Venv、Virtualenv などの既存ツールの説明 著者の環境は以下の通り。 Ubuntu 18.04 Python 3.8.0 Pipenv 2018.11.26 Poetry 1.0.0 Pyflow 0.2.1 特に Poetry と Pyflow は開発途中なので、本記事の内容と違う
サブタイトル:ショアのアルゴリズムから巡回セールスマン問題まで プログラマ向けに量子プログラミングの解説をした資料です。できるだけソースコード付きにすることで独習可能な内容になっています。また必要となる数学の知識に関しても解説しています。よろしければご活用ください!Read less
「Game Graphic Design Advent Calendar 2019」の初日の記事です。 ゲーム制作に関する素敵な記事がたくさん公開されると思いますので、私自身もワクワクしてます。 言い出しっぺとして、初日としてまず何を書こうかなと思ってたんですが、以前Twitterでチラッとつぶやいた「普段ゲームUIを作るときってどういう工程があって、どういう流れで作っているか」をまとめてみたいと思います。 というのも、いろいろな方から「何から手を付けていいのか…」「デザインが上手くまとまらない」「デザイナーが社内外注みたいになってしまって…」みたいな話をよく聞きまして。 そのアンサーになるかは分かりませんが、自分の場合はこういうフローで、こういうことを意識してますよ。というのを書いてみたいと思います。 もちろん組織や人によってやり方は様々だと思いますので、こんな風にやってる人もいるんだ、
この記事はTech KAYAC Advent Calendar 2019の10日目の記事です。 こんにちは! jsdo.itでCreativeCodingの世界を知り、jsdo.itに惚れて入社を決め、jsdo.itの譲渡とともに入社し、jsdo.itの終了とともに退職した有給消化期間中の浅利(@kasari39)です! 今回はシェーダーの世界へ一歩踏み出してみませんか?という内容です。 *1 シェーダーコーディングの世界 作品例として手前味噌ですが、このような映像をシェーダーのみで生成できます。 http://glslsandbox.com/e#59292.1 http://glslsandbox.com/e#59293.0 これらは100行にも満たないシェーダーから生成されています。 こんな短いのにこんな豪華な見た目が出るなんて面白いですよね。 それでは一歩踏み出してみましょう! 開発
はじめに この記事は、Docker入門シリーズ記事3本の1本目です。 Dockerで環境構築するための最低限の概念理解 Dockerで環境構築するための最低限のコマンドを一通り実践する 【Docker Compose】設定内容を1行ずつ理解しながらLaravel環境構築(PHP-FPM、Nginx、MySQL、Redis) また、WindowsでDockerを利用する際の重要な設定に関する記事もありますのでこちらもご確認ください。 WindowsでDockerを使う時、正しくファイル配置しないと激重になるので注意 概要 この記事では、 Docker未経験者、初心者向けに Dockerでアプリケーションの開発環境を構築するために必要な 最低限の概念を解説します。 詳細な解説はかなり省いています。 Dockerとは何をするためのものか Dockerは、アプリケーションの実行環境を構築するための
みなさん、こんにちは! タカハシ(@ntakahashi0505)です。 Google Apps Scriptを使うとGmailやスプレッドシートなどのGoogleサービスと連携したツールやシステムを簡単に作ることができます。 そんなGoogle Apps Scriptですが、Webアプリケーションを作成できることはご存知でしたか? これがなかなか便利なのです。 Webページをスプレッドシートをデータベース変わりとしてページを生成 入力フォームの内容に応じて外部Web APIから取得した内容を表示 Googleフォームの結果を順次Webページに出力 …といった様々な動作をするWebアプリケーションを作ることができます。 しかも、サーバーと開発環境はGoogleが既に用意してくれていますから、すぐにでもWebアプリケーションを作って公開することができます。そしてなんと無料です。 今回の記事か
Unityでモーションを再生する方法はいくつかあり、またそれぞれの仕組みも複雑です。 この記事ではこれらの方法の概観を説明し、関連記事をピックアップすることで学びやすくまとめます。 Unityでモーションを再生する方法の概観まとめ Animator Controller関連の記事まとめ ステートマシン Simple Animation Timeline関連の記事まとめ Playables API関連の記事まとめ Kinematicaについて その他 Unityでモーションを再生する方法の概観まとめ まず、Unityでモーション再生をするには以下の方法があります。 Animator Controllerを使う Simple Animationを使う Timelineを使う Playables APIを使う (今後)Kinematicaを使う まず一番スタンダードな方法がAnimator Co
「ビルトインモジュールが色々あってぜんぜん分からない。俺達は雰囲気で並列処理を使っている」という状態だったので、良くないと思ってPythonの並列処理と並行処理をしっかり調べてみました。 少し長めです。細かいところまで把握するためのもので、仕事などの都合でさくっと調べて使いたい方は別の記事をご確認ください。 使った環境 Python 3.6.1 :: Anaconda 4.4.0 (64-bit) Ubuntu Jupyter notebook(一部マジックコマンドなども利用しています) ※Windowsの場合、マルチプロセスなどで直接Jupyter上で動いてくれない(.pyファイルを経由すると動く)などのケースがあります。 参考 : Jupyter notebook never finishes processing using multiprocessing (Python 3) 並行
コンテナイメージのレジストリでは、脆弱性検査の実装が当たり前になっている。企業でKubernetesなどコンテナを使用するにあたって脆弱性対策がどれほど重要なものか理解するために、脆弱性検査や、関連する国際的な標準について整理した。 脆弱性(ぜいじゃくせい)とは 脆弱性とは、プログラムの動作の不備を悪用される情報セキュリティ上の弱点である。つまり、ソフトウェア上の問題が原因となって生じた欠陥であり、セキュリティホールとも呼ばれる。当然、ソフトウェア開発者は、脆弱性を産まないように細心の注意を払ってコード開発を進めるが、開発者が利用するオペレーティングシステムのライブラリやパッケージに含まれることもある。そのような事情から、開発者の責任範囲外に原因がある場合も多くある。 潜在的な脆弱性を突いた新たなクラッキングの手口が、時間の経過ともに発見される。そのことから、開発当初はコードに脆弱性は無い
Addressable Assetsとは この記事でのバージョン Unity 2018.4.8f1 はじめに 今回は『Unite Tokyo 2019』の講演の動画を見て勉強しつつ、 ついでに記事にまとめちゃおうという感じのやつです。 そして、題材にする講演は、 【リリースが先か】えっ!Addressablesを新規プロジェクトに?【ver1が先か】です! 1年以内に世に出さないといけないタイトルで、Addressable Assets Systemを採用し、リリースまで持っていこうとする、そのてんやわんやな顛末です。 Addressable Assets Systemを時系列に追いながら、そのときの対応方法と運用方法、出た問題の解決方法を説明します。 出演: 中山 正法(株式会社サムザップ ネイティブエンジニア) 【Unite Tokyo 2019】【リリースが先か】えっ!Address
Addressable Assetsとは エディタ拡張とは この記事でのバージョン Unity 2018.4.8f1 はじめに Addressable Assetsのアドレスはファイル名とは別に自由に設定できますが、 なんと同じアドレスを設定する事が出来てしまいます。 しかも設定時、ロード時共にエラーも出ないので、 気付かず重複していて、思ったのと違うのをロードしていたなんて事にもなりかねません。 using UnityEngine; using UnityEngine.AddressableAssets;//Addressablesを使うのに必要 public class NewBehaviourScript : MonoBehaviour { private void Start () { //AlchemistというAddress(3件重複している)のSpriteを非同期でロード A
2019/12/06 追記 本記事で使用しているサンプルは、ECSのバージョンアップにより2019/11/05にGitHubから削除されました。 お久しぶりです。EFです。 今回も Unity の ECS をサンプルを使って解説したいと思います。 注意点 この記事は2019/11/13時点のものになります。 また、本記事は間違った情報を載せている可能性が大いにあることに注意してください。 環境 Windows 10 Unity 2019.1.0f1 以上(本記事は 2019.3.0b3 ) Package Entities : preview - 0.1.1 Burst : 1.1.2 Jobs : peview - 0.1.1 ECSの導入方法や解説は過去の記事を参考にしてください。 UnityのECS導入方法 - EF Blog UnityのECSを理解する その1(初心者向け) -
2019/12/06 追記 本記事で使用しているサンプルはECSのバージョンアップにより、2019/11/05にソースコードが変わっています。 お久しぶりです。EFです。 今回は Unity の ECS をサンプルを使って解説したいと思います。 注意点 この記事は2019/9/29時点のものになります。 また、本記事は間違った情報を載せている可能性が大いにあることに注意してください。 環境 Windows 10 Unity 2019.1.0f1 以上(本記事は 2019.3.0b3 ) Package Entities : preview - 0.1.1 Burst : 1.1.2 Jobs : peview - 0.1.1 ECSの導入方法は過去の記事を参考にしてください。 eorf.hatenablog.com サンプル GitHubからUnity公式のサンプルを落としてきます。 gi
はじめまして! MESONでデザイナーをしているまちるだ(@mathi0829lda)です! MESONに入ってから8ヶ月がたちました! 私自身、アプリやwebのUIデザイン経験が多く、実装がUnityでのデザインをしたことがありませんでした。 MESONではエンジニア1人とデザイナー私1人という少数体制です。二人三脚での開発をすることになったものの、どう考えてもエンジニアの負担が大きすぎる・・・と思い、デザインからUnityでUIを組むところまでを私がやることにしました! 今回の記事では ・Unityを触ってみたいけど抵抗があるデザイナーさん ・デザイン→UnityでのUI開発をしようとしているデザイナーさん がコード無しでUnityでUIを組めるようになれるところまでを紹介します! またUnityの機能を、普段みなさんがよく使うPhotoshopやXDの機能に当てはめて紹介している所も
2023/07/03 要約ツールに「ChatGPTを利用する場合」を追加し、サンプルの生成結果を記載しました。 以前は英語の記事の読み書きが苦手だったのを、このようにして克服した、という話を書きます。 成果を数値で測ってないですが、RSSフィードに登録している英語メディアの数が大幅に増えました。以前は全体の5%程度に対し、今は50%以上が英語メディアになっています。英語に対する心理的ハードルは大きく下がりました。 また、読む力を付けたことで自作のOSSのREADMEもほぼ自力で書けるようになりました。 https://github.com/goodwithtech/dockle/blob/master/README.md では始めます。 全体像 僕の場合、1000文字以上の英文記事を読む場合、STEP1に含まれる内容は必ず行います。 STEP2に含まれるものは、辞書なしで読めないときだけ行
この記事ではUnityにおけるシェーダプログラムの読み方・書き方を解説します! その中でもUnity特有の機能であるShaderLabと、頂点シェーダ・フラグメントシェーダというものを中心に扱っていきます。 なお現在はShaderGraphなどのビジュアルエディタを利用することでシェーダプログラムを書かなくてもシェーダを作ることが可能です。 そんな時代ですがシェーダプログラムを読み書きできるようになっておくメリットも大きいので、今回はあえてビジュアルエディタについては一切取り扱いません。 Unityでシェーダの使い方は分かるけど、書いたことはないシェーダを編集しようと思ってファイルを開いたものの、ナンモワカランC#など、他のプログラムはある程度分かる(C言語が分かるとGood)ShaderGraphに対応していない環境(VRChat等)のシェーダを書きたい
【2023年最新版にアップデートしました】 2022年の国内スマホゲーム市場は1.24兆円と前年比96%で2年連続の市場縮小となりました。市場規模だけでなくスマホゲーム人口の減少も始まったことが大きな要因かと思います。この10年でスマホゲームの牽引によってゲーム市場が大きく成長した結果、ユーザのゲーム選択がコンソール、モバイル、PC、アーケードなど幅が広がり、ゲームのニーズが多様化しています。ゲームのニーズはむしろ拡大していると言えるため、悲観する必要ありません。シンプルにあらためて「ゲームのニーズ」「ゲームの生活の中での役割」に向き合うことが成功のヒントです。 【2022年最新版にアップデートしました】 2021年の国内スマホゲーム市場は1.3兆円とはじめての前年比割れとなりました。要因はコロナ禍に先行成長した分の反動と、10年目になるスマホゲーム市場の頭打ち=スマホゲームとしての新体験
この記事は Akatsuki Advent Calendar 2019 22日目の記事です。 はじめに 「シェーダーに興味あるけどやり方わからん!」という方を最近よく見る気がします. 私個人,もはやシェーダーしかできないくらいシェーダーが大好きなので,興味持ってくれる方が増えてとても嬉しいです! ただ,シェーダーに関するドキュメントは他のプログラムやアーキテクチャに比べて少ないので,初めての方は取っかかりにくいと思います. 加えて,線形代数や光学の知識,グラフィックスに対するデザイン能力も必要になります. この記事では,Unityのシェーダー(Shader Lab)が描けるようになる最低限の知識とやり方を紹介していきます. 「シェーダーに興味あるけどやり方わからん!」という方に対して少しでも力になれればと思います. 前提知識 シェーダーを描けるようになるための前提知識として, ・透視投影変
こんにちは。Androidエンジニアのakatsuki(@akatsuki174)です。 先日、弊社では全社合宿を行いました。私は「Firebase App Distributionで簡単にアプリを配信できるようにするぞ!」という目標を立て、無事合宿中に対応が完了しました。ということでFirebase App Distributionを使ってAndroidアプリを配信する方法について書こうと思います。 ※以降、書くのが面倒なのでFirebase App DistributionをFADと略します。 ※この記事はpotatotips #67の登壇補足資料でもあります。 想定読者 アプリ配信を簡単に実現したい人 FADがどんなものなのか知りたい人 Firebase App Distributionとは Firebaseが提供している、テスターにアプリを配布する仕組みです。比較的最近パブリックベ
はじめに お疲れ様です。かむいです。 この記事はiOS Advent Calendar 2019の17日目の投稿となります。 前回は@codelynxさんの名前付き UIView と後付けストアドプロパティもどきでした。 先月Firebase AuthenticationでSign in with Appleが利用できるとの発表がありました。 firebase.googleblog.com それまでは@fromkkさんが書かれていたようなCloud Functionsを利用したやり方でも近い仕組みを実現できていましたが、やはりFirebase Authentication単体で処理が実現できるのは嬉しい限りです。 qiita.com 今回はこのFirebase Authを利用した実装の紹介だけでなく、実装の中で登場するDelegateメソッドをRx化し、RxSwiftを利用しているケースを
闇の魔術に対する防衛術 Advent Calendar 2019 16日目の記事です。 イントロダクション デプロイ自動化、コンテナ型仮想化、マイクロサービス化などが進み、トラブルシューティングの難易度が意図せず上がっているケースがあります。 日常の開発作業でアプリケーションの設定やアクセス経路をほとんど意識しない コンテナが軽量すぎて ps や netstat すら入っていない Infrastructure as Code (なおドキュメントは存在しない) ログ管理の基盤はあるが、欲しいログが収集されていないか、ログ以外を調べたいので役に立たない 今回は、こうしたケースで 対象システムに熟知していなくても トラブルシューティングを進めていく方法について取り上げます。 スタート あなたは Linux サーバへの SSH ログインに必要な情報を入手し、ログインに成功しました。なんと root
はじめに ソフトウェアと組織経営をめぐる問題で避けては通れないのが、「技術的負債」と言う言葉です。一般には、「早さ」を求めて構築されたシステムの構造的な課題が、徐々に蓄積し、債務であるように徐々に開発速度そのものを遅くして行くと言う現象のことを意味しているように捉えられます。 これは、技術組織を持つ経営者や、ソフトウェアエンジニアではない発注者にとっては理解しにくいものです。またソフトウェアエンジニアであっても「古くなってしまったコード」や「わかりにくコード」全般のことを技術的負債と呼び、それをもって何かを説明したかのように考えてしまうことはままあります。 これらに起因して、双方のコミュニケーションが破綻してしまうこともよく見られる景色です。 技術的負債の経済効果は毎年マイナス12兆円 このような構造的な問題をはらむ技術的負債は、老朽化したレガシーなシステムとして、事業の組織改革を遅らせて
ECSの記事は徐々に増加しており盛り上がりを見せていますが、 それでもやはりECSとは何かよくわからないという声は多く、 なればその仕組みを紐解くべく自前で実装してみよう……という建前の思いつき記事です。 これを読んでUnity ECSが使いこなせるようになるかは知りませんが、 250行程度のソースコードで原始的なECSをUnityライクに実装してみたので、 ECSの発想自体は極めて簡単なんだな、と感じてもらえれば幸いです。 以前書いたECS関連の記事は硬めの内容になりがちだったので、今回はもう少し緩い感じでいこうと思います。 【2020/05/31】 0.11.0に対応。 はじめに ECSとは いざ、実装 エンティティを表現しよう コンポーネントを表現しよう システムを表現しよう エンティティを管理しよう コンポーネントを管理しよう 世界を構築しよう エンティティを列挙しよう 実行してみ
遅延(レイテンシ)とはなにか? - はてなポイント3万を使い切るまで死なない日記 この記事に果てしなくテキトーなことが書いてあってこれを真っ向から信じられると大変迷惑なので、こと細かに真面目に書くことにする。 ……つもりだったが、なんか果てしなくめんどくさくなったのでテキトーに書き散らすことにした。大学の教科書にそのへん詳しいのがいくらでもあったのに、見付からねーし。どこいったんだ。 信号の伝送速度について まず光速度 3.0*10^8 m/s というのは真空中の値*1であって、光ファイバや電線の信号伝送速度はもっと遅い。一般的には光ファイバが 2.0*10^8 m/s 程度とか言われていて、電線についてもモノによってあれこれある。詳しくは波長短縮率とかの単語でググれ。ざっくりとでも30万キロとか恥ずかしいことは言うな。 またどんな距離の都市間でも直接接続できるわけではない。500kmくら
ctypesって?? ctypesとは、pythonでc言語のライブラリを操作するためのライブラリです. FFI(Foreign Function Interface)というんですね, こういうもののこと. ドキュメントはココにあります. このスライドも参考になりました. 似たようなものでCythonというのもありますが, 純粋なpythonスクリプトでCの関数を実行できることがctypesのメリットです. pythonのプログラムを高速化するのだ!!ということであればCythonかもしれませんが, ちょっとしたデバッグ用に使うようなときはctypesでサクっと書いた方が良さそうです. なんでctypes?? もともとAndroidのJNIで使用するためのCのプログラムを書いていました. で, デバッグの過程でそれを可視化したいなと思っていたのですが, 描画なんてpythonでサクっとやっ
はじめに 2017年の11月に、MessagePackを使ったAPIを診断する機会がありました。 調査の結果、弊社診断ツールではMessagePackに対応していないことが判明しました。 そこで MessagePack -> JSON, JSON -> MessagePack に変換するローカルHTTPプロキシを作成し、弊社診断ツールでスキャンできるよう対応したので、紹介します。 検証環境: OS : Windows10Pro 64bit 日本語版 JDK 1.8.0_92 作成したコードは以下のGitHubリポジトリで公開していますので、詳細はそちらを御覧ください。 https://github.com/SecureSkyTechnology/msgpack-json-proxy 詳細な使い方・参考資料などは上記リポジトリのWikiページを参照してください。 MessagePackとは
解説 ●ネットワークのMTUサイズとは ネットワークで通信を行う場合、(通常は)一度に送信可能なデータ(パケット)のサイズには上限がある。例えば、TCP/IPプロトコルで利用されているIPプロトコルでは、1つのIPパケットでは最大64Kbytesまでしか送信できない(IPv4の場合)。 しかし、このような大きなサイズのIPデータを1つのパケットで送信することのできる物理ネットワーク媒体はない。例えばイーサネット(および相互互換性を持つ無線LANなど)では、1パケット(1フレーム)のサイズは最大1500bytesだし、FDDI(光ファイバ)では4352bytesというのが普通である。 このように、一度に送信することができるデータのサイズを「MTU(Maximum Transmission Unit)」といい、ネットワークのプロトコルや媒体ごとに固有の値がある。 MTUサイズよりも大きなサイズ
ルーターを語る上で避けて通れないのが MTU / MSS ですね。自分も L2TPv3 によるレイヤー2 VPN を設定したのを機に、きちっと計算してみました。 MTU / MSS とは MTU は通信インターフェースが通せる最大データサイズ、 MSS は TCP/IP の通信の際のデータ(ペイロード)の最大サイズです。例えば大抵の LAN のインターフェースである Ethernet の場合 MTU は 1500 バイトです。その Ethernet で TCP/IP のパケットを流す場合、 MSS は大抵の場合 MTU – IP ヘッダ – TCP ヘッダ = 1500 – 20 – 20 = 1460 となります。パケットの大きさが MTU の大きさを超えると不必要にパケットが分割され、通信が遅くなります。そのようなオーバーヘッドを避けるには、ルーターで適切に MTU / MSS を設定
配布済アンドロイドアプリのインストールを、特定国、特定機種でブロックする ~ 先日のHUAWEI騒動を受けて ~Android 今回の HUAWEI 騒動を受け、個人的に米国とGoogleの対応にはかなりむかついたので、自分が公開しているandroidアプリ「media.Re.Scan」の配布対象から、google製端末(nexus, pixel, chromebook系デバイス)と、 アメリカ合衆国(全土)を除外することにしました((Googleの方は、「本国の指示に従え」との上からのお達しに準じただけ、というのは、まあ一応想像はつくのですが))。 ちなみに、「media.Re.Scan」は、初版を2014年頃に公開したアプリで、累積インストール数は100万~500万ユーザ、ただし過去30日のアクティブユーザは記事執筆時点では7万程度です。 今回は、公開済みのandroidアプリの配布に
Google Play Console に少なくとも 1 つの App Bundle をアップロードすると、利用可能なデバイスのカタログが表示され、そのアプリに対応しているデバイスを確認できます。できるだけ広範囲のデバイスでアプリを利用できるようにするために、対応デバイスのリストと除外されたデバイスのリストを定期的に確認してください。 [デバイス カタログ] ページに移動します([リリース] > [リーチとデバイス] > [デバイス カタログ])。 なお、デバイス カタログは Instant Apps には適用されません。 デバイス カタログを使ってみる ここでは、デバイス カタログを使い始めるために必要な情報を提供します。 デバイス カタログの利用規約に同意する デバイス カタログに初めてアクセスする場合は、利用規約を確認して同意する必要があります。新しい利用規約に同意するには、アカウン
zlib.js English version zlib.js は ZLIB(RFC1950), DEFLATE(RFC1951), GZIP(RFC1952), PKZIP の JavaScript 実装です。 使い方 zlib.js は必要な機能ごとに分割されています。 bin ディレクトリから必要なものを利用してください。 zlib_and_gzip.min.js: ZLIB + GZIP (Raw) rawdeflate.js: Raw Deflate raw.js: Raw Inflate zlib.min.js: ZLIB Inflate + Deflate inflate.min.js: ZLIB Inflate deflate.min.js: ZLIB Deflate inflate_stream.min.js: ZLIB Inflate (stream mode) (GZ
golangでbyteをstringに変換する処理はたびたび発生するのですが、 手抜きで fmt.Sprintf("%s", byte) などとやっちゃうこともあるのでそれぞれの書き方でどれが速いのか確認してみた。 1) Sprintfを使うパターン fmt.Sprintf("%s", data) 2) string() を使うパターン string(data) 3) unsafe を使うパターン *(*string)(unsafe.Pointer(&data)) 唐突にテストコード package main import ( "fmt" "unsafe" "testing" ) var data = []byte("はろーhogehogeです。") func Benchmark_Sprintf(b *testing.B){ b.ResetTimer() for i := 0; i < b
Goで文字列をGzipで圧縮して展開する処理のメモ package main import ( "bytes" "compress/gzip" "fmt" ) func main() { // 圧縮 var buffer bytes.Buffer writer := gzip.NewWriter(&buffer) writer.Write([]byte("あいうえお\n")) writer.Close() b := buffer.Bytes() fmt.Println(string(b)) // 展開 reader, _ := gzip.NewReader(&buffer) output := bytes.Buffer{} output.ReadFrom(reader) s := string(output.Bytes()) fmt.Println(s) }
2016/06/26 03:37 Blob, ArrayBuffer, Uint8Array, DataURI の変換 ◆ Blob からは FileReader をつかって非同期で変換処理 ◆ ArrayBuffer, DataURI, text, BinaryString ◆ ArrayBuffer や BinaryString, Uint 系配列 から Blob は Blob のコンストラクタでできる ◆ Uint 系配列の buffer プロパティが ArrayBuffer ◆ ArrayBuffer を Uint 系のコンストラクタに入れるとその TypedArray に変換できる 色々あって変換するときにどうすればいいんだっけと思うのでまとめ 今回の対象はこれ BlobArrayBufferUintXXArrayFileBinaryStringDataURI UintXXArr
#JavaScript #WebブラウザのJavaScript String → Uint8Array mystringに任意のStringを入れられる。 日本語などのマルチバイト文字も対応できる。 code:js new TextEncoder().encode(mystring); Nipp: https://nipp.nwtgck.org/#String_=%3E_Uint8Array/es
●dotnetzipのページ ここからダウンロードする http://dotnetzip.codeplex.com/ ●上記ダウンロードの中にあるIonic.Zip.dllをUnityが認識するScriptsなどの適当なフォルダへおく ●下記ソースコードを呼ぶようにする。 (今回はEditorからコールするようにしたけど本来は内部から呼ぶはず) using UnityEngine; using UnityEditor; using System.Collections; using Ionic.Zip; using Ionic.Zlib; public class UnzipBundleFIle { [MenuItem("Assets/UnzipBundleFiles")] static void UnZipBundleFile() { // zipファイル読み込み using (ZipF
シリコンバレーのスタートアップを数多く取材する中で気付いた「シリコンバレーにおけるディシプリン(規律)の存在」や「General Electric(GE)やIBM、SAPといった老舗企業が必死になってシリコンバレーのスタートアップを真似している理由」、そして「日本企業がイノベーションを実現するための処方箋」について解説します 詳しく知りたい場合は「GE 巨人の復活」をご覧下さい。 http://www.nikkeibp.co.jp/atclpubmkt/book/17/P55110/ 今後の記事は「シリコンバレーNext」をご覧下さい。 http://itpro.nikkeibp.co.jp/siliconvalley/
あまり触れてる人はいないが、Unity2018における「Unity TestRunner」は、アセンブリの観点から3つの設定がある。 デフォルト状態 Test Assemblies を有効にした Assembly Definition を配置したフォルダ以下にテストスクリプトを置いた状態 TestRunnerの右上の設定で、「Enable play tests for all assemblies」を設定した状態(Assembly Definion不要) まず、デフォルト状態は、そもそも必要なテストライブラリが読まれないので使えない これ、何も知らないと、コンパイルエラーでNUnit参照がないとか言われるのなんでだー? で小一時間悩むことに... 故に、実質 2つ目 or 3つ目 になるわけだが、2つ目は小規模なプロジェクトやライブラリ開発以外では辛くなることが多く、どうせ採用するのは 3
テスト駆動開発(TDD)とは、コードそのものを書く前にコード部品の自動テストを書くプラクティスのことです。本ブログ記事では、私が同僚たちと、ゲーム開発においてどのように TDD を使ったかをコード例を示しながら説明し、うまくいったことも、うまくいかなかったことも両方お伝えしようと思います。TDD はすべてを解決してくれる手法ではありませんが、結果として私たちは多くのことを学び、そしてよりレベルの高い開発者になれたと思っています。なお私たちのプロジェクトでは、Unity Test Runnerを使いました。このツールは、Unity で NUnit テストの記述と実行を行うためのシステムです。 一般的な TDD のワークフローは次のようなものです。 まず、コードが何をするかを決めます。たとえば、codeHasRun の値を false から true にするコードを書くとします。 次に、コード
OCSP Stapingの概要 OCSPとは? Online Certificate Status Protocol オンラインで証明書の状態を検証するプロトコル RFC2560 応答する証明書の状態は有効(good)、失効(revoke)、不明(unknown)の3通り。それに加えて、OCSP応答状態(無応答)も考慮する必要がある。 OCSP応答の例 openssl s_clientコマンドで以下のように確認できる。 > openssl s_client -connect www.office.com:https -CApath /etc/ssl/certs -status CONNECTED(00000005) OCSP response: ====================================== OCSP Response Data: OCSP Response
自分用の覚書です。CentOS5とか6とかでの経験。 実際高負荷だとか負荷試験ツールで出ただとかのTIME_WAITを減らしたいというときに、 syctlで、tcp_なんとかを調整するというのは今ではよくあると思います。 (わたしはむかし運用していた某無料サイトで負荷に悩んだのが切欠で知りました。無料というだけで会員数激増的な風潮だったのと素行の悪い某国のクローラーとかrewriteのループとかの色々な芸の肥やし的な機会がというか夜中に起こされて眠りを妨げられたくなかったので色々調べたりしていました。) いっぱい接続したいの - (ひ)メモ Linux - ぜんぶTIME_WAITのせいだ! - Qiita ・TCPの終了待ちタイムアウト秒数を設定(default60sec) net.ipv4.tcp_fin_timeout = 10 ソケットを強制的にクローズする前に、最後のFINパケッ
getevent ツール コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。 getevent ツールはデバイスで動作し、入力デバイスに関する情報とカーネル入力イベントのライブダンプを提供します。 各入力デバイスで動作すべき機能がデバイス ドライバからレポートされ、入力イベントに必要なストリームが生成されていることを確認する際に役立ちます。 デバイス機能を表示する adb コマンドで -p オプションを使用すると、デバイスからレポートされたすべてのキーと軸を表示できます。 adb shell su -- getevent -p 次の例では、特定のキーボードでサポートされている Linux キーコードとその他のイベントを示しています。 name: "Motorola Bluetooth Wireless Keyboard" events: KEY (0001):
Android 扱ってると操作を自動化したくなることがあると思います。 Android の自動化は簡単に実現できます。 1. adb shell input による自動化 adb コマンドを使ってタップやスワイプを端末に送信できます。 下記のサイトなどで詳しく解説されています。 getevent/sendeventでAndroid端末の操作自動化 また、下記の記事(英語)で解説されているスクリプトを使用すれば、操作を簡単に記録・再生することもできます。 Android Record and Playback | FatTuba.com 下記は↑の記事のスクリプトを OSX で動作するようにちょっと調整したものです。 動作イメージ あらかじめ手書きメモアプリを立ち上げて、文字を書く操作を記録しておいたものを再生する様子 Android 上で記録した操作を再生 pic.twitter.com/
androidで色々と自動化したくなったのでその覚書 端末の確認 adb devices adb -s 端末のIDで端末を指定して実行 タップとスワイプ タップ adb shell input touchscreen tap x y 例によって左上が(0, 0) スワイプ adb shell input swipe x1 y1 x2 y2 タッチイベントを拾う adb shell getevent /dev/input/event0 event0の部分はandroidのデバイスファイルのパス -iオプションを付けると人が見やすい形式で出力してくれる。 ファイルの転送 PCからandroidへ adb push PCのファイル 端末のファイル androidからPCへ adb pull 端末のファイル PCのファイル androidのシェルを起動 adb shell シェルの中ではタップなど
3. 自己紹介 - まぁまぁ MySQL でご飯食べてます - 一時期は Resource Monitoring や KVS にも 力入れてました - ネットワーク的には素人です - Linuxとハードウェアは嗜む程度 - disk I/O にはむかしから興味あります - その他 slideshare はこちら - http://www.slideshare.net/takanorisejima/ 4. 本日のお題 - kernel 新しくしたりすると、TCP的に意識したほ うが良い変化が見つかるので - 今日は、Webアプリケーションサーバの観点か ら、 connect(2) する際に気になる TIME_WAIT について、書いてみようかと思います - 有識者からのマサカリを、強く歓迎いたします 5. 最初に参考資料 - この二つの記事を読んでいただけば、それで概 ね良いと思うんですが
I have in my application a failure that arose which does not seem to be reproducible. I have a TCP socket connection which failed and the application tried to reconnect it. In the second call to connect() attempting to reconnect, I got an error result with errno == EADDRNOTAVAIL which the man page for connect() says means: "The specified address is not available from the local machine." Looking at
現象 Unityで多言語に対応しようとすると「Arial」というデフォルトのフォントアセットを選択しておけば、システムフォントをよしなに使ってくれるので今まで問題がなかったのですが、iOS13で文字化けする現象が発生してます。 スクリーンショットはiOS13.2.1(iPhone8)です。画面のまん中に[?][?][?][?]となっているところが該当の文字化けです。 調査 UnityのIssueでも報告されていて、タイ語以外にもアルメニア語、グルジア語で文字化けしてしまうようです。 詳しくはIssueの方を見ていただくといいかもしれないです。 実際に調べた結果をまとめます。 タイ語のフォントをセットすれば問題なく表示されます。 スクリーンショットはiOS13.2.1(iPhone8)です。 iOS12.4.1では以下の通り普通にタイ語が表示されます。 スクリーンショットはiOS12.4.1
概要 課金今まで触れてこなかったので、メモです。 基本的にはBillingClientに対して以下をするだけです。 接続する。 課金アイテムの情報を取得する。 アイテムの情報を渡して課金するだけ。 このコードラボやりました。 https://codelabs.developers.google.com/codelabs/play-billing-codelab/ (この記事のコードミスっててヤバイことになっても保証はできないです) 何かコメントあればください。 接続する val billingClient: BillingClient = BillingClient .newBuilder(context) .setListener(this) .build() init { billingClient.startConnection(object : BillingClientState
この文章は、ハイパフォーマンスブラウザネットワーキングを読んで、改めて TCP/IP を自分の中で整理し、パフォーマンスに関する内容を簡単にまとめたものである。 情報通信ネットワーク特論を受講しておりタイミングが良かったという理由もある。 IP IP は、パケット交換によるデータ通信網を実現するためのプロトコルである。The Internet ができる前は、Hop-by-Hop(中間ノード間)で信頼性を確保していた。TCP/IP は、経路到達性と信頼性を IP と TCP の形で分離したプロトコルスイートである。この分離により、複雑なトランスポート機能はエンドシステムだけで行えるようになった。このような設計思想は End-to-End Principle と呼ばれる。 TCP TCP は コネクション指向であり、Go-back-N ARQ を基本とする輻輳制御プロトコルである。 コネクショ
第1回では、富士通が発表した次世代ものづくり環境「エンジニアリングクラウド」と、富士通研究所が開発した仮想デスクトップ高速表示技術「RVEC(レベック)」の動画圧縮技術についてお話しました。第2回では、圧縮率が高くかつ極めて高速な静止画圧縮技術についてお話しました。 最終回となる今回は、エンジニアリングクラウドで問題となるネットワーク遅延への対策についてご説明します。 スループット低下の原因はネットワーク遅延とパケットロス RVECのような仮想デスクトップでは、データの転送にTCP(Transmission Control Protocol)というプロトコルを用いています。TCPを用いた通信では確実にデータが届くことが保証されているため、ファイル転送のFTPや、HTML文書を転送するHTTPなどに用いられています。 さて、仮想デスクトップなどを使って遠隔地からサーバーの操作をしている時に、
最近、昔作ったTest Doubleの解説資料を参照・引用してくれる方がちらほら出ていて恐縮しているのですが、見直してみると結構わかりにくい資料なので今回文章としてまとめたいと思います。内容は世間一般的に言われているMock、Stub、Fake、Dummyといった言葉の定義になります。 Test Doubleとは Test Doubleとは、テスト実行時に、テスト対象が依存しているコンポーネントと置き換わるものです。「テスト代役」と訳されることもあります。世の中でMock、Stub、Fake、Dummyなどと呼ばれているものの総称に位置づけられます。 簡単な例を以下に示します。このコードでは、テストメソッド「テストコード()」がメソッド「テスト対象()」をテストしています。また「テスト対象()」は、中でメソッド「外部メソッド()」を実行しています。なお「外部メソッド」はテスト対象でないとし
dumpsysとは Androidのsystem serviceの状態を出力するコマンド。 オプション無しだと全サービスの情報を出力してくれる。 dumpsys -lで対応するserviceの一覧を取得し、dumpsys SERVICEで特定のserviceの情報だけ出力することも可能。 dumpsys自体はserviceに対してdump要求を投げるだけで、実際の情報出力はservice側でおこなう。 この作りのおかげで柔軟にdumpsysを拡張できる。 逆に言えばdumpsysに対応するserviceはシステムごとに異なる。 以前"cpuinfo"、"storaged"を取り上げたので、今回はメモリ使用量のスナップショット情報を取得する"meminfo"の中身を見る。 ソースコードおよび動作確認の環境は以下のとおり。 - Android: android-8.1.0_r1.0, Oreo
© 2018 SQUARE ENIX CO., LTD. All Rights Reserved. モバイル対戦アクションゲームの 通信最適化テクニック 通信遅延やパケロスへの対策をがんばる テクニカルディレクター 石森礼二 © 2018 SQUARE ENIX CO., LTD. All Rights Reserved. 前置き 通信の遅延には、それをごまかすテクニックがありますよね。 • ユーザーの操作をそのユーザーの画面にとりあえず即反映する 通信の結果を待たず、右キーを押したらすぐ右に移動する • 受信した通信結果が矛盾したら、通信を正として訂正する 実はすでに敵に吹っ飛ばされていたので右に移動はできなかったとか こうすれば、通信の劣悪さを感じづらくなります。 ただ、通信が劣悪だと矛盾が頻発するため“対戦”アクションゲームとし ては通信もなるべく頑張る必要があります。 ※ひとりプレ
Moq は、テストダブル(=単体テスト用の代役オブジェクト)を簡単に作るためのライブラリです。 テストダブル 単体テストにおける問題のひとつとして、以下のようなことがあります。 テスト対象の依存オブジェクトが・・・ ネットワーク通信が必要 データベースアクセスが必要 など、外部に依存する場合、そのままでは単体テストを作りにくいです。 これを解決するために、実際のオブジェクトの代わりを用意します。 テスト用の代役オブジェクトをテストダブルと呼びます。テストダブルはその役割に応じて、スタブ、モック、フェイク、などと呼称されます(それらの違いについては、本記事の主題と直接は関係がないので割愛します)。 典型的なテストダブルの実装 テストダブルはあくまで代役なので、本物と同じ振る舞いはしません。単体テストが動けば良いと割り切ります。 本物と同じ I/F を持つ。 通信などの振る舞いはしない。 特定
Unity 5.3 から、ユニットテストがエディタ組み込みのツールで実行できるようになった。 簡単なユニットテストを定義し、CI(Jenkins)で実行してみる。 概要 Editor Test Runner を使ってユニットテストを実行してみる Unity Editor の GUI からテストを実行してみる Jenkins でテストを実行し、テスト結果を表示してみる 環境 Unity 5.3.2 基本的なこと Unity - Manual: Editor Test Runner を読む。 Unity Editor で実行する まずは、GUI(Unity Editor)から実行してみる。 ユニットテストを定義する Assets > Create > Editor Test C# Script で作成する。テストスクリプトは、Editor フォルダ内に配置する必要がある。 折角 Unity で
Git における、git commit の取り消し方法や、やり直し操作に関する方法をまとめました。Git はどんなコミットでもすべてを記録していますので、一度間違えたとしても、いつでも昔の記録からもとに戻せ事が保証されています。 取り消しや、やり直し方法をマスターすれば、バージョン管理ツールとしてのメリットを最大限享受することができます。 git commit の取り消し方法、6選 コミットした直後に「あっ、この変更入れ忘れた!」「あっ、いらないファイルを混ぜてコミットしちゃった!」など、確認不足による間違いは、時間に追われるエンジニアに非常にしばしば発生します。そのような間違いコミットは、まだpushしていなければ、容易に取り消したり、その後コミットをやり直すことができます。 コミットの取り消しにまつわるケースを、下記の6種類に分けてご紹介します。 直前の git commit 実行を取
ネットワークの設定をコマンドからやりたかったので... OSXではnetworksetupコマンドで可能そうです. uraura@rosemary$ networksetup -listallnetworkservices An asterisk (*) denotes that a network service is disabled. Thunderbolt Ethernet Wi-Fi iPhone USB Bluetooth PAN Thunderbolt Bridge uraura@rosemary$ networksetup -getsocksfirewallproxy Wi-Fi Enabled: No Server: Port: 0 Authenticated Proxy Enabled: 0 uraura@rosemary$ sudo networksetup -set
adbはデバッグには欠かせないツールです。しかし、USB機能の利用中などケーブル接続できないケースではLogcatなどログ確認が困難です。そんなときに便利なWiFi環境を利用したネットワーク越しのadb接続方法について解説します。 その他の便利な使い方は、 ・adbを使いこなすでコマンドの紹介 ・adbを使って端末にキーイベントを送るでキーイベントの通知 を取り扱っています。合わせてどうぞ。 ネットワーク越しのデバッグをするまえに 設定に入る前に大事な注意事項があります。Android端末ごとに挙動が異なりますが、場合によってnetwork越しのadbの実行にroot権限が必要です。 (Android 3.1のMOTOROLA XOOMではroot権限は不要でした) CyanogenModなどカスタムROM、beagleboardなどポーティングするケースでは自分がrootなので問題になり
今回は結構グレーな記事です。 リバースエンジニアリングは利用規約で禁止されています。この記事内の記述を実行した事によるいかなる損害も補償しません。すべて自己責任の元で行って下さい。というか、「指揮官、こんなことしちゃだめだぞ…」(CV.堀籠沙耶) また悪用は厳禁です。課金アイテムを扱いたいならダイヤ購入もお忘れなくにゃ。 文章の口調がところどころ違いますが、追記に追記を重ねたキメラ記事なので、更新時期によってデスマス口調だったりそうじゃなかったりしてるってだけです。キニセズヨンデネ。 追記 アプリケーションのバージョンアップに伴い、旧データの一部(スキンなど)がobb内に移動することがあります。obbファイルはapkファイルを入手(apk downloaderやGoogle Play以外のサイトなどを利用するなどして可能)した後展開することで入手できます。(NOXで/Android/obb
TCP各バージョンの輻輳制御の比較 工学部第二部 情報通信工学科 4年 宮川 湧太郎 目次 1.はじめに 1.1 TCPの歴史 1.2 広帯域ネットワークの問題点 2.TCPの種類 2.1 TCPの輻輳制御 2.2 TCP Tahoe 2.3 TCP Reno 2.4 TCP New Reno 2.5 TCP Vegas 2.6 CTCP 3.実験計画 3.1 NS2 3.2 実験シナリオ 3.3 実験プログラム 4.実験結果 4.1 TCP Tahoe 4.2 TCP Reno 4.3 TCP New Reno 4.4 TCP Vegas 5.まとめ 6.参考文献 1. はじめに 近年のインターネットを含むコンピュータネットワークでは、高速、広帯域な回線を必要とするコンテンツの普及などによって、ネットワーク帯域の公平かつ効率的な利用が求められるようになってきた。その中で主に用いられてい
さて、上記を踏まえた上で、3wayハンドシェイクのステップを見ていきます。 クライアントがサーバーにSYNパケットを送信(000010) サーバーはそれを了承するACKと通信の開始を要求するSYNを一緒に送信(010010) クライアントはサーバーに対してACKを返す(010000) これで1対1の通信を確立し、その後データのやりとりが開始されます。ちなみに切断するときもコントロールフラグを利用して連絡を取り合います。 実際の通信を始める前に コネクションを確立した後には、実際に通信を始める前にお互いが扱える以下のデータ量を確認します。 ヘッダを含めたデータの大きさ(セグメントサイズ) 一度に受け取れるデータの数(ウィンドウサイズ) 上記は送信側、受信側問わずサイズの数字が小さい方にもう片方が合わせる形となります。 データを確実に届けるための仕組み TCPでは、データを届けている途中でデー
2019年もついに終わりを迎え、2020年になろうとしている。 6月末に転職してから半年が経った。 SESから自社開発になり、自分の動き方・考え方も少しずつ変化したように感じられる。 技術的な部分だけではない、前職とはまた違った観点でエンジニアリングそのものの難しさを実感している。 しかし、自社開発ならではのサービスとチームの距離の近さは素晴らしく、一つ一つサービスを良くしている実感を得られるのはやはり楽しい。 同僚も優秀な方ばかりで、転職して良かったと心から思う。 一方で、この半年で心の奥底からふつふつと湧いてきたものもあった。 コンピュータサイエンスへの興味だ。 コンピュータサイエンスへの憧れ 僕は工業高校を卒業してからすぐ、石油天然ガスのプラントに就職。 その後、1年半でベンチャー企業(SES)に転職。 そして再び1年半後、現職(Webサービス開発)に転職、という経歴を持っている、2
元ラーメン屋店長プログラマのObjective-ひろC(@hirothings)です🍜 GitHub Actionsで個人アプリのデプロイを自動化したのでその手順を書きます。 目次 GitHub Actionsとは? なぜGitHub Actionsをデプロイ環境に選んだか? 実装の流れ GitHub Actionsとは? 「GitHub上で動作するサーバレス実行環境」で、GitHub関連のイベントをトリガーにCI/CD様々な処理を実行できます。 中の人がGitHubの概要について説明しているわかりやすい記事があるので、それを読むのがオススメです。 以下、抜粋。 Actionの実体はDockerコンテナ Actionを組み合わせて独自のワークフローを構築できる コンテナ実行環境がコンパクトで重い処理の実行には向いていない 特徴 GitHub Marketplaceに、actionがたくさ
概要 UnityやC#にはメモリ量を取得する関数がいくつかありますが、関数の種類が多く特定の環境でしか使えない関数もあったりして複雑なのでまとめてみました。Windows、Mac、iOS、Androidで確認しています。 取得方法まとめ 取れる値関数 デバイスメモリ量SystemInfo.systemMemorySize (取れるのはおおよその値。MB単位) ビデオメモリ量SystemInfo.graphicsMemorySize (取れるのはおおよその値。MB単位) アプリアプリ全体※長くなるので後述 Unity Memory (リソースなど)全体Profiler.GetTotalReservedMemoryLong 使用量Profiler.GetTotalAllocatedMemoryLong Profiler.usedHeapSizeLong (MacのEditor以外ではどちらも同
Image Credit : n8n.io はじめに 複数のアプリを連携させて何かしらの処理をさせることができるサービスとして、IFTTTやZapier、Microsft Flowなどが有名です。n8nはこれらののオープンソース版です。この記事では、n8nをインストールして実際に使用してみるまでの手順をまとめます。 n8nでできるようになること 以下のようなGUIの管理画面にブラウザからアクセスし、ノードを設置して繋げていくことで色々な処理を実行させることができます。なお、n8nではノードを繋げて処理を実施する一連のノード郡を「ワークフロー」と呼んでいるのでこの記事でもワークフローと呼びます。 処理を担うノードには色々な種類があります。Google DriveやDropboxのようなクラウドストレージにアクセスできるノードや、AsanaやTrelloのようなタスク管理サービスにアクセスでき
The session begins with the client saying "Hello". The client provides the following: protocol version client random data (used later in the handshake) an optional session id to resume a list of cipher suites a list of compression methods a list of extensions TLS sessions are broken into the sending and receiving of "records", which are blocks of data with a type, a protocol version, and a length.
はじめに 時はPlayStation2も そろそろ終わり。 PS2互換機がゲームセンター等で使われていた時代の事です 私は当時 超新人だったんだけどね ただ私は 大学を3ヶ月で光速中退して すぐにフリーランスになった変な経歴持ちです そんな時 ある人物が 掲示板に メモリマネージャやDMA、3DCGについて質問をしていた ちょうどその時期 仕事が楽だったので 光速で回答しました。 メモリマネージャ作りたいっていうので、簡単な方法として、連結リストでAllocateしていくと簡単だよ DMAについては 方向のふらぐがこーであーするだけだよ 3DCGについては DirectXを知識は入れてたので なんとなく回答 すると やり取りから1週間で 仕事してもらえますか? PS2の自社タイトルを作ってます。コアエンジニアが不足しています とメールアドレス宛にメッセージがきたので 請ける事に これがすべ
会社を設立して1年が経ちました。 会社って言っても社員は自分だけの1人会社です。 うちの会社は11月決算なので、だいたい一期目の会計情報がまとまりました。 売上とか収益について聞かれることが多いので、ここにまとめます。 あまりはっきりと数値を言えないところもあるのですが、できるだけ情報を書いてます。 売上 売上は2900万ちょいでした。 前年の個人事業主のときはたしか2000万ちょいだったと思うので一応順調に増えてます。 収入 今年は過去のアプリ、特にDivideとネコの絵描きさんが稼いでくれました。それと集英社さんとの仕事(ネコの大喜利寿司)が大きかったです。 Divideに関してはパブリッシャーさんに頼んで中国でも出してもらってます。中国進出で大きく稼いでいる人も多いですが、自分はぼちぼちって言う感じで、月々の収益の10%前後ぐらいです。 パブリッシャーを通していないアプリの収益は、ほ
はじめに 私自身は今年の 7 月にドメイン駆動設計(DDD)を実践する企業に転職したばかりで DDD 実践歴は浅いのだが、最近は開発業務の他にも中途採用者の DDD 教育や 現場で DDD!2nd のドライバー役をする機会を頂くなど、DDD の布教活動にも少し関わっている。 その中で「DDD ムズイ」という言葉をよく聞いたので、DDD の実践に悩んでいる人向けにサンプル問題の解説を通して、実は DDD 自体は難しくないんだよってことを教える目的で本記事を書いた。 TL;DR(最初に結論) DDD 自体はドメインを中心にモデリングと実装をイテレーティブに繰り返す設計プロセスであり、モデリングと OOP の理解があれば誰でもできる。 難しいのは DDD 自体ではなくて、モデリングまたは OOP である。特に「良いモデル」を得ることは非常に難しい。 なので「DDD ムズイ」と感じる人はモデリング
(※追記:らいおんの隠れ家 (lionfan) 様による翻訳もぜひ参照されてください) すばらしい仕事をするためには生まれながらの能力と決断力が必要であることは誰もが知るところです。しかし、あまり理解されていない第三の要素があります。特定の話題に対する取り憑かれたような関心です。 この点を説明するために、私はある人々の集団と自分の名声を犠牲にする必要があります。そして、私はその集団として、バスの乗車券(バスチケット)の収集家を選ぼうと思います。古いバスの乗車券を収集する人たちがいます。多くの収集家と同様、彼らは自分の収集品の特徴に取り憑かれたような関心を抱いています。彼らは、私たちにとっては記憶するのが難しいような様々な乗車券の種類を区別することができます。私たちは十分に注意を払わないからです。古いバスの乗車券についてそんなに時間をかけて考えて、何の意味があるのでしょうか。 それにより、私
ポール・グレアム「天才のバスチケット理論」を翻訳しました。原題は The Bus Ticket Theory of Genius で、原文はココです。英語に強い皆さま、メール(takeuchi19@mail.goo.ne.jp)でのアドバイスを、よろしくお願いいたします。 ※追記 翻訳した後に、すでにFoundX Reviewの名訳があることに気づきました。そちらを読んだほうが誤訳がないと思います。 天才のバスチケット理論 2019年11月 偉業を成し遂げるには、ご存じの通り、才能と決断力がどちらも必要だ。だが、あまり知られていない三番目の要素がある。特定の話題に偏執的なまでに興味を持つことだ。 これを説明するために、私はある集団からの評判を落とすだろうが、バスチケットのコレクターを選ぼう。古いバスのチケットを集める人がいる。多くのコレクターと同様、彼らは自分たちが集めたものの細部に執着す
Apple Business Manager/Apple School Managerは、企業や教育現場などの組織でさまざまなApple社のデバイスなどの管理が可能となるWebサービスです。 今回はこのApple Business Manager/Apple School Managerの設定方法や使い方、プラクティスなどを解説していきます。 あくまで2019年12月時点の情報であるため、時が経つと画面や仕様が変更になっている場合があります。 この記事はcorp-engr 情シスSlack(コーポレートエンジニア x 情シス) Advent Calendar 2019の12月16日の記事でもあります。 Apple Business Manager/Apple School Managerとは ABM/ASMの申請 作業1:D-U-N-S番号の発行 作業2:組織の登録と審査 作業3:Mana
こむろ@札幌です。 寒い。 *1 まずはこちらをご覧ください このグラフは ElastiCache(Redis)の BytesUsedForCache の3ヶ月にわたるメトリクスです。 波があるものの単調増加しているのが分かります。そしてある期間で急転直下しています。 細かい波は Expire による自動削除。後半の不規則な小さい波と巨大な急転直下が Eviction による強制的なアイテムの削除によるものと思われます。 背景 背景です。 Spring Boot 2.1.0.RELEASE Java ベースの Webアプリケーション(APIサーバー、一部UIを提供している) マスタデータのCacheやSession情報を Redis に格納している Redis 周りのライブラリは以下を利用 spring-boot-starter-data-redis spring-session-data
プログラマでテスト駆動開発者の@t_wadaさんをお招きした社内勉強会での様子をお届け!#メルカリな日々 みなさん、こんにちは!メルカリのエンジニア組織の組織づくりや情報の可視化を担当しているEngineering Officeのaisakaです。 2019年12月18日に、プログラマでテスト駆動開発者の和田卓人(以下@t_wada)さんを社内にお招きし、社内勉強会を実施しました! 内容は、先日行われたEOF2019 (Engineering Organization Festival)にメルカリの今の課題を取り入れ、アレンジしていただいたものです。EOF2019にて、メルカリから参加した@hidenorigotoさんと@jarinosukeさんの登壇記事はこちら! 当日は120名以上のエンジニア、プロダクトマネージャー(PM)、コーポレートを含むメンバーが参加し、ランチを食べながらプロダ
45歳以上の大企業社員のリストラが話題になっていた。 最近の大企業のリストラ ・味の素:50歳以上 100人 ・カシオ:45歳以上 200人 ・エーザイ:45歳以上 100人 ・ファイザー:50歳以上 200人 ・LIXIL:50歳以上 人数定めず ・KIRIN:45歳以上 人数定めず 全て2019年のニュース 45才以上が対象者なのは共通 pic.twitter.com/NvUGOH0sR6— スイッチ (@Ebisu0808Fumiko) December 1, 2019 新卒で入った会社で粉骨砕身働いて、40にして惑わず、「さァこれから会社で頑張ろう」といったタイミングでリストラされるのはいたたまれないだろう。 40代の社員がリストラされるのは利益に比べて賃金が高すぎるためだが、人の能力は働いた期間に比例して伸びていくわけではない。 どの部署に配属され、どんなキャリアを歩み、どんな専
はじめに データ分析とデータ品質改善に従事してきた筆者が、SQLを用いた分析の基本である「ウィンドウ関数」の使い方とデータ品質の調査改善を行う手法をまとめてみようと思います。 こちらの記事は、SQLの知識向上と振り返りを主題としているので、ABC分析、バスケット分析、RFM分析などの「データ分析の手法」について説明している記事ではありません。(反響やコメントによって別投稿するかもしれません) 背景 SQLはエンジニアの大多数が利用しており、多くの方はWebサービス開発などでデータの登録画面や検索画面を作る際にSQLを利用したり、またはシステムの運用保守で障害の原因調査のためにSQLを利用して原因を特定すると思います。そのため、テーブル結合・サブクエリ・集計関数といったSQL構文は理解されている人が多いと思いますが、分析関数を理解して使っている人となると、ぐっと減ると思います。 私は以前、社
一般的に、自律型のチームは他律型のチームよりも開発のスピードが早く、問題を未然に対処できると言われています。自律型のチームに不可欠な要素として、「何でも言いやすい雰囲気」「居心地の良さ」の創出があります。これらは「心理的安全性」とも呼ばれ、米グーグル社が「チームの生産性を高める唯一の方法」として発表したことで大きな注目を集めています。 「バグや障害の多発」「エンジニアの離職率の高さ」「リリースの延期」といった現場の問題解決に心理的安全性がなぜ効いたのか。心理的安全性を創出したプロセスと失敗から学んだ教訓など、現場担当者の視点を対談形式でお伺いします。 ■自己紹介(左から) CAMPFIRE プロダクトマネージャー 久津 佑介(ひさつ・ゆうすけ)さん 印刷会社でエンジニア、開発会社でエンジニアチームのマネージャーを経て、2019年に株式会社CAMPFIREに入社。プロダクトマネージャーとして
準備 1. 契約 / 税金 / 口座情報の設定 App内課金を提供するには、有料App契約に署名し、税金および口座情報を設定する必要があります。 App Store Connectの「契約 / 税金 / 口座情報」のページで各種情報を入力をしてください。 ※ダウンロードが無料のアプリであっても、アプリ内課金を提供する場合、上の画像の有料Appのステータスがアクティブになっている必要があります。 アクティブでない場合、課金アイテムの取得などでエラーになります。 また直接ここが関係しているかは定かではないですが、課金アイテムの追加で自動更新サブスクリプションの項目が表示されませんでした。 2. Appの追加 App Store Connectでアプリのページを作成します。 「マイ App」で新規Appを選択して追加します。 3. 課金アイテムの追加 アプリのページを作成したら課金アイテムを追加
はじめに 『Standard Go Project Layout』と『ヘキサゴナルアーキテクチャ』を参考にサンプルプロジェクトを作ってみました。 トランザクション周りも取り扱います。 『Standard Go Project Layout』とは ↓これです。 Standard Go Project Layout 上記の内容を日本語で簡潔にまとめてくださってる記事もありました。 Goにはディレクトリ構成のスタンダードがあるらしい。 別の記事になりますが、こちらもとても参考になりました。 Practical Go: Real world advice for writing maintainable Go programs ヘキサゴナルアーキテクチャとは ↓これです。 ヘキサゴナルアーキテクチャ(Hexagonal architecture翻訳) 本家サイトへのリンクも張りたかったのですが、現
アメリカに8年も住んで、現地の人との交流が生活の90%を締めていると忘れがちですが、英語でメールって大変ですよね。大変なんですよね...TAしながらで1年半ぐらい毎日英語でメール50+通打ってどうにか書けるようになりましたが、あの経験がなければ今もメール打ててないと思います。 英語力ゼロでもなんとか海外の方とメールをしていますが、やはりフリーの翻訳だけでは限界を感じます。先日購入したこの「クリエイターのためのやさしい英語&英文パターン1500」は、かゆいところにも手が届く文例がたくさんあってすごく役に立ってます!あと、絵もステキ✨⁰https://t.co/FIZy3WcB5A pic.twitter.com/LVmAsa2eTZ — サタケシュンスケ|イラストレーター(20年2月個展 東京浅草) (@satakeshunsuke) November 16, 2019 フリーランスでは海外
ECSは現状正直な所、物量が必要な部分をECSで試して大まかな部分は既存のMonoBehaviourやUnityEngine系のコンポーネントを使うのがベターな回答です。今回はECSとGameObjectを連携させる手法についてを紹介します。 検証バージョン:Unity 2019.3、Entities 0.3.0 preview 4 Hybrid ECS GameObjectとEntityの同期 同期のサンプルコード GameObjectもしくはEntityの破棄について クラスを管理する「Managed」なComponentData ISharedComponentDataとの違い おまけ 関連 Hybrid ECS ConvertToEntityはGameObjectをEntityへ変換してくれるコンポーネントですが、ConvertAndInjectGameObjectを使用すると変換
QualiArts Advent Calendar 2019 8日目担当の@halshunです。 今回は個人的にしっくりきているゲーム開発における立ち回り(ムーブ)について書きます。 デザイン手法というよりはプロジェクト遂行ノウハウになると思います。 開発に踏み込んだ内容はこの投稿が素晴らしかったので、ぜひ読んで頂きたいです。(とくに1−1) 8つのムーブプロダクトの内容に関わらず意識している立ち回りが8つあります。 ひとつずつ説明していきます。(おそらく後半の方が面白いです) 1.プロジェクト最初期にジョインする 2.バランスの良いデザインチームを構築する 3.制作スケジュールを他セクションよりも早く見積もる 4.あらかじめエンジニアに侘びておく 5.序盤で全画面見える状態にして仕様変更の芽を摘む 6.専用のプランナー向けデザインキットを作る 7.グラフィックルール作成と情報設計を切り分
UnityのAddressableアセットシステムの概要とメリット、基本的な使い方をまとめました。 今まではAssetBundleの管理がとても面倒だった Addressableのメリット① - ロード元の選択 Addressableのメリット② - 依存関係の管理 Addressableのメリット③ - メモリ管理 インストール アドレスを付ける アドレス名を指定してロードする シリアライズしてロードする Play Mode まとめ 参考 Unity2019.2.13 Addressable1.3.8 今まではAssetBundleの管理がとても面倒だった まずAddressableアセットシステムが生まれた経緯を知るために、これが登場する以前の状況について振り返ります。 UnityではダウンロードコンテンツをAssetBundleという圧縮形式にして配信できます。 AssetBundl
今年のUniteの「Unity開発ロードマップ最新情報」にて、DOTSベースのビジュアルスクリプティングツールが開発中であると言う旨が話されました。 ※上記講演のスライドより引用 このツール自体は引用しているスライド中にある通り、Unity2020系統でのプレビューリリース(付け加えると2020年のGDCの前後)を目標としているものとなりますが、ツール自体はフィードバックを目的とした開発版の物がフォーラムにて公開されており、現時点で6thまでリリースされてます。 今回話す内容としては最新版である「DOTS Visual Scripting 6th experimental drop」を触った上での機能や所感について色々とメモしていければと思います。 注意点 フォーラムでも免責事項として言及されてますが、大雑把に纏めると以下の点についてはご了承ください。 実稼働用ではない まだ動作不安定なと
UnityのAddressableアセットシステムでロード・アンロードする方法をまとめました。 はじめに 基本的なロード方法と結果の待ち受け方 アセットをロードする Sceneをロードする GameObjectをロードしてInstantiateする 関連 参考 Unity2019.2.10 Addressable1.3.8 はじめに 本記事ではAddressableアセットシステムを使ってロード・アンロードする方法をまとめます。 Addressableの概念や基礎知識についての説明はこの記事では省略しますが、 以下の記事にまとめていますので、必要に応じて参照してください。 light11.hatenadiary.com 基本的なロード方法と結果の待ち受け方 Addressableでは、Addressables.LoadAssetAsync()にアドレスを指定することでアセットをロードできま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く