coinegg上哪些虚拟币不能碰

投资李魔佛 发表了文章 • 0 个评论 • 109 次浏览 • 2018-01-14 00:22 • 来自相关话题

通过上一篇文章: 10分钟发行虚拟币 ,那些tokens发行的币最好不要去碰。 tokens的币可以到这里取找:https://coinmarketcap.com/tokens/views/all/
 
那么coinegg中哪些币是用了tokens发行的呢? 把两个网站的币都爬下来,然后做个交集就可以了。
 
#-*-coding=utf-8-*-
import requests,datetime
from lxml import etree
import pandas as pd
from sqlalchemy import create_engine
import random,time

user_agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36'
headers={'User-Agent':user_agent}

def getWebContent(url):
# url=url.format(kind)
r=requests.get(url,headers=headers)

if r.status_code==200:
return r.text
else:
return None

def getCoinList():
content=getWebContent(url='https://coinmarketcap.com/tokens/views/all/'
)
tree=etree.HTML(content)
# table=tree.xpath()
# if not table:
# reutrn None
df=pd.DataFrame()

# for coin in table:
df['currency-symbol']=tree.xpath('//tbody/tr//span[@class="currency-symbol"]/a/text()')
df['currency-name']=tree.xpath('//tbody/tr//a[@class="currency-name-container"]/text()')
df['platformsymbol']=tree.xpath('//tbody/tr/@data-platformsymbol')
df['platform-name']=tree.xpath('//tbody/tr//td[@class="no-wrap platform-name"]/a/text()')

df['price(->bct)']=tree.xpath('//tbody/tr//td[@class="no-wrap text-right"]/a/@data-btc')
df['datetime']=datetime.datetime.now()
return df

def getBtcPrice():
btc_p_url='https://www.coinegg.com/index/pricebtc'
try:
r=requests.get(url=btc_p_url,headers=headers)
except Exception,e:
print e
return None

return r.json().get('data').get('cny')


def coinegg_coins():
url='https://www.coinegg.com/coin/btc/allcoin?t={}'.format(random.random())
print url
retry=3
for _ in range(retry):
text=getWebContent(url)
if not text:
continue
time.sleep(random.random())

if not text:
print 'failed to get web content'
return None

return map(lambda x:x.upper(),eval(text).keys())

def find_fake():
df=getCoinList()
coinegglist=set(coinegg_coins())
# print coinegglist
fakecoin=set(df['currency-symbol'].values)
print coinegglist & fakecoin
def main():
# datastore()
# print getBtcPrice()
# coinegg_coins()
find_fake()

if __name__ == '__main__':
main()
 
运行后,得到的结果是:
['TSL', 'QBT', 'AIDOC', 'EOS', 'TRX', 'PLC', 'INK', 'WIC']
所以就应该远离上面的那8种币。(君子不立于危墙,虽然都是投机,但最好都是要选择概率天平倾向于自己的那一边) 查看全部
通过上一篇文章: 10分钟发行虚拟币 ,那些tokens发行的币最好不要去碰。 tokens的币可以到这里取找:https://coinmarketcap.com/tokens/views/all/
 
那么coinegg中哪些币是用了tokens发行的呢? 把两个网站的币都爬下来,然后做个交集就可以了。
 
#-*-coding=utf-8-*-
import requests,datetime
from lxml import etree
import pandas as pd
from sqlalchemy import create_engine
import random,time

user_agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36'
headers={'User-Agent':user_agent}

def getWebContent(url):
# url=url.format(kind)
r=requests.get(url,headers=headers)

if r.status_code==200:
return r.text
else:
return None

def getCoinList():
content=getWebContent(url='https://coinmarketcap.com/tokens/views/all/'
)
tree=etree.HTML(content)
# table=tree.xpath()
# if not table:
# reutrn None
df=pd.DataFrame()

# for coin in table:
df['currency-symbol']=tree.xpath('//tbody/tr//span[@class="currency-symbol"]/a/text()')
df['currency-name']=tree.xpath('//tbody/tr//a[@class="currency-name-container"]/text()')
df['platformsymbol']=tree.xpath('//tbody/tr/@data-platformsymbol')
df['platform-name']=tree.xpath('//tbody/tr//td[@class="no-wrap platform-name"]/a/text()')

df['price(->bct)']=tree.xpath('//tbody/tr//td[@class="no-wrap text-right"]/a/@data-btc')
df['datetime']=datetime.datetime.now()
return df

def getBtcPrice():
btc_p_url='https://www.coinegg.com/index/pricebtc'
try:
r=requests.get(url=btc_p_url,headers=headers)
except Exception,e:
print e
return None

return r.json().get('data').get('cny')


def coinegg_coins():
url='https://www.coinegg.com/coin/btc/allcoin?t={}'.format(random.random())
print url
retry=3
for _ in range(retry):
text=getWebContent(url)
if not text:
continue
time.sleep(random.random())

if not text:
print 'failed to get web content'
return None

return map(lambda x:x.upper(),eval(text).keys())

def find_fake():
df=getCoinList()
coinegglist=set(coinegg_coins())
# print coinegglist
fakecoin=set(df['currency-symbol'].values)
print coinegglist & fakecoin
def main():
# datastore()
# print getBtcPrice()
# coinegg_coins()
find_fake()

if __name__ == '__main__':
main()

 
运行后,得到的结果是:
['TSL', 'QBT', 'AIDOC', 'EOS', 'TRX', 'PLC', 'INK', 'WIC']
所以就应该远离上面的那8种币。(君子不立于危墙,虽然都是投机,但最好都是要选择概率天平倾向于自己的那一边)

10分钟发行虚拟币

投资李魔佛 发表了文章 • 0 个评论 • 201 次浏览 • 2018-01-14 00:15 • 来自相关话题

刘易杰
3 天前
 
我本来是不想写这个的,昨天看了曹政的文章《不要试图挑战人性》,感触挺深的,曹大说他2018绝不碰ICO,我恰恰相反,不但要碰我还要带你们一起碰。ICO现在简直是太火了,我平均每星期收到1-2篇whitepaper,绝大多数,可以说是100%都是忽悠人的,我不当韭菜也会有别人被收割,莫不如我今天就给你们指条路——干嘛参与别人的ICO啊?你可以自己搞啊!


废话不说,首先去以太坊下载一个钱包。Ethereum Project

下载完了安装,你的界面应该是这样的:







官方的这个钱包bug非常多!经常打不开,而且和网络sync区块链的时候经常会有各种各样的问题……不过,如果你能侥幸安装成功并且同步成功。

恭喜你,你已经成功克服了你ICO道路上最大的技术难关,胜利在望,会所嫩模在向你招手!







好,打开钱包,界面应该是下面这样:


看到右上角那个“CONTRACTS"按钮了吗?轻轻点一下:


再点这个Deploy New Contract:




然后,打开这个网站:Create a cryptocurrency contract in Ethereum


不懂英文?没问题

看不懂代码?无所谓



看到THE CODE了吗?

把下面的代码copy下来,然后粘贴到你的以太坊钱包里,再右边下来菜单里面选那个Token ERC 20 ,你会看到的界面大概是这个样子:

这个时候系统会让你输入三个参数:

Initial Supply:你要发行多少个币呢? 我填了2100万个,致敬比特币嘛!

Token Name:咱发行的币叫什么名字呢?我本来想叫刘易杰币……后来一想这太不中本聪了……不忘初衷,ICO骗钱为的就是会所嫩模,就叫嫩模币吧!

Token synbol:就是币的符号,比如比特币是BTC,以太坊是ETH,咱们嫩模币当然是NMB了!




然后下面有个蓝色的deploy,点了这个deploy,嫩模币就正式发布了————这里有个条件,就是钱包里要有少量的ETH,作为执行合约的Gas,大概是0.00几个ETH就够了,也就几美元到几十美元的事儿。




好了。

完成了。

如果你完成了如上所说的步骤的话,那么你成功的在这个世界上,基于以太坊网络,创造了一种新的加密货币————如果这破玩意儿能称为加密货币的话……




我大概解释一下啊这玩意儿是啥:以太坊网络和只能合约,支持一个use case就是用户可以通过以太坊来发行自己的"Token", Token是什么呢?你可以理解为现实生活当中的“积分”,对,比如加油站洗车店会员卡积分,楼下发廊Tony老师让你办的冲2000送1000的美发会员卡,奶茶点送你的盖满10个张送一杯的集戳卡,幼儿园老师给小朋友的小红花……




这一切的一切,都是可以在以太坊用很简单的只能合约代码搞成一个"token",然后Token可以通过以太坊网络转账, 转账的时候消耗少量的以太坊ETH做Gas。Token也不需要钱包——使用以太坊钱包就好,钱包地址也是以太坊的地址,钱包秘钥也是以太坊的秘钥,区块链用的就是以太坊的区块链……




说了这么多,就是想让你明白,Token这破玩意儿如此简单,发行如此容易,没有成本,完全是基于以太坊网络,没有任何自己的底层技术,基本上20分钟就能搞出来一个,供应量随便填。




我要说的是:现在有好多所谓的ICO,就是把这Token拿来当币卖……




