狼爱上狸

我胡汉三又回来了

2019年12月21日 #

centos8 安装 docker

https://www.cnblogs.com/zbseoag/p/11736006.html

posted @ 2020-05-06 12:57 狼爱上狸 阅读(392) | 评论 (3)编辑 收藏

firefox 翻译插件

作者:AsReader
链接:https://www.zhihu.com/question/64845885/answer/1122345134
来源:知乎

posted @ 2020-04-18 09:45 狼爱上狸 阅读(283) | 评论 (0)编辑 收藏

鼠标在Solaris 11虚拟机上不起作用

https://kb.vmware.com/s/article/2040498

posted @ 2020-03-22 08:22 狼爱上狸 阅读(283) | 评论 (0)编辑 收藏

solaris11.4

https://www.oracle.com/solaris/solaris11/downloads/solaris11-vm-templates-downloads.html

posted @ 2020-03-21 21:43 狼爱上狸 阅读(237) | 评论 (0)编辑 收藏

solaris11.3下载

http://download.oracle.com/otn/solaris/11_3/sol-11_3-vbox.ova

posted @ 2020-03-20 21:52 狼爱上狸 阅读(550) | 评论 (0)编辑 收藏

linux(centos7)安装jdk8--附带oracle账号

https://www.cnblogs.com/chaos-li/p/11970713.html

posted @ 2020-03-20 18:53 狼爱上狸 阅读(184) | 评论 (0)编辑 收藏

Flutter 常用框架

https://www.jianshu.com/p/7403371162c1

posted @ 2020-03-19 17:10 狼爱上狸 阅读(162) | 评论 (0)编辑 收藏

IPFS参考网关

https://ipfs.github.io/public-gateway-checker/

posted @ 2020-03-14 11:01 狼爱上狸 阅读(473) | 评论 (0)编辑 收藏

安装配置Shibboleth

0.前言

本文介绍了如何搭建Shibboleth,实现Shibboleth+Ldap的SSO解决方案

1.什么是Shibboleth

Shibboleth是一个基于标准的,实现组织内部或跨组织的网页单点登录的开源软件包。它允许站点为处于私有保护方式下的受保护的在线资源做出被通知的认证决定。

Shibboleth软件工具广泛使用联合的身份标准,主要是OASIS安全声称标记语言(SAML),来提供一个联合单点登录和属性交换框架。一个用户用他的组织的证书认证,组织(或IdP)传送最少的必要的身份信息给SP实现认证决定。Shibboleth也提供扩展的隐私功能,允许一个用户和他们的主站点来控制释放给每一个应用的属性。

Shibboleth项目作为一个Internet2中间件活动启动于2000年,这年晚些时候该项目和OASIS SAML工作组的工作相联系。Shibboleth1.0 于2003年发布,并快速被全世界的研究和教育机构使用。随着2005年SAML2.0的发布,2006年Shibboleth2.0也发布,SAML标准升级到包含所有的多边,由Shibboleth首创的元数据驱动方法。

Shibboleth作为开源软件开发,在Apache 软件许可证下发布。关于个别部件的更多信息可以在产品页面看到。

2.安装Shibboleth Identity Provider v3.2.1

  1. 切换成root
sudo su 

2.下载Shibboleth Identity Provider v3.2.1

wget http://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-3.2.1.tar.gz tar -xzvf shibboleth-identity-provider-3.2.1.tar.gz cd shibboleth-identity-provider-3.2.1

3.安装Shibboleth Idenentity Provider:

