Dev's Logging

Welcome to my blog !


Ecosia Financial Report

Published at July 31, 2019 ·  1 min read

ecosia 在五月份达到了将近 100 m pv / month,其月收入为 1347484 欧元,约合人民币为 1 千万元,营销费用为 219329 欧元,约合人民币 168万元,运营费用总计 290382 欧元,约合人民币 223 万元。其中包括薪水(39人,包括自由职业者)107821 欧元,约合人民币 83万元,雇佣税费(健康保险、社会保障、雇佣及公司税费)70694 欧元,约合 54 万元,其他税收 60000 欧元,约合人民币 46 万元,服务器域名费用 31032 欧元,约合人民币 23 万元,办公室 5287 欧元,约合人民币 4 万元,其他费用 9664 欧元,约合人民币 74179 元,差旅费用 5884 欧元,约合人民币 4.5 万元。 主要使用国家为法、德、英、美、比利时五个国家,占据将近 70% 的流量,1 亿的流量,月营收 1 千万,平均一个 pv 价值 0.1 人民币,223 百万的服务器费用支出,平均每次搜索的费用是 0.0223 人民币。 Ecosia Financial Report...

React Native: Why and How to Build Your Native Code in Go

Published at July 20, 2019 ·  1 min read

利用 gomobile 将 Golang 代码分别部署到 iOS 和 Android,同时借助 React Native 编写界面的便捷性,在 RN 中调用 Golang 函数,可以实现底层同样的一套代码同时在 iOS 和 Android 运行,UI 层也可以实现复用同样一套代码 React Native: Why and How to Build Your Native Code in Go...

Struct vs. Class In Swift Explained – LearnAppMaking

Published at June 25, 2019 ·  1 min read

swift 同时有 struct 和 class 两种类型,在 Python 中只有 class,在 Golang 中只有 struct ,而swift 似乎是把两种语言一种类似的类型均融合了。相同之处是,struct 和 class 均可以定义属性和方法,均有 init 以进行状态的初始化。不同的是,class 可以继承,也可以定义 deinitialized 实现在 class 销毁时调用某个函数 Struct vs. Class In Swift Explained – LearnAppMaking...

How to Access a Remote Server Using a Jump Host

Published at June 19, 2019 ·  1 min read

通过配置 ssh config ,实现在本地快捷通过跳板机登陆目标服务器,与配置 ssh proxy 较为类似 How to Access a Remote Server Using a Jump Host...

Linux Signal及Golang中的信号处理

Published at June 12, 2019 ·  1 min read

Linux 和 Golang 中的信号处理问题,在 Linux 中,则是操作系统中用来进程间通讯的一种方式,一个信号就是一个异步的通知,发送给某个进程,或者同进程的某个线程,当信号发送给某个进程时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。几个常见命令为,SIGINT 导致进程结束,SIGTSTP 导致进程挂起,SIGQUIT 导致进程结束 和 Dump core。在 Golang 中,则是通过 os/signal 和 syscall 捕捉到相应的信号量 Linux Signal及Golang中的信号处理...

How to configure docker to use proxy

Published at May 30, 2019 ·  1 min read

如何为 docker 设置使用 proxy,除了设置环境变量外,还需要在 /etc/systemd/system/docker.service.d 中创建 http-proxy.conf 的文件,并在其中添加代理,完成后需要通过 systemctl 重启 docker 服务。 How to configure docker to use proxy...

Double Shipping

Published at May 25, 2019 ·  1 min read

多次反复的宣传,作者作为 GitHub 早期员工,提到一些 GitHub 在上线一些新功能时多次宣传的套路,比如花了大量时间为现场只有几百人准备的演讲,真正的用户却只有很小的一部分,但是当把这部分演讲稿整理成文字发布成博客时,经过一段时间的积累后,将会被成千上万的人阅读,演讲就是演讲,要多种形式的宣传将其影响力扩大。此外在产品发布时同样适用,第一次作为一个完整或全新的产品发布,之后则需要将其中的某个新功能作为一个点进行发布,并引用第一次的宣传文章,需要通过这种方式不断的加深用户对产品的印象。 Double Shipping...

yarn 需要像 npm 一样配置代理么?

Published at May 14, 2019 ·  1 min read

在本地用 Yarn 创建某项目时,发现在 yarn install 过程中耗时非常长,根据以往加速 git clone 的经验,直接想到的是 yarn 仓库可能需要加速,于是参照链接进行如下配置,速度瞬间能达到当前贷款的满速,验证没问题。针对 https 特别注意需要用 https-proxy。 yarn config set proxy http://ip:port yarn config set https-proxy http://ip:port yarn 需要像 npm 一样配置代理么?...

HTTP API 认证授权术 | | 酷 壳 - CoolShell

Published at May 10, 2019 ·  1 min read

详细完整的 http API 认证授权的介绍,因为 http 是无状态,则需要客户端与服务端配合完整用户的认证与授权工作,常见的非别有 http basic, digest access, app secrete key + hmac, jwt json web tokens, oauth 1.0, oauth 2.0 HTTP API 认证授权术 | | 酷 壳 - CoolShell...

Difference Between BFS and DFS (with Comparison Chart) - Tech Differences

Published at May 5, 2019 ·  1 min read

dfs 和 bfs 的区别,两者复杂度较为接近,而需要的存储则大不相同。bfs 采用 queue 存储访问过的节点,适合于 wide and short tree。 dfs 则需要 stack 存储访问过的节点,或者递归的方式访问,存储较为高效。 Difference Between BFS and DFS (with Comparison Chart) - Tech Differences...

Tags

abcs accept acid activemq affinity algorithm allocation android array async aws b+tree b-tree backoff benchmark best-practices bfs big-o bigquery bind bitcount blog break broker bubble buffer cache cap cert cgroups channel citus class classmethod cluster concurrency config consumer container cookie cors crawler cronjob csrf ctr data-science data-structure database datadog dataflow datascience decorator defer dfs distributed django dns docker double-shipping drf ecosia elastic-search enumerate epoll extra fabric2 facebook-pixel financial-report flask flutter forward-proxy freelance frontend frp garbage-collector gc gcp generator get gil git golang goroutine graphql ha handbook haproxy hash hash-slot hashring hashtable hpa http http-auth http-proxy http_proxy https index init innodb instagram intergration interview ios javascript jinja2 jobboard jwt k8s kafka kibana kqueue label lambda layer4 layer7 lean levels.io linked-list linux list listen loadbalancer logs long-tail lru marketing master matplotlib memory merge metaclass metaprogramming metrics metrics-server microservices mitm model mq myisam mysql namespace nat netflix network-extension nginx nodejs nomad nosql npm oodesign openssl optimization orm pandas parallelism paramiko parkinglot patroni permission pg pipeline pixelme post postgresql postresql prefetch_related prerender private-key process proxy proxycommand put pvm python queue rabbitmq rbac react-native reactjs rebase redis redis-cluster replication resource rest restfulapi retargeting retry revenue reverse-proxy rocketmq rsa saas scaleable search-engine security select seo serverless service session set shadosocks shadowsocks shard sharding shell shopify sigint signal sigterm slack slave slow-query sniper sns socket socks5 source-code spa sql sqlalchemy sqs ssh ssl ssl-pinning stack startup state stateful stateless staticmethod string struct swift switch syscall system-design systemctl tcp tcp-proxy thread tmpreaper token traefik trustkit tunning type typeform udp variable vc vpn vuejs web web-development where yarn zset 削峰 宽索引 异步 窄索引 解耦 跨域 跳板机


Archives

2019 (141)