如上所说创造出来的Token,跟比特币,以太坊,瑞波这些真的“加密货币"完全不是一个东西——我不是要给比特币以太坊这些数字货币站台——我一开始以为,要搞ICO,起码要像比特币那种,自己有区块链,有底层技术,分布账本,钱包,nodes都自己实现吧——虽然这也不是什么难事儿,毕竟都是开源的,但起码这还是有一定成本和壁垒的,结果,这帮骗钱骗疯了的,连这都不搞,直接像我上面发布嫩模币那样,利用小白韭菜们的无知,把Token拿来当成币卖……




打开 All Tokens | CoinMarketCap看看哪些你以为和比特币,以太坊一样的加密货币,其实是和嫩模币NMB一样的Token呢?

有没有很眼熟啊?有没有很心慌啊?你看Platform,就是平台,多数都是以太坊平台,估值……50多亿美金?80多亿美金?

你们觉得嫩模币NMB估值应该多少啊?这么搞下去会不会币太多了,嫩模都不够用了啊……




好,现在币有了,接下来就是ICO难度最大的部分了:




写白皮书啊!




有没有发现现在白皮书天马星空,包罗万象,无所不能?为啥?本质上这玩意儿就是”积分“,能用的上”积分“的地方都能给套进去啊!机械制造,生物制药,航天科技,基因工程,物流运输,文化创作,阴阳五行,一带一路……反正你想怎么写怎么写,这部分就非常考验ICO团队的吹牛逼功力,白皮书写的不好,给观众的想象空间不够,基本可以判断,这个团队平时缺乏诈骗经验……




有了币,有了白皮书,就可以拿去忽悠人了,基本上就是说ICO前期,让对方给你打以太坊ETH,然后你给他发你的嫩模币NMB……他给你以太坊,你给他嫩模币,他给你ETH,你给他NMB……他的以太坊得是1000美金一个真金白银买的,你的NMB可是上面随手填出来的。过不过瘾?爽不爽?




这玩意儿,薄利多销,骗到50算50,骗到100算100,团队别露脸,白皮书上不写名,写名也别写自己名,找两个外国人做adviser,反正韭菜们也不会去验证。核心团队叫基金会,比如咱们负责操作嫩模币的基金会,可以起名叫NMB FOUNDATION。收到ETH直接变现分钱走人,或者另起炉灶,NMB ICO成功完成了,再搞下一个呗,市场需要细分,嫩模有的丑有的俏,针对丑嫩模搞一个丑嫩模币CNMB,俏嫩模的叫QNMB,或者叫嫩模2.0币NM2B,听上去就有互联网时代感……




区块链确实是个好技术,有很多潜力和空间,但究竟有没有好到颠覆世界,有没有好到随便发个tokn就能值十亿八亿的美金,有没有好到能让人打着”区块链“,”智能合约“,”加密货币“的幌子搞诈骗和非法集资能逃脱法律责任,有没有好到能让你买一个Token就赚个几百几千倍。大家自己判断。




*上面说的NMB合约我没deploy,所以你们不用找我要NMB了,不给你们。

**可以把这篇文章转给身边哪些被ICO忽悠的人,或者下次有人拿白皮书来忽悠你,你可以反杀他:你那个币不行,还是来投我的NMB吧! 查看全部
刘易杰
3 天前
 
我本来是不想写这个的,昨天看了曹政的文章《不要试图挑战人性》,感触挺深的,曹大说他2018绝不碰ICO,我恰恰相反,不但要碰我还要带你们一起碰。ICO现在简直是太火了,我平均每星期收到1-2篇whitepaper,绝大多数,可以说是100%都是忽悠人的,我不当韭菜也会有别人被收割,莫不如我今天就给你们指条路——干嘛参与别人的ICO啊?你可以自己搞啊!


废话不说,首先去以太坊下载一个钱包。Ethereum Project

下载完了安装,你的界面应该是这样的:







官方的这个钱包bug非常多!经常打不开,而且和网络sync区块链的时候经常会有各种各样的问题……不过,如果你能侥幸安装成功并且同步成功。

恭喜你,你已经成功克服了你ICO道路上最大的技术难关,胜利在望,会所嫩模在向你招手!







好,打开钱包,界面应该是下面这样:


看到右上角那个“CONTRACTS"按钮了吗?轻轻点一下:


再点这个Deploy New Contract:




然后,打开这个网站:Create a cryptocurrency contract in Ethereum


不懂英文?没问题

看不懂代码?无所谓



看到THE CODE了吗?

把下面的代码copy下来,然后粘贴到你的以太坊钱包里,再右边下来菜单里面选那个Token ERC 20 ,你会看到的界面大概是这个样子:

这个时候系统会让你输入三个参数:

Initial Supply:你要发行多少个币呢? 我填了2100万个,致敬比特币嘛!

Token Name:咱发行的币叫什么名字呢?我本来想叫刘易杰币……后来一想这太不中本聪了……不忘初衷,ICO骗钱为的就是会所嫩模,就叫嫩模币吧!

Token synbol:就是币的符号,比如比特币是BTC,以太坊是ETH,咱们嫩模币当然是NMB了!




然后下面有个蓝色的deploy,点了这个deploy,嫩模币就正式发布了————这里有个条件,就是钱包里要有少量的ETH,作为执行合约的Gas,大概是0.00几个ETH就够了,也就几美元到几十美元的事儿。




好了。

完成了。

如果你完成了如上所说的步骤的话,那么你成功的在这个世界上,基于以太坊网络,创造了一种新的加密货币————如果这破玩意儿能称为加密货币的话……




我大概解释一下啊这玩意儿是啥:以太坊网络和只能合约,支持一个use case就是用户可以通过以太坊来发行自己的"Token", Token是什么呢?你可以理解为现实生活当中的“积分”,对,比如加油站洗车店会员卡积分,楼下发廊Tony老师让你办的冲2000送1000的美发会员卡,奶茶点送你的盖满10个张送一杯的集戳卡,幼儿园老师给小朋友的小红花……




这一切的一切,都是可以在以太坊用很简单的只能合约代码搞成一个"token",然后Token可以通过以太坊网络转账, 转账的时候消耗少量的以太坊ETH做Gas。Token也不需要钱包——使用以太坊钱包就好,钱包地址也是以太坊的地址,钱包秘钥也是以太坊的秘钥,区块链用的就是以太坊的区块链……




说了这么多,就是想让你明白,Token这破玩意儿如此简单,发行如此容易,没有成本,完全是基于以太坊网络,没有任何自己的底层技术,基本上20分钟就能搞出来一个,供应量随便填。




我要说的是:现在有好多所谓的ICO,就是把这Token拿来当币卖……




如上所说创造出来的Token,跟比特币,以太坊,瑞波这些真的“加密货币"完全不是一个东西——我不是要给比特币以太坊这些数字货币站台——我一开始以为,要搞ICO,起码要像比特币那种,自己有区块链,有底层技术,分布账本,钱包,nodes都自己实现吧——虽然这也不是什么难事儿,毕竟都是开源的,但起码这还是有一定成本和壁垒的,结果,这帮骗钱骗疯了的,连这都不搞,直接像我上面发布嫩模币那样,利用小白韭菜们的无知,把Token拿来当成币卖……




打开 All Tokens | CoinMarketCap看看哪些你以为和比特币,以太坊一样的加密货币,其实是和嫩模币NMB一样的Token呢?

有没有很眼熟啊?有没有很心慌啊?你看Platform,就是平台,多数都是以太坊平台,估值……50多亿美金?80多亿美金?

你们觉得嫩模币NMB估值应该多少啊?这么搞下去会不会币太多了,嫩模都不够用了啊……




好,现在币有了,接下来就是ICO难度最大的部分了:




写白皮书啊!




有没有发现现在白皮书天马星空,包罗万象,无所不能?为啥?本质上这玩意儿就是”积分“,能用的上”积分“的地方都能给套进去啊!机械制造,生物制药,航天科技,基因工程,物流运输,文化创作,阴阳五行,一带一路……反正你想怎么写怎么写,这部分就非常考验ICO团队的吹牛逼功力,白皮书写的不好,给观众的想象空间不够,基本可以判断,这个团队平时缺乏诈骗经验……




有了币,有了白皮书,就可以拿去忽悠人了,基本上就是说ICO前期,让对方给你打以太坊ETH,然后你给他发你的嫩模币NMB……他给你以太坊,你给他嫩模币,他给你ETH,你给他NMB……他的以太坊得是1000美金一个真金白银买的,你的NMB可是上面随手填出来的。过不过瘾?爽不爽?




这玩意儿,薄利多销,骗到50算50,骗到100算100,团队别露脸,白皮书上不写名,写名也别写自己名,找两个外国人做adviser,反正韭菜们也不会去验证。核心团队叫基金会,比如咱们负责操作嫩模币的基金会,可以起名叫NMB FOUNDATION。收到ETH直接变现分钱走人,或者另起炉灶,NMB ICO成功完成了,再搞下一个呗,市场需要细分,嫩模有的丑有的俏,针对丑嫩模搞一个丑嫩模币CNMB,俏嫩模的叫QNMB,或者叫嫩模2.0币NM2B,听上去就有互联网时代感……




区块链确实是个好技术,有很多潜力和空间,但究竟有没有好到颠覆世界,有没有好到随便发个tokn就能值十亿八亿的美金,有没有好到能让人打着”区块链“,”智能合约“,”加密货币“的幌子搞诈骗和非法集资能逃脱法律责任,有没有好到能让你买一个Token就赚个几百几千倍。大家自己判断。