sh-3.2# ./install.sh  Source (Distribution) Directory (press <enter> to accept default): [/Users/zhaoyu.zhaoyu/Applications/shibboleth-identity-provider-3.3.2]  Installation Directory: [/opt/shibboleth-idp]  Hostname: [localhost.localdomain] testdomain.com SAML EntityID: [https://testdomain.com/idp/shibboleth]  Attribute Scope: [localdomain]  Backchannel PKCS12 Password:  Re-enter password:  Cookie Encryption Key Password:  Re-enter password:  Warning: /opt/shibboleth-idp/bin does not exist. Warning: /opt/shibboleth-idp/dist does not exist. Warning: /opt/shibboleth-idp/doc does not exist. Warning: /opt/shibboleth-idp/system does not exist. Warning: /opt/shibboleth-idp/webapp does not exist. Generating Signing Key, CN = testdomain.com URI = https://testdomain.com/idp/shibboleth ... ...done Creating Encryption Key, CN = testdomain.com URI = https://testdomain.com/idp/shibboleth ... ...done Creating Backchannel keystore, CN = testdomain.com URI = https://testdomain.com/idp/shibboleth ... ...done Creating cookie encryption key files... ...done Rebuilding /opt/shibboleth-idp/war/idp.war ... ...done  BUILD SUCCESSFUL Total time: 1 minute 14 seconds 

(from now "{idp.home}" == /opt/shibboleth-idp/)
4.导入 JST library (status界面会用到):

cd /opt/shibboleth-idp/edit-webapp/WEB-INF/lib wget https://build.shibboleth.net/nexus/service/local/repositories/thirdparty/content/javax/servlet/jstl/1.2/jstl-1.2.jar cd /opt/shibboleth-idp/bin ./build.sh -Didp.target.dir=/opt/shibboleth-idp

3.安装指引

3.1 安装apache tomcat 8

1.切换成root

sudo su -

2.修改tomcat的%{CATALINA_HOME}/conf/server.xml
将8080端口和8443端口的地方分别改成80和443

 <Connector port="80" protocol="HTTP/1.1"                                                                                                    connectionTimeout="20000"                redirectPort="443" />

3.生成证书文件

[chengxu@local]keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "./tomcat.keystore" 输入密钥库口令:   再次输入新口令:  您的名字与姓氏是什么? [Unknown]:  cheng 您的组织单位名称是什么? [Unknown]:  testdomain.com 您的组织名称是什么? [Unknown]:  testdomain.com 您所在的城市或区域名称是什么? [Unknown]:   您所在的省/市/自治区名称是什么? [Unknown]:   该单位的双字母国家/地区代码是什么? [Unknown]:   CN=cheng, OU=testdomain.com, O=testdomain.com, L=Unknown, ST=Unknown, C=Unknown是否正确? []:    输入 <tomcat> 的密钥口令   (如果和密钥库口令相同, 按回车):   再次输入新口令:  [chengxu@local]

4.修改tomcat的%{CATALINA_HOME}/conf/server.xml,使支持https协议

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"                 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"                 clientAuth="false" sslProtocol="TLS"                  keystoreFile="/Users/chengxu/Shibboleth/tomcat/tomcat.keystore"                    keystorePass="xxx"/> 

5.发布Idp Web Application到Tomcat 8 container

vim %{CATALINA_HOME}/conf/Catalina/localhost/idp.xml
<Context docBase="/opt/shibboleth-idp/war/idp.war"          privileged="true"          antiResourceLocking="false"          swallowOutput="true"/>

4.配置host

vim /etc/host 127.0.0.1 testdomain.com

5.重启tomcat
%{CATALINA_HOME}/bin/catalina.sh stop
%{CATALINA_HOME}/bin/catalina.sh start
6.检测是否服务启动正常
访问https://testdomain/idp/status
或者/opt/shibboleth-idp/bin; ./status.sh

3.2 配置shibboleth连接ldap

编辑修改ldap.properties

vim /opt/shibboleth/conf/ldap.properties  idp.authn.LDAP.authenticator = bindSearchAuthenticator idp.authn.LDAP.ldapURL = ldap://ldap.example.it:389 idp.authn.LDAP.useStartTLS = false idp.authn.LDAP.useSSL = false idp.authn.LDAP.baseDN = cn=Users,dc=example,dc=org idp.authn.LDAP.userFilter = (uid={user}) idp.authn.LDAP.bindDN = cn=admin,cn=Users,dc=example,dc=org idp.authn.LDAP.bindDNCredential = ###LDAP ADMIN PASSWORD###

