月度归档: 2021 年 3 月

对话Serverless,原来NI这么出色……

近一段时间,Serverless的横空出世似乎让大家发现了架构开发的新乐园。

无需纷繁复杂的后台开发配置,更不用介怀巨型架构体系造成的“迷宫”困境,开发人员轻松上阵即可完成过去耗时数小时才能搞定的初始版本,*大缩短技术研发与市场检验的距离。关于此,Serverless.com CEO Austen Collins表示,确实从运营商的角度出发,更需要将越来越多的产品serverless化,因为serverless涉及的层面更接近开发者以及应用层,与传统的基础设施与平台层面区别很大,需要部署很多抽象定制的解决方案。
%title插图%num

晶少了解到,如果从运维角度去分析大热的serverless,当大家将很多核心业务,例如小程序云开发等放入其中,自然需要考量在生产环境下从事运维与监控等诸多细节,像无服务器这样的开发模式可以更好助力开发者去运维产品。

此外,谈及serverless帮助提升开发效率的环节,晶少觉得可以这样理解,举例来说过去一个团队需要10名开发者耗时一个月的时间完成某项功能的开发;如今采用serverless就只需要3名开发者耗时2周时间即可完成。所以对于一家企业来说,时间缩短且效率提升能够将更多成本放入业务开发的过程中加以投入,让每个流程中每名开发者的耗时做到*短并顺畅无误完成业务推进,才是*关键的。

另外在大家眼中,Serverless更加无所不能的一点还在于,不但能够hold住生产过程中需要的所有构建,更重要的是适用于所有在公有云部署业务的企业,如此小而美的开发方式,被誉为创业者、中小型公司的福音。那么问题来了,Serverless如此优势,企业在部署的同时怎样做到让配置更加接近于企业实际应用呢?

%title插图%num

腾讯云中间件总经理Yunong Xiao​​​
关于这个问题,腾讯云中间件总经理Yunong Xiao认为,如果从部署角度深入,再对比传统服务器,作为云服务商确实不太希望用户太多感知到底层结构,而是做到更顺畅将自研应用的价值发挥出来,这或许需要改变全球范围内开发者们的习惯,将开发过程以及产品尽可能的serverless化。基于此,作为云服务商就越发要思考如何能够给企业以及开发者们提供一套流程,涉及从项目管理到代码托管,从构建到发布,通过serverless来提高开发效率,让用户对底层复杂的架构实现无感知。

听完两位专家关于Serverless的分析讲解,我们大致了解其中,其实无论是Serverless.com还是腾讯方面,针对Serverless的推进远不止于此,这还要回到腾讯云主办的首届Techo开发者大会上,腾讯云与Serverless开发平台Serverless.com达成战略合作并成为 Serverless.com全球战略合作伙伴以及大中华区*合作伙伴的震撼新闻发布。

据晶少了解,截至目前Serverless.com已经拥有了百万级别的活跃应用程序以及50000+的日下载量。旗下的开发平台Serverless Framework在促进简化开发、部署云函数方面表现突出,具有函数资源编排、自动伸缩、事件驱动等优势能力,可以做到让开发者无需关心底层资源即可快速完成Serverless应用的开发,无基础设施的运维负担。

具体来说针对开发者,Serverless Framework在应用编排上可以提供基于应用场景的丰富案例,只需要根据实际需求选择对应场景后简单几步,即可快速搭建出自己需要的服务。目前Serverless Framework覆盖了从初始化、编码、调试、配置和发布的全生命周期并提供了业务监控告警、测试和故障排查的一站式解决方案,帮助开发者更好地基于Serverless部署业务。

“Serverless.com 将与腾讯云合作,从基础设施到应用工具层面,共同推进 Serverless 技术的落地及制定行业规范,目前已经有一些优秀的架构在腾讯云落地。”Serverless.com CEO Austen Collins 指出。同时,腾讯云中间件总经理Yunong Xiao表示:“腾讯云将通过持续应用新的技术、提供新的功能、开发新的产品和构筑新的生态,从多方面为开发者提供全面完整的Serverless 体验,助力开发者实现Serverless的架构落地。”

%title插图%num

需要强调的是,本次合作中*重要的成果之一就是腾讯云将与Serverless.com联手打造下一代无服务器计算开发平台——Serverless Cloud。据悉,该平台同样将覆盖从初始化、编码、调试、资源配置到部署发布,再到业务监控告警、故障排查的全生命周期。“从serverless框架角度来,此平台更加倾向于满足开发者的诉求,其中的应用场景不仅包括无服务器计算,而是致力于怎样为用户提供一个抽象定制化的解决方案。当然这只是腾讯云针对serverless迈出的*小步,未来可能会有关于大数据场景、AI场景等加入,覆盖更多的同时让越来越多的开发者应用serverless。”Yunong Xiao总结道。