*上面说的NMB合约我没deploy,所以你们不用找我要NMB了,不给你们。

**可以把这篇文章转给身边哪些被ICO忽悠的人,或者下次有人拿白皮书来忽悠你,你可以反杀他:你那个币不行,还是来投我的NMB吧!

运行python requests/urllib2/urllib3 需要sudo/root权限,为什么?

回复

python李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 50 次浏览 • 2018-01-10 23:36 • 来自相关话题

python模拟登录vexx.pro 获取你的总资产/币值和其他个人信息

python爬虫李魔佛 发表了文章 • 0 个评论 • 61 次浏览 • 2018-01-10 03:22 • 来自相关话题

因为每次登录vexx.pro,第一次输入正常的验证码都会说你是错误的,搞得每次都要输入2次验证码,所以为了节省点时间,就写了个模拟登录来自动获取自己的账户信息的python程序。
 





 # -*-coding=utf-8-*-

import requests
session = requests.Session()
user = ''
password = ''

def getCode():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}
url = 'http://vexx.pro/verify/code.html'
s = session.get(url=url, headers=headers)

with open('code.png', 'wb') as f:
f.write(s.content)

code = raw_input('input the code: ')
print 'code is ', code

login_url = 'http://vexx.pro/login/up_login.html'
post_data = {
'moble': user,
'mobles': '+86',
'password': password,
'verify': code,
'login_token': ''}

login_s = session.post(url=login_url, headers=header, data=post_data)
print login_s.status_code

zzc_url = 'http://vexx.pro/ajax/check_zzc/'
zzc_s = session.get(url=zzc_url, headers=headers)
print zzc_s.text

def main():
getCode()

if __name__ == '__main__':
main()


把自己的用户名和密码填上去,中途输入一次验证码。
可以把session保存到本地,然后下一次就可以不用再输入密码。 
原创地址:http://30daydo.com/article/263
转载请注明出处。 查看全部
因为每次登录vexx.pro,第一次输入正常的验证码都会说你是错误的,搞得每次都要输入2次验证码,所以为了节省点时间,就写了个模拟登录来自动获取自己的账户信息的python程序。
 

snipaste_20180110_031813.png

 
# -*-coding=utf-8-*-

import requests
session = requests.Session()
user = ''
password = ''

def getCode():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}
url = 'http://vexx.pro/verify/code.html'
s = session.get(url=url, headers=headers)

with open('code.png', 'wb') as f:
f.write(s.content)

code = raw_input('input the code: ')
print 'code is ', code

login_url = 'http://vexx.pro/login/up_login.html'
post_data = {
'moble': user,
'mobles': '+86',
'password': password,
'verify': code,
'login_token': ''}

login_s = session.post(url=login_url, headers=header, data=post_data)
print login_s.status_code

zzc_url = 'http://vexx.pro/ajax/check_zzc/'
zzc_s = session.get(url=zzc_url, headers=headers)
print zzc_s.text

def main():
getCode()

if __name__ == '__main__':
main()


把自己的用户名和密码填上去,中途输入一次验证码。
可以把session保存到本地,然后下一次就可以不用再输入密码。 
原创地址:http://30daydo.com/article/263
转载请注明出处。

coinegg 黑心虚拟币平台,建议大家慎入

投资李魔佛 发表了文章 • 0 个评论 • 195 次浏览 • 2018-01-06 21:58 • 来自相关话题

coinegg的前身是聚币网,在2017年9月,国内的虚拟货币因为政策原因被强制关闭。聚币当然也不例外。
 
然后聚币就搞了个coinegg的海外站点继续交易虚拟货币。
 
但是这个网站的成交量及其低迷,有时候2个小时都没有一单成交单。





点击查看大图

一天的成交额也不过2个比特币






提现目前只能提取比特币,而且有最低提取额度要求,最低提取0.1个比特币(这个是怎么一个概念? 你一个币种一天成交额也就才2个多比特币,你就要至少0.1个比特币才能提),按照当前10w元一枚的比特币价格,最低提取大概在1w元人民币以上。  明显就是人为制造一个门槛,让用户的钱不能出去。尤其是散户韭菜们,零钱都不能任意出去。





 点击查看大图
 
 
而且,提现手续费为0.008个比特币,约人民币800元。 这个比例,对于交易者来说,比例太高了。进去出来就要收800, 还不如去其他的交易网站,没有限制,没有限额,没有比天高的手续费。
 





点击查看大图
 
感觉这个网站没人有监管,没备案。一种明宰你的感觉,我要收多少,怎么收,由我说了算。 我的地盘我做主!

纯属个人对该平台的使用感受,如果你觉得你可以接受上面的种种不足,那入金coinegg也无妨。 查看全部
coinegg的前身是聚币网,在2017年9月,国内的虚拟货币因为政策原因被强制关闭。聚币当然也不例外。
 
然后聚币就搞了个coinegg的海外站点继续交易虚拟货币。
 
但是这个网站的成交量及其低迷,有时候2个小时都没有一单成交单。

coin3.PNG

点击查看大图

一天的成交额也不过2个比特币

coin4.PNG


提现目前只能提取比特币,而且有最低提取额度要求,最低提取0.1个比特币(这个是怎么一个概念? 你一个币种一天成交额也就才2个多比特币,你就要至少0.1个比特币才能提),按照当前10w元一枚的比特币价格,最低提取大概在1w元人民币以上。  明显就是人为制造一个门槛,让用户的钱不能出去。尤其是散户韭菜们,零钱都不能任意出去。

coinegg.PNG

 点击查看大图
 
 
而且,提现手续费为0.008个比特币,约人民币800元。 这个比例,对于交易者来说,比例太高了。进去出来就要收800, 还不如去其他的交易网站,没有限制,没有限额,没有比天高的手续费。
 

coinegg2.PNG

点击查看大图
 
感觉这个网站没人有监管,没备案。一种明宰你的感觉,我要收多少,怎么收,由我说了算。 我的地盘我做主!

纯属个人对该平台的使用感受,如果你觉得你可以接受上面的种种不足,那入金coinegg也无妨。

vexx 比特龙邀请码GY147161 比特币的分叉币种 免费领取(限时)

量化交易李魔佛 发表了文章 • 0 个评论 • 93 次浏览 • 2018-01-04 17:38 • 来自相关话题

认识的一个圈内人建立的网站,注册的话就送3个币,一个币目前是10RMB,如果你不确信虚拟币的前景,建议你拿到币后就卖掉,如果看好就继续持有放一段时间。随个人意愿持有或抛售。
官方网站 
http://vexx.pro
点击注册,注册菜单最后一个邀请码填 GY147161





你推荐一个人也会有奖励,会送1.5个比特龙币。 
 
PS:
想起几年前注册了一个虚拟币的网站网站,当时送了几千个瑞波币,当时觉得这个不值钱,所以领了就卖了10块钱。现在想想都是泪。
 
vexx 邀请码 比特龙邀请码 GY147161 比特币的分叉币种 免费领取(限时)

还有上周发行的一个WAXX币,当时没去认购,1块一个,结果开盘直接200多一个。错过错过~ 查看全部
认识的一个圈内人建立的网站,注册的话就送3个币,一个币目前是10RMB,如果你不确信虚拟币的前景,建议你拿到币后就卖掉,如果看好就继续持有放一段时间。随个人意愿持有或抛售。
官方网站 
http://vexx.pro
点击注册,注册菜单最后一个邀请码填 GY147161

bcd.PNG

你推荐一个人也会有奖励,会送1.5个比特龙币。 
 
PS:
想起几年前注册了一个虚拟币的网站网站,当时送了几千个瑞波币,当时觉得这个不值钱,所以领了就卖了10块钱。现在想想都是泪。
 
vexx 邀请码 比特龙邀请码 GY147161 比特币的分叉币种 免费领取(限时)

还有上周发行的一个WAXX币,当时没去认购,1块一个,结果开盘直接200多一个。错过错过~

python获取A股上市公司的盈利能力

量化交易李魔佛 发表了文章 • 0 个评论 • 92 次浏览 • 2018-01-04 16:09 • 来自相关话题

利用tushare库,可以很方便的获取A股上市公司的基本面信息。
比如企业的盈利能力。
 import tushare as ts
#获取2017年第3季度的盈利能力数据
ts.get_profit_data(2017,3)返回的结果:
 
按年度、季度获取盈利能力数据,结果返回的数据属性说明如下:
code,代码 
name,名称 
roe,净资产收益率(%)
 net_profit_ratio,净利率(%) 
gross_profit_rate,毛利率(%) 
net_profits,净利润(百万元)  #这里的官网信息有误,单位应该是百万
esp,每股收益 
business_income,营业收入(百万元) 
bips,每股主营业务收入(元)
 
例如返回如下结果:
 
    code   name    roe  net_profit_ratio  gross_profit_rate  net_profits  \
  000717   韶钢松山  79.22              9.44            14.1042    1750.2624
  600793   宜宾纸业  65.40             13.31             7.9084     100.6484
  600306    商业城  63.19             18.55            17.8601     114.9175
  000526  *ST紫学  61.03              2.78            31.1212      63.6477
  600768   宁波富邦  57.83             14.95             2.7349      88.3171
 
原创,转载请注明:
http://30daydo.com/article/260
  查看全部