6.修改shibboleth ldap配置

vim /opt/shibboleth/conf/services.xml  把 <value>%{idp.home}/conf/attribute-resolver.xml</value> 改为 <value>%{idp.home}/conf/attribute-resolver-full.xml</value>
vim /opt/shibboleth-idp/conf/attribute-resolver-full.xml  注释掉下列代码,如果已经注释掉了就不动了(有些版本已经注释了)  <!-- <dc:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked">   <sec:Certificate>%     {idp.attribute.resolver.LDAP.trustCertificates}</sec:Certificate>   </dc:StartTLSTrustCredential> -->

重启tomcat

7.获取idp metadata.xml
https://testdomain.com/idp/shibboleth
注意metadata.xml文件中的validUntil属性,如果过期了则修改为未来的某个时间点

4.小结

至此我们完成了Shibboleth与LDAP集成的安装过程

下篇: 实现Shibboleth+Ldap到阿里云的单点登录

来自https://yq.aliyun.com/articles/350531?tdsourcetag=s_pcqq_aiomsg&do=login&accounttraceid=87b0f203-5d81-4cb7-a986-49615e3962e2&do=login&do=login

posted @ 2020-03-09 18:20 狼爱上狸 阅读(910) | 评论 (0)编辑 收藏

Shibboleth IDP 的安装和部署配置步骤

https://blog.csdn.net/wwwcomy/article/details/49098961

https://www.iteye.com/blog/lhy5201314-1171267

posted @ 2020-03-08 23:21 狼爱上狸| 编辑 收藏

Android Studio 以逍遥模拟器为模拟器

在C盘根目录下建立以下批处理文件:

c:
cd C:\Program Files\Microvirt\MEmu
adb start-server
c:
cd C:\Android\Sdk\platform-tools
adb  connect 127.0.0.1:21503
cd\

在命令提示符(管理员)下运行它就OK了。

posted @ 2020-03-07 19:08 狼爱上狸 阅读(310) | 评论 (0)编辑 收藏

Android SDK搬家

flutter config --android-sdk 自己的android sdk路径Android SDK默认的安装地址为:
C:\Users\Administrator\AppData\Local\Android\SDK
现需要把它搬到 C:\Android\Sdk
操作如下:
1.把C:\Users\Administrator\AppData\Local\Android\SDK剪切复制到C:\Android\Sdk;
2.在FLutter sdk 目录下运行如下命令:
flutter config --android-sdk C:\Android\Sdk
3.在环境变量中把ANDROID_HOME改为C:\Android\Sdk;
重启,这样就OK了。

posted @ 2020-03-07 18:59 狼爱上狸 阅读(205) | 评论 (0)编辑 收藏

Android-X86网络设置

https://blog.csdn.net/weixin_30598225/article/details/98351753?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

posted @ 2020-03-03 18:43 狼爱上狸 阅读(767) | 评论 (0)编辑 收藏

VM安装Android

https://baijiahao.baidu.com/s?id=1630789160989369444&wfr=spider&for=pc

安装后还是无法联网的,需要以下步骤才能联网:
设置--》网络和互联网--》私人DNS -->把自动改为关闭
就能上网了。

posted @ 2020-03-03 16:20 狼爱上狸 阅读(122) | 评论 (0)编辑 收藏

【linux】CentOS 查看系统时间,修改时区

【linux】CentOS 查看系统时间,修改时区

 

 

===============CentOS 7.6================

1.查看系统时间

date

 

查看当前系统时间以及时区
结果是:

Mon Jul 8 09:23:31 UTC 2019

 

 

2.更改系统时间时区

