标签: gpt

SPA中的Google DFP广告管理系统(Angular,Vue) - 如何销毁广告及其所有引用以避免内存泄漏

我试图在两者Vue.jsAngularSPA中使用谷歌的DFP,但它似乎导致内存泄漏.

在Angular中,您可以看到概念验证https://github.com/jbojcic1/angular-dfp-memory-leak-proof-of-concept.对于广告,我使用的是ngx-dfp npm包(https://github.com/atwwei/ngx-dfp).要重现拉动并运行概念证明项目,请转到主页,该主页最初将在Feed中包含3个广告,并执行堆快照.之后,通过使用标题中的链接转到没有广告的页面,再次执行堆快照,您将看到在销毁插槽之后保留插槽引用,这会导致内存泄漏.

在Vue中,我有一个创建和销毁广告位的组件,我会在内容Feed中动态添加它们.当我离开页面时,组件被销毁,并且在beforeDestroy钩子中,我调用destroySlots,但似乎有些引用仍在那里.

这是我的dfp-ad组件:

<template>
  <div :id="id" class="ad" ref="adContainer"></div>
</template>

<script>
  export default {
    name: 'dfp-ad',
    props: {
      id: { type: String, default: null },
      adName: { type: String, default: null },
      forceSafeFrame: { type: Boolean, default: false },
      safeFrameConfig: { type: String, default: null },
      recreateOnRouteChange: { type: Boolean, default: true },
      collapseIfEmpty: { type: Boolean, default: true },
      sizes: { type: …
Run Code Online (Sandbox Code Playgroud)

google-dfp vue.js gpt vuejs2 angular

22
推荐指数
1
解决办法
1791
查看次数

DFP广告管理系统:显示自适应广告

这是我目前的代码.

// Head
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
    var googletag = googletag || {};
    googletag.cmd = googletag.cmd || [];
</script>
<script>
    googletag.cmd.push(function() {
        googletag.defineSlot('/xxxxxx/Mobile_ad', [[375, 60], [728, 60]], 'div-gpt-ad-154504231384304-0').addService(googletag.pubads());
        googletag.pubads().enableSingleRequest();
        googletag.enableServices();
    });
</script>

// Body
<div style="width:100%;text-align:center;margin-bottom:10px">
    <div id='div-gpt-ad-1545041384304-0'>
        <script>
             googletag.cmd.push(function() { googletag.display('div-gpt-ad-1545045413584304-0'); });
        </script>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

但它在侧边iframe中显示具有固定宽度和高度的横幅.

我怎样才能使这个响应?以前我使用自定义html和同步渲染,但现在已弃用.

实现这一目标的最佳方法是什么?

我已关注 - https://support.google.com/admanager/answer/3423562?visit_id=636827968345729217-1005578671&hl=en&rd=2

但为此,我必须提到屏幕的每个高度和宽度.

javascript css html5 google-dfp gpt

13
推荐指数
1
解决办法
1173
查看次数

Google pubads出现然后消失

我正在http://development-client-server.com/ds/上使用Google pubads,这是很有效的,直到你进入实际的故事页面(见http://development-client-server.com/ds/)当右上边栏广告加载然后快速消失时,语音更常见的自闭症/).

我把它缩小到我用来粘贴左边的社交媒体栏和右侧的工作列表div(在Google广告所在的位置下)的stickySidebars功能.但是,粘性功能应该不会影响Google广告吗?

这是我正在使用的JS函数,我已经多次重写了(并且已经尝试与客户讨论已经使用过).

<script>

// Sticky Sidebars

function stickySidebars() {   

    var length = $('.post-content').height() - $('article .sharing-links').height() + $('.post-content').offset().top;
    var lengthSidebar = $('.sticky-container').height() - $('aside .job-listings').height() + $('.sticky-container').offset().top -30;

    $(window).scroll(function () {

        // Sharing Links

        var scroll = $(this).scrollTop() + 90;
        var height = $('article .sharing-links').height() + 'px';

        if (scroll < $('.post-content').offset().top) {

            $('article .sharing-links').css({
                'position': 'absolute',
                'top': 'auto',
                'bottom': 'auto'
            });

        } else if (scroll > length) {

            $('article .sharing-links').css({
                'position': 'absolute', …
Run Code Online (Sandbox Code Playgroud)

javascript jquery sticky adsense gpt

9
推荐指数
1
解决办法
988
查看次数

Google Publisher Tag,如何从服务中删除事件侦听器

关于如何将事件注册到 gpt 服务似乎有几个问题:
Google Publisher Tag registering to Events
registering to events with google publisher tag

文档中明确定义了如何执行此操作:
googletag.pubads().addEventListener('eventName', callbackFn);

当组件 (React) 安装在Google 的本教程中window.googletag.cmd.push所述的回调函数内时,我将我的事件添加到服务中。

现在的问题是,每次我更改页面时,都会向服务添加更多事件侦听器。通过使用此方法(来自文档),我可以确保只有一个事件侦听器在实际存在的插槽上执行:

googletag.pubads().addEventListener('impressionViewable', function(event) {
  if (event.slot == targetSlot) { // will only run on target slot
    // Slot specific logic.
  }
});
Run Code Online (Sandbox Code Playgroud)

但是更多的事件侦听器将保持活动状态并继续执行(不执行 if 语句中的代码)。

现在,我假设谷歌会实现这样的东西(在 componentWillUnmount 上运行):
googletag.pubads().removeEventListener('eventName', callbackFn);

但它在文档中不存在,我似乎找不到任何方法从服务中删除活动事件侦听器?

gpt

9
推荐指数
1
解决办法
652
查看次数

DFP广告管理系统:指定浏览器和广告尺寸

我正在尝试根据浏览器大小加载横幅.因此,在我有一个728x90横幅的位置,300x250将显示它是否在移动设备上.

问题是,728x90在桌面上加载.但在移动设备上300x250没有显示.

我试着按照这里的例子

<script type='text/javascript'>
 googletag.cmd.push(function() {
    // This mapping will only display ads when user is on desktop sized viewport
    var mapLeader = googletag.sizeMapping().
        addSize([0, 0], []).
        addSize([768, 200], [728, 90]).
        build();

    // This mapping will only display ads when user is on mobile or tablet sized viewport
    var mapLeader2 = googletag.sizeMapping().
      addSize([0, 0], []).
      addSize([768, 200], []). // Desktop
      addSize([300, 200], [300, 250]). // Tablet
      build();

    window.LeaderSlot= googletag.defineSlot('/XXXXXXX/leaderboard-1', [728, 90], 'div-gpt-ad-1455251022145-0').
        defineSizeMapping(mapLeader).
        setCollapseEmptyDiv(true).
        addService(googletag.pubads());

    window.LeaderSlot= googletag.defineSlot('/XXXXXXX/medium-rectangle-1', …
Run Code Online (Sandbox Code Playgroud)

javascript adsense google-ad-manager google-dfp gpt

7
推荐指数
1
解决办法
898
查看次数

如何知道GPT上是否调用了"disableInitialLoad"?

我需要知道是否googletag.pubads().disableInitialLoad()被调用,在这种情况下我将使用a display和a refresh调用加载广告,否则我将使用just加载它display.我的假设是,如果我总是打电话display加上refresh我将收到2个广告请求,除非disableInitialLoad被调用.

有可能知道吗?

google-dfp gpt

6
推荐指数
1
解决办法
567
查看次数

Huggingface gpt2语言模型代码中perplexity计算在哪里?

我看到一些 github 评论说 model() 调用的损失的输出是困惑的形式:https : //github.com/huggingface/transformers/issues/473

但是当我查看相关代码时... https://huggingface.co/transformers/_modules/transformers/modeling_openai.html#OpenAIGPTLMHeadModel.forward

    if labels is not None:
        # Shift so that tokens < n predict n
        shift_logits = lm_logits[..., :-1, :].contiguous()
        shift_labels = labels[..., 1:].contiguous()
        # Flatten the tokens
        loss_fct = CrossEntropyLoss()
        loss = loss_fct(shift_logits.view(-1, shift_logits.size(-1)), shift_labels.view(-1))
        outputs = (loss,) + outputs

    return outputs  # (loss), lm_logits, (all hidden states), (all attentions)
Run Code Online (Sandbox Code Playgroud)

我看到正在计算交叉熵,但没有转换为困惑。损失最终在哪里转化?或者是否已经存在我不理解的转变?

machine-learning gpt perplexity huggingface-transformers

5
推荐指数
1
解决办法
2502
查看次数

GPT“可见性”与 slotRenderEnded 事件触发的确切时刻

我正在研究一些确定 GPT 广告在页面上的可见性的功能,并且我正在使用每个广告的“slotRenderEnded”事件来确定广告当时是否确实“可见”。

这是对广告可见能力的准确/适当衡量吗?有时似乎会触发此事件,但后来我实际上还无法在网站上看到图像,有时直到大约 300 毫秒之后。此外, slotVisibilityChanged 事件似乎并不总是触发,例如,如果您根本不滚动页面。

再说一次,我的主要问题是:slotRenderEnded 事件是否足以让我假设页面上的广告可以查看?

javascript ads gpt

1
推荐指数
1
解决办法
1519
查看次数

Google发布商代码注册到活动

我查看了Google发布商代码参考,并决定将一些事件添加到我的广告位.如果我只定义了一个插槽,它的效果很好.如果我添加更多插槽,事件会在我的控制台上不断重复我有插槽的次数.

所以,如果我做这样的事情:

<script type='text/javascript'>
 googletag.cmd.push(function() { 
      var slot1 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
      var slot2 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
      var slot3 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
        googletag.pubads().enableSingleRequest(); 
        googletag.pubads().addEventListener('slotRenderEnded', function(event) {
          console.log('Slot has been rendered:');
        });
        googletag.enableServices();
 });
</script>
Run Code Online (Sandbox Code Playgroud)

我的console.log将是3x"已经渲染的插槽:".如果我从defineSlot部分中删除了两个.addService,它只会将console.logs一次,但不会呈现广告.

有没有办法如何删除额外的日志记录而不打破其他一切?一段时间后它会变得非常混乱.

谢谢!

gpt

1
推荐指数
1
解决办法
3368
查看次数