利用tushare库,可以很方便的获取A股上市公司的基本面信息。
比如企业的盈利能力。
 
import tushare as ts
#获取2017年第3季度的盈利能力数据
ts.get_profit_data(2017,3)
返回的结果:
 
按年度、季度获取盈利能力数据,结果返回的数据属性说明如下:
code,代码 
name,名称 
roe,净资产收益率(%)
 net_profit_ratio,净利率(%) 
gross_profit_rate,毛利率(%) 
net_profits,净利润(百万元)  #这里的官网信息有误,单位应该是百万
esp,每股收益 
business_income,营业收入(百万元) 
bips,每股主营业务收入(元)
 
例如返回如下结果:
 
    code   name    roe  net_profit_ratio  gross_profit_rate  net_profits  \
  000717   韶钢松山  79.22              9.44            14.1042    1750.2624
  600793   宜宾纸业  65.40             13.31             7.9084     100.6484
  600306    商业城  63.19             18.55            17.8601     114.9175
  000526  *ST紫学  61.03              2.78            31.1212      63.6477
  600768   宁波富邦  57.83             14.95             2.7349      88.3171
 
原创,转载请注明:
http://30daydo.com/article/260
 

scipy.misc.lena AttributeError: 'module' object has no attribute 'lena'

python李魔佛 发表了文章 • 0 个评论 • 77 次浏览 • 2018-01-03 19:42 • 来自相关话题

在数据可视化的那本书上看到的demo,不过运行不通过,然后出现上面的那个错误,lena函数看起来被移除了。
 
import scipy.misc
lena=scipy.misc.lena()
plt.gray()
plt.imshow(lena)
plt.colorbar()
plt.show()
Error:
lena=scipy.misc.lena()
AttributeError: 'module' object has no attribute 'lena'
  
定位到scipy包的位置
/usr/local/lib/python2.7/dist-packages/scipy/misc
然后根据文本查找一下: find -name '*.py' | xargs grep 'lena'
 
果然,没有返回相关的字段。 看样子在scipy 1.0.0版本上已经移除了lena图的数据了。 
 
不过替换了一张其他的图片。 在misc目录下看到一个叫ascent的data, 替换这个函数后: 
scipy.misc.ascent()
后,显示一个楼梯的图片。只能凑合着用吧。 lena图自己上网找一张然后数字化就好了。
 
  查看全部
在数据可视化的那本书上看到的demo,不过运行不通过,然后出现上面的那个错误,lena函数看起来被移除了。
 
	import scipy.misc
lena=scipy.misc.lena()
plt.gray()
plt.imshow(lena)
plt.colorbar()
plt.show()

Error:
lena=scipy.misc.lena()
AttributeError: 'module' object has no attribute 'lena'
  
定位到scipy包的位置
/usr/local/lib/python2.7/dist-packages/scipy/misc
然后根据文本查找一下: find -name '*.py' | xargs grep 'lena'
 
果然,没有返回相关的字段。 看样子在scipy 1.0.0版本上已经移除了lena图的数据了。 
 
不过替换了一张其他的图片。 在misc目录下看到一个叫ascent的data, 替换这个函数后: 
scipy.misc.ascent()
后,显示一个楼梯的图片。只能凑合着用吧。 lena图自己上网找一张然后数字化就好了。
 
 

python获取股票年涨跌幅排名

量化交易李魔佛 发表了文章 • 0 个评论 • 159 次浏览 • 2017-12-30 23:11 • 来自相关话题

2017还剩一天就结束了,而A股在昨天已经收官了。 对于大部分投资者来说,这一年能跑赢指数已经很厉害的了,因为指数被权重股拉的失真了,上证指数的分时白线和黄线经常出现张开的大口,白线在上,黄线在下。
 
作为年终回顾,首先看看A股市场2017的总体涨跌幅排名。
 
下面函数是用来获取个股某个时间段的涨跌幅。code是股票代码,start为开始时间段,end为结束时间段。def profit(code,start,end):
try:
df=ts.get_k_data(code,start=start,end=end)
except Exception,e:
print e
return None
try:
p=(df['close'].iloc[-1]-df['close'].iloc[0])/df['close'].iloc[0]*100.00
except Exception,e:
print e
return None
return round(p,2)
如果要获取华大基因的2017年涨幅,可以使用profit('300678','2016-12-31','2017-12-31')
需要注意的是,需要添加一个except的异常处理,因为部分个股停牌时间超过一年,所以该股的收盘价都是空的,这种情况就返回一个None值,在dataframe里就是NaN。
 
剩下了的就是枚举所有A股的个股代码了,然后把遍历所有代码,调用profit函数即可。def price_change():
basic=ts.get_stock_basics()
pro=

for code in basic.index.values:
print code
p=profit(code,'2016-12-31','2017-12-31')
pro.append(p)
basic['price_change']=pro
basic.to_csv('2017_all_price_change.xls',encoding='gbk')
df=pd.read_csv('2017_all_price_change.xls',encoding='gbk')
df.to_excel('2017_all_price_change.xls',encoding='gbk')
结果保存到2017_all_price_change.xls中,里面有个股的基本信息,还追加了一列2017年的涨跌幅,price_change
 
最后我们把price_change按照从高到低进行排序。 看看哪些个股排名靠前。def analysis():
df=pd.read_excel('2017_all_price_change.xls',encoding='gbk')
df=df.sort_values(by='price_change',ascending=False)
df.to_excel('2017-year.xls',encoding='gbk')
最终保存的文件为2017-year.xls,当然你也可以保存到mysql的数据库当中。engine=get_engine('stock')
df.to_sql('2017years',engine)

其中get_engine() 函数如下定义:def get_engine(db):
engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, db))
return engine
只需要把你的mysql数据库的用户名密码等变量加上去就可以了。
 
最终的结果如下:






点击查看大图 

附件是导出来的excel格式的数据,你们可以拿去参考。

下一篇我们来学习统计个股的信息,比如哪类股涨得好,哪类股具有相关性,哪类股和大盘走向类似等等。
 
原文链接:http://30daydo.com/article/258
转载请注明出处
 
附件

2017-year.zip


  查看全部
2017还剩一天就结束了,而A股在昨天已经收官了。 对于大部分投资者来说,这一年能跑赢指数已经很厉害的了,因为指数被权重股拉的失真了,上证指数的分时白线和黄线经常出现张开的大口,白线在上,黄线在下。
 
作为年终回顾,首先看看A股市场2017的总体涨跌幅排名。
 
下面函数是用来获取个股某个时间段的涨跌幅。code是股票代码,start为开始时间段,end为结束时间段。
def profit(code,start,end):
try:
df=ts.get_k_data(code,start=start,end=end)
except Exception,e:
print e
return None
try:
p=(df['close'].iloc[-1]-df['close'].iloc[0])/df['close'].iloc[0]*100.00
except Exception,e:
print e
return None
return round(p,2)

如果要获取华大基因的2017年涨幅,可以使用
profit('300678','2016-12-31','2017-12-31')

需要注意的是,需要添加一个except的异常处理,因为部分个股停牌时间超过一年,所以该股的收盘价都是空的,这种情况就返回一个None值,在dataframe里就是NaN。
 
剩下了的就是枚举所有A股的个股代码了,然后把遍历所有代码,调用profit函数即可。
def price_change():
basic=ts.get_stock_basics()
pro=

for code in basic.index.values:
print code
p=profit(code,'2016-12-31','2017-12-31')
pro.append(p)
basic['price_change']=pro
basic.to_csv('2017_all_price_change.xls',encoding='gbk')
df=pd.read_csv('2017_all_price_change.xls',encoding='gbk')
df.to_excel('2017_all_price_change.xls',encoding='gbk')

结果保存到2017_all_price_change.xls中,里面有个股的基本信息,还追加了一列2017年的涨跌幅,price_change
 
最后我们把price_change按照从高到低进行排序。 看看哪些个股排名靠前。
def analysis():
df=pd.read_excel('2017_all_price_change.xls',encoding='gbk')
df=df.sort_values(by='price_change',ascending=False)
df.to_excel('2017-year.xls',encoding='gbk')

最终保存的文件为2017-year.xls,当然你也可以保存到mysql的数据库当中。
engine=get_engine('stock')
df.to_sql('2017years',engine)

其中get_engine() 函数如下定义:
def get_engine(db):
engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, db))
return engine

只需要把你的mysql数据库的用户名密码等变量加上去就可以了。
 
最终的结果如下:


2017-stock_副本.png

点击查看大图 

附件是导出来的excel格式的数据,你们可以拿去参考。

下一篇我们来学习统计个股的信息,比如哪类股涨得好,哪类股具有相关性,哪类股和大盘走向类似等等。
 
原文链接:http://30daydo.com/article/258
转载请注明出处
 
附件

 

dataframe reindex和reset_index区别

量化交易李魔佛 发表了文章 • 0 个评论 • 68 次浏览 • 2017-12-30 15:58 • 来自相关话题

reset_index的作用是重新设置dataframe的index,范围为0~len(df)。 df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
df2 = pd.DataFrame({'A': [6], 'B': [60]})
print 'df\n', df
print 'df2\n', df2