timedatectl set-timezone Asia/Shanghai

 

3.再次查看

date

结果是:

Mon Jul  8 17:25:28 CST 2019

 

 

4.可以重启后查看,防止重启后失效

reboot

 

 

=======================

posted @ 2020-03-02 21:11 狼爱上狸 阅读(213) | 评论 (0)编辑 收藏

MacOS设置自动登录

https://jingyan.baidu.com/article/59a015e375e45af794886582.html

posted @ 2020-03-02 19:47 狼爱上狸 阅读(118) | 评论 (0)编辑 收藏

VM安装CentOS8


https://blog.csdn.net/BryantJamesHua/article/details/101480034
https://www.cnblogs.com/fanzhenyong/p/11616192.html

posted @ 2020-03-02 18:34 狼爱上狸 阅读(98) | 评论 (0)编辑 收藏

VM安装macOS10.15 VMware TOOLS

https://blog.csdn.net/qq_41855420/article/details/102756313

注意要先把虚拟机的安装光盘退出。

posted @ 2020-03-01 20:45 狼爱上狸 阅读(3076) | 评论 (0)编辑 收藏

VM安装macOS10.15


https://blog.csdn.net/qq_41855420/article/details/102750895?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

在这个地方,要把服务里的那几个VM启动,否则DHCP无法安装。
⑧、设置黑苹果Catalina 10.15系统

posted @ 2020-03-01 20:43 狼爱上狸 阅读(168) | 评论 (0)编辑 收藏

Flutter打包Apk

https://www.jianshu.com/p/d58dab805ca6

keytool -genkey -v -keystore ./key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
apk 输出在:
C:\Users\Administrator\AndroidStudioProjects\flutter_app\build\app\outputs\apk\release
key.properties
storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=
C:/Users/Administrator/AndroidStudioProjects/flutter_app/key.jks

b
uild.gradle

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"


def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
compileSdkVersion 28

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

lintOptions {
disable 'InvalidPackage'
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.flutter_app"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}

buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
//signingConfig signingConfigs.debug
signingConfig signingConfigs.release
}
}
}

flutter {
source '../..'
}

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

posted @ 2020-02-29 11:48 狼爱上狸 阅读(335) | 评论 (0)编辑 收藏

Flutter实现Web环境配置

参见:
https://www.jianshu.com/p/2893f2b52eee

https://www.cnblogs.com/duanzb/p/11188979.html

即是
在PATH中增加2个:
C:\Flutter\flutter1.12.13\.pub-cache\bin

C:\Flutter\flutter1.12.13\bin\cache\dart-sdk\bin

posted @ 2020-02-25 18:18 狼爱上狸 阅读(142) | 评论 (0)编辑 收藏

flutter显示Error: No pubspec.yaml file found.

打开项目总文件夹运行,不要打开上一级目录运行
F:\fluterapp\hellow_horld(项目名)这里打开
F:\fluterapp 不要在这里打开


https://blog.csdn.net/qq_31659129/article/details/97244526

posted @ 2020-02-25 12:47 狼爱上狸 阅读(933) | 评论 (0)编辑 收藏

Flutter编译报错:The method 'CachedNetworkImageProvider.load' has fewer positional

将cached_network_image的版本号升级到2.0.0-rc


https://blog.csdn.net/yinxing2008/article/details/103374996

posted @ 2020-02-25 12:46 狼爱上狸 阅读(394) | 评论 (0)编辑 收藏

Flutter项目实战之Flutter_Gank

https://www.jianshu.com/p/1031f30dbb2e

posted @ 2020-02-25 11:40 狼爱上狸 阅读(129) | 评论 (0)编辑 收藏

安装node-canvas时win_delay_load_hook.c错误

