2021.1.17

个人持仓总结:

山东药玻

1:好企业 药瓶子龙头

2:价格适中
向下空间幅度较小,向上概率较大。 震荡盘整3月,调整幅度40% ,周线目前在接近年线位置,均线走平。价格

3:预估有新冠疫苗 瓶子供应业务,目前疫苗已经全面铺开,瓶子需求作为增量会提升业绩。疫苗受益股

策略:8%止损

uni-app中配置devServer实现跨域访问数据

1.在devServer中:

在manifest.json->源码视图中添加

注意:以下代码可以跨域,但是请求出来的数据不是想要的,会出现请求得到的不是数据,而是得到https://api.ithome.com网址的报错网页代码

“h5”: {  
        “devServer”: {  
            “port”: 8000,  
            “disableHostCheck”: true,  
            “proxy”: {  
                “/api”: {  
                    “target”: “https://api.ithome.com”,  
                    “changeOrigin”: true,  
                    “ws”: true,  
                    “secure”: false,
                }  
            }  
        }  
    },

用以下代码可以正确的请求到数据:

“h5”: {
        “devServer”: {  
            “port”: 8000,  
            “disableHostCheck”: true,  
            “proxy”: {  
                “/api”: {  
                    “target”: “https://api.ithome.com”,  //请求的目标域名
                    “changeOrigin”: true,   
                    “secure”: false,
                    “pathRewrite”: {  
                        “^/api”: “/”  
                    } 
 
                }  
            }  
        }  
    }

2.在.vue页面中添加

                var ajaxData={
                    url: “/api“+”/api/reply”,//接口地址即要跨域访问的目标地址
                    method: “get”,//请求的方法
                    data:{postid:236076,replyidlessthan:3241294},//请求所带的参数,即地址中?后部分
                    dataType:’json’,//数据类型
                    header:{
                      ’content-type’:’application/x-www-form-urlencoded’
                    },
                    success:function(res){
                            console.log(res.data)//成功后调用的函数
                        }
                  }
                  ajaxData = ajaxData;
                  uni.request(ajaxData)

完整的请求地址如下:

https://blog.csdn.net/qq_35500778/article/details/100161813

uni-app 配置不同的编译环境(本地、测试、生产)

最近开发项目发现uni-app不能像vue.config.js那样配置环境。自动识别的室友两种环境。
·在HBuilderX 中,点击“运行”编译出来的代码是开发环境,点击“发行”编译出来的代码是生产环境
·cli模式下,是通行的编译环境处理方式。
根据官网提供demo,如下:

if(process.env.NODE_ENV === 'development'){
    console.log('开发环境')
}else{
    console.log('生产环境')
}

如果没有其他情况,在mian.js或者创建一个config.js然后导入main.js 这样的配置就ok啦

如果将代码打包到测试环境时会默认为pro环境。想要它访问测试环境的配置,此时就需要配置下拉 。 直接上的代码
创建config.js文件

let configURL = {}
const NODE_ENV = 'prod'; // dev:开发环境 | test:测试环境  prod:生产环境 
const DEV_URL = 'https://dev.dcloud.net.cn'; // 开发环境
const TEST_URL = 'https://dev.dcloud.net.cn'; // 开发环境
const PROD_URL = 'https://dev.dcloud.net.cn'; // 开发环境
const H5_URL = '/api'; // 开发环境
// if(process.env.NODE_ENV === 'development'){
//     console.log('开发环境')
// }else{
//     console.log('生产环境')
// }
if (NODE_ENV === 'dev') {
	console.log('开发环境')
	configURL = {
		BaseURL: DEV_URL
	}
} else if(NODE_ENV === 'test'){
	console.log('测试环境')
	configURL = {
		BaseURL: TEST_URL
	}
}else {
	console.log('生产环境')
	configURL = {
		BaseURL: PROD_URL
	}
}
// APP-PLUS	App
// APP-PLUS-NVUE或APP-NVUE	App nvue
// H5	H5
// MP-WEIXIN	微信小程序
// MP-ALIPAY	支付宝小程序
// MP-BAIDU	百度小程序
// MP-TOUTIAO	字节跳动小程序
// MP-QQ	QQ小程序
// MP-360	360小程序
// MP	微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序
// QUICKAPP-WEBVIEW	快应用通用(包含联盟、华为)
// QUICKAPP-WEBVIEW-UNION	快应用联盟
// QUICKAPP-WEBVIEW-HUAWEI	快应用华为
// #ifdef H5
	configURL = {
		BaseURL: H5_URL
	}
// #endif

export default configURL

index.vue