df_x = [df, df2]
result = pd.concat(df_x)
print 'first result\n', result 
上面代码把df和df2合并为一个result,但是result的index是乱的。





 
那么执行result2= result.reset_index()
得到如下的result2: (默认只是返回一个copy,原来的result没有发生改变,所以需要副本赋值给result2)





可以看到,原来的一列index现在变成了columns之一,新的index为[0,1,2,3,4,5]
如果添加参数 reset_index(drop=True) 那么原index会被丢弃,不会显示为一个新列。result2 = result.reset_index(drop=True)



 
reindex的作用是按照原有的列进行重新生成一个新的df。
 
还是使用上面的代码
result目前是df和df2的合并序列。
如下:




 
可以看到index为[0,1,2,3,4,0]
执行 
result3 = result.reindex(columns=['A','C'])




 
可以看到,原index并没有发生改变,而类变成了A和C,因为C是不存在的,所以使用了NaB填充,这个值的内容可以自己填充,可以改为默认填充0或者任意你想要的数据。

原文链接:http://30daydo.com/article/257 
欢迎转载,注明出处
  查看全部
reset_index的作用是重新设置dataframe的index,范围为0~len(df)。
    df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
df2 = pd.DataFrame({'A': [6], 'B': [60]})
print 'df\n', df
print 'df2\n', df2

df_x = [df, df2]
result = pd.concat(df_x)
print 'first result\n', result
 
上面代码把df和df2合并为一个result,但是result的index是乱的。

df4.PNG

 
那么执行
result2= result.reset_index()

得到如下的result2: (默认只是返回一个copy,原来的result没有发生改变,所以需要副本赋值给result2)

df5.PNG

可以看到,原来的一列index现在变成了columns之一,新的index为[0,1,2,3,4,5]
如果添加参数 reset_index(drop=True) 那么原index会被丢弃,不会显示为一个新列。
result2 = result.reset_index(drop=True)
df6.PNG

 
reindex的作用是按照原有的列进行重新生成一个新的df。
 
还是使用上面的代码
result目前是df和df2的合并序列。
如下:
df7.PNG

 
可以看到index为[0,1,2,3,4,0]
执行 
result3 = result.reindex(columns=['A','C'])

df8.PNG

 
可以看到,原index并没有发生改变,而类变成了A和C,因为C是不存在的,所以使用了NaB填充,这个值的内容可以自己填充,可以改为默认填充0或者任意你想要的数据。

原文链接:http://30daydo.com/article/257 
欢迎转载,注明出处
 

dataframe的index索引是否可以重复

量化交易李魔佛 发表了文章 • 0 个评论 • 72 次浏览 • 2017-12-30 15:10 • 来自相关话题

答案是肯定的。
  df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
df2 = pd.DataFrame({'A': [6], 'B': [60]})
print 'df\n', df
print 'df2\n', df2输出如下:
df1





df2




 
然后进行合并: df_x = [df, df2]
result = pd.concat(df_x)
print 'first result\n', result
合并后的结果:





 
合并后的index是[0,1,2,3,4,0] 所以index集合是一个类似list的结构,而非set结构,允许重复数据的存在。
 
原文链接:http://30daydo.com/article/256 
转载请注明
 
  查看全部
答案是肯定的。
 
    df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
df2 = pd.DataFrame({'A': [6], 'B': [60]})
print 'df\n', df
print 'df2\n', df2
输出如下:
df1
df.PNG


df2
df2.PNG

 
然后进行合并:
    df_x = [df, df2]
result = pd.concat(df_x)
print 'first result\n', result

合并后的结果:

dfx.PNG

 
合并后的index是[0,1,2,3,4,0] 所以index集合是一个类似list的结构,而非set结构,允许重复数据的存在。
 
原文链接:http://30daydo.com/article/256 
转载请注明
 
 

tushare使用get_stock_basic()保存为excel会因为乱码出错而无法保存

量化交易李魔佛 发表了文章 • 0 个评论 • 67 次浏览 • 2017-12-30 13:11 • 来自相关话题

代码如下:
basic=ts.get_stock_basics()

print basic.info()
print basic.head(10)

basic.to_excel('basic2017.xls',encoding='gbk')
运行后会出错:

'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
 
很明显的是编问题。 
 
然后尝试使用解决编码的步骤。
1. reload(sys) 设置default为utf-8: 失败
2. to_excel('stock.xls',encoding='gbk') : 失败,encoding参数换了几个都是失败,utf-8,gb2312,cp1252
 
最后解决的办法是,先把df保存为csv,然后再从csv从读取出来,然后再存储为excel。 整个过程的encoding参数都是用'gbk'.
basic.to_csv('2017_all_price_change.xls',encoding='gbk')
df=pd.read_csv('2017_all_price_change.xls',encoding='gbk')
df.to_excel('2017_all_price_change.xls',encoding='gbk')
  查看全部
代码如下:
    basic=ts.get_stock_basics()

print basic.info()
print basic.head(10)

basic.to_excel('basic2017.xls',encoding='gbk')

运行后会出错:

'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
 
很明显的是编问题。 
 
然后尝试使用解决编码的步骤。
1. reload(sys) 设置default为utf-8: 失败
2. to_excel('stock.xls',encoding='gbk') : 失败,encoding参数换了几个都是失败,utf-8,gb2312,cp1252
 
最后解决的办法是,先把df保存为csv,然后再从csv从读取出来,然后再存储为excel。 整个过程的encoding参数都是用'gbk'.
    basic.to_csv('2017_all_price_change.xls',encoding='gbk')
df=pd.read_csv('2017_all_price_change.xls',encoding='gbk')
df.to_excel('2017_all_price_change.xls',encoding='gbk')

 

pandas to_excel函数参数中的文件名需要为.xls

量化交易李魔佛 发表了文章 • 0 个评论 • 51 次浏览 • 2017-12-29 18:10 • 来自相关话题

例如 df.to_excel('2017-analysis')
会报错。
ValueError: No engine for filetype: ''

需要把文件名也命名为'2017-analysis.xls' 才能过正常运行。
 
不同于其他本文格式,可以随意命名后缀,然后生成文件后再修改后缀。
  查看全部
例如 df.to_excel('2017-analysis')
会报错。
ValueError: No engine for filetype: ''

需要把文件名也命名为'2017-analysis.xls' 才能过正常运行。
 
不同于其他本文格式,可以随意命名后缀,然后生成文件后再修改后缀。
 

Dataframe中的plot函数绘图会把日期index自动补全

量化交易李魔佛 发表了文章 • 0 个评论 • 69 次浏览 • 2017-12-26 14:49 • 来自相关话题

代码如下:
df=pd.read_excel('600050.xls',dtype={'datetime':np.datetime64})
df=df.set_index('datetime')
df['close'].plot(use_index=True,grid=True)
plt.show()
df为中国联通的日线数据,跨度为2016年到2017年底,中间有过一段时间的停牌。 用上面的代码绘制出来的曲线图,回发现,横坐标是日期,可是图中居然会把停牌的日子也插进去,这样导致了图形中间出现了一条长长的折线。
因为停牌后,股价是是不会变化的。 
  查看全部
代码如下:
	df=pd.read_excel('600050.xls',dtype={'datetime':np.datetime64})
df=df.set_index('datetime')
df['close'].plot(use_index=True,grid=True)
plt.show()

df为中国联通的日线数据,跨度为2016年到2017年底,中间有过一段时间的停牌。 用上面的代码绘制出来的曲线图,回发现,横坐标是日期,可是图中居然会把停牌的日子也插进去,这样导致了图形中间出现了一条长长的折线。
因为停牌后,股价是是不会变化的。 
 

pandas dataframe read_excel读取的列设置为日期类型datetime

量化交易李魔佛 发表了文章 • 0 个评论 • 93 次浏览 • 2017-12-25 17:53 • 来自相关话题

比如excel中有一列是日期:





 
如果使用函数 pd.read_excel('xxx.xls') 读入,那么日期列实际会被认为是一个non-null object 类型,虽然可以后期对这个格式进行转换,但其实可以加入一个参数dtype, 就可以在读excel的时候就指定某列的数据类型。
 