解决办法: 修改以下文件 C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.c 增加以下代码,到第一个#include前 #ifndef DELAYIMP_INSECURE_WRITABLE_HOOKS#define DELAYIMP_INSECURE_WRITABLE_HOOKS#endif 参考: https://github.com/nodejs/node-gyp/issues/949 https://github.com/Automattic/node-canvas/issues/619 ———————————————— 版权声明:本文为CSDN博主「Amatig」的原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cooltigerkin/article/details/51807588

posted @ 2020-02-22 16:33 狼爱上狸 阅读(323) | 评论 (0)编辑 收藏

VS2015与Win10SDK的问题

VS2015最高支持14393版本的SDK,之后的从15063起就必须要VS2017,很多人出现VS找不到rc.ex和cl.exe的问题,就是没有安装SDK或安装了VS不支持的SDK版本;这个问题有人在知乎上提问过“如何将独立安装的win10SDK与vs2015建立联系?“ VS2015不完全支持Win10的某些项目编译,比如应用商店应用、1703、1709的驱动程序,但是VS2017太难用了,所以我还是坚持用2015 解决办法: 卸载新版本WinSDK,安装14393版本的SDK 或 卸载VS2015安装VS2017 ———————————————— 版权声明:本文为CSDN博主「楼顶上的猫」的原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_30113467/article/details/100013766

posted @ 2020-02-22 14:46 狼爱上狸 阅读(250) | 评论 (0)编辑 收藏

Win10、Ubuntu双系统正确卸载Ubuntu

Win10、Ubuntu双系统正确卸载Ubuntu

  此前我的Ubuntu不是wubi方式安装的,因为听说此方式安装有多种缺陷,于是我选择U盘安装。这时想要卸载Ubuntu了,想到卸载这个也会有些小阻碍,就写下这篇博文表示记录一下Ubuntu的正确卸载方法。

  在每次开机时都会有GURB菜单,这表示写入到安装Ubuntu的时候把GURB写入到了MBR,所以卸载Ubuntu前首先需要将MBR重写,去掉Ubuntu的GURB。如果朋友们不进行这一步把Ubuntu强行干掉,会让windows也直接GG。

  重写MBR有两种方法:

    一、放入Windows的安装盘,进入Windows安装程序,进入恢复控制台,输入命令fixmbr。
      二、使用MbrFix工具进行修复。

  我选择的是MbrFix,下载地址:http://www.cnitblog.com/Files/CoffeeCat/MbrFix.rar

  下载完成后运行命令行,然后进入存放MbrFix.exe的目录下,输入指令MbrFix /drive 0 fixmbr /yes,重启就可以直接进入windows了。

  ps:输入命令行提示"function failed.error 5:拒绝访问"如何解决?

    找到MbrFix.exe,右击属性,进入兼容性选项卡,勾选"以管理员身份运行此程序",确定退出,然后重新输入指令即可解决。

  

  搞定第一步之后,右键我的电脑进入管理,磁盘管理,如果是自己安装的Ubuntu,应该知道在安装的时候分配了几个分区在此系统上,如果只是双系统,除了Windows下有标注卷名的其余应该都是Ubuntu的分区。右键Ubuntu分区,删除卷,标注蓝条会变成绿条,把几个分区全部删除完成,右键新加卷一步一步完成恢复成为Windows的逻辑分区了。

来自:https://www.cnblogs.com/-Yvan/p/4975326.html

posted @ 2020-02-20 18:18 狼爱上狸 阅读(1414) | 评论 (0)编辑 收藏

Flutter配置gradle

maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }


https://blog.csdn.net/qq_43225978/article/details/94008529

posted @ 2020-02-19 09:46 狼爱上狸 阅读(186) | 评论 (0)编辑 收藏

Flutter打包apk

https://www.jianshu.com/p/fabcfd621e01

posted @ 2020-02-12 09:37 狼爱上狸 阅读(165) | 评论 (0)编辑 收藏

flutter 卡在Running Gradle task 'assembleDebug'...

https://www.cnblogs.com/wupeng88/p/11455874.html