<script>
	import configURL from '@/config.js';
	export default {
		data() {
			return {
				news:[],
				item:{}
			}
		},
		onLoad() {
			console.log(configURL.BaseURL);
			uni.request({
				url: configURL.BaseURL + '/api/news',
				method: 'GET',
				data: {},
				success: res => {
					console.log(res);
					this.news = res.data;
				},
				fail: () => {},
				complete: () => {}
			});
		},
		methods: {
		},
	}
</script>

windows系统下如何安装多版本node

https://blog.csdn.net/jingsi1991/article/details/71514106/

对于nodejs的爱好者来说,必然希望能够在同一台机器上安装多个版本的nodejs(至少两个:稳定版和最新版)。稳定版用来在实际生产项目中使用,最新版本用来研究nodejs的新特性、踩坑。下面我将介绍一下在windows系统中如何通过nvm进行node多版本管理

一、nvm-windows的地址

nvm-windows的github地址:
https://github.com/coreybutler/nvm-windows
安装包下载地址:
https://github.com/coreybutler/nvm-windows/releases


二、安装及使用

这里写图片描述

1、安装包:v1.1.0 setup版

2、安装环境:

Win10系统,64位

3、安装:

安装nvm-windows的时候会指定安装目录和当前所使用的nodejs的目录,这两个路径中不要带有特殊的字符以及空格,否则会在nvm use xxx的时候出错,无法正确解析指定的nodejs的版本的地址

在安装的时候,自动会把nvm和nodejs的目录添加到系统环境变量中,所以安装后可以直接测试安装是否成功。

这里写图片描述
这里写图片描述
这里写图片描述

4、nvm命令:

命令后面有英文注释很简单的,就不用我来翻译了吧。
这里写图片描述

5、使用nvm命令安装nodejs

以上是我通过nvm命令安装指定版本的node的示例,小伙伴们可以多安装几个版本,然后通过实践验证下步骤四中的各个命令哦。

通过以上步骤安装的nodejs和单独安装nodejs没有太大的区别,所以小伙伴们可以和单独安装的nodejs一样放心的使用npm进行cordova、ionic、vue等等的安装哦。

解决 couldn’t find DSO to load: libhermes.so 问题

转自 https://stackoverflow.com/questions/59604146/react-native-compile-bundle-with-android-studio

  apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android {    compileSdkVersion 28    buildToolsVersion "28.0.3"    defaultConfig {        applicationId ""        minSdkVersion 21        targetSdkVersion 28        versionCode 1        versionName "1.0"        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }    }} project.ext.react = [         enableHermes: false,] def jscFlavor = 'org.webkit:android-jsc:+'def enableHermes = project.ext.react.get("enableHermes", false); dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"    implementation 'com.android.support:appcompat-v7:28.0.0'    implementation 'com.android.support.constraint:constraint-layout:1.1.3'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.2'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'    implementation "com.facebook.react:react-native:+"    implementation 'com.android.support:support-annotations:27.1.1'     if (enableHermes) {        implementation project(':hermes-engine')        debugImplementation files(hermesPath + "hermes-debug.aar")        releaseImplementation files(hermesPath + "hermes-release.aar")    } else {        implementation jscFlavor    }}