pd.read_excel('xxx.xls',dtype={'出生日期':np.datetime64}
 
注意np中的datetime类型是datetime64. 查看全部
比如excel中有一列是日期:

timg.jpg

 
如果使用函数 pd.read_excel('xxx.xls') 读入,那么日期列实际会被认为是一个non-null object 类型,虽然可以后期对这个格式进行转换,但其实可以加入一个参数dtype, 就可以在读excel的时候就指定某列的数据类型。
 
pd.read_excel('xxx.xls',dtype={'出生日期':np.datetime64}
 
注意np中的datetime类型是datetime64.

ubuntu python matplotlib绘图不显示图形

python李魔佛 发表了文章 • 0 个评论 • 90 次浏览 • 2017-12-25 16:37 • 来自相关话题

版本信息: ubuntu16
python 2.7
matplotlib (最新,通过pip安装的)
 
绘制任何图形都会输出下面的错误:
TypeError: Couldn't find foreign struct converter for 'cairo.Context'
 
cairo这个依赖库我已经通过apt安装的了。
 
通过调试,最后发现需要安装这个库: 
    sudo apt-get install python-gi-cairo
 
安装后就可以看到图像能够正常显示了。(不然会显示一片空白,其实如果你选择保存的话,然后打开图像,是可以看到绘制出来的图像的) 查看全部
版本信息: ubuntu16
python 2.7
matplotlib (最新,通过pip安装的)
 
绘制任何图形都会输出下面的错误:
TypeError: Couldn't find foreign struct converter for 'cairo.Context'
 
cairo这个依赖库我已经通过apt安装的了。
 
通过调试,最后发现需要安装这个库: 
    sudo apt-get install python-gi-cairo
 
安装后就可以看到图像能够正常显示了。(不然会显示一片空白,其实如果你选择保存的话,然后打开图像,是可以看到绘制出来的图像的)

vmware虚拟机在i7 4核8线程的电脑上为什么会很卡

网络安全李魔佛 发表了文章 • 0 个评论 • 79 次浏览 • 2017-12-24 16:16 • 来自相关话题

配置如下:





 
cpu性能算很猛的了,虽然内存只有4GB,但怎么也不至于开一个vmware,里面运行ubuntu,会卡成翔。
电脑是32位的win7。CPU的虚拟化被禁止了。
 
后面经过不断的调整参数,发现问题出现在虚拟机的CPU核心数的设置上。 默认选择了2个CPU核心,当时认为虚拟机占用的CPU核心越少,那么主机host就会不那么卡。 结果发现不是这么一回事。 把CPU数目设置为4后,发现主机host的一点也不卡了。 查看全部
配置如下:

pc.png

 
cpu性能算很猛的了,虽然内存只有4GB,但怎么也不至于开一个vmware,里面运行ubuntu,会卡成翔。
电脑是32位的win7。CPU的虚拟化被禁止了。
 
后面经过不断的调整参数,发现问题出现在虚拟机的CPU核心数的设置上。 默认选择了2个CPU核心,当时认为虚拟机占用的CPU核心越少,那么主机host就会不那么卡。 结果发现不是这么一回事。 把CPU数目设置为4后,发现主机host的一点也不卡了。

微信 支付宝都无法在wp8.1上登录了

网络安全李魔佛 发表了文章 • 0 个评论 • 90 次浏览 • 2017-12-21 00:39 • 来自相关话题

今天打开尘封的lumia手机,发现微信和支付宝都无法登录了。
sign,WP系统算是彻底完蛋了吧。
今天打开尘封的lumia手机,发现微信和支付宝都无法登录了。
sign,WP系统算是彻底完蛋了吧。

树莓派安装mongodb服务器

网络李魔佛 发表了文章 • 0 个评论 • 69 次浏览 • 2017-12-18 16:57 • 来自相关话题

树莓派的自带的源就自带了mongodb-server的安装包,所以只需要使用命令:sudo apt-get install mongodb-server 就可以安装了。
 
不过安装的是32bit 的mongodb,数据库的大小会被限制在2GB。
树莓派启动mongodb
修改/etc/mongodb.config,
把里面的bind=127.0.0.1 注释掉,前面加一个#即可,因为这样其他主机也可以访问这台树莓派的mongodb服务器。
修改dbpath和dblog的路径,因为默认的路径你需要root权限

然后运行 mongod --config /etc/mongodb.config , 然后远程使用mongo ip地址就可以远程连接了。 查看全部
树莓派的自带的源就自带了mongodb-server的安装包,所以只需要使用命令:sudo apt-get install mongodb-server 就可以安装了。
 
不过安装的是32bit 的mongodb,数据库的大小会被限制在2GB。
树莓派启动mongodb
修改/etc/mongodb.config,
把里面的bind=127.0.0.1 注释掉,前面加一个#即可,因为这样其他主机也可以访问这台树莓派的mongodb服务器。
修改dbpath和dblog的路径,因为默认的路径你需要root权限

然后运行 mongod --config /etc/mongodb.config , 然后远程使用mongo ip地址就可以远程连接了。

使用官网下载的mongodb,如何设置远程连接mongodb服务器

网络安全李魔佛 发表了文章 • 0 个评论 • 112 次浏览 • 2017-12-17 23:10 • 来自相关话题

在linux到官网下载mongodb,选择64位版本。
解压后在mongo的bin目录下运行 mongod --dbpath ~/mongo/db
可以看到mongodb服务被正常启动了。
 
在局域网其他电脑上使用mongodb客户端尝试连接这个mongo服务器,发现无法连接上。
因为官网下载的mongo问价解压后并没有mongo.conf配置文件。
 
在本机运行命令: mongo
可以看到输出:
 Server has startup warnings:
2017-12-17T22:56:19.702+0800 I STORAGE [initandlisten]
2017-12-17T22:56:19.702+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-12-17T22:56:19.702+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core ... ystem
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten]
从上面的信息可以看到,如果需要远程的机子连接到本机,需要添加一个选项: --bind_ip_all
运行下面命令后:
mongod --dbpath ~/mongo/db --bind_ip_all
 
远程的机子就能够连上mongo服务器了。
 
原文地址:http://30daydo.com/article/247
转载请注明出处 查看全部
在linux到官网下载mongodb,选择64位版本。
解压后在mongo的bin目录下运行 mongod --dbpath ~/mongo/db
可以看到mongodb服务被正常启动了。
 
在局域网其他电脑上使用mongodb客户端尝试连接这个mongo服务器,发现无法连接上。
因为官网下载的mongo问价解压后并没有mongo.conf配置文件。
 
在本机运行命令: mongo
可以看到输出:
 
Server has startup warnings: 
2017-12-17T22:56:19.702+0800 I STORAGE [initandlisten]
2017-12-17T22:56:19.702+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-12-17T22:56:19.702+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core ... ystem
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2017-12-17T22:56:20.600+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten]
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-12-17T22:56:20.601+0800 I CONTROL [initandlisten]

从上面的信息可以看到,如果需要远程的机子连接到本机,需要添加一个选项: --bind_ip_all
运行下面命令后:
mongod --dbpath ~/mongo/db --bind_ip_all
 
远程的机子就能够连上mongo服务器了。
 
原文地址:http://30daydo.com/article/247
转载请注明出处

python多线程出现错误 thread.error: can't start new thread

python李魔佛 发表了文章 • 0 个评论 • 77 次浏览 • 2017-12-14 17:58 • 来自相关话题

原因是线程数太多,没有退出,导致正在运行的线程数超过系统的限制。(win7 64bit貌似支持1000多个python线程同时运行)。
 
解决办法就是加锁或者合理退出一些占用资源的线程。
原因是线程数太多,没有退出,导致正在运行的线程数超过系统的限制。(win7 64bit貌似支持1000多个python线程同时运行)。
 
解决办法就是加锁或者合理退出一些占用资源的线程。

[scrapy]修改爬虫默认user agent的多种方法

python爬虫李魔佛 发表了文章 • 0 个评论 • 127 次浏览 • 2017-12-14 16:22 • 来自相关话题

1. 创建scrapy项目:scrapy startproject headerchange2. 创建爬虫文件scrapy genspider headervalidation helloacm.com
3. 目标站点:

https://helloacm.com/api/user-agent/

这一个站点直接返回用户的User-Agent, 这样你就可以直接查看你的User-Agent是否设置成功。
尝试用浏览器打开网址 
https://helloacm.com/api/user-agent/,

网站直接返回:  
"Mozilla\/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/62.0.3202.94 Safari\/537.36"
 
3. 配置scrapy
在spider文件夹的headervalidation.py 修改为一下内容。class HeadervalidationSpider(scrapy.Spider):
name = 'headervalidation'
allowed_domains = ['helloacm.com']
start_urls = ['http://helloacm.com/api/user-agent/']

def parse(self, response):
print '*'*20
print response.body
print '*'*20
项目只是打印出response的body,也就是打印出访问的User-Agent信息。
 
运行:scrapy crawl headervalidation会发现返回的是503。 接下来,我们修改scrapy的User-Agent
 
方法1:
修改setting.py中的User-Agent# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Hello World'
然后重新运行scrapy crawl headervalidation
这个时候,能够看到正常的scrapy输出了。2017-12-14 16:17:35 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-12-14 16:17:35 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://helloacm.com/api/us
er-agent/> from <GET http://helloacm.com/api/user-agent/>
2017-12-14 16:17:36 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://helloacm.com/api/user-agent/> (referer: None)

[b]********************
"Hello World"
********************
[/b]2017-12-14 16:17:37 [scrapy.core.engine] INFO: Closing spider (finished)
2017-12-14 16:17:37 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 406,
'downloader/request_count': 2,
'downloader/request_method_count/GET': 2,
'downloader/response_bytes': 796,
'downloader/response_count': 2,
'downloader/response_status_count/200': 1,
'downloader/response_status_count/301': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2017, 12, 14, 8, 17, 37, 29000),
'log_count/DEBUG': 3,
'log_count/INFO': 7,
'response_received_count': 1,
'scheduler/dequeued': 2,
'scheduler/dequeued/memory': 2,
'scheduler/enqueued': 2,
'scheduler/enqueued/memory': 2,
'start_time': datetime.datetime(2017, 12, 14, 8, 17, 35, 137000)}
2017-12-14 16:17:37 [scrapy.core.engine] INFO: Spider closed (finished)
 
正确设置了User-Agent
 
方法2.
修改setting中的
DEFAULT_REQUEST_HEADERS# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'User-Agent':'Hello World'
}
运行后也能够看到上面的输出。
 
 
方法3.
在代码中修改。class HeadervalidationSpider(scrapy.Spider):
name = 'headervalidation'
allowed_domains = ['helloacm.com']