posted @ 2020-02-11 16:37 狼爱上狸 阅读(1394) | 评论 (0)编辑 收藏

IPFS问题

1.把  "Gateway": "/ip4/127.0.0.1/tcp/8080"修改为:"Gateway": "/ip4/0.0.0.0/tcp/8080",这样本机就可以用192.168WEB访问了。
2.把WINDOWS防火墙入站的8080端口打开,这样在局域网就能访问了。

posted @ 2020-01-16 14:44 狼爱上狸 阅读(115) | 评论 (0)编辑 收藏

【我的区块链之路】- 谈一谈IPFS原理及玩法

https://blog.csdn.net/qq_25870633/article/details/82027510

posted @ 2020-01-12 16:17 狼爱上狸 阅读(164) | 评论 (0)编辑 收藏

入门 Webpack,看这篇就够了

https://segmentfault.com/a/1190000006178770#articleHeader3

posted @ 2020-01-04 17:22 狼爱上狸 阅读(133) | 评论 (0)编辑 收藏

文档计划 | IPFS API参考文档

https://www.jianshu.com/p/e38d5f733c81

posted @ 2020-01-03 19:03 狼爱上狸 阅读(204) | 评论 (0)编辑 收藏

IPFS环境搭建和用ipfs-api访问ipfs网络

https://blog.csdn.net/mongo_node/article/details/80143631

posted @ 2020-01-03 17:55 狼爱上狸 阅读(333) | 评论 (0)编辑 收藏

MySQL-Front连接MYSQL错误永久方案

在之前的博客中提到解决此问题的方法是进入mysql的命令窗口,执行set global show_compatibility_56=on;

但是该方法只能生效一次,当电脑重启或者mysql服务重启的时候,就得重新再设置一次,下面提供一个永久生效的方法,即不通过上述方法,而是修改mysql的配置文件,找到my.ini的配置文件,在文件的最后添加:show_compatibility_56 = 1 即可。

本人的my.ini的文件路径是:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
————————————————
版权声明:本文为CSDN博主「让爱远行2015」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011065164/article/details/53393348

posted @ 2020-01-01 13:52 狼爱上狸 阅读(172) | 评论 (0)编辑 收藏

安装solc指定版本

cnpm install -g solc@0.4.22

posted @ 2020-01-01 12:28 狼爱上狸 阅读(1602) | 评论 (0)编辑 收藏

Node.js安装及环境配置之Windows篇

https://www.jianshu.com/p/03a76b2e7e00

posted @ 2020-01-01 12:13 狼爱上狸 阅读(164) | 评论 (0)编辑 收藏

crx文件怎么安装?谷歌浏览器Chrome打开crx文件的方法

https://www.jb51.net/softjc/402153.html

posted @ 2019-12-29 22:57 狼爱上狸 阅读(188) | 评论 (0)编辑 收藏

go调用以太坊rpc写入合约操作中的DATA数据解析(纯字符串参数)

https://blog.csdn.net/weixin_42608885/article/details/100889008

posted @ 2019-12-27 14:49 狼爱上狸 阅读(267) | 评论 (0)编辑 收藏

一步步构建自己的智能合约

https://segmentfault.com/a/1190000014797663

posted @ 2019-12-26 16:09 狼爱上狸 阅读(144) | 评论 (0)编辑 收藏

如何审计一个智能合约

https://cloud.tencent.com/developer/article/1522230

posted @ 2019-12-26 15:37 狼爱上狸 阅读(108) | 评论 (0)编辑 收藏

如何调用以太坊智能合约

https://www.cnblogs.com/KRDecad3/p/11745568.html

posted @ 2019-12-26 15:31 狼爱上狸 阅读(224) | 评论 (0)编辑 收藏

私钥生成钱包助记词的流程

https://www.cnblogs.com/hankal/p/9472920.html

