ブックマーク / developers.microad.co.jp (17)

  • 現代のヒープメモリ管理 〜GCと所有権〜 - MicroAd Developers Blog

    こんにちは。マイクロアドで機械学習エンジニアをしている大庭です。 今回の記事では多くのプログラミング言語で採用されているメモリ管理機能である「ガベージコレクション」とRustで導入され現在注目されている「所有権」について、最近調べる機会があったため備忘録を兼ねてまとめてみようと思います。 スタック領域とヒープ領域 スタック領域 ヒープ領域 ヒープ領域の管理方法 ガベージコレクション 参照カウント マーク・アンド・スイープ コピーGC 世代別ガーベージコレクション 所有権 所有権の原則 スコープによる値の解放 所有権の移動 所有権の弊害 参照と借用 可変な参照 所有権のまとめ おわりに スタック領域とヒープ領域 プログラムが利用するメモリはおおよそ以下の4つの領域に分けられます。 テキスト領域:機械語に翻訳されたプログラムを保存する領域 静的領域:グローバル変数やstatic 変数など実行中

    現代のヒープメモリ管理 〜GCと所有権〜 - MicroAd Developers Blog
    yug1224
    yug1224 2024/09/07
  • 24卒インフラ研修:自作PC編 - MicroAd Developers Blog

    はじめに 初めまして。マイクロアド24年新卒インフラエンジニアの齊藤( id:saitoperf )です。 今回は、インフラ研修で取り組んだ「自作PCの性能評価」について紹介します。 インフラ研修では、パーツ選定 → 組み立て → WordPressのデプロイ → 評価実験までの流れを体験しました。 マイクロアドではオンプレが主流のため、 インフラエンジニアは「コストを意識したサーバ調達 → ラッキング → 構築後のパフォーマンスチェック」の一連に対応できる必要があります。 また、これらの作業が終わった後にも、メモリやストレージの故障といった断続的に発生するインシデントにも対応していく必要があります。 そこで研修では、今後これらのタスクへ対応できるようになるため、以下の素養を習得することを目的としています。 調達の予算を10万円に設定することで、コストへの意識を育む 実際に組み立てを行う

    24卒インフラ研修:自作PC編 - MicroAd Developers Blog
    yug1224
    yug1224 2024/07/19
  • Vue.jsでのコンポーネント設計を社内標準化してみた話 - MicroAd Developers Blog

    はじめに システム開発部フロントエンドエンジニアの工藤です。 マイクロアドの WEB アプリケーションのフロントエンドは、大半を Vue.js を用いて開発しています。 以前、社内標準化の取り組みについて取り上げましたが、今回は、そこでの策定内容でもあるVue.jsでのコンポーネント設計についてお話していきます。 developers.microad.co.jp Vue.jsによる設計 まずは、フロントエンドのコンポーネント設計でよく見かける「Atomic Design」をお試し採用しました。結論としては、pagesとtemplates, moleculesとatomsの区別が難しいのに対して恩恵が少ないなどの問題もあり、Atomic Designを元に改良することになりました。 新設計 Atomic Designを参考に下記の3階層に分けています。 階層 責務・要件 Atomic Des

    Vue.jsでのコンポーネント設計を社内標準化してみた話 - MicroAd Developers Blog
    yug1224
    yug1224 2024/03/02
  • Redashの利用状況をモニタリングする - MicroAd Developers Blog

    京都研究所の田中です。 マイクロアドでは、主にエンジニア以外のメンバーが広告配信実績などの各種データにアクセスする際はRedashを利用しています。 Redashを使えば気軽にクエリを作成でき、同じUIからいろいろなデータベースにアクセスしてデータを取得できます。 マイクロアドでのRedash活用については以前のブログ記事でも取り上げているのでご参照ください*1。 今回は、Redashのメタデータを使ってRedash上に作成されたクエリやダッシュボードの利用状況をモニタリングする方法をご紹介します。 Redashの利用状況をモニタリングすることの重要性 マイクロアドでRedashを使って作成されるクエリには大きく分けて次の2種類が存在します。 アドホックな分析や集計のために作成されたクエリ 定常的なレポートやデータ抽出のために作成されたクエリ 前者のアドホッククエリはエンジニアだけでなくア

    Redashの利用状況をモニタリングする - MicroAd Developers Blog
    yug1224
    yug1224 2023/04/17
  • 2022年のアドベントカレンダーが無事完走出来ました - MicroAd Developers Blog

    今年も残りわずかとなりました。 マイクロアドのシステム開発部で広報委員会の委員長している 永富 id:yassan0627 です。 「広報委員会って何?」って思った方に簡単にご紹介します。 マイクロアドでは、部内のエンジニアで組織する委員会という制度があります。 広報委員会はエンジニア向けの広報活動をする委員会で、マイクロアドの技術や職場環境をアピールすることを主業務としています(業務なので仕事の一環です)。 広報委員会のミッションは以下の内容のもとに活動しています。 MicroAdの裏方とも言えるエンジニア集団の魅力を世界に発信し システム開発部をもっとオープンに よりよい組織作りをしよう 他にも「採用委員会」「社内活性化委員会」「アプリ開発委員会」がありますが、別の機会に紹介します。 それでは題です。 今年のアドベントカレンダーも例年通り無事完走出来ました🎉 qiita.com 今

    2022年のアドベントカレンダーが無事完走出来ました - MicroAd Developers Blog
    yug1224
    yug1224 2022/12/29
  • Scala依存型の調査 - MicroAd Developers Blog

    こんにちは。 マイクロアドでサーバーサイドエンジニアをしている飛田です。 今回はScalaの依存型について調査してみましたので、共有させていただきます。 依存型について調査したきっかけは、 Scalaで型レベル”だけ”でクイックソートという記事で、 こちらは型を使ってクイックソートを行う(コンパイル結果がクイックソートの結果になる)という内容になっています。 こちらを拝見して、Scalaの型の柔軟性にかなりのポテンシャルを感じましたので、 Scalaの型に関するトピックとして、「依存型」について共有させていただきます。 依存型とは 依存型とは定義が値に依存する型のことです。 例えば、以下のコードの型 hoge.T は hogeの値に依存している依存型になります。 trait Hoge { type T val t: T } val hoge = new Hoge { type T = St

    Scala依存型の調査 - MicroAd Developers Blog
    yug1224
    yug1224 2022/11/11
  • 初めてのTypeScript・Composition APIでつまづいた事とその解決方法 - MicroAd Developers Blog

    こんにちは。 マイクロアドでWebエンジニアをしている木田です。 今回は、新たに着手した画面開発の業務においてつまづいたこと、その解決方法についてお話しします。 はじめに 記事では、以下の言語・フレームワークが利用可能な状態を前提に話を進めます。 TypeScript (v3.7.3) Vue.js (v2.6.10) Composition API (v0.3.4) ※過去の記事に、Vue3に向けてComposition APIを導入した話もありますのでこちらもぜひご覧ください。 ■外部モジュールのimport文が全てコンパイルエラーとなる つまづいたこと まずは環境構築の時のお話です。 GitHubのリポジトリからcloneしてきてVSCodeで.vueファイルを開いた時にそれは起こりました。 なんと外部モジュールをimportしている箇所が全て真っ赤になっているのです。 シンタック

    初めてのTypeScript・Composition APIでつまづいた事とその解決方法 - MicroAd Developers Blog
    yug1224
    yug1224 2022/10/21
  • 効率的なダッシュボードの作成 - MicroAd Developers Blog

    京都研究所・TechLabの田中です。 マイクロアドでは、主にエンジニア以外のメンバーが広告配信実績などの各種データにアクセスする際にRedashを利用しています。 Redashから接続しているデータソースには、以前このブログでも紹介した分析用Hadoopクラスタ*1に加えて、MySQLのレプリやBigQueryなどがあります。 これらの異なるデータソースに対してRedashからは同じインターフェースでアクセスでき、手軽にデータの抽出や可視化・分析などが可能です。 また、クエリで抽出したデータを利用して、Redash上にダッシュボードを作成することもできます。 稿では、そんなRedashの活用方法の1つとして、 スケジューリング機能とキャッシュ機能を利用した簡易的なデータパイプラインを使ってダッシュボードを作成する例をご紹介します。 なお、この記事で扱うRedashの説明はバージョンv1

    効率的なダッシュボードの作成 - MicroAd Developers Blog
    yug1224
    yug1224 2022/10/07
  • 約10万行の規模のフロントエンド環境にTypeScriptをマイグレーションした話 - MicroAd Developers Blog

    お久しぶりです。フロントエンドエンジニアの川上です。 業務では、UNIVERSE Ads のフロントエンド開発、フロントエンドの開発環境改善などを担当しています。 はじめに TypeScriptの導入について 導入にメリットがあると結論を出した理由 ① フロントエンドでテスト駆動様開発が可能になる ② Vueコンポーネント に対して TypeScript の恩恵を与えられる 具体的に解説 1つ目のメリットについて 2つ目のメリットについて おわりに はじめに マイクロアドには様々なプロダクトがありますが、私の担当している UNIVERSE Ads について、 フロントエンドフレームワークにVue.js を利用しています。 jp.vuejs.org 開発構成としては、MVVMでバックエンドとフロントエンドはそれぞれ、Spring Boot(Kotlin, Java), Vue.js(Type

    約10万行の規模のフロントエンド環境にTypeScriptをマイグレーションした話 - MicroAd Developers Blog
    yug1224
    yug1224 2022/08/27
  • Cookieレス広告技術FLEDGEを試す - MicroAd Developers Blog

    京都研究所・TechLabの今村です、記事ではGoogleが提案するCookieレス広告技術FLEDGEについて簡単な実装コードを交えて説明します。 FLEDGEとは FLEDGEでの広告表示フロー WebAssemblyについて FLEDGEの広告入札を実装する まとめ FLEDGEとは GoogleChromeでの3rd party cookieの廃止を2023年後半に予定しています。1 3rd party cookieの廃止はプライバシーの保護に役立つ一方、広告への依存度が高い無料サイト・サービスはビジネス的に大きな影響を受けます。 そこでGoogleはユーザのプライバシーを保護しつつ、広告ビジネスを維持するための代替技術をプライバシーサンドボックスとして提案しており、 FLEDGE2はその1つになります。 FLEDGEはWeb広告の中で「リターゲティング広告3」を3rd par

    Cookieレス広告技術FLEDGEを試す - MicroAd Developers Blog
    yug1224
    yug1224 2022/07/11
  • Atomic, volatile, synchronized について - MicroAd Developers Blog

    はじめに サーバサイドエンジニアの酒井です. 普段はマイクロアドが提供する広告配信プラットフォーム UNIVERSE Ads の DSP 部分の開発をしています. 今回は JVM 言語におけるマルチスレッドプログラミングに関するいくつかの用語の理解と整理を兼ねて記事にします. 背景 まず Real-Time-Bidding (RTB) についてですが, RTB では大量のリクエストが送られてくる中でレスポンスタイムの制約が 100 ms 以内と非常に制約が厳しいです. そのような環境の中マイクロアドの DSP 開発では, レスポンスタイムとスループットの二つのパフォーマンス指標の制約を常に満たすことが非常に重要になっています. この制約を満たせるようアプリケーションのパフォーマンスを上げるため, マルチスレッドプログラミングが用いられることはよくあります. また, マイクロアドの DSP

    Atomic, volatile, synchronized について - MicroAd Developers Blog
    yug1224
    yug1224 2022/07/04
  • ケーブリングを改善した話 - MicroAd Developers Blog

    はじめに こんにちは。マイクロアドでインフラエンジニアをしているハダです。 マイクロアドでは、最近データセンターの移設(以後、DC移設と記載)を行いました。 そのDC移設に合わせて、今まで抱えていた問題点を改善すべく、 取り組んだことについて書いていきます。 今回は現場作業で重要なケーブリングについて記事を書いてみました。 技術的な記事ではなく経験談による読み物ですのでサラッと読んでください。 はじめに 移設前の状況 問題になっていたこと 暫定措置 移設時の弊害 思い通りに解約できないラック ラベル貼りの苦行 移設に合わせて改善 ネットワークケーブルの改善 配線のルール なぜ、ルールを2点だけにしたのか 電源ケーブルの改善 配線のルール 非冗長電源のケーブル おわりに ケーブリングでやってはいけないこと 改めて学んだこと 移設前の状況 問題になっていたこと DC移設前は、ラックに搭載してい

    ケーブリングを改善した話 - MicroAd Developers Blog
    yug1224
    yug1224 2022/06/27
  • PCへのログインアカウントをGoogleに変更した話 - MicroAd Developers Blog

    マイクロアドで社内SEをしています高橋です。 今回はマイクロアドがPCログインをActiveDirectryユーザーを利用した方法からGoogleWorkspaceのアカウントを利用した方法に切り替えているお話をします。 従来のアカウント管理 マイクロアドではWindowsを利用する事が多かったため、ローカルのWindowsServerを利用してActiveDirectryを構築し、PCへログインするアカウントの管理をしていました。 何故ログインアカウントを切り替えることになったのか 最初はPCのログインや様々なアプリ、サイトへのログインに使うアカウントを統一したいという事から始まりました。 OneLoginやAzureAD等が候補に上がり、AzureADの方はPCの管理も同時に行えるIntune等も使えば色々と出来るなと思い検証を行っていたのですが、ちょうどその頃にG-suiteがサービ

    PCへのログインアカウントをGoogleに変更した話 - MicroAd Developers Blog
    yug1224
    yug1224 2022/04/04
  • redis threadedI/Oの検証 - MicroAd Developers Blog

    はじめに マイクロアドでインフラエンジニアをしている柏木です。 マイクロアドでは広告配信に高速なKVSであるRedisを使用しています。 Redisはシングルスレッドでの高速性、安定性を売りにしていました。しかし6.0でマルチスレッド機能であるThreded I/Oが追加されました。 広告配信で多用している、Redisを高速化できるのであれば積極的に導入したいので検証を行いました。 はじめに Threded I/Oとは シングルスレッドでのRedisの処理 マルチスレッドでのRedisの処理 io-threads io-threads-do-reads + io-threads 検証環境 OSの追加設定 今回の検証結果 前提条件 指標の取得方法について loopbackアドレスを利用した検証 実行CPUの指定 Redisの起動コマンド Redisのconfigについて 暖機運転 検証1:I

    redis threadedI/Oの検証 - MicroAd Developers Blog
    yug1224
    yug1224 2021/06/28
  • Vue 3 に向けて Composition API を導入した話 - MicroAd Developers Blog

    システム開発部アプリケーションエンジニアの Edy です。 マイクロアドの WEB アプリケーションのフロントエンドは、大半を Vue.js を用いて開発しています。 その Vue.js ですが、「Vue 3 is now in RC! (Vue 3 is now in RC! · Issue #189 · vuejs/rfcs · GitHub)」が公開され、version 3 ( Vue 3 ) が盛り上がりを見せています。 今回は、Vue 2 から 3 へ移行する理由と、 2 から 3 へ version up するために行なっている Composition API の導入 についてお話していこうと思います。 そもそも Vue.js とは ? SFC TypeScript Vue 2 の限界 大規模なプロジェクトになるほど開発効率が落ちる ロジックの再利用にかかるコストが大きい 単

    Vue 3 に向けて Composition API を導入した話 - MicroAd Developers Blog
    yug1224
    yug1224 2020/08/12
  • 新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog

    はじめに モノイド 代数学 圏論 Scalaでモノイドを実装する 代数学的な定義に従った整数を加算するモノイドの実装 圏論的な定義に従った整数を加算するモノイドの実装 モノイドの合成 Catsによるモノイドの利用例 おわりに はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。私は主に UNIVERSE Ads というプロダクトの開発に携わっています。 UNIVERSE Ads では、より関数型ライクな設計や実装を取り入れることにより、高い保守性を目指しています。 この記事では、関数型プログラミングの入門的な話として、モノイドについて調べてみたので、この記事で共有させていただきたいと思います。 モノイドについてより深い理解をするために、まず、圏論と絡めたモノイドの説明をしたいと思います。 そしてその次に、より理解を深めるために、Scala のサンプルコードを

    新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog
    yug1224
    yug1224 2020/05/20
  • JavaScriptフレームワーク(Vue.js)を導入して - MicroAd Developers Blog

    マイクロアドでアプリケーションエンジニアをしているNです。 日々、バッチを作ったりWEBアプリケーションを作ったりしています。 今回はライトにJavaScriptフレームワークを導入したお話を書いていきたいと思います。 導入のきっかけ その1~きっかけのきっかけ~ マイクロアドではいろいろな用途でWEBアプリケーションを利用しています。 当然ではありますが一部特殊な用途ではない限りJavaScriptでの実装が含まれています。 これらのいくつかにはjQueryが使われており、現在も運用されています。 そんな中、 あるWEBアプリケーションを刷新する機会があり改めてjQueryを多用したコードを見返すことに、、、 その2 ~jQueryって非常に強力~ jQueryを多用した実装を見返して、改めて思ったのが jQueryって非常に強力。 一方で、この強力なライブラリになんでもお世話になってい

    JavaScriptフレームワーク(Vue.js)を導入して - MicroAd Developers Blog
    yug1224
    yug1224 2018/07/20
  • 1