├── cmd ├── .keep ├── doodles.go ├── cronjob.go ├── jav.go ├── fund.go ├── configs.go ├── makemoney.go └── zhihu.go ├── configs ├── .keep ├── env.go ├── configs.go └── settings.yaml ├── script └── .keep ├── pkg ├── chromedp │ └── .keep ├── mysql │ └── .keep ├── redis │ └── .keep ├── es │ └── doc.go ├── page_source │ ├── page_source_test.go │ └── page_source.go ├── error_http │ └── error.go ├── kafka │ └── message.go ├── handle │ └── string.go └── concurrency │ └── concurrency.go ├── src ├── zhihu │ ├── .keep │ ├── param.go │ ├── doc.go │ ├── settings.go │ ├── router.go │ ├── assistance_test.go │ └── controller.go ├── k8s │ ├── result.go │ ├── router.go │ └── param.go ├── xc │ ├── params.go │ ├── router.go │ ├── settings.go │ └── xc_test.go ├── weixin │ ├── param.go │ ├── settings.go │ ├── assistance.go │ ├── router.go │ └── result.go ├── xincai │ ├── assistance.go │ ├── router.go │ ├── settings.go │ ├── passage.tmpl │ ├── result.go │ └── controller_test.go ├── MakeMoney │ ├── router.go │ ├── settings.go │ └── result.go ├── facebookAds │ ├── result.go │ ├── router.go │ ├── controller_test.go │ ├── one.html │ └── settings.go ├── Jav │ ├── settings.go │ ├── router.go │ ├── assistance.go │ └── result.go ├── holiday │ ├── params.go │ ├── router.go │ ├── settings.go │ ├── result.go │ ├── assistance_test.go │ └── controller.go ├── Bing │ ├── settings.go │ ├── router.go │ └── result.go ├── Doodles │ ├── settings.go │ ├── result.go │ ├── assistance.go │ └── router.go ├── Railway12306 │ ├── assistance.go │ ├── router.go │ ├── param.go │ └── result.go ├── Healthz │ ├── router.go │ └── result.go ├── fund │ ├── router.go │ └── settings.go └── oasis │ └── READ.md ├── doc ├── doodles │ ├── 2020-3.md │ ├── 2001-4.md │ ├── 2001-5.md │ ├── 1998-11.md │ ├── 1999-10.md │ ├── 2000-1.md │ ├── 2000-3.md │ ├── 2000-4.md │ ├── 2000-6.md │ ├── 2001-10.md │ ├── 2001-2.md │ ├── 2001-6.md │ ├── 2002-1.md │ ├── 1998-10.md │ ├── 2002-9.md │ ├── template │ │ └── doodles.md │ ├── 1999-12.md │ ├── 2000-12.md │ ├── 2000-10.md │ ├── 1998-8.md │ ├── 2003-2.md │ ├── 2000-2.md │ ├── 2001-3.md │ ├── 2001-8.md │ ├── 2001-1.md │ ├── 2005-1.md │ ├── 2002-4.md │ ├── 2004-5.md │ ├── 2002-8.md │ ├── 2003-5.md │ ├── 2002-3.md │ ├── 2003-9.md │ ├── 2005-6.md │ ├── 2003-3.md │ ├── 1999-11.md │ ├── 2001-7.md │ ├── 2002-7.md │ ├── 2000-11.md │ ├── 2003-11.md │ ├── 2001-11.md │ ├── 2004-3.md │ ├── 2006-4.md │ ├── 2003-6.md │ ├── 2004-1.md │ ├── 2004-9.md │ ├── 2006-11.md │ ├── 2007-1.md │ ├── 2007-5.md │ ├── 2003-10.md │ ├── 2005-2.md │ ├── 2007-6.md │ ├── 2004-10.md │ ├── 2005-5.md │ ├── 2003-1.md │ ├── 2005-10.md │ ├── 2005-8.md │ ├── 2006-7.md │ ├── 2002-11.md │ ├── 2006-8.md │ ├── 2004-6.md │ ├── 2005-7.md │ ├── 2002-6.md │ ├── 2004-7.md │ └── 2005-11.md └── money │ ├── template │ └── README.md │ ├── 2017互联网+指数经济报告.pdf.md │ ├── 揭开SEO的真面目.md │ ├── 11位网赚联盟大牛谈初学者的错误.md │ ├── 为什么你的网红不带货?.md │ ├── 大数据指数平台聚合思路.md │ ├── 社群要筛掉喜欢薅羊毛的人.md │ ├── 大航海计划:抖音视频制作的一些心得.md │ ├── 淘宝上开淘宝客店铺.md │ ├── 生财日历复盘电子书:如何做一本小小的日历58天10000册销量.md │ ├── adsense赚钱的实操经验分享.md │ ├── 坐拥30w+付费用户4000+推广员靠社群滚动裂变系统2年成为行业独角兽.md │ ├── 微商快递单号管理的痛点.md │ ├── 广点通买量的大盘数据.md │ ├── 36个小而美的赚钱项目学习笔记.md │ ├── 群好友抖音实操百万粉丝分享.md │ ├── “真人图书馆”项目案例.md │ ├── 用通俗易懂的语言解释区块链.md │ ├── 行业淡季是雪中送炭攒人品的好时候.md │ ├── 买Shopify插件通过优化营销模式每月赚3万刀.md │ ├── 做规则和产品的设计者追求可规模化可复制的套利行为.md │ ├── 一个中国团队做Adsense的实操案例.md │ ├── 个人微信淘客静默复制淘口令.md │ ├── 爆款!如何利用Quora引上万流量我是这样做的!|实战.md │ ├── 低成本也可以做竞价如何用冷门产品获利.md │ ├── 抖音教程后的导图提炼.md │ ├── 淘宝简历制作店铺月销售额100万.md │ ├── 工具推荐:Wetool管理几百个用户群只需几分钟.md │ ├── 干货:2019恒隆集团董事长陈启宗最新致股东公开信.md │ ├── 比特号航海日志的复盘.md │ ├── 赚钱几个变化曲线.md │ ├── 关于如何使用facebook推广网站的一些技巧.md │ ├── 区块链资料共享.md │ ├── 十年中国App出海编年史及方法论.md │ ├── 私域流量分享:怎么把控微信号封号风险.md │ ├── 谷歌全球商机洞察工具和它的优缺点.md │ ├── 《王者荣耀》相关附带的创业思路.md │ ├── 从生财之路的坎坷中提炼价值.md │ ├── 关于Shopify的垂直领域的小工具开发数据报告.md │ ├── 在电商平台上找到3万多个优秀店铺的一些技巧.md │ ├── 游戏玩家怎么通过新区玩游戏变现?.md │ ├── 一个纸巾机创业者的完整经历分享.md │ ├── 做社群需要有极强的价值观输出能力.md │ ├── 创业思路:high-ticketsales.md │ ├── 剖析增长黑客如何缔造出价值10亿美金的潮牌.md │ ├── 思维导图:2C导购全部运营细节拆解.md │ ├── Top100内容创业公司·2018.md │ ├── 搬运式内容变现的玩法.md │ ├── 治聪明人的蠢错误大约有三句话最管用.md │ ├── 如何实现用户可持续增长.md │ ├── 30个增加知名度的宣传方法背后其实都是各种运营手段.md │ ├── 信用卡费率的水很深.md │ ├── 关于得到APP精品课变现的思考.md │ ├── 分享一些北京聚会信用卡常旅客相关知识的PPT.md │ ├── 如何快速的将数据变现.md │ ├── 实操拆解:如何利用免费工具轻松实现个人号裂变?.md │ ├── 如何打造小而美的工具做到月入5万刀.md │ └── 微信卖土特产一个月销售70万的高转化率玩法.md ├── .gitignore ├── internal └── interface.go ├── yaml ├── v1 │ ├── namespace.yml │ ├── configmap.yml │ ├── cronjob.yml │ ├── kafka-single-zookeeper.yml │ ├── kafka-single-service.yml │ ├── README.md │ ├── job.yml │ ├── service.yml │ ├── redis-deployment.yml │ ├── go-anything-deployment.yml │ ├── kafka-single-deployment.yml │ └── mysql-deployment.yml ├── v0 │ ├── 1namespace.yml │ ├── 2nginxpod.yml │ ├── 6setting.yml │ ├── 8statefulset.yml │ ├── 4replicaset.yml │ └── 5deployment.yml ├── v2 │ ├── 1namespace.yml │ ├── 3service_externalname.yml │ ├── 4zookeeper_preset.yml │ ├── 4redis_preset.yml │ ├── 4etcd_preset.yml │ ├── 4mysql_preset.yml │ ├── 4kafka_preset.yml │ ├── 5go-anything_preset.yml │ ├── 5go-anything_volume.yml │ ├── 7go-anything_pod.yml │ ├── 6job_db.yml │ ├── 6job_email.yml │ ├── 4redis.yml │ ├── 4mysql.yml │ ├── 5go-anything_statefulset.yml │ └── 6cronJob.yml ├── README_DOCKER.md └── README.md ├── model ├── action.go ├── user_redis.go ├── user_kafka.go ├── sql │ └── doodles.sql ├── facebookAds.go ├── makemoney.go ├── user_model.go └── doodles.go ├── docker └── docker │ ├── mysql.yaml │ ├── postgres.yaml │ ├── postgres_dev.yaml │ ├── redis.yaml │ ├── etcd.yaml │ ├── yapi.yaml │ └── kafka.yaml ├── .github └── workflows │ ├── docker-compose.yml │ ├── dockerimage.yml │ └── go.yml ├── README_DEV.md ├── Makefile ├── main.go ├── Dockerfile └── README.md /cmd/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /configs/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /script/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pkg/chromedp/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pkg/mysql/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pkg/redis/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/zhihu/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /doc/doodles/2020-3.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/k8s/result.go: -------------------------------------------------------------------------------- 1 | package k8s 2 | -------------------------------------------------------------------------------- /src/xc/params.go: -------------------------------------------------------------------------------- 1 | package xc 2 | -------------------------------------------------------------------------------- /src/xc/router.go: -------------------------------------------------------------------------------- 1 | package xc 2 | -------------------------------------------------------------------------------- /src/weixin/param.go: -------------------------------------------------------------------------------- 1 | package weixin 2 | -------------------------------------------------------------------------------- /src/zhihu/param.go: -------------------------------------------------------------------------------- 1 | package zhihu 2 | -------------------------------------------------------------------------------- /src/xincai/assistance.go: -------------------------------------------------------------------------------- 1 | package xincai 2 | -------------------------------------------------------------------------------- /src/xincai/router.go: -------------------------------------------------------------------------------- 1 | package xincai 2 | -------------------------------------------------------------------------------- /src/MakeMoney/router.go: -------------------------------------------------------------------------------- 1 | package MakeMoney 2 | -------------------------------------------------------------------------------- /src/facebookAds/result.go: -------------------------------------------------------------------------------- 1 | package facebookAds 2 | -------------------------------------------------------------------------------- /src/facebookAds/router.go: -------------------------------------------------------------------------------- 1 | package facebookAds 2 | -------------------------------------------------------------------------------- /doc/money/template/README.md: -------------------------------------------------------------------------------- 1 | # 索引 2 | 3 | 4 | 5 | - [title](template.md) 6 | 7 | -------------------------------------------------------------------------------- /src/zhihu/doc.go: -------------------------------------------------------------------------------- 1 | package zhihu 2 | 3 | /* 4 | - 知乎热搜 5 | - 每天 21 点抓取 6 | - es 库 7 | */ 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | vendor/* 2 | go-anything* 3 | k8s-docker-desktop-for-mac/* 4 | default.etcd/* 5 | yaml/* -------------------------------------------------------------------------------- /src/Jav/settings.go: -------------------------------------------------------------------------------- 1 | package Jav 2 | 3 | var ( 4 | HOST = "aHR0cHM6Ly93d3cuamF2encuY29tLw==" 5 | ) 6 | -------------------------------------------------------------------------------- /src/weixin/settings.go: -------------------------------------------------------------------------------- 1 | package weixin 2 | 3 | var ( 4 | HOST = "https://weixin.sogou.com/" 5 | ) 6 | -------------------------------------------------------------------------------- /pkg/es/doc.go: -------------------------------------------------------------------------------- 1 | package es_operator 2 | 3 | /* 4 | - index: 设计规范 5 | 命名: company_resource_index 6 | */ 7 | -------------------------------------------------------------------------------- /src/zhihu/settings.go: -------------------------------------------------------------------------------- 1 | package zhihu 2 | 3 | var ( 4 | HOT = "https://www.zhihu.com/billboard" 5 | ) 6 | -------------------------------------------------------------------------------- /src/holiday/params.go: -------------------------------------------------------------------------------- 1 | package holiday 2 | 3 | type Search struct { 4 | Query string `json:"query"` 5 | } 6 | -------------------------------------------------------------------------------- /internal/interface.go: -------------------------------------------------------------------------------- 1 | package internal 2 | 3 | type ( 4 | Action interface { 5 | Do() 6 | String() string 7 | } 8 | ) 9 | -------------------------------------------------------------------------------- /src/xincai/settings.go: -------------------------------------------------------------------------------- 1 | package xincai 2 | 3 | var ( 4 | passageUrl = "https://wangchuan.blog.caixin.com/page/%d" 5 | ) 6 | 7 | -------------------------------------------------------------------------------- /yaml/v1/namespace.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: xw 5 | labels: 6 | project: xw-project 7 | -------------------------------------------------------------------------------- /src/xincai/passage.tmpl: -------------------------------------------------------------------------------- 1 | ## {{.Title}} 2 | 3 | > 发表于 {{.PublishTime}} 4 | > 5 | > 整理者:weChat(wu_xiaoshen) 6 | 7 | {{.Content}} 8 | 9 | -------------------------------------------------------------------------------- /yaml/v0/1namespace.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: k8s-example 5 | labels: 6 | project: k8s-example -------------------------------------------------------------------------------- /pkg/page_source/page_source_test.go: -------------------------------------------------------------------------------- 1 | package page_source 2 | 3 | import "testing" 4 | 5 | func TestGetPageSource(t *testing.T) { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /yaml/v2/1namespace.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: xw-example 5 | labels: 6 | project: xw-example-project 7 | -------------------------------------------------------------------------------- /src/Bing/settings.go: -------------------------------------------------------------------------------- 1 | package Bing 2 | 3 | var ( 4 | BASE = "https://cn.bing.com" 5 | HOST = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=%d&n=1" 6 | ) 7 | -------------------------------------------------------------------------------- /src/Bing/router.go: -------------------------------------------------------------------------------- 1 | package Bing 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterBing(c iris.Party) { 6 | c.Get("/images/{date:int}", imageHandler) 7 | } 8 | -------------------------------------------------------------------------------- /src/Doodles/settings.go: -------------------------------------------------------------------------------- 1 | package Doodles 2 | 3 | import "fmt" 4 | 5 | var ( 6 | host = "https://www.google.com" 7 | rootURL = fmt.Sprintf("%s/doodles?hl=zh-CN", host) 8 | ) 9 | -------------------------------------------------------------------------------- /src/Jav/router.go: -------------------------------------------------------------------------------- 1 | package Jav 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterJav(c iris.Party) { 6 | c.Get("/detail/{code:string}", codeDetailHandler) 7 | } 8 | -------------------------------------------------------------------------------- /src/Jav/assistance.go: -------------------------------------------------------------------------------- 1 | package Jav 2 | 3 | import "encoding/base64" 4 | 5 | func toRawString(v string) string { 6 | r, _ := base64.StdEncoding.DecodeString(v) 7 | return string(r) 8 | } 9 | -------------------------------------------------------------------------------- /src/holiday/router.go: -------------------------------------------------------------------------------- 1 | package holiday 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterForHoliday(r iris.Party) { 6 | r.Get("/holiday/search", getHolidayHandler) 7 | } 8 | -------------------------------------------------------------------------------- /src/Railway12306/assistance.go: -------------------------------------------------------------------------------- 1 | package Railway12306 2 | 3 | func codeForStations(value string) string { 4 | if v, ok := ChPlace[value]; ok { 5 | return v 6 | } 7 | return "" 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/Bing/result.go: -------------------------------------------------------------------------------- 1 | package Bing 2 | 3 | type ( 4 | ResponseForImages struct { 5 | Date string `json:"date"` 6 | Copyright string `json:"copyright"` 7 | Url string `json:"url"` 8 | } 9 | ) 10 | -------------------------------------------------------------------------------- /src/Healthz/router.go: -------------------------------------------------------------------------------- 1 | package Healthz 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterHealth(c iris.Party) { 6 | c.Get("/health", healthZHandler) 7 | c.Get("/health_cpu", healthCpuHandler) 8 | } 9 | -------------------------------------------------------------------------------- /src/holiday/settings.go: -------------------------------------------------------------------------------- 1 | package holiday 2 | 3 | var ( 4 | HOLIDAY_STRING = "国务院办公厅关于%d年部分节假日安排的通知" 5 | HOLIDAT_INTEGER = "国务院办公厅关于%s年部分节假日安排的通知" 6 | HOST = "http://sousuo.gov.cn/s.htm?t=paper&%s" 7 | ) 8 | -------------------------------------------------------------------------------- /src/MakeMoney/settings.go: -------------------------------------------------------------------------------- 1 | package MakeMoney 2 | 3 | var ( 4 | contentURL = "https://api.superadblock.com/parse/classes/TheWayToMakeMoney" 5 | topicURL = "https://api.superadblock.com/parse/classes/EssentialTopic" 6 | ) 7 | -------------------------------------------------------------------------------- /src/fund/router.go: -------------------------------------------------------------------------------- 1 | package fund 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterFund(r iris.Party) { 6 | r.Get("/funds/{code:string}", getFundInfoHandler) 7 | r.Get("/global", getGlobalInfoHandler) 8 | } 9 | -------------------------------------------------------------------------------- /src/zhihu/router.go: -------------------------------------------------------------------------------- 1 | package zhihu 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterForZhiHu(c iris.Party) { 6 | c.Get("/hot/_search", getZhiHuHandler) 7 | c.Delete("/hot/_delete", deleteZhiHuHandler) 8 | } 9 | -------------------------------------------------------------------------------- /src/zhihu/assistance_test.go: -------------------------------------------------------------------------------- 1 | package zhihu 2 | 3 | import ( 4 | "fmt" 5 | "testing" 6 | ) 7 | 8 | func TestGetPageSource(t *testing.T) { 9 | content := hotZhiHuSource() 10 | fmt.Println(hotZhiHuList(content)) 11 | } 12 | -------------------------------------------------------------------------------- /src/Doodles/result.go: -------------------------------------------------------------------------------- 1 | package Doodles 2 | 3 | type ( 4 | GoogleDoodlesResult struct { 5 | Content string // share text 6 | Date string // 7 | URL string 8 | GifURL string 9 | LargeGifURL string 10 | } 11 | ) 12 | -------------------------------------------------------------------------------- /src/MakeMoney/result.go: -------------------------------------------------------------------------------- 1 | package MakeMoney 2 | 3 | type ( 4 | ResultForMakeMoney struct { 5 | Title string 6 | Content string 7 | Comments []Comment 8 | } 9 | 10 | Comment struct { 11 | Name string 12 | Doc string 13 | } 14 | ) 15 | -------------------------------------------------------------------------------- /src/weixin/assistance.go: -------------------------------------------------------------------------------- 1 | package weixin 2 | 3 | import ( 4 | "github.com/wuxiaoxiaoshen/go-anything/pkg/chromedp" 5 | ) 6 | 7 | func pageSource(url string) string { 8 | return chromedp_helper.GetPageSource(chromedp_helper.GetContextWithLog(), url) 9 | } 10 | -------------------------------------------------------------------------------- /model/action.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | type ActionInterface interface { 4 | First(id int) (interface{}, error) 5 | Find() ([]interface{}, error) 6 | Patch(id int) (interface{}, error) 7 | Post(interface{}) (interface{}, error) 8 | Delete(id int) (bool, error) 9 | } 10 | -------------------------------------------------------------------------------- /src/xincai/result.go: -------------------------------------------------------------------------------- 1 | package xincai 2 | 3 | 4 | type Passage struct { 5 | Title string `json:"title"` 6 | PublishTime string `json:"publish_time"` 7 | RealURL string `json:"real_url"` 8 | Content string `json:"content"` 9 | 10 | } 11 | type Passages []Passage 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /pkg/error_http/error.go: -------------------------------------------------------------------------------- 1 | package error_http 2 | 3 | import "fmt" 4 | 5 | type HttpError struct { 6 | Code int `json:"code"` 7 | Reason string `json:"reason"` 8 | } 9 | 10 | func (h HttpError) Error() string { 11 | return fmt.Sprintf("Status Code: %d\nReason: %s", h.Code, h.Reason) 12 | } 13 | -------------------------------------------------------------------------------- /src/Healthz/result.go: -------------------------------------------------------------------------------- 1 | package Healthz 2 | 3 | const ( 4 | B = 1 5 | KB = 1024 * B 6 | MB = 1024 * KB 7 | GB = 1024 * MB 8 | TB = 1024 * GB 9 | ) 10 | 11 | type ( 12 | Disk struct { 13 | All uint64 `json:"all"` 14 | Used uint64 `json:"used"` 15 | Free uint64 `json:"free"` 16 | } 17 | ) 18 | -------------------------------------------------------------------------------- /yaml/README_DOCKER.md: -------------------------------------------------------------------------------- 1 | # Docker-Compose 版本 2 | 3 | go-anything 系统依赖 mysql, redis, kafka。 4 | 5 | 思路1: 6 | 7 | 所有镜像编写在 docker-compose 文件中,组件之间相互通过自定义的一个网络互联,意味者 go-anything 连接 8 | 其他服务只要通过服务名称即可代替 Host。 9 | 10 | 思路2: 11 | 12 | go-anything 系统和底层 mysql, redis, kafka 相互隔离,互联通过显式的 host 连接。 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /yaml/v2/3service_externalname.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: xw-example-go-anything-service 5 | namespace: xw-example 6 | labels: 7 | app: xw-example-go-anything-service-externalname 8 | spec: 9 | type: ExternalName 10 | externalName: my.go-anything.com 11 | clusterIP: "" -------------------------------------------------------------------------------- /yaml/v1/configmap.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: my-configmap 5 | labels: 6 | app: my-configmap 7 | namespace: xw 8 | data: 9 | # Mysql 10 | mysql.MYSQL_DATABASE: go-anything 11 | mysql.MYSQL_ROOT_PASSWORD: adminMysql 12 | # redis 13 | redis.REDIS_AUTH: adminRedis 14 | -------------------------------------------------------------------------------- /src/Doodles/assistance.go: -------------------------------------------------------------------------------- 1 | package Doodles 2 | 3 | import ( 4 | "github.com/tidwall/gjson" 5 | "time" 6 | ) 7 | 8 | func toDate(array []gjson.Result) time.Time { 9 | y := array[0].Int() 10 | m := array[1].Int() 11 | d := array[2].Int() 12 | return time.Date(int(y), time.Month(m), int(d), 0, 0, 0, 0, time.Local) 13 | } 14 | -------------------------------------------------------------------------------- /yaml/v0/2nginxpod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: k8s-example-pod 5 | namespace: k8s-example 6 | labels: 7 | app: k8s-example-pod 8 | spec: 9 | containers: 10 | - name: nginx 11 | image: nginx 12 | imagePullPolicy: IfNotPresent 13 | ports: 14 | - containerPort: 80 15 | -------------------------------------------------------------------------------- /src/facebookAds/controller_test.go: -------------------------------------------------------------------------------- 1 | package facebookAds 2 | 3 | import "testing" 4 | 5 | func TestFaceBook(t *testing.T) { 6 | //f := NewControllerFaceBookAds("106041920948430") 7 | //f.Do() 8 | //f2 := NewControllerFaceBookAds("50043151918") 9 | //f2.Do() 10 | f3 := NewControllerFaceBookAds("412976905975156") 11 | f3.Do() 12 | } 13 | -------------------------------------------------------------------------------- /src/weixin/router.go: -------------------------------------------------------------------------------- 1 | package weixin 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterWeiXin(c iris.Party) { 6 | c.Get("/tags", tagsHandler) 7 | c.Get("/hotBanner", bannerHandler) 8 | c.Get("/hotSearch", hotSearchHandler) 9 | c.Get("/passages", passagesHandler) 10 | c.Get("/mediumPassage", editorHandler) 11 | } 12 | -------------------------------------------------------------------------------- /src/xc/settings.go: -------------------------------------------------------------------------------- 1 | package xc 2 | 3 | var ( 4 | listUrl = "https://m.ctrip.com/restapi/soa2/14605/getHotelList" 5 | detailApi = "https://m.ctrip.com/restapi/soa2/14605/gethoteldetail" 6 | cityInfoApi = "https://m.ctrip.com/restapi/soa2/11754/wechatrunner.json" 7 | commentApi = "https://m.ctrip.com/restapi/soa2/14605/gethotelcomment" 8 | ) 9 | -------------------------------------------------------------------------------- /src/Jav/result.go: -------------------------------------------------------------------------------- 1 | package Jav 2 | 3 | type ( 4 | Designation struct { 5 | Title string `json:"title"` 6 | Code string `json:"code"` 7 | Date string `json:"date"` 8 | Duration string `json:"duration"` 9 | Actor string `json:"actor"` 10 | Image string `json:"image"` 11 | Url string `json:"url"` 12 | } 13 | ) 14 | -------------------------------------------------------------------------------- /docker/docker/mysql.yaml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | 3 | services: 4 | 5 | db: 6 | image: mysql 7 | command: --default-authentication-plugin=mysql_native_password 8 | restart: always 9 | ports: 10 | - 3306:3306 11 | environment: 12 | MYSQL_ROOT_PASSWORD: adminMysql 13 | MYSQL_DATABASE: go-anything 14 | MYSQL_USER: root -------------------------------------------------------------------------------- /docker/docker/postgres.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | postgres: 5 | image: postgres:latest 6 | container_name: localPostgres 7 | expose: 8 | - 5432 9 | ports: 10 | - 5432:5432 11 | environment: 12 | - POSTGRES_DB=venus_production 13 | - POSTGRES_USER=lightyear 14 | - POSTGRES_PASSWORD=root 15 | -------------------------------------------------------------------------------- /src/facebookAds/one.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
Active
4 |
5 |
Started running on Apr 19, 2020
6 |
7 | 9 |
-------------------------------------------------------------------------------- /yaml/v2/4zookeeper_preset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: settings.k8s.io/v1alpha1 2 | kind: PodPreset 3 | metadata: 4 | name: xw-example-zookeeper-podpreset 5 | labels: 6 | app: xw-example-zookeeper-podpreset 7 | spec: 8 | selector: 9 | matchLabels: 10 | role: zookeeper 11 | envFrom: 12 | - configMapRef: 13 | name: xw-example-configmap 14 | -------------------------------------------------------------------------------- /.github/workflows/docker-compose.yml: -------------------------------------------------------------------------------- 1 | name: Docker Compose CI 2 | on: [push] 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v1 8 | - name: docker-compose up 9 | run: docker-compose -f docker-compose.yml up -d 10 | - name: docker-compose down 11 | run: docker-compose -f docker-compose.yml down -------------------------------------------------------------------------------- /docker/docker/postgres_dev.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | postgres: 5 | image: postgres:latest 6 | container_name: localPostgres 7 | restart: always 8 | expose: 9 | - 5432 10 | ports: 11 | - 5432:5432 12 | environment: 13 | - POSTGRES_DB=lock_dev 14 | - POSTGRES_USER=postgres 15 | - POSTGRES_PASSWORD=root 16 | -------------------------------------------------------------------------------- /src/Doodles/router.go: -------------------------------------------------------------------------------- 1 | package Doodles 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterWithDoodles(party iris.Party) { 6 | party.Get("/search/{search:string}", getGoogleDoodlesSearch) // 通过标题搜索 7 | party.Get("/date/{date:string}", getGoogleDoodlesDate) // 通过时间搜索 8 | party.Get("/year/{year:int}/{top:int}", getGoogleDoodlesYear) // 通过年份搜索 9 | } 10 | -------------------------------------------------------------------------------- /cmd/doodles.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | "github.com/wuxiaoxiaoshen/go-anything/src/Doodles" 6 | ) 7 | 8 | var GoogleDoodles = &cobra.Command{ 9 | Use: "doodles", 10 | Run: func(cmd *cobra.Command, args []string) { 11 | gg := Doodles.NewGoogleDoodlesAction("https://www.google.com/doodles/json/2020/2?hl=zh_CN") 12 | gg.Do() 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /src/k8s/router.go: -------------------------------------------------------------------------------- 1 | package k8s 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterForK8s(c iris.Party) { 6 | c.Get("/users", allUsersHandler) 7 | c.Get("/user/{id:int}", singUserHandler) 8 | c.Post("/user", createUserHandler) 9 | c.Delete("/user/{id:int}", deleteUserHandler) 10 | c.Get("/topics", allTopicHandler) 11 | c.Post("/topic", createTopicHandler) 12 | } 13 | -------------------------------------------------------------------------------- /README_DEV.md: -------------------------------------------------------------------------------- 1 | # 开发者文档 2 | 3 | ### docker 4 | 5 | 所有的容器启动,显式的使用 docker-compose 编写yaml 文件的形式启动。 6 | 好处是: 7 | - 明确具体的执行步骤和命令 8 | 9 | 参数遇到的:advertise 带这种关键字的参数,指的是建议访问地址,一般指定服务名称和端口 10 | 11 | ```text 12 | // etcd 13 | -advertise-client-urls http://etcd1:2379 14 | -initial-advertise-peer-urls http://etcd1:2380 15 | // kafka 16 | KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:9092" 17 | 18 | 19 | ``` -------------------------------------------------------------------------------- /pkg/kafka/message.go: -------------------------------------------------------------------------------- 1 | package kafka_operator 2 | 3 | import "encoding/json" 4 | 5 | type ( 6 | Message struct { 7 | name string 8 | encoded []byte 9 | err error 10 | } 11 | ) 12 | 13 | func (M *Message) Length() int { 14 | b, e := json.Marshal(M) 15 | M.encoded = b 16 | M.err = e 17 | return len(string(b)) 18 | } 19 | 20 | func (M *Message) Encode() ([]byte, error) { 21 | return M.encoded, M.err 22 | } 23 | -------------------------------------------------------------------------------- /cmd/cronjob.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import "github.com/spf13/cobra" 4 | 5 | var CronJobCmd = &cobra.Command{ 6 | Use: "cronJob", 7 | Short: "execute cronJob", 8 | PreRun: func(cmd *cobra.Command, args []string) { 9 | 10 | }, 11 | Run: func(cmd *cobra.Command, args []string) { 12 | 13 | }, 14 | PostRun: func(cmd *cobra.Command, args []string) { 15 | 16 | }, 17 | } 18 | 19 | func heartBeat() { 20 | // * */10 * * * 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yaml/v2/4redis_preset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: settings.k8s.io/v1alpha1 2 | kind: PodPreset 3 | metadata: 4 | name: xw-example-redis-podpreset 5 | labels: 6 | app: xw-example-redis-podpreset 7 | namespace: xw-example 8 | spec: 9 | selector: 10 | matchLabels: 11 | role: redis 12 | envFrom: 13 | - configMapRef: 14 | name: xw-example-configmap 15 | env: 16 | - name: REDIS_AUTH 17 | value: $(redis.REDIS_AUTH) -------------------------------------------------------------------------------- /doc/doodles/2001-4.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 4 月 8 | 9 |
10 | 11 | 12 | 2001年地球日 #GoogleDoodle 13 |
2001年地球日
2001年4月22日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2001-5.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 5 月 8 | 9 |
10 | 11 | 12 | 2001年母亲节 #GoogleDoodle 13 |
2001年母亲节
2001年5月13日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/1998-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 1998年感恩节 #GoogleDoodle 13 |
1998年感恩节
1998年11月26日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/1999-10.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 10 月 8 | 9 |
10 | 11 | 12 | 1999年万圣节 #GoogleDoodle 13 |
1999年万圣节
1999年10月31日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2000-1.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 1 月 8 | 9 |
10 | 11 | 12 | 2000年新年快乐! #GoogleDoodle 13 |
2000年新年快乐!
2000年1月1日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2000-3.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 3 月 8 | 9 |
10 | 11 | 12 | 2000年圣帕特里克节 #GoogleDoodle 13 |
2000年圣帕特里克节
2000年3月17日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2000-4.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 4 月 8 | 9 |
10 | 11 | 12 | 2000年复活节快乐 #GoogleDoodle 13 |
2000年复活节快乐
2000年4月23日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2000-6.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 6 月 8 | 9 |
10 | 11 | 12 | 2000年父亲节 #GoogleDoodle 13 |
2000年父亲节
2000年6月18日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2001-10.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 10 月 8 | 9 |
10 | 11 | 12 | 2001年万圣节 #GoogleDoodle 13 |
2001年万圣节
2001年10月31日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2001-2.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 2 月 8 | 9 |
10 | 11 | 12 | 2001年情人节 #GoogleDoodle 13 |
2001年情人节
2001年2月14日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2001-6.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 6 月 8 | 9 |
10 | 11 | 12 | 2001年父亲节 #GoogleDoodle 13 |
2001年父亲节
2001年6月17日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2002-1.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 1 月 8 | 9 |
10 | 11 | 12 | 2002年新年快乐! #GoogleDoodle 13 |
2002年新年快乐!
2002年1月1日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /configs/env.go: -------------------------------------------------------------------------------- 1 | package configs 2 | 3 | // MYSQL 4 | var ( 5 | MYSQL_HOST = "MYSQL_HOST" 6 | MYSQL_PORT = "MYSQL_PORT" 7 | ) 8 | 9 | // Redis 10 | var ( 11 | REDIS_HOST = "REDIS_HOST" 12 | REDIS_PORT = "REDIS_PORT" 13 | ) 14 | 15 | // Kafka 16 | 17 | var ( 18 | KAFKA_BROKER_LIST = "KAFKA_BROKER_LIST" 19 | ) 20 | 21 | // ElasticSearch 22 | 23 | var ( 24 | ES_ADDRESS = "ES_ADDRESS" 25 | ES_USER = "ES_USER" 26 | ES_PASSWORD = "ES_PASSWORD" 27 | ) 28 | -------------------------------------------------------------------------------- /doc/doodles/1998-10.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 10 月 8 | 9 |
10 | 11 | 12 | Google 测试版 #GoogleDoodle 13 |
Google 测试版
1998年10月29日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2002-9.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 9 月 8 | 9 |
10 | 11 | 12 | Google 4周岁生日 #GoogleDoodle 13 |
Google 4周岁生日
2002年9月27日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /model/user_redis.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | import "fmt" 4 | 5 | var ( 6 | formatString string 7 | formatHash string 8 | ) 9 | 10 | func init() { 11 | formatString = "user::keys::%s" 12 | formatHash = "user::hash" 13 | } 14 | 15 | type UserKeys struct { 16 | Name string `json:"name"` // user::keys::{name}::{age} 17 | Age int `json:"age"` 18 | } 19 | 20 | func (U UserKeys) KeysFormat() string { 21 | return fmt.Sprintf(formatString, U.Name) 22 | } 23 | -------------------------------------------------------------------------------- /src/holiday/result.go: -------------------------------------------------------------------------------- 1 | package holiday 2 | 3 | type ( 4 | GovResultForHoliday struct { 5 | Query string `json:"query"` 6 | RawUrl string `json:"raw_url"` 7 | RawContent string `json:"raw_content"` 8 | } 9 | GovResultForHolidays []GovResultForHoliday 10 | SpecialHoliday struct { 11 | Year string `json:"year"` 12 | Start string `json:"start"` 13 | End string `json:"end"` 14 | Content string `json:"content"` 15 | } 16 | ) 17 | -------------------------------------------------------------------------------- /doc/doodles/template/doodles.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## {{.Month}} 月 8 | 9 |
10 | 11 | {{range .Doodles}} 12 | {{.ShareText}} 13 |
{{.Title}}
{{.Date | toDateFunc }}
14 | {{end}} 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /cmd/jav.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "encoding/base64" 5 | "fmt" 6 | 7 | "github.com/spf13/cobra" 8 | ) 9 | 10 | var JAV = &cobra.Command{ 11 | Use: "jav", 12 | Run: func(cmd *cobra.Command, args []string) { 13 | fmt.Println(base64En(args[0])) 14 | }, 15 | } 16 | 17 | func designation(code string) {} 18 | 19 | func base64En(value string) string { 20 | v := []byte(value) 21 | s := base64.StdEncoding.EncodeToString(v) 22 | fmt.Println(s) 23 | return s 24 | } 25 | -------------------------------------------------------------------------------- /doc/doodles/1999-12.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 12 月 8 | 9 |
10 | 11 | 12 | Google 祝您1999年节日快乐 #GoogleDoodle 13 |
Google 祝您1999年节日快乐
1999年12月25日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/zhihu/controller.go: -------------------------------------------------------------------------------- 1 | package zhihu 2 | 3 | import ( 4 | "github.com/kataras/iris/v12" 5 | "net/http" 6 | ) 7 | 8 | func getZhiHuHandler(c iris.Context) { 9 | response := HotResultController() 10 | if response != nil { 11 | _, _ = c.JSON(iris.Map{"data": response}) 12 | return 13 | } else { 14 | _, _ = c.JSON(iris.Map{ 15 | "error": http.StatusBadRequest, 16 | }) 17 | return 18 | } 19 | } 20 | 21 | func deleteZhiHuHandler(c iris.Context) { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /doc/doodles/2000-12.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 12 月 8 | 9 |
10 | 11 | 12 | Google 祝您2000年节日快乐 #GoogleDoodle 13 |
Google 祝您2000年节日快乐
2000年12月22日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/2000-10.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 10 月 8 | 9 |
10 | 11 | 12 | 2000年万圣节 - 特邀插画家 Lorie Loeb #GoogleDoodle 13 |
2000年万圣节 - 特邀插画家 Lorie Loeb
2000年10月31日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/doodles/1998-8.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 8 月 8 | 9 |
10 | 11 | 12 | 火人节 #GoogleDoodle 13 |
火人节
1998年8月30日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /yaml/v0/6setting.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | namespace: k8s-example 5 | name: k8s-example-configmap 6 | labels: 7 | app: k8s-example-configmap 8 | name: k8s-example-configmap 9 | data: 10 | mysql.Database: "root" 11 | mysql.User: "k8s-example" 12 | 13 | --- 14 | apiVersion: v1 15 | kind: Secret 16 | metadata: 17 | name: k8s-example-secret 18 | labels: 19 | app: k8s-example-secret 20 | namespace: k8s-example 21 | data: 22 | mysql.Port: "MzMwNg==" 23 | mysql.Password: "cm9vdA==" 24 | -------------------------------------------------------------------------------- /doc/doodles/2003-2.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 2 月 8 | 9 |
10 | 11 | 12 | 2003年情人节 #GoogleDoodle 13 |
2003年情人节
2003年2月14日
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /yaml/v2/4etcd_preset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: settings.k8s.io/v1alpha1 2 | kind: PodPreset 3 | metadata: 4 | name: xw-example-etcd-podpreset 5 | labels: 6 | app: xw-example-ectd-podpreset 7 | namespace: xw-example 8 | spec: 9 | selector: 10 | matchLabels: 11 | role: etcd 12 | env: 13 | - name: HOST_1 14 | value: $(etcd.ETCD_HOST_1) 15 | - name: HOST_2 16 | value: $(etcd.ETCD_HOST_2) 17 | - name: HOST_3 18 | value: $(etcd.ETCD_HOST_3) 19 | envFrom: 20 | - configMapRef: 21 | name: xw-example-configmap -------------------------------------------------------------------------------- /src/Railway12306/router.go: -------------------------------------------------------------------------------- 1 | package Railway12306 2 | 3 | import "github.com/kataras/iris/v12" 4 | 5 | func RegisterRailWay12306(c iris.Party) { 6 | c.Get("/stations", railWayStationHandler) // 站点 7 | c.Get("/stations/search", railWayStationIsExistHandler) // 搜索站点 8 | c.Get("/tickets", ticketsHandler) // 查询车票 9 | c.Get("/type_for_tickets", typeForTicketsHandler) // 票的类型 10 | //c.Get("/ticketPrice") // 票价 11 | //c.Get("/") // 车次经过的站点 12 | } 13 | -------------------------------------------------------------------------------- /cmd/fund.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | ) 6 | 7 | var FundCmd = &cobra.Command{ 8 | Use: "fund", 9 | Run: func(cmd *cobra.Command, args []string) { 10 | //source := chromedp_helper.GetPageSourceHTTP("http://pdfm.eastmoney.com/EM_UBG_PDTI_Fast/api/js?id=0006512&rtntype=5") 11 | //pattern := `\((.*?)\)` 12 | //r1 := regexp.MustCompile(pattern) 13 | //jsonSource := r1.FindAllStringSubmatch(source, -1) 14 | //fmt.Println(jsonSource[0][1]) 15 | //d := gjson.Parse(jsonSource[0][1]).Get("info.c") 16 | //fmt.Println(d) 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /docker/docker/redis.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | redis: 5 | image: redis:latest 6 | restart: always 7 | ports: 8 | - 6379:6379 9 | expose: 10 | - 6379 11 | - 6378 12 | container_name: redis_for_go_anything 13 | command: redis-server --appendonly yes --requirepass "adminRedis" 14 | networks: 15 | - go-anything-network 16 | volumes: 17 | - data:/data 18 | - dir:/usr/local/etc/redis/redis.conf 19 | networks: 20 | go-anything-network: 21 | driver: bridge 22 | volumes: 23 | data: {} 24 | dir: {} 25 | -------------------------------------------------------------------------------- /model/user_kafka.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | import ( 4 | "encoding/json" 5 | "fmt" 6 | "log" 7 | ) 8 | 9 | type UserKafka struct { 10 | Name string `json:"name"` 11 | Age int `json:"age"` 12 | err error 13 | encode []byte 14 | } 15 | 16 | func (U *UserKafka) Length() int { 17 | b, e := json.Marshal(U) 18 | if e != nil { 19 | log.Println(fmt.Sprintf("model: UserKafka: %s", e.Error())) 20 | return -1 21 | } 22 | U.encode = b 23 | U.err = e 24 | return len(b) 25 | } 26 | 27 | func (U *UserKafka) Encode() ([]byte, error) { 28 | return U.encode, U.err 29 | } 30 | -------------------------------------------------------------------------------- /.github/workflows/dockerimage.yml: -------------------------------------------------------------------------------- 1 | name: Docker Image CI 2 | on: [push] 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v1 8 | - name: Docker Login 9 | run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} 10 | - name: Build the Docker image 11 | run: docker build . --file Dockerfile --tag wuxiaoshen/go-anything:v$(date +"%Y%m%d") 12 | - name: Docker Push 13 | run: docker push wuxiaoshen/go-anything:v$(date +"%Y%m%d") 14 | - name: Echo Images 15 | run: docker images 16 | 17 | -------------------------------------------------------------------------------- /src/weixin/result.go: -------------------------------------------------------------------------------- 1 | package weixin 2 | 3 | type ( 4 | common struct { 5 | Topic string `json:"topic"` 6 | Url string `json:"url"` 7 | } 8 | TagsResponse struct { 9 | common 10 | } 11 | HotSearch struct { 12 | common 13 | } 14 | Banner struct { 15 | common 16 | } 17 | Passage struct { 18 | common 19 | SubContent string `json:"sub_content"` 20 | Author string `json:"author"` 21 | Date string `json:"date"` 22 | } 23 | MediumEditor struct { 24 | common 25 | MediumName string `json:"medium_name"` 26 | Date string `json:"date"` 27 | } 28 | ) 29 | -------------------------------------------------------------------------------- /yaml/v2/4mysql_preset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: settings.k8s.io/v1alpha1 2 | kind: PodPreset 3 | metadata: 4 | name: xw-example-mysql-podpreset 5 | labels: 6 | app: xw-example-mysql-podpreset 7 | namespace: xw-example 8 | spec: 9 | selector: 10 | matchLabels: 11 | role: mysql 12 | envFrom: 13 | - configMapRef: 14 | name: xw-example-configmap 15 | env: 16 | - name: MYSQL_USER 17 | value: $(mysql.MYSQL_ROOT) 18 | - name: MYSQL_DATABASE 19 | value: $(mysql.MYSQL_DATABASE) 20 | - name: MYSQL_ROOT_PASSWORD 21 | value: $(mysql.MYSQL_ROOT_PASSWORD) -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | VERSION=v0.1 2 | T=`date +%Y-%m-%d` 3 | BUILD="go-anything-${T}" 4 | 5 | build: 6 | go build -o ${BUILD} -v -ldflags "-X main.Env=dev" -tags=jsoniter 7 | 8 | prod: 9 | go build -o ${BUILD} -v -ldflags "-X main.Env=service" -tags=jsoniter 10 | 11 | echo: 12 | echo ${BUILD} 13 | 14 | deploy: 15 | echo ${BUILD} 16 | docker run --name ${BUILD} --link mysql_for_go_anything --link redis_for_go_anything --link kafka_for_go_anything --net go-anything_go-anything-network -p 8081:8888 -d wuxiaoshen/go-anything:latest 17 | 18 | remove: 19 | rm -rf ${BUILD} 20 | 21 | .PHONY: build remove prod echo deploy 22 | -------------------------------------------------------------------------------- /pkg/handle/string.go: -------------------------------------------------------------------------------- 1 | package handle 2 | 3 | import ( 4 | "strings" 5 | ) 6 | 7 | type Handle interface { 8 | Handler() (interface{}, error) 9 | } 10 | 11 | const ( 12 | StringHand = iota 13 | ) 14 | func NewHandle(_type int) Handle { 15 | switch _type { 16 | case StringHand: 17 | return &StringHandle{} 18 | default: 19 | return nil 20 | } 21 | } 22 | 23 | type StringHandle struct { 24 | Content string 25 | } 26 | func (s *StringHandle) Handler() (interface{}, error){ 27 | replacer := strings.NewReplacer(" ", "") 28 | s.Content = replacer.Replace(s.Content) 29 | return s.Content, nil 30 | } 31 | -------------------------------------------------------------------------------- /yaml/v0/8statefulset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: StatefulSet 3 | metadata: 4 | namespace: k8s-example 5 | labels: 6 | app: k8s-example-statefulset 7 | name: k8s-example-statefulset 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: k8s-example-statefulset-pod 12 | serviceName: "" 13 | template: 14 | metadata: 15 | labels: 16 | app: k8s-example-statefulset-pod 17 | spec: 18 | containers: 19 | - name: nginx-statefulset 20 | imagePullPolicy: IfNotPresent 21 | image: nginx 22 | ports: 23 | - containerPort: 80 24 | -------------------------------------------------------------------------------- /yaml/v1/cronjob.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1beta1 2 | kind: CronJob 3 | metadata: 4 | name: email-cronjob 5 | labels: 6 | app: email-cronjob 7 | namespace: xw 8 | spec: 9 | jobTemplate: 10 | spec: 11 | template: 12 | spec: 13 | containers: 14 | - name: email-cronjob 15 | image: 100.125.0.198:20202/wuxiaoshen/go-anything:v0.19 16 | args: 17 | - /bin/sh 18 | - -c 19 | - /go/src/github.com/wuxiaoxiaoshen/go-anything/main.go email 20 | restartPolicy: OnFailure 21 | schedule: "45 14 * * *" 22 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "log" 5 | "os" 6 | 7 | "github.com/wuxiaoxiaoshen/go-anything/configs" 8 | 9 | "github.com/wuxiaoxiaoshen/go-anything/cmd" 10 | ) 11 | 12 | var Env string 13 | 14 | func Execute() error { 15 | e := cmd.ROOT.Execute() 16 | if e != nil { 17 | log.Println(e) 18 | return e 19 | } 20 | return nil 21 | } 22 | func init() { 23 | log.Println("Env: ", Env) 24 | } 25 | func main() { 26 | 27 | if Env == "" { 28 | configs.Env = "dev" 29 | } else { 30 | configs.Env = Env 31 | } 32 | e := Execute() 33 | if e != nil { 34 | os.Exit(1) 35 | return 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/fund/settings.go: -------------------------------------------------------------------------------- 1 | package fund 2 | 3 | var ( 4 | URL = "http://fundgz.1234567.com.cn/js/%s.js" // expire 5 | JS = "http://fund.eastmoney.com/pingzhongdata/%s.js" 6 | HOME = "http://fund.eastmoney.com/%s.html" 7 | STOCK = "http://pdfm.eastmoney.com/EM_UBG_PDTI_Fast/api/js?id=%s&rtntype=5" 8 | GLOBAL = "http://15.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=240&fs=i:1.000001,i:0.399001,i:0.399005,i:0.399006,i:1.000300,i:100.HSI,i:100.HSCEI,i:124.HSCCI,i:100.TWII,i:100.N225,i:100.KOSPI200,i:100.KS11,i:100.STI,i:100.SENSEX,i:100.KLSE,i:100.SET,i:100.PSI,i:100.KSE100,i:100.VNINDEX,i:100.JKSE,i:100.CSEALL" 9 | ) 10 | -------------------------------------------------------------------------------- /yaml/README.md: -------------------------------------------------------------------------------- 1 | # k8s 配置文件 2 | 3 | 4 | ## 配置:ConfigMap 5 | 6 | > Redis, MySQL, Kafka, email 公开配置 7 | 8 | ```text 9 | go-anything-configMap.yaml 10 | ``` 11 | 12 | ## 密钥:Secret 13 | 14 | > Redis, MySQL, Kafka, email 私有配置 15 | 16 | ```text 17 | go-anything-secret.yaml 18 | ``` 19 | 20 | ## Job 21 | 22 | > 服务启动时数据库迁移 23 | 24 | ```text 25 | go-anything-job.yaml 26 | ``` 27 | 28 | ## CronJob 29 | 30 | > 定时任务: 31 | > 每天的邮件 19:00; 32 | > 每天的基金指数现状 14:45; 33 | > 健康检查每 5 分钟检测系统运行状态 34 | > Bing 壁纸:先下载,再转存七牛云,最后邮件 35 | 36 | ```text 37 | go-anything-cronJob.yaml 38 | ``` 39 | 40 | ## Deployment 41 | 42 | > 组合容器服务 43 | 44 | -------------------------------------------------------------------------------- /yaml/v0/4replicaset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: ReplicaSet 3 | metadata: 4 | namespace: k8s-example 5 | labels: 6 | app: k8s-example-replicaset 7 | name: k8s-example-replicaset 8 | name: k8s-example-replicaset 9 | spec: 10 | selector: 11 | matchLabels: 12 | app: k8s-example-nginx-pod 13 | replicas: 2 14 | template: 15 | metadata: 16 | labels: 17 | app: k8s-example-nginx-pod 18 | spec: 19 | containers: 20 | - name: k8s-example-nginx-pod 21 | image: nginx 22 | imagePullPolicy: IfNotPresent 23 | ports: 24 | - containerPort: 80 25 | -------------------------------------------------------------------------------- /model/sql/doodles.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE IF NOT EXISTS `google_doodles`( 3 | `id` int unsigned NOT NULL AUTO_INCREMEN, 4 | `share_text` varchar(255) NOT NULL, 5 | `name` varchar(64) NOT NULL, 6 | `title` varchar(64) NOT NULL, 7 | `width` varchar(12) NOT NULL , 8 | `height` varchar(12) NOT NULL , 9 | `date` TIMESTAMP NOT NULL , 10 | `url_high` varchar(128) NOT NULL, 11 | `url` varchar(128) NOT NULL , 12 | `alternate_url` varchar(1024) NOT NULL, 13 | PRIMARY KEY (`id`), 14 | KEY `idx_title` (`title`), 15 | KEY `idx_date` (`date`) 16 | ) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 17 | -------------------------------------------------------------------------------- /src/oasis/READ.md: -------------------------------------------------------------------------------- 1 | # 分析过程 2 | 3 | uid: 用户唯一id 4 | 5 | 几乎所有的请求带有这几个URL参数: 6 | - ua: smartisan-OD103__oasis__1.4.17__Android__Android7.1.1 7 | - wm: 9009_90025 8 | - aid: 01A0QclqWHjYDiPccIVGsKkq8VuZpCUIaUQOAW6PCht1I4BUo. 9 | - cuid: uid 10 | - sign: a4f4d750343e113b29d71b923c300f12 // 变动: md5 32位 || 难点 gsid 11 | - platform: ANDROID 12 | - cfrom: 2899595010 13 | - version: 1.4.17 // 绿洲 app 版本 14 | - timestamp: 1572242797242 // 时间戳 15 | - noncestr: w99QX4s989sn6o0fdd810I2O0Z3G55 // 变动: 随机字符 30 位 16 | 17 | Header: 18 | - gsid: rWf/skaVKcSmS1v+WmGQmFFI5rCwUfhG7kx9FomaSbnUzxZZw6ViLbReM6RRMZRY5d8XhiG7PlDBK+wW6ApbU2dxl1gxx9OX41NSAbEqKIONpCIgJM9FBYKAypZZjwxQ -------------------------------------------------------------------------------- /yaml/v1/kafka-single-zookeeper.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | namespace: xw 5 | name: zookeeper-deployment 6 | labels: 7 | app: zookeeper 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: zookeeper 12 | strategy: 13 | rollingUpdate: 14 | maxUnavailable: 1 15 | maxSurge: 1 16 | template: 17 | metadata: 18 | labels: 19 | app: zookeeper 20 | spec: 21 | containers: 22 | - image: wurstmeister/zookeeper 23 | name: zookeeeper 24 | imagePullPolicy: IfNotPresent 25 | ports: 26 | - containerPort: 2181 27 | 28 | 29 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.13.4 2 | 3 | MAINTAINER XieWei(1156143589@qq.com) 4 | LABEL maintainer=XieWei:1156143589@qq.com 5 | 6 | EXPOSE 8888 8081 7 | 8 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime;\ 9 | echo "Asia/Shanghai" > /etc/timezone;\ 10 | dpkg-reconfigure -f noninteractive tzdata 11 | 12 | WORKDIR /go/go-anything 13 | RUN echo $PWD ;\ 14 | mkdir -p /go/go-anything 15 | COPY . /go/go-anything 16 | 17 | RUN apt-get update && apt-get install -q -y vim nginx git openssh-client cron && apt-get clean;\ 18 | go mod vendor;\ 19 | make remove;\ 20 | make prod;\ 21 | echo Succeed! 22 | CMD ["bash","-c", "/go/go-anything/go-anything"] 23 | -------------------------------------------------------------------------------- /cmd/configs.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "log" 5 | 6 | "github.com/wuxiaoxiaoshen/go-anything/configs" 7 | 8 | "github.com/spf13/cobra" 9 | ) 10 | 11 | var ConfigsCmd = &cobra.Command{ 12 | Use: "configs", 13 | Short: "Get configs", 14 | Long: "Get All Configs by Command", 15 | Aliases: []string{"c", "-c", "C", "-C"}, 16 | PreRun: func(cmd *cobra.Command, args []string) { 17 | log.Println("Run ./go-anything configs arg") 18 | }, 19 | Run: func(cmd *cobra.Command, args []string) { 20 | log.Println(configs.DefaultConfigs.LoadConfigs(args[0])) 21 | }, 22 | PostRun: func(cmd *cobra.Command, args []string) { 23 | log.Println("Say Bye!") 24 | }, 25 | } 26 | -------------------------------------------------------------------------------- /src/holiday/assistance_test.go: -------------------------------------------------------------------------------- 1 | package holiday 2 | 3 | import ( 4 | "fmt" 5 | "log" 6 | "net/url" 7 | "testing" 8 | ) 9 | 10 | func TestPageSource(t *testing.T) { 11 | 12 | v := url.Values{} 13 | v.Add("q", fmt.Sprintf(HOLIDAY_STRING, 2020)) 14 | url_ := fmt.Sprintf(HOST, v.Encode()) 15 | log.Println(url_) 16 | content := pageSource(url_) 17 | log.Println(content) 18 | } 19 | 20 | func TestGetContent(t *testing.T) { 21 | short := urlEncode(map[string]string{ 22 | "q": fmt.Sprintf(HOLIDAY_STRING, 2019), 23 | }) 24 | content := pageSource(fmt.Sprintf(HOST, short)) 25 | newContent := getContent(content, fmt.Sprintf(HOST, short)) 26 | fmt.Println(newContent) 27 | } 28 | -------------------------------------------------------------------------------- /yaml/v2/4kafka_preset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: settings.k8s.io/v1alpha1 2 | kind: PodPreset 3 | metadata: 4 | name: xw-example-kafka-podpreset 5 | labels: 6 | app: xw-example-kafka-podpreset 7 | namespace: xw-example 8 | spec: 9 | selector: 10 | matchLabels: 11 | role: kafka 12 | envFrom: 13 | - configMapRef: 14 | name: xw-example-configmap 15 | env: 16 | - name: KAFKA_PORT 17 | value: $(kafka.KAFKA_PORT) 18 | - name: KAFKA_LISTENERS 19 | value: $(kafka.KAFKA_LISTENERS) 20 | - name: KAFKA_ADVERTISED_PORT 21 | value: $(kafka.KAFKA_ADVERTISED_PORT) 22 | - name: KAFKA_ZOOKEEPER_CONNECT 23 | value: $(kafka.KAFKA_ZOOKEEPER_CONNECT) -------------------------------------------------------------------------------- /pkg/page_source/page_source.go: -------------------------------------------------------------------------------- 1 | package page_source 2 | 3 | import ( 4 | "io" 5 | "io/ioutil" 6 | "log" 7 | "net/http" 8 | ) 9 | 10 | type Request struct { 11 | R *http.Request 12 | } 13 | 14 | func (r *Request) AddParams(key string, v string) { 15 | r.R.Header.Add(key, v) 16 | } 17 | 18 | func GetPageSource(body io.Reader, r Request) (string, error) { 19 | client := http.DefaultClient 20 | response, err := client.Do(r.R) 21 | if err != nil { 22 | log.Fatal(err) 23 | return "-1", err 24 | } 25 | defer response.Body.Close() 26 | b, err := ioutil.ReadAll(response.Body) 27 | if err != nil { 28 | log.Fatal(err) 29 | return "-1", err 30 | } 31 | return string(b), nil 32 | } 33 | -------------------------------------------------------------------------------- /yaml/v2/5go-anything_preset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: settings.k8s.io/v1alpha1 2 | kind: PodPreset 3 | metadata: 4 | name: xw-example-go-anything-preset 5 | labels: 6 | app: xw-example-go-anything-preset 7 | spec: 8 | selector: 9 | matchLabels: 10 | role: go-anything 11 | envFrom: 12 | - configMapRef: 13 | name: xw-example-configmap 14 | env: 15 | - name: MYSQL_HOST 16 | value: $(mysql.MYSQL_HOST) 17 | - name: MYSQL_PORT 18 | value: $(mysql.MYSQL_PORT) 19 | - name: REDIS_HOST 20 | value: $(redis.REDIS_HOST) 21 | - name: REDIS_PORT 22 | value: $(redis.REDIS_PORT) 23 | - name: KAFKA_BROKER_LIST 24 | value: $(kafka.KAFKA_BROKER_LIST) -------------------------------------------------------------------------------- /doc/doodles/2000-2.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 2 月 8 | 9 |
10 | 11 | 12 | 2000年情人节 #GoogleDoodle 13 |
2000年情人节
2000年2月14日
14 | 15 | 2000年土拨鼠日 #GoogleDoodle 16 |
2000年土拨鼠日
2000年2月2日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2001-3.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 3 月 8 | 9 |
10 | 11 | 12 | 2001年圣帕特里克节 #GoogleDoodle 13 |
2001年圣帕特里克节
2001年3月17日
14 | 15 | 2001年胡里节 #GoogleDoodle 16 |
2001年胡里节
2001年3月9日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2001-8.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 8 月 8 | 9 |
10 | 11 | 12 | 2001年韩国光复节 #GoogleDoodle 13 |
2001年韩国光复节
2001年8月15日
14 | 15 | 2001年瑞士国庆日 #GoogleDoodle 16 |
2001年瑞士国庆日
2001年8月1日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2001-1.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 1 月 8 | 9 |
10 | 11 | 12 | 2001年农历新年 #GoogleDoodle 13 |
2001年农历新年
2001年1月24日
14 | 15 | 2001年新年快乐! #GoogleDoodle 16 |
2001年新年快乐!
2001年1月1日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /yaml/v1/kafka-single-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | labels: 5 | app: zookeeper-service 6 | name: zookeeper-service 7 | namespace: xw 8 | spec: 9 | ports: 10 | - port: 2181 11 | name: zookeeper-port 12 | targetPort: 2181 13 | selector: 14 | app: zookeeper 15 | type: NodePort 16 | clusterIP: 10.247.9.147 17 | --- 18 | apiVersion: v1 19 | kind: Service 20 | metadata: 21 | name: kafka-service 22 | labels: 23 | app: kafka 24 | namespace: xw 25 | spec: 26 | type: NodePort 27 | clusterIP: 10.247.32.246 28 | ports: 29 | - port: 9092 30 | targetPort: 9092 31 | protocol: TCP 32 | nodePort: 30092 33 | selector: 34 | app: kafka 35 | -------------------------------------------------------------------------------- /doc/doodles/2005-1.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 1 月 8 | 9 |
10 | 11 | 12 | 2005年澳大利亚日 #GoogleDoodle 13 |
2005年澳大利亚日
2005年1月25日
14 | 15 | 2005年新年快乐! #GoogleDoodle 16 |
2005年新年快乐!
2005年1月1日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/money/2017互联网+指数经济报告.pdf.md: -------------------------------------------------------------------------------- 1 |

2017互联网+指数经济报告.pdf

2 | 3 | 4 | 5 | 6 |

7 | 定投哥@区块链定投 || 2017-04-20 05:26:30 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 我把文档发一下,之前有个哥们发了链接,看起来不方便。 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 |
-------------------------------------------------------------------------------- /doc/money/揭开SEO的真面目.md: -------------------------------------------------------------------------------- 1 |

揭开SEO的真面目

2 | 3 | 4 | 5 | 6 |

7 | 托尼先生 || 2017-07-25 11:24:50 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 根据亦大的建议写了一篇介绍SEO的文章,希望能给圈友们带来一点帮助,由于内容较长,就不直接贴进来了😂 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 |
-------------------------------------------------------------------------------- /doc/money/11位网赚联盟大牛谈初学者的错误.md: -------------------------------------------------------------------------------- 1 |

11位网赚联盟大牛谈初学者的错误

2 | 3 | 4 | 5 | 6 |

7 | 萧遥 || 2017-05-10 12:33:57 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 11 位网赚联盟大牛谈初学者的错误。看起来很多亚洲人,尤其是发言都带自己Blog 网址,可以深入看看。 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 |
-------------------------------------------------------------------------------- /docker/docker/etcd.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | etcd: 4 | image: quay.io/coreos/etcd:v3.3.18 5 | volumes: 6 | - data:/etcd-data 7 | container_name: etcd0 8 | ports: 9 | - 23794:2379 10 | - 23804:2380 11 | command: 12 | /usr/local/bin/etcd 13 | -name etcd0 14 | -data-dir=/etcd-data 15 | -advertise-client-urls http://0.0.0.0:2379 16 | -listen-client-urls http://0.0.0.0:2379 17 | -initial-advertise-peer-urls=http://0.0.0.0:2380 18 | -listen-peer-urls http://0.0.0.0:2380 19 | -initial-cluster-token etcd-cluster 20 | -initial-cluster etcd0=http://0.0.0.0:2380 21 | -initial-cluster-state new 22 | networks: 23 | go-anything-network: 24 | driver: bridge 25 | volumes: 26 | data: {} 27 | -------------------------------------------------------------------------------- /pkg/concurrency/concurrency.go: -------------------------------------------------------------------------------- 1 | package concurrency 2 | 3 | import "sync" 4 | 5 | type C struct { 6 | number int 7 | ch chan struct{} 8 | wg *sync.WaitGroup 9 | } 10 | 11 | // New is used to initial a concurrent control object 12 | func NewConCurrency(limit int) *C { 13 | return &C{ 14 | wg: &sync.WaitGroup{}, 15 | ch: make(chan struct{}, limit), 16 | number: limit, 17 | } 18 | } 19 | 20 | // Add is used to add a task 21 | func (c *C) Add(n int) { 22 | c.wg.Add(n) 23 | for n > 0 { 24 | n-- 25 | c.ch <- struct{}{} 26 | } 27 | } 28 | 29 | // Done is used to accomplish a task 30 | func (c *C) Done() { 31 | c.wg.Done() 32 | <-c.ch 33 | } 34 | 35 | // Wait is used to wg for all tasks to be completed 36 | func (c *C) Wait() { 37 | c.wg.Wait() 38 | } 39 | -------------------------------------------------------------------------------- /src/k8s/param.go: -------------------------------------------------------------------------------- 1 | package k8s 2 | 3 | // CreateTopicParam 4 | type ( 5 | CreateTopicParam struct { 6 | Name string `json:"name" form:"name"` 7 | Partition int32 `json:"partition" form:"partition"` 8 | Factor int16 `json:"factor" form:"factor"` 9 | } 10 | ) 11 | 12 | func (C CreateTopicParam) IsValid() bool { 13 | if C.Name == "" { 14 | return false 15 | } 16 | if C.Partition < 0 || C.Partition > 100 { 17 | return false 18 | } 19 | return true 20 | } 21 | 22 | // CreateUserParam 23 | type ( 24 | CreateUserParam struct { 25 | Name string `json:"name" form:"name"` 26 | Age int `json:"age" form:"age"` 27 | } 28 | ) 29 | 30 | func (C CreateUserParam) IsValid() bool { 31 | if C.Name == "" || C.Age == 0 { 32 | return false 33 | } 34 | return true 35 | } 36 | -------------------------------------------------------------------------------- /yaml/v2/5go-anything_volume.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | namespace: xw-example 5 | name: xw-example-pvc-go-anything 6 | labels: 7 | app: xw-example-pvc-go-anything 8 | name: xw-example-pvc-go-anything 9 | spec: 10 | accessModes: 11 | - ReadWriteOnce 12 | resources: 13 | requests: 14 | storage: 1Gi 15 | storageClassName: manual 16 | --- 17 | apiVersion: v1 18 | kind: PersistentVolume 19 | metadata: 20 | namespace: xw-example 21 | name: xw-example-pv-go-anything 22 | labels: 23 | app: xw-example-pv-go-anything 24 | name: xw-example-pv-go-anything 25 | spec: 26 | capacity: 27 | storage: 2Gi 28 | accessModes: 29 | - ReadWriteMany 30 | hostPath: 31 | path: .xw/statefulset 32 | storageClassName: manual 33 | -------------------------------------------------------------------------------- /doc/doodles/2002-4.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 4 月 8 | 9 |
10 | 11 | 12 | 2002年圣乔治日 #GoogleDoodle 13 |
2002年圣乔治日
2002年4月23日
14 | 15 | 2002年地球日 #GoogleDoodle 16 |
2002年地球日
2002年4月22日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2004-5.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 5 月 8 | 9 |
10 | 11 | 12 | 2004年母亲节 #GoogleDoodle 13 |
2004年母亲节
2004年5月8日
14 | 15 | 2004年儿童节 #GoogleDoodle 16 |
2004年儿童节
2004年5月4日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2002-8.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 8 月 8 | 9 |
10 | 11 | 12 | 2002年韩国光复节 #GoogleDoodle 13 |
2002年韩国光复节
2002年8月15日
14 | 15 | 安迪·沃霍尔诞辰74周年 #GoogleDoodle 16 |
安迪·沃霍尔诞辰74周年
2002年8月6日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2003-5.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 5 月 8 | 9 |
10 | 11 | 12 | 2003年母亲节 #GoogleDoodle 13 |
2003年母亲节
2003年5月10日
14 | 15 | 2003年儿童节 #GoogleDoodle 16 |
2003年儿童节
2003年5月4日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.github/workflows/go.yml: -------------------------------------------------------------------------------- 1 | name: Go 2 | on: [push] 3 | jobs: 4 | 5 | build: 6 | name: Build 7 | runs-on: ubuntu-latest 8 | steps: 9 | 10 | - name: Set up Go 1.13 11 | uses: actions/setup-go@v1 12 | with: 13 | go-version: 1.13 14 | id: go 15 | 16 | - name: Check out code into the Go module directory 17 | uses: actions/checkout@v1 18 | 19 | - name: Get dependencies 20 | run: | 21 | go get -v -t -d ./... 22 | if [ -f Gopkg.toml ]; then 23 | curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh 24 | dep ensure 25 | fi 26 | - name: Build 27 | run: go build -v -o go-anything main.go 28 | - name: Make Prod 29 | run: make prod 30 | - name: Email 31 | run: ./go-anything email 32 | -------------------------------------------------------------------------------- /doc/doodles/2002-3.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 3 月 8 | 9 |
10 | 11 | 12 | 2002年圣帕特里克节 #GoogleDoodle 13 |
2002年圣帕特里克节
2002年3月17日
14 | 15 | 皮特·蒙德里安诞辰130周年 #GoogleDoodle 16 |
皮特·蒙德里安诞辰130周年
2002年3月6日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2003-9.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 9 月 8 | 9 |
10 | 11 | 12 | Google 5周岁生日 #GoogleDoodle 13 |
Google 5周岁生日
2003年9月8日
14 | 15 | 2003年韩国感恩节 #GoogleDoodle 16 |
2003年韩国感恩节
2003年9月6日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/money/为什么你的网红不带货?.md: -------------------------------------------------------------------------------- 1 |

为什么你的网红不带货?

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2019-11-06 00:41:46 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 逻辑清晰,值得一看。 21 | 22 | <e type="web" href="https://mp.weixin.qq.com/s/3q4FUBq-_6ZIkAT7UoPifA" title="为什么你的网红不带货?" cache="" /> 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 |
-------------------------------------------------------------------------------- /yaml/v1/README.md: -------------------------------------------------------------------------------- 1 | # k8s 部署方法 2 | 3 | ### namespace 4 | 5 | 创建新的 namespace, 否则使用的默认的 default。 6 | 7 | 原因是:进行隔离(逻辑上) 8 | 9 | 命名规则:小写字母,数字, "-" 10 | 11 | ### configMap/secret/persistentVolume/persistentVolumeClaim 12 | 13 | 对项目进行配置文件,比如某些容器启动需要参数,都规则到相应的配置中来。 14 | 对项目进行持久化存储约束,比如需要映射文件到本地环境持久化。 15 | 16 | ### service 17 | 18 | 优先创建服务和 POD 之间的强连接。 19 | 20 | 这个时候需要对 POD 的 label 以及暴露的端口明确。依据项目,看是否使用 NodePort 还是 ClusterIP 的形式对外访问。 21 | 22 | > 集群内使用这种形式访问 ..svc.cluster.local 23 | ### Preset 24 | 25 | 预先设置 pod 参数,以注入的形式注入 pod, 精简 pod 配置文件。 26 | 27 | 预设置的参数有: 28 | 29 | - env 30 | - volume 31 | 32 | ### 控制器 33 | 34 | - deployment 35 | - statefulSet 36 | - job 37 | - cronJob 38 | - daemon 39 | - replicaSet 40 | 41 | 等控制器约束,核心是编写 Yaml 文件,描述对象。 42 | 43 | 要注意这些字段:labels 和 service 中定义的一致。这样 service 才能和对应的 POD 自动关联起来。 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /model/facebookAds.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | type FaceBookAds struct { 4 | BrandName string `json:"brand_name"` // 品牌名称 5 | //BrandId string `json:"brand_id"` // 品牌ID 6 | //Like int `json:"like"` // 主页获赞 7 | //BrandCrateTime string `json:"brand_crate_time"` // 主页创建时间 8 | Status string `json:"status"` // 投放状态 9 | Version string `json:"version"` // 版本 10 | Number string `json:"number"` // 编号 11 | RunningTime string `json:"running_time"` // 广告投放时间 12 | BrandContent string `json:"brand_content"` // 文案内容 13 | AdVideoUrl string `json:"ad_video_url"` // 广告视频地址 14 | AdImageUrl string `json:"ad_image_url"` // 广告封面地址 15 | AdContents string `json:"ad_contents"` // 广告宣语 16 | ShoppingUrl string `json:"shopping_url"` // 购买时跳转的链接 17 | ShoppingHost string `json:"shopping_host"` // 购买链接域名 18 | } 19 | -------------------------------------------------------------------------------- /doc/money/大数据指数平台聚合思路.md: -------------------------------------------------------------------------------- 1 |

大数据指数平台聚合思路

2 | 3 | 4 | 5 | 6 |

7 | 钱串串 || 2017-03-24 06:21:00 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 分享一个思路:现在有了多个大数据指数平台,如果有人做一个网站,可以同时调动某几个关键词的这几个指数情况,并提供进一步的分析和综合工具,并生成报表,我觉得基础功能会有不少人用,升级的分析服务或许也有人愿意付费 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | 次元 : 参照很多舆论监控网站 37 |
38 | 39 |
40 |
-------------------------------------------------------------------------------- /src/Railway12306/param.go: -------------------------------------------------------------------------------- 1 | package Railway12306 2 | 3 | import ( 4 | "fmt" 5 | "time" 6 | ) 7 | 8 | type searchParam struct { 9 | Name string `json:"en"` 10 | } 11 | 12 | type ticketsParams struct { 13 | Date string `json:"date"` 14 | FromPlace string `json:"from_place"` 15 | ToPlace string `json:"to_place"` 16 | Type int `json:"type"` 17 | } 18 | 19 | var defaultTicketsParams = ticketsParams{ 20 | Date: "2019-10-21", 21 | FromPlace: "IUQ", 22 | ToPlace: "HEQ", 23 | Type: 1, 24 | } 25 | 26 | func (t ticketsParams) Valid() error { 27 | d, e := time.Parse("2006-01-02", t.Date) 28 | if e != nil { 29 | return fmt.Errorf("date format error") 30 | } 31 | if d.Before(time.Now()) { 32 | return fmt.Errorf("date should be today or future") 33 | } 34 | if _, ok := TickType[t.Type]; !ok { 35 | return fmt.Errorf("type should be in (1~4)") 36 | } 37 | return nil 38 | } 39 | -------------------------------------------------------------------------------- /doc/money/社群要筛掉喜欢薅羊毛的人.md: -------------------------------------------------------------------------------- 1 |

社群要筛掉喜欢薅羊毛的人

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2019-04-11 02:51:15 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 社群里面尽可能要筛掉喜欢薅社群羊毛的人,他们是社群的害虫,给钱也不要让他们进来。 21 | 22 | 典型如进群之后不按社群规矩来,二话不说开始加群好友,挨个加一遍,心里喜滋滋的觉得自己赚了的人。 23 | 24 | 一个社群,这样的人多了,就会很成功的废掉。 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | 谢鹏(抖音带鱼数据) : 脸红 41 |
42 | 43 |
44 |
-------------------------------------------------------------------------------- /doc/doodles/2005-6.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 6 月 8 | 9 |
10 | 11 | 12 | 2005年父亲节 #GoogleDoodle 13 |
2005年父亲节
2005年6月18日
14 | 15 | 弗兰克·劳埃德·赖特诞辰138周年 #GoogleDoodle 16 |
弗兰克·劳埃德·赖特诞辰138周年
2005年6月8日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/doodles/2003-3.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 3 月 8 | 9 |
10 | 11 | 12 | 阿尔伯特·爱因斯坦诞辰124周年 #GoogleDoodle 13 |
阿尔伯特·爱因斯坦诞辰124周年
2003年3月14日
14 | 15 | 米开朗琪罗诞辰528周年 #GoogleDoodle 16 |
米开朗琪罗诞辰528周年
2003年3月5日
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /yaml/v1/job.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: create-db-table-job 5 | labels: 6 | app: create-db-table-job 7 | namespace: xw 8 | spec: 9 | template: 10 | spec: 11 | containers: 12 | - name: create-db-table-job 13 | image: 100.125.0.198:20202/wuxiaoshen/go-anything:v0.19 14 | imagePullPolicy: IfNotPresent 15 | command: ["bash","-c", "/go/src/github.com/wuxiaoxiaoshen/go-anything/go-anything k8s"] 16 | env: 17 | - name: MYSQL_HOST 18 | value: "119.3.198.221" 19 | - name: MYSQL_PORT 20 | value: "30000" 21 | - name: REDIS_PORT 22 | value: "31767" 23 | - name: REDIS_HOST 24 | value: "119.3.198.221" 25 | - name: KAFKA_BROKER_LIST 26 | value: "119.3.198.221:30092" 27 | restartPolicy: Never 28 | backoffLimit: 4 -------------------------------------------------------------------------------- /yaml/v1/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: mysql-service 5 | namespace: xw 6 | labels: 7 | app: mysql-service 8 | spec: 9 | selector: 10 | app: mysql 11 | ports: 12 | - port: 3306 13 | protocol: TCP 14 | targetPort: 3306 15 | type: NodePort 16 | --- 17 | apiVersion: v1 18 | kind: Service 19 | metadata: 20 | name: redis-service 21 | namespace: xw 22 | labels: 23 | app: redis-service 24 | spec: 25 | selector: 26 | app: redis 27 | ports: 28 | - port: 6379 29 | protocol: TCP 30 | targetPort: 6379 31 | type: NodePort 32 | --- 33 | apiVersion: v1 34 | kind: Service 35 | metadata: 36 | name: go-anything-service 37 | namespace: xw 38 | labels: 39 | app: go-anything-service 40 | spec: 41 | selector: 42 | app: go-anything 43 | ports: 44 | - port: 38889 45 | targetPort: 8888 46 | protocol: TCP 47 | type: NodePort 48 | -------------------------------------------------------------------------------- /doc/money/大航海计划:抖音视频制作的一些心得.md: -------------------------------------------------------------------------------- 1 |

大航海计划:抖音视频制作的一些心得

2 | 3 | 4 | 5 | 6 |

7 | 张五哥 || 2018-05-11 11:47:51 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 昨天抖音船群里分享的文字版 21 | <e type="web" href="https://mp.weixin.qq.com/s/F17ETf6uTZKZ7yUyWCidYg" title="抖音视频制作的一些心得" cache="http://cache.zsxq.com/201805/b643a60a341ebe91723c245f5772b1b334ebb4593e5480942e994ab940de2ac2" /> 22 |
23 | 24 | ### 文章配图 25 | 26 |
27 | 28 |
29 | 30 | 31 | ## 评论 32 | 33 |
34 |
35 | 36 |
37 |
-------------------------------------------------------------------------------- /doc/money/淘宝上开淘宝客店铺.md: -------------------------------------------------------------------------------- 1 |

淘宝上开淘宝客店铺

2 | 3 | 4 | 5 | 6 |

7 | 华安知 || 2017-03-22 12:21:57 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 点子三,之前有亦仁老师有说过在淘宝卖京东产品的例子,目前还有一种玩法,就是做淘宝客店铺,软件采集淘宝联盟里面有优惠券,返利的产品,批量上架到自己店里面,根据淘宝的一些规则,比如下架前的商品会自动提权,有机会显示到前面,通过淘宝自然流量或者其他一些方法引人下订单,下单之后,自己通过淘宝联盟链接去其他店里面下订单。赚返利。目前这个有几个工作室在做,做的比较大了。软件卖1680一个,听说收入非常好。 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | along : 学习了 37 |
38 | 39 |
40 |
-------------------------------------------------------------------------------- /docker/docker/yapi.yaml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | yapi: 4 | image: mrjin/yapi:latest 5 | container_name: yapi 6 | environment: 7 | - VERSION=1.5.6 8 | - LOG_PATH=/tmp/yapi.log 9 | - HOME=/home 10 | - PORT=3000 11 | - ADMIN_EMAIL=1156143589@qq.com 12 | - DB_SERVER=mongo 13 | - DB_NAME=yapi 14 | - DB_PORT=27017 15 | restart: always 16 | ports: 17 | - 127.0.0.1:3000:3000 18 | volumes: 19 | - ~/data/yapi/log/yapi.log:/home/vendors/log # log dir 20 | depends_on: 21 | - mongo 22 | entrypoint: "bash /wait-for-it.sh mongo:27017 -- entrypoint.sh" 23 | networks: 24 | - back-net 25 | mongo: 26 | image: mongo 27 | container_name: mongo 28 | restart: always 29 | ports: 30 | - 127.0.0.1:27017:27017 31 | volumes: 32 | - ~/data/yapi/mongodb:/data/db #db dir 33 | networks: 34 | - back-net 35 | networks: 36 | back-net: 37 | driver: bridge -------------------------------------------------------------------------------- /doc/doodles/1999-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 山姆大叔搜索1 #GoogleDoodle 13 |
山姆大叔搜索1
1999年11月30日
14 | 15 | 山姆大叔搜索2 #GoogleDoodle 16 |
山姆大叔搜索2
1999年11月30日
17 | 18 | 1999年感恩节 #GoogleDoodle 19 |
1999年感恩节
1999年11月23日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2001-7.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 7 月 8 | 9 |
10 | 11 | 12 | 2001年巴士底日 #GoogleDoodle 13 |
2001年巴士底日
2001年7月14日
14 | 15 | 2001年美国独立日 #GoogleDoodle 16 |
2001年美国独立日
2001年7月4日
17 | 18 | 2001年加拿大国庆日 #GoogleDoodle 19 |
2001年加拿大国庆日
2001年7月1日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2002-7.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 7 月 8 | 9 |
10 | 11 | 12 | 2002年巴士底日 #GoogleDoodle 13 |
2002年巴士底日
2002年7月14日
14 | 15 | 2002年美国独立日 #GoogleDoodle 16 |
2002年美国独立日
2002年7月4日
17 | 18 | 2002年加拿大国庆日 #GoogleDoodle 19 |
2002年加拿大国庆日
2002年7月1日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/xc/xc_test.go: -------------------------------------------------------------------------------- 1 | package xc 2 | 3 | import ( 4 | "encoding/json" 5 | "fmt" 6 | "testing" 7 | ) 8 | 9 | func TestXcCity(t *testing.T) { 10 | var h HotelForXc 11 | var result interface{} 12 | content := h.DoForCity() 13 | json.Unmarshal([]byte(content), &result) 14 | fmt.Println(result) 15 | } 16 | 17 | func TestXcHotel(t *testing.T) { 18 | var h HotelForXc 19 | //var result interface{} 20 | content := h.DoForHotel(1) 21 | fmt.Println(content) 22 | } 23 | 24 | func TestXcDetail(t *testing.T) { 25 | var h HotelForXc 26 | content := h.DoForHotelDetail(608516) 27 | fmt.Println(content) 28 | } 29 | 30 | func TestXcTest(t *testing.T) { 31 | var h HotelForXc 32 | //https://m.ctrip.com/webapp/hotel/hoteldetail/608516.html&contrl=0&pay=0&latlon=#fromList 33 | url := "http://m.ctrip.com/restapi/get/list" 34 | //url := "https://m.ctrip.com/restapi/h5api/searchapp/search?source=mobileweb&action=autocomplete&contentType=json&keyword=北京" 35 | fmt.Println(h.DoForTest(url)) 36 | 37 | } 38 | -------------------------------------------------------------------------------- /yaml/v2/7go-anything_pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: xw-example-pod 5 | namespace: xw-example 6 | labels: 7 | app: xw-example-pod 8 | name: xw-example-pod 9 | spec: 10 | initContainers: 11 | - name: xw-example-go-anything-pod-init 12 | image: swr.cn-north-1.myhuaweicloud.com/wuxiaoshen/go-anything:v0.23 13 | imagePullPolicy: IfNotPresent 14 | command: ["cp", "/go/go-anything", "/app"] 15 | volumeMounts: 16 | - mountPath: /app 17 | name: xw-example-go-anything-volume 18 | containers: 19 | - name: xw-example-go-anything-pod 20 | image: swr.cn-north-1.myhuaweicloud.com/wuxiaoshen/go-anything:v0.23 21 | imagePullPolicy: IfNotPresent 22 | ports: 23 | - containerPort: 8888 24 | volumeMounts: 25 | - mountPath: /go/go-anything 26 | name: xw-example-go-anything-volume 27 | volumes: 28 | - name: xw-example-go-anything-volume 29 | emptyDir: 30 | {} -------------------------------------------------------------------------------- /yaml/v1/redis-deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: redis-deployment 5 | namespace: xw 6 | labels: 7 | app: redis-deployment 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: redis 12 | replicas: 2 13 | strategy: 14 | rollingUpdate: 15 | maxUnavailable: 1 16 | maxSurge: 1 17 | template: 18 | metadata: 19 | labels: 20 | app: redis 21 | spec: 22 | containers: 23 | - name: redis 24 | imagePullPolicy: Always 25 | image: redis 26 | ports: 27 | - containerPort: 6379 28 | env: 29 | - name: REDIS_AUTH 30 | valueFrom: 31 | configMapKeyRef: 32 | key: redis.REDIS_AUTH 33 | name: my-configmap 34 | command: 35 | - redis-server 36 | - --appendonly yes 37 | - --requirepass 38 | args: 39 | - "$(REDIS_AUTH)" 40 | -------------------------------------------------------------------------------- /cmd/makemoney.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "bytes" 5 | "github.com/spf13/cobra" 6 | "github.com/wuxiaoxiaoshen/go-anything/src/MakeMoney" 7 | "html/template" 8 | "log" 9 | "os" 10 | ) 11 | 12 | var MakeMoneyCmd = &cobra.Command{ 13 | Use: "makeMoney", 14 | Run: func(cmd *cobra.Command, args []string) { 15 | mm := MakeMoney.DefaultRealMakeMoneyAction 16 | content := mm.Do() 17 | t := template.New("doc") 18 | for _, i := range content { 19 | tem, e := t.ParseFiles("./doc/makemoney/template.md") 20 | if e != nil { 21 | log.Println(e) 22 | return 23 | } 24 | var byt bytes.Buffer 25 | e = tem.Execute(&byt, i) 26 | if e != nil { 27 | log.Println(e) 28 | return 29 | } 30 | toSave(i.Title, byt.Bytes()) 31 | 32 | } 33 | 34 | }, 35 | } 36 | 37 | func toSave(title string, content []byte) error { 38 | f, e := os.Create(title) 39 | if e != nil { 40 | log.Println(e) 41 | return e 42 | } 43 | f.Write(content) 44 | defer f.Close() 45 | return nil 46 | } 47 | -------------------------------------------------------------------------------- /yaml/v1/go-anything-deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: go-anything-deployment 5 | labels: 6 | app: go-anything-deployment 7 | namespace: xw 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: go-anything 12 | strategy: 13 | rollingUpdate: 14 | maxSurge: 1 15 | maxUnavailable: 1 16 | replicas: 2 17 | template: 18 | metadata: 19 | labels: 20 | app: go-anything 21 | spec: 22 | containers: 23 | - name: go-anything 24 | imagePullPolicy: Always 25 | image: wuxiaoshen/go-anything:v0.15 26 | ports: 27 | - containerPort: 8888 28 | env: 29 | - name: MYSQL_HOST 30 | value: "" 31 | - name: MYSQL_PORT 32 | value: "" 33 | - name: REDIS_PORT 34 | value: "" 35 | - name: REDIS_HOST 36 | value: "" 37 | - name: KAFKA_BROKER_LIST 38 | value: "" 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Go-Anything

2 |

3 | 4 | Author 5 | 6 | 7 | Author 8 | 9 |

10 | 11 | 12 | > 万物皆可爬 13 | 14 | 1. 微信平台 15 | 2. 番号查询 16 | 3. 火车票查询 17 | 4. Bing 每日壁纸 18 | 5. 天天基金 19 | 6. 定时任务 20 | 7. 知乎热榜 21 | 8. 节假日官方数据来源 22 | 9. 知识星球生财有术 23 | 10. 谷歌涂鸦 24 | 11. FaceBook Ads 25 | 12. 携程酒店数据 26 | 13. 财新网 27 | 28 | ## 技术栈 29 | 30 | - mysql 31 | - redis 32 | - docker / docker-compose 33 | - go / iris 34 | - k8s 35 | - etcd 36 | - kafka 37 | - elasticSearch 38 | 39 | ## CHANGELOG 40 | 41 | - 财新网:硅谷王川全部文章 42 | - 增加生财有术知识星球精华 43 | - 增加谷歌涂鸦 44 | - 增加节假日官方通知数据来源 45 | - 增加:docker-compose ci 46 | - 增加组件:elk 47 | - githubAction: 自动编译,自动构建镜像推送至 Docker Hub 48 | - k8s 调度脚本:yaml : 使用 kubectl 启动服务 49 | - docker-compose 版本:v2.0: 本地环境一键启动服务 -------------------------------------------------------------------------------- /yaml/v1/kafka-single-deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: kafka-deployment 5 | namespace: xw 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | app: kafka 11 | template: 12 | metadata: 13 | labels: 14 | app: kafka 15 | spec: 16 | containers: 17 | - name: kafka 18 | image: wurstmeister/kafka 19 | imagePullPolicy: IfNotPresent 20 | ports: 21 | - containerPort: 9092 22 | env: 23 | - name: KAFKA_ADVERTISED_PORT 24 | value: "9092" 25 | - name: KAFKA_PORT 26 | value: "9092" 27 | - name: KAFKA_ZOOKEEPER_CONNECT 28 | value: "10.247.244.92:2181" 29 | - name: KAFKA_ADVERTISED_LISTENERS 30 | value: "PLAINTEXT://10.247.28.21:9092" 31 | - name: KAFKA_LISTENERS 32 | value: "PLAINTEXT://:9092" 33 | - name: KAFKA_BROKER_ID 34 | value: "1" 35 | 36 | -------------------------------------------------------------------------------- /configs/configs.go: -------------------------------------------------------------------------------- 1 | package configs 2 | 3 | import ( 4 | "fmt" 5 | "log" 6 | 7 | "github.com/spf13/viper" 8 | ) 9 | 10 | type ( 11 | GoAnythingConfigs struct { 12 | v *viper.Viper 13 | } 14 | ) 15 | 16 | var ( 17 | DefaultConfigs = &GoAnythingConfigs{} 18 | rootPathForConfig string 19 | Env string 20 | ) 21 | 22 | func init() { 23 | rootPathForConfig = "./configs" 24 | DefaultConfigs = newGoAnythingConfig() 25 | } 26 | 27 | func newGoAnythingConfig() *GoAnythingConfigs { 28 | v := viper.New() 29 | v.AddConfigPath(rootPathForConfig) 30 | v.SetConfigName("settings") 31 | v.AddConfigPath("./") 32 | v.SetConfigType("yaml") 33 | return &GoAnythingConfigs{v: v} 34 | } 35 | 36 | func (G *GoAnythingConfigs) LoadConfigs(key string) interface{} { 37 | if e := G.v.ReadInConfig(); e != nil { 38 | log.Println(fmt.Sprintf("configs: LoadConfigs: %s", e.Error())) 39 | return "-1" 40 | } 41 | 42 | key = fmt.Sprintf("%s.%s", Env, key) 43 | log.Println("configs: LoadConfigs: key:", key) 44 | return G.v.Get(key) 45 | } 46 | -------------------------------------------------------------------------------- /doc/money/生财日历复盘电子书:如何做一本小小的日历58天10000册销量.md: -------------------------------------------------------------------------------- 1 |

生财日历复盘电子书:如何做一本小小的日历,58 天 10000 册销量

2 | 3 | 4 | 5 | 6 |

7 | 鱼丸|亦仁助理 || 2019-12-12 08:09:42 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 双 12,鱼丸给星球圈友送上一份小小的礼物~ 21 | 22 | 那就是生财日历复盘电子书啦(文件如下) 23 | 24 | 我们总结了 58 天里卖出 10000 册生财日历的航海历程,希望对你有所收获[爱心] 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | Jimi : 和一群有情有义的人在一起,做一件有价值有趣味有挑战的事情[悠闲] 41 |
42 | 43 |
44 | 嘻嘻 : 一路走来,收获颇丰,期待下次 45 |
46 | 47 |
48 |
-------------------------------------------------------------------------------- /yaml/v2/6job_db.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: xw-example-db-job 5 | labels: 6 | app: xw-example-db-job 7 | namespace: xw-example 8 | spec: 9 | template: 10 | spec: 11 | containers: 12 | - name: xw-example-db-job 13 | image: swr.cn-north-1.myhuaweicloud.com/wuxiaoshen/go-anything:v0.22 14 | imagePullPolicy: IfNotPresent 15 | command: ["bash","-c", "/go/go-anything/go-anything k8s"] 16 | envFrom: 17 | - configMapRef: 18 | name: xw-example-configmap 19 | env: 20 | - name: MYSQL_HOST 21 | value: $(mysql.MYSQL_HOST) 22 | - name: MYSQL_PORT 23 | value: $(mysql.MYSQL_PORT) 24 | - name: REDIS_HOST 25 | value: $(redis.REDIS_HOST) 26 | - name: REDIS_PORT 27 | value: $(redis.REDIS_PORT) 28 | - name: KAFKA_BROKER_LIST 29 | value: $(kafka.KAFKA_BROKER_LIST) 30 | restartPolicy: Never 31 | backoffLimit: 4 32 | -------------------------------------------------------------------------------- /yaml/v2/6job_email.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: xw-example-db-job-2 5 | labels: 6 | app: xw-example-db-job-2 7 | namespace: xw-example 8 | spec: 9 | template: 10 | spec: 11 | containers: 12 | - name: xw-example-db-job-2 13 | image: swr.cn-north-1.myhuaweicloud.com/wuxiaoshen/go-anything:v0.22 14 | imagePullPolicy: IfNotPresent 15 | command: ["bash","-c", "/go/go-anything/go-anything email"] 16 | envFrom: 17 | - configMapRef: 18 | name: xw-example-configmap 19 | env: 20 | - name: MYSQL_HOST 21 | value: $(mysql.MYSQL_HOST) 22 | - name: MYSQL_PORT 23 | value: $(mysql.MYSQL_PORT) 24 | - name: REDIS_HOST 25 | value: $(redis.REDIS_HOST) 26 | - name: REDIS_PORT 27 | value: $(redis.REDIS_PORT) 28 | - name: KAFKA_BROKER_LIST 29 | value: $(kafka.KAFKA_BROKER_LIST) 30 | restartPolicy: Never 31 | backoffLimit: 4 32 | -------------------------------------------------------------------------------- /src/facebookAds/settings.go: -------------------------------------------------------------------------------- 1 | package facebookAds 2 | 3 | var ( 4 | faceUrl = "https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=ALL&impression_search_field=has_impressions_lifetime&view_all_page_id=106041920948430&sort_data[direction]=desc&sort_data[mode]=relevancy_monthly_grouped" 5 | facebookUrl = "https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=ALL&impression_search_field=has_impressions_lifetime&view_all_page_id=%s&sort_data[direction]=desc&sort_data[mode]=relevancy_monthly_grouped" 6 | apiUrl = "https://www.facebook.com/ads/library/async/search_ads/?forward_cursor=AQHRH0akOCt3rGrKpzLjvSCfI1PPfO1Cill5A7_RXRjvk5KIQdwLdZb7eo5STkxDN9jL&backward_cursor=AQHRmUEqhUnDpSfENWnCBZQPAKpR0LK8n1cTiR2RaiLL-aCqF4iDHMPHSuKMOnVt7sIS&session_id=60ad2ccb-0033-44cc-bc7b-e409b5adda14&collation_token=b4879479-184d-43a7-845a-dbc51b3d24f1&count=28&active_status=all&ad_type=all&countries[0]=ALL&impression_search_field=has_impressions_lifetime&view_all_page_id=106041920948430&sort_data[direction]=desc&sort_data[mode]=relevancy_monthly_grouped" 7 | ) 8 | -------------------------------------------------------------------------------- /doc/doodles/2000-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 2000年感恩节 #GoogleDoodle 13 |
2000年感恩节
2000年11月23日
14 | 15 | 2000年七五三节 #GoogleDoodle 16 |
2000年七五三节
2000年11月15日
17 | 18 | 2000年美国大选 #GoogleDoodle 19 |
2000年美国大选
2000年11月7日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2003-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 2003年感恩节 #GoogleDoodle 13 |
2003年感恩节
2003年11月26日
14 | 15 | 2003年成人节 #GoogleDoodle 16 |
2003年成人节
2003年11月14日
17 | 18 | 2003年阵亡将士纪念日 #GoogleDoodle 19 |
2003年阵亡将士纪念日
2003年11月11日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2001-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 2001年感恩节 #GoogleDoodle 13 |
2001年感恩节
2001年11月22日
14 | 15 | 克劳德·莫奈诞辰161周年 #GoogleDoodle 16 |
克劳德·莫奈诞辰161周年
2001年11月14日
17 | 18 | 2001年停战纪念日 #GoogleDoodle 19 |
2001年停战纪念日
2001年11月11日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /yaml/v2/4redis.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: xw-example-redis-deployment 5 | labels: 6 | app: xw-example-redis-deployment 7 | namespace: xw-example 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: xw-example-redis 12 | replicas: 2 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxSurge: 1 17 | maxUnavailable: 1 18 | template: 19 | metadata: 20 | labels: 21 | app: xw-example-redis 22 | role: redis 23 | spec: 24 | containers: 25 | - name: redis 26 | imagePullPolicy: IfNotPresent 27 | image: redis 28 | ports: 29 | - containerPort: 6379 30 | envFrom: 31 | - configMapRef: 32 | name: xw-example-configmap 33 | env: 34 | - name: REDIS_AUTH 35 | value: $(redis.REDIS_AUTH) 36 | command: 37 | - redis-server 38 | - --appendonly yes 39 | - --requirepass 40 | args: 41 | - "$(REDIS_AUTH)" 42 | -------------------------------------------------------------------------------- /doc/money/adsense赚钱的实操经验分享.md: -------------------------------------------------------------------------------- 1 |

adsense赚钱的实操经验分享

2 | 3 | 4 | 5 | 6 |

7 | Endeavour || 2017-06-15 05:01:23 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="4515151888" title="#思路分享#" /> 21 | 22 | 一篇不错的文章,作者回顾了自己的建站经历,并分享了关于建站、需求分析、网站优化等思路,值得借鉴 23 | 24 | <e type="web" href="https://mp.weixin.qq.com/s/5vopvMiRglM3UVJoy9Olfg" title="如何通过Adsense赚3万美金:我的实操经验分享" cache="http://cache.xiaomiquan.com/201706/6dd8864faa59c54753a222f1cead4778afbc0e947d0dfe820323fe68bec2d45c" /> 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 |
-------------------------------------------------------------------------------- /doc/money/坐拥30w+付费用户4000+推广员靠社群滚动裂变系统2年成为行业独角兽.md: -------------------------------------------------------------------------------- 1 |

坐拥30w+付费用户,4000+推广员,靠社群滚动裂变系统2年成为行业独角兽

2 | 3 | 4 | 5 | 6 |

7 | 王六六 || 2018-11-15 13:40:04 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="4218511418" title="#玩的就是增长#" /> 写了一周,改了一周,纯外部拆解[机智] 21 | <e type="web" href="https://mp.weixin.qq.com/s/V-8eXR6DOPRM6j3LGT8dVQ" title="坐拥30w+付费用户,4000+推广员,靠社群滚动裂变系统2年成为行业独角兽!" cache="" /> 22 |
23 | 24 | ### 文章配图 25 | 26 |
27 | 28 |
29 | 30 | 31 | ## 评论 32 | 33 |
34 |
35 | 36 |
37 | Meihan : 我是付费用户 38 |
39 | 40 |
41 |
-------------------------------------------------------------------------------- /doc/money/微商快递单号管理的痛点.md: -------------------------------------------------------------------------------- 1 |

微商快递单号管理的痛点

2 | 3 | 4 | 5 | 6 |

7 | 文由 || 2017-03-24 05:13:40 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 分享一个关于微商的: 21 | 微商交易过程中用户备注与物流信息同步是一个痛点,传统微商在没有运营微店之类的工具时用户管理通常通过聊天置顶与备注名完成,开发一个小工具,能够快速记录物流信息,快递信息,方便买家查询 22 |
23 | 24 | ### 文章配图 25 | 26 |
27 | 28 |
29 | 30 | 31 | ## 评论 32 | 33 |
34 |
35 | 36 |
37 | Huix : 微信扫一扫不是有快递单扫描功能吗? 38 |
39 | 40 |
41 | 呵呵 : 绝对是个痛点,做过的懂…… 42 |
43 | 44 |
45 | wikimo : 请问下这个小工具叫啥,现在还能找到么,谢谢[微笑] 46 |
47 | 48 |
49 |
-------------------------------------------------------------------------------- /model/makemoney.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | import "time" 4 | 5 | type ( 6 | MakeMoney struct { 7 | Title string `json:"title"` 8 | CreateTime time.Time `json:"create_time"` 9 | TopicId int64 `json:"topic_id"` 10 | Owner Owner `json:"owner"` 11 | Text string `json:"text"` 12 | Images []Image `json:"images"` 13 | Comments []Comment `json:"comments"` 14 | Type string `json:"type"` 15 | Question Question 16 | Answer Answer 17 | } 18 | Owner struct { 19 | Name string `json:"name"` 20 | AvatarURL string `json:"avatar_url"` 21 | } 22 | Image struct { 23 | Width string `json:"width"` 24 | Height string `json:"height"` 25 | URL string `json:"url"` 26 | } 27 | Comment struct { 28 | AuthorName string `json:"name"` 29 | Content string `json:"content"` 30 | } 31 | Question struct { 32 | Owner Owner 33 | QuestionText string `json:"question_text"` 34 | Images []Image 35 | } 36 | Answer struct { 37 | Owner Owner 38 | AnswerText string `json:"answer_text"` 39 | Images []Image 40 | } 41 | ) 42 | -------------------------------------------------------------------------------- /yaml/v0/5deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: k8s-example-deployment 5 | labels: 6 | app: k8s-example-deployment 7 | name: k8s-example-deployment 8 | namespace: k8s-example 9 | spec: 10 | selector: 11 | matchLabels: 12 | app: k8s-example-nginx-deployment-pod 13 | replicas: 2 14 | template: 15 | metadata: 16 | labels: 17 | app: k8s-example-nginx-deployment-pod 18 | spec: 19 | containers: 20 | - name: k8s-example-nginx-deployment-pod 21 | imagePullPolicy: IfNotPresent 22 | image: nginx 23 | ports: 24 | - containerPort: 80 25 | lifecycle: 26 | postStart: 27 | exec: 28 | command: ["bash", "-c", "echo hello world"] 29 | preStop: 30 | exec: 31 | command: ["bash", "-c", "echo hello end"] 32 | volumeMounts: 33 | - mountPath: /tmp 34 | name: nginx-pod 35 | volumes: 36 | - name: nginx-pod 37 | emptyDir: 38 | {} 39 | 40 | -------------------------------------------------------------------------------- /yaml/v1/mysql-deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: mysql-deployment 5 | labels: 6 | app: mysql-deployment 7 | namespace: xw 8 | spec: 9 | replicas: 2 10 | selector: 11 | matchLabels: 12 | app: mysql 13 | strategy: 14 | rollingUpdate: 15 | maxSurge: 1 16 | maxUnavailable: 1 17 | template: 18 | metadata: 19 | labels: 20 | app: mysql 21 | spec: 22 | containers: 23 | - name: mysql-container 24 | image: mysql 25 | imagePullPolicy: Always 26 | ports: 27 | - containerPort: 3306 28 | env: 29 | - name: MYSQL_USER 30 | value: root 31 | - name: MYSQL_DATABASE 32 | valueFrom: 33 | configMapKeyRef: 34 | key: mysql.MYSQL_DATABASE 35 | name: my-configmap 36 | - name: MYSQL_ROOT_PASSWORD 37 | valueFrom: 38 | configMapKeyRef: 39 | key: mysql.MYSQL_ROOT_PASSWORD 40 | name: my-configmap 41 | -------------------------------------------------------------------------------- /doc/money/广点通买量的大盘数据.md: -------------------------------------------------------------------------------- 1 |

广点通买量的大盘数据

2 | 3 | 4 | 5 | 6 |

7 | Tom叔聊运营增长 || 2018-12-08 00:01:28 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="8212448112" title="#案例分享#" /> 21 | 22 | 广点通买量的看过来,大盘数据 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 | 30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 |
-------------------------------------------------------------------------------- /yaml/v2/4mysql.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: xw-example-mysql-deployment 5 | labels: 6 | app: xw-example-mysql-deployment 7 | namespace: xw-example 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: xw-example-mysql 12 | replicas: 2 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxSurge: 1 17 | maxUnavailable: 1 18 | template: 19 | metadata: 20 | labels: 21 | app: xw-example-mysql 22 | role: mysql 23 | spec: 24 | containers: 25 | - name: xw-example-mysql 26 | image: mysql 27 | imagePullPolicy: IfNotPresent 28 | ports: 29 | - containerPort: 3306 30 | envFrom: 31 | - configMapRef: 32 | name: xw-example-configmap 33 | env: 34 | - name: MYSQL_USER 35 | value: $(mysql.MYSQL_ROOT) 36 | - name: MYSQL_DATABASE 37 | value: $(mysql.MYSQL_DATABASE) 38 | - name: MYSQL_ROOT_PASSWORD 39 | value: $(mysql.MYSQL_ROOT_PASSWORD) 40 | -------------------------------------------------------------------------------- /docker/docker/kafka.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | kafka: 5 | image: wurstmeister/kafka 6 | container_name: kafka_for_go_anything 7 | restart: always 8 | ports: 9 | - 9092:9092 10 | - 9094:9094 11 | expose: 12 | - 9092 13 | - 9094 14 | environment: 15 | KAFKA_BROKER_ID: 1 16 | KAFKA_OFFSETS_TOPIC_REPLIATION_FACTOR: 1 17 | KAFKA_CREATE_TOPICS: "go-anything:20:1:compact" 18 | KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 19 | KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 20 | networks: 21 | - go-anything-network 22 | volumes: 23 | - data:/kafka/kafka-logs-kafka 24 | depends_on: 25 | - zookeeper 26 | zookeeper: 27 | image: zookeeper 28 | container_name: zookeeper_for_go_anything 29 | restart: always 30 | ports: 31 | - 2181:2181 32 | expose: 33 | - 2181 34 | environment: 35 | ZOO_MY_ID: 1 36 | networks: 37 | - go-anything-network 38 | volumes: 39 | - data:/data 40 | networks: 41 | go-anything-network: 42 | driver: bridge 43 | volumes: 44 | data: {} 45 | dir: {} -------------------------------------------------------------------------------- /doc/money/36个小而美的赚钱项目学习笔记.md: -------------------------------------------------------------------------------- 1 |

36个小而美的赚钱项目学习笔记

2 | 3 | 4 | 5 | 6 |

7 | 企鹅哥哥 || 2018-04-24 01:49:58 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 这是我在荔枝微课上听的一堂课做的电子版笔记。刚开始是全部记录,后来记的要点。希望对大家有所帮助!<e type="hashtag" hid="8212448112" title="#案例分享#" /> 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | 雨亭之东 : 智囊圈(课程出品方)赚钱课程资料合辑: 37 | 链接: <e type="web" href="https%3A%2F%2Fpan.baidu.com%2Fs%2F1XHKo5e2IugTh1ER7lZpwhQ" title="https%3A%2F%2Fpan.baidu.com%2Fs%2F1XHKo5e2IugTh1ER7lZpwhQ" /> 38 | 提取码: 7q9y 39 |
40 | 41 |
42 |
-------------------------------------------------------------------------------- /doc/money/群好友抖音实操百万粉丝分享.md: -------------------------------------------------------------------------------- 1 |

群好友抖音实操百万粉丝分享

2 | 3 | 4 | 5 | 6 |

7 | 王六六 || 2018-05-19 03:54:06 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 群好友抖音实操百万粉丝分享 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 史长春 : 666 39 |
40 | 41 |
42 | 亦仁 : 已加入精华。 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /doc/money/“真人图书馆”项目案例.md: -------------------------------------------------------------------------------- 1 |

“真人图书馆”项目案例

2 | 3 | 4 | 5 | 6 |

7 | 榴莲哥 || 2017-03-25 16:21:59 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 这概念炒的牛逼,应该裂变吸粉也牛逼。真人图书馆不是假人😱 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 条形马 : 在行就没想过这么卖时间。哈哈。 39 |
40 | 41 |
42 |
-------------------------------------------------------------------------------- /doc/money/用通俗易懂的语言解释区块链.md: -------------------------------------------------------------------------------- 1 |

用通俗易懂的语言解释区块链

2 | 3 | 4 | 5 | 6 |

7 | 🐳阿切 || 2017-06-07 23:42:28 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="web" href="https://mp.weixin.qq.com/s/MckrFGOclM_2sm_BDFgFRw" title="刘能、赵四们的区块链战争" cache="http://cache.xiaomiquan.com/201706/eab987c2132891b10f7cf39da9058ba80132291fbadbf4691346be1ff2404c92" /> 21 | 通俗解释区块链 22 |
23 | 24 | ### 文章配图 25 | 26 |
27 | 28 |
29 | 30 | 31 | ## 评论 32 | 33 |
34 |
35 | 36 |
37 | 定投哥@区块链定投 : 适合区块链入门,生动,易懂,赞! 38 |
39 | 40 |
41 | 顺泽 : 赞,通俗易懂 42 |
43 | 44 |
45 |
-------------------------------------------------------------------------------- /doc/money/行业淡季是雪中送炭攒人品的好时候.md: -------------------------------------------------------------------------------- 1 |

行业淡季是雪中送炭,攒人品的好时候

2 | 3 | 4 | 5 | 6 |

7 | Caoz || 2018-12-02 15:18:36 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 翰林 : 感觉曹大这是在深圳的79号渔船吃的饭 39 |
40 | 41 |
42 | Caoz : 是呀是呀 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /doc/doodles/2004-3.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 3 月 8 | 9 |
10 | 11 | 12 | 2004年波斯新年 #GoogleDoodle 13 |
2004年波斯新年
2004年3月20日
14 | 15 | 国际亲法日 #GoogleDoodle 16 |
国际亲法日
2004年3月19日
17 | 18 | 2004年圣帕特里克节 #GoogleDoodle 19 |
2004年圣帕特里克节
2004年3月17日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /yaml/v2/5go-anything_statefulset.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: StatefulSet 3 | metadata: 4 | namespace: xw-example 5 | labels: 6 | app: xw-example-stateful-go-anything 7 | name: xw-example-stateful-go-anything 8 | name: xw-example-stateful-go-anything 9 | spec: 10 | selector: 11 | matchLabels: 12 | app: xw-example-go-anything-statefulset 13 | serviceName: xw-example-go-anything-service-statefulset 14 | replicas: 3 15 | revisionHistoryLimit: 10 16 | template: 17 | metadata: 18 | labels: 19 | app: xw-example-go-anything-statefulset 20 | spec: 21 | containers: 22 | - name: xw-example-go-anything-statefulset 23 | imagePullPolicy: IfNotPresent 24 | image: swr.cn-north-1.myhuaweicloud.com/wuxiaoshen/go-anything:v0.22 25 | ports: 26 | - containerPort: 8888 27 | volumeMounts: 28 | - mountPath: /go/go-anything 29 | name: xw-example-go-anything-statefulset-volume 30 | volumes: 31 | - name: xw-example-go-anything-statefulset-volume 32 | persistentVolumeClaim: 33 | claimName: xw-example-pvc-go-anything 34 | -------------------------------------------------------------------------------- /doc/doodles/2006-4.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 4 月 8 | 9 |
10 | 11 | 12 | 2006年澳新军团日 #GoogleDoodle 13 |
2006年澳新军团日
2006年4月25日
14 | 15 | 2006年圣乔治日 #GoogleDoodle 16 |
2006年圣乔治日
2006年4月23日
17 | 18 | 2006年地球日 #GoogleDoodle 19 |
2006年地球日
2006年4月21日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2003-6.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 6 月 8 | 9 |
10 | 11 | 12 | MC·埃舍尔诞辰105周年 #GoogleDoodle 13 |
MC·埃舍尔诞辰105周年
2003年6月16日
14 | 15 | 2003年父亲节 #GoogleDoodle 16 |
2003年父亲节
2003年6月14日
17 | 18 | 2003年意大利共和国日 #GoogleDoodle 19 |
2003年意大利共和国日
2003年6月2日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2004-1.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 1 月 8 | 9 |
10 | 11 | 12 | 2004年农历新年 #GoogleDoodle 13 |
2004年农历新年
2004年1月21日
14 | 15 | “勇气”号探测器在火星着陆 #GoogleDoodle 16 |
“勇气”号探测器在火星着陆
2004年1月15日
17 | 18 | 2004年新年快乐 #GoogleDoodle 19 |
2004年新年快乐
2004年1月1日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2004-9.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 9 月 8 | 9 |
10 | 11 | 12 | 雷·查尔斯诞辰74周年 #GoogleDoodle 13 |
雷·查尔斯诞辰74周年
2004年9月22日
14 | 15 | 2004年巴西国庆日 #GoogleDoodle 16 |
2004年巴西国庆日
2004年9月7日
17 | 18 | Google 6周岁生日 #GoogleDoodle 19 |
Google 6周岁生日
2004年9月7日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2006-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 2006年感恩节 #GoogleDoodle 13 |
2006年感恩节
2006年11月23日
14 | 15 | 2006年阵亡将士纪念日 #GoogleDoodle 16 |
2006年阵亡将士纪念日
2006年11月11日
17 | 18 | 2006年“Doodle 4 Google”竞赛 - 英国(Katherine Chisnall 作品) #GoogleDoodle 19 |
2006年“Doodle 4 Google”竞赛 - 英国(Katherine Chisnall 作品)
2006年11月7日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/money/买Shopify插件通过优化营销模式每月赚3万刀.md: -------------------------------------------------------------------------------- 1 |

买 Shopify 插件,通过优化营销模式每月赚 3万刀

2 | 3 | 4 | 5 | 6 |

7 | 萧遥 || 2017-05-04 00:57:23 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | “我如何买了一个插件并每月赚3万刀” 21 | 22 | 作者买了一个Shopify 的插件,通过优化营销模式获益。 23 | 24 | 略软文,但值得看看思路😏 25 | 26 | <e type="web" href="https://blog.usefomo.com/how-we-bought-a-small-software-startup/?utm_source=wanqu.co&utm_campaign=Wanqu+Daily&utm_medium=website" title="https://blog.usefomo.com/how-we-bought-a-small-sof..." cache="http://cache.xiaomiquan.com/201705/3e0dbca1e0e4124115db3efa75522ee3168972c44fc482015ae2494517974322" /> 27 |
28 | 29 | ### 文章配图 30 | 31 |
32 | 33 |
34 | 35 | 36 | ## 评论 37 | 38 |
39 |
40 | 41 |
42 |
-------------------------------------------------------------------------------- /doc/money/做规则和产品的设计者追求可规模化可复制的套利行为.md: -------------------------------------------------------------------------------- 1 |

做规则和产品的设计者,追求可规模化可复制的套利行为

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2018-11-05 04:01:29 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="5448448224" title="#好文分享#" /> 21 | 22 | 值得多读几遍。 23 | 24 | 文中的一个观点与我上帖类似,也是我想在咱们圈子里面多提几次的观点:在一定的时间和空间内,尽可能做规则和产品的设计者,而不是参与者,尽可能追求可规模化可复制的套利行为,很多短期纯流量的事情,不值得一做。 25 | 26 | <e type="web" href="https://mp.weixin.qq.com/s/2GMVHUqIwOVYXJwrRq3mSw" title="一切皆套利" cache="" /> 27 |
28 | 29 | ### 文章配图 30 | 31 |
32 | 33 |
34 | 35 | 36 | ## 评论 37 | 38 |
39 |
40 | 41 |
42 | 费列罗 : [强]好的商业模式,就是能算得过别人算不过来的账 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /doc/doodles/2007-1.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 1 月 8 | 9 |
10 | 11 | 12 | 2007年澳大利亚日 #GoogleDoodle 13 |
2007年澳大利亚日
2007年1月26日
14 | 15 | 2007年马丁·路德·金纪念日 #GoogleDoodle 16 |
2007年马丁·路德·金纪念日
2007年1月14日
17 | 18 | 2007年新年快乐 #GoogleDoodle 19 |
2007年新年快乐
2007年1月1日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2007-5.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 5 月 8 | 9 |
10 | 11 | 12 | 2007年西里尔字母纪念日 #GoogleDoodle 13 |
2007年西里尔字母纪念日
2007年5月24日
14 | 15 | 2007年母亲节 #GoogleDoodle 16 |
2007年母亲节
2007年5月13日
17 | 18 | 2007年儿童节 #GoogleDoodle 19 |
2007年儿童节
2007年5月4日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2003-10.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 10 月 8 | 9 |
10 | 11 | 12 | 2003年万圣节 #GoogleDoodle 13 |
2003年万圣节
2003年10月31日
14 | 15 | 2003年加拿大感恩节 #GoogleDoodle 16 |
2003年加拿大感恩节
2003年10月13日
17 | 18 | 2003年德国统一日 #GoogleDoodle 19 |
2003年德国统一日
2003年10月3日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2005-2.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 2 月 8 | 9 |
10 | 11 | 12 | 2005年情人节 #GoogleDoodle 13 |
2005年情人节
2005年2月14日
14 | 15 | 2005年农历新年 - 韩国 #GoogleDoodle 16 |
2005年农历新年 - 韩国
2005年2月9日
17 | 18 | 2005年农历新年 - 中国 #GoogleDoodle 19 |
2005年农历新年 - 中国
2005年2月8日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2007-6.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 6 月 8 | 9 |
10 | 11 | 12 | 2007年父亲节 #GoogleDoodle 13 |
2007年父亲节
2007年6月16日
14 | 15 | 2007年俄罗斯日 #GoogleDoodle 16 |
2007年俄罗斯日
2007年6月12日
17 | 18 | 2007年意大利共和国日 #GoogleDoodle 19 |
2007年意大利共和国日
2007年6月2日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/money/一个中国团队做Adsense的实操案例.md: -------------------------------------------------------------------------------- 1 |

一个中国团队做Adsense的实操案例

2 | 3 | 4 | 5 | 6 |

7 | 定投哥@区块链定投 || 2017-05-05 05:35:34 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="8212448112" title="#案例分享#" /> 21 | 一个中国团队做Adsense的实操案例,中文写的,非常适合大家。 22 | <e type="web" href="http://gitbook.cn/books/58e48c22c59d53926e611996/index.html" title="码字 - GITBOOK.CN" cache="http://cache.xiaomiquan.com/201705/45cd72cdf2e7a0afec28e08242b05fd99ec72f62b32be36d658f0cd49de51522" /> 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 萧遥 : 实战案例,不错,不过打一枪就跑感觉略草率 39 |
40 | 41 |
42 |
-------------------------------------------------------------------------------- /doc/doodles/2004-10.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 10 月 8 | 9 |
10 | 11 | 12 | 2004年万圣节 #GoogleDoodle 13 |
2004年万圣节
2004年10月30日
14 | 15 | 2004年加拿大感恩节 #GoogleDoodle 16 |
2004年加拿大感恩节
2004年10月11日
17 | 18 | Lunar X Prize #GoogleDoodle 19 |
Lunar X Prize
2004年10月4日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/money/个人微信淘客静默复制淘口令.md: -------------------------------------------------------------------------------- 1 |

个人微信淘客静默复制淘口令

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2019-07-30 16:10:55 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | from<e type="mention" uid="481811584428" title="@老胡(少荃)" /> ,分享已获他授权。 21 | 22 | 晚上刚和一个阿里高P聊完,关于做个人微信淘客这块有个事透露下,之前有很多人通过一些资源做静默复制淘口令,用户打开手淘弹出引导的问题阿里内网已经有几篇帖子在讨论此事,目前他们内部在严查。 23 | 24 | 市面上当前有两种做法,一种是直接静默复制淘口令完成引导,还有一种是静默复制某个手淘页面的口令弹出引导加手机号微信,第一种之前严打过了,做的人应该不会太多了,但是第二种这个我知道的还有不少人在做。 25 | 26 | 大家有做这块的赶紧停止,因为只要用户手机装有UC或者其他阿里系的产品都能检测到这种静默复制的源头来自哪里,不要想着和阿里搞对抗,否则可能会对整个这个行业带来巨大灾难,这不是开玩笑,想想之前的支付宝口令为什么会被停掉。 27 | 28 | 据了解目前很多人都做的太初级,大部分都不是老淘客,入行不久的一些新手自以为聪明,其实很多细节部分都没有处理好,具体的在这里就不方便透露太多。 29 |
30 | 31 | ### 文章配图 32 | 33 |
34 | 35 |
36 | 37 | 38 | ## 评论 39 | 40 |
41 |
42 | 43 |
44 |
-------------------------------------------------------------------------------- /doc/money/爆款!如何利用Quora引上万流量我是这样做的!|实战.md: -------------------------------------------------------------------------------- 1 |

爆款!如何利用Quora引上万流量,我是这样做的 !| 实战

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2019-09-04 15:53:06 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="mention" uid="1822111452" title="@顾小北" /> 实战干货,6000字,非常干 21 | 22 | <e type="web" href="https://mp.weixin.qq.com/s/IC2L_e6TMie9zbqRRRVmZg" title="爆款!如何利用Quora引上万流量,我是这样做的 !| 实战" cache="" /> 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 萧遥 : 那个Social Exchange 思路很好啊,国内没有人抄一个吗?[呲牙] 39 |
40 | 41 |
42 | 王巍 : 这得看好几遍[呲牙] 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /doc/money/低成本也可以做竞价如何用冷门产品获利.md: -------------------------------------------------------------------------------- 1 |

低成本也可以做竞价,如何用冷门产品获利

2 | 3 | 4 | 5 | 6 |

7 | 扬扬扬 || 2017-05-11 01:49:16 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 昨天的分享整理成文档,方便大家查阅😁 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | 亦仁 : 很棒的分享,给现在的知识付费推广有很多启发。 37 |
38 | 39 |
40 | Jimi : 很棒的分享,整理出来这么多内容呢 41 |
42 | 43 |
44 | 心竺公考齐老师 : 学习了 45 |
46 | 47 |
48 | 王君 : 学习了,谢谢分享 49 |
50 | 51 |
52 | York : 非常有价值,用手机版再来打赏 53 |
54 | 55 |
56 |
-------------------------------------------------------------------------------- /doc/money/抖音教程后的导图提炼.md: -------------------------------------------------------------------------------- 1 |

抖音教程后的导图提炼

2 | 3 | 4 | 5 | 6 |

7 | 菇亮 || 2019-10-30 10:28:55 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="481881524418" title="#抖音#" /> <e type="hashtag" hid="2421248841" title="#轻享#" /> 最近刷了15万字 5G的抖音教程后的导图提炼,目测对小白入门有用,大牛就随便看看吧~双11双12抖起实操来吧 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 |
-------------------------------------------------------------------------------- /doc/money/淘宝简历制作店铺月销售额100万.md: -------------------------------------------------------------------------------- 1 |

淘宝简历制作店铺月销售额100万

2 | 3 | 4 | 5 | 6 |

7 | 黄亮 || 2019-01-08 05:27:00 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 月销售额100万 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 阳光 : 服了,真的遍地是黄金 39 |
40 | 41 |
42 | 千寻软件🔥达人 : 月赚7w,仅仅一款。 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /configs/settings.yaml: -------------------------------------------------------------------------------- 1 | version: "v1" 2 | author: "XieWei" 3 | weChat: "wu_xiaoshen" 4 | service: 5 | mysql: 6 | port: "3306" 7 | db: go_anything 8 | user: root 9 | passwd: adminMysql 10 | host: mysql 11 | redis: 12 | port: "6379" 13 | auth: adminRedis 14 | host: redis 15 | kafka: 16 | broker: kafka:9092 17 | topic: go_anything 18 | consumerGroup: go_anything-consumer-group 19 | es: 20 | address: es:9200 21 | user: "" 22 | password: "" 23 | email: 24 | sender: "1156143589@qq.com" 25 | auth: "bWVuZ3d1MTliYW5nNTg1MjA=" 26 | receivers: 27 | - "xiewei@tkzc31.onexmail.com" 28 | dev: 29 | mysql: 30 | port: "3306" 31 | db: go_anything 32 | user: root 33 | passwd: adminMysql 34 | host: "127.0.0.1" 35 | redis: 36 | port: "6379" 37 | auth: adminRedis 38 | host: "127.0.0.1" 39 | kafka: 40 | broker: "127.0.0.1:9092" 41 | topic: go_anything 42 | consumerGroup: go_anything-consumer-group 43 | email: 44 | sender: "1156143589@qq.com" 45 | auth: "bWVuZ3d1MTliYW5nNTg1MjA=" 46 | receivers: 47 | - "xiewei@tkzc31.onexmail.com" 48 | es: 49 | address: "127.0.0.1:9200" 50 | user: "" 51 | password: "" -------------------------------------------------------------------------------- /doc/money/工具推荐:Wetool管理几百个用户群只需几分钟.md: -------------------------------------------------------------------------------- 1 |

工具推荐:Wetool管理几百个用户群只需几分钟

2 | 3 | 4 | 5 | 6 |

7 | 渣渣辉在路上 || 2018-11-13 05:34:23 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="158158424542" title="#顺手的工具#" /> 21 | 22 | wetool这个工具做的真不错,可以看出是有实力的公司做出来的产品,除了常见的爆粉功能,今天体验了下它的群管理协助功能,简直瞬间想付费的体验。 23 | 24 | 25 | 本来我几百个用户群管理很痛苦,防广告,防竞争对手,批量群公告,防爆群,多群消息回复,每日群数据统计, 每一件事都很繁琐,每天至少安排一个员工负责这个事情,今天发现只要把wetool配置好,放到虚拟里面跑,每天只需要花几分钟就可以把几百个群管理的妥帖的。 26 |
27 | 28 | ### 文章配图 29 | 30 |
31 | 32 |
33 | 34 | 35 | ## 评论 36 | 37 |
38 |
39 | 40 |
41 | 拔刀刘 : 好像不能爆粉,不如专门的爆粉软件、、 42 |
43 | 44 |
45 | fk7. : 问下楼主,会不会封号 46 |
47 | 48 |
49 |
-------------------------------------------------------------------------------- /model/user_model.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | import ( 4 | "encoding/json" 5 | 6 | "github.com/jinzhu/gorm" 7 | ) 8 | 9 | type User struct { 10 | gorm.Model 11 | Name string `gorm:"type:varchar(20);unique_index" json:"name"` 12 | Age int `gorm:"type:integer" json:"age"` 13 | } 14 | 15 | func (U User) TableName() string { 16 | return "go_anything_user" 17 | } 18 | 19 | type UserSerializer struct { 20 | Id uint `json:"id"` 21 | CreatedAt string `json:"created_at"` 22 | UpdatedAt string `json:"updated_at"` 23 | Name string `json:"name"` 24 | Age int `json:"age"` 25 | } 26 | 27 | func (U User) BasicSerializer() UserSerializer { 28 | return UserSerializer{ 29 | Id: U.ID, 30 | CreatedAt: U.CreatedAt.Format("2006-01-02 15:04:05"), 31 | UpdatedAt: U.UpdatedAt.Format("2006-01-02 15:04:05"), 32 | Name: U.Name, 33 | Age: U.Age, 34 | } 35 | } 36 | 37 | type UserMessage struct { 38 | Message User 39 | encode []byte 40 | err error 41 | } 42 | 43 | func (U *UserMessage) Length() int { 44 | b, e := json.Marshal(U.Message) 45 | U.encode = b 46 | U.err = e 47 | return len(b) 48 | } 49 | func (U *UserMessage) Encode() ([]byte, error) { 50 | return U.encode, U.err 51 | } 52 | -------------------------------------------------------------------------------- /doc/money/干货:2019恒隆集团董事长陈启宗最新致股东公开信.md: -------------------------------------------------------------------------------- 1 |

干货:2019恒隆集团董事长陈启宗最新致股东公开信

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2019-09-15 07:13:03 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 好文章,多看几遍。 21 | 22 | <e type="web" href="https://mp.weixin.qq.com/s/BWofwP5e_C6Eq6p9ovbMIw" title="【干货】2019恒隆集团董事长陈启宗最新致股东公开信" cache="" /> 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 阿枫 : 文中提到的“史普尼克(Sputnik)时刻”尤其令人警觉,美国仍是世界上最强大的科技实体,千万不要低估美国人在这方面能力。 39 |
40 | 41 |
42 | yeerya : 大格局大哲学思想还是没把握到,列宁和马克思的社会发展规律告诉我们,社会主义是迟早要代替资本主义制度,只是时间问题,这是曲折多变复杂的过程。目前在哪个阶段各位去找相关的书籍好好品味,很有意思,人类社会发展史是一部厚厚的哲学史! 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /doc/money/比特号航海日志的复盘.md: -------------------------------------------------------------------------------- 1 |

比特号航海日志的复盘

2 | 3 | 4 | 5 | 6 |

7 | Alexander.* || 2017-07-04 16:19:13 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="4252221118" title="#大航海时代,我们一起赚钱!#" /> <e type="hashtag" hid="1141121242" title="#比特号航海日志#" /> DAY 2 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | 四勾 4J : 建议把服务号缓一缓,一个月很快就过去了,估计来不急折腾服务号。其次得围绕目标展开,一月一万粉丝,也就是说服务号不是考核点。 37 | 至于协同工具那个简单,大家都会的就行,真不行就一个石墨表格就行,tower 对着这个月来说必要不大,有学习成本。 38 |
39 | 40 |
41 | Alexander.* : 谢谢建议,这个事情我们不是当成一个短期的任务在做,而是一个长期的规划,所以服务号还是要做。其他的我们会考虑,谢谢。 42 |
43 | 44 |
45 |
-------------------------------------------------------------------------------- /doc/money/赚钱几个变化曲线.md: -------------------------------------------------------------------------------- 1 |

赚钱几个变化曲线

2 | 3 | 4 | 5 | 6 |

7 | 陈俊强 || 2017-03-29 00:38:55 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 赚钱几个变化曲线,做个小项目,赚到几十万,隔年,项目死,再把赚的钱扔到新项目里面去,赚个百八十万,隔年还是死,再把赚的钱扔到新项目,泡都没有冒起来,借钱再搞项目,有点眉目,再借钱,信用卡额度套出来,好了,终于起来了,年底项目卖掉,套现离场。赚钱的曲线变化基本上是这样的。阶层不到,别跟我说上市。大家在圈内的东西的命运也注定是这样。时间最贵,希望可以把握 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | XiaoPeng : 时间最贵👍 37 |
38 | 39 |
40 | 烟台李飞刀 : 好精辟的总结! 41 |
42 | 43 |
44 | 亦仁 : 老司机 45 |
46 | 47 |
48 | peter锋 : 老司机! 49 |
50 | 51 |
52 |
-------------------------------------------------------------------------------- /model/doodles.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | import "time" 4 | 5 | type GoogleDoodles struct { 6 | Id uint `json:"id"` 7 | ShareText string `json:"share_text"` 8 | Name string `json:"name"` 9 | Title string `json:"title"` 10 | Width string `json:"width"` 11 | Height string `json:"height"` 12 | Date time.Time `json:"date"` 13 | UrlHigh string `json:"url_high"` 14 | Url string `json:"url"` 15 | AlternateUrl string `json:"alternate_url"` 16 | } 17 | 18 | type MonthGoogleDoodles struct { 19 | Month string `json:"month"` 20 | Doodles []GoogleDoodles `json:"doodles"` 21 | } 22 | 23 | func (g GoogleDoodles) First(id int) (GoogleDoodles, error) { 24 | return GoogleDoodles{}, nil 25 | } 26 | 27 | func (g GoogleDoodles) Find() ([]GoogleDoodles, error) { 28 | return []GoogleDoodles{}, nil 29 | } 30 | 31 | func (g GoogleDoodles) Patch(id int) (GoogleDoodles, error) { 32 | return GoogleDoodles{}, nil 33 | } 34 | 35 | func (g GoogleDoodles) Delete(id int) (GoogleDoodles, error) { 36 | return GoogleDoodles{}, nil 37 | } 38 | func (g GoogleDoodles) Post(doodles GoogleDoodles) (GoogleDoodles, error) { 39 | return GoogleDoodles{}, nil 40 | } 41 | -------------------------------------------------------------------------------- /src/xincai/controller_test.go: -------------------------------------------------------------------------------- 1 | package xincai 2 | 3 | import ( 4 | "fmt" 5 | "github.com/gobuffalo/packr" 6 | "html/template" 7 | "os" 8 | "testing" 9 | ) 10 | 11 | func TestCaiXin(t *testing.T){ 12 | caiXin := NewXinCai("硅谷王川", "https://wangchuan.blog.caixin.com/") 13 | caiXin.GetTotalPage() 14 | fmt.Println(caiXin) 15 | 16 | } 17 | 18 | func TestCaiXinPage(t *testing.T) { 19 | //caiXin := NewXinCai("硅谷王川", "https://wangchuan.blog.caixin.com/") 20 | //result, _ := caiXin.GetOnePage("https://wangchuan.blog.caixin.com/archives/245907") 21 | //fmt.Println(result) 22 | 23 | } 24 | 25 | func TestTempl(t *testing.T){ 26 | 27 | pack := packr.NewBox(".") 28 | bye, _ := pack.FindString("passage.tmpl") 29 | tmpl, _ := template.New("passage").Parse(bye) 30 | f, _ := os.Create("test.md") 31 | passage := Passage{ 32 | Title: "硅谷王川", 33 | PublishTime: "2021-05-15", 34 | RealURL: "", 35 | Content: "这个时间呢很单纯的", 36 | } 37 | tmpl.Execute(f, passage) 38 | } 39 | 40 | func TestGetAllPassage(t *testing.T){ 41 | caiXin := NewXinCai("硅谷王川", "https://wangchuan.blog.caixin.com") 42 | caiXin.GetTotalPage() 43 | caiXin.GetAllPages() 44 | //fmt.Println(caiXin.GetOnePage("http://wangchuan.blog.caixin.com/archives/133315")) 45 | } -------------------------------------------------------------------------------- /doc/money/关于如何使用facebook推广网站的一些技巧.md: -------------------------------------------------------------------------------- 1 |

关于如何使用facebook推广网站的一些技巧

2 | 3 | 4 | 5 | 6 |

7 | sophie || 2017-08-08 03:00:21 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 之前亦仁提到的Shopify官网guide,同事最近刚刚翻译成了中文,分享给大家看看 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | sophie : 手上还有一些Facebook投放的思维导图什么的,有需要的话我也可以发出来 37 |
38 | 39 |
40 | 飞一 : 求分享😄 41 |
42 | 43 |
44 | FUN : 求分享 45 |
46 | 47 |
48 | wei : 求分享 49 |
50 | 51 |
52 | 小荷有香气 : 求Facebook导图 53 |
54 | 55 |
56 |
-------------------------------------------------------------------------------- /doc/money/区块链资料共享.md: -------------------------------------------------------------------------------- 1 |

区块链资料共享

2 | 3 | 4 | 5 | 6 |

7 | 定投哥@区块链定投 || 2017-06-04 13:50:47 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 最近悄悄也更大家学习了一下区块链,把圈内的资料也整合了一下,共享给大家。 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | Jimi : 实用贴,我也要学习学习咯 37 |
38 | 39 |
40 | *^_^*秀燕 : 最欣赏这样积极主动,为大家服务的人了,来个,赏了,1.21😉 41 |
42 | 43 |
44 | 定投哥@区块链定投 : 所以是,121,齐步走的意思吗😂 45 |
46 | 47 |
48 | 欧奈尔的琴弦 : 这么喜欢打赏。。。多给我打点 49 |
50 | 51 |
52 | *^_^*秀燕 : 你这么有钱😏 53 |
54 | 55 |
56 |
-------------------------------------------------------------------------------- /doc/doodles/2005-5.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 5 月 8 | 9 |
10 | 11 | 12 | 2005年母亲节 #GoogleDoodle 13 |
2005年母亲节
2005年5月7日
14 | 15 | 2005年儿童节 #GoogleDoodle 16 |
2005年儿童节
2005年5月4日
17 | 18 | 2005年教师节 #GoogleDoodle 19 |
2005年教师节
2005年5月2日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/money/十年中国App出海编年史及方法论.md: -------------------------------------------------------------------------------- 1 |

十年中国 App 出海编年史及方法论

2 | 3 | 4 | 5 | 6 |

7 | 邓少闲 || 2017-05-06 04:32:43 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 海外推广的集大成者,都在这个文章里了。 21 | 作者貌似隐去yeahmobi和avazu等的牛逼 22 | 23 | 有心人可以分析下趋势,还有很多细分机会 24 | <e type="web" href="https://mp.weixin.qq.com/s/ZL7Oqt7oVPQTgwWGEoasxQ" title="国际化怎么做?十年中国 App 出海编年史及方法论" cache="http://cache.xiaomiquan.com/201705/43a3d18957e11f5e5b905cea70cd981e54846508e1a02fa90fd18333dd946545" /> 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | 邓少闲 : 当然不仅仅是推广,产品团队牛逼是根基 41 |
42 | 43 |
44 | 邓少闲 : Avazu之前被天神娱乐并购了。Yeahmobi也在并购上市了,一个月前的公告 45 |
46 | 47 |
48 |
-------------------------------------------------------------------------------- /doc/money/私域流量分享:怎么把控微信号封号风险.md: -------------------------------------------------------------------------------- 1 |

私域流量分享:怎么把控微信号封号风险

2 | 3 | 4 | 5 | 6 |

7 | 黑小喵~🍀 || 2020-03-06 13:51:54 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 如果你做私域流量,如果你做机房添加 21 | 认真看完,一定有你要的点。。 22 | 相信我~~~!!! 23 | 头发都写掉了两根 24 | 好用点个赞再走哦 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | MAX : 写的很细,谢谢大佬分享 41 |
42 | 43 |
44 | 静水流深 : 怎么没有赞赏健了呢? 45 |
46 | 47 |
48 | 黑小喵~🍀 : 哈哈,手动@知识星球老大 49 |
50 | 51 |
52 | 傅超人 : [强] 53 |
54 | 55 |
56 | 黑小喵~🍀 : 😀 57 |
58 | 59 |
60 |
-------------------------------------------------------------------------------- /doc/money/谷歌全球商机洞察工具和它的优缺点.md: -------------------------------------------------------------------------------- 1 |

谷歌全球商机洞察工具和它的优缺点

2 | 3 | 4 | 5 | 6 |

7 | 归途无痕 || 2017-06-11 02:33:02 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 因为投放Google adwords广告要做前期市场调研,研究了下谷歌的全球商机洞察工具(Google Global Market Finder)。 21 | 简单说下他的优缺点,并希望抛砖引玉,想知道是否有更好的市场调查工具。 22 | 这个工具的作用: 23 | 了解产品在全球各国,各语言的搜索量。这样可以初步了解自己产品在全球的需求分布情况 24 | 用法很简单: 25 | 选择国家,语言(一般选择英语),输入产品关键词,选择想要了解的区域(美洲,欧洲,亚洲,中东等)。 26 | 结果会给出这个区域的具体国家产品搜索量/每月,这个国家的各语言的产品搜索量/月,推荐出价,商机和竞争程度。 27 | 优点:用法简单,比较方便,很快能知道产品在全球的需求分布情况。 28 | 缺点:1.数据不充分,它的数据和keywords planner中的数据是一样的(仅限Google,不包括Google合作伙伴),但很多国家的搜索量没有体现,提示是搜索量小,但发现有些搜索量大的也没有出来; 29 | 2.多语言翻译不是很准确。所以除了自己本身输入的关键词语言类型,其他语言搜索量仅供参考。 30 | 31 | 当然,有个笨方法,可以在Google keywords planner中一个个查询统计,但效率太低。大家是否有更好办法,工具或者思路? 32 |
33 | 34 | ### 文章配图 35 | 36 |
37 | 38 |
39 | 40 | 41 | ## 评论 42 | 43 |
44 |
45 | 46 |
47 |
-------------------------------------------------------------------------------- /yaml/v2/6cronJob.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v2alpha1 2 | kind: CronJob 3 | metadata: 4 | name: xw-example-go-anything-cronjob 5 | labels: 6 | app: xw-example-go-anything-cronjob 7 | namespace: xw-example 8 | spec: 9 | jobTemplate: 10 | spec: 11 | template: 12 | spec: 13 | containers: 14 | - name: xw-example-go-anything-cronjob 15 | image: swr.cn-north-1.myhuaweicloud.com/wuxiaoshen/go-anything:v0.22 16 | command: ["bash","-c", "/go/go-anything/go-anything email"] 17 | ports: 18 | - containerPort: 8888 19 | envFrom: 20 | - configMapRef: 21 | name: xw-example-configmap 22 | env: 23 | - name: MYSQL_HOST 24 | value: $(mysql.MYSQL_HOST) 25 | - name: MYSQL_PORT 26 | value: $(mysql.MYSQL_PORT) 27 | - name: REDIS_HOST 28 | value: $(redis.REDIS_HOST) 29 | - name: REDIS_PORT 30 | value: $(redis.REDIS_PORT) 31 | - name: KAFKA_BROKER_LIST 32 | value: $(kafka.KAFKA_BROKER_LIST) 33 | restartPolicy: OnFailure 34 | schedule: "45 14 * * *" 35 | -------------------------------------------------------------------------------- /doc/doodles/2003-1.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 1 月 8 | 9 |
10 | 11 | 12 | 2003年农历新年 #GoogleDoodle 13 |
2003年农历新年
2003年1月31日
14 | 15 | 2003年澳大利亚日 #GoogleDoodle 16 |
2003年澳大利亚日
2003年1月25日
17 | 18 | 2003年马丁·路德·金纪念日 #GoogleDoodle 19 |
2003年马丁·路德·金纪念日
2003年1月19日
20 | 21 | 2003年新年快乐! #GoogleDoodle 22 |
2003年新年快乐!
2003年1月1日
23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/doodles/2005-10.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 10 月 8 | 9 |
10 | 11 | 12 | 2005年墨尔本杯 #GoogleDoodle 13 |
2005年墨尔本杯
2005年10月31日
14 | 15 | 2005年万圣节 #GoogleDoodle 16 |
2005年万圣节
2005年10月30日
17 | 18 | 2005年谚文日 #GoogleDoodle 19 |
2005年谚文日
2005年10月8日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2005-8.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 8 月 8 | 9 |
10 | 11 | 12 | 2005年印度独立日 #GoogleDoodle 13 |
2005年印度独立日
2005年8月15日
14 | 15 | 2005年韩国光复节 #GoogleDoodle 16 |
2005年韩国光复节
2005年8月15日
17 | 18 | 2005年瑞士国庆日 #GoogleDoodle 19 |
2005年瑞士国庆日
2005年8月1日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/doodles/2006-7.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 7 月 8 | 9 |
10 | 11 | 12 | 2006年巴士底日 #GoogleDoodle 13 |
2006年巴士底日
2006年7月14日
14 | 15 | 2006年美国独立日 #GoogleDoodle 16 |
2006年美国独立日
2006年7月4日
17 | 18 | 2006年加拿大国庆日 #GoogleDoodle 19 |
2006年加拿大国庆日
2006年7月1日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/money/《王者荣耀》相关附带的创业思路.md: -------------------------------------------------------------------------------- 1 |

《王者荣耀》相关附带的创业思路

2 | 3 | 4 | 5 | 6 |

7 | 定投哥@区块链定投 || 2017-04-07 07:49:42 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 转发一篇和《王者荣耀》相关附带的创业思路。 21 | <e type="web" href="http://36kr.com/p/5069792.html" title="百亿利润的《王者荣耀》,除了让你欲罢不能,还是部产业发动机_36氪" cache="http://cache.xiaomiquan.com/201704/6cfa4d00a2f74eebafeccefba6db6db4754438c2413001e0dc6b779fdfb021b6" /> 22 |
23 | 24 | ### 文章配图 25 | 26 |
27 | 28 |
29 | 30 | 31 | ## 评论 32 | 33 |
34 |
35 | 36 |
37 | 亦仁 : 任何一款热门游戏都有若干活得非常好的攻略app。也是个思路,薅大游戏的羊毛。 38 |
39 | 40 |
41 | Ethan : 大型单机游戏都有自己的社区圈子(魔兽争霸,不是魔兽世界哦),大型网游都有自己的粉丝群(这个说魔兽世界),然后很多网络游戏都有自己的商业系统(网易藏宝阁) 42 | 一看这内容就暴漏年龄 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /src/Railway12306/result.go: -------------------------------------------------------------------------------- 1 | package Railway12306 2 | 3 | type StationInfo struct { 4 | CH string `json:"ch"` 5 | EN string `json:"en"` 6 | Phonetic string `json:"phonetic"` 7 | ShortPhonetic string `json:"short_phonetic"` 8 | Code string `json:"code"` 9 | } 10 | 11 | type TickStationInfo struct { 12 | TrainCode string `json:"train_code(车次)"` 13 | BeginPlace string `json:"begin_place(始站)"` 14 | EndPlace string `json:"end_place(终点)"` 15 | FromPlace string `json:"from_place(出发站)"` 16 | ToPlace string `json:"to_place(到达站)"` 17 | StartTime string `json:"start_time(出发时间)"` 18 | EndTime string `json:"end_time(到达时间)"` 19 | Over string `json:"over(历时)"` 20 | HighTicket string `json:"high_ticket(商务座/特等座)"` 21 | FirstTicket string `json:"first_ticket(一等座)"` 22 | SecondTicket string `json:"second_ticket(二等座)"` 23 | HighSoftTicket string `json:"high_soft_ticket(高级软卧)"` 24 | SoftTicket string `json:"soft_ticket(软卧)"` 25 | LowSoftTicket string `json:"low_soft_ticket(动卧)"` 26 | SecondSoftTicket string `json:"hard_soft_ticket(硬卧)"` 27 | SoftSeat string `json:"soft_seat(软座)"` 28 | HardSeat string `json:"hard_seat(硬座)"` 29 | } 30 | -------------------------------------------------------------------------------- /doc/doodles/2002-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 2002年感恩节 #GoogleDoodle 13 |
2002年感恩节
2002年11月28日
14 | 15 | 2002年阵亡将士纪念日 #GoogleDoodle 16 |
2002年阵亡将士纪念日
2002年11月11日
17 | 18 | 2002年停战纪念日 #GoogleDoodle 19 |
2002年停战纪念日
2002年11月11日
20 | 21 | 2002年盖伊·福克斯日 #GoogleDoodle 22 |
2002年盖伊·福克斯日
2002年11月5日
23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/doodles/2006-8.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 8 月 8 | 9 |
10 | 11 | 12 | 2006年印度独立日 #GoogleDoodle 13 |
2006年印度独立日
2006年8月15日
14 | 15 | 2006年韩国光复节 #GoogleDoodle 16 |
2006年韩国光复节
2006年8月15日
17 | 18 | 2006年瑞士国庆日 #GoogleDoodle 19 |
2006年瑞士国庆日
2006年8月1日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /cmd/zhihu.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "fmt" 5 | "github.com/spf13/cobra" 6 | "github.com/wuxiaoxiaoshen/go-anything/pkg/es" 7 | "github.com/wuxiaoxiaoshen/go-anything/src/zhihu" 8 | "log" 9 | "strconv" 10 | "time" 11 | ) 12 | 13 | var ZhiHuCmd = &cobra.Command{ 14 | Use: "zhihuhot", 15 | PreRun: func(cmd *cobra.Command, args []string) { 16 | log.Println("Step 1: ElasticSearch...") 17 | es_operator.EsInit() 18 | }, 19 | PostRun: func(cmd *cobra.Command, args []string) { 20 | log.Println("End 1: ElasticSearch...") 21 | es_operator.DefaultEsClient.Close() 22 | }, 23 | Run: func(cmd *cobra.Command, args []string) { 24 | Run() 25 | }, 26 | } 27 | 28 | func Run() { 29 | index := zhihu.ResultForZhiHu{} 30 | if ok := es_operator.DefaultEsClient.ExistsIndex(index); ok { 31 | log.Println(fmt.Sprintf("index exists: %s", index.Index())) 32 | } else { 33 | if ok := es_operator.DefaultEsClient.CreateIndex(index); !ok { 34 | log.Println(fmt.Sprintf("index %s create fail", index.Index())) 35 | return 36 | } 37 | } 38 | for j, i := range zhihu.HotResultController() { 39 | id := fmt.Sprintf("%d_"+strconv.FormatFloat(float64(time.Now().UnixNano()), 'f', 0, 32), j) 40 | fmt.Println(es_operator.DefaultEsClient.InsertRecord(id, i)) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /doc/money/从生财之路的坎坷中提炼价值.md: -------------------------------------------------------------------------------- 1 |

从生财之路的坎坷中提炼价值

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2017-06-13 12:33:28 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="2425552811" title="#那些坑#" /> 21 | 22 | 上周我们在生财有术和曹大的小密圈里举办了一个小活动“生财之路上的那些坑”,最终有27位圈友参与,共产出12305字的内容。 23 | 24 | 很多分享精彩而真诚,我都已赞赏,但还是要送给参与的各位圈友掌声👏!你们最棒! 25 | 26 | 开玩笑讲,每个坑,价值百万。 27 | 28 | 很多时候,该掉的坑可能还是要掉,并不会因为听过很多道理就过好这一生。 但是呢,听过了,掉进坑,爬出来,一拍大腿,这坑特么在生财有术的活动里看过啊,从此深刻警醒! 29 | 30 | 这也许是看别人的坑的价值吧! 31 | 32 | 本想将坑们做一些总结发出来,但是时间有限,短时间内无法完成此工作,另外总结的短句可能没真实的案例来的真实而有力,干脆将散在各处的回答整理成PDF分享给大家,个人角度觉得有启发的标注了一下, 时间有限的圈友可以只读标黄部分。 33 | 34 | 愿我们接下来的生财之路都不再掉坑 :) 35 |
36 | 37 | ### 文章配图 38 | 39 |
40 | 41 |
42 | 43 | 44 | ## 评论 45 | 46 |
47 |
48 | 49 |
50 | 寂寞火山 : 辛苦了 51 |
52 | 53 |
54 |
-------------------------------------------------------------------------------- /doc/money/关于Shopify的垂直领域的小工具开发数据报告.md: -------------------------------------------------------------------------------- 1 |

关于 Shopify 的垂直领域的小工具开发数据报告

2 | 3 | 4 | 5 | 6 |

7 | 壹树 || 2018-12-26 03:36:11 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="4515552518" title="#小而美#" /> <e type="hashtag" hid="5825554124" title="#独立开发者#" /> 21 | 关于 Shopify 的垂直领域的小工具开发,这里有份挺有趣的数据报告可以看看,有能力的个人或小团队可以考虑一下,其实可以对比一下目前的淘宝的卖家服务工具,进行外切。 22 | 目前上面才有 2000 的应用,分类后其实每个类别都不多,可以做精细化迭代开发。 23 | 24 | 地址:<e type="web" href="https://asoft.co/shopify-apps/store-analysis" title="ASoft – Shopify App Store Analysis" cache="" /> 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | 千寻软件🔥达人 : 外国东西,看不懂 41 |
42 | 43 |
44 |
-------------------------------------------------------------------------------- /doc/money/在电商平台上找到3万多个优秀店铺的一些技巧.md: -------------------------------------------------------------------------------- 1 |

在电商平台上找到3万多个优秀店铺的一些技巧

2 | 3 | 4 | 5 | 6 |

7 | sophie || 2017-08-23 01:26:16 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 😝昨天大家想要套路,不好意思真不能分享(老板会杀了我的😂),但是这个BHW上的方法非常好,分享给大家: 21 | 22 | 【如何找到Shopify上3万多个优秀店铺?以及best seller?】 23 | 24 | 1. 访问myip.ms 25 | 2. 粘贴IP:23.227.38.32(Shopify IP),点击“其他站点IP”  26 | 3. 查看每个网站的best seller:shopifystore.com/collections/all?sort_by=best-selling(有些店铺反spy,无法查看) 27 | 28 | 接下来我要开始专心做shopify fb了,总之fb相关问题加微信foodie0,shopify相关问题访问17shopify.com 29 | 30 | 顺便,域名我也是半个专家,相关问题先加微信foodie0,能帮都会帮哈 31 | 32 | <e type="hashtag" hid="4252428558" title="#SHOPIFY#" /> <e type="hashtag" hid="5452814584" title="#分享#" /> 33 |
34 | 35 | ### 文章配图 36 | 37 |
38 | 39 |
40 | 41 | 42 | ## 评论 43 | 44 |
45 |
46 | 47 |
48 |
-------------------------------------------------------------------------------- /doc/money/游戏玩家怎么通过新区玩游戏变现?.md: -------------------------------------------------------------------------------- 1 |

游戏玩家怎么通过新区玩游戏变现?

2 | 3 | 4 | 5 | 6 |

7 | Chance.vi || 2017-03-23 18:28:34 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 脑细胞太过活跃,睡不着。索性整理思路分享一个案例:讲的是一个腾讯和盛大合作的一款手游-热血传奇,其他游戏自己发散:)。我要讲的不是代充、不是做工会\家族元宝商人。我讲的是一个普通玩家冲新区赚元宝变现1、掌握快速升级技巧。2、掌握赚元宝技巧。3、在元宝最稀缺的时候高价卖出套现退出。4、到新区继续重复。网络上有很多攻略。人工的方式只要你有精力,还是能赚点零花钱。我们怎么用机器的方式来赚钱呢?1、弄(购买、开发、破解)一个自动化工具。2、按您的赚钱攻略写个自动化刷怪升级、赚元宝脚本(写不出来?淘宝xxx游戏xxx脚本)。3、及时元宝套现。咦,效率是不是提升了,能赚不少钱了。由于Android平台比iOS平台的自动化门槛要底,所以Android版本的游戏大区的元宝比iOS版本的便宜。我是不是可以搞个iOS的利润高点,门槛相对高点? 21 | 总结一下: 22 | 找个自己熟悉,喜欢的游戏,排行榜上热门的游戏 23 | 观察套现模式,找攻略 24 | 自动化 25 | 数钱 26 | 当然原创的攻略更能赚钱,但是聪明人太多了😂 27 | 啊啊啊,这个能不能说的,做游戏的不要拍我啊。 28 |
29 | 30 | ### 文章配图 31 | 32 |
33 | 34 |
35 | 36 | 37 | ## 评论 38 | 39 |
40 |
41 | 42 |
43 | 曲建伟 : 是个想法 44 |
45 | 46 |
47 |
-------------------------------------------------------------------------------- /doc/doodles/2004-6.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 6 月 8 | 9 |
10 | 11 | 12 | 2004年父亲节 #GoogleDoodle 13 |
2004年父亲节
2004年6月19日
14 | 15 | 2004年詹姆斯·乔伊斯纪念日 (Bloomsday) #GoogleDoodle 16 |
2004年詹姆斯·乔伊斯纪念日 (Bloomsday)
2004年6月16日
17 | 18 | 金星凌日 #GoogleDoodle 19 |
金星凌日
2004年6月7日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/money/一个纸巾机创业者的完整经历分享.md: -------------------------------------------------------------------------------- 1 |

一个纸巾机创业者的完整经历分享

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2018-12-19 14:31:22 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="8212448112" title="#案例分享#" /> 21 | 22 | 一个纸巾机创业者的分享,很不错。 23 | <e type="web" href="https://articles.zsxq.com/id_u0cxcafwl2gh.html?from=groupmessage&isappinstalled=0" title="一个纸巾机创业者的失败" cache="" /> 24 |
25 | 26 | ### 文章配图 27 | 28 |
29 | 30 |
31 | 32 | 33 | ## 评论 34 | 35 |
36 |
37 | 38 |
39 | 千寻软件🔥达人 : 感谢分享 40 |
41 | 42 |
43 | Frank.Lee : 失败的案例点赞和评论怎么这么少? 44 |
45 | 46 |
47 | Frank.Lee : 又陷在平台的坑里了,看不太懂。Mark 48 |
49 | 50 |
51 |
-------------------------------------------------------------------------------- /doc/money/做社群需要有极强的价值观输出能力.md: -------------------------------------------------------------------------------- 1 |

做社群需要有极强的价值观输出能力

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2018-11-21 04:38:59 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 做社群需要有极强的价值观输出能力,其一是价值观,其二是输出。没有强价值观输出能力的社群,将会逐步瓦解,沦为一个工具。 21 | 22 | 学社群套路,还是得跟党走:社会主义核心价值观的建立和这套价值观的落地。 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 钱钰 : 异常同意 39 |
40 | 41 |
42 | Paul 彭 : 使命愿景价值观 43 |
44 | 45 |
46 | Paul 彭 : 战略班子要落地 47 | 运营管理抓结果 48 |
49 | 50 |
51 | 渣渣辉在路上 : 异常同意 52 |
53 | 54 |
55 | 黑头羊 : 做社群的可以多看看自古以来宗教界的玩法。 56 |
57 | 58 |
59 |
-------------------------------------------------------------------------------- /doc/money/创业思路:high-ticketsales.md: -------------------------------------------------------------------------------- 1 |

创业思路:high-ticket sales

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2019-01-10 13:26:28 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 念念无住 : 从流量变现到价值变现的思路。逻辑上很顺,实践中需要一些软性的东西。比如要师傅领进(圈层的)门,比如很多时候名气口碑大过实际价值,比如冷启动的话最好有吉祥物(,除非自己是吉祥物)。 39 |
40 | 41 |
42 | 千寻软件🔥达人 : 大佬大佬 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /src/holiday/controller.go: -------------------------------------------------------------------------------- 1 | package holiday 2 | 3 | import ( 4 | "fmt" 5 | "github.com/kataras/iris/v12" 6 | "log" 7 | "strings" 8 | ) 9 | 10 | func getHolidayHandler(c iris.Context) { 11 | if !c.URLParamExists("query") { 12 | c.JSON(iris.Map{ 13 | "error": "url params should contain query", 14 | }) 15 | return 16 | } 17 | var results []*GovResultForHoliday 18 | query := c.URLParams()["query"] 19 | years := strings.Split(strings.TrimSpace(query), ",") 20 | for _, year := range years { 21 | v := urlEncode(map[string]string{ 22 | "q": fmt.Sprintf(HOLIDAT_INTEGER, year), 23 | }) 24 | url := fmt.Sprintf(HOST, v) 25 | results = append(results, &GovResultForHoliday{RawUrl: url, Query: fmt.Sprintf(HOLIDAT_INTEGER, year)}) 26 | } 27 | channel := NewConCurrency(len(years)) 28 | for index, i := range results { 29 | channel.Add(1) 30 | go func(index int, i *GovResultForHoliday) { 31 | log.Println(index, i.RawUrl) 32 | content := pageSource(i.RawUrl) 33 | newContent := getContent(content, i.RawUrl) 34 | log.Println(newContent) 35 | results[index].RawContent = newContent 36 | defer channel.Done() 37 | }(index, i) 38 | } 39 | channel.Wait() 40 | c.JSON(iris.Map{ 41 | "data": results, 42 | }) 43 | 44 | } 45 | 46 | func getHolidayByYearHandler(c iris.Context) {} 47 | -------------------------------------------------------------------------------- /doc/money/剖析增长黑客如何缔造出价值10亿美金的潮牌.md: -------------------------------------------------------------------------------- 1 |

剖析增长黑客如何缔造出价值10亿美金的潮牌

2 | 3 | 4 | 5 | 6 |

7 | angryalan * || 2017-11-22 03:21:44 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 看看潮牌supreme的增长策略 21 | <e type="web" href="https://mp.weixin.qq.com/s/HsAa8VgfJF7nua8tFHTUqw" title="Supreme:增长黑客如何缔造出价值10亿美金的潮牌" cache="http://cache.xiaomiquan.com/201711/66016045e314cbb163971eff7e0f073c928c9adbabada845cb665f84e4b135aa" /> 22 |
23 | 24 | ### 文章配图 25 | 26 |
27 | 28 | 29 | 30 |
31 | 32 | 33 | ## 评论 34 | 35 |
36 |
37 | 38 |
39 |
-------------------------------------------------------------------------------- /doc/money/思维导图:2C导购全部运营细节拆解.md: -------------------------------------------------------------------------------- 1 |

思维导图:2C导购全部运营细节拆解

2 | 3 | 4 | 5 | 6 |

7 | 黄亮 || 2017-03-24 10:26:23 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 黄亮 : 导购,,具体点就是,,,淘宝客 😄 39 |
40 | 41 |
42 | 亦仁 : 太干了,顶格赞赏! 43 |
44 | 45 |
46 | 黄亮 : 😍😍😍😍 47 |
48 | 49 |
50 |
-------------------------------------------------------------------------------- /doc/money/Top100内容创业公司·2018.md: -------------------------------------------------------------------------------- 1 |

Top100内容创业公司·2018

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2018-12-14 13:07:22 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 这张图很有价值 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | DDTer : 军武次位面比以前水了好多好多… 39 |
40 | 41 |
42 | 奥菲欧 : 行业分布表 43 |
44 | 45 |
46 | 焦广民 : 科技 文化 47 |
48 | 49 |
50 |
-------------------------------------------------------------------------------- /doc/money/搬运式内容变现的玩法.md: -------------------------------------------------------------------------------- 1 |

搬运式内容变现的玩法

2 | 3 | 4 | 5 | 6 |

7 | 华安知 || 2017-03-22 11:54:12 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 点子一,目前内容变现很火,于是有很多搬运工,他们工作室或者公司团队操作,这里可以参照新榜编辑器,里面有个热文功能,抓取微信公众号的热门文章,做软件或者网站,抓取头条,百家,企鹅号的热门文章,阅读量高的,分领域就可以了。这个做软件可以收年费,做网站可以接百度广告联盟,做大了可以提供广告中介服务,因为用户就是搬运工类的,他们手里有很多账户,也有很大的流量的,这些流量你可以做中介转给需要软文还有有推广的人。很多玩法,最简单的推广公众号什么的,目前一个粉丝价格在1块钱左右。 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | orangleliu : 挺多的 37 |
38 | 39 |
40 | 朱凯阳 : 给搬运工提供上游内容聚合? 41 |
42 | 43 |
44 | 金刚 : 这个不会侵犯版权吗 45 |
46 | 47 |
48 | Frank.Lee : 怎么感觉是头条起家的模式?[疑问] 49 |
50 | 51 |
52 |
-------------------------------------------------------------------------------- /doc/money/治聪明人的蠢错误大约有三句话最管用.md: -------------------------------------------------------------------------------- 1 |

治聪明人的蠢错误,大约有三句话最管用

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2018-11-09 11:41:32 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | “对治聪明人的蠢错误,大约有三句话最管用 21 | 22 | 第一、聪明人得下笨功夫。 23 | 第二、没有任何道路可以通往真诚,真诚本身就是道路。 24 | 第三、全天底下就你明白,就你知道,就你懂的多,人家问你了吗?” 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 | 32 | 33 |
34 | 35 | 36 | ## 评论 37 | 38 |
39 |
40 | 41 |
42 | 三林 : 第二句尤其赞 43 |
44 | 45 |
46 | 理想 : 前两条很多人都这样。。 47 |
48 | 49 |
50 |
-------------------------------------------------------------------------------- /doc/money/如何实现用户可持续增长.md: -------------------------------------------------------------------------------- 1 |

如何实现用户可持续增长

2 | 3 | 4 | 5 | 6 |

7 | Jimi || 2017-05-03 13:10:19 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 汇总了亦仁圈子里你问我答第二期活动的28个方案2.88万字后,你会发现,大部分人的建议,要么针对产品,要么针对推广,要么两者兼备,而这背后是不是有什么方法论呢? 21 | 22 | 我尝试在之前内容整理的基础上进一步提炼了相关思路,供大家参考:<e type="web" href="https://mp.weixin.qq.com/s/5H624X_VGubD58VtArU2DQ" title="套路 | 如何实现用户可持续增长?" cache="http://cache.xiaomiquan.com/201705/fa4cd22772f73092d4c48545aefd875743fc7726f81dd2afee35a9eb5e1aa4bc" /> 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 此岸 : 总结升华了 39 |
40 | 41 |
42 | 肥鱼 : 总结很赞 43 |
44 | 45 |
46 | Auroraaa : 厉害啊jimi 47 |
48 | 49 |
50 |
-------------------------------------------------------------------------------- /doc/doodles/2005-7.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 7 月 8 | 9 |
10 | 11 | 12 | 登月周年纪念日 #GoogleDoodle 13 |
登月周年纪念日
2005年7月20日
14 | 15 | 2005年巴士底日 #GoogleDoodle 16 |
2005年巴士底日
2005年7月13日
17 | 18 | 2005年美国独立日 #GoogleDoodle 19 |
2005年美国独立日
2005年7月4日
20 | 21 | 2005年加拿大国庆日 #GoogleDoodle 22 |
2005年加拿大国庆日
2005年7月1日
23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/money/30个增加知名度的宣传方法背后其实都是各种运营手段.md: -------------------------------------------------------------------------------- 1 |

30个增加知名度的宣传方法,背后其实都是各种运营手段

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2018-05-19 01:32:32 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="4515151888" title="#思路分享#" /> 21 | 22 | <e type="mention" uid="4141152558" title="@V先生" /> 个人品牌:30个增加知名度的宣传方法,背后其实都是各种运营手段。 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 | 30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | V先生 : 被亦仁老板翻牌子了,荣幸~[偷笑] 41 |
42 | 43 |
44 |
-------------------------------------------------------------------------------- /doc/money/信用卡费率的水很深.md: -------------------------------------------------------------------------------- 1 |

信用卡费率的水很深

2 | 3 | 4 | 5 | 6 |

7 | 华安知 || 2017-04-02 05:51:05 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 关于曹大说的那个,因为之前一直在玩信用卡,了解一点,信用卡以前刷出来,是有一种封顶机的,也就是不管刷多少钱,手续费就25,有的是50,看自己的关系,拿到不同的费率。所以说以前把钱搞出来可以做很多事的。现在已经没有封顶了,但是还有玩法,就是走支付宝和微信支付的通道,费率可以做到0.19,正常的是0.6,这里面利润非常大,之前接触的一个公司,流水一天几十个亿。但是现在大搞的不行了,隐蔽一点的还有。另外有人将一个pos做成云的,一个pos可以切换上千个商户,对某些人很有用。这些人搞的就是曹大说的商务旅游这块。不能说太多。水比较深。 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 |
28 | 29 | 30 | ## 评论 31 | 32 |
33 |
34 | 35 |
36 | Caoz : 求发到我的圈里 37 |
38 | 39 |
40 | 华安知 : 谢谢曹老师赞赏,嗯嗯,已经发过去了😄 41 |
42 | 43 |
44 | 华安知 : 谢谢亦仁老师赞赏😜 45 |
46 | 47 |
48 | 梓琳 : 可以加个微信私聊一下吗?比较感兴趣😊 49 |
50 | 51 |
52 |
-------------------------------------------------------------------------------- /doc/doodles/2002-6.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 6 月 8 | 9 |
10 | 11 | 12 | 2002年世界杯 - 巴西 #GoogleDoodle 13 |
2002年世界杯 - 巴西
2002年6月28日
14 | 15 | 2002年夏至音乐日 #GoogleDoodle 16 |
2002年夏至音乐日
2002年6月21日
17 | 18 | 2002年父亲节 #GoogleDoodle 19 |
2002年父亲节
2002年6月16日
20 | 21 | 2002年端午节 #GoogleDoodle 22 |
2002年端午节
2002年6月15日
23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/doodles/2004-7.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 7 月 8 | 9 |
10 | 11 | 12 | 2004年巴士底日 #GoogleDoodle 13 |
2004年巴士底日
2004年7月13日
14 | 15 | 2004年美国独立日 #GoogleDoodle 16 |
2004年美国独立日
2004年7月4日
17 | 18 | 2004年欧洲杯 #GoogleDoodle 19 |
2004年欧洲杯
2004年7月3日
20 | 21 | 2004年加拿大国庆日 #GoogleDoodle 22 |
2004年加拿大国庆日
2004年7月1日
23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/doodles/2005-11.md: -------------------------------------------------------------------------------- 1 | 2 |

谷歌涂鸦

3 | 4 | 5 | 6 | 7 | ## 11 月 8 | 9 |
10 | 11 | 12 | 2005年感恩节 #GoogleDoodle 13 |
2005年感恩节
2005年11月23日
14 | 15 | 2005年“Doodle 4 Google”竞赛 - 英国(Lisa Wainaina 作品) #GoogleDoodle 16 |
2005年“Doodle 4 Google”竞赛 - 英国(Lisa Wainaina 作品)
2005年11月17日
17 | 18 | 2005年阵亡将士纪念日 #GoogleDoodle 19 |
2005年阵亡将士纪念日
2005年11月10日
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/money/关于得到APP精品课变现的思考.md: -------------------------------------------------------------------------------- 1 |

关于得到APP精品课变现的思考

2 | 3 | 4 | 5 | 6 |

7 | 树叶 || 2019-05-07 16:43:22 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 《关于得到APP精品课变现的思考》 21 | 2200字,长图。 22 | 分享一下我对得到精品课的一点思考,希望能起到抛砖引玉的作用,看完本文,应该会对得到精品课和知识付费有个重新的认识。 23 | 24 | 文章有点长,还有很多图片,我就直接上长截图了哈。 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 | 32 | 33 |
34 | 35 | 36 | ## 评论 37 | 38 |
39 |
40 | 41 |
42 | 镌刻时光 : 感谢分享,其实难的不是理论,而是行动力。 43 |
44 | 45 |
46 | 湘乡的大树 : 感谢分享,思路确实打开了 47 |
48 | 49 |
50 |
-------------------------------------------------------------------------------- /doc/money/分享一些北京聚会信用卡常旅客相关知识的PPT.md: -------------------------------------------------------------------------------- 1 |

分享一些北京聚会信用卡常旅客相关知识的PPT

2 | 3 | 4 | 5 | 6 |

7 | 星佳是个小人物 || 2018-01-03 16:28:09 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 北京聚会分享的信用卡常旅客相关知识的PPT,虽然只有9页,但是其实信息量还是蛮大的,大家尤其感兴趣是谈心和撕逼的部分啊.... 21 | 可惜,某些话题只能闭门线下放开扯,路子这东西,说出去就死了.... 22 |
23 | 24 | ### 文章配图 25 | 26 |
27 | 28 |
29 | 30 | 31 | ## 评论 32 | 33 |
34 |
35 | 36 |
37 | 赵鑫@营销策划&定位 : 哪位大神有分享细节啊,能分享一下么 38 |
39 | 40 |
41 | 星佳是个小人物 : 有些路子,只能现场说哈 42 |
43 | 44 |
45 | 赵鑫@营销策划&定位 : 错过北京聚会真亏啊 46 |
47 | 48 |
49 | 青山 : 感觉可能不错,但是关键ppt里面又没有... 50 |
51 | 52 |
53 | 星佳是个小人物 : 这是给聚会准备的ppt... 54 |
55 | 56 |
57 |
-------------------------------------------------------------------------------- /doc/money/如何快速的将数据变现.md: -------------------------------------------------------------------------------- 1 |

如何快速的将数据变现

2 | 3 | 4 | 5 | 6 |

7 | 老读悟 || 2017-05-04 10:21:27 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="8212448112" title="#案例分享#" /> 21 | 22 | 头一次发帖。平时接触数据和营销行业比较多,第一个就分享一个和数据相关的案例吧。 23 | 24 | <e type="web" href="https://shimo.im/doc/It2tQGke2HYIp8Qz/" title="如何快速的将数据变现" cache="http://cache.xiaomiquan.com/201705/6b38e1cd0f90759f2afbfe89d686e64921ff38dff92050f488205e13033a83d1" />「如何快速的将数据变现」 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | 大林 : 谢谢分享指导 41 |
42 | 43 |
44 | 陈俊强 : 1024 45 |
46 | 47 |
48 | David : 第一眼看出站用什么做的😂 49 |
50 | 51 |
52 |
-------------------------------------------------------------------------------- /doc/money/实操拆解:如何利用免费工具轻松实现个人号裂变?.md: -------------------------------------------------------------------------------- 1 |

实操拆解:如何利用免费工具轻松实现个人号裂变?

2 | 3 | 4 | 5 | 6 |

7 | 亦仁 || 2018-04-25 05:55:26 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="8212448112" title="#案例分享#" /> 21 | 22 | 有价值,推荐阅读。 23 | 24 | <e type="web" href="https://mp.weixin.qq.com/s/wnDXW8D_NHdHFS2r-x_s5Q?from=groupmessage&isappinstalled=0" title="【实操拆解】如何利用免费工具轻松实现个人号裂变?" cache="http://cache.zsxq.com/201804/4fb9a1884aaec5c9e3eeaf756e360f07fb54eec6ab942d4f0fc7d05033474fc4" /> 25 |
26 | 27 | ### 文章配图 28 | 29 |
30 | 31 |
32 | 33 | 34 | ## 评论 35 | 36 |
37 |
38 | 39 |
40 | 汤一一 : step1里面,用第三方的h5页面跳转,会有一些小问题:量大域名被封、不安全域名被劫持等。最好多做测试,有技术支持的话,h5页面最好用自己的。 41 |
42 | 43 |
44 | 呵呵 : 非常不错! 45 |
46 | 47 |
48 |
-------------------------------------------------------------------------------- /doc/money/如何打造小而美的工具做到月入5万刀.md: -------------------------------------------------------------------------------- 1 |

如何打造小而美的工具做到月入5万刀

2 | 3 | 4 | 5 | 6 |

7 | 瓜叔 || 2019-11-10 08:31:22 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | <e type="hashtag" hid="4515151888" title="#思路分享#" /> <e type="hashtag" hid="4282112558" title="#案例#" /> 通过打造小而美的工具赚钱,这位数字游民小哥哥的经验分享还是挺有干货的 英文好的朋友推荐阅读原版 21 | 22 | <e type="web" href="https://mp.weixin.qq.com/s/Ukfy4C5tQMrMbEVJgcWJdg" title="【读案例】他是如何打造小而美的工具做到月入5万刀的" cache="" /> 23 |
24 | 25 | ### 文章配图 26 | 27 |
28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 壹树 : 这人 2 年前已超 5 万,现在估计 10 万了。大牛。 39 |
40 | 41 |
42 | 瓜叔 : 是啊 大牛 43 |
44 | 45 |
46 | David : 厉害! 47 |
48 | 49 |
50 |
-------------------------------------------------------------------------------- /doc/money/微信卖土特产一个月销售70万的高转化率玩法.md: -------------------------------------------------------------------------------- 1 |

微信卖土特产一个月销售70万的高转化率玩法

2 | 3 | 4 | 5 | 6 |

7 | 阿彪 || 2019-11-18 05:32:15 +0000 UTC 8 |

9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | ## 正文 18 | 19 |
20 | 钱总这么好的帖子,必须得搬过来一下,太符合我们星球的氛围了。 21 |
22 | 23 | ### 文章配图 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 | 32 | ## 评论 33 | 34 |
35 |
36 | 37 |
38 | 电商阿旺 : 太棒了[强][强][强] 39 |
40 | 41 |
42 | FangXY : 棒[强] 43 |
44 | 45 |
46 | 旺小哥 : 太棒 47 |
48 | 49 |
50 | bluesky : 关键就是执行 51 |
52 | 53 |
54 |
--------------------------------------------------------------------------------