posted @ 2019-12-24 10:02 狼爱上狸 阅读(630) | 评论 (0)编辑 收藏

BIP39钱包助记词规范

https://www.jianshu.com/p/d5bac6d36dc6

posted @ 2019-12-24 10:01 狼爱上狸 阅读(503) | 评论 (0)编辑 收藏

remix

https://remix.ethereum.org/
http://remix.hubwiz.com/
https://ethereum.github.io/

posted @ 2019-12-22 00:27 狼爱上狸 阅读(92) | 评论 (0)编辑 收藏

Web3与智能合约交互实战

最新内容会更新在主站深入浅出区块链社区
原文链接:Web3与智能合约交互实战

写在前面

在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽然让很多程序员感到兴奋(黑客帝国的既视感?),但不可能指望普通用户通过命令行使用Dapp。因此,我们需要一种友好的方式(比如一个web页面)来与智能合约交互,于是问题的答案就是web3.js

Web3.js

Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互。实际上就是一个库的集合,主要包括下面几个库:

  • web3-eth用来与以太坊区块链和智能合约交互
  • web3-shh用来控制whisper协议与p2p通信以及广播
  • web3-bzz用来与swarm协议交互
  • web3-utils包含了一些Dapp开发有用的功能

Web3与geth通信使用的是 JSON-RPC ,这是一种轻量级的RPC(Remote Procedure Call)协议,整个通信的模型可以抽象为下图。

Web3 Communication Model

搭建测试链

在开发初期,我们并没有必要使用真实的公链,为了开发效率,一般选择在本地搭建测试链。在本文我们选择的Ganache(在此之前使用的是testrpc,Ganache属于它的升级版),一个图形化测试软件(也有命令行版本),可以一键在本地搭建以太坊区块链测试环境,并且将区块链的状态通过图形界面显示出来,Ganache的运行界面如下图所示。

Ganache

从图中可以看到Ganache会默认创建10个账户,监听地址是http://127.0.0.1:7545,可以实时看到Current BlockGas PriceGas Limit等信息。

创建智能合约

目前以太坊官方全力支持的智能合约开发环境是Remix IDE,我们在合约编辑页面编写如下代码:

pragma solidity ^0.4.21;  contract InfoContract {         string fName;    uint age;        function setInfo(string _fName, uint _age) public {        fName = _fName;        age = _age;    }        function getInfo() public constant returns (string, uint) {        return (fName, age);    }    }

代码很简单,就是简单的给nameage变量赋值与读取,接下来切换到 run 的 tab 下,将Environment切换成Web3 Provider,并输入我们的测试链的地址http://127.0.0.1:7545,这里对这三个选项做一简单说明:

  • Javascript VM:简单的Javascript虚拟机环境,纯粹练习智能合约编写的时候可以选择
  • Injected Web3:连接到嵌入到页面的Web3,比如连接到MetaMask
  • Web3 Provider:连接到自定义的节点,如私有的测试网络。

如果连接成功,那么在下面的Account的选项会默认选择 Ganache 创建的第一个账户地址。接下来我们点击Create就会将我们的智能合约部署到我们的测试网中。接下来 Remix 的页面不要关闭,在后面编写前端代码时还要用到合约的地址以及ABI信息。

安装Web3

在这之前,先在终端创建我们的项目:

> mkdir info > cd info

接下来使用 node.js 的包管理工具 npm 初始化项目,创建package.json 文件,其中保存了项目需要的相关依赖环境。

> npm init

一路按回车直到项目创建完成。最后,运行下面命令安装web.js:

> npm install web3

注意: 在实际安装过程中我发现web3在安装完成后并没有 /node_modules/web3/dist/we3.min.js 文件,这个问题在 issue#1041中有体现,但官方好像一直没解决。不过可以在这里下载所需的文件,解压后将dist文件夹的内容拷贝到 /node_modules/web3路径下。

创建 UI

