首页
关于
友情链接
归档
更多
统计
推荐
恋爱清单
Search
1
PS没法保存而显示该文件被锁定解决方法
964 阅读
2
Typecho开启Gzip,感受火箭般速度
388 阅读
3
PHP实现自动提交百度普通收录/SEO
368 阅读
4
小站成立啦
331 阅读
5
Linux学习—Linux文件类基础命令(1)
314 阅读
学习
项目
折腾
SEM
excel学习
typecho
登录
Search
标签搜索
typecho
PHP
SEM学习笔记
sem
js
openTDP
ocpc
Linux
linux笔记
docker
百度SEO
photoshop
PS
百度蜘蛛UA
pbootcms
Cloud Studio
Studio
腾讯云
Docsify
TDP-Cloud
小唐
累计撰写
52
篇文章
累计收到
0
条评论
首页
栏目
学习
项目
折腾
SEM
excel学习
typecho
页面
关于
友情链接
归档
统计
推荐
恋爱清单
搜索到
52
篇与
小唐
的结果
2023-06-02
【高效运维】TDP-Cloud主机管理帮助您全面管理云资源!
什么是TDP CloudTDP-Cloud是一个多云资源管理面板,当你用服务器的服务商的多的时候TDP Cloud派上用场了,TDP-Cloud支持管理多个云产商:腾讯、阿里、CloudFlare,不用一一的主机管理功能主机管理支持显示云产商的所有的服务器包含轻量应用服务器,TDP-Cloud的主机管理可不是显示主机ip就这么简单的,还有更加屌炸天功能!我们随便点一个主机管理进去,就可以看到实例信息、防火墙、快照和外网出流量,其中快照功能是可以创建删除的,1:1还原了在官网创建快照的功能,云厂商官网服务器控制台的功能该有的都有,不用担心配置服务器需要登录云厂商官网去操作,TDP-Cloud直接省略了多余的登录操作,结合云厂商的api秘钥管理云资源。SSH控制台更是移植到了中来,部署了TDP-Cloud后借别人的电脑不用下载SSH控制台软件,直接在TDP-Cloud中运行,何乐而不为,安全可靠不用担心数据泄露。感谢若海大佬开发的TDP-Cloud,让我们用上安全稳定快捷的多云资源管理面板。部署直达地址开发说明文档 https://docs.opentdp.org/开源地址 https://github.com/open-tdp/tdp-cloud
2023年06月02日
4 阅读
0 评论
0 点赞
2023-05-23
广告出价策略ocpm、ocpc、ocpa分别是什么意思?
我们在做广告投放的时候会看到出价策略有ocpm、ocpc、ocpa,有些新人可能不大清楚它与cpm、cpc、cpa有什么不同?今天给大家科普一下这些概念。所有的出价策略前加的单词“o”都是英文单词optimized的首字母,意思为“优化”,所以所有加o的广告都可叫做,按目标转化出价,比如ocpc还是按照cpc收费,但是按照广告主的效果额外做了优化,这个优化实现方式就是让广告主告诉系统你的优化目标具体是什么,你愿意为这个优化目标每一次付多少钱。现在的抖音、头条广告、腾讯社交广告、百度信息流都已经具备这样的产品。那么ocpm、ocpc、ocpa分别是什么意思?一、ocpm是什么?Optimized Cost per Mille的缩写,即优化千次展现出价,本质还是按照cpm付费。采用更精准的点击率和转化率预估机制,将广告展现给最容易产生转化的用户,在获取流量的同时,提高转化率、降低转化成本,跑量提速更快。二、ocpc是什么?Optimized Cost per Click的缩写,即优化点击付费,本质还是按照cpc付费。采用更科学的转化率预估机制的准确性,可帮助广告主在获取更多优质流量的同时提高转化完成率。系统会在广告主出价基础上,基于多维度、实时反馈及历史积累的海量数据,并根据预估的转化率以及竞争环境智能化的动态调整出价,进而优化广告排序,帮助广告主竞得最适合的流量,并降低转化成本。三、ocpa是什么?Optimized Cost per Action的缩写,即优化行为出价,本质还是按照cpa付费。当广告主在广告投放流程中选定特定的优化目标(例如:移动应用的激活、网站的下单),提供愿意为此投放目标而支付的平均价格,并及时、准确回传效果数据,我们将借助转化预估模型,实时预估每一次点击对广告主的转化价值,自动出价,最终按照点击扣费;同时,我们的转化预估模型会根据广告主的广告转化数据不断自动优化
2023年05月23日
23 阅读
0 评论
0 点赞
2023-05-18
自己开发制作一个typecho主题需要什么知识?
typecho作为轻量级的博客系统,要自己开发制作一个Typecho主题,您需要具备以下知识:基本网站架构知识:了解网站由哪些部分组成,以及它们之间的关系。主题开发知识:掌握HTML、CSS、JavaScript和PHP等前端开发技术的基本要求,以及如何使用这些技术来创建个性化主题。虽然做主题主要的html的事,但是毕竟这个html是要嵌入PHP中的,所以PHP语言也是需要懂一点的,不过只要能看懂基本的语句就可以,比如条件语句,循环语句,还有字符串输出等等基本的东西就可以了,对于初学者来说在做主题的时候尽量不要改里面PHP部分,很容易改出问题。Typecho知识:了解Typecho的工作原理和核心功能、原始目的、遵循的开源协议、主题更换的简单方法等。了解Typecho主题开发知识,包括如何编写、修改和维护主题源代码,如何使用插件进行主题修改和个性化定制等,第一次做主题尽量在默认主题或找个模板上修改,因为这样知道自己修改的地方是什么效果,是什么样子。熟悉Typecho的主题个性化方法,包括修改主题源代码、使用插件进行修改、使用CSS进行修改等。具备团队合作和沟通协调能力,因为在制作Typecho主题的过程中,可能需要与其他开发人员或团队协作。需要注意的是,在实际开发中,还需要掌握更多的前端开发技术和工具,需要对网站设计和开发有一定的了解和经验,同时需要具备较强的自学能力和解决问题的能力,Typecho官方提供了主题开发文档和教程,可以帮助开发者更好地了解和使用Typecho。我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=9xc7fyujqxsp
2023年05月18日
25 阅读
0 评论
0 点赞
2023-05-15
typecho主题开发中常用的函数(更新版)
本文收集一些在typecho主题开发中常用的函数,并不断更新。typecho输出文章缩略图/** 输出文章缩略图 */ function showThumbnail($widget) { // 当文章无图片时的默认缩略图 $rand = rand(1,5); // 随机 1-5 张缩略图 $random = $widget->widget('Widget_Options')->themeUrl . '/img/' . $rand . '.jpg'; // 随机缩略图路径 // $random = $widget->widget('Widget_Options')->themeUrl . '/img/mr.jpg'; // 若只想要一张默认缩略图请删除本行开头的"//" $attach = $widget->attachments(1)->attachment; $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; if (preg_match_all($pattern, $widget->content, $thumbUrl)) { echo $thumbUrl[1][0]; } else if ($attach->isImage) { echo $attach->url; } else { echo $random; } }调用方法<?php showThumbnail($this); ?>typecho输出随机文章class Widget_Contents_Post_Rand extends Widget_Abstract_Contents { public function execute() { $this->parameter->setDefault(array('pageSize' => $this->options->postsListSize)); $this->db->fetchAll($this->select() ->where('table.contents.status = ?', 'publish') ->where('table.contents.created options->time) ->where('table.contents.type = ?', 'post') ->order('RAND()', Typecho_Db::SORT_DESC) ->limit($this->parameter->pageSize), array($this, 'push')); } }调用方法<?php $this->widget('Widget_Contents_Post_Rand','pageSize=10')->to($Rand);while($Rand->next()): ?>Title增加副标题<?php if ($this->is('index')): ?> - 副标题<?php endif; ?> 分页标题<title><?php if($this->_currentPage>1) echo '第 '.$this->_currentPage.' 页 - '; ?><?php $this->archiveTitle(' » ', '', ' - '); ?><?php $this->options->title(); ?></title> typecho输出相关文章<?php $this->related(5)->to($relatedPosts); ?> <ul> <?php while ($relatedPosts->next()): ?> <li><a href="<?php $relatedPosts->permalink(); ?>" title="<?php $relatedPosts->title(); ?>"><?php $relatedPosts->title(); ?></a></li> <?php endwhile; ?> </ul>文章阅读量统计在 模板文件functions.php 中加入下面代码function get_post_view($archive) { $cid = $archive->cid; $db = Typecho_Db::get(); $prefix = $db->getPrefix(); if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) { $db->query('ALTER TABLE `' . $prefix . 'contents` ADD `views` INT(10) DEFAULT 0;'); echo 0; return; } $row = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid)); if ($archive->is('single')) { $db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid)); } echo $row['views']; }调用方法<?php get_post_view($this) ?>
2023年05月15日
37 阅读
0 评论
0 点赞
2023-05-15
typecho主题开发 — 巧妙运用时间处理库Day.js(轻量级,拿来就能用)
什么是Day.js?它是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。,文件大小只有2KB左右,下载、解析js更少。Day.js使用实战今天改主题时候发现原主题的js太笨重了,看着有点眼花(ps:主要是一直在重复造轮子)网上找了下最好的解决办法就是用时间处理库dayjs,一开始我也想过用moment.js,但是moment太大了这个主题用到的东西不多,Dayjs刚刚好。主题代码分析原主题统计网站运用日期jsfunction show_date_time(){ window.setTimeout("show_date_time()", 1000); BirthDay=new Date("2001-1-1"); <!-- 网站运行时间 --> today=new Date(); timeold=(today.getTime()-BirthDay.getTime()); sectimeold=timeold/1000 secondsold=Math.floor(sectimeold); msPerDay=24*60*60*1000 e_daysold=timeold/msPerDay daysold=Math.floor(e_daysold); e_hrsold=(e_daysold-daysold)*24; hrsold=Math.floor(e_hrsold); e_minsold=(e_hrsold-hrsold)*60; minsold=Math.floor((e_hrsold-hrsold)*60); seconds=Math.floor((e_minsold-minsold)*60); span_dt_dt.innerHTML='已运行 <font style=color:#C40000>'+daysold+'</font> 天 <font style=color:#C40000>'+hrsold+'</font> 时 <font style=color:#C40000>'+minsold+'</font> 分<!--<font style=color:#C40000>'+seconds+'</font> 秒-->'; } show_date_time();用了dayjs后 let qingrenjie = dayjs().diff(dayjs('<2001-1-1'), 'days') document.getElementById('begin_time').innerHTML = qingrenjie原生的js差不多快20行了,用来插件后的只需2行代码看着也简洁很多,这个主题中要用到很多倒计时的功能(!重复造轮子),为了方便看的不花用dayjs是最好的选择。在dayjs中有很多的函数是我们经常可以用到的1)初始化日期 / 时间dayjs().format('YYYY-MM-DD'); // 初始化日期 dayjs().format('YYYY-MM-DD HH:mm:ss'); // 初始化日期时间 2)式化日期 / 时间dayjs(value).format('YYYY-MM-DD'); // 初始化日期 dayjs(value).format('YYYY-MM-DD HH:mm:ss'); // 初始化日期时间 3)加 / 减dayjs().add / dayjs().subtract 代表在当前时间上去加减;dayjs(value).add / dayjs(value).subtract 代表在指定时间(value)上去加减;dayjs().add(7, 'day').format('YYYY-MM-DD'); // 2023-05- 8 今天(2023-05-15)加上7天 dayjs().add(1, 'month').format('YYYY-MM-DD'); // 2023-06-15 今天(2023-05-15)加上一月 dayjs().subtract(2, 'year').format('YYYY-MM-DD'); // 2021-05-15 今天(2023-05-15)减去2年 dayjs().subtract(2, 'hour').format('YYYY-MM-DD HH:mm:ss'); // 2023-05-15 18:00:00 今天现在(2023-05-15 20:00:00)减去2小时4)计算日期dayjs().diff(dayjs('2023-5-14'), 'days') //当前日期 - dayjs()中的日期5)参考当前时间 dayjs() 时间字符串 dayjs('2018-06-03') 时间戳 dayjs(1528361259484) Date 对象 dayjs(new Date(2018,8,18)) 复制 dayjs().clone() 检测当前 Dayjs 对象是否是一个有效的时间 dayjs().isValid() 获取 年 : dayjs().year() 月 : dayjs().month() 日 : dayjs().date() 星期 : dayjs().day() 时 : dayjs().hour() 分 : dayjs().minute() 秒 : dayjs().second() 毫秒 : dayjs().millisecond() 设置 dayjs().set('year',2017) dayjs().set('month',9) 增加时间并返回一个新的 Dayjs() 对象 dayjs().add(7, 'day') dayjs().add(7, 'year') 减少时间并返回一个新的 Dayjs() 对象 dayjs().subtract(7, 'year') dayjs().subtract(7, 'month') 返回当前时间的开头时间的 Dayjs() 对象,如月份的第一天。 dayjs().startOf('year') dayjs().startOf('month') 返回当前时间的末尾时间的 Dayjs() 对象,如月份的最后一天。 dayjs().endOf('month') dayjs().endOf('year') 格式化 dayjs().format() dayjs().format('YYYY-MM-DD dddd HH:mm:ss.SSS A') 时间差 dayjs('2018-06-08').diff(dayjs('2017-06-01'),'years') dayjs('2018-06-08').diff(dayjs('2017-06-01'),'day') dayjs('2018-06-08').diff(dayjs('2017-06-01'),'hour') Unix 时间戳 (毫秒) dayjs().valueOf() Unix 时间戳 (秒) dayjs().unix() 返回月份的天数 dayjs().daysInMonth() 返回原生的 Date 对象 dayjs().toDate() 返回包含时间数值的数组 dayjs().toArray() 当序列化 Dayjs 对象时,会返回 ISO8601 格式的字符串 dayjs().toJSON() //2018-06-08T02:44:30.599Z 返回 ISO8601 格式的字符串 dayjs().toISOString() //2018-06-08T02:46:06.554Z 返回包含时间数值的对象 dayjs().toObject() 字符串 dayjs().toString() 检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之前 dayjs('2018-06-01').isBefore(dayjs('2018-06-02')) 检查一个 Dayjs 对象是否和另一个 Dayjs 对象时间相同 dayjs().isSame(dayjs()) 检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之后 dayjs().isAfter(dayjs()) 本文只是我一个学习过程的文章,后续本文会一直更新
2023年05月15日
41 阅读
0 评论
1 点赞
1
2
...
11