def start_requests(self):
header={'User-Agent':'Hello World'}
yield scrapy.Request(url='http://helloacm.com/api/user-agent/',headers=header)

def parse(self, response):
print '*'*20
print response.body
print '*'*20
运行后也能够看到下面的输出。2017-12-14 16:17:35 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-12-14 16:17:35 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://helloacm.com/api/us
er-agent/> from <GET http://helloacm.com/api/user-agent/>
2017-12-14 16:17:36 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://helloacm.com/api/user-agent/> (referer: None)

********************
"Hello World"
********************
2017-12-14 16:17:37 [scrapy.core.engine] INFO: Closing spider (finished)
2017-12-14 16:17:37 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
 
方法4.
在中间件中自定义Header
 
在项目目录下添加一个目录:
customerMiddleware,在目录中新建一个自定义的中间件文件:
文件名随意为 customMiddleware.py
 
文件内容为修改request User-Agent#-*-coding=utf-8-*-
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware

class CustomerUserAgent(UserAgentMiddleware):
def process_request(self, request, spider):
ua='HELLO World?????????'
request.headers.setdefault('User-Agent',ua)
 
在setting中添加下面一句,以便使中间件生效。DOWNLOADER_MIDDLEWARES = {
'headerchange.customerMiddleware.customMiddleware.CustomerUserAgent':10
# 'headerchange.middlewares.MyCustomDownloaderMiddleware': 543,
}
然后重新运行,同样能够得到一样的效果。
 
原创文章,转载请注明:http://30daydo.com/article/245 

附上github的源码:https://github.com/Rockyzsu/base_function/tree/master/scrapy_demo/headerchange 
欢迎star和点赞。







如果你觉得文章对你有用,可以视乎你心情来打赏,以支持小站的服务器网络费用。
你的支持是我最大的动力!
 
PS:谢谢下面朋友的打赏
A Keung
阿贾克斯
白驹过隙
Che Long 查看全部
1. 创建scrapy项目:
scrapy startproject headerchange
2. 创建爬虫文件
scrapy genspider headervalidation helloacm.com

3. 目标站点:

https://helloacm.com/api/user-agent/

这一个站点直接返回用户的User-Agent, 这样你就可以直接查看你的User-Agent是否设置成功。
尝试用浏览器打开网址 
https://helloacm.com/api/user-agent/,

网站直接返回:  
"Mozilla\/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/62.0.3202.94 Safari\/537.36"
 
3. 配置scrapy
在spider文件夹的headervalidation.py 修改为一下内容。
class HeadervalidationSpider(scrapy.Spider):
name = 'headervalidation'
allowed_domains = ['helloacm.com']
start_urls = ['http://helloacm.com/api/user-agent/']

def parse(self, response):
print '*'*20
print response.body
print '*'*20

项目只是打印出response的body,也就是打印出访问的User-Agent信息。
 
运行:
scrapy crawl headervalidation
会发现返回的是503。 接下来,我们修改scrapy的User-Agent
 
方法1:
修改setting.py中的User-Agent
# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Hello World'

然后重新运行
scrapy crawl headervalidation

这个时候,能够看到正常的scrapy输出了。
2017-12-14 16:17:35 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-12-14 16:17:35 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://helloacm.com/api/us
er-agent/> from <GET http://helloacm.com/api/user-agent/>
2017-12-14 16:17:36 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://helloacm.com/api/user-agent/> (referer: None)

[b]********************
"Hello World"
********************
[/b]2017-12-14 16:17:37 [scrapy.core.engine] INFO: Closing spider (finished)
2017-12-14 16:17:37 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 406,
'downloader/request_count': 2,
'downloader/request_method_count/GET': 2,
'downloader/response_bytes': 796,
'downloader/response_count': 2,
'downloader/response_status_count/200': 1,
'downloader/response_status_count/301': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2017, 12, 14, 8, 17, 37, 29000),
'log_count/DEBUG': 3,
'log_count/INFO': 7,
'response_received_count': 1,
'scheduler/dequeued': 2,
'scheduler/dequeued/memory': 2,
'scheduler/enqueued': 2,
'scheduler/enqueued/memory': 2,
'start_time': datetime.datetime(2017, 12, 14, 8, 17, 35, 137000)}
2017-12-14 16:17:37 [scrapy.core.engine] INFO: Spider closed (finished)

 
正确设置了User-Agent
 
方法2.
修改setting中的
DEFAULT_REQUEST_HEADERS
# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'User-Agent':'Hello World'
}

运行后也能够看到上面的输出。
 
 
方法3.
在代码中修改。
class HeadervalidationSpider(scrapy.Spider):
name = 'headervalidation'
allowed_domains = ['helloacm.com']


def start_requests(self):
header={'User-Agent':'Hello World'}
yield scrapy.Request(url='http://helloacm.com/api/user-agent/',headers=header)

def parse(self, response):
print '*'*20
print response.body
print '*'*20

运行后也能够看到下面的输出。
2017-12-14 16:17:35 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-12-14 16:17:35 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://helloacm.com/api/us
er-agent/> from <GET http://helloacm.com/api/user-agent/>
2017-12-14 16:17:36 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://helloacm.com/api/user-agent/> (referer: None)

********************
"Hello World"
********************
2017-12-14 16:17:37 [scrapy.core.engine] INFO: Closing spider (finished)
2017-12-14 16:17:37 [scrapy.statscollectors] INFO: Dumping Scrapy stats:

 
方法4.
在中间件中自定义Header
 
在项目目录下添加一个目录:
customerMiddleware,在目录中新建一个自定义的中间件文件:
文件名随意为 customMiddleware.py
 
文件内容为修改request User-Agent
#-*-coding=utf-8-*-
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware

class CustomerUserAgent(UserAgentMiddleware):
def process_request(self, request, spider):
ua='HELLO World?????????'
request.headers.setdefault('User-Agent',ua)

 
在setting中添加下面一句,以便使中间件生效。
DOWNLOADER_MIDDLEWARES = {
'headerchange.customerMiddleware.customMiddleware.CustomerUserAgent':10
# 'headerchange.middlewares.MyCustomDownloaderMiddleware': 543,
}

然后重新运行,同样能够得到一样的效果。
 
原创文章,转载请注明:http://30daydo.com/article/245 

附上github的源码:https://github.com/Rockyzsu/base_function/tree/master/scrapy_demo/headerchange 
欢迎star和点赞。


mm_facetoface_collect_qrcode_1513241363991_副本1_副本_副本.png


如果你觉得文章对你有用,可以视乎你心情来打赏,以支持小站的服务器网络费用。
你的支持是我最大的动力!
 
PS:谢谢下面朋友的打赏
A Keung
阿贾克斯
白驹过隙
Che Long

[读后笔记] python网络爬虫实战 (李松涛)

书籍李魔佛 发表了文章 • 0 个评论 • 128 次浏览 • 2017-12-14 11:28 • 来自相关话题

用了大概一个早上的时间,就把这本书看完了。 
前面4章是基础的python知识,有基础的同学可以略过。
scrapy爬虫部分,用了实例给大家说明scrapy的用法,不过如果之前没用过scrapy的话,需要慢慢上机敲打代码。
其实书中的例子都是很简单的例子,基本没什么反爬的限制,书中一句话说的非常赞同,用scrapy写爬虫,就是做填空题,而用urllib2写爬虫,就是作文题,可以自由发挥。
 
书中没有用更为方便的requests库。 内容搜索用的最多的是beatifulsoup, 对于xpah或者lxml介绍的比较少。 因为scrapy自带的response就是可以直接用xpath,更为方便。
 
对于scrapy的中间和pipeline的使用了一个例子,也是比较简单的例子。
 
书中没有对验证码,分布式等流行的反爬进行讲解,应该适合爬虫入门的同学去看吧。
 
书中一点很好的就是代码都非常规范,而且即使是写作文的使用urllib2,也有意模仿scrapy的框架去写, 需要抓取的数据 独立一个类,类似于scrapy的item,数据处理用的也是叫pipleline的方法。
这样写的好处就是, 每个模块的功能都一目了然,看完第一个例子的类和函数定义,后面的例子都是大同小异,可以加快读者的阅读速度,非常赞。(这一点以后自己要学习,增加代码的可复用性)
 
 很多页面url现在已经过期了,再次运行作者的源码会返回很多404的结果。
失效的项目:
金逸影城
天气预报
获取代理:http://proxy360.com 

 
本书的一些错误的地方:
1. 获取金逸影城的spider中,所有关于movie的拼写都拼错为moive了。这个属于英语错误。
2. 在testProxy.py 代码中, 由于在同一个类中,一直在产生线程,最后导致线程过多,不能再产生线程。程序会中途退出。
File "C:\Python27\lib\threading.py", line 736, in start
_start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread
可以修改成独立函数的形式,而不是类函数。
 

待续。 查看全部
Python网络爬虫实战_thunbnail.jpg

用了大概一个早上的时间,就把这本书看完了。 
前面4章是基础的python知识,有基础的同学可以略过。
scrapy爬虫部分,用了实例给大家说明scrapy的用法,不过如果之前没用过scrapy的话,需要慢慢上机敲打代码。
其实书中的例子都是很简单的例子,基本没什么反爬的限制,书中一句话说的非常赞同,用scrapy写爬虫,就是做填空题,而用urllib2写爬虫,就是作文题,可以自由发挥。
 
