サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
qiita.com/YukiMiyatake
Go1.18でジェネリクスが追加されたので、5年ぶりにGolangを覚えなおし、GenericListとマルチキャスト可能Channelの実装をしたGoGenericschannel はじめに Go1.18が2022/3/15にリリースされました 以前Goの開発陣はジェネリクスは不要とか言ってたような気がするが 1.17でもお試しが出来たと思いますが 今回正式に導入されたので、5年ぶりにGoのお勉強です ジェネリクス以外に5年間のUpdateを調べましたがツールやライブラリは変わったものの 言語じたいはたいした変化はなかったので ジェネリクスだけです ジェネリクスとは C++でいうテンプレートです D言語、Java、C#、Haskell・・・ 今では様々な言語に導入されている概念です 引数の型が異なる関数やメソッド、メンバ、クラスに対して、一つの実装で複数の型に対応出来ます 具体的には、例
はじめに Windowsをとある理由で再インストールしました とある理由とは、WSL2を業務で使いたかったので、InsiderPreview(ベータ版)のWindowsを使ってたのですが もう安定板でWSL2が使えるようになったため、安定板に戻したかった そして、何年も前からLinuxをVMやWSL、Dockerで使えるようになったためLinuxとのマルチブートを行わなくなったため UEFIが出てきた頃からマルチブート環境を作らなくなったため 知識をアップデートします! やっちまった 旧OSでは、CドライブにNVMe SSD 1TBを使い、補助として4TBのHDDを使っていました 今回、速いNVMe 2TBを購入したのでそちらにWindowsをインストールしたのですが 旧SSDも刺していたため、旧SSDのUEIFと回復パーティションを使われてしまいました・・・ Windows再インストール
動画 一応、動画でも追加説明をしています。もしよろしければ。 https://www.youtube.com/watch?v=E5lO5aQFTA0 https://www.youtube.com/watch?v=yY4Z9Ishs-8 Mitivation C++の案件を請け、数人のメンバーで開発をしている メンバーからC++構文で質問を受けるので その部分を改めて解説します 今回説明すること ラムダ概要 関数オブジェクト キャプチャ C言語の関数ポインタとの互換性 寿命切れ変数の参照キャプチャ mutable クロージャ 初期化lambdaキャプチャー ジェネリックラムダ 今回説明しないこと ファーストクラスオブジェクト レキシカルスコープ テンプレート 右辺値参照 moveセマンティクス 完全転送 *thisキャプチャ std::function スマートポインタ constexpr
はじめに 私は元々Microsoft関連の案件やWindowsゲーム、コンシュマーゲーム、カーネル開発などを行っていました 時々サーバ開発も行いました TCP/IPを使って直接サーバをかく場合はVisualStudioでコードを書いたり、それをgcc対応したりしていましたが 時代がWebフレームワークによる軽量開発が多くなり、WindowsにそのたびにApacheや言語をインストールして開発 コマンドプロンプトが貧弱なのでCygwinを使って 開発環境ごとにHDDを作ってHDD交換しながら仕事をしていた時もありました しかし、WindowsでWeb開発環境を完成させるのは少し疲れます。本番環境がLinuxの場合は予期せぬ問題がおこります 私は2011年にMacbookProを買い、それ以降はMacでサーバ開発を行っていました MacOS XはNetBSDベースのLinuxに優しいOSで非常
開発環境を快適にするためには、SSDより速いRamDiskを構築すべきだ!! RamDiskとは メインメモリの一部をストレージのようにドライブとしてマウントする メモリなのでとても速い SSDがかなり高速になったので、HDD時代ほどはメリットがないが SSDの書き換え回数を減らすというメリットもある しかし、メモリなので電源OFFをするとデータが消える (たいていのソフトは、データをストレージに保存するオプションがある) RamDiskソフトにより速度などが違うので何個かためしてみた 環境は Windows10 64ビット。 まず NVMe SSDの速度 ROG Ramdisk Max?GB。上限はわからないが、かなり大きなサイズを確保できる NTFSでの保存も可能 複数ドライブ作成可能 やはりSSDより速い。圧倒的に Dataram RamDisk Fat32 Max1GB その他色々
motivation 近頃はほとんどのプロジェクトでDockerないしKubernetesといったコンテナで開発します 特にフリーランスだと複数の仕事が同じDockerホスト上のコンテナとしてぶら下がります あまり大きな問題が出たことはありませんが プロジェクト終了時に全てのコンテナを削除したい コンテナ、イメージ名がかぶる可能性 他のプロジェクトのイメージが お客さんの前あるいは配信時に、他の案件のコンテナリストが表示される 等の問題が生じる可能性があります まず、シェルなどをまとめたものを下記においておきます https://github.com/YukiMiyatake/util/tree/master/environment/docker_sandbox $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker dind
UNITYのパフォーマンス向上には、DrawCall削減という話はよく聞くと思うし、いろいろな手法が書いてあるが 実際に手で動かさなければ納得できないので、実際に調査です 手抜きで ビルトインのStandardShaderで行います DrawCall、SetpassCall、TotalBatchesって何? SetPass マテリアルの変更のためにGPUへグラフィックコンテキストを送る回数です グラフィックコンテキストの変更はとてもコストが大きいため この数を減らすことが最重要 基本的にはマテリアル数を減らす事で下げます これはGPUに対して頂点の描画命令を出した回数です 同じマテリアルでも異なるオブジェクトの場合はDrawCallが呼ばれる事もあるので DrawCall≧SetPass になるでしょう TotalBatches なんだろうね 素のScene UNITYを新規で作り実行する
はじめに Webアプリに限らず、ほとんどのサービスではユーザ名とパスワードを入力し、ログインをしてから サービスを使う OSのログインしかり、メールアプリ、Webサービスなど ユーザ名とパスワードの入力という基本部分はほぼ変わってないが 時代とともにより安全な仕組みへと進化しているので 私の知る限りの説明したいとおもう 認証、認可の違い まずややこしいのが、認証、認可(承認)のちがいである 認証(Authentication) は、ユーザーが正しいかどうかの確認(パスワード認証)で 認可、承認(Authorization)は、アクセス権の確認である 昔はこの認証、認可を同時に行っていたが、OAuth等の登場から厳密に分ける必要が出てきた ただ、いまだにHTTPヘッダでも混同して使われていたりする ただし順番に並んでいるともかぎらないし、抜けもある 平文ベーシック認証 いわゆるBasic認証
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 時はPlayStation2も そろそろ終わり。 PS2互換機がゲームセンター等で使われていた時代の事です 私は当時 超新人だったんだけどね ただ私は 大学を3ヶ月で光速中退して すぐにフリーランスになった変な経歴持ちです そんな時 ある人物が 掲示板に メモリマネージャやDMA、3DCGについて質問をしていた ちょうどその時期 仕事が楽だったので 光速で回答しました。 メモリマネージャ作りたいっていうので、簡単な方法として、連結リストでAllocateしていくと簡単だよ DMAについては 方向のふらぐがこーであーするだけだよ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 回収できなかった案件についてお話しよう はじめに 今からx年前の事。某技術者が多く集まるSlackにて C++でWebクローリング出来る人はいないか? とのことで、以前より Boost.Asioの記事をかいてる私に話がきた まず案件をくれた人について、はじめての取引なので周辺の人に話をきいたが 少し甘いという意見はあるが、誠実で良い人という意見だったので請けた プロジェクト開始 案件を紹介してくれた人の友だちよりメッセージがきてChatworkに入った 具体的な案件に関しては担当の技術者と話をしてほしいとのことで 金額は時給1万円で月末
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 間違えている箇所があれば指摘していただきたい 特にPHP,Python、Rubyを本格的に開発した経験が少なく 間違ってたら私のために教えていただきたい ただ1つ 私の中でも正しい用語定義がわからないので 非同期と書いたときは 非同期I/O、ノンブロッキングI/O 両方のことをさし マルチスレッドは並列などと表記する 現在の状況 2019年。Webサービスはどんどんローンチされている Java、nodeといった非同期のサービスも増えてきたが 未だに PHP、Python、Rubyといった非同期ではなくプロセスを立ち上げるサーバ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? #前提 Dynamo初めて触る人向けのDynamoのまとめ 多分これだけ知ってればDynamoチョトデキル #About DynamoはNoSQLにジャンルされる KVSである。当然RDBより速い 機能的には、Redisより少し出来る事が多く、MongoDBより少ない 速度的には Redisに劣るので、必要に応じてAPI CacheでRedisを建てる 従量課金なので常時起動するコストがない ##メリット フルマネージドなので、設定もデプロイも不要でオートスケーリングする 死活監視も不要なので、夜もゆっくり寝ることができる ##テーブル
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 自分語りすみません。自己紹介ついでです #自己紹介 学生の頃ふと図書館においてあった古いゲーム雑誌に 「ゲーム業界では服装も髪も自由だ。黒髪でリクルートスーツ着ている人より、金髪でラフな服装をしている人のほうが きっとエンタテイメントな人生をおくってるに違いない。ゲーム業界では独創的な人は大歓迎だ」 といったリクルート記事をみて 一瞬でゲームプログラマに決めました 学生時代は勉強は出来たけど、集団生活や 授業を聞くことが出来ず常に授業中走り回ってました 大学も3ヶ月で教師と喧嘩して辞めて 東京に出て フリーでビジネスプログラミングをしま
ソースコードはイメージでコンパイル出来る気はしません。イメージです #TL;DR なぜかうちは このご時世でC++案件ばかり頂きます ありがたいことです ゲーム案件以外にも、boost.asioの高速サーバ案件、boost.asio指定で HTTPSのクローリング、EmscriptenでAsm.jsに など 新人をもっとC++教育したいので、教育メソッドを作ろうとしている最中ですが まずは、自分がどの程度理解して、次は何を勉強すべきかが明確になるように 段階を作ってみようという試み #Cゲンガー (Better C) ##特徴 古き良き時代のC言語である 彼らの特徴は、たいていの場合最初に などと書くだろう。 C++はC言語と互換性があるため、C言語ソースをそのままコンパイル出来るし、C言語よりコンパイルエラーも厳密なので コンパイラを変えるだけでもメリットがある また、彼らの特徴は、戻り
#2019年8月更新 2年の間にWindowsでのDocker開発環境が進化したのと 知人より凄い便利な機能を教えてもらったので共有します ##おさらい 今までの大雑把なおさらいとして Windowsでのサーバ開発はDockerを使えば問題なく出来る (実際私は2016年からWindowsでサーバ開発を行っている) VirtualBoxなどを使い、boot2dockerを使いVM上のLinuxで開発も出来るが Windows10 Pro64bitで Hyper-VをONにして Docker for Windowsで開発するとカッコイイ ただし、WindowsにはBashがないのでシェルスクリプトが実行できない WSLを使いDockerをインストールし、Docker for WindowsのExportを使えば良い ただし、WSLのマウントポイントが /mnt/c/ になっているため、環境変
#はじめに boost.Asioでは、非同期処理のタイムアウト処理を当然行うことが出来るが 一般的なソケットのような、関数にタイムアウト時間を設定するような簡易な方法ではない 非同期処理とは別に、タイマーWaitを非同期で書き、非同期処理が終了すればタイマーをキャンセルし タイマーが先に来れば 非同期処理をキャンセルしタイムアウト処理を行う という 冗長な処理が必要である それを、どのようにラップすればきれいに書けるのか?という話 #まずはベタに書いてみる // タイムアウトを設定 deadline_timer.expires_from_now( boost::posix_time::milliseconds(timeout_ms)); deadline_timer.async_wait( [=](const boost::system::error_code &ec) { // タイムア
json11とは C++11で書かれたjsonライブラリで 使い方が綺麗なため、好まれて使われていると思います 私は、以前はpicojsonを使ってましたが最近はjson11を使ってます https://github.com/dropbox/json11/blob/master ここから json11.cppとjson11.hppをダウンロードして使ってます 使い方 https://github.com/dropbox/json11/blob/master/test.cpp にサンプルが書いているので読めばわかりますが、補足します jsonパース サンプルのように const string simple_test = R"({"k1":"v1", "k2":42, "k3":["a",123,true,false,null]})"; string err; auto json = json
C++ Advent Calendar 2015も21日目 もうすぐ メリー・クリスマスですね。 昨日は Iさんの C++ AMPでGPGPU!でした わたしは残念ながらDirectX11が使えるPCを持っていないので AMPは試せないのですが GPGPUは楽しいですね わたしは、boost.asioのまとめです。 はじめに なぜ boost.Asioが必要だったか お仕事の関係で、お客さんにC++で高速なステートフルサーバを作って欲しい C++で! という要望が来たので。 boostに頼る理由 C++11、14 と、標準ライブラリが増え、threadも使えるようになった が、未だネットワーク通信関連は標準ライブラリになっていないため boost.Asioを採用した boost.Asioはネットワークに特化したライブラリではなく、非同期I/Oのライブラリで タイマー、ファイルの非同期等、色
今回の目的 例えば 他のデバイスが非同期でフラグを変えるのを待つ場合に コンパイラの最適化によって、望んだ処理が消える可能性がある その場合に volatileを使うが、そのあたりを調査します 問題コード まず簡単な例。flagが初期値0で、0以外の値に変わると worker!! と出力し、終了する。 別スレッドで 5秒後にflag=1 に設定するので5秒後に終了するはずのプログラム (下記に理由を書きますが 本来はスレッドの同期にvolatileを使うのは間違いで、処理系によっては正しく動作できません。今回はそのあたりは無視しています) #include <iostream> #include <thread> int flag = 0; void worker() { while( flag == 0){ } std::cout << "worker!! \n"; } auto mai
右腕骨折しました! バイクで路肩の砂利で滑りました・・ でも、仕事休めませんよね? むしろ、病院いったりで普段以上の工数が必要ですよね? でも、キーボード打ち辛いですよね? そんな ピンチなあなたに便利なTips 前提 右手を怪我したが、キーボードを打つ事は可能 ただし、腕を動かす事は出来ない=ホームポジションを移動できない 主にMacbook利用を前提 不便な事 基本的に ブラインドタッチが出来ているなら、ホームポジションに乗せさえすれば キー入力に不便が少ないが 何点か困る事があったので それを解決します マウス 矢印キー マウス 左手で操作しましょう。これで解決です! Macbookの場合は トラックパッドを左手で使えば大丈夫です 慣れればなんて事ないさ! 矢印キー コレはけっこう問題です どうしても矢印キーは ホームポジションから動かす必要があるので 大変です スクロールは トラッ
volatileで排他制御出来ると、いつから思ってた? atomicやsynchronized使うべしJava package test; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicInteger; public class Sync { private final int THREAD_NUM = 50; private final int COUNT_NUM = 1000; private static Sync instance = new Sync(); private int mCounter=0; private volatile int mVolatileCounter=0; private Object mSyncO
void hoge(){ char *p = new char[100]; // ここで例外発生したら pはリークしますよ! delete p; } よくある、みつけにくいメモリリークですよね。 ちゃんと try/catch でかこみ finalizeで解放し、例外をthrowし直さないとダメですね 面倒だし、無駄な例外処理が必要になり速度的にも あれですよね。 まずは auto_ptr STLにはauto_ptrというものがあり、スマートポインタとして使われてましたが auto_ptrは deprecated (非推奨、削除予定)なので、 unique_ptr を使いましょう unique_ptrは、昔 boost::scoped_ptrって呼ばれてたやつですね。 ってことで、auto_ptr がダメな理由 #include <iostream> #include <string> #i
はじめに C++11の素晴らしいサンプルコードを勉強したいので boostのサンプルコードを参考書にします 他にもすばらしいコードがあれば教えて下さい! 今回のお題 boost1_57_0 の buffersというサンプルです http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp11/buffers/ いちおう、上記サンプルを CMake(CLion)プロジェクトにしたものを 下記リポジトリに置いておきます https://github.com/MurasameOpen/CPPSample/tree/master/boostSample/boost1_57_0/asio/cpp11/buffers 解析 動作 まずこのサンプルは、参照カウンタ(shared_ptr)を使い 安全にメモリ管理をするサンプルです
AndroidのFacebook公式アプリが ナゼか ACTION_SENDでメッセージを ウォールに書こうとしても リンクしか設定できないので 試行錯誤する事になりました 今回行う事 SNSへの投稿をするために、Intentを使う その際、シェアしたい文字列を EXTRAに格納しておく 暗黙的インテント Androidには おなじみの便利な暗黙的インテント機能があります 今回の場合は ACTION_SENDを受け取るアプリ一覧を表示し 選択させる SNSへのシェアは ACTION_SENDを受け取る ACTION_SENDの場合は setTypeが必須 ExTRAへの出力は putExtraを使う Intent intent = new Intent( Intent.ACTION_SEND ) .setType( "text/plain" ) .putExtra( Intent.EXTR
UNITYでスマホ用アプリを開発していると どうしても、ネイティブ機能を使う必要が出てきます ので、その時の言語バインディングには色んな方法あるので メモ的に C言語でバインド AndroidであればNDKで soファイルを作りそれをリンクします C言語ぶぶんはそれだけで あれがあれなので今回はヘッダのみ
node.jsのコールバック地獄が楽しく感じられるようになりました やりたいこと テキストファイルを改行で区切り MongoDBにinsertする 簡単ですよね。行区切りには readline使います var mongo = require('mongodb'), fs = require('fs'), readline = require('readline'); rs = fs.ReadStream('test.txt'); rl = readline.createInterface({'input': rs, 'output': {}}); rl.on( 'line', function (line) { var json ={}; json['value'] = line.trim(); json['hoge'] = 'hoge'; mongo.Db.connect( "mongo
このページを最初にブックマークしてみませんか?
『@YukiMiyatakeのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く