谈及选择与腾讯云合作的初衷,Austen Collins说:“大约一年前与腾讯云相识,其创新与愿景都给我们留下了非常深刻的印象。可以肯定的是,腾讯云与我们有着相似的目标和视野,都认为Serverless是云计算的未来发展趋势,希望借助合作为更多开发者赋能。尽管Serverless与很多云厂商都有合作,但与腾讯云合作会更加紧密,因为腾讯云会更加贴近客户及应用场景并愿意吸取serverless在解决客户问题时得到的经验,以此来进一步优化基础产品,这是我们认为非常难得的一点。”

%title插图%num

针对合作,未来双方都希望确保提供与腾讯Serverless基础设施的无缝、更深层次的集成,其中包括Serverless基础设施和架构之间的无缝集成;希望利用这种优势以及紧密关系为开发、监控、调试和保护提供更加先进的工具,同时来增强国内与世界其他地方的开发人员社区能力。提及腾讯云如何与serverless.com合作促进其在国内发展的问题,腾讯云方面就此表示,其实serverless是一个开发者的生态,必须接触更多的开发者来持续创新;很关键的是serverless是一个比较新的概念,如何应用、有哪些框架、产品之间怎样更好集成等,都需要彼此学习以及加强合作,将知识和经验引入国内发展。

就观察,毋庸置疑除却两者之间的紧密合作外,Serverless技术也一直是腾讯云原生的重点发力领域。目前来看,腾讯确实有一些独特的内容生态优势可以发挥并与serverless的方式进行结合;如果从业务角度来说,serverless也可以被称为是未来技术发展的趋势之一。

%title插图%num

通常来说,针对云计算等很多技术而言,起初确实需要很多高端技术背景的开发者才可以推进并使用,但发展到一定阶段,更多的创新迭代方式是让技术大众化。“我们可以利用很多框架,将没有serverless的产品包装成serverless属性的产品,这从产品开发角度可以更快加速更多开发者应用serverless。对每一个技术开发者来说,写代码就是要去解决业务方面的问题,而在这个过程中,需要选择更便捷的业务逻辑。”腾讯云方面表示。

总结来看,目前serverless还处于不断创新的阶段,需要很多维度的调试与排查,但如果可以提供给开发者一套便捷业务发展的工具来躲避多种实战陷阱,并完成更多自动化的应用需求,无论是腾讯云还是Serverless.com都认为Serverless有能力完成这样的开发使命,是*合适的选择。

一直以来,随着无服务器时代加速来临以及产品和生态走向成熟,腾讯云正在构建全面的开发支持、DevOps、运维监控等能力,协助开发者更好地通过Serverless实现低成本、快速高效、稳定安全的业务部署,为Serverless承载起企业业务发展奠定坚实基础,这次与Serverless.com的鼎力合作正是说明了此点。
————————————————

原文链接:https://blog.csdn.net/sch881226/article/details/103111398

免费使用谷歌云服务器一年

上周自己撸了一年的谷歌云服务器,昨天也帮同事搞了一发。毕竟工作中还是少不了向西天取经。
把自己的经验总结一下吧,方便后来之人。
说一下前提条件:
1.持有外币卡,例有VISA标识、万事达标识、JCB标识的信用卡
2.可以上谷歌且有谷歌账号,没有的话自己注册一个。

免费申请链接在这:
https://cloud.google.com/free/

进入申请界面后有一个国家/地区的选项,截止目前没有找到中国的,直接选择了美国即可
账户类型选择个人,然后地址直接百度一下 美国地址生成器 然后找到对应的网站,复制粘贴对应内容即可。

因为现在是回忆录,这些操作步骤就没图了。
再说一说购买成功后的一些操作吧。

%title插图%num

通过网页ssh到服务器上,然后修改ssh的配置,我的云服务器的操作系统是ubuntu 16.04的。
vi /etc/ssh/sshd_config
然后修改对应的字段内容,如下:
PasswordAuthentication yes
PermitRootLogin yes
PubkeyAuthentication yes
再通过 passwd 重置一下root密码
*后重启一下ssh服务
service sshd restart

由于云服务器开通后是个动态的IP,那我们现在要设置成静态的,以便后面的远程连接做准备。

%title插图%num

%title插图%num

这里可以设置成静态的。
*后开放一下防火墙
新建一条防火墙规则如下:

%title插图%num

这些操作好后,就可以用远程连接工具登陆服务器随意玩了。

python爬虫–验证码、cookie

python爬虫–验证码、cookie

 

爬取基于某些用户的用户信息

点击登陆按钮之后发起post请求

post请求中会携带登陆之前录入的相关登陆信息(用户名,密码,验证码。。。)

Cookie

http/https协议特性:无状态。

没有请求到对应页码数据的原因:

发起第二次基于个人主页的页面请求的时候,服务器端并不知到本次请求是基于登陆状态下的请求。

Cookie:用来让服务器端记录客户端的相关状态

手动处理:

通过抓包工具获取Cookie值,将该值封装到headers中

自动处理:

session会话对象:

1.可以进行请求的发送
2.如果请求过程中产生了cookie,则cookie会被自动存储/携带在该Session对象中
操作步骤:

1.创建一个session对象:session = requests.Session()
2.使用sess ion对象进行模拟登录post请求的发送( cookie就会被存储在session中)
3.session对象对个人主页对应的get请求进行发送(携带了cookie)
古诗文网验证码识别
https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx

代码
Classcjy

import requests
from hashlib import md5

class Chaojiying_Client(object):

def __init__(self, username, password, soft_id):
self.username = username
password = password.encode(‘utf-8’)
self.password = md5(password).hexdigest()
self.soft_id = soft_id
self.base_params = {
‘user’: self.username,
‘pass2’: self.password,
‘softid’: self.soft_id,
}
self.headers = {
‘Connection’: ‘Keep-Alive’,
‘User-Agent’: ‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)’,
}

def PostPic(self, im, codetype):
“””
im: 图片字节
codetype: 题目类型 参考 http://www.chaojiying.com/price.html
“””
params = {
‘codetype’: codetype,
}
params.update(self.base_params)
files = {‘userfile’: (‘ccc.jpg’, im)}
r = requests.post(‘http://upload.chaojiying.net/Upload/Processing.php’, data=params, files=files, headers=self.headers)
return r.json()

def ReportError(self, im_id):
“””
im_id:报错题目的图片ID
“””
params = {
‘id’: im_id,
}
params.update(self.base_params)
r = requests.post(‘http://upload.chaojiying.net/Upload/ReportError.php’, data=params, headers=self.headers)
return r.json()

主程序

import requests
from lxml import etree
from Classcjy import Chaojiying_Client

def getCodeText(imgPath):
chaojiying = Chaojiying_Client(‘azb123 ‘, ‘azb123’, ‘914332’) # 用户中心>>软件ID 生成一个替换 96001
im = open(imgPath, ‘rb’).read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
img_code = chaojiying.PostPic(im, 1902)[‘pic_str’]
return img_code

if __name__ == ‘__main__’:
url = ‘https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx’
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36’
}
page_text = requests.get(url=url,headers=headers).text
tree = etree.HTML(page_text)
img_url = ‘https://so.gushiwen.cn/’+tree.xpath(‘//*[@id=”imgCode”]/@src’)[0]
img_data = requests.get(url=img_url,headers=headers).content
with open(‘./Code.jpg’,’wb’) as fp:
fp.write(img_data)
img_code = getCodeText(‘./Code.jpg’)
print(img_code)

模拟古诗文网登陆
import requests
from lxml import etree

if __name__ == ‘__main__’:
#通过Session对象记录获取cookie
session = requests.Session()
login_url = ‘https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx’
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36’
}
#获取登录页面,并建立etree对象
page_text = session.get(url=login_url,headers=headers).text
tree = etree.HTML(page_text)
#使用xpath解析验证码图片地址、动态属性
img_url = ‘https://so.gushiwen.cn/’+tree.xpath(‘//*[@id=”imgCode”]/@src’)[0]
viewstate = tree.xpath(‘//*[@id=”__VIEWSTATE”]/@value’)[0]
viewstategenerator = tree.xpath(‘//*[@id=”__VIEWSTATEGENERATOR”]/@value’)[0]
#将验证码图片存储本地
img_data = session.get(url=img_url,headers=headers).content
with open(‘./Code.jpg’,’wb’) as fp:
fp.write(img_data)
# 提示用户输入验证码
img_code = input(‘请输入验证码:’)
data = {
‘__VIEWSTATE’: viewstate,
‘__VIEWSTATEGENERATOR’:viewstategenerator,
‘from’:’http://so.gushiwen.cn/user/collect.aspx’,
’email’: ‘注册邮箱’,
‘pwd’: ‘密码’,
‘code’: img_code,
‘denglu’: ‘登录’,
}

#post请求模拟登陆
index = session.post(url=login_url, headers=headers, data=data)
detial_url = ‘https://so.gushiwen.cn/user/collectbei.aspx?sort=t’
detial_text = session.get(url=detial_url,headers=headers).text
with open(‘index.html’, ‘w’, encoding=’utf-8′) as fp:
fp.write(detial_text)

效果图

%title插图%num

蓝桥杯集锦02(python3)

试题 基础练习 查找整数
问题描述
给出一个包含n个整数的数列,问整数a在数列中的*次出现是第几个。

输入格式
*行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式
如果a在数列中出现了,输出它*次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2

count = input()
lst = list(map(int,input().split()))
num_index = int(input())
a = 0

dics = {}

for i,num in enumerate(lst,start=1):
dics[num] = i
if num_index in dics:
a = 1
print(dics[num_index])
break

if a == 0:
print(‘-1’)

试题 基础练习 数列特征
问题描述
给出n个数,找出这n个数的*大值,*小值,和。

输入格式
*行为整数n,表示数的个数。

第二行有n个数,为给定的n个数,每个数的*对值都小于10000。

输出格式
输出三行,每行一个整数。*行表示这些数中的*大值,第二行表示这些数中的*小值,第三行表示这些数的和。
样例输入
5
1 3 -2 4 5
样例输出
5
-2
11

count = int(input())
lst = list(map(int,input().split()))
maxnum = max(lst)
minnum = min(lst)
sums = sum(lst)
print(maxnum)
print(minnum)
print(sums)

问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>

[print(“{0:05b}”.format(i)) for i in range(32)]
1
试题 基础练习 杨辉三角形
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

1

1 1

1 2 1

1 3 3 1

给出n,输出它的前n行。

输入格式
输入包含一个数n。

输出格式
输出杨辉三角形的前n行。每一行从这一行的*个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1

count = int(input())
n = 0
line = [1]

while n != count:
print(” “.join(str(i) for i in line))
line = [1] + [line[i] + line[i + 1] for i in range(len(line)-1)] + [1]
n +=1

试题 基础练习 特殊的数字
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行

for num in range(153,410):
temp = str(num)
if num == int(temp[0])**3 + int(temp[1])**3 + int(temp[2])**3:
print(num)

试题 基础练习 特殊回文数
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899

num = int(input())
sums = 0

for i in range(10000,1000000):
if str(i) == str(i)[::-1]:
sums = 0
for a in str(i):
sums += int(a)
if sums == num:
print(i)

num = int(input())
sums = 0

for i in range(10000,1000000):
str_num = str(i)
if str_num == str_num[::-1]:
sums = 0
if len(str_num) == 5:
sums += (int(str_num[0])+int(str_num[1]))*2 + int(str_num[2])
if sums == num:
print(i)
if len(str_num) == 6:
sums += (int(str_num[0]) + int(str_num[1]) + int(str_num[2])) * 2
if sums == num:
print(i)

n = int(input())
my_list = []
for i in range(100,1000) :
# 如果该数字是6位数
if sum(map(int,str(i) + str(i)[::-1])) == n :
my_list.append(str(i) + str(i)[::-1])

# 如果该数字是5位数
if sum(map(int,str(i) + str(i)[:2][::-1])) == n :
my_list.append(str(i) + str(i)[:2][::-1])
for i in sorted(map(int,my_list)) : # 排序
print(i)

洛谷的题:混合牛奶

P1208 [USACO1.3]混合牛奶 Mixing Milk
由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助 Marry 乳业找到*优的牛奶采购方案。

Marry 乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的。此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。每天 Marry 乳业可以从奶农手中采购到小于或者等于奶农*大产量的整数数量的牛奶。

给出 Marry 乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的*小花费。

注:每天所有奶农的总产量大于 Marry 乳业的需求量。

输入输出样例
输入 #1复制
100 5
5 20
9 40
3 10
8 80
6 30
输出 #1复制
630

s1 = list(map(int,input().split()))
num = s1[0]
count = 0
a = [0 for i in range(s1[1])]

for i in range(s1[1]):
a[i] = list(map(int,input().split()))
a.sort()

for i in range(s1[1]):
if num > 0:
if num < a[i][1]:
count = count + num * a[i][0]
num = 0
else:
count = count + a[i][1] * a[i][0]
num = num-a[i][1]
print(count)

python爬虫–selenium模块

selenium模块
selenium基本概念
selenium优势

便捷的获取网站中动态加载的数据
便捷实现模拟登陆
selenium使用流程:

1.环境安装:pip install selenium

2.下载一个浏览器的驱动程序(谷歌浏览器)

3.实例化一个浏览器对象

基本使用
代码
from selenium import webdriver
from lxml import etree
from time import sleep

if __name__ == ‘__main__’:

bro = webdriver.Chrome(r”E:\google\Chrome\Application\chromedriver.exe”)
bro.get(url=’http://scxk.nmpa.gov.cn:81/xk/’)

page_text = bro.page_source
tree = etree.HTML(page_text)
li_list = tree.xpath(‘//*[@id=”gzlist”]/li’)
for li in li_list:
name = li.xpath(‘./dl/@title’)[0]
print(name)
sleep(5)
bro.quit()

基于浏览器自动化的操作代码
#编写基于浏览器自动化的操作代码

– 发起请求: get(url)

– 标签定位: find系列的方法

– 标签交互: send_ keys( ‘xxx’ )

– 执行js程序: excute_script(‘jsCod’)

– 前进,后退: back(),forward( )

– 关闭浏览器: quit()

代码
https://www.taobao.com/

from selenium import webdriver
from time import sleep

bro = webdriver.Chrome(executable_path=r”E:\google\Chrome\Application\chromedriver.exe”)

bro.get(url=’https://www.taobao.com/’)

#标签定位
search_input = bro.find_element_by_id(‘q’)
sleep(2)
#执行一组js代码,使得滚轮向下滑动
bro.execute_script(‘window.scrollTo(0,document.body.scrollHeight)’)
sleep(2)
#标签交互
search_input.send_keys(‘女装’)
button = bro.find_element_by_class_name(‘btn-search’)
button.click()

bro.get(‘https://www.baidu.com’)
sleep(2)
bro.back()
sleep(2)
bro.forward()
sleep(5)
bro.quit()

selenium处理iframe:
– 如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)

– 动作链(拖动) : from selenium. webdriver import ActionChains
– 实例化一个动作链对象: action = ActionChains (bro)
– click_and_hold(div) :长按且点击操作
– move_by_offset(x,y)
– perform( )让动作链立即执行
– action.release( )释放动作链对象

代码
https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable

from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
bro = webdriver.Chrome(executable_path=r”E:\google\Chrome\Application\chromedriver.exe”)

bro.get(‘https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable’)

bro.switch_to.frame(‘iframeResult’)

div = bro.find_element_by_id(‘draggable’)

#动作链
action = ActionChains(bro)
action.click_and_hold(div)

for i in range(5):
action.move_by_offset(17,0).perform()
sleep(0.3)

#释放动作链
action.release()

bro.quit()

selenium模拟登陆QQ空间
代码
https://qzone.qq.com/

from selenium import webdriver
from time import sleep

bro = webdriver.Chrome(executable_path=r”E:\google\Chrome\Application\chromedriver.exe”)
bro.get(‘https://qzone.qq.com/’)
bro.switch_to.frame(“login_frame”)

switcher = bro.find_element_by_id(‘switcher_plogin’)
switcher.click()

user_tag = bro.find_element_by_id(‘u’)
password_tag = bro.find_element_by_id(‘p’)
user_tag.send_keys(‘1234455’)
password_tag.send_keys(‘qwer123’)
sleep(1)

but = bro.find_element_by_id(‘login_button’)
but.click()

无头浏览器和规避检测
代码
from selenium import webdriver
from time import sleep
#实现无可视化界面
from selenium.webdriver.chrome.options import Options
#实现规避检测
from selenium.webdriver import ChromeOptions

#实现无可视化界面
chrome_options = Options()
chrome_options.add_argument(‘–headless’)
chrome_options.add_argument(‘–disable-gpu’)
#实现规避检测
option = ChromeOptions()
option.add_experimental_option(‘excludeSwitches’,[‘enable-automation’])

bro = webdriver.Chrome(executable_path=r”E:\google\Chrome\Application\chromedriver.exe”,chrome_options=chrome_options,options=option)

bro.get(‘https://www.baidu.com’)
print(bro.page_source)
sleep(2)
bro.quit()

 

python爬虫—selenium模块、12306模拟登录

有没有学生用的服务器推荐?想用来搭建个人博客

穷学生一枚,想要租一个服务器搭建博客,有如下需求:

1. 性价比高(别太贵,一个月 50 以下?
2. 希望国内访问速度比较快(延迟低
3. *好能不备案

PureWhiteWu 1
PureWhiteWu 2019-06-04 20:36:02 +08:00
阿里云学生机挺好的,学生备案不麻烦的,相信我。
国内你不备案比备案还麻烦,几乎所有的服务都要求你域名备案。
steley 2
steley 2019-06-04 20:38:38 +08:00
Do 也不错,每月 5 刀,可以用 Github 包,送 50 刀。
lzhnull 3
lzhnull 2019-06-04 20:38:55 +08:00 via Android
阿里云学生主机,一年一百多。navv.top 你可以测测速度
huangzhe8263 4
huangzhe8263 2019-06-04 20:46:26 +08:00 via Android
不备案的话可以考虑阿里云香港,年初的*低配一年 144,大陆访问速度还行
Jirajine 5
Jirajine 2019-06-04 20:49:13 +08:00 via Android
博客就别服务器了,弄个网站空间就好。
还有楼上让备案的是什么心态,又不是有多大收益犯得着像个犯人一样奴颜卑膝的备案?
Trim21 6
Trim21 2019-06-04 20:49:25 +08:00 via Android
静态博客,netlify 免费(
ModerRAS 7
ModerRAS 2019-06-04 20:50:04 +08:00 via Android
只是个人博客的话推荐 GitHub Pages,就是想买服务器的话个人推荐阿里云的轻量香港,有折扣可以很便宜的,没折扣*低也就一个月 24,国内备案倒是不麻烦,弄个 5M 的阿里云学生机,图片走图床,静态资源走 CDN 一般也完全够用。
youngxu 8
youngxu 2019-06-04 21:00:45 +08:00 via Android
静态博客,gh-pages 不好吗
CEBBCAT 9
CEBBCAT 2019-06-04 21:03:28 +08:00
博客放在 Github,用仓库的 Markdown 写。

省下来的钱租服务器,科学上网+练习 Linux,完美!
ochatokori 10
ochatokori 2019-06-04 21:09:41 +08:00 via Android
腾讯云学生机 10 元一个月,机器不用备案。域名可以备案,域名不备案域名就只能 443

loading 2019-06-04 21:10:45 +08:00 via Android ❤️ 3
我想知道如何成为一名学生……
shakespaces 12
shakespaces 2019-06-04 21:17:10 +08:00 via Android
github pages, coding pages
a719114136 13
a719114136 2019-06-04 21:33:55 +08:00 via Android
阿里腾讯都有学生机,10 元一月,域名也不贵一月 10 块不到。
glaucus 14
glaucus 2019-06-04 21:35:55 +08:00 via iPhone
只搭博客买服务器浪费了
opengps 15
opengps 2019-06-04 21:39:04 +08:00 via Android
腾讯学生机
Trim21 16
Trim21 2019-06-04 21:40:54 +08:00
@loading #11 考研(((
tabris17 17
tabris17 2019-06-04 21:44:01 +08:00
国内肯定要备案,国外肯定不快,而且不保证不会被抽封,本轮严打我几个国外站都被封掉了。
博客用 github pages 就好了
Mosugar 18
Mosugar 2019-06-04 21:47:41 +08:00 via Android
阿里云有轻服务器 298 一年,节点可以选国内香港新加坡美国等,地就是专门用来放网站的。除了国内,其他都不需要备案。
codingAlex 19
codingAlex 2019-06-04 22:01:37 +08:00
hostwind 很不错,一个月三十多,比较稳定
zturns 20
zturns 2019-06-04 22:05:06 +08:00 via Android
这段时间就别买国外的了,用国内的保平安,国外开一个机子死一个
registerrr 21
registerrr 2019-06-04 22:06:08 +08:00
腾讯云之前的学生计划是 1 块钱一个月。
aulay 22
aulay 2019-06-04 22:27:46 +08:00 via Android
推荐各大云的学生机,1H2G 大约 10 元 /月,另外阿里云有香港轻量 24 一个月,不用备案。其实备案也很简单,国内备案一下更友好
Blacate 23
Blacate 2019-06-04 22:28:58 +08:00 via iPhone
@ochatokori 百度云 阿里云 不备案的话 https 也会被 reset 了 腾讯云没有试过 但感觉就算没有的话也快了
shawn7 24
shawn7 2019-06-05 00:51:47 +08:00 via Android
以前朋友推荐买的老薛主机,香港空间,活动价年费 130 左右,放个 WordPress 不用备案,挺好的.
现在换了 Hugo,用 Google firebase 托管,速度也非常快.
uucaro 25
uucaro 2019-06-05 01:09:01 +08:00 via iPhone
用过腾讯云的学生机,10 元一月,要是新用户注册还有优惠券送。备案的话,直接域名 301 重定向,用 https 访问,就不需要备了(不会跳转拦截页面!)
zanyxd 26
zanyxd 2019-06-05 01:51:24 +08:00 via Android
单纯好奇 想知道为什么那么排斥备案,又不是干什么见不得人的事。我个人备案号两天就下来了

阿里学生配合 50 券能 64 薅一台一年的 1C2G
华为云学生有 2C4G 的,这两个目前自己也在用
ochatokori 27
ochatokori 2019-06-05 02:23:10 +08:00 via Android
@Blacate 腾讯云还没,因为我用的就是腾讯云,而且我的 cc 后缀现在不能备案。。。
uptime 28
uptime 2019-06-05 09:01:32 +08:00 via Android
@zanyxd 你到底还要好奇什么? ? 自我审查不了解?
如果这是涉及公共安全,例如机场安检,需要交出你个人信息,是可以的,但这是什么?
zanyxd 29
zanyxd 2019-06-05 09:52:18 +08:00 via Android
@uptime 照你说法备案是能要人命喽 国内空间就得备案 规则不都摆在那。没备案号别人给你举个报你还想自我审查?
xiamengjie5245 30
xiamengjie5245 2019-06-05 10:18:01 +08:00
腾讯云学生机
PbCopy111 31
PbCopy111 2019-06-05 14:05:54 +08:00
简书,github page 等等。
uptime 32
uptime 2019-06-05 14:10:30 +08:00 ❤️ 1
@zanyxd #29 现在的人怎么了,居然理所当然的接受,真是可怕。果然时间是*好的麻醉药……
zanyxd 33
zanyxd 2019-06-05 14:46:45 +08:00 via Android
@uptime 有意见往上边提呀 管局反馈板块咋没见你说话 还是说敢怒不敢言? 怕是你自己也被麻醉了哟
tianyu1234 34
tianyu1234 2019-06-05 15:28:53 +08:00 via iPhone
阿里学生机啊,1C2G40G5M1000G 流量,9.5 一月我上月刚找个 99 年的护士帮忙认证的,打算搞个博客。
没有更合适的了。
uptime 35
uptime 2019-06-05 18:35:42 +08:00 via Android
@zanyxd 呵呵,又是你行你上,中式逻辑真是全套上脑
ShaunSS 36
ShaunSS 2019-06-05 19:16:05 +08:00
阿里云轻量香港或者新加坡的, 活动一般 144 一年, 免备案, 域名需要实名认证.
zanyxd 37
zanyxd 2019-06-05 20:10:39 +08:00 via Android
@uptime 就只会呵呵?词穷了?一口一个中式看来你很留恋别的国家嗷,还“这是什么?”你弄清楚备案信息是提交给谁再来说话吧
sama666 38
sama666 2019-06-07 05:38:14 +08:00 via Android
@zanyxd 怎么那么快?个人我怎么上次花了 20 几天。
jimmy3780 39
jimmy3780 2019-07-04 13:52:21 +08:00 via iPhone
HEXO+Github

完美
ChinaClouder 40
ChinaClouder 2019-07-28 11:58:00 +08:00
阿里云和腾讯云都有学生机可以申请,一个月 9 块
ChinaClouder 41
ChinaClouder 2019-07-28 11:59:33 +08:00
不想备案的话,可以上阿里云香港轻量应用服务器,一个月 24 块
dogeggson 42
dogeggson 2019-07-30 14:01:44 +08:00
我建议呢,搭建 blog 的话用虚拟空间比较好,屌鸡师傅家的就不错
vpsor 43
vpsor 2019-08-22 18:50:02 +08:00
您好,博客网站 50 元 /月的预算,这个可选范围还是挺大的。

推荐 硅云独享二型 PHP 虚机 10G 空间、600M 数据库空间、独享 2M 带宽,独立 ip,¥ 52 元 /月,优点是快速建站、稳定、省去环境配置,缺点是不能单独升级某项配置。

虚机地址 https://www.vpsor.cn/product/cvh-buy

如果想要云服务器的话,推荐 配置 1 核 CPU 1G 内存 1M 带宽 20G 数据盘(配置都自定义),¥ 50 元 /月,优点是自定义强,后期升降级配置的可选范围大,缺点是需要自己维护和搭建环境。

云服务器地址 https://www.vpsor.cn/product/cvm-buy
ChinaClouder 44
ChinaClouder 2019-09-30 17:36:55 +08:00
阿里云和腾讯云都有学生服务器提供,阿里云是 9.5 元 /月,腾讯云是 10 元 /月,选哪个都可以。学生服务器网 www.xueshengfuwuqi.com
CMNET 45
CMNET 2019-10-13 17:37:24 +08:00 via Android
日本樱花主机 G 口宽带共享 ping < 100ms
vjp 46
vjp 2020-03-21 16:34:04 +08:00
国外主机,https://git.io/fhJLM
Tucaizhu 47
Tucaizhu 2020-03-28 10:00:04 +08:00
学生机 50 预算太高了,现在各个厂商的学生服务器普遍 9 元一个月 https://dashi.aliyun.com/site/cloud/student
Gugetech 48
Gugetech 37 天前 ❤️ 1
前两条很好完成,可以选择阿里云的优惠活动购买: https://www.kubk.net/aliyun-new
第三条,免备案的话,可以选择腾讯云的免备案服务器: https://www.kubk.net/qcloud-overseas
Arison 49
Arison 18 小时 40 分钟前
阿里云和腾讯云都有学生机可以申请,一个月 9 块.不想备案的话,可以上阿里云香港轻量应用服务器,一个月 24 块.
不过如今备案流程都非常简单,大概 12 个工作日就能把备案流程走完。而且其中大部分是备案等待时间。阿里云和腾讯云备案都很简单。希望可以去试试。
阿里云学生机: https://www.vpssw.com/aliyun-student (云翼计划)
腾讯云学生机: https://www.vpssw.com/tencent-student (校园计划)
而且这两家都是大厂,稳定和速度都没有什么可以担心的,我很多同学都使用这两家。小厂的和不出名的就不推荐了。

android中的横幅通知

android中的横幅通知

1.这个是点击按钮notice,然后按钮发送一个横幅通知 ,如果不想实现的话,可以剪切Onclick里面的内容

notice = findViewById(R.id.notice);
notice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

String id = “my_channel_01”;
String name = “我是渠道名字”;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = null;
// 设置要跳转的页面
Intent intent = new Intent(MainActivity.this, NotificationActivity.class);
// 要传递到下一个页面的数据
intent.putExtra(“result”, “Main函数要传递的参数”);

PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);//延迟跳转
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW);
notificationManager.createNotificationChannel(mChannel);
notification = new Notification.Builder(MainActivity.this, “default”)
.setChannelId(id)
// 设置标题
.setContentTitle(“中*五百万!!消息的标题”)
.setContentText(“消息的内容”)
.setSmallIcon(R.mipmap.ic_launcher)
// 点击横幅自动跳转
.setContentIntent(pendingIntent)
// 点击横幅自动消失
.setAutoCancel(true)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.build();
} else {
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(MainActivity.this, “default”)
.setContentTitle(“中*五百万!!消息的标题”)
.setContentText(“消息的内容”)
.setSmallIcon(R.mipmap.ic_launcher)
.setOngoing(true)
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.setChannelId(id);
notification = notificationBuilder.build();
}
notificationManager.notify(111123, notification);
}
});
2.接受的页面
activity_notification.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”.NotificationActivity”>

<ImageView
android:id=”@+id/imageView2″
android:layout_width=”378dp”
android:layout_height=”379dp”
android:scaleType=”fitXY”
app:layout_constraintEnd_toEndOf=”parent”
app:layout_constraintStart_toStartOf=”parent”
app:layout_constraintTop_toTopOf=”parent”
app:srcCompat=”@mipmap/be” />

<TextView
android:id=”@+id/t1″
android:layout_width=”224dp”
android:layout_height=”69dp”
android:layout_marginStart=”28dp”
android:layout_marginLeft=”28dp”
android:layout_marginTop=”36dp”
android:gravity=”center”
android:text=”TextView”
android:textSize=”30dp”
android:textStyle=”bold”
app:layout_constraintStart_toStartOf=”parent”
app:layout_constraintTop_toBottomOf=”@+id/imageView2″ />
</androidx.constraintlayout.widget.ConstraintLayout>
NotificationActivity.java
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;

public class NotificationActivity extends AppCompatActivity {

private TextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
Intent intent = getIntent();
String str = intent.getStringExtra(“result”);
Log.d(“Notification”,str);
t1=findViewById(R.id.t1);
t1.setText(str);

}
}

效果图

%title插图%num

 

iOS 批量导出苹果后台设备UUID

工具:

1.Google Chrome 浏览器
2.需要导出设备的苹果账号
3.需要导入设备的苹果账号

步骤

1.进入需要导出设备的列表页

2.右键网页,点击检查

3.点击Sources,新建一个文件

4.写入代码

  1. var list = document.querySelectorAll(“.infinite-scroll-component .row”);
  2. var cout = 0;
  3. list.forEach(row=>{
  4. var children = row.children;
  5. var uuid = children[1].innerText;
  6. // var name = children[0].innerText; //名称
  7. // var type = children[2].innerText; //类型
  8. console.log(uuid + ‘ ‘ + ‘Name’+cout + ‘ ‘ + ‘ios’);
  9. cout++;
  10. }
  11. );

image.png

5.点击运行

 

6.在log中获取需要的数据

 

7.复制到文件中即可,然后按照苹果的要求导入即可。

 

iOS11 NSPhotoLibraryAddUsageDescription错误相关

在iOS11中,app保存图片到用户相册时必须添加权限使用描述即NSPhotoLibraryAddUsageDescription,否则会闪退。

只需在info.plist—Property List文件中添加以下键值对即可,描述文字可以随便填但是必须不为空。

Privacy - Photo Library Additions Usage Description

或者在info.plist —Source Code中添加:

<key>NSPhotoLibraryAddUsageDescription</key>
<string>App需要您的同意,才能保存图片到您的相册</string>

ios 注意权限设置 描述

NSCameraUsageDescription
App需要您的同意,才能访问相机

NSPhotoLibraryUsageDescription
App需要您的同意,才能访问相册

NSMicrophoneUsageDescription
App需要您的同意,才能访问麦克风

NSContactsUsageDescription
App需要您的同意,才能访问通信录

NSLocationUsageDescription
App需要您的同意,才能访问位置

NSLocationWhenInUseUsageDescription
App需要您的同意,才能在使用期间访问位置

NSLocationAlwaysUsageDescription
App需要您的同意,才能始终访问位置

NSCalendarsUsageDescription
App需要您的同意,才能访问日历

NSRemindersUsageDescription
App需要您的同意,才能访问提醒事项

NSMotionUsageDescription
App需要您的同意,才能访问运动与健身

NSHealthUpdateUsageDescription
App需要您的同意,才能访问健康更新

NSHealthShareUsageDescription
App需要您的同意,才能访问健康分享

NSBluetoothPeripheralUsageDescription
App需要您的同意,才能访问蓝牙

NSAppleMusicUsageDescription
App需要您的同意,才能访问媒体资料库

欢迎使用Markdown编辑器
你好! 这是你*次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

全新的界面设计 ,将会带来全新的写作体验;
在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
全新的 KaTeX数学公式 语法;
增加了支持甘特图的mermaid语法1 功能;
增加了 多屏幕编辑 Markdown文章功能;
增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

%title插图%num

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

%title插图%num

如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

1    // An highlighted block
2   var foo = ‘bar’;

生成一个适合你的列表
项目
项目
项目
项目1
项目2
项目3
计划任务
完成任务
创建一个表格
一个简单的表格是这么创建的:

%title插图%num

设定内容居中、居左、居右
使用:———:居中
使用:———-居左
使用———-:居右

%title插图%num

*列 第二列 第三列
*列文本居中 第二列文本居右 第三列文本居左
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

%title插图%num

创建一个自定义列表
Markdown
Text-to- HTML conversion tool
Authors
John
Luke
如何创建一个注脚
一个具有注脚的文本。2

注释也是必不可少的
Markdown将文本转换为 HTML。

KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过欧拉积分

%title插图%num

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

%title插图%num

关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

%title插图%num

 

  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

关于 Flowchart流程图 语法,参考 这儿.

%title插图%num
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。

mermaid语法说明 ↩︎

注脚的解释 ↩︎

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速