在项目目录下创建index.html,在这里我们将创建基础的 UI,功能包括nameage的输入框,以及一个按钮,这些将通过 jQuery 实现:

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>      <link rel="stylesheet" type="text/css" href="main.css">      <script src="./node_modules/web3/dist/web3.min.js"></script>  </head> <body>     <div class="container">          <h1>Info Contract</h1>          <h2 id="info"></h2>          <label for="name" class="col-lg-2 control-label">Name</label>         <input id="name" type="text">          <label for="name" class="col-lg-2 control-label">Age</label>         <input id="age" type="text">          <button id="button">Update Info</button>       </div>      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>      <script>        // Our future code here..     </script>  </body> </html>

接下来需要编写main.css文件设定基本的样式:

body {     background-color:#F0F0F0;     padding: 2em;     font-family: 'Raleway','Source Sans Pro', 'Arial'; } .container {     width: 50%;     margin: 0 auto; } label {     display:block;     margin-bottom:10px; } input {     padding:10px;     width: 50%;     margin-bottom: 1em; } button {     margin: 2em 0;     padding: 1em 4em;     display:block; }  #info {     padding:1em;     background-color:#fff;     margin: 1em 0; }

使用Web3与智能合约交互

UI 创建好之后,在<script>标签中间编写web.js的代码与智能合约交互。首先创建web3实例,并与我们的测试环境连接:

<script>     if (typeof web3 !== 'undefined') {         web3 = new Web3(web3.currentProvider);     } else {         // set the provider you want from Web3.providers         web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:7545"));     } </script>

这段代码是web3.js Github提供的样例,意思是如果web3已经被定义,那么就可以直接当作我们的 provider 使用。如果没有定义,则我们手动指定 provider。

这里可能会存在疑问:为什么 web3 会被事先定义呢?实际上,如果你使用类似 MetaMask(一个 Chrome 上的插件,迷你型以太坊钱包)这样的软件,provider 就会被自动植入。

在上面代码的基础上,接下来设置默认的以太坊账户:

web3.eth.defaultAccount = web3.eth.accounts[0];

在上文中我们使用 Ganache 已经创建了 10 个账户了,这里我们选择第一个账户当作默认账户。

接下来需要让我们的web3知道我们的合约是什么样的,这里需要用到合约的 ABI(Application Binary Interface)ABI可以使我们调用合约的函数,并且从合约中获取数据。

在上文中我们已经在 Remix 中创建了我们的合约,这时重新回到 Remix,在 Compile 的 tab 下我们点击Details 出现的页面中我们可以拷贝合约的ABI,如下图所示。

将其复制到代码中:

var infoContract = web3.eth.contract(PASTE ABI HERE!);

接下来转到 run 的tab,拷贝合约的地址,将其复制到下面的代码中:

var info = InfoContract.at('PASTE CONTRACT ADDRESS HERE');

完成这些我们就可以调用合约中的函数了,下面我们使用 jQuery 与我们的合约进行交互:

info.getInfo(function(error, result){     if(!error)         {             $("#info").html(result[0]+' ('+result[1]+' years old)');             console.log(result);         }     else         console.error(error); });  $("#button").click(function() {     info.setInfo($("#name").val(), $("#age").val()); });

以上的代码就简单地实现了对合约中两个函数的调用,分别读取和显示nameage变量。

到此我们就完成了全部的代码,完整代码可以在 InfoContract 中找到。在浏览器中打开index.html测试效果如下图(输入名字和年龄后刷新)。

本文的作者是盖盖,他的微信公众号: chainlab

参考文献

☛ 深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。

posted @ 2019-12-21 14:46 狼爱上狸 阅读(182) | 评论 (0)编辑 收藏

GitHub项目、代码搜索、使用等技巧

https://blog.csdn.net/xiaomu_347/article/details/80729892

posted @ 2019-12-21 10:14 狼爱上狸 阅读(124) | 评论 (0)编辑 收藏