书中没有用更为方便的requests库。 内容搜索用的最多的是beatifulsoup, 对于xpah或者lxml介绍的比较少。 因为scrapy自带的response就是可以直接用xpath,更为方便。
 
对于scrapy的中间和pipeline的使用了一个例子,也是比较简单的例子。
 
书中没有对验证码,分布式等流行的反爬进行讲解,应该适合爬虫入门的同学去看吧。
 
书中一点很好的就是代码都非常规范,而且即使是写作文的使用urllib2,也有意模仿scrapy的框架去写, 需要抓取的数据 独立一个类,类似于scrapy的item,数据处理用的也是叫pipleline的方法。
这样写的好处就是, 每个模块的功能都一目了然,看完第一个例子的类和函数定义,后面的例子都是大同小异,可以加快读者的阅读速度,非常赞。(这一点以后自己要学习,增加代码的可复用性)
 
 很多页面url现在已经过期了,再次运行作者的源码会返回很多404的结果。
失效的项目:
金逸影城
天气预报
获取代理:http://proxy360.com 

 
本书的一些错误的地方:
1. 获取金逸影城的spider中,所有关于movie的拼写都拼错为moive了。这个属于英语错误。
2. 在testProxy.py 代码中, 由于在同一个类中,一直在产生线程,最后导致线程过多,不能再产生线程。程序会中途退出。
  File "C:\Python27\lib\threading.py", line 736, in start
_start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread

可以修改成独立函数的形式,而不是类函数。
 

待续。

shield tablet 英伟达神盾平板变砖修复

Android李魔佛 发表了文章 • 0 个评论 • 181 次浏览 • 2017-12-12 00:24 • 来自相关话题

因为最近经常弹出一个OTA的更新包,以前一直都是对这些更新不感冒,通常都是直接忽略的。 但是看到这一个版本好像修复了不少的bugs,想着升级一次把所有的bug修复了也好。 
 
结果就坑爹了 (因为是因为系统是从安卓5.0直接OTA到7.0,系统的一些分区信息作了比较大的改动,导致启动分区数据丢失)。
重启后一直卡在启动logo,无法再进入系统。 按着音量+和电源键, 可以进入到BootLoader模式,然后选择recovery模式,等待进入recovery模式,结果看到的是一个躺着的安卓机器人。 Org!
 
然后准备尝试用fastboot的方式重新刷入一个新的系统。
 
ROM选择英伟达官方的:https://developer.nvidia.com/gameworksdownload#?search=SHIELD%20Tablet%20WiFi%20Recovery%20OS%20Image&tx=$additional,shield
 
然后安装官方教程进行刷机。以下步骤:
1. 按着音量上键和电源键进入BootLoader,如果你的系统是第一次进入BootLoader,那么第一次需要解锁BootLoader。 
连接平板到电脑,然后安装fastboot的驱动, 下载连接 https://developer.nvidia.com/shield-open-source
运行命令 fastboot devices
如果驱动成功的话,会显示你的平板序列号。然后才能进行以下的操作。
 
fastboot oem unlock
 
解锁oem锁,需要你在平板上再次按下电源键 进行确认。 几秒钟后,平板的BootLoader就会被解锁。
 
2. 然后按照ROM的说明文件readme,进行刷机:
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot erase userdata
fastboot flash staging blob
3. 刷完后,使用fastboot reboot 进行重启设备。
 
设备重启后第一次需要大概几分钟的时间进行初始化设置。 
 
经过漫长的等待后,居然发现系统还是卡在那个nvidia的logo那里。
 
感觉自己应该是刷错ROM了,因为官方那里有WIFI版,有LTE版,有美版和欧版,而且也分Shield Tablet K1 和非K1的, 我应该用了K1的rom,所以失败了。因为我的机子应该是非K1的,虽然二者硬件没什么大的区别。
 
然后重新按照上面的步骤,重新刷入非K1的ROM。 重启后,发现问题依然没有解决。
 
没办法,只能上国外的论坛去找办法。
 
尝试刷入第三方的recovery,用recovery来恢复系统。
 
首先,下载一个第三方的recovery,TWRP image。 具体链接百度一下就可以了。
 
下载后刷入到平板 : fastboot flash recovery xxxxx.img 
xxxx.img就是下载的recovery文件名。
 
刷好后再次进入BootLoader,选择recovery mode,可以看到很多的选项,这个时候看到了希望了。
 
不过进入到TWRP recovery后,也无法看到系统的内置存储。不过里面有一个adb sideload的功能。
这个时候连上USB线,在电脑端输入 adb sideload xxxx.zip, zip为你的OTA的单独文件包,这里你可以去下载一个第三方的ROM文件,不过我试过之后,发现居然可以开机了,但是开完机会有一个加密的密码,随便输入一个密码,居然能够进去,然后需要重启进行恢复出厂设置。 等待重启完成之后,却又见到这个加密的选项。看来没有进行出厂设置成功。 
 
重试几次,发现问题依然存在。
 
那么只能重新尝试刷入官方的rom,但是不刷官方的recovery rom。
 

fastboot flash boot boot.img
fastboot flash system system.img
fastboot erase userdata
然后重启,发现能够开机并且初始化,也没有那个加密的菜单了。
问题得到解决。 查看全部
因为最近经常弹出一个OTA的更新包,以前一直都是对这些更新不感冒,通常都是直接忽略的。 但是看到这一个版本好像修复了不少的bugs,想着升级一次把所有的bug修复了也好。 
 
结果就坑爹了 (因为是因为系统是从安卓5.0直接OTA到7.0,系统的一些分区信息作了比较大的改动,导致启动分区数据丢失)。
重启后一直卡在启动logo,无法再进入系统。 按着音量+和电源键, 可以进入到BootLoader模式,然后选择recovery模式,等待进入recovery模式,结果看到的是一个躺着的安卓机器人。 Org!
 
然后准备尝试用fastboot的方式重新刷入一个新的系统。
 
ROM选择英伟达官方的:https://developer.nvidia.com/gameworksdownload#?search=SHIELD%20Tablet%20WiFi%20Recovery%20OS%20Image&tx=$additional,shield
 
然后安装官方教程进行刷机。以下步骤:
1. 按着音量上键和电源键进入BootLoader,如果你的系统是第一次进入BootLoader,那么第一次需要解锁BootLoader。 
连接平板到电脑,然后安装fastboot的驱动, 下载连接 https://developer.nvidia.com/shield-open-source
运行命令 fastboot devices
如果驱动成功的话,会显示你的平板序列号。然后才能进行以下的操作。
 
fastboot oem unlock
 
解锁oem锁,需要你在平板上再次按下电源键 进行确认。 几秒钟后,平板的BootLoader就会被解锁。
 
2. 然后按照ROM的说明文件readme,进行刷机:
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot erase userdata
fastboot flash staging blob

3. 刷完后,使用fastboot reboot 进行重启设备。
 
设备重启后第一次需要大概几分钟的时间进行初始化设置。 
 
经过漫长的等待后,居然发现系统还是卡在那个nvidia的logo那里。
 
感觉自己应该是刷错ROM了,因为官方那里有WIFI版,有LTE版,有美版和欧版,而且也分Shield Tablet K1 和非K1的, 我应该用了K1的rom,所以失败了。因为我的机子应该是非K1的,虽然二者硬件没什么大的区别。
 
然后重新按照上面的步骤,重新刷入非K1的ROM。 重启后,发现问题依然没有解决。
 
没办法,只能上国外的论坛去找办法。
 
尝试刷入第三方的recovery,用recovery来恢复系统。
 
首先,下载一个第三方的recovery,TWRP image。 具体链接百度一下就可以了。
 
下载后刷入到平板 : fastboot flash recovery xxxxx.img 
xxxx.img就是下载的recovery文件名。
 
刷好后再次进入BootLoader,选择recovery mode,可以看到很多的选项,这个时候看到了希望了。
 
不过进入到TWRP recovery后,也无法看到系统的内置存储。不过里面有一个adb sideload的功能。
这个时候连上USB线,在电脑端输入 adb sideload xxxx.zip, zip为你的OTA的单独文件包,这里你可以去下载一个第三方的ROM文件,不过我试过之后,发现居然可以开机了,但是开完机会有一个加密的密码,随便输入一个密码,居然能够进去,然后需要重启进行恢复出厂设置。 等待重启完成之后,却又见到这个加密的选项。看来没有进行出厂设置成功。 
 
重试几次,发现问题依然存在。
 
那么只能重新尝试刷入官方的rom,但是不刷官方的recovery rom。
 

fastboot flash boot boot.img
fastboot flash system system.img
fastboot erase userdata

然后重启,发现能够开机并且初始化,也没有那个加密的菜单了。
问题得到解决。

菜鸟侦探挑战数据分析R源代码

量化交易李魔佛 发表了文章 • 0 个评论 • 78 次浏览 • 2017-12-11 17:45 • 来自相关话题

菜鸟侦探挑战数据分析R源代码:
百度网盘下载链接:
https://pan.baidu.com/s/1miiScDM
 
菜鸟侦探挑战数据分析R源代码:
百度网盘下载链接:
https://pan.baidu.com/s/1miiScDM