The second: You need to change the principal’s gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript {    ext.kotlin_version = '1.3.50'    repositories {        google()        jcenter()        mavenLocal()     }    dependencies {        classpath 'com.android.tools.build:gradle:3.4.2'        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }} allprojects {    repositories {        google()        jcenter()        mavenLocal()        maven {            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm            url "$rootDir/../node_modules/react-native/android"        }        maven {            // Android JSC is installed from npm            url("$rootDir/../node_modules/jsc-android/dist")        }    }} task clean(type: Delete) {    delete rootProject.buildDir}

The third: You need to add the next at setting gradle

include ':app'rootProject.name='Notes'  include ':hermes-engine'project(':hermes-engine').projectDir = new File(rootProject.projectDir, '../node_modules/hermes-engine/android/')

【RN小记】解决 couldnot find DSO to load: libhermes.so

使用RN版本号: 0.62.2 ,将项目打包release 的 apk 时 ,安装后打开App闪退,完整错误如下:

2020-06-04 17:28:25.648 1375-1391/? E/SoLoader: couldn't find DSO to load: libhermes.so

    --------- beginning of crash
2020-06-04 17:28:25.649 1375-1391/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
    Process: com.microrelay, PID: 1375
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:789)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
        at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
        at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:997)
        at java.lang.Thread.run(Thread.java:764)
【RN小记】解决 couldnot find DSO to load: libhermes.so

一番搜索找到解决方案:( 原 issues 地址:https://github.com/facebook/react-native/issues/25923 )

在 android/app/build.gradle 文件中 添加如下配置:

configurations.all {
    resolutionStrategy {
        force "com.facebook.soloader:soloader:0.8.2"
    }
}
【RN小记】解决 couldnot find DSO to load: libhermes.so

 如果以上设置完毕后,仍旧一样的错误,那么请先在android项目下,进行clean操作:

./gradlew clean

Android ADB Server启动失败

启动Android Stdio的时候报如下错误:

12345Unable to create Debug Bridge: Unable to start adb server: error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 閫氬父姣忎釜濂楁帴瀛楀湴鍧�(鍗忚/缃戠粶鍦板潃/绔彛)鍙厑璁镐娇鐢ㄤ竴娆°�� (10048)could not read ok from ADB Server* failed to start daemon *error: cannot connect to daemon'D:\adt-bundle-windows-x86_64-20140624\sdk\platform-tools\adb.exe,start-server' failed -- run manually if necessary

  然后模拟器列表为空了,找不到先前建立的模拟器了。然后百度查询了下方法,记录下。

     原因是5037端口被占用了。

     解决方法:就是找到谁占用了一个端口,然后把该程序关掉。

     1、打开cmd窗口,进入adb.exe所在的文件夹目录

      如 cd D:\adt-bundle-windows-x86_64-20140624\sdk\platform-tools

     2、netstat -aon|findstr “5037”

      TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 5456

      发现5456占用了 5037端口,继续查看5456的task,发现是360MobileLink.exe.如下所示

      tasklist|findstr “5456”

      360MobileLink.exe 5456 Console 1 23,240 K

      接下来问题就好解决了,在任务管理器kill掉360MobileLink.exe ,运行android程序,ok .

20201016

好企业,好趋势,截断亏损让利润奔跑
汉王科技:
跌破5日线减仓。14号交易量突然很大且没有封住板,应该减仓一部分的,现在有跌回来了。
对于盘面的感觉还是有点差,没有思考。交易量比平时高2倍以上,涨幅超7%没有封板,一般第二天都是低开。
龙蟒佰利:
原定策略:跌破5日线减仓 10日线清仓。

16日中午急跌清仓,下午又买回来了。
没有按照定交易策略 5日线减仓,感觉离市场太近了,
看到急跌急涨容易激情操作。

山东药玻
交易逻辑:新冠疫苗接受预约,药品玻璃包装龙头,疫苗封装包装有优势。
从高点调整时间和空间教充分。
日线多均线已走平,微翘。
持有策略: 中期趋势交易 跌破43趋势线清仓。

16日中午急跌清仓,下午又买回来了。
没有按照定交易策略 5日线减仓,感觉离市场太近了,
看到急跌急涨容易激情操作。

业绩猛增的新上市公司!——稳健医疗

“一朵棉花,改变世界”,这是最近一家新上市公司的美好愿景。那什么样的棉花有这么大能耐呢?当然这里不是单纯地指棉花,而是棉织品。
说到棉织品大家能联想到的肯定是衣服,尤其像内衣,尽量要选择布料成分100%是棉的,那穿起来就会很舒服,透气又干爽。有个品牌叫“纯棉时代”,有些朋友应该听说过,有相当一部分的80、90后父母们一定用过他们家的棉柔巾、婴儿纯棉湿巾等,这些都是非常不错的产品。
“纯棉时代”只是个品牌,她背后的公司叫做稳健医疗,看似完全不相干的行业,一个做棉织消费品的公司为什么叫“医疗”,这是因为她还有一块业务,是从事医疗敷料的。这家公司所占的两个细分赛道都非常不错,今年9月也在创业板成功上市,今天老裘就带大家了解一下。
首先,大家可能对公司还不太熟悉,我们先简单介绍下。
公司是一家以“棉”为核心的企业,总部在深圳,刚才说的“全棉时代(Purcotton)”是其中一个品牌,另一个品牌叫“稳健医疗(Winner)”。全棉时代主要覆盖个人、家庭护理、母婴护理、纺织服装等;稳健医疗同样围绕“棉”在做文章,主要从事医用敷料领域,举个最简单的例子,就是包扎用的纱布、棉签这类产品。
公司的控股股东是稳健集团,实控人是李建全,实控人家族合计持股68%,股权结构稳定。公司给自己的定位如下图。

注:图片来自招股说明书
1995年,公司早期以OEM代工起步,随后逐步发展出自己的品牌;2000年开始生产各种规模的医用纱布和牙科片;2003年推出自有品牌“Winner稳健”,业务模式开始从OEM贴牌出口转向国内自有市场,进入医院和药店;2009年公司进入消费品领域,同年成立品牌“全棉时代”。
其实有挺多上市公司都是这种发展轨迹,代工一段时间,积累了一定技术后,逐步开始发展自有品牌,比如科沃斯、歌尔股份、开润股份、Stella Luna等都属于这类企业,这种发展轨迹在加工制造业,特别是纺服行业里最为多见。
接下来我们看看公司所处行业情况。
一方面,要聊聊健康生活消费品业务板块,即全棉时代所处赛道可以说是横跨了三细分行业。
首先是生活用纸行业,这个属于刚性需求,近年行业规模实现稳健增长。与此同时,由于纯棉柔巾的环保性和不易致敏性,形成了对于传统纸品的替代,市场潜力较大。根据中国造纸协会的数据,2018年我国生活用纸市场的消费总额达到1168亿元,同比增长5.6%。
据统计,2014年我国棉柔巾行业的市场需求仅为9.9亿张,预计2019年将增至232.6亿张,年均复合增速达到88.02%,棉柔巾市场的需求量实现高速增长,产品普遍被大家认同并接受。
其中,2019年全棉时代市场占有率超过65%,即使在全部抽纸类产品中进行排名,全棉时代旗舰店棉柔巾成交金额也已经超过了维达旗舰店、洁柔旗舰店等纸品的成交额。
其次是一次性卫生用品,包括吸收性卫生用品和擦拭巾(含湿巾),其中吸收性卫生用品包括女性卫生用品、婴儿纸尿布和成人失禁用品。2013-2018年,我国吸收性卫生用品市场规模由624.8亿元增长到1188.7亿元,年复合增长率达13.7%。
在吸收性卫生用品领域,行业竞争较为激烈,市场集中度较低,有众多国内厂商与全球性厂商共同参与竞争。尿布的品牌就有许多,比如花王、好奇、帮宝适等;女性卫生用品则有七度空间、ABC、苏菲、高洁丝等等,参与者众多。
最后是纺服行业,纺服是万亿级市场,自然参与者就更多了。截至2018年末,我国纺织业共有规模以上企业1.91万家,纺织服装、服饰业共有规模以上企业1.58万家。
而公司品牌Purcotton全棉时代,基于多年医疗业务中积累的出色质量管控能力及技术研发能力,持续推出医疗级品质的消费品。
从原材料开始,全棉时代核心产品的主要原材料棉花均采用优质的新疆棉、澳棉、美棉,从源头把控产品品质与安全。公司目前在深圳、北京、上海、广州等全国50多个重点城市的大型购物中心开设了250余家直营连锁店。
Purcotton从产品分类来看,分为无纺消费品和纺织消费品,无纺消费品的增长和渗透率不断提高。
另一方面,我们聊聊医用敷料板块,即稳健医疗所处赛道
中国是当前世界最大的医用敷料出口国,2019年我国医用敷料出口额达到27.16亿美元,同比增长4.16%,我国医用敷料出口额已经占据全球医用敷料20%的市场份额。2014-2018年,我国医用敷料行业规模复合增速达到13.15%,2020年预计达到82.25亿元。
由于我国医用敷料行业进入门槛较低,导致行业集中度较低,且我国国产医用敷料以传统伤口护理类产品为主,占比超过80%,所以产品同质化现象较为严重,以低价竞争为主。
虽然我国传统伤口护理类产品的质量已经达到世界领先水平,但是在产品创新、技术研发等方面仍与发达国家具备较大差距。美国、欧洲和日本等国家是全球最主要的医用敷料消费市场,根据BMI的预计,2020年全球医用敷料行业市场规模将达到132.84亿美元。
所以,未来新型高端医用敷料将逐步取代部分传统敷料的地位。在全球市场,欧洲地区新型高端医用敷料的份额占比达到42%,美国占比达到40%,而我国占比仅为3%,在渗透率上存在较大空间。
公司品牌“Winner稳健”的医用敷料业务主要包括伤口护理类、感染防护类、清洁消毒类,其中伤口护理类占比最高,而高端的伤口敷料产品占比在不断提升中,未来也是重点发展方向。
公司在境外市场主要通过OEM代工实现生产销售,医用敷料近三年始终位列全国第二名,第一名则是奥美医疗。国内方面,公司稳健医疗主要是自有产品,目前已进入了2000多家医院和4万家左右药店。
综上所述,公司的销售模式可以分为线上和线下、国内和国外、自有和代工,渠道非常齐全。

注:图片来自招股说明书
然后,我们聊一下公司财务状况。
公司2019年营收45.7亿元,归母净利润为5.5亿元,近五年的年复合增长率约在24%左右。到今年上半年,收入更是猛增至41.8亿元,同比增长98.5%,接近翻倍,归母净利润为10.3亿元,同比增长350%。上半年激增的原因很明显和疫情有关,相关医用感染防护设备、护理产品、消毒用湿巾等都会有超预期的需求。
前几天,公司发布公告,向上修正2020年前三季度营收为93.25-97.25亿元,同比增加199%-212%,较修正前预告值增加21%-26%;归母净利润为30.37-32.37亿元,同比增加651%-700%,较修正前预告值增加67%-78%。可见,公司业绩增速依旧没有放缓。
从2019年营收角度来看,医用敷料贡献营收约1/4,为11.9亿元,其中境外OEM代工收入占了约65%,消费品占营收约3/4,30.3亿元。从具体的细分产品增长角度而言,近三年的趋势如下图(单位:万元)。
从医用敷料业务看,高端伤口敷科产品占比正缓慢扩大营收占比,传统护理产品的比例则在逐步下降。从消费品看,公司的核心产品棉柔巾占比和增长趋势都较为明显,去年成人服饰的增长较为显著,同比增长51%。
从渠道来看,线上渠道的销售占比比较高,主要以直营旗舰店为主,2019年营收14.09亿元,占线上渠道的83.81%。线下渠道刚才已经介绍,公司线下有250家左右的门店,线下直营门店的收入占总收入的38%左右。
盈利能力方面,公司的各个业务板块毛利率近三年也是持续走高。毛利率的提升主要有两个方面,一方面原材料是棉花,而近几年棉花的价格整体水平一直处于低位,另一方面则是公司毛利率较高的健康生活消费品占比不断提高,拉高了公司整体毛利率。
费用方面,销售费用相比管理费用和研发支出上升得更快。由于公司有较多的线下门店,所以销售费用一定是费用的支出大头,占营收比也是每年在提升,2019年占比达到了29.6%;管理费用上升得则比较温和,去年占比7.7%;研发支出也在缓慢提升,去年占比3.4%。
净利率方面,基本维持在11%左右,但今年上半年由于疫情,关闭了许多门店,节省了不少费用开支,使得净利率上升至25%。
综上,公司ROE并不是特别高,但也不太低。由于其具有一定商超属性,资产周转略慢,外加净利率也并不高,所以ROE一直在18%左右,较为稳定。
最后,我们聊一聊公司估值。
由于篇幅原因,老裘并没有将每块业务都详细分析,仅挑了重点业务稍做介绍。但实际公司是由三部分组成,其中:医用敷料今年一定是个大年,增长一定是迅猛的,较去年翻3-4倍也是有可能的;健康生活品上半年也有不俗的表现,全年增长预计会比去年略高一些,可能在30%-35%左右;最后一小块业务是全面水刺无纺布,我们假设维持和去年同样的增长率20%左右。
所以,结合中报及三季报的表现,我们认为公司净利率可以取到25%-30%,测算下来得到今年的净利润可能在35-40亿元之间,供大家参考。
好了,今天就和大家聊到这里了。这篇文章给大家介绍了一家新上市的公司,稳健医疗,希望能给大家带来一些收获,喜欢我们的朋友别忘记点个“在看”支持一下哦,谢谢大家!
本文内容仅供参考,不作为任何投资建议;
股市有风险,投资需谨慎。
 

20201014

汉王科技

午后封板没有封住,成交量温和放大,创60日新高。

成交量近2个月有所放大,近期券商调研较多,可能有较大行情。

三季报预增,四季度业务旺季。今年利润有保障。

持有策略:有上涨加速迹象,修正持有策略。

跌破10日线清仓,跌破5日线减仓。

天坛生物:

九月底无消息暴跌, 38补仓 40T出,目前平均成本40


估价周线20日线 窄幅震荡, 日线走平。成交量缩量。等三季报快报。

持有策略: 长期

龙蟒佰利:

10.12 25.82减仓, 10.13 26.85加仓。

交易逻辑:

趋势交易。周线窄幅震荡3个月,有突破迹象。
日线均线缠绕,支持较强。

十月份券商金股推荐次数较多,钛白粉涨价预期概率大,下半年已涨价4次。钛白粉龙头企业。

持有策略:趋势
跌破10日线清仓,跌破5日线减仓。

山东药玻

交易逻辑:新冠疫苗接受预约,药品玻璃包装龙头,疫苗封装包装有优势。

从高点调整时间和空间教充分。

日线多均线已走平,微翘。

持有策略: 中期趋势交易 跌破43趋势线清仓。